@sapui5/sap.fe.macros 1.141.0 → 1.142.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Breadcrumbs.js +4 -10
  4. package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
  5. package/src/sap/fe/macros/Chart.js +34 -23
  6. package/src/sap/fe/macros/Chart.tsx +25 -11
  7. package/src/sap/fe/macros/CollaborativeDraftHandler.js +48 -31
  8. package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +51 -26
  9. package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
  10. package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
  11. package/src/sap/fe/macros/CommonHelper.js +14 -24
  12. package/src/sap/fe/macros/CommonHelper.ts +18 -25
  13. package/src/sap/fe/macros/Field.js +30 -13
  14. package/src/sap/fe/macros/Field.ts +60 -30
  15. package/src/sap/fe/macros/FooterContent.js +5 -2
  16. package/src/sap/fe/macros/FooterContent.tsx +6 -3
  17. package/src/sap/fe/macros/KPITag.js +1 -1
  18. package/src/sap/fe/macros/KPITag.tsx +3 -1
  19. package/src/sap/fe/macros/MacroAPI.js +3 -2
  20. package/src/sap/fe/macros/MacroAPI.ts +2 -2
  21. package/src/sap/fe/macros/MessageButton.js +3 -2
  22. package/src/sap/fe/macros/MessageButton.tsx +5 -2
  23. package/src/sap/fe/macros/MicroChart.js +10 -6
  24. package/src/sap/fe/macros/MicroChart.tsx +8 -2
  25. package/src/sap/fe/macros/MultiValueField.js +22 -36
  26. package/src/sap/fe/macros/MultiValueField.tsx +34 -66
  27. package/src/sap/fe/macros/RichTextEditor.js +3 -4
  28. package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
  29. package/src/sap/fe/macros/Status.js +35 -8
  30. package/src/sap/fe/macros/Status.tsx +23 -2
  31. package/src/sap/fe/macros/ValueHelp.js +5 -2
  32. package/src/sap/fe/macros/ValueHelp.tsx +5 -0
  33. package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
  34. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
  35. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
  36. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
  37. package/src/sap/fe/macros/chart/Action.js +25 -2
  38. package/src/sap/fe/macros/chart/Action.ts +13 -0
  39. package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
  40. package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
  41. package/src/sap/fe/macros/chart/ChartDelegate.js +8 -8
  42. package/src/sap/fe/macros/chart/ChartDelegate.ts +17 -12
  43. package/src/sap/fe/macros/chart/MdcChartTemplate.js +54 -11
  44. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +70 -11
  45. package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
  46. package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
  47. package/src/sap/fe/macros/controls/FilterBar.js +39 -3
  48. package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
  49. package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
  50. package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
  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/coreUI/OperationParameterDialog.js +37 -9
  54. package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +45 -6
  55. package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
  56. package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
  57. package/src/sap/fe/macros/field/FieldFormatOptions.js +3 -3
  58. package/src/sap/fe/macros/field/FieldFormatOptions.ts +1 -1
  59. package/src/sap/fe/macros/field/FieldHelper.js +4 -3
  60. package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
  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/field/FieldRuntimeHelper.js +3 -34
  64. package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
  65. package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
  66. package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
  67. package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
  68. package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
  69. package/src/sap/fe/macros/filter/FilterUtils.js +100 -36
  70. package/src/sap/fe/macros/filter/FilterUtils.ts +127 -39
  71. package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
  72. package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
  73. package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
  74. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
  75. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +10 -7
  76. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +31 -16
  77. package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +4 -3
  78. package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
  79. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
  80. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
  81. package/src/sap/fe/macros/form/Form.block.js +27 -2
  82. package/src/sap/fe/macros/form/Form.block.ts +31 -11
  83. package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
  84. package/src/sap/fe/macros/form/FormContainer.block.js +96 -65
  85. package/src/sap/fe/macros/form/FormContainer.block.ts +104 -65
  86. package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
  87. package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
  88. package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
  89. package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
  90. package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
  91. package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
  92. package/src/sap/fe/macros/insights/InsightsService.js +3 -2
  93. package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
  94. package/src/sap/fe/macros/internal/DataPoint.js +7 -8
  95. package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
  96. package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
  97. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
  98. package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
  99. package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
  100. package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
  101. package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
  102. package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
  103. package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
  104. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
  105. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
  106. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
  107. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
  108. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
  109. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
  110. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
  111. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
  112. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
  113. package/src/sap/fe/macros/library.js +3 -3
  114. package/src/sap/fe/macros/library.ts +2 -0
  115. package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
  116. package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
  117. package/src/sap/fe/macros/messagebundle.properties +7 -5
  118. package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
  119. package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
  120. package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
  121. package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
  122. package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
  123. package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
  124. package/src/sap/fe/macros/messagebundle_da.properties +12 -3
  125. package/src/sap/fe/macros/messagebundle_de.properties +16 -7
  126. package/src/sap/fe/macros/messagebundle_el.properties +13 -4
  127. package/src/sap/fe/macros/messagebundle_en.properties +13 -4
  128. package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
  129. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +12 -3
  130. package/src/sap/fe/macros/messagebundle_es.properties +12 -3
  131. package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
  132. package/src/sap/fe/macros/messagebundle_et.properties +12 -3
  133. package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
  134. package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
  135. package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
  136. package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
  137. package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
  138. package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
  139. package/src/sap/fe/macros/messagebundle_id.properties +18 -9
  140. package/src/sap/fe/macros/messagebundle_it.properties +12 -3
  141. package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
  142. package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
  143. package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
  144. package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
  145. package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
  146. package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
  147. package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
  148. package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
  149. package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
  150. package/src/sap/fe/macros/messagebundle_no.properties +12 -3
  151. package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
  152. package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
  153. package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
  154. package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
  155. package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
  156. package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
  157. package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
  158. package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
  159. package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
  160. package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
  161. package/src/sap/fe/macros/messagebundle_th.properties +11 -2
  162. package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
  163. package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
  164. package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
  165. package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
  166. package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
  167. package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
  168. package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
  169. package/src/sap/fe/macros/table/Action.js +15 -2
  170. package/src/sap/fe/macros/table/Action.ts +11 -1
  171. package/src/sap/fe/macros/table/ActionGroup.js +15 -2
  172. package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
  173. package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
  174. package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
  175. package/src/sap/fe/macros/table/ActionOverride.js +14 -2
  176. package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
  177. package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
  178. package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
  179. package/src/sap/fe/macros/table/MdcTableTemplate.js +91 -10
  180. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +131 -10
  181. package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
  182. package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
  183. package/src/sap/fe/macros/table/Table.block.js +70 -29
  184. package/src/sap/fe/macros/table/Table.block.tsx +65 -12
  185. package/src/sap/fe/macros/table/TableAPI.js +169 -131
  186. package/src/sap/fe/macros/table/TableAPI.ts +58 -28
  187. package/src/sap/fe/macros/table/TableDefinition.js +19 -2
  188. package/src/sap/fe/macros/table/TableDefinition.ts +17 -1
  189. package/src/sap/fe/macros/table/TableEventHandlerProvider.js +4 -3
  190. package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +8 -9
  191. package/src/sap/fe/macros/table/TableHelper.js +5 -2
  192. package/src/sap/fe/macros/table/TableHelper.ts +5 -2
  193. package/src/sap/fe/macros/table/TableRuntime.js +2 -2
  194. package/src/sap/fe/macros/table/TableRuntime.ts +4 -6
  195. package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
  196. package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
  197. package/src/sap/fe/macros/table/delegates/TableDelegate.js +67 -26
  198. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +108 -118
  199. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +2 -2
  200. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +1 -1
  201. package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
  202. package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
  203. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +6 -5
  204. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +10 -4
  205. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
  206. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
  207. package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
  208. package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
  209. package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
  210. package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
  211. package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
  212. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
  213. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
  214. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
  215. package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
  216. package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
  217. package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
@@ -9,6 +9,7 @@ import { isProperty } from "sap/fe/core/helpers/TypeGuards";
9
9
  import { buildExpressionForCriticalityColor, buildExpressionForCriticalityIcon } from "sap/fe/core/templating/CriticalityFormatters";
