@sapui5/sap.fe.macros 1.138.0 → 1.139.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 (210) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Breadcrumbs.js +269 -0
  4. package/src/sap/fe/macros/Breadcrumbs.tsx +243 -0
  5. package/src/sap/fe/macros/Chart.js +1 -1
  6. package/src/sap/fe/macros/Chart.tsx +1 -1
  7. package/src/sap/fe/macros/CommonHelper.js +2 -2
  8. package/src/sap/fe/macros/CommonHelper.ts +1 -1
  9. package/src/sap/fe/macros/Field.js +21 -4
  10. package/src/sap/fe/macros/Field.ts +21 -3
  11. package/src/sap/fe/macros/FooterContent.js +40 -10
  12. package/src/sap/fe/macros/FooterContent.tsx +44 -8
  13. package/src/sap/fe/macros/FormElement.js +2 -2
  14. package/src/sap/fe/macros/FormElement.ts +1 -2
  15. package/src/sap/fe/macros/MultiValueField.js +17 -4
  16. package/src/sap/fe/macros/MultiValueField.tsx +7 -2
  17. package/src/sap/fe/macros/RichTextEditor.js +30 -6
  18. package/src/sap/fe/macros/RichTextEditor.tsx +34 -7
  19. package/src/sap/fe/macros/Share.js +73 -40
  20. package/src/sap/fe/macros/Share.tsx +29 -1
  21. package/src/sap/fe/macros/ValueHelp.js +4 -29
  22. package/src/sap/fe/macros/ValueHelp.tsx +2 -43
  23. package/src/sap/fe/macros/ai/EasyFillButton.js +10 -4
  24. package/src/sap/fe/macros/ai/EasyFillButton.tsx +8 -1
  25. package/src/sap/fe/macros/ai/EasyFillDialog.js +25 -10
  26. package/src/sap/fe/macros/ai/EasyFillDialog.tsx +32 -23
  27. package/src/sap/fe/macros/ai/EasyFilterBar.js +30 -30
  28. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +40 -43
  29. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +11 -5
  30. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +14 -5
  31. package/src/sap/fe/macros/chart/ChartDelegate.js +4 -4
  32. package/src/sap/fe/macros/chart/ChartDelegate.ts +3 -3
  33. package/src/sap/fe/macros/chart/MdcChartTemplate.js +20 -6
  34. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +16 -8
  35. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +5 -1
  36. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +4 -0
  37. package/src/sap/fe/macros/controls/FieldWrapper.js +9 -3
  38. package/src/sap/fe/macros/controls/FieldWrapper.ts +11 -2
  39. package/src/sap/fe/macros/controls/FilterBar.js +86 -3
  40. package/src/sap/fe/macros/controls/FilterBar.ts +97 -2
  41. package/src/sap/fe/macros/controls/RequiredFlexBox.js +62 -0
  42. package/src/sap/fe/macros/controls/RequiredFlexBox.tsx +20 -0
  43. package/src/sap/fe/macros/controls/Section.js +3 -2
  44. package/src/sap/fe/macros/controls/Section.ts +2 -1
  45. package/src/sap/fe/macros/controls/filterbar/VisualFilter.js +21 -11
  46. package/src/sap/fe/macros/controls/filterbar/VisualFilter.ts +25 -11
  47. package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.js +11 -2
  48. package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.ts +12 -1
  49. package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.js +18 -1
  50. package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.ts +20 -0
  51. package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
  52. package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
  53. package/src/sap/fe/macros/designtime/Designtime.helper.js +12 -2
  54. package/src/sap/fe/macros/designtime/Designtime.helper.ts +12 -0
  55. package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +16 -5
  56. package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +6 -1
  57. package/src/sap/fe/macros/field/FieldBaseDelegate.js +20 -8
  58. package/src/sap/fe/macros/field/FieldBaseDelegate.ts +34 -9
  59. package/src/sap/fe/macros/field/FieldFormatOptions.js +73 -44
  60. package/src/sap/fe/macros/field/FieldFormatOptions.ts +20 -2
  61. package/src/sap/fe/macros/field/FieldRuntime.js +38 -8
  62. package/src/sap/fe/macros/field/FieldRuntime.ts +65 -7
  63. package/src/sap/fe/macros/filter/FilterUtils.js +7 -1
  64. package/src/sap/fe/macros/filter/FilterUtils.ts +7 -0
  65. package/src/sap/fe/macros/filterBar/FilterBar.block.js +8 -2
  66. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +2 -5
  67. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +8 -8
  68. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +8 -8
  69. package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.js +3 -1
  70. package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.ts +2 -0
  71. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +1 -1
  72. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +1 -1
  73. package/src/sap/fe/macros/form/Form.block.js +6 -2
  74. package/src/sap/fe/macros/form/Form.block.ts +4 -1
  75. package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -2
  76. package/src/sap/fe/macros/form/FormContainer.fragment.xml +40 -0
  77. package/src/sap/fe/macros/form/FormContainerAPI.js +14 -16
  78. package/src/sap/fe/macros/form/FormContainerAPI.ts +13 -15
  79. package/src/sap/fe/macros/form/FormDelegate.js +20 -1
  80. package/src/sap/fe/macros/form/FormDelegate.ts +25 -0
  81. package/src/sap/fe/macros/formatters/TableFormatter.js +10 -1
  82. package/src/sap/fe/macros/formatters/TableFormatter.ts +14 -5
  83. package/src/sap/fe/macros/inlineEdit/InlineEdit.js +15 -3
  84. package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +14 -2
  85. package/src/sap/fe/macros/internal/DataPoint.js +2 -1
  86. package/src/sap/fe/macros/internal/DataPoint.tsx +1 -0
  87. package/src/sap/fe/macros/internal/DataPointFormatOptions.js +11 -2
  88. package/src/sap/fe/macros/internal/DataPointFormatOptions.ts +3 -0
  89. package/src/sap/fe/macros/internal/FilterField.block.js +4 -2
  90. package/src/sap/fe/macros/internal/FilterField.block.ts +3 -1
  91. package/src/sap/fe/macros/internal/field/CheckBoxGroup.fragment.xml +25 -0
  92. package/src/sap/fe/macros/internal/field/DisplayStyle.js +52 -12
  93. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +54 -5
  94. package/src/sap/fe/macros/internal/field/EditStyle.js +5 -1
  95. package/src/sap/fe/macros/internal/field/EditStyle.tsx +4 -0
  96. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +9 -2
  97. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +10 -0
  98. package/src/sap/fe/macros/internal/field/FieldStyles.js +1 -1
  99. package/src/sap/fe/macros/internal/field/FieldStyles.tsx +2 -1
  100. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
  101. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +3 -3
  102. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +1 -0
  103. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +11 -3
  104. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +12 -7
  105. package/src/sap/fe/macros/internal/valuehelp/ValueListTable.fragment.xml +1 -0
  106. package/src/sap/fe/macros/library.js +1 -1
  107. package/src/sap/fe/macros/mdc/adapter/StateHelper.js +11 -6
  108. package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +12 -7
  109. package/src/sap/fe/macros/messagebundle.properties +37 -29
  110. package/src/sap/fe/macros/messagebundle_ar.properties +5 -3
  111. package/src/sap/fe/macros/messagebundle_bg.properties +6 -4
  112. package/src/sap/fe/macros/messagebundle_ca.properties +8 -6
  113. package/src/sap/fe/macros/messagebundle_cnr.properties +5 -3
  114. package/src/sap/fe/macros/messagebundle_cs.properties +4 -2
  115. package/src/sap/fe/macros/messagebundle_cy.properties +7 -5
  116. package/src/sap/fe/macros/messagebundle_da.properties +6 -4
  117. package/src/sap/fe/macros/messagebundle_de.properties +11 -9
  118. package/src/sap/fe/macros/messagebundle_el.properties +7 -5
  119. package/src/sap/fe/macros/messagebundle_en.properties +8 -6
  120. package/src/sap/fe/macros/messagebundle_en_GB.properties +8 -6
  121. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +8 -6
  122. package/src/sap/fe/macros/messagebundle_es.properties +6 -4
  123. package/src/sap/fe/macros/messagebundle_es_MX.properties +6 -4
  124. package/src/sap/fe/macros/messagebundle_et.properties +5 -3
  125. package/src/sap/fe/macros/messagebundle_fi.properties +8 -6
  126. package/src/sap/fe/macros/messagebundle_fr.properties +6 -4
  127. package/src/sap/fe/macros/messagebundle_fr_CA.properties +8 -6
  128. package/src/sap/fe/macros/messagebundle_hi.properties +6 -4
  129. package/src/sap/fe/macros/messagebundle_hr.properties +6 -4
  130. package/src/sap/fe/macros/messagebundle_hu.properties +4 -2
  131. package/src/sap/fe/macros/messagebundle_id.properties +8 -6
  132. package/src/sap/fe/macros/messagebundle_it.properties +4 -2
  133. package/src/sap/fe/macros/messagebundle_iw.properties +5 -3
  134. package/src/sap/fe/macros/messagebundle_ja.properties +5 -3
  135. package/src/sap/fe/macros/messagebundle_kk.properties +5 -3
  136. package/src/sap/fe/macros/messagebundle_ko.properties +4 -2
  137. package/src/sap/fe/macros/messagebundle_lt.properties +6 -4
  138. package/src/sap/fe/macros/messagebundle_lv.properties +5 -3
  139. package/src/sap/fe/macros/messagebundle_mk.properties +5 -3
  140. package/src/sap/fe/macros/messagebundle_ms.properties +8 -6
  141. package/src/sap/fe/macros/messagebundle_nl.properties +7 -5
  142. package/src/sap/fe/macros/messagebundle_no.properties +6 -4
  143. package/src/sap/fe/macros/messagebundle_pl.properties +6 -4
  144. package/src/sap/fe/macros/messagebundle_pt.properties +7 -5
  145. package/src/sap/fe/macros/messagebundle_pt_PT.properties +6 -4
  146. package/src/sap/fe/macros/messagebundle_ro.properties +7 -5
  147. package/src/sap/fe/macros/messagebundle_ru.properties +4 -2
  148. package/src/sap/fe/macros/messagebundle_sh.properties +5 -3
  149. package/src/sap/fe/macros/messagebundle_sk.properties +5 -3
  150. package/src/sap/fe/macros/messagebundle_sl.properties +6 -4
  151. package/src/sap/fe/macros/messagebundle_sr.properties +5 -3
  152. package/src/sap/fe/macros/messagebundle_sv.properties +5 -3
  153. package/src/sap/fe/macros/messagebundle_th.properties +4 -2
  154. package/src/sap/fe/macros/messagebundle_tr.properties +4 -2
  155. package/src/sap/fe/macros/messagebundle_uk.properties +10 -8
  156. package/src/sap/fe/macros/messagebundle_vi.properties +6 -4
  157. package/src/sap/fe/macros/messagebundle_zh_CN.properties +5 -3
  158. package/src/sap/fe/macros/messagebundle_zh_TW.properties +5 -3
  159. package/src/sap/fe/macros/messages/MessageButton.js +17 -19
  160. package/src/sap/fe/macros/messages/MessageButton.ts +24 -22
  161. package/src/sap/fe/macros/table/Action.js +24 -2
  162. package/src/sap/fe/macros/table/Action.ts +13 -0
  163. package/src/sap/fe/macros/table/ActionGroup.js +24 -2
  164. package/src/sap/fe/macros/table/ActionGroup.ts +13 -0
  165. package/src/sap/fe/macros/table/ActionGroupOverride.js +24 -2
  166. package/src/sap/fe/macros/table/ActionGroupOverride.ts +13 -0
  167. package/src/sap/fe/macros/table/ActionOverride.js +24 -2
  168. package/src/sap/fe/macros/table/ActionOverride.ts +13 -0
  169. package/src/sap/fe/macros/table/ActionsTemplating.js +73 -12
  170. package/src/sap/fe/macros/table/ActionsTemplating.tsx +69 -13
  171. package/src/sap/fe/macros/table/Column.js +3 -3
  172. package/src/sap/fe/macros/table/Column.ts +2 -2
  173. package/src/sap/fe/macros/table/MdcTableTemplate.js +20 -8
  174. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +32 -6
  175. package/src/sap/fe/macros/table/QuickFilterSelector.js +35 -14
  176. package/src/sap/fe/macros/table/QuickFilterSelector.tsx +22 -3
  177. package/src/sap/fe/macros/table/Table.block.js +137 -108
  178. package/src/sap/fe/macros/table/Table.block.tsx +29 -2
  179. package/src/sap/fe/macros/table/Table.js +7 -1
  180. package/src/sap/fe/macros/table/Table.tsx +7 -1
  181. package/src/sap/fe/macros/table/TableAPI.js +150 -133
  182. package/src/sap/fe/macros/table/TableAPI.ts +20 -3
  183. package/src/sap/fe/macros/table/TableDefinition.js +4 -2
  184. package/src/sap/fe/macros/table/TableDefinition.ts +3 -1
  185. package/src/sap/fe/macros/table/TableRuntime.js +3 -3
  186. package/src/sap/fe/macros/table/TableRuntime.ts +2 -2
  187. package/src/sap/fe/macros/table/TableSizeHelper.js +3 -3
  188. package/src/sap/fe/macros/table/TableSizeHelper.ts +5 -2
  189. package/src/sap/fe/macros/table/TreeTable.js +7 -1
  190. package/src/sap/fe/macros/table/TreeTable.tsx +7 -1
  191. package/src/sap/fe/macros/table/delegates/TableDelegate.js +27 -20
  192. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +35 -26
  193. package/src/sap/fe/macros/table/designtime/Table.designtime.js +3 -1
  194. package/src/sap/fe/macros/table/designtime/Table.designtime.ts +2 -0
  195. package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +10 -10
  196. package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +11 -9
  197. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +8 -8
  198. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +7 -6
  199. package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.js +3 -1
  200. package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.ts +2 -1
  201. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -1
  202. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +1 -0
  203. package/src/sap/fe/macros/table/mixin/TableHierarchy.js +4 -1
  204. package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +3 -0
  205. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +37 -8
  206. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +47 -16
  207. package/src/sap/fe/macros/visualfilters/VisualFilter.js +95 -6
  208. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +93 -2
  209. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +15 -3
  210. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +17 -2
@@ -5,7 +5,7 @@
5
5
  sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBlockSupport", "sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase", "sap/fe/core/converters/ManifestSettings", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/converters/controls/Common/DataVisualization", "sap/fe/core/converters/controls/Common/table/StandardActions", "sap/fe/core/helpers/StableIdHelper", "sap/fe/core/helpers/TypeGuards", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/macros/MacroAPI", "sap/fe/macros/table/MdcTableTemplate", "sap/fe/macros/table/TableAPI", "sap/fe/macros/table/TableCreationOptions", "sap/m/FlexItemData", "../TSXUtils", "./TableEventHandlerProvider", "sap/fe/base/jsx-runtime/jsx"], function (Log, BuildingBlockSupport, BuildingBlockTemplatingBase, ManifestSettings, MetaModelConverter, DataVisualization, StandardActions, StableIdHelper, TypeGuards, DataModelPathHelper, MacroAPI, MdcTableTemplate, TableAPI, TableCreationOptions, FlexItemData, TSXUtils, TableEventHandlerProvider, _jsx) {
6
6
  "use strict";
7
7
 
8
- var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _dec28, _dec29, _dec30, _dec31, _dec32, _dec33, _dec34, _dec35, _dec36, _dec37, _dec38, _dec39, _dec40, _dec41, _dec42, _dec43, _dec44, _dec45, _dec46, _dec47, _dec48, _dec49, _dec50, _dec51, _dec52, _dec53, _dec54, _dec55, _dec56, _dec57, _dec58, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22, _descriptor23, _descriptor24, _descriptor25, _descriptor26, _descriptor27, _descriptor28, _descriptor29, _descriptor30, _descriptor31, _descriptor32, _descriptor33, _descriptor34, _descriptor35, _descriptor36, _descriptor37, _descriptor38, _descriptor39, _descriptor40, _descriptor41, _descriptor42, _descriptor43, _descriptor44, _descriptor45, _descriptor46, _descriptor47, _descriptor48, _descriptor49, _descriptor50, _descriptor51, _descriptor52, _descriptor53, _descriptor54, _descriptor55, _descriptor56, _descriptor57, _TableBlock;
8
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _dec28, _dec29, _dec30, _dec31, _dec32, _dec33, _dec34, _dec35, _dec36, _dec37, _dec38, _dec39, _dec40, _dec41, _dec42, _dec43, _dec44, _dec45, _dec46, _dec47, _dec48, _dec49, _dec50, _dec51, _dec52, _dec53, _dec54, _dec55, _dec56, _dec57, _dec58, _dec59, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22, _descriptor23, _descriptor24, _descriptor25, _descriptor26, _descriptor27, _descriptor28, _descriptor29, _descriptor30, _descriptor31, _descriptor32, _descriptor33, _descriptor34, _descriptor35, _descriptor36, _descriptor37, _descriptor38, _descriptor39, _descriptor40, _descriptor41, _descriptor42, _descriptor43, _descriptor44, _descriptor45, _descriptor46, _descriptor47, _descriptor48, _descriptor49, _descriptor50, _descriptor51, _descriptor52, _descriptor53, _descriptor54, _descriptor55, _descriptor56, _descriptor57, _descriptor58, _TableBlock;
9
9
  var _exports = {};
10
10
  var createCustomData = TSXUtils.createCustomData;
11
11
  var getMDCTableTemplate = MdcTableTemplate.getMDCTableTemplate;
@@ -105,6 +105,12 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
105
105
  if (actionNode?.getAttribute("isAIOperation")) {
106
106
  action["isAIOperation"] = getDynamicBooleanValueOfAttribute(actionNode, "isAIOperation");
107
107
  }
108
+ if (actionNode?.getAttribute("priority")) {
109
+ action["priority"] = safeGetAttribute(actionNode, "priority");
110
+ }
111
+ if (actionNode?.getAttribute("group")) {
112
+ action["group"] = Number.parseInt(safeGetAttribute(actionNode, "group") ?? "", 10);
113
+ }
108
114
  return action;
109
115
  }
110
116
 
@@ -247,7 +253,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
247
253
  }
248
254
  }
249
255
  }
250
- return aggregation?.outerHTML;
256
+ return aggregation?.outerHTML ?? element.getAttribute("template") ?? undefined;
251
257
  };
252
258
  const parseSimpleAggregation = (element, aggregationName) => {
253
259
  const aggregation = getAggregation(element, aggregationName);
@@ -366,78 +372,82 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
366
372
  isPublic: true
367
373
  }), _dec21 = blockAttribute({
368
374
  type: "string",
369
- isPublic: true,
370
- isAssociation: true
375
+ allowedValues: ["Block", "GridLarge", "GridSmall"],
376
+ isPublic: true
371
377
  }), _dec22 = blockAttribute({
372
378
  type: "string",
373
- isPublic: true
379
+ isPublic: true,
380
+ isAssociation: true
374
381
  }), _dec23 = blockAttribute({
375
- type: "sap.ui.core.TitleLevel",
382
+ type: "string",
376
383
  isPublic: true
377
384
  }), _dec24 = blockAttribute({
378
- type: "boolean",
385
+ type: "sap.ui.core.TitleLevel",
379
386
  isPublic: true
380
387
  }), _dec25 = blockAttribute({
381
- type: "string",
388
+ type: "boolean",
382
389
  isPublic: true
383
390
  }), _dec26 = blockAttribute({
384
391
  type: "string",
385
392
  isPublic: true
386
393
  }), _dec27 = blockAttribute({
394
+ type: "string",
395
+ isPublic: true
396
+ }), _dec28 = blockAttribute({
387
397
  type: "sap.ui.model.Context",
388
398
  underlyingType: "string",
389
399
  expectedTypes: ["EntitySet", "EntityType", "Singleton", "NavigationProperty"],
390
400
  expectedAnnotations: ["com.sap.vocabularies.UI.v1.SelectionVariant"],
391
401
  isPublic: true
392
- }), _dec28 = blockAttribute({
402
+ }), _dec29 = blockAttribute({
393
403
  type: "boolean",
394
404
  isPublic: true
395
- }), _dec29 = blockAttribute({
405
+ }), _dec30 = blockAttribute({
396
406
  type: "string",
397
407
  isPublic: true
398
- }), _dec30 = blockAttribute({
408
+ }), _dec31 = blockAttribute({
399
409
  type: "boolean",
400
410
  isPublic: true
401
- }), _dec31 = blockAttribute({
411
+ }), _dec32 = blockAttribute({
402
412
  type: "string",
403
413
  isPublic: true,
404
414
  allowedValues: ["GridTable", "ResponsiveTable", "AnalyticalTable"]
405
- }), _dec32 = blockAttribute({
415
+ }), _dec33 = blockAttribute({
406
416
  type: "boolean",
407
417
  isPublic: true
408
- }), _dec33 = blockAttribute({
418
+ }), _dec34 = blockAttribute({
409
419
  type: "string",
410
420
  isPublic: true,
411
421
  allowedValues: ["None", "Single", "Multi", "Auto", "ForceMulti", "ForceSingle"]
412
- }), _dec34 = blockAttribute({
422
+ }), _dec35 = blockAttribute({
413
423
  type: "string",
414
424
  isPublic: true,
415
425
  allowedValues: ["Control"]
416
- }), _dec35 = blockAttribute({
426
+ }), _dec36 = blockAttribute({
417
427
  type: "string",
418
428
  isPublic: true
419
- }), _dec36 = blockAttribute({
429
+ }), _dec37 = blockAttribute({
420
430
  type: "string",
421
431
  isPublic: true,
422
432
  allowedValues: ["illustratedMessage-Auto", "illustratedMessage-Base", "illustratedMessage-Medium", "illustratedMessage-Dot", "illustratedMessage-ExtraSmall", "illustratedMessage-Scene", "illustratedMessage-Large", "illustratedMessage-Spot", "illustratedMessage-Small", "text"]
423
- }), _dec37 = blockAttribute({
424
- type: "sap.ui.core.TitleLevel"
425
433
  }), _dec38 = blockAttribute({
434
+ type: "sap.ui.core.TitleLevel"
435
+ }), _dec39 = blockAttribute({
426
436
  type: "boolean",
427
437
  isPublic: true
428
- }), _dec39 = blockAttribute({
429
- type: "string"
430
438
  }), _dec40 = blockAttribute({
431
- type: "boolean"
439
+ type: "string"
432
440
  }), _dec41 = blockAttribute({
433
441
  type: "boolean"
434
442
  }), _dec42 = blockAttribute({
435
- type: "string"
436
- }), _dec43 = blockAttribute({
437
443
  type: "boolean"
444
+ }), _dec43 = blockAttribute({
445
+ type: "string"
438
446
  }), _dec44 = blockAttribute({
439
447
  type: "boolean"
440
448
  }), _dec45 = blockAttribute({
449
+ type: "boolean"
450
+ }), _dec46 = blockAttribute({
441
451
  type: "object",
442
452
  underlyingType: "sap.fe.macros.table.TableCreationOptions",
443
453
  isPublic: true,
@@ -447,7 +457,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
447
457
  }
448
458
  return creationOptionsInput;
449
459
  }
450
- }), _dec46 = blockAttribute({
460
+ }), _dec47 = blockAttribute({
451
461
  type: "object",
452
462
  underlyingType: "sap.fe.macros.table.AnalyticalConfiguration",
453
463
  isPublic: true,
@@ -457,20 +467,20 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
457
467
  }
458
468
  return analyticalConfiguration;
459
469
  }
460
- }), _dec47 = blockAggregation({
470
+ }), _dec48 = blockAggregation({
461
471
  type: "sap.fe.macros.table.Action",
462
472
  altTypes: ["sap.fe.macros.table.ActionGroup", "sap.fe.macros.table.ActionOverride", "sap.fe.macros.table.ActionGroupOverride"],
463
473
  isPublic: true,
464
474
  hasVirtualNode: true,
465
475
  multiple: true,
466
476
  processAggregations: setCustomActionGroupProperties
467
- }), _dec48 = blockAggregation({
477
+ }), _dec49 = blockAggregation({
468
478
  type: "sap.fe.macros.table.MassEdit",
469
479
  isPublic: true,
470
480
  multiple: false,
471
481
  skipKey: true,
472
482
  processAggregations: setCustomMassEditProperties
473
- }), _dec49 = blockAggregation({
483
+ }), _dec50 = blockAggregation({
474
484
  type: "sap.fe.macros.table.Column",
475
485
  altTypes: ["sap.fe.macros.table.ColumnOverride"],
476
486
  isPublic: true,
@@ -478,13 +488,13 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
478
488
  hasVirtualNode: true,
479
489
  isDefault: true,
480
490
  processAggregations: setCustomColumnProperties
481
- }), _dec50 = blockAggregation({
491
+ }), _dec51 = blockAggregation({
482
492
  type: "sap.fe.macros.table.QuickVariantSelection",
483
493
  isPublic: true,
484
494
  skipKey: true,
485
495
  multiple: false,
486
496
  processAggregations: setQuickVariantSelection
487
- }), _dec51 = blockEvent(), _dec52 = blockEvent(), _dec53 = blockEvent(), _dec54 = blockEvent(), _dec55 = blockEvent(), _dec56 = blockEvent(), _dec57 = blockEvent(), _dec58 = blockAttribute({
497
+ }), _dec52 = blockEvent(), _dec53 = blockEvent(), _dec54 = blockEvent(), _dec55 = blockEvent(), _dec56 = blockEvent(), _dec57 = blockEvent(), _dec58 = blockEvent(), _dec59 = blockAttribute({
488
498
  type: "boolean",
489
499
  isPublic: true
490
500
  }), _dec(_class = (_class2 = (_TableBlock = /*#__PURE__*/function (_BuildingBlockTemplat) {
@@ -600,36 +610,46 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
600
610
  * @public
601
611
  */
602
612
  _initializerDefineProperty(_this, "threshold", _descriptor19, _this);
613
+ /**
614
+ * Defines the layout options of the table popins. Only applies to responsive tables.
615
+ *
616
+ * Allowed values are `Block`, `GridLarge`, and `GridSmall`.<br/>
617
+ * - `Block`: Sets a block layout for rendering the table popins. The elements inside the popin container are rendered one below the other.<br/>
618
+ * - `GridLarge`: Sets a grid layout for rendering the table popins. The grid width for each table popin is comparatively larger than GridSmall, so this layout allows less content to be rendered in a single popin row.<br/>
619
+ * - `GridSmall`: Sets a grid layout for rendering the table popins. The grid width for each table popin is small, so this layout allows more content to be rendered in a single popin row.<br/>
620
+ * @public
621
+ */
622
+ _initializerDefineProperty(_this, "popinLayout", _descriptor20, _this);
603
623
  /**
604
624
  * ID of the FilterBar building block associated with the table.
605
625
  * @public
606
626
  */
607
- _initializerDefineProperty(_this, "filterBar", _descriptor20, _this);
627
+ _initializerDefineProperty(_this, "filterBar", _descriptor21, _this);
608
628
  /**
609
629
  * Specifies the header text that is shown in the table.
610
630
  * @public
611
631
  */
612
- _initializerDefineProperty(_this, "header", _descriptor21, _this);
632
+ _initializerDefineProperty(_this, "header", _descriptor22, _this);
613
633
  /**
614
634
  * Defines the "aria-level" of the table header
615
635
  */
616
- _initializerDefineProperty(_this, "headerLevel", _descriptor22, _this);
636
+ _initializerDefineProperty(_this, "headerLevel", _descriptor23, _this);
617
637
  /**
618
638
  * Controls if the header text should be shown or not.
619
639
  * @public
620
640
  */
621
- _initializerDefineProperty(_this, "headerVisible", _descriptor23, _this);
622
- _initializerDefineProperty(_this, "id", _descriptor24, _this);
623
- _initializerDefineProperty(_this, "contentId", _descriptor25, _this);
641
+ _initializerDefineProperty(_this, "headerVisible", _descriptor24, _this);
642
+ _initializerDefineProperty(_this, "id", _descriptor25, _this);
643
+ _initializerDefineProperty(_this, "contentId", _descriptor26, _this);
624
644
  /**
625
645
  * Additionnal SelectionVariant to be applied on the table content.
626
646
  */
627
- _initializerDefineProperty(_this, "associatedSelectionVariantPath", _descriptor26, _this);
647
+ _initializerDefineProperty(_this, "associatedSelectionVariantPath", _descriptor27, _this);
628
648
  /**
629
649
  * Defines whether to display the search action.
630
650
  * @public
631
651
  */
632
- _initializerDefineProperty(_this, "isSearchable", _descriptor27, _this);
652
+ _initializerDefineProperty(_this, "isSearchable", _descriptor28, _this);
633
653
  /**
634
654
  * Controls which options should be enabled for the table personalization dialog.
635
655
  *
@@ -646,25 +666,25 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
646
666
  * The Group option is only applicable to analytical tables and responsive tables.<br/>
647
667
  * @public
648
668
  */
649
- _initializerDefineProperty(_this, "personalization", _descriptor28, _this);
669
+ _initializerDefineProperty(_this, "personalization", _descriptor29, _this);
650
670
  /**
651
671
  * An expression that allows you to control the 'read-only' state of the table.
652
672
  *
653
673
  * If you do not set any expression, SAP Fiori elements hooks into the standard lifecycle to determine the current state.
654
674
  * @public
655
675
  */
656
- _initializerDefineProperty(_this, "readOnly", _descriptor29, _this);
676
+ _initializerDefineProperty(_this, "readOnly", _descriptor30, _this);
657
677
  /**
658
678
  * Defines the type of table that will be used by the building block to render the data.
659
679
  *
660
680
  * Allowed values are `GridTable`, `ResponsiveTable` and `AnalyticalTable`.
661
681
  * @public
662
682
  */
663
- _initializerDefineProperty(_this, "type", _descriptor30, _this);
683
+ _initializerDefineProperty(_this, "type", _descriptor31, _this);
664
684
  /**
665
685
  * Specifies whether the table is displayed with condensed layout (true/false). The default setting is `false`.
666
686
  */
667
- _initializerDefineProperty(_this, "useCondensedLayout", _descriptor31, _this);
687
+ _initializerDefineProperty(_this, "useCondensedLayout", _descriptor32, _this);
668
688
  /**
669
689
  * Defines the selection mode to be used by the table.
670
690
  *
@@ -673,7 +693,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
673
693
  * If set to 'ForceSingle' or 'ForceMulti' your choice will be respected but this might not respect the Fiori guidelines.
674
694
  * @public
675
695
  */
676
- _initializerDefineProperty(_this, "selectionMode", _descriptor32, _this);
696
+ _initializerDefineProperty(_this, "selectionMode", _descriptor33, _this);
677
697
  /**
678
698
  * Controls the kind of variant management that should be enabled for the table.
679
699
  *
@@ -682,7 +702,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
682
702
  * If not set with any value, control level variant management is not available for this table.
683
703
  * @public
684
704
  */
685
- _initializerDefineProperty(_this, "variantManagement", _descriptor33, _this);
705
+ _initializerDefineProperty(_this, "variantManagement", _descriptor34, _this);
686
706
  /**
687
707
  * Comma-separated value of fields that must be ignored in the OData metadata by the Table building block.<br>
688
708
  * The table building block is not going to create built-in columns or offer table personalization for comma-separated value of fields that are provided in the ignoredfields.<br>
@@ -690,62 +710,62 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
690
710
  * @since 1.124.0
691
711
  * @public
692
712
  */
693
- _initializerDefineProperty(_this, "ignoredFields", _descriptor34, _this);
713
+ _initializerDefineProperty(_this, "ignoredFields", _descriptor35, _this);
694
714
  /**
695
715
  * Changes the size of the IllustratedMessage in the table, or removes it completely.
696
716
  * Allowed values are `illustratedMessage-Auto`, `illustratedMessage-Base`, `illustratedMessage-Dialog`, `illustratedMessage-Dot`, `illustratedMessage-Scene`, `illustratedMessage-Spot` or `text`.
697
717
  * @since 1.129.0
698
718
  * @public
699
719
  */
700
- _initializerDefineProperty(_this, "modeForNoDataMessage", _descriptor35, _this);
720
+ _initializerDefineProperty(_this, "modeForNoDataMessage", _descriptor36, _this);
701
721
  /**
702
722
  * Defines the header style of the table header
703
723
  */
704
- _initializerDefineProperty(_this, "headerStyle", _descriptor36, _this);
724
+ _initializerDefineProperty(_this, "headerStyle", _descriptor37, _this);
705
725
  /**
706
726
  * Specifies if the column width is automatically calculated.
707
727
  * @public
708
728
  */
709
- _initializerDefineProperty(_this, "enableAutoColumnWidth", _descriptor37, _this);
710
- _initializerDefineProperty(_this, "fieldMode", _descriptor38, _this);
711
- _initializerDefineProperty(_this, "isAlp", _descriptor39, _this);
729
+ _initializerDefineProperty(_this, "enableAutoColumnWidth", _descriptor38, _this);
730
+ _initializerDefineProperty(_this, "fieldMode", _descriptor39, _this);
731
+ _initializerDefineProperty(_this, "isAlp", _descriptor40, _this);
712
732
  /**
713
733
  * True if the table is in a ListReport multi view
714
734
  */
715
- _initializerDefineProperty(_this, "inMultiView", _descriptor40, _this);
716
- _initializerDefineProperty(_this, "tabTitle", _descriptor41, _this);
717
- _initializerDefineProperty(_this, "visible", _descriptor42, _this);
718
- _initializerDefineProperty(_this, "displaySegmentedButton", _descriptor43, _this);
735
+ _initializerDefineProperty(_this, "inMultiView", _descriptor41, _this);
736
+ _initializerDefineProperty(_this, "tabTitle", _descriptor42, _this);
737
+ _initializerDefineProperty(_this, "visible", _descriptor43, _this);
738
+ _initializerDefineProperty(_this, "displaySegmentedButton", _descriptor44, _this);
719
739
  /**
720
740
  * A set of options that can be configured.
721
741
  * @public
722
742
  */
723
- _initializerDefineProperty(_this, "creationMode", _descriptor44, _this);
743
+ _initializerDefineProperty(_this, "creationMode", _descriptor45, _this);
724
744
  /**
725
745
  * A set of options that can be configured to control the aggregation behavior
726
746
  * @private
727
747
  */
728
- _initializerDefineProperty(_this, "analyticalConfiguration", _descriptor45, _this);
748
+ _initializerDefineProperty(_this, "analyticalConfiguration", _descriptor46, _this);
729
749
  /**
730
750
  * Aggregate actions of the table.
731
751
  * @public
732
752
  */
733
- _initializerDefineProperty(_this, "actions", _descriptor46, _this);
753
+ _initializerDefineProperty(_this, "actions", _descriptor47, _this);
734
754
  /**
735
755
  * Aggregate mass edit of the table.
736
756
  * @public
737
757
  */
738
- _initializerDefineProperty(_this, "massEdit", _descriptor47, _this);
758
+ _initializerDefineProperty(_this, "massEdit", _descriptor48, _this);
739
759
  /**
740
760
  * Aggregate columns of the table.
741
761
  * @public
742
762
  */
743
- _initializerDefineProperty(_this, "columns", _descriptor48, _this);
763
+ _initializerDefineProperty(_this, "columns", _descriptor49, _this);
744
764
  /**
745
765
  * Aggregate quickVariantSelection of the table.
746
766
  * @public
747
767
  */
748
- _initializerDefineProperty(_this, "quickVariantSelection", _descriptor49, _this);
768
+ _initializerDefineProperty(_this, "quickVariantSelection", _descriptor50, _this);
749
769
  /**
750
770
  * Before a table rebind, an event is triggered that contains information about the binding.
751
771
  *
@@ -755,32 +775,32 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
755
775
  * You can use this event to add selects, and add or read the sorters and filters.
756
776
  * @public
757
777
  */
758
- _initializerDefineProperty(_this, "beforeRebindTable", _descriptor50, _this);
778
+ _initializerDefineProperty(_this, "beforeRebindTable", _descriptor51, _this);
759
779
  /**
760
780
  * An event is triggered when the user chooses a row; the event contains information about which row is chosen.
761
781
  *
762
782
  * You can set this in order to handle the navigation manually.
763
783
  * @public
764
784
  */
765
- _initializerDefineProperty(_this, "rowPress", _descriptor51, _this);
785
+ _initializerDefineProperty(_this, "rowPress", _descriptor52, _this);
766
786
  /**
767
787
  * Event handler to react to the change event of the table's list binding.
768
788
  *
769
789
  * Internal only
770
790
  */
771
- _initializerDefineProperty(_this, "listBindingChange", _descriptor52, _this);
791
+ _initializerDefineProperty(_this, "listBindingChange", _descriptor53, _this);
772
792
  /**
773
793
  * Event handler called when the user chooses an option of the segmented button in the ALP View
774
794
  */
775
- _initializerDefineProperty(_this, "segmentedButtonPress", _descriptor53, _this);
776
- _initializerDefineProperty(_this, "variantSaved", _descriptor54, _this);
795
+ _initializerDefineProperty(_this, "segmentedButtonPress", _descriptor54, _this);
796
+ _initializerDefineProperty(_this, "variantSaved", _descriptor55, _this);
777
797
  /**
778
798
  * An event triggered when the selection in the table changes.
779
799
  * @public
780
800
  */
781
- _initializerDefineProperty(_this, "selectionChange", _descriptor55, _this);
782
- _initializerDefineProperty(_this, "variantSelected", _descriptor56, _this);
783
- _initializerDefineProperty(_this, "initialLoad", _descriptor57, _this);
801
+ _initializerDefineProperty(_this, "selectionChange", _descriptor56, _this);
802
+ _initializerDefineProperty(_this, "variantSelected", _descriptor57, _this);
803
+ _initializerDefineProperty(_this, "initialLoad", _descriptor58, _this);
784
804
  const contextObjectPath = getInvolvedDataModelObjects(_this.metaPath, _this.contextPath);
785
805
  _this.contextObjectPath = contextObjectPath;
786
806
  _this.tableDefinition = TableBlock.createTableDefinition(_this, templateProcessorSettings);
@@ -877,6 +897,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
877
897
  TableBlock.addSetting(tableSettings, "disableCopyToClipboard", this.disableCopyToClipboard);
878
898
  TableBlock.addSetting(tableSettings, "scrollThreshold", this.scrollThreshold);
879
899
  TableBlock.addSetting(tableSettings, "threshold", this.threshold);
900
+ TableBlock.addSetting(tableSettings, "popinLayout", this.popinLayout);
880
901
  TableBlock.addSetting(tableSettings, "selectionMode", this.selectionMode);
881
902
  TableBlock.addSetting(tableSettings, "type", this.type);
882
903
  if (this.quickVariantSelection?.quickFilters?.paths?.length) {
@@ -963,7 +984,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
963
984
  enableOnSelect: action.enableOnSelect,
964
985
  visible: action.visible,
965
986
  enabled: action.enabled,
966
- isAIOperation: action.isAIOperation
987
+ isAIOperation: action.isAIOperation,
988
+ priority: action.priority,
989
+ group: action.group
967
990
  };
968
991
  if (action._type === "Action") {
969
992
  actionsSettings[key] = {
@@ -1122,6 +1145,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
1122
1145
  disableCopyToClipboard: this.disableCopyToClipboard,
1123
1146
  scrollThreshold: this.scrollThreshold,
1124
1147
  threshold: this.tableDefinition.control.threshold ?? this.tableDefinition.annotation.threshold,
1148
+ popinLayout: this.popinLayout,
1125
1149
  isSearchable: this.isSearchable,
1126
1150
  busy: this.busy,
1127
1151
  initialLoad: this.initialLoad,
@@ -1283,204 +1307,209 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
1283
1307
  enumerable: true,
1284
1308
  writable: true,
1285
1309
  initializer: null
1286
- }), _descriptor20 = _applyDecoratedDescriptor(_class2.prototype, "filterBar", [_dec21], {
1310
+ }), _descriptor20 = _applyDecoratedDescriptor(_class2.prototype, "popinLayout", [_dec21], {
1311
+ configurable: true,
1312
+ enumerable: true,
1313
+ writable: true,
1314
+ initializer: null
1315
+ }), _descriptor21 = _applyDecoratedDescriptor(_class2.prototype, "filterBar", [_dec22], {
1287
1316
  configurable: true,
1288
1317
  enumerable: true,
1289
1318
  writable: true,
1290
1319
  initializer: null
1291
- }), _descriptor21 = _applyDecoratedDescriptor(_class2.prototype, "header", [_dec22], {
1320
+ }), _descriptor22 = _applyDecoratedDescriptor(_class2.prototype, "header", [_dec23], {
1292
1321
  configurable: true,
1293
1322
  enumerable: true,
1294
1323
  writable: true,
1295
1324
  initializer: null
1296
- }), _descriptor22 = _applyDecoratedDescriptor(_class2.prototype, "headerLevel", [_dec23], {
1325
+ }), _descriptor23 = _applyDecoratedDescriptor(_class2.prototype, "headerLevel", [_dec24], {
1297
1326
  configurable: true,
1298
1327
  enumerable: true,
1299
1328
  writable: true,
1300
1329
  initializer: null
1301
- }), _descriptor23 = _applyDecoratedDescriptor(_class2.prototype, "headerVisible", [_dec24], {
1330
+ }), _descriptor24 = _applyDecoratedDescriptor(_class2.prototype, "headerVisible", [_dec25], {
1302
1331
  configurable: true,
1303
1332
  enumerable: true,
1304
1333
  writable: true,
1305
1334
  initializer: null
1306
- }), _descriptor24 = _applyDecoratedDescriptor(_class2.prototype, "id", [_dec25], {
1335
+ }), _descriptor25 = _applyDecoratedDescriptor(_class2.prototype, "id", [_dec26], {
1307
1336
  configurable: true,
1308
1337
  enumerable: true,
1309
1338
  writable: true,
1310
1339
  initializer: null
1311
- }), _descriptor25 = _applyDecoratedDescriptor(_class2.prototype, "contentId", [_dec26], {
1340
+ }), _descriptor26 = _applyDecoratedDescriptor(_class2.prototype, "contentId", [_dec27], {
1312
1341
  configurable: true,
1313
1342
  enumerable: true,
1314
1343
  writable: true,
1315
1344
  initializer: null
1316
- }), _descriptor26 = _applyDecoratedDescriptor(_class2.prototype, "associatedSelectionVariantPath", [_dec27], {
1345
+ }), _descriptor27 = _applyDecoratedDescriptor(_class2.prototype, "associatedSelectionVariantPath", [_dec28], {
1317
1346
  configurable: true,
1318
1347
  enumerable: true,
1319
1348
  writable: true,
1320
1349
  initializer: null
1321
- }), _descriptor27 = _applyDecoratedDescriptor(_class2.prototype, "isSearchable", [_dec28], {
1350
+ }), _descriptor28 = _applyDecoratedDescriptor(_class2.prototype, "isSearchable", [_dec29], {
1322
1351
  configurable: true,
1323
1352
  enumerable: true,
1324
1353
  writable: true,
1325
1354
  initializer: null
1326
- }), _descriptor28 = _applyDecoratedDescriptor(_class2.prototype, "personalization", [_dec29], {
1355
+ }), _descriptor29 = _applyDecoratedDescriptor(_class2.prototype, "personalization", [_dec30], {
1327
1356
  configurable: true,
1328
1357
  enumerable: true,
1329
1358
  writable: true,
1330
1359
  initializer: null
1331
- }), _descriptor29 = _applyDecoratedDescriptor(_class2.prototype, "readOnly", [_dec30], {
1360
+ }), _descriptor30 = _applyDecoratedDescriptor(_class2.prototype, "readOnly", [_dec31], {
1332
1361
  configurable: true,
1333
1362
  enumerable: true,
1334
1363
  writable: true,
1335
1364
  initializer: null
1336
- }), _descriptor30 = _applyDecoratedDescriptor(_class2.prototype, "type", [_dec31], {
1365
+ }), _descriptor31 = _applyDecoratedDescriptor(_class2.prototype, "type", [_dec32], {
1337
1366
  configurable: true,
1338
1367
  enumerable: true,
1339
1368
  writable: true,
1340
1369
  initializer: null
1341
- }), _descriptor31 = _applyDecoratedDescriptor(_class2.prototype, "useCondensedLayout", [_dec32], {
1370
+ }), _descriptor32 = _applyDecoratedDescriptor(_class2.prototype, "useCondensedLayout", [_dec33], {
1342
1371
  configurable: true,
1343
1372
  enumerable: true,
1344
1373
  writable: true,
1345
1374
  initializer: null
1346
- }), _descriptor32 = _applyDecoratedDescriptor(_class2.prototype, "selectionMode", [_dec33], {
1375
+ }), _descriptor33 = _applyDecoratedDescriptor(_class2.prototype, "selectionMode", [_dec34], {
1347
1376
  configurable: true,
1348
1377
  enumerable: true,
1349
1378
  writable: true,
1350
1379
  initializer: null
1351
- }), _descriptor33 = _applyDecoratedDescriptor(_class2.prototype, "variantManagement", [_dec34], {
1380
+ }), _descriptor34 = _applyDecoratedDescriptor(_class2.prototype, "variantManagement", [_dec35], {
1352
1381
  configurable: true,
1353
1382
  enumerable: true,
1354
1383
  writable: true,
1355
1384
  initializer: null
1356
- }), _descriptor34 = _applyDecoratedDescriptor(_class2.prototype, "ignoredFields", [_dec35], {
1385
+ }), _descriptor35 = _applyDecoratedDescriptor(_class2.prototype, "ignoredFields", [_dec36], {
1357
1386
  configurable: true,
1358
1387
  enumerable: true,
1359
1388
  writable: true,
1360
1389
  initializer: null
1361
- }), _descriptor35 = _applyDecoratedDescriptor(_class2.prototype, "modeForNoDataMessage", [_dec36], {
1390
+ }), _descriptor36 = _applyDecoratedDescriptor(_class2.prototype, "modeForNoDataMessage", [_dec37], {
1362
1391
  configurable: true,
1363
1392
  enumerable: true,
1364
1393
  writable: true,
1365
1394
  initializer: null
1366
- }), _descriptor36 = _applyDecoratedDescriptor(_class2.prototype, "headerStyle", [_dec37], {
1395
+ }), _descriptor37 = _applyDecoratedDescriptor(_class2.prototype, "headerStyle", [_dec38], {
1367
1396
  configurable: true,
1368
1397
  enumerable: true,
1369
1398
  writable: true,
1370
1399
  initializer: null
1371
- }), _descriptor37 = _applyDecoratedDescriptor(_class2.prototype, "enableAutoColumnWidth", [_dec38], {
1400
+ }), _descriptor38 = _applyDecoratedDescriptor(_class2.prototype, "enableAutoColumnWidth", [_dec39], {
1372
1401
  configurable: true,
1373
1402
  enumerable: true,
1374
1403
  writable: true,
1375
1404
  initializer: function () {
1376
1405
  return true;
1377
1406
  }
1378
- }), _descriptor38 = _applyDecoratedDescriptor(_class2.prototype, "fieldMode", [_dec39], {
1407
+ }), _descriptor39 = _applyDecoratedDescriptor(_class2.prototype, "fieldMode", [_dec40], {
1379
1408
  configurable: true,
1380
1409
  enumerable: true,
1381
1410
  writable: true,
1382
1411
  initializer: function () {
1383
1412
  return "";
1384
1413
  }
1385
- }), _descriptor39 = _applyDecoratedDescriptor(_class2.prototype, "isAlp", [_dec40], {
1414
+ }), _descriptor40 = _applyDecoratedDescriptor(_class2.prototype, "isAlp", [_dec41], {
1386
1415
  configurable: true,
1387
1416
  enumerable: true,
1388
1417
  writable: true,
1389
1418
  initializer: function () {
1390
1419
  return false;
1391
1420
  }
1392
- }), _descriptor40 = _applyDecoratedDescriptor(_class2.prototype, "inMultiView", [_dec41], {
1421
+ }), _descriptor41 = _applyDecoratedDescriptor(_class2.prototype, "inMultiView", [_dec42], {
1393
1422
  configurable: true,
1394
1423
  enumerable: true,
1395
1424
  writable: true,
1396
1425
  initializer: null
1397
- }), _descriptor41 = _applyDecoratedDescriptor(_class2.prototype, "tabTitle", [_dec42], {
1426
+ }), _descriptor42 = _applyDecoratedDescriptor(_class2.prototype, "tabTitle", [_dec43], {
1398
1427
  configurable: true,
1399
1428
  enumerable: true,
1400
1429
  writable: true,
1401
1430
  initializer: function () {
1402
1431
  return "";
1403
1432
  }
1404
- }), _descriptor42 = _applyDecoratedDescriptor(_class2.prototype, "visible", [_dec43], {
1433
+ }), _descriptor43 = _applyDecoratedDescriptor(_class2.prototype, "visible", [_dec44], {
1405
1434
  configurable: true,
1406
1435
  enumerable: true,
1407
1436
  writable: true,
1408
1437
  initializer: null
1409
- }), _descriptor43 = _applyDecoratedDescriptor(_class2.prototype, "displaySegmentedButton", [_dec44], {
1438
+ }), _descriptor44 = _applyDecoratedDescriptor(_class2.prototype, "displaySegmentedButton", [_dec45], {
1410
1439
  configurable: true,
1411
1440
  enumerable: true,
1412
1441
  writable: true,
1413
1442
  initializer: null
1414
- }), _descriptor44 = _applyDecoratedDescriptor(_class2.prototype, "creationMode", [_dec45], {
1443
+ }), _descriptor45 = _applyDecoratedDescriptor(_class2.prototype, "creationMode", [_dec46], {
1415
1444
  configurable: true,
1416
1445
  enumerable: true,
1417
1446
  writable: true,
1418
1447
  initializer: function () {
1419
1448
  return {};
1420
1449
  }
1421
- }), _descriptor45 = _applyDecoratedDescriptor(_class2.prototype, "analyticalConfiguration", [_dec46], {
1450
+ }), _descriptor46 = _applyDecoratedDescriptor(_class2.prototype, "analyticalConfiguration", [_dec47], {
1422
1451
  configurable: true,
1423
1452
  enumerable: true,
1424
1453
  writable: true,
1425
1454
  initializer: function () {
1426
1455
  return {};
1427
1456
  }
1428
- }), _descriptor46 = _applyDecoratedDescriptor(_class2.prototype, "actions", [_dec47], {
1457
+ }), _descriptor47 = _applyDecoratedDescriptor(_class2.prototype, "actions", [_dec48], {
1429
1458
  configurable: true,
1430
1459
  enumerable: true,
1431
1460
  writable: true,
1432
1461
  initializer: null
1433
- }), _descriptor47 = _applyDecoratedDescriptor(_class2.prototype, "massEdit", [_dec48], {
1462
+ }), _descriptor48 = _applyDecoratedDescriptor(_class2.prototype, "massEdit", [_dec49], {
1434
1463
  configurable: true,
1435
1464
  enumerable: true,
1436
1465
  writable: true,
1437
1466
  initializer: null
1438
- }), _descriptor48 = _applyDecoratedDescriptor(_class2.prototype, "columns", [_dec49], {
1467
+ }), _descriptor49 = _applyDecoratedDescriptor(_class2.prototype, "columns", [_dec50], {
1439
1468
  configurable: true,
1440
1469
  enumerable: true,
1441
1470
  writable: true,
1442
1471
  initializer: null
1443
- }), _descriptor49 = _applyDecoratedDescriptor(_class2.prototype, "quickVariantSelection", [_dec50], {
1472
+ }), _descriptor50 = _applyDecoratedDescriptor(_class2.prototype, "quickVariantSelection", [_dec51], {
1444
1473
  configurable: true,
1445
1474
  enumerable: true,
1446
1475
  writable: true,
1447
1476
  initializer: null
1448
- }), _descriptor50 = _applyDecoratedDescriptor(_class2.prototype, "beforeRebindTable", [_dec51], {
1477
+ }), _descriptor51 = _applyDecoratedDescriptor(_class2.prototype, "beforeRebindTable", [_dec52], {
1449
1478
  configurable: true,
1450
1479
  enumerable: true,
1451
1480
  writable: true,
1452
1481
  initializer: null
1453
- }), _descriptor51 = _applyDecoratedDescriptor(_class2.prototype, "rowPress", [_dec52], {
1482
+ }), _descriptor52 = _applyDecoratedDescriptor(_class2.prototype, "rowPress", [_dec53], {
1454
1483
  configurable: true,
1455
1484
  enumerable: true,
1456
1485
  writable: true,
1457
1486
  initializer: null
1458
- }), _descriptor52 = _applyDecoratedDescriptor(_class2.prototype, "listBindingChange", [_dec53], {
1487
+ }), _descriptor53 = _applyDecoratedDescriptor(_class2.prototype, "listBindingChange", [_dec54], {
1459
1488
  configurable: true,
1460
1489
  enumerable: true,
1461
1490
  writable: true,
1462
1491
  initializer: null
1463
- }), _descriptor53 = _applyDecoratedDescriptor(_class2.prototype, "segmentedButtonPress", [_dec54], {
1492
+ }), _descriptor54 = _applyDecoratedDescriptor(_class2.prototype, "segmentedButtonPress", [_dec55], {
1464
1493
  configurable: true,
1465
1494
  enumerable: true,
1466
1495
  writable: true,
1467
1496
  initializer: null
1468
- }), _descriptor54 = _applyDecoratedDescriptor(_class2.prototype, "variantSaved", [_dec55], {
1497
+ }), _descriptor55 = _applyDecoratedDescriptor(_class2.prototype, "variantSaved", [_dec56], {
1469
1498
  configurable: true,
1470
1499
  enumerable: true,
1471
1500
  writable: true,
1472
1501
  initializer: null
1473
- }), _descriptor55 = _applyDecoratedDescriptor(_class2.prototype, "selectionChange", [_dec56], {
1502
+ }), _descriptor56 = _applyDecoratedDescriptor(_class2.prototype, "selectionChange", [_dec57], {
1474
1503
  configurable: true,
1475
1504
  enumerable: true,
1476
1505
  writable: true,
1477
1506
  initializer: null
1478
- }), _descriptor56 = _applyDecoratedDescriptor(_class2.prototype, "variantSelected", [_dec57], {
1507
+ }), _descriptor57 = _applyDecoratedDescriptor(_class2.prototype, "variantSelected", [_dec58], {
1479
1508
  configurable: true,
1480
1509
  enumerable: true,
1481
1510
  writable: true,
1482
1511
  initializer: null
1483
- }), _descriptor57 = _applyDecoratedDescriptor(_class2.prototype, "initialLoad", [_dec58], {
1512
+ }), _descriptor58 = _applyDecoratedDescriptor(_class2.prototype, "initialLoad", [_dec59], {
1484
1513
  configurable: true,
1485
1514
  enumerable: true,
1486
1515
  writable: true,
@@ -1489,4 +1518,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/buildingBlocks/templating/BuildingBl
1489
1518
  _exports = TableBlock;
1490
1519
  return _exports;
1491
1520
  }, false);
1492
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzYWZlR2V0QXR0cmlidXRlIiwibm9kZSIsIm5hbWUiLCJnZXRBdHRyaWJ1dGUiLCJ1bmRlZmluZWQiLCJnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUiLCJlbmFibGVtZW50QXR0ciIsInJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMiLCJvYmoiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInBhcnNlQWN0aW9uRnJvbUVsZW1lbnQiLCJhY3Rpb25Ob2RlIiwiY29tbW9uUHJvcGVydGllcyIsImdldENvbW1vbkN1c3RvbUFjdGlvblByb3BlcnRpZXMiLCJsb2NhbE5hbWUiLCJ0ZXh0IiwicHJlc3MiLCJyZXF1aXJlc1NlbGVjdGlvbiIsImVuYWJsZUF1dG9TY3JvbGwiLCJuYXZpZ2F0ZVRvSW5zdGFuY2UiLCJkZWZhdWx0VmFsdWVzRnVuY3Rpb24iLCJhY3Rpb24iLCJyZXBsYWNlIiwiZW5hYmxlZCIsInZpc2libGUiLCJjb21tYW5kIiwiZW5hYmxlT25TZWxlY3QiLCJwbGFjZW1lbnQiLCJhbmNob3IiLCJfdHlwZSIsInNldEN1c3RvbUFjdGlvbkdyb3VwUHJvcGVydGllcyIsImFnZ3JlZ2F0aW9uT2JqZWN0IiwiaW5jbHVkZXMiLCJnZXRDb21tb25DdXN0b21BY3Rpb25zR3JvdXBQcm9wZXJ0aWVzIiwiZGVmYXVsdEFjdGlvbiIsInNldEN1c3RvbU1hc3NFZGl0UHJvcGVydGllcyIsImVsZW1lbnQiLCJjdXN0b21Db250ZW50IiwiY2hpbGRyZW4iLCJvdXRlckhUTUwiLCJ2aXNpYmxlRmllbGRzIiwic3BsaXQiLCJpZ25vcmVkRmllbGRzIiwib3BlcmF0aW9uR3JvdXBpbmdNb2RlIiwic2V0UXVpY2tWYXJpYW50U2VsZWN0aW9uIiwicXVpY2tWYXJpYW50U2VsZWN0aW9uIiwicGF0aHMiLCJzaG93Q291bnRzIiwiYWN0aW9uc0luTWVudSIsIkFycmF5IiwicHJvdG90eXBlIiwic2xpY2UiLCJhcHBseSIsIm1hcCIsInN1YkFjdGlvbiIsInNldEF0dHJpYnV0ZSIsImFjdGlvbnMiLCJnZXRDb21tb25DdXN0b21Db2x1bW5zUHJvcGVydGllcyIsImNoaWxkQ29sdW1uIiwid2lkdGgiLCJ3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlciIsImltcG9ydGFuY2UiLCJob3Jpem9udGFsQWxpZ24iLCJhdmFpbGFiaWxpdHkiLCJleHBvcnRTZXR0aW5ncyIsInBhcnNlRXhwb3J0U2V0dGluZ3MiLCJzZXRDdXN0b21Db2x1bW5Qcm9wZXJ0aWVzIiwiaGVhZGVyIiwidG9vbHRpcCIsInRlbXBsYXRlIiwiZ2V0Q29sdW1uVGVtcGxhdGUiLCJwcm9wZXJ0aWVzIiwicmVxdWlyZWQiLCJwYXJzZVNpbXBsZUFnZ3JlZ2F0aW9uIiwid3JhcCIsInR5cGUiLCJwcm9wZXJ0eSIsImFnZ3JlZ2F0aW9uIiwiZ2V0QWdncmVnYXRpb24iLCJpIiwibGVuZ3RoIiwiY2hpbGQiLCJpdGVtIiwibm9kZU5hbWUiLCJlbmRzV2l0aCIsImFnZ3JlZ2F0aW9uTmFtZSIsInJlc3VsdCIsImdldEF0dHJpYnV0ZU5hbWVzIiwidmFsdWUiLCJUYWJsZUJsb2NrIiwiX2RlYyIsImRlZmluZUJ1aWxkaW5nQmxvY2siLCJuYW1lc3BhY2UiLCJwdWJsaWNOYW1lc3BhY2UiLCJyZXR1cm5UeXBlcyIsIl9kZWMyIiwiYmxvY2tBdHRyaWJ1dGUiLCJ1bmRlcmx5aW5nVHlwZSIsImV4cGVjdGVkVHlwZXMiLCJleHBlY3RlZEFubm90YXRpb25zIiwiaXNQdWJsaWMiLCJfZGVjMyIsImJpbmRhYmxlIiwiX2RlYzQiLCJfZGVjNSIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiX2RlYzEwIiwiX2RlYzExIiwiX2RlYzEyIiwiX2RlYzEzIiwiX2RlYzE0IiwiX2RlYzE1IiwiYWxsb3dlZFZhbHVlcyIsIl9kZWMxNiIsIl9kZWMxNyIsIl9kZWMxOCIsIl9kZWMxOSIsIl9kZWMyMCIsIl9kZWMyMSIsImlzQXNzb2NpYXRpb24iLCJfZGVjMjIiLCJfZGVjMjMiLCJfZGVjMjQiLCJfZGVjMjUiLCJfZGVjMjYiLCJfZGVjMjciLCJfZGVjMjgiLCJfZGVjMjkiLCJfZGVjMzAiLCJfZGVjMzEiLCJfZGVjMzIiLCJfZGVjMzMiLCJfZGVjMzQiLCJfZGVjMzUiLCJfZGVjMzYiLCJfZGVjMzciLCJfZGVjMzgiLCJfZGVjMzkiLCJfZGVjNDAiLCJfZGVjNDEiLCJfZGVjNDIiLCJfZGVjNDMiLCJfZGVjNDQiLCJfZGVjNDUiLCJ2YWxpZGF0ZSIsImNyZWF0aW9uT3B0aW9uc0lucHV0IiwiRXJyb3IiLCJfZGVjNDYiLCJhbmFseXRpY2FsQ29uZmlndXJhdGlvbiIsImFnZ3JlZ2F0aW9uT25MZWFmTGV2ZWwiLCJfZGVjNDciLCJibG9ja0FnZ3JlZ2F0aW9uIiwiYWx0VHlwZXMiLCJoYXNWaXJ0dWFsTm9kZSIsIm11bHRpcGxlIiwicHJvY2Vzc0FnZ3JlZ2F0aW9ucyIsIl9kZWM0OCIsInNraXBLZXkiLCJfZGVjNDkiLCJpc0RlZmF1bHQiLCJfZGVjNTAiLCJfZGVjNTEiLCJibG9ja0V2ZW50IiwiX2RlYzUyIiwiX2RlYzUzIiwiX2RlYzU0IiwiX2RlYzU1IiwiX2RlYzU2IiwiX2RlYzU3IiwiX2RlYzU4IiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9UYWJsZUJsb2NrIiwiX0J1aWxkaW5nQmxvY2tUZW1wbGF0IiwicHJvcHMiLCJjb250cm9sQ29uZmlndXJhdGlvbiIsInRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsIl9kZXNjcmlwdG9yMTciLCJfZGVzY3JpcHRvcjE4IiwiX2Rlc2NyaXB0b3IxOSIsIl9kZXNjcmlwdG9yMjAiLCJfZGVzY3JpcHRvcjIxIiwiX2Rlc2NyaXB0b3IyMiIsIl9kZXNjcmlwdG9yMjMiLCJfZGVzY3JpcHRvcjI0IiwiX2Rlc2NyaXB0b3IyNSIsIl9kZXNjcmlwdG9yMjYiLCJfZGVzY3JpcHRvcjI3IiwiX2Rlc2NyaXB0b3IyOCIsIl9kZXNjcmlwdG9yMjkiLCJfZGVzY3JpcHRvcjMwIiwiX2Rlc2NyaXB0b3IzMSIsIl9kZXNjcmlwdG9yMzIiLCJfZGVzY3JpcHRvcjMzIiwiX2Rlc2NyaXB0b3IzNCIsIl9kZXNjcmlwdG9yMzUiLCJfZGVzY3JpcHRvcjM2IiwiX2Rlc2NyaXB0b3IzNyIsIl9kZXNjcmlwdG9yMzgiLCJfZGVzY3JpcHRvcjM5IiwiX2Rlc2NyaXB0b3I0MCIsIl9kZXNjcmlwdG9yNDEiLCJfZGVzY3JpcHRvcjQyIiwiX2Rlc2NyaXB0b3I0MyIsIl9kZXNjcmlwdG9yNDQiLCJfZGVzY3JpcHRvcjQ1IiwiX2Rlc2NyaXB0b3I0NiIsIl9kZXNjcmlwdG9yNDciLCJfZGVzY3JpcHRvcjQ4IiwiX2Rlc2NyaXB0b3I0OSIsIl9kZXNjcmlwdG9yNTAiLCJfZGVzY3JpcHRvcjUxIiwiX2Rlc2NyaXB0b3I1MiIsIl9kZXNjcmlwdG9yNTMiLCJfZGVzY3JpcHRvcjU0IiwiX2Rlc2NyaXB0b3I1NSIsIl9kZXNjcmlwdG9yNTYiLCJfZGVzY3JpcHRvcjU3IiwiY29udGV4dE9iamVjdFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJtZXRhUGF0aCIsImNvbnRleHRQYXRoIiwidGFibGVEZWZpbml0aW9uIiwiY3JlYXRlVGFibGVEZWZpbml0aW9uIiwidGFibGVEZWZpbml0aW9uQ29udGV4dCIsIk1hY3JvQVBJIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJjb252ZXJ0ZWRNZXRhZGF0YSIsImNvbnZlcnRlZFR5cGVzIiwibWV0YU1vZGVsIiwibW9kZWxzIiwiY29sbGVjdGlvbkVudGl0eSIsInJlc29sdmVQYXRoIiwiYW5ub3RhdGlvbiIsImNvbGxlY3Rpb24iLCJ0YXJnZXQiLCJhcHBDb21wb25lbnQiLCJzZXRVcElkIiwiY3JlYXRpb25Nb2RlIiwiY3JlYXRlIiwibW9kZSIsImNyZWF0ZUF0RW5kIiwiYXBwZW5kIiwicmVhZE9ubHkiLCJkaXNwbGF5TW9kZSIsImNvbnRyb2wiLCJUYWJsZUFQSSIsInVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5IiwidXNlQmFzaWNTZWFyY2giLCJmaWx0ZXJCYXIiLCJnZW5lcmF0ZSIsImNvbnRlbnRJZCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJnZXRWaXN1YWxpemF0aW9uUGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiTG9nIiwiZXJyb3IiLCJpc0Fubm90YXRpb25PZlRlcm0iLCJ0YXJnZXRPYmplY3QiLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwidmlzdWFsaXphdGlvbnMiLCJnZXRWaXN1YWxpemF0aW9uc0Zyb21Bbm5vdGF0aW9uIiwidGVybSIsImxpbmVJdGVtVml6IiwiZmluZCIsInZpeiIsInZpc3VhbGl6YXRpb24iLCJhbm5vdGF0aW9uUGF0aCIsIl9wcm90byIsImdldFRhYmxlU2V0dGluZ3MiLCJ0YWJsZVNldHRpbmdzIiwiYWRkU2V0dGluZyIsImVuYWJsZUV4cG9ydCIsInNlbGVjdGlvbkxpbWl0IiwiY29uZGVuc2VkVGFibGVMYXlvdXQiLCJleHBvcnRSZXF1ZXN0U2l6ZSIsImZyb3plbkNvbHVtbkNvdW50IiwiZGlzYWJsZUNvbHVtbkZyZWV6ZSIsInJvd0NvdW50TW9kZSIsInJvd0NvdW50IiwiZW5hYmxlRnVsbFNjcmVlbiIsImVuYWJsZVNlbGVjdEFsbCIsImVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllcyIsImVuYWJsZVBhc3RlIiwiZGlzYWJsZUNvcHlUb0NsaXBib2FyZCIsInNjcm9sbFRocmVzaG9sZCIsInRocmVzaG9sZCIsInNlbGVjdGlvbk1vZGUiLCJxdWlja0ZpbHRlcnMiLCJwYXRoIiwiY3JlYXRpb25GaWVsZHMiLCJpbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlIiwib3V0Ym91bmQiLCJlbnRyaWVzIiwibWFzc0VkaXQiLCJlbmFibGVNYXNzRWRpdCIsImNvbmZpZ3VyYXRpb24iLCJqb2luIiwidGFibGUiLCJpbml0aWFsQ29udmVydGVyQ29udGV4dCIsImdldENvbnZlcnRlckNvbnRleHQiLCJnZXRQYXRoIiwidmlzdWFsaXphdGlvblBhdGgiLCJleHRyYU1hbmlmZXN0U2V0dGluZ3MiLCJjcmVhdGVBY3Rpb25zRnJvbU1hbmlmZXN0IiwiY29sdW1ucyIsImNyZWF0ZUNvbHVtbnNGb3JNYW5pZmVzdCIsImV4dHJhUGFyYW1zIiwiYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQiLCJhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGgiLCJzdk9iamVjdFBhdGgiLCJ2aXN1YWxpemF0aW9uRGVmaW5pdGlvbiIsImdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbiIsImluTXVsdGlWaWV3IiwiZ2V0UmVsYXRpdmVBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImdldEVudGl0eVR5cGUiLCJpc0NvbmRlbnNlZFRhYmxlTGF5b3V0Q29tcGxpYW50IiwidXNlQ29uZGVuc2VkTGF5b3V0IiwiaXNNYWNyb09yTXVsdGlwbGVWaWV3IiwiVmlzdWFsaXphdGlvblR5cGUiLCJUYWJsZSIsImFjdGlvbnNTZXR0aW5ncyIsImFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdCIsInBvc2l0aW9uIiwiaXNBSU9wZXJhdGlvbiIsIl9fbm9XcmFwIiwiYWZ0ZXJFeGVjdXRpb24iLCJ2YWx1ZXMiLCJtZW51IiwiaXNCbG9ja0NvbHVtbiIsImJsb2NrIiwiY29sdW1uU2V0dGluZ3MiLCJjb2x1bW4iLCJjdXN0b21Db2x1bW5EZWZpbml0aW9uIiwiaWQiLCJfYXBpSWQiLCJnZXRDb250ZW50SWQiLCJhcGlJZCIsIl9nZXRFbnRpdHlUeXBlIiwiZW50aXR5VHlwZSIsInRhcmdldFR5cGUiLCJnZXRFbXB0eVJvd3NFbmFibGVkIiwiQ3JlYXRpb25Nb2RlIiwiSW5saW5lQ3JlYXRpb25Sb3dzIiwiYSIsIlN0YW5kYXJkQWN0aW9uS2V5cyIsIkNyZWF0ZSIsImdldFRlbXBsYXRlIiwidGFibGVQcm9wcyIsIm92ZXJyaWRlUm93UHJlc3MiLCJyb3dQcmVzcyIsImhhbmRsZXJQcm92aWRlciIsIlRhYmxlRXZlbnRIYW5kbGVyUHJvdmlkZXIiLCJnZXRNb2RlbCIsIl9qc3giLCJUYWJsZUNyZWF0aW9uT3B0aW9ucyIsImJpbmRpbmciLCJoZWFkZXJMZXZlbCIsImhlYWRlclN0eWxlIiwiaGVhZGVyVmlzaWJsZSIsInRhYlRpdGxlIiwiaXNTZWFyY2hhYmxlIiwiYnVzeSIsImluaXRpYWxMb2FkIiwiaXNBbHAiLCJmaWVsZE1vZGUiLCJwZXJzb25hbGl6YXRpb24iLCJ2YXJpYW50U2F2ZWQiLCJ2YXJpYW50U2VsZWN0ZWQiLCJzZWdtZW50ZWRCdXR0b25QcmVzcyIsInZhcmlhbnRNYW5hZ2VtZW50IiwiZW50aXR5VHlwZUZ1bGx5UXVhbGlmaWVkTmFtZSIsInNlbGVjdGlvbkNoYW5nZSIsImxpc3RCaW5kaW5nQ2hhbmdlIiwiZW1wdHlSb3dzRW5hYmxlZCIsImVuYWJsZUF1dG9Db2x1bW5XaWR0aCIsImJlZm9yZVJlYmluZFRhYmxlIiwibW9kZUZvck5vRGF0YU1lc3NhZ2UiLCJkaXNwbGF5U2VnbWVudGVkQnV0dG9uIiwiY3VzdG9tRGF0YSIsImNyZWF0ZUN1c3RvbURhdGEiLCJsYXlvdXREYXRhIiwiRmxleEl0ZW1EYXRhIiwibWF4V2lkdGgiLCJjb250ZW50IiwiZ2V0TURDVGFibGVUZW1wbGF0ZSIsIkJ1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZSIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVGFibGUuYmxvY2sudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29udmVydGVkTWV0YWRhdGEsIEVudGl0eVNldCwgRW50aXR5VHlwZSwgTmF2aWdhdGlvblByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdExpbmVJdGVtLFxuXHRQcmVzZW50YXRpb25WYXJpYW50LFxuXHRTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50LFxuXHRTZWxlY3Rpb25WYXJpYW50LFxuXHRTZWxlY3Rpb25WYXJpYW50VHlwZVxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UZXJtcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHsgdHlwZSBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHtcblx0YmxvY2tBZ2dyZWdhdGlvbixcblx0YmxvY2tBdHRyaWJ1dGUsXG5cdGJsb2NrRXZlbnQsXG5cdGRlZmluZUJ1aWxkaW5nQmxvY2tcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0ZVByb2Nlc3NvclwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2VcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUge1xuXHRBdmFpbGFiaWxpdHlUeXBlLFxuXHRDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4sXG5cdEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbkZvck92ZXJyaWRlLFxuXHRIb3Jpem9udGFsQWxpZ24sXG5cdEltcG9ydGFuY2UsXG5cdE1hbmlmZXN0QWN0aW9uLFxuXHRUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBDcmVhdGlvbk1vZGUsIFZpc3VhbGl6YXRpb25UeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IFBhZ2VDb250ZXh0UGF0aFRhcmdldCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IENoYXJ0VmlzdWFsaXphdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyBWaXN1YWxpemF0aW9uQW5kUGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHtcblx0Z2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uLFxuXHRnZXRWaXN1YWxpemF0aW9uc0Zyb21Bbm5vdGF0aW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBDcmVhdGVCZWhhdmlvciwgVGFibGVUeXBlLCBUYWJsZVZpc3VhbGl6YXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vVGFibGVcIjtcbmltcG9ydCB7IFN0YW5kYXJkQWN0aW9uS2V5cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi90YWJsZS9TdGFuZGFyZEFjdGlvbnNcIjtcbmltcG9ydCB7IHR5cGUgUGxhY2VtZW50IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGlzQW5ub3RhdGlvbk9mVGVybSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgTWFjcm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIEFjdGlvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9BY3Rpb25cIjtcbmltcG9ydCB0eXBlIEFjdGlvbkdyb3VwIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL0FjdGlvbkdyb3VwXCI7XG5pbXBvcnQgdHlwZSBDb2x1bW4gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvQ29sdW1uXCI7XG5pbXBvcnQgdHlwZSB7IFRhYmxlQmxvY2tQcm9wZXJ0aWVzIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvTWRjVGFibGVUZW1wbGF0ZVwiO1xuaW1wb3J0IHsgZ2V0TURDVGFibGVUZW1wbGF0ZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL01kY1RhYmxlVGVtcGxhdGVcIjtcbmltcG9ydCBUYWJsZUFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZUFQSVwiO1xuaW1wb3J0IFRhYmxlQ3JlYXRpb25PcHRpb25zIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlQ3JlYXRpb25PcHRpb25zXCI7XG5pbXBvcnQgRmxleEl0ZW1EYXRhIGZyb20gXCJzYXAvbS9GbGV4SXRlbURhdGFcIjtcbmltcG9ydCB7IHR5cGUgVGl0bGVMZXZlbCB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHsgY3JlYXRlQ3VzdG9tRGF0YSB9IGZyb20gXCIuLi9UU1hVdGlsc1wiO1xuaW1wb3J0IHR5cGUgQWN0aW9uR3JvdXBPdmVycmlkZSBmcm9tIFwiLi9BY3Rpb25Hcm91cE92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25PdmVycmlkZSBmcm9tIFwiLi9BY3Rpb25PdmVycmlkZVwiO1xuaW1wb3J0IHR5cGUgQW5hbHl0aWNhbENvbmZpZ3VyYXRpb24gZnJvbSBcIi4vQW5hbHl0aWNhbENvbmZpZ3VyYXRpb25cIjtcbmltcG9ydCB0eXBlIENvbHVtbk92ZXJyaWRlIGZyb20gXCIuL0NvbHVtbk92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBNYXNzRWRpdCBmcm9tIFwiLi9NYXNzRWRpdFwiO1xuaW1wb3J0IHR5cGUgUXVpY2tWYXJpYW50U2VsZWN0aW9uIGZyb20gXCIuL1F1aWNrVmFyaWFudFNlbGVjdGlvblwiO1xuaW1wb3J0IFRhYmxlRXZlbnRIYW5kbGVyUHJvdmlkZXIgZnJvbSBcIi4vVGFibGVFdmVudEhhbmRsZXJQcm92aWRlclwiO1xuXG50eXBlIEJsb2NrQ29sdW1uID0gUGFydGlhbDxPbWl0PENvbHVtbiwgXCJ0ZW1wbGF0ZVwiIHwgXCJleHBvcnRTZXR0aW5nc1wiPj4gJiB7XG5cdHRlbXBsYXRlPzogc3RyaW5nO1xuXHRleHBvcnRTZXR0aW5ncz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdIHwgYm9vbGVhbj47XG5cdF90eXBlOiBcIkNvbHVtblwiO1xufTtcblxudHlwZSBCbG9ja0NvbHVtbk92ZXJyaWRlID0gUGFydGlhbDxPbWl0PENvbHVtbk92ZXJyaWRlLCBcImV4cG9ydFNldHRpbmdzXCI+PiAmIHtcblx0ZXhwb3J0U2V0dGluZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IGJvb2xlYW4+O1xuXHRfdHlwZTogXCJDb2x1bW5PdmVycmlkZVwiO1xufTtcbnR5cGUgQmxvY2tNYXNzRWRpdCA9IFBhcnRpYWw8T21pdDxNYXNzRWRpdCwgXCJjdXN0b21Db250ZW50XCI+PiAmIHsgY3VzdG9tQ29udGVudD86IHN0cmluZzsga2V5OiBzdHJpbmcgfTtcbnR5cGUgQmxvY2tRdWlja1ZhcmlhbnRTZWxlY3Rpb24gPSBQcm9wZXJ0aWVzT2Y8UXVpY2tWYXJpYW50U2VsZWN0aW9uPiAmIHsga2V5OiBzdHJpbmcgfTtcbnR5cGUgQmxvY2tBY3Rpb24gPSBQcm9wZXJ0aWVzT2Y8T21pdDxBY3Rpb24sIFwicHJlc3NcIj4+ICYgeyBfdHlwZTogXCJBY3Rpb25cIjsgcHJlc3M6IHN0cmluZyB9O1xudHlwZSBCbG9ja0FjdGlvbkdyb3VwID0gUHJvcGVydGllc09mPE9taXQ8QWN0aW9uR3JvdXAsIFwiYWN0aW9uc1wiPj4gJiB7XG5cdF90eXBlOiBcIkFjdGlvbkdyb3VwXCI7XG5cdGFjdGlvbnM6IChCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUpW107XG59O1xudHlwZSBCbG9ja0FjdGlvbk92ZXJyaWRlID0gUHJvcGVydGllc09mPEFjdGlvbk92ZXJyaWRlPiAmIHsgX3R5cGU6IFwiQWN0aW9uT3ZlcnJpZGVcIiB9O1xudHlwZSBCbG9ja0FjdGlvbkdyb3VwT3ZlcnJpZGUgPSBQcm9wZXJ0aWVzT2Y8T21pdDxBY3Rpb25Hcm91cE92ZXJyaWRlLCBcImFjdGlvbnNcIj4+ICYge1xuXHRfdHlwZTogXCJBY3Rpb25Hcm91cE92ZXJyaWRlXCI7XG5cdGFjdGlvbnM6IChCbG9ja0FjdGlvbiB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUpW107XG59O1xudHlwZSBDb21tb25DdXN0b21BY3Rpb24gPSB7XG5cdGtleTogc3RyaW5nO1xuXHRlbmFibGVkOiBib29sZWFuO1xuXHR2aXNpYmxlOiBib29sZWFuO1xuXHRjb21tYW5kOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGVuYWJsZU9uU2VsZWN0OiBcInNpbmdsZVwiIHwgXCJtdWx0aVwiIHwgdW5kZWZpbmVkO1xuXHRwbGFjZW1lbnQ6IFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQ7XG5cdGFuY2hvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRpc0FJT3BlcmF0aW9uPzogYm9vbGVhbjtcblx0X3R5cGU6IFwiQWN0aW9uXCIgfCBcIkFjdGlvbk92ZXJyaWRlXCI7XG59O1xuZnVuY3Rpb24gc2FmZUdldEF0dHJpYnV0ZShub2RlOiBFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gbm9kZS5nZXRBdHRyaWJ1dGUobmFtZSkgPz8gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGR5bmFtaWMgQm9vbGVhbiB2YWx1ZSBvZiBhbiBhdHRyaWJ1dGUuXG4gKiBAcGFyYW0gbm9kZSBUaGUgbm9kZSB0byBnZXQgdGhlIGF0dHJpYnV0ZSBmcm9tXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlXG4gKiBAcmV0dXJucyBUaGUgQm9vbGVhbiB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlXG4gKi9cbmZ1bmN0aW9uIGdldER5bmFtaWNCb29sZWFuVmFsdWVPZkF0dHJpYnV0ZShub2RlOiBFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcblx0Y29uc3QgZW5hYmxlbWVudEF0dHIgPSBub2RlLmdldEF0dHJpYnV0ZShuYW1lKTtcblx0c3dpdGNoIChlbmFibGVtZW50QXR0cikge1xuXHRcdGNhc2UgbnVsbDpcblx0XHRjYXNlIFwidHJ1ZVwiOlxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0Y2FzZSBcImZhbHNlXCI6XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiBlbmFibGVtZW50QXR0ciBhcyB1bmtub3duIGFzIGJvb2xlYW47IC8vIFRvIG1hbmFnZSBiaW5kaW5nIGV4cHJlc3Npb25zXG5cdH1cbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBwcm9wZXJ0aWVzIHdpdGggdGhlIHZhbHVlIG9mIHVuZGVmaW5lZCBmcm9tIHRoZSBvYmplY3QuXG4gKiBAcGFyYW0gb2JqIFRoZSBvYmplY3QgdG8gcmVtb3ZlIHRoZSB1bmRlZmluZWQgcHJvcGVydGllcyBmcm9tXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQge1xuXHRPYmplY3Qua2V5cyhvYmopLmZvckVhY2goKGtleSkgPT4ge1xuXHRcdGlmIChvYmpba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRkZWxldGUgb2JqW2tleV07XG5cdFx0fVxuXHR9KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBhY3Rpb24gcHJvcGVydGllcyBmcm9tIGFuIFhNTCBub2RlLlxuICogQHBhcmFtIGFjdGlvbk5vZGUgVGhlIGFjdGlvbiBub2RlXG4gKiBAcmV0dXJucyBUaGUgYWN0aW9uIHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gcGFyc2VBY3Rpb25Gcm9tRWxlbWVudChhY3Rpb25Ob2RlOiBFbGVtZW50KTogQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbk92ZXJyaWRlIHtcblx0Y29uc3QgY29tbW9uUHJvcGVydGllcyA9IGdldENvbW1vbkN1c3RvbUFjdGlvblByb3BlcnRpZXMoYWN0aW9uTm9kZSk7XG5cdGlmIChhY3Rpb25Ob2RlLmxvY2FsTmFtZSA9PT0gXCJBY3Rpb25cIikge1xuXHRcdHJldHVybiB7XG5cdFx0XHR0ZXh0OiBhY3Rpb25Ob2RlLmdldEF0dHJpYnV0ZShcInRleHRcIikgPz8gY29tbW9uUHJvcGVydGllcy5rZXksXG5cdFx0XHRwcmVzczogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcInByZXNzXCIpLFxuXHRcdFx0cmVxdWlyZXNTZWxlY3Rpb246IGFjdGlvbk5vZGUuZ2V0QXR0cmlidXRlKFwicmVxdWlyZXNTZWxlY3Rpb25cIikgPT09IFwidHJ1ZVwiLFxuXHRcdFx0Li4uY29tbW9uUHJvcGVydGllc1xuXHRcdH0gYXMgQmxvY2tBY3Rpb247XG5cdH1cblx0cmV0dXJuIHtcblx0XHRlbmFibGVBdXRvU2Nyb2xsOiBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJlbmFibGVBdXRvU2Nyb2xsXCIpLFxuXHRcdG5hdmlnYXRlVG9JbnN0YW5jZTogZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKGFjdGlvbk5vZGUsIFwibmF2aWdhdGVUb0luc3RhbmNlXCIpLFxuXHRcdGRlZmF1bHRWYWx1ZXNGdW5jdGlvbjogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImRlZmF1bHRWYWx1ZXNGdW5jdGlvblwiKSxcblx0XHQuLi5jb21tb25Qcm9wZXJ0aWVzXG5cdH0gYXMgQmxvY2tBY3Rpb25PdmVycmlkZTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIGNvbW1vbiBjdXN0b20gcHJvcGVydGllcyBvZiB0aGUgYWN0aW9uIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIGFjdGlvbk5vZGUgVGhlIGFjdGlvbiBncm91cCBub2RlXG4gKiBAcmV0dXJucyBUaGUgY29sdW1uIHByb3BlcnRpZXMgZm9yIHRoZSBnaXZlbiBub2RlXG4gKi9cbmZ1bmN0aW9uIGdldENvbW1vbkN1c3RvbUFjdGlvblByb3BlcnRpZXMoYWN0aW9uTm9kZTogRWxlbWVudCk6IENvbW1vbkN1c3RvbUFjdGlvbiB7XG5cdGNvbnN0IGFjdGlvbjogQ29tbW9uQ3VzdG9tQWN0aW9uID0ge1xuXHRcdGtleTogYWN0aW9uTm9kZS5nZXRBdHRyaWJ1dGUoXCJrZXlcIikhLnJlcGxhY2UoXCJJbmxpbmVYTUxfXCIsIFwiXCIpLFxuXHRcdGVuYWJsZWQ6IGdldER5bmFtaWNCb29sZWFuVmFsdWVPZkF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImVuYWJsZWRcIiksXG5cdFx0dmlzaWJsZTogZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKGFjdGlvbk5vZGUsIFwidmlzaWJsZVwiKSxcblx0XHRjb21tYW5kOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiY29tbWFuZFwiKSxcblx0XHRlbmFibGVPblNlbGVjdDogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImVuYWJsZU9uU2VsZWN0XCIpIGFzIFwic2luZ2xlXCIgfCBcIm11bHRpXCIgfCB1bmRlZmluZWQsXG5cdFx0cGxhY2VtZW50OiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwicGxhY2VtZW50XCIpIGFzIFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQsXG5cdFx0YW5jaG9yOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiYW5jaG9yXCIpLFxuXHRcdF90eXBlOiBhY3Rpb25Ob2RlLmxvY2FsTmFtZSA9PT0gXCJBY3Rpb25cIiA/IFwiQWN0aW9uXCIgOiBcIkFjdGlvbk92ZXJyaWRlXCJcblx0fTtcblx0aWYgKGFjdGlvbk5vZGU/LmdldEF0dHJpYnV0ZShcImlzQUlPcGVyYXRpb25cIikpIHtcblx0XHRhY3Rpb25bXCJpc0FJT3BlcmF0aW9uXCJdID0gZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiaXNBSU9wZXJhdGlvblwiKTtcblx0fVxuXG5cdHJldHVybiBhY3Rpb247XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBhY3Rpb25zIGFuZCBhY3Rpb24gZ3JvdXBzIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIGFjdGlvbk5vZGVcbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbk9iamVjdFxuICogQHJldHVybnMgVGhlIGFjdGlvbiBvciBhY3Rpb24gZ3JvdXAgcHJvcGVydGllcyBmb3IgdGhlIGdpdmVuIG5vZGVcbiAqL1xuZnVuY3Rpb24gc2V0Q3VzdG9tQWN0aW9uR3JvdXBQcm9wZXJ0aWVzKFxuXHRhY3Rpb25Ob2RlOiBFbGVtZW50LFxuXHRhZ2dyZWdhdGlvbk9iamVjdDogQWN0aW9uIHwgQWN0aW9uT3ZlcnJpZGUgfCBBY3Rpb25Hcm91cCB8IEFjdGlvbkdyb3VwT3ZlcnJpZGVcbik6IEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25Hcm91cCB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUgfCBCbG9ja0FjdGlvbkdyb3VwT3ZlcnJpZGUge1xuXHRpZiAoW1wiQWN0aW9uR3JvdXBcIiwgXCJBY3Rpb25Hcm91cE92ZXJyaWRlXCJdLmluY2x1ZGVzKGFjdGlvbk5vZGUubG9jYWxOYW1lKSkge1xuXHRcdGNvbnN0IGNvbW1vblByb3BlcnRpZXMgPSBnZXRDb21tb25DdXN0b21BY3Rpb25zR3JvdXBQcm9wZXJ0aWVzKGFjdGlvbk5vZGUsIGFnZ3JlZ2F0aW9uT2JqZWN0IGFzIEFjdGlvbkdyb3VwIHwgQWN0aW9uR3JvdXBPdmVycmlkZSk7XG5cdFx0aWYgKGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvbkdyb3VwXCIpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHRleHQ6IGFjdGlvbk5vZGUuZ2V0QXR0cmlidXRlKFwidGV4dFwiKSA/PyBjb21tb25Qcm9wZXJ0aWVzLmtleSxcblx0XHRcdFx0ZGVmYXVsdEFjdGlvbjogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImRlZmF1bHRBY3Rpb25cIiksXG5cdFx0XHRcdC4uLmNvbW1vblByb3BlcnRpZXNcblx0XHRcdH0gYXMgQmxvY2tBY3Rpb25Hcm91cDtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbW1vblByb3BlcnRpZXMgYXMgQmxvY2tBY3Rpb25Hcm91cE92ZXJyaWRlO1xuXHR9XG5cblx0Ly9BY3Rpb24gb3IgQWN0aW9uT3ZlcnJpZGVcblx0cmV0dXJuIHBhcnNlQWN0aW9uRnJvbUVsZW1lbnQoYWN0aW9uTm9kZSk7XG59XG5cbmNvbnN0IHNldEN1c3RvbU1hc3NFZGl0UHJvcGVydGllcyA9IGZ1bmN0aW9uIChlbGVtZW50OiBFbGVtZW50KTogQmxvY2tNYXNzRWRpdCB7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBcImNvbmZpZ3VyYXRpb25cIixcblx0XHRjdXN0b21Db250ZW50OiBlbGVtZW50LmNoaWxkcmVuWzBdPy5vdXRlckhUTUwsXG5cdFx0dmlzaWJsZUZpZWxkczogZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJ2aXNpYmxlRmllbGRzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0aWdub3JlZEZpZWxkczogZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJpZ25vcmVkRmllbGRzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0b3BlcmF0aW9uR3JvdXBpbmdNb2RlOiAoZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJvcGVyYXRpb25Hcm91cGluZ01vZGVcIikgPz8gdW5kZWZpbmVkKSBhcyBcIkNoYW5nZVNldFwiIHwgXCJJc29sYXRlZFwiIHwgdW5kZWZpbmVkXG5cdH07XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgcXVpY2tWYXJpYW50U2VsZWN0aW9uIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIHF1aWNrVmFyaWFudFNlbGVjdGlvbiBUaGUgWE1MIG5vZGUgY29udGFpbmluZyB0aGUgcXVpY2tWYXJpYW50U2VsZWN0aW9uXG4gKiBAcmV0dXJucyBUaGUgUXVpY2tWYXJpYW50U2VsZWN0aW9uIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5jb25zdCBzZXRRdWlja1ZhcmlhbnRTZWxlY3Rpb24gPSBmdW5jdGlvbiAocXVpY2tWYXJpYW50U2VsZWN0aW9uOiBFbGVtZW50KTogQmxvY2tRdWlja1ZhcmlhbnRTZWxlY3Rpb24ge1xuXHRyZXR1cm4ge1xuXHRcdGtleTogXCJxdWlja0ZpbHRlcnNcIixcblx0XHRwYXRoczogcXVpY2tWYXJpYW50U2VsZWN0aW9uLmdldEF0dHJpYnV0ZShcInBhdGhzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0c2hvd0NvdW50czogcXVpY2tWYXJpYW50U2VsZWN0aW9uLmdldEF0dHJpYnV0ZShcInNob3dDb3VudHNcIikgPT09IFwidHJ1ZVwiXG5cdH07XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgY29tbW9uIGN1c3RvbSBwcm9wZXJ0aWVzIG9mIHRoZSBhY3Rpb24gZ3JvdXBzIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIGFjdGlvbk5vZGUgVGhlIGFjdGlvbiBncm91cCBub2RlXG4gKiBAcGFyYW0gYWdncmVnYXRpb25PYmplY3QgVGhlIGFnZ3JlZ2F0aW9uIG9iamVjdFxuICogQHJldHVybnMgVGhlIGNvbHVtbiBwcm9wZXJ0aWVzIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5mdW5jdGlvbiBnZXRDb21tb25DdXN0b21BY3Rpb25zR3JvdXBQcm9wZXJ0aWVzKFxuXHRhY3Rpb25Ob2RlOiBFbGVtZW50LFxuXHRhZ2dyZWdhdGlvbk9iamVjdDogQWN0aW9uR3JvdXAgfCBBY3Rpb25Hcm91cE92ZXJyaWRlXG4pOiB7XG5cdGtleTogc3RyaW5nO1xuXHRhY3Rpb25zOiAoQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbk92ZXJyaWRlKVtdO1xuXHRhbmNob3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0cGxhY2VtZW50OiBcIkJlZm9yZVwiIHwgXCJBZnRlclwiIHwgdW5kZWZpbmVkO1xuXHRfdHlwZTogXCJBY3Rpb25Hcm91cFwiIHwgXCJBY3Rpb25Hcm91cE92ZXJyaWRlXCI7XG59IHtcblx0Y29uc3QgYWN0aW9uc0luTWVudSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShhY3Rpb25Ob2RlLmNoaWxkcmVuKS5tYXAoKHN1YkFjdGlvbjogRWxlbWVudCkgPT4ge1xuXHRcdHJldHVybiBwYXJzZUFjdGlvbkZyb21FbGVtZW50KHN1YkFjdGlvbik7XG5cdH0pO1xuXHRhZ2dyZWdhdGlvbk9iamVjdC5rZXkgPSBhZ2dyZWdhdGlvbk9iamVjdC5rZXkucmVwbGFjZShcIklubGluZVhNTF9cIiwgXCJcIik7XG5cdGFjdGlvbk5vZGUuc2V0QXR0cmlidXRlKFwia2V5XCIsIGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSk7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBhZ2dyZWdhdGlvbk9iamVjdC5rZXksXG5cdFx0YWN0aW9uczogYWN0aW9uc0luTWVudSxcblx0XHRhbmNob3I6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJhbmNob3JcIiksXG5cdFx0cGxhY2VtZW50OiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwicGxhY2VtZW50XCIpIGFzIFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQsXG5cdFx0X3R5cGU6IGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvbkdyb3VwXCIgPyBcIkFjdGlvbkdyb3VwXCIgOiBcIkFjdGlvbkdyb3VwT3ZlcnJpZGVcIlxuXHR9O1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgY29tbW9uIGN1c3RvbSBwcm9wZXJ0aWVzIG9mIHRoZSBjb2x1bW5zIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIGNoaWxkQ29sdW1uIFRoZSBjb2x1bW4gbm9kZVxuICogQHBhcmFtIGFnZ3JlZ2F0aW9uT2JqZWN0IFRoZSBhZ2dyZWdhdGlvbiBvYmplY3RcbiAqIEByZXR1cm5zIFRoZSBjb2x1bW4gcHJvcGVydGllcyBmb3IgdGhlIGdpdmVuIG5vZGVcbiAqL1xuZnVuY3Rpb24gZ2V0Q29tbW9uQ3VzdG9tQ29sdW1uc1Byb3BlcnRpZXMoXG5cdGNoaWxkQ29sdW1uOiBFbGVtZW50LFxuXHRhZ2dyZWdhdGlvbk9iamVjdDogQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlXG4pOiB7XG5cdGtleTogc3RyaW5nO1xuXHR3aWR0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHR3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblx0aW1wb3J0YW5jZTogSW1wb3J0YW5jZSB8IHVuZGVmaW5lZDtcblx0aG9yaXpvbnRhbEFsaWduOiBIb3Jpem9udGFsQWxpZ24gfCB1bmRlZmluZWQ7XG5cdGF2YWlsYWJpbGl0eTogQXZhaWxhYmlsaXR5VHlwZSB8IHVuZGVmaW5lZDtcblx0cGxhY2VtZW50OiBcIkJlZm9yZVwiIHwgXCJBZnRlclwiIHwgdW5kZWZpbmVkO1xuXHRhbmNob3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0ZXhwb3J0U2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdIHwgYm9vbGVhbj4gfCB1bmRlZmluZWQ7XG59IHtcblx0YWdncmVnYXRpb25PYmplY3Qua2V5ID0gYWdncmVnYXRpb25PYmplY3Qua2V5IS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0Y2hpbGRDb2x1bW4uc2V0QXR0cmlidXRlKFwia2V5XCIsIGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSk7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBhZ2dyZWdhdGlvbk9iamVjdC5rZXksXG5cdFx0d2lkdGg6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwid2lkdGhcIiksXG5cdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXCIpXG5cdFx0XHQ/IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXCIpID09PSBcInRydWVcIlxuXHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0aW1wb3J0YW5jZTogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJpbXBvcnRhbmNlXCIpIGFzIEltcG9ydGFuY2UgfCB1bmRlZmluZWQsXG5cdFx0aG9yaXpvbnRhbEFsaWduOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImhvcml6b250YWxBbGlnblwiKSBhcyBIb3Jpem9udGFsQWxpZ24gfCB1bmRlZmluZWQsXG5cdFx0YXZhaWxhYmlsaXR5OiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImF2YWlsYWJpbGl0eVwiKSBhcyBBdmFpbGFiaWxpdHlUeXBlIHwgdW5kZWZpbmVkLFxuXHRcdHBsYWNlbWVudDogKHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicGxhY2VtZW50XCIpIHx8IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicG9zaXRpb25QbGFjZW1lbnRcIikpIGFzXG5cdFx0XHR8IFwiQmVmb3JlXCJcblx0XHRcdHwgXCJBZnRlclwiXG5cdFx0XHR8IHVuZGVmaW5lZCwgLy8gcG9zaXRpb25QbGFjZW1lbnQgaXMga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblx0XHRhbmNob3I6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwiYW5jaG9yXCIpIHx8IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicG9zaXRpb25BbmNob3JcIiksIC8vIHBvc2l0aW9uQW5jaG9yIGlzIGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5cdFx0ZXhwb3J0U2V0dGluZ3M6IHBhcnNlRXhwb3J0U2V0dGluZ3MoY2hpbGRDb2x1bW4pXG5cdH07XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBjdXN0b20gY29sdW1ucyBmcm9tIHRoZSBYTUwgbm9kZS5cbiAqIEBwYXJhbSBjaGlsZENvbHVtblxuICogQHBhcmFtIGFnZ3JlZ2F0aW9uT2JqZWN0XG4gKiBAcmV0dXJucyBUSGUgY29sdW1uIHByb3BlcnRpZXMgZm9yIHRoZSBnaXZlbiBub2RlXG4gKi9cbmZ1bmN0aW9uIHNldEN1c3RvbUNvbHVtblByb3BlcnRpZXMoXG5cdGNoaWxkQ29sdW1uOiBFbGVtZW50LFxuXHRhZ2dyZWdhdGlvbk9iamVjdDogQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlXG4pOiBCbG9ja0NvbHVtbiB8IEJsb2NrQ29sdW1uT3ZlcnJpZGUge1xuXHRhZ2dyZWdhdGlvbk9iamVjdC5rZXkgPSBhZ2dyZWdhdGlvbk9iamVjdC5rZXkhLnJlcGxhY2UoXCJJbmxpbmVYTUxfXCIsIFwiXCIpO1xuXHRjaGlsZENvbHVtbi5zZXRBdHRyaWJ1dGUoXCJrZXlcIiwgYWdncmVnYXRpb25PYmplY3Qua2V5KTtcblx0aWYgKGNoaWxkQ29sdW1uLmxvY2FsTmFtZSA9PT0gXCJDb2x1bW5cIikge1xuXHRcdHJldHVybiB7XG5cdFx0XHQuLi5nZXRDb21tb25DdXN0b21Db2x1bW5zUHJvcGVydGllcyhjaGlsZENvbHVtbiwgYWdncmVnYXRpb25PYmplY3QpLFxuXHRcdFx0aGVhZGVyOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImhlYWRlclwiKSxcblx0XHRcdHRvb2x0aXA6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwidG9vbHRpcFwiKSxcblx0XHRcdHRlbXBsYXRlOiBnZXRDb2x1bW5UZW1wbGF0ZShjaGlsZENvbHVtbiksXG5cdFx0XHRwcm9wZXJ0aWVzOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcInByb3BlcnRpZXNcIik/LnNwbGl0KFwiLFwiKSxcblx0XHRcdHJlcXVpcmVkOiBjaGlsZENvbHVtbi5nZXRBdHRyaWJ1dGUoXCJyZXF1aXJlZFwiKSA/IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcInJlcXVpcmVkXCIpID09PSBcInRydWVcIiA6IHVuZGVmaW5lZCxcblx0XHRcdF90eXBlOiBjaGlsZENvbHVtbi5sb2NhbE5hbWVcblx0XHR9O1xuXHR9XG5cdHJldHVybiB7XG5cdFx0Li4uZ2V0Q29tbW9uQ3VzdG9tQ29sdW1uc1Byb3BlcnRpZXMoY2hpbGRDb2x1bW4sIGFnZ3JlZ2F0aW9uT2JqZWN0KSxcblx0XHRfdHlwZTogXCJDb2x1bW5PdmVycmlkZVwiXG5cdH07XG59XG5cbmNvbnN0IHBhcnNlRXhwb3J0U2V0dGluZ3MgPSAoZWxlbWVudDogRWxlbWVudCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdIHwgYm9vbGVhbj4gfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBleHBvcnRTZXR0aW5ncyA9IHBhcnNlU2ltcGxlQWdncmVnYXRpb24oZWxlbWVudCwgXCJleHBvcnRTZXR0aW5nc1wiKTtcblx0aWYgKCFleHBvcnRTZXR0aW5ncykge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0cmV0dXJuIHtcblx0XHR0ZW1wbGF0ZTogZXhwb3J0U2V0dGluZ3MudGVtcGxhdGUsXG5cdFx0d3JhcDogZXhwb3J0U2V0dGluZ3Mud3JhcCA9PT0gXCJ0cnVlXCIsXG5cdFx0dHlwZTogZXhwb3J0U2V0dGluZ3MudHlwZSxcblx0XHRwcm9wZXJ0eTogZXhwb3J0U2V0dGluZ3MucHJvcGVydHk/LnNwbGl0KFwiLFwiKSxcblx0XHR3aWR0aDogZXhwb3J0U2V0dGluZ3Mud2lkdGhcblx0fTtcbn07XG5cbmNvbnN0IGdldENvbHVtblRlbXBsYXRlID0gKGVsZW1lbnQ6IEVsZW1lbnQpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRsZXQgYWdncmVnYXRpb24gPSBnZXRBZ2dyZWdhdGlvbihlbGVtZW50LCBcInRlbXBsYXRlXCIpO1xuXHRpZiAoIWFnZ3JlZ2F0aW9uKSB7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBjaGlsZCA9IGVsZW1lbnQuY2hpbGRyZW4uaXRlbShpKTtcblx0XHRcdGlmIChjaGlsZCAmJiAhY2hpbGQubm9kZU5hbWUuZW5kc1dpdGgoXCJleHBvcnRTZXR0aW5nc1wiKSkge1xuXHRcdFx0XHRhZ2dyZWdhdGlvbiA9IGNoaWxkO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIGFnZ3JlZ2F0aW9uPy5vdXRlckhUTUw7XG59O1xuXG5jb25zdCBwYXJzZVNpbXBsZUFnZ3JlZ2F0aW9uID0gKGVsZW1lbnQ6IEVsZW1lbnQsIGFnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZCA9PiB7XG5cdGNvbnN0IGFnZ3JlZ2F0aW9uID0gZ2V0QWdncmVnYXRpb24oZWxlbWVudCwgYWdncmVnYXRpb25OYW1lKTtcblx0Y29uc3QgY2hpbGQgPSBhZ2dyZWdhdGlvbj8uY2hpbGRyZW5bMF07XG5cdGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXHRpZiAoIWNoaWxkKSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXHRmb3IgKGNvbnN0IG5hbWUgb2YgY2hpbGQuZ2V0QXR0cmlidXRlTmFtZXMoKSkge1xuXHRcdGNvbnN0IHZhbHVlID0gY2hpbGQuZ2V0QXR0cmlidXRlKG5hbWUpO1xuXHRcdGlmICh2YWx1ZSkge1xuXHRcdFx0cmVzdWx0W25hbWVdID0gdmFsdWU7XG5cdFx0fVxuXHR9XG5cdHJldHVybiByZXN1bHQ7XG59O1xuXG5jb25zdCBnZXRBZ2dyZWdhdGlvbiA9IChlbGVtZW50OiBFbGVtZW50LCBhZ2dyZWdhdGlvbk5hbWU6IHN0cmluZyk6IEVsZW1lbnQgfCB1bmRlZmluZWQgPT4ge1xuXHRsZXQgYWdncmVnYXRpb246IEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuXHRcdGNvbnN0IGNoaWxkID0gZWxlbWVudC5jaGlsZHJlbi5pdGVtKGkpO1xuXHRcdGlmIChjaGlsZD8ubm9kZU5hbWUuZW5kc1dpdGgoYWdncmVnYXRpb25OYW1lKSA9PT0gdHJ1ZSkge1xuXHRcdFx0YWdncmVnYXRpb24gPSBjaGlsZDtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gYWdncmVnYXRpb247XG59O1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIHVzZWQgdG8gY3JlYXRlIGEgdGFibGUgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICogPGJyPlxuICogVXN1YWxseSwgYSBMaW5lSXRlbSwgUHJlc2VudGF0aW9uVmFyaWFudCwgb3IgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCBhbm5vdGF0aW9uIGlzIGV4cGVjdGVkLCBidXQgdGhlIFRhYmxlIGJ1aWxkaW5nIGJsb2NrIGNhbiBhbHNvIGJlIHVzZWQgdG8gZGlzcGxheSBhbiBFbnRpdHlTZXQuXG4gKiA8YnI+XG4gKiBJZiBhIFByZXNlbnRhdGlvblZhcmlhbnQgaXMgc3BlY2lmaWVkLCB0aGVuIGl0IG11c3QgaGF2ZSBVSS5MaW5lSXRlbSBhcyB0aGUgZmlyc3QgcHJvcGVydHkgb2YgdGhlIFZpc3VhbGl6YXRpb25zLlxuICogPGJyPlxuICogSWYgYSBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50IGlzIHNwZWNpZmllZCwgdGhlbiBpdCBtdXN0IGNvbnRhaW4gYSB2YWxpZCBQcmVzZW50YXRpb25WYXJpYW50IHRoYXQgYWxzbyBoYXMgYSBVSS5MaW5lSXRlbSBhcyB0aGUgZmlyc3QgcHJvcGVydHkgb2YgdGhlIFZpc3VhbGl6YXRpb25zLlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpUYWJsZSBpZD1cIk15VGFibGVcIiBtZXRhUGF0aD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqIHtAbGluayBkZW1vOnNhcC9mZS9jb3JlL2ZwbUV4cGxvcmVyL2luZGV4Lmh0bWwjL2J1aWxkaW5nQmxvY2tzL3RhYmxlL3RhYmxlRGVmYXVsdCBPdmVydmlldyBvZiBUYWJsZSBCdWlsZGluZyBCbG9ja3N9XG4gKiBAbWl4ZXMgc2FwLmZlLm1hY3Jvcy50YWJsZS5UYWJsZUFQSVxuICogQGF1Z21lbnRzIHNhcC5mZS5tYWNyb3MuTWFjcm9BUElcbiAqIEBwdWJsaWNcbiAqL1xuQGRlZmluZUJ1aWxkaW5nQmxvY2soe1xuXHRuYW1lOiBcIlRhYmxlXCIsXG5cdG5hbWVzcGFjZTogXCJzYXAuZmUubWFjcm9zLmludGVybmFsXCIsXG5cdHB1YmxpY05hbWVzcGFjZTogXCJzYXAuZmUubWFjcm9zXCIsXG5cdHJldHVyblR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLnRhYmxlLlRhYmxlQVBJXCJdXG59KVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGFibGVCbG9jayBleHRlbmRzIEJ1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZSB7XG5cdC8vICAqKioqKioqKioqKioqKiogUHVibGljICYgUmVxdWlyZWQgQXR0cmlidXRlcyAqKioqKioqKioqKioqKioqKioqKlxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcmVsYXRpdmUgcGF0aCB0byBhIExpbmVJdGVtLCBQcmVzZW50YXRpb25WYXJpYW50IG9yIFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQgaW4gdGhlIG1ldGFtb2RlbCwgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29udGV4dFBhdGguXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdHVuZGVybHlpbmdUeXBlOiBcInN0cmluZ1wiLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0ZXhwZWN0ZWRBbm5vdGF0aW9uczogW1xuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiLFxuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5QcmVzZW50YXRpb25WYXJpYW50XCIsXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRcIlxuXHRcdF0sXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSlcblx0bWV0YVBhdGghOiBDb250ZXh0O1xuXG5cdC8vICAqKioqKioqKioqKioqKiogUHVibGljIEF0dHJpYnV0ZXMgKioqKioqKioqKioqKioqKioqKipcblx0LyoqXG5cdCAqIEFuIGV4cHJlc3Npb24gdGhhdCBhbGxvd3MgeW91IHRvIGNvbnRyb2wgdGhlICdidXN5JyBzdGF0ZSBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSwgYmluZGFibGU6IHRydWUgfSlcblx0YnVzeT86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHBhdGggb2YgdGhlIGNvbnRleHQgdXNlZCBpbiB0aGUgY3VycmVudCBwYWdlIG9yIGJsb2NrLlxuXHQgKiBUaGlzIHNldHRpbmcgaXMgZGVmaW5lZCBieSB0aGUgZnJhbWV3b3JrLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzdHJpbmdcIixcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCJdLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGNvbnRleHRQYXRoPzogQ29udGV4dDtcblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0YWJsZSBhZGFwdHMgdG8gdGhlIGNvbmRlbnNlZCBsYXlvdXQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwdWJsaWMgcmVhZG9ubHkgY29uZGVuc2VkVGFibGVMYXlvdXQ/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB3aGV0aGVyIHRoZSB0YWJsZSBjYW4gYmUgb3BlbmVkIGluIGZ1bGxzY3JlZW4gbW9kZSBvciBub3QuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwdWJsaWMgcmVhZG9ubHkgZW5hYmxlRnVsbFNjcmVlbj86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERldGVybWluZSB3aGV0aGVyIHRoZSBkYXRhIGNvcGllZCB0byB0aGUgY29tcHV0ZWQgY29sdW1ucyBpcyBzZW50IHRvIHRoZSBiYWNrIGVuZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBDbGVhciBBbGwgYnV0dG9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC5cblx0ICogVG8gZW5hYmxlIHRoZSBDbGVhciBBbGwgYnV0dG9uIGJ5IGRlZmF1bHQsIHlvdSBtdXN0IHNldCB0aGlzIHByb3BlcnR5IHRvIGZhbHNlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSBlbmFibGVTZWxlY3RBbGw/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyBpZiB0aGUgZXhwb3J0IGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRhYmxlIGlzIGVuYWJsZWQgb3Igbm90LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHVibGljIHJlYWRvbmx5IGVuYWJsZUV4cG9ydD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIE1heGltdW0gYWxsb3dlZCBudW1iZXIgb2YgcmVjb3JkcyB0byBiZSBleHBvcnRlZCBpbiBvbmUgcmVxdWVzdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJpbnRcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSBleHBvcnRSZXF1ZXN0U2l6ZT86IG51bWJlcjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygcm93cyB0aGF0IGNhbiBiZSBzZWxlY3RlZCBhdCBvbmNlIGluIHRoZSB0YWJsZS5cblx0ICogVGhpcyBwcm9wZXJ0eSBkb2VzIG5vdCBhcHBseSB0byByZXNwb25zaXZlIHRhYmxlcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJpbnRcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25MaW1pdD86IG51bWJlcjtcblxuXHQvKipcblx0ICogTnVtYmVyIG9mIGNvbHVtbnMgdGhhdCBhcmUgZml4ZWQgb24gdGhlIGxlZnQuIE9ubHkgY29sdW1ucyB3aGljaCBhcmUgbm90IGZpeGVkIGNhbiBiZSBzY3JvbGxlZCBob3Jpem9udGFsbHkuXG5cdCAqXG5cdCAqIFRoaXMgcHJvcGVydHkgaXMgbm90IHJlbGV2YW50IGZvciByZXNwb25zaXZlIHRhYmxlc1xuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGZyb3plbkNvbHVtbkNvdW50PzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIG51bWJlciBvZiBmaXhlZCBjb2x1bW5zIGNhbiBiZSBjb25maWd1cmVkIGluIHRoZSBDb2x1bW4gU2V0dGluZ3MgZGlhbG9nLlxuXHQgKlxuXHQgKiBUaGlzIHByb3BlcnR5IGRvZXNuJ3QgYXBwbHkgZm9yIHJlc3BvbnNpdmUgdGFibGVzXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGRpc2FibGVDb2x1bW5GcmVlemU/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBJbmRpY2F0ZXMgaWYgdGhlIGNvbHVtbiBoZWFkZXIgc2hvdWxkIGJlIGEgcGFydCBvZiB0aGUgd2lkdGggY2FsY3VsYXRpb24uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGVmaW5lcyBob3cgdGhlIHRhYmxlIGhhbmRsZXMgdGhlIHZpc2libGUgcm93cy4gRG9lcyBub3QgYXBwbHkgdG8gUmVzcG9uc2l2ZSB0YWJsZXMuXG5cdCAqXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgQXV0b2AsIGBGaXhlZGAsIGFuZCBgSW50ZXJhY3RpdmVgLjxici8+XG5cdCAqIC0gSWYgc2V0IHRvIGBGaXhlZGAsIHRoZSB0YWJsZSBhbHdheXMgaGFzIGFzIG1hbnkgcm93cyBhcyBkZWZpbmVkIGluIHRoZSByb3dDb3VudCBwcm9wZXJ0eS48YnIvPlxuXHQgKiAtIElmIHNldCB0byBgQXV0b2AsIHRoZSBudW1iZXIgb2Ygcm93cyBpcyBjaGFuZ2VkIGJ5IHRoZSB0YWJsZSBhdXRvbWF0aWNhbGx5LiBJdCB3aWxsIHRoZW4gYWRqdXN0IGl0cyByb3cgY291bnQgdG8gdGhlIHNwYWNlIGl0IGlzIGFsbG93ZWQgdG8gY292ZXIgKGxpbWl0ZWQgYnkgdGhlIHN1cnJvdW5kaW5nIGNvbnRhaW5lcikgYnV0IGl0IGNhbm5vdCBoYXZlIGxlc3MgdGhhbiBkZWZpbmVkIGluIHRoZSBgcm93Q291bnRgIHByb3BlcnR5Ljxici8+XG5cdCAqIC0gSWYgc2V0IHRvIGBJbnRlcmFjdGl2ZWAgdGhlIHRhYmxlIGNhbiBoYXZlIGFzIG1hbnkgcm93cyBhcyBkZWZpbmVkIGluIHRoZSByb3dDb3VudCBwcm9wZXJ0eS4gVGhpcyBudW1iZXIgb2Ygcm93cyBjYW4gYmUgbW9kaWZpZWQgYnkgZHJhZ2dpbmcgdGhlIHJlc2l6ZXIgYXZhaWxhYmxlIGluIHRoaXMgbW9kZS48YnIvPlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBhbGxvd2VkVmFsdWVzOiBbXCJBdXRvXCIsIFwiRml4ZWRcIiwgXCJJbnRlcmFjdGl2ZVwiXSwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSByb3dDb3VudE1vZGU/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIE51bWJlciBvZiByb3dzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgdGFibGUuIERvZXMgbm90IGFwcGx5IHRvIHJlc3BvbnNpdmUgdGFibGVzLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IHJvd0NvdW50PzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyBpZiB0aGUgcGFzdGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdGFibGUgaXMgZW5hYmxlZCBvciBub3QuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGVuYWJsZVBhc3RlPzogYm9vbGVhbiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyBpZiB0aGUgY29weSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0YWJsZSBpcyBkaXNhYmxlZCBvciBub3QuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRkaXNhYmxlQ29weVRvQ2xpcGJvYXJkPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGVmaW5lcyBob3cgbWFueSBhZGRpdGlvbmFsIGRhdGEgcmVjb3JkcyBhcmUgcmVxdWVzdGVkIGZyb20gdGhlIGJhY2stZW5kIHN5c3RlbSB3aGVuIHRoZSB1c2VyIHNjcm9sbHMgdmVydGljYWxseSBpbiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiaW50XCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHNjcm9sbFRocmVzaG9sZD86IG51bWJlcjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJlY29yZHMgdG8gYmUgaW5pdGlhbGx5IHJlcXVlc3RlZCBmcm9tIHRoZSBiYWNrIGVuZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJpbnRcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0dGhyZXNob2xkPzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBJRCBvZiB0aGUgRmlsdGVyQmFyIGJ1aWxkaW5nIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlLCBpc0Fzc29jaWF0aW9uOiB0cnVlIH0pXG5cdGZpbHRlckJhcj86IHN0cmluZztcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIHRoZSBoZWFkZXIgdGV4dCB0aGF0IGlzIHNob3duIGluIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aGVhZGVyPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBcImFyaWEtbGV2ZWxcIiBvZiB0aGUgdGFibGUgaGVhZGVyXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInNhcC51aS5jb3JlLlRpdGxlTGV2ZWxcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aGVhZGVyTGV2ZWw/OiBUaXRsZUxldmVsO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyBpZiB0aGUgaGVhZGVyIHRleHQgc2hvdWxkIGJlIHNob3duIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGhlYWRlclZpc2libGU/OiBib29sZWFuO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGlkITogc3RyaW5nO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGNvbnRlbnRJZD86IHN0cmluZztcblxuXHQvKipcblx0ICogQWRkaXRpb25uYWwgU2VsZWN0aW9uVmFyaWFudCB0byBiZSBhcHBsaWVkIG9uIHRoZSB0YWJsZSBjb250ZW50LlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0dW5kZXJseWluZ1R5cGU6IFwic3RyaW5nXCIsXG5cdFx0ZXhwZWN0ZWRUeXBlczogW1wiRW50aXR5U2V0XCIsIFwiRW50aXR5VHlwZVwiLCBcIlNpbmdsZXRvblwiLCBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiXSxcblx0XHRleHBlY3RlZEFubm90YXRpb25zOiBbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25WYXJpYW50XCJdLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aD86IENvbnRleHQ7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgd2hldGhlciB0byBkaXNwbGF5IHRoZSBzZWFyY2ggYWN0aW9uLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aXNTZWFyY2hhYmxlPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQ29udHJvbHMgd2hpY2ggb3B0aW9ucyBzaG91bGQgYmUgZW5hYmxlZCBmb3IgdGhlIHRhYmxlIHBlcnNvbmFsaXphdGlvbiBkaWFsb2cuXG5cdCAqXG5cdCAqIElmIGl0IGlzIHNldCB0byBgdHJ1ZWAsIGFsbCBwb3NzaWJsZSBvcHRpb25zIGZvciB0aGlzIGtpbmQgb2YgdGFibGUgYXJlIGVuYWJsZWQuPGJyLz5cblx0ICogSWYgaXQgaXMgc2V0IHRvIGBmYWxzZWAsIHBlcnNvbmFsaXphdGlvbiBpcyBkaXNhYmxlZC48YnIvPlxuXHQgKiA8YnIvPlxuXHQgKiBZb3UgY2FuIGFsc28gcHJvdmlkZSBhIG1vcmUgZ3JhbnVsYXIgY29udHJvbCBmb3IgdGhlIHBlcnNvbmFsaXphdGlvbiBieSBwcm92aWRpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCB3aXRoIHRoZSBvcHRpb25zIHlvdSB3YW50IHRvIGJlIGF2YWlsYWJsZS48YnIvPlxuXHQgKiBBdmFpbGFibGUgb3B0aW9ucyBhcmU6PGJyLz5cblx0ICogLSBTb3J0PGJyLz5cblx0ICogLSBDb2x1bW48YnIvPlxuXHQgKiAtIEZpbHRlcjxici8+XG5cdCAqIC0gR3JvdXA8YnIvPlxuXHQgKiA8YnIvPlxuXHQgKiBUaGUgR3JvdXAgb3B0aW9uIGlzIG9ubHkgYXBwbGljYWJsZSB0byBhbmFseXRpY2FsIHRhYmxlcyBhbmQgcmVzcG9uc2l2ZSB0YWJsZXMuPGJyLz5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cGVyc29uYWxpemF0aW9uPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBBbiBleHByZXNzaW9uIHRoYXQgYWxsb3dzIHlvdSB0byBjb250cm9sIHRoZSAncmVhZC1vbmx5JyBzdGF0ZSBvZiB0aGUgdGFibGUuXG5cdCAqXG5cdCAqIElmIHlvdSBkbyBub3Qgc2V0IGFueSBleHByZXNzaW9uLCBTQVAgRmlvcmkgZWxlbWVudHMgaG9va3MgaW50byB0aGUgc3RhbmRhcmQgbGlmZWN5Y2xlIHRvIGRldGVybWluZSB0aGUgY3VycmVudCBzdGF0ZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHJlYWRPbmx5PzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgdHlwZSBvZiB0YWJsZSB0aGF0IHdpbGwgYmUgdXNlZCBieSB0aGUgYnVpbGRpbmcgYmxvY2sgdG8gcmVuZGVyIHRoZSBkYXRhLlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYEdyaWRUYWJsZWAsIGBSZXNwb25zaXZlVGFibGVgIGFuZCBgQW5hbHl0aWNhbFRhYmxlYC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIGFsbG93ZWRWYWx1ZXM6IFtcIkdyaWRUYWJsZVwiLCBcIlJlc3BvbnNpdmVUYWJsZVwiLCBcIkFuYWx5dGljYWxUYWJsZVwiXSB9KVxuXHRyZWFkb25seSB0eXBlPzogVGFibGVUeXBlO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgdGFibGUgaXMgZGlzcGxheWVkIHdpdGggY29uZGVuc2VkIGxheW91dCAodHJ1ZS9mYWxzZSkuIFRoZSBkZWZhdWx0IHNldHRpbmcgaXMgYGZhbHNlYC5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHR1c2VDb25kZW5zZWRMYXlvdXQ/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBzZWxlY3Rpb24gbW9kZSB0byBiZSB1c2VkIGJ5IHRoZSB0YWJsZS5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBOb25lYCwgYFNpbmdsZWAsIGBGb3JjZVNpbmdsZWAsIGBNdWx0aWAsIGBGb3JjZU11bHRpYCBvciBgQXV0b2AuXG5cdCAqIElmIHNldCB0byAnU2luZ2xlJywgJ011bHRpJyBvciAnQXV0bycsIFNBUCBGaW9yaSBlbGVtZW50cyBob29rcyBpbnRvIHRoZSBzdGFuZGFyZCBsaWZlY3ljbGUgdG8gZGV0ZXJtaW5lIHRoZSBjb25zaXN0ZW50IHNlbGVjdGlvbiBtb2RlLlxuXHQgKiBJZiBzZXQgdG8gJ0ZvcmNlU2luZ2xlJyBvciAnRm9yY2VNdWx0aScgeW91ciBjaG9pY2Ugd2lsbCBiZSByZXNwZWN0ZWQgYnV0IHRoaXMgbWlnaHQgbm90IHJlc3BlY3QgdGhlIEZpb3JpIGd1aWRlbGluZXMuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlLCBhbGxvd2VkVmFsdWVzOiBbXCJOb25lXCIsIFwiU2luZ2xlXCIsIFwiTXVsdGlcIiwgXCJBdXRvXCIsIFwiRm9yY2VNdWx0aVwiLCBcIkZvcmNlU2luZ2xlXCJdIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0aW9uTW9kZT86IHN0cmluZztcblxuXHQvKipcblx0ICogQ29udHJvbHMgdGhlIGtpbmQgb2YgdmFyaWFudCBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHRoZSB0YWJsZS5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZSBpcyBgQ29udHJvbGAuPGJyLz5cblx0ICogSWYgc2V0IHdpdGggdmFsdWUgYENvbnRyb2xgLCBhIHZhcmlhbnQgbWFuYWdlbWVudCBjb250cm9sIGlzIHNlZW4gd2l0aGluIHRoZSB0YWJsZSBhbmQgdGhlIHRhYmxlIGlzIGxpbmtlZCB0byB0aGlzLjxici8+XG5cdCAqIElmIG5vdCBzZXQgd2l0aCBhbnkgdmFsdWUsIGNvbnRyb2wgbGV2ZWwgdmFyaWFudCBtYW5hZ2VtZW50IGlzIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlLCBhbGxvd2VkVmFsdWVzOiBbXCJDb250cm9sXCJdIH0pXG5cdHZhcmlhbnRNYW5hZ2VtZW50Pzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDb21tYS1zZXBhcmF0ZWQgdmFsdWUgb2YgZmllbGRzIHRoYXQgbXVzdCBiZSBpZ25vcmVkIGluIHRoZSBPRGF0YSBtZXRhZGF0YSBieSB0aGUgVGFibGUgYnVpbGRpbmcgYmxvY2suPGJyPlxuXHQgKiBUaGUgdGFibGUgYnVpbGRpbmcgYmxvY2sgaXMgbm90IGdvaW5nIHRvIGNyZWF0ZSBidWlsdC1pbiBjb2x1bW5zIG9yIG9mZmVyIHRhYmxlIHBlcnNvbmFsaXphdGlvbiBmb3IgY29tbWEtc2VwYXJhdGVkIHZhbHVlIG9mIGZpZWxkcyB0aGF0IGFyZSBwcm92aWRlZCBpbiB0aGUgaWdub3JlZGZpZWxkcy48YnI+XG5cdCAqIEFueSBjb2x1bW4gcmVmZXJlbmNpbmcgYW4gaWdub3JlZCBmaWVsZCBpcyB0byBiZSByZW1vdmVkLjxicj5cblx0ICogQHNpbmNlIDEuMTI0LjBcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aWdub3JlZEZpZWxkcz86IHN0cmluZztcblxuXHQvLyAgKioqKioqKioqKioqKioqIFByaXZhdGUgQXR0cmlidXRlcyAqKioqKioqKioqKioqKioqKioqKlxuXHRwcml2YXRlIF9hcGlJZD86IHN0cmluZztcblxuXHQvKipcblx0ICogQ2hhbmdlcyB0aGUgc2l6ZSBvZiB0aGUgSWxsdXN0cmF0ZWRNZXNzYWdlIGluIHRoZSB0YWJsZSwgb3IgcmVtb3ZlcyBpdCBjb21wbGV0ZWx5LlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYGlsbHVzdHJhdGVkTWVzc2FnZS1BdXRvYCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1CYXNlYCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1EaWFsb2dgLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLURvdGAsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtU2NlbmVgLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLVNwb3RgIG9yIGB0ZXh0YC5cblx0ICogQHNpbmNlIDEuMTI5LjBcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdGFsbG93ZWRWYWx1ZXM6IFtcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUF1dG9cIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUJhc2VcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLU1lZGl1bVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtRG90XCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1FeHRyYVNtYWxsXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1TY2VuZVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtTGFyZ2VcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLVNwb3RcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLVNtYWxsXCIsXG5cdFx0XHRcInRleHRcIlxuXHRcdF1cblx0fSlcblx0bW9kZUZvck5vRGF0YU1lc3NhZ2U/OiBzdHJpbmc7XG5cblx0Ly8gICoqKioqKioqKioqKioqKiBQcml2YXRlIEF0dHJpYnV0ZXMgKioqKioqKioqKioqKioqKioqKipcblx0cHJpdmF0ZSByZWFkb25seSBjb2xsZWN0aW9uRW50aXR5OiBFbnRpdHlTZXQgfCBOYXZpZ2F0aW9uUHJvcGVydHk7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIGhlYWRlciBzdHlsZSBvZiB0aGUgdGFibGUgaGVhZGVyXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInNhcC51aS5jb3JlLlRpdGxlTGV2ZWxcIiB9KVxuXHRoZWFkZXJTdHlsZT86IFRpdGxlTGV2ZWw7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyBpZiB0aGUgY29sdW1uIHdpZHRoIGlzIGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGVuYWJsZUF1dG9Db2x1bW5XaWR0aD86IGJvb2xlYW4gPSB0cnVlO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0ZmllbGRNb2RlID0gXCJcIjtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRpc0FscD86IGJvb2xlYW4gPSBmYWxzZTtcblxuXHQvKipcblx0ICogT05MWSBGT1IgUkVTUE9OU0lWRSBUQUJMRTogU2V0dGluZyB0byBkZWZpbmUgdGhlIGNoZWNrYm94IGluIHRoZSBjb2x1bW4gaGVhZGVyOiBBbGxvd2VkIHZhbHVlcyBhcmUgYERlZmF1bHRgIG9yIGBDbGVhckFsbGAuIElmIHNldCB0byBgRGVmYXVsdGAsIHRoZSBzYXAubS5UYWJsZSBjb250cm9sIHJlbmRlcnMgdGhlIFNlbGVjdCBBbGwgY2hlY2tib3gsIG90aGVyd2lzZSB0aGUgRGVzZWxlY3QgQWxsIGJ1dHRvbiBpcyByZW5kZXJlZC5cblx0ICovXG5cdG11bHRpU2VsZWN0TW9kZT86IHN0cmluZztcblxuXHQvKipcblx0ICogVXNlZCBmb3IgYmluZGluZyB0aGUgdGFibGUgdG8gYSBuYXZpZ2F0aW9uIHBhdGguIE9ubHkgdGhlIHBhdGggaXMgdXNlZCBmb3IgYmluZGluZyByb3dzLlxuXHQgKi9cblx0bmF2aWdhdGlvblBhdGg/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFRydWUgaWYgdGhlIHRhYmxlIGlzIGluIGEgTGlzdFJlcG9ydCBtdWx0aSB2aWV3XG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRpbk11bHRpVmlldz86IGJvb2xlYW47XG5cblx0dXNlQmFzaWNTZWFyY2g/OiBib29sZWFuO1xuXG5cdHRhYmxlRGVmaW5pdGlvbjogVGFibGVWaXN1YWxpemF0aW9uOyAvLyBXZSByZXF1aXJlIHRhYmxlRGVmaW5pdGlvbiB0byBiZSB0aGVyZSBldmVuIHRob3VnaCBpdCBpcyBub3QgZm9ybWFsbHkgcmVxdWlyZWRcblxuXHR0YWJsZURlZmluaXRpb25Db250ZXh0PzogQ29udGV4dDtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHRhYlRpdGxlID0gXCJcIjtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHR2aXNpYmxlPzogYm9vbGVhbjtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRkaXNwbGF5U2VnbWVudGVkQnV0dG9uPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQSBzZXQgb2Ygb3B0aW9ucyB0aGF0IGNhbiBiZSBjb25maWd1cmVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwib2JqZWN0XCIsXG5cdFx0dW5kZXJseWluZ1R5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5UYWJsZUNyZWF0aW9uT3B0aW9uc1wiLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdHZhbGlkYXRlOiBmdW5jdGlvbiAoY3JlYXRpb25PcHRpb25zSW5wdXQ6IFRhYmxlQ3JlYXRpb25PcHRpb25zKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGNyZWF0aW9uT3B0aW9uc0lucHV0Lm5hbWUgJiZcblx0XHRcdFx0IVtcIk5ld1BhZ2VcIiwgXCJJbmxpbmVcIiwgXCJJbmxpbmVDcmVhdGlvblJvd3NcIiwgXCJFeHRlcm5hbFwiLCBcIkNyZWF0aW9uRGlhbG9nXCJdLmluY2x1ZGVzKGNyZWF0aW9uT3B0aW9uc0lucHV0Lm5hbWUpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBBbGxvd2VkIHZhbHVlICR7Y3JlYXRpb25PcHRpb25zSW5wdXQubmFtZX0gZm9yIGNyZWF0aW9uTW9kZSBkb2VzIG5vdCBtYXRjaGApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gY3JlYXRpb25PcHRpb25zSW5wdXQ7XG5cdFx0fVxuXHR9KVxuXHRjcmVhdGlvbk1vZGU6IFByb3BlcnRpZXNPZjxUYWJsZUNyZWF0aW9uT3B0aW9ucz4gPSB7fTtcblxuXHQvKipcblx0ICogQSBzZXQgb2Ygb3B0aW9ucyB0aGF0IGNhbiBiZSBjb25maWd1cmVkIHRvIGNvbnRyb2wgdGhlIGFnZ3JlZ2F0aW9uIGJlaGF2aW9yXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwib2JqZWN0XCIsXG5cdFx0dW5kZXJseWluZ1R5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BbmFseXRpY2FsQ29uZmlndXJhdGlvblwiLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdHZhbGlkYXRlOiBmdW5jdGlvbiAoYW5hbHl0aWNhbENvbmZpZ3VyYXRpb246IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB7XG5cdFx0XHRpZiAodHlwZW9mIGFuYWx5dGljYWxDb25maWd1cmF0aW9uLmFnZ3JlZ2F0aW9uT25MZWFmTGV2ZWwgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdFx0YW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCA9IGFuYWx5dGljYWxDb25maWd1cmF0aW9uLmFnZ3JlZ2F0aW9uT25MZWFmTGV2ZWwgPT09IFwidHJ1ZVwiO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGFuYWx5dGljYWxDb25maWd1cmF0aW9uO1xuXHRcdH1cblx0fSlcblx0YW5hbHl0aWNhbENvbmZpZ3VyYXRpb246IFByb3BlcnRpZXNPZjxBbmFseXRpY2FsQ29uZmlndXJhdGlvbj4gPSB7fTtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIGFjdGlvbnMgb2YgdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvblwiLFxuXHRcdGFsdFR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbkdyb3VwXCIsIFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25PdmVycmlkZVwiLCBcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBPdmVycmlkZVwiXSxcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRoYXNWaXJ0dWFsTm9kZTogdHJ1ZSxcblx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRwcm9jZXNzQWdncmVnYXRpb25zOiBzZXRDdXN0b21BY3Rpb25Hcm91cFByb3BlcnRpZXNcblx0fSlcblx0YWN0aW9ucz86IFJlY29yZDxzdHJpbmcsIEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25Hcm91cCB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUgfCBCbG9ja0FjdGlvbkdyb3VwT3ZlcnJpZGU+O1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGUgbWFzcyBlZGl0IG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5NYXNzRWRpdFwiLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdG11bHRpcGxlOiBmYWxzZSxcblx0XHRza2lwS2V5OiB0cnVlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldEN1c3RvbU1hc3NFZGl0UHJvcGVydGllc1xuXHR9KVxuXHRtYXNzRWRpdD86IFJlY29yZDxzdHJpbmcsIEJsb2NrTWFzc0VkaXQ+O1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGUgY29sdW1ucyBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0FnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuQ29sdW1uXCIsXG5cdFx0YWx0VHlwZXM6IFtcInNhcC5mZS5tYWNyb3MudGFibGUuQ29sdW1uT3ZlcnJpZGVcIl0sXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0aGFzVmlydHVhbE5vZGU6IHRydWUsXG5cdFx0aXNEZWZhdWx0OiB0cnVlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldEN1c3RvbUNvbHVtblByb3BlcnRpZXNcblx0fSlcblx0Y29sdW1ucz86IFJlY29yZDxzdHJpbmcsIEJsb2NrQ29sdW1uIHwgQmxvY2tDb2x1bW5PdmVycmlkZT47XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBxdWlja1ZhcmlhbnRTZWxlY3Rpb24gb2YgdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLlF1aWNrVmFyaWFudFNlbGVjdGlvblwiLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdHNraXBLZXk6IHRydWUsXG5cdFx0bXVsdGlwbGU6IGZhbHNlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldFF1aWNrVmFyaWFudFNlbGVjdGlvblxuXHR9KVxuXHRxdWlja1ZhcmlhbnRTZWxlY3Rpb24/OiBSZWNvcmQ8c3RyaW5nLCBCbG9ja1F1aWNrVmFyaWFudFNlbGVjdGlvbj47XG5cblx0Y29udmVydGVkTWV0YWRhdGE6IENvbnZlcnRlZE1ldGFkYXRhO1xuXG5cdGNvbnRleHRPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+O1xuXG5cdC8qKlxuXHQgKiBCZWZvcmUgYSB0YWJsZSByZWJpbmQsIGFuIGV2ZW50IGlzIHRyaWdnZXJlZCB0aGF0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBiaW5kaW5nLlxuXHQgKlxuXHQgKiBUaGUgZXZlbnQgY29udGFpbnMgYSBwYXJhbWV0ZXIsIGBjb2xsZWN0aW9uQmluZGluZ0luZm9gLCB3aGljaCBpcyBhbiBpbnN0YW5jZSBvZiBgQ29sbGVjdGlvbkJpbmRpbmdJbmZvQVBJYC5cblx0ICogVGhpcyBhbGxvd3MgeW91IHRvIG1hbmlwdWxhdGUgdGhlIHRhYmxlJ3MgbGlzdCBiaW5kaW5nLlxuXHQgKiBZb3UgY2FuIHVzZSB0aGlzIGV2ZW50IHRvIGF0dGFjaCBldmVudCBoYW5kbGVycyB0byB0aGUgdGFibGUncyBsaXN0IGJpbmRpbmcuXG5cdCAqIFlvdSBjYW4gdXNlIHRoaXMgZXZlbnQgdG8gYWRkIHNlbGVjdHMsIGFuZCBhZGQgb3IgcmVhZCB0aGUgc29ydGVycyBhbmQgZmlsdGVycy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRwcml2YXRlIHJlYWRvbmx5IGJlZm9yZVJlYmluZFRhYmxlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBjaG9vc2VzIGEgcm93OyB0aGUgZXZlbnQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgd2hpY2ggcm93IGlzIGNob3Nlbi5cblx0ICpcblx0ICogWW91IGNhbiBzZXQgdGhpcyBpbiBvcmRlciB0byBoYW5kbGUgdGhlIG5hdmlnYXRpb24gbWFudWFsbHkuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0cm93UHJlc3M/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gcmVhY3QgdG8gdGhlIGNoYW5nZSBldmVudCBvZiB0aGUgdGFibGUncyBsaXN0IGJpbmRpbmcuXG5cdCAqXG5cdCAqIEludGVybmFsIG9ubHlcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0bGlzdEJpbmRpbmdDaGFuZ2U/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgY2FsbGVkIHdoZW4gdGhlIHVzZXIgY2hvb3NlcyBhbiBvcHRpb24gb2YgdGhlIHNlZ21lbnRlZCBidXR0b24gaW4gdGhlIEFMUCBWaWV3XG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdHNlZ21lbnRlZEJ1dHRvblByZXNzPzogc3RyaW5nO1xuXG5cdEBibG9ja0V2ZW50KClcblx0dmFyaWFudFNhdmVkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCB0cmlnZ2VyZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGluIHRoZSB0YWJsZSBjaGFuZ2VzLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlPzogc3RyaW5nO1xuXG5cdEBibG9ja0V2ZW50KClcblx0dmFyaWFudFNlbGVjdGVkPzogc3RyaW5nO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRpbml0aWFsTG9hZD86IGJvb2xlYW47XG5cblx0cHJpdmF0ZSByZWFkb25seSBhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudDtcblxuXHRwcml2YXRlIHJlYWRvbmx5IG1ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWw7XG5cblx0Y29uc3RydWN0b3IocHJvcHM6IFByb3BlcnRpZXNPZjxUYWJsZUJsb2NrPiwgY29udHJvbENvbmZpZ3VyYXRpb246IHVua25vd24sIHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3M6IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpIHtcblx0XHRzdXBlcihwcm9wcywgY29udHJvbENvbmZpZ3VyYXRpb24sIHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpO1xuXHRcdGNvbnN0IGNvbnRleHRPYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+KFxuXHRcdFx0dGhpcy5tZXRhUGF0aCxcblx0XHRcdHRoaXMuY29udGV4dFBhdGhcblx0XHQpO1xuXHRcdHRoaXMuY29udGV4dE9iamVjdFBhdGggPSBjb250ZXh0T2JqZWN0UGF0aDtcblxuXHRcdHRoaXMudGFibGVEZWZpbml0aW9uID0gVGFibGVCbG9jay5jcmVhdGVUYWJsZURlZmluaXRpb24odGhpcywgdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyk7XG5cdFx0dGhpcy50YWJsZURlZmluaXRpb25Db250ZXh0ID0gTWFjcm9BUEkuY3JlYXRlQmluZGluZ0NvbnRleHQodGhpcy50YWJsZURlZmluaXRpb24gYXMgb2JqZWN0LCB0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzKTtcblxuXHRcdHRoaXMuY29udmVydGVkTWV0YWRhdGEgPSB0aGlzLmNvbnRleHRPYmplY3RQYXRoLmNvbnZlcnRlZFR5cGVzO1xuXHRcdHRoaXMubWV0YU1vZGVsID0gdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncy5tb2RlbHMubWV0YU1vZGVsO1xuXHRcdHRoaXMuY29sbGVjdGlvbkVudGl0eSA9IHRoaXMuY29udmVydGVkTWV0YWRhdGEucmVzb2x2ZVBhdGgodGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jb2xsZWN0aW9uKS50YXJnZXQgYXMgRW50aXR5U2V0O1xuXHRcdHRoaXMuYXBwQ29tcG9uZW50ID0gdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncy5hcHBDb21wb25lbnQ7XG5cdFx0dGhpcy5zZXRVcElkKCk7XG5cblx0XHR0aGlzLmNyZWF0aW9uTW9kZSA/Pz0ge307XG5cdFx0dGhpcy5jcmVhdGlvbk1vZGUubmFtZSA/Pz0gdGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jcmVhdGUubW9kZSBhcyBUYWJsZUNyZWF0aW9uT3B0aW9uc1tcIm5hbWVcIl07XG5cdFx0dGhpcy5jcmVhdGlvbk1vZGUuY3JlYXRlQXRFbmQgPz89ICh0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNyZWF0ZSBhcyBDcmVhdGVCZWhhdmlvcikuYXBwZW5kO1xuXHRcdC8vIFNwZWNpYWwgY29kZSBmb3IgcmVhZE9ubHlcblx0XHQvLyByZWFkb25seSA9IGZhbHNlIC0+IEZvcmNlIGVkaXRhYmxlXG5cdFx0Ly8gcmVhZG9ubHkgPSB0cnVlIC0+IEZvcmNlIGRpc3BsYXkgbW9kZVxuXHRcdC8vIHJlYWRvbmx5ID0gdW5kZWZpbmVkIC0+IEJvdW5kIHRvIGVkaXQgZmxvd1xuXHRcdGlmIChcblx0XHRcdHRoaXMucmVhZE9ubHkgPT09IHVuZGVmaW5lZCAmJlxuXHRcdFx0KHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uZGlzcGxheU1vZGUgPT09IHRydWUgfHwgdGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5yZWFkT25seSA9PT0gdHJ1ZSlcblx0XHQpIHtcblx0XHRcdHRoaXMucmVhZE9ubHkgPSB0cnVlO1xuXHRcdH1cblxuXHRcdFRhYmxlQVBJLnVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5KHRoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wuaWdub3JlZEZpZWxkcywgW10sIHRoaXMudGFibGVEZWZpbml0aW9uKTtcblxuXHRcdGxldCB1c2VCYXNpY1NlYXJjaCA9IGZhbHNlO1xuXG5cdFx0Ly8gTm90ZSBmb3IgdGhlICdmaWx0ZXJCYXInIHByb3BlcnR5OlxuXHRcdC8vIDEuIElEIHJlbGF0aXZlIHRvIHRoZSB2aWV3IG9mIHRoZSBUYWJsZS5cblx0XHQvLyAyLiBBYnNvbHV0ZSBJRC5cblx0XHQvLyAzLiBJRCB3b3VsZCBiZSBjb25zaWRlcmVkIGluIGFzc29jaWF0aW9uIHRvIFRhYmxlQVBJJ3MgSUQuXG5cdFx0aWYgKCF0aGlzLmZpbHRlckJhcikge1xuXHRcdFx0Ly8gZmlsdGVyQmFyOiBQdWJsaWMgcHJvcGVydHkgZm9yIGJ1aWxkaW5nIGJsb2Nrc1xuXHRcdFx0Ly8gZmlsdGVyQmFySWQ6IE9ubHkgdXNlZCBhcyBJbnRlcm5hbCBwcml2YXRlIHByb3BlcnR5IGZvciBGRSB0ZW1wbGF0ZXNcblx0XHRcdHRoaXMuZmlsdGVyQmFyID0gZ2VuZXJhdGUoW3RoaXMuY29udGVudElkLCBcIlN0YW5kYXJkQWN0aW9uXCIsIFwiQmFzaWNTZWFyY2hcIl0pO1xuXHRcdFx0dXNlQmFzaWNTZWFyY2ggPSB0cnVlO1xuXHRcdH1cblx0XHQvLyBJbnRlcm5hbCBwcm9wZXJ0aWVzXG5cdFx0dGhpcy51c2VCYXNpY1NlYXJjaCA9IHVzZUJhc2ljU2VhcmNoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGFubm90YXRpb24gcGF0aCBwb2ludGluZyB0byB0aGUgdmlzdWFsaXphdGlvbiBhbm5vdGF0aW9uIChMaW5lSXRlbSkuXG5cdCAqIEBwYXJhbSBjb250ZXh0T2JqZWN0UGF0aCBUaGUgZGF0YW1vZGVsIG9iamVjdCBwYXRoIGZvciB0aGUgdGFibGVcblx0ICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGNvbnZlcnRlciBjb250ZXh0XG5cdCAqIEByZXR1cm5zIFRoZSBhbm5vdGF0aW9uIHBhdGhcblx0ICovXG5cdHN0YXRpYyBnZXRWaXN1YWxpemF0aW9uUGF0aChcblx0XHRjb250ZXh0T2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxMaW5lSXRlbSB8IFByZXNlbnRhdGlvblZhcmlhbnQgfCBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50Pixcblx0XHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cblx0KTogc3RyaW5nIHtcblx0XHRjb25zdCBtZXRhUGF0aCA9IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgoY29udGV4dE9iamVjdFBhdGgpIGFzIHN0cmluZztcblxuXHRcdC8vIGZhbGxiYWNrIHRvIGRlZmF1bHQgTGluZUl0ZW0gaWYgbWV0YXBhdGggaXMgbm90IHNldFxuXHRcdGlmICghbWV0YVBhdGgpIHtcblx0XHRcdExvZy5lcnJvcihgTWlzc2luZyBtZXRhIHBhdGggcGFyYW1ldGVyIGZvciBMaW5lSXRlbWApO1xuXHRcdFx0cmV0dXJuIGBAJHtVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbX1gO1xuXHRcdH1cblxuXHRcdGlmIChpc0Fubm90YXRpb25PZlRlcm08TGluZUl0ZW0+KGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCwgVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW0pKSB7XG5cdFx0XHRyZXR1cm4gbWV0YVBhdGg7IC8vIE1ldGFQYXRoIGlzIGFscmVhZHkgcG9pbnRpbmcgdG8gYSBMaW5lSXRlbVxuXHRcdH1cblx0XHQvL05lZWQgdG8gc3dpdGNoIHRvIHRoZSBjb250ZXh0IHJlbGF0ZWQgdGhlIFBWIG9yIFNQVlxuXHRcdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihtZXRhUGF0aCk7XG5cblx0XHRsZXQgdmlzdWFsaXphdGlvbnM6IFZpc3VhbGl6YXRpb25BbmRQYXRoW10gPSBbXTtcblx0XHRpZiAoXG5cdFx0XHRpc0Fubm90YXRpb25PZlRlcm08U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD4oXG5cdFx0XHRcdGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCxcblx0XHRcdFx0VUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFxuXHRcdFx0KSB8fFxuXHRcdFx0aXNBbm5vdGF0aW9uT2ZUZXJtPFByZXNlbnRhdGlvblZhcmlhbnQ+KGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCwgVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudClcblx0XHQpIHtcblx0XHRcdHZpc3VhbGl6YXRpb25zID0gZ2V0VmlzdWFsaXphdGlvbnNGcm9tQW5ub3RhdGlvbihcblx0XHRcdFx0Y29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LFxuXHRcdFx0XHRtZXRhUGF0aCxcblx0XHRcdFx0cmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dCxcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TG9nLmVycm9yKGBCYWQgbWV0YXBhdGggcGFyYW1ldGVyIGZvciB0YWJsZSA6ICR7Y29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IS50ZXJtfWApO1xuXHRcdH1cblxuXHRcdGNvbnN0IGxpbmVJdGVtVml6ID0gdmlzdWFsaXphdGlvbnMuZmluZCgodml6KSA9PiB7XG5cdFx0XHRyZXR1cm4gdml6LnZpc3VhbGl6YXRpb24udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW07XG5cdFx0fSk7XG5cblx0XHRpZiAobGluZUl0ZW1WaXopIHtcblx0XHRcdHJldHVybiBsaW5lSXRlbVZpei5hbm5vdGF0aW9uUGF0aDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gZmFsbGJhY2sgdG8gZGVmYXVsdCBMaW5lSXRlbSBpZiBhbm5vdGF0aW9uIG1pc3NpbmcgaW4gUFZcblx0XHRcdExvZy5lcnJvcihgQmFkIG1ldGEgcGF0aCBwYXJhbWV0ZXIgZm9yIExpbmVJdGVtOiAke2NvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCEudGVybX1gKTtcblx0XHRcdHJldHVybiBgQCR7VUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW19YDsgLy8gRmFsbGJhY2tcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgYWRkU2V0dGluZyA9ICh0YXJnZXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkID0+IHtcblx0XHRpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGFyZ2V0W2tleV0gPSB2YWx1ZTtcblx0XHR9XG5cdH07XG5cblx0Z2V0VGFibGVTZXR0aW5ncygpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG5cdFx0Y29uc3QgdGFibGVTZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVFeHBvcnRcIiwgdGhpcy5lbmFibGVFeHBvcnQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJlYWRPbmx5XCIsIHRoaXMucmVhZE9ubHkpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImlnbm9yZWRGaWVsZHNcIiwgdGhpcy5pZ25vcmVkRmllbGRzKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3Rpb25MaW1pdFwiLCB0aGlzLnNlbGVjdGlvbkxpbWl0KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJjb25kZW5zZWRUYWJsZUxheW91dFwiLCB0aGlzLmNvbmRlbnNlZFRhYmxlTGF5b3V0KTtcblxuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImV4cG9ydFJlcXVlc3RTaXplXCIsIHRoaXMuZXhwb3J0UmVxdWVzdFNpemUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImZyb3plbkNvbHVtbkNvdW50XCIsIHRoaXMuZnJvemVuQ29sdW1uQ291bnQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImRpc2FibGVDb2x1bW5GcmVlemVcIiwgdGhpcy5kaXNhYmxlQ29sdW1uRnJlZXplKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJ3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlclwiLCB0aGlzLndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJyb3dDb3VudE1vZGVcIiwgdGhpcy5yb3dDb3VudE1vZGUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJvd0NvdW50XCIsIHRoaXMucm93Q291bnQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZUZ1bGxTY3JlZW5cIiwgdGhpcy5lbmFibGVGdWxsU2NyZWVuKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3RBbGxcIiwgdGhpcy5lbmFibGVTZWxlY3RBbGwpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllc1wiLCB0aGlzLmVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllcyk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZW5hYmxlUGFzdGVcIiwgdGhpcy5lbmFibGVQYXN0ZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZGlzYWJsZUNvcHlUb0NsaXBib2FyZFwiLCB0aGlzLmRpc2FibGVDb3B5VG9DbGlwYm9hcmQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNjcm9sbFRocmVzaG9sZFwiLCB0aGlzLnNjcm9sbFRocmVzaG9sZCk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwidGhyZXNob2xkXCIsIHRoaXMudGhyZXNob2xkKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3Rpb25Nb2RlXCIsIHRoaXMuc2VsZWN0aW9uTW9kZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwidHlwZVwiLCB0aGlzLnR5cGUpO1xuXHRcdGlmICh0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbj8ucXVpY2tGaWx0ZXJzPy5wYXRocz8ubGVuZ3RoKSB7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJxdWlja1ZhcmlhbnRTZWxlY3Rpb25cIiwge1xuXHRcdFx0XHRwYXRoczogdGhpcy5xdWlja1ZhcmlhbnRTZWxlY3Rpb24ucXVpY2tGaWx0ZXJzLnBhdGhzLm1hcCgocGF0aCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB7IGFubm90YXRpb25QYXRoOiBwYXRoIH07XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRzaG93Q291bnRzOiB0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbi5xdWlja0ZpbHRlcnMuc2hvd0NvdW50c1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuY3JlYXRpb25Nb2RlKSB7XG5cdFx0XHRjb25zdCBjcmVhdGlvbk1vZGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcIm5hbWVcIiwgdGhpcy5jcmVhdGlvbk1vZGUubmFtZSk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcImNyZWF0aW9uRmllbGRzXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmNyZWF0aW9uRmllbGRzKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwiY3JlYXRlQXRFbmRcIiwgdGhpcy5jcmVhdGlvbk1vZGUuY3JlYXRlQXRFbmQpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJpbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmlubGluZUNyZWF0aW9uUm93c0hpZGRlbkluRWRpdE1vZGUpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJvdXRib3VuZFwiLCB0aGlzLmNyZWF0aW9uTW9kZS5vdXRib3VuZCk7XG5cdFx0XHRpZiAoT2JqZWN0LmVudHJpZXMoY3JlYXRpb25Nb2RlKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHRhYmxlU2V0dGluZ3NbXCJjcmVhdGlvbk1vZGVcIl0gPSBjcmVhdGlvbk1vZGU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMubWFzc0VkaXQpIHtcblx0XHRcdGNvbnN0IGVuYWJsZU1hc3NFZGl0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcImN1c3RvbUZyYWdtZW50XCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8uY3VzdG9tQ29udGVudCk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwiZnJvbUlubGluZVwiLCB0cnVlKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJ2aXNpYmxlRmllbGRzXCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8udmlzaWJsZUZpZWxkcz8uam9pbihcIixcIikpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcImlnbm9yZWRGaWVsZHNcIiwgdGhpcy5tYXNzRWRpdC5jb25maWd1cmF0aW9uPy5pZ25vcmVkRmllbGRzPy5qb2luKFwiLFwiKSk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwib3BlcmF0aW9uR3JvdXBpbmdNb2RlXCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8ub3BlcmF0aW9uR3JvdXBpbmdNb2RlKTtcblx0XHRcdHRhYmxlU2V0dGluZ3NbXCJlbmFibGVNYXNzRWRpdFwiXSA9IGVuYWJsZU1hc3NFZGl0O1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmFuYWx5dGljYWxDb25maWd1cmF0aW9uPy5hZ2dyZWdhdGlvbk9uTGVhZkxldmVsID09PSB0cnVlKSB7XG5cdFx0XHRjb25zdCBhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhhbmFseXRpY2FsQ29uZmlndXJhdGlvbiwgXCJhZ2dyZWdhdGlvbk9uTGVhZkxldmVsXCIsIHRoaXMuYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCk7XG5cdFx0XHRpZiAoT2JqZWN0LmVudHJpZXMoYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24pLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0dGFibGVTZXR0aW5nc1tcImFuYWx5dGljYWxDb25maWd1cmF0aW9uXCJdID0gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb247XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0YWJsZVNldHRpbmdzO1xuXHR9XG5cblx0c3RhdGljIGNyZWF0ZVRhYmxlRGVmaW5pdGlvbih0YWJsZTogVGFibGVCbG9jaywgdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5nczogVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyk6IFRhYmxlVmlzdWFsaXphdGlvbiB7XG5cdFx0Y29uc3QgaW5pdGlhbENvbnZlcnRlckNvbnRleHQgPSB0YWJsZS5nZXRDb252ZXJ0ZXJDb250ZXh0KFxuXHRcdFx0dGFibGUuY29udGV4dE9iamVjdFBhdGgsXG5cdFx0XHR0YWJsZS5jb250ZXh0UGF0aD8uZ2V0UGF0aCgpLFxuXHRcdFx0dGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5nc1xuXHRcdCk7XG5cdFx0Y29uc3QgdmlzdWFsaXphdGlvblBhdGggPSBUYWJsZUJsb2NrLmdldFZpc3VhbGl6YXRpb25QYXRoKHRhYmxlLmNvbnRleHRPYmplY3RQYXRoLCBpbml0aWFsQ29udmVydGVyQ29udGV4dCk7XG5cblx0XHRjb25zdCB0YWJsZVNldHRpbmdzID0gdGFibGUuZ2V0VGFibGVTZXR0aW5ncygpO1xuXHRcdGNvbnN0IGV4dHJhTWFuaWZlc3RTZXR0aW5nczogVGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSB7XG5cdFx0XHRhY3Rpb25zOiBUYWJsZUJsb2NrLmNyZWF0ZUFjdGlvbnNGcm9tTWFuaWZlc3QodGFibGUpLFxuXHRcdFx0Y29sdW1uczogVGFibGVCbG9jay5jcmVhdGVDb2x1bW5zRm9yTWFuaWZlc3QodGFibGUpLFxuXHRcdFx0dGFibGVTZXR0aW5nc1xuXHRcdH07XG5cblx0XHRjb25zdCBleHRyYVBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRleHRyYVBhcmFtc1t2aXN1YWxpemF0aW9uUGF0aF0gPSBleHRyYU1hbmlmZXN0U2V0dGluZ3M7XG5cdFx0Y29uc3QgY29udmVydGVyQ29udGV4dCA9IHRhYmxlLmdldENvbnZlcnRlckNvbnRleHQoXG5cdFx0XHR0YWJsZS5jb250ZXh0T2JqZWN0UGF0aCxcblx0XHRcdHRhYmxlLmNvbnRleHRQYXRoPy5nZXRQYXRoKCksXG5cdFx0XHR0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzLFxuXHRcdFx0ZXh0cmFQYXJhbXNcblx0XHQpO1xuXG5cdFx0bGV0IGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50VHlwZSB8IHVuZGVmaW5lZDtcblx0XHRpZiAodGFibGUuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoKSB7XG5cdFx0XHRjb25zdCBzdk9iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8U2VsZWN0aW9uVmFyaWFudD4oXG5cdFx0XHRcdHRhYmxlLmFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aCxcblx0XHRcdFx0dGFibGUuY29udGV4dFBhdGggYXMgQ29udGV4dFxuXHRcdFx0KTtcblx0XHRcdGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50ID0gc3ZPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0XHR9XG5cblx0XHRjb25zdCB2aXN1YWxpemF0aW9uRGVmaW5pdGlvbiA9IGdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbihcblx0XHRcdCh0YWJsZS5pbk11bHRpVmlldyAmJiB0YWJsZS5jb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3Rcblx0XHRcdFx0PyBjb252ZXJ0ZXJDb250ZXh0LmdldFJlbGF0aXZlQW5ub3RhdGlvblBhdGgoXG5cdFx0XHRcdFx0XHR0YWJsZS5jb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QuZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKClcblx0XHRcdFx0ICApXG5cdFx0XHRcdDogZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCh0YWJsZS5jb250ZXh0T2JqZWN0UGF0aCkpIGFzIHN0cmluZyxcblx0XHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHR7XG5cdFx0XHRcdGlzQ29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbnQ6IHRhYmxlLnVzZUNvbmRlbnNlZExheW91dCxcblx0XHRcdFx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRcdGlzTWFjcm9Pck11bHRpcGxlVmlldzogdGFibGUuaW5NdWx0aVZpZXcgPz8gdHJ1ZVxuXHRcdFx0fVxuXHRcdCk7XG5cblx0XHQvLyB0YWtlIHRoZSAoZmlyc3QpIFRhYmxlIHZpc3VhbGl6YXRpb25cblx0XHRyZXR1cm4gdmlzdWFsaXphdGlvbkRlZmluaXRpb24udmlzdWFsaXphdGlvbnMuZmluZChcblx0XHRcdCh2aXo6IFRhYmxlVmlzdWFsaXphdGlvbiB8IENoYXJ0VmlzdWFsaXphdGlvbikgPT4gdml6LnR5cGUgPT09IFZpc3VhbGl6YXRpb25UeXBlLlRhYmxlXG5cdFx0KSBhcyBUYWJsZVZpc3VhbGl6YXRpb247XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgbWFuaWZlc3QgYWN0aW9ucyBmb3IgdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIGJsb2NrXG5cdCAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdCBhY3Rpb25zIGZvciB0aGUgdGFibGVcblx0ICovXG5cdHN0YXRpYyBjcmVhdGVBY3Rpb25zRnJvbU1hbmlmZXN0KHRhYmxlOiBUYWJsZUJsb2NrKTogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RBY3Rpb24+IHtcblx0XHRjb25zdCBhY3Rpb25zU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0QWN0aW9uPiA9IHt9O1xuXHRcdGNvbnN0IGFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdCA9IChhY3Rpb246IEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25PdmVycmlkZSk6IHZvaWQgPT4ge1xuXHRcdFx0Y29uc3Qga2V5ID0gYWN0aW9uLmtleSE7XG5cdFx0XHRhY3Rpb25zU2V0dGluZ3Nba2V5XSA9IHtcblx0XHRcdFx0cG9zaXRpb246IHtcblx0XHRcdFx0XHRwbGFjZW1lbnQ6IChhY3Rpb24ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50LFxuXHRcdFx0XHRcdGFuY2hvcjogYWN0aW9uLmFuY2hvclxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjb21tYW5kOiBhY3Rpb24uY29tbWFuZCxcblx0XHRcdFx0ZW5hYmxlT25TZWxlY3Q6IGFjdGlvbi5lbmFibGVPblNlbGVjdCxcblx0XHRcdFx0dmlzaWJsZTogYWN0aW9uLnZpc2libGUsXG5cdFx0XHRcdGVuYWJsZWQ6IGFjdGlvbi5lbmFibGVkLFxuXHRcdFx0XHRpc0FJT3BlcmF0aW9uOiBhY3Rpb24uaXNBSU9wZXJhdGlvblxuXHRcdFx0fTtcblx0XHRcdGlmIChhY3Rpb24uX3R5cGUgPT09IFwiQWN0aW9uXCIpIHtcblx0XHRcdFx0YWN0aW9uc1NldHRpbmdzW2tleV0gPSB7XG5cdFx0XHRcdFx0Li4uYWN0aW9uc1NldHRpbmdzW2tleV0sXG5cdFx0XHRcdFx0dGV4dDogYWN0aW9uLnRleHQsXG5cdFx0XHRcdFx0X19ub1dyYXA6IHRydWUsXG5cdFx0XHRcdFx0cHJlc3M6IGFjdGlvbi5wcmVzcyxcblx0XHRcdFx0XHRyZXF1aXJlc1NlbGVjdGlvbjogYWN0aW9uLnJlcXVpcmVzU2VsZWN0aW9uXG5cdFx0XHRcdH07XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGFmdGVyRXhlY3V0aW9uID0ge1xuXHRcdFx0XHRlbmFibGVBdXRvU2Nyb2xsOiBhY3Rpb25bXCJlbmFibGVBdXRvU2Nyb2xsXCJdLFxuXHRcdFx0XHRuYXZpZ2F0ZVRvSW5zdGFuY2U6IGFjdGlvbltcIm5hdmlnYXRlVG9JbnN0YW5jZVwiXVxuXHRcdFx0fTtcblx0XHRcdHJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMoYWZ0ZXJFeGVjdXRpb24pO1xuXHRcdFx0YWN0aW9uc1NldHRpbmdzW2tleV0gPSB7XG5cdFx0XHRcdC4uLmFjdGlvbnNTZXR0aW5nc1trZXldLFxuXHRcdFx0XHRhZnRlckV4ZWN1dGlvbjogT2JqZWN0LmVudHJpZXMoYWZ0ZXJFeGVjdXRpb24pLmxlbmd0aCA/IGFmdGVyRXhlY3V0aW9uIDogdW5kZWZpbmVkLFxuXHRcdFx0XHRkZWZhdWx0VmFsdWVzRnVuY3Rpb246IGFjdGlvbi5kZWZhdWx0VmFsdWVzRnVuY3Rpb25cblx0XHRcdH07XG5cdFx0fTtcblx0XHRpZiAodGFibGUuYWN0aW9ucykge1xuXHRcdFx0T2JqZWN0LnZhbHVlcyh0YWJsZS5hY3Rpb25zKS5mb3JFYWNoKChpdGVtKSA9PiB7XG5cdFx0XHRcdGlmIChpdGVtLl90eXBlID09PSBcIkFjdGlvblwiIHx8IGl0ZW0uX3R5cGUgPT09IFwiQWN0aW9uT3ZlcnJpZGVcIikge1xuXHRcdFx0XHRcdGFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdChpdGVtKTtcblx0XHRcdFx0fSBlbHNlIGlmIChpdGVtLl90eXBlID09PSBcIkFjdGlvbkdyb3VwXCIgfHwgaXRlbS5fdHlwZSA9PT0gXCJBY3Rpb25Hcm91cE92ZXJyaWRlXCIpIHtcblx0XHRcdFx0XHQvLyBBY3Rpb25Hcm91cCBvciBBY3Rpb25Hcm91cE92ZXJyaWRlXG5cdFx0XHRcdFx0Y29uc3Qga2V5ID0gaXRlbS5rZXkhO1xuXHRcdFx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRcdFx0cG9zaXRpb246IHtcblx0XHRcdFx0XHRcdFx0cGxhY2VtZW50OiAoaXRlbS5wbGFjZW1lbnQgPz8gXCJBZnRlclwiKSBhcyBQbGFjZW1lbnQsXG5cdFx0XHRcdFx0XHRcdGFuY2hvcjogaXRlbS5hbmNob3Jcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRtZW51OiBpdGVtLmFjdGlvbnMubWFwKChhY3Rpb24pID0+IGFjdGlvbi5rZXkhKVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0aWYgKGl0ZW0uX3R5cGUgPT09IFwiQWN0aW9uR3JvdXBcIikge1xuXHRcdFx0XHRcdFx0YWN0aW9uc1NldHRpbmdzW2tleV0gPSB7XG5cdFx0XHRcdFx0XHRcdC4uLmFjdGlvbnNTZXR0aW5nc1trZXldLFxuXHRcdFx0XHRcdFx0XHR0ZXh0OiBpdGVtLnRleHQsXG5cdFx0XHRcdFx0XHRcdGRlZmF1bHRBY3Rpb246IGl0ZW0uZGVmYXVsdEFjdGlvbixcblx0XHRcdFx0XHRcdFx0X19ub1dyYXA6IHRydWVcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGl0ZW0uYWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcblx0XHRcdFx0XHRcdGFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdChhY3Rpb24pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIGFjdGlvbnNTZXR0aW5ncztcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIHRoZSBtYW5pZmVzdCBjb2x1bW5zIGZvciB0aGUgdGFibGUuXG5cdCAqIEBwYXJhbSB0YWJsZSBUaGUgdGFibGUgYmxvY2tcblx0ICogQHJldHVybnMgVGhlIG1hbmlmZXN0IGFjdGlvbnMgZm9yIHRoZSB0YWJsZVxuXHQgKi9cblx0c3RhdGljIGNyZWF0ZUNvbHVtbnNGb3JNYW5pZmVzdCh0YWJsZTogVGFibGVCbG9jayk6IFJlY29yZDxzdHJpbmcsIEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbiB8IEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbkZvck92ZXJyaWRlPiB7XG5cdFx0Y29uc3QgaXNCbG9ja0NvbHVtbiA9IChibG9jazogQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlKTogYmxvY2sgaXMgQmxvY2tDb2x1bW4gPT4ge1xuXHRcdFx0cmV0dXJuIGJsb2NrLl90eXBlID09PSBcIkNvbHVtblwiO1xuXHRcdH07XG5cblx0XHRjb25zdCBjb2x1bW5TZXR0aW5nczogUmVjb3JkPHN0cmluZywgQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uIHwgQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGU+ID0ge307XG5cblx0XHRpZiAodGFibGUuY29sdW1ucykge1xuXHRcdFx0T2JqZWN0LnZhbHVlcyh0YWJsZS5jb2x1bW5zKS5mb3JFYWNoKChjb2x1bW4pID0+IHtcblx0XHRcdFx0bGV0IGN1c3RvbUNvbHVtbkRlZmluaXRpb246IEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbiB8IChDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZSAmIHsga2V5OiBzdHJpbmcgfSk7XG5cdFx0XHRcdGlmIChpc0Jsb2NrQ29sdW1uKGNvbHVtbikpIHtcblx0XHRcdFx0XHRjdXN0b21Db2x1bW5EZWZpbml0aW9uID0ge1xuXHRcdFx0XHRcdFx0aGVhZGVyOiBjb2x1bW4uaGVhZGVyISxcblx0XHRcdFx0XHRcdHdpZHRoOiBjb2x1bW4ud2lkdGgsXG5cdFx0XHRcdFx0XHRpbXBvcnRhbmNlOiBjb2x1bW4uaW1wb3J0YW5jZSBhcyBJbXBvcnRhbmNlLFxuXHRcdFx0XHRcdFx0aG9yaXpvbnRhbEFsaWduOiBjb2x1bW4uaG9yaXpvbnRhbEFsaWduLFxuXHRcdFx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNvbHVtbi53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcixcblx0XHRcdFx0XHRcdGV4cG9ydFNldHRpbmdzOiBjb2x1bW4uZXhwb3J0U2V0dGluZ3MsXG5cdFx0XHRcdFx0XHRwcm9wZXJ0aWVzOiBjb2x1bW4ucHJvcGVydGllcyxcblx0XHRcdFx0XHRcdHRvb2x0aXA6IGNvbHVtbi50b29sdGlwLFxuXHRcdFx0XHRcdFx0dGVtcGxhdGU6IGNvbHVtbi50ZW1wbGF0ZSEsXG5cdFx0XHRcdFx0XHRhdmFpbGFiaWxpdHk6IGNvbHVtbi5hdmFpbGFiaWxpdHkgYXMgQXZhaWxhYmlsaXR5VHlwZSxcblx0XHRcdFx0XHRcdHJlcXVpcmVkOiBjb2x1bW4ucmVxdWlyZWQsXG5cdFx0XHRcdFx0XHR0eXBlOiBcIlNsb3RcIlxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0XHRcdGtleTogY29sdW1uLmtleSEsXG5cdFx0XHRcdFx0XHR3aWR0aDogY29sdW1uLndpZHRoLFxuXHRcdFx0XHRcdFx0aW1wb3J0YW5jZTogY29sdW1uLmltcG9ydGFuY2UgYXMgSW1wb3J0YW5jZSxcblx0XHRcdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0XHRcdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBjb2x1bW4ud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0XHRcdFx0XHRleHBvcnRTZXR0aW5nczogY29sdW1uLmV4cG9ydFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGVcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmVtb3ZlIGFsbCB1bmRlZmluZWQgcHJvcGVydGllcywgc28gdGhhdCB0aGV5IGRvbid0IGVyYXNlIHdoYXQgaXMgc2V0IGluIHRoZSBtYW5pZmVzdFxuXHRcdFx0XHQvLyAobmVjZXNzYXJ5IGJlY2F1c2UgbWFuaWZlc3QtYmFzZWQgY29sdW1ucyBhcmUgdHJhbnNmb3JtZWQgaW50byBzbG90IGNvbHVtbnMgYW5kIHdlIGRvbid0IGNvcHlcblx0XHRcdFx0Ly8gYWxsIHRoZWlyIHByb3BlcnRpZXMgaW4gdGhlIFhNTClcblx0XHRcdFx0cmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhjdXN0b21Db2x1bW5EZWZpbml0aW9uKTtcblx0XHRcdFx0aWYgKGlzQmxvY2tDb2x1bW4oY29sdW1uKSAmJiAoY29sdW1uLmFuY2hvciB8fCBjb2x1bW4ucGxhY2VtZW50KSkge1xuXHRcdFx0XHRcdGN1c3RvbUNvbHVtbkRlZmluaXRpb24ucG9zaXRpb24gPSB7XG5cdFx0XHRcdFx0XHRhbmNob3I6IGNvbHVtbi5hbmNob3IsXG5cdFx0XHRcdFx0XHRwbGFjZW1lbnQ6IChjb2x1bW4ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbHVtblNldHRpbmdzW2NvbHVtbi5rZXkhXSA9IGN1c3RvbUNvbHVtbkRlZmluaXRpb247XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbHVtblNldHRpbmdzO1xuXHR9XG5cblx0c2V0VXBJZCgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5pZCkge1xuXHRcdFx0Ly8gVGhlIGdpdmVuIElEIHNoYWxsIGJlIGFzc2lnbmVkIHRvIHRoZSBUYWJsZUFQSSBhbmQgbm90IHRvIHRoZSBNREMgVGFibGVcblx0XHRcdHRoaXMuX2FwaUlkID0gdGhpcy5pZDtcblx0XHRcdC8vIEdlbmVyYXRlIHRoZSBjb250ZW50SWQgYmFzZWQgb24gdGhlIElELCBpZiBub3QgcHJvdmlkZWQgKEZQTSBjYXNlKVxuXHRcdFx0dGhpcy5jb250ZW50SWQgPz89IHRoaXMuZ2V0Q29udGVudElkKHRoaXMuaWQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBXZSBnZW5lcmF0ZSB0aGUgSUQgYW5kIHRoZSBjb250ZW50SUQuIER1ZSB0byBjb21wYXRpYmlsaXR5IHJlYXNvbnMgd2Uga2VlcCBpdCBvbiB0aGUgTURDIFRhYmxlIGJ1dCBwcm92aWRlIGFzc2lnblxuXHRcdFx0Ly8gdGhlIElEIHdpdGggYSA6OlRhYmxlIHN1ZmZpeCB0byB0aGUgVGFibGVBUElcblx0XHRcdHRoaXMuaWQgPSB0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmFwaUlkO1xuXHRcdFx0dGhpcy5jb250ZW50SWQgPSB0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmlkO1xuXHRcdFx0dGhpcy5fYXBpSWQgPSB0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmFwaUlkO1xuXHRcdH1cblx0fVxuXG5cdF9nZXRFbnRpdHlUeXBlKCk6IEVudGl0eVR5cGUge1xuXHRcdHJldHVybiAodGhpcy5jb2xsZWN0aW9uRW50aXR5IGFzIEVudGl0eVNldCk/LmVudGl0eVR5cGUgfHwgKHRoaXMuY29sbGVjdGlvbkVudGl0eSBhcyBOYXZpZ2F0aW9uUHJvcGVydHkpPy50YXJnZXRUeXBlO1xuXHR9XG5cblx0Z2V0RW1wdHlSb3dzRW5hYmxlZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IGVuYWJsZWQgPVxuXHRcdFx0dGhpcy5jcmVhdGlvbk1vZGUubmFtZSA9PT0gQ3JlYXRpb25Nb2RlLklubGluZUNyZWF0aW9uUm93c1xuXHRcdFx0XHQ/IHRoaXMudGFibGVEZWZpbml0aW9uLmFjdGlvbnMuZmluZCgoYSkgPT4gYS5rZXkgPT09IFN0YW5kYXJkQWN0aW9uS2V5cy5DcmVhdGUpPy5lbmFibGVkXG5cdFx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdHJldHVybiBlbmFibGVkID09PSBcImZhbHNlXCIgPyB1bmRlZmluZWQgOiBlbmFibGVkO1xuXHR9XG5cblx0Z2V0VGVtcGxhdGUoKTogc3RyaW5nIHtcblx0XHRjb25zdCBlbnRpdHlUeXBlID0gdGhpcy5fZ2V0RW50aXR5VHlwZSgpO1xuXHRcdGNvbnN0IHRhYmxlUHJvcHMgPSB0aGlzIGFzIHVua25vd24gYXMgVGFibGVCbG9ja1Byb3BlcnRpZXM7XG5cdFx0dGFibGVQcm9wcy5vdmVycmlkZVJvd1ByZXNzID0gdGhpcy5yb3dQcmVzcyAhPT0gdW5kZWZpbmVkO1xuXG5cdFx0Y29uc3QgY29sbGVjdGlvbkVudGl0eSA9IHRoaXMuY29udmVydGVkTWV0YWRhdGEucmVzb2x2ZVBhdGgodGFibGVQcm9wcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jb2xsZWN0aW9uKS50YXJnZXQgYXNcblx0XHRcdHwgRW50aXR5U2V0XG5cdFx0XHR8IE5hdmlnYXRpb25Qcm9wZXJ0eTtcblx0XHRjb25zdCBoYW5kbGVyUHJvdmlkZXIgPSBuZXcgVGFibGVFdmVudEhhbmRsZXJQcm92aWRlcih0YWJsZVByb3BzLCB7IGNvbGxlY3Rpb25FbnRpdHksIG1ldGFNb2RlbDogdGhpcy5tZXRhUGF0aC5nZXRNb2RlbCgpIH0pO1xuXG5cdFx0bGV0IGNyZWF0aW9uTW9kZTogVGFibGVDcmVhdGlvbk9wdGlvbnMgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKHRoaXMuY3JlYXRpb25Nb2RlICYmIE9iamVjdC5rZXlzKHRoaXMuY3JlYXRpb25Nb2RlKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRjcmVhdGlvbk1vZGUgPSA8VGFibGVDcmVhdGlvbk9wdGlvbnMgey4uLnRoaXMuY3JlYXRpb25Nb2RlfSAvPjtcblx0XHR9XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PFRhYmxlQVBJXG5cdFx0XHRcdGNvcmU6cmVxdWlyZT1cIntGUE06ICdzYXAvZmUvY29yZS9oZWxwZXJzL0ZQTUhlbHBlcid9XCJcblx0XHRcdFx0YmluZGluZz17YHtpbnRlcm5hbD5jb250cm9scy8ke3RoaXMuY29udGVudElkfX1gfVxuXHRcdFx0XHRpZD17dGhpcy5fYXBpSWR9XG5cdFx0XHRcdGNvbnRlbnRJZD17dGhpcy5jb250ZW50SWR9XG5cdFx0XHRcdHZpc2libGU9e3RoaXMudmlzaWJsZX1cblx0XHRcdFx0aGVhZGVyTGV2ZWw9e3RoaXMuaGVhZGVyTGV2ZWx9XG5cdFx0XHRcdGhlYWRlclN0eWxlPXt0aGlzLmhlYWRlclN0eWxlfVxuXHRcdFx0XHRoZWFkZXJWaXNpYmxlPXt0aGlzLmhlYWRlclZpc2libGV9XG5cdFx0XHRcdHRhYlRpdGxlPXt0aGlzLnRhYlRpdGxlfVxuXHRcdFx0XHRleHBvcnRSZXF1ZXN0U2l6ZT17dGhpcy5leHBvcnRSZXF1ZXN0U2l6ZX1cblx0XHRcdFx0ZGlzYWJsZUNvcHlUb0NsaXBib2FyZD17dGhpcy5kaXNhYmxlQ29weVRvQ2xpcGJvYXJkfVxuXHRcdFx0XHRzY3JvbGxUaHJlc2hvbGQ9e3RoaXMuc2Nyb2xsVGhyZXNob2xkfVxuXHRcdFx0XHR0aHJlc2hvbGQ9e3RoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wudGhyZXNob2xkID8/IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24udGhyZXNob2xkfVxuXHRcdFx0XHRpc1NlYXJjaGFibGU9e3RoaXMuaXNTZWFyY2hhYmxlfVxuXHRcdFx0XHRidXN5PXt0aGlzLmJ1c3l9XG5cdFx0XHRcdGluaXRpYWxMb2FkPXt0aGlzLmluaXRpYWxMb2FkfVxuXHRcdFx0XHRoZWFkZXI9e3RoaXMuaGVhZGVyfVxuXHRcdFx0XHRpc0FscD17dGhpcy5pc0FscH1cblx0XHRcdFx0ZmllbGRNb2RlPXt0aGlzLmZpZWxkTW9kZX1cblx0XHRcdFx0cGVyc29uYWxpemF0aW9uPXt0aGlzLnBlcnNvbmFsaXphdGlvbn1cblx0XHRcdFx0cm93UHJlc3M9e3RoaXMucm93UHJlc3MgYXMgdW5rbm93biBhcyBGdW5jdGlvbn1cblx0XHRcdFx0dmFyaWFudFNhdmVkPXt0aGlzLnZhcmlhbnRTYXZlZCBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHR2YXJpYW50U2VsZWN0ZWQ9e3RoaXMudmFyaWFudFNlbGVjdGVkIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdHNlZ21lbnRlZEJ1dHRvblByZXNzPXt0aGlzLnNlZ21lbnRlZEJ1dHRvblByZXNzIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdHZhcmlhbnRNYW5hZ2VtZW50PXt0aGlzLnZhcmlhbnRNYW5hZ2VtZW50fVxuXHRcdFx0XHRpZ25vcmVkRmllbGRzPXt0aGlzLnRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmlnbm9yZWRGaWVsZHN9IC8vIE5lZWQgdG8gYmUgZnJvbSB0aGUgdGFibGVEZWZpbml0aW9uIHRvIGJlIGluIHBoYXNlIGZvciB0aGUgZ2V0SWdub3JlRmllbGRzXG5cdFx0XHRcdHRhYmxlRGVmaW5pdGlvbj17YHtfcGFnZU1vZGVsPiR7dGhpcy50YWJsZURlZmluaXRpb25Db250ZXh0IS5nZXRQYXRoKCl9fWAgYXMgdW5rbm93biBhcyBUYWJsZVZpc3VhbGl6YXRpb259XG5cdFx0XHRcdGVudGl0eVR5cGVGdWxseVF1YWxpZmllZE5hbWU9e2VudGl0eVR5cGU/LmZ1bGx5UXVhbGlmaWVkTmFtZX1cblx0XHRcdFx0bWV0YVBhdGg9e3RoaXMubWV0YVBhdGg/LmdldFBhdGgoKX1cblx0XHRcdFx0dXNlQmFzaWNTZWFyY2g9e3RoaXMudXNlQmFzaWNTZWFyY2h9XG5cdFx0XHRcdGVuYWJsZUZ1bGxTY3JlZW49e3RoaXMuZW5hYmxlRnVsbFNjcmVlbn1cblx0XHRcdFx0ZW5hYmxlRXhwb3J0PXt0aGlzLmVuYWJsZUV4cG9ydH1cblx0XHRcdFx0ZnJvemVuQ29sdW1uQ291bnQ9e3RoaXMuZnJvemVuQ29sdW1uQ291bnR9XG5cdFx0XHRcdGRpc2FibGVDb2x1bW5GcmVlemU9e3RoaXMuZGlzYWJsZUNvbHVtbkZyZWV6ZX1cblx0XHRcdFx0ZW5hYmxlUGFzdGU9e3RoaXMuZW5hYmxlUGFzdGV9XG5cdFx0XHRcdHJvd0NvdW50TW9kZT17dGhpcy5yb3dDb3VudE1vZGV9XG5cdFx0XHRcdHJvd0NvdW50PXt0aGlzLnJvd0NvdW50fVxuXHRcdFx0XHRjb250ZXh0UGF0aD17dGhpcy5jb250ZXh0UGF0aD8uZ2V0UGF0aCgpfVxuXHRcdFx0XHRzZWxlY3Rpb25DaGFuZ2U9e3RoaXMuc2VsZWN0aW9uQ2hhbmdlIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdGxpc3RCaW5kaW5nQ2hhbmdlPXt0aGlzLmxpc3RCaW5kaW5nQ2hhbmdlIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdHJlYWRPbmx5PXt0aGlzLnJlYWRPbmx5fVxuXHRcdFx0XHRzZWxlY3Rpb25Nb2RlPXt0aGlzLnNlbGVjdGlvbk1vZGV9XG5cdFx0XHRcdHVzZUNvbmRlbnNlZExheW91dD17dGhpcy51c2VDb25kZW5zZWRMYXlvdXR9XG5cdFx0XHRcdHR5cGU9e3RoaXMudHlwZX1cblx0XHRcdFx0ZmlsdGVyQmFyPXt0aGlzLmZpbHRlckJhcn1cblx0XHRcdFx0ZW1wdHlSb3dzRW5hYmxlZD17dGhpcy5nZXRFbXB0eVJvd3NFbmFibGVkKCkgYXMgdW5rbm93biBhcyBib29sZWFufVxuXHRcdFx0XHRlbmFibGVBdXRvQ29sdW1uV2lkdGg9e3RoaXMuZW5hYmxlQXV0b0NvbHVtbldpZHRofVxuXHRcdFx0XHRiZWZvcmVSZWJpbmRUYWJsZT17dGhpcy5iZWZvcmVSZWJpbmRUYWJsZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHR3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcj17dGhpcy53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcn1cblx0XHRcdFx0bW9kZUZvck5vRGF0YU1lc3NhZ2U9e3RoaXMubW9kZUZvck5vRGF0YU1lc3NhZ2V9XG5cdFx0XHRcdGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aD17dGhpcy5hc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGg/LmdldFBhdGgoKX1cblx0XHRcdFx0ZGlzcGxheVNlZ21lbnRlZEJ1dHRvbj17dGhpcy5kaXNwbGF5U2VnbWVudGVkQnV0dG9ufVxuXHRcdFx0XHRlbmFibGVQYXN0aW5nT2ZDb21wdXRlZFByb3BlcnRpZXM9e3RoaXMuZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzfVxuXHRcdFx0XHRlbmFibGVTZWxlY3RBbGw9e3RoaXMuZW5hYmxlU2VsZWN0QWxsfVxuXHRcdFx0XHRpbk11bHRpVmlldz17dGhpcy5pbk11bHRpVmlld31cblx0XHRcdFx0c2VsZWN0aW9uTGltaXQ9e3RoaXMuc2VsZWN0aW9uTGltaXR9XG5cdFx0XHRcdGNvbmRlbnNlZFRhYmxlTGF5b3V0PXt0aGlzLmNvbmRlbnNlZFRhYmxlTGF5b3V0fVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGN1c3RvbURhdGE6IGNyZWF0ZUN1c3RvbURhdGEoXCJ0YWJsZUFQSUxvY2FsSWRcIiwgdGhpcy5fYXBpSWQpLFxuXHRcdFx0XHRcdGNyZWF0aW9uTW9kZSxcblx0XHRcdFx0XHRsYXlvdXREYXRhOiA8RmxleEl0ZW1EYXRhIG1heFdpZHRoPVwiMTAwJVwiIC8+LFxuXHRcdFx0XHRcdGNvbnRlbnQ6IGdldE1EQ1RhYmxlVGVtcGxhdGUodGFibGVQcm9wcywge1xuXHRcdFx0XHRcdFx0bWV0YVBhdGg6IHRoaXMubWV0YVBhdGgsXG5cdFx0XHRcdFx0XHRjb252ZXJ0ZWRNZXRhZGF0YTogdGhpcy5jb252ZXJ0ZWRNZXRhZGF0YSxcblx0XHRcdFx0XHRcdG1ldGFNb2RlbDogdGhpcy5tZXRhTW9kZWwsXG5cdFx0XHRcdFx0XHRoYW5kbGVyUHJvdmlkZXIsXG5cdFx0XHRcdFx0XHRhcHBDb21wb25lbnQ6IHRoaXMuYXBwQ29tcG9uZW50XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0fX1cblx0XHRcdDwvVGFibGVBUEk+XG5cdFx0KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXFHQSxTQUFTQSxnQkFBZ0JBLENBQUNDLElBQWEsRUFBRUMsSUFBWSxFQUFzQjtJQUMxRSxPQUFPRCxJQUFJLENBQUNFLFlBQVksQ0FBQ0QsSUFBSSxDQUFDLElBQUlFLFNBQVM7RUFDNUM7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsU0FBU0MsaUNBQWlDQSxDQUFDSixJQUFhLEVBQUVDLElBQVksRUFBVztJQUNoRixNQUFNSSxjQUFjLEdBQUdMLElBQUksQ0FBQ0UsWUFBWSxDQUFDRCxJQUFJLENBQUM7SUFDOUMsUUFBUUksY0FB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
1521
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzYWZlR2V0QXR0cmlidXRlIiwibm9kZSIsIm5hbWUiLCJnZXRBdHRyaWJ1dGUiLCJ1bmRlZmluZWQiLCJnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUiLCJlbmFibGVtZW50QXR0ciIsInJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMiLCJvYmoiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInBhcnNlQWN0aW9uRnJvbUVsZW1lbnQiLCJhY3Rpb25Ob2RlIiwiY29tbW9uUHJvcGVydGllcyIsImdldENvbW1vbkN1c3RvbUFjdGlvblByb3BlcnRpZXMiLCJsb2NhbE5hbWUiLCJ0ZXh0IiwicHJlc3MiLCJyZXF1aXJlc1NlbGVjdGlvbiIsImVuYWJsZUF1dG9TY3JvbGwiLCJuYXZpZ2F0ZVRvSW5zdGFuY2UiLCJkZWZhdWx0VmFsdWVzRnVuY3Rpb24iLCJhY3Rpb24iLCJyZXBsYWNlIiwiZW5hYmxlZCIsInZpc2libGUiLCJjb21tYW5kIiwiZW5hYmxlT25TZWxlY3QiLCJwbGFjZW1lbnQiLCJhbmNob3IiLCJfdHlwZSIsIk51bWJlciIsInBhcnNlSW50Iiwic2V0Q3VzdG9tQWN0aW9uR3JvdXBQcm9wZXJ0aWVzIiwiYWdncmVnYXRpb25PYmplY3QiLCJpbmNsdWRlcyIsImdldENvbW1vbkN1c3RvbUFjdGlvbnNHcm91cFByb3BlcnRpZXMiLCJkZWZhdWx0QWN0aW9uIiwic2V0Q3VzdG9tTWFzc0VkaXRQcm9wZXJ0aWVzIiwiZWxlbWVudCIsImN1c3RvbUNvbnRlbnQiLCJjaGlsZHJlbiIsIm91dGVySFRNTCIsInZpc2libGVGaWVsZHMiLCJzcGxpdCIsImlnbm9yZWRGaWVsZHMiLCJvcGVyYXRpb25Hcm91cGluZ01vZGUiLCJzZXRRdWlja1ZhcmlhbnRTZWxlY3Rpb24iLCJxdWlja1ZhcmlhbnRTZWxlY3Rpb24iLCJwYXRocyIsInNob3dDb3VudHMiLCJhY3Rpb25zSW5NZW51IiwiQXJyYXkiLCJwcm90b3R5cGUiLCJzbGljZSIsImFwcGx5IiwibWFwIiwic3ViQWN0aW9uIiwic2V0QXR0cmlidXRlIiwiYWN0aW9ucyIsImdldENvbW1vbkN1c3RvbUNvbHVtbnNQcm9wZXJ0aWVzIiwiY2hpbGRDb2x1bW4iLCJ3aWR0aCIsIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyIiwiaW1wb3J0YW5jZSIsImhvcml6b250YWxBbGlnbiIsImF2YWlsYWJpbGl0eSIsImV4cG9ydFNldHRpbmdzIiwicGFyc2VFeHBvcnRTZXR0aW5ncyIsInNldEN1c3RvbUNvbHVtblByb3BlcnRpZXMiLCJoZWFkZXIiLCJ0b29sdGlwIiwidGVtcGxhdGUiLCJnZXRDb2x1bW5UZW1wbGF0ZSIsInByb3BlcnRpZXMiLCJyZXF1aXJlZCIsInBhcnNlU2ltcGxlQWdncmVnYXRpb24iLCJ3cmFwIiwidHlwZSIsInByb3BlcnR5IiwiYWdncmVnYXRpb24iLCJnZXRBZ2dyZWdhdGlvbiIsImkiLCJsZW5ndGgiLCJjaGlsZCIsIml0ZW0iLCJub2RlTmFtZSIsImVuZHNXaXRoIiwiYWdncmVnYXRpb25OYW1lIiwicmVzdWx0IiwiZ2V0QXR0cmlidXRlTmFtZXMiLCJ2YWx1ZSIsIlRhYmxlQmxvY2siLCJfZGVjIiwiZGVmaW5lQnVpbGRpbmdCbG9jayIsIm5hbWVzcGFjZSIsInB1YmxpY05hbWVzcGFjZSIsInJldHVyblR5cGVzIiwiX2RlYzIiLCJibG9ja0F0dHJpYnV0ZSIsInVuZGVybHlpbmdUeXBlIiwiZXhwZWN0ZWRUeXBlcyIsImV4cGVjdGVkQW5ub3RhdGlvbnMiLCJpc1B1YmxpYyIsIl9kZWMzIiwiYmluZGFibGUiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJhbGxvd2VkVmFsdWVzIiwiX2RlYzE2IiwiX2RlYzE3IiwiX2RlYzE4IiwiX2RlYzE5IiwiX2RlYzIwIiwiX2RlYzIxIiwiX2RlYzIyIiwiaXNBc3NvY2lhdGlvbiIsIl9kZWMyMyIsIl9kZWMyNCIsIl9kZWMyNSIsIl9kZWMyNiIsIl9kZWMyNyIsIl9kZWMyOCIsIl9kZWMyOSIsIl9kZWMzMCIsIl9kZWMzMSIsIl9kZWMzMiIsIl9kZWMzMyIsIl9kZWMzNCIsIl9kZWMzNSIsIl9kZWMzNiIsIl9kZWMzNyIsIl9kZWMzOCIsIl9kZWMzOSIsIl9kZWM0MCIsIl9kZWM0MSIsIl9kZWM0MiIsIl9kZWM0MyIsIl9kZWM0NCIsIl9kZWM0NSIsIl9kZWM0NiIsInZhbGlkYXRlIiwiY3JlYXRpb25PcHRpb25zSW5wdXQiLCJFcnJvciIsIl9kZWM0NyIsImFuYWx5dGljYWxDb25maWd1cmF0aW9uIiwiYWdncmVnYXRpb25PbkxlYWZMZXZlbCIsIl9kZWM0OCIsImJsb2NrQWdncmVnYXRpb24iLCJhbHRUeXBlcyIsImhhc1ZpcnR1YWxOb2RlIiwibXVsdGlwbGUiLCJwcm9jZXNzQWdncmVnYXRpb25zIiwiX2RlYzQ5Iiwic2tpcEtleSIsIl9kZWM1MCIsImlzRGVmYXVsdCIsIl9kZWM1MSIsIl9kZWM1MiIsImJsb2NrRXZlbnQiLCJfZGVjNTMiLCJfZGVjNTQiLCJfZGVjNTUiLCJfZGVjNTYiLCJfZGVjNTciLCJfZGVjNTgiLCJfZGVjNTkiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX1RhYmxlQmxvY2siLCJfQnVpbGRpbmdCbG9ja1RlbXBsYXQiLCJwcm9wcyIsImNvbnRyb2xDb25maWd1cmF0aW9uIiwidGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZGVzY3JpcHRvcjgiLCJfZGVzY3JpcHRvcjkiLCJfZGVzY3JpcHRvcjEwIiwiX2Rlc2NyaXB0b3IxMSIsIl9kZXNjcmlwdG9yMTIiLCJfZGVzY3JpcHRvcjEzIiwiX2Rlc2NyaXB0b3IxNCIsIl9kZXNjcmlwdG9yMTUiLCJfZGVzY3JpcHRvcjE2IiwiX2Rlc2NyaXB0b3IxNyIsIl9kZXNjcmlwdG9yMTgiLCJfZGVzY3JpcHRvcjE5IiwiX2Rlc2NyaXB0b3IyMCIsIl9kZXNjcmlwdG9yMjEiLCJfZGVzY3JpcHRvcjIyIiwiX2Rlc2NyaXB0b3IyMyIsIl9kZXNjcmlwdG9yMjQiLCJfZGVzY3JpcHRvcjI1IiwiX2Rlc2NyaXB0b3IyNiIsIl9kZXNjcmlwdG9yMjciLCJfZGVzY3JpcHRvcjI4IiwiX2Rlc2NyaXB0b3IyOSIsIl9kZXNjcmlwdG9yMzAiLCJfZGVzY3JpcHRvcjMxIiwiX2Rlc2NyaXB0b3IzMiIsIl9kZXNjcmlwdG9yMzMiLCJfZGVzY3JpcHRvcjM0IiwiX2Rlc2NyaXB0b3IzNSIsIl9kZXNjcmlwdG9yMzYiLCJfZGVzY3JpcHRvcjM3IiwiX2Rlc2NyaXB0b3IzOCIsIl9kZXNjcmlwdG9yMzkiLCJfZGVzY3JpcHRvcjQwIiwiX2Rlc2NyaXB0b3I0MSIsIl9kZXNjcmlwdG9yNDIiLCJfZGVzY3JpcHRvcjQzIiwiX2Rlc2NyaXB0b3I0NCIsIl9kZXNjcmlwdG9yNDUiLCJfZGVzY3JpcHRvcjQ2IiwiX2Rlc2NyaXB0b3I0NyIsIl9kZXNjcmlwdG9yNDgiLCJfZGVzY3JpcHRvcjQ5IiwiX2Rlc2NyaXB0b3I1MCIsIl9kZXNjcmlwdG9yNTEiLCJfZGVzY3JpcHRvcjUyIiwiX2Rlc2NyaXB0b3I1MyIsIl9kZXNjcmlwdG9yNTQiLCJfZGVzY3JpcHRvcjU1IiwiX2Rlc2NyaXB0b3I1NiIsIl9kZXNjcmlwdG9yNTciLCJfZGVzY3JpcHRvcjU4IiwiY29udGV4dE9iamVjdFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJtZXRhUGF0aCIsImNvbnRleHRQYXRoIiwidGFibGVEZWZpbml0aW9uIiwiY3JlYXRlVGFibGVEZWZpbml0aW9uIiwidGFibGVEZWZpbml0aW9uQ29udGV4dCIsIk1hY3JvQVBJIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJjb252ZXJ0ZWRNZXRhZGF0YSIsImNvbnZlcnRlZFR5cGVzIiwibWV0YU1vZGVsIiwibW9kZWxzIiwiY29sbGVjdGlvbkVudGl0eSIsInJlc29sdmVQYXRoIiwiYW5ub3RhdGlvbiIsImNvbGxlY3Rpb24iLCJ0YXJnZXQiLCJhcHBDb21wb25lbnQiLCJzZXRVcElkIiwiY3JlYXRpb25Nb2RlIiwiY3JlYXRlIiwibW9kZSIsImNyZWF0ZUF0RW5kIiwiYXBwZW5kIiwicmVhZE9ubHkiLCJkaXNwbGF5TW9kZSIsImNvbnRyb2wiLCJUYWJsZUFQSSIsInVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5IiwidXNlQmFzaWNTZWFyY2giLCJmaWx0ZXJCYXIiLCJnZW5lcmF0ZSIsImNvbnRlbnRJZCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJnZXRWaXN1YWxpemF0aW9uUGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiTG9nIiwiZXJyb3IiLCJpc0Fubm90YXRpb25PZlRlcm0iLCJ0YXJnZXRPYmplY3QiLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwidmlzdWFsaXphdGlvbnMiLCJnZXRWaXN1YWxpemF0aW9uc0Zyb21Bbm5vdGF0aW9uIiwidGVybSIsImxpbmVJdGVtVml6IiwiZmluZCIsInZpeiIsInZpc3VhbGl6YXRpb24iLCJhbm5vdGF0aW9uUGF0aCIsIl9wcm90byIsImdldFRhYmxlU2V0dGluZ3MiLCJ0YWJsZVNldHRpbmdzIiwiYWRkU2V0dGluZyIsImVuYWJsZUV4cG9ydCIsInNlbGVjdGlvbkxpbWl0IiwiY29uZGVuc2VkVGFibGVMYXlvdXQiLCJleHBvcnRSZXF1ZXN0U2l6ZSIsImZyb3plbkNvbHVtbkNvdW50IiwiZGlzYWJsZUNvbHVtbkZyZWV6ZSIsInJvd0NvdW50TW9kZSIsInJvd0NvdW50IiwiZW5hYmxlRnVsbFNjcmVlbiIsImVuYWJsZVNlbGVjdEFsbCIsImVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllcyIsImVuYWJsZVBhc3RlIiwiZGlzYWJsZUNvcHlUb0NsaXBib2FyZCIsInNjcm9sbFRocmVzaG9sZCIsInRocmVzaG9sZCIsInBvcGluTGF5b3V0Iiwic2VsZWN0aW9uTW9kZSIsInF1aWNrRmlsdGVycyIsInBhdGgiLCJjcmVhdGlvbkZpZWxkcyIsImlubGluZUNyZWF0aW9uUm93c0hpZGRlbkluRWRpdE1vZGUiLCJvdXRib3VuZCIsImVudHJpZXMiLCJtYXNzRWRpdCIsImVuYWJsZU1hc3NFZGl0IiwiY29uZmlndXJhdGlvbiIsImpvaW4iLCJ0YWJsZSIsImluaXRpYWxDb252ZXJ0ZXJDb250ZXh0IiwiZ2V0Q29udmVydGVyQ29udGV4dCIsImdldFBhdGgiLCJ2aXN1YWxpemF0aW9uUGF0aCIsImV4dHJhTWFuaWZlc3RTZXR0aW5ncyIsImNyZWF0ZUFjdGlvbnNGcm9tTWFuaWZlc3QiLCJjb2x1bW5zIiwiY3JlYXRlQ29sdW1uc0Zvck1hbmlmZXN0IiwiZXh0cmFQYXJhbXMiLCJhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudCIsImFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aCIsInN2T2JqZWN0UGF0aCIsInZpc3VhbGl6YXRpb25EZWZpbml0aW9uIiwiZ2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uIiwiaW5NdWx0aVZpZXciLCJnZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiZ2V0RW50aXR5VHlwZSIsImlzQ29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbnQiLCJ1c2VDb25kZW5zZWRMYXlvdXQiLCJpc01hY3JvT3JNdWx0aXBsZVZpZXciLCJWaXN1YWxpemF0aW9uVHlwZSIsIlRhYmxlIiwiYWN0aW9uc1NldHRpbmdzIiwiYWRkQWN0aW9uVG9FeHRyYU1hbmlmZXN0IiwicG9zaXRpb24iLCJpc0FJT3BlcmF0aW9uIiwicHJpb3JpdHkiLCJncm91cCIsIl9fbm9XcmFwIiwiYWZ0ZXJFeGVjdXRpb24iLCJ2YWx1ZXMiLCJtZW51IiwiaXNCbG9ja0NvbHVtbiIsImJsb2NrIiwiY29sdW1uU2V0dGluZ3MiLCJjb2x1bW4iLCJjdXN0b21Db2x1bW5EZWZpbml0aW9uIiwiaWQiLCJfYXBpSWQiLCJnZXRDb250ZW50SWQiLCJhcGlJZCIsIl9nZXRFbnRpdHlUeXBlIiwiZW50aXR5VHlwZSIsInRhcmdldFR5cGUiLCJnZXRFbXB0eVJvd3NFbmFibGVkIiwiQ3JlYXRpb25Nb2RlIiwiSW5saW5lQ3JlYXRpb25Sb3dzIiwiYSIsIlN0YW5kYXJkQWN0aW9uS2V5cyIsIkNyZWF0ZSIsImdldFRlbXBsYXRlIiwidGFibGVQcm9wcyIsIm92ZXJyaWRlUm93UHJlc3MiLCJyb3dQcmVzcyIsImhhbmRsZXJQcm92aWRlciIsIlRhYmxlRXZlbnRIYW5kbGVyUHJvdmlkZXIiLCJnZXRNb2RlbCIsIl9qc3giLCJUYWJsZUNyZWF0aW9uT3B0aW9ucyIsImJpbmRpbmciLCJoZWFkZXJMZXZlbCIsImhlYWRlclN0eWxlIiwiaGVhZGVyVmlzaWJsZSIsInRhYlRpdGxlIiwiaXNTZWFyY2hhYmxlIiwiYnVzeSIsImluaXRpYWxMb2FkIiwiaXNBbHAiLCJmaWVsZE1vZGUiLCJwZXJzb25hbGl6YXRpb24iLCJ2YXJpYW50U2F2ZWQiLCJ2YXJpYW50U2VsZWN0ZWQiLCJzZWdtZW50ZWRCdXR0b25QcmVzcyIsInZhcmlhbnRNYW5hZ2VtZW50IiwiZW50aXR5VHlwZUZ1bGx5UXVhbGlmaWVkTmFtZSIsInNlbGVjdGlvbkNoYW5nZSIsImxpc3RCaW5kaW5nQ2hhbmdlIiwiZW1wdHlSb3dzRW5hYmxlZCIsImVuYWJsZUF1dG9Db2x1bW5XaWR0aCIsImJlZm9yZVJlYmluZFRhYmxlIiwibW9kZUZvck5vRGF0YU1lc3NhZ2UiLCJkaXNwbGF5U2VnbWVudGVkQnV0dG9uIiwiY3VzdG9tRGF0YSIsImNyZWF0ZUN1c3RvbURhdGEiLCJsYXlvdXREYXRhIiwiRmxleEl0ZW1EYXRhIiwibWF4V2lkdGgiLCJjb250ZW50IiwiZ2V0TURDVGFibGVUZW1wbGF0ZSIsIkJ1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZSIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVGFibGUuYmxvY2sudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29udmVydGVkTWV0YWRhdGEsIEVudGl0eVNldCwgRW50aXR5VHlwZSwgTmF2aWdhdGlvblByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdExpbmVJdGVtLFxuXHRQcmVzZW50YXRpb25WYXJpYW50LFxuXHRTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50LFxuXHRTZWxlY3Rpb25WYXJpYW50LFxuXHRTZWxlY3Rpb25WYXJpYW50VHlwZVxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UZXJtcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHsgdHlwZSBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHtcblx0YmxvY2tBZ2dyZWdhdGlvbixcblx0YmxvY2tBdHRyaWJ1dGUsXG5cdGJsb2NrRXZlbnQsXG5cdGRlZmluZUJ1aWxkaW5nQmxvY2tcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0ZVByb2Nlc3NvclwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2VcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUge1xuXHRBdmFpbGFiaWxpdHlUeXBlLFxuXHRDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4sXG5cdEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbkZvck92ZXJyaWRlLFxuXHRIb3Jpem9udGFsQWxpZ24sXG5cdEltcG9ydGFuY2UsXG5cdE1hbmlmZXN0QWN0aW9uLFxuXHRUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBDcmVhdGlvbk1vZGUsIFZpc3VhbGl6YXRpb25UeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IFBhZ2VDb250ZXh0UGF0aFRhcmdldCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IENoYXJ0VmlzdWFsaXphdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyBWaXN1YWxpemF0aW9uQW5kUGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHtcblx0Z2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uLFxuXHRnZXRWaXN1YWxpemF0aW9uc0Zyb21Bbm5vdGF0aW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBDcmVhdGVCZWhhdmlvciwgVGFibGVUeXBlLCBUYWJsZVZpc3VhbGl6YXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vVGFibGVcIjtcbmltcG9ydCB7IFN0YW5kYXJkQWN0aW9uS2V5cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi90YWJsZS9TdGFuZGFyZEFjdGlvbnNcIjtcbmltcG9ydCB7IHR5cGUgUGxhY2VtZW50IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGlzQW5ub3RhdGlvbk9mVGVybSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgTWFjcm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIEFjdGlvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9BY3Rpb25cIjtcbmltcG9ydCB0eXBlIEFjdGlvbkdyb3VwIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL0FjdGlvbkdyb3VwXCI7XG5pbXBvcnQgdHlwZSBDb2x1bW4gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvQ29sdW1uXCI7XG5pbXBvcnQgdHlwZSB7IFRhYmxlQmxvY2tQcm9wZXJ0aWVzIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvTWRjVGFibGVUZW1wbGF0ZVwiO1xuaW1wb3J0IHsgZ2V0TURDVGFibGVUZW1wbGF0ZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL01kY1RhYmxlVGVtcGxhdGVcIjtcbmltcG9ydCBUYWJsZUFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZUFQSVwiO1xuaW1wb3J0IFRhYmxlQ3JlYXRpb25PcHRpb25zIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlQ3JlYXRpb25PcHRpb25zXCI7XG5pbXBvcnQgRmxleEl0ZW1EYXRhIGZyb20gXCJzYXAvbS9GbGV4SXRlbURhdGFcIjtcbmltcG9ydCB0eXBlIHsgT3ZlcmZsb3dUb29sYmFyUHJpb3JpdHkgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IHsgdHlwZSBUaXRsZUxldmVsIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgeyBjcmVhdGVDdXN0b21EYXRhIH0gZnJvbSBcIi4uL1RTWFV0aWxzXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Hcm91cE92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbkdyb3VwT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIEFjdGlvbk92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbk92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBBbmFseXRpY2FsQ29uZmlndXJhdGlvbiBmcm9tIFwiLi9BbmFseXRpY2FsQ29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHR5cGUgQ29sdW1uT3ZlcnJpZGUgZnJvbSBcIi4vQ29sdW1uT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIE1hc3NFZGl0IGZyb20gXCIuL01hc3NFZGl0XCI7XG5pbXBvcnQgdHlwZSBRdWlja1ZhcmlhbnRTZWxlY3Rpb24gZnJvbSBcIi4vUXVpY2tWYXJpYW50U2VsZWN0aW9uXCI7XG5pbXBvcnQgVGFibGVFdmVudEhhbmRsZXJQcm92aWRlciBmcm9tIFwiLi9UYWJsZUV2ZW50SGFuZGxlclByb3ZpZGVyXCI7XG5cbnR5cGUgQmxvY2tDb2x1bW4gPSBQYXJ0aWFsPE9taXQ8Q29sdW1uLCBcInRlbXBsYXRlXCIgfCBcImV4cG9ydFNldHRpbmdzXCI+PiAmIHtcblx0dGVtcGxhdGU/OiBzdHJpbmc7XG5cdGV4cG9ydFNldHRpbmdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuPjtcblx0X3R5cGU6IFwiQ29sdW1uXCI7XG59O1xuXG50eXBlIEJsb2NrQ29sdW1uT3ZlcnJpZGUgPSBQYXJ0aWFsPE9taXQ8Q29sdW1uT3ZlcnJpZGUsIFwiZXhwb3J0U2V0dGluZ3NcIj4+ICYge1xuXHRleHBvcnRTZXR0aW5ncz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdIHwgYm9vbGVhbj47XG5cdF90eXBlOiBcIkNvbHVtbk92ZXJyaWRlXCI7XG59O1xudHlwZSBCbG9ja01hc3NFZGl0ID0gUGFydGlhbDxPbWl0PE1hc3NFZGl0LCBcImN1c3RvbUNvbnRlbnRcIj4+ICYgeyBjdXN0b21Db250ZW50Pzogc3RyaW5nOyBrZXk6IHN0cmluZyB9O1xudHlwZSBCbG9ja1F1aWNrVmFyaWFudFNlbGVjdGlvbiA9IFByb3BlcnRpZXNPZjxRdWlja1ZhcmlhbnRTZWxlY3Rpb24+ICYgeyBrZXk6IHN0cmluZyB9O1xudHlwZSBCbG9ja0FjdGlvbiA9IFByb3BlcnRpZXNPZjxPbWl0PEFjdGlvbiwgXCJwcmVzc1wiPj4gJiB7IF90eXBlOiBcIkFjdGlvblwiOyBwcmVzczogc3RyaW5nIH07XG50eXBlIEJsb2NrQWN0aW9uR3JvdXAgPSBQcm9wZXJ0aWVzT2Y8T21pdDxBY3Rpb25Hcm91cCwgXCJhY3Rpb25zXCI+PiAmIHtcblx0X3R5cGU6IFwiQWN0aW9uR3JvdXBcIjtcblx0YWN0aW9uczogKEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25PdmVycmlkZSlbXTtcbn07XG50eXBlIEJsb2NrQWN0aW9uT3ZlcnJpZGUgPSBQcm9wZXJ0aWVzT2Y8QWN0aW9uT3ZlcnJpZGU+ICYgeyBfdHlwZTogXCJBY3Rpb25PdmVycmlkZVwiIH07XG50eXBlIEJsb2NrQWN0aW9uR3JvdXBPdmVycmlkZSA9IFByb3BlcnRpZXNPZjxPbWl0PEFjdGlvbkdyb3VwT3ZlcnJpZGUsIFwiYWN0aW9uc1wiPj4gJiB7XG5cdF90eXBlOiBcIkFjdGlvbkdyb3VwT3ZlcnJpZGVcIjtcblx0YWN0aW9uczogKEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25PdmVycmlkZSlbXTtcbn07XG50eXBlIENvbW1vbkN1c3RvbUFjdGlvbiA9IHtcblx0a2V5OiBzdHJpbmc7XG5cdGVuYWJsZWQ6IGJvb2xlYW47XG5cdHZpc2libGU6IGJvb2xlYW47XG5cdGNvbW1hbmQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0ZW5hYmxlT25TZWxlY3Q6IFwic2luZ2xlXCIgfCBcIm11bHRpXCIgfCB1bmRlZmluZWQ7XG5cdHBsYWNlbWVudDogXCJCZWZvcmVcIiB8IFwiQWZ0ZXJcIiB8IHVuZGVmaW5lZDtcblx0YW5jaG9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGlzQUlPcGVyYXRpb24/OiBib29sZWFuO1xuXHRwcmlvcml0eT86IE92ZXJmbG93VG9vbGJhclByaW9yaXR5O1xuXHRncm91cD86IG51bWJlcjtcblx0X3R5cGU6IFwiQWN0aW9uXCIgfCBcIkFjdGlvbk92ZXJyaWRlXCI7XG59O1xuZnVuY3Rpb24gc2FmZUdldEF0dHJpYnV0ZShub2RlOiBFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gbm9kZS5nZXRBdHRyaWJ1dGUobmFtZSkgPz8gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGR5bmFtaWMgQm9vbGVhbiB2YWx1ZSBvZiBhbiBhdHRyaWJ1dGUuXG4gKiBAcGFyYW0gbm9kZSBUaGUgbm9kZSB0byBnZXQgdGhlIGF0dHJpYnV0ZSBmcm9tXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlXG4gKiBAcmV0dXJucyBUaGUgQm9vbGVhbiB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlXG4gKi9cbmZ1bmN0aW9uIGdldER5bmFtaWNCb29sZWFuVmFsdWVPZkF0dHJpYnV0ZShub2RlOiBFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcblx0Y29uc3QgZW5hYmxlbWVudEF0dHIgPSBub2RlLmdldEF0dHJpYnV0ZShuYW1lKTtcblx0c3dpdGNoIChlbmFibGVtZW50QXR0cikge1xuXHRcdGNhc2UgbnVsbDpcblx0XHRjYXNlIFwidHJ1ZVwiOlxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0Y2FzZSBcImZhbHNlXCI6XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiBlbmFibGVtZW50QXR0ciBhcyB1bmtub3duIGFzIGJvb2xlYW47IC8vIFRvIG1hbmFnZSBiaW5kaW5nIGV4cHJlc3Npb25zXG5cdH1cbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBwcm9wZXJ0aWVzIHdpdGggdGhlIHZhbHVlIG9mIHVuZGVmaW5lZCBmcm9tIHRoZSBvYmplY3QuXG4gKiBAcGFyYW0gb2JqIFRoZSBvYmplY3QgdG8gcmVtb3ZlIHRoZSB1bmRlZmluZWQgcHJvcGVydGllcyBmcm9tXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQge1xuXHRPYmplY3Qua2V5cyhvYmopLmZvckVhY2goKGtleSkgPT4ge1xuXHRcdGlmIChvYmpba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRkZWxldGUgb2JqW2tleV07XG5cdFx0fVxuXHR9KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBhY3Rpb24gcHJvcGVydGllcyBmcm9tIGFuIFhNTCBub2RlLlxuICogQHBhcmFtIGFjdGlvbk5vZGUgVGhlIGFjdGlvbiBub2RlXG4gKiBAcmV0dXJucyBUaGUgYWN0aW9uIHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gcGFyc2VBY3Rpb25Gcm9tRWxlbWVudChhY3Rpb25Ob2RlOiBFbGVtZW50KTogQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbk92ZXJyaWRlIHtcblx0Y29uc3QgY29tbW9uUHJvcGVydGllcyA9IGdldENvbW1vbkN1c3RvbUFjdGlvblByb3BlcnRpZXMoYWN0aW9uTm9kZSk7XG5cdGlmIChhY3Rpb25Ob2RlLmxvY2FsTmFtZSA9PT0gXCJBY3Rpb25cIikge1xuXHRcdHJldHVybiB7XG5cdFx0XHR0ZXh0OiBhY3Rpb25Ob2RlLmdldEF0dHJpYnV0ZShcInRleHRcIikgPz8gY29tbW9uUHJvcGVydGllcy5rZXksXG5cdFx0XHRwcmVzczogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcInByZXNzXCIpLFxuXHRcdFx0cmVxdWlyZXNTZWxlY3Rpb246IGFjdGlvbk5vZGUuZ2V0QXR0cmlidXRlKFwicmVxdWlyZXNTZWxlY3Rpb25cIikgPT09IFwidHJ1ZVwiLFxuXHRcdFx0Li4uY29tbW9uUHJvcGVydGllc1xuXHRcdH0gYXMgQmxvY2tBY3Rpb247XG5cdH1cblx0cmV0dXJuIHtcblx0XHRlbmFibGVBdXRvU2Nyb2xsOiBnZXREeW5hbWljQm9vbGVhblZhbHVlT2ZBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJlbmFibGVBdXRvU2Nyb2xsXCIpLFxuXHRcdG5hdmlnYXRlVG9JbnN0YW5jZTogZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKGFjdGlvbk5vZGUsIFwibmF2aWdhdGVUb0luc3RhbmNlXCIpLFxuXHRcdGRlZmF1bHRWYWx1ZXNGdW5jdGlvbjogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImRlZmF1bHRWYWx1ZXNGdW5jdGlvblwiKSxcblx0XHQuLi5jb21tb25Qcm9wZXJ0aWVzXG5cdH0gYXMgQmxvY2tBY3Rpb25PdmVycmlkZTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIGNvbW1vbiBjdXN0b20gcHJvcGVydGllcyBvZiB0aGUgYWN0aW9uIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIGFjdGlvbk5vZGUgVGhlIGFjdGlvbiBncm91cCBub2RlXG4gKiBAcmV0dXJucyBUaGUgY29sdW1uIHByb3BlcnRpZXMgZm9yIHRoZSBnaXZlbiBub2RlXG4gKi9cbmZ1bmN0aW9uIGdldENvbW1vbkN1c3RvbUFjdGlvblByb3BlcnRpZXMoYWN0aW9uTm9kZTogRWxlbWVudCk6IENvbW1vbkN1c3RvbUFjdGlvbiB7XG5cdGNvbnN0IGFjdGlvbjogQ29tbW9uQ3VzdG9tQWN0aW9uID0ge1xuXHRcdGtleTogYWN0aW9uTm9kZS5nZXRBdHRyaWJ1dGUoXCJrZXlcIikhLnJlcGxhY2UoXCJJbmxpbmVYTUxfXCIsIFwiXCIpLFxuXHRcdGVuYWJsZWQ6IGdldER5bmFtaWNCb29sZWFuVmFsdWVPZkF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImVuYWJsZWRcIiksXG5cdFx0dmlzaWJsZTogZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKGFjdGlvbk5vZGUsIFwidmlzaWJsZVwiKSxcblx0XHRjb21tYW5kOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiY29tbWFuZFwiKSxcblx0XHRlbmFibGVPblNlbGVjdDogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImVuYWJsZU9uU2VsZWN0XCIpIGFzIFwic2luZ2xlXCIgfCBcIm11bHRpXCIgfCB1bmRlZmluZWQsXG5cdFx0cGxhY2VtZW50OiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwicGxhY2VtZW50XCIpIGFzIFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQsXG5cdFx0YW5jaG9yOiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiYW5jaG9yXCIpLFxuXHRcdF90eXBlOiBhY3Rpb25Ob2RlLmxvY2FsTmFtZSA9PT0gXCJBY3Rpb25cIiA/IFwiQWN0aW9uXCIgOiBcIkFjdGlvbk92ZXJyaWRlXCJcblx0fTtcblx0aWYgKGFjdGlvbk5vZGU/LmdldEF0dHJpYnV0ZShcImlzQUlPcGVyYXRpb25cIikpIHtcblx0XHRhY3Rpb25bXCJpc0FJT3BlcmF0aW9uXCJdID0gZ2V0RHluYW1pY0Jvb2xlYW5WYWx1ZU9mQXR0cmlidXRlKGFjdGlvbk5vZGUsIFwiaXNBSU9wZXJhdGlvblwiKTtcblx0fVxuXG5cdGlmIChhY3Rpb25Ob2RlPy5nZXRBdHRyaWJ1dGUoXCJwcmlvcml0eVwiKSkge1xuXHRcdGFjdGlvbltcInByaW9yaXR5XCJdID0gc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcInByaW9yaXR5XCIpIGFzIE92ZXJmbG93VG9vbGJhclByaW9yaXR5O1xuXHR9XG5cblx0aWYgKGFjdGlvbk5vZGU/LmdldEF0dHJpYnV0ZShcImdyb3VwXCIpKSB7XG5cdFx0YWN0aW9uW1wiZ3JvdXBcIl0gPSBOdW1iZXIucGFyc2VJbnQoc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImdyb3VwXCIpID8/IFwiXCIsIDEwKTtcblx0fVxuXG5cdHJldHVybiBhY3Rpb247XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBhY3Rpb25zIGFuZCBhY3Rpb24gZ3JvdXBzIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIGFjdGlvbk5vZGVcbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbk9iamVjdFxuICogQHJldHVybnMgVGhlIGFjdGlvbiBvciBhY3Rpb24gZ3JvdXAgcHJvcGVydGllcyBmb3IgdGhlIGdpdmVuIG5vZGVcbiAqL1xuZnVuY3Rpb24gc2V0Q3VzdG9tQWN0aW9uR3JvdXBQcm9wZXJ0aWVzKFxuXHRhY3Rpb25Ob2RlOiBFbGVtZW50LFxuXHRhZ2dyZWdhdGlvbk9iamVjdDogQWN0aW9uIHwgQWN0aW9uT3ZlcnJpZGUgfCBBY3Rpb25Hcm91cCB8IEFjdGlvbkdyb3VwT3ZlcnJpZGVcbik6IEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25Hcm91cCB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUgfCBCbG9ja0FjdGlvbkdyb3VwT3ZlcnJpZGUge1xuXHRpZiAoW1wiQWN0aW9uR3JvdXBcIiwgXCJBY3Rpb25Hcm91cE92ZXJyaWRlXCJdLmluY2x1ZGVzKGFjdGlvbk5vZGUubG9jYWxOYW1lKSkge1xuXHRcdGNvbnN0IGNvbW1vblByb3BlcnRpZXMgPSBnZXRDb21tb25DdXN0b21BY3Rpb25zR3JvdXBQcm9wZXJ0aWVzKGFjdGlvbk5vZGUsIGFnZ3JlZ2F0aW9uT2JqZWN0IGFzIEFjdGlvbkdyb3VwIHwgQWN0aW9uR3JvdXBPdmVycmlkZSk7XG5cdFx0aWYgKGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvbkdyb3VwXCIpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHRleHQ6IGFjdGlvbk5vZGUuZ2V0QXR0cmlidXRlKFwidGV4dFwiKSA/PyBjb21tb25Qcm9wZXJ0aWVzLmtleSxcblx0XHRcdFx0ZGVmYXVsdEFjdGlvbjogc2FmZUdldEF0dHJpYnV0ZShhY3Rpb25Ob2RlLCBcImRlZmF1bHRBY3Rpb25cIiksXG5cdFx0XHRcdC4uLmNvbW1vblByb3BlcnRpZXNcblx0XHRcdH0gYXMgQmxvY2tBY3Rpb25Hcm91cDtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbW1vblByb3BlcnRpZXMgYXMgQmxvY2tBY3Rpb25Hcm91cE92ZXJyaWRlO1xuXHR9XG5cblx0Ly9BY3Rpb24gb3IgQWN0aW9uT3ZlcnJpZGVcblx0cmV0dXJuIHBhcnNlQWN0aW9uRnJvbUVsZW1lbnQoYWN0aW9uTm9kZSk7XG59XG5cbmNvbnN0IHNldEN1c3RvbU1hc3NFZGl0UHJvcGVydGllcyA9IGZ1bmN0aW9uIChlbGVtZW50OiBFbGVtZW50KTogQmxvY2tNYXNzRWRpdCB7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBcImNvbmZpZ3VyYXRpb25cIixcblx0XHRjdXN0b21Db250ZW50OiBlbGVtZW50LmNoaWxkcmVuWzBdPy5vdXRlckhUTUwsXG5cdFx0dmlzaWJsZUZpZWxkczogZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJ2aXNpYmxlRmllbGRzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0aWdub3JlZEZpZWxkczogZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJpZ25vcmVkRmllbGRzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0b3BlcmF0aW9uR3JvdXBpbmdNb2RlOiAoZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJvcGVyYXRpb25Hcm91cGluZ01vZGVcIikgPz8gdW5kZWZpbmVkKSBhcyBcIkNoYW5nZVNldFwiIHwgXCJJc29sYXRlZFwiIHwgdW5kZWZpbmVkXG5cdH07XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgcXVpY2tWYXJpYW50U2VsZWN0aW9uIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIHF1aWNrVmFyaWFudFNlbGVjdGlvbiBUaGUgWE1MIG5vZGUgY29udGFpbmluZyB0aGUgcXVpY2tWYXJpYW50U2VsZWN0aW9uXG4gKiBAcmV0dXJucyBUaGUgUXVpY2tWYXJpYW50U2VsZWN0aW9uIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5jb25zdCBzZXRRdWlja1ZhcmlhbnRTZWxlY3Rpb24gPSBmdW5jdGlvbiAocXVpY2tWYXJpYW50U2VsZWN0aW9uOiBFbGVtZW50KTogQmxvY2tRdWlja1ZhcmlhbnRTZWxlY3Rpb24ge1xuXHRyZXR1cm4ge1xuXHRcdGtleTogXCJxdWlja0ZpbHRlcnNcIixcblx0XHRwYXRoczogcXVpY2tWYXJpYW50U2VsZWN0aW9uLmdldEF0dHJpYnV0ZShcInBhdGhzXCIpPy5zcGxpdChcIixcIiksXG5cdFx0c2hvd0NvdW50czogcXVpY2tWYXJpYW50U2VsZWN0aW9uLmdldEF0dHJpYnV0ZShcInNob3dDb3VudHNcIikgPT09IFwidHJ1ZVwiXG5cdH07XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgY29tbW9uIGN1c3RvbSBwcm9wZXJ0aWVzIG9mIHRoZSBhY3Rpb24gZ3JvdXBzIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIGFjdGlvbk5vZGUgVGhlIGFjdGlvbiBncm91cCBub2RlXG4gKiBAcGFyYW0gYWdncmVnYXRpb25PYmplY3QgVGhlIGFnZ3JlZ2F0aW9uIG9iamVjdFxuICogQHJldHVybnMgVGhlIGNvbHVtbiBwcm9wZXJ0aWVzIGZvciB0aGUgZ2l2ZW4gbm9kZVxuICovXG5mdW5jdGlvbiBnZXRDb21tb25DdXN0b21BY3Rpb25zR3JvdXBQcm9wZXJ0aWVzKFxuXHRhY3Rpb25Ob2RlOiBFbGVtZW50LFxuXHRhZ2dyZWdhdGlvbk9iamVjdDogQWN0aW9uR3JvdXAgfCBBY3Rpb25Hcm91cE92ZXJyaWRlXG4pOiB7XG5cdGtleTogc3RyaW5nO1xuXHRhY3Rpb25zOiAoQmxvY2tBY3Rpb24gfCBCbG9ja0FjdGlvbk92ZXJyaWRlKVtdO1xuXHRhbmNob3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0cGxhY2VtZW50OiBcIkJlZm9yZVwiIHwgXCJBZnRlclwiIHwgdW5kZWZpbmVkO1xuXHRfdHlwZTogXCJBY3Rpb25Hcm91cFwiIHwgXCJBY3Rpb25Hcm91cE92ZXJyaWRlXCI7XG59IHtcblx0Y29uc3QgYWN0aW9uc0luTWVudSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShhY3Rpb25Ob2RlLmNoaWxkcmVuKS5tYXAoKHN1YkFjdGlvbjogRWxlbWVudCkgPT4ge1xuXHRcdHJldHVybiBwYXJzZUFjdGlvbkZyb21FbGVtZW50KHN1YkFjdGlvbik7XG5cdH0pO1xuXHRhZ2dyZWdhdGlvbk9iamVjdC5rZXkgPSBhZ2dyZWdhdGlvbk9iamVjdC5rZXkucmVwbGFjZShcIklubGluZVhNTF9cIiwgXCJcIik7XG5cdGFjdGlvbk5vZGUuc2V0QXR0cmlidXRlKFwia2V5XCIsIGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSk7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBhZ2dyZWdhdGlvbk9iamVjdC5rZXksXG5cdFx0YWN0aW9uczogYWN0aW9uc0luTWVudSxcblx0XHRhbmNob3I6IHNhZmVHZXRBdHRyaWJ1dGUoYWN0aW9uTm9kZSwgXCJhbmNob3JcIiksXG5cdFx0cGxhY2VtZW50OiBzYWZlR2V0QXR0cmlidXRlKGFjdGlvbk5vZGUsIFwicGxhY2VtZW50XCIpIGFzIFwiQmVmb3JlXCIgfCBcIkFmdGVyXCIgfCB1bmRlZmluZWQsXG5cdFx0X3R5cGU6IGFjdGlvbk5vZGUubG9jYWxOYW1lID09PSBcIkFjdGlvbkdyb3VwXCIgPyBcIkFjdGlvbkdyb3VwXCIgOiBcIkFjdGlvbkdyb3VwT3ZlcnJpZGVcIlxuXHR9O1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgY29tbW9uIGN1c3RvbSBwcm9wZXJ0aWVzIG9mIHRoZSBjb2x1bW5zIGZyb20gdGhlIFhNTCBub2RlLlxuICogQHBhcmFtIGNoaWxkQ29sdW1uIFRoZSBjb2x1bW4gbm9kZVxuICogQHBhcmFtIGFnZ3JlZ2F0aW9uT2JqZWN0IFRoZSBhZ2dyZWdhdGlvbiBvYmplY3RcbiAqIEByZXR1cm5zIFRoZSBjb2x1bW4gcHJvcGVydGllcyBmb3IgdGhlIGdpdmVuIG5vZGVcbiAqL1xuZnVuY3Rpb24gZ2V0Q29tbW9uQ3VzdG9tQ29sdW1uc1Byb3BlcnRpZXMoXG5cdGNoaWxkQ29sdW1uOiBFbGVtZW50LFxuXHRhZ2dyZWdhdGlvbk9iamVjdDogQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlXG4pOiB7XG5cdGtleTogc3RyaW5nO1xuXHR3aWR0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHR3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblx0aW1wb3J0YW5jZTogSW1wb3J0YW5jZSB8IHVuZGVmaW5lZDtcblx0aG9yaXpvbnRhbEFsaWduOiBIb3Jpem9udGFsQWxpZ24gfCB1bmRlZmluZWQ7XG5cdGF2YWlsYWJpbGl0eTogQXZhaWxhYmlsaXR5VHlwZSB8IHVuZGVmaW5lZDtcblx0cGxhY2VtZW50OiBcIkJlZm9yZVwiIHwgXCJBZnRlclwiIHwgdW5kZWZpbmVkO1xuXHRhbmNob3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0ZXhwb3J0U2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdIHwgYm9vbGVhbj4gfCB1bmRlZmluZWQ7XG59IHtcblx0YWdncmVnYXRpb25PYmplY3Qua2V5ID0gYWdncmVnYXRpb25PYmplY3Qua2V5IS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0Y2hpbGRDb2x1bW4uc2V0QXR0cmlidXRlKFwia2V5XCIsIGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSk7XG5cdHJldHVybiB7XG5cdFx0a2V5OiBhZ2dyZWdhdGlvbk9iamVjdC5rZXksXG5cdFx0d2lkdGg6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwid2lkdGhcIiksXG5cdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXCIpXG5cdFx0XHQ/IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXCIpID09PSBcInRydWVcIlxuXHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0aW1wb3J0YW5jZTogc2FmZUdldEF0dHJpYnV0ZShjaGlsZENvbHVtbiwgXCJpbXBvcnRhbmNlXCIpIGFzIEltcG9ydGFuY2UgfCB1bmRlZmluZWQsXG5cdFx0aG9yaXpvbnRhbEFsaWduOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImhvcml6b250YWxBbGlnblwiKSBhcyBIb3Jpem9udGFsQWxpZ24gfCB1bmRlZmluZWQsXG5cdFx0YXZhaWxhYmlsaXR5OiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImF2YWlsYWJpbGl0eVwiKSBhcyBBdmFpbGFiaWxpdHlUeXBlIHwgdW5kZWZpbmVkLFxuXHRcdHBsYWNlbWVudDogKHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicGxhY2VtZW50XCIpIHx8IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicG9zaXRpb25QbGFjZW1lbnRcIikpIGFzXG5cdFx0XHR8IFwiQmVmb3JlXCJcblx0XHRcdHwgXCJBZnRlclwiXG5cdFx0XHR8IHVuZGVmaW5lZCwgLy8gcG9zaXRpb25QbGFjZW1lbnQgaXMga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblx0XHRhbmNob3I6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwiYW5jaG9yXCIpIHx8IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwicG9zaXRpb25BbmNob3JcIiksIC8vIHBvc2l0aW9uQW5jaG9yIGlzIGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5cdFx0ZXhwb3J0U2V0dGluZ3M6IHBhcnNlRXhwb3J0U2V0dGluZ3MoY2hpbGRDb2x1bW4pXG5cdH07XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBjdXN0b20gY29sdW1ucyBmcm9tIHRoZSBYTUwgbm9kZS5cbiAqIEBwYXJhbSBjaGlsZENvbHVtblxuICogQHBhcmFtIGFnZ3JlZ2F0aW9uT2JqZWN0XG4gKiBAcmV0dXJucyBUSGUgY29sdW1uIHByb3BlcnRpZXMgZm9yIHRoZSBnaXZlbiBub2RlXG4gKi9cbmZ1bmN0aW9uIHNldEN1c3RvbUNvbHVtblByb3BlcnRpZXMoXG5cdGNoaWxkQ29sdW1uOiBFbGVtZW50LFxuXHRhZ2dyZWdhdGlvbk9iamVjdDogQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlXG4pOiBCbG9ja0NvbHVtbiB8IEJsb2NrQ29sdW1uT3ZlcnJpZGUge1xuXHRhZ2dyZWdhdGlvbk9iamVjdC5rZXkgPSBhZ2dyZWdhdGlvbk9iamVjdC5rZXkhLnJlcGxhY2UoXCJJbmxpbmVYTUxfXCIsIFwiXCIpO1xuXHRjaGlsZENvbHVtbi5zZXRBdHRyaWJ1dGUoXCJrZXlcIiwgYWdncmVnYXRpb25PYmplY3Qua2V5KTtcblx0aWYgKGNoaWxkQ29sdW1uLmxvY2FsTmFtZSA9PT0gXCJDb2x1bW5cIikge1xuXHRcdHJldHVybiB7XG5cdFx0XHQuLi5nZXRDb21tb25DdXN0b21Db2x1bW5zUHJvcGVydGllcyhjaGlsZENvbHVtbiwgYWdncmVnYXRpb25PYmplY3QpLFxuXHRcdFx0aGVhZGVyOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcImhlYWRlclwiKSxcblx0XHRcdHRvb2x0aXA6IHNhZmVHZXRBdHRyaWJ1dGUoY2hpbGRDb2x1bW4sIFwidG9vbHRpcFwiKSxcblx0XHRcdHRlbXBsYXRlOiBnZXRDb2x1bW5UZW1wbGF0ZShjaGlsZENvbHVtbiksXG5cdFx0XHRwcm9wZXJ0aWVzOiBzYWZlR2V0QXR0cmlidXRlKGNoaWxkQ29sdW1uLCBcInByb3BlcnRpZXNcIik/LnNwbGl0KFwiLFwiKSxcblx0XHRcdHJlcXVpcmVkOiBjaGlsZENvbHVtbi5nZXRBdHRyaWJ1dGUoXCJyZXF1aXJlZFwiKSA/IGNoaWxkQ29sdW1uLmdldEF0dHJpYnV0ZShcInJlcXVpcmVkXCIpID09PSBcInRydWVcIiA6IHVuZGVmaW5lZCxcblx0XHRcdF90eXBlOiBjaGlsZENvbHVtbi5sb2NhbE5hbWVcblx0XHR9O1xuXHR9XG5cdHJldHVybiB7XG5cdFx0Li4uZ2V0Q29tbW9uQ3VzdG9tQ29sdW1uc1Byb3BlcnRpZXMoY2hpbGRDb2x1bW4sIGFnZ3JlZ2F0aW9uT2JqZWN0KSxcblx0XHRfdHlwZTogXCJDb2x1bW5PdmVycmlkZVwiXG5cdH07XG59XG5cbmNvbnN0IHBhcnNlRXhwb3J0U2V0dGluZ3MgPSAoZWxlbWVudDogRWxlbWVudCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdIHwgYm9vbGVhbj4gfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBleHBvcnRTZXR0aW5ncyA9IHBhcnNlU2ltcGxlQWdncmVnYXRpb24oZWxlbWVudCwgXCJleHBvcnRTZXR0aW5nc1wiKTtcblx0aWYgKCFleHBvcnRTZXR0aW5ncykge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0cmV0dXJuIHtcblx0XHR0ZW1wbGF0ZTogZXhwb3J0U2V0dGluZ3MudGVtcGxhdGUsXG5cdFx0d3JhcDogZXhwb3J0U2V0dGluZ3Mud3JhcCA9PT0gXCJ0cnVlXCIsXG5cdFx0dHlwZTogZXhwb3J0U2V0dGluZ3MudHlwZSxcblx0XHRwcm9wZXJ0eTogZXhwb3J0U2V0dGluZ3MucHJvcGVydHk/LnNwbGl0KFwiLFwiKSxcblx0XHR3aWR0aDogZXhwb3J0U2V0dGluZ3Mud2lkdGhcblx0fTtcbn07XG5cbmNvbnN0IGdldENvbHVtblRlbXBsYXRlID0gKGVsZW1lbnQ6IEVsZW1lbnQpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRsZXQgYWdncmVnYXRpb24gPSBnZXRBZ2dyZWdhdGlvbihlbGVtZW50LCBcInRlbXBsYXRlXCIpO1xuXHRpZiAoIWFnZ3JlZ2F0aW9uKSB7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBjaGlsZCA9IGVsZW1lbnQuY2hpbGRyZW4uaXRlbShpKTtcblx0XHRcdGlmIChjaGlsZCAmJiAhY2hpbGQubm9kZU5hbWUuZW5kc1dpdGgoXCJleHBvcnRTZXR0aW5nc1wiKSkge1xuXHRcdFx0XHRhZ2dyZWdhdGlvbiA9IGNoaWxkO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIGFnZ3JlZ2F0aW9uPy5vdXRlckhUTUwgPz8gZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJ0ZW1wbGF0ZVwiKSA/PyB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBwYXJzZVNpbXBsZUFnZ3JlZ2F0aW9uID0gKGVsZW1lbnQ6IEVsZW1lbnQsIGFnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZCA9PiB7XG5cdGNvbnN0IGFnZ3JlZ2F0aW9uID0gZ2V0QWdncmVnYXRpb24oZWxlbWVudCwgYWdncmVnYXRpb25OYW1lKTtcblx0Y29uc3QgY2hpbGQgPSBhZ2dyZWdhdGlvbj8uY2hpbGRyZW5bMF07XG5cdGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXHRpZiAoIWNoaWxkKSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXHRmb3IgKGNvbnN0IG5hbWUgb2YgY2hpbGQuZ2V0QXR0cmlidXRlTmFtZXMoKSkge1xuXHRcdGNvbnN0IHZhbHVlID0gY2hpbGQuZ2V0QXR0cmlidXRlKG5hbWUpO1xuXHRcdGlmICh2YWx1ZSkge1xuXHRcdFx0cmVzdWx0W25hbWVdID0gdmFsdWU7XG5cdFx0fVxuXHR9XG5cdHJldHVybiByZXN1bHQ7XG59O1xuXG5jb25zdCBnZXRBZ2dyZWdhdGlvbiA9IChlbGVtZW50OiBFbGVtZW50LCBhZ2dyZWdhdGlvbk5hbWU6IHN0cmluZyk6IEVsZW1lbnQgfCB1bmRlZmluZWQgPT4ge1xuXHRsZXQgYWdncmVnYXRpb246IEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuXHRcdGNvbnN0IGNoaWxkID0gZWxlbWVudC5jaGlsZHJlbi5pdGVtKGkpO1xuXHRcdGlmIChjaGlsZD8ubm9kZU5hbWUuZW5kc1dpdGgoYWdncmVnYXRpb25OYW1lKSA9PT0gdHJ1ZSkge1xuXHRcdFx0YWdncmVnYXRpb24gPSBjaGlsZDtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gYWdncmVnYXRpb247XG59O1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIHVzZWQgdG8gY3JlYXRlIGEgdGFibGUgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICogPGJyPlxuICogVXN1YWxseSwgYSBMaW5lSXRlbSwgUHJlc2VudGF0aW9uVmFyaWFudCwgb3IgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCBhbm5vdGF0aW9uIGlzIGV4cGVjdGVkLCBidXQgdGhlIFRhYmxlIGJ1aWxkaW5nIGJsb2NrIGNhbiBhbHNvIGJlIHVzZWQgdG8gZGlzcGxheSBhbiBFbnRpdHlTZXQuXG4gKiA8YnI+XG4gKiBJZiBhIFByZXNlbnRhdGlvblZhcmlhbnQgaXMgc3BlY2lmaWVkLCB0aGVuIGl0IG11c3QgaGF2ZSBVSS5MaW5lSXRlbSBhcyB0aGUgZmlyc3QgcHJvcGVydHkgb2YgdGhlIFZpc3VhbGl6YXRpb25zLlxuICogPGJyPlxuICogSWYgYSBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50IGlzIHNwZWNpZmllZCwgdGhlbiBpdCBtdXN0IGNvbnRhaW4gYSB2YWxpZCBQcmVzZW50YXRpb25WYXJpYW50IHRoYXQgYWxzbyBoYXMgYSBVSS5MaW5lSXRlbSBhcyB0aGUgZmlyc3QgcHJvcGVydHkgb2YgdGhlIFZpc3VhbGl6YXRpb25zLlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpUYWJsZSBpZD1cIk15VGFibGVcIiBtZXRhUGF0aD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqIHtAbGluayBkZW1vOnNhcC9mZS9jb3JlL2ZwbUV4cGxvcmVyL2luZGV4Lmh0bWwjL2J1aWxkaW5nQmxvY2tzL3RhYmxlL3RhYmxlRGVmYXVsdCBPdmVydmlldyBvZiBUYWJsZSBCdWlsZGluZyBCbG9ja3N9XG4gKiBAbWl4ZXMgc2FwLmZlLm1hY3Jvcy50YWJsZS5UYWJsZUFQSVxuICogQGF1Z21lbnRzIHNhcC5mZS5tYWNyb3MuTWFjcm9BUElcbiAqIEBwdWJsaWNcbiAqL1xuQGRlZmluZUJ1aWxkaW5nQmxvY2soe1xuXHRuYW1lOiBcIlRhYmxlXCIsXG5cdG5hbWVzcGFjZTogXCJzYXAuZmUubWFjcm9zLmludGVybmFsXCIsXG5cdHB1YmxpY05hbWVzcGFjZTogXCJzYXAuZmUubWFjcm9zXCIsXG5cdHJldHVyblR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLnRhYmxlLlRhYmxlQVBJXCJdXG59KVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGFibGVCbG9jayBleHRlbmRzIEJ1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZSB7XG5cdC8vICAqKioqKioqKioqKioqKiogUHVibGljICYgUmVxdWlyZWQgQXR0cmlidXRlcyAqKioqKioqKioqKioqKioqKioqKlxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcmVsYXRpdmUgcGF0aCB0byBhIExpbmVJdGVtLCBQcmVzZW50YXRpb25WYXJpYW50IG9yIFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQgaW4gdGhlIG1ldGFtb2RlbCwgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29udGV4dFBhdGguXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdHVuZGVybHlpbmdUeXBlOiBcInN0cmluZ1wiLFxuXHRcdGV4cGVjdGVkVHlwZXM6IFtcIkVudGl0eVNldFwiLCBcIkVudGl0eVR5cGVcIiwgXCJTaW5nbGV0b25cIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIl0sXG5cdFx0ZXhwZWN0ZWRBbm5vdGF0aW9uczogW1xuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiLFxuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5QcmVzZW50YXRpb25WYXJpYW50XCIsXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRcIlxuXHRcdF0sXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSlcblx0bWV0YVBhdGghOiBDb250ZXh0O1xuXG5cdC8vICAqKioqKioqKioqKioqKiogUHVibGljIEF0dHJpYnV0ZXMgKioqKioqKioqKioqKioqKioqKipcblx0LyoqXG5cdCAqIEFuIGV4cHJlc3Npb24gdGhhdCBhbGxvd3MgeW91IHRvIGNvbnRyb2wgdGhlICdidXN5JyBzdGF0ZSBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSwgYmluZGFibGU6IHRydWUgfSlcblx0YnVzeT86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHBhdGggb2YgdGhlIGNvbnRleHQgdXNlZCBpbiB0aGUgY3VycmVudCBwYWdlIG9yIGJsb2NrLlxuXHQgKiBUaGlzIHNldHRpbmcgaXMgZGVmaW5lZCBieSB0aGUgZnJhbWV3b3JrLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHR1bmRlcmx5aW5nVHlwZTogXCJzdHJpbmdcIixcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCJdLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGNvbnRleHRQYXRoPzogQ29udGV4dDtcblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0YWJsZSBhZGFwdHMgdG8gdGhlIGNvbmRlbnNlZCBsYXlvdXQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwdWJsaWMgcmVhZG9ubHkgY29uZGVuc2VkVGFibGVMYXlvdXQ/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB3aGV0aGVyIHRoZSB0YWJsZSBjYW4gYmUgb3BlbmVkIGluIGZ1bGxzY3JlZW4gbW9kZSBvciBub3QuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwdWJsaWMgcmVhZG9ubHkgZW5hYmxlRnVsbFNjcmVlbj86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIERldGVybWluZSB3aGV0aGVyIHRoZSBkYXRhIGNvcGllZCB0byB0aGUgY29tcHV0ZWQgY29sdW1ucyBpcyBzZW50IHRvIHRoZSBiYWNrIGVuZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBDbGVhciBBbGwgYnV0dG9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC5cblx0ICogVG8gZW5hYmxlIHRoZSBDbGVhciBBbGwgYnV0dG9uIGJ5IGRlZmF1bHQsIHlvdSBtdXN0IHNldCB0aGlzIHByb3BlcnR5IHRvIGZhbHNlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSBlbmFibGVTZWxlY3RBbGw/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyBpZiB0aGUgZXhwb3J0IGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRhYmxlIGlzIGVuYWJsZWQgb3Igbm90LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHVibGljIHJlYWRvbmx5IGVuYWJsZUV4cG9ydD86IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIE1heGltdW0gYWxsb3dlZCBudW1iZXIgb2YgcmVjb3JkcyB0byBiZSBleHBvcnRlZCBpbiBvbmUgcmVxdWVzdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJpbnRcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSBleHBvcnRSZXF1ZXN0U2l6ZT86IG51bWJlcjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygcm93cyB0aGF0IGNhbiBiZSBzZWxlY3RlZCBhdCBvbmNlIGluIHRoZSB0YWJsZS5cblx0ICogVGhpcyBwcm9wZXJ0eSBkb2VzIG5vdCBhcHBseSB0byByZXNwb25zaXZlIHRhYmxlcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJpbnRcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25MaW1pdD86IG51bWJlcjtcblxuXHQvKipcblx0ICogTnVtYmVyIG9mIGNvbHVtbnMgdGhhdCBhcmUgZml4ZWQgb24gdGhlIGxlZnQuIE9ubHkgY29sdW1ucyB3aGljaCBhcmUgbm90IGZpeGVkIGNhbiBiZSBzY3JvbGxlZCBob3Jpem9udGFsbHkuXG5cdCAqXG5cdCAqIFRoaXMgcHJvcGVydHkgaXMgbm90IHJlbGV2YW50IGZvciByZXNwb25zaXZlIHRhYmxlc1xuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGZyb3plbkNvbHVtbkNvdW50PzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIG51bWJlciBvZiBmaXhlZCBjb2x1bW5zIGNhbiBiZSBjb25maWd1cmVkIGluIHRoZSBDb2x1bW4gU2V0dGluZ3MgZGlhbG9nLlxuXHQgKlxuXHQgKiBUaGlzIHByb3BlcnR5IGRvZXNuJ3QgYXBwbHkgZm9yIHJlc3BvbnNpdmUgdGFibGVzXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGRpc2FibGVDb2x1bW5GcmVlemU/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBJbmRpY2F0ZXMgaWYgdGhlIGNvbHVtbiBoZWFkZXIgc2hvdWxkIGJlIGEgcGFydCBvZiB0aGUgd2lkdGggY2FsY3VsYXRpb24uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGVmaW5lcyBob3cgdGhlIHRhYmxlIGhhbmRsZXMgdGhlIHZpc2libGUgcm93cy4gRG9lcyBub3QgYXBwbHkgdG8gUmVzcG9uc2l2ZSB0YWJsZXMuXG5cdCAqXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgQXV0b2AsIGBGaXhlZGAsIGFuZCBgSW50ZXJhY3RpdmVgLjxici8+XG5cdCAqIC0gSWYgc2V0IHRvIGBGaXhlZGAsIHRoZSB0YWJsZSBhbHdheXMgaGFzIGFzIG1hbnkgcm93cyBhcyBkZWZpbmVkIGluIHRoZSByb3dDb3VudCBwcm9wZXJ0eS48YnIvPlxuXHQgKiAtIElmIHNldCB0byBgQXV0b2AsIHRoZSBudW1iZXIgb2Ygcm93cyBpcyBjaGFuZ2VkIGJ5IHRoZSB0YWJsZSBhdXRvbWF0aWNhbGx5LiBJdCB3aWxsIHRoZW4gYWRqdXN0IGl0cyByb3cgY291bnQgdG8gdGhlIHNwYWNlIGl0IGlzIGFsbG93ZWQgdG8gY292ZXIgKGxpbWl0ZWQgYnkgdGhlIHN1cnJvdW5kaW5nIGNvbnRhaW5lcikgYnV0IGl0IGNhbm5vdCBoYXZlIGxlc3MgdGhhbiBkZWZpbmVkIGluIHRoZSBgcm93Q291bnRgIHByb3BlcnR5Ljxici8+XG5cdCAqIC0gSWYgc2V0IHRvIGBJbnRlcmFjdGl2ZWAgdGhlIHRhYmxlIGNhbiBoYXZlIGFzIG1hbnkgcm93cyBhcyBkZWZpbmVkIGluIHRoZSByb3dDb3VudCBwcm9wZXJ0eS4gVGhpcyBudW1iZXIgb2Ygcm93cyBjYW4gYmUgbW9kaWZpZWQgYnkgZHJhZ2dpbmcgdGhlIHJlc2l6ZXIgYXZhaWxhYmxlIGluIHRoaXMgbW9kZS48YnIvPlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBhbGxvd2VkVmFsdWVzOiBbXCJBdXRvXCIsIFwiRml4ZWRcIiwgXCJJbnRlcmFjdGl2ZVwiXSwgaXNQdWJsaWM6IHRydWUgfSlcblx0cHJpdmF0ZSByZWFkb25seSByb3dDb3VudE1vZGU/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIE51bWJlciBvZiByb3dzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgdGFibGUuIERvZXMgbm90IGFwcGx5IHRvIHJlc3BvbnNpdmUgdGFibGVzLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImludFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IHJvd0NvdW50PzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyBpZiB0aGUgcGFzdGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdGFibGUgaXMgZW5hYmxlZCBvciBub3QuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IGVuYWJsZVBhc3RlPzogYm9vbGVhbiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyBpZiB0aGUgY29weSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0YWJsZSBpcyBkaXNhYmxlZCBvciBub3QuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRkaXNhYmxlQ29weVRvQ2xpcGJvYXJkPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGVmaW5lcyBob3cgbWFueSBhZGRpdGlvbmFsIGRhdGEgcmVjb3JkcyBhcmUgcmVxdWVzdGVkIGZyb20gdGhlIGJhY2stZW5kIHN5c3RlbSB3aGVuIHRoZSB1c2VyIHNjcm9sbHMgdmVydGljYWxseSBpbiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiaW50XCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHNjcm9sbFRocmVzaG9sZD86IG51bWJlcjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJlY29yZHMgdG8gYmUgaW5pdGlhbGx5IHJlcXVlc3RlZCBmcm9tIHRoZSBiYWNrIGVuZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJpbnRcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0dGhyZXNob2xkPzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBsYXlvdXQgb3B0aW9ucyBvZiB0aGUgdGFibGUgcG9waW5zLiBPbmx5IGFwcGxpZXMgdG8gcmVzcG9uc2l2ZSB0YWJsZXMuXG5cdCAqXG5cdCAqIEFsbG93ZWQgdmFsdWVzIGFyZSBgQmxvY2tgLCBgR3JpZExhcmdlYCwgYW5kIGBHcmlkU21hbGxgLjxici8+XG5cdCAqIC0gYEJsb2NrYDogU2V0cyBhIGJsb2NrIGxheW91dCBmb3IgcmVuZGVyaW5nIHRoZSB0YWJsZSBwb3BpbnMuIFRoZSBlbGVtZW50cyBpbnNpZGUgdGhlIHBvcGluIGNvbnRhaW5lciBhcmUgcmVuZGVyZWQgb25lIGJlbG93IHRoZSBvdGhlci48YnIvPlxuXHQgKiAtIGBHcmlkTGFyZ2VgOiBTZXRzIGEgZ3JpZCBsYXlvdXQgZm9yIHJlbmRlcmluZyB0aGUgdGFibGUgcG9waW5zLiBUaGUgZ3JpZCB3aWR0aCBmb3IgZWFjaCB0YWJsZSBwb3BpbiBpcyBjb21wYXJhdGl2ZWx5IGxhcmdlciB0aGFuIEdyaWRTbWFsbCwgc28gdGhpcyBsYXlvdXQgYWxsb3dzIGxlc3MgY29udGVudCB0byBiZSByZW5kZXJlZCBpbiBhIHNpbmdsZSBwb3BpbiByb3cuPGJyLz5cblx0ICogLSBgR3JpZFNtYWxsYDogU2V0cyBhIGdyaWQgbGF5b3V0IGZvciByZW5kZXJpbmcgdGhlIHRhYmxlIHBvcGlucy4gVGhlIGdyaWQgd2lkdGggZm9yIGVhY2ggdGFibGUgcG9waW4gaXMgc21hbGwsIHNvIHRoaXMgbGF5b3V0IGFsbG93cyBtb3JlIGNvbnRlbnQgdG8gYmUgcmVuZGVyZWQgaW4gYSBzaW5nbGUgcG9waW4gcm93Ljxici8+XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIkJsb2NrXCIsIFwiR3JpZExhcmdlXCIsIFwiR3JpZFNtYWxsXCJdLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRwcml2YXRlIHJlYWRvbmx5IHBvcGluTGF5b3V0Pzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBJRCBvZiB0aGUgRmlsdGVyQmFyIGJ1aWxkaW5nIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlLCBpc0Fzc29jaWF0aW9uOiB0cnVlIH0pXG5cdGZpbHRlckJhcj86IHN0cmluZztcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIHRoZSBoZWFkZXIgdGV4dCB0aGF0IGlzIHNob3duIGluIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aGVhZGVyPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBcImFyaWEtbGV2ZWxcIiBvZiB0aGUgdGFibGUgaGVhZGVyXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInNhcC51aS5jb3JlLlRpdGxlTGV2ZWxcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aGVhZGVyTGV2ZWw/OiBUaXRsZUxldmVsO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyBpZiB0aGUgaGVhZGVyIHRleHQgc2hvdWxkIGJlIHNob3duIG9yIG5vdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGhlYWRlclZpc2libGU/OiBib29sZWFuO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGlkITogc3RyaW5nO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGNvbnRlbnRJZD86IHN0cmluZztcblxuXHQvKipcblx0ICogQWRkaXRpb25uYWwgU2VsZWN0aW9uVmFyaWFudCB0byBiZSBhcHBsaWVkIG9uIHRoZSB0YWJsZSBjb250ZW50LlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0dW5kZXJseWluZ1R5cGU6IFwic3RyaW5nXCIsXG5cdFx0ZXhwZWN0ZWRUeXBlczogW1wiRW50aXR5U2V0XCIsIFwiRW50aXR5VHlwZVwiLCBcIlNpbmdsZXRvblwiLCBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiXSxcblx0XHRleHBlY3RlZEFubm90YXRpb25zOiBbXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25WYXJpYW50XCJdLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aD86IENvbnRleHQ7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgd2hldGhlciB0byBkaXNwbGF5IHRoZSBzZWFyY2ggYWN0aW9uLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aXNTZWFyY2hhYmxlPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQ29udHJvbHMgd2hpY2ggb3B0aW9ucyBzaG91bGQgYmUgZW5hYmxlZCBmb3IgdGhlIHRhYmxlIHBlcnNvbmFsaXphdGlvbiBkaWFsb2cuXG5cdCAqXG5cdCAqIElmIGl0IGlzIHNldCB0byBgdHJ1ZWAsIGFsbCBwb3NzaWJsZSBvcHRpb25zIGZvciB0aGlzIGtpbmQgb2YgdGFibGUgYXJlIGVuYWJsZWQuPGJyLz5cblx0ICogSWYgaXQgaXMgc2V0IHRvIGBmYWxzZWAsIHBlcnNvbmFsaXphdGlvbiBpcyBkaXNhYmxlZC48YnIvPlxuXHQgKiA8YnIvPlxuXHQgKiBZb3UgY2FuIGFsc28gcHJvdmlkZSBhIG1vcmUgZ3JhbnVsYXIgY29udHJvbCBmb3IgdGhlIHBlcnNvbmFsaXphdGlvbiBieSBwcm92aWRpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCB3aXRoIHRoZSBvcHRpb25zIHlvdSB3YW50IHRvIGJlIGF2YWlsYWJsZS48YnIvPlxuXHQgKiBBdmFpbGFibGUgb3B0aW9ucyBhcmU6PGJyLz5cblx0ICogLSBTb3J0PGJyLz5cblx0ICogLSBDb2x1bW48YnIvPlxuXHQgKiAtIEZpbHRlcjxici8+XG5cdCAqIC0gR3JvdXA8YnIvPlxuXHQgKiA8YnIvPlxuXHQgKiBUaGUgR3JvdXAgb3B0aW9uIGlzIG9ubHkgYXBwbGljYWJsZSB0byBhbmFseXRpY2FsIHRhYmxlcyBhbmQgcmVzcG9uc2l2ZSB0YWJsZXMuPGJyLz5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0cGVyc29uYWxpemF0aW9uPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBBbiBleHByZXNzaW9uIHRoYXQgYWxsb3dzIHlvdSB0byBjb250cm9sIHRoZSAncmVhZC1vbmx5JyBzdGF0ZSBvZiB0aGUgdGFibGUuXG5cdCAqXG5cdCAqIElmIHlvdSBkbyBub3Qgc2V0IGFueSBleHByZXNzaW9uLCBTQVAgRmlvcmkgZWxlbWVudHMgaG9va3MgaW50byB0aGUgc3RhbmRhcmQgbGlmZWN5Y2xlIHRvIGRldGVybWluZSB0aGUgY3VycmVudCBzdGF0ZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHJlYWRPbmx5PzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgdHlwZSBvZiB0YWJsZSB0aGF0IHdpbGwgYmUgdXNlZCBieSB0aGUgYnVpbGRpbmcgYmxvY2sgdG8gcmVuZGVyIHRoZSBkYXRhLlxuXHQgKlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYEdyaWRUYWJsZWAsIGBSZXNwb25zaXZlVGFibGVgIGFuZCBgQW5hbHl0aWNhbFRhYmxlYC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUsIGFsbG93ZWRWYWx1ZXM6IFtcIkdyaWRUYWJsZVwiLCBcIlJlc3BvbnNpdmVUYWJsZVwiLCBcIkFuYWx5dGljYWxUYWJsZVwiXSB9KVxuXHRyZWFkb25seSB0eXBlPzogVGFibGVUeXBlO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgdGFibGUgaXMgZGlzcGxheWVkIHdpdGggY29uZGVuc2VkIGxheW91dCAodHJ1ZS9mYWxzZSkuIFRoZSBkZWZhdWx0IHNldHRpbmcgaXMgYGZhbHNlYC5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHR1c2VDb25kZW5zZWRMYXlvdXQ/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBzZWxlY3Rpb24gbW9kZSB0byBiZSB1c2VkIGJ5IHRoZSB0YWJsZS5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZXMgYXJlIGBOb25lYCwgYFNpbmdsZWAsIGBGb3JjZVNpbmdsZWAsIGBNdWx0aWAsIGBGb3JjZU11bHRpYCBvciBgQXV0b2AuXG5cdCAqIElmIHNldCB0byAnU2luZ2xlJywgJ011bHRpJyBvciAnQXV0bycsIFNBUCBGaW9yaSBlbGVtZW50cyBob29rcyBpbnRvIHRoZSBzdGFuZGFyZCBsaWZlY3ljbGUgdG8gZGV0ZXJtaW5lIHRoZSBjb25zaXN0ZW50IHNlbGVjdGlvbiBtb2RlLlxuXHQgKiBJZiBzZXQgdG8gJ0ZvcmNlU2luZ2xlJyBvciAnRm9yY2VNdWx0aScgeW91ciBjaG9pY2Ugd2lsbCBiZSByZXNwZWN0ZWQgYnV0IHRoaXMgbWlnaHQgbm90IHJlc3BlY3QgdGhlIEZpb3JpIGd1aWRlbGluZXMuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlLCBhbGxvd2VkVmFsdWVzOiBbXCJOb25lXCIsIFwiU2luZ2xlXCIsIFwiTXVsdGlcIiwgXCJBdXRvXCIsIFwiRm9yY2VNdWx0aVwiLCBcIkZvcmNlU2luZ2xlXCJdIH0pXG5cdHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0aW9uTW9kZT86IHN0cmluZztcblxuXHQvKipcblx0ICogQ29udHJvbHMgdGhlIGtpbmQgb2YgdmFyaWFudCBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIHRoZSB0YWJsZS5cblx0ICpcblx0ICogQWxsb3dlZCB2YWx1ZSBpcyBgQ29udHJvbGAuPGJyLz5cblx0ICogSWYgc2V0IHdpdGggdmFsdWUgYENvbnRyb2xgLCBhIHZhcmlhbnQgbWFuYWdlbWVudCBjb250cm9sIGlzIHNlZW4gd2l0aGluIHRoZSB0YWJsZSBhbmQgdGhlIHRhYmxlIGlzIGxpbmtlZCB0byB0aGlzLjxici8+XG5cdCAqIElmIG5vdCBzZXQgd2l0aCBhbnkgdmFsdWUsIGNvbnRyb2wgbGV2ZWwgdmFyaWFudCBtYW5hZ2VtZW50IGlzIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlLCBhbGxvd2VkVmFsdWVzOiBbXCJDb250cm9sXCJdIH0pXG5cdHZhcmlhbnRNYW5hZ2VtZW50Pzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBDb21tYS1zZXBhcmF0ZWQgdmFsdWUgb2YgZmllbGRzIHRoYXQgbXVzdCBiZSBpZ25vcmVkIGluIHRoZSBPRGF0YSBtZXRhZGF0YSBieSB0aGUgVGFibGUgYnVpbGRpbmcgYmxvY2suPGJyPlxuXHQgKiBUaGUgdGFibGUgYnVpbGRpbmcgYmxvY2sgaXMgbm90IGdvaW5nIHRvIGNyZWF0ZSBidWlsdC1pbiBjb2x1bW5zIG9yIG9mZmVyIHRhYmxlIHBlcnNvbmFsaXphdGlvbiBmb3IgY29tbWEtc2VwYXJhdGVkIHZhbHVlIG9mIGZpZWxkcyB0aGF0IGFyZSBwcm92aWRlZCBpbiB0aGUgaWdub3JlZGZpZWxkcy48YnI+XG5cdCAqIEFueSBjb2x1bW4gcmVmZXJlbmNpbmcgYW4gaWdub3JlZCBmaWVsZCBpcyB0byBiZSByZW1vdmVkLjxicj5cblx0ICogQHNpbmNlIDEuMTI0LjBcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiwgaXNQdWJsaWM6IHRydWUgfSlcblx0aWdub3JlZEZpZWxkcz86IHN0cmluZztcblxuXHQvLyAgKioqKioqKioqKioqKioqIFByaXZhdGUgQXR0cmlidXRlcyAqKioqKioqKioqKioqKioqKioqKlxuXHRwcml2YXRlIF9hcGlJZD86IHN0cmluZztcblxuXHQvKipcblx0ICogQ2hhbmdlcyB0aGUgc2l6ZSBvZiB0aGUgSWxsdXN0cmF0ZWRNZXNzYWdlIGluIHRoZSB0YWJsZSwgb3IgcmVtb3ZlcyBpdCBjb21wbGV0ZWx5LlxuXHQgKiBBbGxvd2VkIHZhbHVlcyBhcmUgYGlsbHVzdHJhdGVkTWVzc2FnZS1BdXRvYCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1CYXNlYCwgYGlsbHVzdHJhdGVkTWVzc2FnZS1EaWFsb2dgLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLURvdGAsIGBpbGx1c3RyYXRlZE1lc3NhZ2UtU2NlbmVgLCBgaWxsdXN0cmF0ZWRNZXNzYWdlLVNwb3RgIG9yIGB0ZXh0YC5cblx0ICogQHNpbmNlIDEuMTI5LjBcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdGFsbG93ZWRWYWx1ZXM6IFtcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUF1dG9cIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLUJhc2VcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLU1lZGl1bVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtRG90XCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1FeHRyYVNtYWxsXCIsXG5cdFx0XHRcImlsbHVzdHJhdGVkTWVzc2FnZS1TY2VuZVwiLFxuXHRcdFx0XCJpbGx1c3RyYXRlZE1lc3NhZ2UtTGFyZ2VcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLVNwb3RcIixcblx0XHRcdFwiaWxsdXN0cmF0ZWRNZXNzYWdlLVNtYWxsXCIsXG5cdFx0XHRcInRleHRcIlxuXHRcdF1cblx0fSlcblx0bW9kZUZvck5vRGF0YU1lc3NhZ2U/OiBzdHJpbmc7XG5cblx0Ly8gICoqKioqKioqKioqKioqKiBQcml2YXRlIEF0dHJpYnV0ZXMgKioqKioqKioqKioqKioqKioqKipcblx0cHJpdmF0ZSByZWFkb25seSBjb2xsZWN0aW9uRW50aXR5OiBFbnRpdHlTZXQgfCBOYXZpZ2F0aW9uUHJvcGVydHk7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIGhlYWRlciBzdHlsZSBvZiB0aGUgdGFibGUgaGVhZGVyXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInNhcC51aS5jb3JlLlRpdGxlTGV2ZWxcIiB9KVxuXHRoZWFkZXJTdHlsZT86IFRpdGxlTGV2ZWw7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyBpZiB0aGUgY29sdW1uIHdpZHRoIGlzIGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJib29sZWFuXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdGVuYWJsZUF1dG9Db2x1bW5XaWR0aD86IGJvb2xlYW4gPSB0cnVlO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0ZmllbGRNb2RlID0gXCJcIjtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRpc0FscD86IGJvb2xlYW4gPSBmYWxzZTtcblxuXHQvKipcblx0ICogT05MWSBGT1IgUkVTUE9OU0lWRSBUQUJMRTogU2V0dGluZyB0byBkZWZpbmUgdGhlIGNoZWNrYm94IGluIHRoZSBjb2x1bW4gaGVhZGVyOiBBbGxvd2VkIHZhbHVlcyBhcmUgYERlZmF1bHRgIG9yIGBDbGVhckFsbGAuIElmIHNldCB0byBgRGVmYXVsdGAsIHRoZSBzYXAubS5UYWJsZSBjb250cm9sIHJlbmRlcnMgdGhlIFNlbGVjdCBBbGwgY2hlY2tib3gsIG90aGVyd2lzZSB0aGUgRGVzZWxlY3QgQWxsIGJ1dHRvbiBpcyByZW5kZXJlZC5cblx0ICovXG5cdG11bHRpU2VsZWN0TW9kZT86IHN0cmluZztcblxuXHQvKipcblx0ICogVXNlZCBmb3IgYmluZGluZyB0aGUgdGFibGUgdG8gYSBuYXZpZ2F0aW9uIHBhdGguIE9ubHkgdGhlIHBhdGggaXMgdXNlZCBmb3IgYmluZGluZyByb3dzLlxuXHQgKi9cblx0bmF2aWdhdGlvblBhdGg/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFRydWUgaWYgdGhlIHRhYmxlIGlzIGluIGEgTGlzdFJlcG9ydCBtdWx0aSB2aWV3XG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRpbk11bHRpVmlldz86IGJvb2xlYW47XG5cblx0dXNlQmFzaWNTZWFyY2g/OiBib29sZWFuO1xuXG5cdHRhYmxlRGVmaW5pdGlvbjogVGFibGVWaXN1YWxpemF0aW9uOyAvLyBXZSByZXF1aXJlIHRhYmxlRGVmaW5pdGlvbiB0byBiZSB0aGVyZSBldmVuIHRob3VnaCBpdCBpcyBub3QgZm9ybWFsbHkgcmVxdWlyZWRcblxuXHR0YWJsZURlZmluaXRpb25Db250ZXh0PzogQ29udGV4dDtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHRhYlRpdGxlID0gXCJcIjtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHR2aXNpYmxlPzogYm9vbGVhbjtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRkaXNwbGF5U2VnbWVudGVkQnV0dG9uPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQSBzZXQgb2Ygb3B0aW9ucyB0aGF0IGNhbiBiZSBjb25maWd1cmVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwib2JqZWN0XCIsXG5cdFx0dW5kZXJseWluZ1R5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5UYWJsZUNyZWF0aW9uT3B0aW9uc1wiLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdHZhbGlkYXRlOiBmdW5jdGlvbiAoY3JlYXRpb25PcHRpb25zSW5wdXQ6IFRhYmxlQ3JlYXRpb25PcHRpb25zKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGNyZWF0aW9uT3B0aW9uc0lucHV0Lm5hbWUgJiZcblx0XHRcdFx0IVtcIk5ld1BhZ2VcIiwgXCJJbmxpbmVcIiwgXCJJbmxpbmVDcmVhdGlvblJvd3NcIiwgXCJFeHRlcm5hbFwiLCBcIkNyZWF0aW9uRGlhbG9nXCJdLmluY2x1ZGVzKGNyZWF0aW9uT3B0aW9uc0lucHV0Lm5hbWUpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBBbGxvd2VkIHZhbHVlICR7Y3JlYXRpb25PcHRpb25zSW5wdXQubmFtZX0gZm9yIGNyZWF0aW9uTW9kZSBkb2VzIG5vdCBtYXRjaGApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gY3JlYXRpb25PcHRpb25zSW5wdXQ7XG5cdFx0fVxuXHR9KVxuXHRjcmVhdGlvbk1vZGU6IFByb3BlcnRpZXNPZjxUYWJsZUNyZWF0aW9uT3B0aW9ucz4gPSB7fTtcblxuXHQvKipcblx0ICogQSBzZXQgb2Ygb3B0aW9ucyB0aGF0IGNhbiBiZSBjb25maWd1cmVkIHRvIGNvbnRyb2wgdGhlIGFnZ3JlZ2F0aW9uIGJlaGF2aW9yXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwib2JqZWN0XCIsXG5cdFx0dW5kZXJseWluZ1R5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BbmFseXRpY2FsQ29uZmlndXJhdGlvblwiLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdHZhbGlkYXRlOiBmdW5jdGlvbiAoYW5hbHl0aWNhbENvbmZpZ3VyYXRpb246IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB7XG5cdFx0XHRpZiAodHlwZW9mIGFuYWx5dGljYWxDb25maWd1cmF0aW9uLmFnZ3JlZ2F0aW9uT25MZWFmTGV2ZWwgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdFx0YW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCA9IGFuYWx5dGljYWxDb25maWd1cmF0aW9uLmFnZ3JlZ2F0aW9uT25MZWFmTGV2ZWwgPT09IFwidHJ1ZVwiO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGFuYWx5dGljYWxDb25maWd1cmF0aW9uO1xuXHRcdH1cblx0fSlcblx0YW5hbHl0aWNhbENvbmZpZ3VyYXRpb246IFByb3BlcnRpZXNPZjxBbmFseXRpY2FsQ29uZmlndXJhdGlvbj4gPSB7fTtcblxuXHQvKipcblx0ICogQWdncmVnYXRlIGFjdGlvbnMgb2YgdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvblwiLFxuXHRcdGFsdFR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLnRhYmxlLkFjdGlvbkdyb3VwXCIsIFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25PdmVycmlkZVwiLCBcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBPdmVycmlkZVwiXSxcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRoYXNWaXJ0dWFsTm9kZTogdHJ1ZSxcblx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRwcm9jZXNzQWdncmVnYXRpb25zOiBzZXRDdXN0b21BY3Rpb25Hcm91cFByb3BlcnRpZXNcblx0fSlcblx0YWN0aW9ucz86IFJlY29yZDxzdHJpbmcsIEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25Hcm91cCB8IEJsb2NrQWN0aW9uT3ZlcnJpZGUgfCBCbG9ja0FjdGlvbkdyb3VwT3ZlcnJpZGU+O1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGUgbWFzcyBlZGl0IG9mIHRoZSB0YWJsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrQWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZS5NYXNzRWRpdFwiLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdG11bHRpcGxlOiBmYWxzZSxcblx0XHRza2lwS2V5OiB0cnVlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldEN1c3RvbU1hc3NFZGl0UHJvcGVydGllc1xuXHR9KVxuXHRtYXNzRWRpdD86IFJlY29yZDxzdHJpbmcsIEJsb2NrTWFzc0VkaXQ+O1xuXG5cdC8qKlxuXHQgKiBBZ2dyZWdhdGUgY29sdW1ucyBvZiB0aGUgdGFibGUuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0FnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MudGFibGUuQ29sdW1uXCIsXG5cdFx0YWx0VHlwZXM6IFtcInNhcC5mZS5tYWNyb3MudGFibGUuQ29sdW1uT3ZlcnJpZGVcIl0sXG5cdFx0aXNQdWJsaWM6IHRydWUsXG5cdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0aGFzVmlydHVhbE5vZGU6IHRydWUsXG5cdFx0aXNEZWZhdWx0OiB0cnVlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldEN1c3RvbUNvbHVtblByb3BlcnRpZXNcblx0fSlcblx0Y29sdW1ucz86IFJlY29yZDxzdHJpbmcsIEJsb2NrQ29sdW1uIHwgQmxvY2tDb2x1bW5PdmVycmlkZT47XG5cblx0LyoqXG5cdCAqIEFnZ3JlZ2F0ZSBxdWlja1ZhcmlhbnRTZWxlY3Rpb24gb2YgdGhlIHRhYmxlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBZ2dyZWdhdGlvbih7XG5cdFx0dHlwZTogXCJzYXAuZmUubWFjcm9zLnRhYmxlLlF1aWNrVmFyaWFudFNlbGVjdGlvblwiLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdHNraXBLZXk6IHRydWUsXG5cdFx0bXVsdGlwbGU6IGZhbHNlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldFF1aWNrVmFyaWFudFNlbGVjdGlvblxuXHR9KVxuXHRxdWlja1ZhcmlhbnRTZWxlY3Rpb24/OiBSZWNvcmQ8c3RyaW5nLCBCbG9ja1F1aWNrVmFyaWFudFNlbGVjdGlvbj47XG5cblx0Y29udmVydGVkTWV0YWRhdGE6IENvbnZlcnRlZE1ldGFkYXRhO1xuXG5cdGNvbnRleHRPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+O1xuXG5cdC8qKlxuXHQgKiBCZWZvcmUgYSB0YWJsZSByZWJpbmQsIGFuIGV2ZW50IGlzIHRyaWdnZXJlZCB0aGF0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBiaW5kaW5nLlxuXHQgKlxuXHQgKiBUaGUgZXZlbnQgY29udGFpbnMgYSBwYXJhbWV0ZXIsIGBjb2xsZWN0aW9uQmluZGluZ0luZm9gLCB3aGljaCBpcyBhbiBpbnN0YW5jZSBvZiBgQ29sbGVjdGlvbkJpbmRpbmdJbmZvQVBJYC5cblx0ICogVGhpcyBhbGxvd3MgeW91IHRvIG1hbmlwdWxhdGUgdGhlIHRhYmxlJ3MgbGlzdCBiaW5kaW5nLlxuXHQgKiBZb3UgY2FuIHVzZSB0aGlzIGV2ZW50IHRvIGF0dGFjaCBldmVudCBoYW5kbGVycyB0byB0aGUgdGFibGUncyBsaXN0IGJpbmRpbmcuXG5cdCAqIFlvdSBjYW4gdXNlIHRoaXMgZXZlbnQgdG8gYWRkIHNlbGVjdHMsIGFuZCBhZGQgb3IgcmVhZCB0aGUgc29ydGVycyBhbmQgZmlsdGVycy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRwcml2YXRlIHJlYWRvbmx5IGJlZm9yZVJlYmluZFRhYmxlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBjaG9vc2VzIGEgcm93OyB0aGUgZXZlbnQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgd2hpY2ggcm93IGlzIGNob3Nlbi5cblx0ICpcblx0ICogWW91IGNhbiBzZXQgdGhpcyBpbiBvcmRlciB0byBoYW5kbGUgdGhlIG5hdmlnYXRpb24gbWFudWFsbHkuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0cm93UHJlc3M/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gcmVhY3QgdG8gdGhlIGNoYW5nZSBldmVudCBvZiB0aGUgdGFibGUncyBsaXN0IGJpbmRpbmcuXG5cdCAqXG5cdCAqIEludGVybmFsIG9ubHlcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0bGlzdEJpbmRpbmdDaGFuZ2U/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgY2FsbGVkIHdoZW4gdGhlIHVzZXIgY2hvb3NlcyBhbiBvcHRpb24gb2YgdGhlIHNlZ21lbnRlZCBidXR0b24gaW4gdGhlIEFMUCBWaWV3XG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdHNlZ21lbnRlZEJ1dHRvblByZXNzPzogc3RyaW5nO1xuXG5cdEBibG9ja0V2ZW50KClcblx0dmFyaWFudFNhdmVkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCB0cmlnZ2VyZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGluIHRoZSB0YWJsZSBjaGFuZ2VzLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlPzogc3RyaW5nO1xuXG5cdEBibG9ja0V2ZW50KClcblx0dmFyaWFudFNlbGVjdGVkPzogc3RyaW5nO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRpbml0aWFsTG9hZD86IGJvb2xlYW47XG5cblx0cHJpdmF0ZSByZWFkb25seSBhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudDtcblxuXHRwcml2YXRlIHJlYWRvbmx5IG1ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWw7XG5cblx0Y29uc3RydWN0b3IocHJvcHM6IFByb3BlcnRpZXNPZjxUYWJsZUJsb2NrPiwgY29udHJvbENvbmZpZ3VyYXRpb246IHVua25vd24sIHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3M6IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpIHtcblx0XHRzdXBlcihwcm9wcywgY29udHJvbENvbmZpZ3VyYXRpb24sIHRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpO1xuXHRcdGNvbnN0IGNvbnRleHRPYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+KFxuXHRcdFx0dGhpcy5tZXRhUGF0aCxcblx0XHRcdHRoaXMuY29udGV4dFBhdGhcblx0XHQpO1xuXHRcdHRoaXMuY29udGV4dE9iamVjdFBhdGggPSBjb250ZXh0T2JqZWN0UGF0aDtcblxuXHRcdHRoaXMudGFibGVEZWZpbml0aW9uID0gVGFibGVCbG9jay5jcmVhdGVUYWJsZURlZmluaXRpb24odGhpcywgdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyk7XG5cdFx0dGhpcy50YWJsZURlZmluaXRpb25Db250ZXh0ID0gTWFjcm9BUEkuY3JlYXRlQmluZGluZ0NvbnRleHQodGhpcy50YWJsZURlZmluaXRpb24gYXMgb2JqZWN0LCB0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzKTtcblxuXHRcdHRoaXMuY29udmVydGVkTWV0YWRhdGEgPSB0aGlzLmNvbnRleHRPYmplY3RQYXRoLmNvbnZlcnRlZFR5cGVzO1xuXHRcdHRoaXMubWV0YU1vZGVsID0gdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncy5tb2RlbHMubWV0YU1vZGVsO1xuXHRcdHRoaXMuY29sbGVjdGlvbkVudGl0eSA9IHRoaXMuY29udmVydGVkTWV0YWRhdGEucmVzb2x2ZVBhdGgodGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jb2xsZWN0aW9uKS50YXJnZXQgYXMgRW50aXR5U2V0O1xuXHRcdHRoaXMuYXBwQ29tcG9uZW50ID0gdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncy5hcHBDb21wb25lbnQ7XG5cdFx0dGhpcy5zZXRVcElkKCk7XG5cblx0XHR0aGlzLmNyZWF0aW9uTW9kZSA/Pz0ge307XG5cdFx0dGhpcy5jcmVhdGlvbk1vZGUubmFtZSA/Pz0gdGhpcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jcmVhdGUubW9kZSBhcyBUYWJsZUNyZWF0aW9uT3B0aW9uc1tcIm5hbWVcIl07XG5cdFx0dGhpcy5jcmVhdGlvbk1vZGUuY3JlYXRlQXRFbmQgPz89ICh0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmNyZWF0ZSBhcyBDcmVhdGVCZWhhdmlvcikuYXBwZW5kO1xuXHRcdC8vIFNwZWNpYWwgY29kZSBmb3IgcmVhZE9ubHlcblx0XHQvLyByZWFkb25seSA9IGZhbHNlIC0+IEZvcmNlIGVkaXRhYmxlXG5cdFx0Ly8gcmVhZG9ubHkgPSB0cnVlIC0+IEZvcmNlIGRpc3BsYXkgbW9kZVxuXHRcdC8vIHJlYWRvbmx5ID0gdW5kZWZpbmVkIC0+IEJvdW5kIHRvIGVkaXQgZmxvd1xuXHRcdGlmIChcblx0XHRcdHRoaXMucmVhZE9ubHkgPT09IHVuZGVmaW5lZCAmJlxuXHRcdFx0KHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uZGlzcGxheU1vZGUgPT09IHRydWUgfHwgdGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5yZWFkT25seSA9PT0gdHJ1ZSlcblx0XHQpIHtcblx0XHRcdHRoaXMucmVhZE9ubHkgPSB0cnVlO1xuXHRcdH1cblxuXHRcdFRhYmxlQVBJLnVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5KHRoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wuaWdub3JlZEZpZWxkcywgW10sIHRoaXMudGFibGVEZWZpbml0aW9uKTtcblxuXHRcdGxldCB1c2VCYXNpY1NlYXJjaCA9IGZhbHNlO1xuXG5cdFx0Ly8gTm90ZSBmb3IgdGhlICdmaWx0ZXJCYXInIHByb3BlcnR5OlxuXHRcdC8vIDEuIElEIHJlbGF0aXZlIHRvIHRoZSB2aWV3IG9mIHRoZSBUYWJsZS5cblx0XHQvLyAyLiBBYnNvbHV0ZSBJRC5cblx0XHQvLyAzLiBJRCB3b3VsZCBiZSBjb25zaWRlcmVkIGluIGFzc29jaWF0aW9uIHRvIFRhYmxlQVBJJ3MgSUQuXG5cdFx0aWYgKCF0aGlzLmZpbHRlckJhcikge1xuXHRcdFx0Ly8gZmlsdGVyQmFyOiBQdWJsaWMgcHJvcGVydHkgZm9yIGJ1aWxkaW5nIGJsb2Nrc1xuXHRcdFx0Ly8gZmlsdGVyQmFySWQ6IE9ubHkgdXNlZCBhcyBJbnRlcm5hbCBwcml2YXRlIHByb3BlcnR5IGZvciBGRSB0ZW1wbGF0ZXNcblx0XHRcdHRoaXMuZmlsdGVyQmFyID0gZ2VuZXJhdGUoW3RoaXMuY29udGVudElkLCBcIlN0YW5kYXJkQWN0aW9uXCIsIFwiQmFzaWNTZWFyY2hcIl0pO1xuXHRcdFx0dXNlQmFzaWNTZWFyY2ggPSB0cnVlO1xuXHRcdH1cblx0XHQvLyBJbnRlcm5hbCBwcm9wZXJ0aWVzXG5cdFx0dGhpcy51c2VCYXNpY1NlYXJjaCA9IHVzZUJhc2ljU2VhcmNoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGFubm90YXRpb24gcGF0aCBwb2ludGluZyB0byB0aGUgdmlzdWFsaXphdGlvbiBhbm5vdGF0aW9uIChMaW5lSXRlbSkuXG5cdCAqIEBwYXJhbSBjb250ZXh0T2JqZWN0UGF0aCBUaGUgZGF0YW1vZGVsIG9iamVjdCBwYXRoIGZvciB0aGUgdGFibGVcblx0ICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGNvbnZlcnRlciBjb250ZXh0XG5cdCAqIEByZXR1cm5zIFRoZSBhbm5vdGF0aW9uIHBhdGhcblx0ICovXG5cdHN0YXRpYyBnZXRWaXN1YWxpemF0aW9uUGF0aChcblx0XHRjb250ZXh0T2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxMaW5lSXRlbSB8IFByZXNlbnRhdGlvblZhcmlhbnQgfCBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50Pixcblx0XHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cblx0KTogc3RyaW5nIHtcblx0XHRjb25zdCBtZXRhUGF0aCA9IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgoY29udGV4dE9iamVjdFBhdGgpIGFzIHN0cmluZztcblxuXHRcdC8vIGZhbGxiYWNrIHRvIGRlZmF1bHQgTGluZUl0ZW0gaWYgbWV0YXBhdGggaXMgbm90IHNldFxuXHRcdGlmICghbWV0YVBhdGgpIHtcblx0XHRcdExvZy5lcnJvcihgTWlzc2luZyBtZXRhIHBhdGggcGFyYW1ldGVyIGZvciBMaW5lSXRlbWApO1xuXHRcdFx0cmV0dXJuIGBAJHtVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbX1gO1xuXHRcdH1cblxuXHRcdGlmIChpc0Fubm90YXRpb25PZlRlcm08TGluZUl0ZW0+KGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCwgVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW0pKSB7XG5cdFx0XHRyZXR1cm4gbWV0YVBhdGg7IC8vIE1ldGFQYXRoIGlzIGFscmVhZHkgcG9pbnRpbmcgdG8gYSBMaW5lSXRlbVxuXHRcdH1cblx0XHQvL05lZWQgdG8gc3dpdGNoIHRvIHRoZSBjb250ZXh0IHJlbGF0ZWQgdGhlIFBWIG9yIFNQVlxuXHRcdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihtZXRhUGF0aCk7XG5cblx0XHRsZXQgdmlzdWFsaXphdGlvbnM6IFZpc3VhbGl6YXRpb25BbmRQYXRoW10gPSBbXTtcblx0XHRpZiAoXG5cdFx0XHRpc0Fubm90YXRpb25PZlRlcm08U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD4oXG5cdFx0XHRcdGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCxcblx0XHRcdFx0VUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFxuXHRcdFx0KSB8fFxuXHRcdFx0aXNBbm5vdGF0aW9uT2ZUZXJtPFByZXNlbnRhdGlvblZhcmlhbnQ+KGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCwgVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudClcblx0XHQpIHtcblx0XHRcdHZpc3VhbGl6YXRpb25zID0gZ2V0VmlzdWFsaXphdGlvbnNGcm9tQW5ub3RhdGlvbihcblx0XHRcdFx0Y29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LFxuXHRcdFx0XHRtZXRhUGF0aCxcblx0XHRcdFx0cmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dCxcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TG9nLmVycm9yKGBCYWQgbWV0YXBhdGggcGFyYW1ldGVyIGZvciB0YWJsZSA6ICR7Y29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IS50ZXJtfWApO1xuXHRcdH1cblxuXHRcdGNvbnN0IGxpbmVJdGVtVml6ID0gdmlzdWFsaXphdGlvbnMuZmluZCgodml6KSA9PiB7XG5cdFx0XHRyZXR1cm4gdml6LnZpc3VhbGl6YXRpb24udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW07XG5cdFx0fSk7XG5cblx0XHRpZiAobGluZUl0ZW1WaXopIHtcblx0XHRcdHJldHVybiBsaW5lSXRlbVZpei5hbm5vdGF0aW9uUGF0aDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gZmFsbGJhY2sgdG8gZGVmYXVsdCBMaW5lSXRlbSBpZiBhbm5vdGF0aW9uIG1pc3NpbmcgaW4gUFZcblx0XHRcdExvZy5lcnJvcihgQmFkIG1ldGEgcGF0aCBwYXJhbWV0ZXIgZm9yIExpbmVJdGVtOiAke2NvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCEudGVybX1gKTtcblx0XHRcdHJldHVybiBgQCR7VUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW19YDsgLy8gRmFsbGJhY2tcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgYWRkU2V0dGluZyA9ICh0YXJnZXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkID0+IHtcblx0XHRpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGFyZ2V0W2tleV0gPSB2YWx1ZTtcblx0XHR9XG5cdH07XG5cblx0Z2V0VGFibGVTZXR0aW5ncygpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG5cdFx0Y29uc3QgdGFibGVTZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJlbmFibGVFeHBvcnRcIiwgdGhpcy5lbmFibGVFeHBvcnQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJlYWRPbmx5XCIsIHRoaXMucmVhZE9ubHkpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImlnbm9yZWRGaWVsZHNcIiwgdGhpcy5pZ25vcmVkRmllbGRzKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3Rpb25MaW1pdFwiLCB0aGlzLnNlbGVjdGlvbkxpbWl0KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJjb25kZW5zZWRUYWJsZUxheW91dFwiLCB0aGlzLmNvbmRlbnNlZFRhYmxlTGF5b3V0KTtcblxuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImV4cG9ydFJlcXVlc3RTaXplXCIsIHRoaXMuZXhwb3J0UmVxdWVzdFNpemUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImZyb3plbkNvbHVtbkNvdW50XCIsIHRoaXMuZnJvemVuQ29sdW1uQ291bnQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImRpc2FibGVDb2x1bW5GcmVlemVcIiwgdGhpcy5kaXNhYmxlQ29sdW1uRnJlZXplKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJ3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlclwiLCB0aGlzLndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJyb3dDb3VudE1vZGVcIiwgdGhpcy5yb3dDb3VudE1vZGUpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInJvd0NvdW50XCIsIHRoaXMucm93Q291bnQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZUZ1bGxTY3JlZW5cIiwgdGhpcy5lbmFibGVGdWxsU2NyZWVuKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3RBbGxcIiwgdGhpcy5lbmFibGVTZWxlY3RBbGwpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcImVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllc1wiLCB0aGlzLmVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllcyk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZW5hYmxlUGFzdGVcIiwgdGhpcy5lbmFibGVQYXN0ZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwiZGlzYWJsZUNvcHlUb0NsaXBib2FyZFwiLCB0aGlzLmRpc2FibGVDb3B5VG9DbGlwYm9hcmQpO1xuXHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyh0YWJsZVNldHRpbmdzLCBcInNjcm9sbFRocmVzaG9sZFwiLCB0aGlzLnNjcm9sbFRocmVzaG9sZCk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwidGhyZXNob2xkXCIsIHRoaXMudGhyZXNob2xkKTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJwb3BpbkxheW91dFwiLCB0aGlzLnBvcGluTGF5b3V0KTtcblx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJzZWxlY3Rpb25Nb2RlXCIsIHRoaXMuc2VsZWN0aW9uTW9kZSk7XG5cdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKHRhYmxlU2V0dGluZ3MsIFwidHlwZVwiLCB0aGlzLnR5cGUpO1xuXHRcdGlmICh0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbj8ucXVpY2tGaWx0ZXJzPy5wYXRocz8ubGVuZ3RoKSB7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcodGFibGVTZXR0aW5ncywgXCJxdWlja1ZhcmlhbnRTZWxlY3Rpb25cIiwge1xuXHRcdFx0XHRwYXRoczogdGhpcy5xdWlja1ZhcmlhbnRTZWxlY3Rpb24ucXVpY2tGaWx0ZXJzLnBhdGhzLm1hcCgocGF0aCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB7IGFubm90YXRpb25QYXRoOiBwYXRoIH07XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRzaG93Q291bnRzOiB0aGlzLnF1aWNrVmFyaWFudFNlbGVjdGlvbi5xdWlja0ZpbHRlcnMuc2hvd0NvdW50c1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuY3JlYXRpb25Nb2RlKSB7XG5cdFx0XHRjb25zdCBjcmVhdGlvbk1vZGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcIm5hbWVcIiwgdGhpcy5jcmVhdGlvbk1vZGUubmFtZSk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoY3JlYXRpb25Nb2RlLCBcImNyZWF0aW9uRmllbGRzXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmNyZWF0aW9uRmllbGRzKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhjcmVhdGlvbk1vZGUsIFwiY3JlYXRlQXRFbmRcIiwgdGhpcy5jcmVhdGlvbk1vZGUuY3JlYXRlQXRFbmQpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJpbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlXCIsIHRoaXMuY3JlYXRpb25Nb2RlLmlubGluZUNyZWF0aW9uUm93c0hpZGRlbkluRWRpdE1vZGUpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGNyZWF0aW9uTW9kZSwgXCJvdXRib3VuZFwiLCB0aGlzLmNyZWF0aW9uTW9kZS5vdXRib3VuZCk7XG5cdFx0XHRpZiAoT2JqZWN0LmVudHJpZXMoY3JlYXRpb25Nb2RlKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHRhYmxlU2V0dGluZ3NbXCJjcmVhdGlvbk1vZGVcIl0gPSBjcmVhdGlvbk1vZGU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMubWFzc0VkaXQpIHtcblx0XHRcdGNvbnN0IGVuYWJsZU1hc3NFZGl0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcImN1c3RvbUZyYWdtZW50XCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8uY3VzdG9tQ29udGVudCk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwiZnJvbUlubGluZVwiLCB0cnVlKTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhlbmFibGVNYXNzRWRpdCwgXCJ2aXNpYmxlRmllbGRzXCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8udmlzaWJsZUZpZWxkcz8uam9pbihcIixcIikpO1xuXHRcdFx0VGFibGVCbG9jay5hZGRTZXR0aW5nKGVuYWJsZU1hc3NFZGl0LCBcImlnbm9yZWRGaWVsZHNcIiwgdGhpcy5tYXNzRWRpdC5jb25maWd1cmF0aW9uPy5pZ25vcmVkRmllbGRzPy5qb2luKFwiLFwiKSk7XG5cdFx0XHRUYWJsZUJsb2NrLmFkZFNldHRpbmcoZW5hYmxlTWFzc0VkaXQsIFwib3BlcmF0aW9uR3JvdXBpbmdNb2RlXCIsIHRoaXMubWFzc0VkaXQuY29uZmlndXJhdGlvbj8ub3BlcmF0aW9uR3JvdXBpbmdNb2RlKTtcblx0XHRcdHRhYmxlU2V0dGluZ3NbXCJlbmFibGVNYXNzRWRpdFwiXSA9IGVuYWJsZU1hc3NFZGl0O1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmFuYWx5dGljYWxDb25maWd1cmF0aW9uPy5hZ2dyZWdhdGlvbk9uTGVhZkxldmVsID09PSB0cnVlKSB7XG5cdFx0XHRjb25zdCBhbmFseXRpY2FsQ29uZmlndXJhdGlvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFRhYmxlQmxvY2suYWRkU2V0dGluZyhhbmFseXRpY2FsQ29uZmlndXJhdGlvbiwgXCJhZ2dyZWdhdGlvbk9uTGVhZkxldmVsXCIsIHRoaXMuYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24uYWdncmVnYXRpb25PbkxlYWZMZXZlbCk7XG5cdFx0XHRpZiAoT2JqZWN0LmVudHJpZXMoYW5hbHl0aWNhbENvbmZpZ3VyYXRpb24pLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0dGFibGVTZXR0aW5nc1tcImFuYWx5dGljYWxDb25maWd1cmF0aW9uXCJdID0gYW5hbHl0aWNhbENvbmZpZ3VyYXRpb247XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0YWJsZVNldHRpbmdzO1xuXHR9XG5cblx0c3RhdGljIGNyZWF0ZVRhYmxlRGVmaW5pdGlvbih0YWJsZTogVGFibGVCbG9jaywgdGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5nczogVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyk6IFRhYmxlVmlzdWFsaXphdGlvbiB7XG5cdFx0Y29uc3QgaW5pdGlhbENvbnZlcnRlckNvbnRleHQgPSB0YWJsZS5nZXRDb252ZXJ0ZXJDb250ZXh0KFxuXHRcdFx0dGFibGUuY29udGV4dE9iamVjdFBhdGgsXG5cdFx0XHR0YWJsZS5jb250ZXh0UGF0aD8uZ2V0UGF0aCgpLFxuXHRcdFx0dGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5nc1xuXHRcdCk7XG5cdFx0Y29uc3QgdmlzdWFsaXphdGlvblBhdGggPSBUYWJsZUJsb2NrLmdldFZpc3VhbGl6YXRpb25QYXRoKHRhYmxlLmNvbnRleHRPYmplY3RQYXRoLCBpbml0aWFsQ29udmVydGVyQ29udGV4dCk7XG5cblx0XHRjb25zdCB0YWJsZVNldHRpbmdzID0gdGFibGUuZ2V0VGFibGVTZXR0aW5ncygpO1xuXHRcdGNvbnN0IGV4dHJhTWFuaWZlc3RTZXR0aW5nczogVGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSB7XG5cdFx0XHRhY3Rpb25zOiBUYWJsZUJsb2NrLmNyZWF0ZUFjdGlvbnNGcm9tTWFuaWZlc3QodGFibGUpLFxuXHRcdFx0Y29sdW1uczogVGFibGVCbG9jay5jcmVhdGVDb2x1bW5zRm9yTWFuaWZlc3QodGFibGUpLFxuXHRcdFx0dGFibGVTZXR0aW5nc1xuXHRcdH07XG5cblx0XHRjb25zdCBleHRyYVBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRleHRyYVBhcmFtc1t2aXN1YWxpemF0aW9uUGF0aF0gPSBleHRyYU1hbmlmZXN0U2V0dGluZ3M7XG5cdFx0Y29uc3QgY29udmVydGVyQ29udGV4dCA9IHRhYmxlLmdldENvbnZlcnRlckNvbnRleHQoXG5cdFx0XHR0YWJsZS5jb250ZXh0T2JqZWN0UGF0aCxcblx0XHRcdHRhYmxlLmNvbnRleHRQYXRoPy5nZXRQYXRoKCksXG5cdFx0XHR0ZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzLFxuXHRcdFx0ZXh0cmFQYXJhbXNcblx0XHQpO1xuXG5cdFx0bGV0IGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50VHlwZSB8IHVuZGVmaW5lZDtcblx0XHRpZiAodGFibGUuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoKSB7XG5cdFx0XHRjb25zdCBzdk9iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8U2VsZWN0aW9uVmFyaWFudD4oXG5cdFx0XHRcdHRhYmxlLmFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aCxcblx0XHRcdFx0dGFibGUuY29udGV4dFBhdGggYXMgQ29udGV4dFxuXHRcdFx0KTtcblx0XHRcdGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50ID0gc3ZPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0XHR9XG5cblx0XHRjb25zdCB2aXN1YWxpemF0aW9uRGVmaW5pdGlvbiA9IGdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbihcblx0XHRcdCh0YWJsZS5pbk11bHRpVmlldyAmJiB0YWJsZS5jb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3Rcblx0XHRcdFx0PyBjb252ZXJ0ZXJDb250ZXh0LmdldFJlbGF0aXZlQW5ub3RhdGlvblBhdGgoXG5cdFx0XHRcdFx0XHR0YWJsZS5jb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QuZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKClcblx0XHRcdFx0ICApXG5cdFx0XHRcdDogZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCh0YWJsZS5jb250ZXh0T2JqZWN0UGF0aCkpIGFzIHN0cmluZyxcblx0XHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHR7XG5cdFx0XHRcdGlzQ29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbnQ6IHRhYmxlLnVzZUNvbmRlbnNlZExheW91dCxcblx0XHRcdFx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRcdGlzTWFjcm9Pck11bHRpcGxlVmlldzogdGFibGUuaW5NdWx0aVZpZXcgPz8gdHJ1ZVxuXHRcdFx0fVxuXHRcdCk7XG5cblx0XHQvLyB0YWtlIHRoZSAoZmlyc3QpIFRhYmxlIHZpc3VhbGl6YXRpb25cblx0XHRyZXR1cm4gdmlzdWFsaXphdGlvbkRlZmluaXRpb24udmlzdWFsaXphdGlvbnMuZmluZChcblx0XHRcdCh2aXo6IFRhYmxlVmlzdWFsaXphdGlvbiB8IENoYXJ0VmlzdWFsaXphdGlvbikgPT4gdml6LnR5cGUgPT09IFZpc3VhbGl6YXRpb25UeXBlLlRhYmxlXG5cdFx0KSBhcyBUYWJsZVZpc3VhbGl6YXRpb247XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgbWFuaWZlc3QgYWN0aW9ucyBmb3IgdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIGJsb2NrXG5cdCAqIEByZXR1cm5zIFRoZSBtYW5pZmVzdCBhY3Rpb25zIGZvciB0aGUgdGFibGVcblx0ICovXG5cdHN0YXRpYyBjcmVhdGVBY3Rpb25zRnJvbU1hbmlmZXN0KHRhYmxlOiBUYWJsZUJsb2NrKTogUmVjb3JkPHN0cmluZywgTWFuaWZlc3RBY3Rpb24+IHtcblx0XHRjb25zdCBhY3Rpb25zU2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0QWN0aW9uPiA9IHt9O1xuXHRcdGNvbnN0IGFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdCA9IChhY3Rpb246IEJsb2NrQWN0aW9uIHwgQmxvY2tBY3Rpb25PdmVycmlkZSk6IHZvaWQgPT4ge1xuXHRcdFx0Y29uc3Qga2V5ID0gYWN0aW9uLmtleSE7XG5cdFx0XHRhY3Rpb25zU2V0dGluZ3Nba2V5XSA9IHtcblx0XHRcdFx0cG9zaXRpb246IHtcblx0XHRcdFx0XHRwbGFjZW1lbnQ6IChhY3Rpb24ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50LFxuXHRcdFx0XHRcdGFuY2hvcjogYWN0aW9uLmFuY2hvclxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjb21tYW5kOiBhY3Rpb24uY29tbWFuZCxcblx0XHRcdFx0ZW5hYmxlT25TZWxlY3Q6IGFjdGlvbi5lbmFibGVPblNlbGVjdCxcblx0XHRcdFx0dmlzaWJsZTogYWN0aW9uLnZpc2libGUsXG5cdFx0XHRcdGVuYWJsZWQ6IGFjdGlvbi5lbmFibGVkLFxuXHRcdFx0XHRpc0FJT3BlcmF0aW9uOiBhY3Rpb24uaXNBSU9wZXJhdGlvbixcblx0XHRcdFx0cHJpb3JpdHk6IGFjdGlvbi5wcmlvcml0eSxcblx0XHRcdFx0Z3JvdXA6IGFjdGlvbi5ncm91cFxuXHRcdFx0fTtcblx0XHRcdGlmIChhY3Rpb24uX3R5cGUgPT09IFwiQWN0aW9uXCIpIHtcblx0XHRcdFx0YWN0aW9uc1NldHRpbmdzW2tleV0gPSB7XG5cdFx0XHRcdFx0Li4uYWN0aW9uc1NldHRpbmdzW2tleV0sXG5cdFx0XHRcdFx0dGV4dDogYWN0aW9uLnRleHQsXG5cdFx0XHRcdFx0X19ub1dyYXA6IHRydWUsXG5cdFx0XHRcdFx0cHJlc3M6IGFjdGlvbi5wcmVzcyxcblx0XHRcdFx0XHRyZXF1aXJlc1NlbGVjdGlvbjogYWN0aW9uLnJlcXVpcmVzU2VsZWN0aW9uXG5cdFx0XHRcdH07XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGFmdGVyRXhlY3V0aW9uID0ge1xuXHRcdFx0XHRlbmFibGVBdXRvU2Nyb2xsOiBhY3Rpb25bXCJlbmFibGVBdXRvU2Nyb2xsXCJdLFxuXHRcdFx0XHRuYXZpZ2F0ZVRvSW5zdGFuY2U6IGFjdGlvbltcIm5hdmlnYXRlVG9JbnN0YW5jZVwiXVxuXHRcdFx0fTtcblx0XHRcdHJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMoYWZ0ZXJFeGVjdXRpb24pO1xuXHRcdFx0YWN0aW9uc1NldHRpbmdzW2tleV0gPSB7XG5cdFx0XHRcdC4uLmFjdGlvbnNTZXR0aW5nc1trZXldLFxuXHRcdFx0XHRhZnRlckV4ZWN1dGlvbjogT2JqZWN0LmVudHJpZXMoYWZ0ZXJFeGVjdXRpb24pLmxlbmd0aCA/IGFmdGVyRXhlY3V0aW9uIDogdW5kZWZpbmVkLFxuXHRcdFx0XHRkZWZhdWx0VmFsdWVzRnVuY3Rpb246IGFjdGlvbi5kZWZhdWx0VmFsdWVzRnVuY3Rpb25cblx0XHRcdH07XG5cdFx0fTtcblx0XHRpZiAodGFibGUuYWN0aW9ucykge1xuXHRcdFx0T2JqZWN0LnZhbHVlcyh0YWJsZS5hY3Rpb25zKS5mb3JFYWNoKChpdGVtKSA9PiB7XG5cdFx0XHRcdGlmIChpdGVtLl90eXBlID09PSBcIkFjdGlvblwiIHx8IGl0ZW0uX3R5cGUgPT09IFwiQWN0aW9uT3ZlcnJpZGVcIikge1xuXHRcdFx0XHRcdGFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdChpdGVtKTtcblx0XHRcdFx0fSBlbHNlIGlmIChpdGVtLl90eXBlID09PSBcIkFjdGlvbkdyb3VwXCIgfHwgaXRlbS5fdHlwZSA9PT0gXCJBY3Rpb25Hcm91cE92ZXJyaWRlXCIpIHtcblx0XHRcdFx0XHQvLyBBY3Rpb25Hcm91cCBvciBBY3Rpb25Hcm91cE92ZXJyaWRlXG5cdFx0XHRcdFx0Y29uc3Qga2V5ID0gaXRlbS5rZXkhO1xuXHRcdFx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRcdFx0cG9zaXRpb246IHtcblx0XHRcdFx0XHRcdFx0cGxhY2VtZW50OiAoaXRlbS5wbGFjZW1lbnQgPz8gXCJBZnRlclwiKSBhcyBQbGFjZW1lbnQsXG5cdFx0XHRcdFx0XHRcdGFuY2hvcjogaXRlbS5hbmNob3Jcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRtZW51OiBpdGVtLmFjdGlvbnMubWFwKChhY3Rpb24pID0+IGFjdGlvbi5rZXkhKVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0aWYgKGl0ZW0uX3R5cGUgPT09IFwiQWN0aW9uR3JvdXBcIikge1xuXHRcdFx0XHRcdFx0YWN0aW9uc1NldHRpbmdzW2tleV0gPSB7XG5cdFx0XHRcdFx0XHRcdC4uLmFjdGlvbnNTZXR0aW5nc1trZXldLFxuXHRcdFx0XHRcdFx0XHR0ZXh0OiBpdGVtLnRleHQsXG5cdFx0XHRcdFx0XHRcdGRlZmF1bHRBY3Rpb246IGl0ZW0uZGVmYXVsdEFjdGlvbixcblx0XHRcdFx0XHRcdFx0X19ub1dyYXA6IHRydWVcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGl0ZW0uYWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcblx0XHRcdFx0XHRcdGFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdChhY3Rpb24pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIGFjdGlvbnNTZXR0aW5ncztcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIHRoZSBtYW5pZmVzdCBjb2x1bW5zIGZvciB0aGUgdGFibGUuXG5cdCAqIEBwYXJhbSB0YWJsZSBUaGUgdGFibGUgYmxvY2tcblx0ICogQHJldHVybnMgVGhlIG1hbmlmZXN0IGFjdGlvbnMgZm9yIHRoZSB0YWJsZVxuXHQgKi9cblx0c3RhdGljIGNyZWF0ZUNvbHVtbnNGb3JNYW5pZmVzdCh0YWJsZTogVGFibGVCbG9jayk6IFJlY29yZDxzdHJpbmcsIEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbiB8IEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbkZvck92ZXJyaWRlPiB7XG5cdFx0Y29uc3QgaXNCbG9ja0NvbHVtbiA9IChibG9jazogQmxvY2tDb2x1bW4gfCBCbG9ja0NvbHVtbk92ZXJyaWRlKTogYmxvY2sgaXMgQmxvY2tDb2x1bW4gPT4ge1xuXHRcdFx0cmV0dXJuIGJsb2NrLl90eXBlID09PSBcIkNvbHVtblwiO1xuXHRcdH07XG5cblx0XHRjb25zdCBjb2x1bW5TZXR0aW5nczogUmVjb3JkPHN0cmluZywgQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uIHwgQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGU+ID0ge307XG5cblx0XHRpZiAodGFibGUuY29sdW1ucykge1xuXHRcdFx0T2JqZWN0LnZhbHVlcyh0YWJsZS5jb2x1bW5zKS5mb3JFYWNoKChjb2x1bW4pID0+IHtcblx0XHRcdFx0bGV0IGN1c3RvbUNvbHVtbkRlZmluaXRpb246IEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbiB8IChDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZSAmIHsga2V5OiBzdHJpbmcgfSk7XG5cdFx0XHRcdGlmIChpc0Jsb2NrQ29sdW1uKGNvbHVtbikpIHtcblx0XHRcdFx0XHRjdXN0b21Db2x1bW5EZWZpbml0aW9uID0ge1xuXHRcdFx0XHRcdFx0aGVhZGVyOiBjb2x1bW4uaGVhZGVyISxcblx0XHRcdFx0XHRcdHdpZHRoOiBjb2x1bW4ud2lkdGgsXG5cdFx0XHRcdFx0XHRpbXBvcnRhbmNlOiBjb2x1bW4uaW1wb3J0YW5jZSBhcyBJbXBvcnRhbmNlLFxuXHRcdFx0XHRcdFx0aG9yaXpvbnRhbEFsaWduOiBjb2x1bW4uaG9yaXpvbnRhbEFsaWduLFxuXHRcdFx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNvbHVtbi53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcixcblx0XHRcdFx0XHRcdGV4cG9ydFNldHRpbmdzOiBjb2x1bW4uZXhwb3J0U2V0dGluZ3MsXG5cdFx0XHRcdFx0XHRwcm9wZXJ0aWVzOiBjb2x1bW4ucHJvcGVydGllcyxcblx0XHRcdFx0XHRcdHRvb2x0aXA6IGNvbHVtbi50b29sdGlwLFxuXHRcdFx0XHRcdFx0dGVtcGxhdGU6IGNvbHVtbi50ZW1wbGF0ZSEsXG5cdFx0XHRcdFx0XHRhdmFpbGFiaWxpdHk6IGNvbHVtbi5hdmFpbGFiaWxpdHkgYXMgQXZhaWxhYmlsaXR5VHlwZSxcblx0XHRcdFx0XHRcdHJlcXVpcmVkOiBjb2x1bW4ucmVxdWlyZWQsXG5cdFx0XHRcdFx0XHR0eXBlOiBcIlNsb3RcIlxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbiA9IHtcblx0XHRcdFx0XHRcdGtleTogY29sdW1uLmtleSEsXG5cdFx0XHRcdFx0XHR3aWR0aDogY29sdW1uLndpZHRoLFxuXHRcdFx0XHRcdFx0aW1wb3J0YW5jZTogY29sdW1uLmltcG9ydGFuY2UgYXMgSW1wb3J0YW5jZSxcblx0XHRcdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0XHRcdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyOiBjb2x1bW4ud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0XHRcdFx0XHRleHBvcnRTZXR0aW5nczogY29sdW1uLmV4cG9ydFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGVcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmVtb3ZlIGFsbCB1bmRlZmluZWQgcHJvcGVydGllcywgc28gdGhhdCB0aGV5IGRvbid0IGVyYXNlIHdoYXQgaXMgc2V0IGluIHRoZSBtYW5pZmVzdFxuXHRcdFx0XHQvLyAobmVjZXNzYXJ5IGJlY2F1c2UgbWFuaWZlc3QtYmFzZWQgY29sdW1ucyBhcmUgdHJhbnNmb3JtZWQgaW50byBzbG90IGNvbHVtbnMgYW5kIHdlIGRvbid0IGNvcHlcblx0XHRcdFx0Ly8gYWxsIHRoZWlyIHByb3BlcnRpZXMgaW4gdGhlIFhNTClcblx0XHRcdFx0cmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhjdXN0b21Db2x1bW5EZWZpbml0aW9uKTtcblx0XHRcdFx0aWYgKGlzQmxvY2tDb2x1bW4oY29sdW1uKSAmJiAoY29sdW1uLmFuY2hvciB8fCBjb2x1bW4ucGxhY2VtZW50KSkge1xuXHRcdFx0XHRcdGN1c3RvbUNvbHVtbkRlZmluaXRpb24ucG9zaXRpb24gPSB7XG5cdFx0XHRcdFx0XHRhbmNob3I6IGNvbHVtbi5hbmNob3IsXG5cdFx0XHRcdFx0XHRwbGFjZW1lbnQ6IChjb2x1bW4ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbHVtblNldHRpbmdzW2NvbHVtbi5rZXkhXSA9IGN1c3RvbUNvbHVtbkRlZmluaXRpb247XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbHVtblNldHRpbmdzO1xuXHR9XG5cblx0c2V0VXBJZCgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5pZCkge1xuXHRcdFx0Ly8gVGhlIGdpdmVuIElEIHNoYWxsIGJlIGFzc2lnbmVkIHRvIHRoZSBUYWJsZUFQSSBhbmQgbm90IHRvIHRoZSBNREMgVGFibGVcblx0XHRcdHRoaXMuX2FwaUlkID0gdGhpcy5pZDtcblx0XHRcdC8vIEdlbmVyYXRlIHRoZSBjb250ZW50SWQgYmFzZWQgb24gdGhlIElELCBpZiBub3QgcHJvdmlkZWQgKEZQTSBjYXNlKVxuXHRcdFx0dGhpcy5jb250ZW50SWQgPz89IHRoaXMuZ2V0Q29udGVudElkKHRoaXMuaWQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBXZSBnZW5lcmF0ZSB0aGUgSUQgYW5kIHRoZSBjb250ZW50SUQuIER1ZSB0byBjb21wYXRpYmlsaXR5IHJlYXNvbnMgd2Uga2VlcCBpdCBvbiB0aGUgTURDIFRhYmxlIGJ1dCBwcm92aWRlIGFzc2lnblxuXHRcdFx0Ly8gdGhlIElEIHdpdGggYSA6OlRhYmxlIHN1ZmZpeCB0byB0aGUgVGFibGVBUElcblx0XHRcdHRoaXMuaWQgPSB0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmFwaUlkO1xuXHRcdFx0dGhpcy5jb250ZW50SWQgPSB0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmlkO1xuXHRcdFx0dGhpcy5fYXBpSWQgPSB0aGlzLnRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLmFwaUlkO1xuXHRcdH1cblx0fVxuXG5cdF9nZXRFbnRpdHlUeXBlKCk6IEVudGl0eVR5cGUge1xuXHRcdHJldHVybiAodGhpcy5jb2xsZWN0aW9uRW50aXR5IGFzIEVudGl0eVNldCk/LmVudGl0eVR5cGUgfHwgKHRoaXMuY29sbGVjdGlvbkVudGl0eSBhcyBOYXZpZ2F0aW9uUHJvcGVydHkpPy50YXJnZXRUeXBlO1xuXHR9XG5cblx0Z2V0RW1wdHlSb3dzRW5hYmxlZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IGVuYWJsZWQgPVxuXHRcdFx0dGhpcy5jcmVhdGlvbk1vZGUubmFtZSA9PT0gQ3JlYXRpb25Nb2RlLklubGluZUNyZWF0aW9uUm93c1xuXHRcdFx0XHQ/IHRoaXMudGFibGVEZWZpbml0aW9uLmFjdGlvbnMuZmluZCgoYSkgPT4gYS5rZXkgPT09IFN0YW5kYXJkQWN0aW9uS2V5cy5DcmVhdGUpPy5lbmFibGVkXG5cdFx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdHJldHVybiBlbmFibGVkID09PSBcImZhbHNlXCIgPyB1bmRlZmluZWQgOiBlbmFibGVkO1xuXHR9XG5cblx0Z2V0VGVtcGxhdGUoKTogc3RyaW5nIHtcblx0XHRjb25zdCBlbnRpdHlUeXBlID0gdGhpcy5fZ2V0RW50aXR5VHlwZSgpO1xuXHRcdGNvbnN0IHRhYmxlUHJvcHMgPSB0aGlzIGFzIHVua25vd24gYXMgVGFibGVCbG9ja1Byb3BlcnRpZXM7XG5cdFx0dGFibGVQcm9wcy5vdmVycmlkZVJvd1ByZXNzID0gdGhpcy5yb3dQcmVzcyAhPT0gdW5kZWZpbmVkO1xuXG5cdFx0Y29uc3QgY29sbGVjdGlvbkVudGl0eSA9IHRoaXMuY29udmVydGVkTWV0YWRhdGEucmVzb2x2ZVBhdGgodGFibGVQcm9wcy50YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi5jb2xsZWN0aW9uKS50YXJnZXQgYXNcblx0XHRcdHwgRW50aXR5U2V0XG5cdFx0XHR8IE5hdmlnYXRpb25Qcm9wZXJ0eTtcblx0XHRjb25zdCBoYW5kbGVyUHJvdmlkZXIgPSBuZXcgVGFibGVFdmVudEhhbmRsZXJQcm92aWRlcih0YWJsZVByb3BzLCB7IGNvbGxlY3Rpb25FbnRpdHksIG1ldGFNb2RlbDogdGhpcy5tZXRhUGF0aC5nZXRNb2RlbCgpIH0pO1xuXG5cdFx0bGV0IGNyZWF0aW9uTW9kZTogVGFibGVDcmVhdGlvbk9wdGlvbnMgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKHRoaXMuY3JlYXRpb25Nb2RlICYmIE9iamVjdC5rZXlzKHRoaXMuY3JlYXRpb25Nb2RlKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRjcmVhdGlvbk1vZGUgPSA8VGFibGVDcmVhdGlvbk9wdGlvbnMgey4uLnRoaXMuY3JlYXRpb25Nb2RlfSAvPjtcblx0XHR9XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PFRhYmxlQVBJXG5cdFx0XHRcdGNvcmU6cmVxdWlyZT1cIntGUE06ICdzYXAvZmUvY29yZS9oZWxwZXJzL0ZQTUhlbHBlcid9XCJcblx0XHRcdFx0YmluZGluZz17YHtpbnRlcm5hbD5jb250cm9scy8ke3RoaXMuY29udGVudElkfX1gfVxuXHRcdFx0XHRpZD17dGhpcy5fYXBpSWR9XG5cdFx0XHRcdGNvbnRlbnRJZD17dGhpcy5jb250ZW50SWR9XG5cdFx0XHRcdHZpc2libGU9e3RoaXMudmlzaWJsZX1cblx0XHRcdFx0aGVhZGVyTGV2ZWw9e3RoaXMuaGVhZGVyTGV2ZWx9XG5cdFx0XHRcdGhlYWRlclN0eWxlPXt0aGlzLmhlYWRlclN0eWxlfVxuXHRcdFx0XHRoZWFkZXJWaXNpYmxlPXt0aGlzLmhlYWRlclZpc2libGV9XG5cdFx0XHRcdHRhYlRpdGxlPXt0aGlzLnRhYlRpdGxlfVxuXHRcdFx0XHRleHBvcnRSZXF1ZXN0U2l6ZT17dGhpcy5leHBvcnRSZXF1ZXN0U2l6ZX1cblx0XHRcdFx0ZGlzYWJsZUNvcHlUb0NsaXBib2FyZD17dGhpcy5kaXNhYmxlQ29weVRvQ2xpcGJvYXJkfVxuXHRcdFx0XHRzY3JvbGxUaHJlc2hvbGQ9e3RoaXMuc2Nyb2xsVGhyZXNob2xkfVxuXHRcdFx0XHR0aHJlc2hvbGQ9e3RoaXMudGFibGVEZWZpbml0aW9uLmNvbnRyb2wudGhyZXNob2xkID8/IHRoaXMudGFibGVEZWZpbml0aW9uLmFubm90YXRpb24udGhyZXNob2xkfVxuXHRcdFx0XHRwb3BpbkxheW91dD17dGhpcy5wb3BpbkxheW91dH1cblx0XHRcdFx0aXNTZWFyY2hhYmxlPXt0aGlzLmlzU2VhcmNoYWJsZX1cblx0XHRcdFx0YnVzeT17dGhpcy5idXN5fVxuXHRcdFx0XHRpbml0aWFsTG9hZD17dGhpcy5pbml0aWFsTG9hZH1cblx0XHRcdFx0aGVhZGVyPXt0aGlzLmhlYWRlcn1cblx0XHRcdFx0aXNBbHA9e3RoaXMuaXNBbHB9XG5cdFx0XHRcdGZpZWxkTW9kZT17dGhpcy5maWVsZE1vZGV9XG5cdFx0XHRcdHBlcnNvbmFsaXphdGlvbj17dGhpcy5wZXJzb25hbGl6YXRpb259XG5cdFx0XHRcdHJvd1ByZXNzPXt0aGlzLnJvd1ByZXNzIGFzIHVua25vd24gYXMgRnVuY3Rpb259XG5cdFx0XHRcdHZhcmlhbnRTYXZlZD17dGhpcy52YXJpYW50U2F2ZWQgYXMgdW5rbm93biBhcyBGdW5jdGlvbn1cblx0XHRcdFx0dmFyaWFudFNlbGVjdGVkPXt0aGlzLnZhcmlhbnRTZWxlY3RlZCBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRzZWdtZW50ZWRCdXR0b25QcmVzcz17dGhpcy5zZWdtZW50ZWRCdXR0b25QcmVzcyBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHR2YXJpYW50TWFuYWdlbWVudD17dGhpcy52YXJpYW50TWFuYWdlbWVudH1cblx0XHRcdFx0aWdub3JlZEZpZWxkcz17dGhpcy50YWJsZURlZmluaXRpb24uY29udHJvbC5pZ25vcmVkRmllbGRzfSAvLyBOZWVkIHRvIGJlIGZyb20gdGhlIHRhYmxlRGVmaW5pdGlvbiB0byBiZSBpbiBwaGFzZSBmb3IgdGhlIGdldElnbm9yZUZpZWxkc1xuXHRcdFx0XHR0YWJsZURlZmluaXRpb249e2B7X3BhZ2VNb2RlbD4ke3RoaXMudGFibGVEZWZpbml0aW9uQ29udGV4dCEuZ2V0UGF0aCgpfX1gIGFzIHVua25vd24gYXMgVGFibGVWaXN1YWxpemF0aW9ufVxuXHRcdFx0XHRlbnRpdHlUeXBlRnVsbHlRdWFsaWZpZWROYW1lPXtlbnRpdHlUeXBlPy5mdWxseVF1YWxpZmllZE5hbWV9XG5cdFx0XHRcdG1ldGFQYXRoPXt0aGlzLm1ldGFQYXRoPy5nZXRQYXRoKCl9XG5cdFx0XHRcdHVzZUJhc2ljU2VhcmNoPXt0aGlzLnVzZUJhc2ljU2VhcmNofVxuXHRcdFx0XHRlbmFibGVGdWxsU2NyZWVuPXt0aGlzLmVuYWJsZUZ1bGxTY3JlZW59XG5cdFx0XHRcdGVuYWJsZUV4cG9ydD17dGhpcy5lbmFibGVFeHBvcnR9XG5cdFx0XHRcdGZyb3plbkNvbHVtbkNvdW50PXt0aGlzLmZyb3plbkNvbHVtbkNvdW50fVxuXHRcdFx0XHRkaXNhYmxlQ29sdW1uRnJlZXplPXt0aGlzLmRpc2FibGVDb2x1bW5GcmVlemV9XG5cdFx0XHRcdGVuYWJsZVBhc3RlPXt0aGlzLmVuYWJsZVBhc3RlfVxuXHRcdFx0XHRyb3dDb3VudE1vZGU9e3RoaXMucm93Q291bnRNb2RlfVxuXHRcdFx0XHRyb3dDb3VudD17dGhpcy5yb3dDb3VudH1cblx0XHRcdFx0Y29udGV4dFBhdGg9e3RoaXMuY29udGV4dFBhdGg/LmdldFBhdGgoKX1cblx0XHRcdFx0c2VsZWN0aW9uQ2hhbmdlPXt0aGlzLnNlbGVjdGlvbkNoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRsaXN0QmluZGluZ0NoYW5nZT17dGhpcy5saXN0QmluZGluZ0NoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9ufVxuXHRcdFx0XHRyZWFkT25seT17dGhpcy5yZWFkT25seX1cblx0XHRcdFx0c2VsZWN0aW9uTW9kZT17dGhpcy5zZWxlY3Rpb25Nb2RlfVxuXHRcdFx0XHR1c2VDb25kZW5zZWRMYXlvdXQ9e3RoaXMudXNlQ29uZGVuc2VkTGF5b3V0fVxuXHRcdFx0XHR0eXBlPXt0aGlzLnR5cGV9XG5cdFx0XHRcdGZpbHRlckJhcj17dGhpcy5maWx0ZXJCYXJ9XG5cdFx0XHRcdGVtcHR5Um93c0VuYWJsZWQ9e3RoaXMuZ2V0RW1wdHlSb3dzRW5hYmxlZCgpIGFzIHVua25vd24gYXMgYm9vbGVhbn1cblx0XHRcdFx0ZW5hYmxlQXV0b0NvbHVtbldpZHRoPXt0aGlzLmVuYWJsZUF1dG9Db2x1bW5XaWR0aH1cblx0XHRcdFx0YmVmb3JlUmViaW5kVGFibGU9e3RoaXMuYmVmb3JlUmViaW5kVGFibGUgYXMgdW5rbm93biBhcyBGdW5jdGlvbn1cblx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI9e3RoaXMud2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXJ9XG5cdFx0XHRcdG1vZGVGb3JOb0RhdGFNZXNzYWdlPXt0aGlzLm1vZGVGb3JOb0RhdGFNZXNzYWdlfVxuXHRcdFx0XHRhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGg9e3RoaXMuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoPy5nZXRQYXRoKCl9XG5cdFx0XHRcdGRpc3BsYXlTZWdtZW50ZWRCdXR0b249e3RoaXMuZGlzcGxheVNlZ21lbnRlZEJ1dHRvbn1cblx0XHRcdFx0ZW5hYmxlUGFzdGluZ09mQ29tcHV0ZWRQcm9wZXJ0aWVzPXt0aGlzLmVuYWJsZVBhc3RpbmdPZkNvbXB1dGVkUHJvcGVydGllc31cblx0XHRcdFx0ZW5hYmxlU2VsZWN0QWxsPXt0aGlzLmVuYWJsZVNlbGVjdEFsbH1cblx0XHRcdFx0aW5NdWx0aVZpZXc9e3RoaXMuaW5NdWx0aVZpZXd9XG5cdFx0XHRcdHNlbGVjdGlvbkxpbWl0PXt0aGlzLnNlbGVjdGlvbkxpbWl0fVxuXHRcdFx0XHRjb25kZW5zZWRUYWJsZUxheW91dD17dGhpcy5jb25kZW5zZWRUYWJsZUxheW91dH1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjdXN0b21EYXRhOiBjcmVhdGVDdXN0b21EYXRhKFwidGFibGVBUElMb2NhbElkXCIsIHRoaXMuX2FwaUlkKSxcblx0XHRcdFx0XHRjcmVhdGlvbk1vZGUsXG5cdFx0XHRcdFx0bGF5b3V0RGF0YTogPEZsZXhJdGVtRGF0YSBtYXhXaWR0aD1cIjEwMCVcIiAvPixcblx0XHRcdFx0XHRjb250ZW50OiBnZXRNRENUYWJsZVRlbXBsYXRlKHRhYmxlUHJvcHMsIHtcblx0XHRcdFx0XHRcdG1ldGFQYXRoOiB0aGlzLm1ldGFQYXRoLFxuXHRcdFx0XHRcdFx0Y29udmVydGVkTWV0YWRhdGE6IHRoaXMuY29udmVydGVkTWV0YWRhdGEsXG5cdFx0XHRcdFx0XHRtZXRhTW9kZWw6IHRoaXMubWV0YU1vZGVsLFxuXHRcdFx0XHRcdFx0aGFuZGxlclByb3ZpZGVyLFxuXHRcdFx0XHRcdFx0YXBwQ29tcG9uZW50OiB0aGlzLmFwcENvbXBvbmVudFxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH19XG5cdFx0XHQ8L1RhYmxlQVBJPlxuXHRcdCk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF3R0EsU0FBU0EsZ0JBQWdCQSxDQUFDQyxJQUFhLEVBQUVDLElBQVksRUFBc0I7SUFDMUUsT0FBT0QsSUFBSSxDQUFDRSxZQUFZLENBQUNELElBQUksQ0FBQyxJQUFJRSxTQUFTO0VBQzVDOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLFNBQVNDLGlDQUFpQ0EsQ0FBQ0osSUFBYSxFQUFFQyxJQUFZLEVBQVc7SUFDaEYsTUFBTUksY0FBYyxHQUFHTCxJQUFJLENBQUNFLFlBQVksQ0FBQ0QsSUFBSSxDQUFDO0lBQzlDLFFBQVFJLGNBQWM7TUFDckIsS0FBSyxJQUFJO01BQ1QsS0FBSyxNQUFNO1FBQ1YsT0FBTyxJQUFJO01BQ1osS0FBSyxPQUFPO1FBQ1gsT0FBTyxLQUFLO01BQ2I7UUFDQyxPQUFPQSxjQUFjO01BQXdCO0lBQy9DO0VBQ0Q7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7RUFD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