@k8slens/element-components 3.5.0 → 3.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -55,6 +55,7 @@ __export(index_exports, {
55
55
  Tr: () => Tr,
56
56
  Ul: () => Ul,
57
57
  contextForClosingPopover: () => contextForClosingPopover,
58
+ contextForFocusableItem: () => contextForFocusableItem,
58
59
  doFocusForInjectionToken: () => doFocusForInjectionToken,
59
60
  elementComponentFeature: () => elementComponentFeature,
60
61
  getDraggableContext: () => getDraggableContext,
@@ -74,6 +75,7 @@ __export(index_exports, {
74
75
  suppressTooltip: () => suppressTooltip,
75
76
  tShirtSizeInPixels: () => tShirtSizeInPixels,
76
77
  useClosePopover: () => useClosePopover,
78
+ useFocusableItem: () => useFocusableItem,
77
79
  useLocalHoverable: () => useLocalHoverable,
78
80
  useOnOutsideClick: () => useOnOutsideClick,
79
81
  usePopoverIsOpen: () => usePopoverIsOpen
@@ -811,7 +813,30 @@ var background_color_module_default = {
811
813
  "backgroundColor-hover--warningTint": "background-color-module__backgroundColor-hover--warningTint___Xi62F",
812
814
  "backgroundColor-hover--criticalTint": "background-color-module__backgroundColor-hover--criticalTint___V0q2o",
813
815
  "backgroundColor-hover--link": "background-color-module__backgroundColor-hover--link___X9LFq",
814
- "backgroundColor-hover--code": "background-color-module__backgroundColor-hover--code___lHCIg"
816
+ "backgroundColor-hover--code": "background-color-module__backgroundColor-hover--code___lHCIg",
817
+ "backgroundColor-focus--inherit": "background-color-module__backgroundColor-focus--inherit___RJPWJ",
818
+ "backgroundColor-focus--white": "background-color-module__backgroundColor-focus--white___xF8u3",
819
+ "backgroundColor-focus--transparent": "background-color-module__backgroundColor-focus--transparent___tqq-x",
820
+ "backgroundColor-focus--grey100": "background-color-module__backgroundColor-focus--grey100___xt1xL",
821
+ "backgroundColor-focus--grey80": "background-color-module__backgroundColor-focus--grey80___e28jj",
822
+ "backgroundColor-focus--grey60": "background-color-module__backgroundColor-focus--grey60___wtDwT",
823
+ "backgroundColor-focus--grey40": "background-color-module__backgroundColor-focus--grey40___DDHkP",
824
+ "backgroundColor-focus--grey30": "background-color-module__backgroundColor-focus--grey30___ZVvD5",
825
+ "backgroundColor-focus--grey25": "background-color-module__backgroundColor-focus--grey25___AsV6f",
826
+ "backgroundColor-focus--grey20": "background-color-module__backgroundColor-focus--grey20___OL0ZY",
827
+ "backgroundColor-focus--grey10": "background-color-module__backgroundColor-focus--grey10___maizf",
828
+ "backgroundColor-focus--grey70": "background-color-module__backgroundColor-focus--grey70___vRnL2",
829
+ "backgroundColor-focus--grey80Alpha85": "background-color-module__backgroundColor-focus--grey80Alpha85___VhyuN",
830
+ "backgroundColor-focus--primary": "background-color-module__backgroundColor-focus--primary___7Tzku",
831
+ "backgroundColor-focus--success": "background-color-module__backgroundColor-focus--success___ny3zl",
832
+ "backgroundColor-focus--notice": "background-color-module__backgroundColor-focus--notice___ovFv1",
833
+ "backgroundColor-focus--warning": "background-color-module__backgroundColor-focus--warning___qln2u",
834
+ "backgroundColor-focus--critical": "background-color-module__backgroundColor-focus--critical___PgDI5",
835
+ "backgroundColor-focus--successTint": "background-color-module__backgroundColor-focus--successTint___cq-D5",
836
+ "backgroundColor-focus--warningTint": "background-color-module__backgroundColor-focus--warningTint___aHtgA",
837
+ "backgroundColor-focus--criticalTint": "background-color-module__backgroundColor-focus--criticalTint___eJ9Nh",
838
+ "backgroundColor-focus--link": "background-color-module__backgroundColor-focus--link___TlRRY",
839
+ "backgroundColor-focus--code": "background-color-module__backgroundColor-focus--code___fa65U"
815
840
  };
816
841
 
817
842
  // src/plugins/background-color/background-color.ts
@@ -823,14 +848,16 @@ var aliasToNominal = {
823
848
  var isBackgroundColorAlias = (color) => color in aliasToNominal;
824
849
  var backgroundColorPlugin = (0, import_element_component7.getPlugin)((props) => {
825
850
  const { $backgroundColor: color } = props;
826
- const { normal, hover } = typeof color === "string" ? { normal: color } : color ?? {};
851
+ const { normal, hover, focus } = typeof color === "string" ? { normal: color } : color ?? {};
827
852
  const normalColor = normal ? isBackgroundColorAlias(normal) ? aliasToNominal[normal] : normal : void 0;
828
853
  const hoverColor = hover ? isBackgroundColorAlias(hover) ? aliasToNominal[hover] : hover : void 0;
854
+ const focusColor = focus ? isBackgroundColorAlias(focus) ? aliasToNominal[focus] : focus : void 0;
829
855
  return {
830
856
  $className: [
831
857
  props.$className,
832
858
  normalColor ? background_color_module_default[`backgroundColor--${normalColor}`] : void 0,
833
- hoverColor ? background_color_module_default[`backgroundColor-hover--${hoverColor}`] : void 0
859
+ hoverColor ? background_color_module_default[`backgroundColor-hover--${hoverColor}`] : void 0,
860
+ focusColor ? background_color_module_default[`backgroundColor-focus--${focusColor}`] : void 0
834
861
  ],
835
862
  $backgroundColor: void 0
836
863
  };
@@ -1587,6 +1614,7 @@ var keyboardNavigationStateInjectable = (0, import_injectable14.getInjectable2)(
1587
1614
  id: "keyboard-navigation-state",
1588
1615
  instantiate: () => {
1589
1616
  const entriesByContext = /* @__PURE__ */ new Map();
1617
+ const itemInFocusByContext = /* @__PURE__ */ new Map();
1590
1618
  const contextStack = [];
1591
1619
  const entriesOf = (context) => {
1592
1620
  const existing = entriesByContext.get(context);
@@ -1600,6 +1628,10 @@ var keyboardNavigationStateInjectable = (0, import_injectable14.getInjectable2)(
1600
1628
  return () => ({
1601
1629
  sortedEntriesOf: (context) => [...entriesOf(context)].sort((a, b) => a.orderNumber - b.orderNumber),
1602
1630
  contextInFocus: () => contextStack.at(-1),
1631
+ itemInFocusOf: (context) => itemInFocusByContext.get(context),
1632
+ noteItemInFocus: (context, item) => {
1633
+ itemInFocusByContext.set(context, item);
1634
+ },
1603
1635
  register: (context, entry) => {
1604
1636
  const entries = entriesOf(context);
1605
1637
  if (entries.size === 0) {
@@ -1615,6 +1647,7 @@ var keyboardNavigationStateInjectable = (0, import_injectable14.getInjectable2)(
1615
1647
  if (indexInStack !== -1) {
1616
1648
  contextStack.splice(indexInStack, 1);
1617
1649
  }
1650
+ itemInFocusByContext.delete(context);
1618
1651
  }
1619
1652
  }
1620
1653
  });
@@ -1647,9 +1680,9 @@ __export(test_util_runnable_injectable_exports, {
1647
1680
  });
1648
1681
  var import_test_utils = require("@k8slens/test-utils");
1649
1682
 
1650
- // import-glob:./**/*.global-override-for-injectable.(ts|tsx)/proof-of-uniqueness/0de2d99e-8738-41d0-b822-ae72003a5a60
1683
+ // import-glob:./**/*.global-override-for-injectable.(ts|tsx)/proof-of-uniqueness/8b246f87-8e7a-4fdd-8e90-0c7740d8037a
1651
1684
  var modules = [];
1652
- var de2d99e_8738_41d0_b822_ae72003a5a60_default = modules;
1685
+ var b246f87_8e7a_4fdd_8e90_0c7740d8037a_default = modules;
1653
1686
 
1654
1687
  // src/plugins/draggable-and-droppable/make-sure-drag-and-drop-events-have-time-to-happen/make-sure-drag-and-drop-events-have-time-to-happen.default-override.ts
1655
1688
  var make_sure_drag_and_drop_events_have_time_to_happen_default_override_exports = {};
@@ -1678,24 +1711,24 @@ var remove_css_module_clutter_default_override_default = () => {
1678
1711
  removeCssModuleClutterForUnitTesting();
1679
1712
  };
1680
1713
 
1681
- // import-glob:./**/*.default-override.(ts|tsx)/proof-of-uniqueness/9778f4d0-ee1a-4649-9bad-bc5daad8a3a4
1714
+ // import-glob:./**/*.default-override.(ts|tsx)/proof-of-uniqueness/a6128a65-53b0-4824-a040-846fc48329bc
1682
1715
  var modules2 = [make_sure_drag_and_drop_events_have_time_to_happen_default_override_exports, tooltip_delay_default_override_exports, remove_css_module_clutter_default_override_exports];
1683
- var f4d0_ee1a_4649_9bad_bc5daad8a3a4_default = modules2;
1716
+ var a6128a65_53b0_4824_a040_846fc48329bc_default = modules2;
1684
1717
 
1685
1718
  // src/test-util-runnable.injectable.ts
1686
1719
  var testUtilRunnableInjectable = (0, import_test_utils.getTestUtilRunnableForOverrides)({
1687
- globalOverrides: de2d99e_8738_41d0_b822_ae72003a5a60_default,
1688
- defaultOverrides: f4d0_ee1a_4649_9bad_bc5daad8a3a4_default
1720
+ globalOverrides: b246f87_8e7a_4fdd_8e90_0c7740d8037a_default,
1721
+ defaultOverrides: a6128a65_53b0_4824_a040_846fc48329bc_default
1689
1722
  });
1690
1723
 
1691
- // import-glob:./**/*.injectable.(ts|tsx)/proof-of-uniqueness/fd0d3b6b-4f3e-4797-88a7-4d12c5e2e792
1724
+ // import-glob:./**/*.injectable.(ts|tsx)/proof-of-uniqueness/0cc71851-51bb-4451-957d-160dd30b6402
1692
1725
  var modules3 = [is_mac_injectable_exports, on_right_trigger_injectable_exports, dragged_item_state_injectable_exports, item_being_dragged_injectable_exports, make_sure_drag_and_drop_events_have_time_to_happen_injectable_exports, focusable_html_element_ref_set_injectable_exports, focusable_item_state_injectable_exports, keyboard_navigation_state_injectable_exports, do_focus_injectable_exports, item_being_focused_injectable_exports, computed_now_injectable_exports, hovered_item_state_injectable_exports, item_being_hovered_injectable_exports, context_is_being_hovered_injectable_exports, tooltip_delay_injectable_exports, test_util_runnable_injectable_exports];
1693
- var fd0d3b6b_4f3e_4797_88a7_4d12c5e2e792_default = modules3;
1726
+ var cc71851_51bb_4451_957d_160dd30b6402_default = modules3;
1694
1727
 
1695
1728
  // src/feature.ts
1696
1729
  var elementComponentFeature = (0, import_feature_core.getFeature)({
1697
1730
  id: "element-component",
1698
- register: (di) => (0, import_feature_core2.registerInjectablesFromModules)(di, fd0d3b6b_4f3e_4797_88a7_4d12c5e2e792_default)
1731
+ register: (di) => (0, import_feature_core2.registerInjectablesFromModules)(di, cc71851_51bb_4451_957d_160dd30b6402_default)
1699
1732
  // No feature dependencies: a design system everyone may install cannot drag
1700
1733
  // Lens features into the closure. The clock the hoverable plugin needs is
1701
1734
  // local, and the platform is read directly.
@@ -2125,16 +2158,23 @@ var height_module_default = {
2125
2158
 
2126
2159
  // src/plugins/height/height.ts
2127
2160
  var import_element_component21 = require("@k8slens/element-component");
2161
+ var isPercentage2 = (value) => (value == null ? void 0 : value.endsWith("%")) === true;
2128
2162
  var heightPlugin = (0, import_element_component21.getPlugin)((props) => {
2129
- const { $height } = props;
2163
+ const { $height, $style } = props;
2130
2164
  const { height, min, max } = typeof $height === "string" ? { height: $height } : $height ?? {};
2165
+ const percentages = {
2166
+ ...isPercentage2(height) ? { height } : {},
2167
+ ...isPercentage2(min) ? { minHeight: min } : {},
2168
+ ...isPercentage2(max) ? { maxHeight: max } : {}
2169
+ };
2131
2170
  return {
2132
2171
  $className: [
2133
- height ? height_module_default[`height--${height}`] : void 0,
2134
- min ? height_module_default[`min-height--${min}`] : void 0,
2135
- max ? height_module_default[`max-height--${max}`] : void 0,
2172
+ height && !isPercentage2(height) ? height_module_default[`height--${height}`] : void 0,
2173
+ min && !isPercentage2(min) ? height_module_default[`min-height--${min}`] : void 0,
2174
+ max && !isPercentage2(max) ? height_module_default[`max-height--${max}`] : void 0,
2136
2175
  props.$className
2137
2176
  ],
2177
+ $style: Object.keys(percentages).length > 0 ? { ...$style, ...percentages } : $style,
2138
2178
  $height: void 0
2139
2179
  };
2140
2180
  });
@@ -2146,72 +2186,95 @@ var import_element_component22 = require("@k8slens/element-component");
2146
2186
  var color_module_default = {
2147
2187
  "color--inherit": "color-module__color--inherit___GMp-a",
2148
2188
  "color-hover--inherit": "color-module__color-hover--inherit___fGLK6",
2189
+ "color-focus--inherit": "color-module__color-focus--inherit___yGfCe",
2149
2190
  "color-disabled--inherit": "color-module__color-disabled--inherit___s9MCI",
2150
2191
  "color--white": "color-module__color--white___f8c1s",
2151
2192
  "color-hover--white": "color-module__color-hover--white___M6aRg",
2193
+ "color-focus--white": "color-module__color-focus--white___i6uYz",
2152
2194
  "color-disabled--white": "color-module__color-disabled--white___ntjYE",
2153
2195
  "color--transparent": "color-module__color--transparent___1vfrv",
2154
2196
  "color-hover--transparent": "color-module__color-hover--transparent___xm7BD",
2197
+ "color-focus--transparent": "color-module__color-focus--transparent___pde-W",
2155
2198
  "color-disabled--transparent": "color-module__color-disabled--transparent___Z0QuU",
2156
2199
  "color--grey100": "color-module__color--grey100___CpDzv",
2157
2200
  "color-hover--grey100": "color-module__color-hover--grey100___GFCom",
2201
+ "color-focus--grey100": "color-module__color-focus--grey100___AM7oM",
2158
2202
  "color-disabled--grey100": "color-module__color-disabled--grey100___8SRuJ",
2159
2203
  "color--grey80": "color-module__color--grey80___D71fn",
2160
2204
  "color-hover--grey80": "color-module__color-hover--grey80___sBIxb",
2205
+ "color-focus--grey80": "color-module__color-focus--grey80___8Plyo",
2161
2206
  "color-disabled--grey80": "color-module__color-disabled--grey80___w1npc",
2162
2207
  "color--grey60": "color-module__color--grey60___UT28X",
2163
2208
  "color-hover--grey60": "color-module__color-hover--grey60___xfZmb",
2209
+ "color-focus--grey60": "color-module__color-focus--grey60___kwm2G",
2164
2210
  "color-disabled--grey60": "color-module__color-disabled--grey60___mfVgq",
2165
2211
  "color--grey40": "color-module__color--grey40___iROzR",
2166
2212
  "color-hover--grey40": "color-module__color-hover--grey40___rbN04",
2213
+ "color-focus--grey40": "color-module__color-focus--grey40___oIRUf",
2167
2214
  "color-disabled--grey40": "color-module__color-disabled--grey40___NiZxi",
2168
2215
  "color--grey30": "color-module__color--grey30___LwnL2",
2169
2216
  "color-hover--grey30": "color-module__color-hover--grey30___X7h-h",
2217
+ "color-focus--grey30": "color-module__color-focus--grey30___QUb4S",
2170
2218
  "color-disabled--grey30": "color-module__color-disabled--grey30___Kq9gW",
2171
2219
  "color--grey25": "color-module__color--grey25___ENT5o",
2172
2220
  "color-hover--grey25": "color-module__color-hover--grey25___tYygD",
2221
+ "color-focus--grey25": "color-module__color-focus--grey25___Txi5l",
2173
2222
  "color-disabled--grey25": "color-module__color-disabled--grey25___bm-1c",
2174
2223
  "color--grey20": "color-module__color--grey20___EF2OL",
2175
2224
  "color-hover--grey20": "color-module__color-hover--grey20___uPtXU",
2225
+ "color-focus--grey20": "color-module__color-focus--grey20___w3rWc",
2176
2226
  "color-disabled--grey20": "color-module__color-disabled--grey20___vpuy1",
2177
2227
  "color--grey10": "color-module__color--grey10___l5aZp",
2178
2228
  "color-hover--grey10": "color-module__color-hover--grey10___4Apcr",
2229
+ "color-focus--grey10": "color-module__color-focus--grey10___VwW71",
2179
2230
  "color-disabled--grey10": "color-module__color-disabled--grey10___Y5qyw",
2180
2231
  "color--grey70": "color-module__color--grey70___C9HHM",
2181
2232
  "color-hover--grey70": "color-module__color-hover--grey70___3krtL",
2233
+ "color-focus--grey70": "color-module__color-focus--grey70___p3iex",
2182
2234
  "color-disabled--grey70": "color-module__color-disabled--grey70___86JqV",
2183
2235
  "color--grey80Alpha85": "color-module__color--grey80Alpha85___-3Tdd",
2184
2236
  "color-hover--grey80Alpha85": "color-module__color-hover--grey80Alpha85___Dofo0",
2237
+ "color-focus--grey80Alpha85": "color-module__color-focus--grey80Alpha85___T4BgF",
2185
2238
  "color-disabled--grey80Alpha85": "color-module__color-disabled--grey80Alpha85___eR3zs",
2186
2239
  "color--primary": "color-module__color--primary___08WnV",
2187
2240
  "color-hover--primary": "color-module__color-hover--primary___Vt-3f",
2241
+ "color-focus--primary": "color-module__color-focus--primary___t5r02",
2188
2242
  "color-disabled--primary": "color-module__color-disabled--primary___0Xsk9",
2189
2243
  "color--success": "color-module__color--success___woTF2",
2190
2244
  "color-hover--success": "color-module__color-hover--success___7EIWc",
2245
+ "color-focus--success": "color-module__color-focus--success___KZ0di",
2191
2246
  "color-disabled--success": "color-module__color-disabled--success___Ne2WI",
2192
2247
  "color--notice": "color-module__color--notice___6D6KG",
2193
2248
  "color-hover--notice": "color-module__color-hover--notice___eOdUp",
2249
+ "color-focus--notice": "color-module__color-focus--notice___NgURL",
2194
2250
  "color-disabled--notice": "color-module__color-disabled--notice___sDo8r",
2195
2251
  "color--warning": "color-module__color--warning___fKbwd",
2196
2252
  "color-hover--warning": "color-module__color-hover--warning___Gj2hM",
2253
+ "color-focus--warning": "color-module__color-focus--warning___cBmt9",
2197
2254
  "color-disabled--warning": "color-module__color-disabled--warning___rXDbR",
2198
2255
  "color--critical": "color-module__color--critical___shFBq",
2199
2256
  "color-hover--critical": "color-module__color-hover--critical___RQWZY",
2257
+ "color-focus--critical": "color-module__color-focus--critical___9YlCY",
2200
2258
  "color-disabled--critical": "color-module__color-disabled--critical___h37-3",
2201
2259
  "color--successTint": "color-module__color--successTint___Dd0Ry",
2202
2260
  "color-hover--successTint": "color-module__color-hover--successTint___LKlzg",
2261
+ "color-focus--successTint": "color-module__color-focus--successTint___bQYhp",
2203
2262
  "color-disabled--successTint": "color-module__color-disabled--successTint___lsmJh",
2204
2263
  "color--warningTint": "color-module__color--warningTint___j3PZX",
2205
2264
  "color-hover--warningTint": "color-module__color-hover--warningTint___jn1wu",
2265
+ "color-focus--warningTint": "color-module__color-focus--warningTint___C6znD",
2206
2266
  "color-disabled--warningTint": "color-module__color-disabled--warningTint___W6jI8",
2207
2267
  "color--criticalTint": "color-module__color--criticalTint___yRJaA",
2208
2268
  "color-hover--criticalTint": "color-module__color-hover--criticalTint___VsoN5",
2269
+ "color-focus--criticalTint": "color-module__color-focus--criticalTint___8tDmg",
2209
2270
  "color-disabled--criticalTint": "color-module__color-disabled--criticalTint___TABHk",
2210
2271
  "color--link": "color-module__color--link___nSMm9",
2211
2272
  "color-hover--link": "color-module__color-hover--link___GniY3",
2273
+ "color-focus--link": "color-module__color-focus--link___86Jtf",
2212
2274
  "color-disabled--link": "color-module__color-disabled--link___FoJ5X",
2213
2275
  "color--code": "color-module__color--code___nCOjA",
2214
2276
  "color-hover--code": "color-module__color-hover--code___V5uuV",
2277
+ "color-focus--code": "color-module__color-focus--code___IAK7d",
2215
2278
  "color-disabled--code": "color-module__color-disabled--code___w3VUw"
2216
2279
  };
2217
2280
 
@@ -2224,15 +2287,17 @@ var aliasToNominal3 = {
2224
2287
  var isTextColorAlias = (color) => color in aliasToNominal3;
2225
2288
  var colorPlugin = (0, import_element_component22.getPlugin)((props) => {
2226
2289
  const { $className, $color } = props;
2227
- const { normal, hover, disabled } = typeof $color === "string" ? { normal: $color } : $color ?? {};
2290
+ const { normal, hover, focus, disabled } = typeof $color === "string" ? { normal: $color } : $color ?? {};
2228
2291
  const normalColor = normal ? isTextColorAlias(normal) ? aliasToNominal3[normal] : normal : void 0;
2229
2292
  const hoverColor = hover ? isTextColorAlias(hover) ? aliasToNominal3[hover] : hover : void 0;
2293
+ const focusColor = focus ? isTextColorAlias(focus) ? aliasToNominal3[focus] : focus : void 0;
2230
2294
  const disabledColor = disabled ? isTextColorAlias(disabled) ? aliasToNominal3[disabled] : disabled : void 0;
2231
2295
  return {
2232
2296
  $className: [
2233
2297
  $className,
2234
2298
  normalColor ? color_module_default[`color--${normalColor}`] : void 0,
2235
2299
  hoverColor ? color_module_default[`color-hover--${hoverColor}`] : void 0,
2300
+ focusColor ? color_module_default[`color-focus--${focusColor}`] : void 0,
2236
2301
  disabledColor ? color_module_default[`color-disabled--${disabledColor}`] : void 0
2237
2302
  ],
2238
2303
  $color: void 0
@@ -2858,9 +2923,15 @@ var useCleanupOnUnmount = (focusedRef, oldStateRef) => {
2858
2923
  // src/plugins/focusable/_private/use-keyboard-navigation.ts
2859
2924
  var import_react9 = require("react");
2860
2925
  var import_use_inject6 = require("@k8slens/use-inject");
2861
- var noKeyboardNavigation = { onKeyDown: () => {
2862
- } };
2863
- var useKeyboardNavigation = (context, item, orderNumber, element, state) => {
2926
+ var noKeyboardNavigation = {
2927
+ onKeyDown: () => {
2928
+ },
2929
+ onFocus: () => {
2930
+ },
2931
+ focusWhatThePointerIsOn: () => {
2932
+ }
2933
+ };
2934
+ var useKeyboardNavigation = (context, item, orderNumber, element) => {
2864
2935
  const navigation = (0, import_use_inject6.useSyncInject)(keyboardNavigationStateInjectable);
2865
2936
  (0, import_react9.useEffect)(() => {
2866
2937
  if (!context || !element) {
@@ -2874,8 +2945,8 @@ var useKeyboardNavigation = (context, item, orderNumber, element, state) => {
2874
2945
  return;
2875
2946
  }
2876
2947
  const entries = navigation.sortedEntriesOf(contextInFocus);
2877
- const focusedItem = state.get();
2878
- const toFocus = entries.find((candidate) => candidate.item === focusedItem) ?? entries[0];
2948
+ const itemInFocus = navigation.itemInFocusOf(contextInFocus);
2949
+ const toFocus = entries.find((candidate) => candidate.item === itemInFocus) ?? entries[0];
2879
2950
  if ((toFocus == null ? void 0 : toFocus.element.isConnected) && document.activeElement !== toFocus.element) {
2880
2951
  toFocus.element.focus();
2881
2952
  }
@@ -2885,13 +2956,31 @@ var useKeyboardNavigation = (context, item, orderNumber, element, state) => {
2885
2956
  navigation.deregister(context, entry);
2886
2957
  void Promise.resolve().then(focusWhatShouldHaveFocus);
2887
2958
  };
2888
- }, [navigation, context, item, orderNumber, element, state]);
2959
+ }, [navigation, context, item, orderNumber, element]);
2889
2960
  if (!context) {
2890
2961
  return noKeyboardNavigation;
2891
2962
  }
2892
2963
  return {
2964
+ // Which member the context is on, remembered for as long as its members are there: it is what
2965
+ // focus returns to when something that took focus over goes away again.
2966
+ onFocus: () => navigation.noteItemInFocus(context, item),
2967
+ // Where the pointer goes, focus goes: the member under it becomes the focused one, so arrowing
2968
+ // on from there continues from what the user is looking at rather than from wherever the
2969
+ // keyboard was left. Whichever of the two moved last decides, which is why this answers to the
2970
+ // pointer moving as well as to it arriving — the keyboard may have taken focus elsewhere while
2971
+ // the pointer rested where it was, and moving it at all is the user pointing again.
2972
+ //
2973
+ // The element comes from the event rather than from the render this handler was created in:
2974
+ // the handler the DOM ends up with is the one from the first render, when there was no element
2975
+ // yet — React has no reason to render the element again for a wrapper's own state.
2976
+ focusWhatThePointerIsOn: (event) => {
2977
+ const hovered = event.currentTarget;
2978
+ if (document.activeElement !== hovered) {
2979
+ hovered.focus();
2980
+ }
2981
+ },
2893
2982
  onKeyDown: (event) => {
2894
- const step = stepOf(event.key);
2983
+ const step = stepOf(event.key, context.orientation);
2895
2984
  if (step === void 0) {
2896
2985
  return;
2897
2986
  }
@@ -2909,14 +2998,16 @@ var useKeyboardNavigation = (context, item, orderNumber, element, state) => {
2909
2998
  }
2910
2999
  };
2911
3000
  };
2912
- var stepOf = (key) => {
3001
+ var stepOf = (key, orientation) => {
2913
3002
  switch (key) {
2914
3003
  case "ArrowDown":
3004
+ return orientation === "horizontal" ? void 0 : 1;
2915
3005
  case "ArrowRight":
2916
- return 1;
3006
+ return orientation === "vertical" ? void 0 : 1;
2917
3007
  case "ArrowUp":
3008
+ return orientation === "horizontal" ? void 0 : -1;
2918
3009
  case "ArrowLeft":
2919
- return -1;
3010
+ return orientation === "vertical" ? void 0 : -1;
2920
3011
  case "Home":
2921
3012
  return "first";
2922
3013
  case "End":
@@ -3001,13 +3092,13 @@ var FocusableWrapperComponent = ({
3001
3092
  focusableContext.isKeyboardNavigable ? focusableContext : void 0,
3002
3093
  focusableItem,
3003
3094
  orderNumber,
3004
- element,
3005
- state
3095
+ element
3006
3096
  );
3007
3097
  contributeProps({
3008
3098
  tabIndex,
3009
3099
  onFocus: (e) => {
3010
3100
  handleFocus(e);
3101
+ keyboardNavigation.onFocus();
3011
3102
  onFocus == null ? void 0 : onFocus(e);
3012
3103
  },
3013
3104
  onBlur: (e) => {
@@ -3020,7 +3111,9 @@ var FocusableWrapperComponent = ({
3020
3111
  onKeyDown: (e) => {
3021
3112
  onKeyDown == null ? void 0 : onKeyDown(e);
3022
3113
  keyboardNavigation.onKeyDown(e);
3023
- }
3114
+ },
3115
+ onMouseEnter: keyboardNavigation.focusWhatThePointerIsOn,
3116
+ onMouseMove: keyboardNavigation.focusWhatThePointerIsOn
3024
3117
  });
3025
3118
  return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children });
3026
3119
  };
@@ -3553,13 +3646,31 @@ var import_use_inject10 = require("@k8slens/use-inject");
3553
3646
  var import_react15 = require("react");
3554
3647
  var import_jsx_runtime7 = require("react/jsx-runtime");
3555
3648
  var hoverCloseDelayInMilliseconds = 200;
3556
- var DropDownMenuWrapperComponent = ({ dropDownMenu, contributeProps, children }) => {
3649
+ var DropDownMenuWrapperComponent = ({
3650
+ dropDownMenu,
3651
+ contributeRef,
3652
+ contributeProps,
3653
+ children
3654
+ }) => {
3557
3655
  const [isOpen, setIsOpen] = (0, import_react15.useState)(false);
3558
3656
  const [cursor, setCursor] = (0, import_react15.useState)(void 0);
3559
3657
  const closeTimerRef = (0, import_react15.useRef)(void 0);
3560
3658
  const onRightTrigger = (0, import_use_inject10.useSyncInject)(onRightTriggerInjectable);
3659
+ const elementRef = (0, import_react15.useRef)(null);
3660
+ const menuRef = (0, import_react15.useRef)(null);
3661
+ const elementTakesFocusBackRef = (0, import_react15.useRef)(false);
3662
+ contributeRef(
3663
+ (0, import_react15.useCallback)((element) => {
3664
+ elementRef.current = element;
3665
+ }, [])
3666
+ );
3561
3667
  const toggle = (0, import_react15.useCallback)(() => setIsOpen((wasOpen) => !wasOpen), []);
3562
- const close = (0, import_react15.useCallback)(() => setIsOpen(false), []);
3668
+ const close = (0, import_react15.useCallback)(() => {
3669
+ var _a;
3670
+ const focused = document.activeElement;
3671
+ elementTakesFocusBackRef.current = focused === null || focused === document.body || ((_a = menuRef.current) == null ? void 0 : _a.contains(focused)) === true;
3672
+ setIsOpen(false);
3673
+ }, []);
3563
3674
  const cancelScheduledClose = (0, import_react15.useCallback)(() => {
3564
3675
  if (closeTimerRef.current !== void 0) {
3565
3676
  clearTimeout(closeTimerRef.current);
@@ -3575,7 +3686,35 @@ var DropDownMenuWrapperComponent = ({ dropDownMenu, contributeProps, children })
3575
3686
  closeTimerRef.current = setTimeout(close, hoverCloseDelayInMilliseconds);
3576
3687
  }, [cancelScheduledClose, close]);
3577
3688
  (0, import_react15.useEffect)(() => cancelScheduledClose, [cancelScheduledClose]);
3689
+ (0, import_react15.useEffect)(() => {
3690
+ if (!isOpen) {
3691
+ return void 0;
3692
+ }
3693
+ elementTakesFocusBackRef.current = false;
3694
+ return () => {
3695
+ if (!elementTakesFocusBackRef.current) {
3696
+ return;
3697
+ }
3698
+ void Promise.resolve().then(() => {
3699
+ const element = elementRef.current;
3700
+ const focused = document.activeElement;
3701
+ if ((element == null ? void 0 : element.isConnected) && (focused === null || focused === document.body)) {
3702
+ element.focus();
3703
+ }
3704
+ });
3705
+ };
3706
+ }, [isOpen]);
3578
3707
  const openOn = dropDownMenu.openOn ?? "click";
3708
+ const closeOnArrowLeft = (0, import_react15.useCallback)(
3709
+ (event) => {
3710
+ if (event.key === "ArrowLeft") {
3711
+ event.preventDefault();
3712
+ event.stopPropagation();
3713
+ close();
3714
+ }
3715
+ },
3716
+ [close]
3717
+ );
3579
3718
  const outsideClickMarkingProps = useOnOutsideClick(
3580
3719
  (0, import_react15.useCallback)(() => {
3581
3720
  if (isOpen) {
@@ -3617,7 +3756,17 @@ var DropDownMenuWrapperComponent = ({ dropDownMenu, contributeProps, children })
3617
3756
  },
3618
3757
  ...openOn === "hover" && {
3619
3758
  onMouseEnter: open,
3620
- onMouseLeave: scheduleClose
3759
+ onMouseLeave: scheduleClose,
3760
+ // A menu that opens on hovering would be out of the keyboard's reach otherwise. Sideways
3761
+ // into it, since that is where such a menu sits: beside the element it belongs to. Focus
3762
+ // follows on its own, the menu taking it as it appears.
3763
+ onKeyDown: (event) => {
3764
+ if (event.key === "ArrowRight") {
3765
+ event.preventDefault();
3766
+ event.stopPropagation();
3767
+ open();
3768
+ }
3769
+ }
3621
3770
  }
3622
3771
  });
3623
3772
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
@@ -3629,15 +3778,25 @@ var DropDownMenuWrapperComponent = ({ dropDownMenu, contributeProps, children })
3629
3778
  // rather than going on to whatever encloses the element the menu was opened from — a row
3630
3779
  // of a menu of its own, say, which would take it for the row being activated. Only
3631
3780
  // `click` stops: the outside-click detection above works on `pointerdown`.
3632
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { ...outsideClickMarkingProps, style: displayContents, onClick: stopPropagation2, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3633
- import_drop_down_menu_contracts.DropDownMenu,
3781
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3782
+ "span",
3634
3783
  {
3635
- spec: dropDownMenu,
3636
- anchorPoint: openOn === "right-click" ? cursor : void 0,
3637
- onClose: close,
3638
- onMenuHoverChange: openOn === "hover" ? (menuIsHovered) => menuIsHovered ? cancelScheduledClose() : scheduleClose() : void 0
3784
+ ...outsideClickMarkingProps,
3785
+ ref: menuRef,
3786
+ style: displayContents,
3787
+ onClick: stopPropagation2,
3788
+ onKeyDown: openOn === "hover" ? closeOnArrowLeft : void 0,
3789
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3790
+ import_drop_down_menu_contracts.DropDownMenu,
3791
+ {
3792
+ spec: dropDownMenu,
3793
+ anchorPoint: openOn === "right-click" ? cursor : void 0,
3794
+ onClose: close,
3795
+ onMenuHoverChange: openOn === "hover" ? (menuIsHovered) => menuIsHovered ? cancelScheduledClose() : scheduleClose() : void 0
3796
+ }
3797
+ )
3639
3798
  }
3640
- ) })
3799
+ )
3641
3800
  ] });
3642
3801
  };
3643
3802
  var displayContents = { display: "contents" };
@@ -3967,10 +4126,11 @@ var getFocusableContext = (id) => getOrCreateContext(id, () => {
3967
4126
  };
3968
4127
  return context;
3969
4128
  });
3970
- var getKeyboardNavigableFocusableContext = (id) => getOrCreateContext(id, () => {
4129
+ var getKeyboardNavigableFocusableContext = (id, options = {}) => getOrCreateContext(id, () => {
3971
4130
  const context = {
3972
4131
  id,
3973
4132
  isKeyboardNavigable: true,
4133
+ orientation: options.orientation ?? "vertical",
3974
4134
  focusable: (item, orderNumber) => ({ context, item, orderNumber })
3975
4135
  };
3976
4136
  return context;
@@ -3985,12 +4145,17 @@ var getOrCreateContext = (id, create) => {
3985
4145
  return created;
3986
4146
  };
3987
4147
 
4148
+ // src/plugins/focusable/focusable-item-context.ts
4149
+ var import_react17 = require("react");
4150
+ var contextForFocusableItem = (0, import_react17.createContext)(void 0);
4151
+ var useFocusableItem = () => (0, import_react17.useContext)(contextForFocusableItem);
4152
+
3988
4153
  // src/plugins/hoverable/local-hoverable/local-hoverable.ts
3989
4154
  var import_use_inject11 = require("@k8slens/use-inject");
3990
- var import_react17 = require("react");
4155
+ var import_react18 = require("react");
3991
4156
  var useLocalHoverable = () => {
3992
- const hoverableContext = (0, import_react17.useMemo)(() => getHoverableContext(), []);
3993
- const ref = (0, import_react17.useRef)(null);
4157
+ const hoverableContext = (0, import_react18.useMemo)(() => getHoverableContext(), []);
4158
+ const ref = (0, import_react18.useRef)(null);
3994
4159
  const itemBeingHovered = (0, import_use_inject11.useSyncInject)(contextIsBeingHoveredInjectable, hoverableContext);
3995
4160
  return {
3996
4161
  ref,
@@ -4035,6 +4200,7 @@ var useLocalHoverable = () => {
4035
4200
  Tr,
4036
4201
  Ul,
4037
4202
  contextForClosingPopover,
4203
+ contextForFocusableItem,
4038
4204
  doFocusForInjectionToken,
4039
4205
  elementComponentFeature,
4040
4206
  getDraggableContext,
@@ -4054,8 +4220,9 @@ var useLocalHoverable = () => {
4054
4220
  suppressTooltip,
4055
4221
  tShirtSizeInPixels,
4056
4222
  useClosePopover,
4223
+ useFocusableItem,
4057
4224
  useLocalHoverable,
4058
4225
  useOnOutsideClick,
4059
4226
  usePopoverIsOpen
4060
4227
  });
4061
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vaW5kZXgudHMiLCAiLi4vc3JjL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZG8tZm9jdXMuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvaXRlbS1iZWluZy1mb2N1c2VkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQvZm9jdXNhYmxlLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9lbmFibGVkL2VuYWJsZWQudHMiLCAiLi4vc3JjL3BsdWdpbnMvZW5hYmxlZC9lbmFibGVkLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUtYnktZHJhZ2dpbmcudHMiLCAiLi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9pdGVtLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9ob3ZlcmFibGUvY29tcHV0ZWQtbm93LmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvaXRlbS1iZWluZy1kcmFnZ2VkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvX3NoYXJlZC9kcmFnZ2VkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy90b29sdGlwL3Rvb2x0aXAudHN4IiwgIi4uL3NyYy9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvdG9vbHRpcC90b29sdGlwLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9lbGVtZW50cy9taW5pbWFsLWRpdi50cyIsICIuLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZS50cyIsICIuLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZS5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9wYWRkaW5nL3BhZGRpbmcudHMiLCAiLi4vc3JjL3BsdWdpbnMvcGFkZGluZy9wYWRkaW5nLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvci50cyIsICIuLi9zcmMvcGx1Z2lucy9iYWNrZ3JvdW5kLWNvbG9yL2JhY2tncm91bmQtY29sb3IubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvYm9yZGVyL2JvcmRlci50cyIsICIuLi9zcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2JvcmRlci9nZXQtY29ybmVyLXN0eWxlcy50cyIsICIuLi9zcmMvcGx1Z2lucy9ib3JkZXIvZ2V0LXNpZGUtc3R5bGVzLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvbnQvZm9udC50cyIsICIuLi9zcmMvcGx1Z2lucy9mb250L2ZvbnQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvYm94LXNoYWRvdy9ib3gtc2hhZG93LnRzIiwgIi4uL3NyYy9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvdy5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50cy50cyIsICIuLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50cy5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9yZWYvcmVmLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9jbGFzcy1uYW1lL2NsYXNzLW5hbWUudHMiLCAiLi4vc3JjL3BsdWdpbnMvcmVsYXRpdmUvcmVsYXRpdmUudHMiLCAiLi4vc3JjL3BsdWdpbnMvcmVsYXRpdmUvcmVsYXRpdmUubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZ2V0LWRyYWdnYWJsZS1jb250ZXh0LnRzIiwgIi4uL3NyYy9mZWF0dXJlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2NsaWNrYWJsZS9pcy1tYWMuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9jbGlja2FibGUvb24tcmlnaHQtdHJpZ2dlci5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQva2V5Ym9hcmQtbmF2aWdhdGlvbi1zdGF0ZS5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvX3ByaXZhdGUvY29udGV4dC1pcy1iZWluZy1ob3ZlcmVkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3Rlc3QtdXRpbC1ydW5uYWJsZS5pbmplY3RhYmxlLnRzIiwgImltcG9ydC1nbG9iOi4vKiovKi5nbG9iYWwtb3ZlcnJpZGUtZm9yLWluamVjdGFibGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy8wZGUyZDk5ZS04NzM4LTQxZDAtYjgyMi1hZTcyMDAzYTVhNjAiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvbWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW4vbWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW4uZGVmYXVsdC1vdmVycmlkZS50cyIsICIuLi9zcmMvcGx1Z2lucy90b29sdGlwL3Rvb2x0aXAtZGVsYXkvdG9vbHRpcC1kZWxheS5kZWZhdWx0LW92ZXJyaWRlLnRzIiwgIi4uL3NyYy9yZW1vdmUtY3NzLW1vZHVsZS1jbHV0dGVyLmRlZmF1bHQtb3ZlcnJpZGUudHMiLCAiaW1wb3J0LWdsb2I6Li8qKi8qLmRlZmF1bHQtb3ZlcnJpZGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy85Nzc4ZjRkMC1lZTFhLTQ2NDktOWJhZC1iYzVkYWFkOGEzYTQiLCAiaW1wb3J0LWdsb2I6Li8qKi8qLmluamVjdGFibGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy9mZDBkM2I2Yi00ZjNlLTQ3OTctODhhNy00ZDEyYzVlMmU3OTIiLCAiLi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplcy50cyIsICIuLi9zcmMvZWxlbWVudHMudHMiLCAiLi4vc3JjL3BsdWdpbnMvZmxleC9mbGV4Lm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZsZXgvZmxleC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmlkL2dyaWQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZ3JpZC9ncmlkLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3N0eWxlL3N0eWxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hlaWdodC9oZWlnaHQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvaGVpZ2h0L2hlaWdodC50cyIsICIuLi9zcmMvcGx1Z2lucy9jb2xvci9jb2xvci50cyIsICIuLi9zcmMvcGx1Z2lucy9jb2xvci9jb2xvci5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9ncmFkaWVudC9ncmFkaWVudC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmFkaWVudC9ncmFkaWVudC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9kcmFnZ2FibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZHJhZ2dhYmxlLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2Ryb3BwYWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy90cmFuc2l0aW9uL3RyYW5zaXRpb24udHMiLCAiLi4vc3JjL3BsdWdpbnMvdHJhbnNpdGlvbi90cmFuc2l0aW9uLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL29mZnNldC9vZmZzZXQudHMiLCAiLi4vc3JjL3BsdWdpbnMvb2Zmc2V0L29mZnNldC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9vZmZzZXQtY2hpbGRyZW4vb2Zmc2V0LWNoaWxkcmVuLnRzIiwgIi4uL3NyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW4ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvaGlkZGVuL2hpZGRlbi50cyIsICIuLi9zcmMvcGx1Z2lucy9oaWRkZW4vaGlkZGVuLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL21hcmdpbi9tYXJnaW4udHMiLCAiLi4vc3JjL3BsdWdpbnMvbWFyZ2luL21hcmdpbi5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy92aXN1YWxseS1oaWRkZW4vdmlzdWFsbHktaGlkZGVuLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3Zpc3VhbGx5LWhpZGRlbi92aXN1YWxseS1oaWRkZW4ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3cudHMiLCAiLi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3cubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZmxleC1jaGlsZC9mbGV4LWNoaWxkLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZsZXgtY2hpbGQvZmxleC1jaGlsZC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmF5c2NhbGUvZ3JheXNjYWxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGUubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvdGludC90aW50LnRzIiwgIi4uL3NyYy9wbHVnaW5zL3RpbnQvdGludC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC50cyIsICIuLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZm9jdXNhYmxlLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvdXNlLXVwZGF0ZS13aGVuLXByb3BzLWNoYW5nZS50c3giLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19wcml2YXRlL3VzZS1jbGVhbnVwLW9uLXVubW91bnQudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9fcHJpdmF0ZS91c2Uta2V5Ym9hcmQtbmF2aWdhdGlvbi50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvaGFuZGxlLWZvY3VzLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9fcHJpdmF0ZS9oYW5kbGUtYmx1ci50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvdXNlLXByb2dyYW1tYXRpYy1mb2N1c2luZy50cyIsICIuLi9zcmMvcGx1Z2lucy9hcmVhL2FyZWEudHMiLCAiLi4vc3JjL3BsdWdpbnMvYXJlYS1jb250ZW50L2FyZWEtY29udGVudC50cyIsICIuLi9zcmMvcGx1Z2lucy9zaXplL3NpemUudHMiLCAiLi4vc3JjL3BsdWdpbnMvY3Vyc29yL2N1cnNvci5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9jbGlja2FibGUvY2xpY2thYmxlLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9kaXNwbGF5LWNvbnRlbnRzL2Rpc3BsYXktY29udGVudHMubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzLnRzeCIsICIuLi9zcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ24ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvdGV4dC1hbGlnbi90ZXh0LWFsaWduLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2Jsb2NrL2Jsb2NrLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2Jsb2NrL2Jsb2NrLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmUudHMiLCAiLi4vc3JjL3BsdWdpbnMvb3V0bGluZS9vdXRsaW5lLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL3BvcG92ZXIvcG9wb3Zlci50c3giLCAiLi4vc3JjL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2Zsb2F0aW5nL2Zsb2F0aW5nLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9pbnZpc2libGUtYmFja2Ryb3AvaW52aXNpYmxlLWJhY2tkcm9wLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ludmlzaWJsZS1iYWNrZHJvcC9pbnZpc2libGUtYmFja2Ryb3AudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2Ryb3AtZG93bi1tZW51L2Ryb3AtZG93bi1tZW51LnRzeCIsICIuLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9nZXQtZm9jdXNhYmxlLWNvbnRleHQudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvbG9jYWwtaG92ZXJhYmxlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgdHlwZSB7IEJsb2NrUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ibG9jay9ibG9ja1wiO1xuZXhwb3J0IHR5cGUgeyBBbmNob3JlZEF0LCBBbmNob3JQbHVnaW5Qcm9wcywgQW5jaG9yUG9zaXRpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yXCI7XG5leHBvcnQgeyB1c2VPbk91dHNpZGVDbGljayB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29uLW91dHNpZGUtY2xpY2svb24tb3V0c2lkZS1jbGlja1wiO1xuZXhwb3J0IHR5cGUgeyBPbk91dHNpZGVDbGlja1BsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrXCI7XG5leHBvcnQgdHlwZSB7IERyb3BEb3duTWVudVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZHJvcC1kb3duLW1lbnUvZHJvcC1kb3duLW1lbnVcIjtcbmV4cG9ydCB0eXBlIHsgVGV4dEFsaWduUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ25cIjtcblxuZXhwb3J0IHsgdHlwZSBEb0ZvY3VzLCB0eXBlIERvRm9jdXNGb3IsIGRvRm9jdXNGb3JJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9kby1mb2N1cy5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB7IGl0ZW1CZWluZ0ZvY3VzZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9pdGVtLWJlaW5nLWZvY3VzZWQuaW5qZWN0YWJsZVwiO1xuZXhwb3J0IHR5cGUgeyBJdGVtQmVpbmdGb2N1c2VkIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2l0ZW0tYmVpbmctZm9jdXNlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgRm9jdXNhYmxlUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZm9jdXNhYmxlXCI7XG5leHBvcnQgeyB0eXBlIEVuYWJsZWRQbHVnaW5Qcm9wcywgaXNEaXNhYmxlZCB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2VuYWJsZWQvZW5hYmxlZFwiO1xuZXhwb3J0IHR5cGUgeyBHcmF5c2NhbGVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGVcIjtcbmV4cG9ydCB0eXBlIHsgVGludFBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdGludC90aW50XCI7XG5leHBvcnQgdHlwZSB7IEZhZGVkUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZFwiO1xuXG5leHBvcnQgdHlwZSB7IFNpZGVTdHlsZXMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvZ2V0LXNpZGUtc3R5bGVzXCI7XG5leHBvcnQgdHlwZSB7IENvcm5lclN0eWxlcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JvcmRlci9nZXQtY29ybmVyLXN0eWxlc1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEJhY2tncm91bmRDb2xvclBsdWdpblByb3BzLFxuICBCYWNrZ3JvdW5kQ29sb3IsXG4gIEJhY2tncm91bmRDb2xvckFsaWFzLFxuICAkQmFja2dyb3VuZENvbG9yUHJvcHMsXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvclwiO1xuXG5leHBvcnQgdHlwZSB7XG4gIE91dGxpbmVXaWR0aCxcbiAgJE91dGxpbmVQcm9wcyxcbiAgT3V0bGluZVBsdWdpblByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmVcIjtcblxuZXhwb3J0IHR5cGUge1xuICBGbG9hdGluZ0NvbnRlbnRBcmdzLFxuICBGbG9hdGluZ0NvbnRlbnRGYWN0b3J5LFxuICAkRmxvYXRpbmdQcm9wcyxcbiAgRmxvYXRpbmdQbHVnaW5Qcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZmxvYXRpbmcvZmxvYXRpbmdcIjtcblxuZXhwb3J0IHR5cGUgeyBQYWRkaW5nUGx1Z2luUHJvcHMsIERpcmVjdGlvbmFsUGFkZGluZyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3BhZGRpbmcvcGFkZGluZ1wiO1xuZXhwb3J0IHR5cGUgeyBNYXJnaW5QbHVnaW5Qcm9wcywgRGlyZWN0aW9uYWxNYXJnaW4gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9tYXJnaW4vbWFyZ2luXCI7XG5leHBvcnQgdHlwZSB7IE92ZXJmbG93UGx1Z2luUHJvcHMsIE92ZXJmbG93IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3dcIjtcblxuZXhwb3J0IHR5cGUgeyBCb3hTaGFkb3dQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvd1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEhvdmVyYWJsZUJ5RHJhZ2dpbmdQbHVnaW5Qcm9wcyxcbiAgJEhvdmVyYWJsZUJ5RHJhZ2dpbmdQcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZS1ieS1kcmFnZ2luZ1wiO1xuZXhwb3J0IHsgaG92ZXJhYmxlQnlEcmFnZ2luZ1BsdWdpbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUtYnktZHJhZ2dpbmdcIjtcblxuZXhwb3J0IHR5cGUge1xuICBIb3ZlcmFibGVDb250ZXh0LFxuICAkSG92ZXJhYmxlUHJvcHMsXG4gIEhvdmVyYWJsZUNvbnRleHRPcHRpb25zLFxuICBIb3ZlcmFibGVQbHVnaW5Qcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZVwiO1xuZXhwb3J0IHsgaG92ZXJhYmxlUGx1Z2luLCBnZXRIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZVwiO1xuZXhwb3J0IHsgaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2l0ZW0tYmVpbmctaG92ZXJlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgUmVmUGx1Z2luUHJvcHMsICRSZWZQcm9wLCBSZWZMaWtlIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvcmVmL3JlZlwiO1xuXG5leHBvcnQgdHlwZSB7IEFic29sdXRlUGx1Z2luUHJvcHMsIEFic29sdXRlUG9zaXRpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZVwiO1xuZXhwb3J0IHR5cGUgeyBIaWRkZW5QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hpZGRlbi9oaWRkZW5cIjtcbmV4cG9ydCB0eXBlIHsgTm9Qb2ludGVyRXZlbnRzUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50c1wiO1xuZXhwb3J0IHR5cGUgeyBPZmZzZXRQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29mZnNldC9vZmZzZXRcIjtcbmV4cG9ydCB0eXBlIHsgT2Zmc2V0Q2hpbGRyZW5QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW5cIjtcbmV4cG9ydCB0eXBlIHsgUmVsYXRpdmVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3JlbGF0aXZlL3JlbGF0aXZlXCI7XG5leHBvcnQgdHlwZSB7IFRyYW5zaXRpb25QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3RyYW5zaXRpb24vdHJhbnNpdGlvblwiO1xuZXhwb3J0IHR5cGUgeyBWaXN1YWxseUhpZGRlblBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdmlzdWFsbHktaGlkZGVuL3Zpc3VhbGx5LWhpZGRlblwiO1xuXG5leHBvcnQgdHlwZSB7ICRDdXJzb3JQcm9wcywgQ3Vyc29yUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yXCI7XG5leHBvcnQgdHlwZSB7IERpc3BsYXlDb250ZW50c1BsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzXCI7XG5cbmV4cG9ydCB7IGl0ZW1CZWluZ0RyYWdnZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2l0ZW0tYmVpbmctZHJhZ2dlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgVG9vbHRpcFBsdWdpblByb3BzLCAkVG9vbHRpcFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdG9vbHRpcC90b29sdGlwXCI7XG5leHBvcnQgeyBTdHlsZWRUb29sdGlwQ29udGFpbmVyLCBnZXRUb29sdGlwUHJvcHMsIHN1cHByZXNzVG9vbHRpcCB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcFwiO1xuXG5leHBvcnQgdHlwZSB7IERyYWdnYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcbmV4cG9ydCB7IGdldERyYWdnYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IHsgZWxlbWVudENvbXBvbmVudEZlYXR1cmUgfSBmcm9tIFwiLi9zcmMvZmVhdHVyZVwiO1xuXG5leHBvcnQgdHlwZSB7IFNpemVQbHVnaW5Qcm9wcywgJFNpemVQcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3NpemUvc2l6ZVwiO1xuXG5leHBvcnQgdHlwZSB7IFdpZHRoUGx1Z2luUHJvcHMsICRXaWR0aFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvd2lkdGgvd2lkdGhcIjtcblxuZXhwb3J0IHR5cGUgeyBTdHlsZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvc3R5bGUvc3R5bGVcIjtcblxuZXhwb3J0IHR5cGUgeyBIZWlnaHRQbHVnaW5Qcm9wcywgJEhlaWdodFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaGVpZ2h0L2hlaWdodFwiO1xuXG5leHBvcnQgdHlwZSB7IEZvbnRQbHVnaW5Qcm9wcywgRm9udFNpemUsIEZvbnRMaW5lSGVpZ2h0IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9udC9mb250XCI7XG5cbmV4cG9ydCB0eXBlIHsgR3JpZFBsdWdpblByb3BzLCBHcmlkUHJvcHMsIEdyaWRDb2x1bW5zIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZ3JpZC9ncmlkXCI7XG5cbmV4cG9ydCB0eXBlIHtcbiAgRHJhZ2dhYmxlUGx1Z2luUHJvcHMsXG4gIERyb3BwYWJsZVBsdWdpblByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IHR5cGUgeyBDb2xvclBsdWdpblByb3BzLCAkQ29sb3JQcm9wcywgVGV4dENvbG9yLCBUZXh0Q29sb3JBbGlhcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2NvbG9yL2NvbG9yXCI7XG5leHBvcnQgdHlwZSB7IENsYXNzTmFtZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCB0eXBlIHtcbiAgQm9yZGVyUGx1Z2luUHJvcHMsXG4gIEJvcmRlckNvbG9yQWxpYXMsXG4gIEJvcmRlckNvbG9yLFxuICAkQm9yZGVyUHJvcHMsXG4gICRCb3JkZXJDb2xvclByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyXCI7XG5cbmV4cG9ydCB0eXBlIHsgQm9yZGVyUmFkaXVzU2l6ZSwgQm9yZGVyV2lkdGgsIEJvcmRlclNpZGUgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvdHlwZXNcIjtcblxuZXhwb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplc1wiO1xuZXhwb3J0IHsgdFNoaXJ0U2l6ZUluUGl4ZWxzLCBzaXplVW5pdEluUGl4ZWxzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplc1wiO1xuXG5leHBvcnQgdHlwZSB7IERpcmVjdGlvbiwgU2hvcnREaXJlY3Rpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9fc2hhcmVkL2RpcmVjdGlvbnNcIjtcbmV4cG9ydCB0eXBlIHsgQ29sb3IgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9fc2hhcmVkL2NvbG9yc1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIENsaWNrSGFuZGxlcixcbiAgQ2xpY2tIYW5kbGVyRGV0YWlscyxcbiAgQ2xpY2tQbHVnaW5Qcm9wcyxcbiAgUG9zaXRpb24yZCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvY2xpY2thYmxlL2NsaWNrYWJsZVwiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEZsZXhQbHVnaW5Qcm9wcyxcbiAgSG9yaXpvbnRhbEZsZXhQcm9wcyxcbiAgTWF4aW1hbEZsZXhQcm9wcyxcbiAgU2ltcGxlRmxleFByb3AsXG4gIFZlcnRpY2FsRmxleFByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mbGV4L2ZsZXhcIjtcblxuaW1wb3J0IHtcbiAgcmVtb3ZlQ3NzTW9kdWxlQ2x1dHRlckZvclVuaXRUZXN0aW5nLFxuICBzaG93Q3NzTW9kdWxlQ2x1dHRlckZvclByb2R1Y3Rpb24sXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuXG5leHBvcnQgeyByZW1vdmVDc3NNb2R1bGVDbHV0dGVyRm9yVW5pdFRlc3RpbmcsIHNob3dDc3NNb2R1bGVDbHV0dGVyRm9yUHJvZHVjdGlvbiB9O1xuXG5leHBvcnQge1xuICBDbGlja2FibGVEaXYsXG4gIE5hdixcbiAgU3ZnLFxuICBEaXYsXG4gIEJ1dHRvbixcbiAgSSxcbiAgSW5wdXQsXG4gIEZvcm0sXG4gIFNwYW4sXG4gIFRleHRBcmVhLFxuICBBLFxuICBDb2RlLFxuICBQcmUsXG4gIEgxLFxuICBIMixcbiAgSDMsXG4gIEg0LFxuICBINSxcbiAgSDYsXG4gIFAsXG4gIENsaWNrYWJsZUxpLFxuICBMaSxcbiAgT2wsXG4gIFVsLFxuICBUaCxcbiAgVGQsXG4gIFRyLFxuICBUYWJsZSxcbiAgTGFiZWwsXG4gIFRCb2R5LFxuICBEaWFsb2csXG4gIENhbnZhcyxcbiAgSW1nLFxufSBmcm9tIFwiLi9zcmMvZWxlbWVudHNcIjtcblxuZXhwb3J0IHR5cGUge1xuICBDb21tb25Qcm9wcyxcbiAgQ2xpY2thYmxlRGl2UHJvcHMsXG4gIENsaWNrYWJsZUxpUHJvcHMsXG4gIE5hdlByb3BzLFxuICBTdmdQcm9wcyxcbiAgRGl2UHJvcHMsXG4gIEJ1dHRvblByb3BzLFxuICBJUHJvcHMsXG4gIElucHV0UHJvcHMsXG4gIEZvcm1Qcm9wcyxcbiAgU3BhblByb3BzLFxuICBUZXh0QXJlYVByb3BzLFxuICBBUHJvcHMsXG4gIENvZGVQcm9wcyxcbiAgUHJlUHJvcHMsXG4gIEgxUHJvcHMsXG4gIEgyUHJvcHMsXG4gIEgzUHJvcHMsXG4gIEg0UHJvcHMsXG4gIEg1UHJvcHMsXG4gIEg2UHJvcHMsXG4gIFBQcm9wcyxcbiAgTGlQcm9wcyxcbiAgT2xQcm9wcyxcbiAgVWxQcm9wcyxcbiAgVGhQcm9wcyxcbiAgVGRQcm9wcyxcbiAgVHJQcm9wcyxcbiAgVGFibGVQcm9wcyxcbiAgTGFiZWxQcm9wcyxcbiAgVEJvZHlQcm9wcyxcbiAgRGlhbG9nUHJvcHMsXG4gIENhbnZhc1Byb3BzLFxuICBJbWdQcm9wcyxcbn0gZnJvbSBcIi4vc3JjL2VsZW1lbnRzXCI7XG5cbmV4cG9ydCB7XG4gIGdldEZvY3VzYWJsZUNvbnRleHQsXG4gIGdldEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuZXhwb3J0IHR5cGUge1xuICAkRm9jdXNhYmxlUHJvcHMsXG4gIEFueUZvY3VzYWJsZUNvbnRleHQsXG4gIEZvY3VzYWJsZUNvbnRleHQsXG4gIEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuZXhwb3J0IHsgdXNlQ2xvc2VQb3BvdmVyLCB1c2VQb3BvdmVySXNPcGVuLCBjb250ZXh0Rm9yQ2xvc2luZ1BvcG92ZXIgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9wb3BvdmVyL3BvcG92ZXJcIjtcbmV4cG9ydCB7IHVzZUxvY2FsSG92ZXJhYmxlIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2xvY2FsLWhvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGVcIjtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4sIHR5cGUgQ29udHJpYnV0ZVByb3BzIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgdHlwZSBPbk91dHNpZGVDbGlja1BsdWdpblByb3BzID0ge1xuICByZWFkb25seSBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYSBwb2ludGVyLWRvd24gbGFuZHMgb3V0c2lkZSB0aGUgZWxlbWVudCdzIFJlYWN0IHRyZWUuIFRoZSB0cmVlIGluY2x1ZGVzIGNvbnRlbnRcbiAgICogdGhlIGVsZW1lbnQgcG9ydGFscyBlbHNld2hlcmUsIHNvIHBvcnRhbGVkIGNoaWxkcmVuIGNvdW50IGFzIGluc2lkZS4gQ2F2ZWF0OiBhbiBvdXRzaWRlXG4gICAqIHBvaW50ZXItZG93biB3aG9zZSBwcm9wYWdhdGlvbiB0byB0aGUgZG9jdW1lbnQgaXMgc3RvcHBlZCBuYXRpdmVseSBnb2VzIHVuZGV0ZWN0ZWQuXG4gICAqL1xuICByZWFkb25seSAkb25PdXRzaWRlQ2xpY2s/OiAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4gdm9pZDtcbn07XG5cbi8qKlxuICogUmVhY3QtdHJlZSBvdXRzaWRlLWNsaWNrIGRldGVjdGlvbjogYSBjYXB0dXJlLXBoYXNlIGhhbmRsZXIgb24gdGhlIGVsZW1lbnQgcmVjb3JkcyB0aGVcbiAqIHBvaW50ZXItZG93biBldmVudHMgb2YgaXRzIG93biBSZWFjdCB0cmVlIChwb3J0YWxzIGluY2x1ZGVkLCBzaW5jZSBSZWFjdCBldmVudHMgcHJvcGFnYXRlXG4gKiB0aHJvdWdoIHRoZW0pLCBhbmQgYSBkb2N1bWVudC1sZXZlbCBsaXN0ZW5lciByZXBvcnRzIGV2ZXJ5IHBvaW50ZXItZG93biBpdCBkaWQgbm90IHJlY29yZC5cbiAqIFJldHVybnMgdGhlIHByb3BzIG1hcmtpbmcgdGhlIGVsZW1lbnQncyB0cmVlOyBnaXZlIHRoZW0gdG8gYGNvbnRyaWJ1dGVQcm9wc2Agb3Igc3ByZWFkIHRoZW1cbiAqIG9udG8gdGhlIHN1YnRyZWUncyByb290LlxuICovXG5leHBvcnQgY29uc3QgdXNlT25PdXRzaWRlQ2xpY2sgPSAob25PdXRzaWRlQ2xpY2s6IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB2b2lkKSA9PiB7XG4gIGNvbnN0IGxhc3RJbnNpZGVQb2ludGVyRG93blJlZiA9IHVzZVJlZjxFdmVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgY29uc3QgaGFuZGxlclJlZiA9IHVzZVJlZihvbk91dHNpZGVDbGljayk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBoYW5kbGVyUmVmLmN1cnJlbnQgPSBvbk91dHNpZGVDbGljaztcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVEb2N1bWVudFBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudCAhPT0gbGFzdEluc2lkZVBvaW50ZXJEb3duUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaGFuZGxlclJlZi5jdXJyZW50KGV2ZW50KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsIGhhbmRsZURvY3VtZW50UG9pbnRlckRvd24pO1xuXG4gICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLCBoYW5kbGVEb2N1bWVudFBvaW50ZXJEb3duKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9uUG9pbnRlckRvd25DYXB0dXJlID0gdXNlQ2FsbGJhY2soKGV2ZW50OiBSZWFjdC5Qb2ludGVyRXZlbnQpID0+IHtcbiAgICBsYXN0SW5zaWRlUG9pbnRlckRvd25SZWYuY3VycmVudCA9IGV2ZW50Lm5hdGl2ZUV2ZW50O1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHsgb25Qb2ludGVyRG93bkNhcHR1cmUgfTtcbn07XG5cbnR5cGUgT25PdXRzaWRlQ2xpY2tXcmFwcGVyUHJvcHMgPSB7XG4gIHJlYWRvbmx5IG9uT3V0c2lkZUNsaWNrOiAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVByb3BzOiBDb250cmlidXRlUHJvcHM7XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBPbk91dHNpZGVDbGlja1dyYXBwZXJDb21wb25lbnQgPSAoeyBvbk91dHNpZGVDbGljaywgY29udHJpYnV0ZVByb3BzLCBjaGlsZHJlbiB9OiBPbk91dHNpZGVDbGlja1dyYXBwZXJQcm9wcykgPT4ge1xuICBjb250cmlidXRlUHJvcHModXNlT25PdXRzaWRlQ2xpY2sob25PdXRzaWRlQ2xpY2spKTtcblxuICByZXR1cm4gPD57Y2hpbGRyZW59PC8+O1xufTtcblxuZXhwb3J0IGNvbnN0IG9uT3V0c2lkZUNsaWNrUGx1Z2luID0gZ2V0UGx1Z2luPE9uT3V0c2lkZUNsaWNrUGx1Z2luUHJvcHM+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRvbk91dHNpZGVDbGljayB9ID0gcHJvcHM7XG5cbiAgaWYgKCRvbk91dHNpZGVDbGljayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgJG9uT3V0c2lkZUNsaWNrOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJG9uT3V0c2lkZUNsaWNrOiB1bmRlZmluZWQsXG4gICAgJHdyYXBwZXI6IHtcbiAgICAgIENvbXBvbmVudDogT25PdXRzaWRlQ2xpY2tXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgcHJvcHM6IHsgb25PdXRzaWRlQ2xpY2s6ICRvbk91dHNpZGVDbGljayB9LFxuICAgIH0sXG4gIH07XG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiwgZ2V0SW5qZWN0aW9uVG9rZW4yIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgQW55Rm9jdXNhYmxlQ29udGV4dCB9IGZyb20gXCIuL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuaW1wb3J0IHsgZm9jdXNhYmxlSHRtbEVsZW1lbnRSZWZTZXRJbmplY3RhYmxlIH0gZnJvbSBcIi4vX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgYXNzZXJ0RGVmaW5lZCB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5cbmV4cG9ydCB0eXBlIERvRm9jdXM8VD4gPSAoaXRlbTogVCkgPT4gdm9pZDtcbmV4cG9ydCB0eXBlIERvRm9jdXNGb3IgPSA8VD4oZm9jdXNhYmxlQ29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxUPikgPT4gRG9Gb2N1czxUPjtcblxuZXhwb3J0IGNvbnN0IGRvRm9jdXNGb3JJbmplY3Rpb25Ub2tlbiA9IGdldEluamVjdGlvblRva2VuMjx7IHNpbmdsZUZhY3Rvcnk6ICgpID0+IERvRm9jdXNGb3IgfT4oe1xuICBpZDogXCJkby1mb2N1cy1mb3ItaW5qZWN0aW9uLXRva2VuXCIsXG4gIGNhcmRpbmFsaXR5OiBcIm9uZVwiLFxufSkoKTtcblxuZXhwb3J0IGNvbnN0IGRvRm9jdXNGb3JJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJkby1mb2N1cy1mb3JcIixcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgZ2V0UmVmU2V0ID0gZGkuaW5qZWN0KGZvY3VzYWJsZUh0bWxFbGVtZW50UmVmU2V0SW5qZWN0YWJsZSk7XG5cbiAgICByZXR1cm4gKCkgPT5cbiAgICAgICg8VD4oZm9jdXNhYmxlQ29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxUPikgPT5cbiAgICAgICAgKGZvY3VzYWJsZUl0ZW06IFQpID0+IHtcbiAgICAgICAgICBjb25zdCBbZmlyc3RSZW5kZXJlZEZvY3VzYWJsZUVsZW1lbnRSZWZdID0gZ2V0UmVmU2V0KGZvY3VzYWJsZUNvbnRleHQsIGZvY3VzYWJsZUl0ZW0pO1xuXG4gICAgICAgICAgaWYgKGZpcnN0UmVuZGVyZWRGb2N1c2FibGVFbGVtZW50UmVmKSB7XG4gICAgICAgICAgICBhc3NlcnREZWZpbmVkKGZpcnN0UmVuZGVyZWRGb2N1c2FibGVFbGVtZW50UmVmLmN1cnJlbnQpO1xuXG4gICAgICAgICAgICBmaXJzdFJlbmRlcmVkRm9jdXNhYmxlRWxlbWVudFJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSBhcyBEb0ZvY3VzRm9yO1xuICB9LFxuXG4gIGluamVjdGlvblRva2VuOiBkb0ZvY3VzRm9ySW5qZWN0aW9uVG9rZW4sXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IEFueUZvY3VzYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IE11dGFibGVSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcblxudHlwZSBGb2N1c2FibGVJdGVtID0gYW55O1xuXG4vLyBUd28gaW5zdGFudGlhdGlvbiBwYXJhbWV0ZXJzIHJhdGhlciB0aGFuIG9uZSBjb21wb3NpdGUga2V5OiB2MiBrZXlzIGFcbi8vIHNpbmdsZXRvbiBieSBhbGwgb2YgdGhlbSwgc28gdGhlIGNvbnRleHQgYW5kIHRoZSBpdGVtIGNvbXBvc2UgYnkgaWRlbnRpdHkgb25cbi8vIHRoZWlyIG93bi5cbmV4cG9ydCBjb25zdCBmb2N1c2FibGVIdG1sRWxlbWVudFJlZlNldEluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcImh0bWwtZWxlbWVudHMtYnktZm9jdXNhYmxlLW1hcFwiLFxuXG4gIGluc3RhbnRpYXRlOiAoKSA9PiAoX2NvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNhYmxlSXRlbT4sIF9pdGVtOiBGb2N1c2FibGVJdGVtKSA9PlxuICAgIG5ldyBTZXQ8TXV0YWJsZVJlZk9iamVjdDxIVE1MRWxlbWVudCB8IHVuZGVmaW5lZD4+KCksXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiwgZ2V0SW5qZWN0aW9uVG9rZW4yIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgSUNvbXB1dGVkVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgZm9jdXNhYmxlSXRlbVN0YXRlSW5qZWN0YWJsZSB9IGZyb20gXCIuL19zaGFyZWQvZm9jdXNhYmxlLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5cbmV4cG9ydCB0eXBlIEl0ZW1CZWluZ0ZvY3VzZWQgPSA8VD4oZm9jdXNhYmxlQ29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxUPikgPT4gSUNvbXB1dGVkVmFsdWU8VCB8IHVuZGVmaW5lZD47XG5cbmV4cG9ydCBjb25zdCBpdGVtQmVpbmdGb2N1c2VkSW5qZWN0aW9uVG9rZW4gPSBnZXRJbmplY3Rpb25Ub2tlbjI8eyBzaW5nbGVGYWN0b3J5OiAoKSA9PiBJdGVtQmVpbmdGb2N1c2VkIH0+KHtcbiAgaWQ6IFwiaXRlbS1iZWluZy1mb2N1c2VkXCIsXG4gIGNhcmRpbmFsaXR5OiBcIm9uZVwiLFxufSkoKTtcblxuZXhwb3J0IGNvbnN0IHByaXZhdGVJdGVtQmVpbmdGb2N1c2VkSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwicHJpdmF0ZS1pdGVtLWJlaW5nLWZvY3VzZWRcIixcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgZ2V0Rm9jdXNhYmxlSXRlbVN0YXRlID0gZGkuaW5qZWN0KGZvY3VzYWJsZUl0ZW1TdGF0ZUluamVjdGFibGUpO1xuXG4gICAgcmV0dXJuIChjb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PGFueT4pID0+IGNvbXB1dGVkKCgpID0+IGdldEZvY3VzYWJsZUl0ZW1TdGF0ZShjb250ZXh0KS5nZXQoKSk7XG4gIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IGl0ZW1CZWluZ0ZvY3VzZWRJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJpdGVtLWJlaW5nLWZvY3VzZWRcIixcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgZ2V0UHJpdmF0ZUl0ZW1CZWluZ0ZvY3VzZWQgPSBkaS5pbmplY3QocHJpdmF0ZUl0ZW1CZWluZ0ZvY3VzZWRJbmplY3RhYmxlKTtcblxuICAgIHJldHVybiAoKSA9PlxuICAgICAgKDxUPihjb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PFQ+KSA9PlxuICAgICAgICBnZXRQcml2YXRlSXRlbUJlaW5nRm9jdXNlZChjb250ZXh0KSBhcyBJQ29tcHV0ZWRWYWx1ZTxUIHwgdW5kZWZpbmVkPikgYXMgSXRlbUJlaW5nRm9jdXNlZDtcbiAgfSxcblxuICBpbmplY3Rpb25Ub2tlbjogaXRlbUJlaW5nRm9jdXNlZEluamVjdGlvblRva2VuLFxufSk7XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgb2JzZXJ2YWJsZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgdHlwZSB7IEFueUZvY3VzYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5cbmV4cG9ydCBjb25zdCBmb2N1c2FibGVJdGVtU3RhdGVJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJmb2N1c2FibGUtaXRlbS1zdGF0ZVwiLFxuXG4gIGluc3RhbnRpYXRlOiAoKSA9PiAoX2NvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8YW55PikgPT4gb2JzZXJ2YWJsZS5ib3g8dW5rbm93bj4oKSxcbn0pO1xuIiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgZW5hYmxlZFN0eWxlcyBmcm9tIFwiLi9lbmFibGVkLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIEVuYWJsZWRQbHVnaW5Qcm9wcyA9IHtcbiAgLyoqXG4gICAqIFRoaXMgZmllbGQgaGFzIGhpZ2hlciBwcmlvcml0eSB0aGFuICRkaXNhYmxlZFxuICAgKi9cbiAgJGVuYWJsZWQ/OiBib29sZWFuO1xuICAkZGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBmaWVsZCBpcyBvdmVycmlkZGVuIHZpYSAkZGlzYWJsZWQgYW5kICRlbmFibGVkXG4gICAqL1xuICBkaXNhYmxlZD86IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBlbmFibGVkUGx1Z2luID0gZ2V0UGx1Z2luPEVuYWJsZWRQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgZGlzYWJsZWQgPSBpc0Rpc2FibGVkKHByb3BzKTtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtwcm9wcy4kY2xhc3NOYW1lLCBkaXNhYmxlZCA/IGVuYWJsZWRTdHlsZXMuZGlzYWJsZWQgOiB1bmRlZmluZWRdLFxuICAgIGRpc2FibGVkLFxuICAgICRlbmFibGVkOiB1bmRlZmluZWQsXG4gICAgJGRpc2FibGVkOiB1bmRlZmluZWQsXG4gIH07XG59KTtcblxuZXhwb3J0IGNvbnN0IGlzRGlzYWJsZWQgPSAocHJvcHM6IEVuYWJsZWRQbHVnaW5Qcm9wcykgPT4ge1xuICBjb25zdCB7ICRlbmFibGVkLCAkZGlzYWJsZWQgfSA9IHByb3BzO1xuXG4gIHJldHVybiB0eXBlb2YgJGVuYWJsZWQgPT09IFwiYm9vbGVhblwiID8gISRlbmFibGVkIDogKCRkaXNhYmxlZCA/PyBmYWxzZSk7XG59O1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2VuYWJsZWQvZW5hYmxlZC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImRpc2FibGVkXCI6IFwiZW5hYmxlZC1tb2R1bGVfX2Rpc2FibGVkX19fTEwzc3dcIlxufTsiLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZUlkLCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVN5bmNJbmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvdXNlLWluamVjdFwiO1xuaW1wb3J0IHsgdHlwZSBDb250ZXh0TWFwVmFsdWUsIGhvdmVySXRlbVN0YXRlRm9ySW5qZWN0YWJsZSB9IGZyb20gXCIuL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBhY3Rpb24sIG9ic2VydmFibGUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgaXNEZWZpbmVkLCBub29wLCB0eXBlIFNpbmdsZU9yTWFueSB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgdHlwZSB7IHJlZlBsdWdpbiB9IGZyb20gXCIuLi9yZWYvcmVmXCI7XG5pbXBvcnQgdHlwZSB7ICRIb3ZlcmFibGVQcm9wcyB9IGZyb20gXCIuL2hvdmVyYWJsZVwiO1xuXG5leHBvcnQgdHlwZSAkSG92ZXJhYmxlQnlEcmFnZ2luZ1Byb3BzPFQ+ID0gUGljazwkSG92ZXJhYmxlUHJvcHM8VD4sIFwiY29udGV4dFwiIHwgXCJpdGVtXCI+O1xuXG5leHBvcnQgdHlwZSBIb3ZlcmFibGVCeURyYWdnaW5nUGx1Z2luUHJvcHM8VCA9IGFueT4gPSB7XG4gICRob3ZlcmFibGVCeURyYWdnaW5nPzogU2luZ2xlT3JNYW55PCRIb3ZlcmFibGVCeURyYWdnaW5nUHJvcHM8VD4+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhvdmVyYWJsZUJ5RHJhZ2dpbmdQbHVnaW48VD4oKSB7XG4gIHJldHVybiBnZXRQbHVnaW48SG92ZXJhYmxlQnlEcmFnZ2luZ1BsdWdpblByb3BzLCBbUmV0dXJuVHlwZTx0eXBlb2YgcmVmUGx1Z2luPFQ+Pl0+KChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgJGhvdmVyYWJsZUJ5RHJhZ2dpbmcsICRyZWYgfSA9IHByb3BzO1xuXG4gICAgaWYgKCRob3ZlcmFibGVCeURyYWdnaW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgICRob3ZlcmFibGVCeURyYWdnaW5nOiB1bmRlZmluZWQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgICBjb25zdCBob3Zlckl0ZW1TdGF0ZUZvciA9IHVzZVN5bmNJbmplY3QoaG92ZXJJdGVtU3RhdGVGb3JJbmplY3RhYmxlKTtcbiAgICBjb25zdCBob3ZlcmFibGVQcm9wc1JlZiA9IHVzZVJlZihvYnNlcnZhYmxlLm1hcCh0b0NvbnRleHRNYXAoJGhvdmVyYWJsZUJ5RHJhZ2dpbmcpLCB7IGRlZXA6IGZhbHNlIH0pKTtcbiAgICBjb25zdCBjb250cm9sbGVyID0gdXNlUmVmKG5ldyBBYm9ydENvbnRyb2xsZXIoKSk7XG5cbiAgICB1c2VFZmZlY3QoXG4gICAgICBhY3Rpb24oKCkgPT4ge1xuICAgICAgICBob3ZlcmFibGVQcm9wc1JlZi5jdXJyZW50LnJlcGxhY2UodG9Db250ZXh0TWFwKCRob3ZlcmFibGVCeURyYWdnaW5nKSk7XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgY29uc3QgY2FsbGJhY2tSZWYgPSB1c2VNZW1vKFxuICAgICAgKCkgPT5cbiAgICAgICAgYWN0aW9uKChlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwpID0+IHtcbiAgICAgICAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuY3VycmVudC5hYm9ydCgpO1xuICAgICAgICAgICAgY29udHJvbGxlci5jdXJyZW50ID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgIFwiZHJhZ2VudGVyXCIsXG4gICAgICAgICAgICBhY3Rpb24oKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudFRhcmdldCwgcmVsYXRlZFRhcmdldCB9ID0gZXZlbnQ7XG4gICAgICAgICAgICAgIGNvbnN0IGhvdmVyZWRBdCA9IERhdGUubm93KCk7XG5cbiAgICAgICAgICAgICAgaWYgKCEoY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCkuY29udGFpbnMocmVsYXRlZFRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNvbnRleHQgb2YgaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudC5rZXlzKCkpIHtcbiAgICAgICAgICAgICAgICAgIGhvdmVySXRlbVN0YXRlRm9yKGNvbnRleHQpLnNldChpZCwge1xuICAgICAgICAgICAgICAgICAgICBob3ZlcmVkQXQ6IG9ic2VydmFibGUuYm94KGhvdmVyZWRBdCwgeyBkZWVwOiBmYWxzZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgZ2V0UHJvcHM6ICgpID0+IGhvdmVyYWJsZVByb3BzUmVmLmN1cnJlbnQuZ2V0KGNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLmN1cnJlbnQuc2lnbmFsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgIFwiZHJhZ2xlYXZlXCIsXG4gICAgICAgICAgICBhY3Rpb24oKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudFRhcmdldCwgcmVsYXRlZFRhcmdldCB9ID0gZXZlbnQ7XG4gICAgICAgICAgICAgIGNvbnN0IGhvdmVyZWRBdCA9IERhdGUubm93KCk7XG5cbiAgICAgICAgICAgICAgaWYgKCEoY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCkuY29udGFpbnMocmVsYXRlZFRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNvbnRleHQgb2YgaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudC5rZXlzKCkpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGhvdmVyZWRTdGF0ZSA9IGhvdmVySXRlbVN0YXRlRm9yKGNvbnRleHQpO1xuXG4gICAgICAgICAgICAgICAgICBob3ZlcmVkU3RhdGUuZGVsZXRlKGlkKTtcbiAgICAgICAgICAgICAgICAgIGhvdmVyZWRTdGF0ZS5mb3JFYWNoKChzdGF0ZSkgPT4gc3RhdGUuaG92ZXJlZEF0LnNldChob3ZlcmVkQXQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuY3VycmVudC5zaWduYWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgW2hvdmVySXRlbVN0YXRlRm9yLCBpZF0sXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAkcmVmOiBbJHJlZiwgY2FsbGJhY2tSZWZdLFxuICAgICAgJGhvdmVyYWJsZUJ5RHJhZ2dpbmc6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9KTtcbn1cblxuY29uc3QgdG9Db250ZXh0TWFwID0gKHByb3BzOiBTaW5nbGVPck1hbnk8JEhvdmVyYWJsZUJ5RHJhZ2dpbmdQcm9wczx1bmtub3duPj4gfCB1bmRlZmluZWQpID0+IHtcbiAgY29uc3QgaXRlbXMgPSBbcHJvcHNdLmZsYXQoKS5maWx0ZXIoaXNEZWZpbmVkKTtcbiAgY29uc3QgcmVzdWx0czogW29iamVjdCwgQ29udGV4dE1hcFZhbHVlXVtdID0gW107XG5cbiAgZm9yIChjb25zdCB7IGNvbnRleHQsIGl0ZW0gfSBvZiBpdGVtcykge1xuICAgIHJlc3VsdHMucHVzaChbY29udGV4dCwgeyBpdGVtLCBkZWxheTogMCwgb25Ib3Zlcjogbm9vcCwgb25VbmhvdmVyOiBub29wIH1dKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyB0eXBlIElPYnNlcnZhYmxlVmFsdWUsIG9ic2VydmFibGUgfSBmcm9tIFwibW9ieFwiO1xuXG5leHBvcnQgdHlwZSBDb250ZXh0TWFwVmFsdWUgPSB7XG4gIHJlYWRvbmx5IGl0ZW06IHVua25vd247XG4gIHJlYWRvbmx5IGRlbGF5OiBudW1iZXI7XG4gIG9uSG92ZXI6IFZvaWRGdW5jdGlvbjtcbiAgb25VbmhvdmVyOiBWb2lkRnVuY3Rpb247XG59O1xuXG5leHBvcnQgdHlwZSBIb3ZlcmVkSXRlbVN0YXRlID0ge1xuICByZWFkb25seSBob3ZlcmVkQXQ6IElPYnNlcnZhYmxlVmFsdWU8bnVtYmVyPjtcbiAgcmVhZG9ubHkgZ2V0UHJvcHM6ICgpID0+IENvbnRleHRNYXBWYWx1ZSB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBob3ZlcmVkSXRlbVN0YXRlSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwiaG92ZXJlZC1pdGVtLXN0YXRlXCIsXG5cbiAgaW5zdGFudGlhdGU6ICgpID0+IChfY29udGV4dDogb2JqZWN0KSA9PiBvYnNlcnZhYmxlLm1hcDxzdHJpbmcsIEhvdmVyZWRJdGVtU3RhdGU+KFtdLCB7IGRlZXA6IGZhbHNlIH0pLFxufSk7XG5cbmV4cG9ydCBjb25zdCBob3Zlckl0ZW1TdGF0ZUZvckluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcImhvdmVyLWl0ZW0tc3RhdGUtZm9yXCIsXG5cbiAgaW5zdGFudGlhdGU6IChkaSkgPT4ge1xuICAgIGNvbnN0IGdldEhvdmVyZWRJdGVtU3RhdGUgPSBkaS5pbmplY3QoaG92ZXJlZEl0ZW1TdGF0ZUluamVjdGFibGUpO1xuXG4gICAgcmV0dXJuICgpID0+IChjb250ZXh0OiBvYmplY3QpID0+IGdldEhvdmVyZWRJdGVtU3RhdGUoY29udGV4dCk7XG4gIH0sXG59KTtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4sIHR5cGUgQ29udHJpYnV0ZVByb3BzIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5cbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlSWQsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgeyB0eXBlIENvbnRleHRNYXBWYWx1ZSwgaG92ZXJJdGVtU3RhdGVGb3JJbmplY3RhYmxlIH0gZnJvbSBcIi4vaG92ZXJlZC1pdGVtLXN0YXRlLmluamVjdGFibGVcIjtcbmltcG9ydCB7IGFjdGlvbiwgYXV0b3J1biwgY29tcGFyZXIsIG9ic2VydmFibGUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gXCJsb2Rhc2gvZnBcIjtcbmltcG9ydCB7IGl0ZW1CZWluZ0hvdmVyZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL2l0ZW0tYmVpbmctaG92ZXJlZC5pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBpc0RlZmluZWQsIHR5cGUgU2luZ2xlT3JNYW55IH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcblxuZXhwb3J0IHR5cGUgSG92ZXJhYmxlQ29udGV4dE9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBJbiBtaWxsaXNlY29uZHNcbiAgICovXG4gIHJlYWRvbmx5IGRlbGF5PzogbnVtYmVyO1xuICByZWFkb25seSBvbkhvdmVyPzogVm9pZEZ1bmN0aW9uO1xuICByZWFkb25seSBvblVuaG92ZXI/OiBWb2lkRnVuY3Rpb247XG59O1xuXG5leHBvcnQgdHlwZSBIb3ZlcmFibGVDb250ZXh0PEhvdmVyZWRJdGVtPiA9IHtcbiAgcmVhZG9ubHkgaG92ZXJhYmxlOiAoaXRlbTogSG92ZXJlZEl0ZW0sIG9wdGlvbnM/OiBIb3ZlcmFibGVDb250ZXh0T3B0aW9ucykgPT4gJEhvdmVyYWJsZVByb3BzPEhvdmVyZWRJdGVtPjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgJEhvdmVyYWJsZVByb3BzPFRJdGVtID0gdW5rbm93bj4ge1xuICByZWFkb25seSBjb250ZXh0OiBvYmplY3Q7XG4gIHJlYWRvbmx5IGl0ZW06IFRJdGVtO1xuICByZWFkb25seSBvcHRpb25zOiBSZXF1aXJlZDxIb3ZlcmFibGVDb250ZXh0T3B0aW9ucz47XG59XG5cbmV4cG9ydCB0eXBlIEhvdmVyYWJsZVBsdWdpblByb3BzPFRFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQ+ID0ge1xuICByZWFkb25seSAkaG92ZXJhYmxlPzogU2luZ2xlT3JNYW55PCRIb3ZlcmFibGVQcm9wcz47XG4gIG9uTW91c2VFbnRlcj86IFJlYWN0LkhUTUxQcm9wczxURWxlbWVudD5bXCJvbk1vdXNlRW50ZXJcIl07XG4gIG9uTW91c2VMZWF2ZT86IFJlYWN0LkhUTUxQcm9wczxURWxlbWVudD5bXCJvbk1vdXNlTGVhdmVcIl07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SG92ZXJhYmxlQ29udGV4dCA9IDxIb3ZlcmVkSXRlbSw+KCk6IEhvdmVyYWJsZUNvbnRleHQ8SG92ZXJlZEl0ZW0+ID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHtcbiAgICBob3ZlcmFibGU6IChpdGVtOiBIb3ZlcmVkSXRlbSwgeyBkZWxheSA9IDAsIG9uSG92ZXIgPSBub29wLCBvblVuaG92ZXIgPSBub29wIH06IEhvdmVyYWJsZUNvbnRleHRPcHRpb25zID0ge30pID0+ICh7XG4gICAgICBjb250ZXh0LFxuICAgICAgaXRlbSxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgZGVsYXksXG4gICAgICAgIG9uSG92ZXIsXG4gICAgICAgIG9uVW5ob3ZlcixcbiAgICAgIH0sXG4gICAgfSksXG4gIH07XG5cbiAgcmV0dXJuIGNvbnRleHQ7XG59O1xuXG5leHBvcnQgdHlwZSBIb3ZlcmFibGVQbHVnaW48VCBleHRlbmRzIEhUTUxFbGVtZW50PiA9IFJldHVyblR5cGU8dHlwZW9mIGhvdmVyYWJsZVBsdWdpbjxUPj47XG5cbnR5cGUgSG92ZXJhYmxlV3JhcHBlclByb3BzID0ge1xuICByZWFkb25seSBob3ZlcmFibGU6IFNpbmdsZU9yTWFueTwkSG92ZXJhYmxlUHJvcHM+O1xuICByZWFkb25seSBvbk1vdXNlRW50ZXI/OiBSZWFjdC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MRWxlbWVudD47XG4gIHJlYWRvbmx5IG9uTW91c2VMZWF2ZT86IFJlYWN0Lk1vdXNlRXZlbnRIYW5kbGVyPEhUTUxFbGVtZW50PjtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVByb3BzOiBDb250cmlidXRlUHJvcHM7XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBIb3ZlcmFibGVXcmFwcGVyQ29tcG9uZW50ID0gKHtcbiAgaG92ZXJhYmxlLFxuICBvbk1vdXNlRW50ZXIsXG4gIG9uTW91c2VMZWF2ZSxcbiAgY29udHJpYnV0ZVByb3BzLFxuICBjaGlsZHJlbixcbn06IEhvdmVyYWJsZVdyYXBwZXJQcm9wcykgPT4ge1xuICBjb25zdCBob3Zlckl0ZW1TdGF0ZUZvciA9IHVzZVN5bmNJbmplY3QoaG92ZXJJdGVtU3RhdGVGb3JJbmplY3RhYmxlKTtcbiAgY29uc3QgaXRlbUJlaW5nSG92ZXJlZCA9IHVzZVN5bmNJbmplY3QoaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuKTtcbiAgY29uc3QgaWQgPSB1c2VJZCgpO1xuXG4gIGNvbnN0IGhvdmVyYWJsZVByb3BzUmVmID0gdXNlUmVmKFxuICAgIG9ic2VydmFibGUubWFwKHRvQ29udGV4dE1hcChob3ZlcmFibGUpLCB7IGRlZXA6IGZhbHNlLCBlcXVhbHM6IGNvbXBhcmVyLnN0cnVjdHVyYWwgfSksXG4gICk7XG5cbiAgdXNlRWZmZWN0KFxuICAgIGFjdGlvbigoKSA9PiB7XG4gICAgICBob3ZlcmFibGVQcm9wc1JlZi5jdXJyZW50LnJlcGxhY2UodG9Db250ZXh0TWFwKGhvdmVyYWJsZSkpO1xuICAgIH0pLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaXRlbUJ5Q29udGV4dCA9IG5ldyBNYXA8b2JqZWN0LCB1bmtub3duPigpO1xuXG4gICAgcmV0dXJuIGF1dG9ydW4oKCkgPT4ge1xuICAgICAgZm9yIChjb25zdCBbY29udGV4dCwgeyBpdGVtLCBvbkhvdmVyLCBvblVuaG92ZXIgfV0gb2YgaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudCkge1xuICAgICAgICBjb25zdCBob3ZlcmVkSXRlbSA9IGl0ZW1CZWluZ0hvdmVyZWQoY29udGV4dCBhcyBIb3ZlcmFibGVDb250ZXh0PHVua25vd24+KS5nZXQoKTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNJdGVtID0gaXRlbUJ5Q29udGV4dC5nZXQoY29udGV4dCk7XG5cbiAgICAgICAgaWYgKGhvdmVyZWRJdGVtID09PSBpdGVtKSB7XG4gICAgICAgICAgb25Ib3ZlcigpO1xuICAgICAgICB9IGVsc2UgaWYgKHByZXZpb3VzSXRlbSA9PT0gaXRlbSkge1xuICAgICAgICAgIG9uVW5ob3ZlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbUJ5Q29udGV4dC5zZXQoY29udGV4dCwgaG92ZXJlZEl0ZW0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbaXRlbUJlaW5nSG92ZXJlZF0pO1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgYWN0aW9uKCgpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBjb250ZXh0IG9mIGhvdmVyYWJsZVByb3BzUmVmLmN1cnJlbnQua2V5cygpKSB7XG4gICAgICAgICAgaG92ZXJJdGVtU3RhdGVGb3IoY29udGV4dCkuZGVsZXRlKGlkKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgW2hvdmVySXRlbVN0YXRlRm9yLCBpZF0sXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlTW91c2VFbnRlciA9IHVzZUNhbGxiYWNrKFxuICAgIGFjdGlvbigoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICBvbk1vdXNlRW50ZXI/LihldmVudCk7XG5cbiAgICAgIGNvbnN0IGhvdmVyZWRBdCA9IERhdGUubm93KCk7XG5cbiAgICAgIGZvciAoY29uc3QgY29udGV4dCBvZiBob3ZlcmFibGVQcm9wc1JlZi5jdXJyZW50LmtleXMoKSkge1xuICAgICAgICBob3Zlckl0ZW1TdGF0ZUZvcihjb250ZXh0KS5zZXQoaWQsIHtcbiAgICAgICAgICBob3ZlcmVkQXQ6IG9ic2VydmFibGUuYm94KGhvdmVyZWRBdCwgeyBkZWVwOiBmYWxzZSB9KSxcbiAgICAgICAgICBnZXRQcm9wczogKCkgPT4gaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudC5nZXQoY29udGV4dCksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pLFxuICAgIFtdLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZU1vdXNlTGVhdmUgPSB1c2VDYWxsYmFjayhcbiAgICBhY3Rpb24oKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgb25Nb3VzZUxlYXZlPy4oZXZlbnQpO1xuXG4gICAgICBjb25zdCBob3ZlcmVkQXQgPSBEYXRlLm5vdygpO1xuXG4gICAgICBmb3IgKGNvbnN0IGNvbnRleHQgb2YgaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudC5rZXlzKCkpIHtcbiAgICAgICAgY29uc3QgaG92ZXJlZFN0YXRlID0gaG92ZXJJdGVtU3RhdGVGb3IoY29udGV4dCk7XG5cbiAgICAgICAgaG92ZXJlZFN0YXRlLmRlbGV0ZShpZCk7XG4gICAgICAgIGhvdmVyZWRTdGF0ZS5mb3JFYWNoKChzdGF0ZSkgPT4gc3RhdGUuaG92ZXJlZEF0LnNldChob3ZlcmVkQXQpKTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBbXSxcbiAgKTtcblxuICBjb250cmlidXRlUHJvcHMoe1xuICAgIG9uTW91c2VFbnRlcjogaGFuZGxlTW91c2VFbnRlcixcbiAgICBvbk1vdXNlTGVhdmU6IGhhbmRsZU1vdXNlTGVhdmUsXG4gIH0pO1xuXG4gIHJldHVybiA8PntjaGlsZHJlbn08Lz47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaG92ZXJhYmxlUGx1Z2luPFRFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQ+KCkge1xuICByZXR1cm4gZ2V0UGx1Z2luPEhvdmVyYWJsZVBsdWdpblByb3BzPFRFbGVtZW50Pj4oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyAkaG92ZXJhYmxlLCBvbk1vdXNlRW50ZXIsIG9uTW91c2VMZWF2ZSB9ID0gcHJvcHM7XG5cbiAgICBpZiAoJGhvdmVyYWJsZSA9PT0gdW5kZWZpbmVkIHx8IChBcnJheS5pc0FycmF5KCRob3ZlcmFibGUpICYmICRob3ZlcmFibGUubGVuZ3RoID09PSAwKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJGhvdmVyYWJsZTogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgJGhvdmVyYWJsZTogdW5kZWZpbmVkLFxuICAgICAgJHdyYXBwZXI6IHtcbiAgICAgICAgQ29tcG9uZW50OiBIb3ZlcmFibGVXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgIGhvdmVyYWJsZTogJGhvdmVyYWJsZSxcbiAgICAgICAgICBvbk1vdXNlRW50ZXIsXG4gICAgICAgICAgb25Nb3VzZUxlYXZlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9KTtcbn1cblxuY29uc3QgdG9Db250ZXh0TWFwID0gKHByb3BzOiBTaW5nbGVPck1hbnk8JEhvdmVyYWJsZVByb3BzPHVua25vd24+PiB8IHVuZGVmaW5lZCkgPT4ge1xuICBjb25zdCBpdGVtcyA9IFtwcm9wc10uZmxhdCgpLmZpbHRlcihpc0RlZmluZWQpO1xuICBjb25zdCByZXN1bHRzOiBbb2JqZWN0LCBDb250ZXh0TWFwVmFsdWVdW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHsgY29udGV4dCwgaXRlbSwgb3B0aW9ucyB9IG9mIGl0ZW1zKSB7XG4gICAgcmVzdWx0cy5wdXNoKFtjb250ZXh0LCB7IGl0ZW0sIC4uLm9wdGlvbnMgfV0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyLCBnZXRJbmplY3Rpb25Ub2tlbjIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBJQ29tcHV0ZWRWYWx1ZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyBob3ZlcmVkSXRlbVN0YXRlSW5qZWN0YWJsZSB9IGZyb20gXCIuL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IEhvdmVyYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9ob3ZlcmFibGVcIjtcbmltcG9ydCB7IGNvbXB1dGVkTm93SW5qZWN0YWJsZSB9IGZyb20gXCIuL2NvbXB1dGVkLW5vdy5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIEl0ZW1CZWluZ0hvdmVyZWQgPSA8VD4oaG92ZXJhYmxlQ29udGV4dDogSG92ZXJhYmxlQ29udGV4dDxUPikgPT4gSUNvbXB1dGVkVmFsdWU8VCB8IHVuZGVmaW5lZD47XG5cbmV4cG9ydCBjb25zdCBpdGVtQmVpbmdIb3ZlcmVkSW5qZWN0aW9uVG9rZW4gPSBnZXRJbmplY3Rpb25Ub2tlbjI8eyBzaW5nbGVGYWN0b3J5OiAoKSA9PiBJdGVtQmVpbmdIb3ZlcmVkIH0+KHtcbiAgaWQ6IFwiaXRlbS1iZWluZy1ob3ZlcmVkXCIsXG4gIGNhcmRpbmFsaXR5OiBcIm9uZVwiLFxufSkoKTtcblxuZXhwb3J0IGNvbnN0IHByaXZhdGVJdGVtQmVpbmdIb3ZlcmVkSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwicHJpdmF0ZS1pdGVtLWJlaW5nLWhvdmVyZWRcIixcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgZ2V0SG92ZXJlZEl0ZW1TdGF0ZSA9IGRpLmluamVjdChob3ZlcmVkSXRlbVN0YXRlSW5qZWN0YWJsZSk7XG4gICAgY29uc3QgZ2V0Q29tcHV0ZWROb3cgPSBkaS5pbmplY3QoY29tcHV0ZWROb3dJbmplY3RhYmxlKTtcblxuICAgIHJldHVybiAoY29udGV4dDogb2JqZWN0KSA9PiB7XG4gICAgICBjb25zdCBob3ZlcmVkSXRlbVN0YXRlID0gZ2V0SG92ZXJlZEl0ZW1TdGF0ZShjb250ZXh0KTtcbiAgICAgIGNvbnN0IGNvbXB1dGVkTm93ID0gZ2V0Q29tcHV0ZWROb3coMSk7XG5cbiAgICAgIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvcEl0ZW0gPSBbLi4uaG92ZXJlZEl0ZW1TdGF0ZS52YWx1ZXMoKV0uYXQoLTEpO1xuICAgICAgICBjb25zdCBwcm9wcyA9IHRvcEl0ZW0/LmdldFByb3BzKCk7XG5cbiAgICAgICAgaWYgKCF0b3BJdGVtIHx8ICFwcm9wcykge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB3aGVuQ29uc2lkZXJlZEhvdmVyZWQgPSB0b3BJdGVtLmhvdmVyZWRBdC5nZXQoKSArIHByb3BzLmRlbGF5O1xuICAgICAgICBjb25zdCBub3cgPSBjb21wdXRlZE5vdy5nZXQoKTtcblxuICAgICAgICByZXR1cm4gbm93ID49IHdoZW5Db25zaWRlcmVkSG92ZXJlZCA/IHByb3BzLml0ZW0gOiB1bmRlZmluZWQ7XG4gICAgICB9KTtcbiAgICB9O1xuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBpdGVtQmVpbmdIb3ZlcmVkSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwiaXRlbS1iZWluZy1ob3ZlcmVkXCIsXG5cbiAgaW5zdGFudGlhdGU6IChkaSkgPT4ge1xuICAgIGNvbnN0IGdldFByaXZhdGVJdGVtQmVpbmdIb3ZlcmVkID0gZGkuaW5qZWN0KHByaXZhdGVJdGVtQmVpbmdIb3ZlcmVkSW5qZWN0YWJsZSk7XG5cbiAgICByZXR1cm4gKCkgPT5cbiAgICAgICg8VD4oY29udGV4dDogSG92ZXJhYmxlQ29udGV4dDxUPikgPT5cbiAgICAgICAgZ2V0UHJpdmF0ZUl0ZW1CZWluZ0hvdmVyZWQoY29udGV4dCkgYXMgSUNvbXB1dGVkVmFsdWU8VD4pIGFzIEl0ZW1CZWluZ0hvdmVyZWQ7XG4gIH0sXG5cbiAgaW5qZWN0aW9uVG9rZW46IGl0ZW1CZWluZ0hvdmVyZWRJbmplY3Rpb25Ub2tlbixcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB7IGNvbXB1dGVkLCBvYnNlcnZhYmxlLCBvbkJlY29tZU9ic2VydmVkLCBvbkJlY29tZVVub2JzZXJ2ZWQsIHJ1bkluQWN0aW9uIH0gZnJvbSBcIm1vYnhcIjtcblxuLyoqXG4gKiBBIGNsb2NrIHRoYXQgYWR2YW5jZXMgb25seSB3aGlsZSBzb21ldGhpbmcgb2JzZXJ2ZXMgaXQsIHNvIGEgaG92ZXIgZGVsYXlcbiAqIGtlZXBzIGJlaW5nIHJlLWV2YWx1YXRlZCB1bnRpbCBpdCBoYXMgZWxhcHNlZCBhbmQgY29zdHMgbm90aGluZyBvbmNlIG5vYm9keVxuICogaXMgd2F0Y2hpbmcuXG4gKlxuICogTG9jYWwgcmF0aGVyIHRoYW4gdGFrZW4gZnJvbSB0aGUgc2hhcmVkIGludGVydmFsIGZlYXR1cmU6IGEgZGVzaWduIHN5c3RlbVxuICogY2Fubm90IGRlcGVuZCBvbiBhIGZlYXR1cmUgcGFja2FnZSwgYW5kIHRoZSBob3ZlcmFibGUgcGx1Z2luIGlzIHRoZSBvbmx5XG4gKiB0aGluZyBoZXJlIHRoYXQgbmVlZHMgYSBjbG9jay4gVGhlIGludGVydmFsIGlzIHRoZSBpbnN0YW50aWF0aW9uIHBhcmFtZXRlcixcbiAqIHNvIHYyIGtleXMgb25lIGNsb2NrIHBlciBpbnRlcnZhbC5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXB1dGVkTm93SW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwiY29tcHV0ZWQtbm93XCIsXG5cbiAgaW5zdGFudGlhdGU6ICgpID0+IChpbnRlcnZhbE1zOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBub3cgPSBvYnNlcnZhYmxlLmJveChEYXRlLm5vdygpKTtcblxuICAgIGxldCBoYW5kbGU6IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPiB8IHVuZGVmaW5lZDtcblxuICAgIG9uQmVjb21lT2JzZXJ2ZWQobm93LCAoKSA9PiB7XG4gICAgICBydW5JbkFjdGlvbigoKSA9PiBub3cuc2V0KERhdGUubm93KCkpKTtcblxuICAgICAgaGFuZGxlID0gc2V0SW50ZXJ2YWwoKCkgPT4gcnVuSW5BY3Rpb24oKCkgPT4gbm93LnNldChEYXRlLm5vdygpKSksIGludGVydmFsTXMpO1xuICAgIH0pO1xuXG4gICAgb25CZWNvbWVVbm9ic2VydmVkKG5vdywgKCkgPT4ge1xuICAgICAgaWYgKGhhbmRsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwoaGFuZGxlKTtcbiAgICAgIH1cblxuICAgICAgaGFuZGxlID0gdW5kZWZpbmVkO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvbXB1dGVkKCgpID0+IG5vdy5nZXQoKSk7XG4gIH0sXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiwgZ2V0SW5qZWN0aW9uVG9rZW4yIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgSUNvbXB1dGVkVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHR5cGUgeyBEcmFnZ2FibGVDb250ZXh0IH0gZnJvbSBcIi4vZ2V0LWRyYWdnYWJsZS1jb250ZXh0XCI7XG5pbXBvcnQgeyBkcmFnZ2VkSXRlbVN0YXRlSW5qZWN0YWJsZSB9IGZyb20gXCIuL19zaGFyZWQvZHJhZ2dlZC1pdGVtLXN0YXRlLmluamVjdGFibGVcIjtcblxuZXhwb3J0IHR5cGUgSXRlbUJlaW5nRHJhZ2dlZCA9IDxUPihkcmFnZ2FibGVDb250ZXh0OiBEcmFnZ2FibGVDb250ZXh0PFQ+KSA9PiBJQ29tcHV0ZWRWYWx1ZTxUIHwgdW5kZWZpbmVkPjtcblxuZXhwb3J0IGNvbnN0IGl0ZW1CZWluZ0RyYWdnZWRJbmplY3Rpb25Ub2tlbiA9IGdldEluamVjdGlvblRva2VuMjx7IHNpbmdsZUZhY3Rvcnk6ICgpID0+IEl0ZW1CZWluZ0RyYWdnZWQgfT4oe1xuICBpZDogXCJpdGVtLWJlaW5nLWRyYWdnZWRcIixcbiAgY2FyZGluYWxpdHk6IFwib25lXCIsXG59KSgpO1xuXG5leHBvcnQgY29uc3QgcHJpdmF0ZUl0ZW1CZWluZ0RyYWdnZWRJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJwcml2YXRlLWl0ZW0tYmVpbmctZHJhZ2dlZFwiLFxuXG4gIGluc3RhbnRpYXRlOiAoZGkpID0+IHtcbiAgICBjb25zdCBnZXREcmFnZ2VkSXRlbVN0YXRlID0gZGkuaW5qZWN0KGRyYWdnZWRJdGVtU3RhdGVJbmplY3RhYmxlKTtcblxuICAgIHJldHVybiAoY29udGV4dDogRHJhZ2dhYmxlQ29udGV4dDxhbnk+KSA9PiBjb21wdXRlZCgoKSA9PiBnZXREcmFnZ2VkSXRlbVN0YXRlKGNvbnRleHQpLmdldCgpKTtcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgaXRlbUJlaW5nRHJhZ2dlZEluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcIml0ZW0tYmVpbmctZHJhZ2dlZFwiLFxuXG4gIGluc3RhbnRpYXRlOiAoZGkpID0+IHtcbiAgICBjb25zdCBnZXRQcml2YXRlSXRlbUJlaW5nRHJhZ2dlZCA9IGRpLmluamVjdChwcml2YXRlSXRlbUJlaW5nRHJhZ2dlZEluamVjdGFibGUpO1xuXG4gICAgcmV0dXJuICgpID0+XG4gICAgICAoPFQ+KGNvbnRleHQ6IERyYWdnYWJsZUNvbnRleHQ8VD4pID0+XG4gICAgICAgIGdldFByaXZhdGVJdGVtQmVpbmdEcmFnZ2VkKGNvbnRleHQpIGFzIElDb21wdXRlZFZhbHVlPFQ+KSBhcyBJdGVtQmVpbmdEcmFnZ2VkO1xuICB9LFxuXG4gIGluamVjdGlvblRva2VuOiBpdGVtQmVpbmdEcmFnZ2VkSW5qZWN0aW9uVG9rZW4sXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBvYnNlcnZhYmxlIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB0eXBlIHsgRHJhZ2dhYmxlQ29udGV4dCB9IGZyb20gXCIuLi9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuLy8gVGhlIGNvbnRleHQgaXMgdGhlIGluc3RhbnRpYXRpb24gcGFyYW1ldGVyLCBzbyB2MiBrZXlzIG9uZSBzdGF0ZSBib3ggcGVyXG4vLyBjb250ZXh0IGlkZW50aXR5IFx1MjAxNCB3aGF0IHRoZSBrZXllZFNpbmdsZXRvbiB1c2VkIHRvIHNwZWxsIG91dC5cbmV4cG9ydCBjb25zdCBkcmFnZ2VkSXRlbVN0YXRlSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwiZHJhZ2dlZC1pdGVtLXN0YXRlXCIsXG5cbiAgaW5zdGFudGlhdGU6ICgpID0+IChfY29udGV4dDogRHJhZ2dhYmxlQ29udGV4dDxhbnk+KSA9PiBvYnNlcnZhYmxlLmJveCh1bmRlZmluZWQsIHsgZGVlcDogZmFsc2UgfSksXG59KTtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4sIHR5cGUgQ29udHJpYnV0ZVByb3BzLCB0eXBlIENvbnRyaWJ1dGVSZWYgfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgSG92ZXJhYmxlUGx1Z2luIH0gZnJvbSBcIi4uL2hvdmVyYWJsZS9ob3ZlcmFibGVcIjtcbmltcG9ydCB7IGdldEhvdmVyYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vaG92ZXJhYmxlL2hvdmVyYWJsZVwiO1xuaW1wb3J0IHsgaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuIH0gZnJvbSBcIi4uL2hvdmVyYWJsZS9pdGVtLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgaG92ZXJJdGVtU3RhdGVGb3JJbmplY3RhYmxlIH0gZnJvbSBcIi4uL2hvdmVyYWJsZS9ob3ZlcmVkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlSWQsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHRvb2x0aXBEZWxheUluamVjdGFibGUgfSBmcm9tIFwiLi90b29sdGlwLWRlbGF5L3Rvb2x0aXAtZGVsYXkuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi90b29sdGlwLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IFBsYWNlbWVudCB9IGZyb20gXCJAZmxvYXRpbmctdWkvcmVhY3QtZG9tXCI7XG5pbXBvcnQgeyBhdXRvVXBkYXRlLCBmbGlwLCBvZmZzZXQsIHNoaWZ0LCB1c2VGbG9hdGluZyB9IGZyb20gXCJAZmxvYXRpbmctdWkvcmVhY3QtZG9tXCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgdHlwZSB7IFJlZlBsdWdpbiB9IGZyb20gXCIuLi9yZWYvcmVmXCI7XG5pbXBvcnQgeyBub29wLCB0eXBlIE1heWJlQXN5bmNWb2lkRnVuY3Rpb24gfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHsgTWluaW1hbERpdiwgdHlwZSBNaW5pbWFsRGl2UHJvcHMgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHMvbWluaW1hbC1kaXZcIjtcbmltcG9ydCB7IGFjdGlvbiwgYXV0b3J1biwgb2JzZXJ2YWJsZSB9IGZyb20gXCJtb2J4XCI7XG5cbnR5cGUgVG9vbHRpcENvbnRlbnRQcm9wczxQcm9wcyBleHRlbmRzIG9iamVjdD4gPVxuICB8IHtcbiAgICAgIC8qKiBQbGFpbi10ZXh0IGNvbnRlbnQgb2YgdGhlIHRvb2x0aXAuIE11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIGBDb250ZW50YC4gKi9cbiAgICAgIHJlYWRvbmx5IGNvbnRlbnRUZXh0OiBzdHJpbmc7XG4gICAgICByZWFkb25seSBDb250ZW50PzogdW5kZWZpbmVkO1xuICAgICAgcmVhZG9ubHkgY29udGVudFByb3BzPzogdW5kZWZpbmVkO1xuICAgIH1cbiAgfCB7XG4gICAgICByZWFkb25seSBjb250ZW50VGV4dD86IHVuZGVmaW5lZDtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGNvbXBvbmVudCByZW5kZXJlZCBhcyB0aGUgY29udGVudCBvZiB0aGUgdG9vbHRpcC4gTXVzdCBoYXZlIGEgc3RhYmxlXG4gICAgICAgKiBpZGVudGl0eSAobW9kdWxlIHNjb3BlKSBcdTIwMTQgZGF0YSBmbG93cyBpbiB0aHJvdWdoIGBjb250ZW50UHJvcHNgLCBuZXZlclxuICAgICAgICogdGhyb3VnaCBjbG9zdXJlIGNhcHR1cmUuXG4gICAgICAgKi9cbiAgICAgIHJlYWRvbmx5IENvbnRlbnQ6IFJlYWN0LkNvbXBvbmVudFR5cGU8UHJvcHM+O1xuICAgICAgLyoqIFRoZSBwcm9wcyB0aGUgdG9vbHRpcCBwYXNzZXMgdG8gYENvbnRlbnRgIHdoZW4gcmVuZGVyaW5nIGl0LiAqL1xuICAgICAgcmVhZG9ubHkgY29udGVudFByb3BzPzogUHJvcHM7XG4gICAgfTtcblxuZXhwb3J0IHR5cGUgJFRvb2x0aXBQcm9wczxQcm9wcyBleHRlbmRzIG9iamVjdCA9IFJlY29yZDxuZXZlciwgbmV2ZXI+PiA9IHtcbiAgcmVhZG9ubHkgcG9zaXRpb24/OiBQbGFjZW1lbnQ7XG4gIHJlYWRvbmx5IG9uVG9vbHRpcFNob3duPzogTWF5YmVBc3luY1ZvaWRGdW5jdGlvbjtcbn0gJiBUb29sdGlwQ29udGVudFByb3BzPFByb3BzPjtcblxuLyoqXG4gKiBUeXBlLWNoZWNrcyB0aGUgcGFpcmluZyBvZiBgQ29udGVudGAgYW5kIGBjb250ZW50UHJvcHNgIG9mIGFuIG9iamVjdC1mb3JtXG4gKiBgJHRvb2x0aXBgOiBgY29udGVudFByb3BzYCBpcyByZXF1aXJlZCB0byBiZSB0aGUgcHJvcHMgb2YgYENvbnRlbnRgLCBhbmQgaXRcbiAqIGlzIHJlcXVpcmVkIHRvIGJlIHByZXNlbnQgd2hlbiBgQ29udGVudGAgaGFzIHJlcXVpcmVkIHByb3BzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9vbHRpcFByb3BzKHRvb2x0aXBQcm9wczogJFRvb2x0aXBQcm9wcyk6ICRUb29sdGlwUHJvcHM8YW55PjtcbmV4cG9ydCBmdW5jdGlvbiBnZXRUb29sdGlwUHJvcHM8UHJvcHMgZXh0ZW5kcyBvYmplY3Q+KFxuICB0b29sdGlwUHJvcHM6ICRUb29sdGlwUHJvcHM8UHJvcHM+ICYgeyByZWFkb25seSBjb250ZW50UHJvcHM6IFByb3BzIH0sXG4pOiAkVG9vbHRpcFByb3BzPGFueT47XG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9vbHRpcFByb3BzKHRvb2x0aXBQcm9wczogJFRvb2x0aXBQcm9wczxhbnk+KTogJFRvb2x0aXBQcm9wczxhbnk+IHtcbiAgcmV0dXJuIHRvb2x0aXBQcm9wcztcbn1cblxuZXhwb3J0IHR5cGUgVG9vbHRpcFBsdWdpblByb3BzID0ge1xuICAvKiogTnVsbGlzaCBtZWFucyBubyB0b29sdGlwLCBzbyBjb25kaXRpb25hbCBzb3VyY2VzIChgc3RyaW5nIHwgbnVsbGApIHBhc3MgdGhyb3VnaCBhcy1pcy4gKi9cbiAgJHRvb2x0aXA/OiBzdHJpbmcgfCAkVG9vbHRpcFByb3BzPGFueT4gfCBudWxsO1xufTtcblxuLyoqXG4gKiBBIHRvb2x0aXAgb2Ygbm90aGluZzogdGhlIGVsZW1lbnQgdGFrZXMgdGhlIGhvdmVyLCBzbyBubyBlbmNsb3NpbmcgZWxlbWVudCBzaG93cyBpdHMgdG9vbHRpcFxuICogd2hpbGUgdGhlIHBvaW50ZXIgaXMgb3ZlciB0aGlzIG9uZSwgYW5kIHNob3dzIG5vdGhpbmcgb2YgaXRzIG93bi4gTnVsbGlzaCBgJHRvb2x0aXBgIGxlYXZlcyB0aGVcbiAqIGVuY2xvc2luZyB0b29sdGlwIGFsb25lIGluc3RlYWQgXHUyMDE0IHVzZSB0aGlzIHdoZXJlIGFuIGVsZW1lbnQgbXVzdCBub3QgYmUgZGVzY3JpYmVkIGJ5IHdoYXRldmVyXG4gKiBlbmNsb3NlcyBpdCwgYSBwYW5lbCBvcGVuZWQgZnJvbSBhIHJvdyB3aXRoIGEgdG9vbHRpcCBiZWluZyB0aGUgY2FzZSB0aGF0IG5lZWRzIGl0OiBhIHRvb2x0aXBcbiAqIGdvZXMgaW50byB0aGUgdG9wIGxheWVyLCBzbyBpdCB3b3VsZCBwYWludCBvdmVyIHdoYXQgdGhlIHBhbmVsIGlzIHRoZXJlIGZvci5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiA8TGkgJHRvb2x0aXA9e3N1cHByZXNzVG9vbHRpcH0+XG4gKiAgIDxTZXR0aW5ncyAvPlxuICogPC9MaT5cbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3Qgc3VwcHJlc3NUb29sdGlwOiAkVG9vbHRpcFByb3BzID0geyBjb250ZW50VGV4dDogXCJcIiB9O1xuXG5jb25zdCBob3ZlcmFibGVUb29sdGlwQ29udGV4dCA9IGdldEhvdmVyYWJsZUNvbnRleHQ8SFRNTEVsZW1lbnQgfCBudWxsPigpO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkVG9vbHRpcENvbnRhaW5lciA9IChwcm9wczogTWluaW1hbERpdlByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGNsYXNzTmFtZSwgLi4ucmVzdCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8TWluaW1hbERpdlxuICAgICAgJHBhZGRpbmdcbiAgICAgICRiYWNrZ3JvdW5kQ29sb3I9XCJiYWNrZ3JvdW5kU2Vjb25kYXJ5XCJcbiAgICAgICRib3JkZXI9e3sgcmFkaXVzOiB0cnVlIH19XG4gICAgICAkZm9udD17eyBzaXplOiBcInNcIiB9fVxuICAgICAgJGJveFNoYWRvd1xuICAgICAgJG5vUG9pbnRlckV2ZW50c1xuICAgICAgJGFic29sdXRlXG4gICAgICAkY2xhc3NOYW1lPXtbc3R5bGVzLnRvb2x0aXAsICRjbGFzc05hbWVdfVxuICAgICAgZGF0YS10b29sdGlwLWNvbnRhaW5lci10ZXN0XG4gICAgICB7Li4ucmVzdH1cbiAgICAvPlxuICApO1xufTtcblxudHlwZSBGbG9hdGluZ1N0eWxlZFRvb2x0aXBDb250YWluZXJQcm9wcyA9IHtcbiAgY29udGVudDogUmVhY3QuUmVhY3ROb2RlO1xuICBwb3NpdGlvbjogUGxhY2VtZW50O1xuICByZWZlcmVuY2U6IEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgb25Ub29sdGlwU2hvd246IFZvaWRGdW5jdGlvbjtcbn07XG5cbnR5cGUgUG9wb3ZlckNhcGFibGUgPSBIVE1MRWxlbWVudCAmIHsgc2hvd1BvcG92ZXI6IFZvaWRGdW5jdGlvbjsgaGlkZVBvcG92ZXI6IFZvaWRGdW5jdGlvbiB9O1xuXG5jb25zdCBpc1BvcG92ZXJDYXBhYmxlID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogZWxlbWVudCBpcyBQb3BvdmVyQ2FwYWJsZSA9PlxuICB0eXBlb2YgKGVsZW1lbnQgYXMgUGFydGlhbDxQb3BvdmVyQ2FwYWJsZT4pLnNob3dQb3BvdmVyID09PSBcImZ1bmN0aW9uXCI7XG5cbmNvbnN0IEZsb2F0aW5nU3R5bGVkVG9vbHRpcENvbnRhaW5lciA9IChwcm9wczogRmxvYXRpbmdTdHlsZWRUb29sdGlwQ29udGFpbmVyUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjb250ZW50LCBwb3NpdGlvbiwgcmVmZXJlbmNlLCBvblRvb2x0aXBTaG93biB9ID0gcHJvcHM7XG4gIGNvbnN0IFtmbG9hdGluZywgc2V0RmxvYXRpbmddID0gdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgeyBmbG9hdGluZ1N0eWxlcyB9ID0gdXNlRmxvYXRpbmcoe1xuICAgIHBsYWNlbWVudDogcG9zaXRpb24sXG4gICAgbWlkZGxld2FyZTogW2ZsaXAoKSwgb2Zmc2V0KDgpLCBzaGlmdCgpXSxcbiAgICB3aGlsZUVsZW1lbnRzTW91bnRlZDogYXV0b1VwZGF0ZSxcbiAgICBlbGVtZW50czoge1xuICAgICAgZmxvYXRpbmcsXG4gICAgICByZWZlcmVuY2UsXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29ycmVjdG5lc3MvdXNlRXhoYXVzdGl2ZURlcGVuZGVuY2llczogd2UgZG9uJ3Qgd2FudCB0byBjYWxsIG9uVG9vbHRpcFNob3duIGV2ZXJ5IHRpbWUgaXQgdXBkYXRlcyB3aGlsZSB0aGUgdG9vbHRpcCBpcyBiZWluZyBzaG93XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdm9pZCBvblRvb2x0aXBTaG93bigpO1xuICB9LCBbXSk7XG5cbiAgLy8gSW50byB0aGUgdG9wIGxheWVyLCB3aGVyZSBhIGRyb3AtZG93biBtZW51IGFscmVhZHkgcHV0cyBpdHNlbGY6IG5vIHotaW5kZXggY2FuXG4gIC8vIHBhaW50IG92ZXIgYSBwb3BvdmVyLCBzbyBhIHRvb2x0aXAgYW55d2hlcmUgbmVhciBhbiBvcGVuIG1lbnUgd291bGQgYmUgaGlkZGVuXG4gIC8vIGJlaGluZCBpdC4gU2hvd24gYWZ0ZXIgdGhlIG1lbnUgb3BlbmVkLCBzbyBpdCBsYW5kcyBhYm92ZSBpdC5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWZsb2F0aW5nIHx8ICFpc1BvcG92ZXJDYXBhYmxlKGZsb2F0aW5nKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZsb2F0aW5nLnNob3dQb3BvdmVyKCk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGZsb2F0aW5nLmlzQ29ubmVjdGVkKSB7XG4gICAgICAgIGZsb2F0aW5nLmhpZGVQb3BvdmVyKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW2Zsb2F0aW5nXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkVG9vbHRpcENvbnRhaW5lciAkcmVmPXtzZXRGbG9hdGluZ30gcG9wb3Zlcj1cIm1hbnVhbFwiIHN0eWxlPXtmbG9hdGluZ1N0eWxlc30+XG4gICAgICB7Y29udGVudH1cbiAgICA8L1N0eWxlZFRvb2x0aXBDb250YWluZXI+XG4gICk7XG59O1xuXG5leHBvcnQgdHlwZSBUb29sdGlwUGx1Z2luPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4gPSBSZXR1cm5UeXBlPHR5cGVvZiB0b29sdGlwUGx1Z2luPFQ+PjtcblxudHlwZSBOb3JtYWxpemVkVG9vbHRpcFByb3BzID0ge1xuICByZWFkb25seSBjb250ZW50VGV4dD86IHN0cmluZztcbiAgcmVhZG9ubHkgQ29udGVudD86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PjtcbiAgcmVhZG9ubHkgY29udGVudFByb3BzPzogYW55O1xuICByZWFkb25seSBwb3NpdGlvbjogUGxhY2VtZW50O1xuICByZWFkb25seSBvblRvb2x0aXBTaG93bjogTWF5YmVBc3luY1ZvaWRGdW5jdGlvbjtcbn07XG5cbnR5cGUgVG9vbHRpcFdyYXBwZXJQcm9wcyA9IHtcbiAgcmVhZG9ubHkgdG9vbHRpcDogTm9ybWFsaXplZFRvb2x0aXBQcm9wcztcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVJlZjogQ29udHJpYnV0ZVJlZjtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVByb3BzOiBDb250cmlidXRlUHJvcHM7XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBUb29sdGlwV3JhcHBlckNvbXBvbmVudCA9ICh7IHRvb2x0aXAsIGNvbnRyaWJ1dGVSZWYsIGNvbnRyaWJ1dGVQcm9wcywgY2hpbGRyZW4gfTogVG9vbHRpcFdyYXBwZXJQcm9wcykgPT4ge1xuICBjb25zdCBbcmVmZXJlbmNlLCBzZXRSZWZlcmVuY2VdID0gdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29udHJpYnV0ZVJlZihzZXRSZWZlcmVuY2UpO1xuXG4gIGNvbnN0IHRvb2x0aXBEZWxheSA9IHVzZVN5bmNJbmplY3QodG9vbHRpcERlbGF5SW5qZWN0YWJsZSk7XG4gIGNvbnN0IGhvdmVySXRlbVN0YXRlRm9yID0gdXNlU3luY0luamVjdChob3Zlckl0ZW1TdGF0ZUZvckluamVjdGFibGUpO1xuICBjb25zdCBob3ZlcmVkSXRlbSA9IHVzZVN5bmNJbmplY3QoaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuKShob3ZlcmFibGVUb29sdGlwQ29udGV4dCk7XG4gIGNvbnN0IGlkID0gdXNlSWQoKTtcblxuICBjb25zdCByZWZlcmVuY2VSZWYgPSB1c2VSZWYocmVmZXJlbmNlKTtcbiAgcmVmZXJlbmNlUmVmLmN1cnJlbnQgPSByZWZlcmVuY2U7XG5cbiAgY29uc3QgdG9vbHRpcERlbGF5UmVmID0gdXNlUmVmKHRvb2x0aXBEZWxheSk7XG4gIHRvb2x0aXBEZWxheVJlZi5jdXJyZW50ID0gdG9vbHRpcERlbGF5O1xuXG4gIGNvbnRyaWJ1dGVQcm9wcyh7XG4gICAgb25Nb3VzZUVudGVyOiBhY3Rpb24oKCkgPT4ge1xuICAgICAgY29uc3QgaG92ZXJlZEF0ID0gRGF0ZS5ub3coKTtcblxuICAgICAgaG92ZXJJdGVtU3RhdGVGb3IoaG92ZXJhYmxlVG9vbHRpcENvbnRleHQpLnNldChpZCwge1xuICAgICAgICBob3ZlcmVkQXQ6IG9ic2VydmFibGUuYm94KGhvdmVyZWRBdCwgeyBkZWVwOiBmYWxzZSB9KSxcbiAgICAgICAgZ2V0UHJvcHM6ICgpID0+ICh7XG4gICAgICAgICAgaXRlbTogcmVmZXJlbmNlUmVmLmN1cnJlbnQsXG4gICAgICAgICAgZGVsYXk6IHRvb2x0aXBEZWxheVJlZi5jdXJyZW50ID8/IDAsXG4gICAgICAgICAgb25Ib3Zlcjogbm9vcCxcbiAgICAgICAgICBvblVuaG92ZXI6IG5vb3AsXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgfSksXG5cbiAgICBvbk1vdXNlTGVhdmU6IGFjdGlvbigoKSA9PiB7XG4gICAgICBjb25zdCBob3ZlcmVkU3RhdGUgPSBob3Zlckl0ZW1TdGF0ZUZvcihob3ZlcmFibGVUb29sdGlwQ29udGV4dCk7XG4gICAgICBjb25zdCBob3ZlcmVkQXQgPSBEYXRlLm5vdygpO1xuXG4gICAgICBob3ZlcmVkU3RhdGUuZGVsZXRlKGlkKTtcbiAgICAgIGhvdmVyZWRTdGF0ZS5mb3JFYWNoKChzdGF0ZSkgPT4gc3RhdGUuaG92ZXJlZEF0LnNldChob3ZlcmVkQXQpKTtcbiAgICB9KSxcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICBhY3Rpb24oKCkgPT4ge1xuICAgICAgICBob3Zlckl0ZW1TdGF0ZUZvcihob3ZlcmFibGVUb29sdGlwQ29udGV4dCkuZGVsZXRlKGlkKTtcbiAgICAgIH0pLFxuICAgIFtob3Zlckl0ZW1TdGF0ZUZvciwgaWRdLFxuICApO1xuXG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBhdXRvcnVuKCgpID0+IHtcbiAgICAgIGNvbnN0IGlzSG92ZXJlZCA9IGhvdmVyZWRJdGVtLmdldCgpID09PSByZWZlcmVuY2VSZWYuY3VycmVudDtcbiAgICAgIHNldEhvdmVyZWQoaXNIb3ZlcmVkKTtcbiAgICB9KTtcbiAgfSwgW2hvdmVyZWRJdGVtXSk7XG5cbiAgY29uc3QgeyBjb250ZW50VGV4dCwgQ29udGVudCwgY29udGVudFByb3BzLCBwb3NpdGlvbiwgb25Ub29sdGlwU2hvd24gfSA9IHRvb2x0aXA7XG4gIGNvbnN0IGNvbnRlbnQgPSBob3ZlcmVkID8gQ29udGVudCA9PT0gdW5kZWZpbmVkID8gY29udGVudFRleHQgOiA8Q29udGVudCB7Li4uY29udGVudFByb3BzfSAvPiA6IHVuZGVmaW5lZDtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7Y29udGVudFxuICAgICAgICA/IGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICAgIDxGbG9hdGluZ1N0eWxlZFRvb2x0aXBDb250YWluZXIgey4uLnsgY29udGVudCwgcG9zaXRpb24sIG9uVG9vbHRpcFNob3duLCByZWZlcmVuY2UgfX0gLz4sXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LFxuICAgICAgICAgIClcbiAgICAgICAgOiBudWxsfVxuICAgICAge2NoaWxkcmVufVxuICAgIDwvPlxuICApO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvb2x0aXBQbHVnaW48VCBleHRlbmRzIEhUTUxFbGVtZW50PigpIHtcbiAgcmV0dXJuIGdldFBsdWdpbjxUb29sdGlwUGx1Z2luUHJvcHMsIFtIb3ZlcmFibGVQbHVnaW48VD4sIFJlZlBsdWdpbjxUPl0+KChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgJHRvb2x0aXAgfSA9IHByb3BzIGFzIHR5cGVvZiBwcm9wcyAmIHsgcmVhZG9ubHkgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGUgfTtcblxuICAgIGlmICgkdG9vbHRpcCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAkdG9vbHRpcDogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCB7XG4gICAgICBjb250ZW50VGV4dCxcbiAgICAgIENvbnRlbnQsXG4gICAgICBjb250ZW50UHJvcHMsXG4gICAgICBwb3NpdGlvbiA9IFwiYm90dG9tXCIsXG4gICAgICBvblRvb2x0aXBTaG93biA9IG5vb3AsXG4gICAgfTogJFRvb2x0aXBQcm9wczxhbnk+ID0gdHlwZW9mICR0b29sdGlwID09PSBcInN0cmluZ1wiID8geyBjb250ZW50VGV4dDogJHRvb2x0aXAgfSA6ICR0b29sdGlwO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICR0b29sdGlwOiB1bmRlZmluZWQsXG4gICAgICAkd3JhcHBlcjoge1xuICAgICAgICBDb21wb25lbnQ6IFRvb2x0aXBXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgIHRvb2x0aXA6IHsgY29udGVudFRleHQsIENvbnRlbnQsIGNvbnRlbnRQcm9wcywgcG9zaXRpb24sIG9uVG9vbHRpcFNob3duIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH0pO1xufVxuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcblxuZXhwb3J0IGNvbnN0IHRvb2x0aXBEZWxheUluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcInRvb2x0aXAtZGVsYXlcIixcbiAgaW5zdGFudGlhdGU6ICgpID0+ICgpOiBudW1iZXIgfCB1bmRlZmluZWQgPT4gNTAwLFxufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvdG9vbHRpcC90b29sdGlwLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwidG9vbHRpcFwiOiBcInRvb2x0aXAtbW9kdWxlX190b29sdGlwX19fdmFPQXVcIlxufTsiLCAiaW1wb3J0IHsgZ2V0RWxlbWVudENvbXBvbmVudCB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgb2JzZXJ2ZXIgfSBmcm9tIFwibW9ieC1yZWFjdFwiO1xuaW1wb3J0IHsgYWJzb2x1dGVQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZVwiO1xuaW1wb3J0IHsgcGFkZGluZ1BsdWdpbiB9IGZyb20gXCIuLi9wbHVnaW5zL3BhZGRpbmcvcGFkZGluZ1wiO1xuaW1wb3J0IHsgYmFja2dyb3VuZENvbG9yUGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvYmFja2dyb3VuZC1jb2xvci9iYWNrZ3JvdW5kLWNvbG9yXCI7XG5pbXBvcnQgeyBib3JkZXJQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9ib3JkZXIvYm9yZGVyXCI7XG5pbXBvcnQgeyBmb250UGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvZm9udC9mb250XCI7XG5pbXBvcnQgeyBib3hTaGFkb3dQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9ib3gtc2hhZG93L2JveC1zaGFkb3dcIjtcbmltcG9ydCB7IG5vUG9pbnRlckV2ZW50c1BsdWdpbiB9IGZyb20gXCIuLi9wbHVnaW5zL25vLXBvaW50ZXItZXZlbnRzL25vLXBvaW50ZXItZXZlbnRzXCI7XG5pbXBvcnQgeyByZWZQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9yZWYvcmVmXCI7XG5pbXBvcnQgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IHJlbGF0aXZlUGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvcmVsYXRpdmUvcmVsYXRpdmVcIjtcbmltcG9ydCB7IGhvdmVyYWJsZVBsdWdpbiB9IGZyb20gXCIuLi9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGVcIjtcblxuY29uc3QgcGx1Z2lucyA9IFtcbiAgcGFkZGluZ1BsdWdpbixcbiAgYm94U2hhZG93UGx1Z2luLFxuICBib3JkZXJQbHVnaW4sXG4gIGZvbnRQbHVnaW4sXG4gIGJhY2tncm91bmRDb2xvclBsdWdpbixcbiAgbm9Qb2ludGVyRXZlbnRzUGx1Z2luLFxuICByZWxhdGl2ZVBsdWdpbixcbiAgYWJzb2x1dGVQbHVnaW4sXG4gIGNsYXNzTmFtZVBsdWdpbixcbl07XG5cbmNvbnN0IGdldFR5cGVkUGx1Z2lucyA9IDxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KCkgPT4gW2hvdmVyYWJsZVBsdWdpbjxUPigpLCByZWZQbHVnaW48VD4oKV07XG5cbmV4cG9ydCBjb25zdCBNaW5pbWFsRGl2ID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImRpdlwiLCAuLi5wbHVnaW5zLCAuLi5nZXRUeXBlZFBsdWdpbnM8SFRNTERpdkVsZW1lbnQ+KCkpKTtcblxuZXhwb3J0IHR5cGUgTWluaW1hbERpdlByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIE1pbmltYWxEaXY+O1xuIiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgYWJzb2x1dGVTdHlsZXMgZnJvbSBcIi4vYWJzb2x1dGUubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgQWJzb2x1dGVQb3NpdGlvbiA9XG4gIHwgXCJhYnNvbHV0ZS1jZW50ZXItbGVmdC10by1yZWxhdGl2ZS1jZW50ZXItcmlnaHRcIlxuICB8IFwiYWJzb2x1dGUtYm90dG9tLWxlZnQtdG8tcmVsYXRpdmUtdG9wLWxlZnRcIlxuICB8IFwiYWJzb2x1dGUtYm90dG9tLXRvLXJlbGF0aXZlLWJvdHRvbVwiXG4gIHwgXCJhYnNvbHV0ZS10b3AtY2VudGVyLXRvLXJlbGF0aXZlLXRvcC1jZW50ZXJcIjtcblxuZXhwb3J0IHR5cGUgQWJzb2x1dGVQbHVnaW5Qcm9wcyA9IHsgJGFic29sdXRlPzogQWJzb2x1dGVQb3NpdGlvbiB8IGJvb2xlYW4gfTtcblxuZXhwb3J0IGNvbnN0IGFic29sdXRlUGx1Z2luID0gZ2V0UGx1Z2luPEFic29sdXRlUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiAoe1xuICAkY2xhc3NOYW1lOiBbXG4gICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICB7XG4gICAgICBbYWJzb2x1dGVTdHlsZXMuYWJzb2x1dGVdOiAhIXByb3BzLiRhYnNvbHV0ZSxcblxuICAgICAgW2Fic29sdXRlU3R5bGVzW2BhYnNvbHV0ZS0tJHtwcm9wcy4kYWJzb2x1dGV9YF1dOiB0eXBlb2YgcHJvcHMuJGFic29sdXRlID09PSBcInN0cmluZ1wiLFxuICAgIH0sXG4gIF0sXG5cbiAgJGFic29sdXRlOiB1bmRlZmluZWQsXG59KSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvYWJzb2x1dGUvYWJzb2x1dGUubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJhYnNvbHV0ZVwiOiBcImFic29sdXRlLW1vZHVsZV9fYWJzb2x1dGVfX19NWC0tWVwiLFxuICBcImFic29sdXRlLS1hYnNvbHV0ZS1jZW50ZXItbGVmdC10by1yZWxhdGl2ZS1jZW50ZXItcmlnaHRcIjogXCJhYnNvbHV0ZS1tb2R1bGVfX2Fic29sdXRlLS1hYnNvbHV0ZS1jZW50ZXItbGVmdC10by1yZWxhdGl2ZS1jZW50ZXItcmlnaHRfX19sSjBwclwiLFxuICBcImFic29sdXRlLS1hYnNvbHV0ZS1ib3R0b20tbGVmdC10by1yZWxhdGl2ZS10b3AtbGVmdFwiOiBcImFic29sdXRlLW1vZHVsZV9fYWJzb2x1dGUtLWFic29sdXRlLWJvdHRvbS1sZWZ0LXRvLXJlbGF0aXZlLXRvcC1sZWZ0X19fM2cwc0RcIixcbiAgXCJhYnNvbHV0ZS0tYWJzb2x1dGUtY2VudGVyLWNlbnRlci10by1yZWxhdGl2ZS1ib3R0b20tcmlnaHRcIjogXCJhYnNvbHV0ZS1tb2R1bGVfX2Fic29sdXRlLS1hYnNvbHV0ZS1jZW50ZXItY2VudGVyLXRvLXJlbGF0aXZlLWJvdHRvbS1yaWdodF9fX2dnbU84XCIsXG4gIFwiYWJzb2x1dGUtLWFic29sdXRlLWJvdHRvbS10by1yZWxhdGl2ZS1ib3R0b21cIjogXCJhYnNvbHV0ZS1tb2R1bGVfX2Fic29sdXRlLS1hYnNvbHV0ZS1ib3R0b20tdG8tcmVsYXRpdmUtYm90dG9tX19fQ2xtMG1cIixcbiAgXCJhYnNvbHV0ZS0tYWJzb2x1dGUtdG9wLWNlbnRlci10by1yZWxhdGl2ZS10b3AtY2VudGVyXCI6IFwiYWJzb2x1dGUtbW9kdWxlX19hYnNvbHV0ZS0tYWJzb2x1dGUtdG9wLWNlbnRlci10by1yZWxhdGl2ZS10b3AtY2VudGVyX19fRXRreTVcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBwYWRkaW5nU3R5bGVzIGZyb20gXCIuL3BhZGRpbmcubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSBcImxvZGFzaC9mcFwiO1xuaW1wb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcblxuZXhwb3J0IHR5cGUgRGlyZWN0aW9uYWxQYWRkaW5nID0ge1xuICB0b3A/OiBUU2hpcnRTaXplO1xuICBib3R0b20/OiBUU2hpcnRTaXplO1xuICBsZWZ0PzogVFNoaXJ0U2l6ZTtcbiAgcmlnaHQ/OiBUU2hpcnRTaXplO1xuICBob3Jpem9udGFsPzogVFNoaXJ0U2l6ZTtcbiAgdmVydGljYWw/OiBUU2hpcnRTaXplO1xufTtcblxuZXhwb3J0IHR5cGUgUGFkZGluZ1BsdWdpblByb3BzID0geyAkcGFkZGluZz86IGJvb2xlYW4gfCBEaXJlY3Rpb25hbFBhZGRpbmcgfCBUU2hpcnRTaXplIH07XG5cbmV4cG9ydCBjb25zdCBwYWRkaW5nUGx1Z2luID0gZ2V0UGx1Z2luPFBhZGRpbmdQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgaWYgKCFwcm9wcy4kcGFkZGluZykge1xuICAgIHJldHVybiB7ICRwYWRkaW5nOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IHBhZGRpbmcgPSBwcm9wcy4kcGFkZGluZyA9PT0gdHJ1ZSA/IFwieHNcIiA6IHByb3BzLiRwYWRkaW5nO1xuXG4gIGlmIChpc1N0cmluZyhwYWRkaW5nKSkge1xuICAgIHJldHVybiB7XG4gICAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgcGFkZGluZ1N0eWxlc1tgcGFkZGluZy0tJHtwYWRkaW5nfWBdXSxcbiAgICAgICRwYWRkaW5nOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHRvcFNpemUgPSBwYWRkaW5nLnRvcCB8fCBwYWRkaW5nLnZlcnRpY2FsO1xuICBjb25zdCBib3R0b21TaXplID0gcGFkZGluZy5ib3R0b20gfHwgcGFkZGluZy52ZXJ0aWNhbDtcbiAgY29uc3QgcmlnaHRTaXplID0gcGFkZGluZy5yaWdodCB8fCBwYWRkaW5nLmhvcml6b250YWw7XG4gIGNvbnN0IGxlZnRTaXplID0gcGFkZGluZy5sZWZ0IHx8IHBhZGRpbmcuaG9yaXpvbnRhbDtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHByb3BzLiRjbGFzc05hbWUsXG5cbiAgICAgIHtcbiAgICAgICAgW3BhZGRpbmdTdHlsZXNbYHBhZGRpbmdfX3RvcC0tJHt0b3BTaXplfWBdXTogdG9wU2l6ZSxcbiAgICAgICAgW3BhZGRpbmdTdHlsZXNbYHBhZGRpbmdfX3JpZ2h0LS0ke3JpZ2h0U2l6ZX1gXV06IHJpZ2h0U2l6ZSxcbiAgICAgICAgW3BhZGRpbmdTdHlsZXNbYHBhZGRpbmdfX2JvdHRvbS0tJHtib3R0b21TaXplfWBdXTogYm90dG9tU2l6ZSxcbiAgICAgICAgW3BhZGRpbmdTdHlsZXNbYHBhZGRpbmdfX2xlZnQtLSR7bGVmdFNpemV9YF1dOiBsZWZ0U2l6ZSxcbiAgICAgIH0sXG4gICAgXSxcblxuICAgICRwYWRkaW5nOiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9wYWRkaW5nL3BhZGRpbmcubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJwYWRkaW5nX190b3AtLXplcm9cIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS16ZXJvX19fZ3FxZlpcIixcbiAgXCJwYWRkaW5nX190b3AtLTR4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLTR4c19fX1kteTlzXCIsXG4gIFwicGFkZGluZ19fdG9wLS0zeHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS0zeHNfX19vY2M0TlwiLFxuICBcInBhZGRpbmdfX3RvcC0teHhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0teHhzX19fTjdCc2xcIixcbiAgXCJwYWRkaW5nX190b3AtLXhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0teHNfX19MMFVERFwiLFxuICBcInBhZGRpbmdfX3RvcC0tc1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLXNfX19rbFFlMlwiLFxuICBcInBhZGRpbmdfX3RvcC0tbVwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLW1fX19jdGE1dFwiLFxuICBcInBhZGRpbmdfX3RvcC0tbFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLWxfX19MZy1wcVwiLFxuICBcInBhZGRpbmdfX3RvcC0teGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS14bF9fX1h2c3ZMXCIsXG4gIFwicGFkZGluZ19fdG9wLS14eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS14eGxfX18xa2VvZVwiLFxuICBcInBhZGRpbmdfX3RvcC0tM3hsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tM3hsX19fY1VQczlcIixcbiAgXCJwYWRkaW5nX190b3AtLTR4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLTR4bF9fX3FpazJlXCIsXG4gIFwicGFkZGluZ19fdG9wLS01eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS01eGxfX19zOWtwUVwiLFxuICBcInBhZGRpbmdfX3RvcC0tNnhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tNnhsX19fcWMzRlpcIixcbiAgXCJwYWRkaW5nX190b3AtLTd4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLTd4bF9fX3RhQy1QXCIsXG4gIFwicGFkZGluZ19fdG9wLS04eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS04eGxfX19MV2hqcVwiLFxuICBcInBhZGRpbmdfX3RvcC0tOXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tOXhsX19fTDEzY3BcIixcbiAgXCJwYWRkaW5nX190b3AtLTEweGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS0xMHhsX19fSWRlOUNcIixcbiAgXCJwYWRkaW5nX190b3AtLTExeGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS0xMXhsX19fSHR0U2NcIixcbiAgXCJwYWRkaW5nX19yaWdodC0temVyb1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0temVyb19fXzZ2WWJUXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTR4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tNHhzX19faGpPOERcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tM3hzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS0zeHNfX19NWFI3R1wiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS14eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLXh4c19fX0ZuM09oXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLXhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS14c19fX2twc1FQXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLXNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLXNfX183ZUJEVlwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS1tXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS1tX19feEdkdHVcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tbFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tbF9fX015eWM0XCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS14bF9fXy1HR2pKXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLXh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0teHhsX19fMHlORVpcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tM3hsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS0zeGxfX19iYk9QQ1wiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS00eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLTR4bF9fX3ZBWkVVXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTV4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tNXhsX19fcHNOaGJcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tNnhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS02eGxfX19Kd3drUlwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS03eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLTd4bF9fX2dvbXc5XCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tOHhsX19fVmh2VlpcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tOXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS05eGxfX180T0JOblwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS0xMHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS0xMHhsX19fZU9VQTNcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tMTF4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tMTF4bF9fX0k3OTJnXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS16ZXJvXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0temVyb19fX0ZTOTg0XCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS00eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS00eHNfX193aGkxeFwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tM3hzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tM3hzX19fZTVya1lcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLXh4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLXh4c19fX3hRdlZ2XCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS14c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLXhzX19fb2N5aTBcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLXNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS1zX19fNkliblZcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLW1cIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS1tX19fZ3hCMk1cIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLWxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS1sX19fY2JNbzdcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0teGxfX190TEFvelwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0teHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0teHhsX19fZzM1Qi1cIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLTN4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTN4bF9fX0F6OGtpXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS00eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS00eGxfX19rYlMtUlwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tNXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tNXhsX19fd2psT29cIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLTZ4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTZ4bF9fX0lEeFJMXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS03eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS03eGxfX19IcUZtaVwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tOHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tOHhsX19fdUxOZUJcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLTl4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTl4bF9fX2tYamYtXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS0xMHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tMTB4bF9fX1NKQ0J4XCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS0xMXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tMTF4bF9fX0xSLW1zXCIsXG4gIFwicGFkZGluZ19fbGVmdC0temVyb1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS16ZXJvX19fT0NUY1lcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS00eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tNHhzX19fMDg5MDhcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS0zeHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tM3hzX19fZmVDMC1cIixcbiAgXCJwYWRkaW5nX19sZWZ0LS14eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0teHhzX19feE5iMkpcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS14c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS14c19fX2RCYzZYXCIsXG4gIFwicGFkZGluZ19fbGVmdC0tc1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS1zX19fa3NpZ3JcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS1tXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2xlZnQtLW1fX19sYm1SbFwiLFxuICBcInBhZGRpbmdfX2xlZnQtLWxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tbF9fX2tHZ3huXCIsXG4gIFwicGFkZGluZ19fbGVmdC0teGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0teGxfX19ROXBOSVwiLFxuICBcInBhZGRpbmdfX2xlZnQtLXh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS14eGxfX19rWDBhY1wiLFxuICBcInBhZGRpbmdfX2xlZnQtLTN4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS0zeGxfX18zVW42YlwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTR4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS00eGxfX196bk8zblwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTV4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS01eGxfX19SVEhzUFwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTZ4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS02eGxfX19oNUJFQVwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTd4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS03eGxfX19yVFpmaFwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS04eGxfX19uZE11OVwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTl4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS05eGxfX19iMEdBMFwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTEweGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tMTB4bF9fX1B3RFNWXCIsXG4gIFwicGFkZGluZ19fbGVmdC0tMTF4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS0xMXhsX19fMkhzdkpcIixcbiAgXCJwYWRkaW5nLS16ZXJvXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLXplcm9fX19od21mcFwiLFxuICBcInBhZGRpbmctLTR4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS00eHNfX19RT1VLQlwiLFxuICBcInBhZGRpbmctLTN4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS0zeHNfX19SczRJdVwiLFxuICBcInBhZGRpbmctLXh4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS14eHNfX19NSWRDSlwiLFxuICBcInBhZGRpbmctLXhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLXhzX19fUXdoYUJcIixcbiAgXCJwYWRkaW5nLS1zXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLXNfX19CTEhlLVwiLFxuICBcInBhZGRpbmctLW1cIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZy0tbV9fX1BkdFphXCIsXG4gIFwicGFkZGluZy0tbFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS1sX19fUlZETGtcIixcbiAgXCJwYWRkaW5nLS14bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS14bF9fX2N1UGFOXCIsXG4gIFwicGFkZGluZy0teHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLXh4bF9fX0g3VklIXCIsXG4gIFwicGFkZGluZy0tM3hsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTN4bF9fX2t2aXJUXCIsXG4gIFwicGFkZGluZy0tNHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTR4bF9fX3kxN0EwXCIsXG4gIFwicGFkZGluZy0tNXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTV4bF9fXzl5bUk5XCIsXG4gIFwicGFkZGluZy0tNnhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTZ4bF9fXzJLQ21hXCIsXG4gIFwicGFkZGluZy0tN3hsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTd4bF9fX1NzSXhuXCIsXG4gIFwicGFkZGluZy0tOHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTh4bF9fX3NIWnBtXCIsXG4gIFwicGFkZGluZy0tOXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTl4bF9fX29WY0lnXCIsXG4gIFwicGFkZGluZy0tMTB4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS0xMHhsX19faktHa25cIixcbiAgXCJwYWRkaW5nLS0xMXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTExeGxfX19BZ0pyR1wiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGJhY2tncm91bmRDb2xvclN0eWxlcyBmcm9tIFwiLi9iYWNrZ3JvdW5kLWNvbG9yLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IENvbG9yIH0gZnJvbSBcIi4uL19zaGFyZWQvY29sb3JzXCI7XG5cbmV4cG9ydCB0eXBlIEJhY2tncm91bmRDb2xvckFsaWFzID0ga2V5b2YgdHlwZW9mIGFsaWFzVG9Ob21pbmFsO1xuZXhwb3J0IHR5cGUgQmFja2dyb3VuZENvbG9yID0gQ29sb3IgfCBCYWNrZ3JvdW5kQ29sb3JBbGlhcztcblxuZXhwb3J0IHR5cGUgJEJhY2tncm91bmRDb2xvclByb3BzID0ge1xuICBub3JtYWw/OiBCYWNrZ3JvdW5kQ29sb3I7XG4gIGhvdmVyPzogQmFja2dyb3VuZENvbG9yO1xufTtcblxuZXhwb3J0IHR5cGUgQmFja2dyb3VuZENvbG9yUGx1Z2luUHJvcHMgPSB7ICRiYWNrZ3JvdW5kQ29sb3I/OiBCYWNrZ3JvdW5kQ29sb3IgfCAkQmFja2dyb3VuZENvbG9yUHJvcHMgfTtcblxuY29uc3QgYWxpYXNUb05vbWluYWwgPSB7XG4gIGJhY2tncm91bmRQcmltYXJ5OiBcImdyZXk4MFwiLFxuICBiYWNrZ3JvdW5kU2Vjb25kYXJ5OiBcImdyZXkxMDBcIixcbiAgYmFja2dyb3VuZFByaW1hcnlEaW1tZWQ6IFwiZ3JleTgwQWxwaGE4NVwiLFxufSBhcyBjb25zdDtcblxuY29uc3QgaXNCYWNrZ3JvdW5kQ29sb3JBbGlhcyA9IChjb2xvcjogQmFja2dyb3VuZENvbG9yKTogY29sb3IgaXMgQmFja2dyb3VuZENvbG9yQWxpYXMgPT4gY29sb3IgaW4gYWxpYXNUb05vbWluYWw7XG5cbmV4cG9ydCBjb25zdCBiYWNrZ3JvdW5kQ29sb3JQbHVnaW4gPSBnZXRQbHVnaW48QmFja2dyb3VuZENvbG9yUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGJhY2tncm91bmRDb2xvcjogY29sb3IgfSA9IHByb3BzO1xuICBjb25zdCB7IG5vcm1hbCwgaG92ZXIgfSA9IHR5cGVvZiBjb2xvciA9PT0gXCJzdHJpbmdcIiA/IHsgbm9ybWFsOiBjb2xvciB9IDogKGNvbG9yID8/IHt9KTtcblxuICBjb25zdCBub3JtYWxDb2xvciA9IG5vcm1hbCA/IChpc0JhY2tncm91bmRDb2xvckFsaWFzKG5vcm1hbCkgPyBhbGlhc1RvTm9taW5hbFtub3JtYWxdIDogbm9ybWFsKSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgaG92ZXJDb2xvciA9IGhvdmVyID8gKGlzQmFja2dyb3VuZENvbG9yQWxpYXMoaG92ZXIpID8gYWxpYXNUb05vbWluYWxbaG92ZXJdIDogaG92ZXIpIDogdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW1xuICAgICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICAgIG5vcm1hbENvbG9yID8gYmFja2dyb3VuZENvbG9yU3R5bGVzW2BiYWNrZ3JvdW5kQ29sb3ItLSR7bm9ybWFsQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgICBob3ZlckNvbG9yID8gYmFja2dyb3VuZENvbG9yU3R5bGVzW2BiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLSR7aG92ZXJDb2xvcn1gXSA6IHVuZGVmaW5lZCxcbiAgICBdLFxuICAgICRiYWNrZ3JvdW5kQ29sb3I6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvci5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImJhY2tncm91bmRDb2xvci0taW5oZXJpdFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWluaGVyaXRfX19OLUR0WVwiLFxuICBcImJhY2tncm91bmRDb2xvci0td2hpdGVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS13aGl0ZV9fXzE4Znh1XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS10cmFuc3BhcmVudFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLXRyYW5zcGFyZW50X19fVmR0LVlcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXkxMDBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5MTAwX19fUFJ6VXRcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXk4MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWdyZXk4MF9fX2FieXR1XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5NjBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5NjBfX19QUEFTbFwiLFxuICBcImJhY2tncm91bmRDb2xvci0tZ3JleTQwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTQwX19fd0ZCYWxcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXkzMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWdyZXkzMF9fXy0tOE1UXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5MjVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5MjVfX19ZRThRZlwiLFxuICBcImJhY2tncm91bmRDb2xvci0tZ3JleTIwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTIwX19fNjAwalFcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXkxMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWdyZXkxMF9fX0lTc2M5XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5NzBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5NzBfX19WLVpHTFwiLFxuICBcImJhY2tncm91bmRDb2xvci0tZ3JleTgwQWxwaGE4NVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWdyZXk4MEFscGhhODVfX183b1RYM1wiLFxuICBcImJhY2tncm91bmRDb2xvci0tcHJpbWFyeVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLXByaW1hcnlfX19PSG5yTFwiLFxuICBcImJhY2tncm91bmRDb2xvci0tc3VjY2Vzc1wiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLXN1Y2Nlc3NfX19XVVIzeVwiLFxuICBcImJhY2tncm91bmRDb2xvci0tbm90aWNlXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tbm90aWNlX19fbFZOUmRcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLXdhcm5pbmdcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS13YXJuaW5nX19fQXJWdmxcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWNyaXRpY2FsXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tY3JpdGljYWxfX19wLVdiOVwiLFxuICBcImJhY2tncm91bmRDb2xvci0tc3VjY2Vzc1RpbnRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1zdWNjZXNzVGludF9fXzJVUDNZXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS13YXJuaW5nVGludFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLXdhcm5pbmdUaW50X19fcXdGMDhcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWNyaXRpY2FsVGludFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWNyaXRpY2FsVGludF9fX2lLLWpsXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1saW5rXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tbGlua19fX2o0Umo3XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1jb2RlXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tY29kZV9fX0VtLWJKXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1pbmhlcml0XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0taW5oZXJpdF9fX215MlJxXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS13aGl0ZVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXdoaXRlX19fdGUtZ3BcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXRyYW5zcGFyZW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tdHJhbnNwYXJlbnRfX18xRDJJalwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTEwMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkxMDBfX18tSkh1MlwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTgwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTgwX19fei04NUlcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk2MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk2MF9fX2hVYlkzXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5NDBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5NDBfX18zQS1lNlwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTMwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTMwX19fNy1DRmpcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkyNVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkyNV9fX21JVDhRXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5MjBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5MjBfX19vTUFjRFwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTEwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTEwX19fZ1IxOTNcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk3MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk3MF9fX2sySktNXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5ODBBbHBoYTg1XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTgwQWxwaGE4NV9fX0Nkay0tXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1wcmltYXJ5XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tcHJpbWFyeV9fX3p0Z3pBXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1zdWNjZXNzXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tc3VjY2Vzc19fX0czMFZIXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ub3RpY2VcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ub3RpY2VfX19qV0ZjQ1wiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0td2FybmluZ1wiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXdhcm5pbmdfX192bi1CS1wiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tY3JpdGljYWxcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1jcml0aWNhbF9fX3I2YlpJXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1zdWNjZXNzVGludFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXN1Y2Nlc3NUaW50X19fODhMRGpcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXdhcm5pbmdUaW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0td2FybmluZ1RpbnRfX19YaTYyRlwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tY3JpdGljYWxUaW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tY3JpdGljYWxUaW50X19fVjBxMm9cIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWxpbmtcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1saW5rX19fWDlMRnFcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWNvZGVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1jb2RlX19fbEhDSWdcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBib3JkZXJTdHlsZXMgZnJvbSBcIi4vYm9yZGVyLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IENvbG9yIH0gZnJvbSBcIi4uL19zaGFyZWQvY29sb3JzXCI7XG5pbXBvcnQgdHlwZSB7IEJvcmRlcldpZHRoIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgQ29ybmVyU3R5bGVzLCBnZXRDb3JuZXJTdHlsZXMgfSBmcm9tIFwiLi9nZXQtY29ybmVyLXN0eWxlc1wiO1xuaW1wb3J0IHsgZ2V0U2lkZVN0eWxlcywgdHlwZSBTaWRlU3R5bGVzIH0gZnJvbSBcIi4vZ2V0LXNpZGUtc3R5bGVzXCI7XG5pbXBvcnQgeyBjb21wYWN0IH0gZnJvbSBcImxvZGFzaC9mcFwiO1xuXG5leHBvcnQgdHlwZSBCb3JkZXJDb2xvckFsaWFzID0ga2V5b2YgdHlwZW9mIGFsaWFzVG9Ob21pbmFsO1xuZXhwb3J0IHR5cGUgQm9yZGVyQ29sb3IgPSBDb2xvciB8IEJvcmRlckNvbG9yQWxpYXM7XG5cbmNvbnN0IGFsaWFzVG9Ob21pbmFsID0geyBib3JkZXJQcmltYXJ5OiBcImdyZXk2MFwiIH0gYXMgY29uc3Q7XG5cbmNvbnN0IGlzQm9yZGVyQ29sb3JBbGlhcyA9IChjb2xvcjogQm9yZGVyQ29sb3IpOiBjb2xvciBpcyBCb3JkZXJDb2xvckFsaWFzID0+IGNvbG9yIGluIGFsaWFzVG9Ob21pbmFsO1xuXG5leHBvcnQgdHlwZSAkQm9yZGVyQ29sb3JQcm9wcyA9IHtcbiAgcmVhZG9ubHkgbm9ybWFsPzogQm9yZGVyQ29sb3I7XG4gIHJlYWRvbmx5IGhvdmVyPzogQm9yZGVyQ29sb3I7XG4gIHJlYWRvbmx5IGRpc2FibGVkPzogQm9yZGVyQ29sb3I7XG59O1xuXG5leHBvcnQgdHlwZSAkQm9yZGVyUHJvcHMgPSB7XG4gIGNvbG9yPzogQm9yZGVyQ29sb3IgfCAkQm9yZGVyQ29sb3JQcm9wcztcbiAgd2lkdGg/OiBCb3JkZXJXaWR0aCB8IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMZWF2ZSB0aGUgbGFzdCBvZiB0aGUgZWxlbWVudCdzIHNpYmxpbmdzIHdpdGhvdXQgdGhlIGJvcmRlciwgc28gdGhhdCBhIHN0YWNrXG4gICAqIG9mIGJvcmRlcmVkIHJvd3MgcmVhZHMgYXMgcm93cyBzZXBhcmF0ZWQgZnJvbSBlYWNoIG90aGVyIHJhdGhlciB0aGFuIGZyYW1lZC5cbiAgICovXG4gIGV4Y2VwdExhc3Q/OiBib29sZWFuO1xufSAmIFNpZGVTdHlsZXMgJlxuICBDb3JuZXJTdHlsZXM7XG5cbmV4cG9ydCB0eXBlIEJvcmRlclBsdWdpblByb3BzID0geyAkYm9yZGVyPzogJEJvcmRlclByb3BzIH07XG5cbmV4cG9ydCBjb25zdCBib3JkZXJQbHVnaW4gPSBnZXRQbHVnaW48Qm9yZGVyUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJGJvcmRlcikge1xuICAgIHJldHVybiB7ICRib3JkZXI6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgZ2V0Q29ybmVyU3R5bGVzKHByb3BzLiRib3JkZXIpLCBnZXRCb3JkZXJTdHlsZXMocHJvcHMuJGJvcmRlcildLFxuICAgICRib3JkZXI6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuXG5jb25zdCBnZXRCb3JkZXJTdHlsZXMgPSAoeyB3aWR0aCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgdG9wLCBjb2xvciwgZXhjZXB0TGFzdCB9OiAkQm9yZGVyUHJvcHMpID0+IHtcbiAgY29uc3QgYm9yZGVyV2lkdGggPSB3aWR0aCA9PT0gdHJ1ZSB8fCAod2lkdGggPT09IHVuZGVmaW5lZCAmJiBjb2xvcikgPyBcInh4c1wiIDogd2lkdGg7XG4gIGNvbnN0IHsgbm9ybWFsLCBob3ZlciwgZGlzYWJsZWQgfSA9XG4gICAgYm9yZGVyV2lkdGggJiYgY29sb3IgPT09IHVuZGVmaW5lZFxuICAgICAgPyB7IG5vcm1hbDogXCJib3JkZXJQcmltYXJ5XCIgYXMgY29uc3QgfVxuICAgICAgOiB0eXBlb2YgY29sb3IgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyB7IG5vcm1hbDogY29sb3IgfVxuICAgICAgICA6IChjb2xvciA/PyB7fSk7XG5cbiAgY29uc3Qgbm9ybWFsQ29sb3IgPSBub3JtYWwgJiYgaXNCb3JkZXJDb2xvckFsaWFzKG5vcm1hbCkgPyBhbGlhc1RvTm9taW5hbFtub3JtYWxdIDogbm9ybWFsO1xuICBjb25zdCBob3ZlckNvbG9yID0gaG92ZXIgJiYgaXNCb3JkZXJDb2xvckFsaWFzKGhvdmVyKSA/IGFsaWFzVG9Ob21pbmFsW2hvdmVyXSA6IGhvdmVyO1xuICBjb25zdCBkaXNhYmxlZENvbG9yID0gZGlzYWJsZWQgJiYgaXNCb3JkZXJDb2xvckFsaWFzKGRpc2FibGVkKSA/IGFsaWFzVG9Ob21pbmFsW2Rpc2FibGVkXSA6IGRpc2FibGVkO1xuXG4gIGNvbnN0IHN0eWxlQ2xhc3NlcyA9IGNvbXBhY3QoW1xuICAgIGJvcmRlcldpZHRoID8gYm9yZGVyU3R5bGVzW2Bib3JkZXJfX3dpZHRoLS0ke2JvcmRlcldpZHRofWBdIDogdW5kZWZpbmVkLFxuICAgIG5vcm1hbENvbG9yID8gYm9yZGVyU3R5bGVzW2Bib3JkZXJfX2NvbG9yLS0ke25vcm1hbENvbG9yfWBdIDogdW5kZWZpbmVkLFxuICAgIGhvdmVyQ29sb3IgPyBib3JkZXJTdHlsZXNbYGJvcmRlcl9fY29sb3ItLSR7aG92ZXJDb2xvcn0tLWhvdmVyYF0gOiB1bmRlZmluZWQsXG4gICAgZGlzYWJsZWRDb2xvciA/IGJvcmRlclN0eWxlc1tgYm9yZGVyX19jb2xvci0tJHtkaXNhYmxlZENvbG9yfS0tZGlzYWJsZWRgXSA6IHVuZGVmaW5lZCxcbiAgICAuLi5nZXRTaWRlU3R5bGVzKHsgbGVmdCwgcmlnaHQsIGJvdHRvbSwgdG9wIH0pLFxuICAgIGV4Y2VwdExhc3QgPyBib3JkZXJTdHlsZXNbXCJib3JkZXItLWV4Y2VwdC1sYXN0XCJdIDogdW5kZWZpbmVkLFxuICBdKTtcblxuICByZXR1cm4gW3N0eWxlQ2xhc3Nlcywgc3R5bGVDbGFzc2VzLmxlbmd0aCA+IDAgJiYgYm9yZGVyU3R5bGVzW1wiYm9yZGVyX19zdHlsZS0tc29saWRcIl1dO1xufTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiYm9yZGVyX19zdHlsZS0tc29saWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3N0eWxlLS1zb2xpZF9fXzFReTFKXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0temVyb19fXy1rN1VDXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0tc19fX3ZsbXVsXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0tbV9fX0VvSHZqXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLW1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19yYWRpdXMtLW1sX19fa3NLUGVcIixcbiAgXCJib3JkZXJfX3JhZGl1cy0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fcmFkaXVzLS1sX19fLTU0bnhcIixcbiAgXCJib3JkZXJfX3JhZGl1cy0tNTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0tNTBfX19FYzVjY1wiLFxuICBcImJvcmRlcl9fcmFkaXVzLS1mdWxsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19yYWRpdXMtLWZ1bGxfX19mME9rTFwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS16ZXJvX19fdUxjTzJcIixcbiAgXCJib3JkZXJfX3dpZHRoLS14eHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS14eHNfX19KMHRaOVwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0teHNfX19VUmNrSVwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS1zX19feDlOVWpcIixcbiAgXCJib3JkZXJfX3dpZHRoLS1tXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0tbV9fX0NGOENFXCIsXG4gIFwiYm9yZGVyX193aWR0aC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fd2lkdGgtLWxfX19Zb0I2NVwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0teGxfX19CQ0xsTlwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXh4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fd2lkdGgtLXh4bF9fXy1kcmdQXCIsXG4gIFwiYm9yZGVyX193aWR0aC0tM3hsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0tM3hsX19fZHFtaUZcIixcbiAgXCJib3JkZXJfX3dpZHRoLS00eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS00eGxfX19iRUw5MFwiLFxuICBcImJvcmRlcl9fd2lkdGgtLTV4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fd2lkdGgtLTV4bF9fX3pqMVZYXCIsXG4gIFwiYm9yZGVyX19jb2xvci0taW5oZXJpdFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWluaGVyaXRfX19FMk1Tc1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWluaGVyaXQtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0taW5oZXJpdC0taG92ZXJfX19XeW5CUFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWluaGVyaXQtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0taW5oZXJpdC0tZGlzYWJsZWRfX19xLXRzRVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdoaXRlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2hpdGVfX19nVDJvZ1wiLFxuICBcImJvcmRlcl9fY29sb3ItLXdoaXRlLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdoaXRlLS1ob3Zlcl9fX1FkcFZiXCIsXG4gIFwiYm9yZGVyX19jb2xvci0td2hpdGUtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2hpdGUtLWRpc2FibGVkX19faXlUWEtcIixcbiAgXCJib3JkZXJfX2NvbG9yLS10cmFuc3BhcmVudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXRyYW5zcGFyZW50X19fc3dhbUhcIixcbiAgXCJib3JkZXJfX2NvbG9yLS10cmFuc3BhcmVudC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS10cmFuc3BhcmVudC0taG92ZXJfX19qVVotelwiLFxuICBcImJvcmRlcl9fY29sb3ItLXRyYW5zcGFyZW50LS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXRyYW5zcGFyZW50LS1kaXNhYmxlZF9fX3NpRHJ5XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkxMDBfX192NWw4M1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMDAtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTEwMC0taG92ZXJfX19KMS1PUVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMDAtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTEwMC0tZGlzYWJsZWRfX19RaktSUlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk4MF9fX2txNWFUXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTgwLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk4MC0taG92ZXJfX19DcHBsVlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5ODAtLWRpc2FibGVkX19fLThQS2xcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NjBfX19QOUpNSFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk2MC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NjAtLWhvdmVyX19fQVppY0dcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NjAtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTYwLS1kaXNhYmxlZF9fX2djVmREXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTQwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTQwX19fZjZTRHdcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NDAtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTQwLS1ob3Zlcl9fX1VIZElyXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTQwLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk0MC0tZGlzYWJsZWRfX180ZURrQ1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkzMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkzMF9fX2ZxYnR1XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTMwLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkzMC0taG92ZXJfX19WTkRTUlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkzMC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MzAtLWRpc2FibGVkX19fcHlKT3FcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5MjVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MjVfX19zblZuZFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkyNS0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MjUtLWhvdmVyX19fbmRyZllcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5MjUtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTI1LS1kaXNhYmxlZF9fX29tUEpQXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTIwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTIwX19fZ2JuM1pcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5MjAtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTIwLS1ob3Zlcl9fX3hSc3djXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTIwLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkyMC0tZGlzYWJsZWRfX19TVmVBVFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkxMF9fX1pVNUdhXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTEwLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkxMC0taG92ZXJfX19VWmgtZFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MTAtLWRpc2FibGVkX19fOVotT1RcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NzBfX195cjlpTVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk3MC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NzAtLWhvdmVyX19fbDlZVGRcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NzAtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTcwLS1kaXNhYmxlZF9fX1N3UlFpXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTgwQWxwaGE4NVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk4MEFscGhhODVfX182RGJkU1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MEFscGhhODUtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTgwQWxwaGE4NS0taG92ZXJfX194U2t3QVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MEFscGhhODUtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTgwQWxwaGE4NS0tZGlzYWJsZWRfX195UDRPLVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXByaW1hcnlcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1wcmltYXJ5X19fZ2Z4Qk9cIixcbiAgXCJib3JkZXJfX2NvbG9yLS1wcmltYXJ5LS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXByaW1hcnktLWhvdmVyX19fcHVIRHBcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1wcmltYXJ5LS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXByaW1hcnktLWRpc2FibGVkX19fSDVGc0dcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1zdWNjZXNzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tc3VjY2Vzc19fX1p1cmxTXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzcy0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzLS1ob3Zlcl9fX1d5LTJNXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzcy0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzLS1kaXNhYmxlZF9fX1RQM1J2XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tbm90aWNlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbm90aWNlX19fWndRdlRcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ub3RpY2UtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbm90aWNlLS1ob3Zlcl9fX01KUVVoXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tbm90aWNlLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLW5vdGljZS0tZGlzYWJsZWRfX195VnVpMlwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdhcm5pbmdcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS13YXJuaW5nX19fTEs2QXpcIixcbiAgXCJib3JkZXJfX2NvbG9yLS13YXJuaW5nLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdhcm5pbmctLWhvdmVyX19fbUFvU0JcIixcbiAgXCJib3JkZXJfX2NvbG9yLS13YXJuaW5nLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdhcm5pbmctLWRpc2FibGVkX19fV2NBSy1cIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNyaXRpY2FsX19fR1RZejFcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jcml0aWNhbC0taG92ZXJfX191TUZqYVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWNyaXRpY2FsLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNyaXRpY2FsLS1kaXNhYmxlZF9fX0s5Z2w3XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzc1RpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzVGludF9fX1BTUk1uXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzc1RpbnQtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tc3VjY2Vzc1RpbnQtLWhvdmVyX19fVWZKUGdcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1zdWNjZXNzVGludC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzVGludC0tZGlzYWJsZWRfX19Xa09wQVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdhcm5pbmdUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2FybmluZ1RpbnRfX19JVFdtTVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdhcm5pbmdUaW50LS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdhcm5pbmdUaW50LS1ob3Zlcl9fX0pjLU5uXCIsXG4gIFwiYm9yZGVyX19jb2xvci0td2FybmluZ1RpbnQtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2FybmluZ1RpbnQtLWRpc2FibGVkX19fdXF6Qm9cIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnRfX19PUXV4dFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWNyaXRpY2FsVGludC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnQtLWhvdmVyX19fbFdhOURcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnQtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tY3JpdGljYWxUaW50LS1kaXNhYmxlZF9fX2xZaGg0XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tbGlua1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWxpbmtfX19pWWVGa1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWxpbmstLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbGluay0taG92ZXJfX180eVJKUFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWxpbmstLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbGluay0tZGlzYWJsZWRfX18wazlkQlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWNvZGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jb2RlX19fOE9zRmlcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jb2RlLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNvZGUtLWhvdmVyX19fWjVzNWRcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jb2RlLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNvZGUtLWRpc2FibGVkX19fdURRWk1cIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS16ZXJvXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0temVyb19fX1ZLUnEtXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0teHhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0teHhzX19fOHppN1RcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS14c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLXhzX19fUk5FSzJcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS1zXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0tc19fX2FWbjFXXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLW1fX19CNjE0alwiLFxuICBcImJvcmRlclRvcF9fd2lkdGgtLWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS1sX19fLW9lUFBcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS14bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLXhsX19fWkpjNklcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS14eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS14eGxfX19NbnJIelwiLFxuICBcImJvcmRlclRvcF9fd2lkdGgtLTN4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLTN4bF9fXzV4Sy0tXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0tNHhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0tNHhsX19fcEVEdGNcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS01eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS01eGxfX19NRnZmaFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWluaGVyaXRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1pbmhlcml0X19fQ3IxbmFcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS13aGl0ZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXdoaXRlX19fdS11UWJcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS10cmFuc3BhcmVudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXRyYW5zcGFyZW50X19fUHNNbXhcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5MTAwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTEwMF9fX1djOXRMXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTgwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTgwX19fZUhqekZcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5NjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5NjBfX190U0F0ZVwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWdyZXk0MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWdyZXk0MF9fX0hpcmdmXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTMwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTMwX19fQkJyQlFcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5MjVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5MjVfX19VSFZaWFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWdyZXkyMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWdyZXkyMF9fXzFsdXBQXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTEwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTEwX19fRTJHZlRcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5NzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5NzBfX19EYkMyR1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19fa0I5LXZcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1wcmltYXJ5XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tcHJpbWFyeV9fXzUxMWprXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tc3VjY2Vzc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXN1Y2Nlc3NfX183OS11alwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLW5vdGljZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLW5vdGljZV9fXy1kT0QwXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0td2FybmluZ1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXdhcm5pbmdfX19UMzVrWFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWNyaXRpY2FsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tY3JpdGljYWxfX19zLXF2a1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tc3VjY2Vzc1RpbnRfX19QYTBOR1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLXdhcm5pbmdUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0td2FybmluZ1RpbnRfX18yZVVRVFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWNyaXRpY2FsVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWNyaXRpY2FsVGludF9fX0hKQW8yXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tbGlua1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWxpbmtfX19LWUZHS1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWNvZGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1jb2RlX19fdktPS3dcIixcbiAgXCJib3JkZXJSaWdodF9fd2lkdGgtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXplcm9fX19ybERJblwiLFxuICBcImJvcmRlclJpZ2h0X193aWR0aC0teHhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX3dpZHRoLS14eHNfX18tejc5YVwiLFxuICBcImJvcmRlclJpZ2h0X193aWR0aC0teHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXhzX19fd1pWaGpcIixcbiAgXCJib3JkZXJSaWdodF9fd2lkdGgtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXNfX19NdFlUNlwiLFxuICBcImJvcmRlclJpZ2h0X193aWR0aC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X193aWR0aC0tbV9fX1NEOTd3XCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX3dpZHRoLS1sX19fcVNJMEVcIixcbiAgXCJib3JkZXJSaWdodF9fd2lkdGgtLXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX3dpZHRoLS14bF9fXzA1bjAwXCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS14eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXh4bF9fXy1hRXd2XCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS0zeGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLTN4bF9fX0R1MFJvXCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS00eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLTR4bF9fXzJaQ1hrXCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS01eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLTV4bF9fX1NwNDhrXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1pbmhlcml0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1pbmhlcml0X19fOXlQZUlcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLXdoaXRlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS13aGl0ZV9fX2hJT0JkXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS10cmFuc3BhcmVudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tdHJhbnNwYXJlbnRfX19veElOSlwiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tZ3JleTEwMF9fX2FhU25hXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5ODBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk4MF9fXzVQVDVqXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5NjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk2MF9fX29OVy1VXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5NDBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk0MF9fXzJKd2k5XCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkzMF9fX1Q2aHR4XCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MjVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkyNV9fX1FiRlVKXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkyMF9fX2VzTVFNXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkxMF9fX1owUXpmXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5NzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk3MF9fX3RrekFKXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5ODBBbHBoYTg1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19fajQ1VU5cIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLXByaW1hcnlcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLXByaW1hcnlfX19ISWsyQVwiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tc3VjY2Vzc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tc3VjY2Vzc19fX1JJd2FIXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ub3RpY2VcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLW5vdGljZV9fX3ZVTGFUXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS13YXJuaW5nXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS13YXJuaW5nX19fWTJpUGlcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLWNyaXRpY2FsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1jcml0aWNhbF9fX1htNnRRXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1zdWNjZXNzVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tc3VjY2Vzc1RpbnRfX19tMW52WVwiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0td2FybmluZ1RpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLXdhcm5pbmdUaW50X19fbi1oeEZcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLWNyaXRpY2FsVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tY3JpdGljYWxUaW50X19fNFZKTjhcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLWxpbmtcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWxpbmtfX19IMnJlM1wiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tY29kZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tY29kZV9fX1VDZE0wXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLXplcm9fX19QbEFCTFwiLFxuICBcImJvcmRlckJvdHRvbV9fd2lkdGgtLXh4c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLXh4c19fX1pGbS1VXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0teHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS14c19fX2hEelNzXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0tc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLXNfX19JV3QtdVwiLFxuICBcImJvcmRlckJvdHRvbV9fd2lkdGgtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS1tX19fZjFyLXNcIixcbiAgXCJib3JkZXJCb3R0b21fX3dpZHRoLS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX193aWR0aC0tbF9fXzBIdmwxXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0teGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS14bF9fX3NTUnRzXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0teHhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX193aWR0aC0teHhsX19fTnVCZ0ZcIixcbiAgXCJib3JkZXJCb3R0b21fX3dpZHRoLS0zeGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS0zeGxfX19HakxZVVwiLFxuICBcImJvcmRlckJvdHRvbV9fd2lkdGgtLTR4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLTR4bF9fX0J2SldQXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0tNXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX193aWR0aC0tNXhsX19fckNlREJcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1pbmhlcml0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0taW5oZXJpdF9fXzczZHFWXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0td2hpdGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS13aGl0ZV9fX0RabWo2XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tdHJhbnNwYXJlbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS10cmFuc3BhcmVudF9fX3FrTmdGXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkxMDBfX19YMnY3eFwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWdyZXk4MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXk4MF9fX3RuTWo1XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTYwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTYwX19fVU9XMG5cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5NDBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5NDBfX19jN3VjMFwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkzMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkzMF9fX1k4NUM0XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTI1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTI1X19fa3YyTm1cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5MjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5MjBfX192Ty1tSlwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkxMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkxMF9fX0ZhLWh5XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTcwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTcwX19faC1Da1ZcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5ODBBbHBoYTg1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTgwQWxwaGE4NV9fX2lyeG9IXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tcHJpbWFyeVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLXByaW1hcnlfX19KLXI1SlwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLXN1Y2Nlc3NcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1zdWNjZXNzX19fZnhadlJcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ub3RpY2VcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1ub3RpY2VfX19JSUE1UlwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLXdhcm5pbmdcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS13YXJuaW5nX19fbHNaRy1cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1jcml0aWNhbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWNyaXRpY2FsX19fQjdMNS1cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1zdWNjZXNzVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLXN1Y2Nlc3NUaW50X19fQXN2dGNcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS13YXJuaW5nVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLXdhcm5pbmdUaW50X19fNE9QZk9cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1jcml0aWNhbFRpbnRfX194MlVMUVwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWxpbmtcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1saW5rX19fUjJYRHVcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1jb2RlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tY29kZV9fX0VyOWhiXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0temVyb19fXzEtRk0tXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXh4c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS14eHNfX19vakFhcFwiLFxuICBcImJvcmRlckxlZnRfX3dpZHRoLS14c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS14c19fX3oyWElGXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tc19fX0RxWGJjXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tbV9fXzRqUHU1XCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tbF9fX2xQYVJLXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fd2lkdGgtLXhsX19fTWMtLVJcIixcbiAgXCJib3JkZXJMZWZ0X193aWR0aC0teHhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fd2lkdGgtLXh4bF9fX0tYT1JaXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLTN4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS0zeGxfX180ZllJRVwiLFxuICBcImJvcmRlckxlZnRfX3dpZHRoLS00eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tNHhsX19fY2RVbFdcIixcbiAgXCJib3JkZXJMZWZ0X193aWR0aC0tNXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fd2lkdGgtLTV4bF9fXzdsOUgwXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWluaGVyaXRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0taW5oZXJpdF9fX3FkNGtEXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXdoaXRlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLXdoaXRlX19fLXJ6czdcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tdHJhbnNwYXJlbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tdHJhbnNwYXJlbnRfX191VVVFeFwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5MTAwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkxMDBfX19RRGJWMlwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5ODBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTgwX19fN2hWeThcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tZ3JleTYwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk2MF9fX3E5VHMyXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk0MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ncmV5NDBfX195SXIwSlwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5MzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTMwX19faXRVVXNcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tZ3JleTI1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkyNV9fX3o5RWdEXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkyMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ncmV5MjBfX19IcXJKblwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5MTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTEwX19feXRaUE5cIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tZ3JleTcwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk3MF9fX0VveVZXXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTgwQWxwaGE4NV9fXzJHSVcyXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXByaW1hcnlcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tcHJpbWFyeV9fX0lOQzh5XCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXN1Y2Nlc3NcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tc3VjY2Vzc19fXzEyS2l1XCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLW5vdGljZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ub3RpY2VfX19taEpBblwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS13YXJuaW5nXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLXdhcm5pbmdfX191VjV0V1wiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1jcml0aWNhbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1jcml0aWNhbF9fX0E2SmlPXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLXN1Y2Nlc3NUaW50X19fZ09yWWpcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0td2FybmluZ1RpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0td2FybmluZ1RpbnRfX19ON1VjVFwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tY3JpdGljYWxUaW50X19fYS1mYUdcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tbGlua1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1saW5rX19fbXdSS3dcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tY29kZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1jb2RlX19fdUpXRkhcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS16ZXJvX19fZGxzdFZcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0tc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS1zX19fdm81ZWxcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS1tX19fR0lFY3RcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0tbWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BSaWdodC0tbWxfX19tRWNEdlwiLFxuICBcImJvcmRlclJhZGl1c1RvcFJpZ2h0LS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzVG9wUmlnaHQtLWxfX19yZy1EMFwiLFxuICBcImJvcmRlclJhZGl1c1RvcFJpZ2h0LS01MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS01MF9fX1hsbEdzXCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wUmlnaHQtLWZ1bGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BSaWdodC0tZnVsbF9fXzVaSXY4XCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0temVyb19fX084ZEUzXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tc19fX254THRMXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tbV9fX1NsNVJSXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLW1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLW1sX19fQW9RMGJcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c0JvdHRvbVJpZ2h0LS1sX19fNTJKb2xcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tNTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tNTBfX183LXdPR1wiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbVJpZ2h0LS1mdWxsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLWZ1bGxfX19MQmFQNlwiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbUxlZnQtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS16ZXJvX19fb1FCZG1cIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS1zXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tc19fX3pGSUwzXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c0JvdHRvbUxlZnQtLW1fX19LTlNjVFwiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbUxlZnQtLW1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tbWxfX192dDd4MlwiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbUxlZnQtLWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS1sX19fazhwaWtcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS01MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c0JvdHRvbUxlZnQtLTUwX19fZjJYVHVcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS1mdWxsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tZnVsbF9fX2VIajZzXCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wTGVmdC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcExlZnQtLXplcm9fX19QMVl0d1wiLFxuICBcImJvcmRlclJhZGl1c1RvcExlZnQtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BMZWZ0LS1zX19fSC1sWGVcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BMZWZ0LS1tXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzVG9wTGVmdC0tbV9fXzNMUlIwXCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wTGVmdC0tbWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BMZWZ0LS1tbF9fX2lndjB3XCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wTGVmdC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcExlZnQtLWxfX18zczJDSlwiLFxuICBcImJvcmRlclJhZGl1c1RvcExlZnQtLTUwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzVG9wTGVmdC0tNTBfX193Tll3UVwiLFxuICBcImJvcmRlclJhZGl1c1RvcExlZnQtLWZ1bGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BMZWZ0LS1mdWxsX19fQ2Z6LVJcIixcbiAgXCJib3JkZXItLWV4Y2VwdC1sYXN0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyLS1leGNlcHQtbGFzdF9fXzIyWXNCXCJcbn07IiwgImltcG9ydCBib3JkZXJTdHlsZXMgZnJvbSBcIi4vYm9yZGVyLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IEJvcmRlclJhZGl1c1NpemUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvcm5lclN0eWxlcyB7XG4gIHJhZGl1cz86IEJvcmRlclJhZGl1c1NpemUgfCBib29sZWFuO1xuICByYWRpdXNUb3BSaWdodD86IEJvcmRlclJhZGl1c1NpemU7XG4gIHJhZGl1c0JvdHRvbVJpZ2h0PzogQm9yZGVyUmFkaXVzU2l6ZTtcbiAgcmFkaXVzQm90dG9tTGVmdD86IEJvcmRlclJhZGl1c1NpemU7XG4gIHJhZGl1c1RvcExlZnQ/OiBCb3JkZXJSYWRpdXNTaXplO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Q29ybmVyU3R5bGVzID0gKHN0eWxlczogQ29ybmVyU3R5bGVzKSA9PiB7XG4gIGNvbnN0IHsgcmFkaXVzLCByYWRpdXNUb3BSaWdodCwgcmFkaXVzQm90dG9tUmlnaHQsIHJhZGl1c0JvdHRvbUxlZnQsIHJhZGl1c1RvcExlZnQgfSA9IHN0eWxlcztcblxuICBpZiAocmFkaXVzKSB7XG4gICAgY29uc3QgYm9yZGVyUmFkaXVzU2l6ZSA9IHJhZGl1cyA9PT0gdHJ1ZSA/IFwic1wiIDogcmFkaXVzO1xuXG4gICAgcmV0dXJuIGJvcmRlclJhZGl1c1NpemUgPyBib3JkZXJTdHlsZXNbYGJvcmRlcl9fcmFkaXVzLS0ke2JvcmRlclJhZGl1c1NpemV9YF0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gW1xuICAgIHJhZGl1c1RvcFJpZ2h0ID8gYm9yZGVyU3R5bGVzW2Bib3JkZXJSYWRpdXNUb3BSaWdodC0tJHtyYWRpdXNUb3BSaWdodH1gXSA6IHVuZGVmaW5lZCxcbiAgICByYWRpdXNCb3R0b21SaWdodCA/IGJvcmRlclN0eWxlc1tgYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLSR7cmFkaXVzQm90dG9tUmlnaHR9YF0gOiB1bmRlZmluZWQsXG4gICAgcmFkaXVzQm90dG9tTGVmdCA/IGJvcmRlclN0eWxlc1tgYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tJHtyYWRpdXNCb3R0b21MZWZ0fWBdIDogdW5kZWZpbmVkLFxuICAgIHJhZGl1c1RvcExlZnQgPyBib3JkZXJTdHlsZXNbYGJvcmRlclJhZGl1c1RvcExlZnQtLSR7cmFkaXVzVG9wTGVmdH1gXSA6IHVuZGVmaW5lZCxcbiAgXTtcbn07XG4iLCAiaW1wb3J0IGJvcmRlclN0eWxlcyBmcm9tIFwiLi9ib3JkZXIubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgQm9yZGVyU2lkZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmltcG9ydCB7IGNhcGl0YWxpemUgYXMgbG9kYXNoQ2FwaXRhbGl6ZSB9IGZyb20gXCJsb2Rhc2gvZnBcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTaWRlU3R5bGVzIHtcbiAgdG9wPzogQm9yZGVyU2lkZTtcbiAgcmlnaHQ/OiBCb3JkZXJTaWRlO1xuICBib3R0b20/OiBCb3JkZXJTaWRlO1xuICBsZWZ0PzogQm9yZGVyU2lkZTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldFNpZGVTdHlsZXMgPSAoc2lkZXM6IFNpZGVTdHlsZXMpID0+IFtcbiAgLi4uZ2V0U3BlY2lmaWNTaWRlU3R5bGVzKFwidG9wXCIsIHNpZGVzKSxcbiAgLi4uZ2V0U3BlY2lmaWNTaWRlU3R5bGVzKFwicmlnaHRcIiwgc2lkZXMpLFxuICAuLi5nZXRTcGVjaWZpY1NpZGVTdHlsZXMoXCJib3R0b21cIiwgc2lkZXMpLFxuICAuLi5nZXRTcGVjaWZpY1NpZGVTdHlsZXMoXCJsZWZ0XCIsIHNpZGVzKSxcbl07XG5cbmNvbnN0IGdldFNwZWNpZmljU2lkZVN0eWxlcyA9IChzaWRlOiBrZXlvZiBTaWRlU3R5bGVzLCBzaWRlczogU2lkZVN0eWxlcykgPT4ge1xuICBjb25zdCB7IHdpZHRoLCBjb2xvciB9ID0gc2lkZXNbc2lkZV0gPz8ge307XG4gIGNvbnN0IHNpZGVOYW1lID0gY2FwaXRhbGl6ZShzaWRlKTtcblxuICByZXR1cm4gW1xuICAgIHdpZHRoID8gYm9yZGVyU3R5bGVzW2Bib3JkZXIke3NpZGVOYW1lfV9fd2lkdGgtLSR7d2lkdGh9YF0gOiB1bmRlZmluZWQsXG4gICAgY29sb3IgPyBib3JkZXJTdHlsZXNbYGJvcmRlciR7c2lkZU5hbWV9X19jb2xvci0tJHtjb2xvcn1gXSA6IHVuZGVmaW5lZCxcbiAgXTtcbn07XG5cbmNvbnN0IGNhcGl0YWxpemUgPSA8VCBleHRlbmRzIHN0cmluZz4odGFyZ2V0OiBUKSA9PiBsb2Rhc2hDYXBpdGFsaXplKHRhcmdldCkgYXMgQ2FwaXRhbGl6ZTxUPjtcbiIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGZvbnRTdHlsZXMgZnJvbSBcIi4vZm9udC5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBGb250U2l6ZSA9IFwieHhzXCIgfCBcInhzXCIgfCBcInNcIiB8IFwibVwiIHwgXCJsXCIgfCBcInhsXCIgfCBcInh4bFwiIHwgXCIzeGxcIiB8IFwiNHhsXCI7XG5cbmV4cG9ydCB0eXBlIEZvbnRCb2xkID0gXCI2MDBcIjtcblxuZXhwb3J0IHR5cGUgRm9udExpbmVIZWlnaHQgPSBcIm5vbmVcIiB8IFwidGlnaHRcIiB8IFwibm9ybWFsXCIgfCBcImxvb3NlXCI7XG5cbmV4cG9ydCB0eXBlIEZvbnRQbHVnaW5Qcm9wcyA9IHtcbiAgJGZvbnQ/OlxuICAgIHwgYm9vbGVhblxuICAgIHwge1xuICAgICAgICBzaXplPzogRm9udFNpemU7XG4gICAgICAgIGl0YWxpYz86IGJvb2xlYW47XG4gICAgICAgIGJvbGQ/OiBib29sZWFuIHwgRm9udEJvbGQ7XG4gICAgICAgIGxpbmVIZWlnaHQ/OiBGb250TGluZUhlaWdodDtcbiAgICAgICAgZm9yY2VXcmFwPzogYm9vbGVhbjtcbiAgICAgICAgbm9XcmFwPzogYm9vbGVhbjtcbiAgICAgICAgdXBwZXJjYXNlPzogYm9vbGVhbjtcbiAgICAgICAgdW5kZXJsaW5lPzogYm9vbGVhbjtcbiAgICAgICAgdGV4dE92ZXJmbG93PzogXCJjbGlwXCIgfCBcImVsbGlwc2lzXCIgfCBcImRlZmF1bHRcIjtcbiAgICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZm9udFBsdWdpbiA9IGdldFBsdWdpbjxGb250UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJGZvbnQpIHtcbiAgICByZXR1cm4geyAkZm9udDogdW5kZWZpbmVkIH07XG4gIH1cblxuICBjb25zdCB7XG4gICAgc2l6ZSA9IHVuZGVmaW5lZCxcbiAgICBib2xkID0gZmFsc2UsXG4gICAgbGluZUhlaWdodCA9IHVuZGVmaW5lZCxcbiAgICBub1dyYXAgPSBmYWxzZSxcbiAgICB1cHBlcmNhc2UgPSBmYWxzZSxcbiAgICBpdGFsaWMgPSBmYWxzZSxcbiAgICBmb3JjZVdyYXAgPSBmYWxzZSxcbiAgICB1bmRlcmxpbmUgPSBmYWxzZSxcbiAgICB0ZXh0T3ZlcmZsb3cgPSBcImRlZmF1bHRcIixcbiAgfSA9IHByb3BzLiRmb250ID09PSB0cnVlID8ge30gOiBwcm9wcy4kZm9udDtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHByb3BzLiRjbGFzc05hbWUsXG4gICAgICBzaXplID8gZm9udFN0eWxlc1tgZm9udF9fc2l6ZS0tJHtzaXplfWBdIDogdW5kZWZpbmVkLFxuICAgICAgYm9sZCA9PT0gdHJ1ZSA/IGZvbnRTdHlsZXNbXCJmb250LS1ib2xkXCJdIDogYm9sZCA/IGZvbnRTdHlsZXNbYGZvbnQtLXdlaWdodC0ke2JvbGR9YF0gOiB1bmRlZmluZWQsXG4gICAgICBsaW5lSGVpZ2h0ID8gZm9udFN0eWxlc1tgZm9udF9fbGluZS1oZWlnaHQtLSR7bGluZUhlaWdodH1gXSA6IHVuZGVmaW5lZCxcbiAgICAgIHRleHRPdmVyZmxvdyA9PT0gXCJkZWZhdWx0XCIgPyB1bmRlZmluZWQgOiBmb250U3R5bGVzW2Bmb250LS10ZXh0LW92ZXJmbG93LS0ke3RleHRPdmVyZmxvd31gXSxcbiAgICAgIHtcbiAgICAgICAgW2ZvbnRTdHlsZXNbXCJmb250LS1uby13cmFwXCJdXTogbm9XcmFwLFxuICAgICAgICBbZm9udFN0eWxlc1tcImZvbnQtLWZvcmNlLXdyYXBcIl1dOiBmb3JjZVdyYXAsXG4gICAgICAgIFtmb250U3R5bGVzW1wiZm9udC0taXRhbGljXCJdXTogaXRhbGljLFxuICAgICAgICBbZm9udFN0eWxlc1tcImZvbnQtLXVwcGVyY2FzZVwiXV06IHVwcGVyY2FzZSxcbiAgICAgICAgW2ZvbnRTdHlsZXNbXCJmb250LS11bmRlcmxpbmVcIl1dOiB1bmRlcmxpbmUsXG4gICAgICB9LFxuICAgIF0sXG4gICAgJGZvbnQ6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2ZvbnQvZm9udC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImZvbnRfX3NpemUtLXh4c1wiOiBcImZvbnQtbW9kdWxlX19mb250X19zaXplLS14eHNfX19LSjJRLVwiLFxuICBcImZvbnRfX3NpemUtLXhzXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLXhzX19feEVhVTlcIixcbiAgXCJmb250X19zaXplLS1zXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLXNfX19UYm5NbFwiLFxuICBcImZvbnRfX3NpemUtLW1cIjogXCJmb250LW1vZHVsZV9fZm9udF9fc2l6ZS0tbV9fX2ZESkFqXCIsXG4gIFwiZm9udF9fc2l6ZS0tbFwiOiBcImZvbnQtbW9kdWxlX19mb250X19zaXplLS1sX19fdUtjdWtcIixcbiAgXCJmb250X19zaXplLS14bFwiOiBcImZvbnQtbW9kdWxlX19mb250X19zaXplLS14bF9fX1JlaG9RXCIsXG4gIFwiZm9udF9fc2l6ZS0teHhsXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLXh4bF9fX0Nnb0tQXCIsXG4gIFwiZm9udF9fc2l6ZS0tM3hsXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLTN4bF9fX3NDSWV6XCIsXG4gIFwiZm9udF9fc2l6ZS0tNHhsXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLTR4bF9fX0E1a3NlXCIsXG4gIFwiZm9udF9fbGluZS1oZWlnaHQtLW5vbmVcIjogXCJmb250LW1vZHVsZV9fZm9udF9fbGluZS1oZWlnaHQtLW5vbmVfX18xc0k5S1wiLFxuICBcImZvbnRfX2xpbmUtaGVpZ2h0LS10aWdodFwiOiBcImZvbnQtbW9kdWxlX19mb250X19saW5lLWhlaWdodC0tdGlnaHRfX19yLUVCOVwiLFxuICBcImZvbnRfX2xpbmUtaGVpZ2h0LS1ub3JtYWxcIjogXCJmb250LW1vZHVsZV9fZm9udF9fbGluZS1oZWlnaHQtLW5vcm1hbF9fX3JKNFZOXCIsXG4gIFwiZm9udF9fbGluZS1oZWlnaHQtLWxvb3NlXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX2xpbmUtaGVpZ2h0LS1sb29zZV9fX2RwelMtXCIsXG4gIFwiZm9udC0tYm9sZFwiOiBcImZvbnQtbW9kdWxlX19mb250LS1ib2xkX19fYmplLWJcIixcbiAgXCJmb250LS13ZWlnaHQtNjAwXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnQtLXdlaWdodC02MDBfX19FZ2R6bVwiLFxuICBcImZvbnQtLW5vLXdyYXBcIjogXCJmb250LW1vZHVsZV9fZm9udC0tbm8td3JhcF9fX3FiUlJPXCIsXG4gIFwiZm9udC0tZm9yY2Utd3JhcFwiOiBcImZvbnQtbW9kdWxlX19mb250LS1mb3JjZS13cmFwX19fT0dDRnpcIixcbiAgXCJmb250LS11cHBlcmNhc2VcIjogXCJmb250LW1vZHVsZV9fZm9udC0tdXBwZXJjYXNlX19fdlFYbW5cIixcbiAgXCJmb250LS1pdGFsaWNcIjogXCJmb250LW1vZHVsZV9fZm9udC0taXRhbGljX19fSkg0VFpcIixcbiAgXCJmb250LS11bmRlcmxpbmVcIjogXCJmb250LW1vZHVsZV9fZm9udC0tdW5kZXJsaW5lX19fZDRvbkxcIixcbiAgXCJmb250LS10ZXh0LW92ZXJmbG93LS1lbGxpcHNpc1wiOiBcImZvbnQtbW9kdWxlX19mb250LS10ZXh0LW92ZXJmbG93LS1lbGxpcHNpc19fX0hxZlgtXCIsXG4gIFwiZm9udC0tdGV4dC1vdmVyZmxvdy0tY2xpcFwiOiBcImZvbnQtbW9kdWxlX19mb250LS10ZXh0LW92ZXJmbG93LS1jbGlwX19fOTZ4QjlcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vYm94LXNoYWRvdy5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBCb3hTaGFkb3dQbHVnaW5Qcm9wcyA9IHtcbiAgJGJveFNoYWRvdz86IGJvb2xlYW4gfCBcImVsZXZhdGVkXCIgfCBcInN1YnRsZVwiO1xufTtcblxuZXhwb3J0IGNvbnN0IGJveFNoYWRvd1BsdWdpbiA9IGdldFBsdWdpbjxCb3hTaGFkb3dQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgaWYgKCFwcm9wcy4kYm94U2hhZG93KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICRib3hTaGFkb3c6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgdmFyaWFudCA9IHByb3BzLiRib3hTaGFkb3cgPT09IHRydWUgPyBcImVsZXZhdGVkXCIgOiBwcm9wcy4kYm94U2hhZG93O1xuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHN0eWxlc1tgYm94LXNoYWRvdy0tJHt2YXJpYW50fWBdXSxcbiAgICAkYm94U2hhZG93OiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9ib3gtc2hhZG93L2JveC1zaGFkb3cubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJib3gtc2hhZG93LS1lbGV2YXRlZFwiOiBcImJveC1zaGFkb3ctbW9kdWxlX19ib3gtc2hhZG93LS1lbGV2YXRlZF9fX2phaDdmXCIsXG4gIFwiYm94LXNoYWRvdy0tc3VidGxlXCI6IFwiYm94LXNoYWRvdy1tb2R1bGVfX2JveC1zaGFkb3ctLXN1YnRsZV9fX1ZvNnhNXCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL25vLXBvaW50ZXItZXZlbnRzLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIE5vUG9pbnRlckV2ZW50c1BsdWdpblByb3BzID0geyAkbm9Qb2ludGVyRXZlbnRzPzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3Qgbm9Qb2ludGVyRXZlbnRzUGx1Z2luID0gZ2V0UGx1Z2luPE5vUG9pbnRlckV2ZW50c1BsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHsgW3N0eWxlc1tcIm5vLXBvaW50ZXItZXZlbnRzXCJdXTogcHJvcHMuJG5vUG9pbnRlckV2ZW50cyB9XSxcbiAgJG5vUG9pbnRlckV2ZW50czogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL25vLXBvaW50ZXItZXZlbnRzL25vLXBvaW50ZXItZXZlbnRzLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwibm8tcG9pbnRlci1ldmVudHNcIjogXCJuby1wb2ludGVyLWV2ZW50cy1tb2R1bGVfX25vLXBvaW50ZXItZXZlbnRzX19fN21GMGJcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcblxuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBpc0RlZmluZWQgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IE11dGFibGVSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuLy8gU2ltcGxpZmllZCB0eXBlIHNpbmNlIFJlZkNhbGxiYWNrIGZyb20gXCJyZWFjdFwiIGNhdXNlcyBVTkRFRklORURfVk9JRF9PTkxZIGVycm9yXG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vQ29uZnVzaW5nVm9pZFR5cGU6IHZvaWQgdHlwaW5nIHJlcXVpcmVkXG50eXBlIFJlZkNhbGxiYWNrPFQ+ID0gKGluc3RhbmNlOiBUIHwgbnVsbCkgPT4gdW5kZWZpbmVkIHwgdm9pZCB8ICgoKSA9PiBhbnkpO1xuXG5leHBvcnQgdHlwZSBSZWZMaWtlPFQ+ID0gUmVmQ2FsbGJhY2s8VD4gfCBSZWFjdC5NdXRhYmxlUmVmT2JqZWN0PFQgfCBudWxsPiB8IFJlYWN0LlJlZk9iamVjdDxUPiB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IHR5cGUgJFJlZlByb3A8VD4gPSBSZWZMaWtlPFQ+IHwgJFJlZlByb3A8VD5bXTtcblxuZXhwb3J0IHR5cGUgUmVmUGx1Z2luUHJvcHM8VD4gPSB7XG4gICRyZWY/OiAkUmVmUHJvcDxUPjtcbiAgcmVmPzogUmVmTGlrZTxUPjtcbn07XG5cbmV4cG9ydCB0eXBlIFJlZlBsdWdpbjxUPiA9IFBsdWdpbjxSZWZQbHVnaW5Qcm9wczxUPiwgdW5rbm93bj47XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZQbHVnaW48VCA9IEhUTUxFbGVtZW50PigpIHtcbiAgcmV0dXJuIGdldFBsdWdpbjxSZWZQbHVnaW5Qcm9wczxUPj4oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyAkcmVmIH0gPSBwcm9wcztcbiAgICBjb25zdCBwcmV2UmVmcyA9IHVzZVJlZihuZXcgU2V0PFJlZkxpa2U8VD4+KCkpO1xuICAgIGNvbnN0IGVsZW1lbnRSZWYgPSB1c2VSZWY8VCB8IG51bGw+KG51bGwpO1xuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IFdlIGRvIG5vdCB3YW50IHRvIHJ1biB0aGlzIG11bHRpcGxlIHRpbWVzXG4gICAgY29uc3QgcmVmID0gdXNlQ2FsbGJhY2soKGN1cnJlbnQ6IFQpID0+IHtcbiAgICAgIGNvbnN0IGZpcnN0UmVmcyA9IGZsYXR0ZW5SZWZzKCRyZWYpO1xuXG4gICAgICBmaXJzdFJlZnMuZm9yRWFjaChoYW5kbGVSZWZzRm9yKGN1cnJlbnQpKTtcbiAgICAgIHByZXZSZWZzLmN1cnJlbnQgPSBmaXJzdFJlZnM7XG4gICAgICBlbGVtZW50UmVmLmN1cnJlbnQgPSBjdXJyZW50O1xuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBwcmV2UmVmcy5jdXJyZW50LmZvckVhY2goaGFuZGxlUmVmc0ZvcjxUPihudWxsKSk7XG4gICAgICB9O1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBmaXJzdFJlbmRlciA9IHVzZVJlZih0cnVlKTtcblxuICAgIGlmICghZmlyc3RSZW5kZXIuY3VycmVudCkge1xuICAgICAgY29uc3QgY3VycmVudFJlZnMgPSBmbGF0dGVuUmVmcygkcmVmKTtcbiAgICAgIGNvbnN0IGFkZGVkUmVmcyA9IGN1cnJlbnRSZWZzLmRpZmZlcmVuY2UocHJldlJlZnMuY3VycmVudCk7XG4gICAgICBjb25zdCByZW1vdmVkUmVmcyA9IHByZXZSZWZzLmN1cnJlbnQuZGlmZmVyZW5jZShjdXJyZW50UmVmcyk7XG5cbiAgICAgIGFkZGVkUmVmcy5mb3JFYWNoKGhhbmRsZVJlZnNGb3I8VD4oZWxlbWVudFJlZi5jdXJyZW50KSk7XG4gICAgICByZW1vdmVkUmVmcy5mb3JFYWNoKGhhbmRsZVJlZnNGb3I8VD4obnVsbCkpO1xuICAgICAgcHJldlJlZnMuY3VycmVudCA9IGN1cnJlbnRSZWZzO1xuICAgIH1cblxuICAgIGZpcnN0UmVuZGVyLmN1cnJlbnQgPSBmYWxzZTtcblxuICAgIHJldHVybiB7XG4gICAgICByZWYsXG4gICAgICAkcmVmOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfSk7XG59XG5cbmNvbnN0IGZsYXR0ZW5SZWZzID0gPFQsPihyZWZzOiAkUmVmUHJvcDxUPik6IFNldDxSZWZMaWtlPFQ+PiA9PlxuICBuZXcgU2V0KChbcmVmc10uZmxhdChJbmZpbml0eSBhcyAxKSBhcyBBcnJheTxOb25OdWxsYWJsZTxSZWZMaWtlPFQ+Pj4pLmZpbHRlcihpc0RlZmluZWQpKTtcblxuY29uc3QgaGFuZGxlUmVmc0ZvciA9XG4gIDxULD4odmFsdWU6IFQgfCBudWxsKSA9PlxuICAocmVmczogJFJlZlByb3A8VD4pID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZWZzKSkge1xuICAgICAgcmVmcy5mb3JFYWNoKGhhbmRsZVJlZnNGb3IodmFsdWUpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZWZzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJlZnModmFsdWUpO1xuICAgIH0gZWxzZSBpZiAocmVmcykge1xuICAgICAgKHJlZnMgYXMgTXV0YWJsZVJlZk9iamVjdDxUIHwgbnVsbD4pLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICB9XG4gIH07XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBjc3NOYW1lcywgdHlwZSBJQ2xhc3NOYW1lIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcblxuZXhwb3J0IHR5cGUgQ2xhc3NOYW1lUGx1Z2luUHJvcHMgPSB7ICRjbGFzc05hbWU/OiBJQ2xhc3NOYW1lOyBjbGFzc05hbWU/OiBzdHJpbmcgfTtcblxubGV0IHNob3dDbHV0dGVyID0gdHJ1ZTtcblxuZXhwb3J0IGNvbnN0IGNsYXNzTmFtZVBsdWdpbiA9IGdldFBsdWdpbjxDbGFzc05hbWVQbHVnaW5Qcm9wcz4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IGNsYXNzTmFtZSA9IGNzc05hbWVzKHByb3BzLmNsYXNzTmFtZSwgcHJvcHMuJGNsYXNzTmFtZSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi4oY2xhc3NOYW1lID8geyBjbGFzc05hbWU6IHNob3dDbHV0dGVyID8gY2xhc3NOYW1lIDogcmVtb3ZlQ2x1dHRlcihjbGFzc05hbWUpIH0gOiB7fSksXG4gICAgJGNsYXNzTmFtZTogdW5kZWZpbmVkLFxuICB9O1xufSk7XG5cbmNvbnN0IHJlbW92ZUNsdXR0ZXIgPSAoY2xhc3NOYW1lOiBzdHJpbmcpID0+XG4gIGNsYXNzTmFtZS5yZXBsYWNlKC9fX18uKj8oPz1cXHN8JCkvZywgXCJcIikucmVwbGFjZSgvXFxiW2EtekEtWjAtOS1dKy1tb2R1bGVfXy9nLCBcIlwiKTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUNzc01vZHVsZUNsdXR0ZXJGb3JVbml0VGVzdGluZyA9ICgpID0+IHtcbiAgc2hvd0NsdXR0ZXIgPSBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaG93Q3NzTW9kdWxlQ2x1dHRlckZvclByb2R1Y3Rpb24gPSAoKSA9PiB7XG4gIHNob3dDbHV0dGVyID0gdHJ1ZTtcbn07XG4iLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCByZWxhdGl2ZVN0eWxlcyBmcm9tIFwiLi9yZWxhdGl2ZS5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBSZWxhdGl2ZVBsdWdpblByb3BzID0geyAkcmVsYXRpdmU/OiBib29sZWFuOyAkZml4ZWQ/OiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCByZWxhdGl2ZVBsdWdpbiA9IGdldFBsdWdpbjxSZWxhdGl2ZVBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW1xuICAgIHByb3BzLiRjbGFzc05hbWUsXG4gICAgeyBbcmVsYXRpdmVTdHlsZXMucmVsYXRpdmVdOiAhIXByb3BzLiRyZWxhdGl2ZSwgW3JlbGF0aXZlU3R5bGVzLmZpeGVkXTogISFwcm9wcy4kZml4ZWQgfSxcbiAgXSxcbiAgJGZpeGVkOiB1bmRlZmluZWQsXG4gICRyZWxhdGl2ZTogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3JlbGF0aXZlL3JlbGF0aXZlLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwicmVsYXRpdmVcIjogXCJyZWxhdGl2ZS1tb2R1bGVfX3JlbGF0aXZlX19fa3dNNXFcIixcbiAgXCJmaXhlZFwiOiBcInJlbGF0aXZlLW1vZHVsZV9fZml4ZWRfX19Dc1hIRFwiXG59OyIsICJleHBvcnQgdHlwZSBEcmFnZ2FibGVQbHVnaW5Qcm9wczxUID0gYW55PiA9IHtcbiAgJGRyYWdnYWJsZT86IHtcbiAgICBjb250ZXh0OiBEcmFnZ2FibGVDb250ZXh0PFQ+O1xuICAgIGl0ZW06IFQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBEcm9wcGFibGVQbHVnaW5Qcm9wczxUID0gYW55PiA9IHtcbiAgJGRyb3BwYWJsZT86IHtcbiAgICBjb250ZXh0OiBEcmFnZ2FibGVDb250ZXh0PFQ+O1xuICAgIG9uRHJvcDogKGl0ZW06IFQpID0+IHZvaWQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBEcmFnZ2FibGVDb250ZXh0PERyYWdnZWRJdGVtPiA9IHtcbiAgZHJhZ2dhYmxlOiAoaXRlbTogRHJhZ2dlZEl0ZW0pID0+IE5vbk51bGxhYmxlPERyYWdnYWJsZVBsdWdpblByb3BzPERyYWdnZWRJdGVtPltgJGRyYWdnYWJsZWBdPjtcbiAgZHJvcHBhYmxlOiAob25Ecm9wOiAoaXRlbTogRHJhZ2dlZEl0ZW0pID0+IHZvaWQpID0+IE5vbk51bGxhYmxlPERyb3BwYWJsZVBsdWdpblByb3BzPERyYWdnZWRJdGVtPltcIiRkcm9wcGFibGVcIl0+O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERyYWdnYWJsZUNvbnRleHQgPSA8RHJhZ2dlZEl0ZW0+KCk6IERyYWdnYWJsZUNvbnRleHQ8RHJhZ2dlZEl0ZW0+ID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHtcbiAgICBkcmFnZ2FibGU6IChpdGVtOiBEcmFnZ2VkSXRlbSkgPT4gKHtcbiAgICAgIGNvbnRleHQsXG4gICAgICBpdGVtLFxuICAgIH0pLFxuXG4gICAgZHJvcHBhYmxlOiAob25Ecm9wOiAoaXRlbTogRHJhZ2dlZEl0ZW0pID0+IHZvaWQpID0+ICh7XG4gICAgICBjb250ZXh0LFxuICAgICAgb25Ecm9wLFxuICAgIH0pLFxuICB9O1xuXG4gIHJldHVybiBjb250ZXh0O1xufTtcbiIsICJpbXBvcnQgeyBnZXRGZWF0dXJlIH0gZnJvbSBcIkBrOHNsZW5zL2ZlYXR1cmUtY29yZVwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJJbmplY3RhYmxlc0Zyb21Nb2R1bGVzIH0gZnJvbSBcIkBrOHNsZW5zL2ZlYXR1cmUtY29yZVwiO1xuaW1wb3J0IG1vZHVsZXNXaXRoSW5qZWN0YWJsZXMgZnJvbSBcIi4vKiovKi5pbmplY3RhYmxlLih0c3x0c3gpXCI7XG5cbmV4cG9ydCBjb25zdCBlbGVtZW50Q29tcG9uZW50RmVhdHVyZSA9IGdldEZlYXR1cmUoe1xuICBpZDogXCJlbGVtZW50LWNvbXBvbmVudFwiLFxuICByZWdpc3RlcjogKGRpKSA9PiByZWdpc3RlckluamVjdGFibGVzRnJvbU1vZHVsZXMoZGksIG1vZHVsZXNXaXRoSW5qZWN0YWJsZXMpLFxuICAvLyBObyBmZWF0dXJlIGRlcGVuZGVuY2llczogYSBkZXNpZ24gc3lzdGVtIGV2ZXJ5b25lIG1heSBpbnN0YWxsIGNhbm5vdCBkcmFnXG4gIC8vIExlbnMgZmVhdHVyZXMgaW50byB0aGUgY2xvc3VyZS4gVGhlIGNsb2NrIHRoZSBob3ZlcmFibGUgcGx1Z2luIG5lZWRzIGlzXG4gIC8vIGxvY2FsLCBhbmQgdGhlIHBsYXRmb3JtIGlzIHJlYWQgZGlyZWN0bHkuXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5cbi8qKlxuICogV2hldGhlciB0aGUga2V5Ym9hcmQgY29udmVudGlvbnMgb2YgbWFjT1MgYXBwbHkuXG4gKlxuICogUmVhZCBmcm9tIHRoZSBicm93c2VyIHJhdGhlciB0aGFuIGZyb20gYHByb2Nlc3NgIG9yIHRoZSB2YXJzIGZlYXR1cmU6IHRoaXMgaXNcbiAqIGEgcmVuZGVyZXItb25seSBkZXNpZ24gc3lzdGVtLCBpdCBtYXkgbm90IGRlcGVuZCBvbiBhIGZlYXR1cmUgcGFja2FnZSwgYW5kXG4gKiBgcHJvY2Vzc2AgaXMgbm90IHRoZXJlIHRvIHJlYWQgb25jZSB0aGUgcmVuZGVyZXIgc3RvcHMgcnVubmluZyB3aXRoIG5vZGVcbiAqIGludGVncmF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgaXNNYWNJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJpcy1tYWNcIixcblxuICBpbnN0YW50aWF0ZTogKCkgPT4gKCkgPT4ge1xuICAgIGNvbnN0IHsgdXNlckFnZW50RGF0YSwgcGxhdGZvcm0sIHVzZXJBZ2VudCB9ID0gbmF2aWdhdG9yIGFzIE5hdmlnYXRvciAmIHtcbiAgICAgIHJlYWRvbmx5IHVzZXJBZ2VudERhdGE/OiB7IHJlYWRvbmx5IHBsYXRmb3JtPzogc3RyaW5nIH07XG4gICAgfTtcblxuICAgIHJldHVybiAvbWFjL2kudGVzdCh1c2VyQWdlbnREYXRhPy5wbGF0Zm9ybSA/PyBwbGF0Zm9ybSA/PyB1c2VyQWdlbnQgPz8gXCJcIik7XG4gIH0sXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBtYXRjaGVzIH0gZnJvbSBcImxvZGFzaC9mcFwiO1xuaW1wb3J0IHsgaXNNYWNJbmplY3RhYmxlIH0gZnJvbSBcIi4vaXMtbWFjLmluamVjdGFibGVcIjtcblxuZXhwb3J0IGNvbnN0IG9uUmlnaHRUcmlnZ2VySW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwib24tcmlnaHQtdHJpZ2dlclwiLFxuXG4gIGluc3RhbnRpYXRlOiAoZGkpID0+IHtcbiAgICBjb25zdCBpc01hYyA9IGRpLmluamVjdChpc01hY0luamVjdGFibGUpO1xuXG4gICAgcmV0dXJuICgpID0+IG9uUmlnaHRUcmlnZ2VyRm9yKGlzTWFjKCkgPyBpc01hY29zU2hvcnRjdXQgOiBpc0xpbnV4T3JXaW5kb3dzU2hvcnRjdXQpO1xuICB9LFxufSk7XG5cbmNvbnN0IG9uUmlnaHRUcmlnZ2VyRm9yID1cbiAgPFQ+KGNiOiAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQ8VD4pID0+IGJvb2xlYW4pID0+XG4gIChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxUPiwgY2FsbGJhY2s6IFJlYWN0LktleWJvYXJkRXZlbnRIYW5kbGVyPFQ+KSA9PiB7XG4gICAgaWYgKGNiKGV2ZW50KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNhbGxiYWNrKGV2ZW50KTtcbiAgICB9XG4gIH07XG5cbmNvbnN0IGlzTWFjb3NTaG9ydGN1dCA9IG1hdGNoZXMoe1xuICBzaGlmdEtleTogZmFsc2UsXG4gIGFsdEtleTogZmFsc2UsXG4gIGN0cmxLZXk6IGZhbHNlLFxuICBtZXRhS2V5OiB0cnVlLFxuICBjb2RlOiBcIkVudGVyXCIsXG59KTtcblxuY29uc3QgaXNMaW51eE9yV2luZG93c1Nob3J0Y3V0ID0gbWF0Y2hlcyh7XG4gIHNoaWZ0S2V5OiBmYWxzZSxcbiAgYWx0S2V5OiBmYWxzZSxcbiAgY3RybEtleTogdHJ1ZSxcbiAgbWV0YUtleTogZmFsc2UsXG4gIGNvZGU6IFwiRW50ZXJcIixcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcblxuZXhwb3J0IGNvbnN0IG1ha2VTdXJlRHJhZ0FuZERyb3BFdmVudHNIYXZlVGltZVRvSGFwcGVuSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwibWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW5cIixcblxuICBpbnN0YW50aWF0ZTogKCkgPT4gKCkgPT4gKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH0sIDUwKTtcbiAgfSxcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuXG5leHBvcnQgdHlwZSBOYXZpZ2FibGVFbnRyeSA9IHtcbiAgcmVhZG9ubHkgaXRlbTogdW5rbm93bjtcbiAgcmVhZG9ubHkgb3JkZXJOdW1iZXI6IG51bWJlcjtcbiAgcmVhZG9ubHkgZWxlbWVudDogSFRNTEVsZW1lbnQ7XG59O1xuXG50eXBlIE5hdmlnYWJsZUNvbnRleHQgPSBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQ8YW55PjtcblxuLyoqXG4gKiBUaGUgbWVtYmVycyBvZiBldmVyeSBrZXlib2FyZC1uYXZpZ2FibGUgY29udGV4dCwgYW5kIHRoZSBvcmRlciB0aGUgY29udGV4dHMgYXBwZWFyZWQgaW4uIEZvY3VzXG4gKiBiZWxvbmdzIHRvIHRoZSBjb250ZXh0IHRoYXQgYXBwZWFyZWQgbGFzdDsgd2hlbiBpdCBnb2VzIGF3YXksIHRoZSBwcmV2aW91cyBvbmUgdGFrZXMgaXQgYmFjay5cbiAqL1xuZXhwb3J0IGNvbnN0IGtleWJvYXJkTmF2aWdhdGlvblN0YXRlSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwia2V5Ym9hcmQtbmF2aWdhdGlvbi1zdGF0ZVwiLFxuXG4gIGluc3RhbnRpYXRlOiAoKSA9PiB7XG4gICAgY29uc3QgZW50cmllc0J5Q29udGV4dCA9IG5ldyBNYXA8TmF2aWdhYmxlQ29udGV4dCwgU2V0PE5hdmlnYWJsZUVudHJ5Pj4oKTtcbiAgICBjb25zdCBjb250ZXh0U3RhY2s6IE5hdmlnYWJsZUNvbnRleHRbXSA9IFtdO1xuXG4gICAgY29uc3QgZW50cmllc09mID0gKGNvbnRleHQ6IE5hdmlnYWJsZUNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gZW50cmllc0J5Q29udGV4dC5nZXQoY29udGV4dCk7XG5cbiAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNyZWF0ZWQgPSBuZXcgU2V0PE5hdmlnYWJsZUVudHJ5PigpO1xuXG4gICAgICBlbnRyaWVzQnlDb250ZXh0LnNldChjb250ZXh0LCBjcmVhdGVkKTtcblxuICAgICAgcmV0dXJuIGNyZWF0ZWQ7XG4gICAgfTtcblxuICAgIHJldHVybiAoKSA9PiAoe1xuICAgICAgc29ydGVkRW50cmllc09mOiAoY29udGV4dDogTmF2aWdhYmxlQ29udGV4dCkgPT5cbiAgICAgICAgWy4uLmVudHJpZXNPZihjb250ZXh0KV0uc29ydCgoYSwgYikgPT4gYS5vcmRlck51bWJlciAtIGIub3JkZXJOdW1iZXIpLFxuXG4gICAgICBjb250ZXh0SW5Gb2N1czogKCkgPT4gY29udGV4dFN0YWNrLmF0KC0xKSxcblxuICAgICAgcmVnaXN0ZXI6IChjb250ZXh0OiBOYXZpZ2FibGVDb250ZXh0LCBlbnRyeTogTmF2aWdhYmxlRW50cnkpID0+IHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IGVudHJpZXNPZihjb250ZXh0KTtcblxuICAgICAgICBpZiAoZW50cmllcy5zaXplID09PSAwKSB7XG4gICAgICAgICAgY29udGV4dFN0YWNrLnB1c2goY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBlbnRyaWVzLmFkZChlbnRyeSk7XG4gICAgICB9LFxuXG4gICAgICBkZXJlZ2lzdGVyOiAoY29udGV4dDogTmF2aWdhYmxlQ29udGV4dCwgZW50cnk6IE5hdmlnYWJsZUVudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBlbnRyaWVzT2YoY29udGV4dCk7XG5cbiAgICAgICAgZW50cmllcy5kZWxldGUoZW50cnkpO1xuXG4gICAgICAgIGlmIChlbnRyaWVzLnNpemUgPT09IDApIHtcbiAgICAgICAgICBjb25zdCBpbmRleEluU3RhY2sgPSBjb250ZXh0U3RhY2subGFzdEluZGV4T2YoY29udGV4dCk7XG5cbiAgICAgICAgICBpZiAoaW5kZXhJblN0YWNrICE9PSAtMSkge1xuICAgICAgICAgICAgY29udGV4dFN0YWNrLnNwbGljZShpbmRleEluU3RhY2ssIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfSxcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB7IGl0ZW1CZWluZ0hvdmVyZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuLi8uLi9pdGVtLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4uLy4uL2hvdmVyYWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBNdXRhYmxlUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gXCJtb2J4XCI7XG5cbmV4cG9ydCBjb25zdCBjb250ZXh0SXNCZWluZ0hvdmVyZWRJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJjb250ZXh0LWlzLWJlaW5nLWhvdmVyZWRcIixcbiAgY29uc3VtcHRpb25zOiBbaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuXSxcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgaXRlbUJlaW5nSG92ZXJlZCA9IGRpLmluamVjdChpdGVtQmVpbmdIb3ZlcmVkSW5qZWN0aW9uVG9rZW4pO1xuXG4gICAgcmV0dXJuIChjb250ZXh0OiBIb3ZlcmFibGVDb250ZXh0PE11dGFibGVSZWZPYmplY3Q8YW55Pj4pID0+IHtcbiAgICAgIGNvbnN0IGhvdmVyZWRJdGVtID0gaXRlbUJlaW5nSG92ZXJlZCgpKGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gY29tcHV0ZWQoKCkgPT4gISFob3ZlcmVkSXRlbS5nZXQoKSk7XG4gICAgfTtcbiAgfSxcbn0pO1xuIiwgImltcG9ydCB7IGdldFRlc3RVdGlsUnVubmFibGVGb3JPdmVycmlkZXMgfSBmcm9tIFwiQGs4c2xlbnMvdGVzdC11dGlsc1wiO1xuaW1wb3J0IGdsb2JhbE92ZXJyaWRlcyBmcm9tIFwiLi8qKi8qLmdsb2JhbC1vdmVycmlkZS1mb3ItaW5qZWN0YWJsZS4odHN8dHN4KVwiO1xuaW1wb3J0IGRlZmF1bHRPdmVycmlkZXMgZnJvbSBcIi4vKiovKi5kZWZhdWx0LW92ZXJyaWRlLih0c3x0c3gpXCI7XG5cbmV4cG9ydCBjb25zdCB0ZXN0VXRpbFJ1bm5hYmxlSW5qZWN0YWJsZSA9IGdldFRlc3RVdGlsUnVubmFibGVGb3JPdmVycmlkZXMoe1xuICBnbG9iYWxPdmVycmlkZXMsXG4gIGRlZmF1bHRPdmVycmlkZXMsXG59KTtcbiIsICJcblxuY29uc3QgbW9kdWxlcyA9IFtdO1xuXG5leHBvcnQgZGVmYXVsdCBtb2R1bGVzO1xuZXhwb3J0IGNvbnN0IGZpbGVuYW1lcyA9IFtdXG4iLCAiaW1wb3J0IHR5cGUgeyBEaUNvbnRhaW5lciB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBtYWtlU3VyZURyYWdBbmREcm9wRXZlbnRzSGF2ZVRpbWVUb0hhcHBlbkluamVjdGFibGUgfSBmcm9tIFwiLi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi5pbmplY3RhYmxlXCI7XG5cbi8vIFJ1bnMgdGhlIGNhbGxiYWNrIHN0cmFpZ2h0IGF3YXkgaW4gdGVzdHMsIGluc3RlYWQgb2YgYWZ0ZXIgdGhlIHJlYWwgZGVsYXkuXG5leHBvcnQgZGVmYXVsdCAoZGk6IERpQ29udGFpbmVyKSA9PiB7XG4gIGRpLm92ZXJyaWRlMihtYWtlU3VyZURyYWdBbmREcm9wRXZlbnRzSGF2ZVRpbWVUb0hhcHBlbkluamVjdGFibGUsICgpID0+ICgpID0+IChjYWxsYmFjazogKCkgPT4gdm9pZCkgPT4gY2FsbGJhY2soKSk7XG59O1xuIiwgImltcG9ydCB0eXBlIHsgRGlDb250YWluZXIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgdG9vbHRpcERlbGF5SW5qZWN0YWJsZSB9IGZyb20gXCIuL3Rvb2x0aXAtZGVsYXkuaW5qZWN0YWJsZVwiO1xuXG4vLyBObyBkZWxheSBpbiB0ZXN0cywgc28gYSB0b29sdGlwIGFwcGVhcnMgd2l0aG91dCBhbnlvbmUgYWR2YW5jaW5nIHRpbWVycy5cbi8vIFdyaXR0ZW4gYXMgYSBwbGFpbiBmdW5jdGlvbiByYXRoZXIgdGhhbiB0aHJvdWdoIGdldERlZmF1bHRNb2NraW5nT3ZlcnJpZGUsXG4vLyB3aGljaCBpcyBhbiBpZGVudGl0eSBmdW5jdGlvbiBpbiBhIHRlc3QgcGFja2FnZSB0aGlzIG9uZSBtYXkgbm90IGltcG9ydC5cbmV4cG9ydCBkZWZhdWx0IChkaTogRGlDb250YWluZXIpID0+IHtcbiAgZGkub3ZlcnJpZGUyKHRvb2x0aXBEZWxheUluamVjdGFibGUsICgpID0+ICgpID0+IHVuZGVmaW5lZCk7XG59O1xuIiwgImltcG9ydCB7IHJlbW92ZUNzc01vZHVsZUNsdXR0ZXJGb3JVbml0VGVzdGluZyB9IGZyb20gXCIuL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCBkZWZhdWx0ICgpID0+IHtcbiAgcmVtb3ZlQ3NzTW9kdWxlQ2x1dHRlckZvclVuaXRUZXN0aW5nKCk7XG59O1xuIiwgImltcG9ydCAqIGFzIG1vZHVsZTAgZnJvbSAnLi9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmRlZmF1bHQtb3ZlcnJpZGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTEgZnJvbSAnLi9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmRlZmF1bHQtb3ZlcnJpZGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTIgZnJvbSAnLi9yZW1vdmUtY3NzLW1vZHVsZS1jbHV0dGVyLmRlZmF1bHQtb3ZlcnJpZGUudHMnXG5cbmNvbnN0IG1vZHVsZXMgPSBbbW9kdWxlMCxtb2R1bGUxLG1vZHVsZTJdO1xuXG5leHBvcnQgZGVmYXVsdCBtb2R1bGVzO1xuZXhwb3J0IGNvbnN0IGZpbGVuYW1lcyA9IFsncGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi5kZWZhdWx0LW92ZXJyaWRlLnRzJywncGx1Z2lucy90b29sdGlwL3Rvb2x0aXAtZGVsYXkvdG9vbHRpcC1kZWxheS5kZWZhdWx0LW92ZXJyaWRlLnRzJywncmVtb3ZlLWNzcy1tb2R1bGUtY2x1dHRlci5kZWZhdWx0LW92ZXJyaWRlLnRzJ11cbiIsICJpbXBvcnQgKiBhcyBtb2R1bGUwIGZyb20gJy4vcGx1Z2lucy9jbGlja2FibGUvaXMtbWFjLmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTEgZnJvbSAnLi9wbHVnaW5zL2NsaWNrYWJsZS9vbi1yaWdodC10cmlnZ2VyLmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTIgZnJvbSAnLi9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL19zaGFyZWQvZHJhZ2dlZC1pdGVtLXN0YXRlLmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTMgZnJvbSAnLi9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2l0ZW0tYmVpbmctZHJhZ2dlZC5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGU0IGZyb20gJy4vcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGU1IGZyb20gJy4vcGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlNiBmcm9tICcuL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQvZm9jdXNhYmxlLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlNyBmcm9tICcuL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQva2V5Ym9hcmQtbmF2aWdhdGlvbi1zdGF0ZS5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGU4IGZyb20gJy4vcGx1Z2lucy9mb2N1c2FibGUvZG8tZm9jdXMuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlOSBmcm9tICcuL3BsdWdpbnMvZm9jdXNhYmxlL2l0ZW0tYmVpbmctZm9jdXNlZC5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMCBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2NvbXB1dGVkLW5vdy5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMSBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMiBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2l0ZW0tYmVpbmctaG92ZXJlZC5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMyBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2xvY2FsLWhvdmVyYWJsZS9fcHJpdmF0ZS9jb250ZXh0LWlzLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlMTQgZnJvbSAnLi9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTE1IGZyb20gJy4vdGVzdC11dGlsLXJ1bm5hYmxlLmluamVjdGFibGUudHMnXG5cbmNvbnN0IG1vZHVsZXMgPSBbbW9kdWxlMCxtb2R1bGUxLG1vZHVsZTIsbW9kdWxlMyxtb2R1bGU0LG1vZHVsZTUsbW9kdWxlNixtb2R1bGU3LG1vZHVsZTgsbW9kdWxlOSxtb2R1bGUxMCxtb2R1bGUxMSxtb2R1bGUxMixtb2R1bGUxMyxtb2R1bGUxNCxtb2R1bGUxNV07XG5cbmV4cG9ydCBkZWZhdWx0IG1vZHVsZXM7XG5leHBvcnQgY29uc3QgZmlsZW5hbWVzID0gWydwbHVnaW5zL2NsaWNrYWJsZS9pcy1tYWMuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvY2xpY2thYmxlL29uLXJpZ2h0LXRyaWdnZXIuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvX3NoYXJlZC9kcmFnZ2VkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvaXRlbS1iZWluZy1kcmFnZ2VkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2ZvY3VzYWJsZS9fc2hhcmVkL2ZvY3VzYWJsZS1odG1sLWVsZW1lbnQtcmVmLXNldC5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9mb2N1c2FibGUtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9rZXlib2FyZC1uYXZpZ2F0aW9uLXN0YXRlLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2ZvY3VzYWJsZS9kby1mb2N1cy5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9mb2N1c2FibGUvaXRlbS1iZWluZy1mb2N1c2VkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2hvdmVyYWJsZS9jb21wdXRlZC1ub3cuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9ob3ZlcmFibGUvaXRlbS1iZWluZy1ob3ZlcmVkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvX3ByaXZhdGUvY29udGV4dC1pcy1iZWluZy1ob3ZlcmVkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGUudHMnLCd0ZXN0LXV0aWwtcnVubmFibGUuaW5qZWN0YWJsZS50cyddXG4iLCAiaW1wb3J0IHR5cGUgeyBUdXBsZSB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuZXhwb3J0IHR5cGUgVFNoaXJ0U2l6ZSA9XG4gIHwgXCJ6ZXJvXCJcbiAgfCBgJHtSYW5nZTwzLCA0Pn14c2BcbiAgfCBcInh4c1wiXG4gIHwgXCJ4c1wiXG4gIHwgXCJzXCJcbiAgfCBcIm1cIlxuICB8IFwibFwiXG4gIHwgXCJ4bFwiXG4gIHwgXCJ4eGxcIlxuICB8IGAke1JhbmdlPDMsIDExPn14bGA7XG5cbmV4cG9ydCB0eXBlIFJhbmdlPFN0YXJ0IGV4dGVuZHMgbnVtYmVyLCBFbmQgZXh0ZW5kcyBudW1iZXI+ID0gUmFuZ2VJbXBsPFN0YXJ0LCBFbmQ+O1xudHlwZSBSYW5nZUltcGw8XG4gIFN0YXJ0IGV4dGVuZHMgbnVtYmVyLFxuICBFbmQgZXh0ZW5kcyBudW1iZXIsXG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9Db25mdXNpbmdWb2lkVHlwZTogcmVxdWlyZWQgZm9yIHRoZSBidWlsZCB0byBwYXNzXG4gIFQgZXh0ZW5kcyB2b2lkW10gPSBUdXBsZTx2b2lkLCBTdGFydD4sXG4+ID0gRW5kIGV4dGVuZHMgVFtcImxlbmd0aFwiXSA/IEVuZCA6IFRbXCJsZW5ndGhcIl0gfCBSYW5nZUltcGw8U3RhcnQsIEVuZCwgW3VuZGVmaW5lZCwgLi4uVF0+O1xuXG4vKiBjOCBpZ25vcmUgZW5kICovXG5cbi8qKiBUaGUgYmFzZSB1bml0IChpbiBwaXhlbHMpIHRoZSB0LXNoaXJ0IHNjYWxlIGlzIGJ1aWx0IG9uLiBNaXJyb3JzIGAkdW5pdGAgaW4gYHNpemVzLnNjc3NgLiAqL1xuZXhwb3J0IGNvbnN0IHNpemVVbml0SW5QaXhlbHMgPSA0O1xuXG4vLyBNdWx0aXBsaWVyIHBlciBzaXplLCBtaXJyb3JpbmcgdGhlIGAkc2l6ZXNgIG1hcCBpbiBgc2l6ZXMuc2Nzc2AuIEtlZXAgdGhlIHR3byBpbiBzeW5jLlxuY29uc3Qgc2l6ZU11bHRpcGxpZXJzOiBSZWNvcmQ8VFNoaXJ0U2l6ZSwgbnVtYmVyPiA9IHtcbiAgemVybzogMCxcbiAgXCI0eHNcIjogMSAvIDQsXG4gIFwiM3hzXCI6IDEgLyAyLFxuICB4eHM6IDEsXG4gIHhzOiAyLFxuICBzOiAzLFxuICBtOiA0LFxuICBsOiA1LFxuICB4bDogNixcbiAgeHhsOiA3LFxuICBcIjN4bFwiOiA4LFxuICBcIjR4bFwiOiA5LFxuICBcIjV4bFwiOiAxMCxcbiAgXCI2eGxcIjogMTEsXG4gIFwiN3hsXCI6IDEyLFxuICBcIjh4bFwiOiAxMyxcbiAgXCI5eGxcIjogMTQsXG4gIFwiMTB4bFwiOiAxNSxcbiAgXCIxMXhsXCI6IDE2LFxufTtcblxuLyoqXG4gKiBUaGUgcGl4ZWwgbGVuZ3RoIG9mIGEgdC1zaGlydCBzaXplIFx1MjAxNCB0aGUgc2FtZSB2YWx1ZSB0aGUgYCRzaXplYC9gJHdpZHRoYC9gJGhlaWdodGBcbiAqIGNsYXNzZXMgcmVzb2x2ZSB0byBpbiBDU1MuIFVzZSB3aGVuIGEgbGVuZ3RoIGlzIG5lZWRlZCByYXRoZXIgdGhhbiBhIHNpemluZyBjbGFzcyxcbiAqIGUuZy4gdG8gZHJpdmUgYW4gaWNvbiBmb250J3MgYGZvbnQtc2l6ZWAuXG4gKi9cbmV4cG9ydCBjb25zdCB0U2hpcnRTaXplSW5QaXhlbHMgPSAoc2l6ZTogVFNoaXJ0U2l6ZSk6IG51bWJlciA9PiBzaXplVW5pdEluUGl4ZWxzICogc2l6ZU11bHRpcGxpZXJzW3NpemVdO1xuIiwgIi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuaW1wb3J0IHsgZ2V0RWxlbWVudENvbXBvbmVudCB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgZmxleFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZmxleC9mbGV4XCI7XG5pbXBvcnQgeyBncmlkUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ncmlkL2dyaWRcIjtcbmltcG9ydCB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyB3aWR0aFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvd2lkdGgvd2lkdGhcIjtcbmltcG9ydCB7IHBhZGRpbmdQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3BhZGRpbmcvcGFkZGluZ1wiO1xuaW1wb3J0IHsgc3R5bGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3N0eWxlL3N0eWxlXCI7XG5pbXBvcnQgeyBoZWlnaHRQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2hlaWdodC9oZWlnaHRcIjtcbmltcG9ydCB7IGJvcmRlclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvYm9yZGVyL2JvcmRlclwiO1xuaW1wb3J0IHsgZm9udFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZm9udC9mb250XCI7XG5pbXBvcnQgeyBjb2xvclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvY29sb3IvY29sb3JcIjtcbmltcG9ydCB7IGJhY2tncm91bmRDb2xvclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvYmFja2dyb3VuZC1jb2xvci9iYWNrZ3JvdW5kLWNvbG9yXCI7XG5pbXBvcnQgeyBncmFkaWVudFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZ3JhZGllbnQvZ3JhZGllbnRcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZHJhZ2dhYmxlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9kcmFnZ2FibGVcIjtcbmltcG9ydCB7IGRyb3BwYWJsZVBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZHJvcHBhYmxlXCI7XG5pbXBvcnQgeyBvYnNlcnZlciB9IGZyb20gXCJtb2J4LXJlYWN0XCI7XG5pbXBvcnQgeyB0b29sdGlwUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy90b29sdGlwL3Rvb2x0aXBcIjtcbmltcG9ydCB7IHRyYW5zaXRpb25QbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3RyYW5zaXRpb24vdHJhbnNpdGlvblwiO1xuaW1wb3J0IHsgb2Zmc2V0UGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9vZmZzZXQvb2Zmc2V0XCI7XG5pbXBvcnQgeyBvZmZzZXRDaGlsZHJlblBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvb2Zmc2V0LWNoaWxkcmVuL29mZnNldC1jaGlsZHJlblwiO1xuaW1wb3J0IHsgaGlkZGVuUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9oaWRkZW4vaGlkZGVuXCI7XG5pbXBvcnQgeyBub1BvaW50ZXJFdmVudHNQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL25vLXBvaW50ZXItZXZlbnRzL25vLXBvaW50ZXItZXZlbnRzXCI7XG5pbXBvcnQgeyBtYXJnaW5QbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL21hcmdpbi9tYXJnaW5cIjtcbmltcG9ydCB7IHJlbGF0aXZlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9yZWxhdGl2ZS9yZWxhdGl2ZVwiO1xuaW1wb3J0IHsgYWJzb2x1dGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2Fic29sdXRlL2Fic29sdXRlXCI7XG5pbXBvcnQgeyB2aXN1YWxseUhpZGRlblBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvdmlzdWFsbHktaGlkZGVuL3Zpc3VhbGx5LWhpZGRlblwiO1xuaW1wb3J0IHsgaG92ZXJhYmxlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ob3ZlcmFibGUvaG92ZXJhYmxlXCI7XG5pbXBvcnQgeyBob3ZlcmFibGVCeURyYWdnaW5nUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ob3ZlcmFibGUvaG92ZXJhYmxlLWJ5LWRyYWdnaW5nXCI7XG5pbXBvcnQgeyBib3hTaGFkb3dQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvd1wiO1xuaW1wb3J0IHsgb3ZlcmZsb3dQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL292ZXJmbG93L292ZXJmbG93XCI7XG5pbXBvcnQgeyBmbGV4Q2hpbGRQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2ZsZXgtY2hpbGQvZmxleC1jaGlsZFwiO1xuaW1wb3J0IHsgZ3JheXNjYWxlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ncmF5c2NhbGUvZ3JheXNjYWxlXCI7XG5pbXBvcnQgeyB0aW50UGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy90aW50L3RpbnRcIjtcbmltcG9ydCB7IGZhZGVkUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9mYWRlZC9mYWRlZFwiO1xuaW1wb3J0IHsgZW5hYmxlZFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZW5hYmxlZC9lbmFibGVkXCI7XG5pbXBvcnQgeyBmb2N1c2FibGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2ZvY3VzYWJsZS9mb2N1c2FibGVcIjtcbmltcG9ydCB7IGFyZWFQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2FyZWEvYXJlYVwiO1xuaW1wb3J0IHsgYXJlYUNvbnRlbnRQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2FyZWEtY29udGVudC9hcmVhLWNvbnRlbnRcIjtcbmltcG9ydCB7IHNpemVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3NpemUvc2l6ZVwiO1xuaW1wb3J0IHsgY3Vyc29yUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9jdXJzb3IvY3Vyc29yXCI7XG5pbXBvcnQgeyBjbGlja2FibGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2NsaWNrYWJsZS9jbGlja2FibGVcIjtcbmltcG9ydCB7IHJlZlBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvcmVmL3JlZlwiO1xuaW1wb3J0IHsgZGlzcGxheUNvbnRlbnRzUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9kaXNwbGF5LWNvbnRlbnRzL2Rpc3BsYXktY29udGVudHNcIjtcbmltcG9ydCB7IHRleHRBbGlnblBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvdGV4dC1hbGlnbi90ZXh0LWFsaWduXCI7XG5pbXBvcnQgeyBibG9ja1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvYmxvY2svYmxvY2tcIjtcbmltcG9ydCB7IG91dGxpbmVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL291dGxpbmUvb3V0bGluZVwiO1xuaW1wb3J0IHsgcG9wb3ZlclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyXCI7XG5pbXBvcnQgeyBmbG9hdGluZ1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZmxvYXRpbmcvZmxvYXRpbmdcIjtcbmltcG9ydCB7IGludmlzaWJsZUJhY2tkcm9wUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9pbnZpc2libGUtYmFja2Ryb3AvaW52aXNpYmxlLWJhY2tkcm9wXCI7XG5pbXBvcnQgeyBvbk91dHNpZGVDbGlja1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrXCI7XG5pbXBvcnQgeyBkcm9wRG93bk1lbnVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2Ryb3AtZG93bi1tZW51L2Ryb3AtZG93bi1tZW51XCI7XG5pbXBvcnQgeyBhbmNob3JQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2FuY2hvci9hbmNob3JcIjtcblxuZXhwb3J0IGNvbnN0IHNoYXJlZFBsdWdpbnMgPSBbXG4gIC8vIENvbnRyaWJ1dGVzIHByb3BzIG9mIGl0cyBvd24sIHNvIGl0IGhhcyB0byBydW4gYmVmb3JlIHRoZSBwbHVnaW5zIHRoYXQgcmVzb2x2ZSB0aGVtLlxuICBhbmNob3JQbHVnaW4sXG4gIHNpemVQbHVnaW4sXG4gIGRyYWdnYWJsZVBsdWdpbixcbiAgdGV4dEFsaWduUGx1Z2luLFxuICBkcm9wcGFibGVQbHVnaW4sXG4gIGFyZWFQbHVnaW4sXG4gIGFyZWFDb250ZW50UGx1Z2luLFxuICBmbGV4UGx1Z2luLFxuICBncmlkUGx1Z2luLFxuICB3aWR0aFBsdWdpbixcbiAgaGVpZ2h0UGx1Z2luLFxuICBmbGV4Q2hpbGRQbHVnaW4sXG4gIG92ZXJmbG93UGx1Z2luLFxuICBwYWRkaW5nUGx1Z2luLFxuICBtYXJnaW5QbHVnaW4sXG4gIGJsb2NrUGx1Z2luLFxuICBib3hTaGFkb3dQbHVnaW4sXG4gIGJvcmRlclBsdWdpbixcbiAgb3V0bGluZVBsdWdpbixcbiAgZm9udFBsdWdpbixcbiAgY29sb3JQbHVnaW4sXG4gIGJhY2tncm91bmRDb2xvclBsdWdpbixcbiAgZ3JhZGllbnRQbHVnaW4sXG4gIGdyYXlzY2FsZVBsdWdpbixcbiAgdGludFBsdWdpbixcbiAgZmFkZWRQbHVnaW4sXG4gIHN0eWxlUGx1Z2luLFxuICB0cmFuc2l0aW9uUGx1Z2luLFxuICBvZmZzZXRQbHVnaW4sXG4gIG9mZnNldENoaWxkcmVuUGx1Z2luLFxuICBoaWRkZW5QbHVnaW4sXG4gIG5vUG9pbnRlckV2ZW50c1BsdWdpbixcbiAgaW52aXNpYmxlQmFja2Ryb3BQbHVnaW4sXG4gIHZpc3VhbGx5SGlkZGVuUGx1Z2luLFxuICByZWxhdGl2ZVBsdWdpbixcbiAgYWJzb2x1dGVQbHVnaW4sXG4gIGN1cnNvclBsdWdpbixcbiAgZGlzcGxheUNvbnRlbnRzUGx1Z2luLFxuICBvbk91dHNpZGVDbGlja1BsdWdpbixcbiAgY2xhc3NOYW1lUGx1Z2luLFxuXTtcblxuY29uc3Qgc2hhcmVkQ2xpY2thYmxlUGx1Z2lucyA9IFtkcm9wRG93bk1lbnVQbHVnaW4sIHBvcG92ZXJQbHVnaW4sIGVuYWJsZWRQbHVnaW4sIGNsaWNrYWJsZVBsdWdpbl07XG5cbmV4cG9ydCBjb25zdCBnZXRTaGFyZWRUeXBlZFBsdWdpbnMgPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PigpID0+IFtcbiAgLi4uZ2V0U2hhcmVkQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnM8VD4oKSxcbiAgLi4uZ2V0U2hhcmVkTm9uQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnM8VD4oKSxcbl07XG5cbmNvbnN0IGdldFNoYXJlZENoaWxkcmVuQWRkaW5nVHlwZWRQbHVnaW5zID0gPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4oKSA9PiBbdG9vbHRpcFBsdWdpbjxUPigpLCBmbG9hdGluZ1BsdWdpbjxUPigpXTtcblxuY29uc3QgZ2V0U2hhcmVkTm9uQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnMgPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PigpID0+IFtcbiAgaG92ZXJhYmxlUGx1Z2luPFQ+KCksXG4gIGhvdmVyYWJsZUJ5RHJhZ2dpbmdQbHVnaW48VD4oKSxcbiAgZm9jdXNhYmxlUGx1Z2luPFQ+KCksXG4gIHJlZlBsdWdpbjxUPigpLFxuXTtcblxuZXhwb3J0IGNvbnN0IERpdiA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJkaXZcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxEaXZFbGVtZW50PigpKSk7XG5cbmV4cG9ydCB0eXBlIERpdlByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERpdj47XG5cbi8vIFVzZSBkaXYgYXMgbmV1dHJhbCB0ZW1wbGF0ZSBmb3Igd2hhdCBjb21tb24gcHJvcHMgc2hvdWxkIGxvb2sgbGlrZVxuZXhwb3J0IGNvbnN0IENvbW1vbiA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJkaXZcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPGFueT4oKSkpO1xuZXhwb3J0IHR5cGUgQ29tbW9uUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ29tbW9uPjtcblxuZXhwb3J0IGNvbnN0IFN2ZyA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJzdmdcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxFbGVtZW50PigpKSk7XG5cbmV4cG9ydCB0eXBlIFN2Z1Byb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFN2Zz47XG5cbmV4cG9ydCBjb25zdCBJbnB1dCA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFxuICAgIFwiaW5wdXRcIixcbiAgICBlbmFibGVkUGx1Z2luLFxuICAgIC4uLnNoYXJlZFBsdWdpbnMsXG4gICAgLi4uZ2V0U2hhcmVkTm9uQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnM8SFRNTElucHV0RWxlbWVudD4oKSxcbiAgKSxcbik7XG5leHBvcnQgdHlwZSBJbnB1dFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIElucHV0PjtcblxuZXhwb3J0IGNvbnN0IFRleHRBcmVhID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJ0ZXh0YXJlYVwiLCBlbmFibGVkUGx1Z2luLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFRleHRBcmVhRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgVGV4dEFyZWFQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBUZXh0QXJlYT47XG5cbmV4cG9ydCBjb25zdCBGb3JtID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJmb3JtXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRm9ybUVsZW1lbnQ+KCkpLFxuKTtcbmV4cG9ydCB0eXBlIEZvcm1Qcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBGb3JtPjtcblxuZXhwb3J0IGNvbnN0IFNwYW4gPSBvYnNlcnZlcihcbiAgZ2V0RWxlbWVudENvbXBvbmVudChcInNwYW5cIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxTcGFuRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgU3BhblByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFNwYW4+O1xuXG5leHBvcnQgY29uc3QgQ2xpY2thYmxlRGl2ID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJkaXZcIiwgLi4uc2hhcmVkQ2xpY2thYmxlUGx1Z2lucywgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxEaXZFbGVtZW50PigpKSxcbik7XG5leHBvcnQgdHlwZSBDbGlja2FibGVEaXZQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBDbGlja2FibGVEaXY+O1xuXG5leHBvcnQgY29uc3QgSSA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJpXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgSVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEk+O1xuXG5leHBvcnQgY29uc3QgQSA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJhXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MQW5jaG9yRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgQVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEE+O1xuXG5leHBvcnQgY29uc3QgQnV0dG9uID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXG4gICAgXCJidXR0b25cIixcbiAgICAuLi5zaGFyZWRDbGlja2FibGVQbHVnaW5zLFxuICAgIC4uLnNoYXJlZFBsdWdpbnMsXG4gICAgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxCdXR0b25FbGVtZW50PigpLFxuICApLFxuKTtcbmV4cG9ydCB0eXBlIEJ1dHRvblByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEJ1dHRvbj47XG5cbmV4cG9ydCBjb25zdCBDb2RlID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImNvZGVcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBDb2RlUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ29kZT47XG5cbmV4cG9ydCBjb25zdCBMYWJlbCA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJsYWJlbFwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTEVsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIExhYmVsUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgTGFiZWw+O1xuXG5leHBvcnQgY29uc3QgUHJlID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcInByZVwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFByZUVsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIFByZVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFByZT47XG5cbmV4cG9ydCBjb25zdCBOYXYgPSBvYnNlcnZlcihnZXRFbGVtZW50Q29tcG9uZW50KFwibmF2XCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgTmF2UHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgTmF2PjtcblxuZXhwb3J0IGNvbnN0IEgxID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImgxXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MSGVhZGluZ0VsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIEgxUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgSDE+O1xuXG5leHBvcnQgY29uc3QgSDIgPSBvYnNlcnZlcihnZXRFbGVtZW50Q29tcG9uZW50KFwiaDJcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxIZWFkaW5nRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgSDJQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBIMj47XG5cbmV4cG9ydCBjb25zdCBIMyA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJoM1wiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTEhlYWRpbmdFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBIM1Byb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEgzPjtcblxuZXhwb3J0IGNvbnN0IEg0ID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImg0XCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MSGVhZGluZ0VsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIEg0UHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgSDQ+O1xuXG5leHBvcnQgY29uc3QgSDUgPSBvYnNlcnZlcihnZXRFbGVtZW50Q29tcG9uZW50KFwiaDVcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxIZWFkaW5nRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgSDVQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBINT47XG5cbmV4cG9ydCBjb25zdCBINiA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJoNlwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTEhlYWRpbmdFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBINlByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEg2PjtcblxuZXhwb3J0IGNvbnN0IE9sID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcIm9sXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MT0xpc3RFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBPbFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIE9sPjtcblxuZXhwb3J0IGNvbnN0IFVsID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcInVsXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MVUxpc3RFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBVbFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFVsPjtcblxuZXhwb3J0IGNvbnN0IExpID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImxpXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MTElFbGVtZW50PigpKSk7XG5cbmV4cG9ydCBjb25zdCBDbGlja2FibGVMaSA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwibGlcIiwgLi4uc2hhcmVkQ2xpY2thYmxlUGx1Z2lucywgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxMSUVsZW1lbnQ+KCkpLFxuKTtcbmV4cG9ydCB0eXBlIENsaWNrYWJsZUxpUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ2xpY2thYmxlTGk+O1xuZXhwb3J0IHR5cGUgTGlQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBMaT47XG5cbmV4cG9ydCBjb25zdCBQID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcInBcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxQYXJhZ3JhcGhFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBQUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgUD47XG5cbmV4cG9ydCBjb25zdCBUaCA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwidGhcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxUYWJsZUNlbGxFbGVtZW50PigpKSxcbik7XG5cbmV4cG9ydCB0eXBlIFRoUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgVGg+O1xuXG5leHBvcnQgY29uc3QgVGQgPSBvYnNlcnZlcihcbiAgZ2V0RWxlbWVudENvbXBvbmVudChcInRkXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MVGFibGVDZWxsRWxlbWVudD4oKSksXG4pO1xuXG5leHBvcnQgdHlwZSBUZFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFRkPjtcblxuZXhwb3J0IGNvbnN0IFRyID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJ0clwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFRhYmxlUm93RWxlbWVudD4oKSksXG4pO1xuXG5leHBvcnQgdHlwZSBUclByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFRyPjtcblxuZXhwb3J0IGNvbnN0IFRhYmxlID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJ0YWJsZVwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFRhYmxlRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgVGFibGVQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBUYWJsZT47XG5cbmV4cG9ydCBjb25zdCBUQm9keSA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwidGJvZHlcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PigpKSxcbik7XG5leHBvcnQgdHlwZSBUQm9keVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFRCb2R5PjtcblxuZXhwb3J0IGNvbnN0IERpYWxvZyA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwiZGlhbG9nXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRGlhbG9nRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgRGlhbG9nUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRGlhbG9nPjtcblxuZXhwb3J0IGNvbnN0IENhbnZhcyA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwiY2FudmFzXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MQ2FudmFzRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgQ2FudmFzUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ2FudmFzPjtcblxuZXhwb3J0IGNvbnN0IEltZyA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJpbWdcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxJbWFnZUVsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIEltZ1Byb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEltZz47XG5cbi8qIGM4IGlnbm9yZSBlbmQgKi9cbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9mbGV4L2ZsZXgubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJmbGV4XCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX19lRkxFY1wiLFxuICBcImZsZXhfX3dyYXAtLXdyYXBcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fd3JhcC0td3JhcF9fXzJMcVRnXCIsXG4gIFwiZmxleF9fZGlyZWN0aW9uLS12ZXJ0aWNhbFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19kaXJlY3Rpb24tLXZlcnRpY2FsX19fMEFpT2ZcIixcbiAgXCJmbGV4X19kaXJlY3Rpb24tLXZlcnRpY2FsLXJldmVyc2VkXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2RpcmVjdGlvbi0tdmVydGljYWwtcmV2ZXJzZWRfX19Jb2UtNVwiLFxuICBcImZsZXhfX2RpcmVjdGlvbi0taG9yaXpvbnRhbFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19kaXJlY3Rpb24tLWhvcml6b250YWxfX19hMzJ6b1wiLFxuICBcImZsZXhfX2RpcmVjdGlvbi0taG9yaXpvbnRhbC1yZXZlcnNlZFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19kaXJlY3Rpb24tLWhvcml6b250YWwtcmV2ZXJzZWRfX19pTHdES1wiLFxuICBcImZsZXhfX2p1c3RpZnlDb250ZW50LS1zcGFjZUJldHdlZW5cIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fanVzdGlmeUNvbnRlbnQtLXNwYWNlQmV0d2Vlbl9fX2E2b01IXCIsXG4gIFwiZmxleF9fanVzdGlmeUNvbnRlbnQtLXNwYWNlQXJvdW5kXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2p1c3RpZnlDb250ZW50LS1zcGFjZUFyb3VuZF9fXzVZT1U0XCIsXG4gIFwiZmxleF9fanVzdGlmeUNvbnRlbnQtLWNlbnRlclwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tY2VudGVyX19fdXJaWUdcIixcbiAgXCJmbGV4X19qdXN0aWZ5Q29udGVudC0tc3RyZXRjaFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tc3RyZXRjaF9fX001YXowXCIsXG4gIFwiZmxleF9fanVzdGlmeUNvbnRlbnQtLWZsZXhTdGFydFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleFN0YXJ0X19fUEhGMUVcIixcbiAgXCJmbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleEVuZFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleEVuZF9fX2FNUHgwXCIsXG4gIFwiZmxleF9fYWxpZ25JdGVtcy0tc3RyZXRjaFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19hbGlnbkl0ZW1zLS1zdHJldGNoX19fYkFOaWdcIixcbiAgXCJmbGV4X19hbGlnbkl0ZW1zLS1jZW50ZXJcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fYWxpZ25JdGVtcy0tY2VudGVyX19fMFZzeTlcIixcbiAgXCJmbGV4X19hbGlnbkl0ZW1zLS1mbGV4U3RhcnRcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fYWxpZ25JdGVtcy0tZmxleFN0YXJ0X19fajBKenhcIixcbiAgXCJmbGV4X19hbGlnbkl0ZW1zLS1mbGV4RW5kXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2FsaWduSXRlbXMtLWZsZXhFbmRfX19EbVU1UlwiLFxuICBcImZsZXhfX2dhcC0temVyb1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXplcm9fX193My1UZ1wiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS16ZXJvXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS16ZXJvX19fOTYwQTdcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0temVyb1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0temVyb19fX29LdXNUXCIsXG4gIFwiZmxleF9fZ2FwLS00eHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS00eHNfX19yclRKZVwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS00eHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTR4c19fX1RSM1lFXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTR4c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tNHhzX19fNmluM2pcIixcbiAgXCJmbGV4X19nYXAtLTN4c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTN4c19fX1JjdW1SXCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLTN4c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tM3hzX19fWC1DMWFcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tM3hzXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS0zeHNfX19rVzBpT1wiLFxuICBcImZsZXhfX2dhcC0teHhzXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0teHhzX19fVUIzRmpcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0teHhzXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS14eHNfX191SVp2MlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS14eHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXh4c19fX3QtZ3FOXCIsXG4gIFwiZmxleF9fZ2FwLS14c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXhzX19fdHQzU29cIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0teHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLXhzX19fQjVvWGNcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0teHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXhzX19fMUVYMmZcIixcbiAgXCJmbGV4X19nYXAtLXNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1zX19fOW1ZelNcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tc1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tc19fX2F2dGYtXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLXNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXNfX19ZT0JWVlwiLFxuICBcImZsZXhfX2dhcC0tbVwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLW1fX19BYi10MFwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS1tXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS1tX19fUTZjQi1cIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tbVwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tbV9fXzctRFEwXCIsXG4gIFwiZmxleF9fZ2FwLS1sXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tbF9fX2N2bWp3XCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLWxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLWxfX19FcFF0VFwiLFxuICBcImZsZXhfX2dhcC0tcm93LS1sXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS1sX19feFlpS2hcIixcbiAgXCJmbGV4X19nYXAtLXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0teGxfX19DSXNOUFwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS14bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0teGxfX19tTFV4UlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS14bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0teGxfX19LV04zM1wiLFxuICBcImZsZXhfX2dhcC0teHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0teHhsX19fMTJ0LTZcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0teHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS14eGxfX192QUx0ZlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS14eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXh4bF9fX0lkY3FVXCIsXG4gIFwiZmxleF9fZ2FwLS0zeGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS0zeGxfX19pVXJ4MVwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS0zeGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTN4bF9fXy1OVjBaXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTN4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tM3hsX19fVlljUmhcIixcbiAgXCJmbGV4X19nYXAtLTR4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTR4bF9fX2ZaaUtWXCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLTR4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tNHhsX19fWDlLcHlcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tNHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS00eGxfX19kYnZXMFwiLFxuICBcImZsZXhfX2dhcC0tNXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tNXhsX19fNDNoSHZcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tNXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS01eGxfX18yWHllUVwiLFxuICBcImZsZXhfX2dhcC0tcm93LS01eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLTV4bF9fX3F2ak9FXCIsXG4gIFwiZmxleF9fZ2FwLS02eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS02eGxfX19zUHk2TFwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS02eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTZ4bF9fX3phZ1dNXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTZ4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tNnhsX19fVS11WkpcIixcbiAgXCJmbGV4X19nYXAtLTd4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTd4bF9fX09hd3YtXCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLTd4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tN3hsX19fS3pyTXJcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tN3hsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS03eGxfX19wQXZMdlwiLFxuICBcImZsZXhfX2dhcC0tOHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tOHhsX19fRWVvRS1cIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tOHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS04eGxfX19rYmlvSlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS04eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLTh4bF9fX1AtOS1lXCIsXG4gIFwiZmxleF9fZ2FwLS05eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS05eGxfX19UZ25VU1wiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS05eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTl4bF9fX05HbDNKXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTl4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tOXhsX19fRUd1ZWhcIixcbiAgXCJmbGV4X19nYXAtLTEweGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS0xMHhsX19fQ2YxdzZcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tMTB4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tMTB4bF9fX0xKUkdsXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTEweGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLTEweGxfX196UHR5TlwiLFxuICBcImZsZXhfX2dhcC0tMTF4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTExeGxfX19vcmZnSVwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS0xMXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS0xMXhsX19fZERLZHBcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tMTF4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tMTF4bF9fX3ZERy1BXCJcbn07IiwgImltcG9ydCBmbGV4U3R5bGVzIGZyb20gXCIuL2ZsZXgubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFRTaGlydFNpemUgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuXG5leHBvcnQgdHlwZSBIb3Jpem9udGFsRmxleFByb3BzID0ge1xuICBkaXJlY3Rpb24/OiBcImhvcml6b250YWxcIiB8IFwiaG9yaXpvbnRhbC1yZXZlcnNlZFwiO1xuXG4gIGhvcml6b250YWxBbGlnbj86IFwiY2VudGVyXCIgfCBcInNwYWNlLWJldHdlZW5cIiB8IFwic3BhY2UtYXJvdW5kXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIjtcbiAgdmVydGljYWxBbGlnbj86IFwiY2VudGVyXCIgfCBcInN0cmV0Y2hcIiB8IFwidG9wXCIgfCBcImJvdHRvbVwiO1xufTtcblxuZXhwb3J0IHR5cGUgVmVydGljYWxGbGV4UHJvcHMgPSB7XG4gIGRpcmVjdGlvbj86IFwidmVydGljYWxcIiB8IFwidmVydGljYWwtcmV2ZXJzZWRcIjtcblxuICBob3Jpem9udGFsQWxpZ24/OiBcImNlbnRlclwiIHwgXCJzdHJldGNoXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIjtcbiAgdmVydGljYWxBbGlnbj86IFwiY2VudGVyXCIgfCBcInNwYWNlLWJldHdlZW5cIiB8IFwic3BhY2UtYXJvdW5kXCIgfCBcInRvcFwiIHwgXCJib3R0b21cIjtcbn07XG5cbmV4cG9ydCB0eXBlIE1heGltYWxGbGV4UHJvcHMgPSAoSG9yaXpvbnRhbEZsZXhQcm9wcyB8IFZlcnRpY2FsRmxleFByb3BzKSAmIHtcbiAgZ2FwPzogVFNoaXJ0U2l6ZSB8IHsgcm93PzogVFNoaXJ0U2l6ZTsgY29sdW1uPzogVFNoaXJ0U2l6ZSB9O1xuICB3cmFwPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFNpbXBsZUZsZXhQcm9wID0gYm9vbGVhbjtcblxuZXhwb3J0IHR5cGUgRmxleFBsdWdpblByb3BzID0geyAkZmxleD86IFNpbXBsZUZsZXhQcm9wIHwgTWF4aW1hbEZsZXhQcm9wcyB9O1xuXG5leHBvcnQgY29uc3QgZmxleFBsdWdpbiA9IGdldFBsdWdpbjxGbGV4UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGZsZXggfSA9IHByb3BzO1xuXG4gIGlmICghJGZsZXgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJGZsZXg6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3Qge1xuICAgIGRpcmVjdGlvbiA9IFwiaG9yaXpvbnRhbFwiLFxuICAgIHZlcnRpY2FsQWxpZ24gPSBcIlwiLFxuICAgIGhvcml6b250YWxBbGlnbiA9IFwiXCIsXG4gICAgZ2FwID0gdW5kZWZpbmVkLFxuICAgIHdyYXAsXG4gIH0gPSAkZmxleCA9PT0gdHJ1ZSA/IHt9IDogJGZsZXg7XG5cbiAgY29uc3QgaG9yaXpvbnRhbEFsaWduUHJvcHMgPSB7XG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2FsaWduSXRlbXMtLXN0cmV0Y2hgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwic3RyZXRjaFwiLFxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19hbGlnbkl0ZW1zLS1jZW50ZXJgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwiY2VudGVyXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2FsaWduSXRlbXMtLWZsZXhTdGFydGBdXTogdmVydGljYWxBbGlnbiA9PT0gXCJ0b3BcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tZmxleEVuZGBdXTogdmVydGljYWxBbGlnbiA9PT0gXCJib3R0b21cIixcblxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tc3BhY2VBcm91bmRgXV06IGhvcml6b250YWxBbGlnbiA9PT0gXCJzcGFjZS1hcm91bmRcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fanVzdGlmeUNvbnRlbnQtLXNwYWNlQmV0d2VlbmBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcInNwYWNlLWJldHdlZW5cIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fanVzdGlmeUNvbnRlbnQtLXN0cmV0Y2hgXV06IGhvcml6b250YWxBbGlnbiA9PT0gXCJzdHJldGNoXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1jZW50ZXJgXV06IGhvcml6b250YWxBbGlnbiA9PT0gXCJjZW50ZXJcIixcblxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleFN0YXJ0YF1dOlxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJob3Jpem9udGFsXCIgJiYgaG9yaXpvbnRhbEFsaWduID09PSBcImxlZnRcIikgfHxcbiAgICAgIChkaXJlY3Rpb24gPT09IFwiaG9yaXpvbnRhbC1yZXZlcnNlZFwiICYmIGhvcml6b250YWxBbGlnbiA9PT0gXCJyaWdodFwiKSxcblxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleEVuZGBdXTpcbiAgICAgIChkaXJlY3Rpb24gPT09IFwiaG9yaXpvbnRhbFwiICYmIGhvcml6b250YWxBbGlnbiA9PT0gXCJyaWdodFwiKSB8fFxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJob3Jpem9udGFsLXJldmVyc2VkXCIgJiYgaG9yaXpvbnRhbEFsaWduID09PSBcImxlZnRcIiksXG4gIH07XG5cbiAgY29uc3QgdmVydGljYWxBbGlnblByb3BzID0ge1xuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tc3BhY2VBcm91bmRgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwic3BhY2UtYXJvdW5kXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1zcGFjZUJldHdlZW5gXV06IHZlcnRpY2FsQWxpZ24gPT09IFwic3BhY2UtYmV0d2VlblwiLFxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tc3RyZXRjaGBdXTogdmVydGljYWxBbGlnbiA9PT0gXCJzdHJldGNoXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1jZW50ZXJgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwiY2VudGVyXCIsXG5cbiAgICBbZmxleFN0eWxlc1tgZmxleF9fanVzdGlmeUNvbnRlbnQtLWZsZXhTdGFydGBdXTpcbiAgICAgIChkaXJlY3Rpb24gPT09IFwidmVydGljYWxcIiAmJiB2ZXJ0aWNhbEFsaWduID09PSBcInRvcFwiKSB8fFxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJ2ZXJ0aWNhbC1yZXZlcnNlZFwiICYmIHZlcnRpY2FsQWxpZ24gPT09IFwiYm90dG9tXCIpLFxuXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1mbGV4RW5kYF1dOlxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJ2ZXJ0aWNhbFwiICYmIHZlcnRpY2FsQWxpZ24gPT09IFwiYm90dG9tXCIpIHx8XG4gICAgICAoZGlyZWN0aW9uID09PSBcInZlcnRpY2FsLXJldmVyc2VkXCIgJiYgdmVydGljYWxBbGlnbiA9PT0gXCJ0b3BcIiksXG5cbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tc3RyZXRjaGBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcInN0cmV0Y2hcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tY2VudGVyYF1dOiBob3Jpem9udGFsQWxpZ24gPT09IFwiY2VudGVyXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2FsaWduSXRlbXMtLWZsZXhTdGFydGBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcImxlZnRcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tZmxleEVuZGBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcInJpZ2h0XCIsXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbXG4gICAgICBmbGV4U3R5bGVzLmZsZXgsXG4gICAgICBmbGV4U3R5bGVzW2BmbGV4X19kaXJlY3Rpb24tLSR7ZGlyZWN0aW9ufWBdLFxuXG4gICAgICBbXCJob3Jpem9udGFsXCIsIFwiaG9yaXpvbnRhbC1yZXZlcnNlZFwiXS5pbmNsdWRlcyhkaXJlY3Rpb24pID8gaG9yaXpvbnRhbEFsaWduUHJvcHMgOiB2ZXJ0aWNhbEFsaWduUHJvcHMsXG5cbiAgICAgIHR5cGVvZiBnYXAgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyBmbGV4U3R5bGVzW2BmbGV4X19nYXAtLSR7Z2FwfWBdXG4gICAgICAgIDogZ2FwXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIGdhcC5jb2x1bW4gPyBmbGV4U3R5bGVzW2BmbGV4X19nYXAtLWNvbHVtbi0tJHtnYXAuY29sdW1ufWBdIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBnYXAucm93ID8gZmxleFN0eWxlc1tgZmxleF9fZ2FwLS1yb3ctLSR7Z2FwLnJvd31gXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHdyYXAgJiYgZmxleFN0eWxlc1tgZmxleF9fd3JhcC0td3JhcGBdLFxuXG4gICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuICAgIF0sXG5cbiAgICAkZmxleDogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvZ3JpZC9ncmlkLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiZ3JpZFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19fTVBUaE9cIixcbiAgXCJncmlkX19jb2x1bW5zLS0xXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2NvbHVtbnMtLTFfX19ZMFUyTVwiLFxuICBcImdyaWRfX2NvbHVtbnMtLTJcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fY29sdW1ucy0tMl9fX1lnUzRIXCIsXG4gIFwiZ3JpZF9fY29sdW1ucy0tM1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19jb2x1bW5zLS0zX19fbWFCRDJcIixcbiAgXCJncmlkX19jb2x1bW5zLS00XCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2NvbHVtbnMtLTRfX183M0JqQVwiLFxuICBcImdyaWRfX2NvbHVtbnMtLTVcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fY29sdW1ucy0tNV9fX1NsdC1EXCIsXG4gIFwiZ3JpZF9fY29sdW1ucy0tNlwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19jb2x1bW5zLS02X19fbnlNOHpcIixcbiAgXCJncmlkX19hbGlnbkl0ZW1zLS1zdHJldGNoXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2FsaWduSXRlbXMtLXN0cmV0Y2hfX194WGQzWlwiLFxuICBcImdyaWRfX2FsaWduSXRlbXMtLWNlbnRlclwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19hbGlnbkl0ZW1zLS1jZW50ZXJfX19FOG1MLVwiLFxuICBcImdyaWRfX2FsaWduSXRlbXMtLXN0YXJ0XCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2FsaWduSXRlbXMtLXN0YXJ0X19fMk5kdlNcIixcbiAgXCJncmlkX19hbGlnbkl0ZW1zLS1lbmRcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fYWxpZ25JdGVtcy0tZW5kX19fMUlwWW1cIixcbiAgXCJncmlkX19nYXAtLXplcm9cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS16ZXJvX19fRzFxOGRcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0temVyb1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0temVyb19fX3lnUXBKXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLXplcm9cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLXplcm9fX193MS1PeFwiLFxuICBcImdyaWRfX2dhcC0tNHhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tNHhzX19fek8wbXZcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tNHhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS00eHNfX19HVW9kM1wiLFxuICBcImdyaWRfX2dhcC0tcm93LS00eHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTR4c19fX3NWUVplXCIsXG4gIFwiZ3JpZF9fZ2FwLS0zeHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS0zeHNfX18tSXhTd1wiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS0zeHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTN4c19fX3V3NDY2XCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTN4c1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tM3hzX19fSmZ3bVlcIixcbiAgXCJncmlkX19nYXAtLXh4c1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXh4c19fX2doOGMtXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXh4c1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0teHhzX19fRTc2Z0tcIixcbiAgXCJncmlkX19nYXAtLXJvdy0teHhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS14eHNfX19uaHh6LVwiLFxuICBcImdyaWRfX2dhcC0teHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS14c19fX0dINGgyXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS14c19fX3VScXJpXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLXhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS14c19fX2xBTkV1XCIsXG4gIFwiZ3JpZF9fZ2FwLS1zXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tc19fXzdSMHBzXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLXNfX19hRFZBR1wiLFxuICBcImdyaWRfX2dhcC0tcm93LS1zXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS1zX19fQVJEbXhcIixcbiAgXCJncmlkX19nYXAtLW1cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1tX19fbTNYaWhcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tbVwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tbV9fX0NzeWVNXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLW1cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLW1fX19zT0FYblwiLFxuICBcImdyaWRfX2dhcC0tbFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWxfX18wU3lLbFwiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS1sXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS1sX19fSnZKaE1cIixcbiAgXCJncmlkX19nYXAtLXJvdy0tbFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tbF9fX2FwSDhiXCIsXG4gIFwiZ3JpZF9fZ2FwLS14bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXhsX19fSS12UnRcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0teGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLXhsX19fdDBTTzNcIixcbiAgXCJncmlkX19nYXAtLXJvdy0teGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLXhsX19fZXZORWRcIixcbiAgXCJncmlkX19nYXAtLXh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXh4bF9fX2VXUzAyXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0teHhsX19fcy0tLWJcIixcbiAgXCJncmlkX19nYXAtLXJvdy0teHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS14eGxfX19KNEY3b1wiLFxuICBcImdyaWRfX2dhcC0tM3hsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tM3hsX19fSFZsa0RcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tM3hsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS0zeGxfX196S3RMTFwiLFxuICBcImdyaWRfX2dhcC0tcm93LS0zeGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTN4bF9fX0U5U1Y5XCIsXG4gIFwiZ3JpZF9fZ2FwLS00eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS00eGxfX19NM0czZlwiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS00eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTR4bF9fX25udC1wXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTR4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tNHhsX19fMVc4YmRcIixcbiAgXCJncmlkX19nYXAtLTV4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLTV4bF9fX3lBblhEXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLTV4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tNXhsX19fMnc0UjFcIixcbiAgXCJncmlkX19nYXAtLXJvdy0tNXhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS01eGxfX19WQ2ZqZ1wiLFxuICBcImdyaWRfX2dhcC0tNnhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tNnhsX19faEVsMEZcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tNnhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS02eGxfX19GeFB0cFwiLFxuICBcImdyaWRfX2dhcC0tcm93LS02eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTZ4bF9fX3luMWYtXCIsXG4gIFwiZ3JpZF9fZ2FwLS03eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS03eGxfX19nYkdIdVwiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS03eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTd4bF9fX1Z5ajFwXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTd4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tN3hsX19fNUJCc1NcIixcbiAgXCJncmlkX19nYXAtLTh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLTh4bF9fX2pDbG1DXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLTh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tOHhsX19fYnE3RXpcIixcbiAgXCJncmlkX19nYXAtLXJvdy0tOHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS04eGxfX193TnVaMlwiLFxuICBcImdyaWRfX2dhcC0tOXhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tOXhsX19faW5FMUVcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tOXhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS05eGxfX19Nc2ZqcVwiLFxuICBcImdyaWRfX2dhcC0tcm93LS05eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTl4bF9fX2kyMy1jXCIsXG4gIFwiZ3JpZF9fZ2FwLS0xMHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tMTB4bF9fX0xDRHRjXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLTEweGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTEweGxfX19vOGNCeVwiLFxuICBcImdyaWRfX2dhcC0tcm93LS0xMHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS0xMHhsX19fUmpSdzlcIixcbiAgXCJncmlkX19nYXAtLTExeGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS0xMXhsX19fU3F1TmFcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tMTF4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tMTF4bF9fX3VTZVd6XCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTExeGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTExeGxfX19qcUctSVwiXG59OyIsICJpbXBvcnQgZ3JpZFN0eWxlcyBmcm9tIFwiLi9ncmlkLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcblxuZXhwb3J0IHR5cGUgR3JpZENvbHVtbnMgPSAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG5cbmV4cG9ydCB0eXBlIEdyaWRQcm9wcyA9IHtcbiAgY29sdW1uczogR3JpZENvbHVtbnM7XG4gIGdhcD86IFRTaGlydFNpemUgfCB7IHJvdz86IFRTaGlydFNpemU7IGNvbHVtbj86IFRTaGlydFNpemUgfTtcbiAgYWxpZ25JdGVtcz86IFwic3RyZXRjaFwiIHwgXCJjZW50ZXJcIiB8IFwic3RhcnRcIiB8IFwiZW5kXCI7XG59O1xuXG5leHBvcnQgdHlwZSBHcmlkUGx1Z2luUHJvcHMgPSB7ICRncmlkPzogR3JpZFByb3BzIH07XG5cbmV4cG9ydCBjb25zdCBncmlkUGx1Z2luID0gZ2V0UGx1Z2luPEdyaWRQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkZ3JpZCB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkZ3JpZCkge1xuICAgIHJldHVybiB7ICRncmlkOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IHsgY29sdW1ucywgZ2FwLCBhbGlnbkl0ZW1zIH0gPSAkZ3JpZDtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIGdyaWRTdHlsZXMuZ3JpZCxcbiAgICAgIGdyaWRTdHlsZXNbYGdyaWRfX2NvbHVtbnMtLSR7Y29sdW1uc31gXSxcbiAgICAgIGFsaWduSXRlbXMgPyBncmlkU3R5bGVzW2BncmlkX19hbGlnbkl0ZW1zLS0ke2FsaWduSXRlbXN9YF0gOiB1bmRlZmluZWQsXG5cbiAgICAgIHR5cGVvZiBnYXAgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyBncmlkU3R5bGVzW2BncmlkX19nYXAtLSR7Z2FwfWBdXG4gICAgICAgIDogZ2FwXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIGdhcC5jb2x1bW4gPyBncmlkU3R5bGVzW2BncmlkX19nYXAtLWNvbHVtbi0tJHtnYXAuY29sdW1ufWBdIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBnYXAucm93ID8gZ3JpZFN0eWxlc1tgZ3JpZF9fZ2FwLS1yb3ctLSR7Z2FwLnJvd31gXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcblxuICAgICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICBdLFxuXG4gICAgJGdyaWQ6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwibWF4LXdpZHRoLS1mdWxsXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLWZ1bGxfX19ub0lrVFwiLFxuICBcIm1heC13aWR0aC0tY29udGVudFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS1jb250ZW50X19feWtzVXJcIixcbiAgXCJtYXgtd2lkdGgtLXplcm9cIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0temVyb19fXzhOVUYxXCIsXG4gIFwibWF4LXdpZHRoLS00eHNcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tNHhzX19fZ0hsTElcIixcbiAgXCJtYXgtd2lkdGgtLTN4c1wiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS0zeHNfX19yZG9QOFwiLFxuICBcIm1heC13aWR0aC0teHhzXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLXh4c19fX2pscDh2XCIsXG4gIFwibWF4LXdpZHRoLS14c1wiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS14c19fX2tRc1d4XCIsXG4gIFwibWF4LXdpZHRoLS1zXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLXNfX19NZ0dhelwiLFxuICBcIm1heC13aWR0aC0tbVwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS1tX19fYUZ6U2NcIixcbiAgXCJtYXgtd2lkdGgtLWxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tbF9fX2lLbGFIXCIsXG4gIFwibWF4LXdpZHRoLS14bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS14bF9fXzR6VWRDXCIsXG4gIFwibWF4LXdpZHRoLS14eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0teHhsX19fNTh6M1BcIixcbiAgXCJtYXgtd2lkdGgtLTN4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS0zeGxfX18yWVhuSFwiLFxuICBcIm1heC13aWR0aC0tNHhsXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLTR4bF9fX2pGSjlWXCIsXG4gIFwibWF4LXdpZHRoLS01eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tNXhsX19fNy1WUUdcIixcbiAgXCJtYXgtd2lkdGgtLTZ4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS02eGxfX19QUzM3SlwiLFxuICBcIm1heC13aWR0aC0tN3hsXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLTd4bF9fX3NTQndrXCIsXG4gIFwibWF4LXdpZHRoLS04eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tOHhsX19fVjNJSHlcIixcbiAgXCJtYXgtd2lkdGgtLTl4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS05eGxfX180VldFTVwiLFxuICBcIm1heC13aWR0aC0tMTB4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS0xMHhsX19fejk3VFFcIixcbiAgXCJtYXgtd2lkdGgtLTExeGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tMTF4bF9fX2p4ZW5YXCIsXG4gIFwibWluLXdpZHRoXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGhfX19xbmxZQ1wiLFxuICBcIm1pbi13aWR0aC0tZml0XCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLWZpdF9fXzJXLVREXCIsXG4gIFwibWluLXdpZHRoLS16ZXJvXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLXplcm9fX185NDI5U1wiLFxuICBcIm1pbi13aWR0aC0tNHhzXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTR4c19fXzNUR00tXCIsXG4gIFwibWluLXdpZHRoLS0zeHNcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tM3hzX19fUjZqMzJcIixcbiAgXCJtaW4td2lkdGgtLXh4c1wiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS14eHNfX192aktkQ1wiLFxuICBcIm1pbi13aWR0aC0teHNcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0teHNfX19WLUwxc1wiLFxuICBcIm1pbi13aWR0aC0tc1wiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS1zX19fZElmWm1cIixcbiAgXCJtaW4td2lkdGgtLW1cIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tbV9fX0pINUlQXCIsXG4gIFwibWluLXdpZHRoLS1sXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLWxfX19HZ2tFOFwiLFxuICBcIm1pbi13aWR0aC0teGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0teGxfX19hR0x1aVwiLFxuICBcIm1pbi13aWR0aC0teHhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLXh4bF9fX3pRT3RUXCIsXG4gIFwibWluLXdpZHRoLS0zeGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tM3hsX19fSmV2RFpcIixcbiAgXCJtaW4td2lkdGgtLTR4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS00eGxfX18xZTZOMVwiLFxuICBcIm1pbi13aWR0aC0tNXhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTV4bF9fX0t1bXRvXCIsXG4gIFwibWluLXdpZHRoLS02eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tNnhsX19fWUVrbThcIixcbiAgXCJtaW4td2lkdGgtLTd4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS03eGxfX192WDFGWVwiLFxuICBcIm1pbi13aWR0aC0tOHhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTh4bF9fX1ZiUWhrXCIsXG4gIFwibWluLXdpZHRoLS05eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tOXhsX19fZVVLUWlcIixcbiAgXCJtaW4td2lkdGgtLTEweGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tMTB4bF9fX1pvTjNOXCIsXG4gIFwibWluLXdpZHRoLS0xMXhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTExeGxfX19CTkZqQVwiLFxuICBcIndpZHRoLS1mdWxsXCI6IFwid2lkdGgtbW9kdWxlX193aWR0aC0tZnVsbF9fXzFtcGl6XCIsXG4gIFwid2lkdGgtLXN0cmV0Y2hcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS1zdHJldGNoX19fUnF3MDBcIixcbiAgXCJ3aWR0aC0temVyb1wiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXplcm9fX19JTmRWdlwiLFxuICBcIndpZHRoLS00eHNcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS00eHNfX19kUlVoV1wiLFxuICBcIndpZHRoLS0zeHNcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS0zeHNfX19vUkowelwiLFxuICBcIndpZHRoLS14eHNcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS14eHNfX19IeWw5UlwiLFxuICBcIndpZHRoLS14c1wiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXhzX19fRzNqUXpcIixcbiAgXCJ3aWR0aC0tc1wiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXNfX18tbXpxbVwiLFxuICBcIndpZHRoLS1tXCI6IFwid2lkdGgtbW9kdWxlX193aWR0aC0tbV9fX21FWjc3XCIsXG4gIFwid2lkdGgtLWxcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS1sX19fcXlJTjdcIixcbiAgXCJ3aWR0aC0teGxcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS14bF9fX21PMjVJXCIsXG4gIFwid2lkdGgtLXh4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXh4bF9fX0VHUU1wXCIsXG4gIFwid2lkdGgtLTN4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTN4bF9fX0h1bDctXCIsXG4gIFwid2lkdGgtLTR4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTR4bF9fX3pPUGJTXCIsXG4gIFwid2lkdGgtLTV4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTV4bF9fX3hicW5pXCIsXG4gIFwid2lkdGgtLTZ4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTZ4bF9fX05tYmY5XCIsXG4gIFwid2lkdGgtLTd4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTd4bF9fX0IwbnZ3XCIsXG4gIFwid2lkdGgtLTh4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTh4bF9fX1cxSERQXCIsXG4gIFwid2lkdGgtLTl4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTl4bF9fX0tKTDhVXCIsXG4gIFwid2lkdGgtLTEweGxcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS0xMHhsX19fOTR6MTlcIixcbiAgXCJ3aWR0aC0tMTF4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTExeGxfX19qQi1MblwiXG59OyIsICJpbXBvcnQgd2lkdGhTdHlsZXMgZnJvbSBcIi4vd2lkdGgubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHR5cGUgeyBzdHlsZVBsdWdpbiB9IGZyb20gXCIuLi9zdHlsZS9zdHlsZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFRTaGlydFNpemUgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuXG4vKiogQSBzaGFyZSBvZiB0aGUgcGFyZW50J3Mgd2lkdGgsIGUuZy4gYFwiMzAlXCJgLCBmb3IgbGF5b3V0cyB0aGF0IGRpdmlkZSBhIHJvdyByYXRoZXIgdGhhbiBzaXplIGEgYm94LiAqL1xuZXhwb3J0IHR5cGUgUGVyY2VudGFnZSA9IGAke251bWJlcn0lYDtcblxuZXhwb3J0IHR5cGUgJFdpZHRoUHJvcHMgPSB7XG4gIHdpZHRoPzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiIHwgXCJzdHJldGNoXCIgfCBQZXJjZW50YWdlO1xuICBtaW4/OiBUU2hpcnRTaXplIHwgXCJmaXRcIiB8IFBlcmNlbnRhZ2U7XG4gIG1heD86IFRTaGlydFNpemUgfCBcImZ1bGxcIiB8IFwiY29udGVudFwiIHwgUGVyY2VudGFnZTtcbn07XG5cbmV4cG9ydCB0eXBlIFdpZHRoUGx1Z2luUHJvcHMgPSB7ICR3aWR0aD86IFRTaGlydFNpemUgfCBcImZ1bGxcIiB8IFwic3RyZXRjaFwiIHwgUGVyY2VudGFnZSB8ICRXaWR0aFByb3BzIH07XG5cbmNvbnN0IGlzUGVyY2VudGFnZSA9ICh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogdmFsdWUgaXMgUGVyY2VudGFnZSA9PiB2YWx1ZT8uZW5kc1dpdGgoXCIlXCIpID09PSB0cnVlO1xuXG5leHBvcnQgY29uc3Qgd2lkdGhQbHVnaW4gPSBnZXRQbHVnaW48V2lkdGhQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW4sIHR5cGVvZiBzdHlsZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICR3aWR0aCwgJGNsYXNzTmFtZSwgJHN0eWxlIH0gPSBwcm9wcztcbiAgY29uc3QgeyB3aWR0aCwgbWluLCBtYXggfSA9IHR5cGVvZiAkd2lkdGggPT09IFwic3RyaW5nXCIgPyB7IHdpZHRoOiAkd2lkdGggfSA6ICgkd2lkdGggPz8ge30pO1xuICBjb25zdCBwZXJjZW50YWdlcyA9IHtcbiAgICAuLi4oaXNQZXJjZW50YWdlKHdpZHRoKSA/IHsgd2lkdGggfSA6IHt9KSxcbiAgICAuLi4oaXNQZXJjZW50YWdlKG1pbikgPyB7IG1pbldpZHRoOiBtaW4gfSA6IHt9KSxcbiAgICAuLi4oaXNQZXJjZW50YWdlKG1heCkgPyB7IG1heFdpZHRoOiBtYXggfSA6IHt9KSxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHdpZHRoICYmICFpc1BlcmNlbnRhZ2Uod2lkdGgpID8gd2lkdGhTdHlsZXNbYHdpZHRoLS0ke3dpZHRofWBdIDogdW5kZWZpbmVkLFxuICAgICAgbWluICYmICFpc1BlcmNlbnRhZ2UobWluKSA/IHdpZHRoU3R5bGVzW2BtaW4td2lkdGgtLSR7bWlufWBdIDogdW5kZWZpbmVkLFxuICAgICAgbWF4ICYmICFpc1BlcmNlbnRhZ2UobWF4KSA/IHdpZHRoU3R5bGVzW2BtYXgtd2lkdGgtLSR7bWF4fWBdIDogdW5kZWZpbmVkLFxuICAgICAgJGNsYXNzTmFtZSxcbiAgICBdLFxuICAgICRzdHlsZTogT2JqZWN0LmtleXMocGVyY2VudGFnZXMpLmxlbmd0aCA+IDAgPyB7IC4uLiRzdHlsZSwgLi4ucGVyY2VudGFnZXMgfSA6ICRzdHlsZSxcbiAgICAkd2lkdGg6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuXG5leHBvcnQgdHlwZSBTdHlsZVBsdWdpblByb3BzID0geyAkc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzOyBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfTtcblxuZXhwb3J0IGNvbnN0IHN0eWxlUGx1Z2luID0gZ2V0UGx1Z2luPFN0eWxlUGx1Z2luUHJvcHM+KChwcm9wcykgPT4ge1xuICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuICBjb25zdCAkc3R5bGUgPSBwcm9wcy4kc3R5bGUgfHwge307XG5cbiAgY29uc3Qgc3R5bGUgPSBwcm9wcy5zdHlsZSB8fCB7fTtcblxuICByZXR1cm4ge1xuICAgIHN0eWxlOiB7IC4uLiRzdHlsZSwgLi4uc3R5bGUgfSxcbiAgICAkc3R5bGU6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2hlaWdodC9oZWlnaHQubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJtYXgtaGVpZ2h0LS1mdWxsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tZnVsbF9fXy1pb2pmXCIsXG4gIFwibWF4LWhlaWdodC0temVyb1wiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLXplcm9fX19kNTd3V1wiLFxuICBcIm1heC1oZWlnaHQtLTR4c1wiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTR4c19fX0xKVUJuXCIsXG4gIFwibWF4LWhlaWdodC0tM3hzXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tM3hzX19fLTJXby1cIixcbiAgXCJtYXgtaGVpZ2h0LS14eHNcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS14eHNfX19oRnJCZVwiLFxuICBcIm1heC1oZWlnaHQtLXhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0teHNfX19jMnBhRFwiLFxuICBcIm1heC1oZWlnaHQtLXNcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS1zX19fQWNwNlRcIixcbiAgXCJtYXgtaGVpZ2h0LS1tXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tbV9fX1Z6b1E5XCIsXG4gIFwibWF4LWhlaWdodC0tbFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLWxfX19XZ2xxYlwiLFxuICBcIm1heC1oZWlnaHQtLXhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0teGxfX19MVW1sSlwiLFxuICBcIm1heC1oZWlnaHQtLXh4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLXh4bF9fX2RSM3pLXCIsXG4gIFwibWF4LWhlaWdodC0tM3hsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tM3hsX19fYnViVERcIixcbiAgXCJtYXgtaGVpZ2h0LS00eGxcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS00eGxfX19iZFpYNlwiLFxuICBcIm1heC1oZWlnaHQtLTV4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTV4bF9fX1RVVEFSXCIsXG4gIFwibWF4LWhlaWdodC0tNnhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tNnhsX19fR2MtSGxcIixcbiAgXCJtYXgtaGVpZ2h0LS03eGxcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS03eGxfX19ZeGR0WFwiLFxuICBcIm1heC1oZWlnaHQtLTh4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTh4bF9fX0EyV3ZkXCIsXG4gIFwibWF4LWhlaWdodC0tOXhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tOXhsX19fSnZyR0pcIixcbiAgXCJtYXgtaGVpZ2h0LS0xMHhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tMTB4bF9fX3dMUlF1XCIsXG4gIFwibWF4LWhlaWdodC0tMTF4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTExeGxfX19nVTN4SVwiLFxuICBcIm1pbi1oZWlnaHQtLXplcm9cIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS16ZXJvX19fUEJWNDdcIixcbiAgXCJtaW4taGVpZ2h0LS00eHNcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS00eHNfX19WM04tYlwiLFxuICBcIm1pbi1oZWlnaHQtLTN4c1wiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTN4c19fX3RnRFFRXCIsXG4gIFwibWluLWhlaWdodC0teHhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0teHhzX19fLXFoU3pcIixcbiAgXCJtaW4taGVpZ2h0LS14c1wiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLXhzX19fWklwcXVcIixcbiAgXCJtaW4taGVpZ2h0LS1zXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0tc19fX3hNaUdjXCIsXG4gIFwibWluLWhlaWdodC0tbVwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLW1fX19WRVdMclwiLFxuICBcIm1pbi1oZWlnaHQtLWxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS1sX19fYTYtRjdcIixcbiAgXCJtaW4taGVpZ2h0LS14bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLXhsX19fLXlsRnVcIixcbiAgXCJtaW4taGVpZ2h0LS14eGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS14eGxfX183SzZmLVwiLFxuICBcIm1pbi1oZWlnaHQtLTN4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTN4bF9fXzBGWlFtXCIsXG4gIFwibWluLWhlaWdodC0tNHhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0tNHhsX19fY0dvSmtcIixcbiAgXCJtaW4taGVpZ2h0LS01eGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS01eGxfX19mVjNhT1wiLFxuICBcIm1pbi1oZWlnaHQtLTZ4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTZ4bF9fX0ZrVUdDXCIsXG4gIFwibWluLWhlaWdodC0tN3hsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0tN3hsX19fQ3Npd1ZcIixcbiAgXCJtaW4taGVpZ2h0LS04eGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS04eGxfX19oLS1ES1wiLFxuICBcIm1pbi1oZWlnaHQtLTl4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTl4bF9fX25GTVNIXCIsXG4gIFwibWluLWhlaWdodC0tMTB4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTEweGxfX19LYS1jQVwiLFxuICBcIm1pbi1oZWlnaHQtLTExeGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS0xMXhsX19fZlFzZ2NcIixcbiAgXCJoZWlnaHQtLXN0cmV0Y2hcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXN0cmV0Y2hfX19yWWFZblwiLFxuICBcImhlaWdodC0tZnVsbFwiOiBcImhlaWdodC1tb2R1bGVfX2hlaWdodC0tZnVsbF9fX3ZXeGllXCIsXG4gIFwiaGVpZ2h0LS1hdXRvXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS1hdXRvX19fNjduRk5cIixcbiAgXCJoZWlnaHQtLXplcm9cIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXplcm9fX19BcUEwUFwiLFxuICBcImhlaWdodC0tNHhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS00eHNfX19GZEowaFwiLFxuICBcImhlaWdodC0tM3hzXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS0zeHNfX19hc1VKYlwiLFxuICBcImhlaWdodC0teHhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS14eHNfX19ZcVRxcFwiLFxuICBcImhlaWdodC0teHNcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXhzX19fbE5SdFlcIixcbiAgXCJoZWlnaHQtLXNcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXNfX19IN20tLVwiLFxuICBcImhlaWdodC0tbVwiOiBcImhlaWdodC1tb2R1bGVfX2hlaWdodC0tbV9fX0NtTHAxXCIsXG4gIFwiaGVpZ2h0LS1sXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS1sX19fMnRra2hcIixcbiAgXCJoZWlnaHQtLXhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS14bF9fXzd4QkppXCIsXG4gIFwiaGVpZ2h0LS14eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXh4bF9fX0NqU3U1XCIsXG4gIFwiaGVpZ2h0LS0zeGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTN4bF9fX3BVZHZOXCIsXG4gIFwiaGVpZ2h0LS00eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTR4bF9fX1FIWll5XCIsXG4gIFwiaGVpZ2h0LS01eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTV4bF9fX1diZ283XCIsXG4gIFwiaGVpZ2h0LS02eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTZ4bF9fX2t3YzhhXCIsXG4gIFwiaGVpZ2h0LS03eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTd4bF9fX211TzFsXCIsXG4gIFwiaGVpZ2h0LS04eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTh4bF9fXzlwRU1OXCIsXG4gIFwiaGVpZ2h0LS05eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTl4bF9fXzZlNDZRXCIsXG4gIFwiaGVpZ2h0LS0xMHhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS0xMHhsX19fWGdYcC1cIixcbiAgXCJoZWlnaHQtLTExeGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTExeGxfX19hZHd1SFwiXG59OyIsICJpbXBvcnQgaGVpZ2h0U3R5bGVzIGZyb20gXCIuL2hlaWdodC5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgVFNoaXJ0U2l6ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5cbmV4cG9ydCB0eXBlICRIZWlnaHRQcm9wcyA9IHtcbiAgaGVpZ2h0PzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiIHwgXCJzdHJldGNoXCIgfCBcImF1dG9cIjtcbiAgbWluPzogVFNoaXJ0U2l6ZTtcbiAgbWF4PzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiO1xufTtcblxuZXhwb3J0IHR5cGUgSGVpZ2h0UGx1Z2luUHJvcHMgPSB7ICRoZWlnaHQ/OiBUU2hpcnRTaXplIHwgXCJmdWxsXCIgfCBcImF1dG9cIiB8IFwic3RyZXRjaFwiIHwgJEhlaWdodFByb3BzIH07XG5cbmV4cG9ydCBjb25zdCBoZWlnaHRQbHVnaW4gPSBnZXRQbHVnaW48SGVpZ2h0UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGhlaWdodCB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgaGVpZ2h0LCBtaW4sIG1heCB9ID0gdHlwZW9mICRoZWlnaHQgPT09IFwic3RyaW5nXCIgPyB7IGhlaWdodDogJGhlaWdodCB9IDogKCRoZWlnaHQgPz8ge30pO1xuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW1xuICAgICAgaGVpZ2h0ID8gaGVpZ2h0U3R5bGVzW2BoZWlnaHQtLSR7aGVpZ2h0fWBdIDogdW5kZWZpbmVkLFxuICAgICAgbWluID8gaGVpZ2h0U3R5bGVzW2BtaW4taGVpZ2h0LS0ke21pbn1gXSA6IHVuZGVmaW5lZCxcbiAgICAgIG1heCA/IGhlaWdodFN0eWxlc1tgbWF4LWhlaWdodC0tJHttYXh9YF0gOiB1bmRlZmluZWQsXG4gICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuICAgIF0sXG4gICAgJGhlaWdodDogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBjb2xvclN0eWxlcyBmcm9tIFwiLi9jb2xvci5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBDb2xvciB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbG9yc1wiO1xuXG5leHBvcnQgdHlwZSBUZXh0Q29sb3IgPSBDb2xvciB8IFRleHRDb2xvckFsaWFzO1xuXG5leHBvcnQgdHlwZSAkQ29sb3JQcm9wcyA9IHtcbiAgcmVhZG9ubHkgbm9ybWFsPzogVGV4dENvbG9yO1xuICByZWFkb25seSBob3Zlcj86IFRleHRDb2xvcjtcbiAgcmVhZG9ubHkgZGlzYWJsZWQ/OiBUZXh0Q29sb3I7XG59O1xuXG5leHBvcnQgdHlwZSBDb2xvclBsdWdpblByb3BzID0geyByZWFkb25seSAkY29sb3I/OiBUZXh0Q29sb3IgfCAkQ29sb3JQcm9wcyB9O1xuZXhwb3J0IHR5cGUgVGV4dENvbG9yQWxpYXMgPSBrZXlvZiB0eXBlb2YgYWxpYXNUb05vbWluYWw7XG5cbmNvbnN0IGFsaWFzVG9Ob21pbmFsID0ge1xuICB0ZXh0TXV0ZWQ6IFwiZ3JleTI1XCIsXG4gIHRleHREZWZhdWx0OiBcImdyZXkyMFwiLFxuICB0ZXh0SGlnaGxpZ2h0OiBcImdyZXkxMFwiLFxufSBhcyBjb25zdDtcblxuY29uc3QgaXNUZXh0Q29sb3JBbGlhcyA9IChjb2xvcjogVGV4dENvbG9yKTogY29sb3IgaXMgVGV4dENvbG9yQWxpYXMgPT4gY29sb3IgaW4gYWxpYXNUb05vbWluYWw7XG5cbmV4cG9ydCBjb25zdCBjb2xvclBsdWdpbiA9IGdldFBsdWdpbjxDb2xvclBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRjbGFzc05hbWUsICRjb2xvciB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgbm9ybWFsLCBob3ZlciwgZGlzYWJsZWQgfSA9IHR5cGVvZiAkY29sb3IgPT09IFwic3RyaW5nXCIgPyB7IG5vcm1hbDogJGNvbG9yIH0gOiAoJGNvbG9yID8/IHt9KTtcblxuICBjb25zdCBub3JtYWxDb2xvciA9IG5vcm1hbCA/IChpc1RleHRDb2xvckFsaWFzKG5vcm1hbCkgPyBhbGlhc1RvTm9taW5hbFtub3JtYWxdIDogbm9ybWFsKSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgaG92ZXJDb2xvciA9IGhvdmVyID8gKGlzVGV4dENvbG9yQWxpYXMoaG92ZXIpID8gYWxpYXNUb05vbWluYWxbaG92ZXJdIDogaG92ZXIpIDogdW5kZWZpbmVkO1xuICBjb25zdCBkaXNhYmxlZENvbG9yID0gZGlzYWJsZWQgPyAoaXNUZXh0Q29sb3JBbGlhcyhkaXNhYmxlZCkgPyBhbGlhc1RvTm9taW5hbFtkaXNhYmxlZF0gOiBkaXNhYmxlZCkgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbXG4gICAgICAkY2xhc3NOYW1lLFxuICAgICAgbm9ybWFsQ29sb3IgPyBjb2xvclN0eWxlc1tgY29sb3ItLSR7bm9ybWFsQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgICBob3ZlckNvbG9yID8gY29sb3JTdHlsZXNbYGNvbG9yLWhvdmVyLS0ke2hvdmVyQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgICBkaXNhYmxlZENvbG9yID8gY29sb3JTdHlsZXNbYGNvbG9yLWRpc2FibGVkLS0ke2Rpc2FibGVkQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgXSxcbiAgICAkY29sb3I6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2NvbG9yL2NvbG9yLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiY29sb3ItLWluaGVyaXRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1pbmhlcml0X19fR01wLWFcIixcbiAgXCJjb2xvci1ob3Zlci0taW5oZXJpdFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWluaGVyaXRfX19mR0xLNlwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1pbmhlcml0XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0taW5oZXJpdF9fX3M5TUNJXCIsXG4gIFwiY29sb3ItLXdoaXRlXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0td2hpdGVfX19mOGMxc1wiLFxuICBcImNvbG9yLWhvdmVyLS13aGl0ZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXdoaXRlX19fTTZhUmdcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0td2hpdGVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS13aGl0ZV9fX250allFXCIsXG4gIFwiY29sb3ItLXRyYW5zcGFyZW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tdHJhbnNwYXJlbnRfX18xdmZydlwiLFxuICBcImNvbG9yLWhvdmVyLS10cmFuc3BhcmVudFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXRyYW5zcGFyZW50X19feG03QkRcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tdHJhbnNwYXJlbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS10cmFuc3BhcmVudF9fX1owUXVVXCIsXG4gIFwiY29sb3ItLWdyZXkxMDBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5MTAwX19fQ3BEenZcIixcbiAgXCJjb2xvci1ob3Zlci0tZ3JleTEwMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkxMDBfX19HRkNvbVwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5MTAwXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tZ3JleTEwMF9fXzhTUnVKXCIsXG4gIFwiY29sb3ItLWdyZXk4MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXk4MF9fX0Q3MWZuXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk4MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk4MF9fX3NCSXhiXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk4MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXk4MF9fX3cxbnBjXCIsXG4gIFwiY29sb3ItLWdyZXk2MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXk2MF9fX1VUMjhYXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk2MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk2MF9fX3hmWm1iXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk2MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXk2MF9fX21mVmdxXCIsXG4gIFwiY29sb3ItLWdyZXk0MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXk0MF9fX2lST3pSXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk0MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk0MF9fX3JiTjA0XCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk0MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXk0MF9fX05pWnhpXCIsXG4gIFwiY29sb3ItLWdyZXkzMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkzMF9fX0x3bkwyXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkzMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkzMF9fX1g3aC1oXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXkzMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkzMF9fX0txOWdXXCIsXG4gIFwiY29sb3ItLWdyZXkyNVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkyNV9fX0VOVDVvXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkyNVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkyNV9fX3RZeWdEXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXkyNVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkyNV9fX2JtLTFjXCIsXG4gIFwiY29sb3ItLWdyZXkyMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkyMF9fX0VGMk9MXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkyMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkyMF9fX3VQdFhVXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXkyMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkyMF9fX3ZwdXkxXCIsXG4gIFwiY29sb3ItLWdyZXkxMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkxMF9fX2w1YVpwXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkxMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkxMF9fXzRBcGNyXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXkxMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkxMF9fX1k1cXl3XCIsXG4gIFwiY29sb3ItLWdyZXk3MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXk3MF9fX0M5SEhNXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk3MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk3MF9fXzNrcnRMXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk3MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXk3MF9fXzg2SnFWXCIsXG4gIFwiY29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19fLTNUZGRcIixcbiAgXCJjb2xvci1ob3Zlci0tZ3JleTgwQWxwaGE4NVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk4MEFscGhhODVfX19Eb2ZvMFwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5ODBBbHBoYTg1XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tZ3JleTgwQWxwaGE4NV9fX2VSM3pzXCIsXG4gIFwiY29sb3ItLXByaW1hcnlcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1wcmltYXJ5X19fMDhXblZcIixcbiAgXCJjb2xvci1ob3Zlci0tcHJpbWFyeVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXByaW1hcnlfX19WdC0zZlwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1wcmltYXJ5XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tcHJpbWFyeV9fXzBYc2s5XCIsXG4gIFwiY29sb3ItLXN1Y2Nlc3NcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1zdWNjZXNzX19fd29URjJcIixcbiAgXCJjb2xvci1ob3Zlci0tc3VjY2Vzc1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXN1Y2Nlc3NfX183RUlXY1wiLFxuICBcImNvbG9yLWRpc2FibGVkLS1zdWNjZXNzXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tc3VjY2Vzc19fX05lMldJXCIsXG4gIFwiY29sb3ItLW5vdGljZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLW5vdGljZV9fXzZENktHXCIsXG4gIFwiY29sb3ItaG92ZXItLW5vdGljZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLW5vdGljZV9fX2VPZFVwXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLW5vdGljZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLW5vdGljZV9fX3NEbzhyXCIsXG4gIFwiY29sb3ItLXdhcm5pbmdcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS13YXJuaW5nX19fZktid2RcIixcbiAgXCJjb2xvci1ob3Zlci0td2FybmluZ1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXdhcm5pbmdfX19HajJoTVwiLFxuICBcImNvbG9yLWRpc2FibGVkLS13YXJuaW5nXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0td2FybmluZ19fX3JYRGJSXCIsXG4gIFwiY29sb3ItLWNyaXRpY2FsXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tY3JpdGljYWxfX19zaEZCcVwiLFxuICBcImNvbG9yLWhvdmVyLS1jcml0aWNhbFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWNyaXRpY2FsX19fUlFXWllcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tY3JpdGljYWxcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1jcml0aWNhbF9fX2gzNy0zXCIsXG4gIFwiY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tc3VjY2Vzc1RpbnRfX19EZDBSeVwiLFxuICBcImNvbG9yLWhvdmVyLS1zdWNjZXNzVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXN1Y2Nlc3NUaW50X19fTEtsemdcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tc3VjY2Vzc1RpbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1zdWNjZXNzVGludF9fX2xzbUpoXCIsXG4gIFwiY29sb3ItLXdhcm5pbmdUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0td2FybmluZ1RpbnRfX19qM1BaWFwiLFxuICBcImNvbG9yLWhvdmVyLS13YXJuaW5nVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXdhcm5pbmdUaW50X19fam4xd3VcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0td2FybmluZ1RpbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS13YXJuaW5nVGludF9fX1c2akk4XCIsXG4gIFwiY29sb3ItLWNyaXRpY2FsVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWNyaXRpY2FsVGludF9fX3lSSmFBXCIsXG4gIFwiY29sb3ItaG92ZXItLWNyaXRpY2FsVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWNyaXRpY2FsVGludF9fX1Zzb041XCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWNyaXRpY2FsVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWNyaXRpY2FsVGludF9fX1RBQkhrXCIsXG4gIFwiY29sb3ItLWxpbmtcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1saW5rX19fblNNbTlcIixcbiAgXCJjb2xvci1ob3Zlci0tbGlua1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWxpbmtfX19HbmlZM1wiLFxuICBcImNvbG9yLWRpc2FibGVkLS1saW5rXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tbGlua19fX0ZvSjVYXCIsXG4gIFwiY29sb3ItLWNvZGVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1jb2RlX19fbkNPakFcIixcbiAgXCJjb2xvci1ob3Zlci0tY29kZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWNvZGVfX19WNXV1VlwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1jb2RlXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tY29kZV9fX3czVlV3XCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgZ3JhZGllbnRTdHlsZXMgZnJvbSBcIi4vZ3JhZGllbnQubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgR3JhZGllbnRQbHVnaW5Qcm9wcyA9IHsgJGdyYWRpZW50PzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgZ3JhZGllbnRQbHVnaW4gPSBnZXRQbHVnaW48R3JhZGllbnRQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+ICh7XG4gICRjbGFzc05hbWU6IFtwcm9wcy4kY2xhc3NOYW1lLCBwcm9wcy4kZ3JhZGllbnQgPyBncmFkaWVudFN0eWxlcy5ncmFkaWVudCA6IHVuZGVmaW5lZF0sXG4gICRncmFkaWVudDogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2dyYWRpZW50L2dyYWRpZW50Lm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiZ3JhZGllbnRcIjogXCJncmFkaWVudC1tb2R1bGVfX2dyYWRpZW50X19fTURCdkZcIlxufTsiLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IERyYWdnYWJsZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vZ2V0LWRyYWdnYWJsZS1jb250ZXh0XCI7XG5pbXBvcnQgeyBhY3Rpb24gfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgZHJhZ2dlZEl0ZW1TdGF0ZUluamVjdGFibGUgfSBmcm9tIFwiLi9fc2hhcmVkL2RyYWdnZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9kcmFnZ2FibGUubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBkcmFnZ2FibGVQbHVnaW4gPSBnZXRQbHVnaW48RHJhZ2dhYmxlUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJGRyYWdnYWJsZSkge1xuICAgIHJldHVybiB7ICRkcmFnZ2FibGU6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgY29uc3QgW2RyYWdnaW5nLCBzZXREcmFnZ2luZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgeyBjb250ZXh0LCBpdGVtIH0gPSBwcm9wcy4kZHJhZ2dhYmxlO1xuXG4gIGNvbnN0IGRyYWdnZWRJdGVtU3RhdGUgPSB1c2VTeW5jSW5qZWN0KGRyYWdnZWRJdGVtU3RhdGVJbmplY3RhYmxlLCBjb250ZXh0KTtcblxuICByZXR1cm4ge1xuICAgIGRyYWdnYWJsZTogdHJ1ZSxcblxuICAgICR2aXN1YWxseUhpZGRlbjogZHJhZ2dpbmcsXG5cbiAgICBvbkRyYWdTdGFydDogYWN0aW9uKChldmVudDogUmVhY3QuRHJhZ0V2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSBcIm1vdmVcIjtcblxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgcHJvcHMub25EcmFnU3RhcnQ/LihldmVudCk7XG5cbiAgICAgIG1ha2VDaHJvbWl1bU5vdEdsaXRjaFdoZW5EcmFnZ2luZyhldmVudCk7XG5cbiAgICAgIGRyYWdnZWRJdGVtU3RhdGUuc2V0KGl0ZW0pO1xuXG4gICAgICAvLyBEb24ndCBzZXQgZHJhZ2dpbmcgdG9vIGVhcmx5LCBiZWNhdXNlIGl0IHdvdWxkIGhpZGUgdGhlIFwiZHJhZyBwcmV2aWV3XCIgZm9yIGVsZW1lbnQgYmVpbmcgZHJhZ2dlZC5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXREcmFnZ2luZyh0cnVlKTtcbiAgICAgIH0sIDApO1xuICAgIH0pLFxuXG4gICAgb25EcmFnRW5kOiBhY3Rpb24oKGV2ZW50OiBSZWFjdC5EcmFnRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICBwcm9wcy5vbkRyYWdFbmQ/LihldmVudCk7XG5cbiAgICAgIGRyYWdnZWRJdGVtU3RhdGUuc2V0KHVuZGVmaW5lZCk7XG4gICAgICBzZXREcmFnZ2luZyhmYWxzZSk7XG4gICAgfSksXG5cbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgc3R5bGVzLmRyYWdnYWJsZV0sXG5cbiAgICAkZHJhZ2dhYmxlOiB1bmRlZmluZWQsXG4gIH07XG59KTtcblxuY29uc3QgbWFrZUNocm9taXVtTm90R2xpdGNoV2hlbkRyYWdnaW5nID0gKGV2ZW50OiBSZWFjdC5EcmFnRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gIGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKFwidGV4dC9wbGFpblwiLCBcInN0dWItZGF0YS10by1maXgtY2hyb21pdW1cIik7XG59O1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2RyYWdnYWJsZS5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImRyYWdnYWJsZVwiOiBcImRyYWdnYWJsZS1tb2R1bGVfX2RyYWdnYWJsZV9fX2JqQ0EzXCJcbn07IiwgImltcG9ydCB7IGRyYWdnZWRJdGVtU3RhdGVJbmplY3RhYmxlIH0gZnJvbSBcIi4vX3NoYXJlZC9kcmFnZ2VkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB7IG1ha2VTdXJlRHJhZ0FuZERyb3BFdmVudHNIYXZlVGltZVRvSGFwcGVuSW5qZWN0YWJsZSB9IGZyb20gXCIuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmluamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgRHJvcHBhYmxlUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IGNvbnN0IGRyb3BwYWJsZVBsdWdpbiA9IGdldFBsdWdpbjxEcm9wcGFibGVQbHVnaW5Qcm9wcz4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJGRyb3BwYWJsZSkge1xuICAgIHJldHVybiB7ICRkcm9wcGFibGU6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgY29uc3QgeyBjb250ZXh0LCBvbkRyb3AgfSA9IHByb3BzLiRkcm9wcGFibGU7XG5cbiAgY29uc3QgZHJhZ2dlZEl0ZW1TdGF0ZSA9IHVzZVN5bmNJbmplY3QoZHJhZ2dlZEl0ZW1TdGF0ZUluamVjdGFibGUsIGNvbnRleHQpO1xuICBjb25zdCBzb21lID0gdXNlU3luY0luamVjdChtYWtlU3VyZURyYWdBbmREcm9wRXZlbnRzSGF2ZVRpbWVUb0hhcHBlbkluamVjdGFibGUpO1xuXG4gIGNvbnN0IGRyYWdnZWRJdGVtID0gZHJhZ2dlZEl0ZW1TdGF0ZS5nZXQoKTtcblxuICByZXR1cm4ge1xuICAgIG9uRHJhZ092ZXI6IChldmVudDogUmVhY3QuRHJhZ0V2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgcHJvcHMub25EcmFnT3Zlcj8uKGV2ZW50KTtcblxuICAgICAgaWYgKGRyYWdnZWRJdGVtKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIG9uRHJvcDogKGV2ZW50OiBSZWFjdC5EcmFnRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICBwcm9wcy5vbkRyb3A/LihldmVudCk7XG5cbiAgICAgIGlmIChkcmFnZ2VkSXRlbSkge1xuICAgICAgICBzb21lKCgpID0+IHtcbiAgICAgICAgICBvbkRyb3AoZHJhZ2dlZEl0ZW0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgJGRyb3BwYWJsZTogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0cmFuc2l0aW9uU3R5bGVzIGZyb20gXCIuL3RyYW5zaXRpb24ubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgVHJhbnNpdGlvblBsdWdpblByb3BzID0geyAkdHJhbnNpdGlvbj86IGJvb2xlYW4gfTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zaXRpb25QbHVnaW4gPSBnZXRQbHVnaW48VHJhbnNpdGlvblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHsgW3RyYW5zaXRpb25TdHlsZXMudHJhbnNpdGlvbl06ICEhcHJvcHMuJHRyYW5zaXRpb24gfV0sXG4gICR0cmFuc2l0aW9uOiB1bmRlZmluZWQsXG59KSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvdHJhbnNpdGlvbi90cmFuc2l0aW9uLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwidHJhbnNpdGlvblwiOiBcInRyYW5zaXRpb24tbW9kdWxlX190cmFuc2l0aW9uX19fU3d3T0VcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBvZmZzZXRTdHlsZXMgZnJvbSBcIi4vb2Zmc2V0Lm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IERpcmVjdGlvbiB9IGZyb20gXCIuLi9fc2hhcmVkL2RpcmVjdGlvbnNcIjtcbmltcG9ydCB0eXBlIHsgVFNoaXJ0U2l6ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5cbmV4cG9ydCB0eXBlIE9mZnNldFBsdWdpblByb3BzID0geyAkb2Zmc2V0PzogeyBkaXJlY3Rpb246IERpcmVjdGlvbjsgc2l6ZTogVFNoaXJ0U2l6ZSB9IH07XG5cbmV4cG9ydCBjb25zdCBvZmZzZXRQbHVnaW4gPSBnZXRQbHVnaW48T2Zmc2V0UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJG9mZnNldCkge1xuICAgIHJldHVybiB7ICRvZmZzZXQ6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgb2Zmc2V0U3R5bGVzW2BvZmZzZXRfXyR7cHJvcHMuJG9mZnNldC5kaXJlY3Rpb259LS0ke3Byb3BzLiRvZmZzZXQuc2l6ZX1gXV0sXG5cbiAgICAkb2Zmc2V0OiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9vZmZzZXQvb2Zmc2V0Lm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwib2Zmc2V0X190b3AtLXplcm9cIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0temVyb19fX2Fwck9yXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLXplcm9cIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0temVyb19fX2JGTnk0XCIsXG4gIFwib2Zmc2V0X19sZWZ0LS16ZXJvXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS16ZXJvX19fNUtkTXhcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS16ZXJvXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0temVyb19fX0RyajB1XCIsXG4gIFwib2Zmc2V0X190b3AtLTR4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS00eHNfX19GYTh6ZVwiLFxuICBcIm9mZnNldF9fYm90dG9tLS00eHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tNHhzX19fSmM3WndcIixcbiAgXCJvZmZzZXRfX2xlZnQtLTR4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tNHhzX19fdDdqR3pcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS00eHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS00eHNfX18ybWNMWlwiLFxuICBcIm9mZnNldF9fdG9wLS0zeHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tM3hzX19faEh4QUtcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tM3hzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTN4c19fX3FQM0x2XCIsXG4gIFwib2Zmc2V0X19sZWZ0LS0zeHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLTN4c19fX05tRDdpXCIsXG4gIFwib2Zmc2V0X19yaWdodC0tM3hzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tM3hzX19fOVlsdWVcIixcbiAgXCJvZmZzZXRfX3RvcC0teHhzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLXh4c19fX1pBS3hvXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLXh4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS14eHNfX19rOUY0eFwiLFxuICBcIm9mZnNldF9fbGVmdC0teHhzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS14eHNfX19FRWY0RFwiLFxuICBcIm9mZnNldF9fcmlnaHQtLXh4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLXh4c19fXy1KNzVLXCIsXG4gIFwib2Zmc2V0X190b3AtLXhzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLXhzX19faXJwbmFcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0teHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0teHNfX18zR1hvSFwiLFxuICBcIm9mZnNldF9fbGVmdC0teHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLXhzX19fN1dZSklcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS14c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLXhzX19fcVktbE9cIixcbiAgXCJvZmZzZXRfX3RvcC0tc1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS1zX19fTmRSS3FcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tc1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS1zX19fWUtmOWVcIixcbiAgXCJvZmZzZXRfX2xlZnQtLXNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLXNfX19taXhwQVwiLFxuICBcIm9mZnNldF9fcmlnaHQtLXNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS1zX19fbTZqZjVcIixcbiAgXCJvZmZzZXRfX3RvcC0tbVwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS1tX19fRVhrcWlcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tbVwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS1tX19fT3ZsWXJcIixcbiAgXCJvZmZzZXRfX2xlZnQtLW1cIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLW1fX19YUy1QR1wiLFxuICBcIm9mZnNldF9fcmlnaHQtLW1cIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS1tX19fbzB6Wi1cIixcbiAgXCJvZmZzZXRfX3RvcC0tbFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS1sX19fMGJHYVBcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tbFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS1sX19fUzEtTFdcIixcbiAgXCJvZmZzZXRfX2xlZnQtLWxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLWxfX19oUzFiM1wiLFxuICBcIm9mZnNldF9fcmlnaHQtLWxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS1sX19fdlE0WXpcIixcbiAgXCJvZmZzZXRfX3RvcC0teGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0teGxfX182TWZLVlwiLFxuICBcIm9mZnNldF9fYm90dG9tLS14bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS14bF9fX2RnYldXXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS14bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0teGxfX18wYVdCNVwiLFxuICBcIm9mZnNldF9fcmlnaHQtLXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0teGxfX195UHo4T1wiLFxuICBcIm9mZnNldF9fdG9wLS14eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0teHhsX19faXZKUmRcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0teHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLXh4bF9fX1p0RTZaXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS14eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLXh4bF9fXzRsSy1FXCIsXG4gIFwib2Zmc2V0X19yaWdodC0teHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0teHhsX19fRU04ckJcIixcbiAgXCJvZmZzZXRfX3RvcC0tM3hsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTN4bF9fX0E5QmtuXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTN4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS0zeGxfX196QzgtYVwiLFxuICBcIm9mZnNldF9fbGVmdC0tM3hsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS0zeGxfX19XckwtVFwiLFxuICBcIm9mZnNldF9fcmlnaHQtLTN4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTN4bF9fX25lV2FwXCIsXG4gIFwib2Zmc2V0X190b3AtLTR4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS00eGxfX19CV1E5aVwiLFxuICBcIm9mZnNldF9fYm90dG9tLS00eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tNHhsX19fOFg0a0VcIixcbiAgXCJvZmZzZXRfX2xlZnQtLTR4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tNHhsX19fSGM0MFRcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS00eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS00eGxfX19zUmpHUVwiLFxuICBcIm9mZnNldF9fdG9wLS01eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tNXhsX19fNnVSWFlcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tNXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTV4bF9fX25XYzZuXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS01eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLTV4bF9fX1ZrV3pKXCIsXG4gIFwib2Zmc2V0X19yaWdodC0tNXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tNXhsX19fY25nS0VcIixcbiAgXCJvZmZzZXRfX3RvcC0tNnhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTZ4bF9fX3RyN2hIXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTZ4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS02eGxfX19DWVUxTVwiLFxuICBcIm9mZnNldF9fbGVmdC0tNnhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS02eGxfX18wSXVNYlwiLFxuICBcIm9mZnNldF9fcmlnaHQtLTZ4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTZ4bF9fXy0xc3dvXCIsXG4gIFwib2Zmc2V0X190b3AtLTd4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS03eGxfX19ONy1YZFwiLFxuICBcIm9mZnNldF9fYm90dG9tLS03eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tN3hsX19fLXBBaHlcIixcbiAgXCJvZmZzZXRfX2xlZnQtLTd4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tN3hsX19fbXhWcmtcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS03eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS03eGxfX19uenVsUFwiLFxuICBcIm9mZnNldF9fdG9wLS04eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tOHhsX19fZU0tN1dcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tOHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTh4bF9fX2VucEVtXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS04eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLTh4bF9fX2ppRlluXCIsXG4gIFwib2Zmc2V0X19yaWdodC0tOHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tOHhsX19fRk5xTnNcIixcbiAgXCJvZmZzZXRfX3RvcC0tOXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTl4bF9fXy1DbWg5XCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTl4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS05eGxfX190d0UzdFwiLFxuICBcIm9mZnNldF9fbGVmdC0tOXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS05eGxfX183NW11YlwiLFxuICBcIm9mZnNldF9fcmlnaHQtLTl4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTl4bF9fX2tDU3NDXCIsXG4gIFwib2Zmc2V0X190b3AtLTEweGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tMTB4bF9fX2psYmhaXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTEweGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tMTB4bF9fX3JleVRxXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS0xMHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS0xMHhsX19fOXAzY25cIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS0xMHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tMTB4bF9fX3Qtdm83XCIsXG4gIFwib2Zmc2V0X190b3AtLTExeGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tMTF4bF9fXzBuclphXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTExeGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tMTF4bF9fX3djZldnXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS0xMXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS0xMXhsX19fc0l0ZzVcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS0xMXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tMTF4bF9fX05VcC1uXCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgb2Zmc2V0U3R5bGVzIGZyb20gXCIuL29mZnNldC1jaGlsZHJlbi5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBEaXJlY3Rpb24gfSBmcm9tIFwiLi4vX3NoYXJlZC9kaXJlY3Rpb25zXCI7XG5pbXBvcnQgdHlwZSB7IFRTaGlydFNpemUgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuXG5leHBvcnQgdHlwZSBPZmZzZXRDaGlsZHJlblBsdWdpblByb3BzID0geyAkb2Zmc2V0Q2hpbGRyZW4/OiB7IGRpcmVjdGlvbjogRGlyZWN0aW9uOyBzaXplOiBUU2hpcnRTaXplIH0gfTtcblxuZXhwb3J0IGNvbnN0IG9mZnNldENoaWxkcmVuUGx1Z2luID0gZ2V0UGx1Z2luPE9mZnNldENoaWxkcmVuUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJG9mZnNldENoaWxkcmVuKSB7XG4gICAgcmV0dXJuIHsgJG9mZnNldENoaWxkcmVuOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW1xuICAgICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICAgIG9mZnNldFN0eWxlc1tgb2Zmc2V0LWNoaWxkcmVuX18ke3Byb3BzLiRvZmZzZXRDaGlsZHJlbi5kaXJlY3Rpb259LS0ke3Byb3BzLiRvZmZzZXRDaGlsZHJlbi5zaXplfWBdLFxuICAgIF0sXG5cbiAgICAkb2Zmc2V0Q2hpbGRyZW46IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW4ubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0temVyb1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS16ZXJvX19fOGx5R2lcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0temVyb1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS16ZXJvX19fRGJJM2pcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXplcm9cIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXplcm9fX19paG5TWFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXplcm9cIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS16ZXJvX19fUTRMWE9cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tNHhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLTR4c19fX0xmTTB4XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTR4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS00eHNfX19ZZXl3NlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tNHhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS00eHNfX19UQWFES1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTR4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTR4c19fXzZpV1VvXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTN4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS0zeHNfX191cmtpZ1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS0zeHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tM3hzX19feVhIM3pcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTN4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tM3hzX19fZ0F6VkFcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS0zeHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS0zeHNfX19XcjQ4Y1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS14eHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0teHhzX19fZHFUVFNcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0teHhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXh4c19fX0VwNjZSXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS14eHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXh4c19fXzl2UFlkXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teHhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teHhzX19fanV1S3BcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0teHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0teHNfX19udzVhYVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS14c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS14c19fX0pnQzZsXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS14c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0teHNfX19jeHRWeFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teHNfX18yaVA1Z1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS1zXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLXNfX19IbTJpcFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS1zXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXNfX19XYTM4TlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tc1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tc19fX1dXQkZoXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tc1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXNfX193ekZWOVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS1tXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLW1fX19aak9DTVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS1tXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLW1fX19pcERrV1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tbVwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tbV9fX1k4cURXXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tbVwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLW1fX180WEpmdlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS1sXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLWxfX19RdlRSb1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS1sXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLWxfX19FR2tBUlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tbFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tbF9fX1VuVUh2XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tbFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLWxfX19qVk5OWFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS14bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS14bF9fX0VOY2NYXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXhsX19fYm1yc2FcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS14bF9fX0tqby1jXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS14bF9fX0RIUnV5XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLXh4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS14eGxfX19vbmplQVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS14eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0teHhsX19fdi0xVGxcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXh4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0teHhsX19faS1jMmhcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS14eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS14eGxfX19xRzA4NVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS0zeGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tM3hsX19fTDltc1FcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tM3hsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTN4bF9fX3dNTWJtXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS0zeGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTN4bF9fX2JTU09yXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tM3hsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tM3hsX19fZTlXN3ZcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tNHhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLTR4bF9fX1ZBay14XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTR4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS00eGxfX19EeXk1WFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tNHhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS00eGxfX19YMHg1YVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTR4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTR4bF9fX1F1bC1qXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTV4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS01eGxfX19lVzVRa1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS01eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tNXhsX19fcGlhLVpcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTV4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tNXhsX19faUFBaG9cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS01eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS01eGxfX194anVDTFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS02eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tNnhsX19fQzBXdmtcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tNnhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTZ4bF9fXzg0enAtXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS02eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTZ4bF9fX2l1ZUJGXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tNnhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tNnhsX19fVU5RLUJcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tN3hsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLTd4bF9fX2hQY2xjXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTd4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS03eGxfX181Ulp3UVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tN3hsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS03eGxfX19ISXA2QlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTd4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTd4bF9fX0ZpT0VJXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTh4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS04eGxfX19ndDRmdVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS04eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tOHhsX19fZlBFT0RcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTh4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tOHhsX19fLXRUZlBcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS04eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS04eGxfX19kVVhSaFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS05eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tOXhsX19fa1JOQTZcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tOXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTl4bF9fX2piSGFCXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS05eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTl4bF9fX1NGZ1BsXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tOXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tOXhsX19fVEppZUhcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tMTB4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS0xMHhsX19fLXV0T25cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tMTB4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS0xMHhsX19fYTU5d1RcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTEweGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTEweGxfX19LY2V6ZVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTEweGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS0xMHhsX19fTm9tWXVcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tMTF4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS0xMXhsX19fU1l0Z25cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tMTF4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS0xMXhsX19fUDYydTRcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTExeGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTExeGxfX19nMG9vZVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTExeGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS0xMXhsX19fRU9XTC1cIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBoaWRkZW5TdHlsZXMgZnJvbSBcIi4vaGlkZGVuLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIEhpZGRlblBsdWdpblByb3BzID0geyAkaGlkZGVuPzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgaGlkZGVuUGx1Z2luID0gZ2V0UGx1Z2luPEhpZGRlblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHsgW2hpZGRlblN0eWxlcy5oaWRkZW5dOiAhIXByb3BzLiRoaWRkZW4gfV0sXG5cbiAgJGhpZGRlbjogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2hpZGRlbi9oaWRkZW4ubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJoaWRkZW5cIjogXCJoaWRkZW4tbW9kdWxlX19oaWRkZW5fX19uVVVpMVwiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IG1hcmdpblN0eWxlcyBmcm9tIFwiLi9tYXJnaW4ubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSBcImxvZGFzaC9mcFwiO1xuaW1wb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcblxuZXhwb3J0IHR5cGUgRGlyZWN0aW9uYWxNYXJnaW4gPSB7XG4gIHRvcD86IFRTaGlydFNpemU7XG4gIGJvdHRvbT86IFRTaGlydFNpemU7XG4gIGxlZnQ/OiBUU2hpcnRTaXplO1xuICByaWdodD86IFRTaGlydFNpemU7XG4gIGhvcml6b250YWw/OiBUU2hpcnRTaXplO1xuICB2ZXJ0aWNhbD86IFRTaGlydFNpemU7XG59O1xuXG5leHBvcnQgdHlwZSBNYXJnaW5QbHVnaW5Qcm9wcyA9IHsgJG1hcmdpbj86IGJvb2xlYW4gfCBEaXJlY3Rpb25hbE1hcmdpbiB8IFRTaGlydFNpemUgfCBcImF1dG9cIiB9O1xuXG5leHBvcnQgY29uc3QgbWFyZ2luUGx1Z2luID0gZ2V0UGx1Z2luPE1hcmdpblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBpZiAoIXByb3BzLiRtYXJnaW4pIHtcbiAgICByZXR1cm4geyAkbWFyZ2luOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IG1hcmdpbiA9IHByb3BzLiRtYXJnaW4gPT09IHRydWUgPyBcInhzXCIgOiBwcm9wcy4kbWFyZ2luO1xuXG4gIGlmIChpc1N0cmluZyhtYXJnaW4pKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICRjbGFzc05hbWU6IFtwcm9wcy4kY2xhc3NOYW1lLCBtYXJnaW5TdHlsZXNbYG1hcmdpbi0tJHttYXJnaW59YF1dLFxuICAgICAgJG1hcmdpbjogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBjb25zdCB0b3BTaXplID0gbWFyZ2luLnRvcCB8fCBtYXJnaW4udmVydGljYWw7XG4gIGNvbnN0IGJvdHRvbVNpemUgPSBtYXJnaW4uYm90dG9tIHx8IG1hcmdpbi52ZXJ0aWNhbDtcbiAgY29uc3QgcmlnaHRTaXplID0gbWFyZ2luLnJpZ2h0IHx8IG1hcmdpbi5ob3Jpem9udGFsO1xuICBjb25zdCBsZWZ0U2l6ZSA9IG1hcmdpbi5sZWZ0IHx8IG1hcmdpbi5ob3Jpem9udGFsO1xuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW1xuICAgICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICAgIHRvcFNpemUgPyBtYXJnaW5TdHlsZXNbYG1hcmdpbl9fdG9wLS0ke3RvcFNpemV9YF0gOiB1bmRlZmluZWQsXG4gICAgICByaWdodFNpemUgPyBtYXJnaW5TdHlsZXNbYG1hcmdpbl9fcmlnaHQtLSR7cmlnaHRTaXplfWBdIDogdW5kZWZpbmVkLFxuICAgICAgYm90dG9tU2l6ZSA/IG1hcmdpblN0eWxlc1tgbWFyZ2luX19ib3R0b20tLSR7Ym90dG9tU2l6ZX1gXSA6IHVuZGVmaW5lZCxcbiAgICAgIGxlZnRTaXplID8gbWFyZ2luU3R5bGVzW2BtYXJnaW5fX2xlZnQtLSR7bGVmdFNpemV9YF0gOiB1bmRlZmluZWQsXG4gICAgXSxcbiAgICAkbWFyZ2luOiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9tYXJnaW4vbWFyZ2luLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwibWFyZ2luX190b3AtLXplcm9cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0temVyb19fX2dHTHF3XCIsXG4gIFwibWFyZ2luX190b3AtLTR4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS00eHNfX19FdjhyN1wiLFxuICBcIm1hcmdpbl9fdG9wLS0zeHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tM3hzX19fbTRZT1pcIixcbiAgXCJtYXJnaW5fX3RvcC0teHhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLXh4c19fX29wWHZwXCIsXG4gIFwibWFyZ2luX190b3AtLXhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLXhzX19fSklqWUNcIixcbiAgXCJtYXJnaW5fX3RvcC0tc1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS1zX19fWU44RElcIixcbiAgXCJtYXJnaW5fX3RvcC0tbVwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS1tX19fWHdrLVNcIixcbiAgXCJtYXJnaW5fX3RvcC0tbFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS1sX19fS1RXaUdcIixcbiAgXCJtYXJnaW5fX3RvcC0teGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0teGxfX185SU9iWlwiLFxuICBcIm1hcmdpbl9fdG9wLS14eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0teHhsX19fM01XenBcIixcbiAgXCJtYXJnaW5fX3RvcC0tM3hsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTN4bF9fX004eEgzXCIsXG4gIFwibWFyZ2luX190b3AtLTR4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS00eGxfX19ydk5IUlwiLFxuICBcIm1hcmdpbl9fdG9wLS01eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tNXhsX19fSW5FUnhcIixcbiAgXCJtYXJnaW5fX3RvcC0tNnhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTZ4bF9fX1BTLXQ2XCIsXG4gIFwibWFyZ2luX190b3AtLTd4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS03eGxfX19QNVlielwiLFxuICBcIm1hcmdpbl9fdG9wLS04eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tOHhsX19fOTZNb0tcIixcbiAgXCJtYXJnaW5fX3RvcC0tOXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTl4bF9fX29wZURjXCIsXG4gIFwibWFyZ2luX190b3AtLTEweGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tMTB4bF9fX3B2RjZ4XCIsXG4gIFwibWFyZ2luX190b3AtLTExeGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tMTF4bF9fX3BCekFtXCIsXG4gIFwibWFyZ2luX19yaWdodC0temVyb1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLXplcm9fX19CV3c2T1wiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTR4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTR4c19fX3JkUE9vXCIsXG4gIFwibWFyZ2luX19yaWdodC0tM3hzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tM3hzX19fLVk5T09cIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS14eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS14eHNfX19Kcm9BQVwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLXhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0teHNfX19abDhNaVwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLXNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS1zX19fMjRESW5cIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS1tXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tbV9fX1pMbDZCXCIsXG4gIFwibWFyZ2luX19yaWdodC0tbFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLWxfX19lSFMtQlwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0teGxfX19JVzhkNFwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLXh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLXh4bF9fXy1PRDdMXCIsXG4gIFwibWFyZ2luX19yaWdodC0tM3hsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tM3hsX19fdEdZUlJcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS00eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS00eGxfX19FWHFoM1wiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTV4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTV4bF9fX0N1WVZHXCIsXG4gIFwibWFyZ2luX19yaWdodC0tNnhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tNnhsX19fREtnRFRcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS03eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS03eGxfX19Geng0YlwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTh4bF9fX0VsU1dNXCIsXG4gIFwibWFyZ2luX19yaWdodC0tOXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tOXhsX19fMG9hVHhcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS0xMHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tMTB4bF9fX1E1NVBDXCIsXG4gIFwibWFyZ2luX19yaWdodC0tMTF4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTExeGxfX19wMDJrblwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS16ZXJvXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLXplcm9fX19uLU5WUVwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS00eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tNHhzX19faUpKYWFcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tM3hzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTN4c19fX2Z3UWQxXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLXh4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS14eHNfX182VWFmSFwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS14c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS14c19fX3oySjFlXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLXNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tc19fXy1IRjZRXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLW1cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tbV9fX0pKT1JFXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLWxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tbF9fX0dJWmNGXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLXhsX19fTTRBd05cIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0teHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLXh4bF9fX1RyOG1aXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLTN4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS0zeGxfX18tMFotSFwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS00eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tNHhsX19fNGxrU0ZcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tNXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTV4bF9fX3ppelVQXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLTZ4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS02eGxfX19zTW10S1wiLFxuICBcIm1hcmdpbl9fYm90dG9tLS03eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tN3hsX19fSk9BWnJcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tOHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTh4bF9fX0E1UTRDXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLTl4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS05eGxfX183dVN6dlwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS0xMHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTEweGxfX19KbVFKNVwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS0xMXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTExeGxfX182S0VZc1wiLFxuICBcIm1hcmdpbl9fbGVmdC0temVyb1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0temVyb19fX3ZDdlNvXCIsXG4gIFwibWFyZ2luX19sZWZ0LS00eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTR4c19fX2xLNS15XCIsXG4gIFwibWFyZ2luX19sZWZ0LS0zeHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTN4c19fXzcteFYtXCIsXG4gIFwibWFyZ2luX19sZWZ0LS14eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLXh4c19fX2dlNlZKXCIsXG4gIFwibWFyZ2luX19sZWZ0LS14c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0teHNfX19kdnJValwiLFxuICBcIm1hcmdpbl9fbGVmdC0tc1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tc19fX0RNWkoyXCIsXG4gIFwibWFyZ2luX19sZWZ0LS1tXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19sZWZ0LS1tX19fNXBlZHdcIixcbiAgXCJtYXJnaW5fX2xlZnQtLWxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLWxfX18tU3hESVwiLFxuICBcIm1hcmdpbl9fbGVmdC0teGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLXhsX19fNk4ta1pcIixcbiAgXCJtYXJnaW5fX2xlZnQtLXh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0teHhsX19fWWthcFlcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTN4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tM3hsX19fOFVVdXhcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTR4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tNHhsX19fYXFsNWJcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTV4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tNXhsX19faFFOdHBcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTZ4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tNnhsX19fU3FQMzFcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTd4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tN3hsX19fZTBqLWpcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tOHhsX19fdWtwVnpcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTl4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tOXhsX19fbE5IQlRcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTEweGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTEweGxfX19DQlVTblwiLFxuICBcIm1hcmdpbl9fbGVmdC0tMTF4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tMTF4bF9fX3VjS0M4XCIsXG4gIFwibWFyZ2luLS16ZXJvXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS16ZXJvX19feUtMREhcIixcbiAgXCJtYXJnaW4tLTR4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tNHhzX19fN25qc2lcIixcbiAgXCJtYXJnaW4tLTN4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tM3hzX19fa1dCYmVcIixcbiAgXCJtYXJnaW4tLXh4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0teHhzX19fZlppVWFcIixcbiAgXCJtYXJnaW4tLXhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS14c19fXy10ZE9qXCIsXG4gIFwibWFyZ2luLS1zXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS1zX19fMHhQMGdcIixcbiAgXCJtYXJnaW4tLW1cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW4tLW1fX19XZDRwcFwiLFxuICBcIm1hcmdpbi0tbFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tbF9fX3lNVVhzXCIsXG4gIFwibWFyZ2luLS14bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0teGxfX193alpQUlwiLFxuICBcIm1hcmdpbi0teHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS14eGxfX19FbTRUN1wiLFxuICBcIm1hcmdpbi0tM3hsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS0zeGxfX19jUVpIZlwiLFxuICBcIm1hcmdpbi0tNHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS00eGxfX183SVdyTVwiLFxuICBcIm1hcmdpbi0tNXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS01eGxfX19jU09VUVwiLFxuICBcIm1hcmdpbi0tNnhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS02eGxfX19GM2JTbVwiLFxuICBcIm1hcmdpbi0tN3hsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS03eGxfX18xVVFtSlwiLFxuICBcIm1hcmdpbi0tOHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS04eGxfX19HRTBTdlwiLFxuICBcIm1hcmdpbi0tOXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS05eGxfX19oNWhoRVwiLFxuICBcIm1hcmdpbi0tMTB4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tMTB4bF9fX2RHSy1SXCIsXG4gIFwibWFyZ2luLS0xMXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS0xMXhsX19fM3l4QnBcIixcbiAgXCJtYXJnaW4tLWF1dG9cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW4tLWF1dG9fX195N2dmOVwiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHZpc3VhbGx5SGlkZGVuU3R5bGVzIGZyb20gXCIuL3Zpc3VhbGx5LWhpZGRlbi5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBWaXN1YWxseUhpZGRlblBsdWdpblByb3BzID0geyAkdmlzdWFsbHlIaWRkZW4/OiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCB2aXN1YWxseUhpZGRlblBsdWdpbiA9IGdldFBsdWdpbjxWaXN1YWxseUhpZGRlblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHsgW3Zpc3VhbGx5SGlkZGVuU3R5bGVzW1widmlzdWFsbHktaGlkZGVuXCJdXTogISFwcm9wcy4kdmlzdWFsbHlIaWRkZW4gfV0sXG5cbiAgJHZpc3VhbGx5SGlkZGVuOiB1bmRlZmluZWQsXG59KSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvdmlzdWFsbHktaGlkZGVuL3Zpc3VhbGx5LWhpZGRlbi5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcInZpc3VhbGx5LWhpZGRlblwiOiBcInZpc3VhbGx5LWhpZGRlbi1tb2R1bGVfX3Zpc3VhbGx5LWhpZGRlbl9fX0RQdWxNXCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgb3ZlcmZsb3dTdHlsZXMgZnJvbSBcIi4vb3ZlcmZsb3cubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgT3ZlcmZsb3cgPSBcImhpZGRlblwiIHwgXCJzY3JvbGxcIiB8IFwiYXV0b1wiIHwgXCJ2aXNpYmxlXCI7XG5cbmV4cG9ydCB0eXBlIE92ZXJmbG93UGx1Z2luUHJvcHMgPSB7ICRvdmVyZmxvdz86IE92ZXJmbG93IHwgeyB4PzogT3ZlcmZsb3c7IHk/OiBPdmVyZmxvdzsgaGlkZVNjcm9sbGJhcj86IGJvb2xlYW4gfSB9O1xuXG5leHBvcnQgY29uc3Qgb3ZlcmZsb3dQbHVnaW4gPSBnZXRQbHVnaW48T3ZlcmZsb3dQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgJG92ZXJmbG93ID0gcHJvcHMuJG92ZXJmbG93O1xuXG4gIGlmICghJG92ZXJmbG93KSB7XG4gICAgcmV0dXJuIHsgJG92ZXJmbG93OiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IHggPSB0eXBlb2YgJG92ZXJmbG93ID09PSBcInN0cmluZ1wiID8gJG92ZXJmbG93IDogJG92ZXJmbG93Lng7XG4gIGNvbnN0IHkgPSB0eXBlb2YgJG92ZXJmbG93ID09PSBcInN0cmluZ1wiID8gJG92ZXJmbG93IDogJG92ZXJmbG93Lnk7XG4gIGNvbnN0IGhpZGVTY3JvbGxiYXIgPSB0eXBlb2YgJG92ZXJmbG93ID09PSBcInN0cmluZ1wiID8gZmFsc2UgOiAkb3ZlcmZsb3cuaGlkZVNjcm9sbGJhcjtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHByb3BzLiRjbGFzc05hbWUsXG5cbiAgICAgIHtcbiAgICAgICAgW292ZXJmbG93U3R5bGVzW2BvdmVyZmxvd19feC0tJHt4fWBdXTogeCxcbiAgICAgICAgW292ZXJmbG93U3R5bGVzW2BvdmVyZmxvd19feS0tJHt5fWBdXTogeSxcbiAgICAgICAgW292ZXJmbG93U3R5bGVzW2BvdmVyZmxvdy0taGlkZS1zY3JvbGxiYXJgXV06IGhpZGVTY3JvbGxiYXIsXG4gICAgICB9LFxuICAgIF0sXG5cbiAgICAkb3ZlcmZsb3c6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL292ZXJmbG93L292ZXJmbG93Lm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwib3ZlcmZsb3ctLWhpZGUtc2Nyb2xsYmFyXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvdy0taGlkZS1zY3JvbGxiYXJfX193YzZqUFwiLFxuICBcIm92ZXJmbG93X195LS1oaWRkZW5cIjogXCJvdmVyZmxvdy1tb2R1bGVfX292ZXJmbG93X195LS1oaWRkZW5fX19VQklYUVwiLFxuICBcIm92ZXJmbG93X195LS12aXNpYmxlXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvd19feS0tdmlzaWJsZV9fX3NmT2JVXCIsXG4gIFwib3ZlcmZsb3dfX3ktLXNjcm9sbFwiOiBcIm92ZXJmbG93LW1vZHVsZV9fb3ZlcmZsb3dfX3ktLXNjcm9sbF9fX3lrWjIxXCIsXG4gIFwib3ZlcmZsb3dfX3ktLWF1dG9cIjogXCJvdmVyZmxvdy1tb2R1bGVfX292ZXJmbG93X195LS1hdXRvX19fMU9OSEtcIixcbiAgXCJvdmVyZmxvd19feC0taGlkZGVuXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvd19feC0taGlkZGVuX19fTEszVWhcIixcbiAgXCJvdmVyZmxvd19feC0tdmlzaWJsZVwiOiBcIm92ZXJmbG93LW1vZHVsZV9fb3ZlcmZsb3dfX3gtLXZpc2libGVfX191LS02RlwiLFxuICBcIm92ZXJmbG93X194LS1zY3JvbGxcIjogXCJvdmVyZmxvdy1tb2R1bGVfX292ZXJmbG93X194LS1zY3JvbGxfX19haUlINlwiLFxuICBcIm92ZXJmbG93X194LS1hdXRvXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvd19feC0tYXV0b19fX1M2b1ZMXCJcbn07IiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2ZsZXgtY2hpbGQvZmxleC1jaGlsZC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImZsZXgtY2hpbGRcIjogXCJmbGV4LWNoaWxkLW1vZHVsZV9fZmxleC1jaGlsZF9fXzdCZGhkXCIsXG4gIFwiZmxleC1jaGlsZC0tc2hyaW5rYWJsZVwiOiBcImZsZXgtY2hpbGQtbW9kdWxlX19mbGV4LWNoaWxkLS1zaHJpbmthYmxlX19fNkg1LS1cIixcbiAgXCJmbGV4LWNoaWxkLS1maXhlZFwiOiBcImZsZXgtY2hpbGQtbW9kdWxlX19mbGV4LWNoaWxkLS1maXhlZF9fX0ZLZXRMXCJcbn07IiwgImltcG9ydCBmbGV4Q2hpbGRTdHlsZXMgZnJvbSBcIi4vZmxleC1jaGlsZC5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgdHlwZSB7IHN0eWxlUGx1Z2luIH0gZnJvbSBcIi4uL3N0eWxlL3N0eWxlXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcblxuLyoqXG4gKiAtIGB0cnVlYDogc2hhcmUgdGhlIHBhcmVudCdzIHJlbWFpbmluZyBzcGFjZSBlcXVhbGx5IChgZmxleDogMSAxIDBgKS5cbiAqIC0gYFwic2hyaW5rYWJsZVwiYDogYWRkaXRpb25hbGx5IHJlbW92ZSB0aGUgaXRlbSdzIGltcGxpY2l0IGNvbnRlbnQtc2l6ZWRcbiAqICAgbWluaW11bSAoYG1pbi1oZWlnaHQ6IGF1dG9gIC8gYG1pbi13aWR0aDogYXV0b2ApLCBzbyBpdCBjYW4gYWN0dWFsbHkgYmVcbiAqICAgc2l6ZWQgdG8gdGhlIHJlbWFpbmluZyBzcGFjZSBpbiBhIGNvbnN0cmFpbmVkIGxheW91dCBcdTIwMTQgcmVxdWlyZWQgZm9yIGFcbiAqICAgZGVzY2VuZGFudCB0byBzY3JvbGwgaW50ZXJuYWxseSBpbnN0ZWFkIG9mIGluZmxhdGluZyBldmVyeSBhbmNlc3Rvci5cbiAqIC0gYSBudW1iZXI6IGxpa2UgYFwic2hyaW5rYWJsZVwiYCwgYnV0IHRha2luZyB0aGF0IG1hbnkgc2hhcmVzIG9mIHRoZVxuICogICByZW1haW5pbmcgc3BhY2UgaW5zdGVhZCBvZiBvbmUgKGBmbGV4LWdyb3dgKSwgZm9yIHdlaWdodGVkIHNwbGl0cyBiZXR3ZWVuXG4gKiAgIHNpYmxpbmdzLlxuICogLSBgXCJmaXhlZFwiYDogdGhlIG9wcG9zaXRlIFx1MjAxNCBrZWVwIHRoZSBpdGVtJ3Mgb3duIHNpemUgKGBmbGV4LXNocmluazogMGApLFxuICogICBvcHRpbmcgb3V0IG9mIHRoZSBzaHJpbmsgbmVnb3RpYXRpb24gZW50aXJlbHkgKGUuZy4gYSBjb250ZW50LWh1Z2dpbmdcbiAqICAgcGFuZWwgbmV4dCB0byBhIGZpbGxpbmcgb25lKS5cbiAqL1xuZXhwb3J0IHR5cGUgRmxleENoaWxkUGx1Z2luUHJvcHMgPSB7ICRmbGV4Q2hpbGQ/OiBib29sZWFuIHwgbnVtYmVyIHwgXCJzaHJpbmthYmxlXCIgfCBcImZpeGVkXCIgfTtcblxuZXhwb3J0IGNvbnN0IGZsZXhDaGlsZFBsdWdpbiA9IGdldFBsdWdpbjxGbGV4Q2hpbGRQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW4sIHR5cGVvZiBzdHlsZVBsdWdpbl0+KFxuICAocHJvcHMpID0+IHtcbiAgICBjb25zdCB3ZWlnaHQgPSB0eXBlb2YgcHJvcHMuJGZsZXhDaGlsZCA9PT0gXCJudW1iZXJcIiA/IHByb3BzLiRmbGV4Q2hpbGQgOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc2hyaW5rYWJsZSA9IHByb3BzLiRmbGV4Q2hpbGQgPT09IFwic2hyaW5rYWJsZVwiIHx8IHdlaWdodCAhPT0gdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICRjbGFzc05hbWU6IFtcbiAgICAgICAgcHJvcHMuJGZsZXhDaGlsZCA9PT0gdHJ1ZSB8fCBzaHJpbmthYmxlID8gZmxleENoaWxkU3R5bGVzW1wiZmxleC1jaGlsZFwiXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgc2hyaW5rYWJsZSA/IGZsZXhDaGlsZFN0eWxlc1tcImZsZXgtY2hpbGQtLXNocmlua2FibGVcIl0gOiB1bmRlZmluZWQsXG4gICAgICAgIHByb3BzLiRmbGV4Q2hpbGQgPT09IFwiZml4ZWRcIiA/IGZsZXhDaGlsZFN0eWxlc1tcImZsZXgtY2hpbGQtLWZpeGVkXCJdIDogdW5kZWZpbmVkLFxuICAgICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuICAgICAgXSxcbiAgICAgICRzdHlsZTogd2VpZ2h0ID09PSB1bmRlZmluZWQgPyBwcm9wcy4kc3R5bGUgOiB7IC4uLnByb3BzLiRzdHlsZSwgZmxleEdyb3c6IHdlaWdodCB9LFxuICAgICAgJGZsZXhDaGlsZDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH0sXG4pO1xuIiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgZ3JheXNjYWxlU3R5bGVzIGZyb20gXCIuL2dyYXlzY2FsZS5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBHcmF5c2NhbGVQbHVnaW5Qcm9wcyA9IHtcbiAgLyoqXG4gICAqIEZ1bGx5IGRlc2F0dXJhdGVzIHRoZSBlbGVtZW50IChgZmlsdGVyOiBncmF5c2NhbGUoMTAwJSlgKSB3aGVuIGB0cnVlYCBcdTIwMTQgc29cbiAgICogZXZlbiBmaXhlZC1jb2xvdXIgY29udGVudCAoZS5nLiBicmFuZCBsb2dvcykgZ3JleXMgb3V0LCBub3QganVzdCB0aGVtZWRcbiAgICogY29sb3Vycy4gQ29tYmluZSB3aXRoIGAkZmFkZWRgIHRvIGRlLWVtcGhhc2lzZSBhbiB1bmF2YWlsYWJsZSBpdGVtLlxuICAgKi9cbiAgJGdyYXlzY2FsZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgZ3JheXNjYWxlUGx1Z2luID0gZ2V0UGx1Z2luPEdyYXlzY2FsZVBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHByb3BzLiRncmF5c2NhbGUgPyBncmF5c2NhbGVTdHlsZXMuZ3JheXNjYWxlIDogdW5kZWZpbmVkXSxcbiAgJGdyYXlzY2FsZTogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGUubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJncmF5c2NhbGVcIjogXCJncmF5c2NhbGUtbW9kdWxlX19ncmF5c2NhbGVfX18zbVpQNlwiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB0eXBlIHsgc3R5bGVQbHVnaW4gfSBmcm9tIFwiLi4vc3R5bGUvc3R5bGVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdGludFN0eWxlcyBmcm9tIFwiLi90aW50Lm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIFRpbnRQbHVnaW5Qcm9wcyA9IHtcbiAgLyoqXG4gICAqIE92ZXJyaWRlcyB0aGUgZWxlbWVudCdzIChhbmQgaXRzIGRlc2NlbmRhbnRzJykgU1ZHIGBmaWxsYCB0byB0aGlzIGNvbG91ciwgdmlhIGEgQ1NTIGN1c3RvbVxuICAgKiBwcm9wZXJ0eSBcdTIwMTQgYHN0cm9rZWAgaXMgbGVmdCB1bnRvdWNoZWQsIHNvIHN0cm9rZWQgZGV0YWlscyBzdXJ2aXZlLiBVbmxpa2UgYCRncmF5c2NhbGVgICh3aGljaCBvbmx5XG4gICAqIGRlc2F0dXJhdGVzKSB0aGlzIHBhaW50cyB0aGUgc2hhcGUgYW4gZXhhY3QgZmxhdCBjb2xvdXIgd2hpbGUgcmVzcGVjdGluZyB0cmFuc3BhcmVuY3ksIHNvIGFcbiAgICogZml4ZWQtY29sb3VyIGJyYW5kIG1hcmsgY2FuIGJlIHRpbnRlZCAoZS5nLiBhbiBBSS10b29sIGxvZ28gdGludGVkIHRvIHRoZSBjbHVzdGVyIGNvbG91cikuIExlYXZlXG4gICAqIHVuc2V0IHRvIHJlbmRlciB0aGUgZWxlbWVudCdzIG5hdHVyYWwgY29sb3Vycy5cbiAgICovXG4gICR0aW50Pzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGNvbnN0IHRpbnRQbHVnaW4gPSBnZXRQbHVnaW48VGludFBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbiwgdHlwZW9mIHN0eWxlUGx1Z2luXT4oKHByb3BzKSA9PiAoe1xuICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgcHJvcHMuJHRpbnQgPyB0aW50U3R5bGVzLnRpbnQgOiB1bmRlZmluZWRdLFxuICAvLyBUaGUgdGludCBjb2xvdXIgaXMgZXhwb3NlZCBhcyBhIGN1c3RvbSBwcm9wZXJ0eSB0aGUgYC50aW50YCBjbGFzcyByZWFkcyAoYGZpbGw6IHZhcigtLWVsZW1lbnQtdGludClgKS5cbiAgJHN0eWxlOiBwcm9wcy4kdGludCA/ICh7IC4uLnByb3BzLiRzdHlsZSwgXCItLWVsZW1lbnQtdGludFwiOiBwcm9wcy4kdGludCB9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMpIDogcHJvcHMuJHN0eWxlLFxuICAkdGludDogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3RpbnQvdGludC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcInRpbnRcIjogXCJ0aW50LW1vZHVsZV9fdGludF9fX2dDekc3XCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgZmFkZWRTdHlsZXMgZnJvbSBcIi4vZmFkZWQubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgRmFkZWRQbHVnaW5Qcm9wcyA9IHtcbiAgLyoqXG4gICAqIEZhZGVzIHRoZSBlbGVtZW50IChgb3BhY2l0eTogNTAlYCkgd2hlbiBgdHJ1ZWAuIENvbWJpbmUgd2l0aCBgJGdyYXlzY2FsZWBcbiAgICogdG8gZGUtZW1waGFzaXNlIGFuIHVuYXZhaWxhYmxlIGl0ZW0uXG4gICAqL1xuICAkZmFkZWQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGZhZGVkUGx1Z2luID0gZ2V0UGx1Z2luPEZhZGVkUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiAoe1xuICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgcHJvcHMuJGZhZGVkID8gZmFkZWRTdHlsZXMuZmFkZWQgOiB1bmRlZmluZWRdLFxuICAkZmFkZWQ6IHVuZGVmaW5lZCxcbn0pKTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImZhZGVkXCI6IFwiZmFkZWQtbW9kdWxlX19mYWRlZF9fXy11YmJNXCJcbn07IiwgImltcG9ydCB7IGdldFBsdWdpbiwgdHlwZSBDb250cmlidXRlUHJvcHMsIHR5cGUgQ29udHJpYnV0ZVJlZiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBmb2N1c2FibGVJdGVtU3RhdGVJbmplY3RhYmxlIH0gZnJvbSBcIi4vX3NoYXJlZC9mb2N1c2FibGUtaXRlbS1zdGF0ZS5pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB0eXBlIHsgSU9ic2VydmFibGVWYWx1ZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyB1c2VVcGRhdGVXaGVuUHJvcHNDaGFuZ2UgfSBmcm9tIFwiLi9fcHJpdmF0ZS91c2UtdXBkYXRlLXdoZW4tcHJvcHMtY2hhbmdlXCI7XG5pbXBvcnQgeyB1c2VDbGVhbnVwT25Vbm1vdW50IH0gZnJvbSBcIi4vX3ByaXZhdGUvdXNlLWNsZWFudXAtb24tdW5tb3VudFwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5pbXBvcnQgeyB1c2VLZXlib2FyZE5hdmlnYXRpb24gfSBmcm9tIFwiLi9fcHJpdmF0ZS91c2Uta2V5Ym9hcmQtbmF2aWdhdGlvblwiO1xuaW1wb3J0IHsgaGFuZGxlRm9jdXNGb3IgfSBmcm9tIFwiLi9fcHJpdmF0ZS9oYW5kbGUtZm9jdXNcIjtcbmltcG9ydCB7IGhhbmRsZUJsdXJGb3IgfSBmcm9tIFwiLi9fcHJpdmF0ZS9oYW5kbGUtYmx1clwiO1xuaW1wb3J0IHsgdXNlUHJvZ3JhbW1hdGljRm9jdXNpbmcgfSBmcm9tIFwiLi9fcHJpdmF0ZS91c2UtcHJvZ3JhbW1hdGljLWZvY3VzaW5nXCI7XG5pbXBvcnQgdHlwZSB7IHJlZlBsdWdpbiB9IGZyb20gXCIuLi9yZWYvcmVmXCI7XG5cbmV4cG9ydCB0eXBlIEZvY3VzYWJsZVBsdWdpblByb3BzPFQsIEZvY3VzZWRJdGVtID0gYW55PiA9IHtcbiAgJGZvY3VzYWJsZT86IHtcbiAgICBjb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPjtcbiAgICBpdGVtOiBGb2N1c2VkSXRlbTtcbiAgICBvcmRlck51bWJlcj86IG51bWJlcjtcbiAgfTtcblxuICBvbkZvY3VzPzogUmVhY3QuRm9jdXNFdmVudEhhbmRsZXI8VD47XG4gIG9uQmx1cj86IFJlYWN0LkZvY3VzRXZlbnRIYW5kbGVyPFQ+O1xuICBvbktleURvd24/OiBSZWFjdC5LZXlib2FyZEV2ZW50SGFuZGxlcjxUPjtcbiAgdGFiSW5kZXg/OiBIVE1MRWxlbWVudFtcInRhYkluZGV4XCJdO1xufTtcblxudHlwZSBGb2N1c2FibGVXcmFwcGVyUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGZvY3VzYWJsZToge1xuICAgIGNvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8YW55PjtcbiAgICBpdGVtOiBhbnk7XG4gICAgb3JkZXJOdW1iZXI/OiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHRhYkluZGV4OiBudW1iZXI7XG4gIHJlYWRvbmx5IG9uRm9jdXM/OiBSZWFjdC5Gb2N1c0V2ZW50SGFuZGxlcjxhbnk+O1xuICByZWFkb25seSBvbkJsdXI/OiBSZWFjdC5Gb2N1c0V2ZW50SGFuZGxlcjxhbnk+O1xuICByZWFkb25seSBvbktleURvd24/OiBSZWFjdC5LZXlib2FyZEV2ZW50SGFuZGxlcjxhbnk+O1xuICByZWFkb25seSBjb250cmlidXRlUmVmOiBDb250cmlidXRlUmVmO1xuICByZWFkb25seSBjb250cmlidXRlUHJvcHM6IENvbnRyaWJ1dGVQcm9wcztcbiAgcmVhZG9ubHkgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IEZvY3VzYWJsZVdyYXBwZXJDb21wb25lbnQgPSAoe1xuICBmb2N1c2FibGUsXG4gIHRhYkluZGV4LFxuICBvbkZvY3VzLFxuICBvbkJsdXIsXG4gIG9uS2V5RG93bixcbiAgY29udHJpYnV0ZVJlZixcbiAgY29udHJpYnV0ZVByb3BzLFxuICBjaGlsZHJlbixcbn06IEZvY3VzYWJsZVdyYXBwZXJQcm9wcykgPT4ge1xuICBjb25zdCB7IGNvbnRleHQ6IGZvY3VzYWJsZUNvbnRleHQsIGl0ZW06IGZvY3VzYWJsZUl0ZW0sIG9yZGVyTnVtYmVyIH0gPSBmb2N1c2FibGU7XG5cbiAgY29uc3QgW2VsZW1lbnQsIHNldEVsZW1lbnRdID0gdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29udHJpYnV0ZVJlZihzZXRFbGVtZW50KTtcblxuICBjb25zdCBodG1sRWxlbWVudFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudD4odW5kZWZpbmVkKTtcbiAgaHRtbEVsZW1lbnRSZWYuY3VycmVudCA9IChlbGVtZW50ID8/IHVuZGVmaW5lZCkgYXMgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3QgaHRtbEVsZW1lbnRJc0ZvY3VzZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBvbGRTdGF0ZVJlZiA9IHVzZVJlZjxJT2JzZXJ2YWJsZVZhbHVlPHVua25vd24+Pih1bmRlZmluZWQpO1xuXG4gIGNvbnN0IHN0YXRlID0gdXNlU3luY0luamVjdChmb2N1c2FibGVJdGVtU3RhdGVJbmplY3RhYmxlLCBmb2N1c2FibGVDb250ZXh0KTtcblxuICB1c2VVcGRhdGVXaGVuUHJvcHNDaGFuZ2UoaHRtbEVsZW1lbnRJc0ZvY3VzZWRSZWYsIG9sZFN0YXRlUmVmLCBzdGF0ZSwgZm9jdXNhYmxlSXRlbSk7XG4gIHVzZUNsZWFudXBPblVubW91bnQoaHRtbEVsZW1lbnRJc0ZvY3VzZWRSZWYsIG9sZFN0YXRlUmVmKTtcbiAgdXNlUHJvZ3JhbW1hdGljRm9jdXNpbmcoZm9jdXNhYmxlQ29udGV4dCwgZm9jdXNhYmxlSXRlbSwgaHRtbEVsZW1lbnRSZWYpO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gaGFuZGxlRm9jdXNGb3Ioc3RhdGUsIGZvY3VzYWJsZUl0ZW0sIGZvY3VzYWJsZUNvbnRleHQsIGh0bWxFbGVtZW50SXNGb2N1c2VkUmVmKTtcbiAgY29uc3QgaGFuZGxlQmx1ciA9IGhhbmRsZUJsdXJGb3IoZm9jdXNhYmxlQ29udGV4dCwgc3RhdGUsIGh0bWxFbGVtZW50SXNGb2N1c2VkUmVmKTtcblxuICBjb25zdCBrZXlib2FyZE5hdmlnYXRpb24gPSB1c2VLZXlib2FyZE5hdmlnYXRpb24oXG4gICAgZm9jdXNhYmxlQ29udGV4dC5pc0tleWJvYXJkTmF2aWdhYmxlID8gZm9jdXNhYmxlQ29udGV4dCA6IHVuZGVmaW5lZCxcbiAgICBmb2N1c2FibGVJdGVtLFxuICAgIG9yZGVyTnVtYmVyLFxuICAgIGVsZW1lbnQsXG4gICAgc3RhdGUsXG4gICk7XG5cbiAgY29udHJpYnV0ZVByb3BzKHtcbiAgICB0YWJJbmRleCxcblxuICAgIG9uRm9jdXM6IChlOiBSZWFjdC5Gb2N1c0V2ZW50PGFueT4pID0+IHtcbiAgICAgIGhhbmRsZUZvY3VzKGUpO1xuICAgICAgb25Gb2N1cz8uKGUpO1xuICAgIH0sXG5cbiAgICBvbkJsdXI6IChlOiBSZWFjdC5Gb2N1c0V2ZW50PGFueT4pID0+IHtcbiAgICAgIGlmICghaHRtbEVsZW1lbnRSZWYuY3VycmVudD8uY29udGFpbnMoZS5yZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgICBoYW5kbGVCbHVyKGUpO1xuICAgICAgfVxuICAgICAgb25CbHVyPy4oZSk7XG4gICAgfSxcblxuICAgIG9uS2V5RG93bjogKGU6IFJlYWN0LktleWJvYXJkRXZlbnQ8YW55PikgPT4ge1xuICAgICAgb25LZXlEb3duPy4oZSk7XG4gICAgICBrZXlib2FyZE5hdmlnYXRpb24ub25LZXlEb3duKGUpO1xuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiA8PntjaGlsZHJlbn08Lz47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZm9jdXNhYmxlUGx1Z2luPFQ+KCkge1xuICByZXR1cm4gZ2V0UGx1Z2luPEZvY3VzYWJsZVBsdWdpblByb3BzPFQ+LCBbUmV0dXJuVHlwZTx0eXBlb2YgcmVmUGx1Z2luPFQ+Pl0+KChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgJGZvY3VzYWJsZSwgdGFiSW5kZXgsIG9uQmx1ciwgb25Gb2N1cywgb25LZXlEb3duIH0gPSBwcm9wcztcblxuICAgIGlmICghJGZvY3VzYWJsZSkge1xuICAgICAgcmV0dXJuIHsgJGZvY3VzYWJsZTogdW5kZWZpbmVkIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICRmb2N1c2FibGU6IHVuZGVmaW5lZCxcbiAgICAgICR3cmFwcGVyOiB7XG4gICAgICAgIENvbXBvbmVudDogRm9jdXNhYmxlV3JhcHBlckNvbXBvbmVudCxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBmb2N1c2FibGU6ICRmb2N1c2FibGUsXG4gICAgICAgICAgdGFiSW5kZXg6IHRhYkluZGV4ID8/IC0xLFxuICAgICAgICAgIG9uRm9jdXMsXG4gICAgICAgICAgb25CbHVyLFxuICAgICAgICAgIG9uS2V5RG93bixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgYXNzZXJ0RGVmaW5lZCB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgdHlwZSB7IElPYnNlcnZhYmxlVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgcnVuSW5BY3Rpb24gfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB0eXBlIE11dGFibGVSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVVwZGF0ZVdoZW5Qcm9wc0NoYW5nZSA9IChcbiAgZm9jdXNlZFJlZjogTXV0YWJsZVJlZk9iamVjdDxib29sZWFuPixcbiAgb2xkU3RhdGVSZWY6IE11dGFibGVSZWZPYmplY3Q8SU9ic2VydmFibGVWYWx1ZTx1bmtub3duPiB8IHVuZGVmaW5lZD4sXG4gIHN0YXRlOiBJT2JzZXJ2YWJsZVZhbHVlPHVua25vd24+LFxuICBmb2N1c2FibGVJdGVtOiB1bmtub3duLFxuKSA9PiB7XG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IHJlbW92ZSB3aGVuIHBvc3NpYmxlXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICBpZiAoZm9jdXNlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgICBzdGF0ZS5zZXQoZm9jdXNhYmxlSXRlbSk7XG5cbiAgICAgICAgICBjb25zdCBjb250ZXh0SGFzQ2hhbmdlZCA9IG9sZFN0YXRlUmVmLmN1cnJlbnQgIT09IHN0YXRlO1xuXG4gICAgICAgICAgaWYgKGNvbnRleHRIYXNDaGFuZ2VkICYmIG9sZFN0YXRlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGFzc2VydERlZmluZWQob2xkU3RhdGVSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBvbGRTdGF0ZVJlZi5jdXJyZW50LnNldCh1bmRlZmluZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIG9sZFN0YXRlUmVmLmN1cnJlbnQgPSBzdGF0ZTtcbiAgICB9LFxuICAgIC8vIE5vdGU6IGZvY3VzZWRSZWYgYW5kIG9sZFN0YXRlUmVmIG5ldmVyIGNoYW5nZS5cbiAgICBbZm9jdXNhYmxlSXRlbSwgc3RhdGVdLFxuICApO1xufTtcbiIsICJpbXBvcnQgeyBhc3NlcnREZWZpbmVkIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcbmltcG9ydCB0eXBlIHsgSU9ic2VydmFibGVWYWx1ZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyBydW5JbkFjdGlvbiB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHR5cGUgTXV0YWJsZVJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgdXNlQ2xlYW51cE9uVW5tb3VudCA9IChcbiAgZm9jdXNlZFJlZjogTXV0YWJsZVJlZk9iamVjdDxib29sZWFuPixcbiAgb2xkU3RhdGVSZWY6IE11dGFibGVSZWZPYmplY3Q8SU9ic2VydmFibGVWYWx1ZTx1bmtub3duPiB8IHVuZGVmaW5lZD4sXG4pID0+IHtcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29ycmVjdG5lc3MvdXNlRXhoYXVzdGl2ZURlcGVuZGVuY2llczogcmVtb3ZlIHdoZW4gcG9zc2libGVcbiAgdXNlRWZmZWN0KFxuICAgICgpID0+ICgpID0+IHtcbiAgICAgIGlmIChmb2N1c2VkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgIGFzc2VydERlZmluZWQob2xkU3RhdGVSZWYuY3VycmVudCk7XG4gICAgICAgICAgb2xkU3RhdGVSZWYuY3VycmVudC5zZXQodW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8vIE5vdGU6IGZvY3VzZWRSZWYgYW5kIG9sZFN0YXRlUmVmIG5ldmVyIGNoYW5nZS5cbiAgICBbXSxcbiAgKTtcbn07XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB0eXBlIHsgSU9ic2VydmFibGVWYWx1ZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQge1xuICBrZXlib2FyZE5hdmlnYXRpb25TdGF0ZUluamVjdGFibGUsXG4gIHR5cGUgTmF2aWdhYmxlRW50cnksXG59IGZyb20gXCIuLi9fc2hhcmVkL2tleWJvYXJkLW5hdmlnYXRpb24tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5cbnR5cGUgS2V5Ym9hcmROYXZpZ2F0aW9uID0ge1xuICByZWFkb25seSBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4gdm9pZDtcbn07XG5cbmNvbnN0IG5vS2V5Ym9hcmROYXZpZ2F0aW9uOiBLZXlib2FyZE5hdmlnYXRpb24gPSB7IG9uS2V5RG93bjogKCkgPT4ge30gfTtcblxuZXhwb3J0IGNvbnN0IHVzZUtleWJvYXJkTmF2aWdhdGlvbiA9IChcbiAgY29udGV4dDogS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0PGFueT4gfCB1bmRlZmluZWQsXG4gIGl0ZW06IHVua25vd24sXG4gIG9yZGVyTnVtYmVyOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCxcbiAgc3RhdGU6IElPYnNlcnZhYmxlVmFsdWU8dW5rbm93bj4sXG4pOiBLZXlib2FyZE5hdmlnYXRpb24gPT4ge1xuICBjb25zdCBuYXZpZ2F0aW9uID0gdXNlU3luY0luamVjdChrZXlib2FyZE5hdmlnYXRpb25TdGF0ZUluamVjdGFibGUpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFjb250ZXh0IHx8ICFlbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW50cnk6IE5hdmlnYWJsZUVudHJ5ID0geyBpdGVtLCBvcmRlck51bWJlcjogb3JkZXJOdW1iZXIgPz8gMCwgZWxlbWVudCB9O1xuXG4gICAgbmF2aWdhdGlvbi5yZWdpc3Rlcihjb250ZXh0LCBlbnRyeSk7XG5cbiAgICBjb25zdCBmb2N1c1doYXRTaG91bGRIYXZlRm9jdXMgPSAoKSA9PiB7XG4gICAgICBjb25zdCBjb250ZXh0SW5Gb2N1cyA9IG5hdmlnYXRpb24uY29udGV4dEluRm9jdXMoKTtcblxuICAgICAgaWYgKCFjb250ZXh0SW5Gb2N1cykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVudHJpZXMgPSBuYXZpZ2F0aW9uLnNvcnRlZEVudHJpZXNPZihjb250ZXh0SW5Gb2N1cyk7XG4gICAgICBjb25zdCBmb2N1c2VkSXRlbSA9IHN0YXRlLmdldCgpO1xuICAgICAgY29uc3QgdG9Gb2N1cyA9IGVudHJpZXMuZmluZCgoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUuaXRlbSA9PT0gZm9jdXNlZEl0ZW0pID8/IGVudHJpZXNbMF07XG5cbiAgICAgIGlmICh0b0ZvY3VzPy5lbGVtZW50LmlzQ29ubmVjdGVkICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IHRvRm9jdXMuZWxlbWVudCkge1xuICAgICAgICB0b0ZvY3VzLmVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gRGVmZXJyZWQgc28gdGhhdCBldmVyeXRoaW5nIGFwcGVhcmluZyB0b2dldGhlciBoYXMgcmVnaXN0ZXJlZCwgYW5kIHRoZSBsb3dlc3Qgb3JkZXIgbnVtYmVyIG9mXG4gICAgLy8gdGhlIHdob2xlIHNldCB3aW5zIHJhdGhlciB0aGFuIHdoaWNoZXZlciBhcHBlYXJlZCBmaXJzdC5cbiAgICB2b2lkIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZm9jdXNXaGF0U2hvdWxkSGF2ZUZvY3VzKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBuYXZpZ2F0aW9uLmRlcmVnaXN0ZXIoY29udGV4dCwgZW50cnkpO1xuXG4gICAgICB2b2lkIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZm9jdXNXaGF0U2hvdWxkSGF2ZUZvY3VzKTtcbiAgICB9O1xuICB9LCBbbmF2aWdhdGlvbiwgY29udGV4dCwgaXRlbSwgb3JkZXJOdW1iZXIsIGVsZW1lbnQsIHN0YXRlXSk7XG5cbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgcmV0dXJuIG5vS2V5Ym9hcmROYXZpZ2F0aW9uO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgY29uc3Qgc3RlcCA9IHN0ZXBPZihldmVudC5rZXkpO1xuXG4gICAgICBpZiAoc3RlcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZW50cmllcyA9IG5hdmlnYXRpb24uc29ydGVkRW50cmllc09mKGNvbnRleHQpO1xuXG4gICAgICBpZiAoZW50cmllcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBlbnRyaWVzLmZpbmRJbmRleCgoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUuaXRlbSA9PT0gaXRlbSk7XG5cbiAgICAgIGNvbnN0IG5leHRJbmRleCA9XG4gICAgICAgIHN0ZXAgPT09IFwiZmlyc3RcIlxuICAgICAgICAgID8gMFxuICAgICAgICAgIDogc3RlcCA9PT0gXCJsYXN0XCJcbiAgICAgICAgICAgID8gZW50cmllcy5sZW5ndGggLSAxXG4gICAgICAgICAgICA6IChjdXJyZW50SW5kZXggKyBzdGVwICsgZW50cmllcy5sZW5ndGgpICUgZW50cmllcy5sZW5ndGg7XG5cbiAgICAgIGNvbnN0IG5leHQgPSBlbnRyaWVzW25leHRJbmRleF07XG5cbiAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG5leHQuZWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59O1xuXG5jb25zdCBzdGVwT2YgPSAoa2V5OiBzdHJpbmcpID0+IHtcbiAgc3dpdGNoIChrZXkpIHtcbiAgICBjYXNlIFwiQXJyb3dEb3duXCI6XG4gICAgY2FzZSBcIkFycm93UmlnaHRcIjpcbiAgICAgIHJldHVybiAxO1xuICAgIGNhc2UgXCJBcnJvd1VwXCI6XG4gICAgY2FzZSBcIkFycm93TGVmdFwiOlxuICAgICAgcmV0dXJuIC0xO1xuICAgIGNhc2UgXCJIb21lXCI6XG4gICAgICByZXR1cm4gXCJmaXJzdFwiIGFzIGNvbnN0O1xuICAgIGNhc2UgXCJFbmRcIjpcbiAgICAgIHJldHVybiBcImxhc3RcIiBhcyBjb25zdDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufTtcbiIsICJpbXBvcnQgeyBydW5JbkFjdGlvbiwgdHlwZSBJT2JzZXJ2YWJsZVZhbHVlIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB0eXBlIHsgQW55Rm9jdXNhYmxlQ29udGV4dCB9IGZyb20gXCIuLi9nZXQtZm9jdXNhYmxlLWNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgTXV0YWJsZVJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBGb2N1c2FibGVFdmVudCB9IGZyb20gXCIuL19zaGFyZWQvZm9jdXNhYmxlLWV2ZW50XCI7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVGb2N1c0ZvciA9XG4gIDxGb2N1c2FibGVJdGVtPihcbiAgICBzdGF0ZTogSU9ic2VydmFibGVWYWx1ZTxGb2N1c2FibGVJdGVtIHwgdW5kZWZpbmVkPixcbiAgICBmb2N1c2FibGVJdGVtOiBGb2N1c2FibGVJdGVtLFxuICAgIGZvY3VzYWJsZUNvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNhYmxlSXRlbT4sXG4gICAgZm9jdXNlZFJlZjogTXV0YWJsZVJlZk9iamVjdDxib29sZWFuPixcbiAgKSA9PlxuICA8VD4oZXZlbnQ6IEZvY3VzYWJsZUV2ZW50PFQ+KSA9PiB7XG4gICAgY29uc3QgbmF0aXZlRXZlbnQgPSBldmVudC5uYXRpdmVFdmVudDtcblxuICAgIG5hdGl2ZUV2ZW50LmFscmVhZHlQcm9jZXNzZWRGb2N1c2FibGVDb250ZXh0cyA/Pz0gbmV3IFNldCgpO1xuXG4gICAgaWYgKG5hdGl2ZUV2ZW50LmFscmVhZHlQcm9jZXNzZWRGb2N1c2FibGVDb250ZXh0cy5oYXMoZm9jdXNhYmxlQ29udGV4dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBuYXRpdmVFdmVudC5hbHJlYWR5UHJvY2Vzc2VkRm9jdXNhYmxlQ29udGV4dHMuYWRkKGZvY3VzYWJsZUNvbnRleHQpO1xuXG4gICAgZm9jdXNlZFJlZi5jdXJyZW50ID0gdHJ1ZTtcblxuICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgIHN0YXRlLnNldChmb2N1c2FibGVJdGVtKTtcbiAgICB9KTtcbiAgfTtcbiIsICJpbXBvcnQgdHlwZSB7IElPYnNlcnZhYmxlVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgcnVuSW5BY3Rpb24gfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBGb2N1c2FibGVFdmVudCB9IGZyb20gXCIuL19zaGFyZWQvZm9jdXNhYmxlLWV2ZW50XCI7XG5pbXBvcnQgdHlwZSB7IE11dGFibGVSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUJsdXJGb3IgPVxuICA8VD4oXG4gICAgZm9jdXNhYmxlQ29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxUPixcbiAgICBzdGF0ZTogSU9ic2VydmFibGVWYWx1ZTxUIHwgdW5kZWZpbmVkPixcbiAgICBmb2N1c2VkUmVmOiBNdXRhYmxlUmVmT2JqZWN0PGJvb2xlYW4+LFxuICApID0+XG4gIDxUPihldmVudDogRm9jdXNhYmxlRXZlbnQ8VD4pID0+IHtcbiAgICBjb25zdCBuYXRpdmVFdmVudCA9IGV2ZW50Lm5hdGl2ZUV2ZW50O1xuXG4gICAgaWYgKG5hdGl2ZUV2ZW50LmFscmVhZHlQcm9jZXNzZWRGb2N1c2FibGVDb250ZXh0cz8uaGFzKGZvY3VzYWJsZUNvbnRleHQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9jdXNlZFJlZi5jdXJyZW50ID0gZmFsc2U7XG5cbiAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICBzdGF0ZS5zZXQodW5kZWZpbmVkKTtcbiAgICB9KTtcbiAgfTtcbiIsICJpbXBvcnQgdHlwZSB7IE11dGFibGVSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZm9jdXNhYmxlSHRtbEVsZW1lbnRSZWZTZXRJbmplY3RhYmxlIH0gZnJvbSBcIi4uL19zaGFyZWQvZm9jdXNhYmxlLWh0bWwtZWxlbWVudC1yZWYtc2V0LmluamVjdGFibGVcIjtcbmltcG9ydCB7IHVzZVN5bmNJbmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvdXNlLWluamVjdFwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuXG5leHBvcnQgY29uc3QgdXNlUHJvZ3JhbW1hdGljRm9jdXNpbmcgPSA8VD4oXG4gIGZvY3VzYWJsZUNvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8VD4sXG4gIGZvY3VzYWJsZUl0ZW06IFQsXG4gIGh0bWxFbGVtZW50UmVmOiBNdXRhYmxlUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkPixcbikgPT4ge1xuICBjb25zdCBodG1sRWxlbWVudHNCeUZvY3VzYWJsZU1hcCA9IHVzZVN5bmNJbmplY3QoXG4gICAgZm9jdXNhYmxlSHRtbEVsZW1lbnRSZWZTZXRJbmplY3RhYmxlLFxuICAgIGZvY3VzYWJsZUNvbnRleHQsXG4gICAgZm9jdXNhYmxlSXRlbSxcbiAgKTtcblxuICAvLyBiaW9tZS1pZ25vcmUgbGludC9jb3JyZWN0bmVzcy91c2VFeGhhdXN0aXZlRGVwZW5kZW5jaWVzOiByZW1vdmUgd2hlbiBwb3NzaWJsZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGh0bWxFbGVtZW50c0J5Rm9jdXNhYmxlTWFwLmFkZChodG1sRWxlbWVudFJlZik7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaHRtbEVsZW1lbnRzQnlGb2N1c2FibGVNYXAuZGVsZXRlKGh0bWxFbGVtZW50UmVmKTtcbiAgICB9O1xuICB9LCBbaHRtbEVsZW1lbnRzQnlGb2N1c2FibGVNYXAsIGZvY3VzYWJsZUl0ZW0sIGh0bWxFbGVtZW50UmVmXSk7XG59O1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBmbGV4UGx1Z2luIH0gZnJvbSBcIi4uL2ZsZXgvZmxleFwiO1xuaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgeyBvdmVyZmxvd1BsdWdpbiB9IGZyb20gXCIuLi9vdmVyZmxvdy9vdmVyZmxvd1wiO1xuXG5leHBvcnQgdHlwZSBBcmVhUGx1Z2luUHJvcHMgPSB7ICRhcmVhPzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgYXJlYVBsdWdpbiA9IGdldFBsdWdpbjxBcmVhUGx1Z2luUHJvcHMsIFt0eXBlb2YgZmxleFBsdWdpbiwgdHlwZW9mIG92ZXJmbG93UGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IGV4cGxpY2l0RmxleFByb3BzID0gaXNPYmplY3QocHJvcHMuJGZsZXgpID8gcHJvcHMuJGZsZXggOiB7fTtcblxuICByZXR1cm4ge1xuICAgICRhcmVhOiB1bmRlZmluZWQsXG5cbiAgICAkZmxleDogcHJvcHMuJGFyZWFcbiAgICAgID8ge1xuICAgICAgICAgIHZlcnRpY2FsQWxpZ246IFwic3RyZXRjaFwiLFxuICAgICAgICAgIGhvcml6b250YWxBbGlnbjogXCJzdHJldGNoXCIsXG4gICAgICAgICAgLi4uZXhwbGljaXRGbGV4UHJvcHMsXG4gICAgICAgIH1cbiAgICAgIDogcHJvcHMuJGZsZXgsXG5cbiAgICAkb3ZlcmZsb3c6IHByb3BzLiRvdmVyZmxvdyA/PyAocHJvcHMuJGFyZWEgPyBcImhpZGRlblwiIDogdW5kZWZpbmVkKSxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBmbGV4Q2hpbGRQbHVnaW4gfSBmcm9tIFwiLi4vZmxleC1jaGlsZC9mbGV4LWNoaWxkXCI7XG5cbmV4cG9ydCB0eXBlIEFyZWFDb250ZW50UGx1Z2luUHJvcHMgPSB7ICRhcmVhQ29udGVudD86IGJvb2xlYW4gfTtcblxuZXhwb3J0IGNvbnN0IGFyZWFDb250ZW50UGx1Z2luID0gZ2V0UGx1Z2luPEFyZWFDb250ZW50UGx1Z2luUHJvcHMsIFt0eXBlb2YgZmxleENoaWxkUGx1Z2luXT4oKHByb3BzKSA9PiAoe1xuICAkYXJlYUNvbnRlbnQ6IHVuZGVmaW5lZCxcbiAgJGZsZXhDaGlsZDogcHJvcHMuJGFyZWFDb250ZW50ID8gdHJ1ZSA6IHByb3BzLiRmbGV4Q2hpbGQsXG59KSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFRTaGlydFNpemUgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuaW1wb3J0IHR5cGUgeyB3aWR0aFBsdWdpbiB9IGZyb20gXCIuLi93aWR0aC93aWR0aFwiO1xuaW1wb3J0IHR5cGUgeyBoZWlnaHRQbHVnaW4gfSBmcm9tIFwiLi4vaGVpZ2h0L2hlaWdodFwiO1xuXG5leHBvcnQgdHlwZSAkU2l6ZVByb3BzID0ge1xuICBzaXplPzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiIHwgXCJhdXRvXCI7XG4gIG1pbj86IFRTaGlydFNpemUgfCBcImZ1bGxcIjtcbiAgbWF4PzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiO1xufTtcblxuZXhwb3J0IHR5cGUgU2l6ZVBsdWdpblByb3BzID0geyAkc2l6ZT86IFRTaGlydFNpemUgfCBcImZ1bGxcIiB8ICRTaXplUHJvcHMgfTtcblxuZXhwb3J0IGNvbnN0IHNpemVQbHVnaW4gPSBnZXRQbHVnaW48U2l6ZVBsdWdpblByb3BzLCBbdHlwZW9mIHdpZHRoUGx1Z2luLCB0eXBlb2YgaGVpZ2h0UGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJHNpemUgfSA9IHByb3BzO1xuXG4gIGlmICghJHNpemUpIHtcbiAgICByZXR1cm4geyAkc2l6ZTogdW5kZWZpbmVkIH07XG4gIH1cblxuICBjb25zdCB7IHNpemUsIG1pbiwgbWF4IH0gPSB0eXBlb2YgJHNpemUgPT09IFwic3RyaW5nXCIgPyB7IHNpemU6ICRzaXplIH0gOiAkc2l6ZTtcblxuICByZXR1cm4ge1xuICAgICRoZWlnaHQ6IHsgaGVpZ2h0OiBzaXplLCBtaW4sIG1heCB9LFxuICAgICR3aWR0aDogeyB3aWR0aDogc2l6ZSwgbWluLCBtYXggfSxcbiAgICAkc2l6ZTogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvY3Vyc29yL2N1cnNvci5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImFsaWFzXCI6IFwiY3Vyc29yLW1vZHVsZV9fYWxpYXNfX18waXlIMlwiLFxuICBcImFsbC1zY3JvbGxcIjogXCJjdXJzb3ItbW9kdWxlX19hbGwtc2Nyb2xsX19fVTlobzhcIixcbiAgXCJjZWxsXCI6IFwiY3Vyc29yLW1vZHVsZV9fY2VsbF9fXzVXTzJGXCIsXG4gIFwiY29sdW1uLXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX2NvbHVtbi1yZXNpemVfX19wTHEzc1wiLFxuICBcImNvbnRleHQtbWVudVwiOiBcImN1cnNvci1tb2R1bGVfX2NvbnRleHQtbWVudV9fX0lxcDU2XCIsXG4gIFwiY29weVwiOiBcImN1cnNvci1tb2R1bGVfX2NvcHlfX19YVTd5TFwiLFxuICBcImNyb3NzaGFpclwiOiBcImN1cnNvci1tb2R1bGVfX2Nyb3NzaGFpcl9fXzE4YXlrXCIsXG4gIFwiZGVmYXVsdFwiOiBcImN1cnNvci1tb2R1bGVfX2RlZmF1bHRfX192RC04VFwiLFxuICBcImVhc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fZWFzdC1yZXNpemVfX19TNEhGNVwiLFxuICBcImVhc3QtYW5kLXdlc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fZWFzdC1hbmQtd2VzdC1yZXNpemVfX191LUpmLVwiLFxuICBcImdyYWJcIjogXCJjdXJzb3ItbW9kdWxlX19ncmFiX19fVXZBRjdcIixcbiAgXCJncmFiYmluZ1wiOiBcImN1cnNvci1tb2R1bGVfX2dyYWJiaW5nX19fTU1pdlhcIixcbiAgXCJoZWxwXCI6IFwiY3Vyc29yLW1vZHVsZV9faGVscF9fX2lCOEc0XCIsXG4gIFwibW92ZVwiOiBcImN1cnNvci1tb2R1bGVfX21vdmVfX195cGQtUFwiLFxuICBcIm5vcnRoLXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX25vcnRoLXJlc2l6ZV9fXzdOa2hWXCIsXG4gIFwibm9ydGhlYXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX25vcnRoZWFzdC1yZXNpemVfX19NNE1JelwiLFxuICBcIm5vcnRoZWFzdC1hbmQtc291dGh3ZXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX25vcnRoZWFzdC1hbmQtc291dGh3ZXN0LXJlc2l6ZV9fX3otMWRxXCIsXG4gIFwibm8tZHJvcFwiOiBcImN1cnNvci1tb2R1bGVfX25vLWRyb3BfX19XVDF0OVwiLFxuICBcIm5vbmVcIjogXCJjdXJzb3ItbW9kdWxlX19ub25lX19fRWk5c3pcIixcbiAgXCJub3QtYWxsb3dlZFwiOiBcImN1cnNvci1tb2R1bGVfX25vdC1hbGxvd2VkX19fOXVGTHVcIixcbiAgXCJub3J0aC1hbmQtc291dGgtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGgtYW5kLXNvdXRoLXJlc2l6ZV9fX1FHNUFOXCIsXG4gIFwibm9ydGh3ZXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX25vcnRod2VzdC1yZXNpemVfX19ja0NvaFwiLFxuICBcIm5vcnRod2VzdC1hbmQtc291dGhlYXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX25vcnRod2VzdC1hbmQtc291dGhlYXN0LXJlc2l6ZV9fX25qNFZTXCIsXG4gIFwicG9pbnRlclwiOiBcImN1cnNvci1tb2R1bGVfX3BvaW50ZXJfX19GaWRmS1wiLFxuICBcInByb2dyZXNzXCI6IFwiY3Vyc29yLW1vZHVsZV9fcHJvZ3Jlc3NfX19JZ0V4eVwiLFxuICBcInJvdy1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19yb3ctcmVzaXplX19fMFNzZTZcIixcbiAgXCJzb3V0aC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19zb3V0aC1yZXNpemVfX180RmVuU1wiLFxuICBcInNvdXRoZWFzdC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19zb3V0aGVhc3QtcmVzaXplX19fdzhoR3FcIixcbiAgXCJzb3V0aHdlc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fc291dGh3ZXN0LXJlc2l6ZV9fXzZVdjRHXCIsXG4gIFwidGV4dFwiOiBcImN1cnNvci1tb2R1bGVfX3RleHRfX190cS1Bd1wiLFxuICBcInZlcnRpY2FsLXRleHRcIjogXCJjdXJzb3ItbW9kdWxlX192ZXJ0aWNhbC10ZXh0X19fM09hekVcIixcbiAgXCJ3ZXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX3dlc3QtcmVzaXplX19fYnJXNTZcIixcbiAgXCJ3YWl0XCI6IFwiY3Vyc29yLW1vZHVsZV9fd2FpdF9fX1F0WGxHXCIsXG4gIFwiem9vbS1pblwiOiBcImN1cnNvci1tb2R1bGVfX3pvb20taW5fX196RURIUVwiLFxuICBcInpvb20tb3V0XCI6IFwiY3Vyc29yLW1vZHVsZV9fem9vbS1vdXRfX19xYnFvNlwiXG59OyIsICJpbXBvcnQgcmF3U3R5bGVzIGZyb20gXCIuL2N1cnNvci5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IHNhbml0aXplU2Nzc01vZHVsZXMgfSBmcm9tIFwiQGs4c2xlbnMvdGVzdC11dGlsc1wiO1xuXG5jb25zdCBzdHlsZXMgPSBzYW5pdGl6ZVNjc3NNb2R1bGVzKHJhd1N0eWxlcyk7XG5cbmV4cG9ydCB0eXBlICRDdXJzb3JQcm9wcyA9XG4gIHwgXCJhbGlhc1wiXG4gIHwgXCJhbGwtc2Nyb2xsXCJcbiAgfCBcImNlbGxcIlxuICB8IFwiY29sdW1uLXJlc2l6ZVwiXG4gIHwgXCJjb250ZXh0LW1lbnVcIlxuICB8IFwiY29weVwiXG4gIHwgXCJjcm9zc2hhaXJcIlxuICB8IFwiZGVmYXVsdFwiXG4gIHwgXCJlYXN0LXJlc2l6ZVwiXG4gIHwgXCJlYXN0LWFuZC13ZXN0LXJlc2l6ZVwiXG4gIHwgXCJncmFiXCJcbiAgfCBcImdyYWJiaW5nXCJcbiAgfCBcImhlbHBcIlxuICB8IFwibW92ZVwiXG4gIHwgXCJub3J0aC1yZXNpemVcIlxuICB8IFwibm9ydGhlYXN0LXJlc2l6ZVwiXG4gIHwgXCJub3J0aGVhc3QtYW5kLXNvdXRod2VzdC1yZXNpemVcIlxuICB8IFwibm8tZHJvcFwiXG4gIHwgXCJub25lXCJcbiAgfCBcIm5vdC1hbGxvd2VkXCJcbiAgfCBcIm5vcnRoLWFuZC1zb3V0aC1yZXNpemVcIlxuICB8IFwibm9ydGh3ZXN0LXJlc2l6ZVwiXG4gIHwgXCJub3J0aHdlc3QtYW5kLXNvdXRoZWFzdC1yZXNpemVcIlxuICB8IFwicG9pbnRlclwiXG4gIHwgXCJwcm9ncmVzc1wiXG4gIHwgXCJyb3ctcmVzaXplXCJcbiAgfCBcInNvdXRoLXJlc2l6ZVwiXG4gIHwgXCJzb3V0aGVhc3QtcmVzaXplXCJcbiAgfCBcInNvdXRod2VzdC1yZXNpemVcIlxuICB8IFwidGV4dFwiXG4gIHwgXCJ2ZXJ0aWNhbC10ZXh0XCJcbiAgfCBcIndlc3QtcmVzaXplXCJcbiAgfCBcIndhaXRcIlxuICB8IFwiem9vbS1pblwiXG4gIHwgXCJ6b29tLW91dFwiO1xuXG5leHBvcnQgdHlwZSBDdXJzb3JQbHVnaW5Qcm9wcyA9IHtcbiAgJGN1cnNvcj86ICRDdXJzb3JQcm9wcztcbn07XG5cbmV4cG9ydCBjb25zdCBjdXJzb3JQbHVnaW4gPSBnZXRQbHVnaW48Q3Vyc29yUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGN1cnNvciwgJGNsYXNzTmFtZSB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkY3Vyc29yKSB7XG4gICAgcmV0dXJuIHsgJGN1cnNvcjogdW5kZWZpbmVkIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRjdXJzb3I6IHVuZGVmaW5lZCxcbiAgICAkY2xhc3NOYW1lOiBbJGNsYXNzTmFtZSwgc3R5bGVzWyRjdXJzb3JdXSxcbiAgICBcImRhdGEtY3Vyc29yLXRlc3RcIjogJGN1cnNvcixcbiAgfTtcbn0pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgb25NaWRkbGVDbGljaywgb25UcmlnZ2VyIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBlbmFibGVkUGx1Z2luIH0gZnJvbSBcIi4uL2VuYWJsZWQvZW5hYmxlZFwiO1xuaW1wb3J0IHR5cGUgeyAkQ3Vyc29yUHJvcHMsIGN1cnNvclBsdWdpbiB9IGZyb20gXCIuLi9jdXJzb3IvY3Vyc29yXCI7XG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgeyBvblJpZ2h0VHJpZ2dlckluamVjdGFibGUgfSBmcm9tIFwiLi9vbi1yaWdodC10cmlnZ2VyLmluamVjdGFibGVcIjtcblxuZXhwb3J0IHR5cGUgUG9zaXRpb24yZCA9IHtcbiAgcmVhZG9ubHkgeDogbnVtYmVyO1xuICByZWFkb25seSB5OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBDbGlja0hhbmRsZXJEZXRhaWxzID0ge1xuICByZWFkb25seSBjdXJzb3I6IFBvc2l0aW9uMmQ7XG4gIHJlYWRvbmx5IGNhdXNlOiBcImNsaWNrXCIgfCBcImtleWJvYXJkXCI7XG59O1xuXG5leHBvcnQgdHlwZSBDbGlja0hhbmRsZXIgPSAoKGRldGFpbHM6IENsaWNrSGFuZGxlckRldGFpbHMpID0+IHZvaWQpIHwgKChkZXRhaWxzOiBDbGlja0hhbmRsZXJEZXRhaWxzKSA9PiBQcm9taXNlPHZvaWQ+KTtcblxuZXhwb3J0IHR5cGUgQ2xpY2tQbHVnaW5Qcm9wcyA9IHtcbiAgJG9uQ2xpY2s/OiBDbGlja0hhbmRsZXI7XG4gICRvbk9ubHlNb3VzZUNsaWNrPzogQ2xpY2tIYW5kbGVyO1xuICAkb25Eb3VibGVDbGljaz86IENsaWNrSGFuZGxlcjtcbiAgJG9uUmlnaHRDbGljaz86IENsaWNrSGFuZGxlcjtcbiAgJG9uTWlkZGxlQ2xpY2s/OiBDbGlja0hhbmRsZXI7XG4gIHRhYkluZGV4PzogbnVtYmVyO1xufTtcblxuY29uc3QgY2xpY2tVc2VkID0gU3ltYm9sKCk7XG5cbmV4cG9ydCBjb25zdCBjbGlja2FibGVQbHVnaW4gPSBnZXRQbHVnaW48Q2xpY2tQbHVnaW5Qcm9wcywgW3R5cGVvZiBlbmFibGVkUGx1Z2luLCB0eXBlb2YgY3Vyc29yUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIC8vIHR5cGluZyByZXF1aXJlZCBkdWUgdG8gbGFjayBvZiBnb29kIHR5cGluZyBvZiBwcmUtcHJvY2Vzc2VkIGRlcGVuZGVudCBwbHVnaW5zXG4gIGNvbnN0IHtcbiAgICAkY3Vyc29yLFxuICAgICRvbkNsaWNrLFxuICAgICRvbk9ubHlNb3VzZUNsaWNrLFxuICAgICRvbk1pZGRsZUNsaWNrLFxuICAgICRvblJpZ2h0Q2xpY2ssXG4gICAgJG9uRG91YmxlQ2xpY2ssXG4gICAgb25Eb3VibGVDbGljayxcbiAgICBvbkF1eENsaWNrLFxuICAgIG9uQ2xpY2ssXG4gICAgb25Db250ZXh0TWVudSxcbiAgICBvbktleURvd24sXG4gICAgdGFiSW5kZXgsXG4gICAgZGlzYWJsZWQsXG4gICAgcm9sZSxcbiAgfSA9IHByb3BzIGFzIHR5cGVvZiBwcm9wcyAmIFJlYWN0LkhUTUxQcm9wczxIVE1MRWxlbWVudD47XG4gIGNvbnN0IFtwZW5kaW5nLCBzZXRQZW5kaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgb25SaWdodFRyaWdnZXIgPSB1c2VTeW5jSW5qZWN0KG9uUmlnaHRUcmlnZ2VySW5qZWN0YWJsZSk7XG4gIGNvbnN0IG9uTW91c2VDbGljayA9ICRvbkNsaWNrID8/ICRvbk9ubHlNb3VzZUNsaWNrO1xuXG4gIGlmICgkb25DbGljayAmJiAkb25Pbmx5TW91c2VDbGljaykge1xuICAgIGNvbnNvbGUud2FybihcIkNhbm5vdCBoYXZlIGJvdGggJG9uQ2xpY2sgYW5kICRvbk1vdXNlQ2xpY2tPbmx5IG9uIHRoZSBzYW1lIGNvbXBvbmVudFwiKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJG9uQ2xpY2s6IHVuZGVmaW5lZCxcbiAgICAkb25NaWRkbGVDbGljazogdW5kZWZpbmVkLFxuICAgICRvblJpZ2h0Q2xpY2s6IHVuZGVmaW5lZCxcbiAgICAkb25Eb3VibGVDbGljazogdW5kZWZpbmVkLFxuICAgICRvbk9ubHlNb3VzZUNsaWNrOiB1bmRlZmluZWQsXG4gICAgdGFiSW5kZXg6IHRhYkluZGV4ID8/IChvbk1vdXNlQ2xpY2sgfHwgJG9uUmlnaHRDbGljayB8fCAkb25Eb3VibGVDbGljayA/IDAgOiB1bmRlZmluZWQpLFxuICAgICRjdXJzb3I6IGdldEN1cnNvclByb3BzKCRjdXJzb3IsIGRpc2FibGVkLCBwZW5kaW5nLCBvbk1vdXNlQ2xpY2ssICRvblJpZ2h0Q2xpY2spLFxuICAgIHJvbGU6IHJvbGUgPz8gKG9uTW91c2VDbGljayA/IFwiYnV0dG9uXCIgOiByb2xlKSxcbiAgICBvbkNsaWNrOiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICBvbkNsaWNrPy4oZXZlbnQpO1xuXG4gICAgICBpZiAoIWRpc2FibGVkICYmIG9uTW91c2VDbGljayAmJiAhKGNsaWNrVXNlZCBpbiBldmVudCkpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihldmVudCwgeyBbY2xpY2tVc2VkXTogdHJ1ZSB9KTtcblxuICAgICAgICBjb25zdCBtYXliZVByb21pc2UgPSBvbk1vdXNlQ2xpY2sodG9EZXRhaWxzKGV2ZW50KSk7XG5cbiAgICAgICAgaWYgKGlzUHJvbWlzZUxpa2UobWF5YmVQcm9taXNlKSkge1xuICAgICAgICAgIHNldFBlbmRpbmcodHJ1ZSk7XG4gICAgICAgICAgbWF5YmVQcm9taXNlLnRoZW4oKCkgPT4gc2V0UGVuZGluZyhmYWxzZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBvbkRvdWJsZUNsaWNrOiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICBvbkRvdWJsZUNsaWNrPy4oZXZlbnQpO1xuICAgICAgJG9uRG91YmxlQ2xpY2s/Lih0b0RldGFpbHMoZXZlbnQpKTtcbiAgICB9LFxuICAgIG9uQ29udGV4dE1lbnU6IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIG9uQ29udGV4dE1lbnU/LihldmVudCk7XG4gICAgICAkb25SaWdodENsaWNrPy4odG9EZXRhaWxzKGV2ZW50KSk7XG4gICAgfSxcbiAgICBvbkF1eENsaWNrOiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICBvbkF1eENsaWNrPy4oZXZlbnQpO1xuICAgICAgb25NaWRkbGVDbGljayhldmVudCwgKCkgPT4gJG9uTWlkZGxlQ2xpY2s/Lih0b0RldGFpbHMoZXZlbnQpKSk7XG4gICAgfSxcbiAgICBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIG9uS2V5RG93bj8uKGV2ZW50KTtcblxuICAgICAgaWYgKCRvbkNsaWNrKSB7XG4gICAgICAgIG9uVHJpZ2dlcihldmVudCwgKCkgPT4ge1xuICAgICAgICAgIGlmICghZGlzYWJsZWQgJiYgIShjbGlja1VzZWQgaW4gZXZlbnQpKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGV2ZW50LCB7IFtjbGlja1VzZWRdOiB0cnVlIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBtYXliZVByb21pc2UgPSAkb25DbGljayh0b0RldGFpbHMoZXZlbnQpKTtcblxuICAgICAgICAgICAgaWYgKGlzUHJvbWlzZUxpa2UobWF5YmVQcm9taXNlKSkge1xuICAgICAgICAgICAgICBzZXRQZW5kaW5nKHRydWUpO1xuICAgICAgICAgICAgICBtYXliZVByb21pc2UudGhlbigoKSA9PiBzZXRQZW5kaW5nKGZhbHNlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCRvblJpZ2h0Q2xpY2spIHtcbiAgICAgICAgb25SaWdodFRyaWdnZXIoZXZlbnQsICgpID0+IHtcbiAgICAgICAgICAkb25SaWdodENsaWNrKHRvRGV0YWlscyhldmVudCkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufSk7XG5cbmNvbnN0IHRvTWlkZGxlID0gKHJlY3Q6IERPTVJlY3QpID0+ICh7XG4gIHg6IHJlY3QubGVmdCArIHJlY3Qud2lkdGggLyAyLFxuICB5OiByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMixcbn0pO1xuXG5jb25zdCB0b0RldGFpbHMgPSAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEVsZW1lbnQ+IHwgUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MRWxlbWVudD4pOiBDbGlja0hhbmRsZXJEZXRhaWxzID0+IHtcbiAgY29uc3QgY3Vyc29yID1cbiAgICBcImNsaWVudFhcIiBpbiBldmVudFxuICAgICAgPyB7XG4gICAgICAgICAgeDogZXZlbnQuY2xpZW50WCxcbiAgICAgICAgICB5OiBldmVudC5jbGllbnRZLFxuICAgICAgICB9XG4gICAgICA6IHRvTWlkZGxlKGV2ZW50LmN1cnJlbnRUYXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuXG4gIHJldHVybiB7XG4gICAgY3Vyc29yLFxuICAgIGNhdXNlOiBldmVudC5kZXRhaWwgPyBcImNsaWNrXCIgOiBcImtleWJvYXJkXCIsXG4gIH07XG59O1xuXG5jb25zdCBpc1Byb21pc2VMaWtlID0gKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUHJvbWlzZTx1bmtub3duPiA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgISF2YWx1ZSAmJiBcInRoZW5cIiBpbiB2YWx1ZTtcblxuY29uc3QgZ2V0Q3Vyc29yUHJvcHMgPSAoXG4gICRjdXJzb3I6ICRDdXJzb3JQcm9wcyB8IHVuZGVmaW5lZCxcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQsXG4gIHBlbmRpbmc6IGJvb2xlYW4sXG4gICRvbkNsaWNrOiBGdW5jdGlvbiB8IHVuZGVmaW5lZCxcbiAgJG9uUmlnaHRDbGljazogRnVuY3Rpb24gfCB1bmRlZmluZWQsXG4pOiAkQ3Vyc29yUHJvcHMgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoJGN1cnNvcikge1xuICAgIHJldHVybiAkY3Vyc29yO1xuICB9XG5cbiAgaWYgKHBlbmRpbmcpIHtcbiAgICByZXR1cm4gXCJwcm9ncmVzc1wiO1xuICB9XG5cbiAgaWYgKCEkb25DbGljayAmJiAhJG9uUmlnaHRDbGljaykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAoZGlzYWJsZWQpIHtcbiAgICByZXR1cm4gXCJub3QtYWxsb3dlZFwiO1xuICB9XG5cbiAgaWYgKCRvbkNsaWNrKSB7XG4gICAgcmV0dXJuIFwicG9pbnRlclwiO1xuICB9XG5cbiAgcmV0dXJuIFwiY29udGV4dC1tZW51XCI7XG59O1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2Rpc3BsYXktY29udGVudHMvZGlzcGxheS1jb250ZW50cy5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImNvbnRlbnRzXCI6IFwiZGlzcGxheS1jb250ZW50cy1tb2R1bGVfX2NvbnRlbnRzX19fbVJlWEtcIlxufTsiLCAiaW1wb3J0IHJhd1N0eWxlcyBmcm9tIFwiLi9kaXNwbGF5LWNvbnRlbnRzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgc2FuaXRpemVTY3NzTW9kdWxlcyB9IGZyb20gXCJAazhzbGVucy90ZXN0LXV0aWxzXCI7XG5cbmNvbnN0IHN0eWxlcyA9IHNhbml0aXplU2Nzc01vZHVsZXMocmF3U3R5bGVzKTtcblxuZXhwb3J0IHR5cGUgRGlzcGxheUNvbnRlbnRzUGx1Z2luUHJvcHMgPSB7XG4gICRkaXNwbGF5Q29udGVudHM/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGRpc3BsYXlDb250ZW50c1BsdWdpbiA9IGdldFBsdWdpbjxEaXNwbGF5Q29udGVudHNQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkZGlzcGxheUNvbnRlbnRzLCAkY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICBpZiAoISRkaXNwbGF5Q29udGVudHMpIHtcbiAgICByZXR1cm4geyAkZGlzcGxheUNvbnRlbnRzOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJGRpc3BsYXlDb250ZW50czogdW5kZWZpbmVkLFxuICAgICRjbGFzc05hbWU6IFskY2xhc3NOYW1lLCBzdHlsZXMuY29udGVudHNdLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvdGV4dC1hbGlnbi90ZXh0LWFsaWduLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwidGV4dC1hbGlnbi0tY2VudGVyXCI6IFwidGV4dC1hbGlnbi1tb2R1bGVfX3RleHQtYWxpZ24tLWNlbnRlcl9fX2JEclIyXCIsXG4gIFwidGV4dC1hbGlnbi0tcmlnaHRcIjogXCJ0ZXh0LWFsaWduLW1vZHVsZV9fdGV4dC1hbGlnbi0tcmlnaHRfX19KVlJNUFwiLFxuICBcInRleHQtYWxpZ24tLWxlZnRcIjogXCJ0ZXh0LWFsaWduLW1vZHVsZV9fdGV4dC1hbGlnbi0tbGVmdF9fX0xMTGs2XCJcbn07IiwgImltcG9ydCBzdHlsZXMgZnJvbSBcIi4vdGV4dC1hbGlnbi5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcblxuZXhwb3J0IHR5cGUgVGV4dEFsaWduUGx1Z2luUHJvcHMgPSB7ICR0ZXh0QWxpZ24/OiBcImxlZnRcIiB8IFwiY2VudGVyXCIgfCBcInJpZ2h0XCIgfTtcblxuZXhwb3J0IGNvbnN0IHRleHRBbGlnblBsdWdpbiA9IGdldFBsdWdpbjxUZXh0QWxpZ25QbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkdGV4dEFsaWduIH0gPSBwcm9wcztcblxuICBpZiAoISR0ZXh0QWxpZ24pIHtcbiAgICByZXR1cm4geyAkdGV4dEFsaWduOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7ICRjbGFzc05hbWU6IFtzdHlsZXNbYHRleHQtYWxpZ24tLSR7JHRleHRBbGlnbn1gXSwgcHJvcHMuJGNsYXNzTmFtZV0sICR0ZXh0QWxpZ246IHVuZGVmaW5lZCB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvYmxvY2svYmxvY2subW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJibG9ja1wiOiBcImJsb2NrLW1vZHVsZV9fYmxvY2tfX19ZNHR6alwiLFxuICBcImJsb2NrLS1pbmxpbmVcIjogXCJibG9jay1tb2R1bGVfX2Jsb2NrLS1pbmxpbmVfX18tMVlDZ1wiXG59OyIsICJpbXBvcnQgc3R5bGVzIGZyb20gXCIuL2Jsb2NrLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuXG5leHBvcnQgdHlwZSBCbG9ja1BsdWdpblByb3BzID0ge1xuICAkYmxvY2s/OiBib29sZWFuIHwgXCJpbmxpbmVcIjtcbn07XG5cbmV4cG9ydCBjb25zdCBibG9ja1BsdWdpbiA9IGdldFBsdWdpbjxCbG9ja1BsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRibG9jaywgJGNsYXNzTmFtZSB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkYmxvY2spIHtcbiAgICByZXR1cm4geyAkYmxvY2s6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkYmxvY2s6IHVuZGVmaW5lZCxcbiAgICAkY2xhc3NOYW1lOiBbJGNsYXNzTmFtZSwgJGJsb2NrID09PSBcImlubGluZVwiID8gc3R5bGVzW1wiYmxvY2stLWlubGluZVwiXSA6IHN0eWxlcy5ibG9ja10sXG4gIH07XG59KTtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHR5cGUgeyBDb2xvciB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbG9yc1wiO1xuaW1wb3J0IHR5cGUgeyBSYW5nZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5pbXBvcnQgb3V0bGluZVN0eWxlcyBmcm9tIFwiLi9vdXRsaW5lLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBzYW5pdGl6ZVNjc3NNb2R1bGVzIH0gZnJvbSBcIkBrOHNsZW5zL3Rlc3QtdXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgSUNsYXNzTmFtZSB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5cbmNvbnN0IHN0eWxlcyA9IHNhbml0aXplU2Nzc01vZHVsZXMob3V0bGluZVN0eWxlcyk7XG5cbmV4cG9ydCB0eXBlIE91dGxpbmVXaWR0aCA9IFwiemVyb1wiIHwgXCJ4eHNcIiB8IFwieHNcIiB8IFwic1wiIHwgXCJtXCIgfCBcImxcIiB8IFwieGxcIiB8IFwieHhsXCIgfCBgJHtSYW5nZTwzLCA1Pn14bGA7XG5cbmV4cG9ydCB0eXBlICRPdXRsaW5lUHJvcHMgPSB7IGNvbG9yPzogQ29sb3I7IHdpZHRoPzogT3V0bGluZVdpZHRoIH07XG5cbmV4cG9ydCB0eXBlIE91dGxpbmVQbHVnaW5Qcm9wcyA9IHsgJG91dGxpbmU/OiB7IGZvY3VzVmlzaWJsZT86ICRPdXRsaW5lUHJvcHMgfSB9O1xuXG5leHBvcnQgY29uc3Qgb3V0bGluZVBsdWdpbiA9IGdldFBsdWdpbjxPdXRsaW5lUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIGdldEZvY3VzVmlzaWJsZU91dGxpbmVTdHlsZXMocHJvcHMuJG91dGxpbmU/LmZvY3VzVmlzaWJsZSldLFxuICAgICRvdXRsaW5lOiB1bmRlZmluZWQsXG4gIH07XG59KTtcblxuY29uc3QgZ2V0Rm9jdXNWaXNpYmxlT3V0bGluZVN0eWxlcyA9IChwcm9wczogJE91dGxpbmVQcm9wcyB8IHVuZGVmaW5lZCk6IElDbGFzc05hbWUgPT4ge1xuICBpZiAoIXByb3BzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHsgY29sb3IsIHdpZHRoIH0gPSBwcm9wcztcblxuICByZXR1cm4gW1xuICAgIGNvbG9yICE9PSB1bmRlZmluZWQgfHwgd2lkdGggIT09IHVuZGVmaW5lZCA/IFtzdHlsZXMub3V0bGluZSwgc3R5bGVzLmZvY3VzVmlzaWJsZV0gOiB1bmRlZmluZWQsXG4gICAgY29sb3IgPyBzdHlsZXNbYGNvbG9yLS0ke2NvbG9yfWBdIDogdW5kZWZpbmVkLFxuICAgIHdpZHRoID8gc3R5bGVzW2B3aWR0aC0tJHt3aWR0aH1gXSA6IHVuZGVmaW5lZCxcbiAgXTtcbn07XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvb3V0bGluZS9vdXRsaW5lLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwib3V0bGluZVwiOiBcIm91dGxpbmUtbW9kdWxlX19vdXRsaW5lX19fQW9CdEZcIixcbiAgXCJmb2N1c1Zpc2libGVcIjogXCJvdXRsaW5lLW1vZHVsZV9fZm9jdXNWaXNpYmxlX19fSkFyUEpcIixcbiAgXCJjb2xvci0taW5oZXJpdFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0taW5oZXJpdF9fXzBXUDByXCIsXG4gIFwiY29sb3ItLXdoaXRlXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS13aGl0ZV9fX1VxLWdkXCIsXG4gIFwiY29sb3ItLXRyYW5zcGFyZW50XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS10cmFuc3BhcmVudF9fX1ROb012XCIsXG4gIFwiY29sb3ItLWdyZXkxMDBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXkxMDBfX19WTUY3WVwiLFxuICBcImNvbG9yLS1ncmV5ODBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXk4MF9fX0tkOGZNXCIsXG4gIFwiY29sb3ItLWdyZXk2MFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTYwX19fWkdqT3RcIixcbiAgXCJjb2xvci0tZ3JleTQwXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5NDBfX191YUZuR1wiLFxuICBcImNvbG9yLS1ncmV5MzBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXkzMF9fXzdRQlZWXCIsXG4gIFwiY29sb3ItLWdyZXkyNVwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTI1X19fci1iYkpcIixcbiAgXCJjb2xvci0tZ3JleTIwXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5MjBfX19pd3plTFwiLFxuICBcImNvbG9yLS1ncmV5MTBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXkxMF9fX2hKdHRTXCIsXG4gIFwiY29sb3ItLWdyZXk3MFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTcwX19fME9HbFVcIixcbiAgXCJjb2xvci0tZ3JleTgwQWxwaGE4NVwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTgwQWxwaGE4NV9fX2pSd0huXCIsXG4gIFwiY29sb3ItLXByaW1hcnlcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXByaW1hcnlfX19QeGNteFwiLFxuICBcImNvbG9yLS1zdWNjZXNzXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1zdWNjZXNzX19feGpKTG5cIixcbiAgXCJjb2xvci0tbm90aWNlXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ub3RpY2VfX19DUmlZYlwiLFxuICBcImNvbG9yLS13YXJuaW5nXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS13YXJuaW5nX19fMU9lN1dcIixcbiAgXCJjb2xvci0tY3JpdGljYWxcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWNyaXRpY2FsX19feVF4LUxcIixcbiAgXCJjb2xvci0tc3VjY2Vzc1RpbnRcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXN1Y2Nlc3NUaW50X19fR0hhcS1cIixcbiAgXCJjb2xvci0td2FybmluZ1RpbnRcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXdhcm5pbmdUaW50X19fWUFudHVcIixcbiAgXCJjb2xvci0tY3JpdGljYWxUaW50XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1jcml0aWNhbFRpbnRfX19RMW1kaFwiLFxuICBcImNvbG9yLS1saW5rXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1saW5rX19fdUlrM29cIixcbiAgXCJjb2xvci0tY29kZVwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tY29kZV9fX3libndpXCIsXG4gIFwid2lkdGgtLXplcm9cIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLXplcm9fX19Fa2Z6TlwiLFxuICBcIndpZHRoLS14eHNcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLXh4c19fX2JHeVRyXCIsXG4gIFwid2lkdGgtLXhzXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS14c19fX1paUjJCXCIsXG4gIFwid2lkdGgtLXNcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLXNfX184ZERFelwiLFxuICBcIndpZHRoLS1tXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS1tX19fZzJ1RzVcIixcbiAgXCJ3aWR0aC0tbFwiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0tbF9fX1doMGJDXCIsXG4gIFwid2lkdGgtLXhsXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS14bF9fXzhkT01qXCIsXG4gIFwid2lkdGgtLXh4bFwiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0teHhsX19fQkVzVW1cIixcbiAgXCJ3aWR0aC0tM3hsXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS0zeGxfX19FczBTWVwiLFxuICBcIndpZHRoLS00eGxcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLTR4bF9fX1llb3Y4XCIsXG4gIFwid2lkdGgtLTV4bFwiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0tNXhsX19fTnNWOFBcIlxufTsiLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBjbGlja2FibGVQbHVnaW4sIENsaWNrSGFuZGxlckRldGFpbHMgfSBmcm9tIFwiLi4vY2xpY2thYmxlL2NsaWNrYWJsZVwiO1xuaW1wb3J0IHsgYXV0b1VwZGF0ZSwgZmxpcCwgb2Zmc2V0LCBzaGlmdCwgdXNlRmxvYXRpbmcgfSBmcm9tIFwiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbVwiO1xuaW1wb3J0IHR5cGUgeyBSZWZQbHVnaW4gfSBmcm9tIFwiLi4vcmVmL3JlZlwiO1xuaW1wb3J0IHsgZXhwZWN0RGVmaW5lZCwgc3RvcFByb3BhZ2F0aW9uIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vcG9wb3Zlci5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgTWluaW1hbERpdiB9IGZyb20gXCIuLi8uLi9lbGVtZW50cy9taW5pbWFsLWRpdlwiO1xuXG5leHBvcnQgdHlwZSBQb3BvdmVyUGx1Z2luUHJvcHMgPSB7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICAkcG9wb3Zlcj86ICgpID0+IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmV4cG9ydCBjb25zdCBwb3BvdmVySXNPcGVuQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoZmFsc2UpO1xuXG5leHBvcnQgY29uc3QgdXNlUG9wb3ZlcklzT3BlbiA9ICgpID0+IHVzZUNvbnRleHQocG9wb3ZlcklzT3BlbkNvbnRleHQpO1xuXG5leHBvcnQgY29uc3QgcG9wb3ZlclBsdWdpbiA9IGdldFBsdWdpbjxQb3BvdmVyUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xpY2thYmxlUGx1Z2luLCBSZWZQbHVnaW48YW55Pl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRwb3BvdmVyLCAkb25DbGljaywgJHJlZiB9ID0gcHJvcHM7XG4gIGNvbnN0IFtwb3BvdmVyQ29udGVudElzU2hvd24sIHNldFBvcG92ZXJDb250ZW50SXNTaG93bl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtyZWZlcmVuY2UsIHNldEVsZW1lbnRdID0gdXNlU3RhdGU8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgY2xvc2VQb3BvdmVyID0gdXNlQ2FsbGJhY2soKCkgPT4gc2V0UG9wb3ZlckNvbnRlbnRJc1Nob3duKGZhbHNlKSwgW10pO1xuXG4gIGlmICghJHBvcG92ZXIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJHBvcG92ZXI6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkcG9wb3ZlcjogdW5kZWZpbmVkLFxuICAgICRyZWY6IFskcmVmLCBzZXRFbGVtZW50XSxcbiAgICAkb25DbGljazogKGRldGFpbHM6IENsaWNrSGFuZGxlckRldGFpbHMpID0+IHtcbiAgICAgIHNldFBvcG92ZXJDb250ZW50SXNTaG93bighcG9wb3ZlckNvbnRlbnRJc1Nob3duKTtcbiAgICAgICRvbkNsaWNrPy4oZGV0YWlscyk7XG4gICAgfSxcbiAgICBvbkNsaWNrOiBzdG9wUHJvcGFnYXRpb24sXG4gICAgJHdyYXBwZXI6IHtcbiAgICAgIENvbXBvbmVudDogUG9wb3ZlcldyYXBwZXJDb21wb25lbnQsXG4gICAgICBwcm9wczoge1xuICAgICAgICBwb3BvdmVyOiB7XG4gICAgICAgICAgJHBvcG92ZXIsXG4gICAgICAgICAgaXNTaG93bjogcG9wb3ZlckNvbnRlbnRJc1Nob3duLFxuICAgICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgICBjbG9zZVBvcG92ZXIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59KTtcblxudHlwZSBQb3BvdmVyV3JhcHBlclByb3BzID0ge1xuICByZWFkb25seSBwb3BvdmVyOiB7XG4gICAgcmVhZG9ubHkgJHBvcG92ZXI6ICgpID0+IFJlYWN0LlJlYWN0Tm9kZTtcbiAgICByZWFkb25seSBpc1Nob3duOiBib29sZWFuO1xuICAgIHJlYWRvbmx5IHJlZmVyZW5jZTogSFRNTERpdkVsZW1lbnQgfCBudWxsO1xuICAgIHJlYWRvbmx5IGNsb3NlUG9wb3ZlcjogVm9pZEZ1bmN0aW9uO1xuICB9O1xuICByZWFkb25seSBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgUG9wb3ZlcldyYXBwZXJDb21wb25lbnQgPSAoeyBwb3BvdmVyLCBjaGlsZHJlbiB9OiBQb3BvdmVyV3JhcHBlclByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJHBvcG92ZXIsIGlzU2hvd24sIHJlZmVyZW5jZSwgY2xvc2VQb3BvdmVyIH0gPSBwb3BvdmVyO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtpc1Nob3duICYmXG4gICAgICAgIGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICA8UG9wb3Zlck92ZXJsYXlDb250ZW50XG4gICAgICAgICAgICB7Li4ue1xuICAgICAgICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgICAgICAgICRwb3BvdmVyLFxuICAgICAgICAgICAgICBjbG9zZVBvcG92ZXIsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+LFxuICAgICAgICAgIGRvY3VtZW50LmJvZHksXG4gICAgICAgICl9XG4gICAgICA8cG9wb3ZlcklzT3BlbkNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2lzU2hvd259PntjaGlsZHJlbn08L3BvcG92ZXJJc09wZW5Db250ZXh0LlByb3ZpZGVyPlxuICAgIDwvPlxuICApO1xufTtcblxudHlwZSBQb3BvdmVyT3ZlcmxheUNvbnRlbnRQcm9wcyA9IHtcbiAgcmVmZXJlbmNlOiBIVE1MRGl2RWxlbWVudCB8IG51bGw7XG4gICRwb3BvdmVyOiAoKSA9PiBSZWFjdC5SZWFjdE5vZGU7XG4gIGNsb3NlUG9wb3ZlcjogVm9pZEZ1bmN0aW9uO1xufTtcblxuY29uc3QgUG9wb3Zlck92ZXJsYXlDb250ZW50ID0gKHByb3BzOiBQb3BvdmVyT3ZlcmxheUNvbnRlbnRQcm9wcykgPT4ge1xuICBjb25zdCB7ICRwb3BvdmVyLCBjbG9zZVBvcG92ZXIsIHJlZmVyZW5jZSB9ID0gcHJvcHM7XG4gIGNvbnN0IFtmbG9hdGluZywgc2V0RmxvYXRpbmddID0gdXNlU3RhdGU8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgeyBmbG9hdGluZ1N0eWxlcyB9ID0gdXNlRmxvYXRpbmcoe1xuICAgIHBsYWNlbWVudDogXCJib3R0b21cIixcbiAgICBtaWRkbGV3YXJlOiBbZmxpcCgpLCBvZmZzZXQoOCksIHNoaWZ0KCldLFxuICAgIHdoaWxlRWxlbWVudHNNb3VudGVkOiBhdXRvVXBkYXRlLFxuICAgIGVsZW1lbnRzOiB7XG4gICAgICBmbG9hdGluZyxcbiAgICAgIHJlZmVyZW5jZSxcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCBjbG9zZVBvcG92ZXJGcm9tT3ZlcmxheSA9IChldmVudDogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIHN0b3BQcm9wYWdhdGlvbihldmVudCk7XG4gICAgY2xvc2VQb3BvdmVyKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8TWluaW1hbERpdlxuICAgICAgZGF0YS1wb3BvdmVyLW92ZXJsYXktdGVzdFxuICAgICAgJGFic29sdXRlXG4gICAgICAkY2xhc3NOYW1lPXtzdHlsZXMucG9wb3Zlcl9fb3ZlcmxheX1cbiAgICAgIG9uQ2xpY2s9e2Nsb3NlUG9wb3ZlckZyb21PdmVybGF5fVxuICAgID5cbiAgICAgIDxNaW5pbWFsRGl2XG4gICAgICAgICRyZWY9e3NldEZsb2F0aW5nfVxuICAgICAgICBzdHlsZT17ZmxvYXRpbmdTdHlsZXN9XG4gICAgICAgIG9uQ2xpY2s9e3N0b3BQcm9wYWdhdGlvbn1cbiAgICAgICAgJGNsYXNzTmFtZT17c3R5bGVzLnBvcG92ZXJfX2NvbnRlbnR9XG4gICAgICA+XG4gICAgICAgIDxjb250ZXh0Rm9yQ2xvc2luZ1BvcG92ZXIuUHJvdmlkZXIgdmFsdWU9e2Nsb3NlUG9wb3Zlcn0+eyRwb3BvdmVyKCl9PC9jb250ZXh0Rm9yQ2xvc2luZ1BvcG92ZXIuUHJvdmlkZXI+XG4gICAgICA8L01pbmltYWxEaXY+XG4gICAgPC9NaW5pbWFsRGl2PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnRleHRGb3JDbG9zaW5nUG9wb3ZlciA9IGNyZWF0ZUNvbnRleHQ8Vm9pZEZ1bmN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG5leHBvcnQgY29uc3QgdXNlQ2xvc2VQb3BvdmVyID0gKCkgPT5cbiAgZXhwZWN0RGVmaW5lZChcbiAgICB1c2VDb250ZXh0KGNvbnRleHRGb3JDbG9zaW5nUG9wb3ZlciksXG4gICAgXCJUcmllZCB0byB1c2UgY2xvc2UgcG9wb3ZlciB3aGlsZSBjb250ZW50IGlzIG5vdCBzaG93biBpbnNpZGUgdGhlIHBvcG92ZXIgY29udGVudC5cIixcbiAgKTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9wb3BvdmVyL3BvcG92ZXIubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJwb3BvdmVyX19vdmVybGF5XCI6IFwicG9wb3Zlci1tb2R1bGVfX3BvcG92ZXJfX292ZXJsYXlfX19UY0t2LVwiLFxuICBcInBvcG92ZXJfX2NvbnRlbnRcIjogXCJwb3BvdmVyLW1vZHVsZV9fcG9wb3Zlcl9fY29udGVudF9fX1VDVVo2XCJcbn07IiwgImltcG9ydCB7IGdldFBsdWdpbiwgdHlwZSBDb250cmlidXRlUmVmLCB0eXBlIFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBSZWZQbHVnaW4gfSBmcm9tIFwiLi4vcmVmL3JlZlwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBhdXRvVXBkYXRlLCBmbGlwLCBvZmZzZXQsIHNoaWZ0LCB1c2VGbG9hdGluZywgdHlwZSBQbGFjZW1lbnQgfSBmcm9tIFwiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbVwiO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IHR5cGUgRmxvYXRpbmdDb250ZW50QXJncyA9IHtcbiAgcmVhZG9ubHkgZmxvYXRpbmdTdHlsZXM6IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG4gIHJlYWRvbmx5IGNvbnRlbnRSZWY6IE5vbk51bGxhYmxlPFJlYWN0LlJlZjxIVE1MRGl2RWxlbWVudD4+O1xufTtcblxuZXhwb3J0IHR5cGUgRmxvYXRpbmdDb250ZW50RmFjdG9yeSA9IChhcmdzOiBGbG9hdGluZ0NvbnRlbnRBcmdzKSA9PiBSZWFjdC5SZWFjdE5vZGU7XG5cbmV4cG9ydCB0eXBlICRGbG9hdGluZ1Byb3BzID0ge1xuICByZWFkb25seSBwb3NpdGlvbj86IFBsYWNlbWVudDtcbiAgcmVhZG9ubHkgY29udGVudDogRmxvYXRpbmdDb250ZW50RmFjdG9yeTtcbn07XG5cbmV4cG9ydCB0eXBlIEZsb2F0aW5nUGx1Z2luUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICByZWFkb25seSAkZmxvYXRpbmc/OiAkRmxvYXRpbmdQcm9wcztcbn07XG5cbmV4cG9ydCB0eXBlIEZsb2F0aW5nUGx1Z2luID0gUGx1Z2luPEZsb2F0aW5nUGx1Z2luUHJvcHMsIHVua25vd24+O1xuXG50eXBlIEZsb2F0aW5nV3JhcHBlclByb3BzID0ge1xuICByZWFkb25seSBmbG9hdGluZzogJEZsb2F0aW5nUHJvcHM7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVSZWY6IENvbnRyaWJ1dGVSZWY7XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBGbG9hdGluZ1dyYXBwZXJDb21wb25lbnQgPSAoeyBmbG9hdGluZywgY29udHJpYnV0ZVJlZiwgY2hpbGRyZW4gfTogRmxvYXRpbmdXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29uc3QgW3JlZmVyZW5jZSwgc2V0UmVmZXJlbmNlXSA9IHVzZVN0YXRlPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtmbG9hdGluZ0VsLCBzZXRGbG9hdGluZ10gPSB1c2VTdGF0ZTxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnRyaWJ1dGVSZWYoc2V0UmVmZXJlbmNlKTtcblxuICBjb25zdCB7IGZsb2F0aW5nU3R5bGVzIH0gPSB1c2VGbG9hdGluZyh7XG4gICAgcGxhY2VtZW50OiBmbG9hdGluZy5wb3NpdGlvbiA/PyBcImJvdHRvbVwiLFxuICAgIG1pZGRsZXdhcmU6IFtmbGlwKCksIG9mZnNldCg4KSwgc2hpZnQoKV0sXG4gICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6IGF1dG9VcGRhdGUsXG4gICAgZWxlbWVudHM6IHtcbiAgICAgIGZsb2F0aW5nOiBmbG9hdGluZ0VsLFxuICAgICAgcmVmZXJlbmNlLFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGZsb2F0aW5nQ29udGVudCA9IGZsb2F0aW5nLmNvbnRlbnQoeyBmbG9hdGluZ1N0eWxlcywgY29udGVudFJlZjogc2V0RmxvYXRpbmcgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2Zsb2F0aW5nQ29udGVudCA/IGNyZWF0ZVBvcnRhbChmbG9hdGluZ0NvbnRlbnQsIGRvY3VtZW50LmJvZHkpIDogbnVsbH1cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBmbG9hdGluZ1BsdWdpbjxUPigpIHtcbiAgcmV0dXJuIGdldFBsdWdpbjxGbG9hdGluZ1BsdWdpblByb3BzLCBbUmVmUGx1Z2luPFQ+XT4oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyAkZmxvYXRpbmcgfSA9IHByb3BzO1xuXG4gICAgaWYgKCRmbG9hdGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4geyAkZmxvYXRpbmc6IHVuZGVmaW5lZCB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAkZmxvYXRpbmc6IHVuZGVmaW5lZCxcbiAgICAgICR3cmFwcGVyOiB7XG4gICAgICAgIENvbXBvbmVudDogRmxvYXRpbmdXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgICBwcm9wczogeyBmbG9hdGluZzogJGZsb2F0aW5nIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH0pO1xufVxuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2ludmlzaWJsZS1iYWNrZHJvcC9pbnZpc2libGUtYmFja2Ryb3AubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJpbnZpc2libGVCYWNrZHJvcFwiOiBcImludmlzaWJsZS1iYWNrZHJvcC1tb2R1bGVfX2ludmlzaWJsZUJhY2tkcm9wX19faE9oNWJcIlxufTsiLCAiaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbnZpc2libGUtYmFja2Ryb3AubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCB0eXBlIEludmlzaWJsZUJhY2tkcm9wUGx1Z2luUHJvcHMgPSB7XG4gICRpbnZpc2libGVCYWNrZHJvcD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgaW52aXNpYmxlQmFja2Ryb3BQbHVnaW4gPSBnZXRQbHVnaW48SW52aXNpYmxlQmFja2Ryb3BQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkaW52aXNpYmxlQmFja2Ryb3AsICRjbGFzc05hbWUgfSA9IHByb3BzO1xuXG4gIGlmICghJGludmlzaWJsZUJhY2tkcm9wKSB7XG4gICAgcmV0dXJuIHsgJGludmlzaWJsZUJhY2tkcm9wOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJGludmlzaWJsZUJhY2tkcm9wOiB1bmRlZmluZWQsXG4gICAgJGNsYXNzTmFtZTogWyRjbGFzc05hbWUsIHN0eWxlcy5pbnZpc2libGVCYWNrZHJvcF0sXG4gIH07XG59KTtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4sIHR5cGUgQ29udHJpYnV0ZVByb3BzIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEcm9wRG93bk1lbnUsIHR5cGUgRHJvcERvd25NZW51U3BlYyB9IGZyb20gXCJAazhzbGVucy9kcm9wLWRvd24tbWVudS1jb250cmFjdHNcIjtcbmltcG9ydCB7IG9uVHJpZ2dlciB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgb25SaWdodFRyaWdnZXJJbmplY3RhYmxlIH0gZnJvbSBcIi4uL2NsaWNrYWJsZS9vbi1yaWdodC10cmlnZ2VyLmluamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgUG9zaXRpb24yZCB9IGZyb20gXCIuLi9jbGlja2FibGUvY2xpY2thYmxlXCI7XG5pbXBvcnQgdHlwZSB7IGN1cnNvclBsdWdpbiB9IGZyb20gXCIuLi9jdXJzb3IvY3Vyc29yXCI7XG5pbXBvcnQgeyB0eXBlIGVuYWJsZWRQbHVnaW4sIGlzRGlzYWJsZWQgfSBmcm9tIFwiLi4vZW5hYmxlZC9lbmFibGVkXCI7XG5pbXBvcnQgeyB1c2VPbk91dHNpZGVDbGljayB9IGZyb20gXCIuLi9vbi1vdXRzaWRlLWNsaWNrL29uLW91dHNpZGUtY2xpY2tcIjtcblxuZXhwb3J0IHR5cGUgRHJvcERvd25NZW51UGx1Z2luUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICByZWFkb25seSB0YWJJbmRleD86IG51bWJlcjtcblxuICAvKipcbiAgICogQXR0YWNoZXMgYSBkcm9wLWRvd24gbWVudSB0byB0aGUgZWxlbWVudC4gQ3JlYXRlIHRoZSB2YWx1ZSB3aXRoIGBkcm9wRG93bk1lbnUoa2luZCwgb3B0aW9ucz8pYFxuICAgKiBmcm9tIGBAazhzbGVucy9kcm9wLWRvd24tbWVudS1jb250cmFjdHNgOyB0aGUgaXRlbXMgY29tZSBmcm9tIHRoZSBjb250cmlidXRpb25zIHJlZ2lzdGVyZWQgZm9yXG4gICAqIHRoZSBraW5kLlxuICAgKlxuICAgKiBUaGUgbWVudSBwb3NpdGlvbnMgaXRzZWxmIGFnYWluc3QgdGhlIG5lYXJlc3QgYW5jaG9yIGFyb3VuZCBpdCwgc28gdGhlIGVsZW1lbnQgXHUyMDE0IG9yIHNvbWV0aGluZ1xuICAgKiBlbmNsb3NpbmcgaXQgXHUyMDE0IGRlY2xhcmVzIGAkYW5jaG9yYC5cbiAgICpcbiAgICogUmVxdWlyZXMgYGRyb3BEb3duTWVudUZlYXR1cmVgIG9mIGBAbGVuc2FwcC9kcm9wLWRvd24tbWVudWAgdG8gYmUgcmVnaXN0ZXJlZDogdGhlIG1lbnVcbiAgICogY29tcG9uZW50IGlzIHJlc29sdmVkIHRocm91Z2ggYW4gaW5qZWN0aW9uIHRva2VuIHRoaXMgcGFja2FnZSBkb2VzIG5vdCBpbXBsZW1lbnQuXG4gICAqL1xuICByZWFkb25seSAkZHJvcERvd25NZW51PzogRHJvcERvd25NZW51U3BlYztcbn07XG5cbmNvbnN0IGhvdmVyQ2xvc2VEZWxheUluTWlsbGlzZWNvbmRzID0gMjAwO1xuXG50eXBlIERyb3BEb3duTWVudVdyYXBwZXJQcm9wcyA9IHtcbiAgcmVhZG9ubHkgZHJvcERvd25NZW51OiBEcm9wRG93bk1lbnVTcGVjO1xuICByZWFkb25seSBjb250cmlidXRlUHJvcHM6IENvbnRyaWJ1dGVQcm9wcztcbiAgcmVhZG9ubHkgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IERyb3BEb3duTWVudVdyYXBwZXJDb21wb25lbnQgPSAoeyBkcm9wRG93bk1lbnUsIGNvbnRyaWJ1dGVQcm9wcywgY2hpbGRyZW4gfTogRHJvcERvd25NZW51V3JhcHBlclByb3BzKSA9PiB7XG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtjdXJzb3IsIHNldEN1cnNvcl0gPSB1c2VTdGF0ZTxQb3NpdGlvbjJkIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCBjbG9zZVRpbWVyUmVmID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCBvblJpZ2h0VHJpZ2dlciA9IHVzZVN5bmNJbmplY3Qob25SaWdodFRyaWdnZXJJbmplY3RhYmxlKTtcblxuICBjb25zdCB0b2dnbGUgPSB1c2VDYWxsYmFjaygoKSA9PiBzZXRJc09wZW4oKHdhc09wZW4pID0+ICF3YXNPcGVuKSwgW10pO1xuICBjb25zdCBjbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHNldElzT3BlbihmYWxzZSksIFtdKTtcblxuICBjb25zdCBjYW5jZWxTY2hlZHVsZWRDbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoY2xvc2VUaW1lclJlZi5jdXJyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsZWFyVGltZW91dChjbG9zZVRpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgY2xvc2VUaW1lclJlZi5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9wZW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2FuY2VsU2NoZWR1bGVkQ2xvc2UoKTtcbiAgICBzZXRJc09wZW4odHJ1ZSk7XG4gIH0sIFtjYW5jZWxTY2hlZHVsZWRDbG9zZV0pO1xuXG4gIGNvbnN0IHNjaGVkdWxlQ2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2FuY2VsU2NoZWR1bGVkQ2xvc2UoKTtcbiAgICBjbG9zZVRpbWVyUmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KGNsb3NlLCBob3ZlckNsb3NlRGVsYXlJbk1pbGxpc2Vjb25kcyk7XG4gIH0sIFtjYW5jZWxTY2hlZHVsZWRDbG9zZSwgY2xvc2VdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gY2FuY2VsU2NoZWR1bGVkQ2xvc2UsIFtjYW5jZWxTY2hlZHVsZWRDbG9zZV0pO1xuXG4gIGNvbnN0IG9wZW5PbiA9IGRyb3BEb3duTWVudS5vcGVuT24gPz8gXCJjbGlja1wiO1xuXG4gIC8vIE1hcmtzIHRoZSBlbGVtZW50IGFuZCwgYmVsb3csIHRoZSBtZW51IGl0IG9wZW5zIGFzIG9uZSB0aGluZyBmb3Igb3V0c2lkZS1jbGljayBwdXJwb3Nlcy5cbiAgY29uc3Qgb3V0c2lkZUNsaWNrTWFya2luZ1Byb3BzID0gdXNlT25PdXRzaWRlQ2xpY2soXG4gICAgdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICBzZXRJc09wZW4oZmFsc2UpO1xuICAgICAgfVxuICAgIH0sIFtpc09wZW5dKSxcbiAgKTtcblxuICBjb250cmlidXRlUHJvcHMoe1xuICAgIC4uLm91dHNpZGVDbGlja01hcmtpbmdQcm9wcyxcbiAgICBcImFyaWEtaGFzcG9wdXBcIjogXCJtZW51XCIsXG5cbiAgICAuLi4ob3Blbk9uID09PSBcImNsaWNrXCIgJiYge1xuICAgICAgb25DbGljazogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0b2dnbGUoKTtcbiAgICAgIH0sXG5cbiAgICAgIC8vIEEga2V5IHByZXNzIHRoZSBlbGVtZW50IGFuc3dlcnMgd2l0aCBhIG1lbnUgaXMgYW5zd2VyZWQgaGVyZSBhbmQgbm93aGVyZSBlbHNlLFxuICAgICAgLy8gZXhhY3RseSBhcyBpdHMgY2xpY2sgaXM6IHdoYXRldmVyIGVuY2xvc2VzIHRoZSBlbGVtZW50IChhIG1lbnUgcm93IHdpdGggYW5cbiAgICAgIC8vIGFjdGlvbiBvZiBpdHMgb3duLCBzYXkpIG11c3Qgbm90IHRha2UgdGhlIHNhbWUgcHJlc3MgZm9yIGJlaW5nIGFjdGl2YXRlZCB0b28uXG4gICAgICBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBvblRyaWdnZXIoZXZlbnQsICgpID0+IHtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB0b2dnbGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0pLFxuXG4gICAgLi4uKG9wZW5PbiA9PT0gXCJyaWdodC1jbGlja1wiICYmIHtcbiAgICAgIG9uQ29udGV4dE1lbnU6IChldmVudDogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgLy8gQSBtZW51IG9wZW5lZCBieSByaWdodC1jbGlja2luZyBiZWxvbmdzIGF0IHRoZSBjdXJzb3IgcmF0aGVyIHRoYW4gYXQgdGhlIGVsZW1lbnQuXG4gICAgICAgIHNldEN1cnNvcih7IHg6IGV2ZW50LmNsaWVudFgsIHk6IGV2ZW50LmNsaWVudFkgfSk7XG4gICAgICAgIHRvZ2dsZSgpO1xuICAgICAgfSxcblxuICAgICAgb25LZXlEb3duOiAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgb25SaWdodFRyaWdnZXIoZXZlbnQsICgpID0+IHtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB0b2dnbGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0pLFxuXG4gICAgLi4uKG9wZW5PbiA9PT0gXCJob3ZlclwiICYmIHtcbiAgICAgIG9uTW91c2VFbnRlcjogb3BlbixcbiAgICAgIG9uTW91c2VMZWF2ZTogc2NoZWR1bGVDbG9zZSxcbiAgICB9KSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2NoaWxkcmVufVxuXG4gICAgICB7aXNPcGVuICYmIChcbiAgICAgICAgLy8gTWFya2VkIGFzIGluc2lkZSBmb3IgdGhlIG91dHNpZGUtY2xpY2sgZGV0ZWN0aW9uIGFib3ZlOiB0aGUgbWVudSBpcyBhIHNpYmxpbmcgb2YgdGhlXG4gICAgICAgIC8vIGVsZW1lbnQgaW4gdGhlIERPTSwgYnV0IHBhcnQgb2YgdGhlIHNhbWUgdGhpbmcgYXMgZmFyIGFzIGEgdXNlciBpcyBjb25jZXJuZWQuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEEgY2xpY2sgbGFuZGluZyBvbiB0aGUgbWVudSBpcyBhIGNsaWNrIG9uIHRoZSBtZW51IGFuZCBub3RoaW5nIGVsc2UsIHNvIGl0IHN0b3BzIGhlcmVcbiAgICAgICAgLy8gcmF0aGVyIHRoYW4gZ29pbmcgb24gdG8gd2hhdGV2ZXIgZW5jbG9zZXMgdGhlIGVsZW1lbnQgdGhlIG1lbnUgd2FzIG9wZW5lZCBmcm9tIFx1MjAxNCBhIHJvd1xuICAgICAgICAvLyBvZiBhIG1lbnUgb2YgaXRzIG93biwgc2F5LCB3aGljaCB3b3VsZCB0YWtlIGl0IGZvciB0aGUgcm93IGJlaW5nIGFjdGl2YXRlZC4gT25seVxuICAgICAgICAvLyBgY2xpY2tgIHN0b3BzOiB0aGUgb3V0c2lkZS1jbGljayBkZXRlY3Rpb24gYWJvdmUgd29ya3Mgb24gYHBvaW50ZXJkb3duYC5cbiAgICAgICAgPHNwYW4gey4uLm91dHNpZGVDbGlja01hcmtpbmdQcm9wc30gc3R5bGU9e2Rpc3BsYXlDb250ZW50c30gb25DbGljaz17c3RvcFByb3BhZ2F0aW9ufT5cbiAgICAgICAgICA8RHJvcERvd25NZW51XG4gICAgICAgICAgICBzcGVjPXtkcm9wRG93bk1lbnV9XG4gICAgICAgICAgICBhbmNob3JQb2ludD17b3Blbk9uID09PSBcInJpZ2h0LWNsaWNrXCIgPyBjdXJzb3IgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICBvbkNsb3NlPXtjbG9zZX1cbiAgICAgICAgICAgIG9uTWVudUhvdmVyQ2hhbmdlPXtcbiAgICAgICAgICAgICAgb3Blbk9uID09PSBcImhvdmVyXCJcbiAgICAgICAgICAgICAgICA/IChtZW51SXNIb3ZlcmVkKSA9PiAobWVudUlzSG92ZXJlZCA/IGNhbmNlbFNjaGVkdWxlZENsb3NlKCkgOiBzY2hlZHVsZUNsb3NlKCkpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuY29uc3QgZGlzcGxheUNvbnRlbnRzID0geyBkaXNwbGF5OiBcImNvbnRlbnRzXCIgfSBhcyBjb25zdDtcblxuY29uc3Qgc3RvcFByb3BhZ2F0aW9uID0gKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuZXhwb3J0IGNvbnN0IGRyb3BEb3duTWVudVBsdWdpbiA9IGdldFBsdWdpbjxEcm9wRG93bk1lbnVQbHVnaW5Qcm9wcywgW3R5cGVvZiBlbmFibGVkUGx1Z2luLCB0eXBlb2YgY3Vyc29yUGx1Z2luXT4oXG4gIChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgJGRyb3BEb3duTWVudSwgJGN1cnNvciwgcm9sZSB9ID0gcHJvcHMgYXMgdHlwZW9mIHByb3BzICYgUmVhY3QuSFRNTFByb3BzPEhUTUxFbGVtZW50PjtcblxuICAgIGlmICgkZHJvcERvd25NZW51ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB7ICRkcm9wRG93bk1lbnU6IHVuZGVmaW5lZCB9O1xuICAgIH1cblxuICAgIGNvbnN0IG9wZW5zT25DbGljayA9ICgkZHJvcERvd25NZW51Lm9wZW5PbiA/PyBcImNsaWNrXCIpID09PSBcImNsaWNrXCI7XG4gICAgLy8gUmVhZCBmcm9tIHdoYXQgdGhlIGVsZW1lbnQgd2FzIGdpdmVuOiB0aGlzIHBsdWdpbiBydW5zIGJlZm9yZSB0aGUgb25lIHRoYXQgdHVybnMgaXQgaW50b1xuICAgIC8vIHRoZSBgZGlzYWJsZWRgIHByb3AuXG4gICAgY29uc3QgY2Fubm90QmVVc2VkID0gaXNEaXNhYmxlZChwcm9wcyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgJGRyb3BEb3duTWVudTogdW5kZWZpbmVkLFxuXG4gICAgICAuLi4oJGRyb3BEb3duTWVudS5vcGVuT24gPT09IFwiaG92ZXJcIiA/IHt9IDogeyB0YWJJbmRleDogcHJvcHMudGFiSW5kZXggPz8gMCB9KSxcblxuICAgICAgLy8gQW4gZWxlbWVudCB0aGF0IGFuc3dlcnMgYSBjbGljayB3aXRoIGEgbWVudSBpcyBhIGJ1dHRvbiwgYW5kIHRoZSBjdXJzb3IgaXMgaG93IGl0IHNheXMgc29cbiAgICAgIC8vIC0tIG9yIHNheXMgdGhhdCBpdCBjYW5ub3QgcmlnaHQgbm93LiBCb3RoIHdvdWxkIG90aGVyd2lzZSBjb21lIGZyb20gYSBjbGljayBoYW5kbGVyIHN1Y2ggYW5cbiAgICAgIC8vIGVsZW1lbnQgaGFzIG5vIHJlYXNvbiB0byBoYXZlLiBPbmx5IGEgY2xpY2s6IHNvbWV0aGluZyByaWdodC1jbGlja2VkIGlzIG5vdCBhIGJ1dHRvbiwgYW5kIGFcbiAgICAgIC8vIHJvdyB0aGF0IHJldmVhbHMgYSBtZW51IG9uIGhvdmVyIGlzIGEgcm93LlxuICAgICAgLi4uKG9wZW5zT25DbGljayAmJiB7XG4gICAgICAgIHJvbGU6IHJvbGUgPz8gXCJidXR0b25cIixcbiAgICAgICAgJGN1cnNvcjogJGN1cnNvciA/PyAoY2Fubm90QmVVc2VkID8gXCJub3QtYWxsb3dlZFwiIDogXCJwb2ludGVyXCIpLFxuICAgICAgfSksXG5cbiAgICAgICR3cmFwcGVyOiB7XG4gICAgICAgIENvbXBvbmVudDogRHJvcERvd25NZW51V3JhcHBlckNvbXBvbmVudCxcbiAgICAgICAgcHJvcHM6IHsgZHJvcERvd25NZW51OiAkZHJvcERvd25NZW51IH0sXG4gICAgICB9LFxuICAgIH07XG4gIH0sXG4pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiwgdHlwZSBDb250cmlidXRlUHJvcHMsIHR5cGUgQ29udHJpYnV0ZVJlZiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgY3NzTmFtZXMgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VJZCwgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2FuY2hvci5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBQb3NpdGlvbjJkIH0gZnJvbSBcIi4uL2NsaWNrYWJsZS9jbGlja2FibGVcIjtcbmltcG9ydCB7IHR5cGUgVFNoaXJ0U2l6ZSwgdFNoaXJ0U2l6ZUluUGl4ZWxzIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHR5cGUgeyBjb2xvclBsdWdpbiB9IGZyb20gXCIuLi9jb2xvci9jb2xvclwiO1xuaW1wb3J0IHR5cGUgeyBiYWNrZ3JvdW5kQ29sb3JQbHVnaW4gfSBmcm9tIFwiLi4vYmFja2dyb3VuZC1jb2xvci9iYWNrZ3JvdW5kLWNvbG9yXCI7XG5pbXBvcnQgdHlwZSB7IGJvcmRlclBsdWdpbiB9IGZyb20gXCIuLi9ib3JkZXIvYm9yZGVyXCI7XG5pbXBvcnQgdHlwZSB7IHBhZGRpbmdQbHVnaW4gfSBmcm9tIFwiLi4vcGFkZGluZy9wYWRkaW5nXCI7XG5pbXBvcnQgdHlwZSB7IG1hcmdpblBsdWdpbiB9IGZyb20gXCIuLi9tYXJnaW4vbWFyZ2luXCI7XG5pbXBvcnQgdHlwZSB7IG92ZXJmbG93UGx1Z2luIH0gZnJvbSBcIi4uL292ZXJmbG93L292ZXJmbG93XCI7XG5cbi8qKlxuICogV2hlcmUgYW4gZWxlbWVudCBzaXRzIHJlbGF0aXZlIHRvIGl0cyBhbmNob3I6IGEgc2lkZSBvZiB0aGUgYW5jaG9yLCBvcHRpb25hbGx5IHJlZmluZWQgd2l0aCBob3dcbiAqIHRoZSBlbGVtZW50IGV4dGVuZHMgYWxvbmcgdGhhdCBzaWRlLiBBIGJhcmUgc2lkZSBjZW50ZXJzIHRoZSBlbGVtZW50IG9uIGl0OyBgc3Bhbi08ZGlyZWN0aW9uPmBcbiAqIGFsaWducyB0aGVpciBlZGdlcyBhbmQgbGV0cyB0aGUgZWxlbWVudCBleHRlbmQgdG93YXJkIHRoYXQgZGlyZWN0aW9uLlxuICpcbiAqIFdoZW4gdGhlIGVsZW1lbnQgd291bGQgbm90IGZpdCB0aGUgdmlld3BvcnQsIGl0IGZhbGxzIGJhY2sgdG8gdGhlIG1pcnJvcmVkIHBvc2l0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgQW5jaG9yUG9zaXRpb24gPVxuICB8IFwidG9wXCJcbiAgfCBcImJvdHRvbVwiXG4gIHwgXCJsZWZ0XCJcbiAgfCBcInJpZ2h0XCJcbiAgfCBcInRvcCBzcGFuLWxlZnRcIlxuICB8IFwidG9wIHNwYW4tcmlnaHRcIlxuICB8IFwiYm90dG9tIHNwYW4tbGVmdFwiXG4gIHwgXCJib3R0b20gc3Bhbi1yaWdodFwiXG4gIHwgXCJsZWZ0IHNwYW4tdG9wXCJcbiAgfCBcImxlZnQgc3Bhbi1ib3R0b21cIlxuICB8IFwicmlnaHQgc3Bhbi10b3BcIlxuICB8IFwicmlnaHQgc3Bhbi1ib3R0b21cIjtcblxuLyoqXG4gKiBFaXRoZXIgYSBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgbmVhcmVzdCBhbmNlc3RvciBgJGFuY2hvcmAsIG9yIHRoZSBzYW1lIHBvc2l0aW9uIHJlbGF0aXZlIHRvIGFcbiAqIHBvaW50IGluIHRoZSB2aWV3cG9ydC5cbiAqL1xuZXhwb3J0IHR5cGUgQW5jaG9yZWRBdCA9XG4gIHwgQW5jaG9yUG9zaXRpb25cbiAgfCB7XG4gICAgICByZWFkb25seSBwb3NpdGlvbjogQW5jaG9yUG9zaXRpb247XG5cbiAgICAgIC8qKiBIb3cgZmFyIGZyb20gdGhlIGFuY2hvciB0aGUgZWxlbWVudCBzaXRzLiBEZWZhdWx0cyB0byBgXCJ4c1wiYC4gKi9cbiAgICAgIHJlYWRvbmx5IGdhcD86IFRTaGlydFNpemU7XG5cbiAgICAgIC8qKiBTaXQgYXQgdGhpcyB2aWV3cG9ydCBwb2ludCBpbnN0ZWFkIG9mIGF0IGFuIGFuY2hvci4gKi9cbiAgICAgIHJlYWRvbmx5IHBvaW50PzogUG9zaXRpb24yZDtcbiAgICB9O1xuXG5jb25zdCBkZWZhdWx0R2FwOiBUU2hpcnRTaXplID0gXCJ4c1wiO1xuXG5leHBvcnQgdHlwZSBBbmNob3JQbHVnaW5Qcm9wcyA9IHtcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG5cbiAgLyoqXG4gICAqIE1ha2VzIHRoZSBlbGVtZW50IGFuIGFuY2hvciBmb3IgdGhlIGVsZW1lbnRzIG9mIGl0cyBzdWJ0cmVlIHRoYXQgZGVjbGFyZSB7QGxpbmsgJGFuY2hvcmVkQXR9LlxuICAgKiBUaGUgbmVhcmVzdCBzdWNoIGFuY2VzdG9yIHdpbnMsIHNvIG5lc3Rpbmcgd29ya3Mgd2l0aG91dCBuYW1pbmcgYW55dGhpbmcuXG4gICAqL1xuICByZWFkb25seSAkYW5jaG9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUG9zaXRpb25zIHRoZSBlbGVtZW50IHJlbGF0aXZlIHRvIGFuIGFuY2hvciwgYWJvdmUgZXZlcnl0aGluZyBlbHNlIG9uIHRoZSBwYWdlIFx1MjAxNCBpdCBlc2NhcGVzXG4gICAqIGNsaXBwaW5nIGFuY2VzdG9ycyBhbmQgc3RhY2tpbmcgY29udGV4dHMsIHNvIGl0IG5lZWRzIG5vIHBvcnRhbC5cbiAgICpcbiAgICogVGhlIGFuY2hvciBpcyB0aGUgbmVhcmVzdCBhbmNlc3RvciBkZWNsYXJpbmcge0BsaW5rICRhbmNob3J9LCBvciB0aGUgZ2l2ZW4gcG9pbnQgd2hlbiBhIHBvaW50XG4gICAqIGlzIHByb3ZpZGVkIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSAkYW5jaG9yZWRBdD86IEFuY2hvcmVkQXQ7XG59O1xuXG5jb25zdCBhbmNob3JOYW1lQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG50eXBlIEFuY2hvcldyYXBwZXJQcm9wcyA9IHtcbiAgcmVhZG9ubHkgaXNBbmNob3I6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGFuY2hvcmVkQXQ6IEFuY2hvcmVkQXQgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVSZWY6IENvbnRyaWJ1dGVSZWY7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVQcm9wczogQ29udHJpYnV0ZVByb3BzO1xuICByZWFkb25seSBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgQW5jaG9yV3JhcHBlckNvbXBvbmVudCA9ICh7XG4gIGlzQW5jaG9yLFxuICBhbmNob3JlZEF0LFxuICBjb250cmlidXRlUmVmLFxuICBjb250cmlidXRlUHJvcHMsXG4gIGNoaWxkcmVuLFxufTogQW5jaG9yV3JhcHBlclByb3BzKSA9PiB7XG4gIGNvbnN0IG93bkFuY2hvck5hbWUgPSB0b0FuY2hvck5hbWUodXNlSWQoKSk7XG4gIGNvbnN0IGluaGVyaXRlZEFuY2hvck5hbWUgPSB1c2VDb250ZXh0KGFuY2hvck5hbWVDb250ZXh0KTtcbiAgY29uc3QgZWxlbWVudFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBwb2ludFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnRyaWJ1dGVSZWYoXG4gICAgdXNlQ2FsbGJhY2soKGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgZWxlbWVudFJlZi5jdXJyZW50ID0gZWxlbWVudDtcbiAgICB9LCBbXSksXG4gICk7XG5cbiAgY29uc3QgcG9zaXRpb24gPSB0eXBlb2YgYW5jaG9yZWRBdCA9PT0gXCJzdHJpbmdcIiA/IGFuY2hvcmVkQXQgOiBhbmNob3JlZEF0Py5wb3NpdGlvbjtcbiAgY29uc3QgcG9pbnQgPSB0eXBlb2YgYW5jaG9yZWRBdCA9PT0gXCJvYmplY3RcIiA/IGFuY2hvcmVkQXQucG9pbnQgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGdhcCA9IHR5cGVvZiBhbmNob3JlZEF0ID09PSBcIm9iamVjdFwiID8gKGFuY2hvcmVkQXQuZ2FwID8/IGRlZmF1bHRHYXApIDogZGVmYXVsdEdhcDtcblxuICBpZiAocG9zaXRpb24gJiYgIXBvaW50ICYmICFpbmhlcml0ZWRBbmNob3JOYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFRyaWVkIHRvIHBvc2l0aW9uIGFuIGVsZW1lbnQgYXQgXCIke3Bvc2l0aW9ufVwiIHdpdGhvdXQgYW4gYW5jaG9yLiBFaXRoZXIgZ2l2ZSBhbiBhbmNlc3RvciB0aGUgJGFuY2hvciBwcm9wLCBvciBhbmNob3IgdG8gYSBwb2ludCBpbnN0ZWFkLmAsXG4gICAgKTtcbiAgfVxuXG4gIC8vIEEgcG9pbnQgYW5jaG9yIGlzIHRoZSBlbGVtZW50J3Mgb3duOyBvdGhlcndpc2UgaXQgcG9zaXRpb25zIGFnYWluc3Qgd2hhdGV2ZXIgYW5jaG9yIGVuY2xvc2VzIGl0LlxuICBjb25zdCBhbmNob3JOYW1lVG9Qb3NpdGlvbkFnYWluc3QgPSBwb2ludCA/IG93bkFuY2hvck5hbWUgOiBpbmhlcml0ZWRBbmNob3JOYW1lO1xuXG4gIGlmIChhbmNob3JlZEF0ICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb250cmlidXRlUHJvcHMoeyBwb3BvdmVyOiBcIm1hbnVhbFwiIH0pO1xuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gZWxlbWVudFJlZi5jdXJyZW50O1xuXG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzQW5jaG9yKSB7XG4gICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGFuY2hvck5hbWVQcm9wZXJ0eSwgb3duQW5jaG9yTmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHBvc2l0aW9uUHJvcGVydHksIHBvc2l0aW9uKTtcbiAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoZ2FwUHJvcGVydHksIGAke3RTaGlydFNpemVJblBpeGVscyhnYXApfXB4YCk7XG5cbiAgICAgIC8vIE9ubHkgdG93YXJkIHRoZSBhbmNob3IsIHNvIHRoZSBlbGVtZW50IHN0aWxsIGxpbmVzIHVwIHdpdGggaXQgb24gdGhlIG90aGVyIGF4aXMuIEFcbiAgICAgIC8vIGZhbGxiYWNrIHRoYXQgbWlycm9ycyB0aGUgcG9zaXRpb24gbWlycm9ycyB0aGlzIG1hcmdpbiB3aXRoIGl0LlxuICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShtYXJnaW5Qcm9wZXJ0eVRvd2FyZHNBbmNob3IocG9zaXRpb24pLCBgJHt0U2hpcnRTaXplSW5QaXhlbHMoZ2FwKX1weGApO1xuXG4gICAgICBpZiAoYW5jaG9yTmFtZVRvUG9zaXRpb25BZ2FpbnN0KSB7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkocG9zaXRpb25BbmNob3JQcm9wZXJ0eSwgYW5jaG9yTmFtZVRvUG9zaXRpb25BZ2FpbnN0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBvaW50KSB7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkocG9pbnRYUHJvcGVydHksIGAke3BvaW50Lnh9cHhgKTtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShwb2ludFlQcm9wZXJ0eSwgYCR7cG9pbnQueX1weGApO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gVGhlIHBvaW50IHJpc2VzIHRvIHRoZSB0b3AgbGF5ZXIgYWxvbmcgd2l0aCB3aGF0IGlzIGFuY2hvcmVkIHRvIGl0LiBBIGBmaXhlZGAgZWxlbWVudCByZXNvbHZlc1xuICAvLyBhZ2FpbnN0IHRoZSBuZWFyZXN0IGFuY2VzdG9yIHRoYXQgdHJhbnNmb3JtcywgZmlsdGVycyBvciBjb250YWlucyBpdHMgc3VidHJlZSwgc28gYSBwb2ludCBsZWZ0XG4gIC8vIGluIHRoZSB0cmVlIGxhbmRzIGF0IHRoZSBjdXJzb3IgcGx1cyB0aGF0IGFuY2VzdG9yJ3Mgb3duIG9mZnNldCBcdTIwMTQgd2hpY2ggaXMgaG93IGEgbWVudSBvcGVuZWRcbiAgLy8gb3ZlciBhIG5hdmlnYXRvciBpdGVtIHVzZWQgdG8gYXBwZWFyIGh1bmRyZWRzIG9mIHBpeGVscyBiZWxvdyB0aGUgY3Vyc29yLlxuICAvL1xuICAvLyBTaG93biBiZWZvcmUgdGhlIGVsZW1lbnQgYW5jaG9yZWQgdG8gaXQ6IGFuIGFuY2hvciBoYXMgdG8gcmVhY2ggdGhlIHRvcCBsYXllciBmaXJzdCwgb3IgdGhlXG4gIC8vIGVsZW1lbnQgcG9zaXRpb25pbmcgYWdhaW5zdCBpdCBmaW5kcyBubyBhbmNob3IgYXQgYWxsIGFuZCBsYW5kcyBpbiB0aGUgdmlld3BvcnQncyBjb3JuZXIuXG4gIC8vXG4gIC8vIE9uY2UsIG9uIG1vdW50OiBhbiBlbGVtZW50IGlzIGFuY2hvcmVkIHRvIGEgcG9pbnQgZm9yIGFzIGxvbmcgYXMgaXQgaXMgbW91bnRlZCwgc2luY2UgdGhlIHBvaW50XG4gIC8vIGlzIHdoZXJlIHRoZSBjdXJzb3Igd2FzIHdoZW4gd2hhdGV2ZXIgb3BlbmVkIGl0IHdhcyBvcGVuZWQuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudCA9IHBvaW50UmVmLmN1cnJlbnQ7XG5cbiAgICBpZiAoIWVsZW1lbnQgfHwgIWlzUG9wb3ZlckNhcGFibGUoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlbGVtZW50LnNob3dQb3BvdmVyKCk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQuaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgZWxlbWVudC5oaWRlUG9wb3ZlcigpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50UmVmLmN1cnJlbnQ7XG5cbiAgICBpZiAoIXBvc2l0aW9uIHx8ICFlbGVtZW50IHx8ICFpc1BvcG92ZXJDYXBhYmxlKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWxlbWVudC5zaG93UG9wb3ZlcigpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmlzQ29ubmVjdGVkKSB7XG4gICAgICAgIGVsZW1lbnQuaGlkZVBvcG92ZXIoKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbcG9zaXRpb25dKTtcblxuICBjb25zdCBjb250ZW50ID0gcG9pbnQgPyAoXG4gICAgPD5cbiAgICAgIHsvKiBBIHplcm8tc2l6ZSBhbmNob3IgYXQgdGhlIHBvaW50LCBzbyBhIGN1cnNvci1hbmNob3JlZCBlbGVtZW50IHBvc2l0aW9ucyBsaWtlIGFueSBvdGhlci4gKi99XG4gICAgICA8ZGl2XG4gICAgICAgIHJlZj17cG9pbnRSZWYgYXMgUmVhY3QuUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50Pn1cbiAgICAgICAgcG9wb3Zlcj1cIm1hbnVhbFwiXG4gICAgICAgIGRhdGEtYW5jaG9yLXBvaW50LXRlc3RcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYW5jaG9yUG9pbnR9XG4gICAgICAgIHN0eWxlPXtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBbYW5jaG9yTmFtZVByb3BlcnR5XTogb3duQW5jaG9yTmFtZSxcbiAgICAgICAgICAgIFtwb2ludFhQcm9wZXJ0eV06IGAke3BvaW50Lnh9cHhgLFxuICAgICAgICAgICAgW3BvaW50WVByb3BlcnR5XTogYCR7cG9pbnQueX1weGAsXG4gICAgICAgICAgfSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gICAgICAgIH1cbiAgICAgIC8+XG5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8Lz5cbiAgKSA6IChcbiAgICBjaGlsZHJlblxuICApO1xuXG4gIGlmIChpc0FuY2hvcikge1xuICAgIHJldHVybiA8YW5jaG9yTmFtZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e293bkFuY2hvck5hbWV9Pntjb250ZW50fTwvYW5jaG9yTmFtZUNvbnRleHQuUHJvdmlkZXI+O1xuICB9XG5cbiAgcmV0dXJuIDw+e2NvbnRlbnR9PC8+O1xufTtcblxuZXhwb3J0IGNvbnN0IGFuY2hvclBsdWdpbiA9IGdldFBsdWdpbjxcbiAgQW5jaG9yUGx1Z2luUHJvcHMsXG4gIFtcbiAgICB0eXBlb2YgY2xhc3NOYW1lUGx1Z2luLFxuICAgIHR5cGVvZiBjb2xvclBsdWdpbixcbiAgICB0eXBlb2YgYmFja2dyb3VuZENvbG9yUGx1Z2luLFxuICAgIHR5cGVvZiBib3JkZXJQbHVnaW4sXG4gICAgdHlwZW9mIHBhZGRpbmdQbHVnaW4sXG4gICAgdHlwZW9mIG1hcmdpblBsdWdpbixcbiAgICB0eXBlb2Ygb3ZlcmZsb3dQbHVnaW4sXG4gIF1cbj4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGFuY2hvciwgJGFuY2hvcmVkQXQsICRjbGFzc05hbWUgfSA9IHByb3BzO1xuXG4gIGlmICghJGFuY2hvciAmJiAkYW5jaG9yZWRBdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgJGFuY2hvcjogdW5kZWZpbmVkLCAkYW5jaG9yZWRBdDogdW5kZWZpbmVkIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRhbmNob3I6IHVuZGVmaW5lZCxcbiAgICAkYW5jaG9yZWRBdDogdW5kZWZpbmVkLFxuXG4gICAgLy8gUmlzaW5nIHRvIHRoZSB0b3AgbGF5ZXIgaXMgYSB0ZWNobmljYWxpdHkgb2YgcG9zaXRpb25pbmcsIGJ1dCB0aGUgYnJvd3NlciBtYWtlcyBpdCBhIGxvb2s6XG4gICAgLy8gY29sb3VycyBvZiBpdHMgb3duLCBhIGJvcmRlciwgcGFkZGluZywgYW5kIGEgbWFyZ2luIHRoYXQgd291bGQgY2VudGVyIHRoZSBlbGVtZW50LiBVbmRvIHRoYXQsXG4gICAgLy8gc28gYW4gZWxlbWVudCBwb3NpdGlvbmVkIHRoaXMgd2F5IGxvb2tzIGxpa2UgaXQgZG9lcyBhbnl3aGVyZSBlbHNlLCBhbmQgbGV0IHdoYXRldmVyIGl0IHNheXNcbiAgICAvLyBhYm91dCBpdHNlbGYgd2luLlxuICAgIC4uLigkYW5jaG9yZWRBdCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICRjb2xvcjogcHJvcHMuJGNvbG9yID8/IFwiaW5oZXJpdFwiLFxuICAgICAgJGJhY2tncm91bmRDb2xvcjogcHJvcHMuJGJhY2tncm91bmRDb2xvciA/PyBcInRyYW5zcGFyZW50XCIsXG4gICAgICAkYm9yZGVyOiB7IHdpZHRoOiBcInplcm9cIiwgLi4ucHJvcHMuJGJvcmRlciB9LFxuICAgICAgJHBhZGRpbmc6IHByb3BzLiRwYWRkaW5nID8/IFwiemVyb1wiLFxuICAgICAgJG1hcmdpbjogcHJvcHMuJG1hcmdpbiA/PyBcInplcm9cIixcbiAgICAgICRvdmVyZmxvdzogcHJvcHMuJG92ZXJmbG93ID8/IFwidmlzaWJsZVwiLFxuICAgIH0pLFxuXG4gICAgJGNsYXNzTmFtZTogY3NzTmFtZXMoJGNsYXNzTmFtZSwge1xuICAgICAgW3N0eWxlcy5hbmNob3JdOiAhISRhbmNob3IsXG4gICAgICBbc3R5bGVzLmFuY2hvcmVkQXRdOiAkYW5jaG9yZWRBdCAhPT0gdW5kZWZpbmVkLFxuICAgIH0pLFxuXG4gICAgJHdyYXBwZXI6IHtcbiAgICAgIENvbXBvbmVudDogQW5jaG9yV3JhcHBlckNvbXBvbmVudCxcbiAgICAgIHByb3BzOiB7IGlzQW5jaG9yOiAhISRhbmNob3IsIGFuY2hvcmVkQXQ6ICRhbmNob3JlZEF0IH0sXG4gICAgfSxcbiAgfTtcbn0pO1xuXG5jb25zdCBtYXJnaW5Qcm9wZXJ0eVRvd2FyZHNBbmNob3IgPSAocG9zaXRpb246IEFuY2hvclBvc2l0aW9uKSA9PiB7XG4gIGlmIChwb3NpdGlvbi5zdGFydHNXaXRoKFwiYm90dG9tXCIpKSB7XG4gICAgcmV0dXJuIFwibWFyZ2luLXRvcFwiO1xuICB9XG5cbiAgaWYgKHBvc2l0aW9uLnN0YXJ0c1dpdGgoXCJ0b3BcIikpIHtcbiAgICByZXR1cm4gXCJtYXJnaW4tYm90dG9tXCI7XG4gIH1cblxuICByZXR1cm4gcG9zaXRpb24uc3RhcnRzV2l0aChcInJpZ2h0XCIpID8gXCJtYXJnaW4tbGVmdFwiIDogXCJtYXJnaW4tcmlnaHRcIjtcbn07XG5cbmNvbnN0IGFuY2hvck5hbWVQcm9wZXJ0eSA9IFwiLS1hbmNob3ItbmFtZVwiO1xuY29uc3QgZ2FwUHJvcGVydHkgPSBcIi0tYW5jaG9yLWdhcFwiO1xuY29uc3QgcG9zaXRpb25BbmNob3JQcm9wZXJ0eSA9IFwiLS1hbmNob3ItdGFyZ2V0XCI7XG5jb25zdCBwb3NpdGlvblByb3BlcnR5ID0gXCItLWFuY2hvci1wb3NpdGlvblwiO1xuY29uc3QgcG9pbnRYUHJvcGVydHkgPSBcIi0tYW5jaG9yLXBvaW50LXhcIjtcbmNvbnN0IHBvaW50WVByb3BlcnR5ID0gXCItLWFuY2hvci1wb2ludC15XCI7XG5cbi8qKiBBbmNob3IgbmFtZXMgYXJlIGRhc2hlZCBpZGVudHMsIHNvIHRoZSBnZW5lcmF0ZWQgaWQgaGFzIHRvIGxvc2UgZXZlcnl0aGluZyBlbHNlLiAqL1xuY29uc3QgdG9BbmNob3JOYW1lID0gKGlkOiBzdHJpbmcpID0+IGAtLWFuY2hvci0ke2lkLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCBcIlwiKX1gO1xuXG50eXBlIFBvcG92ZXJDYXBhYmxlID0gSFRNTEVsZW1lbnQgJiB7IHNob3dQb3BvdmVyOiBWb2lkRnVuY3Rpb247IGhpZGVQb3BvdmVyOiBWb2lkRnVuY3Rpb24gfTtcblxuY29uc3QgaXNQb3BvdmVyQ2FwYWJsZSA9IChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGVsZW1lbnQgaXMgUG9wb3ZlckNhcGFibGUgPT5cbiAgdHlwZW9mIChlbGVtZW50IGFzIFBhcnRpYWw8UG9wb3ZlckNhcGFibGU+KS5zaG93UG9wb3ZlciA9PT0gXCJmdW5jdGlvblwiO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2FuY2hvci9hbmNob3IubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJhbmNob3JcIjogXCJhbmNob3ItbW9kdWxlX19hbmNob3JfX19tLTV1YlwiLFxuICBcImFuY2hvcmVkQXRcIjogXCJhbmNob3ItbW9kdWxlX19hbmNob3JlZEF0X19fVUFyVUtcIixcbiAgXCJhbmNob3JQb2ludFwiOiBcImFuY2hvci1tb2R1bGVfX2FuY2hvclBvaW50X19fc0ExQWNcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBGb2N1c2FibGVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL2ZvY3VzYWJsZVwiO1xuXG5leHBvcnQgdHlwZSAkRm9jdXNhYmxlUHJvcHM8Rm9jdXNlZEl0ZW0+ID0gUmVxdWlyZWQ8Rm9jdXNhYmxlUGx1Z2luUHJvcHM8Rm9jdXNlZEl0ZW0+PltcIiRmb2N1c2FibGVcIl07XG5cbi8qKlxuICogSWRlbnRpZmllcyBhIHNldCBvZiBmb2N1c2FibGVzIGNvbXBldGluZyBmb3Igb25lIGZvY3VzZWQgaXRlbS4gRWxlbWVudHMgam9pbiBpdCBieSBkZWNsYXJpbmdcbiAqIGAkZm9jdXNhYmxlYDsgbm90aGluZyBlbnVtZXJhdGVzIHRoZW0gYXQgdGhlIGNhbGwgc2l0ZS5cbiAqL1xuZXhwb3J0IHR5cGUgRm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbT4gPSB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlzS2V5Ym9hcmROYXZpZ2FibGU6IGZhbHNlO1xuICBmb2N1c2FibGU6IChpdGVtOiBGb2N1c2VkSXRlbSkgPT4gJEZvY3VzYWJsZVByb3BzPEZvY3VzZWRJdGVtPjtcbn07XG5cbi8qKlxuICogQSBmb2N1c2FibGUgY29udGV4dCB3aG9zZSBtZW1iZXJzIGFyZSBhbHNvIG5hdmlnYXRlZCB3aXRoIGFycm93IGtleXMsIGluIHRoZSBvcmRlciB0aGV5IHN0YXRlLlxuICogVGhlIGxvd2VzdCBvcmRlciBudW1iZXIgaXMgZm9jdXNlZCB3aGVuIHRoZSBtZW1iZXJzIGFwcGVhciwgYW5kIGZvY3VzIHJldHVybnMgdG8gdGhlIGVuY2xvc2luZ1xuICogY29udGV4dCB3aGVuIHRoZXkgZ28gYXdheS5cbiAqL1xuZXhwb3J0IHR5cGUgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPiA9IHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgaXNLZXlib2FyZE5hdmlnYWJsZTogdHJ1ZTtcbiAgZm9jdXNhYmxlOiAoaXRlbTogRm9jdXNlZEl0ZW0sIG9yZGVyTnVtYmVyOiBudW1iZXIpID0+ICRGb2N1c2FibGVQcm9wczxGb2N1c2VkSXRlbT47XG59O1xuXG5leHBvcnQgdHlwZSBBbnlGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtID0gYW55PiA9XG4gIHwgRm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbT5cbiAgfCBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+O1xuXG5jb25zdCBjb250ZXh0c0J5SWQgPSBuZXcgTWFwPHN0cmluZywgQW55Rm9jdXNhYmxlQ29udGV4dD4oKTtcblxuLyoqXG4gKiBEZWNsYXJlcyBhIGZvY3VzYWJsZSBjb250ZXh0LiBUaGUgc2FtZSBpZCBhbHdheXMgeWllbGRzIHRoZSBzYW1lIGNvbnRleHQsIHNvIGNhbGxpbmcgdGhpcyBkdXJpbmdcbiAqIHJlbmRlciBpcyBzdGFibGUgXHUyMDE0IHdoaWNoIGlzIHdoYXQgbGV0cyBhIHN1cmZhY2Ugd2l0aCBzZXZlcmFsIGxpdmUgaW5zdGFuY2VzIG5hbWUgb25lIGNvbnRleHQgcGVyXG4gKiBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEZvY3VzYWJsZUNvbnRleHQgPSA8Rm9jdXNlZEl0ZW0sPihpZDogc3RyaW5nKTogRm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbT4gPT5cbiAgZ2V0T3JDcmVhdGVDb250ZXh0KGlkLCAoKSA9PiB7XG4gICAgY29uc3QgY29udGV4dDogRm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbT4gPSB7XG4gICAgICBpZCxcbiAgICAgIGlzS2V5Ym9hcmROYXZpZ2FibGU6IGZhbHNlLFxuICAgICAgZm9jdXNhYmxlOiAoaXRlbSkgPT4gKHsgY29udGV4dCwgaXRlbSB9KSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNvbnRleHQ7XG4gIH0pO1xuXG4vKipcbiAqIERlY2xhcmVzIGEgZm9jdXNhYmxlIGNvbnRleHQgd2hvc2UgbWVtYmVycyBhcmUgbmF2aWdhdGVkIHdpdGggYXJyb3cga2V5cy5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCA9IDxGb2N1c2VkSXRlbSw+KFxuICBpZDogc3RyaW5nLFxuKTogS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPiA9PlxuICBnZXRPckNyZWF0ZUNvbnRleHQoaWQsICgpID0+IHtcbiAgICBjb25zdCBjb250ZXh0OiBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+ID0ge1xuICAgICAgaWQsXG4gICAgICBpc0tleWJvYXJkTmF2aWdhYmxlOiB0cnVlLFxuICAgICAgZm9jdXNhYmxlOiAoaXRlbSwgb3JkZXJOdW1iZXIpID0+ICh7IGNvbnRleHQsIGl0ZW0sIG9yZGVyTnVtYmVyIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gY29udGV4dDtcbiAgfSk7XG5cbmNvbnN0IGdldE9yQ3JlYXRlQ29udGV4dCA9IDxUIGV4dGVuZHMgQW55Rm9jdXNhYmxlQ29udGV4dD4oaWQ6IHN0cmluZywgY3JlYXRlOiAoKSA9PiBUKTogVCA9PiB7XG4gIGNvbnN0IGV4aXN0aW5nID0gY29udGV4dHNCeUlkLmdldChpZCk7XG5cbiAgaWYgKGV4aXN0aW5nKSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nIGFzIFQ7XG4gIH1cblxuICBjb25zdCBjcmVhdGVkID0gY3JlYXRlKCk7XG5cbiAgY29udGV4dHNCeUlkLnNldChpZCwgY3JlYXRlZCk7XG5cbiAgcmV0dXJuIGNyZWF0ZWQ7XG59O1xuIiwgImltcG9ydCB7IHVzZVN5bmNJbmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvdXNlLWluamVjdFwiO1xuaW1wb3J0IHsgZ2V0SG92ZXJhYmxlQ29udGV4dCB9IGZyb20gXCIuLi9ob3ZlcmFibGVcIjtcbmltcG9ydCB7IHR5cGUgTXV0YWJsZVJlZk9iamVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjb250ZXh0SXNCZWluZ0hvdmVyZWRJbmplY3RhYmxlIH0gZnJvbSBcIi4vX3ByaXZhdGUvY29udGV4dC1pcy1iZWluZy1ob3ZlcmVkLmluamVjdGFibGVcIjtcblxuZXhwb3J0IGNvbnN0IHVzZUxvY2FsSG92ZXJhYmxlID0gPEVsZW0gZXh0ZW5kcyBIVE1MRWxlbWVudD4oKSA9PiB7XG4gIGNvbnN0IGhvdmVyYWJsZUNvbnRleHQgPSB1c2VNZW1vKCgpID0+IGdldEhvdmVyYWJsZUNvbnRleHQ8TXV0YWJsZVJlZk9iamVjdDxFbGVtIHwgbnVsbD4+KCksIFtdKTtcbiAgY29uc3QgcmVmID0gdXNlUmVmPEVsZW0+KG51bGwpO1xuICBjb25zdCBpdGVtQmVpbmdIb3ZlcmVkID0gdXNlU3luY0luamVjdChjb250ZXh0SXNCZWluZ0hvdmVyZWRJbmplY3RhYmxlLCBob3ZlcmFibGVDb250ZXh0KTtcblxuICByZXR1cm4ge1xuICAgIHJlZixcbiAgICBjb250ZXh0OiBob3ZlcmFibGVDb250ZXh0LmhvdmVyYWJsZShyZWYpLFxuICAgIGNvbXBvbmVudElzSG92ZXJlZDogaXRlbUJlaW5nSG92ZXJlZCxcbiAgfTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNBQSwrQkFBZ0Q7QUFFaEQsbUJBQStDO0FBd0R0QztBQXBDRixJQUFNLG9CQUFvQixDQUFDLG1CQUFrRDtBQUNsRixRQUFNLCtCQUEyQixxQkFBMEIsTUFBUztBQUNwRSxRQUFNLGlCQUFhLHFCQUFPLGNBQWM7QUFFeEMsOEJBQVUsTUFBTTtBQUNkLGVBQVcsVUFBVTtBQUFBLEVBQ3ZCLENBQUM7QUFFRCw4QkFBVSxNQUFNO0FBQ2QsVUFBTSw0QkFBNEIsQ0FBQyxVQUF3QjtBQUN6RCxVQUFJLFVBQVUseUJBQXlCLFNBQVM7QUFDOUMsbUJBQVcsUUFBUSxLQUFLO0FBQUEsTUFDMUI7QUFBQSxJQUNGO0FBRUEsYUFBUyxpQkFBaUIsZUFBZSx5QkFBeUI7QUFFbEUsV0FBTyxNQUFNLFNBQVMsb0JBQW9CLGVBQWUseUJBQXlCO0FBQUEsRUFDcEYsR0FBRyxDQUFDLENBQUM7QUFFTCxRQUFNLDJCQUF1QiwwQkFBWSxDQUFDLFVBQThCO0FBQ3RFLDZCQUF5QixVQUFVLE1BQU07QUFBQSxFQUMzQyxHQUFHLENBQUMsQ0FBQztBQUVMLFNBQU8sRUFBRSxxQkFBcUI7QUFDaEM7QUFRQSxJQUFNLGlDQUFpQyxDQUFDLEVBQUUsZ0JBQWdCLGlCQUFpQixTQUFTLE1BQWtDO0FBQ3BILGtCQUFnQixrQkFBa0IsY0FBYyxDQUFDO0FBRWpELFNBQU8sMkVBQUcsVUFBUztBQUNyQjtBQUVPLElBQU0sMkJBQXVCLG9DQUFxQyxDQUFDLFVBQVU7QUFDbEYsUUFBTSxFQUFFLGdCQUFnQixJQUFJO0FBRTVCLE1BQUksb0JBQW9CLFFBQVc7QUFDakMsV0FBTyxFQUFFLGlCQUFpQixPQUFVO0FBQUEsRUFDdEM7QUFFQSxTQUFPO0FBQUEsSUFDTCxpQkFBaUI7QUFBQSxJQUNqQixVQUFVO0FBQUEsTUFDUixXQUFXO0FBQUEsTUFDWCxPQUFPLEVBQUUsZ0JBQWdCLGdCQUFnQjtBQUFBLElBQzNDO0FBQUEsRUFDRjtBQUNGLENBQUM7OztBQzNFRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUEscUJBQW1EOzs7QUNBbkQ7QUFBQTtBQUFBO0FBQUE7QUFBQSx3QkFBK0I7QUFTeEIsSUFBTSwyQ0FBdUMsa0NBQWU7QUFBQSxFQUNqRSxJQUFJO0FBQUEsRUFFSixhQUFhLE1BQU0sQ0FBQyxVQUE4QyxVQUNoRSxvQkFBSSxJQUErQztBQUN2RCxDQUFDOzs7QURYRCw4QkFBOEI7QUFLdkIsSUFBTSwrQkFBMkIsdUNBQXdEO0FBQUEsRUFDOUYsSUFBSTtBQUFBLEVBQ0osYUFBYTtBQUNmLENBQUMsRUFBRTtBQUVJLElBQU0sMkJBQXVCLG1DQUFlO0FBQUEsRUFDakQsSUFBSTtBQUFBLEVBRUosYUFBYSxDQUFDLE9BQU87QUFDbkIsVUFBTSxZQUFZLEdBQUcsT0FBTyxvQ0FBb0M7QUFFaEUsV0FBTyxNQUNKLENBQUkscUJBQ0gsQ0FBQyxrQkFBcUI7QUFDcEIsWUFBTSxDQUFDLGdDQUFnQyxJQUFJLFVBQVUsa0JBQWtCLGFBQWE7QUFFcEYsVUFBSSxrQ0FBa0M7QUFDcEMsbURBQWMsaUNBQWlDLE9BQU87QUFFdEQseUNBQWlDLFFBQVEsTUFBTTtBQUFBLE1BQ2pEO0FBQUEsSUFDRjtBQUFBLEVBQ047QUFBQSxFQUVBLGdCQUFnQjtBQUNsQixDQUFDOzs7QUVqQ0Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMscUJBQW1EO0FBRW5ELElBQUFDLGVBQXlCOzs7QUNGekI7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxxQkFBK0I7QUFDL0Isa0JBQTJCO0FBR3BCLElBQU0sbUNBQStCLG1DQUFlO0FBQUEsRUFDekQsSUFBSTtBQUFBLEVBRUosYUFBYSxNQUFNLENBQUMsYUFBdUMsdUJBQVcsSUFBYTtBQUNyRixDQUFDOzs7QURBTSxJQUFNLHFDQUFpQyx1Q0FBOEQ7QUFBQSxFQUMxRyxJQUFJO0FBQUEsRUFDSixhQUFhO0FBQ2YsQ0FBQyxFQUFFO0FBRUksSUFBTSx3Q0FBb0MsbUNBQWU7QUFBQSxFQUM5RCxJQUFJO0FBQUEsRUFFSixhQUFhLENBQUMsT0FBTztBQUNuQixVQUFNLHdCQUF3QixHQUFHLE9BQU8sNEJBQTRCO0FBRXBFLFdBQU8sQ0FBQyxnQkFBc0MsdUJBQVMsTUFBTSxzQkFBc0IsT0FBTyxFQUFFLElBQUksQ0FBQztBQUFBLEVBQ25HO0FBQ0YsQ0FBQztBQUVNLElBQU0saUNBQTZCLG1DQUFlO0FBQUEsRUFDdkQsSUFBSTtBQUFBLEVBRUosYUFBYSxDQUFDLE9BQU87QUFDbkIsVUFBTSw2QkFBNkIsR0FBRyxPQUFPLGlDQUFpQztBQUU5RSxXQUFPLE1BQ0osQ0FBSSxZQUNILDJCQUEyQixPQUFPO0FBQUEsRUFDeEM7QUFBQSxFQUVBLGdCQUFnQjtBQUNsQixDQUFDOzs7QUVsQ0QsSUFBQUMsNEJBQTBCOzs7QUNEaUMsSUFBTyx5QkFBUTtBQUFBLEVBQ3hFLFlBQVk7QUFDZDs7O0FEY08sSUFBTSxvQkFBZ0IscUNBQXdELENBQUMsVUFBVTtBQUM5RixRQUFNLFdBQVcsV0FBVyxLQUFLO0FBRWpDLFNBQU87QUFBQSxJQUNMLFlBQVksQ0FBQyxNQUFNLFlBQVksV0FBVyx1QkFBYyxXQUFXLE1BQVM7QUFBQSxJQUM1RTtBQUFBLElBQ0EsVUFBVTtBQUFBLElBQ1YsV0FBVztBQUFBLEVBQ2I7QUFDRixDQUFDO0FBRU0sSUFBTSxhQUFhLENBQUMsVUFBOEI7QUFDdkQsUUFBTSxFQUFFLFVBQVUsVUFBVSxJQUFJO0FBRWhDLFNBQU8sT0FBTyxhQUFhLFlBQVksQ0FBQyxXQUFZLGFBQWE7QUFDbkU7OztBRS9CQSxJQUFBQyw0QkFBMEI7QUFDMUIsSUFBQUMsZ0JBQWtEO0FBQ2xELHdCQUE4Qjs7O0FDRjlCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxxQkFBK0I7QUFDL0IsSUFBQUMsZUFBa0Q7QUFjM0MsSUFBTSxpQ0FBNkIsbUNBQWU7QUFBQSxFQUN2RCxJQUFJO0FBQUEsRUFFSixhQUFhLE1BQU0sQ0FBQyxhQUFxQix3QkFBVyxJQUE4QixDQUFDLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RyxDQUFDO0FBRU0sSUFBTSxrQ0FBOEIsbUNBQWU7QUFBQSxFQUN4RCxJQUFJO0FBQUEsRUFFSixhQUFhLENBQUMsT0FBTztBQUNuQixVQUFNLHNCQUFzQixHQUFHLE9BQU8sMEJBQTBCO0FBRWhFLFdBQU8sTUFBTSxDQUFDLFlBQW9CLG9CQUFvQixPQUFPO0FBQUEsRUFDL0Q7QUFDRixDQUFDOzs7QUR6QkQsSUFBQUMsZUFBbUM7QUFDbkMsSUFBQUMsMkJBQW1EO0FBVTVDLFNBQVMsNEJBQStCO0FBQzdDLGFBQU8scUNBQTZFLENBQUMsVUFBVTtBQUM3RixVQUFNLEVBQUUsc0JBQXNCLEtBQUssSUFBSTtBQUV2QyxRQUFJLHlCQUF5QixRQUFXO0FBQ3RDLGFBQU87QUFBQSxRQUNMLHNCQUFzQjtBQUFBLE1BQ3hCO0FBQUEsSUFDRjtBQUVBLFVBQU0sU0FBSyxxQkFBTTtBQUNqQixVQUFNLHdCQUFvQixpQ0FBYywyQkFBMkI7QUFDbkUsVUFBTSx3QkFBb0Isc0JBQU8sd0JBQVcsSUFBSSxhQUFhLG9CQUFvQixHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUMsQ0FBQztBQUNwRyxVQUFNLGlCQUFhLHNCQUFPLElBQUksZ0JBQWdCLENBQUM7QUFFL0M7QUFBQSxVQUNFLHFCQUFPLE1BQU07QUFDWCwwQkFBa0IsUUFBUSxRQUFRLGFBQWEsb0JBQW9CLENBQUM7QUFBQSxNQUN0RSxDQUFDO0FBQUEsSUFDSDtBQUVBLFVBQU0sa0JBQWM7QUFBQSxNQUNsQixVQUNFLHFCQUFPLENBQUMsWUFBZ0M7QUFDdEMsWUFBSSxDQUFDLFNBQVM7QUFDWixxQkFBVyxRQUFRLE1BQU07QUFDekIscUJBQVcsVUFBVSxJQUFJLGdCQUFnQjtBQUN6QztBQUFBLFFBQ0Y7QUFFQSxnQkFBUTtBQUFBLFVBQ047QUFBQSxjQUNBLHFCQUFPLENBQUMsVUFBVTtBQUNoQixrQkFBTSxFQUFFLGVBQWUsY0FBYyxJQUFJO0FBQ3pDLGtCQUFNLFlBQVksS0FBSyxJQUFJO0FBRTNCLGdCQUFJLENBQUUsY0FBOEIsU0FBUyxhQUE0QixHQUFHO0FBQzFFLHlCQUFXLFdBQVcsa0JBQWtCLFFBQVEsS0FBSyxHQUFHO0FBQ3RELGtDQUFrQixPQUFPLEVBQUUsSUFBSSxJQUFJO0FBQUEsa0JBQ2pDLFdBQVcsd0JBQVcsSUFBSSxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFBQSxrQkFDcEQsVUFBVSxNQUFNLGtCQUFrQixRQUFRLElBQUksT0FBTztBQUFBLGdCQUN2RCxDQUFDO0FBQUEsY0FDSDtBQUFBLFlBQ0Y7QUFBQSxVQUNGLENBQUM7QUFBQSxVQUNEO0FBQUEsWUFDRSxRQUFRLFdBQVcsUUFBUTtBQUFBLFVBQzdCO0FBQUEsUUFDRjtBQUNBLGdCQUFRO0FBQUEsVUFDTjtBQUFBLGNBQ0EscUJBQU8sQ0FBQyxVQUFVO0FBQ2hCLGtCQUFNLEVBQUUsZUFBZSxjQUFjLElBQUk7QUFDekMsa0JBQU0sWUFBWSxLQUFLLElBQUk7QUFFM0IsZ0JBQUksQ0FBRSxjQUE4QixTQUFTLGFBQTRCLEdBQUc7QUFDMUUseUJBQVcsV0FBVyxrQkFBa0IsUUFBUSxLQUFLLEdBQUc7QUFDdEQsc0JBQU0sZUFBZSxrQkFBa0IsT0FBTztBQUU5Qyw2QkFBYSxPQUFPLEVBQUU7QUFDdEIsNkJBQWEsUUFBUSxDQUFDLFVBQVUsTUFBTSxVQUFVLElBQUksU0FBUyxDQUFDO0FBQUEsY0FDaEU7QUFBQSxZQUNGO0FBQUEsVUFDRixDQUFDO0FBQUEsVUFDRDtBQUFBLFlBQ0UsUUFBUSxXQUFXLFFBQVE7QUFBQSxVQUM3QjtBQUFBLFFBQ0Y7QUFBQSxNQUNGLENBQUM7QUFBQSxNQUNILENBQUMsbUJBQW1CLEVBQUU7QUFBQSxJQUN4QjtBQUVBLFdBQU87QUFBQSxNQUNMLE1BQU0sQ0FBQyxNQUFNLFdBQVc7QUFBQSxNQUN4QixzQkFBc0I7QUFBQSxJQUN4QjtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBRUEsSUFBTSxlQUFlLENBQUMsVUFBd0U7QUFDNUYsUUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLGtDQUFTO0FBQzdDLFFBQU0sVUFBdUMsQ0FBQztBQUU5QyxhQUFXLEVBQUUsU0FBUyxLQUFLLEtBQUssT0FBTztBQUNyQyxZQUFRLEtBQUssQ0FBQyxTQUFTLEVBQUUsTUFBTSxPQUFPLEdBQUcsU0FBUywrQkFBTSxXQUFXLDhCQUFLLENBQUMsQ0FBQztBQUFBLEVBQzVFO0FBRUEsU0FBTztBQUNUOzs7QUV2R0EsSUFBQUMsNEJBQWdEO0FBR2hELElBQUFDLGdCQUFzRDtBQUN0RCxJQUFBQyxxQkFBOEI7QUFFOUIsSUFBQUMsZUFBc0Q7QUFDdEQsZ0JBQXFCOzs7QUNQckI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMscUJBQW1EO0FBRW5ELElBQUFDLGVBQXlCOzs7QUNGekI7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxxQkFBK0I7QUFDL0IsSUFBQUMsZUFBd0Y7QUFZakYsSUFBTSw0QkFBd0IsbUNBQWU7QUFBQSxFQUNsRCxJQUFJO0FBQUEsRUFFSixhQUFhLE1BQU0sQ0FBQyxlQUF1QjtBQUN6QyxVQUFNLE1BQU0sd0JBQVcsSUFBSSxLQUFLLElBQUksQ0FBQztBQUVyQyxRQUFJO0FBRUosdUNBQWlCLEtBQUssTUFBTTtBQUMxQixvQ0FBWSxNQUFNLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0FBRXJDLGVBQVMsWUFBWSxVQUFNLDBCQUFZLE1BQU0sSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxVQUFVO0FBQUEsSUFDL0UsQ0FBQztBQUVELHlDQUFtQixLQUFLLE1BQU07QUFDNUIsVUFBSSxXQUFXLFFBQVc7QUFDeEIsc0JBQWMsTUFBTTtBQUFBLE1BQ3RCO0FBRUEsZUFBUztBQUFBLElBQ1gsQ0FBQztBQUVELGVBQU8sdUJBQVMsTUFBTSxJQUFJLElBQUksQ0FBQztBQUFBLEVBQ2pDO0FBQ0YsQ0FBQzs7O0FENUJNLElBQU0scUNBQWlDLHVDQUE4RDtBQUFBLEVBQzFHLElBQUk7QUFBQSxFQUNKLGFBQWE7QUFDZixDQUFDLEVBQUU7QUFFSSxJQUFNLHdDQUFvQyxtQ0FBZTtBQUFBLEVBQzlELElBQUk7QUFBQSxFQUVKLGFBQWEsQ0FBQyxPQUFPO0FBQ25CLFVBQU0sc0JBQXNCLEdBQUcsT0FBTywwQkFBMEI7QUFDaEUsVUFBTSxpQkFBaUIsR0FBRyxPQUFPLHFCQUFxQjtBQUV0RCxXQUFPLENBQUMsWUFBb0I7QUFDMUIsWUFBTSxtQkFBbUIsb0JBQW9CLE9BQU87QUFDcEQsWUFBTSxjQUFjLGVBQWUsQ0FBQztBQUVwQyxpQkFBTyx1QkFBUyxNQUFNO0FBQ3BCLGNBQU0sVUFBVSxDQUFDLEdBQUcsaUJBQWlCLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRTtBQUNwRCxjQUFNLFFBQVEsbUNBQVM7QUFFdkIsWUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPO0FBQ3RCLGlCQUFPO0FBQUEsUUFDVDtBQUVBLGNBQU0sd0JBQXdCLFFBQVEsVUFBVSxJQUFJLElBQUksTUFBTTtBQUM5RCxjQUFNLE1BQU0sWUFBWSxJQUFJO0FBRTVCLGVBQU8sT0FBTyx3QkFBd0IsTUFBTSxPQUFPO0FBQUEsTUFDckQsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGO0FBQ0YsQ0FBQztBQUVNLElBQU0saUNBQTZCLG1DQUFlO0FBQUEsRUFDdkQsSUFBSTtBQUFBLEVBRUosYUFBYSxDQUFDLE9BQU87QUFDbkIsVUFBTSw2QkFBNkIsR0FBRyxPQUFPLGlDQUFpQztBQUU5RSxXQUFPLE1BQ0osQ0FBSSxZQUNILDJCQUEyQixPQUFPO0FBQUEsRUFDeEM7QUFBQSxFQUVBLGdCQUFnQjtBQUNsQixDQUFDOzs7QUQ3Q0QsSUFBQUMsMkJBQTZDO0FBNElwQyxJQUFBQyxzQkFBQTtBQWpIRixJQUFNLHNCQUFzQixNQUFtRDtBQUNwRixRQUFNLFVBQVU7QUFBQSxJQUNkLFdBQVcsQ0FBQyxNQUFtQixFQUFFLFFBQVEsR0FBRyxVQUFVLGdCQUFNLFlBQVksZUFBSyxJQUE2QixDQUFDLE9BQU87QUFBQSxNQUNoSDtBQUFBLE1BQ0E7QUFBQSxNQUNBLFNBQVM7QUFBQSxRQUNQO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFFQSxTQUFPO0FBQ1Q7QUFZQSxJQUFNLDRCQUE0QixDQUFDO0FBQUEsRUFDakM7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0YsTUFBNkI7QUFDM0IsUUFBTSx3QkFBb0Isa0NBQWMsMkJBQTJCO0FBQ25FLFFBQU0sdUJBQW1CLGtDQUFjLDhCQUE4QjtBQUNyRSxRQUFNLFNBQUsscUJBQU07QUFFakIsUUFBTSx3QkFBb0I7QUFBQSxJQUN4Qix3QkFBVyxJQUFJQyxjQUFhLFNBQVMsR0FBRyxFQUFFLE1BQU0sT0FBTyxRQUFRLHNCQUFTLFdBQVcsQ0FBQztBQUFBLEVBQ3RGO0FBRUE7QUFBQSxRQUNFLHFCQUFPLE1BQU07QUFDWCx3QkFBa0IsUUFBUSxRQUFRQSxjQUFhLFNBQVMsQ0FBQztBQUFBLElBQzNELENBQUM7QUFBQSxFQUNIO0FBRUEsK0JBQVUsTUFBTTtBQUNkLFVBQU0sZ0JBQWdCLG9CQUFJLElBQXFCO0FBRS9DLGVBQU8sc0JBQVEsTUFBTTtBQUNuQixpQkFBVyxDQUFDLFNBQVMsRUFBRSxNQUFNLFNBQVMsVUFBVSxDQUFDLEtBQUssa0JBQWtCLFNBQVM7QUFDL0UsY0FBTSxjQUFjLGlCQUFpQixPQUFvQyxFQUFFLElBQUk7QUFDL0UsY0FBTSxlQUFlLGNBQWMsSUFBSSxPQUFPO0FBRTlDLFlBQUksZ0JBQWdCLE1BQU07QUFDeEIsa0JBQVE7QUFBQSxRQUNWLFdBQVcsaUJBQWlCLE1BQU07QUFDaEMsb0JBQVU7QUFBQSxRQUNaO0FBRUEsc0JBQWMsSUFBSSxTQUFTLFdBQVc7QUFBQSxNQUN4QztBQUFBLElBQ0YsQ0FBQztBQUFBLEVBQ0gsR0FBRyxDQUFDLGdCQUFnQixDQUFDO0FBRXJCO0FBQUEsSUFDRSxVQUNFLHFCQUFPLE1BQU07QUFDWCxpQkFBVyxXQUFXLGtCQUFrQixRQUFRLEtBQUssR0FBRztBQUN0RCwwQkFBa0IsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUFBLE1BQ3RDO0FBQUEsSUFDRixDQUFDO0FBQUEsSUFDSCxDQUFDLG1CQUFtQixFQUFFO0FBQUEsRUFDeEI7QUFFQSxRQUFNLHVCQUFtQjtBQUFBLFFBQ3ZCLHFCQUFPLENBQUMsVUFBeUM7QUFDL0MsbURBQWU7QUFFZixZQUFNLFlBQVksS0FBSyxJQUFJO0FBRTNCLGlCQUFXLFdBQVcsa0JBQWtCLFFBQVEsS0FBSyxHQUFHO0FBQ3RELDBCQUFrQixPQUFPLEVBQUUsSUFBSSxJQUFJO0FBQUEsVUFDakMsV0FBVyx3QkFBVyxJQUFJLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUFBLFVBQ3BELFVBQVUsTUFBTSxrQkFBa0IsUUFBUSxJQUFJLE9BQU87QUFBQSxRQUN2RCxDQUFDO0FBQUEsTUFDSDtBQUFBLElBQ0YsQ0FBQztBQUFBLElBQ0QsQ0FBQztBQUFBLEVBQ0g7QUFFQSxRQUFNLHVCQUFtQjtBQUFBLFFBQ3ZCLHFCQUFPLENBQUMsVUFBeUM7QUFDL0MsbURBQWU7QUFFZixZQUFNLFlBQVksS0FBSyxJQUFJO0FBRTNCLGlCQUFXLFdBQVcsa0JBQWtCLFFBQVEsS0FBSyxHQUFHO0FBQ3RELGNBQU0sZUFBZSxrQkFBa0IsT0FBTztBQUU5QyxxQkFBYSxPQUFPLEVBQUU7QUFDdEIscUJBQWEsUUFBUSxDQUFDLFVBQVUsTUFBTSxVQUFVLElBQUksU0FBUyxDQUFDO0FBQUEsTUFDaEU7QUFBQSxJQUNGLENBQUM7QUFBQSxJQUNELENBQUM7QUFBQSxFQUNIO0FBRUEsa0JBQWdCO0FBQUEsSUFDZCxjQUFjO0FBQUEsSUFDZCxjQUFjO0FBQUEsRUFDaEIsQ0FBQztBQUVELFNBQU8sNkVBQUcsVUFBUztBQUNyQjtBQUVPLFNBQVMsa0JBQWdEO0FBQzlELGFBQU8scUNBQTBDLENBQUMsVUFBVTtBQUMxRCxVQUFNLEVBQUUsWUFBWSxjQUFjLGFBQWEsSUFBSTtBQUVuRCxRQUFJLGVBQWUsVUFBYyxNQUFNLFFBQVEsVUFBVSxLQUFLLFdBQVcsV0FBVyxHQUFJO0FBQ3RGLGFBQU87QUFBQSxRQUNMLFlBQVk7QUFBQSxNQUNkO0FBQUEsSUFDRjtBQUVBLFdBQU87QUFBQSxNQUNMLFlBQVk7QUFBQSxNQUNaLFVBQVU7QUFBQSxRQUNSLFdBQVc7QUFBQSxRQUNYLE9BQU87QUFBQSxVQUNMLFdBQVc7QUFBQSxVQUNYO0FBQUEsVUFDQTtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBRUEsSUFBTUEsZ0JBQWUsQ0FBQyxVQUE4RDtBQUNsRixRQUFNLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sa0NBQVM7QUFDN0MsUUFBTSxVQUF1QyxDQUFDO0FBRTlDLGFBQVcsRUFBRSxTQUFTLE1BQU0sUUFBUSxLQUFLLE9BQU87QUFDOUMsWUFBUSxLQUFLLENBQUMsU0FBUyxFQUFFLE1BQU0sR0FBRyxRQUFRLENBQUMsQ0FBQztBQUFBLEVBQzlDO0FBRUEsU0FBTztBQUNUOzs7QUd6TEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMscUJBQW1EO0FBRW5ELElBQUFDLGVBQXlCOzs7QUNGekI7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxxQkFBK0I7QUFDL0IsSUFBQUMsZUFBMkI7QUFLcEIsSUFBTSxpQ0FBNkIsbUNBQWU7QUFBQSxFQUN2RCxJQUFJO0FBQUEsRUFFSixhQUFhLE1BQU0sQ0FBQyxhQUFvQyx3QkFBVyxJQUFJLFFBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRyxDQUFDOzs7QURGTSxJQUFNLHFDQUFpQyx1Q0FBOEQ7QUFBQSxFQUMxRyxJQUFJO0FBQUEsRUFDSixhQUFhO0FBQ2YsQ0FBQyxFQUFFO0FBRUksSUFBTSx3Q0FBb0MsbUNBQWU7QUFBQSxFQUM5RCxJQUFJO0FBQUEsRUFFSixhQUFhLENBQUMsT0FBTztBQUNuQixVQUFNLHNCQUFzQixHQUFHLE9BQU8sMEJBQTBCO0FBRWhFLFdBQU8sQ0FBQyxnQkFBbUMsdUJBQVMsTUFBTSxvQkFBb0IsT0FBTyxFQUFFLElBQUksQ0FBQztBQUFBLEVBQzlGO0FBQ0YsQ0FBQztBQUVNLElBQU0saUNBQTZCLG1DQUFlO0FBQUEsRUFDdkQsSUFBSTtBQUFBLEVBRUosYUFBYSxDQUFDLE9BQU87QUFDbkIsVUFBTSw2QkFBNkIsR0FBRyxPQUFPLGlDQUFpQztBQUU5RSxXQUFPLE1BQ0osQ0FBSSxZQUNILDJCQUEyQixPQUFPO0FBQUEsRUFDeEM7QUFBQSxFQUVBLGdCQUFnQjtBQUNsQixDQUFDOzs7QUVuQ0QsSUFBQUMsNkJBQW9FO0FBS3BFLElBQUFDLHFCQUE4QjtBQUU5QixJQUFBQyxnQkFBbUQ7OztBQ1BuRDtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLHNCQUErQjtBQUV4QixJQUFNLDZCQUF5QixvQ0FBZTtBQUFBLEVBQ25ELElBQUk7QUFBQSxFQUNKLGFBQWEsTUFBTSxNQUEwQjtBQUMvQyxDQUFDOzs7QUNMMEQsSUFBTyx5QkFBUTtBQUFBLEVBQ3hFLFdBQVc7QUFDYjs7O0FGU0EsdUJBQTZEO0FBQzdELElBQUFDLG9CQUE2QjtBQUU3QixJQUFBQywyQkFBa0Q7OztBR2RsRCxJQUFBQyw2QkFBb0M7QUFDcEMsd0JBQXlCOzs7QUNBekIsSUFBQUMsNEJBQTBCOzs7QUNEbUMsSUFBTywwQkFBUTtBQUFBLEVBQzFFLFlBQVk7QUFBQSxFQUNaLDJEQUEyRDtBQUFBLEVBQzNELHVEQUF1RDtBQUFBLEVBQ3ZELDZEQUE2RDtBQUFBLEVBQzdELGdEQUFnRDtBQUFBLEVBQ2hELHdEQUF3RDtBQUMxRDs7O0FES08sSUFBTSxxQkFBaUIscUNBQXlELENBQUMsV0FBVztBQUFBLEVBQ2pHLFlBQVk7QUFBQSxJQUNWLE1BQU07QUFBQSxJQUNOO0FBQUEsTUFDRSxDQUFDLHdCQUFlLFFBQVEsR0FBRyxDQUFDLENBQUMsTUFBTTtBQUFBLE1BRW5DLENBQUMsd0JBQWUsYUFBYSxNQUFNLFNBQVMsRUFBRSxDQUFDLEdBQUcsT0FBTyxNQUFNLGNBQWM7QUFBQSxJQUMvRTtBQUFBLEVBQ0Y7QUFBQSxFQUVBLFdBQVc7QUFDYixFQUFFOzs7QUV0QkYsSUFBQUMsNEJBQTBCOzs7QUNEaUMsSUFBTyx5QkFBUTtBQUFBLEVBQ3hFLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLG9CQUFvQjtBQUFBLEVBQ3BCLG1CQUFtQjtBQUFBLEVBQ25CLG1CQUFtQjtBQUFBLEVBQ25CLG1CQUFtQjtBQUFBLEVBQ25CLG9CQUFvQjtBQUFBLEVBQ3BCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHdCQUF3QjtBQUFBLEVBQ3hCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHlCQUF5QjtBQUFBLEVBQ3pCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHVCQUF1QjtBQUFBLEVBQ3ZCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtB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Qiw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQywwQkFBMEI7QUFBQSxFQUMxQix5QkFBeUI7QUFBQSxFQUN6Qix3QkFBd0I7QUFBQSxFQUN4Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qiw2QkFBNkI7QUFBQSxFQUM3QiwyQkFBMkI7QUFBQSxFQUMzQixpQ0FBaUM7QUFBQSxFQUNqQyw2QkFBNkI7QUFBQSxFQUM3Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1QixtQ0FBbUM7QUFBQSxFQUNuQyw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw0QkFBNEI7QUFBQSxFQUM1Qiw2QkFBNkI7QUFBQSxFQUM3Qiw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyxrQ0FBa0M7QUFBQSxFQUNsQywwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiw0QkFBNEI7QUFBQSxFQUM1QiwyQkFBMkI7QUFBQSxFQUMzQiwwQkFBMEI7QUFBQSxFQUMxQix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6QiwwQkFBMEI7QUFBQSxFQUMxQiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixtQ0FBbUM7QUFBQSxFQUNuQywrQkFBK0I7QUFBQSxFQUMvQiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5QixxQ0FBcUM7QUFBQSxFQUNyQywrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQyxtQ0FBbUM7QUFBQSxFQUNuQyxvQ0FBb0M7QUFBQSxFQUNwQyw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw2QkFBNkI7QUFBQSxFQUM3Qiw0QkFBNEI7QUFBQSxFQUM1QiwyQkFBMkI7QUFBQSxFQUMzQiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiwyQkFBMkI7QUFBQSxFQUMzQiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QixvQ0FBb0M7QUFBQSxFQUNwQyxnQ0FBZ0M7QUFBQSxFQUNoQywrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQixzQ0FBc0M7QUFBQSxFQUN0QyxnQ0FBZ0M7QUFBQSxFQUNoQyxnQ0FBZ0M7QUFBQSxFQUNoQywrQkFBK0I7QUFBQSxFQUMvQixnQ0FBZ0M7QUFBQSxFQUNoQyxpQ0FBaUM7QUFBQSxFQUNqQyxvQ0FBb0M7QUFBQSxFQUNwQyxvQ0FBb0M7QUFBQSxFQUNwQyxxQ0FBcUM7QUFBQSxFQUNyQyw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3QiwyQkFBMkI7QUFBQSxFQUMzQiwwQkFBMEI7QUFBQSxFQUMxQix5QkFBeUI7QUFBQSxFQUN6Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix5QkFBeUI7QUFBQSxFQUN6QiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiw4QkFBOEI7QUFBQSxFQUM5Qiw0QkFBNEI7QUFBQSxFQUM1QixrQ0FBa0M7QUFBQSxFQUNsQyw4QkFBOEI7QUFBQSxFQUM5Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3QixvQ0FBb0M7QUFBQSxFQUNwQyw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw2QkFBNkI7QUFBQSxFQUM3Qiw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQixrQ0FBa0M7QUFBQSxFQUNsQyxrQ0FBa0M7QUFBQSxFQUNsQyxtQ0FBbUM7QUFBQSxFQUNuQywyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiw4QkFBOEI7QUFBQSxFQUM5QiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiw0QkFBNEI7QUFBQSxFQUM1QiwyQkFBMkI7QUFBQSxFQUMzQiw0QkFBNEI7QUFBQSxFQUM1Qiw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQyw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw4QkFBOEI7QUFBQSxFQUM5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LDZCQUE2QjtBQUFBLEVBQzdCLDRCQUE0QjtBQUFBLEVBQzVCLCtCQUErQjtBQUFBLEVBQy9CLDZCQUE2QjtBQUFBLEVBQzdCLG1CQUFtQjtBQUFBLEVBQ25CLDJCQUEyQjtBQUFBLEVBQzNCLHdCQUF3QjtBQUFBLEVBQ3hCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGlCQUFpQjtBQUFBLEVBQ2pCLHlCQUF5QjtBQUFBLEVBQ3pCLHNCQUFzQjtBQUFBLEVBQ3RCLGdCQUFnQjtBQUFBLEVBQ2hCLHdCQUF3QjtBQUFBLEVBQ3hCLHFCQUFxQjtBQUFBLEVBQ3JCLGdCQUFnQjtBQUFBLEVBQ2hCLHdCQUF3QjtBQUFBLEVBQ3hCLHFCQUFxQjtBQUFBLEVBQ3JCLGdCQUFnQjtBQUFBLEVBQ2hCLHdCQUF3QjtBQUFBLEVBQ3hCLHFCQUFxQjtBQUFBLEVBQ3JCLGlCQUFpQjtBQUFBLEVBQ2pCLHlCQUF5QjtBQUFBLEVBQ3pCLHNCQUFzQjtBQUFBLEVBQ3RCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xC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QUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsc0JBQXNCO0FBQUEsRUFDdEIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIsc0JBQXNCO0FBQUEsRUFDdEIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIsc0JBQXNCO0FBQUEsRUFDdEIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIsb0JBQW9CO0FBQUEsRUFDcEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsb0JBQW9CO0FBQUEsRUFDcEIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIsc0JBQXNCO0FBQUEsRUFDdEIsc0JBQXNCO0FBQUEsRUFDdEIsZ0JBQWdCO0FBQUEsRUFDaEIsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsY0FBYztBQUFBLEVBQ2QsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZ0JB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QVU7QUFDWixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sVUFBVSxPQUFPO0FBRXZCLGVBQWEsSUFBSSxJQUFJLE9BQU87QUFFNUIsU0FBTztBQUNUOzs7QUMzRUEsSUFBQUMsc0JBQThCO0FBRTlCLElBQUFDLGlCQUF1RDtBQUdoRCxJQUFNLG9CQUFvQixNQUFnQztBQUMvRCxRQUFNLHVCQUFtQix3QkFBUSxNQUFNLG9CQUFtRCxHQUFHLENBQUMsQ0FBQztBQUMvRixRQUFNLFVBQU0sdUJBQWEsSUFBSTtBQUM3QixRQUFNLHVCQUFtQixtQ0FBYyxpQ0FBaUMsZ0JBQWdCO0FBRXhGLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQSxTQUFTLGlCQUFpQixVQUFVLEdBQUc7QUFBQSxJQUN2QyxvQkFBb0I7QUFBQSxFQUN0QjtBQUNGOyIsCiAgIm5hbWVzIjogWyJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJ0b0NvbnRleHRNYXAiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfcmVhY3RfZG9tIiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9mcCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgInN0eWxlcyIsICJpbXBvcnRfZnAiLCAibG9kYXNoQ2FwaXRhbGl6ZSIsICJpbXBvcnRfZnAiLCAiYWxpYXNUb05vbWluYWwiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpbXBvcnRfZmVhdHVyZV9jb3JlIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9mcCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJtb2R1bGVzIiwgIm1vZHVsZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImFsaWFzVG9Ob21pbmFsIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfbW9ieF9yZWFjdCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9mcCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF90ZXN0X3V0aWxzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF90ZXN0X3V0aWxzIiwgInN0eWxlcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfdGVzdF91dGlscyIsICJzdHlsZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9yZWFjdF9kb20iLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0X2RvbSIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJzdG9wUHJvcGFnYXRpb24iLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiaXNQb3BvdmVyQ2FwYWJsZSIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfcmVhY3QiXQp9Cg==
4228
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vaW5kZXgudHMiLCAiLi4vc3JjL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZG8tZm9jdXMuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvaXRlbS1iZWluZy1mb2N1c2VkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQvZm9jdXNhYmxlLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9lbmFibGVkL2VuYWJsZWQudHMiLCAiLi4vc3JjL3BsdWdpbnMvZW5hYmxlZC9lbmFibGVkLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUtYnktZHJhZ2dpbmcudHMiLCAiLi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9pdGVtLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9ob3ZlcmFibGUvY29tcHV0ZWQtbm93LmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvaXRlbS1iZWluZy1kcmFnZ2VkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvX3NoYXJlZC9kcmFnZ2VkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy90b29sdGlwL3Rvb2x0aXAudHN4IiwgIi4uL3NyYy9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvdG9vbHRpcC90b29sdGlwLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9lbGVtZW50cy9taW5pbWFsLWRpdi50cyIsICIuLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZS50cyIsICIuLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZS5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9wYWRkaW5nL3BhZGRpbmcudHMiLCAiLi4vc3JjL3BsdWdpbnMvcGFkZGluZy9wYWRkaW5nLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvci50cyIsICIuLi9zcmMvcGx1Z2lucy9iYWNrZ3JvdW5kLWNvbG9yL2JhY2tncm91bmQtY29sb3IubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvYm9yZGVyL2JvcmRlci50cyIsICIuLi9zcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2JvcmRlci9nZXQtY29ybmVyLXN0eWxlcy50cyIsICIuLi9zcmMvcGx1Z2lucy9ib3JkZXIvZ2V0LXNpZGUtc3R5bGVzLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvbnQvZm9udC50cyIsICIuLi9zcmMvcGx1Z2lucy9mb250L2ZvbnQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvYm94LXNoYWRvdy9ib3gtc2hhZG93LnRzIiwgIi4uL3NyYy9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvdy5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50cy50cyIsICIuLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50cy5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9yZWYvcmVmLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9jbGFzcy1uYW1lL2NsYXNzLW5hbWUudHMiLCAiLi4vc3JjL3BsdWdpbnMvcmVsYXRpdmUvcmVsYXRpdmUudHMiLCAiLi4vc3JjL3BsdWdpbnMvcmVsYXRpdmUvcmVsYXRpdmUubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZ2V0LWRyYWdnYWJsZS1jb250ZXh0LnRzIiwgIi4uL3NyYy9mZWF0dXJlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2NsaWNrYWJsZS9pcy1tYWMuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9jbGlja2FibGUvb24tcmlnaHQtdHJpZ2dlci5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQva2V5Ym9hcmQtbmF2aWdhdGlvbi1zdGF0ZS5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvX3ByaXZhdGUvY29udGV4dC1pcy1iZWluZy1ob3ZlcmVkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3Rlc3QtdXRpbC1ydW5uYWJsZS5pbmplY3RhYmxlLnRzIiwgImltcG9ydC1nbG9iOi4vKiovKi5nbG9iYWwtb3ZlcnJpZGUtZm9yLWluamVjdGFibGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy84YjI0NmY4Ny04ZTdhLTRmZGQtOGU5MC0wYzc3NDBkODAzN2EiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvbWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW4vbWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW4uZGVmYXVsdC1vdmVycmlkZS50cyIsICIuLi9zcmMvcGx1Z2lucy90b29sdGlwL3Rvb2x0aXAtZGVsYXkvdG9vbHRpcC1kZWxheS5kZWZhdWx0LW92ZXJyaWRlLnRzIiwgIi4uL3NyYy9yZW1vdmUtY3NzLW1vZHVsZS1jbHV0dGVyLmRlZmF1bHQtb3ZlcnJpZGUudHMiLCAiaW1wb3J0LWdsb2I6Li8qKi8qLmRlZmF1bHQtb3ZlcnJpZGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy9hNjEyOGE2NS01M2IwLTQ4MjQtYTA0MC04NDZmYzQ4MzI5YmMiLCAiaW1wb3J0LWdsb2I6Li8qKi8qLmluamVjdGFibGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy8wY2M3MTg1MS01MWJiLTQ0NTEtOTU3ZC0xNjBkZDMwYjY0MDIiLCAiLi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplcy50cyIsICIuLi9zcmMvZWxlbWVudHMudHMiLCAiLi4vc3JjL3BsdWdpbnMvZmxleC9mbGV4Lm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZsZXgvZmxleC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmlkL2dyaWQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZ3JpZC9ncmlkLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3N0eWxlL3N0eWxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hlaWdodC9oZWlnaHQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvaGVpZ2h0L2hlaWdodC50cyIsICIuLi9zcmMvcGx1Z2lucy9jb2xvci9jb2xvci50cyIsICIuLi9zcmMvcGx1Z2lucy9jb2xvci9jb2xvci5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9ncmFkaWVudC9ncmFkaWVudC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmFkaWVudC9ncmFkaWVudC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9kcmFnZ2FibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZHJhZ2dhYmxlLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2Ryb3BwYWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy90cmFuc2l0aW9uL3RyYW5zaXRpb24udHMiLCAiLi4vc3JjL3BsdWdpbnMvdHJhbnNpdGlvbi90cmFuc2l0aW9uLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL29mZnNldC9vZmZzZXQudHMiLCAiLi4vc3JjL3BsdWdpbnMvb2Zmc2V0L29mZnNldC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9vZmZzZXQtY2hpbGRyZW4vb2Zmc2V0LWNoaWxkcmVuLnRzIiwgIi4uL3NyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW4ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvaGlkZGVuL2hpZGRlbi50cyIsICIuLi9zcmMvcGx1Z2lucy9oaWRkZW4vaGlkZGVuLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL21hcmdpbi9tYXJnaW4udHMiLCAiLi4vc3JjL3BsdWdpbnMvbWFyZ2luL21hcmdpbi5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy92aXN1YWxseS1oaWRkZW4vdmlzdWFsbHktaGlkZGVuLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3Zpc3VhbGx5LWhpZGRlbi92aXN1YWxseS1oaWRkZW4ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3cudHMiLCAiLi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3cubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZmxleC1jaGlsZC9mbGV4LWNoaWxkLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZsZXgtY2hpbGQvZmxleC1jaGlsZC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmF5c2NhbGUvZ3JheXNjYWxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGUubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvdGludC90aW50LnRzIiwgIi4uL3NyYy9wbHVnaW5zL3RpbnQvdGludC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC50cyIsICIuLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZm9jdXNhYmxlLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvdXNlLXVwZGF0ZS13aGVuLXByb3BzLWNoYW5nZS50c3giLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19wcml2YXRlL3VzZS1jbGVhbnVwLW9uLXVubW91bnQudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9fcHJpdmF0ZS91c2Uta2V5Ym9hcmQtbmF2aWdhdGlvbi50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvaGFuZGxlLWZvY3VzLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9fcHJpdmF0ZS9oYW5kbGUtYmx1ci50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvdXNlLXByb2dyYW1tYXRpYy1mb2N1c2luZy50cyIsICIuLi9zcmMvcGx1Z2lucy9hcmVhL2FyZWEudHMiLCAiLi4vc3JjL3BsdWdpbnMvYXJlYS1jb250ZW50L2FyZWEtY29udGVudC50cyIsICIuLi9zcmMvcGx1Z2lucy9zaXplL3NpemUudHMiLCAiLi4vc3JjL3BsdWdpbnMvY3Vyc29yL2N1cnNvci5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9jbGlja2FibGUvY2xpY2thYmxlLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9kaXNwbGF5LWNvbnRlbnRzL2Rpc3BsYXktY29udGVudHMubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzLnRzeCIsICIuLi9zcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ24ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvdGV4dC1hbGlnbi90ZXh0LWFsaWduLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2Jsb2NrL2Jsb2NrLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2Jsb2NrL2Jsb2NrLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmUudHMiLCAiLi4vc3JjL3BsdWdpbnMvb3V0bGluZS9vdXRsaW5lLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL3BvcG92ZXIvcG9wb3Zlci50c3giLCAiLi4vc3JjL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2Zsb2F0aW5nL2Zsb2F0aW5nLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9pbnZpc2libGUtYmFja2Ryb3AvaW52aXNpYmxlLWJhY2tkcm9wLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ludmlzaWJsZS1iYWNrZHJvcC9pbnZpc2libGUtYmFja2Ryb3AudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2Ryb3AtZG93bi1tZW51L2Ryb3AtZG93bi1tZW51LnRzeCIsICIuLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9nZXQtZm9jdXNhYmxlLWNvbnRleHQudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9mb2N1c2FibGUtaXRlbS1jb250ZXh0LnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvbG9jYWwtaG92ZXJhYmxlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgdHlwZSB7IEJsb2NrUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ibG9jay9ibG9ja1wiO1xuZXhwb3J0IHR5cGUgeyBBbmNob3JlZEF0LCBBbmNob3JQbHVnaW5Qcm9wcywgQW5jaG9yUG9zaXRpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yXCI7XG5leHBvcnQgeyB1c2VPbk91dHNpZGVDbGljayB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29uLW91dHNpZGUtY2xpY2svb24tb3V0c2lkZS1jbGlja1wiO1xuZXhwb3J0IHR5cGUgeyBPbk91dHNpZGVDbGlja1BsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrXCI7XG5leHBvcnQgdHlwZSB7IERyb3BEb3duTWVudVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZHJvcC1kb3duLW1lbnUvZHJvcC1kb3duLW1lbnVcIjtcbmV4cG9ydCB0eXBlIHsgVGV4dEFsaWduUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ25cIjtcblxuZXhwb3J0IHsgdHlwZSBEb0ZvY3VzLCB0eXBlIERvRm9jdXNGb3IsIGRvRm9jdXNGb3JJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9kby1mb2N1cy5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB7IGl0ZW1CZWluZ0ZvY3VzZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9pdGVtLWJlaW5nLWZvY3VzZWQuaW5qZWN0YWJsZVwiO1xuZXhwb3J0IHR5cGUgeyBJdGVtQmVpbmdGb2N1c2VkIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2l0ZW0tYmVpbmctZm9jdXNlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgRm9jdXNhYmxlUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZm9jdXNhYmxlXCI7XG5leHBvcnQgeyB0eXBlIEVuYWJsZWRQbHVnaW5Qcm9wcywgaXNEaXNhYmxlZCB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2VuYWJsZWQvZW5hYmxlZFwiO1xuZXhwb3J0IHR5cGUgeyBHcmF5c2NhbGVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGVcIjtcbmV4cG9ydCB0eXBlIHsgVGludFBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdGludC90aW50XCI7XG5leHBvcnQgdHlwZSB7IEZhZGVkUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZFwiO1xuXG5leHBvcnQgdHlwZSB7IFNpZGVTdHlsZXMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvZ2V0LXNpZGUtc3R5bGVzXCI7XG5leHBvcnQgdHlwZSB7IENvcm5lclN0eWxlcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JvcmRlci9nZXQtY29ybmVyLXN0eWxlc1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEJhY2tncm91bmRDb2xvclBsdWdpblByb3BzLFxuICBCYWNrZ3JvdW5kQ29sb3IsXG4gIEJhY2tncm91bmRDb2xvckFsaWFzLFxuICAkQmFja2dyb3VuZENvbG9yUHJvcHMsXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvclwiO1xuXG5leHBvcnQgdHlwZSB7XG4gIE91dGxpbmVXaWR0aCxcbiAgJE91dGxpbmVQcm9wcyxcbiAgT3V0bGluZVBsdWdpblByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmVcIjtcblxuZXhwb3J0IHR5cGUge1xuICBGbG9hdGluZ0NvbnRlbnRBcmdzLFxuICBGbG9hdGluZ0NvbnRlbnRGYWN0b3J5LFxuICAkRmxvYXRpbmdQcm9wcyxcbiAgRmxvYXRpbmdQbHVnaW5Qcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZmxvYXRpbmcvZmxvYXRpbmdcIjtcblxuZXhwb3J0IHR5cGUgeyBQYWRkaW5nUGx1Z2luUHJvcHMsIERpcmVjdGlvbmFsUGFkZGluZyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3BhZGRpbmcvcGFkZGluZ1wiO1xuZXhwb3J0IHR5cGUgeyBNYXJnaW5QbHVnaW5Qcm9wcywgRGlyZWN0aW9uYWxNYXJnaW4gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9tYXJnaW4vbWFyZ2luXCI7XG5leHBvcnQgdHlwZSB7IE92ZXJmbG93UGx1Z2luUHJvcHMsIE92ZXJmbG93IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3dcIjtcblxuZXhwb3J0IHR5cGUgeyBCb3hTaGFkb3dQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvd1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEhvdmVyYWJsZUJ5RHJhZ2dpbmdQbHVnaW5Qcm9wcyxcbiAgJEhvdmVyYWJsZUJ5RHJhZ2dpbmdQcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZS1ieS1kcmFnZ2luZ1wiO1xuZXhwb3J0IHsgaG92ZXJhYmxlQnlEcmFnZ2luZ1BsdWdpbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUtYnktZHJhZ2dpbmdcIjtcblxuZXhwb3J0IHR5cGUge1xuICBIb3ZlcmFibGVDb250ZXh0LFxuICAkSG92ZXJhYmxlUHJvcHMsXG4gIEhvdmVyYWJsZUNvbnRleHRPcHRpb25zLFxuICBIb3ZlcmFibGVQbHVnaW5Qcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZVwiO1xuZXhwb3J0IHsgaG92ZXJhYmxlUGx1Z2luLCBnZXRIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZVwiO1xuZXhwb3J0IHsgaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2l0ZW0tYmVpbmctaG92ZXJlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgUmVmUGx1Z2luUHJvcHMsICRSZWZQcm9wLCBSZWZMaWtlIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvcmVmL3JlZlwiO1xuXG5leHBvcnQgdHlwZSB7IEFic29sdXRlUGx1Z2luUHJvcHMsIEFic29sdXRlUG9zaXRpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZVwiO1xuZXhwb3J0IHR5cGUgeyBIaWRkZW5QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hpZGRlbi9oaWRkZW5cIjtcbmV4cG9ydCB0eXBlIHsgTm9Qb2ludGVyRXZlbnRzUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50c1wiO1xuZXhwb3J0IHR5cGUgeyBPZmZzZXRQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29mZnNldC9vZmZzZXRcIjtcbmV4cG9ydCB0eXBlIHsgT2Zmc2V0Q2hpbGRyZW5QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW5cIjtcbmV4cG9ydCB0eXBlIHsgUmVsYXRpdmVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3JlbGF0aXZlL3JlbGF0aXZlXCI7XG5leHBvcnQgdHlwZSB7IFRyYW5zaXRpb25QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3RyYW5zaXRpb24vdHJhbnNpdGlvblwiO1xuZXhwb3J0IHR5cGUgeyBWaXN1YWxseUhpZGRlblBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdmlzdWFsbHktaGlkZGVuL3Zpc3VhbGx5LWhpZGRlblwiO1xuXG5leHBvcnQgdHlwZSB7ICRDdXJzb3JQcm9wcywgQ3Vyc29yUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yXCI7XG5leHBvcnQgdHlwZSB7IERpc3BsYXlDb250ZW50c1BsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzXCI7XG5cbmV4cG9ydCB7IGl0ZW1CZWluZ0RyYWdnZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2l0ZW0tYmVpbmctZHJhZ2dlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgVG9vbHRpcFBsdWdpblByb3BzLCAkVG9vbHRpcFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdG9vbHRpcC90b29sdGlwXCI7XG5leHBvcnQgeyBTdHlsZWRUb29sdGlwQ29udGFpbmVyLCBnZXRUb29sdGlwUHJvcHMsIHN1cHByZXNzVG9vbHRpcCB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcFwiO1xuXG5leHBvcnQgdHlwZSB7IERyYWdnYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcbmV4cG9ydCB7IGdldERyYWdnYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IHsgZWxlbWVudENvbXBvbmVudEZlYXR1cmUgfSBmcm9tIFwiLi9zcmMvZmVhdHVyZVwiO1xuXG5leHBvcnQgdHlwZSB7IFNpemVQbHVnaW5Qcm9wcywgJFNpemVQcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3NpemUvc2l6ZVwiO1xuXG5leHBvcnQgdHlwZSB7IFdpZHRoUGx1Z2luUHJvcHMsICRXaWR0aFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvd2lkdGgvd2lkdGhcIjtcblxuZXhwb3J0IHR5cGUgeyBTdHlsZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvc3R5bGUvc3R5bGVcIjtcblxuZXhwb3J0IHR5cGUgeyBIZWlnaHRQbHVnaW5Qcm9wcywgJEhlaWdodFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaGVpZ2h0L2hlaWdodFwiO1xuXG5leHBvcnQgdHlwZSB7IEZvbnRQbHVnaW5Qcm9wcywgRm9udFNpemUsIEZvbnRMaW5lSGVpZ2h0IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9udC9mb250XCI7XG5cbmV4cG9ydCB0eXBlIHsgR3JpZFBsdWdpblByb3BzLCBHcmlkUHJvcHMsIEdyaWRDb2x1bW5zIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZ3JpZC9ncmlkXCI7XG5cbmV4cG9ydCB0eXBlIHtcbiAgRHJhZ2dhYmxlUGx1Z2luUHJvcHMsXG4gIERyb3BwYWJsZVBsdWdpblByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IHR5cGUgeyBDb2xvclBsdWdpblByb3BzLCAkQ29sb3JQcm9wcywgVGV4dENvbG9yLCBUZXh0Q29sb3JBbGlhcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2NvbG9yL2NvbG9yXCI7XG5leHBvcnQgdHlwZSB7IENsYXNzTmFtZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCB0eXBlIHtcbiAgQm9yZGVyUGx1Z2luUHJvcHMsXG4gIEJvcmRlckNvbG9yQWxpYXMsXG4gIEJvcmRlckNvbG9yLFxuICAkQm9yZGVyUHJvcHMsXG4gICRCb3JkZXJDb2xvclByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyXCI7XG5cbmV4cG9ydCB0eXBlIHsgQm9yZGVyUmFkaXVzU2l6ZSwgQm9yZGVyV2lkdGgsIEJvcmRlclNpZGUgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvdHlwZXNcIjtcblxuZXhwb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplc1wiO1xuZXhwb3J0IHsgdFNoaXJ0U2l6ZUluUGl4ZWxzLCBzaXplVW5pdEluUGl4ZWxzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplc1wiO1xuXG5leHBvcnQgdHlwZSB7IERpcmVjdGlvbiwgU2hvcnREaXJlY3Rpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9fc2hhcmVkL2RpcmVjdGlvbnNcIjtcbmV4cG9ydCB0eXBlIHsgQ29sb3IgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9fc2hhcmVkL2NvbG9yc1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIENsaWNrSGFuZGxlcixcbiAgQ2xpY2tIYW5kbGVyRGV0YWlscyxcbiAgQ2xpY2tQbHVnaW5Qcm9wcyxcbiAgUG9zaXRpb24yZCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvY2xpY2thYmxlL2NsaWNrYWJsZVwiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEZsZXhQbHVnaW5Qcm9wcyxcbiAgSG9yaXpvbnRhbEZsZXhQcm9wcyxcbiAgTWF4aW1hbEZsZXhQcm9wcyxcbiAgU2ltcGxlRmxleFByb3AsXG4gIFZlcnRpY2FsRmxleFByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mbGV4L2ZsZXhcIjtcblxuaW1wb3J0IHtcbiAgcmVtb3ZlQ3NzTW9kdWxlQ2x1dHRlckZvclVuaXRUZXN0aW5nLFxuICBzaG93Q3NzTW9kdWxlQ2x1dHRlckZvclByb2R1Y3Rpb24sXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuXG5leHBvcnQgeyByZW1vdmVDc3NNb2R1bGVDbHV0dGVyRm9yVW5pdFRlc3RpbmcsIHNob3dDc3NNb2R1bGVDbHV0dGVyRm9yUHJvZHVjdGlvbiB9O1xuXG5leHBvcnQge1xuICBDbGlja2FibGVEaXYsXG4gIE5hdixcbiAgU3ZnLFxuICBEaXYsXG4gIEJ1dHRvbixcbiAgSSxcbiAgSW5wdXQsXG4gIEZvcm0sXG4gIFNwYW4sXG4gIFRleHRBcmVhLFxuICBBLFxuICBDb2RlLFxuICBQcmUsXG4gIEgxLFxuICBIMixcbiAgSDMsXG4gIEg0LFxuICBINSxcbiAgSDYsXG4gIFAsXG4gIENsaWNrYWJsZUxpLFxuICBMaSxcbiAgT2wsXG4gIFVsLFxuICBUaCxcbiAgVGQsXG4gIFRyLFxuICBUYWJsZSxcbiAgTGFiZWwsXG4gIFRCb2R5LFxuICBEaWFsb2csXG4gIENhbnZhcyxcbiAgSW1nLFxufSBmcm9tIFwiLi9zcmMvZWxlbWVudHNcIjtcblxuZXhwb3J0IHR5cGUge1xuICBDb21tb25Qcm9wcyxcbiAgQ2xpY2thYmxlRGl2UHJvcHMsXG4gIENsaWNrYWJsZUxpUHJvcHMsXG4gIE5hdlByb3BzLFxuICBTdmdQcm9wcyxcbiAgRGl2UHJvcHMsXG4gIEJ1dHRvblByb3BzLFxuICBJUHJvcHMsXG4gIElucHV0UHJvcHMsXG4gIEZvcm1Qcm9wcyxcbiAgU3BhblByb3BzLFxuICBUZXh0QXJlYVByb3BzLFxuICBBUHJvcHMsXG4gIENvZGVQcm9wcyxcbiAgUHJlUHJvcHMsXG4gIEgxUHJvcHMsXG4gIEgyUHJvcHMsXG4gIEgzUHJvcHMsXG4gIEg0UHJvcHMsXG4gIEg1UHJvcHMsXG4gIEg2UHJvcHMsXG4gIFBQcm9wcyxcbiAgTGlQcm9wcyxcbiAgT2xQcm9wcyxcbiAgVWxQcm9wcyxcbiAgVGhQcm9wcyxcbiAgVGRQcm9wcyxcbiAgVHJQcm9wcyxcbiAgVGFibGVQcm9wcyxcbiAgTGFiZWxQcm9wcyxcbiAgVEJvZHlQcm9wcyxcbiAgRGlhbG9nUHJvcHMsXG4gIENhbnZhc1Byb3BzLFxuICBJbWdQcm9wcyxcbn0gZnJvbSBcIi4vc3JjL2VsZW1lbnRzXCI7XG5cbmV4cG9ydCB7XG4gIGdldEZvY3VzYWJsZUNvbnRleHQsXG4gIGdldEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuZXhwb3J0IHR5cGUge1xuICAkRm9jdXNhYmxlUHJvcHMsXG4gIEFueUZvY3VzYWJsZUNvbnRleHQsXG4gIEZvY3VzYWJsZUNvbnRleHQsXG4gIEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCxcbiAgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0T3B0aW9ucyxcbiAgS2V5Ym9hcmROYXZpZ2F0aW9uT3JpZW50YXRpb24sXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9nZXQtZm9jdXNhYmxlLWNvbnRleHRcIjtcbmV4cG9ydCB7IGNvbnRleHRGb3JGb2N1c2FibGVJdGVtLCB1c2VGb2N1c2FibGVJdGVtIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2ZvY3VzYWJsZS1pdGVtLWNvbnRleHRcIjtcbmV4cG9ydCB7IHVzZUNsb3NlUG9wb3ZlciwgdXNlUG9wb3ZlcklzT3BlbiwgY29udGV4dEZvckNsb3NpbmdQb3BvdmVyIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyXCI7XG5leHBvcnQgeyB1c2VMb2NhbEhvdmVyYWJsZSB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvbG9jYWwtaG92ZXJhYmxlXCI7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luLCB0eXBlIENvbnRyaWJ1dGVQcm9wcyB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IHR5cGUgT25PdXRzaWRlQ2xpY2tQbHVnaW5Qcm9wcyA9IHtcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGEgcG9pbnRlci1kb3duIGxhbmRzIG91dHNpZGUgdGhlIGVsZW1lbnQncyBSZWFjdCB0cmVlLiBUaGUgdHJlZSBpbmNsdWRlcyBjb250ZW50XG4gICAqIHRoZSBlbGVtZW50IHBvcnRhbHMgZWxzZXdoZXJlLCBzbyBwb3J0YWxlZCBjaGlsZHJlbiBjb3VudCBhcyBpbnNpZGUuIENhdmVhdDogYW4gb3V0c2lkZVxuICAgKiBwb2ludGVyLWRvd24gd2hvc2UgcHJvcGFnYXRpb24gdG8gdGhlIGRvY3VtZW50IGlzIHN0b3BwZWQgbmF0aXZlbHkgZ29lcyB1bmRldGVjdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgJG9uT3V0c2lkZUNsaWNrPzogKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHZvaWQ7XG59O1xuXG4vKipcbiAqIFJlYWN0LXRyZWUgb3V0c2lkZS1jbGljayBkZXRlY3Rpb246IGEgY2FwdHVyZS1waGFzZSBoYW5kbGVyIG9uIHRoZSBlbGVtZW50IHJlY29yZHMgdGhlXG4gKiBwb2ludGVyLWRvd24gZXZlbnRzIG9mIGl0cyBvd24gUmVhY3QgdHJlZSAocG9ydGFscyBpbmNsdWRlZCwgc2luY2UgUmVhY3QgZXZlbnRzIHByb3BhZ2F0ZVxuICogdGhyb3VnaCB0aGVtKSwgYW5kIGEgZG9jdW1lbnQtbGV2ZWwgbGlzdGVuZXIgcmVwb3J0cyBldmVyeSBwb2ludGVyLWRvd24gaXQgZGlkIG5vdCByZWNvcmQuXG4gKiBSZXR1cm5zIHRoZSBwcm9wcyBtYXJraW5nIHRoZSBlbGVtZW50J3MgdHJlZTsgZ2l2ZSB0aGVtIHRvIGBjb250cmlidXRlUHJvcHNgIG9yIHNwcmVhZCB0aGVtXG4gKiBvbnRvIHRoZSBzdWJ0cmVlJ3Mgcm9vdC5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZU9uT3V0c2lkZUNsaWNrID0gKG9uT3V0c2lkZUNsaWNrOiAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4gdm9pZCkgPT4ge1xuICBjb25zdCBsYXN0SW5zaWRlUG9pbnRlckRvd25SZWYgPSB1c2VSZWY8RXZlbnQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IGhhbmRsZXJSZWYgPSB1c2VSZWYob25PdXRzaWRlQ2xpY2spO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaGFuZGxlclJlZi5jdXJyZW50ID0gb25PdXRzaWRlQ2xpY2s7XG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlRG9jdW1lbnRQb2ludGVyRG93biA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQgIT09IGxhc3RJbnNpZGVQb2ludGVyRG93blJlZi5jdXJyZW50KSB7XG4gICAgICAgIGhhbmRsZXJSZWYuY3VycmVudChldmVudCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLCBoYW5kbGVEb2N1bWVudFBvaW50ZXJEb3duKTtcblxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIiwgaGFuZGxlRG9jdW1lbnRQb2ludGVyRG93bik7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvblBvaW50ZXJEb3duQ2FwdHVyZSA9IHVzZUNhbGxiYWNrKChldmVudDogUmVhY3QuUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgbGFzdEluc2lkZVBvaW50ZXJEb3duUmVmLmN1cnJlbnQgPSBldmVudC5uYXRpdmVFdmVudDtcbiAgfSwgW10pO1xuXG4gIHJldHVybiB7IG9uUG9pbnRlckRvd25DYXB0dXJlIH07XG59O1xuXG50eXBlIE9uT3V0c2lkZUNsaWNrV3JhcHBlclByb3BzID0ge1xuICByZWFkb25seSBvbk91dHNpZGVDbGljazogKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVQcm9wczogQ29udHJpYnV0ZVByb3BzO1xuICByZWFkb25seSBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgT25PdXRzaWRlQ2xpY2tXcmFwcGVyQ29tcG9uZW50ID0gKHsgb25PdXRzaWRlQ2xpY2ssIGNvbnRyaWJ1dGVQcm9wcywgY2hpbGRyZW4gfTogT25PdXRzaWRlQ2xpY2tXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29udHJpYnV0ZVByb3BzKHVzZU9uT3V0c2lkZUNsaWNrKG9uT3V0c2lkZUNsaWNrKSk7XG5cbiAgcmV0dXJuIDw+e2NoaWxkcmVufTwvPjtcbn07XG5cbmV4cG9ydCBjb25zdCBvbk91dHNpZGVDbGlja1BsdWdpbiA9IGdldFBsdWdpbjxPbk91dHNpZGVDbGlja1BsdWdpblByb3BzPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkb25PdXRzaWRlQ2xpY2sgfSA9IHByb3BzO1xuXG4gIGlmICgkb25PdXRzaWRlQ2xpY2sgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7ICRvbk91dHNpZGVDbGljazogdW5kZWZpbmVkIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRvbk91dHNpZGVDbGljazogdW5kZWZpbmVkLFxuICAgICR3cmFwcGVyOiB7XG4gICAgICBDb21wb25lbnQ6IE9uT3V0c2lkZUNsaWNrV3JhcHBlckNvbXBvbmVudCxcbiAgICAgIHByb3BzOiB7IG9uT3V0c2lkZUNsaWNrOiAkb25PdXRzaWRlQ2xpY2sgfSxcbiAgICB9LFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIsIGdldEluamVjdGlvblRva2VuMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IEFueUZvY3VzYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9nZXQtZm9jdXNhYmxlLWNvbnRleHRcIjtcbmltcG9ydCB7IGZvY3VzYWJsZUh0bWxFbGVtZW50UmVmU2V0SW5qZWN0YWJsZSB9IGZyb20gXCIuL19zaGFyZWQvZm9jdXNhYmxlLWh0bWwtZWxlbWVudC1yZWYtc2V0LmluamVjdGFibGVcIjtcbmltcG9ydCB7IGFzc2VydERlZmluZWQgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuXG5leHBvcnQgdHlwZSBEb0ZvY3VzPFQ+ID0gKGl0ZW06IFQpID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBEb0ZvY3VzRm9yID0gPFQ+KGZvY3VzYWJsZUNvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8VD4pID0+IERvRm9jdXM8VD47XG5cbmV4cG9ydCBjb25zdCBkb0ZvY3VzRm9ySW5qZWN0aW9uVG9rZW4gPSBnZXRJbmplY3Rpb25Ub2tlbjI8eyBzaW5nbGVGYWN0b3J5OiAoKSA9PiBEb0ZvY3VzRm9yIH0+KHtcbiAgaWQ6IFwiZG8tZm9jdXMtZm9yLWluamVjdGlvbi10b2tlblwiLFxuICBjYXJkaW5hbGl0eTogXCJvbmVcIixcbn0pKCk7XG5cbmV4cG9ydCBjb25zdCBkb0ZvY3VzRm9ySW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwiZG8tZm9jdXMtZm9yXCIsXG5cbiAgaW5zdGFudGlhdGU6IChkaSkgPT4ge1xuICAgIGNvbnN0IGdldFJlZlNldCA9IGRpLmluamVjdChmb2N1c2FibGVIdG1sRWxlbWVudFJlZlNldEluamVjdGFibGUpO1xuXG4gICAgcmV0dXJuICgpID0+XG4gICAgICAoPFQ+KGZvY3VzYWJsZUNvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8VD4pID0+XG4gICAgICAgIChmb2N1c2FibGVJdGVtOiBUKSA9PiB7XG4gICAgICAgICAgY29uc3QgW2ZpcnN0UmVuZGVyZWRGb2N1c2FibGVFbGVtZW50UmVmXSA9IGdldFJlZlNldChmb2N1c2FibGVDb250ZXh0LCBmb2N1c2FibGVJdGVtKTtcblxuICAgICAgICAgIGlmIChmaXJzdFJlbmRlcmVkRm9jdXNhYmxlRWxlbWVudFJlZikge1xuICAgICAgICAgICAgYXNzZXJ0RGVmaW5lZChmaXJzdFJlbmRlcmVkRm9jdXNhYmxlRWxlbWVudFJlZi5jdXJyZW50KTtcblxuICAgICAgICAgICAgZmlyc3RSZW5kZXJlZEZvY3VzYWJsZUVsZW1lbnRSZWYuY3VycmVudC5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkgYXMgRG9Gb2N1c0ZvcjtcbiAgfSxcblxuICBpbmplY3Rpb25Ub2tlbjogZG9Gb2N1c0ZvckluamVjdGlvblRva2VuLFxufSk7XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBNdXRhYmxlUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbnR5cGUgRm9jdXNhYmxlSXRlbSA9IGFueTtcblxuLy8gVHdvIGluc3RhbnRpYXRpb24gcGFyYW1ldGVycyByYXRoZXIgdGhhbiBvbmUgY29tcG9zaXRlIGtleTogdjIga2V5cyBhXG4vLyBzaW5nbGV0b24gYnkgYWxsIG9mIHRoZW0sIHNvIHRoZSBjb250ZXh0IGFuZCB0aGUgaXRlbSBjb21wb3NlIGJ5IGlkZW50aXR5IG9uXG4vLyB0aGVpciBvd24uXG5leHBvcnQgY29uc3QgZm9jdXNhYmxlSHRtbEVsZW1lbnRSZWZTZXRJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJodG1sLWVsZW1lbnRzLWJ5LWZvY3VzYWJsZS1tYXBcIixcblxuICBpbnN0YW50aWF0ZTogKCkgPT4gKF9jb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PEZvY3VzYWJsZUl0ZW0+LCBfaXRlbTogRm9jdXNhYmxlSXRlbSkgPT5cbiAgICBuZXcgU2V0PE11dGFibGVSZWZPYmplY3Q8SFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ+PigpLFxufSk7XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIsIGdldEluamVjdGlvblRva2VuMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IElDb21wdXRlZFZhbHVlIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7IGZvY3VzYWJsZUl0ZW1TdGF0ZUluamVjdGFibGUgfSBmcm9tIFwiLi9fc2hhcmVkL2ZvY3VzYWJsZS1pdGVtLXN0YXRlLmluamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgQW55Rm9jdXNhYmxlQ29udGV4dCB9IGZyb20gXCIuL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuXG5leHBvcnQgdHlwZSBJdGVtQmVpbmdGb2N1c2VkID0gPFQ+KGZvY3VzYWJsZUNvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8VD4pID0+IElDb21wdXRlZFZhbHVlPFQgfCB1bmRlZmluZWQ+O1xuXG5leHBvcnQgY29uc3QgaXRlbUJlaW5nRm9jdXNlZEluamVjdGlvblRva2VuID0gZ2V0SW5qZWN0aW9uVG9rZW4yPHsgc2luZ2xlRmFjdG9yeTogKCkgPT4gSXRlbUJlaW5nRm9jdXNlZCB9Pih7XG4gIGlkOiBcIml0ZW0tYmVpbmctZm9jdXNlZFwiLFxuICBjYXJkaW5hbGl0eTogXCJvbmVcIixcbn0pKCk7XG5cbmV4cG9ydCBjb25zdCBwcml2YXRlSXRlbUJlaW5nRm9jdXNlZEluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcInByaXZhdGUtaXRlbS1iZWluZy1mb2N1c2VkXCIsXG5cbiAgaW5zdGFudGlhdGU6IChkaSkgPT4ge1xuICAgIGNvbnN0IGdldEZvY3VzYWJsZUl0ZW1TdGF0ZSA9IGRpLmluamVjdChmb2N1c2FibGVJdGVtU3RhdGVJbmplY3RhYmxlKTtcblxuICAgIHJldHVybiAoY29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxhbnk+KSA9PiBjb21wdXRlZCgoKSA9PiBnZXRGb2N1c2FibGVJdGVtU3RhdGUoY29udGV4dCkuZ2V0KCkpO1xuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBpdGVtQmVpbmdGb2N1c2VkSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwiaXRlbS1iZWluZy1mb2N1c2VkXCIsXG5cbiAgaW5zdGFudGlhdGU6IChkaSkgPT4ge1xuICAgIGNvbnN0IGdldFByaXZhdGVJdGVtQmVpbmdGb2N1c2VkID0gZGkuaW5qZWN0KHByaXZhdGVJdGVtQmVpbmdGb2N1c2VkSW5qZWN0YWJsZSk7XG5cbiAgICByZXR1cm4gKCkgPT5cbiAgICAgICg8VD4oY29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxUPikgPT5cbiAgICAgICAgZ2V0UHJpdmF0ZUl0ZW1CZWluZ0ZvY3VzZWQoY29udGV4dCkgYXMgSUNvbXB1dGVkVmFsdWU8VCB8IHVuZGVmaW5lZD4pIGFzIEl0ZW1CZWluZ0ZvY3VzZWQ7XG4gIH0sXG5cbiAgaW5qZWN0aW9uVG9rZW46IGl0ZW1CZWluZ0ZvY3VzZWRJbmplY3Rpb25Ub2tlbixcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB7IG9ic2VydmFibGUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuXG5leHBvcnQgY29uc3QgZm9jdXNhYmxlSXRlbVN0YXRlSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwiZm9jdXNhYmxlLWl0ZW0tc3RhdGVcIixcblxuICBpbnN0YW50aWF0ZTogKCkgPT4gKF9jb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PGFueT4pID0+IG9ic2VydmFibGUuYm94PHVua25vd24+KCksXG59KTtcbiIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGVuYWJsZWRTdHlsZXMgZnJvbSBcIi4vZW5hYmxlZC5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBFbmFibGVkUGx1Z2luUHJvcHMgPSB7XG4gIC8qKlxuICAgKiBUaGlzIGZpZWxkIGhhcyBoaWdoZXIgcHJpb3JpdHkgdGhhbiAkZGlzYWJsZWRcbiAgICovXG4gICRlbmFibGVkPzogYm9vbGVhbjtcbiAgJGRpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgZmllbGQgaXMgb3ZlcnJpZGRlbiB2aWEgJGRpc2FibGVkIGFuZCAkZW5hYmxlZFxuICAgKi9cbiAgZGlzYWJsZWQ/OiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZW5hYmxlZFBsdWdpbiA9IGdldFBsdWdpbjxFbmFibGVkUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IGRpc2FibGVkID0gaXNEaXNhYmxlZChwcm9wcyk7XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgZGlzYWJsZWQgPyBlbmFibGVkU3R5bGVzLmRpc2FibGVkIDogdW5kZWZpbmVkXSxcbiAgICBkaXNhYmxlZCxcbiAgICAkZW5hYmxlZDogdW5kZWZpbmVkLFxuICAgICRkaXNhYmxlZDogdW5kZWZpbmVkLFxuICB9O1xufSk7XG5cbmV4cG9ydCBjb25zdCBpc0Rpc2FibGVkID0gKHByb3BzOiBFbmFibGVkUGx1Z2luUHJvcHMpID0+IHtcbiAgY29uc3QgeyAkZW5hYmxlZCwgJGRpc2FibGVkIH0gPSBwcm9wcztcblxuICByZXR1cm4gdHlwZW9mICRlbmFibGVkID09PSBcImJvb2xlYW5cIiA/ICEkZW5hYmxlZCA6ICgkZGlzYWJsZWQgPz8gZmFsc2UpO1xufTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9lbmFibGVkL2VuYWJsZWQubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJkaXNhYmxlZFwiOiBcImVuYWJsZWQtbW9kdWxlX19kaXNhYmxlZF9fX0xMM3N3XCJcbn07IiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VJZCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB7IHR5cGUgQ29udGV4dE1hcFZhbHVlLCBob3Zlckl0ZW1TdGF0ZUZvckluamVjdGFibGUgfSBmcm9tIFwiLi9ob3ZlcmVkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgYWN0aW9uLCBvYnNlcnZhYmxlIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7IGlzRGVmaW5lZCwgbm9vcCwgdHlwZSBTaW5nbGVPck1hbnkgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgeyByZWZQbHVnaW4gfSBmcm9tIFwiLi4vcmVmL3JlZlwiO1xuaW1wb3J0IHR5cGUgeyAkSG92ZXJhYmxlUHJvcHMgfSBmcm9tIFwiLi9ob3ZlcmFibGVcIjtcblxuZXhwb3J0IHR5cGUgJEhvdmVyYWJsZUJ5RHJhZ2dpbmdQcm9wczxUPiA9IFBpY2s8JEhvdmVyYWJsZVByb3BzPFQ+LCBcImNvbnRleHRcIiB8IFwiaXRlbVwiPjtcblxuZXhwb3J0IHR5cGUgSG92ZXJhYmxlQnlEcmFnZ2luZ1BsdWdpblByb3BzPFQgPSBhbnk+ID0ge1xuICAkaG92ZXJhYmxlQnlEcmFnZ2luZz86IFNpbmdsZU9yTWFueTwkSG92ZXJhYmxlQnlEcmFnZ2luZ1Byb3BzPFQ+Pjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBob3ZlcmFibGVCeURyYWdnaW5nUGx1Z2luPFQ+KCkge1xuICByZXR1cm4gZ2V0UGx1Z2luPEhvdmVyYWJsZUJ5RHJhZ2dpbmdQbHVnaW5Qcm9wcywgW1JldHVyblR5cGU8dHlwZW9mIHJlZlBsdWdpbjxUPj5dPigocHJvcHMpID0+IHtcbiAgICBjb25zdCB7ICRob3ZlcmFibGVCeURyYWdnaW5nLCAkcmVmIH0gPSBwcm9wcztcblxuICAgIGlmICgkaG92ZXJhYmxlQnlEcmFnZ2luZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAkaG92ZXJhYmxlQnlEcmFnZ2luZzogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBpZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgaG92ZXJJdGVtU3RhdGVGb3IgPSB1c2VTeW5jSW5qZWN0KGhvdmVySXRlbVN0YXRlRm9ySW5qZWN0YWJsZSk7XG4gICAgY29uc3QgaG92ZXJhYmxlUHJvcHNSZWYgPSB1c2VSZWYob2JzZXJ2YWJsZS5tYXAodG9Db250ZXh0TWFwKCRob3ZlcmFibGVCeURyYWdnaW5nKSwgeyBkZWVwOiBmYWxzZSB9KSk7XG4gICAgY29uc3QgY29udHJvbGxlciA9IHVzZVJlZihuZXcgQWJvcnRDb250cm9sbGVyKCkpO1xuXG4gICAgdXNlRWZmZWN0KFxuICAgICAgYWN0aW9uKCgpID0+IHtcbiAgICAgICAgaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudC5yZXBsYWNlKHRvQ29udGV4dE1hcCgkaG92ZXJhYmxlQnlEcmFnZ2luZykpO1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIGNvbnN0IGNhbGxiYWNrUmVmID0gdXNlTWVtbyhcbiAgICAgICgpID0+XG4gICAgICAgIGFjdGlvbigoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgICAgICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICAgICAgICBjb250cm9sbGVyLmN1cnJlbnQuYWJvcnQoKTtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuY3VycmVudCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICBcImRyYWdlbnRlclwiLFxuICAgICAgICAgICAgYWN0aW9uKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB7IGN1cnJlbnRUYXJnZXQsIHJlbGF0ZWRUYXJnZXQgfSA9IGV2ZW50O1xuICAgICAgICAgICAgICBjb25zdCBob3ZlcmVkQXQgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgICAgICAgIGlmICghKGN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNvbnRhaW5zKHJlbGF0ZWRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjb250ZXh0IG9mIGhvdmVyYWJsZVByb3BzUmVmLmN1cnJlbnQua2V5cygpKSB7XG4gICAgICAgICAgICAgICAgICBob3Zlckl0ZW1TdGF0ZUZvcihjb250ZXh0KS5zZXQoaWQsIHtcbiAgICAgICAgICAgICAgICAgICAgaG92ZXJlZEF0OiBvYnNlcnZhYmxlLmJveChob3ZlcmVkQXQsIHsgZGVlcDogZmFsc2UgfSksXG4gICAgICAgICAgICAgICAgICAgIGdldFByb3BzOiAoKSA9PiBob3ZlcmFibGVQcm9wc1JlZi5jdXJyZW50LmdldChjb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHNpZ25hbDogY29udHJvbGxlci5jdXJyZW50LnNpZ25hbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcbiAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICBcImRyYWdsZWF2ZVwiLFxuICAgICAgICAgICAgYWN0aW9uKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB7IGN1cnJlbnRUYXJnZXQsIHJlbGF0ZWRUYXJnZXQgfSA9IGV2ZW50O1xuICAgICAgICAgICAgICBjb25zdCBob3ZlcmVkQXQgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgICAgICAgIGlmICghKGN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNvbnRhaW5zKHJlbGF0ZWRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjb250ZXh0IG9mIGhvdmVyYWJsZVByb3BzUmVmLmN1cnJlbnQua2V5cygpKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBob3ZlcmVkU3RhdGUgPSBob3Zlckl0ZW1TdGF0ZUZvcihjb250ZXh0KTtcblxuICAgICAgICAgICAgICAgICAgaG92ZXJlZFN0YXRlLmRlbGV0ZShpZCk7XG4gICAgICAgICAgICAgICAgICBob3ZlcmVkU3RhdGUuZm9yRWFjaCgoc3RhdGUpID0+IHN0YXRlLmhvdmVyZWRBdC5zZXQoaG92ZXJlZEF0KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLmN1cnJlbnQuc2lnbmFsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgIFtob3Zlckl0ZW1TdGF0ZUZvciwgaWRdLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgJHJlZjogWyRyZWYsIGNhbGxiYWNrUmVmXSxcbiAgICAgICRob3ZlcmFibGVCeURyYWdnaW5nOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfSk7XG59XG5cbmNvbnN0IHRvQ29udGV4dE1hcCA9IChwcm9wczogU2luZ2xlT3JNYW55PCRIb3ZlcmFibGVCeURyYWdnaW5nUHJvcHM8dW5rbm93bj4+IHwgdW5kZWZpbmVkKSA9PiB7XG4gIGNvbnN0IGl0ZW1zID0gW3Byb3BzXS5mbGF0KCkuZmlsdGVyKGlzRGVmaW5lZCk7XG4gIGNvbnN0IHJlc3VsdHM6IFtvYmplY3QsIENvbnRleHRNYXBWYWx1ZV1bXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgeyBjb250ZXh0LCBpdGVtIH0gb2YgaXRlbXMpIHtcbiAgICByZXN1bHRzLnB1c2goW2NvbnRleHQsIHsgaXRlbSwgZGVsYXk6IDAsIG9uSG92ZXI6IG5vb3AsIG9uVW5ob3Zlcjogbm9vcCB9XSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0cztcbn07XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgdHlwZSBJT2JzZXJ2YWJsZVZhbHVlLCBvYnNlcnZhYmxlIH0gZnJvbSBcIm1vYnhcIjtcblxuZXhwb3J0IHR5cGUgQ29udGV4dE1hcFZhbHVlID0ge1xuICByZWFkb25seSBpdGVtOiB1bmtub3duO1xuICByZWFkb25seSBkZWxheTogbnVtYmVyO1xuICBvbkhvdmVyOiBWb2lkRnVuY3Rpb247XG4gIG9uVW5ob3ZlcjogVm9pZEZ1bmN0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgSG92ZXJlZEl0ZW1TdGF0ZSA9IHtcbiAgcmVhZG9ubHkgaG92ZXJlZEF0OiBJT2JzZXJ2YWJsZVZhbHVlPG51bWJlcj47XG4gIHJlYWRvbmx5IGdldFByb3BzOiAoKSA9PiBDb250ZXh0TWFwVmFsdWUgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgaG92ZXJlZEl0ZW1TdGF0ZUluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcImhvdmVyZWQtaXRlbS1zdGF0ZVwiLFxuXG4gIGluc3RhbnRpYXRlOiAoKSA9PiAoX2NvbnRleHQ6IG9iamVjdCkgPT4gb2JzZXJ2YWJsZS5tYXA8c3RyaW5nLCBIb3ZlcmVkSXRlbVN0YXRlPihbXSwgeyBkZWVwOiBmYWxzZSB9KSxcbn0pO1xuXG5leHBvcnQgY29uc3QgaG92ZXJJdGVtU3RhdGVGb3JJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJob3Zlci1pdGVtLXN0YXRlLWZvclwiLFxuXG4gIGluc3RhbnRpYXRlOiAoZGkpID0+IHtcbiAgICBjb25zdCBnZXRIb3ZlcmVkSXRlbVN0YXRlID0gZGkuaW5qZWN0KGhvdmVyZWRJdGVtU3RhdGVJbmplY3RhYmxlKTtcblxuICAgIHJldHVybiAoKSA9PiAoY29udGV4dDogb2JqZWN0KSA9PiBnZXRIb3ZlcmVkSXRlbVN0YXRlKGNvbnRleHQpO1xuICB9LFxufSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luLCB0eXBlIENvbnRyaWJ1dGVQcm9wcyB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuXG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZUlkLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVN5bmNJbmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvdXNlLWluamVjdFwiO1xuaW1wb3J0IHsgdHlwZSBDb250ZXh0TWFwVmFsdWUsIGhvdmVySXRlbVN0YXRlRm9ySW5qZWN0YWJsZSB9IGZyb20gXCIuL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBhY3Rpb24sIGF1dG9ydW4sIGNvbXBhcmVyLCBvYnNlcnZhYmxlIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7IG5vb3AgfSBmcm9tIFwibG9kYXNoL2ZwXCI7XG5pbXBvcnQgeyBpdGVtQmVpbmdIb3ZlcmVkSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiLi9pdGVtLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgaXNEZWZpbmVkLCB0eXBlIFNpbmdsZU9yTWFueSB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5cbmV4cG9ydCB0eXBlIEhvdmVyYWJsZUNvbnRleHRPcHRpb25zID0ge1xuICAvKipcbiAgICogSW4gbWlsbGlzZWNvbmRzXG4gICAqL1xuICByZWFkb25seSBkZWxheT86IG51bWJlcjtcbiAgcmVhZG9ubHkgb25Ib3Zlcj86IFZvaWRGdW5jdGlvbjtcbiAgcmVhZG9ubHkgb25VbmhvdmVyPzogVm9pZEZ1bmN0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgSG92ZXJhYmxlQ29udGV4dDxIb3ZlcmVkSXRlbT4gPSB7XG4gIHJlYWRvbmx5IGhvdmVyYWJsZTogKGl0ZW06IEhvdmVyZWRJdGVtLCBvcHRpb25zPzogSG92ZXJhYmxlQ29udGV4dE9wdGlvbnMpID0+ICRIb3ZlcmFibGVQcm9wczxIb3ZlcmVkSXRlbT47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlICRIb3ZlcmFibGVQcm9wczxUSXRlbSA9IHVua25vd24+IHtcbiAgcmVhZG9ubHkgY29udGV4dDogb2JqZWN0O1xuICByZWFkb25seSBpdGVtOiBUSXRlbTtcbiAgcmVhZG9ubHkgb3B0aW9uczogUmVxdWlyZWQ8SG92ZXJhYmxlQ29udGV4dE9wdGlvbnM+O1xufVxuXG5leHBvcnQgdHlwZSBIb3ZlcmFibGVQbHVnaW5Qcm9wczxURWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50PiA9IHtcbiAgcmVhZG9ubHkgJGhvdmVyYWJsZT86IFNpbmdsZU9yTWFueTwkSG92ZXJhYmxlUHJvcHM+O1xuICBvbk1vdXNlRW50ZXI/OiBSZWFjdC5IVE1MUHJvcHM8VEVsZW1lbnQ+W1wib25Nb3VzZUVudGVyXCJdO1xuICBvbk1vdXNlTGVhdmU/OiBSZWFjdC5IVE1MUHJvcHM8VEVsZW1lbnQ+W1wib25Nb3VzZUxlYXZlXCJdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhvdmVyYWJsZUNvbnRleHQgPSA8SG92ZXJlZEl0ZW0sPigpOiBIb3ZlcmFibGVDb250ZXh0PEhvdmVyZWRJdGVtPiA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgaG92ZXJhYmxlOiAoaXRlbTogSG92ZXJlZEl0ZW0sIHsgZGVsYXkgPSAwLCBvbkhvdmVyID0gbm9vcCwgb25VbmhvdmVyID0gbm9vcCB9OiBIb3ZlcmFibGVDb250ZXh0T3B0aW9ucyA9IHt9KSA9PiAoe1xuICAgICAgY29udGV4dCxcbiAgICAgIGl0ZW0sXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGRlbGF5LFxuICAgICAgICBvbkhvdmVyLFxuICAgICAgICBvblVuaG92ZXIsXG4gICAgICB9LFxuICAgIH0pLFxuICB9O1xuXG4gIHJldHVybiBjb250ZXh0O1xufTtcblxuZXhwb3J0IHR5cGUgSG92ZXJhYmxlUGx1Z2luPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4gPSBSZXR1cm5UeXBlPHR5cGVvZiBob3ZlcmFibGVQbHVnaW48VD4+O1xuXG50eXBlIEhvdmVyYWJsZVdyYXBwZXJQcm9wcyA9IHtcbiAgcmVhZG9ubHkgaG92ZXJhYmxlOiBTaW5nbGVPck1hbnk8JEhvdmVyYWJsZVByb3BzPjtcbiAgcmVhZG9ubHkgb25Nb3VzZUVudGVyPzogUmVhY3QuTW91c2VFdmVudEhhbmRsZXI8SFRNTEVsZW1lbnQ+O1xuICByZWFkb25seSBvbk1vdXNlTGVhdmU/OiBSZWFjdC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MRWxlbWVudD47XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVQcm9wczogQ29udHJpYnV0ZVByb3BzO1xuICByZWFkb25seSBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgSG92ZXJhYmxlV3JhcHBlckNvbXBvbmVudCA9ICh7XG4gIGhvdmVyYWJsZSxcbiAgb25Nb3VzZUVudGVyLFxuICBvbk1vdXNlTGVhdmUsXG4gIGNvbnRyaWJ1dGVQcm9wcyxcbiAgY2hpbGRyZW4sXG59OiBIb3ZlcmFibGVXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29uc3QgaG92ZXJJdGVtU3RhdGVGb3IgPSB1c2VTeW5jSW5qZWN0KGhvdmVySXRlbVN0YXRlRm9ySW5qZWN0YWJsZSk7XG4gIGNvbnN0IGl0ZW1CZWluZ0hvdmVyZWQgPSB1c2VTeW5jSW5qZWN0KGl0ZW1CZWluZ0hvdmVyZWRJbmplY3Rpb25Ub2tlbik7XG4gIGNvbnN0IGlkID0gdXNlSWQoKTtcblxuICBjb25zdCBob3ZlcmFibGVQcm9wc1JlZiA9IHVzZVJlZihcbiAgICBvYnNlcnZhYmxlLm1hcCh0b0NvbnRleHRNYXAoaG92ZXJhYmxlKSwgeyBkZWVwOiBmYWxzZSwgZXF1YWxzOiBjb21wYXJlci5zdHJ1Y3R1cmFsIH0pLFxuICApO1xuXG4gIHVzZUVmZmVjdChcbiAgICBhY3Rpb24oKCkgPT4ge1xuICAgICAgaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudC5yZXBsYWNlKHRvQ29udGV4dE1hcChob3ZlcmFibGUpKTtcbiAgICB9KSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGl0ZW1CeUNvbnRleHQgPSBuZXcgTWFwPG9iamVjdCwgdW5rbm93bj4oKTtcblxuICAgIHJldHVybiBhdXRvcnVuKCgpID0+IHtcbiAgICAgIGZvciAoY29uc3QgW2NvbnRleHQsIHsgaXRlbSwgb25Ib3Zlciwgb25VbmhvdmVyIH1dIG9mIGhvdmVyYWJsZVByb3BzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgaG92ZXJlZEl0ZW0gPSBpdGVtQmVpbmdIb3ZlcmVkKGNvbnRleHQgYXMgSG92ZXJhYmxlQ29udGV4dDx1bmtub3duPikuZ2V0KCk7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzSXRlbSA9IGl0ZW1CeUNvbnRleHQuZ2V0KGNvbnRleHQpO1xuXG4gICAgICAgIGlmIChob3ZlcmVkSXRlbSA9PT0gaXRlbSkge1xuICAgICAgICAgIG9uSG92ZXIoKTtcbiAgICAgICAgfSBlbHNlIGlmIChwcmV2aW91c0l0ZW0gPT09IGl0ZW0pIHtcbiAgICAgICAgICBvblVuaG92ZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZW1CeUNvbnRleHQuc2V0KGNvbnRleHQsIGhvdmVyZWRJdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW2l0ZW1CZWluZ0hvdmVyZWRdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIGFjdGlvbigoKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgY29udGV4dCBvZiBob3ZlcmFibGVQcm9wc1JlZi5jdXJyZW50LmtleXMoKSkge1xuICAgICAgICAgIGhvdmVySXRlbVN0YXRlRm9yKGNvbnRleHQpLmRlbGV0ZShpZCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgIFtob3Zlckl0ZW1TdGF0ZUZvciwgaWRdLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZU1vdXNlRW50ZXIgPSB1c2VDYWxsYmFjayhcbiAgICBhY3Rpb24oKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgb25Nb3VzZUVudGVyPy4oZXZlbnQpO1xuXG4gICAgICBjb25zdCBob3ZlcmVkQXQgPSBEYXRlLm5vdygpO1xuXG4gICAgICBmb3IgKGNvbnN0IGNvbnRleHQgb2YgaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudC5rZXlzKCkpIHtcbiAgICAgICAgaG92ZXJJdGVtU3RhdGVGb3IoY29udGV4dCkuc2V0KGlkLCB7XG4gICAgICAgICAgaG92ZXJlZEF0OiBvYnNlcnZhYmxlLmJveChob3ZlcmVkQXQsIHsgZGVlcDogZmFsc2UgfSksXG4gICAgICAgICAgZ2V0UHJvcHM6ICgpID0+IGhvdmVyYWJsZVByb3BzUmVmLmN1cnJlbnQuZ2V0KGNvbnRleHQpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBbXSxcbiAgKTtcblxuICBjb25zdCBoYW5kbGVNb3VzZUxlYXZlID0gdXNlQ2FsbGJhY2soXG4gICAgYWN0aW9uKChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIG9uTW91c2VMZWF2ZT8uKGV2ZW50KTtcblxuICAgICAgY29uc3QgaG92ZXJlZEF0ID0gRGF0ZS5ub3coKTtcblxuICAgICAgZm9yIChjb25zdCBjb250ZXh0IG9mIGhvdmVyYWJsZVByb3BzUmVmLmN1cnJlbnQua2V5cygpKSB7XG4gICAgICAgIGNvbnN0IGhvdmVyZWRTdGF0ZSA9IGhvdmVySXRlbVN0YXRlRm9yKGNvbnRleHQpO1xuXG4gICAgICAgIGhvdmVyZWRTdGF0ZS5kZWxldGUoaWQpO1xuICAgICAgICBob3ZlcmVkU3RhdGUuZm9yRWFjaCgoc3RhdGUpID0+IHN0YXRlLmhvdmVyZWRBdC5zZXQoaG92ZXJlZEF0KSk7XG4gICAgICB9XG4gICAgfSksXG4gICAgW10sXG4gICk7XG5cbiAgY29udHJpYnV0ZVByb3BzKHtcbiAgICBvbk1vdXNlRW50ZXI6IGhhbmRsZU1vdXNlRW50ZXIsXG4gICAgb25Nb3VzZUxlYXZlOiBoYW5kbGVNb3VzZUxlYXZlLFxuICB9KTtcblxuICByZXR1cm4gPD57Y2hpbGRyZW59PC8+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhvdmVyYWJsZVBsdWdpbjxURWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50PigpIHtcbiAgcmV0dXJuIGdldFBsdWdpbjxIb3ZlcmFibGVQbHVnaW5Qcm9wczxURWxlbWVudD4+KChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgJGhvdmVyYWJsZSwgb25Nb3VzZUVudGVyLCBvbk1vdXNlTGVhdmUgfSA9IHByb3BzO1xuXG4gICAgaWYgKCRob3ZlcmFibGUgPT09IHVuZGVmaW5lZCB8fCAoQXJyYXkuaXNBcnJheSgkaG92ZXJhYmxlKSAmJiAkaG92ZXJhYmxlLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgICRob3ZlcmFibGU6IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICRob3ZlcmFibGU6IHVuZGVmaW5lZCxcbiAgICAgICR3cmFwcGVyOiB7XG4gICAgICAgIENvbXBvbmVudDogSG92ZXJhYmxlV3JhcHBlckNvbXBvbmVudCxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBob3ZlcmFibGU6ICRob3ZlcmFibGUsXG4gICAgICAgICAgb25Nb3VzZUVudGVyLFxuICAgICAgICAgIG9uTW91c2VMZWF2ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG59XG5cbmNvbnN0IHRvQ29udGV4dE1hcCA9IChwcm9wczogU2luZ2xlT3JNYW55PCRIb3ZlcmFibGVQcm9wczx1bmtub3duPj4gfCB1bmRlZmluZWQpID0+IHtcbiAgY29uc3QgaXRlbXMgPSBbcHJvcHNdLmZsYXQoKS5maWx0ZXIoaXNEZWZpbmVkKTtcbiAgY29uc3QgcmVzdWx0czogW29iamVjdCwgQ29udGV4dE1hcFZhbHVlXVtdID0gW107XG5cbiAgZm9yIChjb25zdCB7IGNvbnRleHQsIGl0ZW0sIG9wdGlvbnMgfSBvZiBpdGVtcykge1xuICAgIHJlc3VsdHMucHVzaChbY29udGV4dCwgeyBpdGVtLCAuLi5vcHRpb25zIH1dKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiwgZ2V0SW5qZWN0aW9uVG9rZW4yIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgSUNvbXB1dGVkVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgaG92ZXJlZEl0ZW1TdGF0ZUluamVjdGFibGUgfSBmcm9tIFwiLi9ob3ZlcmVkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4vaG92ZXJhYmxlXCI7XG5pbXBvcnQgeyBjb21wdXRlZE5vd0luamVjdGFibGUgfSBmcm9tIFwiLi9jb21wdXRlZC1ub3cuaW5qZWN0YWJsZVwiO1xuXG5leHBvcnQgdHlwZSBJdGVtQmVpbmdIb3ZlcmVkID0gPFQ+KGhvdmVyYWJsZUNvbnRleHQ6IEhvdmVyYWJsZUNvbnRleHQ8VD4pID0+IElDb21wdXRlZFZhbHVlPFQgfCB1bmRlZmluZWQ+O1xuXG5leHBvcnQgY29uc3QgaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuID0gZ2V0SW5qZWN0aW9uVG9rZW4yPHsgc2luZ2xlRmFjdG9yeTogKCkgPT4gSXRlbUJlaW5nSG92ZXJlZCB9Pih7XG4gIGlkOiBcIml0ZW0tYmVpbmctaG92ZXJlZFwiLFxuICBjYXJkaW5hbGl0eTogXCJvbmVcIixcbn0pKCk7XG5cbmV4cG9ydCBjb25zdCBwcml2YXRlSXRlbUJlaW5nSG92ZXJlZEluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcInByaXZhdGUtaXRlbS1iZWluZy1ob3ZlcmVkXCIsXG5cbiAgaW5zdGFudGlhdGU6IChkaSkgPT4ge1xuICAgIGNvbnN0IGdldEhvdmVyZWRJdGVtU3RhdGUgPSBkaS5pbmplY3QoaG92ZXJlZEl0ZW1TdGF0ZUluamVjdGFibGUpO1xuICAgIGNvbnN0IGdldENvbXB1dGVkTm93ID0gZGkuaW5qZWN0KGNvbXB1dGVkTm93SW5qZWN0YWJsZSk7XG5cbiAgICByZXR1cm4gKGNvbnRleHQ6IG9iamVjdCkgPT4ge1xuICAgICAgY29uc3QgaG92ZXJlZEl0ZW1TdGF0ZSA9IGdldEhvdmVyZWRJdGVtU3RhdGUoY29udGV4dCk7XG4gICAgICBjb25zdCBjb21wdXRlZE5vdyA9IGdldENvbXB1dGVkTm93KDEpO1xuXG4gICAgICByZXR1cm4gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB0b3BJdGVtID0gWy4uLmhvdmVyZWRJdGVtU3RhdGUudmFsdWVzKCldLmF0KC0xKTtcbiAgICAgICAgY29uc3QgcHJvcHMgPSB0b3BJdGVtPy5nZXRQcm9wcygpO1xuXG4gICAgICAgIGlmICghdG9wSXRlbSB8fCAhcHJvcHMpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgd2hlbkNvbnNpZGVyZWRIb3ZlcmVkID0gdG9wSXRlbS5ob3ZlcmVkQXQuZ2V0KCkgKyBwcm9wcy5kZWxheTtcbiAgICAgICAgY29uc3Qgbm93ID0gY29tcHV0ZWROb3cuZ2V0KCk7XG5cbiAgICAgICAgcmV0dXJuIG5vdyA+PSB3aGVuQ29uc2lkZXJlZEhvdmVyZWQgPyBwcm9wcy5pdGVtIDogdW5kZWZpbmVkO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgaXRlbUJlaW5nSG92ZXJlZEluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcIml0ZW0tYmVpbmctaG92ZXJlZFwiLFxuXG4gIGluc3RhbnRpYXRlOiAoZGkpID0+IHtcbiAgICBjb25zdCBnZXRQcml2YXRlSXRlbUJlaW5nSG92ZXJlZCA9IGRpLmluamVjdChwcml2YXRlSXRlbUJlaW5nSG92ZXJlZEluamVjdGFibGUpO1xuXG4gICAgcmV0dXJuICgpID0+XG4gICAgICAoPFQ+KGNvbnRleHQ6IEhvdmVyYWJsZUNvbnRleHQ8VD4pID0+XG4gICAgICAgIGdldFByaXZhdGVJdGVtQmVpbmdIb3ZlcmVkKGNvbnRleHQpIGFzIElDb21wdXRlZFZhbHVlPFQ+KSBhcyBJdGVtQmVpbmdIb3ZlcmVkO1xuICB9LFxuXG4gIGluamVjdGlvblRva2VuOiBpdGVtQmVpbmdIb3ZlcmVkSW5qZWN0aW9uVG9rZW4sXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBjb21wdXRlZCwgb2JzZXJ2YWJsZSwgb25CZWNvbWVPYnNlcnZlZCwgb25CZWNvbWVVbm9ic2VydmVkLCBydW5JbkFjdGlvbiB9IGZyb20gXCJtb2J4XCI7XG5cbi8qKlxuICogQSBjbG9jayB0aGF0IGFkdmFuY2VzIG9ubHkgd2hpbGUgc29tZXRoaW5nIG9ic2VydmVzIGl0LCBzbyBhIGhvdmVyIGRlbGF5XG4gKiBrZWVwcyBiZWluZyByZS1ldmFsdWF0ZWQgdW50aWwgaXQgaGFzIGVsYXBzZWQgYW5kIGNvc3RzIG5vdGhpbmcgb25jZSBub2JvZHlcbiAqIGlzIHdhdGNoaW5nLlxuICpcbiAqIExvY2FsIHJhdGhlciB0aGFuIHRha2VuIGZyb20gdGhlIHNoYXJlZCBpbnRlcnZhbCBmZWF0dXJlOiBhIGRlc2lnbiBzeXN0ZW1cbiAqIGNhbm5vdCBkZXBlbmQgb24gYSBmZWF0dXJlIHBhY2thZ2UsIGFuZCB0aGUgaG92ZXJhYmxlIHBsdWdpbiBpcyB0aGUgb25seVxuICogdGhpbmcgaGVyZSB0aGF0IG5lZWRzIGEgY2xvY2suIFRoZSBpbnRlcnZhbCBpcyB0aGUgaW5zdGFudGlhdGlvbiBwYXJhbWV0ZXIsXG4gKiBzbyB2MiBrZXlzIG9uZSBjbG9jayBwZXIgaW50ZXJ2YWwuXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wdXRlZE5vd0luamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcImNvbXB1dGVkLW5vd1wiLFxuXG4gIGluc3RhbnRpYXRlOiAoKSA9PiAoaW50ZXJ2YWxNczogbnVtYmVyKSA9PiB7XG4gICAgY29uc3Qgbm93ID0gb2JzZXJ2YWJsZS5ib3goRGF0ZS5ub3coKSk7XG5cbiAgICBsZXQgaGFuZGxlOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD4gfCB1bmRlZmluZWQ7XG5cbiAgICBvbkJlY29tZU9ic2VydmVkKG5vdywgKCkgPT4ge1xuICAgICAgcnVuSW5BY3Rpb24oKCkgPT4gbm93LnNldChEYXRlLm5vdygpKSk7XG5cbiAgICAgIGhhbmRsZSA9IHNldEludGVydmFsKCgpID0+IHJ1bkluQWN0aW9uKCgpID0+IG5vdy5zZXQoRGF0ZS5ub3coKSkpLCBpbnRlcnZhbE1zKTtcbiAgICB9KTtcblxuICAgIG9uQmVjb21lVW5vYnNlcnZlZChub3csICgpID0+IHtcbiAgICAgIGlmIChoYW5kbGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjbGVhckludGVydmFsKGhhbmRsZSk7XG4gICAgICB9XG5cbiAgICAgIGhhbmRsZSA9IHVuZGVmaW5lZDtcbiAgICB9KTtcblxuICAgIHJldHVybiBjb21wdXRlZCgoKSA9PiBub3cuZ2V0KCkpO1xuICB9LFxufSk7XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIsIGdldEluamVjdGlvblRva2VuMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IElDb21wdXRlZFZhbHVlIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB0eXBlIHsgRHJhZ2dhYmxlQ29udGV4dCB9IGZyb20gXCIuL2dldC1kcmFnZ2FibGUtY29udGV4dFwiO1xuaW1wb3J0IHsgZHJhZ2dlZEl0ZW1TdGF0ZUluamVjdGFibGUgfSBmcm9tIFwiLi9fc2hhcmVkL2RyYWdnZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIEl0ZW1CZWluZ0RyYWdnZWQgPSA8VD4oZHJhZ2dhYmxlQ29udGV4dDogRHJhZ2dhYmxlQ29udGV4dDxUPikgPT4gSUNvbXB1dGVkVmFsdWU8VCB8IHVuZGVmaW5lZD47XG5cbmV4cG9ydCBjb25zdCBpdGVtQmVpbmdEcmFnZ2VkSW5qZWN0aW9uVG9rZW4gPSBnZXRJbmplY3Rpb25Ub2tlbjI8eyBzaW5nbGVGYWN0b3J5OiAoKSA9PiBJdGVtQmVpbmdEcmFnZ2VkIH0+KHtcbiAgaWQ6IFwiaXRlbS1iZWluZy1kcmFnZ2VkXCIsXG4gIGNhcmRpbmFsaXR5OiBcIm9uZVwiLFxufSkoKTtcblxuZXhwb3J0IGNvbnN0IHByaXZhdGVJdGVtQmVpbmdEcmFnZ2VkSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwicHJpdmF0ZS1pdGVtLWJlaW5nLWRyYWdnZWRcIixcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgZ2V0RHJhZ2dlZEl0ZW1TdGF0ZSA9IGRpLmluamVjdChkcmFnZ2VkSXRlbVN0YXRlSW5qZWN0YWJsZSk7XG5cbiAgICByZXR1cm4gKGNvbnRleHQ6IERyYWdnYWJsZUNvbnRleHQ8YW55PikgPT4gY29tcHV0ZWQoKCkgPT4gZ2V0RHJhZ2dlZEl0ZW1TdGF0ZShjb250ZXh0KS5nZXQoKSk7XG4gIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IGl0ZW1CZWluZ0RyYWdnZWRJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJpdGVtLWJlaW5nLWRyYWdnZWRcIixcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgZ2V0UHJpdmF0ZUl0ZW1CZWluZ0RyYWdnZWQgPSBkaS5pbmplY3QocHJpdmF0ZUl0ZW1CZWluZ0RyYWdnZWRJbmplY3RhYmxlKTtcblxuICAgIHJldHVybiAoKSA9PlxuICAgICAgKDxUPihjb250ZXh0OiBEcmFnZ2FibGVDb250ZXh0PFQ+KSA9PlxuICAgICAgICBnZXRQcml2YXRlSXRlbUJlaW5nRHJhZ2dlZChjb250ZXh0KSBhcyBJQ29tcHV0ZWRWYWx1ZTxUPikgYXMgSXRlbUJlaW5nRHJhZ2dlZDtcbiAgfSxcblxuICBpbmplY3Rpb25Ub2tlbjogaXRlbUJlaW5nRHJhZ2dlZEluamVjdGlvblRva2VuLFxufSk7XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgb2JzZXJ2YWJsZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgdHlwZSB7IERyYWdnYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vZ2V0LWRyYWdnYWJsZS1jb250ZXh0XCI7XG5cbi8vIFRoZSBjb250ZXh0IGlzIHRoZSBpbnN0YW50aWF0aW9uIHBhcmFtZXRlciwgc28gdjIga2V5cyBvbmUgc3RhdGUgYm94IHBlclxuLy8gY29udGV4dCBpZGVudGl0eSBcdTIwMTQgd2hhdCB0aGUga2V5ZWRTaW5nbGV0b24gdXNlZCB0byBzcGVsbCBvdXQuXG5leHBvcnQgY29uc3QgZHJhZ2dlZEl0ZW1TdGF0ZUluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcImRyYWdnZWQtaXRlbS1zdGF0ZVwiLFxuXG4gIGluc3RhbnRpYXRlOiAoKSA9PiAoX2NvbnRleHQ6IERyYWdnYWJsZUNvbnRleHQ8YW55PikgPT4gb2JzZXJ2YWJsZS5ib3godW5kZWZpbmVkLCB7IGRlZXA6IGZhbHNlIH0pLFxufSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luLCB0eXBlIENvbnRyaWJ1dGVQcm9wcywgdHlwZSBDb250cmlidXRlUmVmIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IEhvdmVyYWJsZVBsdWdpbiB9IGZyb20gXCIuLi9ob3ZlcmFibGUvaG92ZXJhYmxlXCI7XG5pbXBvcnQgeyBnZXRIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4uL2hvdmVyYWJsZS9ob3ZlcmFibGVcIjtcbmltcG9ydCB7IGl0ZW1CZWluZ0hvdmVyZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuLi9ob3ZlcmFibGUvaXRlbS1iZWluZy1ob3ZlcmVkLmluamVjdGFibGVcIjtcbmltcG9ydCB7IGhvdmVySXRlbVN0YXRlRm9ySW5qZWN0YWJsZSB9IGZyb20gXCIuLi9ob3ZlcmFibGUvaG92ZXJlZC1pdGVtLXN0YXRlLmluamVjdGFibGVcIjtcbmltcG9ydCB7IHVzZVN5bmNJbmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvdXNlLWluamVjdFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZUlkLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB0b29sdGlwRGVsYXlJbmplY3RhYmxlIH0gZnJvbSBcIi4vdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGVcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vdG9vbHRpcC5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBQbGFjZW1lbnQgfSBmcm9tIFwiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbVwiO1xuaW1wb3J0IHsgYXV0b1VwZGF0ZSwgZmxpcCwgb2Zmc2V0LCBzaGlmdCwgdXNlRmxvYXRpbmcgfSBmcm9tIFwiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbVwiO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHR5cGUgeyBSZWZQbHVnaW4gfSBmcm9tIFwiLi4vcmVmL3JlZlwiO1xuaW1wb3J0IHsgbm9vcCwgdHlwZSBNYXliZUFzeW5jVm9pZEZ1bmN0aW9uIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcbmltcG9ydCB7IE1pbmltYWxEaXYsIHR5cGUgTWluaW1hbERpdlByb3BzIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzL21pbmltYWwtZGl2XCI7XG5pbXBvcnQgeyBhY3Rpb24sIGF1dG9ydW4sIG9ic2VydmFibGUgfSBmcm9tIFwibW9ieFwiO1xuXG50eXBlIFRvb2x0aXBDb250ZW50UHJvcHM8UHJvcHMgZXh0ZW5kcyBvYmplY3Q+ID1cbiAgfCB7XG4gICAgICAvKiogUGxhaW4tdGV4dCBjb250ZW50IG9mIHRoZSB0b29sdGlwLiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgQ29udGVudGAuICovXG4gICAgICByZWFkb25seSBjb250ZW50VGV4dDogc3RyaW5nO1xuICAgICAgcmVhZG9ubHkgQ29udGVudD86IHVuZGVmaW5lZDtcbiAgICAgIHJlYWRvbmx5IGNvbnRlbnRQcm9wcz86IHVuZGVmaW5lZDtcbiAgICB9XG4gIHwge1xuICAgICAgcmVhZG9ubHkgY29udGVudFRleHQ/OiB1bmRlZmluZWQ7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBjb21wb25lbnQgcmVuZGVyZWQgYXMgdGhlIGNvbnRlbnQgb2YgdGhlIHRvb2x0aXAuIE11c3QgaGF2ZSBhIHN0YWJsZVxuICAgICAgICogaWRlbnRpdHkgKG1vZHVsZSBzY29wZSkgXHUyMDE0IGRhdGEgZmxvd3MgaW4gdGhyb3VnaCBgY29udGVudFByb3BzYCwgbmV2ZXJcbiAgICAgICAqIHRocm91Z2ggY2xvc3VyZSBjYXB0dXJlLlxuICAgICAgICovXG4gICAgICByZWFkb25seSBDb250ZW50OiBSZWFjdC5Db21wb25lbnRUeXBlPFByb3BzPjtcbiAgICAgIC8qKiBUaGUgcHJvcHMgdGhlIHRvb2x0aXAgcGFzc2VzIHRvIGBDb250ZW50YCB3aGVuIHJlbmRlcmluZyBpdC4gKi9cbiAgICAgIHJlYWRvbmx5IGNvbnRlbnRQcm9wcz86IFByb3BzO1xuICAgIH07XG5cbmV4cG9ydCB0eXBlICRUb29sdGlwUHJvcHM8UHJvcHMgZXh0ZW5kcyBvYmplY3QgPSBSZWNvcmQ8bmV2ZXIsIG5ldmVyPj4gPSB7XG4gIHJlYWRvbmx5IHBvc2l0aW9uPzogUGxhY2VtZW50O1xuICByZWFkb25seSBvblRvb2x0aXBTaG93bj86IE1heWJlQXN5bmNWb2lkRnVuY3Rpb247XG59ICYgVG9vbHRpcENvbnRlbnRQcm9wczxQcm9wcz47XG5cbi8qKlxuICogVHlwZS1jaGVja3MgdGhlIHBhaXJpbmcgb2YgYENvbnRlbnRgIGFuZCBgY29udGVudFByb3BzYCBvZiBhbiBvYmplY3QtZm9ybVxuICogYCR0b29sdGlwYDogYGNvbnRlbnRQcm9wc2AgaXMgcmVxdWlyZWQgdG8gYmUgdGhlIHByb3BzIG9mIGBDb250ZW50YCwgYW5kIGl0XG4gKiBpcyByZXF1aXJlZCB0byBiZSBwcmVzZW50IHdoZW4gYENvbnRlbnRgIGhhcyByZXF1aXJlZCBwcm9wcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRvb2x0aXBQcm9wcyh0b29sdGlwUHJvcHM6ICRUb29sdGlwUHJvcHMpOiAkVG9vbHRpcFByb3BzPGFueT47XG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9vbHRpcFByb3BzPFByb3BzIGV4dGVuZHMgb2JqZWN0PihcbiAgdG9vbHRpcFByb3BzOiAkVG9vbHRpcFByb3BzPFByb3BzPiAmIHsgcmVhZG9ubHkgY29udGVudFByb3BzOiBQcm9wcyB9LFxuKTogJFRvb2x0aXBQcm9wczxhbnk+O1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRvb2x0aXBQcm9wcyh0b29sdGlwUHJvcHM6ICRUb29sdGlwUHJvcHM8YW55Pik6ICRUb29sdGlwUHJvcHM8YW55PiB7XG4gIHJldHVybiB0b29sdGlwUHJvcHM7XG59XG5cbmV4cG9ydCB0eXBlIFRvb2x0aXBQbHVnaW5Qcm9wcyA9IHtcbiAgLyoqIE51bGxpc2ggbWVhbnMgbm8gdG9vbHRpcCwgc28gY29uZGl0aW9uYWwgc291cmNlcyAoYHN0cmluZyB8IG51bGxgKSBwYXNzIHRocm91Z2ggYXMtaXMuICovXG4gICR0b29sdGlwPzogc3RyaW5nIHwgJFRvb2x0aXBQcm9wczxhbnk+IHwgbnVsbDtcbn07XG5cbi8qKlxuICogQSB0b29sdGlwIG9mIG5vdGhpbmc6IHRoZSBlbGVtZW50IHRha2VzIHRoZSBob3Zlciwgc28gbm8gZW5jbG9zaW5nIGVsZW1lbnQgc2hvd3MgaXRzIHRvb2x0aXBcbiAqIHdoaWxlIHRoZSBwb2ludGVyIGlzIG92ZXIgdGhpcyBvbmUsIGFuZCBzaG93cyBub3RoaW5nIG9mIGl0cyBvd24uIE51bGxpc2ggYCR0b29sdGlwYCBsZWF2ZXMgdGhlXG4gKiBlbmNsb3NpbmcgdG9vbHRpcCBhbG9uZSBpbnN0ZWFkIFx1MjAxNCB1c2UgdGhpcyB3aGVyZSBhbiBlbGVtZW50IG11c3Qgbm90IGJlIGRlc2NyaWJlZCBieSB3aGF0ZXZlclxuICogZW5jbG9zZXMgaXQsIGEgcGFuZWwgb3BlbmVkIGZyb20gYSByb3cgd2l0aCBhIHRvb2x0aXAgYmVpbmcgdGhlIGNhc2UgdGhhdCBuZWVkcyBpdDogYSB0b29sdGlwXG4gKiBnb2VzIGludG8gdGhlIHRvcCBsYXllciwgc28gaXQgd291bGQgcGFpbnQgb3ZlciB3aGF0IHRoZSBwYW5lbCBpcyB0aGVyZSBmb3IuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogPExpICR0b29sdGlwPXtzdXBwcmVzc1Rvb2x0aXB9PlxuICogICA8U2V0dGluZ3MgLz5cbiAqIDwvTGk+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IHN1cHByZXNzVG9vbHRpcDogJFRvb2x0aXBQcm9wcyA9IHsgY29udGVudFRleHQ6IFwiXCIgfTtcblxuY29uc3QgaG92ZXJhYmxlVG9vbHRpcENvbnRleHQgPSBnZXRIb3ZlcmFibGVDb250ZXh0PEhUTUxFbGVtZW50IHwgbnVsbD4oKTtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZFRvb2x0aXBDb250YWluZXIgPSAocHJvcHM6IE1pbmltYWxEaXZQcm9wcykgPT4ge1xuICBjb25zdCB7ICRjbGFzc05hbWUsIC4uLnJlc3QgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPE1pbmltYWxEaXZcbiAgICAgICRwYWRkaW5nXG4gICAgICAkYmFja2dyb3VuZENvbG9yPVwiYmFja2dyb3VuZFNlY29uZGFyeVwiXG4gICAgICAkYm9yZGVyPXt7IHJhZGl1czogdHJ1ZSB9fVxuICAgICAgJGZvbnQ9e3sgc2l6ZTogXCJzXCIgfX1cbiAgICAgICRib3hTaGFkb3dcbiAgICAgICRub1BvaW50ZXJFdmVudHNcbiAgICAgICRhYnNvbHV0ZVxuICAgICAgJGNsYXNzTmFtZT17W3N0eWxlcy50b29sdGlwLCAkY2xhc3NOYW1lXX1cbiAgICAgIGRhdGEtdG9vbHRpcC1jb250YWluZXItdGVzdFxuICAgICAgey4uLnJlc3R9XG4gICAgLz5cbiAgKTtcbn07XG5cbnR5cGUgRmxvYXRpbmdTdHlsZWRUb29sdGlwQ29udGFpbmVyUHJvcHMgPSB7XG4gIGNvbnRlbnQ6IFJlYWN0LlJlYWN0Tm9kZTtcbiAgcG9zaXRpb246IFBsYWNlbWVudDtcbiAgcmVmZXJlbmNlOiBIVE1MRWxlbWVudCB8IG51bGw7XG4gIG9uVG9vbHRpcFNob3duOiBWb2lkRnVuY3Rpb247XG59O1xuXG50eXBlIFBvcG92ZXJDYXBhYmxlID0gSFRNTEVsZW1lbnQgJiB7IHNob3dQb3BvdmVyOiBWb2lkRnVuY3Rpb247IGhpZGVQb3BvdmVyOiBWb2lkRnVuY3Rpb24gfTtcblxuY29uc3QgaXNQb3BvdmVyQ2FwYWJsZSA9IChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGVsZW1lbnQgaXMgUG9wb3ZlckNhcGFibGUgPT5cbiAgdHlwZW9mIChlbGVtZW50IGFzIFBhcnRpYWw8UG9wb3ZlckNhcGFibGU+KS5zaG93UG9wb3ZlciA9PT0gXCJmdW5jdGlvblwiO1xuXG5jb25zdCBGbG9hdGluZ1N0eWxlZFRvb2x0aXBDb250YWluZXIgPSAocHJvcHM6IEZsb2F0aW5nU3R5bGVkVG9vbHRpcENvbnRhaW5lclByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY29udGVudCwgcG9zaXRpb24sIHJlZmVyZW5jZSwgb25Ub29sdGlwU2hvd24gfSA9IHByb3BzO1xuICBjb25zdCBbZmxvYXRpbmcsIHNldEZsb2F0aW5nXSA9IHVzZVN0YXRlPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHsgZmxvYXRpbmdTdHlsZXMgfSA9IHVzZUZsb2F0aW5nKHtcbiAgICBwbGFjZW1lbnQ6IHBvc2l0aW9uLFxuICAgIG1pZGRsZXdhcmU6IFtmbGlwKCksIG9mZnNldCg4KSwgc2hpZnQoKV0sXG4gICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6IGF1dG9VcGRhdGUsXG4gICAgZWxlbWVudHM6IHtcbiAgICAgIGZsb2F0aW5nLFxuICAgICAgcmVmZXJlbmNlLFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IHdlIGRvbid0IHdhbnQgdG8gY2FsbCBvblRvb2x0aXBTaG93biBldmVyeSB0aW1lIGl0IHVwZGF0ZXMgd2hpbGUgdGhlIHRvb2x0aXAgaXMgYmVpbmcgc2hvd1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHZvaWQgb25Ub29sdGlwU2hvd24oKTtcbiAgfSwgW10pO1xuXG4gIC8vIEludG8gdGhlIHRvcCBsYXllciwgd2hlcmUgYSBkcm9wLWRvd24gbWVudSBhbHJlYWR5IHB1dHMgaXRzZWxmOiBubyB6LWluZGV4IGNhblxuICAvLyBwYWludCBvdmVyIGEgcG9wb3Zlciwgc28gYSB0b29sdGlwIGFueXdoZXJlIG5lYXIgYW4gb3BlbiBtZW51IHdvdWxkIGJlIGhpZGRlblxuICAvLyBiZWhpbmQgaXQuIFNob3duIGFmdGVyIHRoZSBtZW51IG9wZW5lZCwgc28gaXQgbGFuZHMgYWJvdmUgaXQuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFmbG9hdGluZyB8fCAhaXNQb3BvdmVyQ2FwYWJsZShmbG9hdGluZykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmbG9hdGluZy5zaG93UG9wb3ZlcigpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChmbG9hdGluZy5pc0Nvbm5lY3RlZCkge1xuICAgICAgICBmbG9hdGluZy5oaWRlUG9wb3ZlcigpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtmbG9hdGluZ10pO1xuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFRvb2x0aXBDb250YWluZXIgJHJlZj17c2V0RmxvYXRpbmd9IHBvcG92ZXI9XCJtYW51YWxcIiBzdHlsZT17ZmxvYXRpbmdTdHlsZXN9PlxuICAgICAge2NvbnRlbnR9XG4gICAgPC9TdHlsZWRUb29sdGlwQ29udGFpbmVyPlxuICApO1xufTtcblxuZXhwb3J0IHR5cGUgVG9vbHRpcFBsdWdpbjxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+ID0gUmV0dXJuVHlwZTx0eXBlb2YgdG9vbHRpcFBsdWdpbjxUPj47XG5cbnR5cGUgTm9ybWFsaXplZFRvb2x0aXBQcm9wcyA9IHtcbiAgcmVhZG9ubHkgY29udGVudFRleHQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IENvbnRlbnQ/OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT47XG4gIHJlYWRvbmx5IGNvbnRlbnRQcm9wcz86IGFueTtcbiAgcmVhZG9ubHkgcG9zaXRpb246IFBsYWNlbWVudDtcbiAgcmVhZG9ubHkgb25Ub29sdGlwU2hvd246IE1heWJlQXN5bmNWb2lkRnVuY3Rpb247XG59O1xuXG50eXBlIFRvb2x0aXBXcmFwcGVyUHJvcHMgPSB7XG4gIHJlYWRvbmx5IHRvb2x0aXA6IE5vcm1hbGl6ZWRUb29sdGlwUHJvcHM7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVSZWY6IENvbnRyaWJ1dGVSZWY7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVQcm9wczogQ29udHJpYnV0ZVByb3BzO1xuICByZWFkb25seSBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgVG9vbHRpcFdyYXBwZXJDb21wb25lbnQgPSAoeyB0b29sdGlwLCBjb250cmlidXRlUmVmLCBjb250cmlidXRlUHJvcHMsIGNoaWxkcmVuIH06IFRvb2x0aXBXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29uc3QgW3JlZmVyZW5jZSwgc2V0UmVmZXJlbmNlXSA9IHVzZVN0YXRlPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnRyaWJ1dGVSZWYoc2V0UmVmZXJlbmNlKTtcblxuICBjb25zdCB0b29sdGlwRGVsYXkgPSB1c2VTeW5jSW5qZWN0KHRvb2x0aXBEZWxheUluamVjdGFibGUpO1xuICBjb25zdCBob3Zlckl0ZW1TdGF0ZUZvciA9IHVzZVN5bmNJbmplY3QoaG92ZXJJdGVtU3RhdGVGb3JJbmplY3RhYmxlKTtcbiAgY29uc3QgaG92ZXJlZEl0ZW0gPSB1c2VTeW5jSW5qZWN0KGl0ZW1CZWluZ0hvdmVyZWRJbmplY3Rpb25Ub2tlbikoaG92ZXJhYmxlVG9vbHRpcENvbnRleHQpO1xuICBjb25zdCBpZCA9IHVzZUlkKCk7XG5cbiAgY29uc3QgcmVmZXJlbmNlUmVmID0gdXNlUmVmKHJlZmVyZW5jZSk7XG4gIHJlZmVyZW5jZVJlZi5jdXJyZW50ID0gcmVmZXJlbmNlO1xuXG4gIGNvbnN0IHRvb2x0aXBEZWxheVJlZiA9IHVzZVJlZih0b29sdGlwRGVsYXkpO1xuICB0b29sdGlwRGVsYXlSZWYuY3VycmVudCA9IHRvb2x0aXBEZWxheTtcblxuICBjb250cmlidXRlUHJvcHMoe1xuICAgIG9uTW91c2VFbnRlcjogYWN0aW9uKCgpID0+IHtcbiAgICAgIGNvbnN0IGhvdmVyZWRBdCA9IERhdGUubm93KCk7XG5cbiAgICAgIGhvdmVySXRlbVN0YXRlRm9yKGhvdmVyYWJsZVRvb2x0aXBDb250ZXh0KS5zZXQoaWQsIHtcbiAgICAgICAgaG92ZXJlZEF0OiBvYnNlcnZhYmxlLmJveChob3ZlcmVkQXQsIHsgZGVlcDogZmFsc2UgfSksXG4gICAgICAgIGdldFByb3BzOiAoKSA9PiAoe1xuICAgICAgICAgIGl0ZW06IHJlZmVyZW5jZVJlZi5jdXJyZW50LFxuICAgICAgICAgIGRlbGF5OiB0b29sdGlwRGVsYXlSZWYuY3VycmVudCA/PyAwLFxuICAgICAgICAgIG9uSG92ZXI6IG5vb3AsXG4gICAgICAgICAgb25VbmhvdmVyOiBub29wLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgIH0pLFxuXG4gICAgb25Nb3VzZUxlYXZlOiBhY3Rpb24oKCkgPT4ge1xuICAgICAgY29uc3QgaG92ZXJlZFN0YXRlID0gaG92ZXJJdGVtU3RhdGVGb3IoaG92ZXJhYmxlVG9vbHRpcENvbnRleHQpO1xuICAgICAgY29uc3QgaG92ZXJlZEF0ID0gRGF0ZS5ub3coKTtcblxuICAgICAgaG92ZXJlZFN0YXRlLmRlbGV0ZShpZCk7XG4gICAgICBob3ZlcmVkU3RhdGUuZm9yRWFjaCgoc3RhdGUpID0+IHN0YXRlLmhvdmVyZWRBdC5zZXQoaG92ZXJlZEF0KSk7XG4gICAgfSksXG4gIH0pO1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgYWN0aW9uKCgpID0+IHtcbiAgICAgICAgaG92ZXJJdGVtU3RhdGVGb3IoaG92ZXJhYmxlVG9vbHRpcENvbnRleHQpLmRlbGV0ZShpZCk7XG4gICAgICB9KSxcbiAgICBbaG92ZXJJdGVtU3RhdGVGb3IsIGlkXSxcbiAgKTtcblxuICBjb25zdCBbaG92ZXJlZCwgc2V0SG92ZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gYXV0b3J1bigoKSA9PiB7XG4gICAgICBjb25zdCBpc0hvdmVyZWQgPSBob3ZlcmVkSXRlbS5nZXQoKSA9PT0gcmVmZXJlbmNlUmVmLmN1cnJlbnQ7XG4gICAgICBzZXRIb3ZlcmVkKGlzSG92ZXJlZCk7XG4gICAgfSk7XG4gIH0sIFtob3ZlcmVkSXRlbV0pO1xuXG4gIGNvbnN0IHsgY29udGVudFRleHQsIENvbnRlbnQsIGNvbnRlbnRQcm9wcywgcG9zaXRpb24sIG9uVG9vbHRpcFNob3duIH0gPSB0b29sdGlwO1xuICBjb25zdCBjb250ZW50ID0gaG92ZXJlZCA/IENvbnRlbnQgPT09IHVuZGVmaW5lZCA/IGNvbnRlbnRUZXh0IDogPENvbnRlbnQgey4uLmNvbnRlbnRQcm9wc30gLz4gOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2NvbnRlbnRcbiAgICAgICAgPyBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICA8RmxvYXRpbmdTdHlsZWRUb29sdGlwQ29udGFpbmVyIHsuLi57IGNvbnRlbnQsIHBvc2l0aW9uLCBvblRvb2x0aXBTaG93biwgcmVmZXJlbmNlIH19IC8+LFxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgICAgICApXG4gICAgICAgIDogbnVsbH1cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB0b29sdGlwUGx1Z2luPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4oKSB7XG4gIHJldHVybiBnZXRQbHVnaW48VG9vbHRpcFBsdWdpblByb3BzLCBbSG92ZXJhYmxlUGx1Z2luPFQ+LCBSZWZQbHVnaW48VD5dPigocHJvcHMpID0+IHtcbiAgICBjb25zdCB7ICR0b29sdGlwIH0gPSBwcm9wcyBhcyB0eXBlb2YgcHJvcHMgJiB7IHJlYWRvbmx5IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlIH07XG5cbiAgICBpZiAoJHRvb2x0aXAgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJHRvb2x0aXA6IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgY29udGVudFRleHQsXG4gICAgICBDb250ZW50LFxuICAgICAgY29udGVudFByb3BzLFxuICAgICAgcG9zaXRpb24gPSBcImJvdHRvbVwiLFxuICAgICAgb25Ub29sdGlwU2hvd24gPSBub29wLFxuICAgIH06ICRUb29sdGlwUHJvcHM8YW55PiA9IHR5cGVvZiAkdG9vbHRpcCA9PT0gXCJzdHJpbmdcIiA/IHsgY29udGVudFRleHQ6ICR0b29sdGlwIH0gOiAkdG9vbHRpcDtcblxuICAgIHJldHVybiB7XG4gICAgICAkdG9vbHRpcDogdW5kZWZpbmVkLFxuICAgICAgJHdyYXBwZXI6IHtcbiAgICAgICAgQ29tcG9uZW50OiBUb29sdGlwV3JhcHBlckNvbXBvbmVudCxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICB0b29sdGlwOiB7IGNvbnRlbnRUZXh0LCBDb250ZW50LCBjb250ZW50UHJvcHMsIHBvc2l0aW9uLCBvblRvb2x0aXBTaG93biB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9KTtcbn1cbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCBjb25zdCB0b29sdGlwRGVsYXlJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJ0b29sdGlwLWRlbGF5XCIsXG4gIGluc3RhbnRpYXRlOiAoKSA9PiAoKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IDUwMCxcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcInRvb2x0aXBcIjogXCJ0b29sdGlwLW1vZHVsZV9fdG9vbHRpcF9fX3ZhT0F1XCJcbn07IiwgImltcG9ydCB7IGdldEVsZW1lbnRDb21wb25lbnQgfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB7IG9ic2VydmVyIH0gZnJvbSBcIm1vYngtcmVhY3RcIjtcbmltcG9ydCB7IGFic29sdXRlUGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvYWJzb2x1dGUvYWJzb2x1dGVcIjtcbmltcG9ydCB7IHBhZGRpbmdQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9wYWRkaW5nL3BhZGRpbmdcIjtcbmltcG9ydCB7IGJhY2tncm91bmRDb2xvclBsdWdpbiB9IGZyb20gXCIuLi9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvclwiO1xuaW1wb3J0IHsgYm9yZGVyUGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvYm9yZGVyL2JvcmRlclwiO1xuaW1wb3J0IHsgZm9udFBsdWdpbiB9IGZyb20gXCIuLi9wbHVnaW5zL2ZvbnQvZm9udFwiO1xuaW1wb3J0IHsgYm94U2hhZG93UGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvYm94LXNoYWRvdy9ib3gtc2hhZG93XCI7XG5pbXBvcnQgeyBub1BvaW50ZXJFdmVudHNQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50c1wiO1xuaW1wb3J0IHsgcmVmUGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvcmVmL3JlZlwiO1xuaW1wb3J0IHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyByZWxhdGl2ZVBsdWdpbiB9IGZyb20gXCIuLi9wbHVnaW5zL3JlbGF0aXZlL3JlbGF0aXZlXCI7XG5pbXBvcnQgeyBob3ZlcmFibGVQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9ob3ZlcmFibGUvaG92ZXJhYmxlXCI7XG5cbmNvbnN0IHBsdWdpbnMgPSBbXG4gIHBhZGRpbmdQbHVnaW4sXG4gIGJveFNoYWRvd1BsdWdpbixcbiAgYm9yZGVyUGx1Z2luLFxuICBmb250UGx1Z2luLFxuICBiYWNrZ3JvdW5kQ29sb3JQbHVnaW4sXG4gIG5vUG9pbnRlckV2ZW50c1BsdWdpbixcbiAgcmVsYXRpdmVQbHVnaW4sXG4gIGFic29sdXRlUGx1Z2luLFxuICBjbGFzc05hbWVQbHVnaW4sXG5dO1xuXG5jb25zdCBnZXRUeXBlZFBsdWdpbnMgPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PigpID0+IFtob3ZlcmFibGVQbHVnaW48VD4oKSwgcmVmUGx1Z2luPFQ+KCldO1xuXG5leHBvcnQgY29uc3QgTWluaW1hbERpdiA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJkaXZcIiwgLi4ucGx1Z2lucywgLi4uZ2V0VHlwZWRQbHVnaW5zPEhUTUxEaXZFbGVtZW50PigpKSk7XG5cbmV4cG9ydCB0eXBlIE1pbmltYWxEaXZQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBNaW5pbWFsRGl2PjtcbiIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGFic29sdXRlU3R5bGVzIGZyb20gXCIuL2Fic29sdXRlLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIEFic29sdXRlUG9zaXRpb24gPVxuICB8IFwiYWJzb2x1dGUtY2VudGVyLWxlZnQtdG8tcmVsYXRpdmUtY2VudGVyLXJpZ2h0XCJcbiAgfCBcImFic29sdXRlLWJvdHRvbS1sZWZ0LXRvLXJlbGF0aXZlLXRvcC1sZWZ0XCJcbiAgfCBcImFic29sdXRlLWJvdHRvbS10by1yZWxhdGl2ZS1ib3R0b21cIlxuICB8IFwiYWJzb2x1dGUtdG9wLWNlbnRlci10by1yZWxhdGl2ZS10b3AtY2VudGVyXCI7XG5cbmV4cG9ydCB0eXBlIEFic29sdXRlUGx1Z2luUHJvcHMgPSB7ICRhYnNvbHV0ZT86IEFic29sdXRlUG9zaXRpb24gfCBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBhYnNvbHV0ZVBsdWdpbiA9IGdldFBsdWdpbjxBYnNvbHV0ZVBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW1xuICAgIHByb3BzLiRjbGFzc05hbWUsXG4gICAge1xuICAgICAgW2Fic29sdXRlU3R5bGVzLmFic29sdXRlXTogISFwcm9wcy4kYWJzb2x1dGUsXG5cbiAgICAgIFthYnNvbHV0ZVN0eWxlc1tgYWJzb2x1dGUtLSR7cHJvcHMuJGFic29sdXRlfWBdXTogdHlwZW9mIHByb3BzLiRhYnNvbHV0ZSA9PT0gXCJzdHJpbmdcIixcbiAgICB9LFxuICBdLFxuXG4gICRhYnNvbHV0ZTogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2Fic29sdXRlL2Fic29sdXRlLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiYWJzb2x1dGVcIjogXCJhYnNvbHV0ZS1tb2R1bGVfX2Fic29sdXRlX19fTVgtLVlcIixcbiAgXCJhYnNvbHV0ZS0tYWJzb2x1dGUtY2VudGVyLWxlZnQtdG8tcmVsYXRpdmUtY2VudGVyLXJpZ2h0XCI6IFwiYWJzb2x1dGUtbW9kdWxlX19hYnNvbHV0ZS0tYWJzb2x1dGUtY2VudGVyLWxlZnQtdG8tcmVsYXRpdmUtY2VudGVyLXJpZ2h0X19fbEowcHJcIixcbiAgXCJhYnNvbHV0ZS0tYWJzb2x1dGUtYm90dG9tLWxlZnQtdG8tcmVsYXRpdmUtdG9wLWxlZnRcIjogXCJhYnNvbHV0ZS1tb2R1bGVfX2Fic29sdXRlLS1hYnNvbHV0ZS1ib3R0b20tbGVmdC10by1yZWxhdGl2ZS10b3AtbGVmdF9fXzNnMHNEXCIsXG4gIFwiYWJzb2x1dGUtLWFic29sdXRlLWNlbnRlci1jZW50ZXItdG8tcmVsYXRpdmUtYm90dG9tLXJpZ2h0XCI6IFwiYWJzb2x1dGUtbW9kdWxlX19hYnNvbHV0ZS0tYWJzb2x1dGUtY2VudGVyLWNlbnRlci10by1yZWxhdGl2ZS1ib3R0b20tcmlnaHRfX19nZ21POFwiLFxuICBcImFic29sdXRlLS1hYnNvbHV0ZS1ib3R0b20tdG8tcmVsYXRpdmUtYm90dG9tXCI6IFwiYWJzb2x1dGUtbW9kdWxlX19hYnNvbHV0ZS0tYWJzb2x1dGUtYm90dG9tLXRvLXJlbGF0aXZlLWJvdHRvbV9fX0NsbTBtXCIsXG4gIFwiYWJzb2x1dGUtLWFic29sdXRlLXRvcC1jZW50ZXItdG8tcmVsYXRpdmUtdG9wLWNlbnRlclwiOiBcImFic29sdXRlLW1vZHVsZV9fYWJzb2x1dGUtLWFic29sdXRlLXRvcC1jZW50ZXItdG8tcmVsYXRpdmUtdG9wLWNlbnRlcl9fX0V0a3k1XCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgcGFkZGluZ1N0eWxlcyBmcm9tIFwiLi9wYWRkaW5nLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gXCJsb2Rhc2gvZnBcIjtcbmltcG9ydCB0eXBlIHsgVFNoaXJ0U2l6ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5cbmV4cG9ydCB0eXBlIERpcmVjdGlvbmFsUGFkZGluZyA9IHtcbiAgdG9wPzogVFNoaXJ0U2l6ZTtcbiAgYm90dG9tPzogVFNoaXJ0U2l6ZTtcbiAgbGVmdD86IFRTaGlydFNpemU7XG4gIHJpZ2h0PzogVFNoaXJ0U2l6ZTtcbiAgaG9yaXpvbnRhbD86IFRTaGlydFNpemU7XG4gIHZlcnRpY2FsPzogVFNoaXJ0U2l6ZTtcbn07XG5cbmV4cG9ydCB0eXBlIFBhZGRpbmdQbHVnaW5Qcm9wcyA9IHsgJHBhZGRpbmc/OiBib29sZWFuIHwgRGlyZWN0aW9uYWxQYWRkaW5nIHwgVFNoaXJ0U2l6ZSB9O1xuXG5leHBvcnQgY29uc3QgcGFkZGluZ1BsdWdpbiA9IGdldFBsdWdpbjxQYWRkaW5nUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJHBhZGRpbmcpIHtcbiAgICByZXR1cm4geyAkcGFkZGluZzogdW5kZWZpbmVkIH07XG4gIH1cblxuICBjb25zdCBwYWRkaW5nID0gcHJvcHMuJHBhZGRpbmcgPT09IHRydWUgPyBcInhzXCIgOiBwcm9wcy4kcGFkZGluZztcblxuICBpZiAoaXNTdHJpbmcocGFkZGluZykpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHBhZGRpbmdTdHlsZXNbYHBhZGRpbmctLSR7cGFkZGluZ31gXV0sXG4gICAgICAkcGFkZGluZzogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBjb25zdCB0b3BTaXplID0gcGFkZGluZy50b3AgfHwgcGFkZGluZy52ZXJ0aWNhbDtcbiAgY29uc3QgYm90dG9tU2l6ZSA9IHBhZGRpbmcuYm90dG9tIHx8IHBhZGRpbmcudmVydGljYWw7XG4gIGNvbnN0IHJpZ2h0U2l6ZSA9IHBhZGRpbmcucmlnaHQgfHwgcGFkZGluZy5ob3Jpem9udGFsO1xuICBjb25zdCBsZWZ0U2l6ZSA9IHBhZGRpbmcubGVmdCB8fCBwYWRkaW5nLmhvcml6b250YWw7XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbXG4gICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuXG4gICAgICB7XG4gICAgICAgIFtwYWRkaW5nU3R5bGVzW2BwYWRkaW5nX190b3AtLSR7dG9wU2l6ZX1gXV06IHRvcFNpemUsXG4gICAgICAgIFtwYWRkaW5nU3R5bGVzW2BwYWRkaW5nX19yaWdodC0tJHtyaWdodFNpemV9YF1dOiByaWdodFNpemUsXG4gICAgICAgIFtwYWRkaW5nU3R5bGVzW2BwYWRkaW5nX19ib3R0b20tLSR7Ym90dG9tU2l6ZX1gXV06IGJvdHRvbVNpemUsXG4gICAgICAgIFtwYWRkaW5nU3R5bGVzW2BwYWRkaW5nX19sZWZ0LS0ke2xlZnRTaXplfWBdXTogbGVmdFNpemUsXG4gICAgICB9LFxuICAgIF0sXG5cbiAgICAkcGFkZGluZzogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvcGFkZGluZy9wYWRkaW5nLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwicGFkZGluZ19fdG9wLS16ZXJvXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0temVyb19fX2dxcWZaXCIsXG4gIFwicGFkZGluZ19fdG9wLS00eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS00eHNfX19ZLXk5c1wiLFxuICBcInBhZGRpbmdfX3RvcC0tM3hzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tM3hzX19fb2NjNE5cIixcbiAgXCJwYWRkaW5nX190b3AtLXh4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLXh4c19fX043QnNsXCIsXG4gIFwicGFkZGluZ19fdG9wLS14c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLXhzX19fTDBVRERcIixcbiAgXCJwYWRkaW5nX190b3AtLXNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS1zX19fa2xRZTJcIixcbiAgXCJwYWRkaW5nX190b3AtLW1cIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS1tX19fY3RhNXRcIixcbiAgXCJwYWRkaW5nX190b3AtLWxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS1sX19fTGctcHFcIixcbiAgXCJwYWRkaW5nX190b3AtLXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0teGxfX19YdnN2TFwiLFxuICBcInBhZGRpbmdfX3RvcC0teHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0teHhsX19fMWtlb2VcIixcbiAgXCJwYWRkaW5nX190b3AtLTN4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLTN4bF9fX2NVUHM5XCIsXG4gIFwicGFkZGluZ19fdG9wLS00eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS00eGxfX19xaWsyZVwiLFxuICBcInBhZGRpbmdfX3RvcC0tNXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tNXhsX19fczlrcFFcIixcbiAgXCJwYWRkaW5nX190b3AtLTZ4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLTZ4bF9fX3FjM0ZaXCIsXG4gIFwicGFkZGluZ19fdG9wLS03eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS03eGxfX190YUMtUFwiLFxuICBcInBhZGRpbmdfX3RvcC0tOHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tOHhsX19fTFdoanFcIixcbiAgXCJwYWRkaW5nX190b3AtLTl4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLTl4bF9fX0wxM2NwXCIsXG4gIFwicGFkZGluZ19fdG9wLS0xMHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tMTB4bF9fX0lkZTlDXCIsXG4gIFwicGFkZGluZ19fdG9wLS0xMXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tMTF4bF9fX0h0dFNjXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLXplcm9cIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLXplcm9fX182dlliVFwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS00eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLTR4c19fX2hqTzhEXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTN4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tM3hzX19fTVhSN0dcIixcbiAgXCJwYWRkaW5nX19yaWdodC0teHhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS14eHNfX19GbjNPaFwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS14c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0teHNfX19rcHNRUFwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS1zXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS1zX19fN2VCRFZcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tbVwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tbV9fX3hHZHR1XCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLWxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLWxfX19NeXljNFwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS14bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0teGxfX18tR0dqSlwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS14eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLXh4bF9fXzB5TkVaXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTN4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tM3hsX19fYmJPUENcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tNHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS00eGxfX192QVpFVVwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS01eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLTV4bF9fX3BzTmhiXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTZ4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tNnhsX19fSnd3a1JcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tN3hsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS03eGxfX19nb213OVwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS04eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLTh4bF9fX1ZodlZaXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTl4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tOXhsX19fNE9CTm5cIixcbiAgXCJwYWRkaW5nX19yaWdodC0tMTB4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tMTB4bF9fX2VPVUEzXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTExeGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLTExeGxfX19JNzkyZ1wiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0temVyb1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLXplcm9fX19GUzk4NFwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tNHhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tNHhzX19fd2hpMXhcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLTN4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTN4c19fX2U1cmtZXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS14eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS14eHNfX194UXZWdlwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0teHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS14c19fX29jeWkwXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS1zXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tc19fXzZJYm5WXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS1tXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tbV9fX2d4QjJNXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS1sXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tbF9fX2NiTW83XCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS14bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLXhsX19fdExBb3pcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLXh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLXh4bF9fX2czNUItXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS0zeGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS0zeGxfX19BejhraVwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tNHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tNHhsX19fa2JTLVJcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLTV4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTV4bF9fX3dqbE9vXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS02eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS02eGxfX19JRHhSTFwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tN3hsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tN3hsX19fSHFGbWlcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLTh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTh4bF9fX3VMTmVCXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS05eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS05eGxfX19rWGpmLVwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tMTB4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTEweGxfX19TSkNCeFwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tMTF4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTExeGxfX19MUi1tc1wiLFxuICBcInBhZGRpbmdfX2xlZnQtLXplcm9cIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0temVyb19fX09DVGNZXCIsXG4gIFwicGFkZGluZ19fbGVmdC0tNHhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2xlZnQtLTR4c19fXzA4OTA4XCIsXG4gIFwicGFkZGluZ19fbGVmdC0tM3hzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2xlZnQtLTN4c19fX2ZlQzAtXCIsXG4gIFwicGFkZGluZ19fbGVmdC0teHhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2xlZnQtLXh4c19fX3hOYjJKXCIsXG4gIFwicGFkZGluZ19fbGVmdC0teHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0teHNfX19kQmM2WFwiLFxuICBcInBhZGRpbmdfX2xlZnQtLXNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tc19fX2tzaWdyXCIsXG4gIFwicGFkZGluZ19fbGVmdC0tbVwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS1tX19fbGJtUmxcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS1sXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2xlZnQtLWxfX19rR2d4blwiLFxuICBcInBhZGRpbmdfX2xlZnQtLXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2xlZnQtLXhsX19fUTlwTklcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS14eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0teHhsX19fa1gwYWNcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS0zeGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tM3hsX19fM1VuNmJcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS00eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tNHhsX19fem5PM25cIixcbiAgXCJwYWRkaW5nX19sZWZ0LS01eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tNXhsX19fUlRIc1BcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS02eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tNnhsX19faDVCRUFcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS03eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tN3hsX19fclRaZmhcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS04eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tOHhsX19fbmRNdTlcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS05eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tOXhsX19fYjBHQTBcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS0xMHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2xlZnQtLTEweGxfX19Qd0RTVlwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTExeGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tMTF4bF9fXzJIc3ZKXCIsXG4gIFwicGFkZGluZy0temVyb1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS16ZXJvX19faHdtZnBcIixcbiAgXCJwYWRkaW5nLS00eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZy0tNHhzX19fUU9VS0JcIixcbiAgXCJwYWRkaW5nLS0zeHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZy0tM3hzX19fUnM0SXVcIixcbiAgXCJwYWRkaW5nLS14eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZy0teHhzX19fTUlkQ0pcIixcbiAgXCJwYWRkaW5nLS14c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS14c19fX1F3aGFCXCIsXG4gIFwicGFkZGluZy0tc1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS1zX19fQkxIZS1cIixcbiAgXCJwYWRkaW5nLS1tXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLW1fX19QZHRaYVwiLFxuICBcInBhZGRpbmctLWxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZy0tbF9fX1JWRExrXCIsXG4gIFwicGFkZGluZy0teGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZy0teGxfX19jdVBhTlwiLFxuICBcInBhZGRpbmctLXh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS14eGxfX19IN1ZJSFwiLFxuICBcInBhZGRpbmctLTN4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS0zeGxfX19rdmlyVFwiLFxuICBcInBhZGRpbmctLTR4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS00eGxfX195MTdBMFwiLFxuICBcInBhZGRpbmctLTV4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS01eGxfX185eW1JOVwiLFxuICBcInBhZGRpbmctLTZ4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS02eGxfX18yS0NtYVwiLFxuICBcInBhZGRpbmctLTd4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS03eGxfX19Tc0l4blwiLFxuICBcInBhZGRpbmctLTh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS04eGxfX19zSFpwbVwiLFxuICBcInBhZGRpbmctLTl4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS05eGxfX19vVmNJZ1wiLFxuICBcInBhZGRpbmctLTEweGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZy0tMTB4bF9fX2pLR2tuXCIsXG4gIFwicGFkZGluZy0tMTF4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS0xMXhsX19fQWdKckdcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBiYWNrZ3JvdW5kQ29sb3JTdHlsZXMgZnJvbSBcIi4vYmFja2dyb3VuZC1jb2xvci5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBDb2xvciB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbG9yc1wiO1xuXG5leHBvcnQgdHlwZSBCYWNrZ3JvdW5kQ29sb3JBbGlhcyA9IGtleW9mIHR5cGVvZiBhbGlhc1RvTm9taW5hbDtcbmV4cG9ydCB0eXBlIEJhY2tncm91bmRDb2xvciA9IENvbG9yIHwgQmFja2dyb3VuZENvbG9yQWxpYXM7XG5cbmV4cG9ydCB0eXBlICRCYWNrZ3JvdW5kQ29sb3JQcm9wcyA9IHtcbiAgbm9ybWFsPzogQmFja2dyb3VuZENvbG9yO1xuICBob3Zlcj86IEJhY2tncm91bmRDb2xvcjtcbiAgZm9jdXM/OiBCYWNrZ3JvdW5kQ29sb3I7XG59O1xuXG5leHBvcnQgdHlwZSBCYWNrZ3JvdW5kQ29sb3JQbHVnaW5Qcm9wcyA9IHsgJGJhY2tncm91bmRDb2xvcj86IEJhY2tncm91bmRDb2xvciB8ICRCYWNrZ3JvdW5kQ29sb3JQcm9wcyB9O1xuXG5jb25zdCBhbGlhc1RvTm9taW5hbCA9IHtcbiAgYmFja2dyb3VuZFByaW1hcnk6IFwiZ3JleTgwXCIsXG4gIGJhY2tncm91bmRTZWNvbmRhcnk6IFwiZ3JleTEwMFwiLFxuICBiYWNrZ3JvdW5kUHJpbWFyeURpbW1lZDogXCJncmV5ODBBbHBoYTg1XCIsXG59IGFzIGNvbnN0O1xuXG5jb25zdCBpc0JhY2tncm91bmRDb2xvckFsaWFzID0gKGNvbG9yOiBCYWNrZ3JvdW5kQ29sb3IpOiBjb2xvciBpcyBCYWNrZ3JvdW5kQ29sb3JBbGlhcyA9PiBjb2xvciBpbiBhbGlhc1RvTm9taW5hbDtcblxuZXhwb3J0IGNvbnN0IGJhY2tncm91bmRDb2xvclBsdWdpbiA9IGdldFBsdWdpbjxCYWNrZ3JvdW5kQ29sb3JQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkYmFja2dyb3VuZENvbG9yOiBjb2xvciB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgbm9ybWFsLCBob3ZlciwgZm9jdXMgfSA9IHR5cGVvZiBjb2xvciA9PT0gXCJzdHJpbmdcIiA/IHsgbm9ybWFsOiBjb2xvciB9IDogKGNvbG9yID8/IHt9KTtcblxuICBjb25zdCBub3JtYWxDb2xvciA9IG5vcm1hbCA/IChpc0JhY2tncm91bmRDb2xvckFsaWFzKG5vcm1hbCkgPyBhbGlhc1RvTm9taW5hbFtub3JtYWxdIDogbm9ybWFsKSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgaG92ZXJDb2xvciA9IGhvdmVyID8gKGlzQmFja2dyb3VuZENvbG9yQWxpYXMoaG92ZXIpID8gYWxpYXNUb05vbWluYWxbaG92ZXJdIDogaG92ZXIpIDogdW5kZWZpbmVkO1xuICBjb25zdCBmb2N1c0NvbG9yID0gZm9jdXMgPyAoaXNCYWNrZ3JvdW5kQ29sb3JBbGlhcyhmb2N1cykgPyBhbGlhc1RvTm9taW5hbFtmb2N1c10gOiBmb2N1cykgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbXG4gICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuICAgICAgbm9ybWFsQ29sb3IgPyBiYWNrZ3JvdW5kQ29sb3JTdHlsZXNbYGJhY2tncm91bmRDb2xvci0tJHtub3JtYWxDb2xvcn1gXSA6IHVuZGVmaW5lZCxcbiAgICAgIGhvdmVyQ29sb3IgPyBiYWNrZ3JvdW5kQ29sb3JTdHlsZXNbYGJhY2tncm91bmRDb2xvci1ob3Zlci0tJHtob3ZlckNvbG9yfWBdIDogdW5kZWZpbmVkLFxuICAgICAgZm9jdXNDb2xvciA/IGJhY2tncm91bmRDb2xvclN0eWxlc1tgYmFja2dyb3VuZENvbG9yLWZvY3VzLS0ke2ZvY3VzQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgXSxcbiAgICAkYmFja2dyb3VuZENvbG9yOiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9iYWNrZ3JvdW5kLWNvbG9yL2JhY2tncm91bmQtY29sb3IubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWluaGVyaXRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1pbmhlcml0X19fTi1EdFlcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLXdoaXRlXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0td2hpdGVfX18xOGZ4dVwiLFxuICBcImJhY2tncm91bmRDb2xvci0tdHJhbnNwYXJlbnRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS10cmFuc3BhcmVudF9fX1ZkdC1ZXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5MTAwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTEwMF9fX1BSelV0XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5ODBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5ODBfX19hYnl0dVwiLFxuICBcImJhY2tncm91bmRDb2xvci0tZ3JleTYwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTYwX19fUFBBU2xcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXk0MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWdyZXk0MF9fX3dGQmFsXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5MzBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5MzBfX18tLThNVFwiLFxuICBcImJhY2tncm91bmRDb2xvci0tZ3JleTI1XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTI1X19fWUU4UWZcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXkyMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWdyZXkyMF9fXzYwMGpRXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5MTBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5MTBfX19JU3NjOVwiLFxuICBcImJhY2tncm91bmRDb2xvci0tZ3JleTcwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTcwX19fVi1aR0xcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5ODBBbHBoYTg1X19fN29UWDNcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLXByaW1hcnlcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1wcmltYXJ5X19fT0huckxcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLXN1Y2Nlc3NcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1zdWNjZXNzX19fV1VSM3lcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLW5vdGljZVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLW5vdGljZV9fX2xWTlJkXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS13YXJuaW5nXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0td2FybmluZ19fX0FyVnZsXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1jcml0aWNhbFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWNyaXRpY2FsX19fcC1XYjlcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tc3VjY2Vzc1RpbnRfX18yVVAzWVwiLFxuICBcImJhY2tncm91bmRDb2xvci0td2FybmluZ1RpbnRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS13YXJuaW5nVGludF9fX3F3RjA4XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1jcml0aWNhbFRpbnRfX19pSy1qbFwiLFxuICBcImJhY2tncm91bmRDb2xvci0tbGlua1wiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWxpbmtfX19qNFJqN1wiLFxuICBcImJhY2tncm91bmRDb2xvci0tY29kZVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWNvZGVfX19FbS1iSlwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0taW5oZXJpdFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWluaGVyaXRfX19teTJScVwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0td2hpdGVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS13aGl0ZV9fX3RlLWdwXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS10cmFuc3BhcmVudFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXRyYW5zcGFyZW50X19fMUQySWpcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkxMDBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5MTAwX19fLUpIdTJcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk4MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk4MF9fX3otODVJXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5NjBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5NjBfX19oVWJZM1wiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTQwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTQwX19fM0EtZTZcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkzMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkzMF9fXzctQ0ZqXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5MjVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5MjVfX19tSVQ4UVwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTIwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTIwX19fb01BY0RcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkxMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkxMF9fX2dSMTkzXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5NzBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5NzBfX19rMkpLTVwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTgwQWxwaGE4NVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk4MEFscGhhODVfX19DZGstLVwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tcHJpbWFyeVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXByaW1hcnlfX196dGd6QVwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tc3VjY2Vzc1wiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXN1Y2Nlc3NfX19HMzBWSFwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tbm90aWNlXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tbm90aWNlX19faldGY0NcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXdhcm5pbmdcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS13YXJuaW5nX19fdm4tQktcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWNyaXRpY2FsXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tY3JpdGljYWxfX19yNmJaSVwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tc3VjY2Vzc1RpbnRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1zdWNjZXNzVGludF9fXzg4TERqXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS13YXJuaW5nVGludFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXdhcm5pbmdUaW50X19fWGk2MkZcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWNyaXRpY2FsVGludFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWNyaXRpY2FsVGludF9fX1YwcTJvXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1saW5rXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tbGlua19fX1g5TEZxXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1jb2RlXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tY29kZV9fX2xIQ0lnXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1pbmhlcml0XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0taW5oZXJpdF9fX1JKUFdKXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS13aGl0ZVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLXdoaXRlX19feEY4dTNcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLXRyYW5zcGFyZW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tdHJhbnNwYXJlbnRfX190cXEteFwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTEwMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXkxMDBfX194dDF4TFwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTgwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTgwX19fZTI4ampcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXk2MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXk2MF9fX3d0RHdUXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5NDBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5NDBfX19EREhrUFwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTMwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTMwX19fWlZ2RDVcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXkyNVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXkyNV9fX0FzVjZmXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5MjBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5MjBfX19PTDBaWVwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTEwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTEwX19fbWFpemZcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXk3MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXk3MF9fX3ZSbkwyXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5ODBBbHBoYTg1XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTgwQWxwaGE4NV9fX1ZoeXVOXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1wcmltYXJ5XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tcHJpbWFyeV9fXzdUemt1XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1zdWNjZXNzXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tc3VjY2Vzc19fX255M3psXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ub3RpY2VcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ub3RpY2VfX19vdkZ2MVwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0td2FybmluZ1wiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLXdhcm5pbmdfX19xbG4ydVwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tY3JpdGljYWxcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1jcml0aWNhbF9fX1BnREk1XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1zdWNjZXNzVGludFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLXN1Y2Nlc3NUaW50X19fY3EtRDVcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLXdhcm5pbmdUaW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0td2FybmluZ1RpbnRfX19hSHRnQVwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tY3JpdGljYWxUaW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tY3JpdGljYWxUaW50X19fZUo5TmhcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWxpbmtcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1saW5rX19fVGxSUllcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWNvZGVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1jb2RlX19fZmE2NVVcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBib3JkZXJTdHlsZXMgZnJvbSBcIi4vYm9yZGVyLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IENvbG9yIH0gZnJvbSBcIi4uL19zaGFyZWQvY29sb3JzXCI7XG5pbXBvcnQgdHlwZSB7IEJvcmRlcldpZHRoIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgQ29ybmVyU3R5bGVzLCBnZXRDb3JuZXJTdHlsZXMgfSBmcm9tIFwiLi9nZXQtY29ybmVyLXN0eWxlc1wiO1xuaW1wb3J0IHsgZ2V0U2lkZVN0eWxlcywgdHlwZSBTaWRlU3R5bGVzIH0gZnJvbSBcIi4vZ2V0LXNpZGUtc3R5bGVzXCI7XG5pbXBvcnQgeyBjb21wYWN0IH0gZnJvbSBcImxvZGFzaC9mcFwiO1xuXG5leHBvcnQgdHlwZSBCb3JkZXJDb2xvckFsaWFzID0ga2V5b2YgdHlwZW9mIGFsaWFzVG9Ob21pbmFsO1xuZXhwb3J0IHR5cGUgQm9yZGVyQ29sb3IgPSBDb2xvciB8IEJvcmRlckNvbG9yQWxpYXM7XG5cbmNvbnN0IGFsaWFzVG9Ob21pbmFsID0geyBib3JkZXJQcmltYXJ5OiBcImdyZXk2MFwiIH0gYXMgY29uc3Q7XG5cbmNvbnN0IGlzQm9yZGVyQ29sb3JBbGlhcyA9IChjb2xvcjogQm9yZGVyQ29sb3IpOiBjb2xvciBpcyBCb3JkZXJDb2xvckFsaWFzID0+IGNvbG9yIGluIGFsaWFzVG9Ob21pbmFsO1xuXG5leHBvcnQgdHlwZSAkQm9yZGVyQ29sb3JQcm9wcyA9IHtcbiAgcmVhZG9ubHkgbm9ybWFsPzogQm9yZGVyQ29sb3I7XG4gIHJlYWRvbmx5IGhvdmVyPzogQm9yZGVyQ29sb3I7XG4gIHJlYWRvbmx5IGRpc2FibGVkPzogQm9yZGVyQ29sb3I7XG59O1xuXG5leHBvcnQgdHlwZSAkQm9yZGVyUHJvcHMgPSB7XG4gIGNvbG9yPzogQm9yZGVyQ29sb3IgfCAkQm9yZGVyQ29sb3JQcm9wcztcbiAgd2lkdGg/OiBCb3JkZXJXaWR0aCB8IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMZWF2ZSB0aGUgbGFzdCBvZiB0aGUgZWxlbWVudCdzIHNpYmxpbmdzIHdpdGhvdXQgdGhlIGJvcmRlciwgc28gdGhhdCBhIHN0YWNrXG4gICAqIG9mIGJvcmRlcmVkIHJvd3MgcmVhZHMgYXMgcm93cyBzZXBhcmF0ZWQgZnJvbSBlYWNoIG90aGVyIHJhdGhlciB0aGFuIGZyYW1lZC5cbiAgICovXG4gIGV4Y2VwdExhc3Q/OiBib29sZWFuO1xufSAmIFNpZGVTdHlsZXMgJlxuICBDb3JuZXJTdHlsZXM7XG5cbmV4cG9ydCB0eXBlIEJvcmRlclBsdWdpblByb3BzID0geyAkYm9yZGVyPzogJEJvcmRlclByb3BzIH07XG5cbmV4cG9ydCBjb25zdCBib3JkZXJQbHVnaW4gPSBnZXRQbHVnaW48Qm9yZGVyUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJGJvcmRlcikge1xuICAgIHJldHVybiB7ICRib3JkZXI6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgZ2V0Q29ybmVyU3R5bGVzKHByb3BzLiRib3JkZXIpLCBnZXRCb3JkZXJTdHlsZXMocHJvcHMuJGJvcmRlcildLFxuICAgICRib3JkZXI6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuXG5jb25zdCBnZXRCb3JkZXJTdHlsZXMgPSAoeyB3aWR0aCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgdG9wLCBjb2xvciwgZXhjZXB0TGFzdCB9OiAkQm9yZGVyUHJvcHMpID0+IHtcbiAgY29uc3QgYm9yZGVyV2lkdGggPSB3aWR0aCA9PT0gdHJ1ZSB8fCAod2lkdGggPT09IHVuZGVmaW5lZCAmJiBjb2xvcikgPyBcInh4c1wiIDogd2lkdGg7XG4gIGNvbnN0IHsgbm9ybWFsLCBob3ZlciwgZGlzYWJsZWQgfSA9XG4gICAgYm9yZGVyV2lkdGggJiYgY29sb3IgPT09IHVuZGVmaW5lZFxuICAgICAgPyB7IG5vcm1hbDogXCJib3JkZXJQcmltYXJ5XCIgYXMgY29uc3QgfVxuICAgICAgOiB0eXBlb2YgY29sb3IgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyB7IG5vcm1hbDogY29sb3IgfVxuICAgICAgICA6IChjb2xvciA/PyB7fSk7XG5cbiAgY29uc3Qgbm9ybWFsQ29sb3IgPSBub3JtYWwgJiYgaXNCb3JkZXJDb2xvckFsaWFzKG5vcm1hbCkgPyBhbGlhc1RvTm9taW5hbFtub3JtYWxdIDogbm9ybWFsO1xuICBjb25zdCBob3ZlckNvbG9yID0gaG92ZXIgJiYgaXNCb3JkZXJDb2xvckFsaWFzKGhvdmVyKSA/IGFsaWFzVG9Ob21pbmFsW2hvdmVyXSA6IGhvdmVyO1xuICBjb25zdCBkaXNhYmxlZENvbG9yID0gZGlzYWJsZWQgJiYgaXNCb3JkZXJDb2xvckFsaWFzKGRpc2FibGVkKSA/IGFsaWFzVG9Ob21pbmFsW2Rpc2FibGVkXSA6IGRpc2FibGVkO1xuXG4gIGNvbnN0IHN0eWxlQ2xhc3NlcyA9IGNvbXBhY3QoW1xuICAgIGJvcmRlcldpZHRoID8gYm9yZGVyU3R5bGVzW2Bib3JkZXJfX3dpZHRoLS0ke2JvcmRlcldpZHRofWBdIDogdW5kZWZpbmVkLFxuICAgIG5vcm1hbENvbG9yID8gYm9yZGVyU3R5bGVzW2Bib3JkZXJfX2NvbG9yLS0ke25vcm1hbENvbG9yfWBdIDogdW5kZWZpbmVkLFxuICAgIGhvdmVyQ29sb3IgPyBib3JkZXJTdHlsZXNbYGJvcmRlcl9fY29sb3ItLSR7aG92ZXJDb2xvcn0tLWhvdmVyYF0gOiB1bmRlZmluZWQsXG4gICAgZGlzYWJsZWRDb2xvciA/IGJvcmRlclN0eWxlc1tgYm9yZGVyX19jb2xvci0tJHtkaXNhYmxlZENvbG9yfS0tZGlzYWJsZWRgXSA6IHVuZGVmaW5lZCxcbiAgICAuLi5nZXRTaWRlU3R5bGVzKHsgbGVmdCwgcmlnaHQsIGJvdHRvbSwgdG9wIH0pLFxuICAgIGV4Y2VwdExhc3QgPyBib3JkZXJTdHlsZXNbXCJib3JkZXItLWV4Y2VwdC1sYXN0XCJdIDogdW5kZWZpbmVkLFxuICBdKTtcblxuICByZXR1cm4gW3N0eWxlQ2xhc3Nlcywgc3R5bGVDbGFzc2VzLmxlbmd0aCA+IDAgJiYgYm9yZGVyU3R5bGVzW1wiYm9yZGVyX19zdHlsZS0tc29saWRcIl1dO1xufTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiYm9yZGVyX19zdHlsZS0tc29saWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3N0eWxlLS1zb2xpZF9fXzFReTFKXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0temVyb19fXy1rN1VDXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0tc19fX3ZsbXVsXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0tbV9fX0VvSHZqXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLW1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19yYWRpdXMtLW1sX19fa3NLUGVcIixcbiAgXCJib3JkZXJfX3JhZGl1cy0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fcmFkaXVzLS1sX19fLTU0bnhcIixcbiAgXCJib3JkZXJfX3JhZGl1cy0tNTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0tNTBfX19FYzVjY1wiLFxuICBcImJvcmRlcl9fcmFkaXVzLS1mdWxsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19yYWRpdXMtLWZ1bGxfX19mME9rTFwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS16ZXJvX19fdUxjTzJcIixcbiAgXCJib3JkZXJfX3dpZHRoLS14eHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS14eHNfX19KMHRaOVwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0teHNfX19VUmNrSVwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS1zX19feDlOVWpcIixcbiAgXCJib3JkZXJfX3dpZHRoLS1tXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0tbV9fX0NGOENFXCIsXG4gIFwiYm9yZGVyX193aWR0aC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fd2lkdGgtLWxfX19Zb0I2NVwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0teGxfX19CQ0xsTlwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXh4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fd2lkdGgtLXh4bF9fXy1kcmdQXCIsXG4gIFwiYm9yZGVyX193aWR0aC0tM3hsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0tM3hsX19fZHFtaUZcIixcbiAgXCJib3JkZXJfX3dpZHRoLS00eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS00eGxfX19iRUw5MFwiLFxuICBcImJvcmRlcl9fd2lkdGgtLTV4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fd2lkdGgtLTV4bF9fX3pqMVZYXCIsXG4gIFwiYm9yZGVyX19jb2xvci0taW5oZXJpdFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWluaGVyaXRfX19FMk1Tc1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWluaGVyaXQtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0taW5oZXJpdC0taG92ZXJfX19XeW5CUFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWluaGVyaXQtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0taW5oZXJpdC0tZGlzYWJsZWRfX19xLXRzRVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdoaXRlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2hpdGVfX19nVDJvZ1wiLFxuICBcImJvcmRlcl9fY29sb3ItLXdoaXRlLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdoaXRlLS1ob3Zlcl9fX1FkcFZiXCIsXG4gIFwiYm9yZGVyX19jb2xvci0td2hpdGUtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2hpdGUtLWRpc2FibGVkX19faXlUWEtcIixcbiAgXCJib3JkZXJfX2NvbG9yLS10cmFuc3BhcmVudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXRyYW5zcGFyZW50X19fc3dhbUhcIixcbiAgXCJib3JkZXJfX2NvbG9yLS10cmFuc3BhcmVudC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS10cmFuc3BhcmVudC0taG92ZXJfX19qVVotelwiLFxuICBcImJvcmRlcl9fY29sb3ItLXRyYW5zcGFyZW50LS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXRyYW5zcGFyZW50LS1kaXNhYmxlZF9fX3NpRHJ5XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkxMDBfX192NWw4M1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMDAtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTEwMC0taG92ZXJfX19KMS1PUVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMDAtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTEwMC0tZGlzYWJsZWRfX19RaktSUlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk4MF9fX2txNWFUXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTgwLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk4MC0taG92ZXJfX19DcHBsVlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5ODAtLWRpc2FibGVkX19fLThQS2xcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NjBfX19QOUpNSFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk2MC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NjAtLWhvdmVyX19fQVppY0dcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NjAtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTYwLS1kaXNhYmxlZF9fX2djVmREXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTQwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTQwX19fZjZTRHdcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NDAtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTQwLS1ob3Zlcl9fX1VIZElyXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTQwLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk0MC0tZGlzYWJsZWRfX180ZURrQ1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkzMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkzMF9fX2ZxYnR1XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTMwLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkzMC0taG92ZXJfX19WTkRTUlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkzMC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MzAtLWRpc2FibGVkX19fcHlKT3FcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5MjVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MjVfX19zblZuZFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkyNS0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MjUtLWhvdmVyX19fbmRyZllcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5MjUtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTI1LS1kaXNhYmxlZF9fX29tUEpQXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTIwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTIwX19fZ2JuM1pcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5MjAtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTIwLS1ob3Zlcl9fX3hSc3djXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTIwLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkyMC0tZGlzYWJsZWRfX19TVmVBVFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkxMF9fX1pVNUdhXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTEwLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkxMC0taG92ZXJfX19VWmgtZFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MTAtLWRpc2FibGVkX19fOVotT1RcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NzBfX195cjlpTVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk3MC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NzAtLWhvdmVyX19fbDlZVGRcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NzAtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTcwLS1kaXNhYmxlZF9fX1N3UlFpXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTgwQWxwaGE4NVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk4MEFscGhhODVfX182RGJkU1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MEFscGhhODUtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTgwQWxwaGE4NS0taG92ZXJfX194U2t3QVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MEFscGhhODUtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTgwQWxwaGE4NS0tZGlzYWJsZWRfX195UDRPLVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXByaW1hcnlcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1wcmltYXJ5X19fZ2Z4Qk9cIixcbiAgXCJib3JkZXJfX2NvbG9yLS1wcmltYXJ5LS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXByaW1hcnktLWhvdmVyX19fcHVIRHBcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1wcmltYXJ5LS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXByaW1hcnktLWRpc2FibGVkX19fSDVGc0dcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1zdWNjZXNzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tc3VjY2Vzc19fX1p1cmxTXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzcy0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzLS1ob3Zlcl9fX1d5LTJNXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzcy0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzLS1kaXNhYmxlZF9fX1RQM1J2XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tbm90aWNlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbm90aWNlX19fWndRdlRcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ub3RpY2UtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbm90aWNlLS1ob3Zlcl9fX01KUVVoXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tbm90aWNlLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLW5vdGljZS0tZGlzYWJsZWRfX195VnVpMlwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdhcm5pbmdcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS13YXJuaW5nX19fTEs2QXpcIixcbiAgXCJib3JkZXJfX2NvbG9yLS13YXJuaW5nLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdhcm5pbmctLWhvdmVyX19fbUFvU0JcIixcbiAgXCJib3JkZXJfX2NvbG9yLS13YXJuaW5nLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdhcm5pbmctLWRpc2FibGVkX19fV2NBSy1cIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNyaXRpY2FsX19fR1RZejFcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jcml0aWNhbC0taG92ZXJfX191TUZqYVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWNyaXRpY2FsLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNyaXRpY2FsLS1kaXNhYmxlZF9fX0s5Z2w3XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzc1RpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzVGludF9fX1BTUk1uXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzc1RpbnQtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tc3VjY2Vzc1RpbnQtLWhvdmVyX19fVWZKUGdcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1zdWNjZXNzVGludC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzVGludC0tZGlzYWJsZWRfX19Xa09wQVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdhcm5pbmdUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2FybmluZ1RpbnRfX19JVFdtTVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdhcm5pbmdUaW50LS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdhcm5pbmdUaW50LS1ob3Zlcl9fX0pjLU5uXCIsXG4gIFwiYm9yZGVyX19jb2xvci0td2FybmluZ1RpbnQtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2FybmluZ1RpbnQtLWRpc2FibGVkX19fdXF6Qm9cIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnRfX19PUXV4dFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWNyaXRpY2FsVGludC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnQtLWhvdmVyX19fbFdhOURcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnQtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tY3JpdGljYWxUaW50LS1kaXNhYmxlZF9fX2xZaGg0XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tbGlua1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWxpbmtfX19pWWVGa1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWxpbmstLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbGluay0taG92ZXJfX180eVJKUFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWxpbmstLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbGluay0tZGlzYWJsZWRfX18wazlkQlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWNvZGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jb2RlX19fOE9zRmlcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jb2RlLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNvZGUtLWhvdmVyX19fWjVzNWRcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jb2RlLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNvZGUtLWRpc2FibGVkX19fdURRWk1cIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS16ZXJvXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0temVyb19fX1ZLUnEtXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0teHhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0teHhzX19fOHppN1RcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS14c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLXhzX19fUk5FSzJcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS1zXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0tc19fX2FWbjFXXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLW1fX19CNjE0alwiLFxuICBcImJvcmRlclRvcF9fd2lkdGgtLWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS1sX19fLW9lUFBcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS14bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLXhsX19fWkpjNklcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS14eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS14eGxfX19NbnJIelwiLFxuICBcImJvcmRlclRvcF9fd2lkdGgtLTN4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLTN4bF9fXzV4Sy0tXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0tNHhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0tNHhsX19fcEVEdGNcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS01eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS01eGxfX19NRnZmaFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWluaGVyaXRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1pbmhlcml0X19fQ3IxbmFcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS13aGl0ZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXdoaXRlX19fdS11UWJcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS10cmFuc3BhcmVudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXRyYW5zcGFyZW50X19fUHNNbXhcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5MTAwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTEwMF9fX1djOXRMXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTgwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTgwX19fZUhqekZcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5NjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5NjBfX190U0F0ZVwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWdyZXk0MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWdyZXk0MF9fX0hpcmdmXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTMwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTMwX19fQkJyQlFcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5MjVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5MjVfX19VSFZaWFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWdyZXkyMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWdyZXkyMF9fXzFsdXBQXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTEwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTEwX19fRTJHZlRcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5NzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5NzBfX19EYkMyR1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19fa0I5LXZcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1wcmltYXJ5XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tcHJpbWFyeV9fXzUxMWprXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tc3VjY2Vzc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXN1Y2Nlc3NfX183OS11alwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLW5vdGljZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLW5vdGljZV9fXy1kT0QwXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0td2FybmluZ1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXdhcm5pbmdfX19UMzVrWFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWNyaXRpY2FsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tY3JpdGljYWxfX19zLXF2a1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tc3VjY2Vzc1RpbnRfX19QYTBOR1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLXdhcm5pbmdUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0td2FybmluZ1RpbnRfX18yZVVRVFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWNyaXRpY2FsVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWNyaXRpY2FsVGludF9fX0hKQW8yXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tbGlua1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWxpbmtfX19LWUZHS1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWNvZGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1jb2RlX19fdktPS3dcIixcbiAgXCJib3JkZXJSaWdodF9fd2lkdGgtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXplcm9fX19ybERJblwiLFxuICBcImJvcmRlclJpZ2h0X193aWR0aC0teHhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX3dpZHRoLS14eHNfX18tejc5YVwiLFxuICBcImJvcmRlclJpZ2h0X193aWR0aC0teHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXhzX19fd1pWaGpcIixcbiAgXCJib3JkZXJSaWdodF9fd2lkdGgtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXNfX19NdFlUNlwiLFxuICBcImJvcmRlclJpZ2h0X193aWR0aC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X193aWR0aC0tbV9fX1NEOTd3XCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX3dpZHRoLS1sX19fcVNJMEVcIixcbiAgXCJib3JkZXJSaWdodF9fd2lkdGgtLXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX3dpZHRoLS14bF9fXzA1bjAwXCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS14eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXh4bF9fXy1hRXd2XCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS0zeGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLTN4bF9fX0R1MFJvXCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS00eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLTR4bF9fXzJaQ1hrXCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS01eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLTV4bF9fX1NwNDhrXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1pbmhlcml0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1pbmhlcml0X19fOXlQZUlcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLXdoaXRlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS13aGl0ZV9fX2hJT0JkXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS10cmFuc3BhcmVudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tdHJhbnNwYXJlbnRfX19veElOSlwiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tZ3JleTEwMF9fX2FhU25hXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5ODBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk4MF9fXzVQVDVqXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5NjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk2MF9fX29OVy1VXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5NDBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk0MF9fXzJKd2k5XCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkzMF9fX1Q2aHR4XCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MjVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkyNV9fX1FiRlVKXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkyMF9fX2VzTVFNXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkxMF9fX1owUXpmXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5NzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk3MF9fX3RrekFKXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5ODBBbHBoYTg1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19fajQ1VU5cIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLXByaW1hcnlcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLXByaW1hcnlfX19ISWsyQVwiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tc3VjY2Vzc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tc3VjY2Vzc19fX1JJd2FIXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ub3RpY2VcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLW5vdGljZV9fX3ZVTGFUXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS13YXJuaW5nXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS13YXJuaW5nX19fWTJpUGlcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLWNyaXRpY2FsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1jcml0aWNhbF9fX1htNnRRXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1zdWNjZXNzVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tc3VjY2Vzc1RpbnRfX19tMW52WVwiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0td2FybmluZ1RpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLXdhcm5pbmdUaW50X19fbi1oeEZcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLWNyaXRpY2FsVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tY3JpdGljYWxUaW50X19fNFZKTjhcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLWxpbmtcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWxpbmtfX19IMnJlM1wiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tY29kZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tY29kZV9fX1VDZE0wXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLXplcm9fX19QbEFCTFwiLFxuICBcImJvcmRlckJvdHRvbV9fd2lkdGgtLXh4c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLXh4c19fX1pGbS1VXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0teHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS14c19fX2hEelNzXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0tc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLXNfX19JV3QtdVwiLFxuICBcImJvcmRlckJvdHRvbV9fd2lkdGgtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS1tX19fZjFyLXNcIixcbiAgXCJib3JkZXJCb3R0b21fX3dpZHRoLS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX193aWR0aC0tbF9fXzBIdmwxXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0teGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS14bF9fX3NTUnRzXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0teHhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX193aWR0aC0teHhsX19fTnVCZ0ZcIixcbiAgXCJib3JkZXJCb3R0b21fX3dpZHRoLS0zeGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS0zeGxfX19HakxZVVwiLFxuICBcImJvcmRlckJvdHRvbV9fd2lkdGgtLTR4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLTR4bF9fX0J2SldQXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0tNXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX193aWR0aC0tNXhsX19fckNlREJcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1pbmhlcml0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0taW5oZXJpdF9fXzczZHFWXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0td2hpdGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS13aGl0ZV9fX0RabWo2XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tdHJhbnNwYXJlbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS10cmFuc3BhcmVudF9fX3FrTmdGXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkxMDBfX19YMnY3eFwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWdyZXk4MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXk4MF9fX3RuTWo1XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTYwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTYwX19fVU9XMG5cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5NDBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5NDBfX19jN3VjMFwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkzMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkzMF9fX1k4NUM0XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTI1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTI1X19fa3YyTm1cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5MjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5MjBfX192Ty1tSlwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkxMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkxMF9fX0ZhLWh5XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTcwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTcwX19faC1Da1ZcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5ODBBbHBoYTg1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTgwQWxwaGE4NV9fX2lyeG9IXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tcHJpbWFyeVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLXByaW1hcnlfX19KLXI1SlwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLXN1Y2Nlc3NcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1zdWNjZXNzX19fZnhadlJcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ub3RpY2VcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1ub3RpY2VfX19JSUE1UlwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLXdhcm5pbmdcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS13YXJuaW5nX19fbHNaRy1cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1jcml0aWNhbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWNyaXRpY2FsX19fQjdMNS1cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1zdWNjZXNzVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLXN1Y2Nlc3NUaW50X19fQXN2dGNcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS13YXJuaW5nVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLXdhcm5pbmdUaW50X19fNE9QZk9cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1jcml0aWNhbFRpbnRfX194MlVMUVwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWxpbmtcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1saW5rX19fUjJYRHVcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1jb2RlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tY29kZV9fX0VyOWhiXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0temVyb19fXzEtRk0tXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXh4c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS14eHNfX19vakFhcFwiLFxuICBcImJvcmRlckxlZnRfX3dpZHRoLS14c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS14c19fX3oyWElGXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tc19fX0RxWGJjXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tbV9fXzRqUHU1XCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tbF9fX2xQYVJLXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fd2lkdGgtLXhsX19fTWMtLVJcIixcbiAgXCJib3JkZXJMZWZ0X193aWR0aC0teHhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fd2lkdGgtLXh4bF9fX0tYT1JaXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLTN4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS0zeGxfX180ZllJRVwiLFxuICBcImJvcmRlckxlZnRfX3dpZHRoLS00eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tNHhsX19fY2RVbFdcIixcbiAgXCJib3JkZXJMZWZ0X193aWR0aC0tNXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fd2lkdGgtLTV4bF9fXzdsOUgwXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWluaGVyaXRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0taW5oZXJpdF9fX3FkNGtEXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXdoaXRlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLXdoaXRlX19fLXJ6czdcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tdHJhbnNwYXJlbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tdHJhbnNwYXJlbnRfX191VVVFeFwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5MTAwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkxMDBfX19RRGJWMlwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5ODBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTgwX19fN2hWeThcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tZ3JleTYwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk2MF9fX3E5VHMyXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk0MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ncmV5NDBfX195SXIwSlwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5MzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTMwX19faXRVVXNcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tZ3JleTI1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkyNV9fX3o5RWdEXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkyMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ncmV5MjBfX19IcXJKblwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5MTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTEwX19feXRaUE5cIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tZ3JleTcwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk3MF9fX0VveVZXXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTgwQWxwaGE4NV9fXzJHSVcyXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXByaW1hcnlcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tcHJpbWFyeV9fX0lOQzh5XCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXN1Y2Nlc3NcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tc3VjY2Vzc19fXzEyS2l1XCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLW5vdGljZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ub3RpY2VfX19taEpBblwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS13YXJuaW5nXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLXdhcm5pbmdfX191VjV0V1wiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1jcml0aWNhbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1jcml0aWNhbF9fX0E2SmlPXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLXN1Y2Nlc3NUaW50X19fZ09yWWpcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0td2FybmluZ1RpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0td2FybmluZ1RpbnRfX19ON1VjVFwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tY3JpdGljYWxUaW50X19fYS1mYUdcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tbGlua1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1saW5rX19fbXdSS3dcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tY29kZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1jb2RlX19fdUpXRkhcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS16ZXJvX19fZGxzdFZcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0tc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS1zX19fdm81ZWxcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS1tX19fR0lFY3RcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0tbWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BSaWdodC0tbWxfX19tRWNEdlwiLFxuICBcImJvcmRlclJhZGl1c1RvcFJpZ2h0LS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzVG9wUmlnaHQtLWxfX19yZy1EMFwiLFxuICBcImJvcmRlclJhZGl1c1RvcFJpZ2h0LS01MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS01MF9fX1hsbEdzXCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wUmlnaHQtLWZ1bGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BSaWdodC0tZnVsbF9fXzVaSXY4XCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0temVyb19fX084ZEUzXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tc19fX254THRMXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tbV9fX1NsNVJSXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLW1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLW1sX19fQW9RMGJcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c0JvdHRvbVJpZ2h0LS1sX19fNTJKb2xcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tNTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tNTBfX183LXdPR1wiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbVJpZ2h0LS1mdWxsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLWZ1bGxfX19MQmFQNlwiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbUxlZnQtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS16ZXJvX19fb1FCZG1cIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS1zXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tc19fX3pGSUwzXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c0JvdHRvbUxlZnQtLW1fX19LTlNjVFwiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbUxlZnQtLW1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tbWxfX192dDd4MlwiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbUxlZnQtLWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS1sX19fazhwaWtcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS01MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c0JvdHRvbUxlZnQtLTUwX19fZjJYVHVcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS1mdWxsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tZnVsbF9fX2VIajZzXCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wTGVmdC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcExlZnQtLXplcm9fX19QMVl0d1wiLFxuICBcImJvcmRlclJhZGl1c1RvcExlZnQtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BMZWZ0LS1zX19fSC1sWGVcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BMZWZ0LS1tXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzVG9wTGVmdC0tbV9fXzNMUlIwXCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wTGVmdC0tbWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BMZWZ0LS1tbF9fX2lndjB3XCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wTGVmdC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcExlZnQtLWxfX18zczJDSlwiLFxuICBcImJvcmRlclJhZGl1c1RvcExlZnQtLTUwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzVG9wTGVmdC0tNTBfX193Tll3UVwiLFxuICBcImJvcmRlclJhZGl1c1RvcExlZnQtLWZ1bGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BMZWZ0LS1mdWxsX19fQ2Z6LVJcIixcbiAgXCJib3JkZXItLWV4Y2VwdC1sYXN0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyLS1leGNlcHQtbGFzdF9fXzIyWXNCXCJcbn07IiwgImltcG9ydCBib3JkZXJTdHlsZXMgZnJvbSBcIi4vYm9yZGVyLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IEJvcmRlclJhZGl1c1NpemUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvcm5lclN0eWxlcyB7XG4gIHJhZGl1cz86IEJvcmRlclJhZGl1c1NpemUgfCBib29sZWFuO1xuICByYWRpdXNUb3BSaWdodD86IEJvcmRlclJhZGl1c1NpemU7XG4gIHJhZGl1c0JvdHRvbVJpZ2h0PzogQm9yZGVyUmFkaXVzU2l6ZTtcbiAgcmFkaXVzQm90dG9tTGVmdD86IEJvcmRlclJhZGl1c1NpemU7XG4gIHJhZGl1c1RvcExlZnQ/OiBCb3JkZXJSYWRpdXNTaXplO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Q29ybmVyU3R5bGVzID0gKHN0eWxlczogQ29ybmVyU3R5bGVzKSA9PiB7XG4gIGNvbnN0IHsgcmFkaXVzLCByYWRpdXNUb3BSaWdodCwgcmFkaXVzQm90dG9tUmlnaHQsIHJhZGl1c0JvdHRvbUxlZnQsIHJhZGl1c1RvcExlZnQgfSA9IHN0eWxlcztcblxuICBpZiAocmFkaXVzKSB7XG4gICAgY29uc3QgYm9yZGVyUmFkaXVzU2l6ZSA9IHJhZGl1cyA9PT0gdHJ1ZSA/IFwic1wiIDogcmFkaXVzO1xuXG4gICAgcmV0dXJuIGJvcmRlclJhZGl1c1NpemUgPyBib3JkZXJTdHlsZXNbYGJvcmRlcl9fcmFkaXVzLS0ke2JvcmRlclJhZGl1c1NpemV9YF0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gW1xuICAgIHJhZGl1c1RvcFJpZ2h0ID8gYm9yZGVyU3R5bGVzW2Bib3JkZXJSYWRpdXNUb3BSaWdodC0tJHtyYWRpdXNUb3BSaWdodH1gXSA6IHVuZGVmaW5lZCxcbiAgICByYWRpdXNCb3R0b21SaWdodCA/IGJvcmRlclN0eWxlc1tgYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLSR7cmFkaXVzQm90dG9tUmlnaHR9YF0gOiB1bmRlZmluZWQsXG4gICAgcmFkaXVzQm90dG9tTGVmdCA/IGJvcmRlclN0eWxlc1tgYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tJHtyYWRpdXNCb3R0b21MZWZ0fWBdIDogdW5kZWZpbmVkLFxuICAgIHJhZGl1c1RvcExlZnQgPyBib3JkZXJTdHlsZXNbYGJvcmRlclJhZGl1c1RvcExlZnQtLSR7cmFkaXVzVG9wTGVmdH1gXSA6IHVuZGVmaW5lZCxcbiAgXTtcbn07XG4iLCAiaW1wb3J0IGJvcmRlclN0eWxlcyBmcm9tIFwiLi9ib3JkZXIubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgQm9yZGVyU2lkZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmltcG9ydCB7IGNhcGl0YWxpemUgYXMgbG9kYXNoQ2FwaXRhbGl6ZSB9IGZyb20gXCJsb2Rhc2gvZnBcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTaWRlU3R5bGVzIHtcbiAgdG9wPzogQm9yZGVyU2lkZTtcbiAgcmlnaHQ/OiBCb3JkZXJTaWRlO1xuICBib3R0b20/OiBCb3JkZXJTaWRlO1xuICBsZWZ0PzogQm9yZGVyU2lkZTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldFNpZGVTdHlsZXMgPSAoc2lkZXM6IFNpZGVTdHlsZXMpID0+IFtcbiAgLi4uZ2V0U3BlY2lmaWNTaWRlU3R5bGVzKFwidG9wXCIsIHNpZGVzKSxcbiAgLi4uZ2V0U3BlY2lmaWNTaWRlU3R5bGVzKFwicmlnaHRcIiwgc2lkZXMpLFxuICAuLi5nZXRTcGVjaWZpY1NpZGVTdHlsZXMoXCJib3R0b21cIiwgc2lkZXMpLFxuICAuLi5nZXRTcGVjaWZpY1NpZGVTdHlsZXMoXCJsZWZ0XCIsIHNpZGVzKSxcbl07XG5cbmNvbnN0IGdldFNwZWNpZmljU2lkZVN0eWxlcyA9IChzaWRlOiBrZXlvZiBTaWRlU3R5bGVzLCBzaWRlczogU2lkZVN0eWxlcykgPT4ge1xuICBjb25zdCB7IHdpZHRoLCBjb2xvciB9ID0gc2lkZXNbc2lkZV0gPz8ge307XG4gIGNvbnN0IHNpZGVOYW1lID0gY2FwaXRhbGl6ZShzaWRlKTtcblxuICByZXR1cm4gW1xuICAgIHdpZHRoID8gYm9yZGVyU3R5bGVzW2Bib3JkZXIke3NpZGVOYW1lfV9fd2lkdGgtLSR7d2lkdGh9YF0gOiB1bmRlZmluZWQsXG4gICAgY29sb3IgPyBib3JkZXJTdHlsZXNbYGJvcmRlciR7c2lkZU5hbWV9X19jb2xvci0tJHtjb2xvcn1gXSA6IHVuZGVmaW5lZCxcbiAgXTtcbn07XG5cbmNvbnN0IGNhcGl0YWxpemUgPSA8VCBleHRlbmRzIHN0cmluZz4odGFyZ2V0OiBUKSA9PiBsb2Rhc2hDYXBpdGFsaXplKHRhcmdldCkgYXMgQ2FwaXRhbGl6ZTxUPjtcbiIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGZvbnRTdHlsZXMgZnJvbSBcIi4vZm9udC5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBGb250U2l6ZSA9IFwieHhzXCIgfCBcInhzXCIgfCBcInNcIiB8IFwibVwiIHwgXCJsXCIgfCBcInhsXCIgfCBcInh4bFwiIHwgXCIzeGxcIiB8IFwiNHhsXCI7XG5cbmV4cG9ydCB0eXBlIEZvbnRCb2xkID0gXCI2MDBcIjtcblxuZXhwb3J0IHR5cGUgRm9udExpbmVIZWlnaHQgPSBcIm5vbmVcIiB8IFwidGlnaHRcIiB8IFwibm9ybWFsXCIgfCBcImxvb3NlXCI7XG5cbmV4cG9ydCB0eXBlIEZvbnRQbHVnaW5Qcm9wcyA9IHtcbiAgJGZvbnQ/OlxuICAgIHwgYm9vbGVhblxuICAgIHwge1xuICAgICAgICBzaXplPzogRm9udFNpemU7XG4gICAgICAgIGl0YWxpYz86IGJvb2xlYW47XG4gICAgICAgIGJvbGQ/OiBib29sZWFuIHwgRm9udEJvbGQ7XG4gICAgICAgIGxpbmVIZWlnaHQ/OiBGb250TGluZUhlaWdodDtcbiAgICAgICAgZm9yY2VXcmFwPzogYm9vbGVhbjtcbiAgICAgICAgbm9XcmFwPzogYm9vbGVhbjtcbiAgICAgICAgdXBwZXJjYXNlPzogYm9vbGVhbjtcbiAgICAgICAgdW5kZXJsaW5lPzogYm9vbGVhbjtcbiAgICAgICAgdGV4dE92ZXJmbG93PzogXCJjbGlwXCIgfCBcImVsbGlwc2lzXCIgfCBcImRlZmF1bHRcIjtcbiAgICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZm9udFBsdWdpbiA9IGdldFBsdWdpbjxGb250UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJGZvbnQpIHtcbiAgICByZXR1cm4geyAkZm9udDogdW5kZWZpbmVkIH07XG4gIH1cblxuICBjb25zdCB7XG4gICAgc2l6ZSA9IHVuZGVmaW5lZCxcbiAgICBib2xkID0gZmFsc2UsXG4gICAgbGluZUhlaWdodCA9IHVuZGVmaW5lZCxcbiAgICBub1dyYXAgPSBmYWxzZSxcbiAgICB1cHBlcmNhc2UgPSBmYWxzZSxcbiAgICBpdGFsaWMgPSBmYWxzZSxcbiAgICBmb3JjZVdyYXAgPSBmYWxzZSxcbiAgICB1bmRlcmxpbmUgPSBmYWxzZSxcbiAgICB0ZXh0T3ZlcmZsb3cgPSBcImRlZmF1bHRcIixcbiAgfSA9IHByb3BzLiRmb250ID09PSB0cnVlID8ge30gOiBwcm9wcy4kZm9udDtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHByb3BzLiRjbGFzc05hbWUsXG4gICAgICBzaXplID8gZm9udFN0eWxlc1tgZm9udF9fc2l6ZS0tJHtzaXplfWBdIDogdW5kZWZpbmVkLFxuICAgICAgYm9sZCA9PT0gdHJ1ZSA/IGZvbnRTdHlsZXNbXCJmb250LS1ib2xkXCJdIDogYm9sZCA/IGZvbnRTdHlsZXNbYGZvbnQtLXdlaWdodC0ke2JvbGR9YF0gOiB1bmRlZmluZWQsXG4gICAgICBsaW5lSGVpZ2h0ID8gZm9udFN0eWxlc1tgZm9udF9fbGluZS1oZWlnaHQtLSR7bGluZUhlaWdodH1gXSA6IHVuZGVmaW5lZCxcbiAgICAgIHRleHRPdmVyZmxvdyA9PT0gXCJkZWZhdWx0XCIgPyB1bmRlZmluZWQgOiBmb250U3R5bGVzW2Bmb250LS10ZXh0LW92ZXJmbG93LS0ke3RleHRPdmVyZmxvd31gXSxcbiAgICAgIHtcbiAgICAgICAgW2ZvbnRTdHlsZXNbXCJmb250LS1uby13cmFwXCJdXTogbm9XcmFwLFxuICAgICAgICBbZm9udFN0eWxlc1tcImZvbnQtLWZvcmNlLXdyYXBcIl1dOiBmb3JjZVdyYXAsXG4gICAgICAgIFtmb250U3R5bGVzW1wiZm9udC0taXRhbGljXCJdXTogaXRhbGljLFxuICAgICAgICBbZm9udFN0eWxlc1tcImZvbnQtLXVwcGVyY2FzZVwiXV06IHVwcGVyY2FzZSxcbiAgICAgICAgW2ZvbnRTdHlsZXNbXCJmb250LS11bmRlcmxpbmVcIl1dOiB1bmRlcmxpbmUsXG4gICAgICB9LFxuICAgIF0sXG4gICAgJGZvbnQ6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2ZvbnQvZm9udC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImZvbnRfX3NpemUtLXh4c1wiOiBcImZvbnQtbW9kdWxlX19mb250X19zaXplLS14eHNfX19LSjJRLVwiLFxuICBcImZvbnRfX3NpemUtLXhzXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLXhzX19feEVhVTlcIixcbiAgXCJmb250X19zaXplLS1zXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLXNfX19UYm5NbFwiLFxuICBcImZvbnRfX3NpemUtLW1cIjogXCJmb250LW1vZHVsZV9fZm9udF9fc2l6ZS0tbV9fX2ZESkFqXCIsXG4gIFwiZm9udF9fc2l6ZS0tbFwiOiBcImZvbnQtbW9kdWxlX19mb250X19zaXplLS1sX19fdUtjdWtcIixcbiAgXCJmb250X19zaXplLS14bFwiOiBcImZvbnQtbW9kdWxlX19mb250X19zaXplLS14bF9fX1JlaG9RXCIsXG4gIFwiZm9udF9fc2l6ZS0teHhsXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLXh4bF9fX0Nnb0tQXCIsXG4gIFwiZm9udF9fc2l6ZS0tM3hsXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLTN4bF9fX3NDSWV6XCIsXG4gIFwiZm9udF9fc2l6ZS0tNHhsXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLTR4bF9fX0E1a3NlXCIsXG4gIFwiZm9udF9fbGluZS1oZWlnaHQtLW5vbmVcIjogXCJmb250LW1vZHVsZV9fZm9udF9fbGluZS1oZWlnaHQtLW5vbmVfX18xc0k5S1wiLFxuICBcImZvbnRfX2xpbmUtaGVpZ2h0LS10aWdodFwiOiBcImZvbnQtbW9kdWxlX19mb250X19saW5lLWhlaWdodC0tdGlnaHRfX19yLUVCOVwiLFxuICBcImZvbnRfX2xpbmUtaGVpZ2h0LS1ub3JtYWxcIjogXCJmb250LW1vZHVsZV9fZm9udF9fbGluZS1oZWlnaHQtLW5vcm1hbF9fX3JKNFZOXCIsXG4gIFwiZm9udF9fbGluZS1oZWlnaHQtLWxvb3NlXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX2xpbmUtaGVpZ2h0LS1sb29zZV9fX2RwelMtXCIsXG4gIFwiZm9udC0tYm9sZFwiOiBcImZvbnQtbW9kdWxlX19mb250LS1ib2xkX19fYmplLWJcIixcbiAgXCJmb250LS13ZWlnaHQtNjAwXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnQtLXdlaWdodC02MDBfX19FZ2R6bVwiLFxuICBcImZvbnQtLW5vLXdyYXBcIjogXCJmb250LW1vZHVsZV9fZm9udC0tbm8td3JhcF9fX3FiUlJPXCIsXG4gIFwiZm9udC0tZm9yY2Utd3JhcFwiOiBcImZvbnQtbW9kdWxlX19mb250LS1mb3JjZS13cmFwX19fT0dDRnpcIixcbiAgXCJmb250LS11cHBlcmNhc2VcIjogXCJmb250LW1vZHVsZV9fZm9udC0tdXBwZXJjYXNlX19fdlFYbW5cIixcbiAgXCJmb250LS1pdGFsaWNcIjogXCJmb250LW1vZHVsZV9fZm9udC0taXRhbGljX19fSkg0VFpcIixcbiAgXCJmb250LS11bmRlcmxpbmVcIjogXCJmb250LW1vZHVsZV9fZm9udC0tdW5kZXJsaW5lX19fZDRvbkxcIixcbiAgXCJmb250LS10ZXh0LW92ZXJmbG93LS1lbGxpcHNpc1wiOiBcImZvbnQtbW9kdWxlX19mb250LS10ZXh0LW92ZXJmbG93LS1lbGxpcHNpc19fX0hxZlgtXCIsXG4gIFwiZm9udC0tdGV4dC1vdmVyZmxvdy0tY2xpcFwiOiBcImZvbnQtbW9kdWxlX19mb250LS10ZXh0LW92ZXJmbG93LS1jbGlwX19fOTZ4QjlcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vYm94LXNoYWRvdy5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBCb3hTaGFkb3dQbHVnaW5Qcm9wcyA9IHtcbiAgJGJveFNoYWRvdz86IGJvb2xlYW4gfCBcImVsZXZhdGVkXCIgfCBcInN1YnRsZVwiO1xufTtcblxuZXhwb3J0IGNvbnN0IGJveFNoYWRvd1BsdWdpbiA9IGdldFBsdWdpbjxCb3hTaGFkb3dQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgaWYgKCFwcm9wcy4kYm94U2hhZG93KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICRib3hTaGFkb3c6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgdmFyaWFudCA9IHByb3BzLiRib3hTaGFkb3cgPT09IHRydWUgPyBcImVsZXZhdGVkXCIgOiBwcm9wcy4kYm94U2hhZG93O1xuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHN0eWxlc1tgYm94LXNoYWRvdy0tJHt2YXJpYW50fWBdXSxcbiAgICAkYm94U2hhZG93OiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9ib3gtc2hhZG93L2JveC1zaGFkb3cubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJib3gtc2hhZG93LS1lbGV2YXRlZFwiOiBcImJveC1zaGFkb3ctbW9kdWxlX19ib3gtc2hhZG93LS1lbGV2YXRlZF9fX2phaDdmXCIsXG4gIFwiYm94LXNoYWRvdy0tc3VidGxlXCI6IFwiYm94LXNoYWRvdy1tb2R1bGVfX2JveC1zaGFkb3ctLXN1YnRsZV9fX1ZvNnhNXCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL25vLXBvaW50ZXItZXZlbnRzLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIE5vUG9pbnRlckV2ZW50c1BsdWdpblByb3BzID0geyAkbm9Qb2ludGVyRXZlbnRzPzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3Qgbm9Qb2ludGVyRXZlbnRzUGx1Z2luID0gZ2V0UGx1Z2luPE5vUG9pbnRlckV2ZW50c1BsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHsgW3N0eWxlc1tcIm5vLXBvaW50ZXItZXZlbnRzXCJdXTogcHJvcHMuJG5vUG9pbnRlckV2ZW50cyB9XSxcbiAgJG5vUG9pbnRlckV2ZW50czogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL25vLXBvaW50ZXItZXZlbnRzL25vLXBvaW50ZXItZXZlbnRzLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwibm8tcG9pbnRlci1ldmVudHNcIjogXCJuby1wb2ludGVyLWV2ZW50cy1tb2R1bGVfX25vLXBvaW50ZXItZXZlbnRzX19fN21GMGJcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcblxuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBpc0RlZmluZWQgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IE11dGFibGVSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuLy8gU2ltcGxpZmllZCB0eXBlIHNpbmNlIFJlZkNhbGxiYWNrIGZyb20gXCJyZWFjdFwiIGNhdXNlcyBVTkRFRklORURfVk9JRF9PTkxZIGVycm9yXG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vQ29uZnVzaW5nVm9pZFR5cGU6IHZvaWQgdHlwaW5nIHJlcXVpcmVkXG50eXBlIFJlZkNhbGxiYWNrPFQ+ID0gKGluc3RhbmNlOiBUIHwgbnVsbCkgPT4gdW5kZWZpbmVkIHwgdm9pZCB8ICgoKSA9PiBhbnkpO1xuXG5leHBvcnQgdHlwZSBSZWZMaWtlPFQ+ID0gUmVmQ2FsbGJhY2s8VD4gfCBSZWFjdC5NdXRhYmxlUmVmT2JqZWN0PFQgfCBudWxsPiB8IFJlYWN0LlJlZk9iamVjdDxUPiB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IHR5cGUgJFJlZlByb3A8VD4gPSBSZWZMaWtlPFQ+IHwgJFJlZlByb3A8VD5bXTtcblxuZXhwb3J0IHR5cGUgUmVmUGx1Z2luUHJvcHM8VD4gPSB7XG4gICRyZWY/OiAkUmVmUHJvcDxUPjtcbiAgcmVmPzogUmVmTGlrZTxUPjtcbn07XG5cbmV4cG9ydCB0eXBlIFJlZlBsdWdpbjxUPiA9IFBsdWdpbjxSZWZQbHVnaW5Qcm9wczxUPiwgdW5rbm93bj47XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZQbHVnaW48VCA9IEhUTUxFbGVtZW50PigpIHtcbiAgcmV0dXJuIGdldFBsdWdpbjxSZWZQbHVnaW5Qcm9wczxUPj4oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyAkcmVmIH0gPSBwcm9wcztcbiAgICBjb25zdCBwcmV2UmVmcyA9IHVzZVJlZihuZXcgU2V0PFJlZkxpa2U8VD4+KCkpO1xuICAgIGNvbnN0IGVsZW1lbnRSZWYgPSB1c2VSZWY8VCB8IG51bGw+KG51bGwpO1xuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IFdlIGRvIG5vdCB3YW50IHRvIHJ1biB0aGlzIG11bHRpcGxlIHRpbWVzXG4gICAgY29uc3QgcmVmID0gdXNlQ2FsbGJhY2soKGN1cnJlbnQ6IFQpID0+IHtcbiAgICAgIGNvbnN0IGZpcnN0UmVmcyA9IGZsYXR0ZW5SZWZzKCRyZWYpO1xuXG4gICAgICBmaXJzdFJlZnMuZm9yRWFjaChoYW5kbGVSZWZzRm9yKGN1cnJlbnQpKTtcbiAgICAgIHByZXZSZWZzLmN1cnJlbnQgPSBmaXJzdFJlZnM7XG4gICAgICBlbGVtZW50UmVmLmN1cnJlbnQgPSBjdXJyZW50O1xuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBwcmV2UmVmcy5jdXJyZW50LmZvckVhY2goaGFuZGxlUmVmc0ZvcjxUPihudWxsKSk7XG4gICAgICB9O1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBmaXJzdFJlbmRlciA9IHVzZVJlZih0cnVlKTtcblxuICAgIGlmICghZmlyc3RSZW5kZXIuY3VycmVudCkge1xuICAgICAgY29uc3QgY3VycmVudFJlZnMgPSBmbGF0dGVuUmVmcygkcmVmKTtcbiAgICAgIGNvbnN0IGFkZGVkUmVmcyA9IGN1cnJlbnRSZWZzLmRpZmZlcmVuY2UocHJldlJlZnMuY3VycmVudCk7XG4gICAgICBjb25zdCByZW1vdmVkUmVmcyA9IHByZXZSZWZzLmN1cnJlbnQuZGlmZmVyZW5jZShjdXJyZW50UmVmcyk7XG5cbiAgICAgIGFkZGVkUmVmcy5mb3JFYWNoKGhhbmRsZVJlZnNGb3I8VD4oZWxlbWVudFJlZi5jdXJyZW50KSk7XG4gICAgICByZW1vdmVkUmVmcy5mb3JFYWNoKGhhbmRsZVJlZnNGb3I8VD4obnVsbCkpO1xuICAgICAgcHJldlJlZnMuY3VycmVudCA9IGN1cnJlbnRSZWZzO1xuICAgIH1cblxuICAgIGZpcnN0UmVuZGVyLmN1cnJlbnQgPSBmYWxzZTtcblxuICAgIHJldHVybiB7XG4gICAgICByZWYsXG4gICAgICAkcmVmOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfSk7XG59XG5cbmNvbnN0IGZsYXR0ZW5SZWZzID0gPFQsPihyZWZzOiAkUmVmUHJvcDxUPik6IFNldDxSZWZMaWtlPFQ+PiA9PlxuICBuZXcgU2V0KChbcmVmc10uZmxhdChJbmZpbml0eSBhcyAxKSBhcyBBcnJheTxOb25OdWxsYWJsZTxSZWZMaWtlPFQ+Pj4pLmZpbHRlcihpc0RlZmluZWQpKTtcblxuY29uc3QgaGFuZGxlUmVmc0ZvciA9XG4gIDxULD4odmFsdWU6IFQgfCBudWxsKSA9PlxuICAocmVmczogJFJlZlByb3A8VD4pID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZWZzKSkge1xuICAgICAgcmVmcy5mb3JFYWNoKGhhbmRsZVJlZnNGb3IodmFsdWUpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZWZzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJlZnModmFsdWUpO1xuICAgIH0gZWxzZSBpZiAocmVmcykge1xuICAgICAgKHJlZnMgYXMgTXV0YWJsZVJlZk9iamVjdDxUIHwgbnVsbD4pLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICB9XG4gIH07XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBjc3NOYW1lcywgdHlwZSBJQ2xhc3NOYW1lIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcblxuZXhwb3J0IHR5cGUgQ2xhc3NOYW1lUGx1Z2luUHJvcHMgPSB7ICRjbGFzc05hbWU/OiBJQ2xhc3NOYW1lOyBjbGFzc05hbWU/OiBzdHJpbmcgfTtcblxubGV0IHNob3dDbHV0dGVyID0gdHJ1ZTtcblxuZXhwb3J0IGNvbnN0IGNsYXNzTmFtZVBsdWdpbiA9IGdldFBsdWdpbjxDbGFzc05hbWVQbHVnaW5Qcm9wcz4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IGNsYXNzTmFtZSA9IGNzc05hbWVzKHByb3BzLmNsYXNzTmFtZSwgcHJvcHMuJGNsYXNzTmFtZSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi4oY2xhc3NOYW1lID8geyBjbGFzc05hbWU6IHNob3dDbHV0dGVyID8gY2xhc3NOYW1lIDogcmVtb3ZlQ2x1dHRlcihjbGFzc05hbWUpIH0gOiB7fSksXG4gICAgJGNsYXNzTmFtZTogdW5kZWZpbmVkLFxuICB9O1xufSk7XG5cbmNvbnN0IHJlbW92ZUNsdXR0ZXIgPSAoY2xhc3NOYW1lOiBzdHJpbmcpID0+XG4gIGNsYXNzTmFtZS5yZXBsYWNlKC9fX18uKj8oPz1cXHN8JCkvZywgXCJcIikucmVwbGFjZSgvXFxiW2EtekEtWjAtOS1dKy1tb2R1bGVfXy9nLCBcIlwiKTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUNzc01vZHVsZUNsdXR0ZXJGb3JVbml0VGVzdGluZyA9ICgpID0+IHtcbiAgc2hvd0NsdXR0ZXIgPSBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaG93Q3NzTW9kdWxlQ2x1dHRlckZvclByb2R1Y3Rpb24gPSAoKSA9PiB7XG4gIHNob3dDbHV0dGVyID0gdHJ1ZTtcbn07XG4iLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCByZWxhdGl2ZVN0eWxlcyBmcm9tIFwiLi9yZWxhdGl2ZS5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBSZWxhdGl2ZVBsdWdpblByb3BzID0geyAkcmVsYXRpdmU/OiBib29sZWFuOyAkZml4ZWQ/OiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCByZWxhdGl2ZVBsdWdpbiA9IGdldFBsdWdpbjxSZWxhdGl2ZVBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW1xuICAgIHByb3BzLiRjbGFzc05hbWUsXG4gICAgeyBbcmVsYXRpdmVTdHlsZXMucmVsYXRpdmVdOiAhIXByb3BzLiRyZWxhdGl2ZSwgW3JlbGF0aXZlU3R5bGVzLmZpeGVkXTogISFwcm9wcy4kZml4ZWQgfSxcbiAgXSxcbiAgJGZpeGVkOiB1bmRlZmluZWQsXG4gICRyZWxhdGl2ZTogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3JlbGF0aXZlL3JlbGF0aXZlLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwicmVsYXRpdmVcIjogXCJyZWxhdGl2ZS1tb2R1bGVfX3JlbGF0aXZlX19fa3dNNXFcIixcbiAgXCJmaXhlZFwiOiBcInJlbGF0aXZlLW1vZHVsZV9fZml4ZWRfX19Dc1hIRFwiXG59OyIsICJleHBvcnQgdHlwZSBEcmFnZ2FibGVQbHVnaW5Qcm9wczxUID0gYW55PiA9IHtcbiAgJGRyYWdnYWJsZT86IHtcbiAgICBjb250ZXh0OiBEcmFnZ2FibGVDb250ZXh0PFQ+O1xuICAgIGl0ZW06IFQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBEcm9wcGFibGVQbHVnaW5Qcm9wczxUID0gYW55PiA9IHtcbiAgJGRyb3BwYWJsZT86IHtcbiAgICBjb250ZXh0OiBEcmFnZ2FibGVDb250ZXh0PFQ+O1xuICAgIG9uRHJvcDogKGl0ZW06IFQpID0+IHZvaWQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBEcmFnZ2FibGVDb250ZXh0PERyYWdnZWRJdGVtPiA9IHtcbiAgZHJhZ2dhYmxlOiAoaXRlbTogRHJhZ2dlZEl0ZW0pID0+IE5vbk51bGxhYmxlPERyYWdnYWJsZVBsdWdpblByb3BzPERyYWdnZWRJdGVtPltgJGRyYWdnYWJsZWBdPjtcbiAgZHJvcHBhYmxlOiAob25Ecm9wOiAoaXRlbTogRHJhZ2dlZEl0ZW0pID0+IHZvaWQpID0+IE5vbk51bGxhYmxlPERyb3BwYWJsZVBsdWdpblByb3BzPERyYWdnZWRJdGVtPltcIiRkcm9wcGFibGVcIl0+O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERyYWdnYWJsZUNvbnRleHQgPSA8RHJhZ2dlZEl0ZW0+KCk6IERyYWdnYWJsZUNvbnRleHQ8RHJhZ2dlZEl0ZW0+ID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHtcbiAgICBkcmFnZ2FibGU6IChpdGVtOiBEcmFnZ2VkSXRlbSkgPT4gKHtcbiAgICAgIGNvbnRleHQsXG4gICAgICBpdGVtLFxuICAgIH0pLFxuXG4gICAgZHJvcHBhYmxlOiAob25Ecm9wOiAoaXRlbTogRHJhZ2dlZEl0ZW0pID0+IHZvaWQpID0+ICh7XG4gICAgICBjb250ZXh0LFxuICAgICAgb25Ecm9wLFxuICAgIH0pLFxuICB9O1xuXG4gIHJldHVybiBjb250ZXh0O1xufTtcbiIsICJpbXBvcnQgeyBnZXRGZWF0dXJlIH0gZnJvbSBcIkBrOHNsZW5zL2ZlYXR1cmUtY29yZVwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJJbmplY3RhYmxlc0Zyb21Nb2R1bGVzIH0gZnJvbSBcIkBrOHNsZW5zL2ZlYXR1cmUtY29yZVwiO1xuaW1wb3J0IG1vZHVsZXNXaXRoSW5qZWN0YWJsZXMgZnJvbSBcIi4vKiovKi5pbmplY3RhYmxlLih0c3x0c3gpXCI7XG5cbmV4cG9ydCBjb25zdCBlbGVtZW50Q29tcG9uZW50RmVhdHVyZSA9IGdldEZlYXR1cmUoe1xuICBpZDogXCJlbGVtZW50LWNvbXBvbmVudFwiLFxuICByZWdpc3RlcjogKGRpKSA9PiByZWdpc3RlckluamVjdGFibGVzRnJvbU1vZHVsZXMoZGksIG1vZHVsZXNXaXRoSW5qZWN0YWJsZXMpLFxuICAvLyBObyBmZWF0dXJlIGRlcGVuZGVuY2llczogYSBkZXNpZ24gc3lzdGVtIGV2ZXJ5b25lIG1heSBpbnN0YWxsIGNhbm5vdCBkcmFnXG4gIC8vIExlbnMgZmVhdHVyZXMgaW50byB0aGUgY2xvc3VyZS4gVGhlIGNsb2NrIHRoZSBob3ZlcmFibGUgcGx1Z2luIG5lZWRzIGlzXG4gIC8vIGxvY2FsLCBhbmQgdGhlIHBsYXRmb3JtIGlzIHJlYWQgZGlyZWN0bHkuXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5cbi8qKlxuICogV2hldGhlciB0aGUga2V5Ym9hcmQgY29udmVudGlvbnMgb2YgbWFjT1MgYXBwbHkuXG4gKlxuICogUmVhZCBmcm9tIHRoZSBicm93c2VyIHJhdGhlciB0aGFuIGZyb20gYHByb2Nlc3NgIG9yIHRoZSB2YXJzIGZlYXR1cmU6IHRoaXMgaXNcbiAqIGEgcmVuZGVyZXItb25seSBkZXNpZ24gc3lzdGVtLCBpdCBtYXkgbm90IGRlcGVuZCBvbiBhIGZlYXR1cmUgcGFja2FnZSwgYW5kXG4gKiBgcHJvY2Vzc2AgaXMgbm90IHRoZXJlIHRvIHJlYWQgb25jZSB0aGUgcmVuZGVyZXIgc3RvcHMgcnVubmluZyB3aXRoIG5vZGVcbiAqIGludGVncmF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgaXNNYWNJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJpcy1tYWNcIixcblxuICBpbnN0YW50aWF0ZTogKCkgPT4gKCkgPT4ge1xuICAgIGNvbnN0IHsgdXNlckFnZW50RGF0YSwgcGxhdGZvcm0sIHVzZXJBZ2VudCB9ID0gbmF2aWdhdG9yIGFzIE5hdmlnYXRvciAmIHtcbiAgICAgIHJlYWRvbmx5IHVzZXJBZ2VudERhdGE/OiB7IHJlYWRvbmx5IHBsYXRmb3JtPzogc3RyaW5nIH07XG4gICAgfTtcblxuICAgIHJldHVybiAvbWFjL2kudGVzdCh1c2VyQWdlbnREYXRhPy5wbGF0Zm9ybSA/PyBwbGF0Zm9ybSA/PyB1c2VyQWdlbnQgPz8gXCJcIik7XG4gIH0sXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBtYXRjaGVzIH0gZnJvbSBcImxvZGFzaC9mcFwiO1xuaW1wb3J0IHsgaXNNYWNJbmplY3RhYmxlIH0gZnJvbSBcIi4vaXMtbWFjLmluamVjdGFibGVcIjtcblxuZXhwb3J0IGNvbnN0IG9uUmlnaHRUcmlnZ2VySW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwib24tcmlnaHQtdHJpZ2dlclwiLFxuXG4gIGluc3RhbnRpYXRlOiAoZGkpID0+IHtcbiAgICBjb25zdCBpc01hYyA9IGRpLmluamVjdChpc01hY0luamVjdGFibGUpO1xuXG4gICAgcmV0dXJuICgpID0+IG9uUmlnaHRUcmlnZ2VyRm9yKGlzTWFjKCkgPyBpc01hY29zU2hvcnRjdXQgOiBpc0xpbnV4T3JXaW5kb3dzU2hvcnRjdXQpO1xuICB9LFxufSk7XG5cbmNvbnN0IG9uUmlnaHRUcmlnZ2VyRm9yID1cbiAgPFQ+KGNiOiAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQ8VD4pID0+IGJvb2xlYW4pID0+XG4gIChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxUPiwgY2FsbGJhY2s6IFJlYWN0LktleWJvYXJkRXZlbnRIYW5kbGVyPFQ+KSA9PiB7XG4gICAgaWYgKGNiKGV2ZW50KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNhbGxiYWNrKGV2ZW50KTtcbiAgICB9XG4gIH07XG5cbmNvbnN0IGlzTWFjb3NTaG9ydGN1dCA9IG1hdGNoZXMoe1xuICBzaGlmdEtleTogZmFsc2UsXG4gIGFsdEtleTogZmFsc2UsXG4gIGN0cmxLZXk6IGZhbHNlLFxuICBtZXRhS2V5OiB0cnVlLFxuICBjb2RlOiBcIkVudGVyXCIsXG59KTtcblxuY29uc3QgaXNMaW51eE9yV2luZG93c1Nob3J0Y3V0ID0gbWF0Y2hlcyh7XG4gIHNoaWZ0S2V5OiBmYWxzZSxcbiAgYWx0S2V5OiBmYWxzZSxcbiAgY3RybEtleTogdHJ1ZSxcbiAgbWV0YUtleTogZmFsc2UsXG4gIGNvZGU6IFwiRW50ZXJcIixcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcblxuZXhwb3J0IGNvbnN0IG1ha2VTdXJlRHJhZ0FuZERyb3BFdmVudHNIYXZlVGltZVRvSGFwcGVuSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwibWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW5cIixcblxuICBpbnN0YW50aWF0ZTogKCkgPT4gKCkgPT4gKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH0sIDUwKTtcbiAgfSxcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuXG5leHBvcnQgdHlwZSBOYXZpZ2FibGVFbnRyeSA9IHtcbiAgcmVhZG9ubHkgaXRlbTogdW5rbm93bjtcbiAgcmVhZG9ubHkgb3JkZXJOdW1iZXI6IG51bWJlcjtcbiAgcmVhZG9ubHkgZWxlbWVudDogSFRNTEVsZW1lbnQ7XG59O1xuXG50eXBlIE5hdmlnYWJsZUNvbnRleHQgPSBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQ8YW55PjtcblxuLyoqXG4gKiBUaGUgbWVtYmVycyBvZiBldmVyeSBrZXlib2FyZC1uYXZpZ2FibGUgY29udGV4dCwgdGhlIG9yZGVyIHRoZSBjb250ZXh0cyBhcHBlYXJlZCBpbiwgYW5kIHdoaWNoXG4gKiBtZW1iZXIgb2YgZWFjaCBoYWQgZm9jdXMuIEZvY3VzIGJlbG9uZ3MgdG8gdGhlIGNvbnRleHQgdGhhdCBhcHBlYXJlZCBsYXN0OyB3aGVuIGl0IGdvZXMgYXdheSwgdGhlXG4gKiBwcmV2aW91cyBvbmUgdGFrZXMgaXQgYmFjayBcdTIwMTQgYXQgdGhlIG1lbWJlciBpdCB3YXMgbGVmdCBvbiwgd2hpY2ggaXMgd2hhdCBtYWtlcyBzdGVwcGluZyBpbnRvXG4gKiBzb21ldGhpbmcgYW5kIGJhY2sgb3V0IG9mIGl0IGxhbmQgd2hlcmUgaXQgc3RhcnRlZCByYXRoZXIgdGhhbiBhdCB0aGUgYmVnaW5uaW5nLlxuICovXG5leHBvcnQgY29uc3Qga2V5Ym9hcmROYXZpZ2F0aW9uU3RhdGVJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJrZXlib2FyZC1uYXZpZ2F0aW9uLXN0YXRlXCIsXG5cbiAgaW5zdGFudGlhdGU6ICgpID0+IHtcbiAgICBjb25zdCBlbnRyaWVzQnlDb250ZXh0ID0gbmV3IE1hcDxOYXZpZ2FibGVDb250ZXh0LCBTZXQ8TmF2aWdhYmxlRW50cnk+PigpO1xuICAgIGNvbnN0IGl0ZW1JbkZvY3VzQnlDb250ZXh0ID0gbmV3IE1hcDxOYXZpZ2FibGVDb250ZXh0LCB1bmtub3duPigpO1xuICAgIGNvbnN0IGNvbnRleHRTdGFjazogTmF2aWdhYmxlQ29udGV4dFtdID0gW107XG5cbiAgICBjb25zdCBlbnRyaWVzT2YgPSAoY29udGV4dDogTmF2aWdhYmxlQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSBlbnRyaWVzQnlDb250ZXh0LmdldChjb250ZXh0KTtcblxuICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgIHJldHVybiBleGlzdGluZztcbiAgICAgIH1cblxuICAgICAgY29uc3QgY3JlYXRlZCA9IG5ldyBTZXQ8TmF2aWdhYmxlRW50cnk+KCk7XG5cbiAgICAgIGVudHJpZXNCeUNvbnRleHQuc2V0KGNvbnRleHQsIGNyZWF0ZWQpO1xuXG4gICAgICByZXR1cm4gY3JlYXRlZDtcbiAgICB9O1xuXG4gICAgcmV0dXJuICgpID0+ICh7XG4gICAgICBzb3J0ZWRFbnRyaWVzT2Y6IChjb250ZXh0OiBOYXZpZ2FibGVDb250ZXh0KSA9PlxuICAgICAgICBbLi4uZW50cmllc09mKGNvbnRleHQpXS5zb3J0KChhLCBiKSA9PiBhLm9yZGVyTnVtYmVyIC0gYi5vcmRlck51bWJlciksXG5cbiAgICAgIGNvbnRleHRJbkZvY3VzOiAoKSA9PiBjb250ZXh0U3RhY2suYXQoLTEpLFxuXG4gICAgICBpdGVtSW5Gb2N1c09mOiAoY29udGV4dDogTmF2aWdhYmxlQ29udGV4dCkgPT4gaXRlbUluRm9jdXNCeUNvbnRleHQuZ2V0KGNvbnRleHQpLFxuXG4gICAgICBub3RlSXRlbUluRm9jdXM6IChjb250ZXh0OiBOYXZpZ2FibGVDb250ZXh0LCBpdGVtOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGl0ZW1JbkZvY3VzQnlDb250ZXh0LnNldChjb250ZXh0LCBpdGVtKTtcbiAgICAgIH0sXG5cbiAgICAgIHJlZ2lzdGVyOiAoY29udGV4dDogTmF2aWdhYmxlQ29udGV4dCwgZW50cnk6IE5hdmlnYWJsZUVudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBlbnRyaWVzT2YoY29udGV4dCk7XG5cbiAgICAgICAgaWYgKGVudHJpZXMuc2l6ZSA9PT0gMCkge1xuICAgICAgICAgIGNvbnRleHRTdGFjay5wdXNoKGNvbnRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZW50cmllcy5hZGQoZW50cnkpO1xuICAgICAgfSxcblxuICAgICAgZGVyZWdpc3RlcjogKGNvbnRleHQ6IE5hdmlnYWJsZUNvbnRleHQsIGVudHJ5OiBOYXZpZ2FibGVFbnRyeSkgPT4ge1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gZW50cmllc09mKGNvbnRleHQpO1xuXG4gICAgICAgIGVudHJpZXMuZGVsZXRlKGVudHJ5KTtcblxuICAgICAgICBpZiAoZW50cmllcy5zaXplID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXhJblN0YWNrID0gY29udGV4dFN0YWNrLmxhc3RJbmRleE9mKGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKGluZGV4SW5TdGFjayAhPT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnRleHRTdGFjay5zcGxpY2UoaW5kZXhJblN0YWNrLCAxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBBIGNvbnRleHQgdGhhdCBpcyBnb25lIHJlbWVtYmVycyBub3RoaW5nOiB0aGUgbmV4dCB0aW1lIGl0cyBtZW1iZXJzIGFwcGVhciwgdGhleVxuICAgICAgICAgIC8vIGFwcGVhciBhbmV3LCBhbmQgdGhlIGxvd2VzdCBvcmRlciBudW1iZXIgdGFrZXMgZm9jdXMgYXMgaXQgZGlkIHRoZSBmaXJzdCB0aW1lLlxuICAgICAgICAgIGl0ZW1JbkZvY3VzQnlDb250ZXh0LmRlbGV0ZShjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfSxcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB7IGl0ZW1CZWluZ0hvdmVyZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuLi8uLi9pdGVtLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4uLy4uL2hvdmVyYWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBNdXRhYmxlUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gXCJtb2J4XCI7XG5cbmV4cG9ydCBjb25zdCBjb250ZXh0SXNCZWluZ0hvdmVyZWRJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJjb250ZXh0LWlzLWJlaW5nLWhvdmVyZWRcIixcbiAgY29uc3VtcHRpb25zOiBbaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuXSxcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgaXRlbUJlaW5nSG92ZXJlZCA9IGRpLmluamVjdChpdGVtQmVpbmdIb3ZlcmVkSW5qZWN0aW9uVG9rZW4pO1xuXG4gICAgcmV0dXJuIChjb250ZXh0OiBIb3ZlcmFibGVDb250ZXh0PE11dGFibGVSZWZPYmplY3Q8YW55Pj4pID0+IHtcbiAgICAgIGNvbnN0IGhvdmVyZWRJdGVtID0gaXRlbUJlaW5nSG92ZXJlZCgpKGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gY29tcHV0ZWQoKCkgPT4gISFob3ZlcmVkSXRlbS5nZXQoKSk7XG4gICAgfTtcbiAgfSxcbn0pO1xuIiwgImltcG9ydCB7IGdldFRlc3RVdGlsUnVubmFibGVGb3JPdmVycmlkZXMgfSBmcm9tIFwiQGs4c2xlbnMvdGVzdC11dGlsc1wiO1xuaW1wb3J0IGdsb2JhbE92ZXJyaWRlcyBmcm9tIFwiLi8qKi8qLmdsb2JhbC1vdmVycmlkZS1mb3ItaW5qZWN0YWJsZS4odHN8dHN4KVwiO1xuaW1wb3J0IGRlZmF1bHRPdmVycmlkZXMgZnJvbSBcIi4vKiovKi5kZWZhdWx0LW92ZXJyaWRlLih0c3x0c3gpXCI7XG5cbmV4cG9ydCBjb25zdCB0ZXN0VXRpbFJ1bm5hYmxlSW5qZWN0YWJsZSA9IGdldFRlc3RVdGlsUnVubmFibGVGb3JPdmVycmlkZXMoe1xuICBnbG9iYWxPdmVycmlkZXMsXG4gIGRlZmF1bHRPdmVycmlkZXMsXG59KTtcbiIsICJcblxuY29uc3QgbW9kdWxlcyA9IFtdO1xuXG5leHBvcnQgZGVmYXVsdCBtb2R1bGVzO1xuZXhwb3J0IGNvbnN0IGZpbGVuYW1lcyA9IFtdXG4iLCAiaW1wb3J0IHR5cGUgeyBEaUNvbnRhaW5lciB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBtYWtlU3VyZURyYWdBbmREcm9wRXZlbnRzSGF2ZVRpbWVUb0hhcHBlbkluamVjdGFibGUgfSBmcm9tIFwiLi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi5pbmplY3RhYmxlXCI7XG5cbi8vIFJ1bnMgdGhlIGNhbGxiYWNrIHN0cmFpZ2h0IGF3YXkgaW4gdGVzdHMsIGluc3RlYWQgb2YgYWZ0ZXIgdGhlIHJlYWwgZGVsYXkuXG5leHBvcnQgZGVmYXVsdCAoZGk6IERpQ29udGFpbmVyKSA9PiB7XG4gIGRpLm92ZXJyaWRlMihtYWtlU3VyZURyYWdBbmREcm9wRXZlbnRzSGF2ZVRpbWVUb0hhcHBlbkluamVjdGFibGUsICgpID0+ICgpID0+IChjYWxsYmFjazogKCkgPT4gdm9pZCkgPT4gY2FsbGJhY2soKSk7XG59O1xuIiwgImltcG9ydCB0eXBlIHsgRGlDb250YWluZXIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgdG9vbHRpcERlbGF5SW5qZWN0YWJsZSB9IGZyb20gXCIuL3Rvb2x0aXAtZGVsYXkuaW5qZWN0YWJsZVwiO1xuXG4vLyBObyBkZWxheSBpbiB0ZXN0cywgc28gYSB0b29sdGlwIGFwcGVhcnMgd2l0aG91dCBhbnlvbmUgYWR2YW5jaW5nIHRpbWVycy5cbi8vIFdyaXR0ZW4gYXMgYSBwbGFpbiBmdW5jdGlvbiByYXRoZXIgdGhhbiB0aHJvdWdoIGdldERlZmF1bHRNb2NraW5nT3ZlcnJpZGUsXG4vLyB3aGljaCBpcyBhbiBpZGVudGl0eSBmdW5jdGlvbiBpbiBhIHRlc3QgcGFja2FnZSB0aGlzIG9uZSBtYXkgbm90IGltcG9ydC5cbmV4cG9ydCBkZWZhdWx0IChkaTogRGlDb250YWluZXIpID0+IHtcbiAgZGkub3ZlcnJpZGUyKHRvb2x0aXBEZWxheUluamVjdGFibGUsICgpID0+ICgpID0+IHVuZGVmaW5lZCk7XG59O1xuIiwgImltcG9ydCB7IHJlbW92ZUNzc01vZHVsZUNsdXR0ZXJGb3JVbml0VGVzdGluZyB9IGZyb20gXCIuL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCBkZWZhdWx0ICgpID0+IHtcbiAgcmVtb3ZlQ3NzTW9kdWxlQ2x1dHRlckZvclVuaXRUZXN0aW5nKCk7XG59O1xuIiwgImltcG9ydCAqIGFzIG1vZHVsZTAgZnJvbSAnLi9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmRlZmF1bHQtb3ZlcnJpZGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTEgZnJvbSAnLi9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmRlZmF1bHQtb3ZlcnJpZGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTIgZnJvbSAnLi9yZW1vdmUtY3NzLW1vZHVsZS1jbHV0dGVyLmRlZmF1bHQtb3ZlcnJpZGUudHMnXG5cbmNvbnN0IG1vZHVsZXMgPSBbbW9kdWxlMCxtb2R1bGUxLG1vZHVsZTJdO1xuXG5leHBvcnQgZGVmYXVsdCBtb2R1bGVzO1xuZXhwb3J0IGNvbnN0IGZpbGVuYW1lcyA9IFsncGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi5kZWZhdWx0LW92ZXJyaWRlLnRzJywncGx1Z2lucy90b29sdGlwL3Rvb2x0aXAtZGVsYXkvdG9vbHRpcC1kZWxheS5kZWZhdWx0LW92ZXJyaWRlLnRzJywncmVtb3ZlLWNzcy1tb2R1bGUtY2x1dHRlci5kZWZhdWx0LW92ZXJyaWRlLnRzJ11cbiIsICJpbXBvcnQgKiBhcyBtb2R1bGUwIGZyb20gJy4vcGx1Z2lucy9jbGlja2FibGUvaXMtbWFjLmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTEgZnJvbSAnLi9wbHVnaW5zL2NsaWNrYWJsZS9vbi1yaWdodC10cmlnZ2VyLmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTIgZnJvbSAnLi9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL19zaGFyZWQvZHJhZ2dlZC1pdGVtLXN0YXRlLmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTMgZnJvbSAnLi9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2l0ZW0tYmVpbmctZHJhZ2dlZC5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGU0IGZyb20gJy4vcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGU1IGZyb20gJy4vcGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlNiBmcm9tICcuL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQvZm9jdXNhYmxlLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlNyBmcm9tICcuL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQva2V5Ym9hcmQtbmF2aWdhdGlvbi1zdGF0ZS5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGU4IGZyb20gJy4vcGx1Z2lucy9mb2N1c2FibGUvZG8tZm9jdXMuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlOSBmcm9tICcuL3BsdWdpbnMvZm9jdXNhYmxlL2l0ZW0tYmVpbmctZm9jdXNlZC5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMCBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2NvbXB1dGVkLW5vdy5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMSBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMiBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2l0ZW0tYmVpbmctaG92ZXJlZC5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMyBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2xvY2FsLWhvdmVyYWJsZS9fcHJpdmF0ZS9jb250ZXh0LWlzLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlMTQgZnJvbSAnLi9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTE1IGZyb20gJy4vdGVzdC11dGlsLXJ1bm5hYmxlLmluamVjdGFibGUudHMnXG5cbmNvbnN0IG1vZHVsZXMgPSBbbW9kdWxlMCxtb2R1bGUxLG1vZHVsZTIsbW9kdWxlMyxtb2R1bGU0LG1vZHVsZTUsbW9kdWxlNixtb2R1bGU3LG1vZHVsZTgsbW9kdWxlOSxtb2R1bGUxMCxtb2R1bGUxMSxtb2R1bGUxMixtb2R1bGUxMyxtb2R1bGUxNCxtb2R1bGUxNV07XG5cbmV4cG9ydCBkZWZhdWx0IG1vZHVsZXM7XG5leHBvcnQgY29uc3QgZmlsZW5hbWVzID0gWydwbHVnaW5zL2NsaWNrYWJsZS9pcy1tYWMuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvY2xpY2thYmxlL29uLXJpZ2h0LXRyaWdnZXIuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvX3NoYXJlZC9kcmFnZ2VkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvaXRlbS1iZWluZy1kcmFnZ2VkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2ZvY3VzYWJsZS9fc2hhcmVkL2ZvY3VzYWJsZS1odG1sLWVsZW1lbnQtcmVmLXNldC5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9mb2N1c2FibGUtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9rZXlib2FyZC1uYXZpZ2F0aW9uLXN0YXRlLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2ZvY3VzYWJsZS9kby1mb2N1cy5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9mb2N1c2FibGUvaXRlbS1iZWluZy1mb2N1c2VkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2hvdmVyYWJsZS9jb21wdXRlZC1ub3cuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9ob3ZlcmFibGUvaXRlbS1iZWluZy1ob3ZlcmVkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvX3ByaXZhdGUvY29udGV4dC1pcy1iZWluZy1ob3ZlcmVkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGUudHMnLCd0ZXN0LXV0aWwtcnVubmFibGUuaW5qZWN0YWJsZS50cyddXG4iLCAiaW1wb3J0IHR5cGUgeyBUdXBsZSB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuZXhwb3J0IHR5cGUgVFNoaXJ0U2l6ZSA9XG4gIHwgXCJ6ZXJvXCJcbiAgfCBgJHtSYW5nZTwzLCA0Pn14c2BcbiAgfCBcInh4c1wiXG4gIHwgXCJ4c1wiXG4gIHwgXCJzXCJcbiAgfCBcIm1cIlxuICB8IFwibFwiXG4gIHwgXCJ4bFwiXG4gIHwgXCJ4eGxcIlxuICB8IGAke1JhbmdlPDMsIDExPn14bGA7XG5cbmV4cG9ydCB0eXBlIFJhbmdlPFN0YXJ0IGV4dGVuZHMgbnVtYmVyLCBFbmQgZXh0ZW5kcyBudW1iZXI+ID0gUmFuZ2VJbXBsPFN0YXJ0LCBFbmQ+O1xudHlwZSBSYW5nZUltcGw8XG4gIFN0YXJ0IGV4dGVuZHMgbnVtYmVyLFxuICBFbmQgZXh0ZW5kcyBudW1iZXIsXG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9Db25mdXNpbmdWb2lkVHlwZTogcmVxdWlyZWQgZm9yIHRoZSBidWlsZCB0byBwYXNzXG4gIFQgZXh0ZW5kcyB2b2lkW10gPSBUdXBsZTx2b2lkLCBTdGFydD4sXG4+ID0gRW5kIGV4dGVuZHMgVFtcImxlbmd0aFwiXSA/IEVuZCA6IFRbXCJsZW5ndGhcIl0gfCBSYW5nZUltcGw8U3RhcnQsIEVuZCwgW3VuZGVmaW5lZCwgLi4uVF0+O1xuXG4vKiBjOCBpZ25vcmUgZW5kICovXG5cbi8qKiBUaGUgYmFzZSB1bml0IChpbiBwaXhlbHMpIHRoZSB0LXNoaXJ0IHNjYWxlIGlzIGJ1aWx0IG9uLiBNaXJyb3JzIGAkdW5pdGAgaW4gYHNpemVzLnNjc3NgLiAqL1xuZXhwb3J0IGNvbnN0IHNpemVVbml0SW5QaXhlbHMgPSA0O1xuXG4vLyBNdWx0aXBsaWVyIHBlciBzaXplLCBtaXJyb3JpbmcgdGhlIGAkc2l6ZXNgIG1hcCBpbiBgc2l6ZXMuc2Nzc2AuIEtlZXAgdGhlIHR3byBpbiBzeW5jLlxuY29uc3Qgc2l6ZU11bHRpcGxpZXJzOiBSZWNvcmQ8VFNoaXJ0U2l6ZSwgbnVtYmVyPiA9IHtcbiAgemVybzogMCxcbiAgXCI0eHNcIjogMSAvIDQsXG4gIFwiM3hzXCI6IDEgLyAyLFxuICB4eHM6IDEsXG4gIHhzOiAyLFxuICBzOiAzLFxuICBtOiA0LFxuICBsOiA1LFxuICB4bDogNixcbiAgeHhsOiA3LFxuICBcIjN4bFwiOiA4LFxuICBcIjR4bFwiOiA5LFxuICBcIjV4bFwiOiAxMCxcbiAgXCI2eGxcIjogMTEsXG4gIFwiN3hsXCI6IDEyLFxuICBcIjh4bFwiOiAxMyxcbiAgXCI5eGxcIjogMTQsXG4gIFwiMTB4bFwiOiAxNSxcbiAgXCIxMXhsXCI6IDE2LFxufTtcblxuLyoqXG4gKiBUaGUgcGl4ZWwgbGVuZ3RoIG9mIGEgdC1zaGlydCBzaXplIFx1MjAxNCB0aGUgc2FtZSB2YWx1ZSB0aGUgYCRzaXplYC9gJHdpZHRoYC9gJGhlaWdodGBcbiAqIGNsYXNzZXMgcmVzb2x2ZSB0byBpbiBDU1MuIFVzZSB3aGVuIGEgbGVuZ3RoIGlzIG5lZWRlZCByYXRoZXIgdGhhbiBhIHNpemluZyBjbGFzcyxcbiAqIGUuZy4gdG8gZHJpdmUgYW4gaWNvbiBmb250J3MgYGZvbnQtc2l6ZWAuXG4gKi9cbmV4cG9ydCBjb25zdCB0U2hpcnRTaXplSW5QaXhlbHMgPSAoc2l6ZTogVFNoaXJ0U2l6ZSk6IG51bWJlciA9PiBzaXplVW5pdEluUGl4ZWxzICogc2l6ZU11bHRpcGxpZXJzW3NpemVdO1xuIiwgIi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuaW1wb3J0IHsgZ2V0RWxlbWVudENvbXBvbmVudCB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgZmxleFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZmxleC9mbGV4XCI7XG5pbXBvcnQgeyBncmlkUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ncmlkL2dyaWRcIjtcbmltcG9ydCB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyB3aWR0aFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvd2lkdGgvd2lkdGhcIjtcbmltcG9ydCB7IHBhZGRpbmdQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3BhZGRpbmcvcGFkZGluZ1wiO1xuaW1wb3J0IHsgc3R5bGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3N0eWxlL3N0eWxlXCI7XG5pbXBvcnQgeyBoZWlnaHRQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2hlaWdodC9oZWlnaHRcIjtcbmltcG9ydCB7IGJvcmRlclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvYm9yZGVyL2JvcmRlclwiO1xuaW1wb3J0IHsgZm9udFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZm9udC9mb250XCI7XG5pbXBvcnQgeyBjb2xvclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvY29sb3IvY29sb3JcIjtcbmltcG9ydCB7IGJhY2tncm91bmRDb2xvclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvYmFja2dyb3VuZC1jb2xvci9iYWNrZ3JvdW5kLWNvbG9yXCI7XG5pbXBvcnQgeyBncmFkaWVudFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZ3JhZGllbnQvZ3JhZGllbnRcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZHJhZ2dhYmxlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9kcmFnZ2FibGVcIjtcbmltcG9ydCB7IGRyb3BwYWJsZVBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZHJvcHBhYmxlXCI7XG5pbXBvcnQgeyBvYnNlcnZlciB9IGZyb20gXCJtb2J4LXJlYWN0XCI7XG5pbXBvcnQgeyB0b29sdGlwUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy90b29sdGlwL3Rvb2x0aXBcIjtcbmltcG9ydCB7IHRyYW5zaXRpb25QbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3RyYW5zaXRpb24vdHJhbnNpdGlvblwiO1xuaW1wb3J0IHsgb2Zmc2V0UGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9vZmZzZXQvb2Zmc2V0XCI7XG5pbXBvcnQgeyBvZmZzZXRDaGlsZHJlblBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvb2Zmc2V0LWNoaWxkcmVuL29mZnNldC1jaGlsZHJlblwiO1xuaW1wb3J0IHsgaGlkZGVuUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9oaWRkZW4vaGlkZGVuXCI7XG5pbXBvcnQgeyBub1BvaW50ZXJFdmVudHNQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL25vLXBvaW50ZXItZXZlbnRzL25vLXBvaW50ZXItZXZlbnRzXCI7XG5pbXBvcnQgeyBtYXJnaW5QbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL21hcmdpbi9tYXJnaW5cIjtcbmltcG9ydCB7IHJlbGF0aXZlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9yZWxhdGl2ZS9yZWxhdGl2ZVwiO1xuaW1wb3J0IHsgYWJzb2x1dGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2Fic29sdXRlL2Fic29sdXRlXCI7XG5pbXBvcnQgeyB2aXN1YWxseUhpZGRlblBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvdmlzdWFsbHktaGlkZGVuL3Zpc3VhbGx5LWhpZGRlblwiO1xuaW1wb3J0IHsgaG92ZXJhYmxlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ob3ZlcmFibGUvaG92ZXJhYmxlXCI7XG5pbXBvcnQgeyBob3ZlcmFibGVCeURyYWdnaW5nUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ob3ZlcmFibGUvaG92ZXJhYmxlLWJ5LWRyYWdnaW5nXCI7XG5pbXBvcnQgeyBib3hTaGFkb3dQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvd1wiO1xuaW1wb3J0IHsgb3ZlcmZsb3dQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL292ZXJmbG93L292ZXJmbG93XCI7XG5pbXBvcnQgeyBmbGV4Q2hpbGRQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2ZsZXgtY2hpbGQvZmxleC1jaGlsZFwiO1xuaW1wb3J0IHsgZ3JheXNjYWxlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ncmF5c2NhbGUvZ3JheXNjYWxlXCI7XG5pbXBvcnQgeyB0aW50UGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy90aW50L3RpbnRcIjtcbmltcG9ydCB7IGZhZGVkUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9mYWRlZC9mYWRlZFwiO1xuaW1wb3J0IHsgZW5hYmxlZFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZW5hYmxlZC9lbmFibGVkXCI7XG5pbXBvcnQgeyBmb2N1c2FibGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2ZvY3VzYWJsZS9mb2N1c2FibGVcIjtcbmltcG9ydCB7IGFyZWFQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2FyZWEvYXJlYVwiO1xuaW1wb3J0IHsgYXJlYUNvbnRlbnRQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2FyZWEtY29udGVudC9hcmVhLWNvbnRlbnRcIjtcbmltcG9ydCB7IHNpemVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3NpemUvc2l6ZVwiO1xuaW1wb3J0IHsgY3Vyc29yUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9jdXJzb3IvY3Vyc29yXCI7XG5pbXBvcnQgeyBjbGlja2FibGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2NsaWNrYWJsZS9jbGlja2FibGVcIjtcbmltcG9ydCB7IHJlZlBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvcmVmL3JlZlwiO1xuaW1wb3J0IHsgZGlzcGxheUNvbnRlbnRzUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9kaXNwbGF5LWNvbnRlbnRzL2Rpc3BsYXktY29udGVudHNcIjtcbmltcG9ydCB7IHRleHRBbGlnblBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvdGV4dC1hbGlnbi90ZXh0LWFsaWduXCI7XG5pbXBvcnQgeyBibG9ja1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvYmxvY2svYmxvY2tcIjtcbmltcG9ydCB7IG91dGxpbmVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL291dGxpbmUvb3V0bGluZVwiO1xuaW1wb3J0IHsgcG9wb3ZlclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyXCI7XG5pbXBvcnQgeyBmbG9hdGluZ1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZmxvYXRpbmcvZmxvYXRpbmdcIjtcbmltcG9ydCB7IGludmlzaWJsZUJhY2tkcm9wUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9pbnZpc2libGUtYmFja2Ryb3AvaW52aXNpYmxlLWJhY2tkcm9wXCI7XG5pbXBvcnQgeyBvbk91dHNpZGVDbGlja1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrXCI7XG5pbXBvcnQgeyBkcm9wRG93bk1lbnVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2Ryb3AtZG93bi1tZW51L2Ryb3AtZG93bi1tZW51XCI7XG5pbXBvcnQgeyBhbmNob3JQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2FuY2hvci9hbmNob3JcIjtcblxuZXhwb3J0IGNvbnN0IHNoYXJlZFBsdWdpbnMgPSBbXG4gIC8vIENvbnRyaWJ1dGVzIHByb3BzIG9mIGl0cyBvd24sIHNvIGl0IGhhcyB0byBydW4gYmVmb3JlIHRoZSBwbHVnaW5zIHRoYXQgcmVzb2x2ZSB0aGVtLlxuICBhbmNob3JQbHVnaW4sXG4gIHNpemVQbHVnaW4sXG4gIGRyYWdnYWJsZVBsdWdpbixcbiAgdGV4dEFsaWduUGx1Z2luLFxuICBkcm9wcGFibGVQbHVnaW4sXG4gIGFyZWFQbHVnaW4sXG4gIGFyZWFDb250ZW50UGx1Z2luLFxuICBmbGV4UGx1Z2luLFxuICBncmlkUGx1Z2luLFxuICB3aWR0aFBsdWdpbixcbiAgaGVpZ2h0UGx1Z2luLFxuICBmbGV4Q2hpbGRQbHVnaW4sXG4gIG92ZXJmbG93UGx1Z2luLFxuICBwYWRkaW5nUGx1Z2luLFxuICBtYXJnaW5QbHVnaW4sXG4gIGJsb2NrUGx1Z2luLFxuICBib3hTaGFkb3dQbHVnaW4sXG4gIGJvcmRlclBsdWdpbixcbiAgb3V0bGluZVBsdWdpbixcbiAgZm9udFBsdWdpbixcbiAgY29sb3JQbHVnaW4sXG4gIGJhY2tncm91bmRDb2xvclBsdWdpbixcbiAgZ3JhZGllbnRQbHVnaW4sXG4gIGdyYXlzY2FsZVBsdWdpbixcbiAgdGludFBsdWdpbixcbiAgZmFkZWRQbHVnaW4sXG4gIHN0eWxlUGx1Z2luLFxuICB0cmFuc2l0aW9uUGx1Z2luLFxuICBvZmZzZXRQbHVnaW4sXG4gIG9mZnNldENoaWxkcmVuUGx1Z2luLFxuICBoaWRkZW5QbHVnaW4sXG4gIG5vUG9pbnRlckV2ZW50c1BsdWdpbixcbiAgaW52aXNpYmxlQmFja2Ryb3BQbHVnaW4sXG4gIHZpc3VhbGx5SGlkZGVuUGx1Z2luLFxuICByZWxhdGl2ZVBsdWdpbixcbiAgYWJzb2x1dGVQbHVnaW4sXG4gIGN1cnNvclBsdWdpbixcbiAgZGlzcGxheUNvbnRlbnRzUGx1Z2luLFxuICBvbk91dHNpZGVDbGlja1BsdWdpbixcbiAgY2xhc3NOYW1lUGx1Z2luLFxuXTtcblxuY29uc3Qgc2hhcmVkQ2xpY2thYmxlUGx1Z2lucyA9IFtkcm9wRG93bk1lbnVQbHVnaW4sIHBvcG92ZXJQbHVnaW4sIGVuYWJsZWRQbHVnaW4sIGNsaWNrYWJsZVBsdWdpbl07XG5cbmV4cG9ydCBjb25zdCBnZXRTaGFyZWRUeXBlZFBsdWdpbnMgPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PigpID0+IFtcbiAgLi4uZ2V0U2hhcmVkQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnM8VD4oKSxcbiAgLi4uZ2V0U2hhcmVkTm9uQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnM8VD4oKSxcbl07XG5cbmNvbnN0IGdldFNoYXJlZENoaWxkcmVuQWRkaW5nVHlwZWRQbHVnaW5zID0gPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4oKSA9PiBbdG9vbHRpcFBsdWdpbjxUPigpLCBmbG9hdGluZ1BsdWdpbjxUPigpXTtcblxuY29uc3QgZ2V0U2hhcmVkTm9uQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnMgPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PigpID0+IFtcbiAgaG92ZXJhYmxlUGx1Z2luPFQ+KCksXG4gIGhvdmVyYWJsZUJ5RHJhZ2dpbmdQbHVnaW48VD4oKSxcbiAgZm9jdXNhYmxlUGx1Z2luPFQ+KCksXG4gIHJlZlBsdWdpbjxUPigpLFxuXTtcblxuZXhwb3J0IGNvbnN0IERpdiA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJkaXZcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxEaXZFbGVtZW50PigpKSk7XG5cbmV4cG9ydCB0eXBlIERpdlByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERpdj47XG5cbi8vIFVzZSBkaXYgYXMgbmV1dHJhbCB0ZW1wbGF0ZSBmb3Igd2hhdCBjb21tb24gcHJvcHMgc2hvdWxkIGxvb2sgbGlrZVxuZXhwb3J0IGNvbnN0IENvbW1vbiA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJkaXZcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPGFueT4oKSkpO1xuZXhwb3J0IHR5cGUgQ29tbW9uUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ29tbW9uPjtcblxuZXhwb3J0IGNvbnN0IFN2ZyA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJzdmdcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxFbGVtZW50PigpKSk7XG5cbmV4cG9ydCB0eXBlIFN2Z1Byb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFN2Zz47XG5cbmV4cG9ydCBjb25zdCBJbnB1dCA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFxuICAgIFwiaW5wdXRcIixcbiAgICBlbmFibGVkUGx1Z2luLFxuICAgIC4uLnNoYXJlZFBsdWdpbnMsXG4gICAgLi4uZ2V0U2hhcmVkTm9uQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnM8SFRNTElucHV0RWxlbWVudD4oKSxcbiAgKSxcbik7XG5leHBvcnQgdHlwZSBJbnB1dFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIElucHV0PjtcblxuZXhwb3J0IGNvbnN0IFRleHRBcmVhID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJ0ZXh0YXJlYVwiLCBlbmFibGVkUGx1Z2luLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFRleHRBcmVhRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgVGV4dEFyZWFQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBUZXh0QXJlYT47XG5cbmV4cG9ydCBjb25zdCBGb3JtID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJmb3JtXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRm9ybUVsZW1lbnQ+KCkpLFxuKTtcbmV4cG9ydCB0eXBlIEZvcm1Qcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBGb3JtPjtcblxuZXhwb3J0IGNvbnN0IFNwYW4gPSBvYnNlcnZlcihcbiAgZ2V0RWxlbWVudENvbXBvbmVudChcInNwYW5cIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxTcGFuRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgU3BhblByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFNwYW4+O1xuXG5leHBvcnQgY29uc3QgQ2xpY2thYmxlRGl2ID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJkaXZcIiwgLi4uc2hhcmVkQ2xpY2thYmxlUGx1Z2lucywgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxEaXZFbGVtZW50PigpKSxcbik7XG5leHBvcnQgdHlwZSBDbGlja2FibGVEaXZQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBDbGlja2FibGVEaXY+O1xuXG5leHBvcnQgY29uc3QgSSA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJpXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgSVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEk+O1xuXG5leHBvcnQgY29uc3QgQSA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJhXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MQW5jaG9yRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgQVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEE+O1xuXG5leHBvcnQgY29uc3QgQnV0dG9uID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXG4gICAgXCJidXR0b25cIixcbiAgICAuLi5zaGFyZWRDbGlja2FibGVQbHVnaW5zLFxuICAgIC4uLnNoYXJlZFBsdWdpbnMsXG4gICAgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxCdXR0b25FbGVtZW50PigpLFxuICApLFxuKTtcbmV4cG9ydCB0eXBlIEJ1dHRvblByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEJ1dHRvbj47XG5cbmV4cG9ydCBjb25zdCBDb2RlID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImNvZGVcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBDb2RlUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ29kZT47XG5cbmV4cG9ydCBjb25zdCBMYWJlbCA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJsYWJlbFwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTEVsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIExhYmVsUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgTGFiZWw+O1xuXG5leHBvcnQgY29uc3QgUHJlID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcInByZVwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFByZUVsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIFByZVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFByZT47XG5cbmV4cG9ydCBjb25zdCBOYXYgPSBvYnNlcnZlcihnZXRFbGVtZW50Q29tcG9uZW50KFwibmF2XCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgTmF2UHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgTmF2PjtcblxuZXhwb3J0IGNvbnN0IEgxID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImgxXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MSGVhZGluZ0VsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIEgxUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgSDE+O1xuXG5leHBvcnQgY29uc3QgSDIgPSBvYnNlcnZlcihnZXRFbGVtZW50Q29tcG9uZW50KFwiaDJcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxIZWFkaW5nRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgSDJQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBIMj47XG5cbmV4cG9ydCBjb25zdCBIMyA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJoM1wiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTEhlYWRpbmdFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBIM1Byb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEgzPjtcblxuZXhwb3J0IGNvbnN0IEg0ID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImg0XCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MSGVhZGluZ0VsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIEg0UHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgSDQ+O1xuXG5leHBvcnQgY29uc3QgSDUgPSBvYnNlcnZlcihnZXRFbGVtZW50Q29tcG9uZW50KFwiaDVcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxIZWFkaW5nRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgSDVQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBINT47XG5cbmV4cG9ydCBjb25zdCBINiA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJoNlwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTEhlYWRpbmdFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBINlByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEg2PjtcblxuZXhwb3J0IGNvbnN0IE9sID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcIm9sXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MT0xpc3RFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBPbFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIE9sPjtcblxuZXhwb3J0IGNvbnN0IFVsID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcInVsXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MVUxpc3RFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBVbFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFVsPjtcblxuZXhwb3J0IGNvbnN0IExpID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImxpXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MTElFbGVtZW50PigpKSk7XG5cbmV4cG9ydCBjb25zdCBDbGlja2FibGVMaSA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwibGlcIiwgLi4uc2hhcmVkQ2xpY2thYmxlUGx1Z2lucywgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxMSUVsZW1lbnQ+KCkpLFxuKTtcbmV4cG9ydCB0eXBlIENsaWNrYWJsZUxpUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ2xpY2thYmxlTGk+O1xuZXhwb3J0IHR5cGUgTGlQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBMaT47XG5cbmV4cG9ydCBjb25zdCBQID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcInBcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxQYXJhZ3JhcGhFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBQUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgUD47XG5cbmV4cG9ydCBjb25zdCBUaCA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwidGhcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxUYWJsZUNlbGxFbGVtZW50PigpKSxcbik7XG5cbmV4cG9ydCB0eXBlIFRoUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgVGg+O1xuXG5leHBvcnQgY29uc3QgVGQgPSBvYnNlcnZlcihcbiAgZ2V0RWxlbWVudENvbXBvbmVudChcInRkXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MVGFibGVDZWxsRWxlbWVudD4oKSksXG4pO1xuXG5leHBvcnQgdHlwZSBUZFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFRkPjtcblxuZXhwb3J0IGNvbnN0IFRyID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJ0clwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFRhYmxlUm93RWxlbWVudD4oKSksXG4pO1xuXG5leHBvcnQgdHlwZSBUclByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFRyPjtcblxuZXhwb3J0IGNvbnN0IFRhYmxlID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJ0YWJsZVwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFRhYmxlRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgVGFibGVQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBUYWJsZT47XG5cbmV4cG9ydCBjb25zdCBUQm9keSA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwidGJvZHlcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PigpKSxcbik7XG5leHBvcnQgdHlwZSBUQm9keVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFRCb2R5PjtcblxuZXhwb3J0IGNvbnN0IERpYWxvZyA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwiZGlhbG9nXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRGlhbG9nRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgRGlhbG9nUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRGlhbG9nPjtcblxuZXhwb3J0IGNvbnN0IENhbnZhcyA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwiY2FudmFzXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MQ2FudmFzRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgQ2FudmFzUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ2FudmFzPjtcblxuZXhwb3J0IGNvbnN0IEltZyA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJpbWdcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxJbWFnZUVsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIEltZ1Byb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEltZz47XG5cbi8qIGM4IGlnbm9yZSBlbmQgKi9cbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9mbGV4L2ZsZXgubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJmbGV4XCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX19lRkxFY1wiLFxuICBcImZsZXhfX3dyYXAtLXdyYXBcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fd3JhcC0td3JhcF9fXzJMcVRnXCIsXG4gIFwiZmxleF9fZGlyZWN0aW9uLS12ZXJ0aWNhbFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19kaXJlY3Rpb24tLXZlcnRpY2FsX19fMEFpT2ZcIixcbiAgXCJmbGV4X19kaXJlY3Rpb24tLXZlcnRpY2FsLXJldmVyc2VkXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2RpcmVjdGlvbi0tdmVydGljYWwtcmV2ZXJzZWRfX19Jb2UtNVwiLFxuICBcImZsZXhfX2RpcmVjdGlvbi0taG9yaXpvbnRhbFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19kaXJlY3Rpb24tLWhvcml6b250YWxfX19hMzJ6b1wiLFxuICBcImZsZXhfX2RpcmVjdGlvbi0taG9yaXpvbnRhbC1yZXZlcnNlZFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19kaXJlY3Rpb24tLWhvcml6b250YWwtcmV2ZXJzZWRfX19pTHdES1wiLFxuICBcImZsZXhfX2p1c3RpZnlDb250ZW50LS1zcGFjZUJldHdlZW5cIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fanVzdGlmeUNvbnRlbnQtLXNwYWNlQmV0d2Vlbl9fX2E2b01IXCIsXG4gIFwiZmxleF9fanVzdGlmeUNvbnRlbnQtLXNwYWNlQXJvdW5kXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2p1c3RpZnlDb250ZW50LS1zcGFjZUFyb3VuZF9fXzVZT1U0XCIsXG4gIFwiZmxleF9fanVzdGlmeUNvbnRlbnQtLWNlbnRlclwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tY2VudGVyX19fdXJaWUdcIixcbiAgXCJmbGV4X19qdXN0aWZ5Q29udGVudC0tc3RyZXRjaFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tc3RyZXRjaF9fX001YXowXCIsXG4gIFwiZmxleF9fanVzdGlmeUNvbnRlbnQtLWZsZXhTdGFydFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleFN0YXJ0X19fUEhGMUVcIixcbiAgXCJmbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleEVuZFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleEVuZF9fX2FNUHgwXCIsXG4gIFwiZmxleF9fYWxpZ25JdGVtcy0tc3RyZXRjaFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19hbGlnbkl0ZW1zLS1zdHJldGNoX19fYkFOaWdcIixcbiAgXCJmbGV4X19hbGlnbkl0ZW1zLS1jZW50ZXJcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fYWxpZ25JdGVtcy0tY2VudGVyX19fMFZzeTlcIixcbiAgXCJmbGV4X19hbGlnbkl0ZW1zLS1mbGV4U3RhcnRcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fYWxpZ25JdGVtcy0tZmxleFN0YXJ0X19fajBKenhcIixcbiAgXCJmbGV4X19hbGlnbkl0ZW1zLS1mbGV4RW5kXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2FsaWduSXRlbXMtLWZsZXhFbmRfX19EbVU1UlwiLFxuICBcImZsZXhfX2dhcC0temVyb1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXplcm9fX193My1UZ1wiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS16ZXJvXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS16ZXJvX19fOTYwQTdcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0temVyb1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0temVyb19fX29LdXNUXCIsXG4gIFwiZmxleF9fZ2FwLS00eHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS00eHNfX19yclRKZVwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS00eHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTR4c19fX1RSM1lFXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTR4c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tNHhzX19fNmluM2pcIixcbiAgXCJmbGV4X19nYXAtLTN4c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTN4c19fX1JjdW1SXCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLTN4c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tM3hzX19fWC1DMWFcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tM3hzXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS0zeHNfX19rVzBpT1wiLFxuICBcImZsZXhfX2dhcC0teHhzXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0teHhzX19fVUIzRmpcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0teHhzXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS14eHNfX191SVp2MlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS14eHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXh4c19fX3QtZ3FOXCIsXG4gIFwiZmxleF9fZ2FwLS14c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXhzX19fdHQzU29cIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0teHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLXhzX19fQjVvWGNcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0teHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXhzX19fMUVYMmZcIixcbiAgXCJmbGV4X19nYXAtLXNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1zX19fOW1ZelNcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tc1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tc19fX2F2dGYtXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLXNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXNfX19ZT0JWVlwiLFxuICBcImZsZXhfX2dhcC0tbVwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLW1fX19BYi10MFwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS1tXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS1tX19fUTZjQi1cIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tbVwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tbV9fXzctRFEwXCIsXG4gIFwiZmxleF9fZ2FwLS1sXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tbF9fX2N2bWp3XCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLWxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLWxfX19FcFF0VFwiLFxuICBcImZsZXhfX2dhcC0tcm93LS1sXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS1sX19feFlpS2hcIixcbiAgXCJmbGV4X19nYXAtLXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0teGxfX19DSXNOUFwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS14bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0teGxfX19tTFV4UlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS14bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0teGxfX19LV04zM1wiLFxuICBcImZsZXhfX2dhcC0teHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0teHhsX19fMTJ0LTZcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0teHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS14eGxfX192QUx0ZlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS14eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXh4bF9fX0lkY3FVXCIsXG4gIFwiZmxleF9fZ2FwLS0zeGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS0zeGxfX19pVXJ4MVwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS0zeGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTN4bF9fXy1OVjBaXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTN4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tM3hsX19fVlljUmhcIixcbiAgXCJmbGV4X19nYXAtLTR4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTR4bF9fX2ZaaUtWXCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLTR4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tNHhsX19fWDlLcHlcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tNHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS00eGxfX19kYnZXMFwiLFxuICBcImZsZXhfX2dhcC0tNXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tNXhsX19fNDNoSHZcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tNXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS01eGxfX18yWHllUVwiLFxuICBcImZsZXhfX2dhcC0tcm93LS01eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLTV4bF9fX3F2ak9FXCIsXG4gIFwiZmxleF9fZ2FwLS02eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS02eGxfX19zUHk2TFwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS02eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTZ4bF9fX3phZ1dNXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTZ4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tNnhsX19fVS11WkpcIixcbiAgXCJmbGV4X19nYXAtLTd4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTd4bF9fX09hd3YtXCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLTd4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tN3hsX19fS3pyTXJcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tN3hsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS03eGxfX19wQXZMdlwiLFxuICBcImZsZXhfX2dhcC0tOHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tOHhsX19fRWVvRS1cIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tOHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS04eGxfX19rYmlvSlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS04eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLTh4bF9fX1AtOS1lXCIsXG4gIFwiZmxleF9fZ2FwLS05eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS05eGxfX19UZ25VU1wiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS05eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTl4bF9fX05HbDNKXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTl4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tOXhsX19fRUd1ZWhcIixcbiAgXCJmbGV4X19nYXAtLTEweGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS0xMHhsX19fQ2YxdzZcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tMTB4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tMTB4bF9fX0xKUkdsXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTEweGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLTEweGxfX196UHR5TlwiLFxuICBcImZsZXhfX2dhcC0tMTF4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTExeGxfX19vcmZnSVwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS0xMXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS0xMXhsX19fZERLZHBcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tMTF4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tMTF4bF9fX3ZERy1BXCJcbn07IiwgImltcG9ydCBmbGV4U3R5bGVzIGZyb20gXCIuL2ZsZXgubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFRTaGlydFNpemUgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuXG5leHBvcnQgdHlwZSBIb3Jpem9udGFsRmxleFByb3BzID0ge1xuICBkaXJlY3Rpb24/OiBcImhvcml6b250YWxcIiB8IFwiaG9yaXpvbnRhbC1yZXZlcnNlZFwiO1xuXG4gIGhvcml6b250YWxBbGlnbj86IFwiY2VudGVyXCIgfCBcInNwYWNlLWJldHdlZW5cIiB8IFwic3BhY2UtYXJvdW5kXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIjtcbiAgdmVydGljYWxBbGlnbj86IFwiY2VudGVyXCIgfCBcInN0cmV0Y2hcIiB8IFwidG9wXCIgfCBcImJvdHRvbVwiO1xufTtcblxuZXhwb3J0IHR5cGUgVmVydGljYWxGbGV4UHJvcHMgPSB7XG4gIGRpcmVjdGlvbj86IFwidmVydGljYWxcIiB8IFwidmVydGljYWwtcmV2ZXJzZWRcIjtcblxuICBob3Jpem9udGFsQWxpZ24/OiBcImNlbnRlclwiIHwgXCJzdHJldGNoXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIjtcbiAgdmVydGljYWxBbGlnbj86IFwiY2VudGVyXCIgfCBcInNwYWNlLWJldHdlZW5cIiB8IFwic3BhY2UtYXJvdW5kXCIgfCBcInRvcFwiIHwgXCJib3R0b21cIjtcbn07XG5cbmV4cG9ydCB0eXBlIE1heGltYWxGbGV4UHJvcHMgPSAoSG9yaXpvbnRhbEZsZXhQcm9wcyB8IFZlcnRpY2FsRmxleFByb3BzKSAmIHtcbiAgZ2FwPzogVFNoaXJ0U2l6ZSB8IHsgcm93PzogVFNoaXJ0U2l6ZTsgY29sdW1uPzogVFNoaXJ0U2l6ZSB9O1xuICB3cmFwPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFNpbXBsZUZsZXhQcm9wID0gYm9vbGVhbjtcblxuZXhwb3J0IHR5cGUgRmxleFBsdWdpblByb3BzID0geyAkZmxleD86IFNpbXBsZUZsZXhQcm9wIHwgTWF4aW1hbEZsZXhQcm9wcyB9O1xuXG5leHBvcnQgY29uc3QgZmxleFBsdWdpbiA9IGdldFBsdWdpbjxGbGV4UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGZsZXggfSA9IHByb3BzO1xuXG4gIGlmICghJGZsZXgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJGZsZXg6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3Qge1xuICAgIGRpcmVjdGlvbiA9IFwiaG9yaXpvbnRhbFwiLFxuICAgIHZlcnRpY2FsQWxpZ24gPSBcIlwiLFxuICAgIGhvcml6b250YWxBbGlnbiA9IFwiXCIsXG4gICAgZ2FwID0gdW5kZWZpbmVkLFxuICAgIHdyYXAsXG4gIH0gPSAkZmxleCA9PT0gdHJ1ZSA/IHt9IDogJGZsZXg7XG5cbiAgY29uc3QgaG9yaXpvbnRhbEFsaWduUHJvcHMgPSB7XG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2FsaWduSXRlbXMtLXN0cmV0Y2hgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwic3RyZXRjaFwiLFxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19hbGlnbkl0ZW1zLS1jZW50ZXJgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwiY2VudGVyXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2FsaWduSXRlbXMtLWZsZXhTdGFydGBdXTogdmVydGljYWxBbGlnbiA9PT0gXCJ0b3BcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tZmxleEVuZGBdXTogdmVydGljYWxBbGlnbiA9PT0gXCJib3R0b21cIixcblxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tc3BhY2VBcm91bmRgXV06IGhvcml6b250YWxBbGlnbiA9PT0gXCJzcGFjZS1hcm91bmRcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fanVzdGlmeUNvbnRlbnQtLXNwYWNlQmV0d2VlbmBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcInNwYWNlLWJldHdlZW5cIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fanVzdGlmeUNvbnRlbnQtLXN0cmV0Y2hgXV06IGhvcml6b250YWxBbGlnbiA9PT0gXCJzdHJldGNoXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1jZW50ZXJgXV06IGhvcml6b250YWxBbGlnbiA9PT0gXCJjZW50ZXJcIixcblxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleFN0YXJ0YF1dOlxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJob3Jpem9udGFsXCIgJiYgaG9yaXpvbnRhbEFsaWduID09PSBcImxlZnRcIikgfHxcbiAgICAgIChkaXJlY3Rpb24gPT09IFwiaG9yaXpvbnRhbC1yZXZlcnNlZFwiICYmIGhvcml6b250YWxBbGlnbiA9PT0gXCJyaWdodFwiKSxcblxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleEVuZGBdXTpcbiAgICAgIChkaXJlY3Rpb24gPT09IFwiaG9yaXpvbnRhbFwiICYmIGhvcml6b250YWxBbGlnbiA9PT0gXCJyaWdodFwiKSB8fFxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJob3Jpem9udGFsLXJldmVyc2VkXCIgJiYgaG9yaXpvbnRhbEFsaWduID09PSBcImxlZnRcIiksXG4gIH07XG5cbiAgY29uc3QgdmVydGljYWxBbGlnblByb3BzID0ge1xuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tc3BhY2VBcm91bmRgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwic3BhY2UtYXJvdW5kXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1zcGFjZUJldHdlZW5gXV06IHZlcnRpY2FsQWxpZ24gPT09IFwic3BhY2UtYmV0d2VlblwiLFxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tc3RyZXRjaGBdXTogdmVydGljYWxBbGlnbiA9PT0gXCJzdHJldGNoXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1jZW50ZXJgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwiY2VudGVyXCIsXG5cbiAgICBbZmxleFN0eWxlc1tgZmxleF9fanVzdGlmeUNvbnRlbnQtLWZsZXhTdGFydGBdXTpcbiAgICAgIChkaXJlY3Rpb24gPT09IFwidmVydGljYWxcIiAmJiB2ZXJ0aWNhbEFsaWduID09PSBcInRvcFwiKSB8fFxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJ2ZXJ0aWNhbC1yZXZlcnNlZFwiICYmIHZlcnRpY2FsQWxpZ24gPT09IFwiYm90dG9tXCIpLFxuXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1mbGV4RW5kYF1dOlxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJ2ZXJ0aWNhbFwiICYmIHZlcnRpY2FsQWxpZ24gPT09IFwiYm90dG9tXCIpIHx8XG4gICAgICAoZGlyZWN0aW9uID09PSBcInZlcnRpY2FsLXJldmVyc2VkXCIgJiYgdmVydGljYWxBbGlnbiA9PT0gXCJ0b3BcIiksXG5cbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tc3RyZXRjaGBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcInN0cmV0Y2hcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tY2VudGVyYF1dOiBob3Jpem9udGFsQWxpZ24gPT09IFwiY2VudGVyXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2FsaWduSXRlbXMtLWZsZXhTdGFydGBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcImxlZnRcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tZmxleEVuZGBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcInJpZ2h0XCIsXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbXG4gICAgICBmbGV4U3R5bGVzLmZsZXgsXG4gICAgICBmbGV4U3R5bGVzW2BmbGV4X19kaXJlY3Rpb24tLSR7ZGlyZWN0aW9ufWBdLFxuXG4gICAgICBbXCJob3Jpem9udGFsXCIsIFwiaG9yaXpvbnRhbC1yZXZlcnNlZFwiXS5pbmNsdWRlcyhkaXJlY3Rpb24pID8gaG9yaXpvbnRhbEFsaWduUHJvcHMgOiB2ZXJ0aWNhbEFsaWduUHJvcHMsXG5cbiAgICAgIHR5cGVvZiBnYXAgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyBmbGV4U3R5bGVzW2BmbGV4X19nYXAtLSR7Z2FwfWBdXG4gICAgICAgIDogZ2FwXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIGdhcC5jb2x1bW4gPyBmbGV4U3R5bGVzW2BmbGV4X19nYXAtLWNvbHVtbi0tJHtnYXAuY29sdW1ufWBdIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBnYXAucm93ID8gZmxleFN0eWxlc1tgZmxleF9fZ2FwLS1yb3ctLSR7Z2FwLnJvd31gXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHdyYXAgJiYgZmxleFN0eWxlc1tgZmxleF9fd3JhcC0td3JhcGBdLFxuXG4gICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuICAgIF0sXG5cbiAgICAkZmxleDogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvZ3JpZC9ncmlkLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiZ3JpZFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19fTVBUaE9cIixcbiAgXCJncmlkX19jb2x1bW5zLS0xXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2NvbHVtbnMtLTFfX19ZMFUyTVwiLFxuICBcImdyaWRfX2NvbHVtbnMtLTJcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fY29sdW1ucy0tMl9fX1lnUzRIXCIsXG4gIFwiZ3JpZF9fY29sdW1ucy0tM1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19jb2x1bW5zLS0zX19fbWFCRDJcIixcbiAgXCJncmlkX19jb2x1bW5zLS00XCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2NvbHVtbnMtLTRfX183M0JqQVwiLFxuICBcImdyaWRfX2NvbHVtbnMtLTVcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fY29sdW1ucy0tNV9fX1NsdC1EXCIsXG4gIFwiZ3JpZF9fY29sdW1ucy0tNlwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19jb2x1bW5zLS02X19fbnlNOHpcIixcbiAgXCJncmlkX19hbGlnbkl0ZW1zLS1zdHJldGNoXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2FsaWduSXRlbXMtLXN0cmV0Y2hfX194WGQzWlwiLFxuICBcImdyaWRfX2FsaWduSXRlbXMtLWNlbnRlclwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19hbGlnbkl0ZW1zLS1jZW50ZXJfX19FOG1MLVwiLFxuICBcImdyaWRfX2FsaWduSXRlbXMtLXN0YXJ0XCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2FsaWduSXRlbXMtLXN0YXJ0X19fMk5kdlNcIixcbiAgXCJncmlkX19hbGlnbkl0ZW1zLS1lbmRcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fYWxpZ25JdGVtcy0tZW5kX19fMUlwWW1cIixcbiAgXCJncmlkX19nYXAtLXplcm9cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS16ZXJvX19fRzFxOGRcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0temVyb1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0temVyb19fX3lnUXBKXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLXplcm9cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLXplcm9fX193MS1PeFwiLFxuICBcImdyaWRfX2dhcC0tNHhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tNHhzX19fek8wbXZcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tNHhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS00eHNfX19HVW9kM1wiLFxuICBcImdyaWRfX2dhcC0tcm93LS00eHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTR4c19fX3NWUVplXCIsXG4gIFwiZ3JpZF9fZ2FwLS0zeHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS0zeHNfX18tSXhTd1wiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS0zeHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTN4c19fX3V3NDY2XCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTN4c1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tM3hzX19fSmZ3bVlcIixcbiAgXCJncmlkX19nYXAtLXh4c1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXh4c19fX2doOGMtXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXh4c1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0teHhzX19fRTc2Z0tcIixcbiAgXCJncmlkX19nYXAtLXJvdy0teHhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS14eHNfX19uaHh6LVwiLFxuICBcImdyaWRfX2dhcC0teHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS14c19fX0dINGgyXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS14c19fX3VScXJpXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLXhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS14c19fX2xBTkV1XCIsXG4gIFwiZ3JpZF9fZ2FwLS1zXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tc19fXzdSMHBzXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLXNfX19hRFZBR1wiLFxuICBcImdyaWRfX2dhcC0tcm93LS1zXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS1zX19fQVJEbXhcIixcbiAgXCJncmlkX19nYXAtLW1cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1tX19fbTNYaWhcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tbVwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tbV9fX0NzeWVNXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLW1cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLW1fX19zT0FYblwiLFxuICBcImdyaWRfX2dhcC0tbFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWxfX18wU3lLbFwiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS1sXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS1sX19fSnZKaE1cIixcbiAgXCJncmlkX19nYXAtLXJvdy0tbFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tbF9fX2FwSDhiXCIsXG4gIFwiZ3JpZF9fZ2FwLS14bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXhsX19fSS12UnRcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0teGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLXhsX19fdDBTTzNcIixcbiAgXCJncmlkX19nYXAtLXJvdy0teGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLXhsX19fZXZORWRcIixcbiAgXCJncmlkX19nYXAtLXh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXh4bF9fX2VXUzAyXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0teHhsX19fcy0tLWJcIixcbiAgXCJncmlkX19nYXAtLXJvdy0teHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS14eGxfX19KNEY3b1wiLFxuICBcImdyaWRfX2dhcC0tM3hsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tM3hsX19fSFZsa0RcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tM3hsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS0zeGxfX196S3RMTFwiLFxuICBcImdyaWRfX2dhcC0tcm93LS0zeGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTN4bF9fX0U5U1Y5XCIsXG4gIFwiZ3JpZF9fZ2FwLS00eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS00eGxfX19NM0czZlwiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS00eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTR4bF9fX25udC1wXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTR4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tNHhsX19fMVc4YmRcIixcbiAgXCJncmlkX19nYXAtLTV4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLTV4bF9fX3lBblhEXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLTV4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tNXhsX19fMnc0UjFcIixcbiAgXCJncmlkX19nYXAtLXJvdy0tNXhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS01eGxfX19WQ2ZqZ1wiLFxuICBcImdyaWRfX2dhcC0tNnhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tNnhsX19faEVsMEZcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tNnhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS02eGxfX19GeFB0cFwiLFxuICBcImdyaWRfX2dhcC0tcm93LS02eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTZ4bF9fX3luMWYtXCIsXG4gIFwiZ3JpZF9fZ2FwLS03eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS03eGxfX19nYkdIdVwiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS03eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTd4bF9fX1Z5ajFwXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTd4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tN3hsX19fNUJCc1NcIixcbiAgXCJncmlkX19nYXAtLTh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLTh4bF9fX2pDbG1DXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLTh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tOHhsX19fYnE3RXpcIixcbiAgXCJncmlkX19nYXAtLXJvdy0tOHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS04eGxfX193TnVaMlwiLFxuICBcImdyaWRfX2dhcC0tOXhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tOXhsX19faW5FMUVcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tOXhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS05eGxfX19Nc2ZqcVwiLFxuICBcImdyaWRfX2dhcC0tcm93LS05eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTl4bF9fX2kyMy1jXCIsXG4gIFwiZ3JpZF9fZ2FwLS0xMHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tMTB4bF9fX0xDRHRjXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLTEweGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTEweGxfX19vOGNCeVwiLFxuICBcImdyaWRfX2dhcC0tcm93LS0xMHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS0xMHhsX19fUmpSdzlcIixcbiAgXCJncmlkX19nYXAtLTExeGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS0xMXhsX19fU3F1TmFcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tMTF4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tMTF4bF9fX3VTZVd6XCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTExeGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTExeGxfX19qcUctSVwiXG59OyIsICJpbXBvcnQgZ3JpZFN0eWxlcyBmcm9tIFwiLi9ncmlkLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcblxuZXhwb3J0IHR5cGUgR3JpZENvbHVtbnMgPSAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG5cbmV4cG9ydCB0eXBlIEdyaWRQcm9wcyA9IHtcbiAgY29sdW1uczogR3JpZENvbHVtbnM7XG4gIGdhcD86IFRTaGlydFNpemUgfCB7IHJvdz86IFRTaGlydFNpemU7IGNvbHVtbj86IFRTaGlydFNpemUgfTtcbiAgYWxpZ25JdGVtcz86IFwic3RyZXRjaFwiIHwgXCJjZW50ZXJcIiB8IFwic3RhcnRcIiB8IFwiZW5kXCI7XG59O1xuXG5leHBvcnQgdHlwZSBHcmlkUGx1Z2luUHJvcHMgPSB7ICRncmlkPzogR3JpZFByb3BzIH07XG5cbmV4cG9ydCBjb25zdCBncmlkUGx1Z2luID0gZ2V0UGx1Z2luPEdyaWRQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkZ3JpZCB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkZ3JpZCkge1xuICAgIHJldHVybiB7ICRncmlkOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IHsgY29sdW1ucywgZ2FwLCBhbGlnbkl0ZW1zIH0gPSAkZ3JpZDtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIGdyaWRTdHlsZXMuZ3JpZCxcbiAgICAgIGdyaWRTdHlsZXNbYGdyaWRfX2NvbHVtbnMtLSR7Y29sdW1uc31gXSxcbiAgICAgIGFsaWduSXRlbXMgPyBncmlkU3R5bGVzW2BncmlkX19hbGlnbkl0ZW1zLS0ke2FsaWduSXRlbXN9YF0gOiB1bmRlZmluZWQsXG5cbiAgICAgIHR5cGVvZiBnYXAgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyBncmlkU3R5bGVzW2BncmlkX19nYXAtLSR7Z2FwfWBdXG4gICAgICAgIDogZ2FwXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIGdhcC5jb2x1bW4gPyBncmlkU3R5bGVzW2BncmlkX19nYXAtLWNvbHVtbi0tJHtnYXAuY29sdW1ufWBdIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBnYXAucm93ID8gZ3JpZFN0eWxlc1tgZ3JpZF9fZ2FwLS1yb3ctLSR7Z2FwLnJvd31gXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcblxuICAgICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICBdLFxuXG4gICAgJGdyaWQ6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwibWF4LXdpZHRoLS1mdWxsXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLWZ1bGxfX19ub0lrVFwiLFxuICBcIm1heC13aWR0aC0tY29udGVudFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS1jb250ZW50X19feWtzVXJcIixcbiAgXCJtYXgtd2lkdGgtLXplcm9cIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0temVyb19fXzhOVUYxXCIsXG4gIFwibWF4LXdpZHRoLS00eHNcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tNHhzX19fZ0hsTElcIixcbiAgXCJtYXgtd2lkdGgtLTN4c1wiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS0zeHNfX19yZG9QOFwiLFxuICBcIm1heC13aWR0aC0teHhzXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLXh4c19fX2pscDh2XCIsXG4gIFwibWF4LXdpZHRoLS14c1wiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS14c19fX2tRc1d4XCIsXG4gIFwibWF4LXdpZHRoLS1zXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLXNfX19NZ0dhelwiLFxuICBcIm1heC13aWR0aC0tbVwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS1tX19fYUZ6U2NcIixcbiAgXCJtYXgtd2lkdGgtLWxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tbF9fX2lLbGFIXCIsXG4gIFwibWF4LXdpZHRoLS14bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS14bF9fXzR6VWRDXCIsXG4gIFwibWF4LXdpZHRoLS14eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0teHhsX19fNTh6M1BcIixcbiAgXCJtYXgtd2lkdGgtLTN4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS0zeGxfX18yWVhuSFwiLFxuICBcIm1heC13aWR0aC0tNHhsXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLTR4bF9fX2pGSjlWXCIsXG4gIFwibWF4LXdpZHRoLS01eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tNXhsX19fNy1WUUdcIixcbiAgXCJtYXgtd2lkdGgtLTZ4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS02eGxfX19QUzM3SlwiLFxuICBcIm1heC13aWR0aC0tN3hsXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLTd4bF9fX3NTQndrXCIsXG4gIFwibWF4LXdpZHRoLS04eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tOHhsX19fVjNJSHlcIixcbiAgXCJtYXgtd2lkdGgtLTl4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS05eGxfX180VldFTVwiLFxuICBcIm1heC13aWR0aC0tMTB4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS0xMHhsX19fejk3VFFcIixcbiAgXCJtYXgtd2lkdGgtLTExeGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tMTF4bF9fX2p4ZW5YXCIsXG4gIFwibWluLXdpZHRoXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGhfX19xbmxZQ1wiLFxuICBcIm1pbi13aWR0aC0tZml0XCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLWZpdF9fXzJXLVREXCIsXG4gIFwibWluLXdpZHRoLS16ZXJvXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLXplcm9fX185NDI5U1wiLFxuICBcIm1pbi13aWR0aC0tNHhzXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTR4c19fXzNUR00tXCIsXG4gIFwibWluLXdpZHRoLS0zeHNcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tM3hzX19fUjZqMzJcIixcbiAgXCJtaW4td2lkdGgtLXh4c1wiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS14eHNfX192aktkQ1wiLFxuICBcIm1pbi13aWR0aC0teHNcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0teHNfX19WLUwxc1wiLFxuICBcIm1pbi13aWR0aC0tc1wiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS1zX19fZElmWm1cIixcbiAgXCJtaW4td2lkdGgtLW1cIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tbV9fX0pINUlQXCIsXG4gIFwibWluLXdpZHRoLS1sXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLWxfX19HZ2tFOFwiLFxuICBcIm1pbi13aWR0aC0teGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0teGxfX19hR0x1aVwiLFxuICBcIm1pbi13aWR0aC0teHhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLXh4bF9fX3pRT3RUXCIsXG4gIFwibWluLXdpZHRoLS0zeGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tM3hsX19fSmV2RFpcIixcbiAgXCJtaW4td2lkdGgtLTR4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS00eGxfX18xZTZOMVwiLFxuICBcIm1pbi13aWR0aC0tNXhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTV4bF9fX0t1bXRvXCIsXG4gIFwibWluLXdpZHRoLS02eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tNnhsX19fWUVrbThcIixcbiAgXCJtaW4td2lkdGgtLTd4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS03eGxfX192WDFGWVwiLFxuICBcIm1pbi13aWR0aC0tOHhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTh4bF9fX1ZiUWhrXCIsXG4gIFwibWluLXdpZHRoLS05eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tOXhsX19fZVVLUWlcIixcbiAgXCJtaW4td2lkdGgtLTEweGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tMTB4bF9fX1pvTjNOXCIsXG4gIFwibWluLXdpZHRoLS0xMXhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTExeGxfX19CTkZqQVwiLFxuICBcIndpZHRoLS1mdWxsXCI6IFwid2lkdGgtbW9kdWxlX193aWR0aC0tZnVsbF9fXzFtcGl6XCIsXG4gIFwid2lkdGgtLXN0cmV0Y2hcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS1zdHJldGNoX19fUnF3MDBcIixcbiAgXCJ3aWR0aC0temVyb1wiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXplcm9fX19JTmRWdlwiLFxuICBcIndpZHRoLS00eHNcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS00eHNfX19kUlVoV1wiLFxuICBcIndpZHRoLS0zeHNcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS0zeHNfX19vUkowelwiLFxuICBcIndpZHRoLS14eHNcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS14eHNfX19IeWw5UlwiLFxuICBcIndpZHRoLS14c1wiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXhzX19fRzNqUXpcIixcbiAgXCJ3aWR0aC0tc1wiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXNfX18tbXpxbVwiLFxuICBcIndpZHRoLS1tXCI6IFwid2lkdGgtbW9kdWxlX193aWR0aC0tbV9fX21FWjc3XCIsXG4gIFwid2lkdGgtLWxcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS1sX19fcXlJTjdcIixcbiAgXCJ3aWR0aC0teGxcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS14bF9fX21PMjVJXCIsXG4gIFwid2lkdGgtLXh4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXh4bF9fX0VHUU1wXCIsXG4gIFwid2lkdGgtLTN4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTN4bF9fX0h1bDctXCIsXG4gIFwid2lkdGgtLTR4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTR4bF9fX3pPUGJTXCIsXG4gIFwid2lkdGgtLTV4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTV4bF9fX3hicW5pXCIsXG4gIFwid2lkdGgtLTZ4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTZ4bF9fX05tYmY5XCIsXG4gIFwid2lkdGgtLTd4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTd4bF9fX0IwbnZ3XCIsXG4gIFwid2lkdGgtLTh4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTh4bF9fX1cxSERQXCIsXG4gIFwid2lkdGgtLTl4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTl4bF9fX0tKTDhVXCIsXG4gIFwid2lkdGgtLTEweGxcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS0xMHhsX19fOTR6MTlcIixcbiAgXCJ3aWR0aC0tMTF4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTExeGxfX19qQi1MblwiXG59OyIsICJpbXBvcnQgd2lkdGhTdHlsZXMgZnJvbSBcIi4vd2lkdGgubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHR5cGUgeyBzdHlsZVBsdWdpbiB9IGZyb20gXCIuLi9zdHlsZS9zdHlsZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFRTaGlydFNpemUgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuXG4vKiogQSBzaGFyZSBvZiB0aGUgcGFyZW50J3Mgd2lkdGgsIGUuZy4gYFwiMzAlXCJgLCBmb3IgbGF5b3V0cyB0aGF0IGRpdmlkZSBhIHJvdyByYXRoZXIgdGhhbiBzaXplIGEgYm94LiAqL1xuZXhwb3J0IHR5cGUgUGVyY2VudGFnZSA9IGAke251bWJlcn0lYDtcblxuZXhwb3J0IHR5cGUgJFdpZHRoUHJvcHMgPSB7XG4gIHdpZHRoPzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiIHwgXCJzdHJldGNoXCIgfCBQZXJjZW50YWdlO1xuICBtaW4/OiBUU2hpcnRTaXplIHwgXCJmaXRcIiB8IFBlcmNlbnRhZ2U7XG4gIG1heD86IFRTaGlydFNpemUgfCBcImZ1bGxcIiB8IFwiY29udGVudFwiIHwgUGVyY2VudGFnZTtcbn07XG5cbmV4cG9ydCB0eXBlIFdpZHRoUGx1Z2luUHJvcHMgPSB7ICR3aWR0aD86IFRTaGlydFNpemUgfCBcImZ1bGxcIiB8IFwic3RyZXRjaFwiIHwgUGVyY2VudGFnZSB8ICRXaWR0aFByb3BzIH07XG5cbmNvbnN0IGlzUGVyY2VudGFnZSA9ICh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogdmFsdWUgaXMgUGVyY2VudGFnZSA9PiB2YWx1ZT8uZW5kc1dpdGgoXCIlXCIpID09PSB0cnVlO1xuXG5leHBvcnQgY29uc3Qgd2lkdGhQbHVnaW4gPSBnZXRQbHVnaW48V2lkdGhQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW4sIHR5cGVvZiBzdHlsZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICR3aWR0aCwgJGNsYXNzTmFtZSwgJHN0eWxlIH0gPSBwcm9wcztcbiAgY29uc3QgeyB3aWR0aCwgbWluLCBtYXggfSA9IHR5cGVvZiAkd2lkdGggPT09IFwic3RyaW5nXCIgPyB7IHdpZHRoOiAkd2lkdGggfSA6ICgkd2lkdGggPz8ge30pO1xuICBjb25zdCBwZXJjZW50YWdlcyA9IHtcbiAgICAuLi4oaXNQZXJjZW50YWdlKHdpZHRoKSA/IHsgd2lkdGggfSA6IHt9KSxcbiAgICAuLi4oaXNQZXJjZW50YWdlKG1pbikgPyB7IG1pbldpZHRoOiBtaW4gfSA6IHt9KSxcbiAgICAuLi4oaXNQZXJjZW50YWdlKG1heCkgPyB7IG1heFdpZHRoOiBtYXggfSA6IHt9KSxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHdpZHRoICYmICFpc1BlcmNlbnRhZ2Uod2lkdGgpID8gd2lkdGhTdHlsZXNbYHdpZHRoLS0ke3dpZHRofWBdIDogdW5kZWZpbmVkLFxuICAgICAgbWluICYmICFpc1BlcmNlbnRhZ2UobWluKSA/IHdpZHRoU3R5bGVzW2BtaW4td2lkdGgtLSR7bWlufWBdIDogdW5kZWZpbmVkLFxuICAgICAgbWF4ICYmICFpc1BlcmNlbnRhZ2UobWF4KSA/IHdpZHRoU3R5bGVzW2BtYXgtd2lkdGgtLSR7bWF4fWBdIDogdW5kZWZpbmVkLFxuICAgICAgJGNsYXNzTmFtZSxcbiAgICBdLFxuICAgICRzdHlsZTogT2JqZWN0LmtleXMocGVyY2VudGFnZXMpLmxlbmd0aCA+IDAgPyB7IC4uLiRzdHlsZSwgLi4ucGVyY2VudGFnZXMgfSA6ICRzdHlsZSxcbiAgICAkd2lkdGg6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuXG5leHBvcnQgdHlwZSBTdHlsZVBsdWdpblByb3BzID0geyAkc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzOyBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfTtcblxuZXhwb3J0IGNvbnN0IHN0eWxlUGx1Z2luID0gZ2V0UGx1Z2luPFN0eWxlUGx1Z2luUHJvcHM+KChwcm9wcykgPT4ge1xuICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuICBjb25zdCAkc3R5bGUgPSBwcm9wcy4kc3R5bGUgfHwge307XG5cbiAgY29uc3Qgc3R5bGUgPSBwcm9wcy5zdHlsZSB8fCB7fTtcblxuICByZXR1cm4ge1xuICAgIHN0eWxlOiB7IC4uLiRzdHlsZSwgLi4uc3R5bGUgfSxcbiAgICAkc3R5bGU6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2hlaWdodC9oZWlnaHQubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJtYXgtaGVpZ2h0LS1mdWxsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tZnVsbF9fXy1pb2pmXCIsXG4gIFwibWF4LWhlaWdodC0temVyb1wiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLXplcm9fX19kNTd3V1wiLFxuICBcIm1heC1oZWlnaHQtLTR4c1wiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTR4c19fX0xKVUJuXCIsXG4gIFwibWF4LWhlaWdodC0tM3hzXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tM3hzX19fLTJXby1cIixcbiAgXCJtYXgtaGVpZ2h0LS14eHNcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS14eHNfX19oRnJCZVwiLFxuICBcIm1heC1oZWlnaHQtLXhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0teHNfX19jMnBhRFwiLFxuICBcIm1heC1oZWlnaHQtLXNcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS1zX19fQWNwNlRcIixcbiAgXCJtYXgtaGVpZ2h0LS1tXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tbV9fX1Z6b1E5XCIsXG4gIFwibWF4LWhlaWdodC0tbFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLWxfX19XZ2xxYlwiLFxuICBcIm1heC1oZWlnaHQtLXhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0teGxfX19MVW1sSlwiLFxuICBcIm1heC1oZWlnaHQtLXh4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLXh4bF9fX2RSM3pLXCIsXG4gIFwibWF4LWhlaWdodC0tM3hsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tM3hsX19fYnViVERcIixcbiAgXCJtYXgtaGVpZ2h0LS00eGxcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS00eGxfX19iZFpYNlwiLFxuICBcIm1heC1oZWlnaHQtLTV4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTV4bF9fX1RVVEFSXCIsXG4gIFwibWF4LWhlaWdodC0tNnhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tNnhsX19fR2MtSGxcIixcbiAgXCJtYXgtaGVpZ2h0LS03eGxcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS03eGxfX19ZeGR0WFwiLFxuICBcIm1heC1oZWlnaHQtLTh4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTh4bF9fX0EyV3ZkXCIsXG4gIFwibWF4LWhlaWdodC0tOXhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tOXhsX19fSnZyR0pcIixcbiAgXCJtYXgtaGVpZ2h0LS0xMHhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tMTB4bF9fX3dMUlF1XCIsXG4gIFwibWF4LWhlaWdodC0tMTF4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTExeGxfX19nVTN4SVwiLFxuICBcIm1pbi1oZWlnaHQtLXplcm9cIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS16ZXJvX19fUEJWNDdcIixcbiAgXCJtaW4taGVpZ2h0LS00eHNcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS00eHNfX19WM04tYlwiLFxuICBcIm1pbi1oZWlnaHQtLTN4c1wiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTN4c19fX3RnRFFRXCIsXG4gIFwibWluLWhlaWdodC0teHhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0teHhzX19fLXFoU3pcIixcbiAgXCJtaW4taGVpZ2h0LS14c1wiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLXhzX19fWklwcXVcIixcbiAgXCJtaW4taGVpZ2h0LS1zXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0tc19fX3hNaUdjXCIsXG4gIFwibWluLWhlaWdodC0tbVwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLW1fX19WRVdMclwiLFxuICBcIm1pbi1oZWlnaHQtLWxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS1sX19fYTYtRjdcIixcbiAgXCJtaW4taGVpZ2h0LS14bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLXhsX19fLXlsRnVcIixcbiAgXCJtaW4taGVpZ2h0LS14eGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS14eGxfX183SzZmLVwiLFxuICBcIm1pbi1oZWlnaHQtLTN4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTN4bF9fXzBGWlFtXCIsXG4gIFwibWluLWhlaWdodC0tNHhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0tNHhsX19fY0dvSmtcIixcbiAgXCJtaW4taGVpZ2h0LS01eGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS01eGxfX19mVjNhT1wiLFxuICBcIm1pbi1oZWlnaHQtLTZ4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTZ4bF9fX0ZrVUdDXCIsXG4gIFwibWluLWhlaWdodC0tN3hsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0tN3hsX19fQ3Npd1ZcIixcbiAgXCJtaW4taGVpZ2h0LS04eGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS04eGxfX19oLS1ES1wiLFxuICBcIm1pbi1oZWlnaHQtLTl4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTl4bF9fX25GTVNIXCIsXG4gIFwibWluLWhlaWdodC0tMTB4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTEweGxfX19LYS1jQVwiLFxuICBcIm1pbi1oZWlnaHQtLTExeGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS0xMXhsX19fZlFzZ2NcIixcbiAgXCJoZWlnaHQtLXN0cmV0Y2hcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXN0cmV0Y2hfX19yWWFZblwiLFxuICBcImhlaWdodC0tZnVsbFwiOiBcImhlaWdodC1tb2R1bGVfX2hlaWdodC0tZnVsbF9fX3ZXeGllXCIsXG4gIFwiaGVpZ2h0LS1hdXRvXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS1hdXRvX19fNjduRk5cIixcbiAgXCJoZWlnaHQtLXplcm9cIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXplcm9fX19BcUEwUFwiLFxuICBcImhlaWdodC0tNHhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS00eHNfX19GZEowaFwiLFxuICBcImhlaWdodC0tM3hzXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS0zeHNfX19hc1VKYlwiLFxuICBcImhlaWdodC0teHhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS14eHNfX19ZcVRxcFwiLFxuICBcImhlaWdodC0teHNcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXhzX19fbE5SdFlcIixcbiAgXCJoZWlnaHQtLXNcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXNfX19IN20tLVwiLFxuICBcImhlaWdodC0tbVwiOiBcImhlaWdodC1tb2R1bGVfX2hlaWdodC0tbV9fX0NtTHAxXCIsXG4gIFwiaGVpZ2h0LS1sXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS1sX19fMnRra2hcIixcbiAgXCJoZWlnaHQtLXhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS14bF9fXzd4QkppXCIsXG4gIFwiaGVpZ2h0LS14eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXh4bF9fX0NqU3U1XCIsXG4gIFwiaGVpZ2h0LS0zeGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTN4bF9fX3BVZHZOXCIsXG4gIFwiaGVpZ2h0LS00eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTR4bF9fX1FIWll5XCIsXG4gIFwiaGVpZ2h0LS01eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTV4bF9fX1diZ283XCIsXG4gIFwiaGVpZ2h0LS02eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTZ4bF9fX2t3YzhhXCIsXG4gIFwiaGVpZ2h0LS03eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTd4bF9fX211TzFsXCIsXG4gIFwiaGVpZ2h0LS04eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTh4bF9fXzlwRU1OXCIsXG4gIFwiaGVpZ2h0LS05eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTl4bF9fXzZlNDZRXCIsXG4gIFwiaGVpZ2h0LS0xMHhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS0xMHhsX19fWGdYcC1cIixcbiAgXCJoZWlnaHQtLTExeGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTExeGxfX19hZHd1SFwiXG59OyIsICJpbXBvcnQgaGVpZ2h0U3R5bGVzIGZyb20gXCIuL2hlaWdodC5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgdHlwZSB7IHN0eWxlUGx1Z2luIH0gZnJvbSBcIi4uL3N0eWxlL3N0eWxlXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgVFNoaXJ0U2l6ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5pbXBvcnQgdHlwZSB7IFBlcmNlbnRhZ2UgfSBmcm9tIFwiLi4vd2lkdGgvd2lkdGhcIjtcblxuZXhwb3J0IHR5cGUgJEhlaWdodFByb3BzID0ge1xuICBoZWlnaHQ/OiBUU2hpcnRTaXplIHwgXCJmdWxsXCIgfCBcInN0cmV0Y2hcIiB8IFwiYXV0b1wiIHwgUGVyY2VudGFnZTtcbiAgbWluPzogVFNoaXJ0U2l6ZSB8IFBlcmNlbnRhZ2U7XG4gIG1heD86IFRTaGlydFNpemUgfCBcImZ1bGxcIiB8IFBlcmNlbnRhZ2U7XG59O1xuXG5leHBvcnQgdHlwZSBIZWlnaHRQbHVnaW5Qcm9wcyA9IHsgJGhlaWdodD86IFRTaGlydFNpemUgfCBcImZ1bGxcIiB8IFwiYXV0b1wiIHwgXCJzdHJldGNoXCIgfCBQZXJjZW50YWdlIHwgJEhlaWdodFByb3BzIH07XG5cbmNvbnN0IGlzUGVyY2VudGFnZSA9ICh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogdmFsdWUgaXMgUGVyY2VudGFnZSA9PiB2YWx1ZT8uZW5kc1dpdGgoXCIlXCIpID09PSB0cnVlO1xuXG5leHBvcnQgY29uc3QgaGVpZ2h0UGx1Z2luID0gZ2V0UGx1Z2luPEhlaWdodFBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbiwgdHlwZW9mIHN0eWxlUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGhlaWdodCwgJHN0eWxlIH0gPSBwcm9wcztcbiAgY29uc3QgeyBoZWlnaHQsIG1pbiwgbWF4IH0gPSB0eXBlb2YgJGhlaWdodCA9PT0gXCJzdHJpbmdcIiA/IHsgaGVpZ2h0OiAkaGVpZ2h0IH0gOiAoJGhlaWdodCA/PyB7fSk7XG4gIGNvbnN0IHBlcmNlbnRhZ2VzID0ge1xuICAgIC4uLihpc1BlcmNlbnRhZ2UoaGVpZ2h0KSA/IHsgaGVpZ2h0IH0gOiB7fSksXG4gICAgLi4uKGlzUGVyY2VudGFnZShtaW4pID8geyBtaW5IZWlnaHQ6IG1pbiB9IDoge30pLFxuICAgIC4uLihpc1BlcmNlbnRhZ2UobWF4KSA/IHsgbWF4SGVpZ2h0OiBtYXggfSA6IHt9KSxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIGhlaWdodCAmJiAhaXNQZXJjZW50YWdlKGhlaWdodCkgPyBoZWlnaHRTdHlsZXNbYGhlaWdodC0tJHtoZWlnaHR9YF0gOiB1bmRlZmluZWQsXG4gICAgICBtaW4gJiYgIWlzUGVyY2VudGFnZShtaW4pID8gaGVpZ2h0U3R5bGVzW2BtaW4taGVpZ2h0LS0ke21pbn1gXSA6IHVuZGVmaW5lZCxcbiAgICAgIG1heCAmJiAhaXNQZXJjZW50YWdlKG1heCkgPyBoZWlnaHRTdHlsZXNbYG1heC1oZWlnaHQtLSR7bWF4fWBdIDogdW5kZWZpbmVkLFxuICAgICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICBdLFxuICAgICRzdHlsZTogT2JqZWN0LmtleXMocGVyY2VudGFnZXMpLmxlbmd0aCA+IDAgPyB7IC4uLiRzdHlsZSwgLi4ucGVyY2VudGFnZXMgfSA6ICRzdHlsZSxcbiAgICAkaGVpZ2h0OiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGNvbG9yU3R5bGVzIGZyb20gXCIuL2NvbG9yLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IENvbG9yIH0gZnJvbSBcIi4uL19zaGFyZWQvY29sb3JzXCI7XG5cbmV4cG9ydCB0eXBlIFRleHRDb2xvciA9IENvbG9yIHwgVGV4dENvbG9yQWxpYXM7XG5cbmV4cG9ydCB0eXBlICRDb2xvclByb3BzID0ge1xuICByZWFkb25seSBub3JtYWw/OiBUZXh0Q29sb3I7XG4gIHJlYWRvbmx5IGhvdmVyPzogVGV4dENvbG9yO1xuICByZWFkb25seSBmb2N1cz86IFRleHRDb2xvcjtcbiAgcmVhZG9ubHkgZGlzYWJsZWQ/OiBUZXh0Q29sb3I7XG59O1xuXG5leHBvcnQgdHlwZSBDb2xvclBsdWdpblByb3BzID0geyByZWFkb25seSAkY29sb3I/OiBUZXh0Q29sb3IgfCAkQ29sb3JQcm9wcyB9O1xuZXhwb3J0IHR5cGUgVGV4dENvbG9yQWxpYXMgPSBrZXlvZiB0eXBlb2YgYWxpYXNUb05vbWluYWw7XG5cbmNvbnN0IGFsaWFzVG9Ob21pbmFsID0ge1xuICB0ZXh0TXV0ZWQ6IFwiZ3JleTI1XCIsXG4gIHRleHREZWZhdWx0OiBcImdyZXkyMFwiLFxuICB0ZXh0SGlnaGxpZ2h0OiBcImdyZXkxMFwiLFxufSBhcyBjb25zdDtcblxuY29uc3QgaXNUZXh0Q29sb3JBbGlhcyA9IChjb2xvcjogVGV4dENvbG9yKTogY29sb3IgaXMgVGV4dENvbG9yQWxpYXMgPT4gY29sb3IgaW4gYWxpYXNUb05vbWluYWw7XG5cbmV4cG9ydCBjb25zdCBjb2xvclBsdWdpbiA9IGdldFBsdWdpbjxDb2xvclBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRjbGFzc05hbWUsICRjb2xvciB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgbm9ybWFsLCBob3ZlciwgZm9jdXMsIGRpc2FibGVkIH0gPSB0eXBlb2YgJGNvbG9yID09PSBcInN0cmluZ1wiID8geyBub3JtYWw6ICRjb2xvciB9IDogKCRjb2xvciA/PyB7fSk7XG5cbiAgY29uc3Qgbm9ybWFsQ29sb3IgPSBub3JtYWwgPyAoaXNUZXh0Q29sb3JBbGlhcyhub3JtYWwpID8gYWxpYXNUb05vbWluYWxbbm9ybWFsXSA6IG5vcm1hbCkgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGhvdmVyQ29sb3IgPSBob3ZlciA/IChpc1RleHRDb2xvckFsaWFzKGhvdmVyKSA/IGFsaWFzVG9Ob21pbmFsW2hvdmVyXSA6IGhvdmVyKSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgZm9jdXNDb2xvciA9IGZvY3VzID8gKGlzVGV4dENvbG9yQWxpYXMoZm9jdXMpID8gYWxpYXNUb05vbWluYWxbZm9jdXNdIDogZm9jdXMpIDogdW5kZWZpbmVkO1xuICBjb25zdCBkaXNhYmxlZENvbG9yID0gZGlzYWJsZWQgPyAoaXNUZXh0Q29sb3JBbGlhcyhkaXNhYmxlZCkgPyBhbGlhc1RvTm9taW5hbFtkaXNhYmxlZF0gOiBkaXNhYmxlZCkgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbXG4gICAgICAkY2xhc3NOYW1lLFxuICAgICAgbm9ybWFsQ29sb3IgPyBjb2xvclN0eWxlc1tgY29sb3ItLSR7bm9ybWFsQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgICBob3ZlckNvbG9yID8gY29sb3JTdHlsZXNbYGNvbG9yLWhvdmVyLS0ke2hvdmVyQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgICBmb2N1c0NvbG9yID8gY29sb3JTdHlsZXNbYGNvbG9yLWZvY3VzLS0ke2ZvY3VzQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgICBkaXNhYmxlZENvbG9yID8gY29sb3JTdHlsZXNbYGNvbG9yLWRpc2FibGVkLS0ke2Rpc2FibGVkQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgXSxcbiAgICAkY29sb3I6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2NvbG9yL2NvbG9yLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiY29sb3ItLWluaGVyaXRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1pbmhlcml0X19fR01wLWFcIixcbiAgXCJjb2xvci1ob3Zlci0taW5oZXJpdFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWluaGVyaXRfX19mR0xLNlwiLFxuICBcImNvbG9yLWZvY3VzLS1pbmhlcml0XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1mb2N1cy0taW5oZXJpdF9fX3lHZkNlXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWluaGVyaXRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1pbmhlcml0X19fczlNQ0lcIixcbiAgXCJjb2xvci0td2hpdGVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS13aGl0ZV9fX2Y4YzFzXCIsXG4gIFwiY29sb3ItaG92ZXItLXdoaXRlXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1ob3Zlci0td2hpdGVfX19NNmFSZ1wiLFxuICBcImNvbG9yLWZvY3VzLS13aGl0ZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLXdoaXRlX19faTZ1WXpcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0td2hpdGVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS13aGl0ZV9fX250allFXCIsXG4gIFwiY29sb3ItLXRyYW5zcGFyZW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tdHJhbnNwYXJlbnRfX18xdmZydlwiLFxuICBcImNvbG9yLWhvdmVyLS10cmFuc3BhcmVudFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXRyYW5zcGFyZW50X19feG03QkRcIixcbiAgXCJjb2xvci1mb2N1cy0tdHJhbnNwYXJlbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS10cmFuc3BhcmVudF9fX3BkZS1XXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLXRyYW5zcGFyZW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tdHJhbnNwYXJlbnRfX19aMFF1VVwiLFxuICBcImNvbG9yLS1ncmV5MTAwXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tZ3JleTEwMF9fX0NwRHp2XCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkxMDBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ncmV5MTAwX19fR0ZDb21cIixcbiAgXCJjb2xvci1mb2N1cy0tZ3JleTEwMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWdyZXkxMDBfX19BTTdvTVwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5MTAwXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tZ3JleTEwMF9fXzhTUnVKXCIsXG4gIFwiY29sb3ItLWdyZXk4MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXk4MF9fX0Q3MWZuXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk4MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk4MF9fX3NCSXhiXCIsXG4gIFwiY29sb3ItZm9jdXMtLWdyZXk4MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWdyZXk4MF9fXzhQbHlvXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk4MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXk4MF9fX3cxbnBjXCIsXG4gIFwiY29sb3ItLWdyZXk2MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXk2MF9fX1VUMjhYXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk2MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk2MF9fX3hmWm1iXCIsXG4gIFwiY29sb3ItZm9jdXMtLWdyZXk2MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWdyZXk2MF9fX2t3bTJHXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk2MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXk2MF9fX21mVmdxXCIsXG4gIFwiY29sb3ItLWdyZXk0MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXk0MF9fX2lST3pSXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk0MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk0MF9fX3JiTjA0XCIsXG4gIFwiY29sb3ItZm9jdXMtLWdyZXk0MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWdyZXk0MF9fX29JUlVmXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk0MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXk0MF9fX05pWnhpXCIsXG4gIFwiY29sb3ItLWdyZXkzMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkzMF9fX0x3bkwyXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkzMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkzMF9fX1g3aC1oXCIsXG4gIFwiY29sb3ItZm9jdXMtLWdyZXkzMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWdyZXkzMF9fX1FVYjRTXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXkzMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkzMF9fX0txOWdXXCIsXG4gIFwiY29sb3ItLWdyZXkyNVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkyNV9fX0VOVDVvXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkyNVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkyNV9fX3RZeWdEXCIsXG4gIFwiY29sb3ItZm9jdXMtLWdyZXkyNVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWdyZXkyNV9fX1R4aTVsXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXkyNVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkyNV9fX2JtLTFjXCIsXG4gIFwiY29sb3ItLWdyZXkyMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkyMF9fX0VGMk9MXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkyMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkyMF9fX3VQdFhVXCIsXG4gIFwiY29sb3ItZm9jdXMtLWdyZXkyMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWdyZXkyMF9fX3czcldjXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXkyMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkyMF9fX3ZwdXkxXCIsXG4gIFwiY29sb3ItLWdyZXkxMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkxMF9fX2w1YVpwXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkxMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkxMF9fXzRBcGNyXCIsXG4gIFwiY29sb3ItZm9jdXMtLWdyZXkxMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWdyZXkxMF9fX1Z3VzcxXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXkxMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkxMF9fX1k1cXl3XCIsXG4gIFwiY29sb3ItLWdyZXk3MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXk3MF9fX0M5SEhNXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk3MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk3MF9fXzNrcnRMXCIsXG4gIFwiY29sb3ItZm9jdXMtLWdyZXk3MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWdyZXk3MF9fX3AzaWV4XCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk3MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXk3MF9fXzg2SnFWXCIsXG4gIFwiY29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19fLTNUZGRcIixcbiAgXCJjb2xvci1ob3Zlci0tZ3JleTgwQWxwaGE4NVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk4MEFscGhhODVfX19Eb2ZvMFwiLFxuICBcImNvbG9yLWZvY3VzLS1ncmV5ODBBbHBoYTg1XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1mb2N1cy0tZ3JleTgwQWxwaGE4NV9fX1Q0QmdGXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk4MEFscGhhODVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1ncmV5ODBBbHBoYTg1X19fZVIzenNcIixcbiAgXCJjb2xvci0tcHJpbWFyeVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLXByaW1hcnlfX18wOFduVlwiLFxuICBcImNvbG9yLWhvdmVyLS1wcmltYXJ5XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1ob3Zlci0tcHJpbWFyeV9fX1Z0LTNmXCIsXG4gIFwiY29sb3ItZm9jdXMtLXByaW1hcnlcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1wcmltYXJ5X19fdDVyMDJcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tcHJpbWFyeVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLXByaW1hcnlfX18wWHNrOVwiLFxuICBcImNvbG9yLS1zdWNjZXNzXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tc3VjY2Vzc19fX3dvVEYyXCIsXG4gIFwiY29sb3ItaG92ZXItLXN1Y2Nlc3NcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1zdWNjZXNzX19fN0VJV2NcIixcbiAgXCJjb2xvci1mb2N1cy0tc3VjY2Vzc1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLXN1Y2Nlc3NfX19LWjBkaVwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1zdWNjZXNzXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tc3VjY2Vzc19fX05lMldJXCIsXG4gIFwiY29sb3ItLW5vdGljZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLW5vdGljZV9fXzZENktHXCIsXG4gIFwiY29sb3ItaG92ZXItLW5vdGljZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLW5vdGljZV9fX2VPZFVwXCIsXG4gIFwiY29sb3ItZm9jdXMtLW5vdGljZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLW5vdGljZV9fX05nVVJMXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLW5vdGljZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLW5vdGljZV9fX3NEbzhyXCIsXG4gIFwiY29sb3ItLXdhcm5pbmdcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS13YXJuaW5nX19fZktid2RcIixcbiAgXCJjb2xvci1ob3Zlci0td2FybmluZ1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXdhcm5pbmdfX19HajJoTVwiLFxuICBcImNvbG9yLWZvY3VzLS13YXJuaW5nXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1mb2N1cy0td2FybmluZ19fX2NCbXQ5XCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLXdhcm5pbmdcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS13YXJuaW5nX19fclhEYlJcIixcbiAgXCJjb2xvci0tY3JpdGljYWxcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1jcml0aWNhbF9fX3NoRkJxXCIsXG4gIFwiY29sb3ItaG92ZXItLWNyaXRpY2FsXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1ob3Zlci0tY3JpdGljYWxfX19SUVdaWVwiLFxuICBcImNvbG9yLWZvY3VzLS1jcml0aWNhbFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWNyaXRpY2FsX19fOVlsQ1lcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tY3JpdGljYWxcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1jcml0aWNhbF9fX2gzNy0zXCIsXG4gIFwiY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tc3VjY2Vzc1RpbnRfX19EZDBSeVwiLFxuICBcImNvbG9yLWhvdmVyLS1zdWNjZXNzVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXN1Y2Nlc3NUaW50X19fTEtsemdcIixcbiAgXCJjb2xvci1mb2N1cy0tc3VjY2Vzc1RpbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1zdWNjZXNzVGludF9fX2JRWWhwXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLXN1Y2Nlc3NUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tc3VjY2Vzc1RpbnRfX19sc21KaFwiLFxuICBcImNvbG9yLS13YXJuaW5nVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLXdhcm5pbmdUaW50X19fajNQWlhcIixcbiAgXCJjb2xvci1ob3Zlci0td2FybmluZ1RpbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS13YXJuaW5nVGludF9fX2puMXd1XCIsXG4gIFwiY29sb3ItZm9jdXMtLXdhcm5pbmdUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1mb2N1cy0td2FybmluZ1RpbnRfX19DNnpuRFwiLFxuICBcImNvbG9yLWRpc2FibGVkLS13YXJuaW5nVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLXdhcm5pbmdUaW50X19fVzZqSThcIixcbiAgXCJjb2xvci0tY3JpdGljYWxUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tY3JpdGljYWxUaW50X19feVJKYUFcIixcbiAgXCJjb2xvci1ob3Zlci0tY3JpdGljYWxUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1ob3Zlci0tY3JpdGljYWxUaW50X19fVnNvTjVcIixcbiAgXCJjb2xvci1mb2N1cy0tY3JpdGljYWxUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1mb2N1cy0tY3JpdGljYWxUaW50X19fOHREbWdcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tY3JpdGljYWxUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tY3JpdGljYWxUaW50X19fVEFCSGtcIixcbiAgXCJjb2xvci0tbGlua1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWxpbmtfX19uU01tOVwiLFxuICBcImNvbG9yLWhvdmVyLS1saW5rXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1ob3Zlci0tbGlua19fX0duaVkzXCIsXG4gIFwiY29sb3ItZm9jdXMtLWxpbmtcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1saW5rX19fODZKdGZcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tbGlua1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWxpbmtfX19Gb0o1WFwiLFxuICBcImNvbG9yLS1jb2RlXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tY29kZV9fX25DT2pBXCIsXG4gIFwiY29sb3ItaG92ZXItLWNvZGVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1jb2RlX19fVjV1dVZcIixcbiAgXCJjb2xvci1mb2N1cy0tY29kZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWNvZGVfX19JQUs3ZFwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1jb2RlXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tY29kZV9fX3czVlV3XCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgZ3JhZGllbnRTdHlsZXMgZnJvbSBcIi4vZ3JhZGllbnQubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgR3JhZGllbnRQbHVnaW5Qcm9wcyA9IHsgJGdyYWRpZW50PzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgZ3JhZGllbnRQbHVnaW4gPSBnZXRQbHVnaW48R3JhZGllbnRQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+ICh7XG4gICRjbGFzc05hbWU6IFtwcm9wcy4kY2xhc3NOYW1lLCBwcm9wcy4kZ3JhZGllbnQgPyBncmFkaWVudFN0eWxlcy5ncmFkaWVudCA6IHVuZGVmaW5lZF0sXG4gICRncmFkaWVudDogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2dyYWRpZW50L2dyYWRpZW50Lm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiZ3JhZGllbnRcIjogXCJncmFkaWVudC1tb2R1bGVfX2dyYWRpZW50X19fTURCdkZcIlxufTsiLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IERyYWdnYWJsZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vZ2V0LWRyYWdnYWJsZS1jb250ZXh0XCI7XG5pbXBvcnQgeyBhY3Rpb24gfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgZHJhZ2dlZEl0ZW1TdGF0ZUluamVjdGFibGUgfSBmcm9tIFwiLi9fc2hhcmVkL2RyYWdnZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9kcmFnZ2FibGUubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBkcmFnZ2FibGVQbHVnaW4gPSBnZXRQbHVnaW48RHJhZ2dhYmxlUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJGRyYWdnYWJsZSkge1xuICAgIHJldHVybiB7ICRkcmFnZ2FibGU6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgY29uc3QgW2RyYWdnaW5nLCBzZXREcmFnZ2luZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgeyBjb250ZXh0LCBpdGVtIH0gPSBwcm9wcy4kZHJhZ2dhYmxlO1xuXG4gIGNvbnN0IGRyYWdnZWRJdGVtU3RhdGUgPSB1c2VTeW5jSW5qZWN0KGRyYWdnZWRJdGVtU3RhdGVJbmplY3RhYmxlLCBjb250ZXh0KTtcblxuICByZXR1cm4ge1xuICAgIGRyYWdnYWJsZTogdHJ1ZSxcblxuICAgICR2aXN1YWxseUhpZGRlbjogZHJhZ2dpbmcsXG5cbiAgICBvbkRyYWdTdGFydDogYWN0aW9uKChldmVudDogUmVhY3QuRHJhZ0V2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSBcIm1vdmVcIjtcblxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgcHJvcHMub25EcmFnU3RhcnQ/LihldmVudCk7XG5cbiAgICAgIG1ha2VDaHJvbWl1bU5vdEdsaXRjaFdoZW5EcmFnZ2luZyhldmVudCk7XG5cbiAgICAgIGRyYWdnZWRJdGVtU3RhdGUuc2V0KGl0ZW0pO1xuXG4gICAgICAvLyBEb24ndCBzZXQgZHJhZ2dpbmcgdG9vIGVhcmx5LCBiZWNhdXNlIGl0IHdvdWxkIGhpZGUgdGhlIFwiZHJhZyBwcmV2aWV3XCIgZm9yIGVsZW1lbnQgYmVpbmcgZHJhZ2dlZC5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXREcmFnZ2luZyh0cnVlKTtcbiAgICAgIH0sIDApO1xuICAgIH0pLFxuXG4gICAgb25EcmFnRW5kOiBhY3Rpb24oKGV2ZW50OiBSZWFjdC5EcmFnRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICBwcm9wcy5vbkRyYWdFbmQ/LihldmVudCk7XG5cbiAgICAgIGRyYWdnZWRJdGVtU3RhdGUuc2V0KHVuZGVmaW5lZCk7XG4gICAgICBzZXREcmFnZ2luZyhmYWxzZSk7XG4gICAgfSksXG5cbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgc3R5bGVzLmRyYWdnYWJsZV0sXG5cbiAgICAkZHJhZ2dhYmxlOiB1bmRlZmluZWQsXG4gIH07XG59KTtcblxuY29uc3QgbWFrZUNocm9taXVtTm90R2xpdGNoV2hlbkRyYWdnaW5nID0gKGV2ZW50OiBSZWFjdC5EcmFnRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gIGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKFwidGV4dC9wbGFpblwiLCBcInN0dWItZGF0YS10by1maXgtY2hyb21pdW1cIik7XG59O1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2RyYWdnYWJsZS5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImRyYWdnYWJsZVwiOiBcImRyYWdnYWJsZS1tb2R1bGVfX2RyYWdnYWJsZV9fX2JqQ0EzXCJcbn07IiwgImltcG9ydCB7IGRyYWdnZWRJdGVtU3RhdGVJbmplY3RhYmxlIH0gZnJvbSBcIi4vX3NoYXJlZC9kcmFnZ2VkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB7IG1ha2VTdXJlRHJhZ0FuZERyb3BFdmVudHNIYXZlVGltZVRvSGFwcGVuSW5qZWN0YWJsZSB9IGZyb20gXCIuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmluamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgRHJvcHBhYmxlUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IGNvbnN0IGRyb3BwYWJsZVBsdWdpbiA9IGdldFBsdWdpbjxEcm9wcGFibGVQbHVnaW5Qcm9wcz4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJGRyb3BwYWJsZSkge1xuICAgIHJldHVybiB7ICRkcm9wcGFibGU6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgY29uc3QgeyBjb250ZXh0LCBvbkRyb3AgfSA9IHByb3BzLiRkcm9wcGFibGU7XG5cbiAgY29uc3QgZHJhZ2dlZEl0ZW1TdGF0ZSA9IHVzZVN5bmNJbmplY3QoZHJhZ2dlZEl0ZW1TdGF0ZUluamVjdGFibGUsIGNvbnRleHQpO1xuICBjb25zdCBzb21lID0gdXNlU3luY0luamVjdChtYWtlU3VyZURyYWdBbmREcm9wRXZlbnRzSGF2ZVRpbWVUb0hhcHBlbkluamVjdGFibGUpO1xuXG4gIGNvbnN0IGRyYWdnZWRJdGVtID0gZHJhZ2dlZEl0ZW1TdGF0ZS5nZXQoKTtcblxuICByZXR1cm4ge1xuICAgIG9uRHJhZ092ZXI6IChldmVudDogUmVhY3QuRHJhZ0V2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgcHJvcHMub25EcmFnT3Zlcj8uKGV2ZW50KTtcblxuICAgICAgaWYgKGRyYWdnZWRJdGVtKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIG9uRHJvcDogKGV2ZW50OiBSZWFjdC5EcmFnRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICBwcm9wcy5vbkRyb3A/LihldmVudCk7XG5cbiAgICAgIGlmIChkcmFnZ2VkSXRlbSkge1xuICAgICAgICBzb21lKCgpID0+IHtcbiAgICAgICAgICBvbkRyb3AoZHJhZ2dlZEl0ZW0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgJGRyb3BwYWJsZTogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0cmFuc2l0aW9uU3R5bGVzIGZyb20gXCIuL3RyYW5zaXRpb24ubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgVHJhbnNpdGlvblBsdWdpblByb3BzID0geyAkdHJhbnNpdGlvbj86IGJvb2xlYW4gfTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zaXRpb25QbHVnaW4gPSBnZXRQbHVnaW48VHJhbnNpdGlvblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHsgW3RyYW5zaXRpb25TdHlsZXMudHJhbnNpdGlvbl06ICEhcHJvcHMuJHRyYW5zaXRpb24gfV0sXG4gICR0cmFuc2l0aW9uOiB1bmRlZmluZWQsXG59KSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvdHJhbnNpdGlvbi90cmFuc2l0aW9uLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwidHJhbnNpdGlvblwiOiBcInRyYW5zaXRpb24tbW9kdWxlX190cmFuc2l0aW9uX19fU3d3T0VcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBvZmZzZXRTdHlsZXMgZnJvbSBcIi4vb2Zmc2V0Lm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IERpcmVjdGlvbiB9IGZyb20gXCIuLi9fc2hhcmVkL2RpcmVjdGlvbnNcIjtcbmltcG9ydCB0eXBlIHsgVFNoaXJ0U2l6ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5cbmV4cG9ydCB0eXBlIE9mZnNldFBsdWdpblByb3BzID0geyAkb2Zmc2V0PzogeyBkaXJlY3Rpb246IERpcmVjdGlvbjsgc2l6ZTogVFNoaXJ0U2l6ZSB9IH07XG5cbmV4cG9ydCBjb25zdCBvZmZzZXRQbHVnaW4gPSBnZXRQbHVnaW48T2Zmc2V0UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJG9mZnNldCkge1xuICAgIHJldHVybiB7ICRvZmZzZXQ6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgb2Zmc2V0U3R5bGVzW2BvZmZzZXRfXyR7cHJvcHMuJG9mZnNldC5kaXJlY3Rpb259LS0ke3Byb3BzLiRvZmZzZXQuc2l6ZX1gXV0sXG5cbiAgICAkb2Zmc2V0OiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9vZmZzZXQvb2Zmc2V0Lm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwib2Zmc2V0X190b3AtLXplcm9cIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0temVyb19fX2Fwck9yXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLXplcm9cIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0temVyb19fX2JGTnk0XCIsXG4gIFwib2Zmc2V0X19sZWZ0LS16ZXJvXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS16ZXJvX19fNUtkTXhcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS16ZXJvXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0temVyb19fX0RyajB1XCIsXG4gIFwib2Zmc2V0X190b3AtLTR4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS00eHNfX19GYTh6ZVwiLFxuICBcIm9mZnNldF9fYm90dG9tLS00eHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tNHhzX19fSmM3WndcIixcbiAgXCJvZmZzZXRfX2xlZnQtLTR4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tNHhzX19fdDdqR3pcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS00eHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS00eHNfX18ybWNMWlwiLFxuICBcIm9mZnNldF9fdG9wLS0zeHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tM3hzX19faEh4QUtcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tM3hzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTN4c19fX3FQM0x2XCIsXG4gIFwib2Zmc2V0X19sZWZ0LS0zeHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLTN4c19fX05tRDdpXCIsXG4gIFwib2Zmc2V0X19yaWdodC0tM3hzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tM3hzX19fOVlsdWVcIixcbiAgXCJvZmZzZXRfX3RvcC0teHhzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLXh4c19fX1pBS3hvXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLXh4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS14eHNfX19rOUY0eFwiLFxuICBcIm9mZnNldF9fbGVmdC0teHhzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS14eHNfX19FRWY0RFwiLFxuICBcIm9mZnNldF9fcmlnaHQtLXh4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLXh4c19fXy1KNzVLXCIsXG4gIFwib2Zmc2V0X190b3AtLXhzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLXhzX19faXJwbmFcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0teHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0teHNfX18zR1hvSFwiLFxuICBcIm9mZnNldF9fbGVmdC0teHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLXhzX19fN1dZSklcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS14c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLXhzX19fcVktbE9cIixcbiAgXCJvZmZzZXRfX3RvcC0tc1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS1zX19fTmRSS3FcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tc1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS1zX19fWUtmOWVcIixcbiAgXCJvZmZzZXRfX2xlZnQtLXNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLXNfX19taXhwQVwiLFxuICBcIm9mZnNldF9fcmlnaHQtLXNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS1zX19fbTZqZjVcIixcbiAgXCJvZmZzZXRfX3RvcC0tbVwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS1tX19fRVhrcWlcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tbVwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS1tX19fT3ZsWXJcIixcbiAgXCJvZmZzZXRfX2xlZnQtLW1cIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLW1fX19YUy1QR1wiLFxuICBcIm9mZnNldF9fcmlnaHQtLW1cIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS1tX19fbzB6Wi1cIixcbiAgXCJvZmZzZXRfX3RvcC0tbFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS1sX19fMGJHYVBcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tbFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS1sX19fUzEtTFdcIixcbiAgXCJvZmZzZXRfX2xlZnQtLWxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLWxfX19oUzFiM1wiLFxuICBcIm9mZnNldF9fcmlnaHQtLWxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS1sX19fdlE0WXpcIixcbiAgXCJvZmZzZXRfX3RvcC0teGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0teGxfX182TWZLVlwiLFxuICBcIm9mZnNldF9fYm90dG9tLS14bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS14bF9fX2RnYldXXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS14bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0teGxfX18wYVdCNVwiLFxuICBcIm9mZnNldF9fcmlnaHQtLXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0teGxfX195UHo4T1wiLFxuICBcIm9mZnNldF9fdG9wLS14eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0teHhsX19faXZKUmRcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0teHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLXh4bF9fX1p0RTZaXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS14eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLXh4bF9fXzRsSy1FXCIsXG4gIFwib2Zmc2V0X19yaWdodC0teHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0teHhsX19fRU04ckJcIixcbiAgXCJvZmZzZXRfX3RvcC0tM3hsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTN4bF9fX0E5QmtuXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTN4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS0zeGxfX196QzgtYVwiLFxuICBcIm9mZnNldF9fbGVmdC0tM3hsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS0zeGxfX19XckwtVFwiLFxuICBcIm9mZnNldF9fcmlnaHQtLTN4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTN4bF9fX25lV2FwXCIsXG4gIFwib2Zmc2V0X190b3AtLTR4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS00eGxfX19CV1E5aVwiLFxuICBcIm9mZnNldF9fYm90dG9tLS00eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tNHhsX19fOFg0a0VcIixcbiAgXCJvZmZzZXRfX2xlZnQtLTR4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tNHhsX19fSGM0MFRcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS00eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS00eGxfX19zUmpHUVwiLFxuICBcIm9mZnNldF9fdG9wLS01eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tNXhsX19fNnVSWFlcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tNXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTV4bF9fX25XYzZuXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS01eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLTV4bF9fX1ZrV3pKXCIsXG4gIFwib2Zmc2V0X19yaWdodC0tNXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tNXhsX19fY25nS0VcIixcbiAgXCJvZmZzZXRfX3RvcC0tNnhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTZ4bF9fX3RyN2hIXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTZ4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS02eGxfX19DWVUxTVwiLFxuICBcIm9mZnNldF9fbGVmdC0tNnhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS02eGxfX18wSXVNYlwiLFxuICBcIm9mZnNldF9fcmlnaHQtLTZ4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTZ4bF9fXy0xc3dvXCIsXG4gIFwib2Zmc2V0X190b3AtLTd4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS03eGxfX19ONy1YZFwiLFxuICBcIm9mZnNldF9fYm90dG9tLS03eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tN3hsX19fLXBBaHlcIixcbiAgXCJvZmZzZXRfX2xlZnQtLTd4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tN3hsX19fbXhWcmtcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS03eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS03eGxfX19uenVsUFwiLFxuICBcIm9mZnNldF9fdG9wLS04eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tOHhsX19fZU0tN1dcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tOHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTh4bF9fX2VucEVtXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS04eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLTh4bF9fX2ppRlluXCIsXG4gIFwib2Zmc2V0X19yaWdodC0tOHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tOHhsX19fRk5xTnNcIixcbiAgXCJvZmZzZXRfX3RvcC0tOXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTl4bF9fXy1DbWg5XCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTl4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS05eGxfX190d0UzdFwiLFxuICBcIm9mZnNldF9fbGVmdC0tOXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS05eGxfX183NW11YlwiLFxuICBcIm9mZnNldF9fcmlnaHQtLTl4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTl4bF9fX2tDU3NDXCIsXG4gIFwib2Zmc2V0X190b3AtLTEweGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tMTB4bF9fX2psYmhaXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTEweGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tMTB4bF9fX3JleVRxXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS0xMHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS0xMHhsX19fOXAzY25cIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS0xMHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tMTB4bF9fX3Qtdm83XCIsXG4gIFwib2Zmc2V0X190b3AtLTExeGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tMTF4bF9fXzBuclphXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTExeGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tMTF4bF9fX3djZldnXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS0xMXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS0xMXhsX19fc0l0ZzVcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS0xMXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tMTF4bF9fX05VcC1uXCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgb2Zmc2V0U3R5bGVzIGZyb20gXCIuL29mZnNldC1jaGlsZHJlbi5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBEaXJlY3Rpb24gfSBmcm9tIFwiLi4vX3NoYXJlZC9kaXJlY3Rpb25zXCI7XG5pbXBvcnQgdHlwZSB7IFRTaGlydFNpemUgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuXG5leHBvcnQgdHlwZSBPZmZzZXRDaGlsZHJlblBsdWdpblByb3BzID0geyAkb2Zmc2V0Q2hpbGRyZW4/OiB7IGRpcmVjdGlvbjogRGlyZWN0aW9uOyBzaXplOiBUU2hpcnRTaXplIH0gfTtcblxuZXhwb3J0IGNvbnN0IG9mZnNldENoaWxkcmVuUGx1Z2luID0gZ2V0UGx1Z2luPE9mZnNldENoaWxkcmVuUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJG9mZnNldENoaWxkcmVuKSB7XG4gICAgcmV0dXJuIHsgJG9mZnNldENoaWxkcmVuOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW1xuICAgICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICAgIG9mZnNldFN0eWxlc1tgb2Zmc2V0LWNoaWxkcmVuX18ke3Byb3BzLiRvZmZzZXRDaGlsZHJlbi5kaXJlY3Rpb259LS0ke3Byb3BzLiRvZmZzZXRDaGlsZHJlbi5zaXplfWBdLFxuICAgIF0sXG5cbiAgICAkb2Zmc2V0Q2hpbGRyZW46IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW4ubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0temVyb1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS16ZXJvX19fOGx5R2lcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0temVyb1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS16ZXJvX19fRGJJM2pcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXplcm9cIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXplcm9fX19paG5TWFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXplcm9cIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS16ZXJvX19fUTRMWE9cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tNHhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLTR4c19fX0xmTTB4XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTR4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS00eHNfX19ZZXl3NlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tNHhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS00eHNfX19UQWFES1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTR4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTR4c19fXzZpV1VvXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTN4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS0zeHNfX191cmtpZ1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS0zeHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tM3hzX19feVhIM3pcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTN4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tM3hzX19fZ0F6VkFcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS0zeHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS0zeHNfX19XcjQ4Y1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS14eHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0teHhzX19fZHFUVFNcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0teHhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXh4c19fX0VwNjZSXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS14eHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXh4c19fXzl2UFlkXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teHhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teHhzX19fanV1S3BcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0teHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0teHNfX19udzVhYVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS14c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS14c19fX0pnQzZsXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS14c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0teHNfX19jeHRWeFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teHNfX18yaVA1Z1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS1zXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLXNfX19IbTJpcFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS1zXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXNfX19XYTM4TlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tc1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tc19fX1dXQkZoXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tc1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXNfX193ekZWOVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS1tXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLW1fX19aak9DTVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS1tXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLW1fX19pcERrV1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tbVwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tbV9fX1k4cURXXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tbVwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLW1fX180WEpmdlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS1sXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLWxfX19RdlRSb1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS1sXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLWxfX19FR2tBUlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tbFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tbF9fX1VuVUh2XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tbFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLWxfX19qVk5OWFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS14bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS14bF9fX0VOY2NYXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXhsX19fYm1yc2FcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS14bF9fX0tqby1jXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS14bF9fX0RIUnV5XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLXh4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS14eGxfX19vbmplQVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS14eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0teHhsX19fdi0xVGxcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXh4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0teHhsX19faS1jMmhcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS14eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS14eGxfX19xRzA4NVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS0zeGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tM3hsX19fTDltc1FcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tM3hsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTN4bF9fX3dNTWJtXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS0zeGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTN4bF9fX2JTU09yXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tM3hsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tM3hsX19fZTlXN3ZcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tNHhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLTR4bF9fX1ZBay14XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTR4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS00eGxfX19EeXk1WFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tNHhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS00eGxfX19YMHg1YVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTR4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTR4bF9fX1F1bC1qXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTV4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS01eGxfX19lVzVRa1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS01eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tNXhsX19fcGlhLVpcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTV4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tNXhsX19faUFBaG9cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS01eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS01eGxfX194anVDTFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS02eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tNnhsX19fQzBXdmtcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tNnhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTZ4bF9fXzg0enAtXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS02eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTZ4bF9fX2l1ZUJGXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tNnhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tNnhsX19fVU5RLUJcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tN3hsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLTd4bF9fX2hQY2xjXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTd4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS03eGxfX181Ulp3UVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tN3hsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS03eGxfX19ISXA2QlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTd4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTd4bF9fX0ZpT0VJXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTh4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS04eGxfX19ndDRmdVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS04eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tOHhsX19fZlBFT0RcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTh4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tOHhsX19fLXRUZlBcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS04eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS04eGxfX19kVVhSaFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS05eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tOXhsX19fa1JOQTZcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tOXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTl4bF9fX2piSGFCXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS05eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTl4bF9fX1NGZ1BsXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tOXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tOXhsX19fVEppZUhcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tMTB4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS0xMHhsX19fLXV0T25cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tMTB4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS0xMHhsX19fYTU5d1RcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTEweGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTEweGxfX19LY2V6ZVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTEweGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS0xMHhsX19fTm9tWXVcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tMTF4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS0xMXhsX19fU1l0Z25cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tMTF4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS0xMXhsX19fUDYydTRcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTExeGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTExeGxfX19nMG9vZVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTExeGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS0xMXhsX19fRU9XTC1cIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBoaWRkZW5TdHlsZXMgZnJvbSBcIi4vaGlkZGVuLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIEhpZGRlblBsdWdpblByb3BzID0geyAkaGlkZGVuPzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgaGlkZGVuUGx1Z2luID0gZ2V0UGx1Z2luPEhpZGRlblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHsgW2hpZGRlblN0eWxlcy5oaWRkZW5dOiAhIXByb3BzLiRoaWRkZW4gfV0sXG5cbiAgJGhpZGRlbjogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2hpZGRlbi9oaWRkZW4ubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJoaWRkZW5cIjogXCJoaWRkZW4tbW9kdWxlX19oaWRkZW5fX19uVVVpMVwiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IG1hcmdpblN0eWxlcyBmcm9tIFwiLi9tYXJnaW4ubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSBcImxvZGFzaC9mcFwiO1xuaW1wb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcblxuZXhwb3J0IHR5cGUgRGlyZWN0aW9uYWxNYXJnaW4gPSB7XG4gIHRvcD86IFRTaGlydFNpemU7XG4gIGJvdHRvbT86IFRTaGlydFNpemU7XG4gIGxlZnQ/OiBUU2hpcnRTaXplO1xuICByaWdodD86IFRTaGlydFNpemU7XG4gIGhvcml6b250YWw/OiBUU2hpcnRTaXplO1xuICB2ZXJ0aWNhbD86IFRTaGlydFNpemU7XG59O1xuXG5leHBvcnQgdHlwZSBNYXJnaW5QbHVnaW5Qcm9wcyA9IHsgJG1hcmdpbj86IGJvb2xlYW4gfCBEaXJlY3Rpb25hbE1hcmdpbiB8IFRTaGlydFNpemUgfCBcImF1dG9cIiB9O1xuXG5leHBvcnQgY29uc3QgbWFyZ2luUGx1Z2luID0gZ2V0UGx1Z2luPE1hcmdpblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBpZiAoIXByb3BzLiRtYXJnaW4pIHtcbiAgICByZXR1cm4geyAkbWFyZ2luOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IG1hcmdpbiA9IHByb3BzLiRtYXJnaW4gPT09IHRydWUgPyBcInhzXCIgOiBwcm9wcy4kbWFyZ2luO1xuXG4gIGlmIChpc1N0cmluZyhtYXJnaW4pKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICRjbGFzc05hbWU6IFtwcm9wcy4kY2xhc3NOYW1lLCBtYXJnaW5TdHlsZXNbYG1hcmdpbi0tJHttYXJnaW59YF1dLFxuICAgICAgJG1hcmdpbjogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBjb25zdCB0b3BTaXplID0gbWFyZ2luLnRvcCB8fCBtYXJnaW4udmVydGljYWw7XG4gIGNvbnN0IGJvdHRvbVNpemUgPSBtYXJnaW4uYm90dG9tIHx8IG1hcmdpbi52ZXJ0aWNhbDtcbiAgY29uc3QgcmlnaHRTaXplID0gbWFyZ2luLnJpZ2h0IHx8IG1hcmdpbi5ob3Jpem9udGFsO1xuICBjb25zdCBsZWZ0U2l6ZSA9IG1hcmdpbi5sZWZ0IHx8IG1hcmdpbi5ob3Jpem9udGFsO1xuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW1xuICAgICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICAgIHRvcFNpemUgPyBtYXJnaW5TdHlsZXNbYG1hcmdpbl9fdG9wLS0ke3RvcFNpemV9YF0gOiB1bmRlZmluZWQsXG4gICAgICByaWdodFNpemUgPyBtYXJnaW5TdHlsZXNbYG1hcmdpbl9fcmlnaHQtLSR7cmlnaHRTaXplfWBdIDogdW5kZWZpbmVkLFxuICAgICAgYm90dG9tU2l6ZSA/IG1hcmdpblN0eWxlc1tgbWFyZ2luX19ib3R0b20tLSR7Ym90dG9tU2l6ZX1gXSA6IHVuZGVmaW5lZCxcbiAgICAgIGxlZnRTaXplID8gbWFyZ2luU3R5bGVzW2BtYXJnaW5fX2xlZnQtLSR7bGVmdFNpemV9YF0gOiB1bmRlZmluZWQsXG4gICAgXSxcbiAgICAkbWFyZ2luOiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9tYXJnaW4vbWFyZ2luLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwibWFyZ2luX190b3AtLXplcm9cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0temVyb19fX2dHTHF3XCIsXG4gIFwibWFyZ2luX190b3AtLTR4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS00eHNfX19FdjhyN1wiLFxuICBcIm1hcmdpbl9fdG9wLS0zeHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tM3hzX19fbTRZT1pcIixcbiAgXCJtYXJnaW5fX3RvcC0teHhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLXh4c19fX29wWHZwXCIsXG4gIFwibWFyZ2luX190b3AtLXhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLXhzX19fSklqWUNcIixcbiAgXCJtYXJnaW5fX3RvcC0tc1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS1zX19fWU44RElcIixcbiAgXCJtYXJnaW5fX3RvcC0tbVwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS1tX19fWHdrLVNcIixcbiAgXCJtYXJnaW5fX3RvcC0tbFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS1sX19fS1RXaUdcIixcbiAgXCJtYXJnaW5fX3RvcC0teGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0teGxfX185SU9iWlwiLFxuICBcIm1hcmdpbl9fdG9wLS14eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0teHhsX19fM01XenBcIixcbiAgXCJtYXJnaW5fX3RvcC0tM3hsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTN4bF9fX004eEgzXCIsXG4gIFwibWFyZ2luX190b3AtLTR4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS00eGxfX19ydk5IUlwiLFxuICBcIm1hcmdpbl9fdG9wLS01eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tNXhsX19fSW5FUnhcIixcbiAgXCJtYXJnaW5fX3RvcC0tNnhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTZ4bF9fX1BTLXQ2XCIsXG4gIFwibWFyZ2luX190b3AtLTd4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS03eGxfX19QNVlielwiLFxuICBcIm1hcmdpbl9fdG9wLS04eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tOHhsX19fOTZNb0tcIixcbiAgXCJtYXJnaW5fX3RvcC0tOXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTl4bF9fX29wZURjXCIsXG4gIFwibWFyZ2luX190b3AtLTEweGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tMTB4bF9fX3B2RjZ4XCIsXG4gIFwibWFyZ2luX190b3AtLTExeGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tMTF4bF9fX3BCekFtXCIsXG4gIFwibWFyZ2luX19yaWdodC0temVyb1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLXplcm9fX19CV3c2T1wiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTR4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTR4c19fX3JkUE9vXCIsXG4gIFwibWFyZ2luX19yaWdodC0tM3hzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tM3hzX19fLVk5T09cIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS14eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS14eHNfX19Kcm9BQVwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLXhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0teHNfX19abDhNaVwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLXNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS1zX19fMjRESW5cIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS1tXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tbV9fX1pMbDZCXCIsXG4gIFwibWFyZ2luX19yaWdodC0tbFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLWxfX19lSFMtQlwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0teGxfX19JVzhkNFwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLXh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLXh4bF9fXy1PRDdMXCIsXG4gIFwibWFyZ2luX19yaWdodC0tM3hsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tM3hsX19fdEdZUlJcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS00eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS00eGxfX19FWHFoM1wiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTV4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTV4bF9fX0N1WVZHXCIsXG4gIFwibWFyZ2luX19yaWdodC0tNnhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tNnhsX19fREtnRFRcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS03eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS03eGxfX19Geng0YlwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTh4bF9fX0VsU1dNXCIsXG4gIFwibWFyZ2luX19yaWdodC0tOXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tOXhsX19fMG9hVHhcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS0xMHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tMTB4bF9fX1E1NVBDXCIsXG4gIFwibWFyZ2luX19yaWdodC0tMTF4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTExeGxfX19wMDJrblwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS16ZXJvXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLXplcm9fX19uLU5WUVwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS00eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tNHhzX19faUpKYWFcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tM3hzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTN4c19fX2Z3UWQxXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLXh4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS14eHNfX182VWFmSFwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS14c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS14c19fX3oySjFlXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLXNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tc19fXy1IRjZRXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLW1cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tbV9fX0pKT1JFXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLWxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tbF9fX0dJWmNGXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLXhsX19fTTRBd05cIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0teHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLXh4bF9fX1RyOG1aXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLTN4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS0zeGxfX18tMFotSFwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS00eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tNHhsX19fNGxrU0ZcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tNXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTV4bF9fX3ppelVQXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLTZ4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS02eGxfX19zTW10S1wiLFxuICBcIm1hcmdpbl9fYm90dG9tLS03eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tN3hsX19fSk9BWnJcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tOHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTh4bF9fX0E1UTRDXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLTl4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS05eGxfX183dVN6dlwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS0xMHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTEweGxfX19KbVFKNVwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS0xMXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTExeGxfX182S0VZc1wiLFxuICBcIm1hcmdpbl9fbGVmdC0temVyb1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0temVyb19fX3ZDdlNvXCIsXG4gIFwibWFyZ2luX19sZWZ0LS00eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTR4c19fX2xLNS15XCIsXG4gIFwibWFyZ2luX19sZWZ0LS0zeHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTN4c19fXzcteFYtXCIsXG4gIFwibWFyZ2luX19sZWZ0LS14eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLXh4c19fX2dlNlZKXCIsXG4gIFwibWFyZ2luX19sZWZ0LS14c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0teHNfX19kdnJValwiLFxuICBcIm1hcmdpbl9fbGVmdC0tc1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tc19fX0RNWkoyXCIsXG4gIFwibWFyZ2luX19sZWZ0LS1tXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19sZWZ0LS1tX19fNXBlZHdcIixcbiAgXCJtYXJnaW5fX2xlZnQtLWxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLWxfX18tU3hESVwiLFxuICBcIm1hcmdpbl9fbGVmdC0teGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLXhsX19fNk4ta1pcIixcbiAgXCJtYXJnaW5fX2xlZnQtLXh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0teHhsX19fWWthcFlcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTN4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tM3hsX19fOFVVdXhcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTR4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tNHhsX19fYXFsNWJcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTV4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tNXhsX19faFFOdHBcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTZ4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tNnhsX19fU3FQMzFcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTd4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tN3hsX19fZTBqLWpcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tOHhsX19fdWtwVnpcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTl4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tOXhsX19fbE5IQlRcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTEweGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTEweGxfX19DQlVTblwiLFxuICBcIm1hcmdpbl9fbGVmdC0tMTF4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tMTF4bF9fX3VjS0M4XCIsXG4gIFwibWFyZ2luLS16ZXJvXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS16ZXJvX19feUtMREhcIixcbiAgXCJtYXJnaW4tLTR4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tNHhzX19fN25qc2lcIixcbiAgXCJtYXJnaW4tLTN4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tM3hzX19fa1dCYmVcIixcbiAgXCJtYXJnaW4tLXh4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0teHhzX19fZlppVWFcIixcbiAgXCJtYXJnaW4tLXhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS14c19fXy10ZE9qXCIsXG4gIFwibWFyZ2luLS1zXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS1zX19fMHhQMGdcIixcbiAgXCJtYXJnaW4tLW1cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW4tLW1fX19XZDRwcFwiLFxuICBcIm1hcmdpbi0tbFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tbF9fX3lNVVhzXCIsXG4gIFwibWFyZ2luLS14bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0teGxfX193alpQUlwiLFxuICBcIm1hcmdpbi0teHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS14eGxfX19FbTRUN1wiLFxuICBcIm1hcmdpbi0tM3hsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS0zeGxfX19jUVpIZlwiLFxuICBcIm1hcmdpbi0tNHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS00eGxfX183SVdyTVwiLFxuICBcIm1hcmdpbi0tNXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS01eGxfX19jU09VUVwiLFxuICBcIm1hcmdpbi0tNnhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS02eGxfX19GM2JTbVwiLFxuICBcIm1hcmdpbi0tN3hsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS03eGxfX18xVVFtSlwiLFxuICBcIm1hcmdpbi0tOHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS04eGxfX19HRTBTdlwiLFxuICBcIm1hcmdpbi0tOXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS05eGxfX19oNWhoRVwiLFxuICBcIm1hcmdpbi0tMTB4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tMTB4bF9fX2RHSy1SXCIsXG4gIFwibWFyZ2luLS0xMXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS0xMXhsX19fM3l4QnBcIixcbiAgXCJtYXJnaW4tLWF1dG9cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW4tLWF1dG9fX195N2dmOVwiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHZpc3VhbGx5SGlkZGVuU3R5bGVzIGZyb20gXCIuL3Zpc3VhbGx5LWhpZGRlbi5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBWaXN1YWxseUhpZGRlblBsdWdpblByb3BzID0geyAkdmlzdWFsbHlIaWRkZW4/OiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCB2aXN1YWxseUhpZGRlblBsdWdpbiA9IGdldFBsdWdpbjxWaXN1YWxseUhpZGRlblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHsgW3Zpc3VhbGx5SGlkZGVuU3R5bGVzW1widmlzdWFsbHktaGlkZGVuXCJdXTogISFwcm9wcy4kdmlzdWFsbHlIaWRkZW4gfV0sXG5cbiAgJHZpc3VhbGx5SGlkZGVuOiB1bmRlZmluZWQsXG59KSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvdmlzdWFsbHktaGlkZGVuL3Zpc3VhbGx5LWhpZGRlbi5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcInZpc3VhbGx5LWhpZGRlblwiOiBcInZpc3VhbGx5LWhpZGRlbi1tb2R1bGVfX3Zpc3VhbGx5LWhpZGRlbl9fX0RQdWxNXCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgb3ZlcmZsb3dTdHlsZXMgZnJvbSBcIi4vb3ZlcmZsb3cubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgT3ZlcmZsb3cgPSBcImhpZGRlblwiIHwgXCJzY3JvbGxcIiB8IFwiYXV0b1wiIHwgXCJ2aXNpYmxlXCI7XG5cbmV4cG9ydCB0eXBlIE92ZXJmbG93UGx1Z2luUHJvcHMgPSB7ICRvdmVyZmxvdz86IE92ZXJmbG93IHwgeyB4PzogT3ZlcmZsb3c7IHk/OiBPdmVyZmxvdzsgaGlkZVNjcm9sbGJhcj86IGJvb2xlYW4gfSB9O1xuXG5leHBvcnQgY29uc3Qgb3ZlcmZsb3dQbHVnaW4gPSBnZXRQbHVnaW48T3ZlcmZsb3dQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgJG92ZXJmbG93ID0gcHJvcHMuJG92ZXJmbG93O1xuXG4gIGlmICghJG92ZXJmbG93KSB7XG4gICAgcmV0dXJuIHsgJG92ZXJmbG93OiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IHggPSB0eXBlb2YgJG92ZXJmbG93ID09PSBcInN0cmluZ1wiID8gJG92ZXJmbG93IDogJG92ZXJmbG93Lng7XG4gIGNvbnN0IHkgPSB0eXBlb2YgJG92ZXJmbG93ID09PSBcInN0cmluZ1wiID8gJG92ZXJmbG93IDogJG92ZXJmbG93Lnk7XG4gIGNvbnN0IGhpZGVTY3JvbGxiYXIgPSB0eXBlb2YgJG92ZXJmbG93ID09PSBcInN0cmluZ1wiID8gZmFsc2UgOiAkb3ZlcmZsb3cuaGlkZVNjcm9sbGJhcjtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHByb3BzLiRjbGFzc05hbWUsXG5cbiAgICAgIHtcbiAgICAgICAgW292ZXJmbG93U3R5bGVzW2BvdmVyZmxvd19feC0tJHt4fWBdXTogeCxcbiAgICAgICAgW292ZXJmbG93U3R5bGVzW2BvdmVyZmxvd19feS0tJHt5fWBdXTogeSxcbiAgICAgICAgW292ZXJmbG93U3R5bGVzW2BvdmVyZmxvdy0taGlkZS1zY3JvbGxiYXJgXV06IGhpZGVTY3JvbGxiYXIsXG4gICAgICB9LFxuICAgIF0sXG5cbiAgICAkb3ZlcmZsb3c6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL292ZXJmbG93L292ZXJmbG93Lm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwib3ZlcmZsb3ctLWhpZGUtc2Nyb2xsYmFyXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvdy0taGlkZS1zY3JvbGxiYXJfX193YzZqUFwiLFxuICBcIm92ZXJmbG93X195LS1oaWRkZW5cIjogXCJvdmVyZmxvdy1tb2R1bGVfX292ZXJmbG93X195LS1oaWRkZW5fX19VQklYUVwiLFxuICBcIm92ZXJmbG93X195LS12aXNpYmxlXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvd19feS0tdmlzaWJsZV9fX3NmT2JVXCIsXG4gIFwib3ZlcmZsb3dfX3ktLXNjcm9sbFwiOiBcIm92ZXJmbG93LW1vZHVsZV9fb3ZlcmZsb3dfX3ktLXNjcm9sbF9fX3lrWjIxXCIsXG4gIFwib3ZlcmZsb3dfX3ktLWF1dG9cIjogXCJvdmVyZmxvdy1tb2R1bGVfX292ZXJmbG93X195LS1hdXRvX19fMU9OSEtcIixcbiAgXCJvdmVyZmxvd19feC0taGlkZGVuXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvd19feC0taGlkZGVuX19fTEszVWhcIixcbiAgXCJvdmVyZmxvd19feC0tdmlzaWJsZVwiOiBcIm92ZXJmbG93LW1vZHVsZV9fb3ZlcmZsb3dfX3gtLXZpc2libGVfX191LS02RlwiLFxuICBcIm92ZXJmbG93X194LS1zY3JvbGxcIjogXCJvdmVyZmxvdy1tb2R1bGVfX292ZXJmbG93X194LS1zY3JvbGxfX19haUlINlwiLFxuICBcIm92ZXJmbG93X194LS1hdXRvXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvd19feC0tYXV0b19fX1M2b1ZMXCJcbn07IiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2ZsZXgtY2hpbGQvZmxleC1jaGlsZC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImZsZXgtY2hpbGRcIjogXCJmbGV4LWNoaWxkLW1vZHVsZV9fZmxleC1jaGlsZF9fXzdCZGhkXCIsXG4gIFwiZmxleC1jaGlsZC0tc2hyaW5rYWJsZVwiOiBcImZsZXgtY2hpbGQtbW9kdWxlX19mbGV4LWNoaWxkLS1zaHJpbmthYmxlX19fNkg1LS1cIixcbiAgXCJmbGV4LWNoaWxkLS1maXhlZFwiOiBcImZsZXgtY2hpbGQtbW9kdWxlX19mbGV4LWNoaWxkLS1maXhlZF9fX0ZLZXRMXCJcbn07IiwgImltcG9ydCBmbGV4Q2hpbGRTdHlsZXMgZnJvbSBcIi4vZmxleC1jaGlsZC5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgdHlwZSB7IHN0eWxlUGx1Z2luIH0gZnJvbSBcIi4uL3N0eWxlL3N0eWxlXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcblxuLyoqXG4gKiAtIGB0cnVlYDogc2hhcmUgdGhlIHBhcmVudCdzIHJlbWFpbmluZyBzcGFjZSBlcXVhbGx5IChgZmxleDogMSAxIDBgKS5cbiAqIC0gYFwic2hyaW5rYWJsZVwiYDogYWRkaXRpb25hbGx5IHJlbW92ZSB0aGUgaXRlbSdzIGltcGxpY2l0IGNvbnRlbnQtc2l6ZWRcbiAqICAgbWluaW11bSAoYG1pbi1oZWlnaHQ6IGF1dG9gIC8gYG1pbi13aWR0aDogYXV0b2ApLCBzbyBpdCBjYW4gYWN0dWFsbHkgYmVcbiAqICAgc2l6ZWQgdG8gdGhlIHJlbWFpbmluZyBzcGFjZSBpbiBhIGNvbnN0cmFpbmVkIGxheW91dCBcdTIwMTQgcmVxdWlyZWQgZm9yIGFcbiAqICAgZGVzY2VuZGFudCB0byBzY3JvbGwgaW50ZXJuYWxseSBpbnN0ZWFkIG9mIGluZmxhdGluZyBldmVyeSBhbmNlc3Rvci5cbiAqIC0gYSBudW1iZXI6IGxpa2UgYFwic2hyaW5rYWJsZVwiYCwgYnV0IHRha2luZyB0aGF0IG1hbnkgc2hhcmVzIG9mIHRoZVxuICogICByZW1haW5pbmcgc3BhY2UgaW5zdGVhZCBvZiBvbmUgKGBmbGV4LWdyb3dgKSwgZm9yIHdlaWdodGVkIHNwbGl0cyBiZXR3ZWVuXG4gKiAgIHNpYmxpbmdzLlxuICogLSBgXCJmaXhlZFwiYDogdGhlIG9wcG9zaXRlIFx1MjAxNCBrZWVwIHRoZSBpdGVtJ3Mgb3duIHNpemUgKGBmbGV4LXNocmluazogMGApLFxuICogICBvcHRpbmcgb3V0IG9mIHRoZSBzaHJpbmsgbmVnb3RpYXRpb24gZW50aXJlbHkgKGUuZy4gYSBjb250ZW50LWh1Z2dpbmdcbiAqICAgcGFuZWwgbmV4dCB0byBhIGZpbGxpbmcgb25lKS5cbiAqL1xuZXhwb3J0IHR5cGUgRmxleENoaWxkUGx1Z2luUHJvcHMgPSB7ICRmbGV4Q2hpbGQ/OiBib29sZWFuIHwgbnVtYmVyIHwgXCJzaHJpbmthYmxlXCIgfCBcImZpeGVkXCIgfTtcblxuZXhwb3J0IGNvbnN0IGZsZXhDaGlsZFBsdWdpbiA9IGdldFBsdWdpbjxGbGV4Q2hpbGRQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW4sIHR5cGVvZiBzdHlsZVBsdWdpbl0+KFxuICAocHJvcHMpID0+IHtcbiAgICBjb25zdCB3ZWlnaHQgPSB0eXBlb2YgcHJvcHMuJGZsZXhDaGlsZCA9PT0gXCJudW1iZXJcIiA/IHByb3BzLiRmbGV4Q2hpbGQgOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc2hyaW5rYWJsZSA9IHByb3BzLiRmbGV4Q2hpbGQgPT09IFwic2hyaW5rYWJsZVwiIHx8IHdlaWdodCAhPT0gdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICRjbGFzc05hbWU6IFtcbiAgICAgICAgcHJvcHMuJGZsZXhDaGlsZCA9PT0gdHJ1ZSB8fCBzaHJpbmthYmxlID8gZmxleENoaWxkU3R5bGVzW1wiZmxleC1jaGlsZFwiXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgc2hyaW5rYWJsZSA/IGZsZXhDaGlsZFN0eWxlc1tcImZsZXgtY2hpbGQtLXNocmlua2FibGVcIl0gOiB1bmRlZmluZWQsXG4gICAgICAgIHByb3BzLiRmbGV4Q2hpbGQgPT09IFwiZml4ZWRcIiA/IGZsZXhDaGlsZFN0eWxlc1tcImZsZXgtY2hpbGQtLWZpeGVkXCJdIDogdW5kZWZpbmVkLFxuICAgICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuICAgICAgXSxcbiAgICAgICRzdHlsZTogd2VpZ2h0ID09PSB1bmRlZmluZWQgPyBwcm9wcy4kc3R5bGUgOiB7IC4uLnByb3BzLiRzdHlsZSwgZmxleEdyb3c6IHdlaWdodCB9LFxuICAgICAgJGZsZXhDaGlsZDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH0sXG4pO1xuIiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgZ3JheXNjYWxlU3R5bGVzIGZyb20gXCIuL2dyYXlzY2FsZS5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBHcmF5c2NhbGVQbHVnaW5Qcm9wcyA9IHtcbiAgLyoqXG4gICAqIEZ1bGx5IGRlc2F0dXJhdGVzIHRoZSBlbGVtZW50IChgZmlsdGVyOiBncmF5c2NhbGUoMTAwJSlgKSB3aGVuIGB0cnVlYCBcdTIwMTQgc29cbiAgICogZXZlbiBmaXhlZC1jb2xvdXIgY29udGVudCAoZS5nLiBicmFuZCBsb2dvcykgZ3JleXMgb3V0LCBub3QganVzdCB0aGVtZWRcbiAgICogY29sb3Vycy4gQ29tYmluZSB3aXRoIGAkZmFkZWRgIHRvIGRlLWVtcGhhc2lzZSBhbiB1bmF2YWlsYWJsZSBpdGVtLlxuICAgKi9cbiAgJGdyYXlzY2FsZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgZ3JheXNjYWxlUGx1Z2luID0gZ2V0UGx1Z2luPEdyYXlzY2FsZVBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHByb3BzLiRncmF5c2NhbGUgPyBncmF5c2NhbGVTdHlsZXMuZ3JheXNjYWxlIDogdW5kZWZpbmVkXSxcbiAgJGdyYXlzY2FsZTogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGUubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJncmF5c2NhbGVcIjogXCJncmF5c2NhbGUtbW9kdWxlX19ncmF5c2NhbGVfX18zbVpQNlwiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB0eXBlIHsgc3R5bGVQbHVnaW4gfSBmcm9tIFwiLi4vc3R5bGUvc3R5bGVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdGludFN0eWxlcyBmcm9tIFwiLi90aW50Lm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIFRpbnRQbHVnaW5Qcm9wcyA9IHtcbiAgLyoqXG4gICAqIE92ZXJyaWRlcyB0aGUgZWxlbWVudCdzIChhbmQgaXRzIGRlc2NlbmRhbnRzJykgU1ZHIGBmaWxsYCB0byB0aGlzIGNvbG91ciwgdmlhIGEgQ1NTIGN1c3RvbVxuICAgKiBwcm9wZXJ0eSBcdTIwMTQgYHN0cm9rZWAgaXMgbGVmdCB1bnRvdWNoZWQsIHNvIHN0cm9rZWQgZGV0YWlscyBzdXJ2aXZlLiBVbmxpa2UgYCRncmF5c2NhbGVgICh3aGljaCBvbmx5XG4gICAqIGRlc2F0dXJhdGVzKSB0aGlzIHBhaW50cyB0aGUgc2hhcGUgYW4gZXhhY3QgZmxhdCBjb2xvdXIgd2hpbGUgcmVzcGVjdGluZyB0cmFuc3BhcmVuY3ksIHNvIGFcbiAgICogZml4ZWQtY29sb3VyIGJyYW5kIG1hcmsgY2FuIGJlIHRpbnRlZCAoZS5nLiBhbiBBSS10b29sIGxvZ28gdGludGVkIHRvIHRoZSBjbHVzdGVyIGNvbG91cikuIExlYXZlXG4gICAqIHVuc2V0IHRvIHJlbmRlciB0aGUgZWxlbWVudCdzIG5hdHVyYWwgY29sb3Vycy5cbiAgICovXG4gICR0aW50Pzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGNvbnN0IHRpbnRQbHVnaW4gPSBnZXRQbHVnaW48VGludFBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbiwgdHlwZW9mIHN0eWxlUGx1Z2luXT4oKHByb3BzKSA9PiAoe1xuICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgcHJvcHMuJHRpbnQgPyB0aW50U3R5bGVzLnRpbnQgOiB1bmRlZmluZWRdLFxuICAvLyBUaGUgdGludCBjb2xvdXIgaXMgZXhwb3NlZCBhcyBhIGN1c3RvbSBwcm9wZXJ0eSB0aGUgYC50aW50YCBjbGFzcyByZWFkcyAoYGZpbGw6IHZhcigtLWVsZW1lbnQtdGludClgKS5cbiAgJHN0eWxlOiBwcm9wcy4kdGludCA/ICh7IC4uLnByb3BzLiRzdHlsZSwgXCItLWVsZW1lbnQtdGludFwiOiBwcm9wcy4kdGludCB9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMpIDogcHJvcHMuJHN0eWxlLFxuICAkdGludDogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3RpbnQvdGludC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcInRpbnRcIjogXCJ0aW50LW1vZHVsZV9fdGludF9fX2dDekc3XCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgZmFkZWRTdHlsZXMgZnJvbSBcIi4vZmFkZWQubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgRmFkZWRQbHVnaW5Qcm9wcyA9IHtcbiAgLyoqXG4gICAqIEZhZGVzIHRoZSBlbGVtZW50IChgb3BhY2l0eTogNTAlYCkgd2hlbiBgdHJ1ZWAuIENvbWJpbmUgd2l0aCBgJGdyYXlzY2FsZWBcbiAgICogdG8gZGUtZW1waGFzaXNlIGFuIHVuYXZhaWxhYmxlIGl0ZW0uXG4gICAqL1xuICAkZmFkZWQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGZhZGVkUGx1Z2luID0gZ2V0UGx1Z2luPEZhZGVkUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiAoe1xuICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgcHJvcHMuJGZhZGVkID8gZmFkZWRTdHlsZXMuZmFkZWQgOiB1bmRlZmluZWRdLFxuICAkZmFkZWQ6IHVuZGVmaW5lZCxcbn0pKTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImZhZGVkXCI6IFwiZmFkZWQtbW9kdWxlX19mYWRlZF9fXy11YmJNXCJcbn07IiwgImltcG9ydCB7IGdldFBsdWdpbiwgdHlwZSBDb250cmlidXRlUHJvcHMsIHR5cGUgQ29udHJpYnV0ZVJlZiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBmb2N1c2FibGVJdGVtU3RhdGVJbmplY3RhYmxlIH0gZnJvbSBcIi4vX3NoYXJlZC9mb2N1c2FibGUtaXRlbS1zdGF0ZS5pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB0eXBlIHsgSU9ic2VydmFibGVWYWx1ZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyB1c2VVcGRhdGVXaGVuUHJvcHNDaGFuZ2UgfSBmcm9tIFwiLi9fcHJpdmF0ZS91c2UtdXBkYXRlLXdoZW4tcHJvcHMtY2hhbmdlXCI7XG5pbXBvcnQgeyB1c2VDbGVhbnVwT25Vbm1vdW50IH0gZnJvbSBcIi4vX3ByaXZhdGUvdXNlLWNsZWFudXAtb24tdW5tb3VudFwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5pbXBvcnQgeyB1c2VLZXlib2FyZE5hdmlnYXRpb24gfSBmcm9tIFwiLi9fcHJpdmF0ZS91c2Uta2V5Ym9hcmQtbmF2aWdhdGlvblwiO1xuaW1wb3J0IHsgaGFuZGxlRm9jdXNGb3IgfSBmcm9tIFwiLi9fcHJpdmF0ZS9oYW5kbGUtZm9jdXNcIjtcbmltcG9ydCB7IGhhbmRsZUJsdXJGb3IgfSBmcm9tIFwiLi9fcHJpdmF0ZS9oYW5kbGUtYmx1clwiO1xuaW1wb3J0IHsgdXNlUHJvZ3JhbW1hdGljRm9jdXNpbmcgfSBmcm9tIFwiLi9fcHJpdmF0ZS91c2UtcHJvZ3JhbW1hdGljLWZvY3VzaW5nXCI7XG5pbXBvcnQgdHlwZSB7IHJlZlBsdWdpbiB9IGZyb20gXCIuLi9yZWYvcmVmXCI7XG5cbmV4cG9ydCB0eXBlIEZvY3VzYWJsZVBsdWdpblByb3BzPFQsIEZvY3VzZWRJdGVtID0gYW55PiA9IHtcbiAgJGZvY3VzYWJsZT86IHtcbiAgICBjb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPjtcbiAgICBpdGVtOiBGb2N1c2VkSXRlbTtcbiAgICBvcmRlck51bWJlcj86IG51bWJlcjtcbiAgfTtcblxuICBvbkZvY3VzPzogUmVhY3QuRm9jdXNFdmVudEhhbmRsZXI8VD47XG4gIG9uQmx1cj86IFJlYWN0LkZvY3VzRXZlbnRIYW5kbGVyPFQ+O1xuICBvbktleURvd24/OiBSZWFjdC5LZXlib2FyZEV2ZW50SGFuZGxlcjxUPjtcbiAgdGFiSW5kZXg/OiBIVE1MRWxlbWVudFtcInRhYkluZGV4XCJdO1xufTtcblxudHlwZSBGb2N1c2FibGVXcmFwcGVyUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGZvY3VzYWJsZToge1xuICAgIGNvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8YW55PjtcbiAgICBpdGVtOiBhbnk7XG4gICAgb3JkZXJOdW1iZXI/OiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHRhYkluZGV4OiBudW1iZXI7XG4gIHJlYWRvbmx5IG9uRm9jdXM/OiBSZWFjdC5Gb2N1c0V2ZW50SGFuZGxlcjxhbnk+O1xuICByZWFkb25seSBvbkJsdXI/OiBSZWFjdC5Gb2N1c0V2ZW50SGFuZGxlcjxhbnk+O1xuICByZWFkb25seSBvbktleURvd24/OiBSZWFjdC5LZXlib2FyZEV2ZW50SGFuZGxlcjxhbnk+O1xuICByZWFkb25seSBjb250cmlidXRlUmVmOiBDb250cmlidXRlUmVmO1xuICByZWFkb25seSBjb250cmlidXRlUHJvcHM6IENvbnRyaWJ1dGVQcm9wcztcbiAgcmVhZG9ubHkgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IEZvY3VzYWJsZVdyYXBwZXJDb21wb25lbnQgPSAoe1xuICBmb2N1c2FibGUsXG4gIHRhYkluZGV4LFxuICBvbkZvY3VzLFxuICBvbkJsdXIsXG4gIG9uS2V5RG93bixcbiAgY29udHJpYnV0ZVJlZixcbiAgY29udHJpYnV0ZVByb3BzLFxuICBjaGlsZHJlbixcbn06IEZvY3VzYWJsZVdyYXBwZXJQcm9wcykgPT4ge1xuICBjb25zdCB7IGNvbnRleHQ6IGZvY3VzYWJsZUNvbnRleHQsIGl0ZW06IGZvY3VzYWJsZUl0ZW0sIG9yZGVyTnVtYmVyIH0gPSBmb2N1c2FibGU7XG5cbiAgY29uc3QgW2VsZW1lbnQsIHNldEVsZW1lbnRdID0gdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29udHJpYnV0ZVJlZihzZXRFbGVtZW50KTtcblxuICBjb25zdCBodG1sRWxlbWVudFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudD4odW5kZWZpbmVkKTtcbiAgaHRtbEVsZW1lbnRSZWYuY3VycmVudCA9IChlbGVtZW50ID8/IHVuZGVmaW5lZCkgYXMgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3QgaHRtbEVsZW1lbnRJc0ZvY3VzZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBvbGRTdGF0ZVJlZiA9IHVzZVJlZjxJT2JzZXJ2YWJsZVZhbHVlPHVua25vd24+Pih1bmRlZmluZWQpO1xuXG4gIGNvbnN0IHN0YXRlID0gdXNlU3luY0luamVjdChmb2N1c2FibGVJdGVtU3RhdGVJbmplY3RhYmxlLCBmb2N1c2FibGVDb250ZXh0KTtcblxuICB1c2VVcGRhdGVXaGVuUHJvcHNDaGFuZ2UoaHRtbEVsZW1lbnRJc0ZvY3VzZWRSZWYsIG9sZFN0YXRlUmVmLCBzdGF0ZSwgZm9jdXNhYmxlSXRlbSk7XG4gIHVzZUNsZWFudXBPblVubW91bnQoaHRtbEVsZW1lbnRJc0ZvY3VzZWRSZWYsIG9sZFN0YXRlUmVmKTtcbiAgdXNlUHJvZ3JhbW1hdGljRm9jdXNpbmcoZm9jdXNhYmxlQ29udGV4dCwgZm9jdXNhYmxlSXRlbSwgaHRtbEVsZW1lbnRSZWYpO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gaGFuZGxlRm9jdXNGb3Ioc3RhdGUsIGZvY3VzYWJsZUl0ZW0sIGZvY3VzYWJsZUNvbnRleHQsIGh0bWxFbGVtZW50SXNGb2N1c2VkUmVmKTtcbiAgY29uc3QgaGFuZGxlQmx1ciA9IGhhbmRsZUJsdXJGb3IoZm9jdXNhYmxlQ29udGV4dCwgc3RhdGUsIGh0bWxFbGVtZW50SXNGb2N1c2VkUmVmKTtcblxuICBjb25zdCBrZXlib2FyZE5hdmlnYXRpb24gPSB1c2VLZXlib2FyZE5hdmlnYXRpb24oXG4gICAgZm9jdXNhYmxlQ29udGV4dC5pc0tleWJvYXJkTmF2aWdhYmxlID8gZm9jdXNhYmxlQ29udGV4dCA6IHVuZGVmaW5lZCxcbiAgICBmb2N1c2FibGVJdGVtLFxuICAgIG9yZGVyTnVtYmVyLFxuICAgIGVsZW1lbnQsXG4gICk7XG5cbiAgY29udHJpYnV0ZVByb3BzKHtcbiAgICB0YWJJbmRleCxcblxuICAgIG9uRm9jdXM6IChlOiBSZWFjdC5Gb2N1c0V2ZW50PGFueT4pID0+IHtcbiAgICAgIGhhbmRsZUZvY3VzKGUpO1xuICAgICAga2V5Ym9hcmROYXZpZ2F0aW9uLm9uRm9jdXMoKTtcbiAgICAgIG9uRm9jdXM/LihlKTtcbiAgICB9LFxuXG4gICAgb25CbHVyOiAoZTogUmVhY3QuRm9jdXNFdmVudDxhbnk+KSA9PiB7XG4gICAgICBpZiAoIWh0bWxFbGVtZW50UmVmLmN1cnJlbnQ/LmNvbnRhaW5zKGUucmVsYXRlZFRhcmdldCkpIHtcbiAgICAgICAgaGFuZGxlQmx1cihlKTtcbiAgICAgIH1cbiAgICAgIG9uQmx1cj8uKGUpO1xuICAgIH0sXG5cbiAgICBvbktleURvd246IChlOiBSZWFjdC5LZXlib2FyZEV2ZW50PGFueT4pID0+IHtcbiAgICAgIG9uS2V5RG93bj8uKGUpO1xuICAgICAga2V5Ym9hcmROYXZpZ2F0aW9uLm9uS2V5RG93bihlKTtcbiAgICB9LFxuXG4gICAgb25Nb3VzZUVudGVyOiBrZXlib2FyZE5hdmlnYXRpb24uZm9jdXNXaGF0VGhlUG9pbnRlcklzT24sXG4gICAgb25Nb3VzZU1vdmU6IGtleWJvYXJkTmF2aWdhdGlvbi5mb2N1c1doYXRUaGVQb2ludGVySXNPbixcbiAgfSk7XG5cbiAgcmV0dXJuIDw+e2NoaWxkcmVufTwvPjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBmb2N1c2FibGVQbHVnaW48VD4oKSB7XG4gIHJldHVybiBnZXRQbHVnaW48Rm9jdXNhYmxlUGx1Z2luUHJvcHM8VD4sIFtSZXR1cm5UeXBlPHR5cGVvZiByZWZQbHVnaW48VD4+XT4oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyAkZm9jdXNhYmxlLCB0YWJJbmRleCwgb25CbHVyLCBvbkZvY3VzLCBvbktleURvd24gfSA9IHByb3BzO1xuXG4gICAgaWYgKCEkZm9jdXNhYmxlKSB7XG4gICAgICByZXR1cm4geyAkZm9jdXNhYmxlOiB1bmRlZmluZWQgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgJGZvY3VzYWJsZTogdW5kZWZpbmVkLFxuICAgICAgJHdyYXBwZXI6IHtcbiAgICAgICAgQ29tcG9uZW50OiBGb2N1c2FibGVXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgIGZvY3VzYWJsZTogJGZvY3VzYWJsZSxcbiAgICAgICAgICB0YWJJbmRleDogdGFiSW5kZXggPz8gLTEsXG4gICAgICAgICAgb25Gb2N1cyxcbiAgICAgICAgICBvbkJsdXIsXG4gICAgICAgICAgb25LZXlEb3duLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9KTtcbn1cbiIsICJpbXBvcnQgeyBhc3NlcnREZWZpbmVkIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcbmltcG9ydCB0eXBlIHsgSU9ic2VydmFibGVWYWx1ZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyBydW5JbkFjdGlvbiB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHR5cGUgTXV0YWJsZVJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgdXNlVXBkYXRlV2hlblByb3BzQ2hhbmdlID0gKFxuICBmb2N1c2VkUmVmOiBNdXRhYmxlUmVmT2JqZWN0PGJvb2xlYW4+LFxuICBvbGRTdGF0ZVJlZjogTXV0YWJsZVJlZk9iamVjdDxJT2JzZXJ2YWJsZVZhbHVlPHVua25vd24+IHwgdW5kZWZpbmVkPixcbiAgc3RhdGU6IElPYnNlcnZhYmxlVmFsdWU8dW5rbm93bj4sXG4gIGZvY3VzYWJsZUl0ZW06IHVua25vd24sXG4pID0+IHtcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29ycmVjdG5lc3MvdXNlRXhoYXVzdGl2ZURlcGVuZGVuY2llczogcmVtb3ZlIHdoZW4gcG9zc2libGVcbiAgdXNlRWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIGlmIChmb2N1c2VkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgIHN0YXRlLnNldChmb2N1c2FibGVJdGVtKTtcblxuICAgICAgICAgIGNvbnN0IGNvbnRleHRIYXNDaGFuZ2VkID0gb2xkU3RhdGVSZWYuY3VycmVudCAhPT0gc3RhdGU7XG5cbiAgICAgICAgICBpZiAoY29udGV4dEhhc0NoYW5nZWQgJiYgb2xkU3RhdGVSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgYXNzZXJ0RGVmaW5lZChvbGRTdGF0ZVJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgIG9sZFN0YXRlUmVmLmN1cnJlbnQuc2V0KHVuZGVmaW5lZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgb2xkU3RhdGVSZWYuY3VycmVudCA9IHN0YXRlO1xuICAgIH0sXG4gICAgLy8gTm90ZTogZm9jdXNlZFJlZiBhbmQgb2xkU3RhdGVSZWYgbmV2ZXIgY2hhbmdlLlxuICAgIFtmb2N1c2FibGVJdGVtLCBzdGF0ZV0sXG4gICk7XG59O1xuIiwgImltcG9ydCB7IGFzc2VydERlZmluZWQgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgeyBJT2JzZXJ2YWJsZVZhbHVlIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7IHJ1bkluQWN0aW9uIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCwgdHlwZSBNdXRhYmxlUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCB1c2VDbGVhbnVwT25Vbm1vdW50ID0gKFxuICBmb2N1c2VkUmVmOiBNdXRhYmxlUmVmT2JqZWN0PGJvb2xlYW4+LFxuICBvbGRTdGF0ZVJlZjogTXV0YWJsZVJlZk9iamVjdDxJT2JzZXJ2YWJsZVZhbHVlPHVua25vd24+IHwgdW5kZWZpbmVkPixcbikgPT4ge1xuICAvLyBiaW9tZS1pZ25vcmUgbGludC9jb3JyZWN0bmVzcy91c2VFeGhhdXN0aXZlRGVwZW5kZW5jaWVzOiByZW1vdmUgd2hlbiBwb3NzaWJsZVxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT4gKCkgPT4ge1xuICAgICAgaWYgKGZvY3VzZWRSZWYuY3VycmVudCkge1xuICAgICAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICAgICAgYXNzZXJ0RGVmaW5lZChvbGRTdGF0ZVJlZi5jdXJyZW50KTtcbiAgICAgICAgICBvbGRTdGF0ZVJlZi5jdXJyZW50LnNldCh1bmRlZmluZWQpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8gTm90ZTogZm9jdXNlZFJlZiBhbmQgb2xkU3RhdGVSZWYgbmV2ZXIgY2hhbmdlLlxuICAgIFtdLFxuICApO1xufTtcbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVN5bmNJbmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvdXNlLWluamVjdFwiO1xuaW1wb3J0IHtcbiAga2V5Ym9hcmROYXZpZ2F0aW9uU3RhdGVJbmplY3RhYmxlLFxuICB0eXBlIE5hdmlnYWJsZUVudHJ5LFxufSBmcm9tIFwiLi4vX3NoYXJlZC9rZXlib2FyZC1uYXZpZ2F0aW9uLXN0YXRlLmluamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0LCBLZXlib2FyZE5hdmlnYXRpb25PcmllbnRhdGlvbiB9IGZyb20gXCIuLi9nZXQtZm9jdXNhYmxlLWNvbnRleHRcIjtcblxudHlwZSBLZXlib2FyZE5hdmlnYXRpb24gPSB7XG4gIHJlYWRvbmx5IG9uS2V5RG93bjogKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50KSA9PiB2b2lkO1xuICByZWFkb25seSBvbkZvY3VzOiAoKSA9PiB2b2lkO1xuICByZWFkb25seSBmb2N1c1doYXRUaGVQb2ludGVySXNPbjogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB2b2lkO1xufTtcblxuY29uc3Qgbm9LZXlib2FyZE5hdmlnYXRpb246IEtleWJvYXJkTmF2aWdhdGlvbiA9IHtcbiAgb25LZXlEb3duOiAoKSA9PiB7fSxcbiAgb25Gb2N1czogKCkgPT4ge30sXG4gIGZvY3VzV2hhdFRoZVBvaW50ZXJJc09uOiAoKSA9PiB7fSxcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VLZXlib2FyZE5hdmlnYXRpb24gPSAoXG4gIGNvbnRleHQ6IEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dDxhbnk+IHwgdW5kZWZpbmVkLFxuICBpdGVtOiB1bmtub3duLFxuICBvcmRlck51bWJlcjogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwsXG4pOiBLZXlib2FyZE5hdmlnYXRpb24gPT4ge1xuICBjb25zdCBuYXZpZ2F0aW9uID0gdXNlU3luY0luamVjdChrZXlib2FyZE5hdmlnYXRpb25TdGF0ZUluamVjdGFibGUpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFjb250ZXh0IHx8ICFlbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW50cnk6IE5hdmlnYWJsZUVudHJ5ID0geyBpdGVtLCBvcmRlck51bWJlcjogb3JkZXJOdW1iZXIgPz8gMCwgZWxlbWVudCB9O1xuXG4gICAgbmF2aWdhdGlvbi5yZWdpc3Rlcihjb250ZXh0LCBlbnRyeSk7XG5cbiAgICBjb25zdCBmb2N1c1doYXRTaG91bGRIYXZlRm9jdXMgPSAoKSA9PiB7XG4gICAgICBjb25zdCBjb250ZXh0SW5Gb2N1cyA9IG5hdmlnYXRpb24uY29udGV4dEluRm9jdXMoKTtcblxuICAgICAgaWYgKCFjb250ZXh0SW5Gb2N1cykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVudHJpZXMgPSBuYXZpZ2F0aW9uLnNvcnRlZEVudHJpZXNPZihjb250ZXh0SW5Gb2N1cyk7XG5cbiAgICAgIC8vIFRoZSBtZW1iZXIgdGhhdCBjb250ZXh0IHdhcyBsZWZ0IG9uLCBzbyBzdGVwcGluZyBpbnRvIHNvbWV0aGluZyBhbmQgYmFjayBvdXQgb2YgaXQgbGFuZHNcbiAgICAgIC8vIHdoZXJlIGl0IHN0YXJ0ZWQuIE9ubHkgdGhlIGxvd2VzdCBvcmRlciBudW1iZXIgd2hlbiBpdCB3YXMgbmV2ZXIgbGVmdCBhbnl3aGVyZTogdGhhdCBpcyBhXG4gICAgICAvLyBzZXQgb2YgbWVtYmVycyBhcHBlYXJpbmcgcmF0aGVyIHRoYW4gb25lIGJlaW5nIHJldHVybmVkIHRvLlxuICAgICAgY29uc3QgaXRlbUluRm9jdXMgPSBuYXZpZ2F0aW9uLml0ZW1JbkZvY3VzT2YoY29udGV4dEluRm9jdXMpO1xuICAgICAgY29uc3QgdG9Gb2N1cyA9IGVudHJpZXMuZmluZCgoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUuaXRlbSA9PT0gaXRlbUluRm9jdXMpID8/IGVudHJpZXNbMF07XG5cbiAgICAgIGlmICh0b0ZvY3VzPy5lbGVtZW50LmlzQ29ubmVjdGVkICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IHRvRm9jdXMuZWxlbWVudCkge1xuICAgICAgICB0b0ZvY3VzLmVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gRGVmZXJyZWQgc28gdGhhdCBldmVyeXRoaW5nIGFwcGVhcmluZyB0b2dldGhlciBoYXMgcmVnaXN0ZXJlZCwgYW5kIHRoZSBsb3dlc3Qgb3JkZXIgbnVtYmVyIG9mXG4gICAgLy8gdGhlIHdob2xlIHNldCB3aW5zIHJhdGhlciB0aGFuIHdoaWNoZXZlciBhcHBlYXJlZCBmaXJzdC5cbiAgICB2b2lkIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZm9jdXNXaGF0U2hvdWxkSGF2ZUZvY3VzKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBuYXZpZ2F0aW9uLmRlcmVnaXN0ZXIoY29udGV4dCwgZW50cnkpO1xuXG4gICAgICB2b2lkIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZm9jdXNXaGF0U2hvdWxkSGF2ZUZvY3VzKTtcbiAgICB9O1xuICB9LCBbbmF2aWdhdGlvbiwgY29udGV4dCwgaXRlbSwgb3JkZXJOdW1iZXIsIGVsZW1lbnRdKTtcblxuICBpZiAoIWNvbnRleHQpIHtcbiAgICByZXR1cm4gbm9LZXlib2FyZE5hdmlnYXRpb247XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC8vIFdoaWNoIG1lbWJlciB0aGUgY29udGV4dCBpcyBvbiwgcmVtZW1iZXJlZCBmb3IgYXMgbG9uZyBhcyBpdHMgbWVtYmVycyBhcmUgdGhlcmU6IGl0IGlzIHdoYXRcbiAgICAvLyBmb2N1cyByZXR1cm5zIHRvIHdoZW4gc29tZXRoaW5nIHRoYXQgdG9vayBmb2N1cyBvdmVyIGdvZXMgYXdheSBhZ2Fpbi5cbiAgICBvbkZvY3VzOiAoKSA9PiBuYXZpZ2F0aW9uLm5vdGVJdGVtSW5Gb2N1cyhjb250ZXh0LCBpdGVtKSxcblxuICAgIC8vIFdoZXJlIHRoZSBwb2ludGVyIGdvZXMsIGZvY3VzIGdvZXM6IHRoZSBtZW1iZXIgdW5kZXIgaXQgYmVjb21lcyB0aGUgZm9jdXNlZCBvbmUsIHNvIGFycm93aW5nXG4gICAgLy8gb24gZnJvbSB0aGVyZSBjb250aW51ZXMgZnJvbSB3aGF0IHRoZSB1c2VyIGlzIGxvb2tpbmcgYXQgcmF0aGVyIHRoYW4gZnJvbSB3aGVyZXZlciB0aGVcbiAgICAvLyBrZXlib2FyZCB3YXMgbGVmdC4gV2hpY2hldmVyIG9mIHRoZSB0d28gbW92ZWQgbGFzdCBkZWNpZGVzLCB3aGljaCBpcyB3aHkgdGhpcyBhbnN3ZXJzIHRvIHRoZVxuICAgIC8vIHBvaW50ZXIgbW92aW5nIGFzIHdlbGwgYXMgdG8gaXQgYXJyaXZpbmcgXHUyMDE0IHRoZSBrZXlib2FyZCBtYXkgaGF2ZSB0YWtlbiBmb2N1cyBlbHNld2hlcmUgd2hpbGVcbiAgICAvLyB0aGUgcG9pbnRlciByZXN0ZWQgd2hlcmUgaXQgd2FzLCBhbmQgbW92aW5nIGl0IGF0IGFsbCBpcyB0aGUgdXNlciBwb2ludGluZyBhZ2Fpbi5cbiAgICAvL1xuICAgIC8vIFRoZSBlbGVtZW50IGNvbWVzIGZyb20gdGhlIGV2ZW50IHJhdGhlciB0aGFuIGZyb20gdGhlIHJlbmRlciB0aGlzIGhhbmRsZXIgd2FzIGNyZWF0ZWQgaW46XG4gICAgLy8gdGhlIGhhbmRsZXIgdGhlIERPTSBlbmRzIHVwIHdpdGggaXMgdGhlIG9uZSBmcm9tIHRoZSBmaXJzdCByZW5kZXIsIHdoZW4gdGhlcmUgd2FzIG5vIGVsZW1lbnRcbiAgICAvLyB5ZXQgXHUyMDE0IFJlYWN0IGhhcyBubyByZWFzb24gdG8gcmVuZGVyIHRoZSBlbGVtZW50IGFnYWluIGZvciBhIHdyYXBwZXIncyBvd24gc3RhdGUuXG4gICAgZm9jdXNXaGF0VGhlUG9pbnRlcklzT246IChldmVudDogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgICAgY29uc3QgaG92ZXJlZCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSBob3ZlcmVkKSB7XG4gICAgICAgIGhvdmVyZWQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgb25LZXlEb3duOiAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHN0ZXAgPSBzdGVwT2YoZXZlbnQua2V5LCBjb250ZXh0Lm9yaWVudGF0aW9uKTtcblxuICAgICAgaWYgKHN0ZXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVudHJpZXMgPSBuYXZpZ2F0aW9uLnNvcnRlZEVudHJpZXNPZihjb250ZXh0KTtcblxuICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gZW50cmllcy5maW5kSW5kZXgoKGNhbmRpZGF0ZSkgPT4gY2FuZGlkYXRlLml0ZW0gPT09IGl0ZW0pO1xuXG4gICAgICBjb25zdCBuZXh0SW5kZXggPVxuICAgICAgICBzdGVwID09PSBcImZpcnN0XCJcbiAgICAgICAgICA/IDBcbiAgICAgICAgICA6IHN0ZXAgPT09IFwibGFzdFwiXG4gICAgICAgICAgICA/IGVudHJpZXMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgOiAoY3VycmVudEluZGV4ICsgc3RlcCArIGVudHJpZXMubGVuZ3RoKSAlIGVudHJpZXMubGVuZ3RoO1xuXG4gICAgICBjb25zdCBuZXh0ID0gZW50cmllc1tuZXh0SW5kZXhdO1xuXG4gICAgICBpZiAobmV4dCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBuZXh0LmVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufTtcblxuY29uc3Qgc3RlcE9mID0gKGtleTogc3RyaW5nLCBvcmllbnRhdGlvbjogS2V5Ym9hcmROYXZpZ2F0aW9uT3JpZW50YXRpb24pID0+IHtcbiAgc3dpdGNoIChrZXkpIHtcbiAgICBjYXNlIFwiQXJyb3dEb3duXCI6XG4gICAgICByZXR1cm4gb3JpZW50YXRpb24gPT09IFwiaG9yaXpvbnRhbFwiID8gdW5kZWZpbmVkIDogMTtcbiAgICBjYXNlIFwiQXJyb3dSaWdodFwiOlxuICAgICAgcmV0dXJuIG9yaWVudGF0aW9uID09PSBcInZlcnRpY2FsXCIgPyB1bmRlZmluZWQgOiAxO1xuICAgIGNhc2UgXCJBcnJvd1VwXCI6XG4gICAgICByZXR1cm4gb3JpZW50YXRpb24gPT09IFwiaG9yaXpvbnRhbFwiID8gdW5kZWZpbmVkIDogLTE7XG4gICAgY2FzZSBcIkFycm93TGVmdFwiOlxuICAgICAgcmV0dXJuIG9yaWVudGF0aW9uID09PSBcInZlcnRpY2FsXCIgPyB1bmRlZmluZWQgOiAtMTtcbiAgICBjYXNlIFwiSG9tZVwiOlxuICAgICAgcmV0dXJuIFwiZmlyc3RcIiBhcyBjb25zdDtcbiAgICBjYXNlIFwiRW5kXCI6XG4gICAgICByZXR1cm4gXCJsYXN0XCIgYXMgY29uc3Q7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn07XG4iLCAiaW1wb3J0IHsgcnVuSW5BY3Rpb24sIHR5cGUgSU9ic2VydmFibGVWYWx1ZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgdHlwZSB7IEFueUZvY3VzYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IE11dGFibGVSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgRm9jdXNhYmxlRXZlbnQgfSBmcm9tIFwiLi9fc2hhcmVkL2ZvY3VzYWJsZS1ldmVudFwiO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlRm9jdXNGb3IgPVxuICA8Rm9jdXNhYmxlSXRlbT4oXG4gICAgc3RhdGU6IElPYnNlcnZhYmxlVmFsdWU8Rm9jdXNhYmxlSXRlbSB8IHVuZGVmaW5lZD4sXG4gICAgZm9jdXNhYmxlSXRlbTogRm9jdXNhYmxlSXRlbSxcbiAgICBmb2N1c2FibGVDb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PEZvY3VzYWJsZUl0ZW0+LFxuICAgIGZvY3VzZWRSZWY6IE11dGFibGVSZWZPYmplY3Q8Ym9vbGVhbj4sXG4gICkgPT5cbiAgPFQ+KGV2ZW50OiBGb2N1c2FibGVFdmVudDxUPikgPT4ge1xuICAgIGNvbnN0IG5hdGl2ZUV2ZW50ID0gZXZlbnQubmF0aXZlRXZlbnQ7XG5cbiAgICBuYXRpdmVFdmVudC5hbHJlYWR5UHJvY2Vzc2VkRm9jdXNhYmxlQ29udGV4dHMgPz89IG5ldyBTZXQoKTtcblxuICAgIGlmIChuYXRpdmVFdmVudC5hbHJlYWR5UHJvY2Vzc2VkRm9jdXNhYmxlQ29udGV4dHMuaGFzKGZvY3VzYWJsZUNvbnRleHQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbmF0aXZlRXZlbnQuYWxyZWFkeVByb2Nlc3NlZEZvY3VzYWJsZUNvbnRleHRzLmFkZChmb2N1c2FibGVDb250ZXh0KTtcblxuICAgIGZvY3VzZWRSZWYuY3VycmVudCA9IHRydWU7XG5cbiAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICBzdGF0ZS5zZXQoZm9jdXNhYmxlSXRlbSk7XG4gICAgfSk7XG4gIH07XG4iLCAiaW1wb3J0IHR5cGUgeyBJT2JzZXJ2YWJsZVZhbHVlIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7IHJ1bkluQWN0aW9uIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB0eXBlIHsgQW55Rm9jdXNhYmxlQ29udGV4dCB9IGZyb20gXCIuLi9nZXQtZm9jdXNhYmxlLWNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgRm9jdXNhYmxlRXZlbnQgfSBmcm9tIFwiLi9fc2hhcmVkL2ZvY3VzYWJsZS1ldmVudFwiO1xuaW1wb3J0IHR5cGUgeyBNdXRhYmxlUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVCbHVyRm9yID1cbiAgPFQ+KFxuICAgIGZvY3VzYWJsZUNvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8VD4sXG4gICAgc3RhdGU6IElPYnNlcnZhYmxlVmFsdWU8VCB8IHVuZGVmaW5lZD4sXG4gICAgZm9jdXNlZFJlZjogTXV0YWJsZVJlZk9iamVjdDxib29sZWFuPixcbiAgKSA9PlxuICA8VD4oZXZlbnQ6IEZvY3VzYWJsZUV2ZW50PFQ+KSA9PiB7XG4gICAgY29uc3QgbmF0aXZlRXZlbnQgPSBldmVudC5uYXRpdmVFdmVudDtcblxuICAgIGlmIChuYXRpdmVFdmVudC5hbHJlYWR5UHJvY2Vzc2VkRm9jdXNhYmxlQ29udGV4dHM/Lmhhcyhmb2N1c2FibGVDb250ZXh0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvY3VzZWRSZWYuY3VycmVudCA9IGZhbHNlO1xuXG4gICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgc3RhdGUuc2V0KHVuZGVmaW5lZCk7XG4gICAgfSk7XG4gIH07XG4iLCAiaW1wb3J0IHR5cGUgeyBNdXRhYmxlUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGZvY3VzYWJsZUh0bWxFbGVtZW50UmVmU2V0SW5qZWN0YWJsZSB9IGZyb20gXCIuLi9fc2hhcmVkL2ZvY3VzYWJsZS1odG1sLWVsZW1lbnQtcmVmLXNldC5pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB0eXBlIHsgQW55Rm9jdXNhYmxlQ29udGV4dCB9IGZyb20gXCIuLi9nZXQtZm9jdXNhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVByb2dyYW1tYXRpY0ZvY3VzaW5nID0gPFQ+KFxuICBmb2N1c2FibGVDb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PFQ+LFxuICBmb2N1c2FibGVJdGVtOiBULFxuICBodG1sRWxlbWVudFJlZjogTXV0YWJsZVJlZk9iamVjdDxIVE1MRWxlbWVudCB8IHVuZGVmaW5lZD4sXG4pID0+IHtcbiAgY29uc3QgaHRtbEVsZW1lbnRzQnlGb2N1c2FibGVNYXAgPSB1c2VTeW5jSW5qZWN0KFxuICAgIGZvY3VzYWJsZUh0bWxFbGVtZW50UmVmU2V0SW5qZWN0YWJsZSxcbiAgICBmb2N1c2FibGVDb250ZXh0LFxuICAgIGZvY3VzYWJsZUl0ZW0sXG4gICk7XG5cbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29ycmVjdG5lc3MvdXNlRXhoYXVzdGl2ZURlcGVuZGVuY2llczogcmVtb3ZlIHdoZW4gcG9zc2libGVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBodG1sRWxlbWVudHNCeUZvY3VzYWJsZU1hcC5hZGQoaHRtbEVsZW1lbnRSZWYpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGh0bWxFbGVtZW50c0J5Rm9jdXNhYmxlTWFwLmRlbGV0ZShodG1sRWxlbWVudFJlZik7XG4gICAgfTtcbiAgfSwgW2h0bWxFbGVtZW50c0J5Rm9jdXNhYmxlTWFwLCBmb2N1c2FibGVJdGVtLCBodG1sRWxlbWVudFJlZl0pO1xufTtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgZmxleFBsdWdpbiB9IGZyb20gXCIuLi9mbGV4L2ZsZXhcIjtcbmltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcbmltcG9ydCB0eXBlIHsgb3ZlcmZsb3dQbHVnaW4gfSBmcm9tIFwiLi4vb3ZlcmZsb3cvb3ZlcmZsb3dcIjtcblxuZXhwb3J0IHR5cGUgQXJlYVBsdWdpblByb3BzID0geyAkYXJlYT86IGJvb2xlYW4gfTtcblxuZXhwb3J0IGNvbnN0IGFyZWFQbHVnaW4gPSBnZXRQbHVnaW48QXJlYVBsdWdpblByb3BzLCBbdHlwZW9mIGZsZXhQbHVnaW4sIHR5cGVvZiBvdmVyZmxvd1BsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCBleHBsaWNpdEZsZXhQcm9wcyA9IGlzT2JqZWN0KHByb3BzLiRmbGV4KSA/IHByb3BzLiRmbGV4IDoge307XG5cbiAgcmV0dXJuIHtcbiAgICAkYXJlYTogdW5kZWZpbmVkLFxuXG4gICAgJGZsZXg6IHByb3BzLiRhcmVhXG4gICAgICA/IHtcbiAgICAgICAgICB2ZXJ0aWNhbEFsaWduOiBcInN0cmV0Y2hcIixcbiAgICAgICAgICBob3Jpem9udGFsQWxpZ246IFwic3RyZXRjaFwiLFxuICAgICAgICAgIC4uLmV4cGxpY2l0RmxleFByb3BzLFxuICAgICAgICB9XG4gICAgICA6IHByb3BzLiRmbGV4LFxuXG4gICAgJG92ZXJmbG93OiBwcm9wcy4kb3ZlcmZsb3cgPz8gKHByb3BzLiRhcmVhID8gXCJoaWRkZW5cIiA6IHVuZGVmaW5lZCksXG4gIH07XG59KTtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgZmxleENoaWxkUGx1Z2luIH0gZnJvbSBcIi4uL2ZsZXgtY2hpbGQvZmxleC1jaGlsZFwiO1xuXG5leHBvcnQgdHlwZSBBcmVhQ29udGVudFBsdWdpblByb3BzID0geyAkYXJlYUNvbnRlbnQ/OiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBhcmVhQ29udGVudFBsdWdpbiA9IGdldFBsdWdpbjxBcmVhQ29udGVudFBsdWdpblByb3BzLCBbdHlwZW9mIGZsZXhDaGlsZFBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGFyZWFDb250ZW50OiB1bmRlZmluZWQsXG4gICRmbGV4Q2hpbGQ6IHByb3BzLiRhcmVhQ29udGVudCA/IHRydWUgOiBwcm9wcy4kZmxleENoaWxkLFxufSkpO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcbmltcG9ydCB0eXBlIHsgd2lkdGhQbHVnaW4gfSBmcm9tIFwiLi4vd2lkdGgvd2lkdGhcIjtcbmltcG9ydCB0eXBlIHsgaGVpZ2h0UGx1Z2luIH0gZnJvbSBcIi4uL2hlaWdodC9oZWlnaHRcIjtcblxuZXhwb3J0IHR5cGUgJFNpemVQcm9wcyA9IHtcbiAgc2l6ZT86IFRTaGlydFNpemUgfCBcImZ1bGxcIiB8IFwiYXV0b1wiO1xuICBtaW4/OiBUU2hpcnRTaXplIHwgXCJmdWxsXCI7XG4gIG1heD86IFRTaGlydFNpemUgfCBcImZ1bGxcIjtcbn07XG5cbmV4cG9ydCB0eXBlIFNpemVQbHVnaW5Qcm9wcyA9IHsgJHNpemU/OiBUU2hpcnRTaXplIHwgXCJmdWxsXCIgfCAkU2l6ZVByb3BzIH07XG5cbmV4cG9ydCBjb25zdCBzaXplUGx1Z2luID0gZ2V0UGx1Z2luPFNpemVQbHVnaW5Qcm9wcywgW3R5cGVvZiB3aWR0aFBsdWdpbiwgdHlwZW9mIGhlaWdodFBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRzaXplIH0gPSBwcm9wcztcblxuICBpZiAoISRzaXplKSB7XG4gICAgcmV0dXJuIHsgJHNpemU6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgY29uc3QgeyBzaXplLCBtaW4sIG1heCB9ID0gdHlwZW9mICRzaXplID09PSBcInN0cmluZ1wiID8geyBzaXplOiAkc2l6ZSB9IDogJHNpemU7XG5cbiAgcmV0dXJuIHtcbiAgICAkaGVpZ2h0OiB7IGhlaWdodDogc2l6ZSwgbWluLCBtYXggfSxcbiAgICAkd2lkdGg6IHsgd2lkdGg6IHNpemUsIG1pbiwgbWF4IH0sXG4gICAgJHNpemU6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2N1cnNvci9jdXJzb3IubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJhbGlhc1wiOiBcImN1cnNvci1tb2R1bGVfX2FsaWFzX19fMGl5SDJcIixcbiAgXCJhbGwtc2Nyb2xsXCI6IFwiY3Vyc29yLW1vZHVsZV9fYWxsLXNjcm9sbF9fX1U5aG84XCIsXG4gIFwiY2VsbFwiOiBcImN1cnNvci1tb2R1bGVfX2NlbGxfX181V08yRlwiLFxuICBcImNvbHVtbi1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19jb2x1bW4tcmVzaXplX19fcExxM3NcIixcbiAgXCJjb250ZXh0LW1lbnVcIjogXCJjdXJzb3ItbW9kdWxlX19jb250ZXh0LW1lbnVfX19JcXA1NlwiLFxuICBcImNvcHlcIjogXCJjdXJzb3ItbW9kdWxlX19jb3B5X19fWFU3eUxcIixcbiAgXCJjcm9zc2hhaXJcIjogXCJjdXJzb3ItbW9kdWxlX19jcm9zc2hhaXJfX18xOGF5a1wiLFxuICBcImRlZmF1bHRcIjogXCJjdXJzb3ItbW9kdWxlX19kZWZhdWx0X19fdkQtOFRcIixcbiAgXCJlYXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX2Vhc3QtcmVzaXplX19fUzRIRjVcIixcbiAgXCJlYXN0LWFuZC13ZXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX2Vhc3QtYW5kLXdlc3QtcmVzaXplX19fdS1KZi1cIixcbiAgXCJncmFiXCI6IFwiY3Vyc29yLW1vZHVsZV9fZ3JhYl9fX1V2QUY3XCIsXG4gIFwiZ3JhYmJpbmdcIjogXCJjdXJzb3ItbW9kdWxlX19ncmFiYmluZ19fX01NaXZYXCIsXG4gIFwiaGVscFwiOiBcImN1cnNvci1tb2R1bGVfX2hlbHBfX19pQjhHNFwiLFxuICBcIm1vdmVcIjogXCJjdXJzb3ItbW9kdWxlX19tb3ZlX19feXBkLVBcIixcbiAgXCJub3J0aC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19ub3J0aC1yZXNpemVfX183TmtoVlwiLFxuICBcIm5vcnRoZWFzdC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19ub3J0aGVhc3QtcmVzaXplX19fTTRNSXpcIixcbiAgXCJub3J0aGVhc3QtYW5kLXNvdXRod2VzdC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19ub3J0aGVhc3QtYW5kLXNvdXRod2VzdC1yZXNpemVfX196LTFkcVwiLFxuICBcIm5vLWRyb3BcIjogXCJjdXJzb3ItbW9kdWxlX19uby1kcm9wX19fV1QxdDlcIixcbiAgXCJub25lXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9uZV9fX0VpOXN6XCIsXG4gIFwibm90LWFsbG93ZWRcIjogXCJjdXJzb3ItbW9kdWxlX19ub3QtYWxsb3dlZF9fXzl1Rkx1XCIsXG4gIFwibm9ydGgtYW5kLXNvdXRoLXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX25vcnRoLWFuZC1zb3V0aC1yZXNpemVfX19RRzVBTlwiLFxuICBcIm5vcnRod2VzdC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19ub3J0aHdlc3QtcmVzaXplX19fY2tDb2hcIixcbiAgXCJub3J0aHdlc3QtYW5kLXNvdXRoZWFzdC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19ub3J0aHdlc3QtYW5kLXNvdXRoZWFzdC1yZXNpemVfX19uajRWU1wiLFxuICBcInBvaW50ZXJcIjogXCJjdXJzb3ItbW9kdWxlX19wb2ludGVyX19fRmlkZktcIixcbiAgXCJwcm9ncmVzc1wiOiBcImN1cnNvci1tb2R1bGVfX3Byb2dyZXNzX19fSWdFeHlcIixcbiAgXCJyb3ctcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fcm93LXJlc2l6ZV9fXzBTc2U2XCIsXG4gIFwic291dGgtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fc291dGgtcmVzaXplX19fNEZlblNcIixcbiAgXCJzb3V0aGVhc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fc291dGhlYXN0LXJlc2l6ZV9fX3c4aEdxXCIsXG4gIFwic291dGh3ZXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX3NvdXRod2VzdC1yZXNpemVfX182VXY0R1wiLFxuICBcInRleHRcIjogXCJjdXJzb3ItbW9kdWxlX190ZXh0X19fdHEtQXdcIixcbiAgXCJ2ZXJ0aWNhbC10ZXh0XCI6IFwiY3Vyc29yLW1vZHVsZV9fdmVydGljYWwtdGV4dF9fXzNPYXpFXCIsXG4gIFwid2VzdC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX193ZXN0LXJlc2l6ZV9fX2JyVzU2XCIsXG4gIFwid2FpdFwiOiBcImN1cnNvci1tb2R1bGVfX3dhaXRfX19RdFhsR1wiLFxuICBcInpvb20taW5cIjogXCJjdXJzb3ItbW9kdWxlX196b29tLWluX19fekVESFFcIixcbiAgXCJ6b29tLW91dFwiOiBcImN1cnNvci1tb2R1bGVfX3pvb20tb3V0X19fcWJxbzZcIlxufTsiLCAiaW1wb3J0IHJhd1N0eWxlcyBmcm9tIFwiLi9jdXJzb3IubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBzYW5pdGl6ZVNjc3NNb2R1bGVzIH0gZnJvbSBcIkBrOHNsZW5zL3Rlc3QtdXRpbHNcIjtcblxuY29uc3Qgc3R5bGVzID0gc2FuaXRpemVTY3NzTW9kdWxlcyhyYXdTdHlsZXMpO1xuXG5leHBvcnQgdHlwZSAkQ3Vyc29yUHJvcHMgPVxuICB8IFwiYWxpYXNcIlxuICB8IFwiYWxsLXNjcm9sbFwiXG4gIHwgXCJjZWxsXCJcbiAgfCBcImNvbHVtbi1yZXNpemVcIlxuICB8IFwiY29udGV4dC1tZW51XCJcbiAgfCBcImNvcHlcIlxuICB8IFwiY3Jvc3NoYWlyXCJcbiAgfCBcImRlZmF1bHRcIlxuICB8IFwiZWFzdC1yZXNpemVcIlxuICB8IFwiZWFzdC1hbmQtd2VzdC1yZXNpemVcIlxuICB8IFwiZ3JhYlwiXG4gIHwgXCJncmFiYmluZ1wiXG4gIHwgXCJoZWxwXCJcbiAgfCBcIm1vdmVcIlxuICB8IFwibm9ydGgtcmVzaXplXCJcbiAgfCBcIm5vcnRoZWFzdC1yZXNpemVcIlxuICB8IFwibm9ydGhlYXN0LWFuZC1zb3V0aHdlc3QtcmVzaXplXCJcbiAgfCBcIm5vLWRyb3BcIlxuICB8IFwibm9uZVwiXG4gIHwgXCJub3QtYWxsb3dlZFwiXG4gIHwgXCJub3J0aC1hbmQtc291dGgtcmVzaXplXCJcbiAgfCBcIm5vcnRod2VzdC1yZXNpemVcIlxuICB8IFwibm9ydGh3ZXN0LWFuZC1zb3V0aGVhc3QtcmVzaXplXCJcbiAgfCBcInBvaW50ZXJcIlxuICB8IFwicHJvZ3Jlc3NcIlxuICB8IFwicm93LXJlc2l6ZVwiXG4gIHwgXCJzb3V0aC1yZXNpemVcIlxuICB8IFwic291dGhlYXN0LXJlc2l6ZVwiXG4gIHwgXCJzb3V0aHdlc3QtcmVzaXplXCJcbiAgfCBcInRleHRcIlxuICB8IFwidmVydGljYWwtdGV4dFwiXG4gIHwgXCJ3ZXN0LXJlc2l6ZVwiXG4gIHwgXCJ3YWl0XCJcbiAgfCBcInpvb20taW5cIlxuICB8IFwiem9vbS1vdXRcIjtcblxuZXhwb3J0IHR5cGUgQ3Vyc29yUGx1Z2luUHJvcHMgPSB7XG4gICRjdXJzb3I/OiAkQ3Vyc29yUHJvcHM7XG59O1xuXG5leHBvcnQgY29uc3QgY3Vyc29yUGx1Z2luID0gZ2V0UGx1Z2luPEN1cnNvclBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRjdXJzb3IsICRjbGFzc05hbWUgfSA9IHByb3BzO1xuXG4gIGlmICghJGN1cnNvcikge1xuICAgIHJldHVybiB7ICRjdXJzb3I6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkY3Vyc29yOiB1bmRlZmluZWQsXG4gICAgJGNsYXNzTmFtZTogWyRjbGFzc05hbWUsIHN0eWxlc1skY3Vyc29yXV0sXG4gICAgXCJkYXRhLWN1cnNvci10ZXN0XCI6ICRjdXJzb3IsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB7IG9uTWlkZGxlQ2xpY2ssIG9uVHJpZ2dlciB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgZW5hYmxlZFBsdWdpbiB9IGZyb20gXCIuLi9lbmFibGVkL2VuYWJsZWRcIjtcbmltcG9ydCB0eXBlIHsgJEN1cnNvclByb3BzLCBjdXJzb3JQbHVnaW4gfSBmcm9tIFwiLi4vY3Vyc29yL2N1cnNvclwiO1xuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVN5bmNJbmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvdXNlLWluamVjdFwiO1xuaW1wb3J0IHsgb25SaWdodFRyaWdnZXJJbmplY3RhYmxlIH0gZnJvbSBcIi4vb24tcmlnaHQtdHJpZ2dlci5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIFBvc2l0aW9uMmQgPSB7XG4gIHJlYWRvbmx5IHg6IG51bWJlcjtcbiAgcmVhZG9ubHkgeTogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgQ2xpY2tIYW5kbGVyRGV0YWlscyA9IHtcbiAgcmVhZG9ubHkgY3Vyc29yOiBQb3NpdGlvbjJkO1xuICByZWFkb25seSBjYXVzZTogXCJjbGlja1wiIHwgXCJrZXlib2FyZFwiO1xufTtcblxuZXhwb3J0IHR5cGUgQ2xpY2tIYW5kbGVyID0gKChkZXRhaWxzOiBDbGlja0hhbmRsZXJEZXRhaWxzKSA9PiB2b2lkKSB8ICgoZGV0YWlsczogQ2xpY2tIYW5kbGVyRGV0YWlscykgPT4gUHJvbWlzZTx2b2lkPik7XG5cbmV4cG9ydCB0eXBlIENsaWNrUGx1Z2luUHJvcHMgPSB7XG4gICRvbkNsaWNrPzogQ2xpY2tIYW5kbGVyO1xuICAkb25Pbmx5TW91c2VDbGljaz86IENsaWNrSGFuZGxlcjtcbiAgJG9uRG91YmxlQ2xpY2s/OiBDbGlja0hhbmRsZXI7XG4gICRvblJpZ2h0Q2xpY2s/OiBDbGlja0hhbmRsZXI7XG4gICRvbk1pZGRsZUNsaWNrPzogQ2xpY2tIYW5kbGVyO1xuICB0YWJJbmRleD86IG51bWJlcjtcbn07XG5cbmNvbnN0IGNsaWNrVXNlZCA9IFN5bWJvbCgpO1xuXG5leHBvcnQgY29uc3QgY2xpY2thYmxlUGx1Z2luID0gZ2V0UGx1Z2luPENsaWNrUGx1Z2luUHJvcHMsIFt0eXBlb2YgZW5hYmxlZFBsdWdpbiwgdHlwZW9mIGN1cnNvclBsdWdpbl0+KChwcm9wcykgPT4ge1xuICAvLyB0eXBpbmcgcmVxdWlyZWQgZHVlIHRvIGxhY2sgb2YgZ29vZCB0eXBpbmcgb2YgcHJlLXByb2Nlc3NlZCBkZXBlbmRlbnQgcGx1Z2luc1xuICBjb25zdCB7XG4gICAgJGN1cnNvcixcbiAgICAkb25DbGljayxcbiAgICAkb25Pbmx5TW91c2VDbGljayxcbiAgICAkb25NaWRkbGVDbGljayxcbiAgICAkb25SaWdodENsaWNrLFxuICAgICRvbkRvdWJsZUNsaWNrLFxuICAgIG9uRG91YmxlQ2xpY2ssXG4gICAgb25BdXhDbGljayxcbiAgICBvbkNsaWNrLFxuICAgIG9uQ29udGV4dE1lbnUsXG4gICAgb25LZXlEb3duLFxuICAgIHRhYkluZGV4LFxuICAgIGRpc2FibGVkLFxuICAgIHJvbGUsXG4gIH0gPSBwcm9wcyBhcyB0eXBlb2YgcHJvcHMgJiBSZWFjdC5IVE1MUHJvcHM8SFRNTEVsZW1lbnQ+O1xuICBjb25zdCBbcGVuZGluZywgc2V0UGVuZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IG9uUmlnaHRUcmlnZ2VyID0gdXNlU3luY0luamVjdChvblJpZ2h0VHJpZ2dlckluamVjdGFibGUpO1xuICBjb25zdCBvbk1vdXNlQ2xpY2sgPSAkb25DbGljayA/PyAkb25Pbmx5TW91c2VDbGljaztcblxuICBpZiAoJG9uQ2xpY2sgJiYgJG9uT25seU1vdXNlQ2xpY2spIHtcbiAgICBjb25zb2xlLndhcm4oXCJDYW5ub3QgaGF2ZSBib3RoICRvbkNsaWNrIGFuZCAkb25Nb3VzZUNsaWNrT25seSBvbiB0aGUgc2FtZSBjb21wb25lbnRcIik7XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRvbkNsaWNrOiB1bmRlZmluZWQsXG4gICAgJG9uTWlkZGxlQ2xpY2s6IHVuZGVmaW5lZCxcbiAgICAkb25SaWdodENsaWNrOiB1bmRlZmluZWQsXG4gICAgJG9uRG91YmxlQ2xpY2s6IHVuZGVmaW5lZCxcbiAgICAkb25Pbmx5TW91c2VDbGljazogdW5kZWZpbmVkLFxuICAgIHRhYkluZGV4OiB0YWJJbmRleCA/PyAob25Nb3VzZUNsaWNrIHx8ICRvblJpZ2h0Q2xpY2sgfHwgJG9uRG91YmxlQ2xpY2sgPyAwIDogdW5kZWZpbmVkKSxcbiAgICAkY3Vyc29yOiBnZXRDdXJzb3JQcm9wcygkY3Vyc29yLCBkaXNhYmxlZCwgcGVuZGluZywgb25Nb3VzZUNsaWNrLCAkb25SaWdodENsaWNrKSxcbiAgICByb2xlOiByb2xlID8/IChvbk1vdXNlQ2xpY2sgPyBcImJ1dHRvblwiIDogcm9sZSksXG4gICAgb25DbGljazogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgb25DbGljaz8uKGV2ZW50KTtcblxuICAgICAgaWYgKCFkaXNhYmxlZCAmJiBvbk1vdXNlQ2xpY2sgJiYgIShjbGlja1VzZWQgaW4gZXZlbnQpKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oZXZlbnQsIHsgW2NsaWNrVXNlZF06IHRydWUgfSk7XG5cbiAgICAgICAgY29uc3QgbWF5YmVQcm9taXNlID0gb25Nb3VzZUNsaWNrKHRvRGV0YWlscyhldmVudCkpO1xuXG4gICAgICAgIGlmIChpc1Byb21pc2VMaWtlKG1heWJlUHJvbWlzZSkpIHtcbiAgICAgICAgICBzZXRQZW5kaW5nKHRydWUpO1xuICAgICAgICAgIG1heWJlUHJvbWlzZS50aGVuKCgpID0+IHNldFBlbmRpbmcoZmFsc2UpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgb25Eb3VibGVDbGljazogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgb25Eb3VibGVDbGljaz8uKGV2ZW50KTtcbiAgICAgICRvbkRvdWJsZUNsaWNrPy4odG9EZXRhaWxzKGV2ZW50KSk7XG4gICAgfSxcbiAgICBvbkNvbnRleHRNZW51OiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICBvbkNvbnRleHRNZW51Py4oZXZlbnQpO1xuICAgICAgJG9uUmlnaHRDbGljaz8uKHRvRGV0YWlscyhldmVudCkpO1xuICAgIH0sXG4gICAgb25BdXhDbGljazogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgb25BdXhDbGljaz8uKGV2ZW50KTtcbiAgICAgIG9uTWlkZGxlQ2xpY2soZXZlbnQsICgpID0+ICRvbk1pZGRsZUNsaWNrPy4odG9EZXRhaWxzKGV2ZW50KSkpO1xuICAgIH0sXG4gICAgb25LZXlEb3duOiAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICBvbktleURvd24/LihldmVudCk7XG5cbiAgICAgIGlmICgkb25DbGljaykge1xuICAgICAgICBvblRyaWdnZXIoZXZlbnQsICgpID0+IHtcbiAgICAgICAgICBpZiAoIWRpc2FibGVkICYmICEoY2xpY2tVc2VkIGluIGV2ZW50KSkge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihldmVudCwgeyBbY2xpY2tVc2VkXTogdHJ1ZSB9KTtcblxuICAgICAgICAgICAgY29uc3QgbWF5YmVQcm9taXNlID0gJG9uQ2xpY2sodG9EZXRhaWxzKGV2ZW50KSk7XG5cbiAgICAgICAgICAgIGlmIChpc1Byb21pc2VMaWtlKG1heWJlUHJvbWlzZSkpIHtcbiAgICAgICAgICAgICAgc2V0UGVuZGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgbWF5YmVQcm9taXNlLnRoZW4oKCkgPT4gc2V0UGVuZGluZyhmYWxzZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICgkb25SaWdodENsaWNrKSB7XG4gICAgICAgIG9uUmlnaHRUcmlnZ2VyKGV2ZW50LCAoKSA9PiB7XG4gICAgICAgICAgJG9uUmlnaHRDbGljayh0b0RldGFpbHMoZXZlbnQpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn0pO1xuXG5jb25zdCB0b01pZGRsZSA9IChyZWN0OiBET01SZWN0KSA9PiAoe1xuICB4OiByZWN0LmxlZnQgKyByZWN0LndpZHRoIC8gMixcbiAgeTogcmVjdC50b3AgKyByZWN0LmhlaWdodCAvIDIsXG59KTtcblxuY29uc3QgdG9EZXRhaWxzID0gKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PiB8IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTEVsZW1lbnQ+KTogQ2xpY2tIYW5kbGVyRGV0YWlscyA9PiB7XG4gIGNvbnN0IGN1cnNvciA9XG4gICAgXCJjbGllbnRYXCIgaW4gZXZlbnRcbiAgICAgID8ge1xuICAgICAgICAgIHg6IGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgeTogZXZlbnQuY2xpZW50WSxcbiAgICAgICAgfVxuICAgICAgOiB0b01pZGRsZShldmVudC5jdXJyZW50VGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcblxuICByZXR1cm4ge1xuICAgIGN1cnNvcixcbiAgICBjYXVzZTogZXZlbnQuZGV0YWlsID8gXCJjbGlja1wiIDogXCJrZXlib2FyZFwiLFxuICB9O1xufTtcblxuY29uc3QgaXNQcm9taXNlTGlrZSA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFByb21pc2U8dW5rbm93bj4gPT5cbiAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmICEhdmFsdWUgJiYgXCJ0aGVuXCIgaW4gdmFsdWU7XG5cbmNvbnN0IGdldEN1cnNvclByb3BzID0gKFxuICAkY3Vyc29yOiAkQ3Vyc29yUHJvcHMgfCB1bmRlZmluZWQsXG4gIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuICBwZW5kaW5nOiBib29sZWFuLFxuICAkb25DbGljazogRnVuY3Rpb24gfCB1bmRlZmluZWQsXG4gICRvblJpZ2h0Q2xpY2s6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkLFxuKTogJEN1cnNvclByb3BzIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKCRjdXJzb3IpIHtcbiAgICByZXR1cm4gJGN1cnNvcjtcbiAgfVxuXG4gIGlmIChwZW5kaW5nKSB7XG4gICAgcmV0dXJuIFwicHJvZ3Jlc3NcIjtcbiAgfVxuXG4gIGlmICghJG9uQ2xpY2sgJiYgISRvblJpZ2h0Q2xpY2spIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKGRpc2FibGVkKSB7XG4gICAgcmV0dXJuIFwibm90LWFsbG93ZWRcIjtcbiAgfVxuXG4gIGlmICgkb25DbGljaykge1xuICAgIHJldHVybiBcInBvaW50ZXJcIjtcbiAgfVxuXG4gIHJldHVybiBcImNvbnRleHQtbWVudVwiO1xufTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9kaXNwbGF5LWNvbnRlbnRzL2Rpc3BsYXktY29udGVudHMubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJjb250ZW50c1wiOiBcImRpc3BsYXktY29udGVudHMtbW9kdWxlX19jb250ZW50c19fX21SZVhLXCJcbn07IiwgImltcG9ydCByYXdTdHlsZXMgZnJvbSBcIi4vZGlzcGxheS1jb250ZW50cy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IHNhbml0aXplU2Nzc01vZHVsZXMgfSBmcm9tIFwiQGs4c2xlbnMvdGVzdC11dGlsc1wiO1xuXG5jb25zdCBzdHlsZXMgPSBzYW5pdGl6ZVNjc3NNb2R1bGVzKHJhd1N0eWxlcyk7XG5cbmV4cG9ydCB0eXBlIERpc3BsYXlDb250ZW50c1BsdWdpblByb3BzID0ge1xuICAkZGlzcGxheUNvbnRlbnRzPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBkaXNwbGF5Q29udGVudHNQbHVnaW4gPSBnZXRQbHVnaW48RGlzcGxheUNvbnRlbnRzUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGRpc3BsYXlDb250ZW50cywgJGNsYXNzTmFtZSB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkZGlzcGxheUNvbnRlbnRzKSB7XG4gICAgcmV0dXJuIHsgJGRpc3BsYXlDb250ZW50czogdW5kZWZpbmVkIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRkaXNwbGF5Q29udGVudHM6IHVuZGVmaW5lZCxcbiAgICAkY2xhc3NOYW1lOiBbJGNsYXNzTmFtZSwgc3R5bGVzLmNvbnRlbnRzXSxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3RleHQtYWxpZ24vdGV4dC1hbGlnbi5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcInRleHQtYWxpZ24tLWNlbnRlclwiOiBcInRleHQtYWxpZ24tbW9kdWxlX190ZXh0LWFsaWduLS1jZW50ZXJfX19iRHJSMlwiLFxuICBcInRleHQtYWxpZ24tLXJpZ2h0XCI6IFwidGV4dC1hbGlnbi1tb2R1bGVfX3RleHQtYWxpZ24tLXJpZ2h0X19fSlZSTVBcIixcbiAgXCJ0ZXh0LWFsaWduLS1sZWZ0XCI6IFwidGV4dC1hbGlnbi1tb2R1bGVfX3RleHQtYWxpZ24tLWxlZnRfX19MTExrNlwiXG59OyIsICJpbXBvcnQgc3R5bGVzIGZyb20gXCIuL3RleHQtYWxpZ24ubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5cbmV4cG9ydCB0eXBlIFRleHRBbGlnblBsdWdpblByb3BzID0geyAkdGV4dEFsaWduPzogXCJsZWZ0XCIgfCBcImNlbnRlclwiIHwgXCJyaWdodFwiIH07XG5cbmV4cG9ydCBjb25zdCB0ZXh0QWxpZ25QbHVnaW4gPSBnZXRQbHVnaW48VGV4dEFsaWduUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJHRleHRBbGlnbiB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkdGV4dEFsaWduKSB7XG4gICAgcmV0dXJuIHsgJHRleHRBbGlnbjogdW5kZWZpbmVkIH07XG4gIH1cblxuICByZXR1cm4geyAkY2xhc3NOYW1lOiBbc3R5bGVzW2B0ZXh0LWFsaWduLS0keyR0ZXh0QWxpZ259YF0sIHByb3BzLiRjbGFzc05hbWVdLCAkdGV4dEFsaWduOiB1bmRlZmluZWQgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2Jsb2NrL2Jsb2NrLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiYmxvY2tcIjogXCJibG9jay1tb2R1bGVfX2Jsb2NrX19fWTR0empcIixcbiAgXCJibG9jay0taW5saW5lXCI6IFwiYmxvY2stbW9kdWxlX19ibG9jay0taW5saW5lX19fLTFZQ2dcIlxufTsiLCAiaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9ibG9jay5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcblxuZXhwb3J0IHR5cGUgQmxvY2tQbHVnaW5Qcm9wcyA9IHtcbiAgJGJsb2NrPzogYm9vbGVhbiB8IFwiaW5saW5lXCI7XG59O1xuXG5leHBvcnQgY29uc3QgYmxvY2tQbHVnaW4gPSBnZXRQbHVnaW48QmxvY2tQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkYmxvY2ssICRjbGFzc05hbWUgfSA9IHByb3BzO1xuXG4gIGlmICghJGJsb2NrKSB7XG4gICAgcmV0dXJuIHsgJGJsb2NrOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJGJsb2NrOiB1bmRlZmluZWQsXG4gICAgJGNsYXNzTmFtZTogWyRjbGFzc05hbWUsICRibG9jayA9PT0gXCJpbmxpbmVcIiA/IHN0eWxlc1tcImJsb2NrLS1pbmxpbmVcIl0gOiBzdHlsZXMuYmxvY2tdLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB0eXBlIHsgQ29sb3IgfSBmcm9tIFwiLi4vX3NoYXJlZC9jb2xvcnNcIjtcbmltcG9ydCB0eXBlIHsgUmFuZ2UgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuaW1wb3J0IG91dGxpbmVTdHlsZXMgZnJvbSBcIi4vb3V0bGluZS5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgc2FuaXRpemVTY3NzTW9kdWxlcyB9IGZyb20gXCJAazhzbGVucy90ZXN0LXV0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IElDbGFzc05hbWUgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuXG5jb25zdCBzdHlsZXMgPSBzYW5pdGl6ZVNjc3NNb2R1bGVzKG91dGxpbmVTdHlsZXMpO1xuXG5leHBvcnQgdHlwZSBPdXRsaW5lV2lkdGggPSBcInplcm9cIiB8IFwieHhzXCIgfCBcInhzXCIgfCBcInNcIiB8IFwibVwiIHwgXCJsXCIgfCBcInhsXCIgfCBcInh4bFwiIHwgYCR7UmFuZ2U8MywgNT59eGxgO1xuXG5leHBvcnQgdHlwZSAkT3V0bGluZVByb3BzID0geyBjb2xvcj86IENvbG9yOyB3aWR0aD86IE91dGxpbmVXaWR0aCB9O1xuXG5leHBvcnQgdHlwZSBPdXRsaW5lUGx1Z2luUHJvcHMgPSB7ICRvdXRsaW5lPzogeyBmb2N1c1Zpc2libGU/OiAkT3V0bGluZVByb3BzIH0gfTtcblxuZXhwb3J0IGNvbnN0IG91dGxpbmVQbHVnaW4gPSBnZXRQbHVnaW48T3V0bGluZVBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtwcm9wcy4kY2xhc3NOYW1lLCBnZXRGb2N1c1Zpc2libGVPdXRsaW5lU3R5bGVzKHByb3BzLiRvdXRsaW5lPy5mb2N1c1Zpc2libGUpXSxcbiAgICAkb3V0bGluZTogdW5kZWZpbmVkLFxuICB9O1xufSk7XG5cbmNvbnN0IGdldEZvY3VzVmlzaWJsZU91dGxpbmVTdHlsZXMgPSAocHJvcHM6ICRPdXRsaW5lUHJvcHMgfCB1bmRlZmluZWQpOiBJQ2xhc3NOYW1lID0+IHtcbiAgaWYgKCFwcm9wcykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCB7IGNvbG9yLCB3aWR0aCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIFtcbiAgICBjb2xvciAhPT0gdW5kZWZpbmVkIHx8IHdpZHRoICE9PSB1bmRlZmluZWQgPyBbc3R5bGVzLm91dGxpbmUsIHN0eWxlcy5mb2N1c1Zpc2libGVdIDogdW5kZWZpbmVkLFxuICAgIGNvbG9yID8gc3R5bGVzW2Bjb2xvci0tJHtjb2xvcn1gXSA6IHVuZGVmaW5lZCxcbiAgICB3aWR0aCA/IHN0eWxlc1tgd2lkdGgtLSR7d2lkdGh9YF0gOiB1bmRlZmluZWQsXG4gIF07XG59O1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL291dGxpbmUvb3V0bGluZS5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcIm91dGxpbmVcIjogXCJvdXRsaW5lLW1vZHVsZV9fb3V0bGluZV9fX0FvQnRGXCIsXG4gIFwiZm9jdXNWaXNpYmxlXCI6IFwib3V0bGluZS1tb2R1bGVfX2ZvY3VzVmlzaWJsZV9fX0pBclBKXCIsXG4gIFwiY29sb3ItLWluaGVyaXRcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWluaGVyaXRfX18wV1AwclwiLFxuICBcImNvbG9yLS13aGl0ZVwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0td2hpdGVfX19VcS1nZFwiLFxuICBcImNvbG9yLS10cmFuc3BhcmVudFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tdHJhbnNwYXJlbnRfX19UTm9NdlwiLFxuICBcImNvbG9yLS1ncmV5MTAwXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5MTAwX19fVk1GN1lcIixcbiAgXCJjb2xvci0tZ3JleTgwXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5ODBfX19LZDhmTVwiLFxuICBcImNvbG9yLS1ncmV5NjBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXk2MF9fX1pHak90XCIsXG4gIFwiY29sb3ItLWdyZXk0MFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTQwX19fdWFGbkdcIixcbiAgXCJjb2xvci0tZ3JleTMwXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5MzBfX183UUJWVlwiLFxuICBcImNvbG9yLS1ncmV5MjVcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXkyNV9fX3ItYmJKXCIsXG4gIFwiY29sb3ItLWdyZXkyMFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTIwX19faXd6ZUxcIixcbiAgXCJjb2xvci0tZ3JleTEwXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5MTBfX19oSnR0U1wiLFxuICBcImNvbG9yLS1ncmV5NzBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXk3MF9fXzBPR2xVXCIsXG4gIFwiY29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXk4MEFscGhhODVfX19qUndIblwiLFxuICBcImNvbG9yLS1wcmltYXJ5XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1wcmltYXJ5X19fUHhjbXhcIixcbiAgXCJjb2xvci0tc3VjY2Vzc1wiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tc3VjY2Vzc19fX3hqSkxuXCIsXG4gIFwiY29sb3ItLW5vdGljZVwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tbm90aWNlX19fQ1JpWWJcIixcbiAgXCJjb2xvci0td2FybmluZ1wiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0td2FybmluZ19fXzFPZTdXXCIsXG4gIFwiY29sb3ItLWNyaXRpY2FsXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1jcml0aWNhbF9fX3lReC1MXCIsXG4gIFwiY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1zdWNjZXNzVGludF9fX0dIYXEtXCIsXG4gIFwiY29sb3ItLXdhcm5pbmdUaW50XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS13YXJuaW5nVGludF9fX1lBbnR1XCIsXG4gIFwiY29sb3ItLWNyaXRpY2FsVGludFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tY3JpdGljYWxUaW50X19fUTFtZGhcIixcbiAgXCJjb2xvci0tbGlua1wiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tbGlua19fX3VJazNvXCIsXG4gIFwiY29sb3ItLWNvZGVcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWNvZGVfX195Ym53aVwiLFxuICBcIndpZHRoLS16ZXJvXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS16ZXJvX19fRWtmek5cIixcbiAgXCJ3aWR0aC0teHhzXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS14eHNfX19iR3lUclwiLFxuICBcIndpZHRoLS14c1wiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0teHNfX19aWlIyQlwiLFxuICBcIndpZHRoLS1zXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS1zX19fOGRERXpcIixcbiAgXCJ3aWR0aC0tbVwiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0tbV9fX2cydUc1XCIsXG4gIFwid2lkdGgtLWxcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLWxfX19XaDBiQ1wiLFxuICBcIndpZHRoLS14bFwiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0teGxfX184ZE9NalwiLFxuICBcIndpZHRoLS14eGxcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLXh4bF9fX0JFc1VtXCIsXG4gIFwid2lkdGgtLTN4bFwiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0tM3hsX19fRXMwU1lcIixcbiAgXCJ3aWR0aC0tNHhsXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS00eGxfX19ZZW92OFwiLFxuICBcIndpZHRoLS01eGxcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLTV4bF9fX05zVjhQXCJcbn07IiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgY2xpY2thYmxlUGx1Z2luLCBDbGlja0hhbmRsZXJEZXRhaWxzIH0gZnJvbSBcIi4uL2NsaWNrYWJsZS9jbGlja2FibGVcIjtcbmltcG9ydCB7IGF1dG9VcGRhdGUsIGZsaXAsIG9mZnNldCwgc2hpZnQsIHVzZUZsb2F0aW5nIH0gZnJvbSBcIkBmbG9hdGluZy11aS9yZWFjdC1kb21cIjtcbmltcG9ydCB0eXBlIHsgUmVmUGx1Z2luIH0gZnJvbSBcIi4uL3JlZi9yZWZcIjtcbmltcG9ydCB7IGV4cGVjdERlZmluZWQsIHN0b3BQcm9wYWdhdGlvbiB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL3BvcG92ZXIubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IE1pbmltYWxEaXYgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHMvbWluaW1hbC1kaXZcIjtcblxuZXhwb3J0IHR5cGUgUG9wb3ZlclBsdWdpblByb3BzID0ge1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgJHBvcG92ZXI/OiAoKSA9PiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5leHBvcnQgY29uc3QgcG9wb3ZlcklzT3BlbkNvbnRleHQgPSBjcmVhdGVDb250ZXh0KGZhbHNlKTtcblxuZXhwb3J0IGNvbnN0IHVzZVBvcG92ZXJJc09wZW4gPSAoKSA9PiB1c2VDb250ZXh0KHBvcG92ZXJJc09wZW5Db250ZXh0KTtcblxuZXhwb3J0IGNvbnN0IHBvcG92ZXJQbHVnaW4gPSBnZXRQbHVnaW48UG9wb3ZlclBsdWdpblByb3BzLCBbdHlwZW9mIGNsaWNrYWJsZVBsdWdpbiwgUmVmUGx1Z2luPGFueT5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkcG9wb3ZlciwgJG9uQ2xpY2ssICRyZWYgfSA9IHByb3BzO1xuICBjb25zdCBbcG9wb3ZlckNvbnRlbnRJc1Nob3duLCBzZXRQb3BvdmVyQ29udGVudElzU2hvd25dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbcmVmZXJlbmNlLCBzZXRFbGVtZW50XSA9IHVzZVN0YXRlPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGNsb3NlUG9wb3ZlciA9IHVzZUNhbGxiYWNrKCgpID0+IHNldFBvcG92ZXJDb250ZW50SXNTaG93bihmYWxzZSksIFtdKTtcblxuICBpZiAoISRwb3BvdmVyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICRwb3BvdmVyOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJHBvcG92ZXI6IHVuZGVmaW5lZCxcbiAgICAkcmVmOiBbJHJlZiwgc2V0RWxlbWVudF0sXG4gICAgJG9uQ2xpY2s6IChkZXRhaWxzOiBDbGlja0hhbmRsZXJEZXRhaWxzKSA9PiB7XG4gICAgICBzZXRQb3BvdmVyQ29udGVudElzU2hvd24oIXBvcG92ZXJDb250ZW50SXNTaG93bik7XG4gICAgICAkb25DbGljaz8uKGRldGFpbHMpO1xuICAgIH0sXG4gICAgb25DbGljazogc3RvcFByb3BhZ2F0aW9uLFxuICAgICR3cmFwcGVyOiB7XG4gICAgICBDb21wb25lbnQ6IFBvcG92ZXJXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgcG9wb3Zlcjoge1xuICAgICAgICAgICRwb3BvdmVyLFxuICAgICAgICAgIGlzU2hvd246IHBvcG92ZXJDb250ZW50SXNTaG93bixcbiAgICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgICAgY2xvc2VQb3BvdmVyLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xufSk7XG5cbnR5cGUgUG9wb3ZlcldyYXBwZXJQcm9wcyA9IHtcbiAgcmVhZG9ubHkgcG9wb3Zlcjoge1xuICAgIHJlYWRvbmx5ICRwb3BvdmVyOiAoKSA9PiBSZWFjdC5SZWFjdE5vZGU7XG4gICAgcmVhZG9ubHkgaXNTaG93bjogYm9vbGVhbjtcbiAgICByZWFkb25seSByZWZlcmVuY2U6IEhUTUxEaXZFbGVtZW50IHwgbnVsbDtcbiAgICByZWFkb25seSBjbG9zZVBvcG92ZXI6IFZvaWRGdW5jdGlvbjtcbiAgfTtcbiAgcmVhZG9ubHkgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IFBvcG92ZXJXcmFwcGVyQ29tcG9uZW50ID0gKHsgcG9wb3ZlciwgY2hpbGRyZW4gfTogUG9wb3ZlcldyYXBwZXJQcm9wcykgPT4ge1xuICBjb25zdCB7ICRwb3BvdmVyLCBpc1Nob3duLCByZWZlcmVuY2UsIGNsb3NlUG9wb3ZlciB9ID0gcG9wb3ZlcjtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7aXNTaG93biAmJlxuICAgICAgICBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgPFBvcG92ZXJPdmVybGF5Q29udGVudFxuICAgICAgICAgICAgey4uLntcbiAgICAgICAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICAgICAgICAkcG9wb3ZlcixcbiAgICAgICAgICAgICAgY2xvc2VQb3BvdmVyLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPixcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LFxuICAgICAgICApfVxuICAgICAgPHBvcG92ZXJJc09wZW5Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXtpc1Nob3dufT57Y2hpbGRyZW59PC9wb3BvdmVySXNPcGVuQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbnR5cGUgUG9wb3Zlck92ZXJsYXlDb250ZW50UHJvcHMgPSB7XG4gIHJlZmVyZW5jZTogSFRNTERpdkVsZW1lbnQgfCBudWxsO1xuICAkcG9wb3ZlcjogKCkgPT4gUmVhY3QuUmVhY3ROb2RlO1xuICBjbG9zZVBvcG92ZXI6IFZvaWRGdW5jdGlvbjtcbn07XG5cbmNvbnN0IFBvcG92ZXJPdmVybGF5Q29udGVudCA9IChwcm9wczogUG9wb3Zlck92ZXJsYXlDb250ZW50UHJvcHMpID0+IHtcbiAgY29uc3QgeyAkcG9wb3ZlciwgY2xvc2VQb3BvdmVyLCByZWZlcmVuY2UgfSA9IHByb3BzO1xuICBjb25zdCBbZmxvYXRpbmcsIHNldEZsb2F0aW5nXSA9IHVzZVN0YXRlPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHsgZmxvYXRpbmdTdHlsZXMgfSA9IHVzZUZsb2F0aW5nKHtcbiAgICBwbGFjZW1lbnQ6IFwiYm90dG9tXCIsXG4gICAgbWlkZGxld2FyZTogW2ZsaXAoKSwgb2Zmc2V0KDgpLCBzaGlmdCgpXSxcbiAgICB3aGlsZUVsZW1lbnRzTW91bnRlZDogYXV0b1VwZGF0ZSxcbiAgICBlbGVtZW50czoge1xuICAgICAgZmxvYXRpbmcsXG4gICAgICByZWZlcmVuY2UsXG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3QgY2xvc2VQb3BvdmVyRnJvbU92ZXJsYXkgPSAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICBzdG9wUHJvcGFnYXRpb24oZXZlbnQpO1xuICAgIGNsb3NlUG9wb3ZlcigpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPE1pbmltYWxEaXZcbiAgICAgIGRhdGEtcG9wb3Zlci1vdmVybGF5LXRlc3RcbiAgICAgICRhYnNvbHV0ZVxuICAgICAgJGNsYXNzTmFtZT17c3R5bGVzLnBvcG92ZXJfX292ZXJsYXl9XG4gICAgICBvbkNsaWNrPXtjbG9zZVBvcG92ZXJGcm9tT3ZlcmxheX1cbiAgICA+XG4gICAgICA8TWluaW1hbERpdlxuICAgICAgICAkcmVmPXtzZXRGbG9hdGluZ31cbiAgICAgICAgc3R5bGU9e2Zsb2F0aW5nU3R5bGVzfVxuICAgICAgICBvbkNsaWNrPXtzdG9wUHJvcGFnYXRpb259XG4gICAgICAgICRjbGFzc05hbWU9e3N0eWxlcy5wb3BvdmVyX19jb250ZW50fVxuICAgICAgPlxuICAgICAgICA8Y29udGV4dEZvckNsb3NpbmdQb3BvdmVyLlByb3ZpZGVyIHZhbHVlPXtjbG9zZVBvcG92ZXJ9PnskcG9wb3ZlcigpfTwvY29udGV4dEZvckNsb3NpbmdQb3BvdmVyLlByb3ZpZGVyPlxuICAgICAgPC9NaW5pbWFsRGl2PlxuICAgIDwvTWluaW1hbERpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb250ZXh0Rm9yQ2xvc2luZ1BvcG92ZXIgPSBjcmVhdGVDb250ZXh0PFZvaWRGdW5jdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuZXhwb3J0IGNvbnN0IHVzZUNsb3NlUG9wb3ZlciA9ICgpID0+XG4gIGV4cGVjdERlZmluZWQoXG4gICAgdXNlQ29udGV4dChjb250ZXh0Rm9yQ2xvc2luZ1BvcG92ZXIpLFxuICAgIFwiVHJpZWQgdG8gdXNlIGNsb3NlIHBvcG92ZXIgd2hpbGUgY29udGVudCBpcyBub3Qgc2hvd24gaW5zaWRlIHRoZSBwb3BvdmVyIGNvbnRlbnQuXCIsXG4gICk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwicG9wb3Zlcl9fb3ZlcmxheVwiOiBcInBvcG92ZXItbW9kdWxlX19wb3BvdmVyX19vdmVybGF5X19fVGNLdi1cIixcbiAgXCJwb3BvdmVyX19jb250ZW50XCI6IFwicG9wb3Zlci1tb2R1bGVfX3BvcG92ZXJfX2NvbnRlbnRfX19VQ1VaNlwiXG59OyIsICJpbXBvcnQgeyBnZXRQbHVnaW4sIHR5cGUgQ29udHJpYnV0ZVJlZiwgdHlwZSBQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgUmVmUGx1Z2luIH0gZnJvbSBcIi4uL3JlZi9yZWZcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgYXV0b1VwZGF0ZSwgZmxpcCwgb2Zmc2V0LCBzaGlmdCwgdXNlRmxvYXRpbmcsIHR5cGUgUGxhY2VtZW50IH0gZnJvbSBcIkBmbG9hdGluZy11aS9yZWFjdC1kb21cIjtcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCB0eXBlIEZsb2F0aW5nQ29udGVudEFyZ3MgPSB7XG4gIHJlYWRvbmx5IGZsb2F0aW5nU3R5bGVzOiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuICByZWFkb25seSBjb250ZW50UmVmOiBOb25OdWxsYWJsZTxSZWFjdC5SZWY8SFRNTERpdkVsZW1lbnQ+Pjtcbn07XG5cbmV4cG9ydCB0eXBlIEZsb2F0aW5nQ29udGVudEZhY3RvcnkgPSAoYXJnczogRmxvYXRpbmdDb250ZW50QXJncykgPT4gUmVhY3QuUmVhY3ROb2RlO1xuXG5leHBvcnQgdHlwZSAkRmxvYXRpbmdQcm9wcyA9IHtcbiAgcmVhZG9ubHkgcG9zaXRpb24/OiBQbGFjZW1lbnQ7XG4gIHJlYWRvbmx5IGNvbnRlbnQ6IEZsb2F0aW5nQ29udGVudEZhY3Rvcnk7XG59O1xuXG5leHBvcnQgdHlwZSBGbG9hdGluZ1BsdWdpblByb3BzID0ge1xuICByZWFkb25seSBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgcmVhZG9ubHkgJGZsb2F0aW5nPzogJEZsb2F0aW5nUHJvcHM7XG59O1xuXG5leHBvcnQgdHlwZSBGbG9hdGluZ1BsdWdpbiA9IFBsdWdpbjxGbG9hdGluZ1BsdWdpblByb3BzLCB1bmtub3duPjtcblxudHlwZSBGbG9hdGluZ1dyYXBwZXJQcm9wcyA9IHtcbiAgcmVhZG9ubHkgZmxvYXRpbmc6ICRGbG9hdGluZ1Byb3BzO1xuICByZWFkb25seSBjb250cmlidXRlUmVmOiBDb250cmlidXRlUmVmO1xuICByZWFkb25seSBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgRmxvYXRpbmdXcmFwcGVyQ29tcG9uZW50ID0gKHsgZmxvYXRpbmcsIGNvbnRyaWJ1dGVSZWYsIGNoaWxkcmVuIH06IEZsb2F0aW5nV3JhcHBlclByb3BzKSA9PiB7XG4gIGNvbnN0IFtyZWZlcmVuY2UsIHNldFJlZmVyZW5jZV0gPSB1c2VTdGF0ZTxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbZmxvYXRpbmdFbCwgc2V0RmxvYXRpbmddID0gdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcblxuICBjb250cmlidXRlUmVmKHNldFJlZmVyZW5jZSk7XG5cbiAgY29uc3QgeyBmbG9hdGluZ1N0eWxlcyB9ID0gdXNlRmxvYXRpbmcoe1xuICAgIHBsYWNlbWVudDogZmxvYXRpbmcucG9zaXRpb24gPz8gXCJib3R0b21cIixcbiAgICBtaWRkbGV3YXJlOiBbZmxpcCgpLCBvZmZzZXQoOCksIHNoaWZ0KCldLFxuICAgIHdoaWxlRWxlbWVudHNNb3VudGVkOiBhdXRvVXBkYXRlLFxuICAgIGVsZW1lbnRzOiB7XG4gICAgICBmbG9hdGluZzogZmxvYXRpbmdFbCxcbiAgICAgIHJlZmVyZW5jZSxcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCBmbG9hdGluZ0NvbnRlbnQgPSBmbG9hdGluZy5jb250ZW50KHsgZmxvYXRpbmdTdHlsZXMsIGNvbnRlbnRSZWY6IHNldEZsb2F0aW5nIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtmbG9hdGluZ0NvbnRlbnQgPyBjcmVhdGVQb3J0YWwoZmxvYXRpbmdDb250ZW50LCBkb2N1bWVudC5ib2R5KSA6IG51bGx9XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC8+XG4gICk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZmxvYXRpbmdQbHVnaW48VD4oKSB7XG4gIHJldHVybiBnZXRQbHVnaW48RmxvYXRpbmdQbHVnaW5Qcm9wcywgW1JlZlBsdWdpbjxUPl0+KChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgJGZsb2F0aW5nIH0gPSBwcm9wcztcblxuICAgIGlmICgkZmxvYXRpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHsgJGZsb2F0aW5nOiB1bmRlZmluZWQgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgJGZsb2F0aW5nOiB1bmRlZmluZWQsXG4gICAgICAkd3JhcHBlcjoge1xuICAgICAgICBDb21wb25lbnQ6IEZsb2F0aW5nV3JhcHBlckNvbXBvbmVudCxcbiAgICAgICAgcHJvcHM6IHsgZmxvYXRpbmc6ICRmbG9hdGluZyB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9KTtcbn1cbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9pbnZpc2libGUtYmFja2Ryb3AvaW52aXNpYmxlLWJhY2tkcm9wLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiaW52aXNpYmxlQmFja2Ryb3BcIjogXCJpbnZpc2libGUtYmFja2Ryb3AtbW9kdWxlX19pbnZpc2libGVCYWNrZHJvcF9fX2hPaDViXCJcbn07IiwgImltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW52aXNpYmxlLWJhY2tkcm9wLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuXG5leHBvcnQgdHlwZSBJbnZpc2libGVCYWNrZHJvcFBsdWdpblByb3BzID0ge1xuICAkaW52aXNpYmxlQmFja2Ryb3A/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGludmlzaWJsZUJhY2tkcm9wUGx1Z2luID0gZ2V0UGx1Z2luPEludmlzaWJsZUJhY2tkcm9wUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGludmlzaWJsZUJhY2tkcm9wLCAkY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICBpZiAoISRpbnZpc2libGVCYWNrZHJvcCkge1xuICAgIHJldHVybiB7ICRpbnZpc2libGVCYWNrZHJvcDogdW5kZWZpbmVkIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRpbnZpc2libGVCYWNrZHJvcDogdW5kZWZpbmVkLFxuICAgICRjbGFzc05hbWU6IFskY2xhc3NOYW1lLCBzdHlsZXMuaW52aXNpYmxlQmFja2Ryb3BdLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luLCB0eXBlIENvbnRyaWJ1dGVQcm9wcywgdHlwZSBDb250cmlidXRlUmVmIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEcm9wRG93bk1lbnUsIHR5cGUgRHJvcERvd25NZW51U3BlYyB9IGZyb20gXCJAazhzbGVucy9kcm9wLWRvd24tbWVudS1jb250cmFjdHNcIjtcbmltcG9ydCB7IG9uVHJpZ2dlciB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgb25SaWdodFRyaWdnZXJJbmplY3RhYmxlIH0gZnJvbSBcIi4uL2NsaWNrYWJsZS9vbi1yaWdodC10cmlnZ2VyLmluamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgUG9zaXRpb24yZCB9IGZyb20gXCIuLi9jbGlja2FibGUvY2xpY2thYmxlXCI7XG5pbXBvcnQgdHlwZSB7IGN1cnNvclBsdWdpbiB9IGZyb20gXCIuLi9jdXJzb3IvY3Vyc29yXCI7XG5pbXBvcnQgeyB0eXBlIGVuYWJsZWRQbHVnaW4sIGlzRGlzYWJsZWQgfSBmcm9tIFwiLi4vZW5hYmxlZC9lbmFibGVkXCI7XG5pbXBvcnQgeyB1c2VPbk91dHNpZGVDbGljayB9IGZyb20gXCIuLi9vbi1vdXRzaWRlLWNsaWNrL29uLW91dHNpZGUtY2xpY2tcIjtcblxuZXhwb3J0IHR5cGUgRHJvcERvd25NZW51UGx1Z2luUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICByZWFkb25seSB0YWJJbmRleD86IG51bWJlcjtcblxuICAvKipcbiAgICogQXR0YWNoZXMgYSBkcm9wLWRvd24gbWVudSB0byB0aGUgZWxlbWVudC4gQ3JlYXRlIHRoZSB2YWx1ZSB3aXRoIGBkcm9wRG93bk1lbnUoa2luZCwgb3B0aW9ucz8pYFxuICAgKiBmcm9tIGBAazhzbGVucy9kcm9wLWRvd24tbWVudS1jb250cmFjdHNgOyB0aGUgaXRlbXMgY29tZSBmcm9tIHRoZSBjb250cmlidXRpb25zIHJlZ2lzdGVyZWQgZm9yXG4gICAqIHRoZSBraW5kLlxuICAgKlxuICAgKiBUaGUgbWVudSBwb3NpdGlvbnMgaXRzZWxmIGFnYWluc3QgdGhlIG5lYXJlc3QgYW5jaG9yIGFyb3VuZCBpdCwgc28gdGhlIGVsZW1lbnQgXHUyMDE0IG9yIHNvbWV0aGluZ1xuICAgKiBlbmNsb3NpbmcgaXQgXHUyMDE0IGRlY2xhcmVzIGAkYW5jaG9yYC5cbiAgICpcbiAgICogRm9jdXMgcmV0dXJucyB0byB0aGUgZWxlbWVudCBvbmNlIHRoZSBtZW51IGlzIGdvbmUuIEEgbWVudSB0aGF0IG9wZW5zIG9uIGhvdmVyaW5nIG9wZW5zIHdpdGhcbiAgICogQXJyb3dSaWdodCBhcyB3ZWxsLCBhbmQgY2xvc2VzIHdpdGggQXJyb3dMZWZ0IGZyb20gYW55d2hlcmUgd2l0aGluIGl0LCBzbyBhIG1lbnUgaGVsZCBieSBhIG1lbnVcbiAgICogcm93IGlzIHJlYWNoYWJsZSB3aXRob3V0IGEgcG9pbnRlci5cbiAgICpcbiAgICogUmVxdWlyZXMgYGRyb3BEb3duTWVudUZlYXR1cmVgIG9mIGBAbGVuc2FwcC9kcm9wLWRvd24tbWVudWAgdG8gYmUgcmVnaXN0ZXJlZDogdGhlIG1lbnVcbiAgICogY29tcG9uZW50IGlzIHJlc29sdmVkIHRocm91Z2ggYW4gaW5qZWN0aW9uIHRva2VuIHRoaXMgcGFja2FnZSBkb2VzIG5vdCBpbXBsZW1lbnQuXG4gICAqL1xuICByZWFkb25seSAkZHJvcERvd25NZW51PzogRHJvcERvd25NZW51U3BlYztcbn07XG5cbmNvbnN0IGhvdmVyQ2xvc2VEZWxheUluTWlsbGlzZWNvbmRzID0gMjAwO1xuXG50eXBlIERyb3BEb3duTWVudVdyYXBwZXJQcm9wcyA9IHtcbiAgcmVhZG9ubHkgZHJvcERvd25NZW51OiBEcm9wRG93bk1lbnVTcGVjO1xuICByZWFkb25seSBjb250cmlidXRlUmVmOiBDb250cmlidXRlUmVmO1xuICByZWFkb25seSBjb250cmlidXRlUHJvcHM6IENvbnRyaWJ1dGVQcm9wcztcbiAgcmVhZG9ubHkgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IERyb3BEb3duTWVudVdyYXBwZXJDb21wb25lbnQgPSAoe1xuICBkcm9wRG93bk1lbnUsXG4gIGNvbnRyaWJ1dGVSZWYsXG4gIGNvbnRyaWJ1dGVQcm9wcyxcbiAgY2hpbGRyZW4sXG59OiBEcm9wRG93bk1lbnVXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2N1cnNvciwgc2V0Q3Vyc29yXSA9IHVzZVN0YXRlPFBvc2l0aW9uMmQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IGNsb3NlVGltZXJSZWYgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IG9uUmlnaHRUcmlnZ2VyID0gdXNlU3luY0luamVjdChvblJpZ2h0VHJpZ2dlckluamVjdGFibGUpO1xuXG4gIGNvbnN0IGVsZW1lbnRSZWYgPSB1c2VSZWY8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgbWVudVJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBlbGVtZW50VGFrZXNGb2N1c0JhY2tSZWYgPSB1c2VSZWYoZmFsc2UpO1xuXG4gIGNvbnRyaWJ1dGVSZWYoXG4gICAgdXNlQ2FsbGJhY2soKGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgZWxlbWVudFJlZi5jdXJyZW50ID0gZWxlbWVudDtcbiAgICB9LCBbXSksXG4gICk7XG5cbiAgY29uc3QgdG9nZ2xlID0gdXNlQ2FsbGJhY2soKCkgPT4gc2V0SXNPcGVuKCh3YXNPcGVuKSA9PiAhd2FzT3BlbiksIFtdKTtcblxuICBjb25zdCBjbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAvLyBUaGUgZWxlbWVudCB0aGUgbWVudSBiZWxvbmdzIHRvIHRha2VzIGZvY3VzIGJhY2sgd2hlbiBmb2N1cyBpcyBpbiB0aGUgbWVudSB0aGF0IGlzIGNsb3NpbmcsXG4gICAgLy8gb3Igbm93aGVyZSBhdCBhbGw6IHdoYXRldmVyIHRoZSB1c2VyIGRvZXMgbmV4dCwgdGhleSBkbyBmcm9tIHdoZXJlIHRoZXkgd2VyZS4gRGVjaWRlZCBoZXJlLFxuICAgIC8vIHdoaWxlIGl0IGlzIHN0aWxsIGNsZWFyIHdoZXJlIGZvY3VzIHdhcywgcmF0aGVyIHRoYW4gb25jZSB0aGUgbWVudSBoYXMgZ29uZS5cbiAgICBjb25zdCBmb2N1c2VkID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblxuICAgIGVsZW1lbnRUYWtlc0ZvY3VzQmFja1JlZi5jdXJyZW50ID1cbiAgICAgIGZvY3VzZWQgPT09IG51bGwgfHwgZm9jdXNlZCA9PT0gZG9jdW1lbnQuYm9keSB8fCBtZW51UmVmLmN1cnJlbnQ/LmNvbnRhaW5zKGZvY3VzZWQpID09PSB0cnVlO1xuXG4gICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGNhbmNlbFNjaGVkdWxlZENsb3NlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChjbG9zZVRpbWVyUmVmLmN1cnJlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KGNsb3NlVGltZXJSZWYuY3VycmVudCk7XG4gICAgICBjbG9zZVRpbWVyUmVmLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9LCBbXSk7XG5cbiAgY29uc3Qgb3BlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjYW5jZWxTY2hlZHVsZWRDbG9zZSgpO1xuICAgIHNldElzT3Blbih0cnVlKTtcbiAgfSwgW2NhbmNlbFNjaGVkdWxlZENsb3NlXSk7XG5cbiAgY29uc3Qgc2NoZWR1bGVDbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjYW5jZWxTY2hlZHVsZWRDbG9zZSgpO1xuICAgIGNsb3NlVGltZXJSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoY2xvc2UsIGhvdmVyQ2xvc2VEZWxheUluTWlsbGlzZWNvbmRzKTtcbiAgfSwgW2NhbmNlbFNjaGVkdWxlZENsb3NlLCBjbG9zZV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiBjYW5jZWxTY2hlZHVsZWRDbG9zZSwgW2NhbmNlbFNjaGVkdWxlZENsb3NlXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzT3Blbikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBBIG1lbnUgdGhhdCBpcyBkaXNtaXNzZWQgcmF0aGVyIHRoYW4gY2xvc2VkIFx1MjAxNCBjbGlja2VkIGF3YXkgZnJvbSBcdTIwMTQgbGVhdmVzIGZvY3VzIHdoZXJldmVyIHRoZVxuICAgIC8vIHVzZXIgcHV0IGl0LlxuICAgIGVsZW1lbnRUYWtlc0ZvY3VzQmFja1JlZi5jdXJyZW50ID0gZmFsc2U7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKCFlbGVtZW50VGFrZXNGb2N1c0JhY2tSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIERlZmVycmVkIHBhc3Qgd2hhdCBpcyBiZWluZyB0YWtlbiBhd2F5OiB0aGUgZWxlbWVudCBtYXkgYmUgZ29pbmcgd2l0aCB0aGUgbWVudSwgYSBtZW51XG4gICAgICAvLyBpbnNpZGUgYSBtZW51IHRoYXQgaXMgY2xvc2luZyB0b28sIGFuZCBvbmx5IHRoZW4gaXMgaXQgY2xlYXIgd2hldGhlciBpdCBpcyBzdGlsbCB0aGVyZSB0b1xuICAgICAgLy8gdGFrZSBmb2N1cyBiYWNrLiBBbnl0aGluZyB0aGF0IHRvb2sgZm9jdXMgaW4gdGhlIG1lYW50aW1lIHdhcyBnaXZlbiBpdCBvbiBwdXJwb3NlLCBhbmQgYVxuICAgICAgLy8gbWVudSBjbG9zaW5nIGlzIG5vIHJlYXNvbiB0byB0YWtlIGl0IGF3YXkgYWdhaW4uXG4gICAgICB2b2lkIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZWxlbWVudFJlZi5jdXJyZW50O1xuICAgICAgICBjb25zdCBmb2N1c2VkID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblxuICAgICAgICBpZiAoZWxlbWVudD8uaXNDb25uZWN0ZWQgJiYgKGZvY3VzZWQgPT09IG51bGwgfHwgZm9jdXNlZCA9PT0gZG9jdW1lbnQuYm9keSkpIHtcbiAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gIH0sIFtpc09wZW5dKTtcblxuICBjb25zdCBvcGVuT24gPSBkcm9wRG93bk1lbnUub3Blbk9uID8/IFwiY2xpY2tcIjtcblxuICBjb25zdCBjbG9zZU9uQXJyb3dMZWZ0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93TGVmdFwiKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBjbG9zZSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2Nsb3NlXSxcbiAgKTtcblxuICAvLyBNYXJrcyB0aGUgZWxlbWVudCBhbmQsIGJlbG93LCB0aGUgbWVudSBpdCBvcGVucyBhcyBvbmUgdGhpbmcgZm9yIG91dHNpZGUtY2xpY2sgcHVycG9zZXMuXG4gIGNvbnN0IG91dHNpZGVDbGlja01hcmtpbmdQcm9wcyA9IHVzZU9uT3V0c2lkZUNsaWNrKFxuICAgIHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmIChpc09wZW4pIHtcbiAgICAgICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9LCBbaXNPcGVuXSksXG4gICk7XG5cbiAgY29udHJpYnV0ZVByb3BzKHtcbiAgICAuLi5vdXRzaWRlQ2xpY2tNYXJraW5nUHJvcHMsXG4gICAgXCJhcmlhLWhhc3BvcHVwXCI6IFwibWVudVwiLFxuXG4gICAgLi4uKG9wZW5PbiA9PT0gXCJjbGlja1wiICYmIHtcbiAgICAgIG9uQ2xpY2s6IChldmVudDogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdG9nZ2xlKCk7XG4gICAgICB9LFxuXG4gICAgICAvLyBBIGtleSBwcmVzcyB0aGUgZWxlbWVudCBhbnN3ZXJzIHdpdGggYSBtZW51IGlzIGFuc3dlcmVkIGhlcmUgYW5kIG5vd2hlcmUgZWxzZSxcbiAgICAgIC8vIGV4YWN0bHkgYXMgaXRzIGNsaWNrIGlzOiB3aGF0ZXZlciBlbmNsb3NlcyB0aGUgZWxlbWVudCAoYSBtZW51IHJvdyB3aXRoIGFuXG4gICAgICAvLyBhY3Rpb24gb2YgaXRzIG93biwgc2F5KSBtdXN0IG5vdCB0YWtlIHRoZSBzYW1lIHByZXNzIGZvciBiZWluZyBhY3RpdmF0ZWQgdG9vLlxuICAgICAgb25LZXlEb3duOiAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgb25UcmlnZ2VyKGV2ZW50LCAoKSA9PiB7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgdG9nZ2xlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9KSxcblxuICAgIC4uLihvcGVuT24gPT09IFwicmlnaHQtY2xpY2tcIiAmJiB7XG4gICAgICBvbkNvbnRleHRNZW51OiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIC8vIEEgbWVudSBvcGVuZWQgYnkgcmlnaHQtY2xpY2tpbmcgYmVsb25ncyBhdCB0aGUgY3Vyc29yIHJhdGhlciB0aGFuIGF0IHRoZSBlbGVtZW50LlxuICAgICAgICBzZXRDdXJzb3IoeyB4OiBldmVudC5jbGllbnRYLCB5OiBldmVudC5jbGllbnRZIH0pO1xuICAgICAgICB0b2dnbGUoKTtcbiAgICAgIH0sXG5cbiAgICAgIG9uS2V5RG93bjogKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIG9uUmlnaHRUcmlnZ2VyKGV2ZW50LCAoKSA9PiB7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgdG9nZ2xlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9KSxcblxuICAgIC4uLihvcGVuT24gPT09IFwiaG92ZXJcIiAmJiB7XG4gICAgICBvbk1vdXNlRW50ZXI6IG9wZW4sXG4gICAgICBvbk1vdXNlTGVhdmU6IHNjaGVkdWxlQ2xvc2UsXG5cbiAgICAgIC8vIEEgbWVudSB0aGF0IG9wZW5zIG9uIGhvdmVyaW5nIHdvdWxkIGJlIG91dCBvZiB0aGUga2V5Ym9hcmQncyByZWFjaCBvdGhlcndpc2UuIFNpZGV3YXlzXG4gICAgICAvLyBpbnRvIGl0LCBzaW5jZSB0aGF0IGlzIHdoZXJlIHN1Y2ggYSBtZW51IHNpdHM6IGJlc2lkZSB0aGUgZWxlbWVudCBpdCBiZWxvbmdzIHRvLiBGb2N1c1xuICAgICAgLy8gZm9sbG93cyBvbiBpdHMgb3duLCB0aGUgbWVudSB0YWtpbmcgaXQgYXMgaXQgYXBwZWFycy5cbiAgICAgIG9uS2V5RG93bjogKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dSaWdodFwiKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBvcGVuKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSksXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtjaGlsZHJlbn1cblxuICAgICAge2lzT3BlbiAmJiAoXG4gICAgICAgIC8vIE1hcmtlZCBhcyBpbnNpZGUgZm9yIHRoZSBvdXRzaWRlLWNsaWNrIGRldGVjdGlvbiBhYm92ZTogdGhlIG1lbnUgaXMgYSBzaWJsaW5nIG9mIHRoZVxuICAgICAgICAvLyBlbGVtZW50IGluIHRoZSBET00sIGJ1dCBwYXJ0IG9mIHRoZSBzYW1lIHRoaW5nIGFzIGZhciBhcyBhIHVzZXIgaXMgY29uY2VybmVkLlxuICAgICAgICAvL1xuICAgICAgICAvLyBBIGNsaWNrIGxhbmRpbmcgb24gdGhlIG1lbnUgaXMgYSBjbGljayBvbiB0aGUgbWVudSBhbmQgbm90aGluZyBlbHNlLCBzbyBpdCBzdG9wcyBoZXJlXG4gICAgICAgIC8vIHJhdGhlciB0aGFuIGdvaW5nIG9uIHRvIHdoYXRldmVyIGVuY2xvc2VzIHRoZSBlbGVtZW50IHRoZSBtZW51IHdhcyBvcGVuZWQgZnJvbSBcdTIwMTQgYSByb3dcbiAgICAgICAgLy8gb2YgYSBtZW51IG9mIGl0cyBvd24sIHNheSwgd2hpY2ggd291bGQgdGFrZSBpdCBmb3IgdGhlIHJvdyBiZWluZyBhY3RpdmF0ZWQuIE9ubHlcbiAgICAgICAgLy8gYGNsaWNrYCBzdG9wczogdGhlIG91dHNpZGUtY2xpY2sgZGV0ZWN0aW9uIGFib3ZlIHdvcmtzIG9uIGBwb2ludGVyZG93bmAuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgey4uLm91dHNpZGVDbGlja01hcmtpbmdQcm9wc31cbiAgICAgICAgICByZWY9e21lbnVSZWZ9XG4gICAgICAgICAgc3R5bGU9e2Rpc3BsYXlDb250ZW50c31cbiAgICAgICAgICBvbkNsaWNrPXtzdG9wUHJvcGFnYXRpb259XG4gICAgICAgICAgLy8gU2lkZXdheXMgYmFjayBvdXQgb2YgYSBtZW51IHRoYXQgb3BlbmVkIHNpZGV3YXlzLCBmcm9tIHdoZXJldmVyIGluIGl0IGZvY3VzIGhhcHBlbnMgdG9cbiAgICAgICAgICAvLyBiZS4gSXQgc3RvcHMgaGVyZSwgc28gdGhlIG1lbnUgdGhpcyBvbmUgd2FzIG9wZW5lZCBmcm9tIGlzIGxlZnQgYXMgaXQgaXMgcmF0aGVyIHRoYW5cbiAgICAgICAgICAvLyBjbG9zaW5nIGFsb25nIHdpdGggaXQgXHUyMDE0IG9uZSBzdGVwIG91dCBwZXIgcHJlc3MuIE9ubHkgc3VjaCBhIG1lbnU6IGVsc2V3aGVyZSB0aGUga2V5XG4gICAgICAgICAgLy8gYmVsb25ncyB0byB3aGF0ZXZlciB0aGUgbWVudSBob2xkcywgYW5kIEVzY2FwZSBpcyBob3cgYSBtZW51IGlzIGRpc21pc3NlZC5cbiAgICAgICAgICBvbktleURvd249e29wZW5PbiA9PT0gXCJob3ZlclwiID8gY2xvc2VPbkFycm93TGVmdCA6IHVuZGVmaW5lZH1cbiAgICAgICAgPlxuICAgICAgICAgIDxEcm9wRG93bk1lbnVcbiAgICAgICAgICAgIHNwZWM9e2Ryb3BEb3duTWVudX1cbiAgICAgICAgICAgIGFuY2hvclBvaW50PXtvcGVuT24gPT09IFwicmlnaHQtY2xpY2tcIiA/IGN1cnNvciA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgIG9uQ2xvc2U9e2Nsb3NlfVxuICAgICAgICAgICAgb25NZW51SG92ZXJDaGFuZ2U9e1xuICAgICAgICAgICAgICBvcGVuT24gPT09IFwiaG92ZXJcIlxuICAgICAgICAgICAgICAgID8gKG1lbnVJc0hvdmVyZWQpID0+IChtZW51SXNIb3ZlcmVkID8gY2FuY2VsU2NoZWR1bGVkQ2xvc2UoKSA6IHNjaGVkdWxlQ2xvc2UoKSlcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuXG5jb25zdCBkaXNwbGF5Q29udGVudHMgPSB7IGRpc3BsYXk6IFwiY29udGVudHNcIiB9IGFzIGNvbnN0O1xuXG5jb25zdCBzdG9wUHJvcGFnYXRpb24gPSAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG5leHBvcnQgY29uc3QgZHJvcERvd25NZW51UGx1Z2luID0gZ2V0UGx1Z2luPERyb3BEb3duTWVudVBsdWdpblByb3BzLCBbdHlwZW9mIGVuYWJsZWRQbHVnaW4sIHR5cGVvZiBjdXJzb3JQbHVnaW5dPihcbiAgKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyAkZHJvcERvd25NZW51LCAkY3Vyc29yLCByb2xlIH0gPSBwcm9wcyBhcyB0eXBlb2YgcHJvcHMgJiBSZWFjdC5IVE1MUHJvcHM8SFRNTEVsZW1lbnQ+O1xuXG4gICAgaWYgKCRkcm9wRG93bk1lbnUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHsgJGRyb3BEb3duTWVudTogdW5kZWZpbmVkIH07XG4gICAgfVxuXG4gICAgY29uc3Qgb3BlbnNPbkNsaWNrID0gKCRkcm9wRG93bk1lbnUub3Blbk9uID8/IFwiY2xpY2tcIikgPT09IFwiY2xpY2tcIjtcbiAgICAvLyBSZWFkIGZyb20gd2hhdCB0aGUgZWxlbWVudCB3YXMgZ2l2ZW46IHRoaXMgcGx1Z2luIHJ1bnMgYmVmb3JlIHRoZSBvbmUgdGhhdCB0dXJucyBpdCBpbnRvXG4gICAgLy8gdGhlIGBkaXNhYmxlZGAgcHJvcC5cbiAgICBjb25zdCBjYW5ub3RCZVVzZWQgPSBpc0Rpc2FibGVkKHByb3BzKTtcblxuICAgIHJldHVybiB7XG4gICAgICAkZHJvcERvd25NZW51OiB1bmRlZmluZWQsXG5cbiAgICAgIC4uLigkZHJvcERvd25NZW51Lm9wZW5PbiA9PT0gXCJob3ZlclwiID8ge30gOiB7IHRhYkluZGV4OiBwcm9wcy50YWJJbmRleCA/PyAwIH0pLFxuXG4gICAgICAvLyBBbiBlbGVtZW50IHRoYXQgYW5zd2VycyBhIGNsaWNrIHdpdGggYSBtZW51IGlzIGEgYnV0dG9uLCBhbmQgdGhlIGN1cnNvciBpcyBob3cgaXQgc2F5cyBzb1xuICAgICAgLy8gLS0gb3Igc2F5cyB0aGF0IGl0IGNhbm5vdCByaWdodCBub3cuIEJvdGggd291bGQgb3RoZXJ3aXNlIGNvbWUgZnJvbSBhIGNsaWNrIGhhbmRsZXIgc3VjaCBhblxuICAgICAgLy8gZWxlbWVudCBoYXMgbm8gcmVhc29uIHRvIGhhdmUuIE9ubHkgYSBjbGljazogc29tZXRoaW5nIHJpZ2h0LWNsaWNrZWQgaXMgbm90IGEgYnV0dG9uLCBhbmQgYVxuICAgICAgLy8gcm93IHRoYXQgcmV2ZWFscyBhIG1lbnUgb24gaG92ZXIgaXMgYSByb3cuXG4gICAgICAuLi4ob3BlbnNPbkNsaWNrICYmIHtcbiAgICAgICAgcm9sZTogcm9sZSA/PyBcImJ1dHRvblwiLFxuICAgICAgICAkY3Vyc29yOiAkY3Vyc29yID8/IChjYW5ub3RCZVVzZWQgPyBcIm5vdC1hbGxvd2VkXCIgOiBcInBvaW50ZXJcIiksXG4gICAgICB9KSxcblxuICAgICAgJHdyYXBwZXI6IHtcbiAgICAgICAgQ29tcG9uZW50OiBEcm9wRG93bk1lbnVXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgICBwcm9wczogeyBkcm9wRG93bk1lbnU6ICRkcm9wRG93bk1lbnUgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSxcbik7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luLCB0eXBlIENvbnRyaWJ1dGVQcm9wcywgdHlwZSBDb250cmlidXRlUmVmIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBjc3NOYW1lcyB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZUlkLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vYW5jaG9yLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IFBvc2l0aW9uMmQgfSBmcm9tIFwiLi4vY2xpY2thYmxlL2NsaWNrYWJsZVwiO1xuaW1wb3J0IHsgdHlwZSBUU2hpcnRTaXplLCB0U2hpcnRTaXplSW5QaXhlbHMgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgdHlwZSB7IGNvbG9yUGx1Z2luIH0gZnJvbSBcIi4uL2NvbG9yL2NvbG9yXCI7XG5pbXBvcnQgdHlwZSB7IGJhY2tncm91bmRDb2xvclBsdWdpbiB9IGZyb20gXCIuLi9iYWNrZ3JvdW5kLWNvbG9yL2JhY2tncm91bmQtY29sb3JcIjtcbmltcG9ydCB0eXBlIHsgYm9yZGVyUGx1Z2luIH0gZnJvbSBcIi4uL2JvcmRlci9ib3JkZXJcIjtcbmltcG9ydCB0eXBlIHsgcGFkZGluZ1BsdWdpbiB9IGZyb20gXCIuLi9wYWRkaW5nL3BhZGRpbmdcIjtcbmltcG9ydCB0eXBlIHsgbWFyZ2luUGx1Z2luIH0gZnJvbSBcIi4uL21hcmdpbi9tYXJnaW5cIjtcbmltcG9ydCB0eXBlIHsgb3ZlcmZsb3dQbHVnaW4gfSBmcm9tIFwiLi4vb3ZlcmZsb3cvb3ZlcmZsb3dcIjtcblxuLyoqXG4gKiBXaGVyZSBhbiBlbGVtZW50IHNpdHMgcmVsYXRpdmUgdG8gaXRzIGFuY2hvcjogYSBzaWRlIG9mIHRoZSBhbmNob3IsIG9wdGlvbmFsbHkgcmVmaW5lZCB3aXRoIGhvd1xuICogdGhlIGVsZW1lbnQgZXh0ZW5kcyBhbG9uZyB0aGF0IHNpZGUuIEEgYmFyZSBzaWRlIGNlbnRlcnMgdGhlIGVsZW1lbnQgb24gaXQ7IGBzcGFuLTxkaXJlY3Rpb24+YFxuICogYWxpZ25zIHRoZWlyIGVkZ2VzIGFuZCBsZXRzIHRoZSBlbGVtZW50IGV4dGVuZCB0b3dhcmQgdGhhdCBkaXJlY3Rpb24uXG4gKlxuICogV2hlbiB0aGUgZWxlbWVudCB3b3VsZCBub3QgZml0IHRoZSB2aWV3cG9ydCwgaXQgZmFsbHMgYmFjayB0byB0aGUgbWlycm9yZWQgcG9zaXRpb25zLlxuICovXG5leHBvcnQgdHlwZSBBbmNob3JQb3NpdGlvbiA9XG4gIHwgXCJ0b3BcIlxuICB8IFwiYm90dG9tXCJcbiAgfCBcImxlZnRcIlxuICB8IFwicmlnaHRcIlxuICB8IFwidG9wIHNwYW4tbGVmdFwiXG4gIHwgXCJ0b3Agc3Bhbi1yaWdodFwiXG4gIHwgXCJib3R0b20gc3Bhbi1sZWZ0XCJcbiAgfCBcImJvdHRvbSBzcGFuLXJpZ2h0XCJcbiAgfCBcImxlZnQgc3Bhbi10b3BcIlxuICB8IFwibGVmdCBzcGFuLWJvdHRvbVwiXG4gIHwgXCJyaWdodCBzcGFuLXRvcFwiXG4gIHwgXCJyaWdodCBzcGFuLWJvdHRvbVwiO1xuXG4vKipcbiAqIEVpdGhlciBhIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBuZWFyZXN0IGFuY2VzdG9yIGAkYW5jaG9yYCwgb3IgdGhlIHNhbWUgcG9zaXRpb24gcmVsYXRpdmUgdG8gYVxuICogcG9pbnQgaW4gdGhlIHZpZXdwb3J0LlxuICovXG5leHBvcnQgdHlwZSBBbmNob3JlZEF0ID1cbiAgfCBBbmNob3JQb3NpdGlvblxuICB8IHtcbiAgICAgIHJlYWRvbmx5IHBvc2l0aW9uOiBBbmNob3JQb3NpdGlvbjtcblxuICAgICAgLyoqIEhvdyBmYXIgZnJvbSB0aGUgYW5jaG9yIHRoZSBlbGVtZW50IHNpdHMuIERlZmF1bHRzIHRvIGBcInhzXCJgLiAqL1xuICAgICAgcmVhZG9ubHkgZ2FwPzogVFNoaXJ0U2l6ZTtcblxuICAgICAgLyoqIFNpdCBhdCB0aGlzIHZpZXdwb3J0IHBvaW50IGluc3RlYWQgb2YgYXQgYW4gYW5jaG9yLiAqL1xuICAgICAgcmVhZG9ubHkgcG9pbnQ/OiBQb3NpdGlvbjJkO1xuICAgIH07XG5cbmNvbnN0IGRlZmF1bHRHYXA6IFRTaGlydFNpemUgPSBcInhzXCI7XG5cbmV4cG9ydCB0eXBlIEFuY2hvclBsdWdpblByb3BzID0ge1xuICByZWFkb25seSBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcblxuICAvKipcbiAgICogTWFrZXMgdGhlIGVsZW1lbnQgYW4gYW5jaG9yIGZvciB0aGUgZWxlbWVudHMgb2YgaXRzIHN1YnRyZWUgdGhhdCBkZWNsYXJlIHtAbGluayAkYW5jaG9yZWRBdH0uXG4gICAqIFRoZSBuZWFyZXN0IHN1Y2ggYW5jZXN0b3Igd2lucywgc28gbmVzdGluZyB3b3JrcyB3aXRob3V0IG5hbWluZyBhbnl0aGluZy5cbiAgICovXG4gIHJlYWRvbmx5ICRhbmNob3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQb3NpdGlvbnMgdGhlIGVsZW1lbnQgcmVsYXRpdmUgdG8gYW4gYW5jaG9yLCBhYm92ZSBldmVyeXRoaW5nIGVsc2Ugb24gdGhlIHBhZ2UgXHUyMDE0IGl0IGVzY2FwZXNcbiAgICogY2xpcHBpbmcgYW5jZXN0b3JzIGFuZCBzdGFja2luZyBjb250ZXh0cywgc28gaXQgbmVlZHMgbm8gcG9ydGFsLlxuICAgKlxuICAgKiBUaGUgYW5jaG9yIGlzIHRoZSBuZWFyZXN0IGFuY2VzdG9yIGRlY2xhcmluZyB7QGxpbmsgJGFuY2hvcn0sIG9yIHRoZSBnaXZlbiBwb2ludCB3aGVuIGEgcG9pbnRcbiAgICogaXMgcHJvdmlkZWQgaW5zdGVhZC5cbiAgICovXG4gIHJlYWRvbmx5ICRhbmNob3JlZEF0PzogQW5jaG9yZWRBdDtcbn07XG5cbmNvbnN0IGFuY2hvck5hbWVDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbnR5cGUgQW5jaG9yV3JhcHBlclByb3BzID0ge1xuICByZWFkb25seSBpc0FuY2hvcjogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYW5jaG9yZWRBdDogQW5jaG9yZWRBdCB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVJlZjogQ29udHJpYnV0ZVJlZjtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVByb3BzOiBDb250cmlidXRlUHJvcHM7XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBBbmNob3JXcmFwcGVyQ29tcG9uZW50ID0gKHtcbiAgaXNBbmNob3IsXG4gIGFuY2hvcmVkQXQsXG4gIGNvbnRyaWJ1dGVSZWYsXG4gIGNvbnRyaWJ1dGVQcm9wcyxcbiAgY2hpbGRyZW4sXG59OiBBbmNob3JXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29uc3Qgb3duQW5jaG9yTmFtZSA9IHRvQW5jaG9yTmFtZSh1c2VJZCgpKTtcbiAgY29uc3QgaW5oZXJpdGVkQW5jaG9yTmFtZSA9IHVzZUNvbnRleHQoYW5jaG9yTmFtZUNvbnRleHQpO1xuICBjb25zdCBlbGVtZW50UmVmID0gdXNlUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHBvaW50UmVmID0gdXNlUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgY29udHJpYnV0ZVJlZihcbiAgICB1c2VDYWxsYmFjaygoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgICBlbGVtZW50UmVmLmN1cnJlbnQgPSBlbGVtZW50O1xuICAgIH0sIFtdKSxcbiAgKTtcblxuICBjb25zdCBwb3NpdGlvbiA9IHR5cGVvZiBhbmNob3JlZEF0ID09PSBcInN0cmluZ1wiID8gYW5jaG9yZWRBdCA6IGFuY2hvcmVkQXQ/LnBvc2l0aW9uO1xuICBjb25zdCBwb2ludCA9IHR5cGVvZiBhbmNob3JlZEF0ID09PSBcIm9iamVjdFwiID8gYW5jaG9yZWRBdC5wb2ludCA6IHVuZGVmaW5lZDtcbiAgY29uc3QgZ2FwID0gdHlwZW9mIGFuY2hvcmVkQXQgPT09IFwib2JqZWN0XCIgPyAoYW5jaG9yZWRBdC5nYXAgPz8gZGVmYXVsdEdhcCkgOiBkZWZhdWx0R2FwO1xuXG4gIGlmIChwb3NpdGlvbiAmJiAhcG9pbnQgJiYgIWluaGVyaXRlZEFuY2hvck5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVHJpZWQgdG8gcG9zaXRpb24gYW4gZWxlbWVudCBhdCBcIiR7cG9zaXRpb259XCIgd2l0aG91dCBhbiBhbmNob3IuIEVpdGhlciBnaXZlIGFuIGFuY2VzdG9yIHRoZSAkYW5jaG9yIHByb3AsIG9yIGFuY2hvciB0byBhIHBvaW50IGluc3RlYWQuYCxcbiAgICApO1xuICB9XG5cbiAgLy8gQSBwb2ludCBhbmNob3IgaXMgdGhlIGVsZW1lbnQncyBvd247IG90aGVyd2lzZSBpdCBwb3NpdGlvbnMgYWdhaW5zdCB3aGF0ZXZlciBhbmNob3IgZW5jbG9zZXMgaXQuXG4gIGNvbnN0IGFuY2hvck5hbWVUb1Bvc2l0aW9uQWdhaW5zdCA9IHBvaW50ID8gb3duQW5jaG9yTmFtZSA6IGluaGVyaXRlZEFuY2hvck5hbWU7XG5cbiAgaWYgKGFuY2hvcmVkQXQgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnRyaWJ1dGVQcm9wcyh7IHBvcG92ZXI6IFwibWFudWFsXCIgfSk7XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50UmVmLmN1cnJlbnQ7XG5cbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNBbmNob3IpIHtcbiAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoYW5jaG9yTmFtZVByb3BlcnR5LCBvd25BbmNob3JOYW1lKTtcbiAgICB9XG5cbiAgICBpZiAocG9zaXRpb24pIHtcbiAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkocG9zaXRpb25Qcm9wZXJ0eSwgcG9zaXRpb24pO1xuICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShnYXBQcm9wZXJ0eSwgYCR7dFNoaXJ0U2l6ZUluUGl4ZWxzKGdhcCl9cHhgKTtcblxuICAgICAgLy8gT25seSB0b3dhcmQgdGhlIGFuY2hvciwgc28gdGhlIGVsZW1lbnQgc3RpbGwgbGluZXMgdXAgd2l0aCBpdCBvbiB0aGUgb3RoZXIgYXhpcy4gQVxuICAgICAgLy8gZmFsbGJhY2sgdGhhdCBtaXJyb3JzIHRoZSBwb3NpdGlvbiBtaXJyb3JzIHRoaXMgbWFyZ2luIHdpdGggaXQuXG4gICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KG1hcmdpblByb3BlcnR5VG93YXJkc0FuY2hvcihwb3NpdGlvbiksIGAke3RTaGlydFNpemVJblBpeGVscyhnYXApfXB4YCk7XG5cbiAgICAgIGlmIChhbmNob3JOYW1lVG9Qb3NpdGlvbkFnYWluc3QpIHtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShwb3NpdGlvbkFuY2hvclByb3BlcnR5LCBhbmNob3JOYW1lVG9Qb3NpdGlvbkFnYWluc3QpO1xuICAgICAgfVxuXG4gICAgICBpZiAocG9pbnQpIHtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShwb2ludFhQcm9wZXJ0eSwgYCR7cG9pbnQueH1weGApO1xuICAgICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHBvaW50WVByb3BlcnR5LCBgJHtwb2ludC55fXB4YCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICAvLyBUaGUgcG9pbnQgcmlzZXMgdG8gdGhlIHRvcCBsYXllciBhbG9uZyB3aXRoIHdoYXQgaXMgYW5jaG9yZWQgdG8gaXQuIEEgYGZpeGVkYCBlbGVtZW50IHJlc29sdmVzXG4gIC8vIGFnYWluc3QgdGhlIG5lYXJlc3QgYW5jZXN0b3IgdGhhdCB0cmFuc2Zvcm1zLCBmaWx0ZXJzIG9yIGNvbnRhaW5zIGl0cyBzdWJ0cmVlLCBzbyBhIHBvaW50IGxlZnRcbiAgLy8gaW4gdGhlIHRyZWUgbGFuZHMgYXQgdGhlIGN1cnNvciBwbHVzIHRoYXQgYW5jZXN0b3IncyBvd24gb2Zmc2V0IFx1MjAxNCB3aGljaCBpcyBob3cgYSBtZW51IG9wZW5lZFxuICAvLyBvdmVyIGEgbmF2aWdhdG9yIGl0ZW0gdXNlZCB0byBhcHBlYXIgaHVuZHJlZHMgb2YgcGl4ZWxzIGJlbG93IHRoZSBjdXJzb3IuXG4gIC8vXG4gIC8vIFNob3duIGJlZm9yZSB0aGUgZWxlbWVudCBhbmNob3JlZCB0byBpdDogYW4gYW5jaG9yIGhhcyB0byByZWFjaCB0aGUgdG9wIGxheWVyIGZpcnN0LCBvciB0aGVcbiAgLy8gZWxlbWVudCBwb3NpdGlvbmluZyBhZ2FpbnN0IGl0IGZpbmRzIG5vIGFuY2hvciBhdCBhbGwgYW5kIGxhbmRzIGluIHRoZSB2aWV3cG9ydCdzIGNvcm5lci5cbiAgLy9cbiAgLy8gT25jZSwgb24gbW91bnQ6IGFuIGVsZW1lbnQgaXMgYW5jaG9yZWQgdG8gYSBwb2ludCBmb3IgYXMgbG9uZyBhcyBpdCBpcyBtb3VudGVkLCBzaW5jZSB0aGUgcG9pbnRcbiAgLy8gaXMgd2hlcmUgdGhlIGN1cnNvciB3YXMgd2hlbiB3aGF0ZXZlciBvcGVuZWQgaXQgd2FzIG9wZW5lZC5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gcG9pbnRSZWYuY3VycmVudDtcblxuICAgIGlmICghZWxlbWVudCB8fCAhaXNQb3BvdmVyQ2FwYWJsZShlbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGVsZW1lbnQuc2hvd1BvcG92ZXIoKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoZWxlbWVudC5pc0Nvbm5lY3RlZCkge1xuICAgICAgICBlbGVtZW50LmhpZGVQb3BvdmVyKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRSZWYuY3VycmVudDtcblxuICAgIGlmICghcG9zaXRpb24gfHwgIWVsZW1lbnQgfHwgIWlzUG9wb3ZlckNhcGFibGUoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlbGVtZW50LnNob3dQb3BvdmVyKCk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQuaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgZWxlbWVudC5oaWRlUG9wb3ZlcigpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtwb3NpdGlvbl0pO1xuXG4gIGNvbnN0IGNvbnRlbnQgPSBwb2ludCA/IChcbiAgICA8PlxuICAgICAgey8qIEEgemVyby1zaXplIGFuY2hvciBhdCB0aGUgcG9pbnQsIHNvIGEgY3Vyc29yLWFuY2hvcmVkIGVsZW1lbnQgcG9zaXRpb25zIGxpa2UgYW55IG90aGVyLiAqL31cbiAgICAgIDxkaXZcbiAgICAgICAgcmVmPXtwb2ludFJlZiBhcyBSZWFjdC5SZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+fVxuICAgICAgICBwb3BvdmVyPVwibWFudWFsXCJcbiAgICAgICAgZGF0YS1hbmNob3ItcG9pbnQtdGVzdFxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hbmNob3JQb2ludH1cbiAgICAgICAgc3R5bGU9e1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFthbmNob3JOYW1lUHJvcGVydHldOiBvd25BbmNob3JOYW1lLFxuICAgICAgICAgICAgW3BvaW50WFByb3BlcnR5XTogYCR7cG9pbnQueH1weGAsXG4gICAgICAgICAgICBbcG9pbnRZUHJvcGVydHldOiBgJHtwb2ludC55fXB4YCxcbiAgICAgICAgICB9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXNcbiAgICAgICAgfVxuICAgICAgLz5cblxuICAgICAge2NoaWxkcmVufVxuICAgIDwvPlxuICApIDogKFxuICAgIGNoaWxkcmVuXG4gICk7XG5cbiAgaWYgKGlzQW5jaG9yKSB7XG4gICAgcmV0dXJuIDxhbmNob3JOYW1lQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17b3duQW5jaG9yTmFtZX0+e2NvbnRlbnR9PC9hbmNob3JOYW1lQ29udGV4dC5Qcm92aWRlcj47XG4gIH1cblxuICByZXR1cm4gPD57Y29udGVudH08Lz47XG59O1xuXG5leHBvcnQgY29uc3QgYW5jaG9yUGx1Z2luID0gZ2V0UGx1Z2luPFxuICBBbmNob3JQbHVnaW5Qcm9wcyxcbiAgW1xuICAgIHR5cGVvZiBjbGFzc05hbWVQbHVnaW4sXG4gICAgdHlwZW9mIGNvbG9yUGx1Z2luLFxuICAgIHR5cGVvZiBiYWNrZ3JvdW5kQ29sb3JQbHVnaW4sXG4gICAgdHlwZW9mIGJvcmRlclBsdWdpbixcbiAgICB0eXBlb2YgcGFkZGluZ1BsdWdpbixcbiAgICB0eXBlb2YgbWFyZ2luUGx1Z2luLFxuICAgIHR5cGVvZiBvdmVyZmxvd1BsdWdpbixcbiAgXVxuPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkYW5jaG9yLCAkYW5jaG9yZWRBdCwgJGNsYXNzTmFtZSB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkYW5jaG9yICYmICRhbmNob3JlZEF0ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4geyAkYW5jaG9yOiB1bmRlZmluZWQsICRhbmNob3JlZEF0OiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJGFuY2hvcjogdW5kZWZpbmVkLFxuICAgICRhbmNob3JlZEF0OiB1bmRlZmluZWQsXG5cbiAgICAvLyBSaXNpbmcgdG8gdGhlIHRvcCBsYXllciBpcyBhIHRlY2huaWNhbGl0eSBvZiBwb3NpdGlvbmluZywgYnV0IHRoZSBicm93c2VyIG1ha2VzIGl0IGEgbG9vazpcbiAgICAvLyBjb2xvdXJzIG9mIGl0cyBvd24sIGEgYm9yZGVyLCBwYWRkaW5nLCBhbmQgYSBtYXJnaW4gdGhhdCB3b3VsZCBjZW50ZXIgdGhlIGVsZW1lbnQuIFVuZG8gdGhhdCxcbiAgICAvLyBzbyBhbiBlbGVtZW50IHBvc2l0aW9uZWQgdGhpcyB3YXkgbG9va3MgbGlrZSBpdCBkb2VzIGFueXdoZXJlIGVsc2UsIGFuZCBsZXQgd2hhdGV2ZXIgaXQgc2F5c1xuICAgIC8vIGFib3V0IGl0c2VsZiB3aW4uXG4gICAgLi4uKCRhbmNob3JlZEF0ICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgJGNvbG9yOiBwcm9wcy4kY29sb3IgPz8gXCJpbmhlcml0XCIsXG4gICAgICAkYmFja2dyb3VuZENvbG9yOiBwcm9wcy4kYmFja2dyb3VuZENvbG9yID8/IFwidHJhbnNwYXJlbnRcIixcbiAgICAgICRib3JkZXI6IHsgd2lkdGg6IFwiemVyb1wiLCAuLi5wcm9wcy4kYm9yZGVyIH0sXG4gICAgICAkcGFkZGluZzogcHJvcHMuJHBhZGRpbmcgPz8gXCJ6ZXJvXCIsXG4gICAgICAkbWFyZ2luOiBwcm9wcy4kbWFyZ2luID8/IFwiemVyb1wiLFxuICAgICAgJG92ZXJmbG93OiBwcm9wcy4kb3ZlcmZsb3cgPz8gXCJ2aXNpYmxlXCIsXG4gICAgfSksXG5cbiAgICAkY2xhc3NOYW1lOiBjc3NOYW1lcygkY2xhc3NOYW1lLCB7XG4gICAgICBbc3R5bGVzLmFuY2hvcl06ICEhJGFuY2hvcixcbiAgICAgIFtzdHlsZXMuYW5jaG9yZWRBdF06ICRhbmNob3JlZEF0ICE9PSB1bmRlZmluZWQsXG4gICAgfSksXG5cbiAgICAkd3JhcHBlcjoge1xuICAgICAgQ29tcG9uZW50OiBBbmNob3JXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgcHJvcHM6IHsgaXNBbmNob3I6ICEhJGFuY2hvciwgYW5jaG9yZWRBdDogJGFuY2hvcmVkQXQgfSxcbiAgICB9LFxuICB9O1xufSk7XG5cbmNvbnN0IG1hcmdpblByb3BlcnR5VG93YXJkc0FuY2hvciA9IChwb3NpdGlvbjogQW5jaG9yUG9zaXRpb24pID0+IHtcbiAgaWYgKHBvc2l0aW9uLnN0YXJ0c1dpdGgoXCJib3R0b21cIikpIHtcbiAgICByZXR1cm4gXCJtYXJnaW4tdG9wXCI7XG4gIH1cblxuICBpZiAocG9zaXRpb24uc3RhcnRzV2l0aChcInRvcFwiKSkge1xuICAgIHJldHVybiBcIm1hcmdpbi1ib3R0b21cIjtcbiAgfVxuXG4gIHJldHVybiBwb3NpdGlvbi5zdGFydHNXaXRoKFwicmlnaHRcIikgPyBcIm1hcmdpbi1sZWZ0XCIgOiBcIm1hcmdpbi1yaWdodFwiO1xufTtcblxuY29uc3QgYW5jaG9yTmFtZVByb3BlcnR5ID0gXCItLWFuY2hvci1uYW1lXCI7XG5jb25zdCBnYXBQcm9wZXJ0eSA9IFwiLS1hbmNob3ItZ2FwXCI7XG5jb25zdCBwb3NpdGlvbkFuY2hvclByb3BlcnR5ID0gXCItLWFuY2hvci10YXJnZXRcIjtcbmNvbnN0IHBvc2l0aW9uUHJvcGVydHkgPSBcIi0tYW5jaG9yLXBvc2l0aW9uXCI7XG5jb25zdCBwb2ludFhQcm9wZXJ0eSA9IFwiLS1hbmNob3ItcG9pbnQteFwiO1xuY29uc3QgcG9pbnRZUHJvcGVydHkgPSBcIi0tYW5jaG9yLXBvaW50LXlcIjtcblxuLyoqIEFuY2hvciBuYW1lcyBhcmUgZGFzaGVkIGlkZW50cywgc28gdGhlIGdlbmVyYXRlZCBpZCBoYXMgdG8gbG9zZSBldmVyeXRoaW5nIGVsc2UuICovXG5jb25zdCB0b0FuY2hvck5hbWUgPSAoaWQ6IHN0cmluZykgPT4gYC0tYW5jaG9yLSR7aWQucmVwbGFjZSgvW15hLXpBLVowLTldL2csIFwiXCIpfWA7XG5cbnR5cGUgUG9wb3ZlckNhcGFibGUgPSBIVE1MRWxlbWVudCAmIHsgc2hvd1BvcG92ZXI6IFZvaWRGdW5jdGlvbjsgaGlkZVBvcG92ZXI6IFZvaWRGdW5jdGlvbiB9O1xuXG5jb25zdCBpc1BvcG92ZXJDYXBhYmxlID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogZWxlbWVudCBpcyBQb3BvdmVyQ2FwYWJsZSA9PlxuICB0eXBlb2YgKGVsZW1lbnQgYXMgUGFydGlhbDxQb3BvdmVyQ2FwYWJsZT4pLnNob3dQb3BvdmVyID09PSBcImZ1bmN0aW9uXCI7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvYW5jaG9yL2FuY2hvci5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImFuY2hvclwiOiBcImFuY2hvci1tb2R1bGVfX2FuY2hvcl9fX20tNXViXCIsXG4gIFwiYW5jaG9yZWRBdFwiOiBcImFuY2hvci1tb2R1bGVfX2FuY2hvcmVkQXRfX19VQXJVS1wiLFxuICBcImFuY2hvclBvaW50XCI6IFwiYW5jaG9yLW1vZHVsZV9fYW5jaG9yUG9pbnRfX19zQTFBY1wiXG59OyIsICJpbXBvcnQgdHlwZSB7IEZvY3VzYWJsZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vZm9jdXNhYmxlXCI7XG5cbmV4cG9ydCB0eXBlICRGb2N1c2FibGVQcm9wczxGb2N1c2VkSXRlbT4gPSBSZXF1aXJlZDxGb2N1c2FibGVQbHVnaW5Qcm9wczxGb2N1c2VkSXRlbT4+W1wiJGZvY3VzYWJsZVwiXTtcblxuLyoqXG4gKiBJZGVudGlmaWVzIGEgc2V0IG9mIGZvY3VzYWJsZXMgY29tcGV0aW5nIGZvciBvbmUgZm9jdXNlZCBpdGVtLiBFbGVtZW50cyBqb2luIGl0IGJ5IGRlY2xhcmluZ1xuICogYCRmb2N1c2FibGVgOyBub3RoaW5nIGVudW1lcmF0ZXMgdGhlbSBhdCB0aGUgY2FsbCBzaXRlLlxuICovXG5leHBvcnQgdHlwZSBGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPiA9IHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgaXNLZXlib2FyZE5hdmlnYWJsZTogZmFsc2U7XG4gIGZvY3VzYWJsZTogKGl0ZW06IEZvY3VzZWRJdGVtKSA9PiAkRm9jdXNhYmxlUHJvcHM8Rm9jdXNlZEl0ZW0+O1xufTtcblxuLyoqIFdoaWNoIGFycm93IGtleXMgbW92ZSBmb2N1cyB3aXRoaW4gYSBrZXlib2FyZC1uYXZpZ2FibGUgY29udGV4dC4gKi9cbmV4cG9ydCB0eXBlIEtleWJvYXJkTmF2aWdhdGlvbk9yaWVudGF0aW9uID0gXCJ2ZXJ0aWNhbFwiIHwgXCJob3Jpem9udGFsXCIgfCBcImJvdGhcIjtcblxuLyoqXG4gKiBBIGZvY3VzYWJsZSBjb250ZXh0IHdob3NlIG1lbWJlcnMgYXJlIGFsc28gbmF2aWdhdGVkIHdpdGggYXJyb3cga2V5cywgaW4gdGhlIG9yZGVyIHRoZXkgc3RhdGUuXG4gKiBUaGUgbG93ZXN0IG9yZGVyIG51bWJlciBpcyBmb2N1c2VkIHdoZW4gdGhlIG1lbWJlcnMgYXBwZWFyLCBhbmQgZm9jdXMgcmV0dXJucyB0byB0aGUgZW5jbG9zaW5nXG4gKiBjb250ZXh0IHdoZW4gdGhleSBnbyBhd2F5LlxuICovXG5leHBvcnQgdHlwZSBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+ID0ge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBpc0tleWJvYXJkTmF2aWdhYmxlOiB0cnVlO1xuICByZWFkb25seSBvcmllbnRhdGlvbjogS2V5Ym9hcmROYXZpZ2F0aW9uT3JpZW50YXRpb247XG4gIGZvY3VzYWJsZTogKGl0ZW06IEZvY3VzZWRJdGVtLCBvcmRlck51bWJlcjogbnVtYmVyKSA9PiAkRm9jdXNhYmxlUHJvcHM8Rm9jdXNlZEl0ZW0+O1xufTtcblxuZXhwb3J0IHR5cGUgQW55Rm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbSA9IGFueT4gPVxuICB8IEZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+XG4gIHwgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPjtcblxuY29uc3QgY29udGV4dHNCeUlkID0gbmV3IE1hcDxzdHJpbmcsIEFueUZvY3VzYWJsZUNvbnRleHQ+KCk7XG5cbi8qKlxuICogRGVjbGFyZXMgYSBmb2N1c2FibGUgY29udGV4dC4gVGhlIHNhbWUgaWQgYWx3YXlzIHlpZWxkcyB0aGUgc2FtZSBjb250ZXh0LCBzbyBjYWxsaW5nIHRoaXMgZHVyaW5nXG4gKiByZW5kZXIgaXMgc3RhYmxlIFx1MjAxNCB3aGljaCBpcyB3aGF0IGxldHMgYSBzdXJmYWNlIHdpdGggc2V2ZXJhbCBsaXZlIGluc3RhbmNlcyBuYW1lIG9uZSBjb250ZXh0IHBlclxuICogaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGb2N1c2FibGVDb250ZXh0ID0gPEZvY3VzZWRJdGVtLD4oaWQ6IHN0cmluZyk6IEZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+ID0+XG4gIGdldE9yQ3JlYXRlQ29udGV4dChpZCwgKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQ6IEZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+ID0ge1xuICAgICAgaWQsXG4gICAgICBpc0tleWJvYXJkTmF2aWdhYmxlOiBmYWxzZSxcbiAgICAgIGZvY3VzYWJsZTogKGl0ZW0pID0+ICh7IGNvbnRleHQsIGl0ZW0gfSksXG4gICAgfTtcblxuICAgIHJldHVybiBjb250ZXh0O1xuICB9KTtcblxuZXhwb3J0IHR5cGUgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0T3B0aW9ucyA9IHtcbiAgLyoqXG4gICAqIFdoaWNoIGFycm93IGtleXMgbW92ZSBmb2N1cy4gRG93bndhcmRzIGJ5IGRlZmF1bHQsIGFzIG1vc3Qgc2V0cyBvZiB0aGluZ3MgYXJlIGxhaWQgb3V0OiB0aGVcbiAgICoga2V5cyBvZiB0aGUgb3RoZXIgYXhpcyBhcmUgdGhlbiBsZWZ0IHRvIHdoYXRldmVyIHRoZSBtZW1iZXJzIHdhbnQgdGhlbSBmb3IsIHN1Y2ggYXMgYSBtZW51IHJvd1xuICAgKiBvcGVuaW5nIHRoZSBtZW51IGl0IGhvbGRzIHdpdGggQXJyb3dSaWdodC5cbiAgICovXG4gIHJlYWRvbmx5IG9yaWVudGF0aW9uPzogS2V5Ym9hcmROYXZpZ2F0aW9uT3JpZW50YXRpb247XG59O1xuXG4vKipcbiAqIERlY2xhcmVzIGEgZm9jdXNhYmxlIGNvbnRleHQgd2hvc2UgbWVtYmVycyBhcmUgbmF2aWdhdGVkIHdpdGggYXJyb3cga2V5cy4gQXMgd2l0aFxuICoge0BsaW5rIGdldEZvY3VzYWJsZUNvbnRleHR9LCB0aGUgc2FtZSBpZCBhbHdheXMgeWllbGRzIHRoZSBzYW1lIGNvbnRleHQgXHUyMDE0IHNvIHRoZSBvcHRpb25zIGFyZSB0aGVcbiAqIG9uZXMgdGhlIGZpcnN0IGNhbGwgZm9yIGFuIGlkIHN0YXRlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCA9IDxGb2N1c2VkSXRlbSw+KFxuICBpZDogc3RyaW5nLFxuICBvcHRpb25zOiBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHRPcHRpb25zID0ge30sXG4pOiBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+ID0+XG4gIGdldE9yQ3JlYXRlQ29udGV4dChpZCwgKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQ6IEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbT4gPSB7XG4gICAgICBpZCxcbiAgICAgIGlzS2V5Ym9hcmROYXZpZ2FibGU6IHRydWUsXG4gICAgICBvcmllbnRhdGlvbjogb3B0aW9ucy5vcmllbnRhdGlvbiA/PyBcInZlcnRpY2FsXCIsXG4gICAgICBmb2N1c2FibGU6IChpdGVtLCBvcmRlck51bWJlcikgPT4gKHsgY29udGV4dCwgaXRlbSwgb3JkZXJOdW1iZXIgfSksXG4gICAgfTtcblxuICAgIHJldHVybiBjb250ZXh0O1xuICB9KTtcblxuY29uc3QgZ2V0T3JDcmVhdGVDb250ZXh0ID0gPFQgZXh0ZW5kcyBBbnlGb2N1c2FibGVDb250ZXh0PihpZDogc3RyaW5nLCBjcmVhdGU6ICgpID0+IFQpOiBUID0+IHtcbiAgY29uc3QgZXhpc3RpbmcgPSBjb250ZXh0c0J5SWQuZ2V0KGlkKTtcblxuICBpZiAoZXhpc3RpbmcpIHtcbiAgICByZXR1cm4gZXhpc3RpbmcgYXMgVDtcbiAgfVxuXG4gIGNvbnN0IGNyZWF0ZWQgPSBjcmVhdGUoKTtcblxuICBjb250ZXh0c0J5SWQuc2V0KGlkLCBjcmVhdGVkKTtcblxuICByZXR1cm4gY3JlYXRlZDtcbn07XG4iLCAiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyAkRm9jdXNhYmxlUHJvcHMgfSBmcm9tIFwiLi9nZXQtZm9jdXNhYmxlLWNvbnRleHRcIjtcblxuLyoqXG4gKiBDYXJyaWVzIHRoZSBmb2N1c2FibGUgYW4gZWxlbWVudCBpcywgYXMgZGVjaWRlZCBieSB0aGUgc3VyZmFjZSBpdCByZW5kZXJzIGluIHJhdGhlciB0aGFuIGJ5IHRoZVxuICogZWxlbWVudCBpdHNlbGY6IHdoaWNoIGNvbnRleHQgaXQgY29tcGV0ZXMgaW4sIHdoaWNoIGl0ZW0gaXQgc3RhbmRzIGZvciwgYW5kIHdoZXJlIGl0IHNpdHMgYW1vbmdcbiAqIHRoZSBvdGhlcnMuXG4gKlxuICogQSBzdXJmYWNlIHRoYXQga25vd3MgaXRzIGl0ZW1zIFx1MjAxNCBhIG1lbnUsIGEgdG9vbGJhciBcdTIwMTQgcHJvdmlkZXMgb25lIG9mIHRoZXNlIHBlciBpdGVtOyB3aGF0ZXZlclxuICogZHJhd3MgdGhlIGl0ZW0gYWRvcHRzIGl0IHRocm91Z2gge0BsaW5rIHVzZUZvY3VzYWJsZUl0ZW19IHdoaWxlIGtub3dpbmcgbm90aGluZyBhYm91dCB0aGVcbiAqIHN1cmZhY2UsIHdoaWNoIGlzIHdoYXQgbGV0cyBhIGR1bWIgY29tcG9uZW50IGJlIGtleWJvYXJkLW5hdmlnYWJsZSBpbiBvbmUgc3VyZmFjZSBhbmQgb3JkaW5hcnlcbiAqIGluIGFub3RoZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBjb250ZXh0Rm9yRm9jdXNhYmxlSXRlbSA9IGNyZWF0ZUNvbnRleHQ8JEZvY3VzYWJsZVByb3BzPGFueT4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbi8qKlxuICogVGhlIGAkZm9jdXNhYmxlYCBvZiB0aGUgaXRlbSBhIGNvbXBvbmVudCBkcmF3cywgd2hlbiB0aGUgc3VyZmFjZSBhcm91bmQgaXQgZGVjaWRlZCBvbmUuXG4gKiBgdW5kZWZpbmVkYCBvdXRzaWRlIHN1Y2ggYSBzdXJmYWNlLCB3aGljaCBpcyB3aGF0IG1ha2VzIGFkb3B0aW5nIGl0IGEgbWF0dGVyIG9mIHBhc3NpbmcgaXQgb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgUm93ID0gKHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0pID0+IChcbiAqICAgPENsaWNrYWJsZUxpICRmb2N1c2FibGU9e3VzZUZvY3VzYWJsZUl0ZW0oKX0+e2NoaWxkcmVufTwvQ2xpY2thYmxlTGk+XG4gKiApO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VGb2N1c2FibGVJdGVtID0gKCkgPT4gdXNlQ29udGV4dChjb250ZXh0Rm9yRm9jdXNhYmxlSXRlbSk7XG4iLCAiaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgeyBnZXRIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4uL2hvdmVyYWJsZVwiO1xuaW1wb3J0IHsgdHlwZSBNdXRhYmxlUmVmT2JqZWN0LCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNvbnRleHRJc0JlaW5nSG92ZXJlZEluamVjdGFibGUgfSBmcm9tIFwiLi9fcHJpdmF0ZS9jb250ZXh0LWlzLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZVwiO1xuXG5leHBvcnQgY29uc3QgdXNlTG9jYWxIb3ZlcmFibGUgPSA8RWxlbSBleHRlbmRzIEhUTUxFbGVtZW50PigpID0+IHtcbiAgY29uc3QgaG92ZXJhYmxlQ29udGV4dCA9IHVzZU1lbW8oKCkgPT4gZ2V0SG92ZXJhYmxlQ29udGV4dDxNdXRhYmxlUmVmT2JqZWN0PEVsZW0gfCBudWxsPj4oKSwgW10pO1xuICBjb25zdCByZWYgPSB1c2VSZWY8RWxlbT4obnVsbCk7XG4gIGNvbnN0IGl0ZW1CZWluZ0hvdmVyZWQgPSB1c2VTeW5jSW5qZWN0KGNvbnRleHRJc0JlaW5nSG92ZXJlZEluamVjdGFibGUsIGhvdmVyYWJsZUNvbnRleHQpO1xuXG4gIHJldHVybiB7XG4gICAgcmVmLFxuICAgIGNvbnRleHQ6IGhvdmVyYWJsZUNvbnRleHQuaG92ZXJhYmxlKHJlZiksXG4gICAgY29tcG9uZW50SXNIb3ZlcmVkOiBpdGVtQmVpbmdIb3ZlcmVkLFxuICB9O1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNBQSwrQkFBZ0Q7QUFFaEQsbUJBQStDO0FBd0R0QztBQXBDRixJQUFNLG9CQUFvQixDQUFDLG1CQUFrRDtBQUNsRixRQUFNLCtCQUEyQixxQkFBMEIsTUFBUztBQUNwRSxRQUFNLGlCQUFhLHFCQUFPLGNBQWM7QUFFeEMsOEJBQVUsTUFBTTtBQUNkLGVBQVcsVUFBVTtBQUFBLEVBQ3ZCLENBQUM7QUFFRCw4QkFBVSxNQUFNO0FBQ2QsVUFBTSw0QkFBNEIsQ0FBQyxVQUF3QjtBQUN6RCxVQUFJLFVBQVUseUJBQXlCLFNBQVM7QUFDOUMsbUJBQVcsUUFBUSxLQUFLO0FBQUEsTUFDMUI7QUFBQSxJQUNGO0FBRUEsYUFBUyxpQkFBaUIsZUFBZSx5QkFBeUI7QUFFbEUsV0FBTyxNQUFNLFNBQVMsb0JBQW9CLGVBQWUseUJBQXlCO0FBQUEsRUFDcEYsR0FBRyxDQUFDLENBQUM7QUFFTCxRQUFNLDJCQUF1QiwwQkFBWSxD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LHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHlCQUF5QjtBQUFBLEVBQ3pCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHVCQUF1QjtBQUFBLEVBQ3ZCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHlCQUF5QjtBQUFBLEVBQ3pCLHlCQUF5QjtBQUFBLEVBQ3pCLHVCQUF1QjtBQUFBLEVBQ3ZCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLGlCQUFpQjtBQUFBLEVBQ2pC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QUFBQSxFQUN2Qiw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQyx1QkFBdUI7QUFBQSxFQUN2Qiw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQywwQkFBMEI7QUFBQSxFQUMxQix5QkFBeUI7QUFBQSxFQUN6Qix3QkFBd0I7QUFBQSxFQUN4Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qiw2QkFBNkI7QUFBQSxFQUM3QiwyQkFBMkI7QUFBQSxFQUMzQixpQ0FBaUM7QUFBQSxFQUNqQyw2QkFBNkI7QUFBQSxFQUM3Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1QixtQ0FBbUM7QUFBQSxFQUNuQyw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw0QkFBNEI7QUFBQSxFQUM1Qiw2QkFBNkI7QUFBQSxFQUM3Qiw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyxrQ0FBa0M7QUFBQSxFQUNsQywwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiw0QkFBNEI7QUFBQSxFQUM1QiwyQkFBMkI7QUFBQSxFQUMzQiwwQkFBMEI7QUFBQSxFQUMxQix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6QiwwQkFBMEI7QUFBQSxFQUMxQiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixtQ0FBbUM7QUFBQSxFQUNuQywrQkFBK0I7QUFBQSxFQUMvQiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5QixxQ0FBcUM7QUFBQSxFQUNyQywrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQyxtQ0FBbUM7QUFBQSxFQUNuQyxvQ0FBb0M7QUFBQSxFQUNwQyw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw2QkFBNkI7QUFBQSxFQUM3Qiw0QkFBNEI7QUFBQSxFQUM1QiwyQkFBMkI7QUFBQSxFQUMzQiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiwyQkFBMkI7QUFBQSxFQUMzQiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QixvQ0FBb0M7QUFBQSxFQUNwQyxnQ0FBZ0M7QUFBQSxFQUNoQywrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQixzQ0FBc0M7QUFBQSxFQUN0QyxnQ0FBZ0M7QUFBQSxFQUNoQyxnQ0FBZ0M7QUFBQSxFQUNoQywrQkFBK0I7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SUFBTyxzQkFBUTtBQUFBLEVBQ2xFLFFBQVE7QUFBQSxFQUNSLG9CQUFvQjtBQUFBLEVBQ3BCLDZCQUE2QjtBQUFBLEVBQzdCLHNDQUFzQztBQUFBLEVBQ3RDLCtCQUErQjtBQUFBLEVBQy9CLHdDQUF3QztBQUFBLEVBQ3hDLHNDQUFzQztBQUFBLEVBQ3RDLHFDQUFxQztBQUFBLEVBQ3JDLGdDQUFnQztBQUFBLEVBQ2hDLGlDQUFpQztBQUFBLEVBQ2pDLG1DQUFtQztBQUFBLEVBQ25DLGlDQUFpQztBQUFBLEVBQ2pDLDZCQUE2QjtBQUFBLEVBQzdCLDRCQUE0QjtBQUFBLEVBQzVCLCtCQUErQjtBQUFBLEVBQy9CLDZCQUE2QjtBQUFBLEVBQzdCLG1CQUFtQjtBQUFBLEVBQ25CLDJCQUEyQjtBQUFBLEVBQzNCLHdCQUF3QjtBQUFBLEVBQ3hCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGlCQUFpQjtBQUFBLEVBQ2pCLHlCQUF5QjtBQUFBLEVBQ3pCLHNCQUFzQjtBQUFBLEVBQ3RCLGdCQUFnQjtBQUFBLEVBQ2hCLHdCQUF3QjtBQUFBLEVBQ3hCLHFCQUFxQjtBQUFBLEVBQ3JCLGdCQUFnQjtBQUFBLEVBQ2hCLHdCQUF3QjtBQUFBLEVBQ3hCLHFCQUFxQjtBQUFBLEVBQ3JCLGdCQUFnQjtBQUFBLEVBQ2hCLHdCQUF3QjtBQUFBLEVBQ3hCLHFCQUFxQjtBQUFBLEVBQ3JCLGlCQUFpQjtBQUFBLEVBQ2pCLHlCQUF5QjtBQUFBLEVBQ3pCLHNCQUFzQjtBQUFBLEVBQ3RCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZC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QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1QiwrQkFBK0I7QUFBQSxFQUMvQixrQkFBa0I7QUFBQSxFQUNsQix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4QiwyQkFBMkI7QUFBQSxFQUMzQixpQkFBaUI7QUFBQSxFQUNqQix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2QiwwQkFBMEI7QUFBQSxFQUMxQixpQkFBaUI7QUFBQSxFQUNqQix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2QiwwQkFBMEI7QUFBQSxFQUMxQixpQkFBaUI7QUFBQSxFQUNqQix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2QiwwQkFBMEI7QUFBQSxFQUMxQixpQkFBaUI7QUFBQSxFQUNqQix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2QiwwQkFBMEI7QUFBQSxFQUMxQixpQkFBaUI7QUFBQSxFQUNqQix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2QiwwQkFBMEI7QUFBQSxFQUMxQixpQkFBaUI7QUFBQSxFQUNqQix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2QiwwQkFBMEI7QUFBQSxFQUMxQixpQkFBaUI7QUFBQSxFQUNqQix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2QiwwQkFBMEI7QUFBQSxFQUMxQixpQkFBaUI7QUFBQSxFQUNqQix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2QiwwQkFBMEI7QUFBQSxFQUMxQix3QkFBd0I7QUFBQSxFQUN4Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQyxrQkFBa0I7QUFBQSxFQUNsQix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4QiwyQkFBMkI7QUFBQSxFQUMzQixrQkFBa0I7QUFBQSxFQUNsQix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4QiwyQkFBMkI7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LG9CQUFvQjtBQUFBLEVBQ3BCLGtCQUFrQjtBQUFBLEVBQ2xCLHFCQUFxQjtBQUFBLEVBQ3JCLG1CQUFtQjtBQUFBLEVBQ25CLG9CQUFvQjtBQUFBLEVBQ3BCLGtCQUFrQjtBQUFBLEVBQ2xCLHFCQUFxQjtBQUFBLEVBQ3JCLG1CQUFtQjtBQUFBLEVBQ25CLG9CQUFvQjtBQUFBLEVBQ3BCLG1CQUFtQjtBQUFBLEVBQ25CLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHFCQUFxQjtBQUFBLEVBQ3JCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLHdCQUF3QjtBQUFBLEVBQ3hCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JC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QjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHdCQUF3QjtBQUFBLEVBQ3hCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLG9CQUFvQjtBQUFBLEVBQ3BCLG1CQUFtQjtBQUFBLEVBQ25CLG1CQUFtQjtBQUFBLEVBQ25CLG1CQUFtQjtBQUFBLEVBQ25CLG9CQUFvQjtBQUFBLEVBQ3BCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLGdCQUFnQjtBQUFBLEVBQ2hCLGVBQWU7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LGVBQWEsSUFBSSxJQUFJLE9BQU87QUFFNUIsU0FBTztBQUNUOzs7QUM1RkEsSUFBQUMsaUJBQTBDO0FBYW5DLElBQU0sOEJBQTBCLDhCQUFnRCxNQUFTO0FBYXpGLElBQU0sbUJBQW1CLFVBQU0sMkJBQVcsdUJBQXVCOzs7QUMxQnhFLElBQUFDLHNCQUE4QjtBQUU5QixJQUFBQyxpQkFBdUQ7QUFHaEQsSUFBTSxvQkFBb0IsTUFBZ0M7QUFDL0QsUUFBTSx1QkFBbUIsd0JBQVEsTUFBTSxvQkFBbUQsR0FBRyxDQUFDLENBQUM7QUFDL0YsUUFBTSxVQUFNLHVCQUFhLElBQUk7QUFDN0IsUUFBTSx1QkFBbUIsbUNBQWMsaUNBQWlDLGdCQUFnQjtBQUV4RixTQUFPO0FBQUEsSUFDTDtBQUFBLElBQ0EsU0FBUyxpQkFBaUIsVUFBVSxHQUFHO0FBQUEsSUFDdkMsb0JBQW9CO0FBQUEsRUFDdEI7QUFDRjsiLAogICJuYW1lcyI6IFsiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAidG9Db250ZXh0TWFwIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X3JlYWN0X2RvbSIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZnAiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJzdHlsZXMiLCAiaW1wb3J0X2ZwIiwgImxvZGFzaENhcGl0YWxpemUiLCAiaW1wb3J0X2ZwIiwgImFsaWFzVG9Ob21pbmFsIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiaW1wb3J0X2ZlYXR1cmVfY29yZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfZnAiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X21vYngiLCAibW9kdWxlcyIsICJtb2R1bGVzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImlzUGVyY2VudGFnZSIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiYWxpYXNUb05vbWluYWwiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9tb2J4X3JlYWN0IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2ZwIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3Rlc3RfdXRpbHMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3Rlc3RfdXRpbHMiLCAic3R5bGVzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF90ZXN0X3V0aWxzIiwgInN0eWxlcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0X2RvbSIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcmVhY3RfZG9tIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgInN0b3BQcm9wYWdhdGlvbiIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpc1BvcG92ZXJDYXBhYmxlIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfcmVhY3QiXQp9Cg==