10
10
  import type { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
11
11
  import { enhanceDataModelPath } from "sap/fe/core/templating/DataModelPathHelper";
12
+ import { getTooltipValue } from "sap/fe/core/templating/UIFormatters";
12
13
  import { getTextBinding, getVisibleExpression } from "sap/fe/macros/field/FieldTemplating";
13
14
  import type { ObjectStatus$PressEvent } from "sap/m/ObjectStatus";
14
15
  import MObjectStatus from "sap/m/ObjectStatus";
@@ -73,6 +74,13 @@ export default class Status extends BuildingBlock<MObjectStatus> implements IFor
73
74
  @property({ type: "boolean" })
74
75
  public hideIcon = false;
75
76
 
77
+ /**
78
+ * Color palette to be used by the control. The supported values are "Standard" (default) and "Pastel".
79
+ * @public
80
+ */
81
+ @property({ type: "string", allowedValues: ["Standard", "Pastel"] })
82
+ public colorPalette?: "Standard" | "Pastel";
83
+
76
84
  /**
77
85
  * Press event fired when the ObjectStatus is clicked.
78
86
  * @param event The press event
@@ -145,7 +153,15 @@ export default class Status extends BuildingBlock<MObjectStatus> implements IFor
145
153
  * Gets the criticality expression for the ObjectStatus.
146
154
  * @returns The compiled binding expression for criticality color, or undefined if no criticality is available
147
155
  */
148
- private getCriticalityExpression(specificColorMap?: Record<string, string>): CompiledBindingToolkitExpression | undefined {
156
+ private getCriticalityExpression(colorPalette?: string): CompiledBindingToolkitExpression | undefined {
157
+ const pastelColorMap = {
158
+ Negative: "Indication12",
159
+ Critical: "Indication13",
160
+ Positive: "Indication14",
161
+ Information: "Indication15",
162
+ Neutral: "Indication20"
163
+ };
164
+ const specificColorMap = colorPalette === "Pastel" ? pastelColorMap : undefined;
149
165
  return this.dataModelPath === undefined
150
166
  ? undefined
151
167
  : buildExpressionForCriticalityColor(this.dataModelPath, this.dataModelPath, specificColorMap);
@@ -180,7 +196,10 @@ export default class Status extends BuildingBlock<MObjectStatus> implements IFor
180
196
  Property | DataField | DataPointType
181
197
  >;
182
198
  const visible = getVisibleExpression(dataFieldOrPropertyDataModelObjectPath);
183
- const criticalityExpression = this.getCriticalityExpression(statusConfig?.colorMap);
199
+ if (this.isPropertyInitial("colorPalette")) {
200
+ this.colorPalette = statusConfig?.colorPalette ?? "Standard";
201
+ }
202
+ const criticalityExpression = this.getCriticalityExpression(this.colorPalette);
184
203
  const criticalityIconExpression = this.getCriticalityIconExpression();
185
204
  const textBinding = this.getObjectStatusTextBinding();
186
205
  const isActive = this.hasListeners("press");
@@ -191,6 +210,7 @@ export default class Status extends BuildingBlock<MObjectStatus> implements IFor
191
210
  if (this.largeDesign) {
192
211
  this.hideIcon = true;
193
212
  }
213
+ const toolTipValue = getTooltipValue(this.dataModelPath, this.valueDataModelPath);
194
214
 
195
215
  return (
196
216
  <MObjectStatus
@@ -198,6 +218,7 @@ export default class Status extends BuildingBlock<MObjectStatus> implements IFor
198
218
  inverted={this.inverted}
199
219
  class={this.largeDesign ? "sapMObjectStatusLarge sapMObjectStatusLongText" : undefined}
200
220
  state={criticalityExpression}
221
+ tooltip={toolTipValue}
201
222
  icon={this.hideIcon ? undefined : criticalityIconExpression}
202
223
  text={textBinding}
203
224
  visible={visible}
@@ -83,6 +83,10 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/buildingBlocks/BuildingB
83
83
  }
84
84
  _exports = ValueHelp;
85
85
  _inheritsLoose(ValueHelp, _BuildingBlock);
86
+ var _proto = ValueHelp.prototype;
87
+ _proto.applySettings = function applySettings(mSettings, oScope) {
88
+ return _BuildingBlock.prototype.applySettings.call(this, mSettings, oScope);
89
+ };
86
90
  ValueHelp.getValueHelpForMetaPath = function getValueHelpForMetaPath(pageController, metaPath, contextPath, metaModel) {
87
91
  let requiresValidation = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
88
92
  const dependents = pageController.getView()?.getDependents();
@@ -115,7 +119,6 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/buildingBlocks/BuildingB
115
119
  return foundDep;
116
120
  }
117
121
  };
118
- var _proto = ValueHelp.prototype;
119
122
  _proto.onMetadataAvailable = function onMetadataAvailable() {
120
123
  if (!this.content) {
121
124
  this._getOwner()?.runAsOwner(() => {
@@ -227,4 +230,4 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/buildingBlocks/BuildingB
227
230
  _exports = ValueHelp;
228
231
  return _exports;
229
232
  }, false);
230
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWYWx1ZUhlbHAiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImFzc29jaWF0aW9uIiwidHlwZSIsIl9kZWMzIiwicHJvcGVydHkiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJwcm9wcyIsIm90aGVycyIsIl90aGlzIiwiX2ZsZXhJZCIsImlkIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZGVzY3JpcHRvcjgiLCJfZGVzY3JpcHRvcjkiLCJfZGVzY3JpcHRvcjEwIiwicmVxdWVzdEdyb3VwSWQiLCJjb2xsYWJvcmF0aW9uRW5hYmxlZCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJnZXRWYWx1ZUhlbHBGb3JNZXRhUGF0aCIsInBhZ2VDb250cm9sbGVyIiwibWV0YVBhdGgiLCJjb250ZXh0UGF0aCIsIm1ldGFNb2RlbCIsInJlcXVpcmVzVmFsaWRhdGlvbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImRlcGVuZGVudHMiLCJnZXRWaWV3IiwiZ2V0RGVwZW5kZW50cyIsInRhcmdldE1ldGFQYXRoIiwic3RhcnRzV2l0aCIsImZvdW5kRGVwIiwiZmluZCIsImNoaWxkIiwiaXNBIiwiY2hpbGRNZXRhUGF0aCIsImdldE1ldGFQYXRoIiwiY2hpbGRDb250ZXh0UGF0aCIsImdldENvbnRleHRQYXRoIiwiY2hpbGRUYXJnZXRQYXRoIiwidmFsdWVIZWxwIiwiZ2V0SWQiLCJpZFByZWZpeCIsImNyZWF0ZUlkIiwiYWRkRGVwZW5kZW50IiwiZ2V0Q29udGVudCIsInRhcmdldElkIiwiaW5uZXJWYWx1ZUhlbHAiLCJVSTVFbGVtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJkZXN0cm95IiwiZ2V0UGFyZW50IiwiX3Byb3RvIiwicHJvdG90eXBlIiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImNvbnRlbnQiLCJfZ2V0T3duZXIiLCJydW5Bc093bmVyIiwiY3JlYXRlQ29udGVudCIsIm1ldGFDb250ZXh0UGF0aCIsImdldE1ldGFQYXRoT2JqZWN0IiwiZ2V0TWV0YU1vZGVsIiwiZW50aXR5U2V0T3JTaW5nbGV0b24iLCJnZXRDbG9zZXN0RW50aXR5U2V0IiwiaXNFbnRpdHlTZXQiLCJNb2RlbEhlbHBlciIsImlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJnZXRQYXRoIiwiZmlsdGVyRmllbGRWYWx1ZUhlbHAiLCJGaWVsZEhlbHBlciIsInZhbHVlSGVscFByb3BlcnR5Rm9yRmlsdGVyRmllbGQiLCJ2YWx1ZUhlbHBQcm9wZXJ0eSIsInRlbXBsYXRlUmVzdWx0IiwiZ2V0VmFsdWVIZWxwVGVtcGxhdGUiLCJ1c2VTZW1hbnRpY0RhdGVSYW5nZSIsInVzZU11bHRpVmFsdWVGaWVsZCIsIm5hdmlnYXRpb25QcmVmaXgiLCJjb25kaXRpb25Nb2RlbCIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlZhbHVlSGVscC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbmhhbmNlV2l0aFVJNSwgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgYXNzb2NpYXRpb24sIGRlZmluZVVJNUNsYXNzLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IGlzRW50aXR5U2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IEZpZWxkSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRWYWx1ZUhlbHBUZW1wbGF0ZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL3ZhbHVlaGVscC9WYWx1ZUhlbHBUZW1wbGF0aW5nXCI7XG5cbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIE1EQ1ZhbHVlSGVscCBmcm9tIFwic2FwL3VpL21kYy9WYWx1ZUhlbHBcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcblxuLyoqXG4gKiBCdWlsZGluZyBibG9jayBmb3IgY3JlYXRpbmcgYSBWYWx1ZUhlbHAgYmFzZWQgb24gdGhlIHByb3ZpZGVkIE9EYXRhIFY0IG1ldGFkYXRhLlxuICogQHByaXZhdGVcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5WYWx1ZUhlbHBcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZhbHVlSGVscCBleHRlbmRzIEJ1aWxkaW5nQmxvY2s8TURDVmFsdWVIZWxwIHwgQ29udHJvbD4ge1xuXHQvKipcblx0ICogQSBwcmVmaXggdGhhdCBpcyBhZGRlZCB0byB0aGUgZ2VuZXJhdGVkIElEIG9mIHRoZSB2YWx1ZSBoZWxwLlxuXHQgKi9cblx0QGFzc29jaWF0aW9uKHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRpZFByZWZpeD86IHN0cmluZztcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgbWV0YWRhdGEgcGF0aCB0byB0aGUgcHJvcGVydHkuXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdG1ldGFQYXRoITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0Y29udGV4dFBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEluZGljYXRvciB3aGV0aGVyIHRoZSB2YWx1ZSBoZWxwIGlzIGZvciBhIGZpbHRlciBmaWVsZC5cblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0Y29uZGl0aW9uTW9kZWwgPSBcIlwiO1xuXG5cdC8qKlxuXHQgKiBJbmRpY2F0ZXMgdGhhdCB0aGlzIGlzIGEgdmFsdWUgaGVscCBvZiBhIGZpbHRlciBmaWVsZC4gTmVjZXNzYXJ5IHRvIGRlY2lkZSBpZiBhXG5cdCAqIHZhbGlkYXRpb24gc2hvdWxkIG9jY3VyIG9uIHRoZSBiYWNrIGVuZCBvciBhbHJlYWR5IG9uIHRoZSBjbGllbnQuXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRmaWx0ZXJGaWVsZFZhbHVlSGVscCA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIFNlbWF0aWMgRGF0ZSBSYW5nZSBvcHRpb24gZm9yIHRoZSBmaWx0ZXIgZmllbGQuXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHR1c2VTZW1hbnRpY0RhdGVSYW5nZSA9IHRydWU7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBWYWx1ZUhlbHAgY2FuIGJlIHVzZWQgd2l0aCBhIE11bHRpVmFsdWVGaWVsZFxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0dXNlTXVsdGlWYWx1ZUZpZWxkID0gZmFsc2U7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRuYXZpZ2F0aW9uUHJlZml4Pzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHJlcXVpcmVzVmFsaWRhdGlvbiA9IGZhbHNlO1xuXG5cdEBhc3NvY2lhdGlvbih7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuXHRfZmxleElkPzogc3RyaW5nO1xuXG5cdHJlcXVlc3RHcm91cElkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBcIiRhdXRvLldvcmtlcnNcIjtcblxuXHRjb2xsYWJvcmF0aW9uRW5hYmxlZCA9IGZhbHNlO1xuXG5cdHRhcmdldElkPzogc3RyaW5nO1xuXG5cdGNvbnN0cnVjdG9yKHByb3BzOiBQcm9wZXJ0aWVzT2Y8VmFsdWVIZWxwPiwgb3RoZXJzPzogUHJvcGVydGllc09mPFZhbHVlSGVscD4pIHtcblx0XHRpZiAocHJvcHMuX2ZsZXhJZCkge1xuXHRcdFx0cHJvcHMuaWQgPSBwcm9wcy5fZmxleElkICsgXCI6OkJsb2NrXCI7XG5cdFx0fVxuXHRcdHN1cGVyKHByb3BzLCBvdGhlcnMpO1xuXHR9XG5cblx0c3RhdGljIGdldFZhbHVlSGVscEZvck1ldGFQYXRoKFxuXHRcdHBhZ2VDb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcixcblx0XHRtZXRhUGF0aDogc3RyaW5nLFxuXHRcdGNvbnRleHRQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdFx0bWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCB8IHVuZGVmaW5lZCxcblx0XHRyZXF1aXJlc1ZhbGlkYXRpb24gPSBmYWxzZVxuXHQpOiBWYWx1ZUhlbHAgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IGRlcGVuZGVudHMgPSBwYWdlQ29udHJvbGxlci5nZXRWaWV3KCk/LmdldERlcGVuZGVudHMoKTtcblx0XHRjb25zdCB0YXJnZXRNZXRhUGF0aCA9IG1ldGFQYXRoLnN0YXJ0c1dpdGgoXCIvXCIpID8gbWV0YVBhdGggOiBjb250ZXh0UGF0aCArIFwiL1wiICsgbWV0YVBhdGg7XG5cdFx0Y29uc3QgZm91bmREZXAgPSBkZXBlbmRlbnRzPy5maW5kKChjaGlsZCkgPT4ge1xuXHRcdFx0aWYgKGNoaWxkLmlzQTxFbmhhbmNlV2l0aFVJNTxWYWx1ZUhlbHA+PihcInNhcC5mZS5tYWNyb3MuVmFsdWVIZWxwXCIpICYmICFyZXF1aXJlc1ZhbGlkYXRpb24pIHtcblx0XHRcdFx0Y29uc3QgY2hpbGRNZXRhUGF0aCA9IGNoaWxkLmdldE1ldGFQYXRoKCk7XG5cdFx0XHRcdGNvbnN0IGNoaWxkQ29udGV4dFBhdGggPSBjaGlsZC5nZXRDb250ZXh0UGF0aCgpO1xuXHRcdFx0XHRjb25zdCBjaGlsZFRhcmdldFBhdGggPSBjaGlsZE1ldGFQYXRoLnN0YXJ0c1dpdGgoXCIvXCIpID8gY2hpbGRNZXRhUGF0aCA6IGNoaWxkQ29udGV4dFBhdGggKyBcIi9cIiArIGNoaWxkTWV0YVBhdGg7XG5cdFx0XHRcdHJldHVybiBjaGlsZFRhcmdldFBhdGggPT09IHRhcmdldE1ldGFQYXRoO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0pO1xuXHRcdGlmICghZm91bmREZXApIHtcblx0XHRcdGNvbnN0IHZhbHVlSGVscCA9IG5ldyBWYWx1ZUhlbHAoe1xuXHRcdFx0XHRtZXRhUGF0aDogbWV0YVBhdGgsXG5cdFx0XHRcdGNvbnRleHRQYXRoOiBjb250ZXh0UGF0aCxcblx0XHRcdFx0bWV0YU1vZGVsOiBtZXRhTW9kZWw/LmdldElkKCksXG5cdFx0XHRcdGlkUHJlZml4OiBwYWdlQ29udHJvbGxlci5nZXRWaWV3KCk/LmNyZWF0ZUlkKFwiRmllbGRWYWx1ZUhlbHBcIiksXG5cdFx0XHRcdHJlcXVpcmVzVmFsaWRhdGlvbjogcmVxdWlyZXNWYWxpZGF0aW9uXG5cdFx0XHR9KTtcblx0XHRcdHBhZ2VDb250cm9sbGVyLmdldFZpZXcoKS5hZGREZXBlbmRlbnQodmFsdWVIZWxwKTtcblx0XHRcdGlmICghdmFsdWVIZWxwLmdldENvbnRlbnQoKSAmJiB2YWx1ZUhlbHAudGFyZ2V0SWQpIHtcblx0XHRcdFx0Y29uc3QgaW5uZXJWYWx1ZUhlbHAgPSBVSTVFbGVtZW50LmdldEVsZW1lbnRCeUlkKHZhbHVlSGVscC50YXJnZXRJZCk7XG5cdFx0XHRcdHZhbHVlSGVscC5kZXN0cm95KCk7XG5cdFx0XHRcdHJldHVybiBpbm5lclZhbHVlSGVscD8uZ2V0UGFyZW50KCkgYXMgVmFsdWVIZWxwIHwgdW5kZWZpbmVkO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdmFsdWVIZWxwO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gZm91bmREZXAgYXMgVmFsdWVIZWxwIHwgdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHRoaXMuX2dldE93bmVyKCk/LnJ1bkFzT3duZXIoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdGNyZWF0ZUNvbnRlbnQoKTogQ29udHJvbCB8IE1EQ1ZhbHVlSGVscCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgbWV0YUNvbnRleHRQYXRoID0gdGhpcy5nZXRNZXRhUGF0aE9iamVjdCh0aGlzLm1ldGFQYXRoLCB0aGlzLmNvbnRleHRQYXRoKTtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRNZXRhTW9kZWwodGhpcy5tZXRhTW9kZWwpO1xuXHRcdGlmIChtZXRhQ29udGV4dFBhdGggJiYgbWV0YU1vZGVsKSB7XG5cdFx0XHRjb25zdCBlbnRpdHlTZXRPclNpbmdsZXRvbiA9IG1ldGFDb250ZXh0UGF0aC5nZXRDbG9zZXN0RW50aXR5U2V0KCk7XG5cdFx0XHRpZiAoaXNFbnRpdHlTZXQoZW50aXR5U2V0T3JTaW5nbGV0b24pKSB7XG5cdFx0XHRcdHRoaXMuY29sbGFib3JhdGlvbkVuYWJsZWQgPSBNb2RlbEhlbHBlci5pc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZChtZXRhTW9kZWwpO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgbWV0YVBhdGggPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQobWV0YUNvbnRleHRQYXRoLmdldFBhdGgoKSk7XG5cdFx0XHRpZiAobWV0YVBhdGgpIHtcblx0XHRcdFx0aWYgKHRoaXMuZmlsdGVyRmllbGRWYWx1ZUhlbHApIHtcblx0XHRcdFx0XHRtZXRhUGF0aCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChGaWVsZEhlbHBlci52YWx1ZUhlbHBQcm9wZXJ0eUZvckZpbHRlckZpZWxkKG1ldGFQYXRoKSkhO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdG1ldGFQYXRoID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KEZpZWxkSGVscGVyLnZhbHVlSGVscFByb3BlcnR5KG1ldGFQYXRoKSkhO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGlkUHJlZml4ID0gdGhpcy5pZFByZWZpeCA/PyBcIlZhbHVlSGVscFwiO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZVJlc3VsdCA9IGdldFZhbHVlSGVscFRlbXBsYXRlKG1ldGFQYXRoLCB7XG5cdFx0XHRcdFx0bWV0YVBhdGg6IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChtZXRhQ29udGV4dFBhdGguZ2V0UGF0aCgpKSEsXG5cdFx0XHRcdFx0Y29udGV4dFBhdGg6IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChtZXRhQ29udGV4dFBhdGguZ2V0Q29udGV4dFBhdGgoKSkhLFxuXHRcdFx0XHRcdGZpbHRlckZpZWxkVmFsdWVIZWxwOiB0aGlzLmZpbHRlckZpZWxkVmFsdWVIZWxwLFxuXHRcdFx0XHRcdHVzZVNlbWFudGljRGF0ZVJhbmdlOiB0aGlzLnVzZVNlbWFudGljRGF0ZVJhbmdlLFxuXHRcdFx0XHRcdHVzZU11bHRpVmFsdWVGaWVsZDogdGhpcy51c2VNdWx0aVZhbHVlRmllbGQsXG5cdFx0XHRcdFx0bmF2aWdhdGlvblByZWZpeDogdGhpcy5uYXZpZ2F0aW9uUHJlZml4LFxuXHRcdFx0XHRcdHJlcXVpcmVzVmFsaWRhdGlvbjogdGhpcy5yZXF1aXJlc1ZhbGlkYXRpb24sXG5cdFx0XHRcdFx0X2ZsZXhJZDogdGhpcy5fZmxleElkLFxuXHRcdFx0XHRcdGlkUHJlZml4OiBpZFByZWZpeCxcblx0XHRcdFx0XHRjb25kaXRpb25Nb2RlbDogdGhpcy5jb25kaXRpb25Nb2RlbCxcblx0XHRcdFx0XHRyZXF1ZXN0R3JvdXBJZDogdGhpcy5yZXF1ZXN0R3JvdXBJZCxcblx0XHRcdFx0XHRjb2xsYWJvcmF0aW9uRW5hYmxlZDogdGhpcy5jb2xsYWJvcmF0aW9uRW5hYmxlZFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKHR5cGVvZiB0ZW1wbGF0ZVJlc3VsdCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRcdHRoaXMudGFyZ2V0SWQgPSB0ZW1wbGF0ZVJlc3VsdDtcblx0XHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJldHVybiB0ZW1wbGF0ZVJlc3VsdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBY0E7QUFDQTtBQUNBO0FBQ0E7RUFIQSxJQUtxQkEsU0FBUyxJQUFBQyxJQUFBLEdBRDdCQyxjQUFjLENBQUMseUJBQXlCLENBQUMsRUFBQUMsS0FBQSxHQUt4Q0MsV0FBVyxDQUFDO0lBQUVDLElBQUksRUFBRTtF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
233
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWYWx1ZUhlbHAiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImFzc29jaWF0aW9uIiwidHlwZSIsIl9kZWMzIiwicHJvcGVydHkiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJwcm9wcyIsIm90aGVycyIsIl90aGlzIiwiX2ZsZXhJZCIsImlkIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZGVzY3JpcHRvcjgiLCJfZGVzY3JpcHRvcjkiLCJfZGVzY3JpcHRvcjEwIiwicmVxdWVzdEdyb3VwSWQiLCJjb2xsYWJvcmF0aW9uRW5hYmxlZCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJhcHBseVNldHRpbmdzIiwibVNldHRpbmdzIiwib1Njb3BlIiwiZ2V0VmFsdWVIZWxwRm9yTWV0YVBhdGgiLCJwYWdlQ29udHJvbGxlciIsIm1ldGFQYXRoIiwiY29udGV4dFBhdGgiLCJtZXRhTW9kZWwiLCJyZXF1aXJlc1ZhbGlkYXRpb24iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJkZXBlbmRlbnRzIiwiZ2V0VmlldyIsImdldERlcGVuZGVudHMiLCJ0YXJnZXRNZXRhUGF0aCIsInN0YXJ0c1dpdGgiLCJmb3VuZERlcCIsImZpbmQiLCJjaGlsZCIsImlzQSIsImNoaWxkTWV0YVBhdGgiLCJnZXRNZXRhUGF0aCIsImNoaWxkQ29udGV4dFBhdGgiLCJnZXRDb250ZXh0UGF0aCIsImNoaWxkVGFyZ2V0UGF0aCIsInZhbHVlSGVscCIsImdldElkIiwiaWRQcmVmaXgiLCJjcmVhdGVJZCIsImFkZERlcGVuZGVudCIsImdldENvbnRlbnQiLCJ0YXJnZXRJZCIsImlubmVyVmFsdWVIZWxwIiwiVUk1RWxlbWVudCIsImdldEVsZW1lbnRCeUlkIiwiZGVzdHJveSIsImdldFBhcmVudCIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJjb250ZW50IiwiX2dldE93bmVyIiwicnVuQXNPd25lciIsImNyZWF0ZUNvbnRlbnQiLCJtZXRhQ29udGV4dFBhdGgiLCJnZXRNZXRhUGF0aE9iamVjdCIsImdldE1ldGFNb2RlbCIsImVudGl0eVNldE9yU2luZ2xldG9uIiwiZ2V0Q2xvc2VzdEVudGl0eVNldCIsImlzRW50aXR5U2V0IiwiTW9kZWxIZWxwZXIiLCJpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiZ2V0UGF0aCIsImZpbHRlckZpZWxkVmFsdWVIZWxwIiwiRmllbGRIZWxwZXIiLCJ2YWx1ZUhlbHBQcm9wZXJ0eUZvckZpbHRlckZpZWxkIiwidmFsdWVIZWxwUHJvcGVydHkiLCJ0ZW1wbGF0ZVJlc3VsdCIsImdldFZhbHVlSGVscFRlbXBsYXRlIiwidXNlU2VtYW50aWNEYXRlUmFuZ2UiLCJ1c2VNdWx0aVZhbHVlRmllbGQiLCJuYXZpZ2F0aW9uUHJlZml4IiwiY29uZGl0aW9uTW9kZWwiLCJCdWlsZGluZ0Jsb2NrIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJWYWx1ZUhlbHAudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW5oYW5jZVdpdGhVSTUsIFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFzc29jaWF0aW9uLCBkZWZpbmVVSTVDbGFzcywgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgeyBpc0VudGl0eVNldCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCBGaWVsZEhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZEhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0VmFsdWVIZWxwVGVtcGxhdGUgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC92YWx1ZWhlbHAvVmFsdWVIZWxwVGVtcGxhdGluZ1wiO1xuXG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIHsgJE1hbmFnZWRPYmplY3RTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IHR5cGUgTURDVmFsdWVIZWxwIGZyb20gXCJzYXAvdWkvbWRjL1ZhbHVlSGVscFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIGZvciBjcmVhdGluZyBhIFZhbHVlSGVscCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgT0RhdGEgVjQgbWV0YWRhdGEuXG4gKiBAcHJpdmF0ZVxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLlZhbHVlSGVscFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmFsdWVIZWxwIGV4dGVuZHMgQnVpbGRpbmdCbG9jazxNRENWYWx1ZUhlbHAgfCBDb250cm9sPiB7XG5cdC8qKlxuXHQgKiBBIHByZWZpeCB0aGF0IGlzIGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgSUQgb2YgdGhlIHZhbHVlIGhlbHAuXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGlkUHJlZml4Pzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBtZXRhZGF0YSBwYXRoIHRvIHRoZSBwcm9wZXJ0eS5cblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0bWV0YVBhdGghOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRjb250ZXh0UGF0aCE6IHN0cmluZztcblxuXHQvKipcblx0ICogSW5kaWNhdG9yIHdoZXRoZXIgdGhlIHZhbHVlIGhlbHAgaXMgZm9yIGEgZmlsdGVyIGZpZWxkLlxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRjb25kaXRpb25Nb2RlbCA9IFwiXCI7XG5cblx0LyoqXG5cdCAqIEluZGljYXRlcyB0aGF0IHRoaXMgaXMgYSB2YWx1ZSBoZWxwIG9mIGEgZmlsdGVyIGZpZWxkLiBOZWNlc3NhcnkgdG8gZGVjaWRlIGlmIGFcblx0ICogdmFsaWRhdGlvbiBzaG91bGQgb2NjdXIgb24gdGhlIGJhY2sgZW5kIG9yIGFscmVhZHkgb24gdGhlIGNsaWVudC5cblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGZpbHRlckZpZWxkVmFsdWVIZWxwID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgU2VtYXRpYyBEYXRlIFJhbmdlIG9wdGlvbiBmb3IgdGhlIGZpbHRlciBmaWVsZC5cblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHVzZVNlbWFudGljRGF0ZVJhbmdlID0gdHJ1ZTtcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIFZhbHVlSGVscCBjYW4gYmUgdXNlZCB3aXRoIGEgTXVsdGlWYWx1ZUZpZWxkXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHR1c2VNdWx0aVZhbHVlRmllbGQgPSBmYWxzZTtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdG5hdmlnYXRpb25QcmVmaXg/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0cmVxdWlyZXNWYWxpZGF0aW9uID0gZmFsc2U7XG5cblx0QGFzc29jaWF0aW9uKHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5cdF9mbGV4SWQ/OiBzdHJpbmc7XG5cblx0cmVxdWVzdEdyb3VwSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IFwiJGF1dG8uV29ya2Vyc1wiO1xuXG5cdGNvbGxhYm9yYXRpb25FbmFibGVkID0gZmFsc2U7XG5cblx0dGFyZ2V0SWQ/OiBzdHJpbmc7XG5cblx0Y29uc3RydWN0b3IocHJvcHM6IFByb3BlcnRpZXNPZjxWYWx1ZUhlbHA+LCBvdGhlcnM/OiBQcm9wZXJ0aWVzT2Y8VmFsdWVIZWxwPikge1xuXHRcdGlmIChwcm9wcy5fZmxleElkKSB7XG5cdFx0XHRwcm9wcy5pZCA9IHByb3BzLl9mbGV4SWQgKyBcIjo6QmxvY2tcIjtcblx0XHR9XG5cdFx0c3VwZXIocHJvcHMsIG90aGVycyk7XG5cdH1cblxuXHRvdmVycmlkZSBhcHBseVNldHRpbmdzKG1TZXR0aW5nczogJE1hbmFnZWRPYmplY3RTZXR0aW5ncywgb1Njb3BlPzogb2JqZWN0KTogdGhpcyB7XG5cdFx0cmV0dXJuIHN1cGVyLmFwcGx5U2V0dGluZ3MobVNldHRpbmdzLCBvU2NvcGUpO1xuXHR9XG5cblx0c3RhdGljIGdldFZhbHVlSGVscEZvck1ldGFQYXRoKFxuXHRcdHBhZ2VDb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcixcblx0XHRtZXRhUGF0aDogc3RyaW5nLFxuXHRcdGNvbnRleHRQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdFx0bWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCB8IHVuZGVmaW5lZCxcblx0XHRyZXF1aXJlc1ZhbGlkYXRpb24gPSBmYWxzZVxuXHQpOiBWYWx1ZUhlbHAgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IGRlcGVuZGVudHMgPSBwYWdlQ29udHJvbGxlci5nZXRWaWV3KCk/LmdldERlcGVuZGVudHMoKTtcblx0XHRjb25zdCB0YXJnZXRNZXRhUGF0aCA9IG1ldGFQYXRoLnN0YXJ0c1dpdGgoXCIvXCIpID8gbWV0YVBhdGggOiBjb250ZXh0UGF0aCArIFwiL1wiICsgbWV0YVBhdGg7XG5cdFx0Y29uc3QgZm91bmREZXAgPSBkZXBlbmRlbnRzPy5maW5kKChjaGlsZCkgPT4ge1xuXHRcdFx0aWYgKGNoaWxkLmlzQTxFbmhhbmNlV2l0aFVJNTxWYWx1ZUhlbHA+PihcInNhcC5mZS5tYWNyb3MuVmFsdWVIZWxwXCIpICYmICFyZXF1aXJlc1ZhbGlkYXRpb24pIHtcblx0XHRcdFx0Y29uc3QgY2hpbGRNZXRhUGF0aCA9IGNoaWxkLmdldE1ldGFQYXRoKCk7XG5cdFx0XHRcdGNvbnN0IGNoaWxkQ29udGV4dFBhdGggPSBjaGlsZC5nZXRDb250ZXh0UGF0aCgpO1xuXHRcdFx0XHRjb25zdCBjaGlsZFRhcmdldFBhdGggPSBjaGlsZE1ldGFQYXRoLnN0YXJ0c1dpdGgoXCIvXCIpID8gY2hpbGRNZXRhUGF0aCA6IGNoaWxkQ29udGV4dFBhdGggKyBcIi9cIiArIGNoaWxkTWV0YVBhdGg7XG5cdFx0XHRcdHJldHVybiBjaGlsZFRhcmdldFBhdGggPT09IHRhcmdldE1ldGFQYXRoO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0pO1xuXHRcdGlmICghZm91bmREZXApIHtcblx0XHRcdGNvbnN0IHZhbHVlSGVscCA9IG5ldyBWYWx1ZUhlbHAoe1xuXHRcdFx0XHRtZXRhUGF0aDogbWV0YVBhdGgsXG5cdFx0XHRcdGNvbnRleHRQYXRoOiBjb250ZXh0UGF0aCxcblx0XHRcdFx0bWV0YU1vZGVsOiBtZXRhTW9kZWw/LmdldElkKCksXG5cdFx0XHRcdGlkUHJlZml4OiBwYWdlQ29udHJvbGxlci5nZXRWaWV3KCk/LmNyZWF0ZUlkKFwiRmllbGRWYWx1ZUhlbHBcIiksXG5cdFx0XHRcdHJlcXVpcmVzVmFsaWRhdGlvbjogcmVxdWlyZXNWYWxpZGF0aW9uXG5cdFx0XHR9KTtcblx0XHRcdHBhZ2VDb250cm9sbGVyLmdldFZpZXcoKS5hZGREZXBlbmRlbnQodmFsdWVIZWxwKTtcblx0XHRcdGlmICghdmFsdWVIZWxwLmdldENvbnRlbnQoKSAmJiB2YWx1ZUhlbHAudGFyZ2V0SWQpIHtcblx0XHRcdFx0Y29uc3QgaW5uZXJWYWx1ZUhlbHAgPSBVSTVFbGVtZW50LmdldEVsZW1lbnRCeUlkKHZhbHVlSGVscC50YXJnZXRJZCk7XG5cdFx0XHRcdHZhbHVlSGVscC5kZXN0cm95KCk7XG5cdFx0XHRcdHJldHVybiBpbm5lclZhbHVlSGVscD8uZ2V0UGFyZW50KCkgYXMgVmFsdWVIZWxwIHwgdW5kZWZpbmVkO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdmFsdWVIZWxwO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gZm91bmREZXAgYXMgVmFsdWVIZWxwIHwgdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHRoaXMuX2dldE93bmVyKCk/LnJ1bkFzT3duZXIoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdGNyZWF0ZUNvbnRlbnQoKTogQ29udHJvbCB8IE1EQ1ZhbHVlSGVscCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgbWV0YUNvbnRleHRQYXRoID0gdGhpcy5nZXRNZXRhUGF0aE9iamVjdCh0aGlzLm1ldGFQYXRoLCB0aGlzLmNvbnRleHRQYXRoKTtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRNZXRhTW9kZWwodGhpcy5tZXRhTW9kZWwpO1xuXHRcdGlmIChtZXRhQ29udGV4dFBhdGggJiYgbWV0YU1vZGVsKSB7XG5cdFx0XHRjb25zdCBlbnRpdHlTZXRPclNpbmdsZXRvbiA9IG1ldGFDb250ZXh0UGF0aC5nZXRDbG9zZXN0RW50aXR5U2V0KCk7XG5cdFx0XHRpZiAoaXNFbnRpdHlTZXQoZW50aXR5U2V0T3JTaW5nbGV0b24pKSB7XG5cdFx0XHRcdHRoaXMuY29sbGFib3JhdGlvbkVuYWJsZWQgPSBNb2RlbEhlbHBlci5pc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZChtZXRhTW9kZWwpO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgbWV0YVBhdGggPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQobWV0YUNvbnRleHRQYXRoLmdldFBhdGgoKSk7XG5cdFx0XHRpZiAobWV0YVBhdGgpIHtcblx0XHRcdFx0aWYgKHRoaXMuZmlsdGVyRmllbGRWYWx1ZUhlbHApIHtcblx0XHRcdFx0XHRtZXRhUGF0aCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChGaWVsZEhlbHBlci52YWx1ZUhlbHBQcm9wZXJ0eUZvckZpbHRlckZpZWxkKG1ldGFQYXRoKSkhO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdG1ldGFQYXRoID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KEZpZWxkSGVscGVyLnZhbHVlSGVscFByb3BlcnR5KG1ldGFQYXRoKSkhO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGlkUHJlZml4ID0gdGhpcy5pZFByZWZpeCA/PyBcIlZhbHVlSGVscFwiO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZVJlc3VsdCA9IGdldFZhbHVlSGVscFRlbXBsYXRlKG1ldGFQYXRoLCB7XG5cdFx0XHRcdFx0bWV0YVBhdGg6IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChtZXRhQ29udGV4dFBhdGguZ2V0UGF0aCgpKSEsXG5cdFx0XHRcdFx0Y29udGV4dFBhdGg6IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChtZXRhQ29udGV4dFBhdGguZ2V0Q29udGV4dFBhdGgoKSkhLFxuXHRcdFx0XHRcdGZpbHRlckZpZWxkVmFsdWVIZWxwOiB0aGlzLmZpbHRlckZpZWxkVmFsdWVIZWxwLFxuXHRcdFx0XHRcdHVzZVNlbWFudGljRGF0ZVJhbmdlOiB0aGlzLnVzZVNlbWFudGljRGF0ZVJhbmdlLFxuXHRcdFx0XHRcdHVzZU11bHRpVmFsdWVGaWVsZDogdGhpcy51c2VNdWx0aVZhbHVlRmllbGQsXG5cdFx0XHRcdFx0bmF2aWdhdGlvblByZWZpeDogdGhpcy5uYXZpZ2F0aW9uUHJlZml4LFxuXHRcdFx0XHRcdHJlcXVpcmVzVmFsaWRhdGlvbjogdGhpcy5yZXF1aXJlc1ZhbGlkYXRpb24sXG5cdFx0XHRcdFx0X2ZsZXhJZDogdGhpcy5fZmxleElkLFxuXHRcdFx0XHRcdGlkUHJlZml4OiBpZFByZWZpeCxcblx0XHRcdFx0XHRjb25kaXRpb25Nb2RlbDogdGhpcy5jb25kaXRpb25Nb2RlbCxcblx0XHRcdFx0XHRyZXF1ZXN0R3JvdXBJZDogdGhpcy5yZXF1ZXN0R3JvdXBJZCxcblx0XHRcdFx0XHRjb2xsYWJvcmF0aW9uRW5hYmxlZDogdGhpcy5jb2xsYWJvcmF0aW9uRW5hYmxlZFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKHR5cGVvZiB0ZW1wbGF0ZVJlc3VsdCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRcdHRoaXMudGFyZ2V0SWQgPSB0ZW1wbGF0ZVJlc3VsdDtcblx0XHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJldHVybiB0ZW1wbGF0ZVJlc3VsdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBZUE7QUFDQTtBQUNBO0FBQ0E7RUFIQSxJQUtxQkEsU0FBUyxJQUFBQyxJQUFBLEdBRDdCQyxjQUFjLENBQUMseUJBQXlCLENBQUMsRUFBQUMsS0FBQSxHQUt4Q0MsV0FBVyxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBTS9CQyxRQUFRLENBQUM7SUFBRUYsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFHLEtBQUEsR0FHNUJELFFBQVEsQ0FBQztJQUFFRixJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQUksS0FBQSxHQU01QkYsUUFBUSxDQUFDO0lBQUVGLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBSyxLQUFBLEdBTzVCSCxRQUFRLENBQUM7SUFBRUYsSUFBSSxFQUFFO0VBQVUsQ0FBQyxDQUFDLEVBQUFNLEtBQUEsR0FNN0JKLFFBQVEsQ0FBQztJQUFFRixJQUFJLEVBQUU7RUFBVSxDQUFDLENBQUMsRUFBQU8sS0FBQSxHQU03QkwsUUFBUSxDQUFDO0lBQUVGLElBQUksRUFBRTtFQUFVLENBQUMsQ0FBQyxFQUFBUSxLQUFBLEdBRzdCTixRQUFRLENBQUM7SUFBRUYsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFTLE1BQUEsR0FHNUJQLFFBQVEsQ0FBQztJQUFFRixJQUFJLEVBQUU7RUFBVSxDQUFDLENBQUMsRUFBQVUsTUFBQSxHQUc3QlgsV0FBVyxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBSixJQUFBLENBQUFlLE1BQUEsSUFBQUMsT0FBQSwwQkFBQUMsY0FBQTtJQVVoQyxTQUFBbEIsVUFBWW1CLEtBQThCLEVBQUVDLE1BQWdDLEVBQUU7TUFBQSxJQUFB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
@@ -7,6 +7,7 @@ import FieldHelper from "sap/fe/macros/field/FieldHelper";
7
7
  import { getValueHelpTemplate } from "sap/fe/macros/internal/valuehelp/ValueHelpTemplating";
8
8
 
9
9
  import type PageController from "sap/fe/core/PageController";
10
+ import type { $ManagedObjectSettings } from "sap/ui/base/ManagedObject";
10
11
  import type Control from "sap/ui/core/Control";
11
12
  import UI5Element from "sap/ui/core/Element";
12
13
  import type MDCValueHelp from "sap/ui/mdc/ValueHelp";
@@ -81,6 +82,10 @@ export default class ValueHelp extends BuildingBlock<MDCValueHelp | Control> {
81
82
  super(props, others);
82
83
  }
83
84
 
85
+ override applySettings(mSettings: $ManagedObjectSettings, oScope?: object): this {
86
+ return super.applySettings(mSettings, oScope);
87
+ }
88
+
84
89
  static getValueHelpForMetaPath(
85
90
  pageController: PageController,
86
91
  metaPath: string,
@@ -2,7 +2,7 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/Log", "sap/base/i18n/Localization", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/controls/easyFilter/EasyFilterBarContainer", "sap/fe/core/buildingBlocks/BuildingBlock", "sap/fe/core/controllerextensions/BusyLocker", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/helpers/TypeGuards", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/core/templating/PropertyHelper", "sap/fe/macros/ai/EasyFilterDataFetcher", "sap/fe/macros/filter/FilterUtils", "sap/fe/macros/filterBar/DraftEditState", "sap/fe/macros/internal/valuehelp/ValueListHelper", "sap/ui/core/Element", "sap/ui/model/FilterOperator", "sap/ui/model/json/JSONModel", "sap/ui/model/odata/type/Date", "sap/ui/model/odata/type/DateTimeOffset", "sap/ui/model/odata/type/TimeOfDay", "sap/fe/base/jsx-runtime/jsx"], function (Log, Localization, BindingToolkit, ClassSupport, EasyFilterBarContainer, BuildingBlock, BusyLocker, ModelHelper, TypeGuards, DataModelPathHelper, PropertyHelper, EasyFilterDataFetcher, FilterUtils, DraftEditState, ValueListHelper, UI5Element, FilterOperator, JSONModel, Date1, DateTimeOffset, TimeOfDay, _jsx) {
5
+ sap.ui.define(["sap/base/Log", "sap/base/i18n/Localization", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/controls/easyFilter/EasyFilterBarContainer", "sap/fe/core/buildingBlocks/BuildingBlock", "sap/fe/core/controllerextensions/BusyLocker", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/helpers/TypeGuards", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/core/templating/PropertyHelper", "sap/fe/macros/ai/EasyFilterDataFetcher", "sap/fe/macros/filter/FilterUtils", "sap/fe/macros/filterBar/DraftEditState", "sap/fe/macros/internal/valuehelp/ValueListHelper", "sap/ui/core/Element", "sap/ui/mdc/enums/OperatorName", "sap/ui/model/FilterOperator", "sap/ui/model/json/JSONModel", "sap/ui/model/odata/type/Date", "sap/ui/model/odata/type/DateTimeOffset", "sap/ui/model/odata/type/TimeOfDay", "sap/fe/base/jsx-runtime/jsx"], function (Log, Localization, BindingToolkit, ClassSupport, EasyFilterBarContainer, BuildingBlock, BusyLocker, ModelHelper, TypeGuards, DataModelPathHelper, PropertyHelper, EasyFilterDataFetcher, FilterUtils, DraftEditState, ValueListHelper, UI5Element, OperatorName, FilterOperator, JSONModel, Date1, DateTimeOffset, TimeOfDay, _jsx) {
6
6
  "use strict";
7
7
 
8
8
  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6;
@@ -354,37 +354,6 @@ sap.ui.define(["sap/base/Log", "sap/base/i18n/Localization", "sap/fe/base/Bindin
354
354
  result = unresolvedResult(values);
355
355
  }
356
356
 
357
- // Apply maxLength filtering if defined
358
- if (field.maxLength !== undefined) {
359
- const filteredTokens = result.map(token => {
360
- if (token.operator === FilterOperator.BT || token.operator === FilterOperator.NB) {
361
- // Handle between operators - selectedValues is ValueHelpBetweenSelectedValues
362
- const [a, b] = token.selectedValues;
363
-
364
- // Check if both values exceed maxLength
365
- if (String(a.value).length <= field.maxLength && String(b.value).length <= field.maxLength) {
366
- return token; // Keep the token if both values are within limit
367
- } else {
368
- return null; // Remove the token if either value exceeds limit
369
- }
370
- } else {
371
- // Handle other operators - selectedValues is CodeListType[]
372
- const filtered = token.selectedValues.filter(selectedValue => String(selectedValue.value).length <= field.maxLength);
373
-
374
- // Only return the token if there are remaining values after filtering
375
- if (filtered.length > 0) {
376
- return {
377
- ...token,
378
- selectedValues: filtered
379
- };
380
- } else {
381
- return null; // Remove the token if no values remain
382
- }
383
- }
384
- }).filter(token => token !== null);
385
- return filteredTokens;
386
- }
387
-
388
357
  // if no maxLength is defined, return unfiltered result
389
358
  return result;
390
359
  };
@@ -415,7 +384,11 @@ sap.ui.define(["sap/base/Log", "sap/base/i18n/Localization", "sap/fe/base/Bindin
415
384
  operator,
416
385
  selectedValues
417
386
  } = tokenKeySpecification;
418
- await FilterUtils.addFilterValues(filterBarAPI.content, field.name, operator, selectedValues);
387
+ if (operator === FilterOperator.NB) {
388
+ await FilterUtils.addFilterValues(filterBarAPI.content, field.name, OperatorName.NOTBT, selectedValues);
389
+ } else {
390
+ await FilterUtils.addFilterValues(filterBarAPI.content, field.name, operator, selectedValues);
391
+ }
419
392
  }
420
393
  }
421
394
  }
@@ -574,4 +547,4 @@ sap.ui.define(["sap/base/Log", "sap/base/i18n/Localization", "sap/fe/base/Bindin
574
547
  _exports = EasyFilterBar;
575
548
  return _exports;
576
549
  }, false);
577
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFYXN5RmlsdGVyQmFyIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJpbXBsZW1lbnRJbnRlcmZhY2UiLCJfZGVjMyIsImFzc29jaWF0aW9uIiwidHlwZSIsIl9kZWM0IiwiX2RlYzUiLCJwcm9wZXJ0eSIsIl9kZWM2IiwiX2RlYzciLCJhZ2dyZWdhdGlvbiIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsInByb3BlcnRpZXMiLCJvdGhlcnMiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJwcmVwYXJlRmVhdHVyZSIsInRoZW4iLCJlYXN5RmlsdGVyUGF0aCIsImNvbnRlbnQiLCJzZXRFYXN5RmlsdGVyTGliIiwiY2F0Y2giLCJlcnJvciIsIkxvZyIsImRlYnVnIiwidW5kZWZpbmVkIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImFwcGx5TGVnYWN5U3RhdGUiLCJnZXRDb250cmlsU3RhdGUiLCJvTmF2UGFyYW1ldGVycyIsIl9zaG91bGRBcHBseURpZmZTdGF0ZSIsIl9za2lwTWVyZ2UiLCJzZWxlY3Rpb25WYXJpYW50Iiwic2VsZWN0T3B0aW9uc05hbWVzIiwiZ2V0U2VsZWN0T3B0aW9uc1Byb3BlcnR5TmFtZXMiLCJmaWx0ZXJCYXJNZXRhZGF0YSIsImZvckVhY2giLCJmaWVsZCIsImluY2x1ZGVzIiwibmFtZSIsImRlZmF1bHRWYWx1ZSIsImdldFNlbGVjdE9wdGlvbiIsInJlZHVjZSIsImFjYyIsIm9wdGlvbiIsIlNpZ24iLCJPcHRpb24iLCJGaWx0ZXJPcGVyYXRvciIsIkJUIiwiTkIiLCJIaWdoIiwicHVzaCIsIm9wZXJhdG9yIiwic2VsZWN0ZWRWYWx1ZXMiLCJMb3ciLCJORSIsInJlc2V0U3RhdGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsImFwcGx5U3RhdGUiLCJfc3RhdGUiLCJfb05hdlBhcmFtZXRlcnMiLCJyZXRyaWV2ZVN0YXRlIiwiZ2V0QXBwbGljYXRpb25JZCIsImdldE1hbmlmZXN0RW50cnkiLCJpZCIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJwcmVwYXJlRmlsdGVyQmFyTWV0YWRhdGEiLCJyZWNvbW1lbmRlZFF1ZXJpZXMiLCJtYWNyb3MiLCJlYXN5RmlsdGVyIiwiY3JlYXRlQ29udGVudCIsImdldFVuaXRGb3JQcm9wZXJ0eSIsInByb3AiLCJiYXNlUGF0aCIsInVuaXRBbm5vdGF0aW9uIiwiYW5ub3RhdGlvbnMiLCJNZWFzdXJlcyIsIklTT0N1cnJlbmN5IiwiVW5pdCIsImlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIiwicGF0aCIsImdldERlZmF1bHRWYWx1ZUZvckZpbHRlckZpZWxkIiwic3RhcnR1cFBhcmFtZXRlcnMiLCJoYXNPd25Qcm9wZXJ0eSIsIkVRIiwiaXNQYXJhbWV0ZXIiLCJzdWJzdHJpbmciLCJnZXRFZGl0U3RhdGVGaWx0ZXJNZXRhZGF0YSIsIm1ldGFNb2RlbCIsInByb3BzIiwiSlNPTk1vZGVsIiwiaXNEcmFmdENvbGxhYm9yYXRpdmUiLCJNb2RlbEhlbHBlciIsImlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJlZGl0aW5nU3RhdHVzQ29kZUxpc3QiLCJEcmFmdEVkaXRTdGF0ZSIsImdldEVkaXRTdGF0ZXNDb250ZXh0IiwiZ2V0T2JqZWN0IiwibWFwIiwic3RhdGUiLCJ2YWx1ZSIsImRlc2NyaXB0aW9uIiwiZGlzcGxheSIsImxhYmVsIiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJkYXRhVHlwZSIsImZpbHRlcmFibGUiLCJjb2RlTGlzdCIsImdldFRva2VuVHlwZSIsImZpbHRlclJlc3RyaWN0aW9uIiwiaGFzVmFsdWVIZWxwV2l0aEZpeGVkVmFsdWVzIiwiZ2V0TGFiZWwiLCJlbGVtZW50IiwiQ29tbW9uIiwiTGFiZWwiLCJ0b1N0cmluZyIsImhlYWRlckluZm9UeXBlTmFtZSIsImlzRW50aXR5VHlwZSIsIlVJIiwiSGVhZGVySW5mbyIsIlR5cGVOYW1lIiwidmFsdWVPZiIsInJlc3VsdCIsImlzQ29tcGxleFByb3BlcnR5IiwiaXNOYXZpZ2F0aW9uUHJvcGVydHkiLCJ0YXJnZXRUeXBlIiwiaXNTY2FsYXJQcm9wZXJ0eSIsImlzUHJvcGVydHkiLCJpc0NvbXBsZXhUeXBlIiwib3duZXIiLCJfZ2V0T3duZXIiLCJkZWZpbml0aW9uRm9yUGFnZSIsInByZXByb2Nlc3NvckNvbnRleHQiLCJnZXREZWZpbml0aW9uRm9yUGFnZSIsImZpbHRlckJhckRlZiIsImdldEZpbHRlckJhckRlZmluaXRpb24iLCJtZXRhUGF0aCIsImdldE1ldGFQYXRoIiwiZW50aXR5U2V0IiwiZ2V0Q2xvc2VzdEVudGl0eVNldCIsImZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMiLCJDYXBhYmlsaXRpZXMiLCJGaWx0ZXJSZXN0cmljdGlvbnMiLCJGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIiwibmF2aWdhdGlvblByb3BlcnR5IiwibmF2aWdhdGlvblByb3BlcnR5QmluZGluZyIsIl90eXBlIiwibmF2aWdhdGlvblByb3BlcnR5RW50aXR5U2V0IiwibmF2UHJvcGVydHlGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIiwiY3VycmVudEZpbHRlclJlc3RyaWN0aW9ucyIsImZpbHRlciIsInJlc3RyaWN0aW9uIiwibW9kZWxzIiwiZ2V0Q29kZUxpc3QiLCJsYXN0UGF0aFNlZ21lbnQiLCJwcm9wZXJ0eVBhdGgiLCJnZXRDb2RlTGlzdEZvclByb3BlcnR5IiwiZmlsdGVyRmllbGRzIiwiZ2V0RmlsdGVyRmllbGRzIiwiZ2V0VGFyZ2V0IiwiSGlkZGVuRmlsdGVyIiwiZ2V0Q29tcG9uZW50RGF0YSIsIm1heERlcHRoIiwicGF0aHNUb0V4cGxvcmUiLCJlbnRpdHlUeXBlIiwiZW50aXR5UHJvcGVydGllcyIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwicGF0aHNUb0VsaW1pbmF0ZSIsIlNldCIsImdldFBhdGhMYWJlbCIsInBhdGhMYWJlbHMiLCJlIiwiTG9jYWxpemF0aW9uIiwiZ2V0UlRMIiwic2xpY2UiLCJyZXZlcnNlIiwiam9pbiIsImxlbmd0aCIsImN1cnJlbnRQYXRoIiwic2hpZnQiLCJuYXZpZ2F0aW9uRGVwdGgiLCJIaWRkZW4iLCJwYXRoU3RyaW5nIiwiY3VyciIsInRleHRBbm5vdGF0aW9uIiwiVGV4dCIsImFkZCIsImZpbHRlckZpZWxkIiwiZmluZCIsImV4cHJlc3Npb24iLCJQcm9wZXJ0eSIsIiR0YXJnZXQiLCJpc1BhdGhGaWx0ZXJhYmxlIiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsImZpbHRlcmFibGVFeHByZXNzaW9uIiwiaXNDb25zdGFudCIsImZpbHRlclJlc3RyaWN0aW9uRXhwcmVzc2lvbiIsIkFsbG93ZWRFeHByZXNzaW9ucyIsIm1ldGFkYXRhIiwicmVxdWlyZWQiLCJoaWRkZW5GaWx0ZXIiLCJ1bml0IiwiY2hpbGQiLCJpc0NvbGxlY3Rpb24iLCJzb21lIiwiYW5ub3RhdGlvblBhdGgiLCJzdGFydHNXaXRoIiwiaXNNZXRhUGF0aERyYWZ0U3VwcG9ydGVkIiwiaGFzIiwiZGVmYXVsdFZhbHVlTGlzdCIsImdldFZhbHVlTGlzdCIsInZhbHVlTGlzdEluZm8iLCJsaXN0QmluZGluZyIsIiRtb2RlbCIsImJpbmRMaXN0IiwiQ29sbGVjdGlvblBhdGgiLCIkc2VsZWN0IiwiZ2VuZXJhdGVTZWxlY3RQYXJhbWV0ZXIiLCJkYXRhIiwicmVxdWVzdENvbnRleHRzIiwiZmlsdGVyR3JvdXBWYWx1ZXMiLCJtYXBWYWx1ZUxpc3RUb0NvZGVMaXN0IiwiY29kZUxpc3RQcm9wZXJ0eSIsInJlc29sdmVUb2tlblZhbHVlc0ZvckZpZWxkIiwiZmllbGROYW1lIiwidmFsdWVzIiwiX3JlZiIsInVucmVzb2x2ZWRSZXN1bHQiLCJ2YWx1ZUxpc3QiLCJWYWx1ZUxpc3RIZWxwZXIiLCJpc1ZhbHVlTGlzdFNlYXJjaGFibGUiLCJyZXNvbHZlZFRva2VuVmFsdWVzIiwiYWxsIiwicmVzb2x2ZVRva2VuVmFsdWUiLCJmbGF0IiwibWF4TGVuZ3RoIiwiZmlsdGVyZWRUb2tlbnMiLCJ0b2tlbiIsImEiLCJiIiwiU3RyaW5nIiwiZmlsdGVyZWQiLCJzZWxlY3RlZFZhbHVlIiwiZ2V0TWV0YU1vZGVsIiwidmFsdWVMaXN0cyIsImdldFZhbHVlTGlzdEluZm8iLCJvblRva2Vuc0NoYW5nZWQiLCJmaWx0ZXJCYXIiLCJVSTVFbGVtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJmaWx0ZXJCYXJBUEkiLCJnZXRQYXJlbnQiLCJ0b2tlbnMiLCJnZXRQYXJhbWV0ZXIiLCJjbGVhckVkaXRGaWx0ZXIiLCJ0b2tlbkRlZmluaXRpb24iLCJrZXkiLCJfY2xlYXJGaWx0ZXJWYWx1ZXNXaXRoT3B0aW9ucyIsImZvcm1hdGVEYXRhVHlwZXMiLCJ0b2tlbktleVNwZWNpZmljYXRpb24iLCJrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzIiwiRmlsdGVyVXRpbHMiLCJhZGRGaWx0ZXJWYWx1ZXMiLCJmIiwidHJpZ2dlclNlYXJjaCIsImRhdGVUeXBlIiwiRGF0ZTEiLCJkYXRlVGltZU9mZnNldFR5cGUiLCJEYXRlVGltZU9mZnNldCIsIlY0IiwidGltZU9mRGF5VHlwZSIsIlRpbWVPZkRheSIsImVkbVR5cGUiLCJrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWUiLCJyZXF1aXJlZENvbnZlcnRlciIsImlkeCIsInBhcnNlVmFsdWUiLCJzaG93VmFsdWVIZWxwRm9yS2V5Iiwic2hvd0ZpbHRlckZpZWxkIiwib3BlblZhbHVlSGVscEZvckZpbHRlckZpZWxkIiwib25CZWZvcmVRdWVyeVByb2Nlc3NpbmciLCJ1aU1vZGVsIiwiZ2V0TW9kZWwiLCJCdXN5TG9ja2VyIiwibG9jayIsIm9uQWZ0ZXJRdWVyeVByb2Nlc3NpbmciLCJ1bmxvY2siLCJvbkNsZWFyRmlsdGVycyIsIm9uUXVlcnlDaGFuZ2VkIiwiZmlyZUZpbHRlcnNDaGFuZ2VkIiwiY29uZGl0aW9uc0Jhc2VkIiwiaGFuZGxlU2hvd1ZhbHVlSGVscCIsImV2ZW50IiwicmVqZWN0IiwiY29uZGl0aW9ucyIsImNvbmRpdGlvbiIsInZhbGlkYXRlZCIsImNvbmRpdGlvblRvUmVzb2x2ZSIsIndhcm5pbmciLCJyZXNvbHZlZFZhbHVlcyIsIkVycm9yIiwiX2pzeCIsIkVhc3lGaWx0ZXJCYXJDb250YWluZXIiLCJjb250ZXh0UGF0aCIsImdldE93bmVyQ29udGV4dFBhdGgiLCJhcHBJZCIsImVhc3lGaWx0ZXJMaWIiLCJzaG93VmFsdWVIZWxwIiwiYmluZCIsImRhdGFGZXRjaGVyIiwicmVjb21tZW5kZWRWYWx1ZXMiLCJxdWVyeUNoYW5nZWQiLCJ0b2tlbnNDaGFuZ2VkIiwiYmVmb3JlUXVlcnlQcm9jZXNzaW5nIiwiYWZ0ZXJRdWVyeVByb2Nlc3NpbmciLCJjbGVhckZpbHRlcnMiLCJCdWlsZGluZ0Jsb2NrIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJFYXN5RmlsdGVyQmFyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbXBsZXhUeXBlLCBFbnRpdHlTZXQsIEVudGl0eVR5cGUsIE5hdmlnYXRpb25Qcm9wZXJ0eSwgUHJvcGVydHksIFR5cGVEZWZpbml0aW9uIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBMb2NhbGl6YXRpb24gZnJvbSBcInNhcC9iYXNlL2kxOG4vTG9jYWxpemF0aW9uXCI7XG5pbXBvcnQgeyBpc0NvbnN0YW50IH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IEVuaGFuY2VXaXRoVUk1IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGFzc29jaWF0aW9uLCBkZWZpbmVVSTVDbGFzcywgaW1wbGVtZW50SW50ZXJmYWNlLCBwcm9wZXJ0eSwgdHlwZSBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7XG5cdENvZGVMaXN0VHlwZSxcblx0RWFzeUZpbHRlckJhckNvbnRhaW5lciRTaG93VmFsdWVIZWxwRXZlbnQsXG5cdEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhLFxuXHRUb2tlbkRlZmluaXRpb24sXG5cdFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uLFxuXHRUb2tlblR5cGUsXG5cdFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvbnRyb2xzL2Vhc3lGaWx0ZXIvRWFzeUZpbHRlckJhckNvbnRhaW5lclwiO1xuaW1wb3J0IEVhc3lGaWx0ZXJCYXJDb250YWluZXIgZnJvbSBcInNhcC9mZS9jb250cm9scy9lYXN5RmlsdGVyL0Vhc3lGaWx0ZXJCYXJDb250YWluZXJcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgQnVzeUxvY2tlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvQnVzeUxvY2tlclwiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sU3RhdGUsIE5hdmlnYXRpb25QYXJhbWV0ZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVmlld1N0YXRlXCI7XG5pbXBvcnQgdHlwZSBJVmlld1N0YXRlQ29udHJpYnV0b3IgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL3ZpZXdTdGF0ZS9JVmlld1N0YXRlQ29udHJpYnV0b3JcIjtcbmltcG9ydCB7IHR5cGUgRmlsdGVyRmllbGQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvZGVmaW5pdGlvbi9GRURlZmluaXRpb25cIjtcbmltcG9ydCB0eXBlIE1ldGFQYXRoIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01ldGFQYXRoXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IGlzQ29tcGxleFR5cGUsIGlzRW50aXR5VHlwZSwgaXNOYXZpZ2F0aW9uUHJvcGVydHksIGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uLCBpc1Byb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IHsgaXNQYXRoRmlsdGVyYWJsZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGhhc1ZhbHVlSGVscFdpdGhGaXhlZFZhbHVlcyB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQge1xuXHRnZW5lcmF0ZVNlbGVjdFBhcmFtZXRlcixcblx0bWFwVmFsdWVMaXN0VG9Db2RlTGlzdCxcblx0cmVzb2x2ZVRva2VuVmFsdWUsXG5cdHVucmVzb2x2ZWRSZXN1bHRcbn0gZnJvbSBcInNhcC9mZS9tYWNyb3MvYWkvRWFzeUZpbHRlckRhdGFGZXRjaGVyXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvRmlsdGVyQmFyXCI7XG5pbXBvcnQgRmlsdGVyVXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlclV0aWxzXCI7XG5pbXBvcnQgRHJhZnRFZGl0U3RhdGUgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0RyYWZ0RWRpdFN0YXRlXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXJBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckJhckFQSVwiO1xuaW1wb3J0IFZhbHVlTGlzdEhlbHBlciwgeyB0eXBlIFZhbHVlTGlzdEluZm8gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC92YWx1ZWhlbHAvVmFsdWVMaXN0SGVscGVyXCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IHR5cGUgeyBDb25kaXRpb25PYmplY3QgfSBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vQ29uZGl0aW9uXCI7XG5pbXBvcnQgRmlsdGVyT3BlcmF0b3IgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJPcGVyYXRvclwiO1xuaW1wb3J0IEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgRGF0ZTEgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS90eXBlL0RhdGVcIjtcbmltcG9ydCBEYXRlVGltZU9mZnNldCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3R5cGUvRGF0ZVRpbWVPZmZzZXRcIjtcbmltcG9ydCB0eXBlIE9EYXRhVHlwZSBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3R5cGUvT0RhdGFUeXBlXCI7XG5pbXBvcnQgVGltZU9mRGF5IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdHlwZS9UaW1lT2ZEYXlcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgQ29kZUxpc3QgfSBmcm9tIFwidXgvZW5nL2Zpb3JpYWkvcmV1c2UvZWFzeWZpbHRlci9FYXN5RmlsdGVyXCI7XG5cbnR5cGUgRWFzeUZpbHRlckJhclN0YXRlID0ge307XG50eXBlIEZpZWxkTWV0YWRhdGEgPSBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSAmIHsgbWF4TGVuZ3RoPzogbnVtYmVyIH07XG5cbi8qKlxuICogRGVsaXZlcnkgZm9yIGJldGEgcmVsZWFzZSBmb3IgdGhlIGVhc3kgZmlsdGVyIGZlYXR1cmUuXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuRWFzeUZpbHRlckJhclwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWFzeUZpbHRlckJhciBleHRlbmRzIEJ1aWxkaW5nQmxvY2sgaW1wbGVtZW50cyBJVmlld1N0YXRlQ29udHJpYnV0b3I8RWFzeUZpbHRlckJhclN0YXRlPiB7XG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy52aWV3U3RhdGUuSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCIpXG5cdF9faW1wbGVtZW50c19fc2FwX2ZlX2NvcmVfY29udHJvbGxlcmV4dGVuc2lvbnNfdmlld1N0YXRlX0lWaWV3U3RhdGVDb250cmlidXRvciE6IGJvb2xlYW47XG5cblx0QGFzc29jaWF0aW9uKHsgdHlwZTogXCJzYXAuZmUubWFjcm9zLmZpbHRlckJhci5GaWx0ZXJCYXJBUElcIiB9KVxuXHRmaWx0ZXJCYXIhOiBzdHJpbmc7XG5cblx0QGFzc29jaWF0aW9uKHsgdHlwZTogXCJzYXAuZmUubWFjcm9zLmNvbnRlbnRTd2l0Y2hlci5Db250ZW50U3dpdGNoZXJcIiB9KVxuXHRjb250ZW50U3dpdGNoZXIhOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRjb250ZW50U3dpdGNoZXJLZXk/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRjb250ZXh0UGF0aD86IHN0cmluZztcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5mZS5jb250cm9scy5lYXN5RmlsdGVyLkVhc3lGaWx0ZXJCYXJDb250YWluZXJcIiB9KVxuXHRjb250ZW50PzogRW5oYW5jZVdpdGhVSTU8RWFzeUZpbHRlckJhckNvbnRhaW5lcj47XG5cblx0cHJpdmF0ZSBmaWx0ZXJCYXJNZXRhZGF0YSE6IEZpZWxkTWV0YWRhdGFbXTtcblxuXHRwcml2YXRlIGVhc3lGaWx0ZXJQYXRoPzogc3RyaW5nO1xuXG5cdHByaXZhdGUgcmVjb21tZW5kZWRRdWVyaWVzPzogc3RyaW5nW107XG5cblx0Y29uc3RydWN0b3IocHJvcGVydGllczogJENvbnRyb2xTZXR0aW5ncyAmIFByb3BlcnRpZXNPZjxFYXN5RmlsdGVyQmFyPiwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdHN1cGVyKHByb3BlcnRpZXMsIG90aGVycyk7XG5cdFx0dGhpcy5nZXRBcHBDb21wb25lbnQoKVxuXHRcdFx0Py5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpXG5cdFx0XHQucHJlcGFyZUZlYXR1cmUoXCJNYWdpY0ZpbHRlcmluZ1wiKVxuXHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmVhc3lGaWx0ZXJQYXRoID0gXCJ1eC9lbmcvZmlvcmlhaS9yZXVzZS9lYXN5ZmlsdGVyL0Vhc3lGaWx0ZXJcIjtcblx0XHRcdFx0dGhpcy5jb250ZW50Py5zZXRFYXN5RmlsdGVyTGliKHRoaXMuZWFzeUZpbHRlclBhdGgpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKChlcnJvcikgPT4ge1xuXHRcdFx0XHRMb2cuZGVidWcoXCJFcnJvciB3aGlsZSBsb2FkaW5nIEVhc3lGaWx0ZXJcIiwgZXJyb3IpO1xuXHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0fSk7XG5cdH1cblxuXHRhc3luYyBhcHBseUxlZ2FjeVN0YXRlKFxuXHRcdGdldENvbnRyaWxTdGF0ZT86IChjb250cm9sOiBNYW5hZ2VkT2JqZWN0KSA9PiBDb250cm9sU3RhdGUsXG5cdFx0b05hdlBhcmFtZXRlcnM/OiBOYXZpZ2F0aW9uUGFyYW1ldGVyLFxuXHRcdF9zaG91bGRBcHBseURpZmZTdGF0ZT86IGJvb2xlYW4sXG5cdFx0X3NraXBNZXJnZT86IGJvb2xlYW5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKG9OYXZQYXJhbWV0ZXJzPy5zZWxlY3Rpb25WYXJpYW50KSB7XG5cdFx0XHRjb25zdCBzZWxlY3RPcHRpb25zTmFtZXMgPSBvTmF2UGFyYW1ldGVycy5zZWxlY3Rpb25WYXJpYW50LmdldFNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzKCk7XG5cdFx0XHR0aGlzLmZpbHRlckJhck1ldGFkYXRhLmZvckVhY2goKGZpZWxkKSA9PiB7XG5cdFx0XHRcdGlmIChzZWxlY3RPcHRpb25zTmFtZXMuaW5jbHVkZXMoZmllbGQubmFtZSkpIHtcblx0XHRcdFx0XHRmaWVsZC5kZWZhdWx0VmFsdWUgPSBvTmF2UGFyYW1ldGVycy5zZWxlY3Rpb25WYXJpYW50IS5nZXRTZWxlY3RPcHRpb24oZmllbGQubmFtZSk/LnJlZHVjZSgoYWNjLCBvcHRpb24pID0+IHtcblx0XHRcdFx0XHRcdGlmIChvcHRpb24uU2lnbiA9PT0gXCJJXCIpIHtcblx0XHRcdFx0XHRcdFx0aWYgKG9wdGlvbi5PcHRpb24gPT09IEZpbHRlck9wZXJhdG9yLkJUIHx8IG9wdGlvbi5PcHRpb24gPT09IEZpbHRlck9wZXJhdG9yLk5CKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKG9wdGlvbi5IaWdoICE9PSBudWxsICYmIG9wdGlvbi5IaWdoICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGFjYy5wdXNoKHsgb3BlcmF0b3I6IG9wdGlvbi5PcHRpb24sIHNlbGVjdGVkVmFsdWVzOiBbb3B0aW9uLkxvdywgb3B0aW9uLkhpZ2hdIH0pO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRhY2MucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRvcGVyYXRvcjogb3B0aW9uLk9wdGlvbiBhcyBFeGNsdWRlPEZpbHRlck9wZXJhdG9yLCBGaWx0ZXJPcGVyYXRvci5CVCB8IEZpbHRlck9wZXJhdG9yLk5CPixcblx0XHRcdFx0XHRcdFx0XHRcdHNlbGVjdGVkVmFsdWVzOiBbb3B0aW9uLkxvd11cblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0YWNjLnB1c2goeyBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IuTkUsIHNlbGVjdGVkVmFsdWVzOiBbb3B0aW9uLkxvd10gfSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm4gYWNjO1xuXHRcdFx0XHRcdH0sIFtdIGFzIFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHRoaXMuY29udGVudD8ucmVzZXRTdGF0ZShmYWxzZSk7XG5cdFx0fVxuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcblx0fVxuXG5cdGFwcGx5U3RhdGUoX3N0YXRlOiBFYXN5RmlsdGVyQmFyU3RhdGUsIF9vTmF2UGFyYW1ldGVycz86IE5hdmlnYXRpb25QYXJhbWV0ZXIpOiBQcm9taXNlPHZvaWQ+IHwgdm9pZCB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdHJldHJpZXZlU3RhdGUoKTogRWFzeUZpbHRlckJhclN0YXRlIHwgbnVsbCB7XG5cdFx0cmV0dXJuIHt9O1xuXHR9XG5cblx0Z2V0QXBwbGljYXRpb25JZCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLmdldEFwcENvbXBvbmVudCgpPy5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLmFwcFwiKS5pZCA/PyBcIjx1bmtub3duSUQ+XCI7XG5cdH1cblxuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKCk6IHZvaWQge1xuXHRcdHRoaXMuZmlsdGVyQmFyTWV0YWRhdGEgPSB0aGlzLnByZXBhcmVGaWx0ZXJCYXJNZXRhZGF0YSgpO1xuXHRcdHRoaXMucmVjb21tZW5kZWRRdWVyaWVzID0gdGhpcy5nZXRBcHBDb21wb25lbnQoKT8uZ2V0TWFuaWZlc3RFbnRyeShcInNhcC5mZVwiKT8ubWFjcm9zPy5lYXN5RmlsdGVyPy5yZWNvbW1lbmRlZFF1ZXJpZXMgPz8gW107XG5cdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCkgYXMgRW5oYW5jZVdpdGhVSTU8RWFzeUZpbHRlckJhckNvbnRhaW5lcj47XG5cdFx0dGhpcy5jb250ZW50LmZpbHRlckJhck1ldGFkYXRhID0gdGhpcy5maWx0ZXJCYXJNZXRhZGF0YTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0VW5pdEZvclByb3BlcnR5KHByb3A6IFByb3BlcnR5LCBiYXNlUGF0aDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCB1bml0QW5ub3RhdGlvbiA9IHByb3AuYW5ub3RhdGlvbnMuTWVhc3VyZXM/LklTT0N1cnJlbmN5ID8/IHByb3AuYW5ub3RhdGlvbnMuTWVhc3VyZXM/LlVuaXQ7XG5cdFx0cmV0dXJuIGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uKHVuaXRBbm5vdGF0aW9uKSA/IGAke2Jhc2VQYXRofS8ke3VuaXRBbm5vdGF0aW9uLnBhdGh9YCA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdHByaXZhdGUgZ2V0RGVmYXVsdFZhbHVlRm9yRmlsdGVyRmllbGQoXG5cdFx0ZmllbGQ6IEZpbHRlckZpZWxkLFxuXHRcdHN0YXJ0dXBQYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuXHQpOiBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdIHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgZGVmYXVsdFZhbHVlOiBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdIHwgdW5kZWZpbmVkO1xuXHRcdGlmIChzdGFydHVwUGFyYW1ldGVycy5oYXNPd25Qcm9wZXJ0eShmaWVsZC5uYW1lKSkge1xuXHRcdFx0ZGVmYXVsdFZhbHVlID0gW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0b3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLkVRLFxuXHRcdFx0XHRcdHNlbGVjdGVkVmFsdWVzOiBzdGFydHVwUGFyYW1ldGVyc1tmaWVsZC5uYW1lXSBhcyBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltcInNlbGVjdGVkVmFsdWVzXCJdXG5cdFx0XHRcdH1cblx0XHRcdF07XG5cdFx0fSBlbHNlIGlmIChmaWVsZC5pc1BhcmFtZXRlciAmJiBzdGFydHVwUGFyYW1ldGVycy5oYXNPd25Qcm9wZXJ0eShmaWVsZC5uYW1lLnN1YnN0cmluZygyKSkpIHtcblx0XHRcdGRlZmF1bHRWYWx1ZSA9IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvci5FUSxcblx0XHRcdFx0XHRzZWxlY3RlZFZhbHVlczogc3RhcnR1cFBhcmFtZXRlcnNbZmllbGQubmFtZS5zdWJzdHJpbmcoMildIGFzIFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW1wic2VsZWN0ZWRWYWx1ZXNcIl1cblx0XHRcdFx0fVxuXHRcdFx0XTtcblx0XHR9XG5cdFx0cmV0dXJuIGRlZmF1bHRWYWx1ZTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0RWRpdFN0YXRlRmlsdGVyTWV0YWRhdGEobWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCk6IEZpZWxkTWV0YWRhdGEge1xuXHRcdC8vIEFzc2VtYmxlIHRoZSBjb2RlIGxpc3QgZm9yIHRoZSBlZGl0aW5nIHN0YXR1cyBmaWx0ZXIgdmFsdWVzOlxuXHRcdGNvbnN0IHByb3BzID0gbmV3IEpTT05Nb2RlbCh7XG5cdFx0XHRpc0RyYWZ0Q29sbGFib3JhdGl2ZTogTW9kZWxIZWxwZXIuaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQobWV0YU1vZGVsKVxuXHRcdH0pLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiKTtcblxuXHRcdGNvbnN0IGVkaXRpbmdTdGF0dXNDb2RlTGlzdCA9IERyYWZ0RWRpdFN0YXRlLmdldEVkaXRTdGF0ZXNDb250ZXh0KHByb3BzKVxuXHRcdFx0LmdldE9iamVjdChcIi9cIilcblx0XHRcdC5tYXAoKHN0YXRlOiB7IGlkOiBzdHJpbmc7IGRpc3BsYXk6IHN0cmluZyB9KSA9PiAoeyB2YWx1ZTogc3RhdGUuaWQsIGRlc2NyaXB0aW9uOiBzdGF0ZS5kaXNwbGF5IH0pKTtcblxuXHRcdHJldHVybiB7XG5cdFx0XHRuYW1lOiBcIiRlZGl0U3RhdGVcIixcblx0XHRcdGxhYmVsOiB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiRklMVEVSQkFSX0VESVRJTkdfU1RBVFVTXCIpLFxuXHRcdFx0ZGF0YVR5cGU6IFwiRWRtLlN0cmluZ1wiLFxuXHRcdFx0ZmlsdGVyYWJsZTogdHJ1ZSxcblx0XHRcdGNvZGVMaXN0OiBlZGl0aW5nU3RhdHVzQ29kZUxpc3QsXG5cdFx0XHR0eXBlOiBcIk1lbnVXaXRoU2luZ2xlU2VsZWN0XCJcblx0XHR9O1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRUb2tlblR5cGUocHJvcDogUHJvcGVydHksIGZpbHRlclJlc3RyaWN0aW9uOiBzdHJpbmcpOiBUb2tlblR5cGUge1xuXHRcdGlmIChoYXNWYWx1ZUhlbHBXaXRoRml4ZWRWYWx1ZXMocHJvcCkpIHtcblx0XHRcdHJldHVybiBmaWx0ZXJSZXN0cmljdGlvbiA9PT0gXCJTaW5nbGVWYWx1ZVwiID8gXCJNZW51V2l0aFNpbmdsZVNlbGVjdFwiIDogXCJNZW51V2l0aENoZWNrQm94XCI7XG5cdFx0fVxuXHRcdHN3aXRjaCAocHJvcC50eXBlKSB7XG5cdFx0XHRjYXNlIFwiRWRtLkRhdGVcIjpcblx0XHRcdFx0cmV0dXJuIFwiQ2FsZW5kYXJcIjtcblx0XHRcdGNhc2UgXCJFZG0uVGltZU9mRGF5XCI6XG5cdFx0XHRcdHJldHVybiBcIlRpbWVcIjtcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiBcIlZhbHVlSGVscFwiO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgZ2V0TGFiZWwoZWxlbWVudDogUHJvcGVydHkgfCBOYXZpZ2F0aW9uUHJvcGVydHkgfCBFbnRpdHlUeXBlIHwgQ29tcGxleFR5cGUpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IGxhYmVsID0gZWxlbWVudC5hbm5vdGF0aW9ucy5Db21tb24/LkxhYmVsPy50b1N0cmluZygpO1xuXHRcdGNvbnN0IGhlYWRlckluZm9UeXBlTmFtZSA9IGlzRW50aXR5VHlwZShlbGVtZW50KSA/IChlbGVtZW50LmFubm90YXRpb25zLlVJPy5IZWFkZXJJbmZvPy5UeXBlTmFtZT8udmFsdWVPZigpIGFzIHN0cmluZykgOiB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgcmVzdWx0ID0gaGVhZGVySW5mb1R5cGVOYW1lIHx8IGxhYmVsO1xuXG5cdFx0aWYgKHRoaXMuaXNDb21wbGV4UHJvcGVydHkoZWxlbWVudCkgfHwgaXNOYXZpZ2F0aW9uUHJvcGVydHkoZWxlbWVudCkpIHtcblx0XHRcdHJldHVybiByZXN1bHQgfHwgdGhpcy5nZXRMYWJlbChlbGVtZW50LnRhcmdldFR5cGUpO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHRwcml2YXRlIGlzU2NhbGFyUHJvcGVydHkoZWxlbWVudDogdW5rbm93bik6IGVsZW1lbnQgaXMgUHJvcGVydHkgJiB7IHRhcmdldFR5cGU/OiBUeXBlRGVmaW5pdGlvbiB9IHtcblx0XHRyZXR1cm4gaXNQcm9wZXJ0eShlbGVtZW50KSAmJiAhaXNDb21wbGV4VHlwZShlbGVtZW50LnRhcmdldFR5cGUpO1xuXHR9XG5cblx0cHJpdmF0ZSBpc0NvbXBsZXhQcm9wZXJ0eShlbGVtZW50OiB1bmtub3duKTogZWxlbWVudCBpcyBQcm9wZXJ0eSAmIHsgdGFyZ2V0VHlwZTogQ29tcGxleFR5cGUgfSB7XG5cdFx0cmV0dXJuIGlzUHJvcGVydHkoZWxlbWVudCkgJiYgaXNDb21wbGV4VHlwZShlbGVtZW50LnRhcmdldFR5cGUpO1xuXHR9XG5cblx0cHJlcGFyZUZpbHRlckJhck1ldGFkYXRhKCk6IEZpZWxkTWV0YWRhdGFbXSB7XG5cdFx0Lypcblx0XHQgKiAxLiBJTklUSUFMSVpBVElPTjpcblx0XHQgKiAgICAtIFF1ZXVlIGFsbCByb290IGVudGl0eSBwcm9wZXJ0aWVzIGFuZCBuYXZpZ2F0aW9uIHByb3BlcnRpZXMgZm9yIHRyYXZlcnNhbFxuXHRcdCAqICAgIC0gSW5pdGlhbGl6ZSByZXN1bHQgYXJyYXkgYW5kIGVsaW1pbmF0aW9uIHNldCBmb3IgQ29tbW9uLlRleHQgdGFyZ2V0c1xuXHRcdCAqXG5cdFx0ICogMi4gQlJFQURUSC1GSVJTVCBUUkFWRVJTQUw6XG5cdFx0ICogICAgRm9yIGVhY2ggcGF0aCBpbiBxdWV1ZTpcblx0XHQgKiAgICAtIFNraXAgVUkuSGlkZGVuIHByb3BlcnRpZXNcblx0XHQgKiAgICAtIFNjYWxhciBwcm9wZXJ0aWVzOiBHZW5lcmF0ZSBtZXRhZGF0YSwgdHJhY2sgQ29tbW9uLlRleHQgdGFyZ2V0cyBmb3IgZWxpbWluYXRpb25cblx0XHQgKiAgICAtIENvbXBsZXggcHJvcGVydGllczogQWRkIGNoaWxkIHByb3BlcnRpZXMgdG8gcXVldWVcblx0XHQgKiAgICAtIE5hdmlnYXRpb24gcHJvcGVydGllczogQWRkIHRhcmdldCBFbnRpdHlUeXBlIHByb3BlcnRpZXMgdG8gcXVldWVcblx0XHQgKiAgICAgIChDb2xsZWN0aW9ucyBvbmx5IGlmIGV4cGxpY2l0IGZpbHRlciBmaWVsZHMgZXhpc3QsIHJlc3BlY3QgZGVwdGggbGltaXRzKVxuXHRcdCAqXG5cdFx0ICogMy4gUE9TVC1QUk9DRVNTSU5HOlxuXHRcdCAqICAgIC0gQWRkICRlZGl0U3RhdGUgZmlsdGVyIGZvciBkcmFmdC1lbmFibGVkIGVudGl0aWVzXG5cdFx0ICogICAgLSBSZW1vdmUgcHJvcGVydGllcyBtYXJrZWQgZm9yIGVsaW1pbmF0aW9uIChleGNlcHQgZXhwbGljaXQgZmlsdGVyIGZpZWxkcylcblx0XHQgKi9cblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCkhO1xuXHRcdGNvbnN0IGRlZmluaXRpb25Gb3JQYWdlID0gb3duZXIucHJlcHJvY2Vzc29yQ29udGV4dD8uZ2V0RGVmaW5pdGlvbkZvclBhZ2UoKTtcblxuXHRcdGlmICghZGVmaW5pdGlvbkZvclBhZ2UpIHtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cblx0XHRjb25zdCBmaWx0ZXJCYXJEZWYgPSBkZWZpbml0aW9uRm9yUGFnZS5nZXRGaWx0ZXJCYXJEZWZpbml0aW9uKHt9KTtcblx0XHRjb25zdCBtZXRhUGF0aCA9IGRlZmluaXRpb25Gb3JQYWdlLmdldE1ldGFQYXRoKCk7XG5cdFx0Y29uc3QgZW50aXR5U2V0ID0gbWV0YVBhdGguZ2V0Q2xvc2VzdEVudGl0eVNldCgpIGFzIEVudGl0eVNldDtcblxuXHRcdGxldCBmaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zID0gZW50aXR5U2V0LmFubm90YXRpb25zLkNhcGFiaWxpdGllcz8uRmlsdGVyUmVzdHJpY3Rpb25zPy5GaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zID8/IFtdO1xuXG5cdFx0Ly8gVE9ETzogTWF5YmUgd2UgY2FuIHNpbXBsaWZ5IHRoaXMgYnkgdXNpbmcgcmVzdHJpY3Rpb25zIG9uIHRoZSBtYWluIGVudGl0eSBzZXQgb25seVxuXHRcdGZvciAoY29uc3QgbmF2aWdhdGlvblByb3BlcnR5IGluIGVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nKSB7XG5cdFx0XHRpZiAoZW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbbmF2aWdhdGlvblByb3BlcnR5XT8uX3R5cGUgPT09IFwiRW50aXR5U2V0XCIpIHtcblx0XHRcdFx0Ly8gRklYTUU6IG9wdGlvbmFsIGNoYWluaW5nIHNob3VsZCBub3QgYmUgbmVlZGVkIGhlcmUgLT4gcm9vdCBjYXVzZSBmaXggcGVuZGluZ1xuXHRcdFx0XHRjb25zdCBuYXZpZ2F0aW9uUHJvcGVydHlFbnRpdHlTZXQgPSBlbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tuYXZpZ2F0aW9uUHJvcGVydHldIGFzIEVudGl0eVNldDtcblx0XHRcdFx0Y29uc3QgbmF2UHJvcGVydHlGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zID1cblx0XHRcdFx0XHRuYXZpZ2F0aW9uUHJvcGVydHlFbnRpdHlTZXQuYW5ub3RhdGlvbnMuQ2FwYWJpbGl0aWVzPy5GaWx0ZXJSZXN0cmljdGlvbnM/LkZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMgPz8gW107XG5cblx0XHRcdFx0Y29uc3QgY3VycmVudEZpbHRlclJlc3RyaWN0aW9ucyA9IFsuLi5maWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zXTtcblx0XHRcdFx0ZmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyA9IFtcblx0XHRcdFx0XHQuLi5maWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zLFxuXHRcdFx0XHRcdC4uLm5hdlByb3BlcnR5RmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucy5maWx0ZXIoKHJlc3RyaWN0aW9uKSA9PiAhY3VycmVudEZpbHRlclJlc3RyaWN0aW9ucy5pbmNsdWRlcyhyZXN0cmljdGlvbikpXG5cdFx0XHRcdF07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gb3duZXIucHJlcHJvY2Vzc29yQ29udGV4dD8ubW9kZWxzLm1ldGFNb2RlbCBhcyBPRGF0YU1ldGFNb2RlbDtcblxuXHRcdGNvbnN0IGdldENvZGVMaXN0ID0gKGxhc3RQYXRoU2VnbWVudDogUHJvcGVydHksIHByb3BlcnR5UGF0aDogc3RyaW5nKTogQ29kZUxpc3QgfCAoKCkgPT4gUHJvbWlzZTxDb2RlTGlzdD4pIHwgdW5kZWZpbmVkID0+XG5cdFx0XHRoYXNWYWx1ZUhlbHBXaXRoRml4ZWRWYWx1ZXMobGFzdFBhdGhTZWdtZW50KVxuXHRcdFx0XHQ/IGFzeW5jICgpOiBQcm9taXNlPENvZGVMaXN0PiA9PiB0aGlzLmdldENvZGVMaXN0Rm9yUHJvcGVydHkocHJvcGVydHlQYXRoKVxuXHRcdFx0XHQ6IHVuZGVmaW5lZDtcblxuXHRcdGNvbnN0IGZpbHRlckZpZWxkcyA9IGZpbHRlckJhckRlZlxuXHRcdFx0LmdldEZpbHRlckZpZWxkcygpXG5cdFx0XHQuZmlsdGVyKChmaWVsZDogRmlsdGVyRmllbGQpID0+ICFmaWVsZC5nZXRUYXJnZXQoKT8uYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW5GaWx0ZXI/LnZhbHVlT2YoKSk7XG5cblx0XHRjb25zdCBzdGFydHVwUGFyYW1ldGVycyA9IG93bmVyLmdldEFwcENvbXBvbmVudCgpLmdldENvbXBvbmVudERhdGEoKT8uc3RhcnR1cFBhcmFtZXRlcnMgPz8ge307XG5cblx0XHRjb25zdCBtYXhEZXB0aCA9IDE7IC8vIE1heGltdW0gZGVwdGggZm9yIG5hdmlnYXRpb24gcHJvcGVydGllc1xuXG5cdFx0Ly8gSW5pdGlhbGl6ZSB0cmF2ZXJzYWwgcXVldWUgd2l0aCBhbGwgZW50aXR5IHByb3BlcnRpZXMgYW5kIG5hdmlnYXRpb24gcHJvcGVydGllcy5cblx0XHQvLyBFYWNoIHBhdGggdG8gdHJhdmVyc2UgaXMgYSBsaXN0IG9mIHNlZ21lbnRzIChlLmcuIFtuYXZQcm9wMSwgY29tcGxleFByb3AxLCBjb21wbGV4UHJvcDIsIHNjYWxhclByb3BdKVxuXHRcdGNvbnN0IHBhdGhzVG9FeHBsb3JlOiAoUHJvcGVydHkgfCBOYXZpZ2F0aW9uUHJvcGVydHkpW11bXSA9IFtcblx0XHRcdC4uLmVudGl0eVNldC5lbnRpdHlUeXBlLmVudGl0eVByb3BlcnRpZXMsXG5cdFx0XHQuLi5lbnRpdHlTZXQuZW50aXR5VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllc1xuXHRcdF0ubWFwKChlbGVtZW50KSA9PiBbZWxlbWVudF0pO1xuXG5cdFx0Ly8gUmVzdWx0aW5nIG1ldGFkYXRhIGFycmF5XG5cdFx0Y29uc3QgcmVzdWx0OiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YVtdID0gW107XG5cblx0XHQvLyBTZXQgb2YgcHJvcGVydHkgcGF0aHMgdG8gYmUgZWxpbWluYXRlZCBmcm9tIHRoZSBmaWx0ZXIgYmFyIG1ldGFkYXRhXG5cdFx0Y29uc3QgcGF0aHNUb0VsaW1pbmF0ZSA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG5cdFx0Y29uc3QgZ2V0UGF0aExhYmVsID0gKHBhdGg6IChQcm9wZXJ0eSB8IE5hdmlnYXRpb25Qcm9wZXJ0eSlbXSk6IHN0cmluZyA9PiB7XG5cdFx0XHRjb25zdCBwYXRoTGFiZWxzID0gcGF0aC5tYXAoKGUpID0+IHRoaXMuZ2V0TGFiZWwoZSkgfHwgYFske2UubmFtZX1dYCk7XG5cdFx0XHRyZXR1cm4gTG9jYWxpemF0aW9uLmdldFJUTCgpID8gcGF0aExhYmVscy5zbGljZSgpLnJldmVyc2UoKS5qb2luKFwiIC0gXCIpIDogcGF0aExhYmVscy5qb2luKFwiIC0gXCIpO1xuXHRcdH07XG5cblx0XHR3aGlsZSAocGF0aHNUb0V4cGxvcmUubGVuZ3RoID4gMCkge1xuXHRcdFx0Y29uc3QgY3VycmVudFBhdGggPSBwYXRoc1RvRXhwbG9yZS5zaGlmdCgpITtcblxuXHRcdFx0Y29uc3QgbmF2aWdhdGlvbkRlcHRoID0gY3VycmVudFBhdGguZmlsdGVyKGlzTmF2aWdhdGlvblByb3BlcnR5KS5sZW5ndGg7XG5cblx0XHRcdGNvbnN0IGxhc3RQYXRoU2VnbWVudCA9IGN1cnJlbnRQYXRoW2N1cnJlbnRQYXRoLmxlbmd0aCAtIDFdO1xuXG5cdFx0XHRpZiAobGFzdFBhdGhTZWdtZW50LmFubm90YXRpb25zLlVJPy5IaWRkZW4/LnZhbHVlT2YoKSA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgcGF0aFN0cmluZyA9IFtgLyR7ZW50aXR5U2V0Lm5hbWV9YCwgLi4uY3VycmVudFBhdGguc2xpY2UoMCwgLTEpLm1hcCgoZSkgPT4gZS5uYW1lKV0ucmVkdWNlKFxuXHRcdFx0XHQoYWNjLCBjdXJyKSA9PiBgJHthY2N9LyR7Y3Vycn1gXG5cdFx0XHQpO1xuXHRcdFx0Y29uc3QgcHJvcGVydHlQYXRoID0gYCR7cGF0aFN0cmluZ30vJHtsYXN0UGF0aFNlZ21lbnQubmFtZX1gO1xuXG5cdFx0XHRpZiAodGhpcy5pc1NjYWxhclByb3BlcnR5KGxhc3RQYXRoU2VnbWVudCkpIHtcblx0XHRcdFx0Ly8gQ2hlY2sgZm9yIENvbW1vbi5UZXh0IGFubm90YXRpb24gYW5kIHJlY29yZCB0aGUgYW5ub3RhdGlvbiB0YXJnZXQgcGF0aCBmb3IgZWxpbWluYXRpb25cblx0XHRcdFx0Y29uc3QgdGV4dEFubm90YXRpb24gPSBsYXN0UGF0aFNlZ21lbnQuYW5ub3RhdGlvbnMuQ29tbW9uPy5UZXh0O1xuXHRcdFx0XHRpZiAoaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24odGV4dEFubm90YXRpb24pKSB7XG5cdFx0XHRcdFx0Ly8gQ29uc3RydWN0IHRoZSBmdWxsIHBhdGggdG8gdGhlIHRhcmdldCBwcm9wZXJ0eVxuXHRcdFx0XHRcdHBhdGhzVG9FbGltaW5hdGUuYWRkKGAke3BhdGhTdHJpbmd9LyR7dGV4dEFubm90YXRpb24ucGF0aH1gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFNjYWxhciBwcm9wZXJ0eTogY3JlYXRlIG1ldGFkYXRhIGZvciB0aGUgcHJvcGVydHlcblx0XHRcdFx0Y29uc3QgZmlsdGVyRmllbGQgPSBmaWx0ZXJGaWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkLmdldFRhcmdldCgpID09PSBsYXN0UGF0aFNlZ21lbnQpO1xuXHRcdFx0XHRjb25zdCBmaWx0ZXJSZXN0cmljdGlvbiA9IGZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMuZmluZChcblx0XHRcdFx0XHQoZXhwcmVzc2lvbikgPT4gZXhwcmVzc2lvbi5Qcm9wZXJ0eT8uJHRhcmdldCA9PT0gbGFzdFBhdGhTZWdtZW50XG5cdFx0XHRcdCk7XG5cdFx0XHRcdGNvbnN0IGZpbHRlcmFibGUgPSBpc1BhdGhGaWx0ZXJhYmxlKHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aChwcm9wZXJ0eVBhdGgpKTtcblx0XHRcdFx0Y29uc3QgZmlsdGVyYWJsZUV4cHJlc3Npb24gPSBpc0NvbnN0YW50KGZpbHRlcmFibGUpID8gZmlsdGVyYWJsZS52YWx1ZSA6IHRydWU7XG5cdFx0XHRcdGNvbnN0IGZpbHRlclJlc3RyaWN0aW9uRXhwcmVzc2lvbiA9IGZpbHRlclJlc3RyaWN0aW9uPy5BbGxvd2VkRXhwcmVzc2lvbnMgYXNcblx0XHRcdFx0XHR8IEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhW1wiZmlsdGVyUmVzdHJpY3Rpb25cIl1cblx0XHRcdFx0XHR8IHVuZGVmaW5lZDtcblx0XHRcdFx0Y29uc3QgY29kZUxpc3QgPSBnZXRDb2RlTGlzdChsYXN0UGF0aFNlZ21lbnQsIHByb3BlcnR5UGF0aCk7XG5cdFx0XHRcdGNvbnN0IG1ldGFkYXRhOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSA9IHtcblx0XHRcdFx0XHRuYW1lOiBwcm9wZXJ0eVBhdGgsXG5cdFx0XHRcdFx0bGFiZWw6IGdldFBhdGhMYWJlbChjdXJyZW50UGF0aCksXG5cdFx0XHRcdFx0ZGF0YVR5cGU6IGxhc3RQYXRoU2VnbWVudC50eXBlLFxuXHRcdFx0XHRcdHJlcXVpcmVkOiBmaWx0ZXJGaWVsZD8ucmVxdWlyZWQsXG5cdFx0XHRcdFx0ZGVmYXVsdFZhbHVlOiBmaWx0ZXJGaWVsZCA/IHRoaXMuZ2V0RGVmYXVsdFZhbHVlRm9yRmlsdGVyRmllbGQoZmlsdGVyRmllbGQsIHN0YXJ0dXBQYXJhbWV0ZXJzKSA6IHVuZGVmaW5lZCxcblx0XHRcdFx0XHRmaWx0ZXJhYmxlOiBmaWx0ZXJGaWVsZCA/IGZpbHRlcmFibGVFeHByZXNzaW9uIDogdW5kZWZpbmVkLFxuXHRcdFx0XHRcdGhpZGRlbkZpbHRlcjogIWZpbHRlckZpZWxkLFxuXHRcdFx0XHRcdGZpbHRlclJlc3RyaWN0aW9uOiBmaWx0ZXJGaWVsZCA/IGZpbHRlclJlc3RyaWN0aW9uRXhwcmVzc2lvbiA6IHVuZGVmaW5lZCxcblx0XHRcdFx0XHRjb2RlTGlzdCxcblx0XHRcdFx0XHR0eXBlOiB0aGlzLmdldFRva2VuVHlwZShcblx0XHRcdFx0XHRcdGxhc3RQYXRoU2VnbWVudCxcblx0XHRcdFx0XHRcdGZpbHRlclJlc3RyaWN0aW9uPy5BbGxvd2VkRXhwcmVzc2lvbnM/LnRvU3RyaW5nKCkgfHwgXCJNdWx0aVJhbmdlT3JTZWFyY2hFeHByZXNzaW9uXCJcblx0XHRcdFx0XHQpIGFzIEV4Y2x1ZGU8VG9rZW5UeXBlLCBcIlZhbHVlSGVscFwiPixcblx0XHRcdFx0XHR1bml0OiB0aGlzLmdldFVuaXRGb3JQcm9wZXJ0eShsYXN0UGF0aFNlZ21lbnQsIHBhdGhTdHJpbmcpXG5cdFx0XHRcdH07XG5cdFx0XHRcdHJlc3VsdC5wdXNoKG1ldGFkYXRhKTtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5pc0NvbXBsZXhQcm9wZXJ0eShsYXN0UGF0aFNlZ21lbnQpKSB7XG5cdFx0XHRcdC8vIENvbXBsZXggcHJvcGVydHk6IGFkZCBhbGwgcHJvcGVydGllcyBhbmQgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzIG9mIHRoZSBjb21wbGV4IHR5cGVcblx0XHRcdFx0bGFzdFBhdGhTZWdtZW50LnRhcmdldFR5cGUucHJvcGVydGllcy5mb3JFYWNoKChjaGlsZCkgPT4ge1xuXHRcdFx0XHRcdHBhdGhzVG9FeHBsb3JlLnB1c2goWy4uLmN1cnJlbnRQYXRoLCBjaGlsZF0pO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHQvLyBvbmx5IHRyYXZlcnNlIG5hdmlnYXRpb24gcHJvcGVydGllcyBpZiB3ZSBhcmUgbm90IGF0IHRoZSBtYXhpbXVtIGRlcHRoXG5cdFx0XHRcdGlmIChuYXZpZ2F0aW9uRGVwdGggPCBtYXhEZXB0aCkge1xuXHRcdFx0XHRcdGxhc3RQYXRoU2VnbWVudC50YXJnZXRUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZvckVhY2goKGNoaWxkKSA9PiB7XG5cdFx0XHRcdFx0XHRwYXRoc1RvRXhwbG9yZS5wdXNoKFsuLi5jdXJyZW50UGF0aCwgY2hpbGRdKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChpc05hdmlnYXRpb25Qcm9wZXJ0eShsYXN0UGF0aFNlZ21lbnQpKSB7XG5cdFx0XHRcdC8vIGFkZCAxOm4gbmF2aWdhdGlvbiBwcm9wZXJ0aWVzIG9ubHkgaWYgdGhlcmUgYXJlIGZpbHRlciBmaWVsZHMgZm9yIGF0IGxlYXN0IG9uZSBvZiB0aGUgdGFyZ2V0IHByb3BlcnRpZXNcblx0XHRcdFx0aWYgKGxhc3RQYXRoU2VnbWVudC5pc0NvbGxlY3Rpb24gJiYgIWZpbHRlckZpZWxkcy5zb21lKChmaWVsZCkgPT4gZmllbGQuYW5ub3RhdGlvblBhdGg/LnN0YXJ0c1dpdGgocHJvcGVydHlQYXRoKSkpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxhc3RQYXRoU2VnbWVudC50YXJnZXRUeXBlLmVudGl0eVByb3BlcnRpZXMuZm9yRWFjaCgoY2hpbGQpID0+IHtcblx0XHRcdFx0XHRwYXRoc1RvRXhwbG9yZS5wdXNoKFsuLi5jdXJyZW50UGF0aCwgY2hpbGRdKTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Ly8gb25seSB0cmF2ZXJzZSBuYXZpZ2F0aW9uIHByb3BlcnRpZXMgaWYgd2UgYXJlIG5vdCBhdCB0aGUgbWF4aW11bSBkZXB0aFxuXHRcdFx0XHRpZiAobmF2aWdhdGlvbkRlcHRoIDwgbWF4RGVwdGgpIHtcblx0XHRcdFx0XHRsYXN0UGF0aFNlZ21lbnQudGFyZ2V0VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcy5mb3JFYWNoKChjaGlsZCkgPT4ge1xuXHRcdFx0XHRcdFx0cGF0aHNUb0V4cGxvcmUucHVzaChbLi4uY3VycmVudFBhdGgsIGNoaWxkXSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBbRWRpdGluZyBTdGF0dXNdXG5cdFx0aWYgKE1vZGVsSGVscGVyLmlzTWV0YVBhdGhEcmFmdFN1cHBvcnRlZChkZWZpbml0aW9uRm9yUGFnZS5nZXRNZXRhUGF0aCgpIGFzIHVua25vd24gYXMgTWV0YVBhdGg8dW5rbm93bj4pKSB7XG5cdFx0XHRyZXN1bHQucHVzaCh0aGlzLmdldEVkaXRTdGF0ZUZpbHRlck1ldGFkYXRhKG1ldGFNb2RlbCkpO1xuXHRcdH1cblxuXHRcdC8vIFJlbW92ZSBwcm9wZXJ0aWVzIG1hcmtlZCBmb3IgZWxpbWluYXRpb24gKHVubGVzcyB0aGV5IGFyZSBmaWx0ZXIgZmllbGRzKVxuXHRcdHJldHVybiByZXN1bHQuZmlsdGVyKChtZXRhZGF0YSkgPT4ge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0IW1ldGFkYXRhLmhpZGRlbkZpbHRlciB8fCAvLyBLZWVwIGlmIGV4cGxpY2l0IGZpbHRlciBmaWVsZFxuXHRcdFx0XHQhcGF0aHNUb0VsaW1pbmF0ZS5oYXMobWV0YWRhdGEubmFtZSkgLy8gS2VlcCBpZiBwYXRoIG5vdCBtYXJrZWQgZm9yIGVsaW1pbmF0aW9uXG5cdFx0XHQpO1xuXHRcdH0pO1xuXHR9XG5cblx0YXN5bmMgZ2V0Q29kZUxpc3RGb3JQcm9wZXJ0eShwcm9wZXJ0eVBhdGg6IHN0cmluZyk6IFByb21pc2U8Q29kZUxpc3Q+IHtcblx0XHRjb25zdCBkZWZhdWx0VmFsdWVMaXN0ID0gYXdhaXQgdGhpcy5nZXRWYWx1ZUxpc3QocHJvcGVydHlQYXRoKTtcblxuXHRcdGlmICghZGVmYXVsdFZhbHVlTGlzdCkge1xuXHRcdFx0cmV0dXJuIFtdO1xuXHRcdH1cblxuXHRcdGNvbnN0IHZhbHVlTGlzdEluZm8gPSBkZWZhdWx0VmFsdWVMaXN0LnZhbHVlTGlzdEluZm87XG5cblx0XHRjb25zdCBsaXN0QmluZGluZyA9IHZhbHVlTGlzdEluZm8uJG1vZGVsLmJpbmRMaXN0KGAvJHt2YWx1ZUxpc3RJbmZvLkNvbGxlY3Rpb25QYXRofWAsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHtcblx0XHRcdCRzZWxlY3Q6IGdlbmVyYXRlU2VsZWN0UGFyYW1ldGVyKGRlZmF1bHRWYWx1ZUxpc3QpXG5cdFx0fSk7XG5cdFx0Y29uc3QgZGF0YSA9IGF3YWl0IGxpc3RCaW5kaW5nLnJlcXVlc3RDb250ZXh0cygpO1xuXG5cdFx0Y29uc3QgZmlsdGVyR3JvdXBWYWx1ZXMgPSBkYXRhLm1hcChtYXBWYWx1ZUxpc3RUb0NvZGVMaXN0KGRlZmF1bHRWYWx1ZUxpc3QpKTtcblx0XHRjb25zdCBjb2RlTGlzdFByb3BlcnR5ID0gdGhpcy5maWx0ZXJCYXJNZXRhZGF0YS5maW5kKChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0gcHJvcGVydHlQYXRoKTtcblx0XHRpZiAoY29kZUxpc3RQcm9wZXJ0eSkge1xuXHRcdFx0Y29kZUxpc3RQcm9wZXJ0eS5jb2RlTGlzdCA9IGZpbHRlckdyb3VwVmFsdWVzO1xuXHRcdH1cblx0XHRyZXR1cm4gZmlsdGVyR3JvdXBWYWx1ZXM7XG5cdH1cblxuXHRhc3luYyByZXNvbHZlVG9rZW5WYWx1ZXNGb3JGaWVsZChcblx0XHRmaWVsZE5hbWU6IHN0cmluZyxcblx0XHR2YWx1ZXM6IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW11cblx0KTogUHJvbWlzZTxWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXT4ge1xuXHRcdGNvbnN0IGZpZWxkID0gdGhpcy5maWx0ZXJCYXJNZXRhZGF0YS5maW5kKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gZmllbGROYW1lKTtcblx0XHRsZXQgcmVzdWx0OiBWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXTtcblxuXHRcdGlmICghZmllbGQpIHtcblx0XHRcdC8vIHJldHVybiBvcmlnaW5hbCB2YWx1ZXMgY29udmVydGVkIHRvIHRoZSBleHBlY3RlZCBmb3JtYXQgaWYgbm8gZmllbGQgaXMgZGVmaW5lZFxuXHRcdFx0cmV0dXJuIHVucmVzb2x2ZWRSZXN1bHQodmFsdWVzKTtcblx0XHR9XG5cdFx0Y29uc3QgdmFsdWVMaXN0ID0gYXdhaXQgdGhpcy5nZXRWYWx1ZUxpc3QoZmllbGQubmFtZSk7XG5cblx0XHRpZiAodmFsdWVMaXN0ICYmIFZhbHVlTGlzdEhlbHBlci5pc1ZhbHVlTGlzdFNlYXJjaGFibGUoZmllbGQubmFtZSwgdmFsdWVMaXN0KSkge1xuXHRcdFx0Y29uc3QgcmVzb2x2ZWRUb2tlblZhbHVlcyA9IGF3YWl0IFByb21pc2UuYWxsKHZhbHVlcy5tYXAoYXN5bmMgKHZhbHVlKSA9PiByZXNvbHZlVG9rZW5WYWx1ZSh2YWx1ZUxpc3QsIHZhbHVlKSkpO1xuXHRcdFx0cmVzdWx0ID0gcmVzb2x2ZWRUb2tlblZhbHVlcy5mbGF0KCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlc3VsdCA9IHVucmVzb2x2ZWRSZXN1bHQodmFsdWVzKTtcblx0XHR9XG5cblx0XHQvLyBBcHBseSBtYXhMZW5ndGggZmlsdGVyaW5nIGlmIGRlZmluZWRcblx0XHRpZiAoZmllbGQubWF4TGVuZ3RoICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGZpbHRlcmVkVG9rZW5zID0gcmVzdWx0XG5cdFx0XHRcdC5tYXAoKHRva2VuKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHRva2VuLm9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5CVCB8fCB0b2tlbi5vcGVyYXRvciA9PT0gRmlsdGVyT3BlcmF0b3IuTkIpIHtcblx0XHRcdFx0XHRcdC8vIEhhbmRsZSBiZXR3ZWVuIG9wZXJhdG9ycyAtIHNlbGVjdGVkVmFsdWVzIGlzIFZhbHVlSGVscEJldHdlZW5TZWxlY3RlZFZhbHVlc1xuXHRcdFx0XHRcdFx0Y29uc3QgW2EsIGJdID0gdG9rZW4uc2VsZWN0ZWRWYWx1ZXM7XG5cblx0XHRcdFx0XHRcdC8vIENoZWNrIGlmIGJvdGggdmFsdWVzIGV4Y2VlZCBtYXhMZW5ndGhcblx0XHRcdFx0XHRcdGlmIChTdHJpbmcoYS52YWx1ZSkubGVuZ3RoIDw9IGZpZWxkLm1heExlbmd0aCEgJiYgU3RyaW5nKGIudmFsdWUpLmxlbmd0aCA8PSBmaWVsZC5tYXhMZW5ndGghKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0b2tlbjsgLy8gS2VlcCB0aGUgdG9rZW4gaWYgYm90aCB2YWx1ZXMgYXJlIHdpdGhpbiBsaW1pdFxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG51bGw7IC8vIFJlbW92ZSB0aGUgdG9rZW4gaWYgZWl0aGVyIHZhbHVlIGV4Y2VlZHMgbGltaXRcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gSGFuZGxlIG90aGVyIG9wZXJhdG9ycyAtIHNlbGVjdGVkVmFsdWVzIGlzIENvZGVMaXN0VHlwZVtdXG5cdFx0XHRcdFx0XHRjb25zdCBmaWx0ZXJlZDogQ29kZUxpc3RUeXBlW10gPSB0b2tlbi5zZWxlY3RlZFZhbHVlcy5maWx0ZXIoXG5cdFx0XHRcdFx0XHRcdChzZWxlY3RlZFZhbHVlKSA9PiBTdHJpbmcoc2VsZWN0ZWRWYWx1ZS52YWx1ZSkubGVuZ3RoIDw9IGZpZWxkLm1heExlbmd0aCFcblx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdC8vIE9ubHkgcmV0dXJuIHRoZSB0b2tlbiBpZiB0aGVyZSBhcmUgcmVtYWluaW5nIHZhbHVlcyBhZnRlciBmaWx0ZXJpbmdcblx0XHRcdFx0XHRcdGlmIChmaWx0ZXJlZC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB7IC4uLnRva2VuLCBzZWxlY3RlZFZhbHVlczogZmlsdGVyZWQgfTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBudWxsOyAvLyBSZW1vdmUgdGhlIHRva2VuIGlmIG5vIHZhbHVlcyByZW1haW5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5maWx0ZXIoKHRva2VuKTogdG9rZW4gaXMgVmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uID0+IHRva2VuICE9PSBudWxsKTtcblxuXHRcdFx0cmV0dXJuIGZpbHRlcmVkVG9rZW5zO1xuXHRcdH1cblxuXHRcdC8vIGlmIG5vIG1heExlbmd0aCBpcyBkZWZpbmVkLCByZXR1cm4gdW5maWx0ZXJlZCByZXN1bHRcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0YXN5bmMgZ2V0VmFsdWVMaXN0KGZpZWxkTmFtZTogc3RyaW5nKTogUHJvbWlzZTxWYWx1ZUxpc3RJbmZvIHwgdW5kZWZpbmVkPiB7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gdGhpcy5nZXRNZXRhTW9kZWwoKSE7XG5cdFx0Y29uc3QgdmFsdWVMaXN0cyA9IGF3YWl0IFZhbHVlTGlzdEhlbHBlci5nZXRWYWx1ZUxpc3RJbmZvKHVuZGVmaW5lZCwgZmllbGROYW1lLCB1bmRlZmluZWQsIG1ldGFNb2RlbCk7XG5cdFx0cmV0dXJuIHZhbHVlTGlzdHNbMF07XG5cdH1cblxuXHRhc3luYyBvblRva2Vuc0NoYW5nZWQoZTogVUk1RXZlbnQ8eyB0b2tlbnM6IFRva2VuRGVmaW5pdGlvbltdIH0sIEVhc3lGaWx0ZXJCYXJDb250YWluZXI+KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgZmlsdGVyQmFyID0gVUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmZpbHRlckJhcikgYXMgRmlsdGVyQmFyO1xuXHRcdGNvbnN0IGZpbHRlckJhckFQSSA9IGZpbHRlckJhci5nZXRQYXJlbnQoKSBhcyBGaWx0ZXJCYXJBUEk7XG5cdFx0Y29uc3QgdG9rZW5zID0gZS5nZXRQYXJhbWV0ZXIoXCJ0b2tlbnNcIik7XG5cdFx0Y29uc3QgY2xlYXJFZGl0RmlsdGVyID0gdG9rZW5zLnNvbWUoKHRva2VuRGVmaW5pdGlvbikgPT4gdG9rZW5EZWZpbml0aW9uLmtleSA9PT0gXCIkZWRpdFN0YXRlXCIpO1xuXHRcdGF3YWl0IGZpbHRlckJhckFQSS5fY2xlYXJGaWx0ZXJWYWx1ZXNXaXRoT3B0aW9ucyhmaWx0ZXJCYXIsIHsgY2xlYXJFZGl0RmlsdGVyIH0pO1xuXHRcdHRoaXMuZm9ybWF0ZURhdGFUeXBlcyh0b2tlbnMpO1xuXG5cdFx0Zm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnMpIHtcblx0XHRcdGlmICh0b2tlbi5rZXkgPT09IFwiJGVkaXRTdGF0ZVwiKSB7XG5cdFx0XHRcdC8vIGNvbnZlcnQgdGhlICRlZGl0U3RhdGUgZmlsdGVyIGNvbmRpdGlvblxuXHRcdFx0XHRmb3IgKGNvbnN0IHRva2VuS2V5U3BlY2lmaWNhdGlvbiBvZiB0b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzKSB7XG5cdFx0XHRcdFx0YXdhaXQgRmlsdGVyVXRpbHMuYWRkRmlsdGVyVmFsdWVzKFxuXHRcdFx0XHRcdFx0ZmlsdGVyQmFyQVBJLmNvbnRlbnQsXG5cdFx0XHRcdFx0XHR0b2tlbi5rZXksXG5cdFx0XHRcdFx0XHRcIkRSQUZUX0VESVRfU1RBVEVcIixcblx0XHRcdFx0XHRcdHRva2VuS2V5U3BlY2lmaWNhdGlvbi5zZWxlY3RlZFZhbHVlc1xuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IGZpZWxkID0gdGhpcy5maWx0ZXJCYXJNZXRhZGF0YS5maW5kKChmKSA9PiBmLm5hbWUgPT09IHRva2VuLmtleSkhO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHRva2VuS2V5U3BlY2lmaWNhdGlvbiBvZiB0b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzKSB7XG5cdFx0XHRcdFx0Y29uc3QgeyBvcGVyYXRvciwgc2VsZWN0ZWRWYWx1ZXMgfSA9IHRva2VuS2V5U3BlY2lmaWNhdGlvbjtcblx0XHRcdFx0XHRhd2FpdCBGaWx0ZXJVdGlscy5hZGRGaWx0ZXJWYWx1ZXMoZmlsdGVyQmFyQVBJLmNvbnRlbnQsIGZpZWxkLm5hbWUsIG9wZXJhdG9yLCBzZWxlY3RlZFZhbHVlcyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0YXdhaXQgZmlsdGVyQmFyQVBJLnRyaWdnZXJTZWFyY2goKTtcblx0fVxuXG5cdC8vV2UgbmVlZCB0aGUgYmVsb3cgZnVuY3Rpb24gc28gdGhhdCB0aGUgZGF0ZSBvYmplY3RzIGFuZCBkYXRlVGltZU9mZnNldHMgd291bGQgYmUgY29udmVydGVkIHRvIHN0cmluZyB0eXBlIGFzIHRoZSBkYXRlIG9iamVjdCBpcyBub3QgYSB2YWxpZCB0eXBlIGluIFY0IHdvcmxkXG5cdGZvcm1hdGVEYXRhVHlwZXModG9rZW5zOiBUb2tlbkRlZmluaXRpb25bXSk6IHZvaWQge1xuXHRcdGNvbnN0IGRhdGVUeXBlID0gbmV3IERhdGUxKCksXG5cdFx0XHRkYXRlVGltZU9mZnNldFR5cGUgPSBuZXcgRGF0ZVRpbWVPZmZzZXQodW5kZWZpbmVkLCB7IFY0OiB0cnVlIH0pLFxuXHRcdFx0dGltZU9mRGF5VHlwZSA9IG5ldyBUaW1lT2ZEYXkoKTtcblx0XHR0b2tlbnMuZm9yRWFjaCgodG9rZW4pID0+IHtcblx0XHRcdGNvbnN0IGVkbVR5cGUgPSB0aGlzLmZpbHRlckJhck1ldGFkYXRhLmZpbmQoKGRhdGEpID0+IGRhdGEubmFtZSA9PT0gdG9rZW4ua2V5KT8uZGF0YVR5cGU7XG5cdFx0XHR0b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzLmZvckVhY2goKGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZSkgPT4ge1xuXHRcdFx0XHRsZXQgcmVxdWlyZWRDb252ZXJ0ZXI6IE9EYXRhVHlwZTtcblx0XHRcdFx0c3dpdGNoIChlZG1UeXBlKSB7XG5cdFx0XHRcdFx0Y2FzZSBcIkVkbS5EYXRlXCI6XG5cdFx0XHRcdFx0XHRyZXF1aXJlZENvbnZlcnRlciA9IGRhdGVUeXBlO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIkVkbS5UaW1lT2ZEYXlcIjpcblx0XHRcdFx0XHRcdHJlcXVpcmVkQ29udmVydGVyID0gdGltZU9mRGF5VHlwZTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIjpcblx0XHRcdFx0XHRcdHJlcXVpcmVkQ29udmVydGVyID0gZGF0ZVRpbWVPZmZzZXRUeXBlO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWUuc2VsZWN0ZWRWYWx1ZXMuZm9yRWFjaCgodmFsdWUsIGlkeCkgPT4ge1xuXHRcdFx0XHRcdGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZS5zZWxlY3RlZFZhbHVlc1tpZHhdID0gcmVxdWlyZWRDb252ZXJ0ZXIucGFyc2VWYWx1ZSh2YWx1ZSwgXCJvYmplY3RcIik7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cblxuXHRhc3luYyBzaG93VmFsdWVIZWxwRm9yS2V5KGtleTogc3RyaW5nKTogUHJvbWlzZTxDb25kaXRpb25PYmplY3RbXT4ge1xuXHRcdGNvbnN0IGZpZWxkID0gdGhpcy5maWx0ZXJCYXJNZXRhZGF0YS5maW5kKChmKSA9PiBmLm5hbWUgPT09IGtleSkhO1xuXHRcdGNvbnN0IGZpbHRlckJhciA9IFVJNUVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5maWx0ZXJCYXIpIGFzIEZpbHRlckJhcjtcblx0XHRjb25zdCBmaWx0ZXJCYXJBUEkgPSBmaWx0ZXJCYXIuZ2V0UGFyZW50KCkgYXMgRmlsdGVyQmFyQVBJO1xuXHRcdGF3YWl0IGZpbHRlckJhckFQSS5zaG93RmlsdGVyRmllbGQoZmllbGQubmFtZSk7XG5cdFx0cmV0dXJuIGZpbHRlckJhckFQSS5vcGVuVmFsdWVIZWxwRm9yRmlsdGVyRmllbGQoZmllbGQubmFtZSk7XG5cdH1cblxuXHRvbkJlZm9yZVF1ZXJ5UHJvY2Vzc2luZygpOiB2b2lkIHtcblx0XHRjb25zdCB1aU1vZGVsID0gdGhpcy5nZXRNb2RlbChcInVpXCIpIGFzIEpTT05Nb2RlbDtcblx0XHRCdXN5TG9ja2VyLmxvY2sodWlNb2RlbCk7XG5cdH1cblxuXHRvbkFmdGVyUXVlcnlQcm9jZXNzaW5nKCk6IHZvaWQge1xuXHRcdGNvbnN0IHVpTW9kZWwgPSB0aGlzLmdldE1vZGVsKFwidWlcIikgYXMgSlNPTk1vZGVsO1xuXHRcdEJ1c3lMb2NrZXIudW5sb2NrKHVpTW9kZWwpO1xuXHR9XG5cblx0YXN5bmMgb25DbGVhckZpbHRlcnMoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gRW1wdHkgaW5wdXQ6IGNsZWFyIHRoZSBmaWx0ZXJzIGFuZCByZWZyZXNoIHRoZSBsaXN0XG5cdFx0Y29uc3QgZmlsdGVyQmFyID0gVUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmZpbHRlckJhcikgYXMgRmlsdGVyQmFyO1xuXHRcdGNvbnN0IGZpbHRlckJhckFQSSA9IGZpbHRlckJhci5nZXRQYXJlbnQoKSBhcyBGaWx0ZXJCYXJBUEk7XG5cdFx0YXdhaXQgZmlsdGVyQmFyQVBJLl9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zKGZpbHRlckJhcik7XG5cdFx0YXdhaXQgZmlsdGVyQmFyQVBJLnRyaWdnZXJTZWFyY2goKTtcblx0fVxuXG5cdG9uUXVlcnlDaGFuZ2VkKCk6IHZvaWQge1xuXHRcdGNvbnN0IGZpbHRlckJhciA9IFVJNUVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5maWx0ZXJCYXIpIGFzIEZpbHRlckJhcjtcblx0XHRmaWx0ZXJCYXIuZmlyZUZpbHRlcnNDaGFuZ2VkKHsgY29uZGl0aW9uc0Jhc2VkOiB0cnVlIH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBoYW5kbGVTaG93VmFsdWVIZWxwKGV2ZW50OiBFYXN5RmlsdGVyQmFyQ29udGFpbmVyJFNob3dWYWx1ZUhlbHBFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGtleSA9IGV2ZW50LmdldFBhcmFtZXRlcihcImtleVwiKTtcblx0XHRjb25zdCByZXNvbHZlID0gZXZlbnQuZ2V0UGFyYW1ldGVyKFwicmVzb2x2ZVwiKTtcblx0XHRjb25zdCByZWplY3QgPSBldmVudC5nZXRQYXJhbWV0ZXIoXCJyZWplY3RcIik7XG5cblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgY29uZGl0aW9ucyA9IGF3YWl0IHRoaXMuc2hvd1ZhbHVlSGVscEZvcktleShrZXkpO1xuXG5cdFx0XHRjb25zdCBzZWxlY3RlZFZhbHVlcyA9IGNvbmRpdGlvbnMubWFwKGFzeW5jIChjb25kaXRpb24pID0+IHtcblx0XHRcdFx0Y29uc3Qgb3BlcmF0b3IgPSBjb25kaXRpb24ub3BlcmF0b3IgYXMgRmlsdGVyT3BlcmF0b3I7XG5cblx0XHRcdFx0aWYgKGNvbmRpdGlvbi52YWxpZGF0ZWQgPT09IFwiTm90VmFsaWRhdGVkXCIpIHtcblx0XHRcdFx0XHQvLyBub3QgdmFsaWRhdGVkOiB0aGUgY29uZGl0aW9uIG9ubHkgaGFzIHZhbHVlcyB3aXRob3V0IGRlc2NyaXB0aW9uIC0gdHJ5IHRvIGdldCB0aGUgZGVzY3JpcHRpb24gdXNpbmcgdGhlIGRhdGEgZmV0Y2hlciBtZWNoYW5pc20uXG5cdFx0XHRcdFx0Ly8gYGNvbmRpdGlvbi52YWx1ZXNgIGlzIGEgc2luZ2xlIHZhbHVlIGBbdmFsdWVdYCAob3IgYFtsb3dlciBib3VuZCwgdXBwZXIgYm91bmRdYCBmb3IgQlQvTkIgb3BlcmF0b3JzKS5cblx0XHRcdFx0XHRjb25zdCBjb25kaXRpb25Ub1Jlc29sdmU6IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uID1cblx0XHRcdFx0XHRcdG9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5CVCB8fCBvcGVyYXRvciA9PT0gRmlsdGVyT3BlcmF0b3IuTkJcblx0XHRcdFx0XHRcdFx0PyB7IG9wZXJhdG9yLCBzZWxlY3RlZFZhbHVlczogW2NvbmRpdGlvbi52YWx1ZXNbMF0sIGNvbmRpdGlvbi52YWx1ZXNbMV1dIH1cblx0XHRcdFx0XHRcdFx0OiB7IG9wZXJhdG9yLCBzZWxlY3RlZFZhbHVlczogW2NvbmRpdGlvbi52YWx1ZXNbMF1dIH07XG5cblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5yZXNvbHZlVG9rZW5WYWx1ZXNGb3JGaWVsZChrZXksIFtjb25kaXRpb25Ub1Jlc29sdmVdKTtcblx0XHRcdFx0fSBlbHNlIGlmIChvcGVyYXRvciAhPT0gRmlsdGVyT3BlcmF0b3IuQlQgJiYgb3BlcmF0b3IgIT09IEZpbHRlck9wZXJhdG9yLk5CKSB7XG5cdFx0XHRcdFx0Ly8gdmFsaWRhdGVkOiBib3RoIHZhbHVlIGFuZCBkZXNjcmlwdGlvbiBhcmUgYXZhaWxhYmxlIC0gZGlyZWN0bHkgbWFwIHRoZW0gdG8gdGhlIHJlc3VsdFxuXHRcdFx0XHRcdC8vIGBjb25kaXRpb24udmFsdWVzYCBpcyBhIHR1cGxlIG9mIGBbdmFsdWUsIGRlc2NyaXB0aW9uP11gXG5cdFx0XHRcdFx0Y29uc3QgW3ZhbHVlLCBkZXNjcmlwdGlvbl0gPSBjb25kaXRpb24udmFsdWVzIGFzIFtzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuLCBzdHJpbmcgfCB1bmRlZmluZWRdO1xuXHRcdFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoW3sgb3BlcmF0b3IsIHNlbGVjdGVkVmFsdWVzOiBbeyB2YWx1ZSwgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uID8/IHZhbHVlIH1dIH1dKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBzaG91bGQgbm90IG9jY3VyOiBCVC9OQiBhcmUgZXhwZWN0ZWQgdG8gYmUgXCJOb3RWYWxpZGF0ZWRcIiBjb25kaXRpb25zXG5cdFx0XHRcdFx0TG9nLndhcm5pbmcoYFVuZXhwZWN0ZWQgY29uZGl0aW9uIGZvciBmaWVsZCAke2tleX06IG9wZXJhdG9yICR7b3BlcmF0b3J9IHdpdGggdmFsdWVzICR7Y29uZGl0aW9uLnZhbHVlc30uYCk7XG5cdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHRjb25zdCByZXNvbHZlZFZhbHVlcyA9IGF3YWl0IFByb21pc2UuYWxsKHNlbGVjdGVkVmFsdWVzKTtcblx0XHRcdHJlc29sdmUocmVzb2x2ZWRWYWx1ZXMuZmxhdCgpKTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0cmVqZWN0KGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKSk7XG5cdFx0fVxuXHR9XG5cblx0Y3JlYXRlQ29udGVudCgpOiBFYXN5RmlsdGVyQmFyQ29udGFpbmVyIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PEVhc3lGaWx0ZXJCYXJDb250YWluZXJcblx0XHRcdFx0Y29udGV4dFBhdGg9e3RoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpfVxuXHRcdFx0XHRhcHBJZD17dGhpcy5nZXRBcHBsaWNhdGlvbklkKCl9XG5cdFx0XHRcdGZpbHRlckJhck1ldGFkYXRhPXt0aGlzLmZpbHRlckJhck1ldGFkYXRhfVxuXHRcdFx0XHRlYXN5RmlsdGVyTGliPXt0aGlzLmVhc3lGaWx0ZXJQYXRofVxuXHRcdFx0XHRzaG93VmFsdWVIZWxwPXt0aGlzLmhhbmRsZVNob3dWYWx1ZUhlbHAuYmluZCh0aGlzKX1cblx0XHRcdFx0ZGF0YUZldGNoZXI9e3RoaXMucmVzb2x2ZVRva2VuVmFsdWVzRm9yRmllbGQuYmluZCh0aGlzKX1cblx0XHRcdFx0cmVjb21tZW5kZWRWYWx1ZXM9e3RoaXMucmVjb21tZW5kZWRRdWVyaWVzfVxuXHRcdFx0XHRxdWVyeUNoYW5nZWQ9e3RoaXMub25RdWVyeUNoYW5nZWQuYmluZCh0aGlzKX1cblx0XHRcdFx0dG9rZW5zQ2hhbmdlZD17dGhpcy5vblRva2Vuc0NoYW5nZWQuYmluZCh0aGlzKX1cblx0XHRcdFx0YmVmb3JlUXVlcnlQcm9jZXNzaW5nPXt0aGlzLm9uQmVmb3JlUXVlcnlQcm9jZXNzaW5nLmJpbmQodGhpcyl9XG5cdFx0XHRcdGFmdGVyUXVlcnlQcm9jZXNzaW5nPXt0aGlzLm9uQWZ0ZXJRdWVyeVByb2Nlc3NpbmcuYmluZCh0aGlzKX1cblx0XHRcdFx0Y2xlYXJGaWx0ZXJzPXt0aGlzLm9uQ2xlYXJGaWx0ZXJzLmJpbmQodGhpcyl9XG5cdFx0XHQvPlxuXHRcdCk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXNE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
550
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFYXN5RmlsdGVyQmFyIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJpbXBsZW1lbnRJbnRlcmZhY2UiLCJfZGVjMyIsImFzc29jaWF0aW9uIiwidHlwZSIsIl9kZWM0IiwiX2RlYzUiLCJwcm9wZXJ0eSIsIl9kZWM2IiwiX2RlYzciLCJhZ2dyZWdhdGlvbiIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsInByb3BlcnRpZXMiLCJvdGhlcnMiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJwcmVwYXJlRmVhdHVyZSIsInRoZW4iLCJlYXN5RmlsdGVyUGF0aCIsImNvbnRlbnQiLCJzZXRFYXN5RmlsdGVyTGliIiwiY2F0Y2giLCJlcnJvciIsIkxvZyIsImRlYnVnIiwidW5kZWZpbmVkIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImFwcGx5TGVnYWN5U3RhdGUiLCJnZXRDb250cmlsU3RhdGUiLCJvTmF2UGFyYW1ldGVycyIsIl9zaG91bGRBcHBseURpZmZTdGF0ZSIsIl9za2lwTWVyZ2UiLCJzZWxlY3Rpb25WYXJpYW50Iiwic2VsZWN0T3B0aW9uc05hbWVzIiwiZ2V0U2VsZWN0T3B0aW9uc1Byb3BlcnR5TmFtZXMiLCJmaWx0ZXJCYXJNZXRhZGF0YSIsImZvckVhY2giLCJmaWVsZCIsImluY2x1ZGVzIiwibmFtZSIsImRlZmF1bHRWYWx1ZSIsImdldFNlbGVjdE9wdGlvbiIsInJlZHVjZSIsImFjYyIsIm9wdGlvbiIsIlNpZ24iLCJPcHRpb24iLCJGaWx0ZXJPcGVyYXRvciIsIkJUIiwiTkIiLCJIaWdoIiwicHVzaCIsIm9wZXJhdG9yIiwic2VsZWN0ZWRWYWx1ZXMiLCJMb3ciLCJORSIsInJlc2V0U3RhdGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsImFwcGx5U3RhdGUiLCJfc3RhdGUiLCJfb05hdlBhcmFtZXRlcnMiLCJyZXRyaWV2ZVN0YXRlIiwiZ2V0QXBwbGljYXRpb25JZCIsImdldE1hbmlmZXN0RW50cnkiLCJpZCIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJwcmVwYXJlRmlsdGVyQmFyTWV0YWRhdGEiLCJyZWNvbW1lbmRlZFF1ZXJpZXMiLCJtYWNyb3MiLCJlYXN5RmlsdGVyIiwiY3JlYXRlQ29udGVudCIsImdldFVuaXRGb3JQcm9wZXJ0eSIsInByb3AiLCJiYXNlUGF0aCIsInVuaXRBbm5vdGF0aW9uIiwiYW5ub3RhdGlvbnMiLCJNZWFzdXJlcyIsIklTT0N1cnJlbmN5IiwiVW5pdCIsImlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIiwicGF0aCIsImdldERlZmF1bHRWYWx1ZUZvckZpbHRlckZpZWxkIiwic3RhcnR1cFBhcmFtZXRlcnMiLCJoYXNPd25Qcm9wZXJ0eSIsIkVRIiwiaXNQYXJhbWV0ZXIiLCJzdWJzdHJpbmciLCJnZXRFZGl0U3RhdGVGaWx0ZXJNZXRhZGF0YSIsIm1ldGFNb2RlbCIsInByb3BzIiwiSlNPTk1vZGVsIiwiaXNEcmFmdENvbGxhYm9yYXRpdmUiLCJNb2RlbEhlbHBlciIsImlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJlZGl0aW5nU3RhdHVzQ29kZUxpc3QiLCJEcmFmdEVkaXRTdGF0ZSIsImdldEVkaXRTdGF0ZXNDb250ZXh0IiwiZ2V0T2JqZWN0IiwibWFwIiwic3RhdGUiLCJ2YWx1ZSIsImRlc2NyaXB0aW9uIiwiZGlzcGxheSIsImxhYmVsIiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJkYXRhVHlwZSIsImZpbHRlcmFibGUiLCJjb2RlTGlzdCIsImdldFRva2VuVHlwZSIsImZpbHRlclJlc3RyaWN0aW9uIiwiaGFzVmFsdWVIZWxwV2l0aEZpeGVkVmFsdWVzIiwiZ2V0TGFiZWwiLCJlbGVtZW50IiwiQ29tbW9uIiwiTGFiZWwiLCJ0b1N0cmluZyIsImhlYWRlckluZm9UeXBlTmFtZSIsImlzRW50aXR5VHlwZSIsIlVJIiwiSGVhZGVySW5mbyIsIlR5cGVOYW1lIiwidmFsdWVPZiIsInJlc3VsdCIsImlzQ29tcGxleFByb3BlcnR5IiwiaXNOYXZpZ2F0aW9uUHJvcGVydHkiLCJ0YXJnZXRUeXBlIiwiaXNTY2FsYXJQcm9wZXJ0eSIsImlzUHJvcGVydHkiLCJpc0NvbXBsZXhUeXBlIiwib3duZXIiLCJfZ2V0T3duZXIiLCJkZWZpbml0aW9uRm9yUGFnZSIsInByZXByb2Nlc3NvckNvbnRleHQiLCJnZXREZWZpbml0aW9uRm9yUGFnZSIsImZpbHRlckJhckRlZiIsImdldEZpbHRlckJhckRlZmluaXRpb24iLCJtZXRhUGF0aCIsImdldE1ldGFQYXRoIiwiZW50aXR5U2V0IiwiZ2V0Q2xvc2VzdEVudGl0eVNldCIsImZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMiLCJDYXBhYmlsaXRpZXMiLCJGaWx0ZXJSZXN0cmljdGlvbnMiLCJGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIiwibmF2aWdhdGlvblByb3BlcnR5IiwibmF2aWdhdGlvblByb3BlcnR5QmluZGluZyIsIl90eXBlIiwibmF2aWdhdGlvblByb3BlcnR5RW50aXR5U2V0IiwibmF2UHJvcGVydHlGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIiwiY3VycmVudEZpbHRlclJlc3RyaWN0aW9ucyIsImZpbHRlciIsInJlc3RyaWN0aW9uIiwibW9kZWxzIiwiZ2V0Q29kZUxpc3QiLCJsYXN0UGF0aFNlZ21lbnQiLCJwcm9wZXJ0eVBhdGgiLCJnZXRDb2RlTGlzdEZvclByb3BlcnR5IiwiZmlsdGVyRmllbGRzIiwiZ2V0RmlsdGVyRmllbGRzIiwiZ2V0VGFyZ2V0IiwiSGlkZGVuRmlsdGVyIiwiZ2V0Q29tcG9uZW50RGF0YSIsIm1heERlcHRoIiwicGF0aHNUb0V4cGxvcmUiLCJlbnRpdHlUeXBlIiwiZW50aXR5UHJvcGVydGllcyIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwicGF0aHNUb0VsaW1pbmF0ZSIsIlNldCIsImdldFBhdGhMYWJlbCIsInBhdGhMYWJlbHMiLCJlIiwiTG9jYWxpemF0aW9uIiwiZ2V0UlRMIiwic2xpY2UiLCJyZXZlcnNlIiwiam9pbiIsImxlbmd0aCIsImN1cnJlbnRQYXRoIiwic2hpZnQiLCJuYXZpZ2F0aW9uRGVwdGgiLCJIaWRkZW4iLCJwYXRoU3RyaW5nIiwiY3VyciIsInRleHRBbm5vdGF0aW9uIiwiVGV4dCIsImFkZCIsImZpbHRlckZpZWxkIiwiZmluZCIsImV4cHJlc3Npb24iLCJQcm9wZXJ0eSIsIiR0YXJnZXQiLCJpc1BhdGhGaWx0ZXJhYmxlIiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsImZpbHRlcmFibGVFeHByZXNzaW9uIiwiaXNDb25zdGFudCIsImZpbHRlclJlc3RyaWN0aW9uRXhwcmVzc2lvbiIsIkFsbG93ZWRFeHByZXNzaW9ucyIsIm1ldGFkYXRhIiwicmVxdWlyZWQiLCJoaWRkZW5GaWx0ZXIiLCJ1bml0IiwiY2hpbGQiLCJpc0NvbGxlY3Rpb24iLCJzb21lIiwiYW5ub3RhdGlvblBhdGgiLCJzdGFydHNXaXRoIiwiaXNNZXRhUGF0aERyYWZ0U3VwcG9ydGVkIiwiaGFzIiwiZGVmYXVsdFZhbHVlTGlzdCIsImdldFZhbHVlTGlzdCIsInZhbHVlTGlzdEluZm8iLCJsaXN0QmluZGluZyIsIiRtb2RlbCIsImJpbmRMaXN0IiwiQ29sbGVjdGlvblBhdGgiLCIkc2VsZWN0IiwiZ2VuZXJhdGVTZWxlY3RQYXJhbWV0ZXIiLCJkYXRhIiwicmVxdWVzdENvbnRleHRzIiwiZmlsdGVyR3JvdXBWYWx1ZXMiLCJtYXBWYWx1ZUxpc3RUb0NvZGVMaXN0IiwiY29kZUxpc3RQcm9wZXJ0eSIsInJlc29sdmVUb2tlblZhbHVlc0ZvckZpZWxkIiwiZmllbGROYW1lIiwidmFsdWVzIiwiX3JlZiIsInVucmVzb2x2ZWRSZXN1bHQiLCJ2YWx1ZUxpc3QiLCJWYWx1ZUxpc3RIZWxwZXIiLCJpc1ZhbHVlTGlzdFNlYXJjaGFibGUiLCJyZXNvbHZlZFRva2VuVmFsdWVzIiwiYWxsIiwicmVzb2x2ZVRva2VuVmFsdWUiLCJmbGF0IiwiZ2V0TWV0YU1vZGVsIiwidmFsdWVMaXN0cyIsImdldFZhbHVlTGlzdEluZm8iLCJvblRva2Vuc0NoYW5nZWQiLCJmaWx0ZXJCYXIiLCJVSTVFbGVtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJmaWx0ZXJCYXJBUEkiLCJnZXRQYXJlbnQiLCJ0b2tlbnMiLCJnZXRQYXJhbWV0ZXIiLCJjbGVhckVkaXRGaWx0ZXIiLCJ0b2tlbkRlZmluaXRpb24iLCJrZXkiLCJfY2xlYXJGaWx0ZXJWYWx1ZXNXaXRoT3B0aW9ucyIsImZvcm1hdGVEYXRhVHlwZXMiLCJ0b2tlbiIsInRva2VuS2V5U3BlY2lmaWNhdGlvbiIsImtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMiLCJGaWx0ZXJVdGlscyIsImFkZEZpbHRlclZhbHVlcyIsImYiLCJPcGVyYXRvck5hbWUiLCJOT1RCVCIsInRyaWdnZXJTZWFyY2giLCJkYXRlVHlwZSIsIkRhdGUxIiwiZGF0ZVRpbWVPZmZzZXRUeXBlIiwiRGF0ZVRpbWVPZmZzZXQiLCJWNCIsInRpbWVPZkRheVR5cGUiLCJUaW1lT2ZEYXkiLCJlZG1UeXBlIiwia2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlIiwicmVxdWlyZWRDb252ZXJ0ZXIiLCJpZHgiLCJwYXJzZVZhbHVlIiwic2hvd1ZhbHVlSGVscEZvcktleSIsInNob3dGaWx0ZXJGaWVsZCIsIm9wZW5WYWx1ZUhlbHBGb3JGaWx0ZXJGaWVsZCIsIm9uQmVmb3JlUXVlcnlQcm9jZXNzaW5nIiwidWlNb2RlbCIsImdldE1vZGVsIiwiQnVzeUxvY2tlciIsImxvY2siLCJvbkFmdGVyUXVlcnlQcm9jZXNzaW5nIiwidW5sb2NrIiwib25DbGVhckZpbHRlcnMiLCJvblF1ZXJ5Q2hhbmdlZCIsImZpcmVGaWx0ZXJzQ2hhbmdlZCIsImNvbmRpdGlvbnNCYXNlZCIsImhhbmRsZVNob3dWYWx1ZUhlbHAiLCJldmVudCIsInJlamVjdCIsImNvbmRpdGlvbnMiLCJjb25kaXRpb24iLCJ2YWxpZGF0ZWQiLCJjb25kaXRpb25Ub1Jlc29sdmUiLCJ3YXJuaW5nIiwicmVzb2x2ZWRWYWx1ZXMiLCJFcnJvciIsIlN0cmluZyIsIl9qc3giLCJFYXN5RmlsdGVyQmFyQ29udGFpbmVyIiwiY29udGV4dFBhdGgiLCJnZXRPd25lckNvbnRleHRQYXRoIiwiYXBwSWQiLCJlYXN5RmlsdGVyTGliIiwic2hvd1ZhbHVlSGVscCIsImJpbmQiLCJkYXRhRmV0Y2hlciIsInJlY29tbWVuZGVkVmFsdWVzIiwicXVlcnlDaGFuZ2VkIiwidG9rZW5zQ2hhbmdlZCIsImJlZm9yZVF1ZXJ5UHJvY2Vzc2luZyIsImFmdGVyUXVlcnlQcm9jZXNzaW5nIiwiY2xlYXJGaWx0ZXJzIiwiQnVpbGRpbmdCbG9jayIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRWFzeUZpbHRlckJhci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb21wbGV4VHlwZSwgRW50aXR5U2V0LCBFbnRpdHlUeXBlLCBOYXZpZ2F0aW9uUHJvcGVydHksIFByb3BlcnR5LCBUeXBlRGVmaW5pdGlvbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgTG9jYWxpemF0aW9uIGZyb20gXCJzYXAvYmFzZS9pMThuL0xvY2FsaXphdGlvblwiO1xuaW1wb3J0IHsgaXNDb25zdGFudCB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBFbmhhbmNlV2l0aFVJNSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBhc3NvY2lhdGlvbiwgZGVmaW5lVUk1Q2xhc3MsIGltcGxlbWVudEludGVyZmFjZSwgcHJvcGVydHksIHR5cGUgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUge1xuXHRFYXN5RmlsdGVyQmFyQ29udGFpbmVyJFNob3dWYWx1ZUhlbHBFdmVudCxcblx0RWFzeUZpbHRlclByb3BlcnR5TWV0YWRhdGEsXG5cdFRva2VuRGVmaW5pdGlvbixcblx0VG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb24sXG5cdFRva2VuVHlwZSxcblx0VmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uXG59IGZyb20gXCJzYXAvZmUvY29udHJvbHMvZWFzeUZpbHRlci9FYXN5RmlsdGVyQmFyQ29udGFpbmVyXCI7XG5pbXBvcnQgRWFzeUZpbHRlckJhckNvbnRhaW5lciBmcm9tIFwic2FwL2ZlL2NvbnRyb2xzL2Vhc3lGaWx0ZXIvRWFzeUZpbHRlckJhckNvbnRhaW5lclwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2sgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0J1aWxkaW5nQmxvY2tcIjtcbmltcG9ydCBCdXN5TG9ja2VyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9CdXN5TG9ja2VyXCI7XG5pbXBvcnQgdHlwZSB7IENvbnRyb2xTdGF0ZSwgTmF2aWdhdGlvblBhcmFtZXRlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCB0eXBlIElWaWV3U3RhdGVDb250cmlidXRvciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvdmlld1N0YXRlL0lWaWV3U3RhdGVDb250cmlidXRvclwiO1xuaW1wb3J0IHsgdHlwZSBGaWx0ZXJGaWVsZCB9IGZyb20gXCJzYXAvZmUvY29yZS9kZWZpbml0aW9uL0ZFRGVmaW5pdGlvblwiO1xuaW1wb3J0IHR5cGUgTWV0YVBhdGggZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWV0YVBhdGhcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgaXNDb21wbGV4VHlwZSwgaXNFbnRpdHlUeXBlLCBpc05hdmlnYXRpb25Qcm9wZXJ0eSwgaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24sIGlzUHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgeyBpc1BhdGhGaWx0ZXJhYmxlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgaGFzVmFsdWVIZWxwV2l0aEZpeGVkVmFsdWVzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcbmltcG9ydCB7XG5cdGdlbmVyYXRlU2VsZWN0UGFyYW1ldGVyLFxuXHRtYXBWYWx1ZUxpc3RUb0NvZGVMaXN0LFxuXHRyZXNvbHZlVG9rZW5WYWx1ZSxcblx0dW5yZXNvbHZlZFJlc3VsdFxufSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9haS9FYXN5RmlsdGVyRGF0YUZldGNoZXJcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9GaWx0ZXJCYXJcIjtcbmltcG9ydCBGaWx0ZXJVdGlscyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyVXRpbHNcIjtcbmltcG9ydCBEcmFmdEVkaXRTdGF0ZSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRHJhZnRFZGl0U3RhdGVcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhckFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyQmFyQVBJXCI7XG5pbXBvcnQgVmFsdWVMaXN0SGVscGVyLCB7IHR5cGUgVmFsdWVMaXN0SW5mbyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL3ZhbHVlaGVscC9WYWx1ZUxpc3RIZWxwZXJcIjtcbmltcG9ydCB0eXBlIFVJNUV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBVSTVFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgdHlwZSB7IENvbmRpdGlvbk9iamVjdCB9IGZyb20gXCJzYXAvdWkvbWRjL2NvbmRpdGlvbi9Db25kaXRpb25cIjtcbmltcG9ydCBPcGVyYXRvck5hbWUgZnJvbSBcInNhcC91aS9tZGMvZW51bXMvT3BlcmF0b3JOYW1lXCI7XG5pbXBvcnQgRmlsdGVyT3BlcmF0b3IgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJPcGVyYXRvclwiO1xuaW1wb3J0IEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgRGF0ZTEgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS90eXBlL0RhdGVcIjtcbmltcG9ydCBEYXRlVGltZU9mZnNldCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3R5cGUvRGF0ZVRpbWVPZmZzZXRcIjtcbmltcG9ydCB0eXBlIE9EYXRhVHlwZSBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3R5cGUvT0RhdGFUeXBlXCI7XG5pbXBvcnQgVGltZU9mRGF5IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdHlwZS9UaW1lT2ZEYXlcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgQ29kZUxpc3QgfSBmcm9tIFwidXgvZW5nL2Zpb3JpYWkvcmV1c2UvZWFzeWZpbHRlci9FYXN5RmlsdGVyXCI7XG5cbnR5cGUgRWFzeUZpbHRlckJhclN0YXRlID0ge307XG50eXBlIEZpZWxkTWV0YWRhdGEgPSBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSAmIHsgbWF4TGVuZ3RoPzogbnVtYmVyIH07XG5cbi8qKlxuICogRGVsaXZlcnkgZm9yIGJldGEgcmVsZWFzZSBmb3IgdGhlIGVhc3kgZmlsdGVyIGZlYXR1cmUuXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuRWFzeUZpbHRlckJhclwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWFzeUZpbHRlckJhciBleHRlbmRzIEJ1aWxkaW5nQmxvY2sgaW1wbGVtZW50cyBJVmlld1N0YXRlQ29udHJpYnV0b3I8RWFzeUZpbHRlckJhclN0YXRlPiB7XG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy52aWV3U3RhdGUuSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCIpXG5cdF9faW1wbGVtZW50c19fc2FwX2ZlX2NvcmVfY29udHJvbGxlcmV4dGVuc2lvbnNfdmlld1N0YXRlX0lWaWV3U3RhdGVDb250cmlidXRvciE6IGJvb2xlYW47XG5cblx0QGFzc29jaWF0aW9uKHsgdHlwZTogXCJzYXAuZmUubWFjcm9zLmZpbHRlckJhci5GaWx0ZXJCYXJBUElcIiB9KVxuXHRmaWx0ZXJCYXIhOiBzdHJpbmc7XG5cblx0QGFzc29jaWF0aW9uKHsgdHlwZTogXCJzYXAuZmUubWFjcm9zLmNvbnRlbnRTd2l0Y2hlci5Db250ZW50U3dpdGNoZXJcIiB9KVxuXHRjb250ZW50U3dpdGNoZXIhOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRjb250ZW50U3dpdGNoZXJLZXk/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRjb250ZXh0UGF0aD86IHN0cmluZztcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5mZS5jb250cm9scy5lYXN5RmlsdGVyLkVhc3lGaWx0ZXJCYXJDb250YWluZXJcIiB9KVxuXHRjb250ZW50PzogRW5oYW5jZVdpdGhVSTU8RWFzeUZpbHRlckJhckNvbnRhaW5lcj47XG5cblx0cHJpdmF0ZSBmaWx0ZXJCYXJNZXRhZGF0YSE6IEZpZWxkTWV0YWRhdGFbXTtcblxuXHRwcml2YXRlIGVhc3lGaWx0ZXJQYXRoPzogc3RyaW5nO1xuXG5cdHByaXZhdGUgcmVjb21tZW5kZWRRdWVyaWVzPzogc3RyaW5nW107XG5cblx0Y29uc3RydWN0b3IocHJvcGVydGllczogJENvbnRyb2xTZXR0aW5ncyAmIFByb3BlcnRpZXNPZjxFYXN5RmlsdGVyQmFyPiwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdHN1cGVyKHByb3BlcnRpZXMsIG90aGVycyk7XG5cdFx0dGhpcy5nZXRBcHBDb21wb25lbnQoKVxuXHRcdFx0Py5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpXG5cdFx0XHQucHJlcGFyZUZlYXR1cmUoXCJNYWdpY0ZpbHRlcmluZ1wiKVxuXHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmVhc3lGaWx0ZXJQYXRoID0gXCJ1eC9lbmcvZmlvcmlhaS9yZXVzZS9lYXN5ZmlsdGVyL0Vhc3lGaWx0ZXJcIjtcblx0XHRcdFx0dGhpcy5jb250ZW50Py5zZXRFYXN5RmlsdGVyTGliKHRoaXMuZWFzeUZpbHRlclBhdGgpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKChlcnJvcikgPT4ge1xuXHRcdFx0XHRMb2cuZGVidWcoXCJFcnJvciB3aGlsZSBsb2FkaW5nIEVhc3lGaWx0ZXJcIiwgZXJyb3IpO1xuXHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0fSk7XG5cdH1cblxuXHRhc3luYyBhcHBseUxlZ2FjeVN0YXRlKFxuXHRcdGdldENvbnRyaWxTdGF0ZT86IChjb250cm9sOiBNYW5hZ2VkT2JqZWN0KSA9PiBDb250cm9sU3RhdGUsXG5cdFx0b05hdlBhcmFtZXRlcnM/OiBOYXZpZ2F0aW9uUGFyYW1ldGVyLFxuXHRcdF9zaG91bGRBcHBseURpZmZTdGF0ZT86IGJvb2xlYW4sXG5cdFx0X3NraXBNZXJnZT86IGJvb2xlYW5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKG9OYXZQYXJhbWV0ZXJzPy5zZWxlY3Rpb25WYXJpYW50KSB7XG5cdFx0XHRjb25zdCBzZWxlY3RPcHRpb25zTmFtZXMgPSBvTmF2UGFyYW1ldGVycy5zZWxlY3Rpb25WYXJpYW50LmdldFNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzKCk7XG5cdFx0XHR0aGlzLmZpbHRlckJhck1ldGFkYXRhLmZvckVhY2goKGZpZWxkKSA9PiB7XG5cdFx0XHRcdGlmIChzZWxlY3RPcHRpb25zTmFtZXMuaW5jbHVkZXMoZmllbGQubmFtZSkpIHtcblx0XHRcdFx0XHRmaWVsZC5kZWZhdWx0VmFsdWUgPSBvTmF2UGFyYW1ldGVycy5zZWxlY3Rpb25WYXJpYW50IS5nZXRTZWxlY3RPcHRpb24oZmllbGQubmFtZSk/LnJlZHVjZSgoYWNjLCBvcHRpb24pID0+IHtcblx0XHRcdFx0XHRcdGlmIChvcHRpb24uU2lnbiA9PT0gXCJJXCIpIHtcblx0XHRcdFx0XHRcdFx0aWYgKG9wdGlvbi5PcHRpb24gPT09IEZpbHRlck9wZXJhdG9yLkJUIHx8IG9wdGlvbi5PcHRpb24gPT09IEZpbHRlck9wZXJhdG9yLk5CKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKG9wdGlvbi5IaWdoICE9PSBudWxsICYmIG9wdGlvbi5IaWdoICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGFjYy5wdXNoKHsgb3BlcmF0b3I6IG9wdGlvbi5PcHRpb24sIHNlbGVjdGVkVmFsdWVzOiBbb3B0aW9uLkxvdywgb3B0aW9uLkhpZ2hdIH0pO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRhY2MucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRvcGVyYXRvcjogb3B0aW9uLk9wdGlvbiBhcyBFeGNsdWRlPEZpbHRlck9wZXJhdG9yLCBGaWx0ZXJPcGVyYXRvci5CVCB8IEZpbHRlck9wZXJhdG9yLk5CPixcblx0XHRcdFx0XHRcdFx0XHRcdHNlbGVjdGVkVmFsdWVzOiBbb3B0aW9uLkxvd11cblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0YWNjLnB1c2goeyBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IuTkUsIHNlbGVjdGVkVmFsdWVzOiBbb3B0aW9uLkxvd10gfSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm4gYWNjO1xuXHRcdFx0XHRcdH0sIFtdIGFzIFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHRoaXMuY29udGVudD8ucmVzZXRTdGF0ZShmYWxzZSk7XG5cdFx0fVxuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcblx0fVxuXG5cdGFwcGx5U3RhdGUoX3N0YXRlOiBFYXN5RmlsdGVyQmFyU3RhdGUsIF9vTmF2UGFyYW1ldGVycz86IE5hdmlnYXRpb25QYXJhbWV0ZXIpOiBQcm9taXNlPHZvaWQ+IHwgdm9pZCB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdHJldHJpZXZlU3RhdGUoKTogRWFzeUZpbHRlckJhclN0YXRlIHwgbnVsbCB7XG5cdFx0cmV0dXJuIHt9O1xuXHR9XG5cblx0Z2V0QXBwbGljYXRpb25JZCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLmdldEFwcENvbXBvbmVudCgpPy5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLmFwcFwiKS5pZCA/PyBcIjx1bmtub3duSUQ+XCI7XG5cdH1cblxuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKCk6IHZvaWQge1xuXHRcdHRoaXMuZmlsdGVyQmFyTWV0YWRhdGEgPSB0aGlzLnByZXBhcmVGaWx0ZXJCYXJNZXRhZGF0YSgpO1xuXHRcdHRoaXMucmVjb21tZW5kZWRRdWVyaWVzID0gdGhpcy5nZXRBcHBDb21wb25lbnQoKT8uZ2V0TWFuaWZlc3RFbnRyeShcInNhcC5mZVwiKT8ubWFjcm9zPy5lYXN5RmlsdGVyPy5yZWNvbW1lbmRlZFF1ZXJpZXMgPz8gW107XG5cdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCkgYXMgRW5oYW5jZVdpdGhVSTU8RWFzeUZpbHRlckJhckNvbnRhaW5lcj47XG5cdFx0dGhpcy5jb250ZW50LmZpbHRlckJhck1ldGFkYXRhID0gdGhpcy5maWx0ZXJCYXJNZXRhZGF0YTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0VW5pdEZvclByb3BlcnR5KHByb3A6IFByb3BlcnR5LCBiYXNlUGF0aDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCB1bml0QW5ub3RhdGlvbiA9IHByb3AuYW5ub3RhdGlvbnMuTWVhc3VyZXM/LklTT0N1cnJlbmN5ID8/IHByb3AuYW5ub3RhdGlvbnMuTWVhc3VyZXM/LlVuaXQ7XG5cdFx0cmV0dXJuIGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uKHVuaXRBbm5vdGF0aW9uKSA/IGAke2Jhc2VQYXRofS8ke3VuaXRBbm5vdGF0aW9uLnBhdGh9YCA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdHByaXZhdGUgZ2V0RGVmYXVsdFZhbHVlRm9yRmlsdGVyRmllbGQoXG5cdFx0ZmllbGQ6IEZpbHRlckZpZWxkLFxuXHRcdHN0YXJ0dXBQYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuXHQpOiBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdIHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgZGVmYXVsdFZhbHVlOiBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdIHwgdW5kZWZpbmVkO1xuXHRcdGlmIChzdGFydHVwUGFyYW1ldGVycy5oYXNPd25Qcm9wZXJ0eShmaWVsZC5uYW1lKSkge1xuXHRcdFx0ZGVmYXVsdFZhbHVlID0gW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0b3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLkVRLFxuXHRcdFx0XHRcdHNlbGVjdGVkVmFsdWVzOiBzdGFydHVwUGFyYW1ldGVyc1tmaWVsZC5uYW1lXSBhcyBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltcInNlbGVjdGVkVmFsdWVzXCJdXG5cdFx0XHRcdH1cblx0XHRcdF07XG5cdFx0fSBlbHNlIGlmIChmaWVsZC5pc1BhcmFtZXRlciAmJiBzdGFydHVwUGFyYW1ldGVycy5oYXNPd25Qcm9wZXJ0eShmaWVsZC5uYW1lLnN1YnN0cmluZygyKSkpIHtcblx0XHRcdGRlZmF1bHRWYWx1ZSA9IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvci5FUSxcblx0XHRcdFx0XHRzZWxlY3RlZFZhbHVlczogc3RhcnR1cFBhcmFtZXRlcnNbZmllbGQubmFtZS5zdWJzdHJpbmcoMildIGFzIFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW1wic2VsZWN0ZWRWYWx1ZXNcIl1cblx0XHRcdFx0fVxuXHRcdFx0XTtcblx0XHR9XG5cdFx0cmV0dXJuIGRlZmF1bHRWYWx1ZTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0RWRpdFN0YXRlRmlsdGVyTWV0YWRhdGEobWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCk6IEZpZWxkTWV0YWRhdGEge1xuXHRcdC8vIEFzc2VtYmxlIHRoZSBjb2RlIGxpc3QgZm9yIHRoZSBlZGl0aW5nIHN0YXR1cyBmaWx0ZXIgdmFsdWVzOlxuXHRcdGNvbnN0IHByb3BzID0gbmV3IEpTT05Nb2RlbCh7XG5cdFx0XHRpc0RyYWZ0Q29sbGFib3JhdGl2ZTogTW9kZWxIZWxwZXIuaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQobWV0YU1vZGVsKVxuXHRcdH0pLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiKTtcblxuXHRcdGNvbnN0IGVkaXRpbmdTdGF0dXNDb2RlTGlzdCA9IERyYWZ0RWRpdFN0YXRlLmdldEVkaXRTdGF0ZXNDb250ZXh0KHByb3BzKVxuXHRcdFx0LmdldE9iamVjdChcIi9cIilcblx0XHRcdC5tYXAoKHN0YXRlOiB7IGlkOiBzdHJpbmc7IGRpc3BsYXk6IHN0cmluZyB9KSA9PiAoeyB2YWx1ZTogc3RhdGUuaWQsIGRlc2NyaXB0aW9uOiBzdGF0ZS5kaXNwbGF5IH0pKTtcblxuXHRcdHJldHVybiB7XG5cdFx0XHRuYW1lOiBcIiRlZGl0U3RhdGVcIixcblx0XHRcdGxhYmVsOiB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiRklMVEVSQkFSX0VESVRJTkdfU1RBVFVTXCIpLFxuXHRcdFx0ZGF0YVR5cGU6IFwiRWRtLlN0cmluZ1wiLFxuXHRcdFx0ZmlsdGVyYWJsZTogdHJ1ZSxcblx0XHRcdGNvZGVMaXN0OiBlZGl0aW5nU3RhdHVzQ29kZUxpc3QsXG5cdFx0XHR0eXBlOiBcIk1lbnVXaXRoU2luZ2xlU2VsZWN0XCJcblx0XHR9O1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRUb2tlblR5cGUocHJvcDogUHJvcGVydHksIGZpbHRlclJlc3RyaWN0aW9uOiBzdHJpbmcpOiBUb2tlblR5cGUge1xuXHRcdGlmIChoYXNWYWx1ZUhlbHBXaXRoRml4ZWRWYWx1ZXMocHJvcCkpIHtcblx0XHRcdHJldHVybiBmaWx0ZXJSZXN0cmljdGlvbiA9PT0gXCJTaW5nbGVWYWx1ZVwiID8gXCJNZW51V2l0aFNpbmdsZVNlbGVjdFwiIDogXCJNZW51V2l0aENoZWNrQm94XCI7XG5cdFx0fVxuXHRcdHN3aXRjaCAocHJvcC50eXBlKSB7XG5cdFx0XHRjYXNlIFwiRWRtLkRhdGVcIjpcblx0XHRcdFx0cmV0dXJuIFwiQ2FsZW5kYXJcIjtcblx0XHRcdGNhc2UgXCJFZG0uVGltZU9mRGF5XCI6XG5cdFx0XHRcdHJldHVybiBcIlRpbWVcIjtcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiBcIlZhbHVlSGVscFwiO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgZ2V0TGFiZWwoZWxlbWVudDogUHJvcGVydHkgfCBOYXZpZ2F0aW9uUHJvcGVydHkgfCBFbnRpdHlUeXBlIHwgQ29tcGxleFR5cGUpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IGxhYmVsID0gZWxlbWVudC5hbm5vdGF0aW9ucy5Db21tb24/LkxhYmVsPy50b1N0cmluZygpO1xuXHRcdGNvbnN0IGhlYWRlckluZm9UeXBlTmFtZSA9IGlzRW50aXR5VHlwZShlbGVtZW50KSA/IChlbGVtZW50LmFubm90YXRpb25zLlVJPy5IZWFkZXJJbmZvPy5UeXBlTmFtZT8udmFsdWVPZigpIGFzIHN0cmluZykgOiB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgcmVzdWx0ID0gaGVhZGVySW5mb1R5cGVOYW1lIHx8IGxhYmVsO1xuXG5cdFx0aWYgKHRoaXMuaXNDb21wbGV4UHJvcGVydHkoZWxlbWVudCkgfHwgaXNOYXZpZ2F0aW9uUHJvcGVydHkoZWxlbWVudCkpIHtcblx0XHRcdHJldHVybiByZXN1bHQgfHwgdGhpcy5nZXRMYWJlbChlbGVtZW50LnRhcmdldFR5cGUpO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHRwcml2YXRlIGlzU2NhbGFyUHJvcGVydHkoZWxlbWVudDogdW5rbm93bik6IGVsZW1lbnQgaXMgUHJvcGVydHkgJiB7IHRhcmdldFR5cGU/OiBUeXBlRGVmaW5pdGlvbiB9IHtcblx0XHRyZXR1cm4gaXNQcm9wZXJ0eShlbGVtZW50KSAmJiAhaXNDb21wbGV4VHlwZShlbGVtZW50LnRhcmdldFR5cGUpO1xuXHR9XG5cblx0cHJpdmF0ZSBpc0NvbXBsZXhQcm9wZXJ0eShlbGVtZW50OiB1bmtub3duKTogZWxlbWVudCBpcyBQcm9wZXJ0eSAmIHsgdGFyZ2V0VHlwZTogQ29tcGxleFR5cGUgfSB7XG5cdFx0cmV0dXJuIGlzUHJvcGVydHkoZWxlbWVudCkgJiYgaXNDb21wbGV4VHlwZShlbGVtZW50LnRhcmdldFR5cGUpO1xuXHR9XG5cblx0cHJlcGFyZUZpbHRlckJhck1ldGFkYXRhKCk6IEZpZWxkTWV0YWRhdGFbXSB7XG5cdFx0Lypcblx0XHQgKiAxLiBJTklUSUFMSVpBVElPTjpcblx0XHQgKiAgICAtIFF1ZXVlIGFsbCByb290IGVudGl0eSBwcm9wZXJ0aWVzIGFuZCBuYXZpZ2F0aW9uIHByb3BlcnRpZXMgZm9yIHRyYXZlcnNhbFxuXHRcdCAqICAgIC0gSW5pdGlhbGl6ZSByZXN1bHQgYXJyYXkgYW5kIGVsaW1pbmF0aW9uIHNldCBmb3IgQ29tbW9uLlRleHQgdGFyZ2V0c1xuXHRcdCAqXG5cdFx0ICogMi4gQlJFQURUSC1GSVJTVCBUUkFWRVJTQUw6XG5cdFx0ICogICAgRm9yIGVhY2ggcGF0aCBpbiBxdWV1ZTpcblx0XHQgKiAgICAtIFNraXAgVUkuSGlkZGVuIHByb3BlcnRpZXNcblx0XHQgKiAgICAtIFNjYWxhciBwcm9wZXJ0aWVzOiBHZW5lcmF0ZSBtZXRhZGF0YSwgdHJhY2sgQ29tbW9uLlRleHQgdGFyZ2V0cyBmb3IgZWxpbWluYXRpb25cblx0XHQgKiAgICAtIENvbXBsZXggcHJvcGVydGllczogQWRkIGNoaWxkIHByb3BlcnRpZXMgdG8gcXVldWVcblx0XHQgKiAgICAtIE5hdmlnYXRpb24gcHJvcGVydGllczogQWRkIHRhcmdldCBFbnRpdHlUeXBlIHByb3BlcnRpZXMgdG8gcXVldWVcblx0XHQgKiAgICAgIChDb2xsZWN0aW9ucyBvbmx5IGlmIGV4cGxpY2l0IGZpbHRlciBmaWVsZHMgZXhpc3QsIHJlc3BlY3QgZGVwdGggbGltaXRzKVxuXHRcdCAqXG5cdFx0ICogMy4gUE9TVC1QUk9DRVNTSU5HOlxuXHRcdCAqICAgIC0gQWRkICRlZGl0U3RhdGUgZmlsdGVyIGZvciBkcmFmdC1lbmFibGVkIGVudGl0aWVzXG5cdFx0ICogICAgLSBSZW1vdmUgcHJvcGVydGllcyBtYXJrZWQgZm9yIGVsaW1pbmF0aW9uIChleGNlcHQgZXhwbGljaXQgZmlsdGVyIGZpZWxkcylcblx0XHQgKi9cblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCkhO1xuXHRcdGNvbnN0IGRlZmluaXRpb25Gb3JQYWdlID0gb3duZXIucHJlcHJvY2Vzc29yQ29udGV4dD8uZ2V0RGVmaW5pdGlvbkZvclBhZ2UoKTtcblxuXHRcdGlmICghZGVmaW5pdGlvbkZvclBhZ2UpIHtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cblx0XHRjb25zdCBmaWx0ZXJCYXJEZWYgPSBkZWZpbml0aW9uRm9yUGFnZS5nZXRGaWx0ZXJCYXJEZWZpbml0aW9uKHt9KTtcblx0XHRjb25zdCBtZXRhUGF0aCA9IGRlZmluaXRpb25Gb3JQYWdlLmdldE1ldGFQYXRoKCk7XG5cdFx0Y29uc3QgZW50aXR5U2V0ID0gbWV0YVBhdGguZ2V0Q2xvc2VzdEVudGl0eVNldCgpIGFzIEVudGl0eVNldDtcblxuXHRcdGxldCBmaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zID0gZW50aXR5U2V0LmFubm90YXRpb25zLkNhcGFiaWxpdGllcz8uRmlsdGVyUmVzdHJpY3Rpb25zPy5GaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zID8/IFtdO1xuXG5cdFx0Ly8gVE9ETzogTWF5YmUgd2UgY2FuIHNpbXBsaWZ5IHRoaXMgYnkgdXNpbmcgcmVzdHJpY3Rpb25zIG9uIHRoZSBtYWluIGVudGl0eSBzZXQgb25seVxuXHRcdGZvciAoY29uc3QgbmF2aWdhdGlvblByb3BlcnR5IGluIGVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nKSB7XG5cdFx0XHRpZiAoZW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbbmF2aWdhdGlvblByb3BlcnR5XT8uX3R5cGUgPT09IFwiRW50aXR5U2V0XCIpIHtcblx0XHRcdFx0Ly8gRklYTUU6IG9wdGlvbmFsIGNoYWluaW5nIHNob3VsZCBub3QgYmUgbmVlZGVkIGhlcmUgLT4gcm9vdCBjYXVzZSBmaXggcGVuZGluZ1xuXHRcdFx0XHRjb25zdCBuYXZpZ2F0aW9uUHJvcGVydHlFbnRpdHlTZXQgPSBlbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tuYXZpZ2F0aW9uUHJvcGVydHldIGFzIEVudGl0eVNldDtcblx0XHRcdFx0Y29uc3QgbmF2UHJvcGVydHlGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zID1cblx0XHRcdFx0XHRuYXZpZ2F0aW9uUHJvcGVydHlFbnRpdHlTZXQuYW5ub3RhdGlvbnMuQ2FwYWJpbGl0aWVzPy5GaWx0ZXJSZXN0cmljdGlvbnM/LkZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMgPz8gW107XG5cblx0XHRcdFx0Y29uc3QgY3VycmVudEZpbHRlclJlc3RyaWN0aW9ucyA9IFsuLi5maWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zXTtcblx0XHRcdFx0ZmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyA9IFtcblx0XHRcdFx0XHQuLi5maWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zLFxuXHRcdFx0XHRcdC4uLm5hdlByb3BlcnR5RmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucy5maWx0ZXIoKHJlc3RyaWN0aW9uKSA9PiAhY3VycmVudEZpbHRlclJlc3RyaWN0aW9ucy5pbmNsdWRlcyhyZXN0cmljdGlvbikpXG5cdFx0XHRcdF07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gb3duZXIucHJlcHJvY2Vzc29yQ29udGV4dD8ubW9kZWxzLm1ldGFNb2RlbCBhcyBPRGF0YU1ldGFNb2RlbDtcblxuXHRcdGNvbnN0IGdldENvZGVMaXN0ID0gKGxhc3RQYXRoU2VnbWVudDogUHJvcGVydHksIHByb3BlcnR5UGF0aDogc3RyaW5nKTogQ29kZUxpc3QgfCAoKCkgPT4gUHJvbWlzZTxDb2RlTGlzdD4pIHwgdW5kZWZpbmVkID0+XG5cdFx0XHRoYXNWYWx1ZUhlbHBXaXRoRml4ZWRWYWx1ZXMobGFzdFBhdGhTZWdtZW50KVxuXHRcdFx0XHQ/IGFzeW5jICgpOiBQcm9taXNlPENvZGVMaXN0PiA9PiB0aGlzLmdldENvZGVMaXN0Rm9yUHJvcGVydHkocHJvcGVydHlQYXRoKVxuXHRcdFx0XHQ6IHVuZGVmaW5lZDtcblxuXHRcdGNvbnN0IGZpbHRlckZpZWxkcyA9IGZpbHRlckJhckRlZlxuXHRcdFx0LmdldEZpbHRlckZpZWxkcygpXG5cdFx0XHQuZmlsdGVyKChmaWVsZDogRmlsdGVyRmllbGQpID0+ICFmaWVsZC5nZXRUYXJnZXQoKT8uYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW5GaWx0ZXI/LnZhbHVlT2YoKSk7XG5cblx0XHRjb25zdCBzdGFydHVwUGFyYW1ldGVycyA9IG93bmVyLmdldEFwcENvbXBvbmVudCgpLmdldENvbXBvbmVudERhdGEoKT8uc3RhcnR1cFBhcmFtZXRlcnMgPz8ge307XG5cblx0XHRjb25zdCBtYXhEZXB0aCA9IDE7IC8vIE1heGltdW0gZGVwdGggZm9yIG5hdmlnYXRpb24gcHJvcGVydGllc1xuXG5cdFx0Ly8gSW5pdGlhbGl6ZSB0cmF2ZXJzYWwgcXVldWUgd2l0aCBhbGwgZW50aXR5IHByb3BlcnRpZXMgYW5kIG5hdmlnYXRpb24gcHJvcGVydGllcy5cblx0XHQvLyBFYWNoIHBhdGggdG8gdHJhdmVyc2UgaXMgYSBsaXN0IG9mIHNlZ21lbnRzIChlLmcuIFtuYXZQcm9wMSwgY29tcGxleFByb3AxLCBjb21wbGV4UHJvcDIsIHNjYWxhclByb3BdKVxuXHRcdGNvbnN0IHBhdGhzVG9FeHBsb3JlOiAoUHJvcGVydHkgfCBOYXZpZ2F0aW9uUHJvcGVydHkpW11bXSA9IFtcblx0XHRcdC4uLmVudGl0eVNldC5lbnRpdHlUeXBlLmVudGl0eVByb3BlcnRpZXMsXG5cdFx0XHQuLi5lbnRpdHlTZXQuZW50aXR5VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllc1xuXHRcdF0ubWFwKChlbGVtZW50KSA9PiBbZWxlbWVudF0pO1xuXG5cdFx0Ly8gUmVzdWx0aW5nIG1ldGFkYXRhIGFycmF5XG5cdFx0Y29uc3QgcmVzdWx0OiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YVtdID0gW107XG5cblx0XHQvLyBTZXQgb2YgcHJvcGVydHkgcGF0aHMgdG8gYmUgZWxpbWluYXRlZCBmcm9tIHRoZSBmaWx0ZXIgYmFyIG1ldGFkYXRhXG5cdFx0Y29uc3QgcGF0aHNUb0VsaW1pbmF0ZSA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG5cdFx0Y29uc3QgZ2V0UGF0aExhYmVsID0gKHBhdGg6IChQcm9wZXJ0eSB8IE5hdmlnYXRpb25Qcm9wZXJ0eSlbXSk6IHN0cmluZyA9PiB7XG5cdFx0XHRjb25zdCBwYXRoTGFiZWxzID0gcGF0aC5tYXAoKGUpID0+IHRoaXMuZ2V0TGFiZWwoZSkgfHwgYFske2UubmFtZX1dYCk7XG5cdFx0XHRyZXR1cm4gTG9jYWxpemF0aW9uLmdldFJUTCgpID8gcGF0aExhYmVscy5zbGljZSgpLnJldmVyc2UoKS5qb2luKFwiIC0gXCIpIDogcGF0aExhYmVscy5qb2luKFwiIC0gXCIpO1xuXHRcdH07XG5cblx0XHR3aGlsZSAocGF0aHNUb0V4cGxvcmUubGVuZ3RoID4gMCkge1xuXHRcdFx0Y29uc3QgY3VycmVudFBhdGggPSBwYXRoc1RvRXhwbG9yZS5zaGlmdCgpITtcblxuXHRcdFx0Y29uc3QgbmF2aWdhdGlvbkRlcHRoID0gY3VycmVudFBhdGguZmlsdGVyKGlzTmF2aWdhdGlvblByb3BlcnR5KS5sZW5ndGg7XG5cblx0XHRcdGNvbnN0IGxhc3RQYXRoU2VnbWVudCA9IGN1cnJlbnRQYXRoW2N1cnJlbnRQYXRoLmxlbmd0aCAtIDFdO1xuXG5cdFx0XHRpZiAobGFzdFBhdGhTZWdtZW50LmFubm90YXRpb25zLlVJPy5IaWRkZW4/LnZhbHVlT2YoKSA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgcGF0aFN0cmluZyA9IFtgLyR7ZW50aXR5U2V0Lm5hbWV9YCwgLi4uY3VycmVudFBhdGguc2xpY2UoMCwgLTEpLm1hcCgoZSkgPT4gZS5uYW1lKV0ucmVkdWNlKFxuXHRcdFx0XHQoYWNjLCBjdXJyKSA9PiBgJHthY2N9LyR7Y3Vycn1gXG5cdFx0XHQpO1xuXHRcdFx0Y29uc3QgcHJvcGVydHlQYXRoID0gYCR7cGF0aFN0cmluZ30vJHtsYXN0UGF0aFNlZ21lbnQubmFtZX1gO1xuXG5cdFx0XHRpZiAodGhpcy5pc1NjYWxhclByb3BlcnR5KGxhc3RQYXRoU2VnbWVudCkpIHtcblx0XHRcdFx0Ly8gQ2hlY2sgZm9yIENvbW1vbi5UZXh0IGFubm90YXRpb24gYW5kIHJlY29yZCB0aGUgYW5ub3RhdGlvbiB0YXJnZXQgcGF0aCBmb3IgZWxpbWluYXRpb25cblx0XHRcdFx0Y29uc3QgdGV4dEFubm90YXRpb24gPSBsYXN0UGF0aFNlZ21lbnQuYW5ub3RhdGlvbnMuQ29tbW9uPy5UZXh0O1xuXHRcdFx0XHRpZiAoaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24odGV4dEFubm90YXRpb24pKSB7XG5cdFx0XHRcdFx0Ly8gQ29uc3RydWN0IHRoZSBmdWxsIHBhdGggdG8gdGhlIHRhcmdldCBwcm9wZXJ0eVxuXHRcdFx0XHRcdHBhdGhzVG9FbGltaW5hdGUuYWRkKGAke3BhdGhTdHJpbmd9LyR7dGV4dEFubm90YXRpb24ucGF0aH1gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFNjYWxhciBwcm9wZXJ0eTogY3JlYXRlIG1ldGFkYXRhIGZvciB0aGUgcHJvcGVydHlcblx0XHRcdFx0Y29uc3QgZmlsdGVyRmllbGQgPSBmaWx0ZXJGaWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkLmdldFRhcmdldCgpID09PSBsYXN0UGF0aFNlZ21lbnQpO1xuXHRcdFx0XHRjb25zdCBmaWx0ZXJSZXN0cmljdGlvbiA9IGZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMuZmluZChcblx0XHRcdFx0XHQoZXhwcmVzc2lvbikgPT4gZXhwcmVzc2lvbi5Qcm9wZXJ0eT8uJHRhcmdldCA9PT0gbGFzdFBhdGhTZWdtZW50XG5cdFx0XHRcdCk7XG5cdFx0XHRcdGNvbnN0IGZpbHRlcmFibGUgPSBpc1BhdGhGaWx0ZXJhYmxlKHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aChwcm9wZXJ0eVBhdGgpKTtcblx0XHRcdFx0Y29uc3QgZmlsdGVyYWJsZUV4cHJlc3Npb24gPSBpc0NvbnN0YW50KGZpbHRlcmFibGUpID8gZmlsdGVyYWJsZS52YWx1ZSA6IHRydWU7XG5cdFx0XHRcdGNvbnN0IGZpbHRlclJlc3RyaWN0aW9uRXhwcmVzc2lvbiA9IGZpbHRlclJlc3RyaWN0aW9uPy5BbGxvd2VkRXhwcmVzc2lvbnMgYXNcblx0XHRcdFx0XHR8IEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhW1wiZmlsdGVyUmVzdHJpY3Rpb25cIl1cblx0XHRcdFx0XHR8IHVuZGVmaW5lZDtcblx0XHRcdFx0Y29uc3QgY29kZUxpc3QgPSBnZXRDb2RlTGlzdChsYXN0UGF0aFNlZ21lbnQsIHByb3BlcnR5UGF0aCk7XG5cdFx0XHRcdGNvbnN0IG1ldGFkYXRhOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSA9IHtcblx0XHRcdFx0XHRuYW1lOiBwcm9wZXJ0eVBhdGgsXG5cdFx0XHRcdFx0bGFiZWw6IGdldFBhdGhMYWJlbChjdXJyZW50UGF0aCksXG5cdFx0XHRcdFx0ZGF0YVR5cGU6IGxhc3RQYXRoU2VnbWVudC50eXBlLFxuXHRcdFx0XHRcdHJlcXVpcmVkOiBmaWx0ZXJGaWVsZD8ucmVxdWlyZWQsXG5cdFx0XHRcdFx0ZGVmYXVsdFZhbHVlOiBmaWx0ZXJGaWVsZCA/IHRoaXMuZ2V0RGVmYXVsdFZhbHVlRm9yRmlsdGVyRmllbGQoZmlsdGVyRmllbGQsIHN0YXJ0dXBQYXJhbWV0ZXJzKSA6IHVuZGVmaW5lZCxcblx0XHRcdFx0XHRmaWx0ZXJhYmxlOiBmaWx0ZXJGaWVsZCA/IGZpbHRlcmFibGVFeHByZXNzaW9uIDogdW5kZWZpbmVkLFxuXHRcdFx0XHRcdGhpZGRlbkZpbHRlcjogIWZpbHRlckZpZWxkLFxuXHRcdFx0XHRcdGZpbHRlclJlc3RyaWN0aW9uOiBmaWx0ZXJGaWVsZCA/IGZpbHRlclJlc3RyaWN0aW9uRXhwcmVzc2lvbiA6IHVuZGVmaW5lZCxcblx0XHRcdFx0XHRjb2RlTGlzdCxcblx0XHRcdFx0XHR0eXBlOiB0aGlzLmdldFRva2VuVHlwZShcblx0XHRcdFx0XHRcdGxhc3RQYXRoU2VnbWVudCxcblx0XHRcdFx0XHRcdGZpbHRlclJlc3RyaWN0aW9uPy5BbGxvd2VkRXhwcmVzc2lvbnM/LnRvU3RyaW5nKCkgfHwgXCJNdWx0aVJhbmdlT3JTZWFyY2hFeHByZXNzaW9uXCJcblx0XHRcdFx0XHQpIGFzIEV4Y2x1ZGU8VG9rZW5UeXBlLCBcIlZhbHVlSGVscFwiPixcblx0XHRcdFx0XHR1bml0OiB0aGlzLmdldFVuaXRGb3JQcm9wZXJ0eShsYXN0UGF0aFNlZ21lbnQsIHBhdGhTdHJpbmcpXG5cdFx0XHRcdH07XG5cdFx0XHRcdHJlc3VsdC5wdXNoKG1ldGFkYXRhKTtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5pc0NvbXBsZXhQcm9wZXJ0eShsYXN0UGF0aFNlZ21lbnQpKSB7XG5cdFx0XHRcdC8vIENvbXBsZXggcHJvcGVydHk6IGFkZCBhbGwgcHJvcGVydGllcyBhbmQgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzIG9mIHRoZSBjb21wbGV4IHR5cGVcblx0XHRcdFx0bGFzdFBhdGhTZWdtZW50LnRhcmdldFR5cGUucHJvcGVydGllcy5mb3JFYWNoKChjaGlsZCkgPT4ge1xuXHRcdFx0XHRcdHBhdGhzVG9FeHBsb3JlLnB1c2goWy4uLmN1cnJlbnRQYXRoLCBjaGlsZF0pO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHQvLyBvbmx5IHRyYXZlcnNlIG5hdmlnYXRpb24gcHJvcGVydGllcyBpZiB3ZSBhcmUgbm90IGF0IHRoZSBtYXhpbXVtIGRlcHRoXG5cdFx0XHRcdGlmIChuYXZpZ2F0aW9uRGVwdGggPCBtYXhEZXB0aCkge1xuXHRcdFx0XHRcdGxhc3RQYXRoU2VnbWVudC50YXJnZXRUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZvckVhY2goKGNoaWxkKSA9PiB7XG5cdFx0XHRcdFx0XHRwYXRoc1RvRXhwbG9yZS5wdXNoKFsuLi5jdXJyZW50UGF0aCwgY2hpbGRdKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChpc05hdmlnYXRpb25Qcm9wZXJ0eShsYXN0UGF0aFNlZ21lbnQpKSB7XG5cdFx0XHRcdC8vIGFkZCAxOm4gbmF2aWdhdGlvbiBwcm9wZXJ0aWVzIG9ubHkgaWYgdGhlcmUgYXJlIGZpbHRlciBmaWVsZHMgZm9yIGF0IGxlYXN0IG9uZSBvZiB0aGUgdGFyZ2V0IHByb3BlcnRpZXNcblx0XHRcdFx0aWYgKGxhc3RQYXRoU2VnbWVudC5pc0NvbGxlY3Rpb24gJiYgIWZpbHRlckZpZWxkcy5zb21lKChmaWVsZCkgPT4gZmllbGQuYW5ub3RhdGlvblBhdGg/LnN0YXJ0c1dpdGgocHJvcGVydHlQYXRoKSkpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxhc3RQYXRoU2VnbWVudC50YXJnZXRUeXBlLmVudGl0eVByb3BlcnRpZXMuZm9yRWFjaCgoY2hpbGQpID0+IHtcblx0XHRcdFx0XHRwYXRoc1RvRXhwbG9yZS5wdXNoKFsuLi5jdXJyZW50UGF0aCwgY2hpbGRdKTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Ly8gb25seSB0cmF2ZXJzZSBuYXZpZ2F0aW9uIHByb3BlcnRpZXMgaWYgd2UgYXJlIG5vdCBhdCB0aGUgbWF4aW11bSBkZXB0aFxuXHRcdFx0XHRpZiAobmF2aWdhdGlvbkRlcHRoIDwgbWF4RGVwdGgpIHtcblx0XHRcdFx0XHRsYXN0UGF0aFNlZ21lbnQudGFyZ2V0VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcy5mb3JFYWNoKChjaGlsZCkgPT4ge1xuXHRcdFx0XHRcdFx0cGF0aHNUb0V4cGxvcmUucHVzaChbLi4uY3VycmVudFBhdGgsIGNoaWxkXSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBbRWRpdGluZyBTdGF0dXNdXG5cdFx0aWYgKE1vZGVsSGVscGVyLmlzTWV0YVBhdGhEcmFmdFN1cHBvcnRlZChkZWZpbml0aW9uRm9yUGFnZS5nZXRNZXRhUGF0aCgpIGFzIHVua25vd24gYXMgTWV0YVBhdGg8dW5rbm93bj4pKSB7XG5cdFx0XHRyZXN1bHQucHVzaCh0aGlzLmdldEVkaXRTdGF0ZUZpbHRlck1ldGFkYXRhKG1ldGFNb2RlbCkpO1xuXHRcdH1cblxuXHRcdC8vIFJlbW92ZSBwcm9wZXJ0aWVzIG1hcmtlZCBmb3IgZWxpbWluYXRpb24gKHVubGVzcyB0aGV5IGFyZSBmaWx0ZXIgZmllbGRzKVxuXHRcdHJldHVybiByZXN1bHQuZmlsdGVyKChtZXRhZGF0YSkgPT4ge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0IW1ldGFkYXRhLmhpZGRlbkZpbHRlciB8fCAvLyBLZWVwIGlmIGV4cGxpY2l0IGZpbHRlciBmaWVsZFxuXHRcdFx0XHQhcGF0aHNUb0VsaW1pbmF0ZS5oYXMobWV0YWRhdGEubmFtZSkgLy8gS2VlcCBpZiBwYXRoIG5vdCBtYXJrZWQgZm9yIGVsaW1pbmF0aW9uXG5cdFx0XHQpO1xuXHRcdH0pO1xuXHR9XG5cblx0YXN5bmMgZ2V0Q29kZUxpc3RGb3JQcm9wZXJ0eShwcm9wZXJ0eVBhdGg6IHN0cmluZyk6IFByb21pc2U8Q29kZUxpc3Q+IHtcblx0XHRjb25zdCBkZWZhdWx0VmFsdWVMaXN0ID0gYXdhaXQgdGhpcy5nZXRWYWx1ZUxpc3QocHJvcGVydHlQYXRoKTtcblxuXHRcdGlmICghZGVmYXVsdFZhbHVlTGlzdCkge1xuXHRcdFx0cmV0dXJuIFtdO1xuXHRcdH1cblxuXHRcdGNvbnN0IHZhbHVlTGlzdEluZm8gPSBkZWZhdWx0VmFsdWVMaXN0LnZhbHVlTGlzdEluZm87XG5cblx0XHRjb25zdCBsaXN0QmluZGluZyA9IHZhbHVlTGlzdEluZm8uJG1vZGVsLmJpbmRMaXN0KGAvJHt2YWx1ZUxpc3RJbmZvLkNvbGxlY3Rpb25QYXRofWAsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHtcblx0XHRcdCRzZWxlY3Q6IGdlbmVyYXRlU2VsZWN0UGFyYW1ldGVyKGRlZmF1bHRWYWx1ZUxpc3QpXG5cdFx0fSk7XG5cdFx0Y29uc3QgZGF0YSA9IGF3YWl0IGxpc3RCaW5kaW5nLnJlcXVlc3RDb250ZXh0cygpO1xuXG5cdFx0Y29uc3QgZmlsdGVyR3JvdXBWYWx1ZXMgPSBkYXRhLm1hcChtYXBWYWx1ZUxpc3RUb0NvZGVMaXN0KGRlZmF1bHRWYWx1ZUxpc3QpKTtcblx0XHRjb25zdCBjb2RlTGlzdFByb3BlcnR5ID0gdGhpcy5maWx0ZXJCYXJNZXRhZGF0YS5maW5kKChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0gcHJvcGVydHlQYXRoKTtcblx0XHRpZiAoY29kZUxpc3RQcm9wZXJ0eSkge1xuXHRcdFx0Y29kZUxpc3RQcm9wZXJ0eS5jb2RlTGlzdCA9IGZpbHRlckdyb3VwVmFsdWVzO1xuXHRcdH1cblx0XHRyZXR1cm4gZmlsdGVyR3JvdXBWYWx1ZXM7XG5cdH1cblxuXHRhc3luYyByZXNvbHZlVG9rZW5WYWx1ZXNGb3JGaWVsZChcblx0XHRmaWVsZE5hbWU6IHN0cmluZyxcblx0XHR2YWx1ZXM6IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW11cblx0KTogUHJvbWlzZTxWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXT4ge1xuXHRcdGNvbnN0IGZpZWxkID0gdGhpcy5maWx0ZXJCYXJNZXRhZGF0YS5maW5kKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gZmllbGROYW1lKTtcblx0XHRsZXQgcmVzdWx0OiBWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXTtcblxuXHRcdGlmICghZmllbGQpIHtcblx0XHRcdC8vIHJldHVybiBvcmlnaW5hbCB2YWx1ZXMgY29udmVydGVkIHRvIHRoZSBleHBlY3RlZCBmb3JtYXQgaWYgbm8gZmllbGQgaXMgZGVmaW5lZFxuXHRcdFx0cmV0dXJuIHVucmVzb2x2ZWRSZXN1bHQodmFsdWVzKTtcblx0XHR9XG5cdFx0Y29uc3QgdmFsdWVMaXN0ID0gYXdhaXQgdGhpcy5nZXRWYWx1ZUxpc3QoZmllbGQubmFtZSk7XG5cblx0XHRpZiAodmFsdWVMaXN0ICYmIFZhbHVlTGlzdEhlbHBlci5pc1ZhbHVlTGlzdFNlYXJjaGFibGUoZmllbGQubmFtZSwgdmFsdWVMaXN0KSkge1xuXHRcdFx0Y29uc3QgcmVzb2x2ZWRUb2tlblZhbHVlcyA9IGF3YWl0IFByb21pc2UuYWxsKHZhbHVlcy5tYXAoYXN5bmMgKHZhbHVlKSA9PiByZXNvbHZlVG9rZW5WYWx1ZSh2YWx1ZUxpc3QsIHZhbHVlKSkpO1xuXHRcdFx0cmVzdWx0ID0gcmVzb2x2ZWRUb2tlblZhbHVlcy5mbGF0KCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlc3VsdCA9IHVucmVzb2x2ZWRSZXN1bHQodmFsdWVzKTtcblx0XHR9XG5cblx0XHQvLyBpZiBubyBtYXhMZW5ndGggaXMgZGVmaW5lZCwgcmV0dXJuIHVuZmlsdGVyZWQgcmVzdWx0XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdGFzeW5jIGdldFZhbHVlTGlzdChmaWVsZE5hbWU6IHN0cmluZyk6IFByb21pc2U8VmFsdWVMaXN0SW5mbyB8IHVuZGVmaW5lZD4ge1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHRoaXMuZ2V0TWV0YU1vZGVsKCkhO1xuXHRcdGNvbnN0IHZhbHVlTGlzdHMgPSBhd2FpdCBWYWx1ZUxpc3RIZWxwZXIuZ2V0VmFsdWVMaXN0SW5mbyh1bmRlZmluZWQsIGZpZWxkTmFtZSwgdW5kZWZpbmVkLCBtZXRhTW9kZWwpO1xuXHRcdHJldHVybiB2YWx1ZUxpc3RzWzBdO1xuXHR9XG5cblx0YXN5bmMgb25Ub2tlbnNDaGFuZ2VkKGU6IFVJNUV2ZW50PHsgdG9rZW5zOiBUb2tlbkRlZmluaXRpb25bXSB9LCBFYXN5RmlsdGVyQmFyQ29udGFpbmVyPik6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGZpbHRlckJhciA9IFVJNUVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5maWx0ZXJCYXIpIGFzIEZpbHRlckJhcjtcblx0XHRjb25zdCBmaWx0ZXJCYXJBUEkgPSBmaWx0ZXJCYXIuZ2V0UGFyZW50KCkgYXMgRmlsdGVyQmFyQVBJO1xuXHRcdGNvbnN0IHRva2VucyA9IGUuZ2V0UGFyYW1ldGVyKFwidG9rZW5zXCIpO1xuXHRcdGNvbnN0IGNsZWFyRWRpdEZpbHRlciA9IHRva2Vucy5zb21lKCh0b2tlbkRlZmluaXRpb24pID0+IHRva2VuRGVmaW5pdGlvbi5rZXkgPT09IFwiJGVkaXRTdGF0ZVwiKTtcblx0XHRhd2FpdCBmaWx0ZXJCYXJBUEkuX2NsZWFyRmlsdGVyVmFsdWVzV2l0aE9wdGlvbnMoZmlsdGVyQmFyLCB7IGNsZWFyRWRpdEZpbHRlciB9KTtcblx0XHR0aGlzLmZvcm1hdGVEYXRhVHlwZXModG9rZW5zKTtcblxuXHRcdGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5zKSB7XG5cdFx0XHRpZiAodG9rZW4ua2V5ID09PSBcIiRlZGl0U3RhdGVcIikge1xuXHRcdFx0XHQvLyBjb252ZXJ0IHRoZSAkZWRpdFN0YXRlIGZpbHRlciBjb25kaXRpb25cblx0XHRcdFx0Zm9yIChjb25zdCB0b2tlbktleVNwZWNpZmljYXRpb24gb2YgdG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcykge1xuXHRcdFx0XHRcdGF3YWl0IEZpbHRlclV0aWxzLmFkZEZpbHRlclZhbHVlcyhcblx0XHRcdFx0XHRcdGZpbHRlckJhckFQSS5jb250ZW50LFxuXHRcdFx0XHRcdFx0dG9rZW4ua2V5LFxuXHRcdFx0XHRcdFx0XCJEUkFGVF9FRElUX1NUQVRFXCIsXG5cdFx0XHRcdFx0XHR0b2tlbktleVNwZWNpZmljYXRpb24uc2VsZWN0ZWRWYWx1ZXNcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBmaWVsZCA9IHRoaXMuZmlsdGVyQmFyTWV0YWRhdGEuZmluZCgoZikgPT4gZi5uYW1lID09PSB0b2tlbi5rZXkpITtcblx0XHRcdFx0Zm9yIChjb25zdCB0b2tlbktleVNwZWNpZmljYXRpb24gb2YgdG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcykge1xuXHRcdFx0XHRcdGNvbnN0IHsgb3BlcmF0b3IsIHNlbGVjdGVkVmFsdWVzIH0gPSB0b2tlbktleVNwZWNpZmljYXRpb247XG5cdFx0XHRcdFx0aWYgKG9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5OQikge1xuXHRcdFx0XHRcdFx0YXdhaXQgRmlsdGVyVXRpbHMuYWRkRmlsdGVyVmFsdWVzKGZpbHRlckJhckFQSS5jb250ZW50LCBmaWVsZC5uYW1lLCBPcGVyYXRvck5hbWUuTk9UQlQsIHNlbGVjdGVkVmFsdWVzKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0YXdhaXQgRmlsdGVyVXRpbHMuYWRkRmlsdGVyVmFsdWVzKGZpbHRlckJhckFQSS5jb250ZW50LCBmaWVsZC5uYW1lLCBvcGVyYXRvciwgc2VsZWN0ZWRWYWx1ZXMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRhd2FpdCBmaWx0ZXJCYXJBUEkudHJpZ2dlclNlYXJjaCgpO1xuXHR9XG5cblx0Ly9XZSBuZWVkIHRoZSBiZWxvdyBmdW5jdGlvbiBzbyB0aGF0IHRoZSBkYXRlIG9iamVjdHMgYW5kIGRhdGVUaW1lT2Zmc2V0cyB3b3VsZCBiZSBjb252ZXJ0ZWQgdG8gc3RyaW5nIHR5cGUgYXMgdGhlIGRhdGUgb2JqZWN0IGlzIG5vdCBhIHZhbGlkIHR5cGUgaW4gVjQgd29ybGRcblx0Zm9ybWF0ZURhdGFUeXBlcyh0b2tlbnM6IFRva2VuRGVmaW5pdGlvbltdKTogdm9pZCB7XG5cdFx0Y29uc3QgZGF0ZVR5cGUgPSBuZXcgRGF0ZTEoKSxcblx0XHRcdGRhdGVUaW1lT2Zmc2V0VHlwZSA9IG5ldyBEYXRlVGltZU9mZnNldCh1bmRlZmluZWQsIHsgVjQ6IHRydWUgfSksXG5cdFx0XHR0aW1lT2ZEYXlUeXBlID0gbmV3IFRpbWVPZkRheSgpO1xuXHRcdHRva2Vucy5mb3JFYWNoKCh0b2tlbikgPT4ge1xuXHRcdFx0Y29uc3QgZWRtVHlwZSA9IHRoaXMuZmlsdGVyQmFyTWV0YWRhdGEuZmluZCgoZGF0YSkgPT4gZGF0YS5uYW1lID09PSB0b2tlbi5rZXkpPy5kYXRhVHlwZTtcblx0XHRcdHRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMuZm9yRWFjaCgoa2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlKSA9PiB7XG5cdFx0XHRcdGxldCByZXF1aXJlZENvbnZlcnRlcjogT0RhdGFUeXBlO1xuXHRcdFx0XHRzd2l0Y2ggKGVkbVR5cGUpIHtcblx0XHRcdFx0XHRjYXNlIFwiRWRtLkRhdGVcIjpcblx0XHRcdFx0XHRcdHJlcXVpcmVkQ29udmVydGVyID0gZGF0ZVR5cGU7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlIFwiRWRtLlRpbWVPZkRheVwiOlxuXHRcdFx0XHRcdFx0cmVxdWlyZWRDb252ZXJ0ZXIgPSB0aW1lT2ZEYXlUeXBlO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIkVkbS5EYXRlVGltZU9mZnNldFwiOlxuXHRcdFx0XHRcdFx0cmVxdWlyZWRDb252ZXJ0ZXIgPSBkYXRlVGltZU9mZnNldFR5cGU7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZS5zZWxlY3RlZFZhbHVlcy5mb3JFYWNoKCh2YWx1ZSwgaWR4KSA9PiB7XG5cdFx0XHRcdFx0a2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlLnNlbGVjdGVkVmFsdWVzW2lkeF0gPSByZXF1aXJlZENvbnZlcnRlci5wYXJzZVZhbHVlKHZhbHVlLCBcIm9iamVjdFwiKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdGFzeW5jIHNob3dWYWx1ZUhlbHBGb3JLZXkoa2V5OiBzdHJpbmcpOiBQcm9taXNlPENvbmRpdGlvbk9iamVjdFtdPiB7XG5cdFx0Y29uc3QgZmllbGQgPSB0aGlzLmZpbHRlckJhck1ldGFkYXRhLmZpbmQoKGYpID0+IGYubmFtZSA9PT0ga2V5KSE7XG5cdFx0Y29uc3QgZmlsdGVyQmFyID0gVUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmZpbHRlckJhcikgYXMgRmlsdGVyQmFyO1xuXHRcdGNvbnN0IGZpbHRlckJhckFQSSA9IGZpbHRlckJhci5nZXRQYXJlbnQoKSBhcyBGaWx0ZXJCYXJBUEk7XG5cdFx0YXdhaXQgZmlsdGVyQmFyQVBJLnNob3dGaWx0ZXJGaWVsZChmaWVsZC5uYW1lKTtcblx0XHRyZXR1cm4gZmlsdGVyQmFyQVBJLm9wZW5WYWx1ZUhlbHBGb3JGaWx0ZXJGaWVsZChmaWVsZC5uYW1lKTtcblx0fVxuXG5cdG9uQmVmb3JlUXVlcnlQcm9jZXNzaW5nKCk6IHZvaWQge1xuXHRcdGNvbnN0IHVpTW9kZWwgPSB0aGlzLmdldE1vZGVsKFwidWlcIikgYXMgSlNPTk1vZGVsO1xuXHRcdEJ1c3lMb2NrZXIubG9jayh1aU1vZGVsKTtcblx0fVxuXG5cdG9uQWZ0ZXJRdWVyeVByb2Nlc3NpbmcoKTogdm9pZCB7XG5cdFx0Y29uc3QgdWlNb2RlbCA9IHRoaXMuZ2V0TW9kZWwoXCJ1aVwiKSBhcyBKU09OTW9kZWw7XG5cdFx0QnVzeUxvY2tlci51bmxvY2sodWlNb2RlbCk7XG5cdH1cblxuXHRhc3luYyBvbkNsZWFyRmlsdGVycygpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHQvLyBFbXB0eSBpbnB1dDogY2xlYXIgdGhlIGZpbHRlcnMgYW5kIHJlZnJlc2ggdGhlIGxpc3Rcblx0XHRjb25zdCBmaWx0ZXJCYXIgPSBVSTVFbGVtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuZmlsdGVyQmFyKSBhcyBGaWx0ZXJCYXI7XG5cdFx0Y29uc3QgZmlsdGVyQmFyQVBJID0gZmlsdGVyQmFyLmdldFBhcmVudCgpIGFzIEZpbHRlckJhckFQSTtcblx0XHRhd2FpdCBmaWx0ZXJCYXJBUEkuX2NsZWFyRmlsdGVyVmFsdWVzV2l0aE9wdGlvbnMoZmlsdGVyQmFyKTtcblx0XHRhd2FpdCBmaWx0ZXJCYXJBUEkudHJpZ2dlclNlYXJjaCgpO1xuXHR9XG5cblx0b25RdWVyeUNoYW5nZWQoKTogdm9pZCB7XG5cdFx0Y29uc3QgZmlsdGVyQmFyID0gVUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmZpbHRlckJhcikgYXMgRmlsdGVyQmFyO1xuXHRcdGZpbHRlckJhci5maXJlRmlsdGVyc0NoYW5nZWQoeyBjb25kaXRpb25zQmFzZWQ6IHRydWUgfSk7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIGhhbmRsZVNob3dWYWx1ZUhlbHAoZXZlbnQ6IEVhc3lGaWx0ZXJCYXJDb250YWluZXIkU2hvd1ZhbHVlSGVscEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3Qga2V5ID0gZXZlbnQuZ2V0UGFyYW1ldGVyKFwia2V5XCIpO1xuXHRcdGNvbnN0IHJlc29sdmUgPSBldmVudC5nZXRQYXJhbWV0ZXIoXCJyZXNvbHZlXCIpO1xuXHRcdGNvbnN0IHJlamVjdCA9IGV2ZW50LmdldFBhcmFtZXRlcihcInJlamVjdFwiKTtcblxuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBjb25kaXRpb25zID0gYXdhaXQgdGhpcy5zaG93VmFsdWVIZWxwRm9yS2V5KGtleSk7XG5cblx0XHRcdGNvbnN0IHNlbGVjdGVkVmFsdWVzID0gY29uZGl0aW9ucy5tYXAoYXN5bmMgKGNvbmRpdGlvbikgPT4ge1xuXHRcdFx0XHRjb25zdCBvcGVyYXRvciA9IGNvbmRpdGlvbi5vcGVyYXRvciBhcyBGaWx0ZXJPcGVyYXRvcjtcblxuXHRcdFx0XHRpZiAoY29uZGl0aW9uLnZhbGlkYXRlZCA9PT0gXCJOb3RWYWxpZGF0ZWRcIikge1xuXHRcdFx0XHRcdC8vIG5vdCB2YWxpZGF0ZWQ6IHRoZSBjb25kaXRpb24gb25seSBoYXMgdmFsdWVzIHdpdGhvdXQgZGVzY3JpcHRpb24gLSB0cnkgdG8gZ2V0IHRoZSBkZXNjcmlwdGlvbiB1c2luZyB0aGUgZGF0YSBmZXRjaGVyIG1lY2hhbmlzbS5cblx0XHRcdFx0XHQvLyBgY29uZGl0aW9uLnZhbHVlc2AgaXMgYSBzaW5nbGUgdmFsdWUgYFt2YWx1ZV1gIChvciBgW2xvd2VyIGJvdW5kLCB1cHBlciBib3VuZF1gIGZvciBCVC9OQiBvcGVyYXRvcnMpLlxuXHRcdFx0XHRcdGNvbnN0IGNvbmRpdGlvblRvUmVzb2x2ZTogVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb24gPVxuXHRcdFx0XHRcdFx0b3BlcmF0b3IgPT09IEZpbHRlck9wZXJhdG9yLkJUIHx8IG9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5OQlxuXHRcdFx0XHRcdFx0XHQ/IHsgb3BlcmF0b3IsIHNlbGVjdGVkVmFsdWVzOiBbY29uZGl0aW9uLnZhbHVlc1swXSwgY29uZGl0aW9uLnZhbHVlc1sxXV0gfVxuXHRcdFx0XHRcdFx0XHQ6IHsgb3BlcmF0b3IsIHNlbGVjdGVkVmFsdWVzOiBbY29uZGl0aW9uLnZhbHVlc1swXV0gfTtcblxuXHRcdFx0XHRcdHJldHVybiB0aGlzLnJlc29sdmVUb2tlblZhbHVlc0ZvckZpZWxkKGtleSwgW2NvbmRpdGlvblRvUmVzb2x2ZV0pO1xuXHRcdFx0XHR9IGVsc2UgaWYgKG9wZXJhdG9yICE9PSBGaWx0ZXJPcGVyYXRvci5CVCAmJiBvcGVyYXRvciAhPT0gRmlsdGVyT3BlcmF0b3IuTkIpIHtcblx0XHRcdFx0XHQvLyB2YWxpZGF0ZWQ6IGJvdGggdmFsdWUgYW5kIGRlc2NyaXB0aW9uIGFyZSBhdmFpbGFibGUgLSBkaXJlY3RseSBtYXAgdGhlbSB0byB0aGUgcmVzdWx0XG5cdFx0XHRcdFx0Ly8gYGNvbmRpdGlvbi52YWx1ZXNgIGlzIGEgdHVwbGUgb2YgYFt2YWx1ZSwgZGVzY3JpcHRpb24/XWBcblx0XHRcdFx0XHRjb25zdCBbdmFsdWUsIGRlc2NyaXB0aW9uXSA9IGNvbmRpdGlvbi52YWx1ZXMgYXMgW3N0cmluZyB8IG51bWJlciB8IGJvb2xlYW4sIHN0cmluZyB8IHVuZGVmaW5lZF07XG5cdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShbeyBvcGVyYXRvciwgc2VsZWN0ZWRWYWx1ZXM6IFt7IHZhbHVlLCBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gPz8gdmFsdWUgfV0gfV0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIHNob3VsZCBub3Qgb2NjdXI6IEJUL05CIGFyZSBleHBlY3RlZCB0byBiZSBcIk5vdFZhbGlkYXRlZFwiIGNvbmRpdGlvbnNcblx0XHRcdFx0XHRMb2cud2FybmluZyhgVW5leHBlY3RlZCBjb25kaXRpb24gZm9yIGZpZWxkICR7a2V5fTogb3BlcmF0b3IgJHtvcGVyYXRvcn0gd2l0aCB2YWx1ZXMgJHtjb25kaXRpb24udmFsdWVzfS5gKTtcblx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdGNvbnN0IHJlc29sdmVkVmFsdWVzID0gYXdhaXQgUHJvbWlzZS5hbGwoc2VsZWN0ZWRWYWx1ZXMpO1xuXHRcdFx0cmVzb2x2ZShyZXNvbHZlZFZhbHVlcy5mbGF0KCkpO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRyZWplY3QoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpKTtcblx0XHR9XG5cdH1cblxuXHRjcmVhdGVDb250ZW50KCk6IEVhc3lGaWx0ZXJCYXJDb250YWluZXIge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8RWFzeUZpbHRlckJhckNvbnRhaW5lclxuXHRcdFx0XHRjb250ZXh0UGF0aD17dGhpcy5nZXRPd25lckNvbnRleHRQYXRoKCl9XG5cdFx0XHRcdGFwcElkPXt0aGlzLmdldEFwcGxpY2F0aW9uSWQoKX1cblx0XHRcdFx0ZmlsdGVyQmFyTWV0YWRhdGE9e3RoaXMuZmlsdGVyQmFyTWV0YWRhdGF9XG5cdFx0XHRcdGVhc3lGaWx0ZXJMaWI9e3RoaXMuZWFzeUZpbHRlclBhdGh9XG5cdFx0XHRcdHNob3dWYWx1ZUhlbHA9e3RoaXMuaGFuZGxlU2hvd1ZhbHVlSGVscC5iaW5kKHRoaXMpfVxuXHRcdFx0XHRkYXRhRmV0Y2hlcj17dGhpcy5yZXNvbHZlVG9rZW5WYWx1ZXNGb3JGaWVsZC5iaW5kKHRoaXMpfVxuXHRcdFx0XHRyZWNvbW1lbmRlZFZhbHVlcz17dGhpcy5yZWNvbW1lbmRlZFF1ZXJpZXN9XG5cdFx0XHRcdHF1ZXJ5Q2hhbmdlZD17dGhpcy5vblF1ZXJ5Q2hhbmdlZC5iaW5kKHRoaXMpfVxuXHRcdFx0XHR0b2tlbnNDaGFuZ2VkPXt0aGlzLm9uVG9rZW5zQ2hhbmdlZC5iaW5kKHRoaXMpfVxuXHRcdFx0XHRiZWZvcmVRdWVyeVByb2Nlc3Npbmc9e3RoaXMub25CZWZvcmVRdWVyeVByb2Nlc3NpbmcuYmluZCh0aGlzKX1cblx0XHRcdFx0YWZ0ZXJRdWVyeVByb2Nlc3Npbmc9e3RoaXMub25BZnRlclF1ZXJ5UHJvY2Vzc2luZy5iaW5kKHRoaXMpfVxuXHRcdFx0XHRjbGVhckZpbHRlcnM9e3RoaXMub25DbGVhckZpbHRlcnMuYmluZCh0aGlzKX1cblx0XHRcdC8+XG5cdFx0KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBc0RBO0FBQ0E7QUFDQTtFQUZBLElBSXFCQSxhQUFhLElBQUFDLElBQUEsR0FEakNDLGNBQWMsQ0FBQyw2QkFBNkIsQ0FBQyxFQUFBQyxLQUFBLEdBRTVDQyxrQkFBa0IsQ0FBQyxrRUFBa0UsQ0FBQyxFQUFBQyxLQUFBLEdBR3RGQyxXQUFXLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQXVDLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBRzdERixXQUFXLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQWdELENBQUMsQ0FBQyxFQUFBRSxLQUFBLEdBR3RFQyxRQUFRLENBQUM7SUFBRUgsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFJLEtBQUEsR0FHNUJELFFBQVEsQ0FBQztJQUFFSCxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQUssS0FBQSxHQUc1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QWlCLEVBQUUsSUFBSSxDQUFDaFAsa0JBQW1CO1FBQzNDaVAsWUFBWSxFQUFFLElBQUksQ0FBQ3hCLGNBQWMsQ0FBQ3FCLElBQUksQ0FBQyxJQUFJLENBQUU7UUFDN0NJLGFBQWEsRUFBRSxJQUFJLENBQUN0RSxlQUFlLENBQUNrRSxJQUFJLENBQUMsSUFBSSxDQUFFO1FBQy9DSyxxQkFBcUIsRUFBRSxJQUFJLENBQUNsQyx1QkFBdUIsQ0FBQzZCLElBQUksQ0FBQyxJQUFJLENBQUU7UUFDL0RNLG9CQUFvQixFQUFFLElBQUksQ0FBQzlCLHNCQUFzQixDQUFDd0IsSUFBSSxDQUFDLElBQUksQ0FBRTtRQUM3RE8sWUFBWSxFQUFFLElBQUksQ0FBQzdCLGNBQWMsQ0FBQ3NCLElBQUksQ0FBQyxJQUFJO01BQUUsQ0FDN0MsQ0FBQztJQUVKLENBQUM7SUFBQSxPQUFBblUsYUFBQTtFQUFBLEVBM2lCeUMyVSxhQUFhLEdBQUFyVCxXQUFBLEdBQUFzVCx5QkFBQSxDQUFBN1QsT0FBQSxDQUFBNEIsU0FBQSxxRkFBQXhDLEtBQUE7SUFBQTBVLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBelQsWUFBQSxHQUFBcVQseUJBQUEsQ0FBQTdULE9BQUEsQ0FBQTRCLFNBQUEsZ0JBQUF0QyxLQUFBO0lBQUF3VSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXhULFlBQUEsR0FBQW9ULHlCQUFBLENBQUE3VCxPQUFBLENBQUE0QixTQUFBLHNCQUFBbkMsS0FBQTtJQUFBcVUsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF2VCxZQUFBLEdBQUFtVCx5QkFBQSxDQUFBN1QsT0FBQSxDQUFBNEIsU0FBQSx5QkFBQWxDLEtBQUE7SUFBQW9VLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBdFQsWUFBQSxHQUFBa1QseUJBQUEsQ0FBQTdULE9BQUEsQ0FBQTRCLFNBQUEsa0JBQUFoQyxLQUFBO0lBQUFrVSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXJULFlBQUEsR0FBQWlULHlCQUFBLENBQUE3VCxPQUFBLENBQUE0QixTQUFBLGNBQUEvQixLQUFBO0lBQUFpVSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQWpVLE9BQUEsTUFBQUQsTUFBQTtFQUFBMEIsUUFBQSxHQUFBeEMsYUFBQTtFQUFBLE9BQUF3QyxRQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=