@k8slens/element-components 3.7.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -782,6 +782,7 @@ var background_color_module_default = {
782
782
  "backgroundColor--grey70": "background-color-module__backgroundColor--grey70___V-ZGL",
783
783
  "backgroundColor--grey80Alpha85": "background-color-module__backgroundColor--grey80Alpha85___7oTX3",
784
784
  "backgroundColor--primary": "background-color-module__backgroundColor--primary___OHnrL",
785
+ "backgroundColor--accent": "background-color-module__backgroundColor--accent___dt47f",
785
786
  "backgroundColor--success": "background-color-module__backgroundColor--success___WUR3y",
786
787
  "backgroundColor--notice": "background-color-module__backgroundColor--notice___lVNRd",
787
788
  "backgroundColor--warning": "background-color-module__backgroundColor--warning___ArVvl",
@@ -805,6 +806,7 @@ var background_color_module_default = {
805
806
  "backgroundColor-hover--grey70": "background-color-module__backgroundColor-hover--grey70___k2JKM",
806
807
  "backgroundColor-hover--grey80Alpha85": "background-color-module__backgroundColor-hover--grey80Alpha85___Cdk--",
807
808
  "backgroundColor-hover--primary": "background-color-module__backgroundColor-hover--primary___ztgzA",
809
+ "backgroundColor-hover--accent": "background-color-module__backgroundColor-hover--accent___BAjUQ",
808
810
  "backgroundColor-hover--success": "background-color-module__backgroundColor-hover--success___G30VH",
809
811
  "backgroundColor-hover--notice": "background-color-module__backgroundColor-hover--notice___jWFcC",
810
812
  "backgroundColor-hover--warning": "background-color-module__backgroundColor-hover--warning___vn-BK",
@@ -828,6 +830,7 @@ var background_color_module_default = {
828
830
  "backgroundColor-focus--grey70": "background-color-module__backgroundColor-focus--grey70___vRnL2",
829
831
  "backgroundColor-focus--grey80Alpha85": "background-color-module__backgroundColor-focus--grey80Alpha85___VhyuN",
830
832
  "backgroundColor-focus--primary": "background-color-module__backgroundColor-focus--primary___7Tzku",
833
+ "backgroundColor-focus--accent": "background-color-module__backgroundColor-focus--accent___mtDGO",
831
834
  "backgroundColor-focus--success": "background-color-module__backgroundColor-focus--success___ny3zl",
832
835
  "backgroundColor-focus--notice": "background-color-module__backgroundColor-focus--notice___ovFv1",
833
836
  "backgroundColor-focus--warning": "background-color-module__backgroundColor-focus--warning___qln2u",
@@ -929,6 +932,9 @@ var border_module_default = {
929
932
  "border__color--primary": "border-module__border__color--primary___gfxBO",
930
933
  "border__color--primary--hover": "border-module__border__color--primary--hover___puHDp",
931
934
  "border__color--primary--disabled": "border-module__border__color--primary--disabled___H5FsG",
935
+ "border__color--accent": "border-module__border__color--accent___e-HlD",
936
+ "border__color--accent--hover": "border-module__border__color--accent--hover___S2oVE",
937
+ "border__color--accent--disabled": "border-module__border__color--accent--disabled___y3Bbb",
932
938
  "border__color--success": "border-module__border__color--success___ZurlS",
933
939
  "border__color--success--hover": "border-module__border__color--success--hover___Wy-2M",
934
940
  "border__color--success--disabled": "border-module__border__color--success--disabled___TP3Rv",
@@ -981,6 +987,7 @@ var border_module_default = {
981
987
  "borderTop__color--grey70": "border-module__borderTop__color--grey70___DbC2G",
982
988
  "borderTop__color--grey80Alpha85": "border-module__borderTop__color--grey80Alpha85___kB9-v",
983
989
  "borderTop__color--primary": "border-module__borderTop__color--primary___511jk",
990
+ "borderTop__color--accent": "border-module__borderTop__color--accent___I1KBP",
984
991
  "borderTop__color--success": "border-module__borderTop__color--success___79-uj",
985
992
  "borderTop__color--notice": "border-module__borderTop__color--notice___-dOD0",
986
993
  "borderTop__color--warning": "border-module__borderTop__color--warning___T35kX",
@@ -1015,6 +1022,7 @@ var border_module_default = {
1015
1022
  "borderRight__color--grey70": "border-module__borderRight__color--grey70___tkzAJ",
1016
1023
  "borderRight__color--grey80Alpha85": "border-module__borderRight__color--grey80Alpha85___j45UN",
1017
1024
  "borderRight__color--primary": "border-module__borderRight__color--primary___HIk2A",
1025
+ "borderRight__color--accent": "border-module__borderRight__color--accent___WX2LS",
1018
1026
  "borderRight__color--success": "border-module__borderRight__color--success___RIwaH",
1019
1027
  "borderRight__color--notice": "border-module__borderRight__color--notice___vULaT",
1020
1028
  "borderRight__color--warning": "border-module__borderRight__color--warning___Y2iPi",
@@ -1049,6 +1057,7 @@ var border_module_default = {
1049
1057
  "borderBottom__color--grey70": "border-module__borderBottom__color--grey70___h-CkV",
1050
1058
  "borderBottom__color--grey80Alpha85": "border-module__borderBottom__color--grey80Alpha85___irxoH",
1051
1059
  "borderBottom__color--primary": "border-module__borderBottom__color--primary___J-r5J",
1060
+ "borderBottom__color--accent": "border-module__borderBottom__color--accent___oc4QS",
1052
1061
  "borderBottom__color--success": "border-module__borderBottom__color--success___fxZvR",
1053
1062
  "borderBottom__color--notice": "border-module__borderBottom__color--notice___IIA5R",
1054
1063
  "borderBottom__color--warning": "border-module__borderBottom__color--warning___lsZG-",
@@ -1083,6 +1092,7 @@ var border_module_default = {
1083
1092
  "borderLeft__color--grey70": "border-module__borderLeft__color--grey70___EoyVW",
1084
1093
  "borderLeft__color--grey80Alpha85": "border-module__borderLeft__color--grey80Alpha85___2GIW2",
1085
1094
  "borderLeft__color--primary": "border-module__borderLeft__color--primary___INC8y",
1095
+ "borderLeft__color--accent": "border-module__borderLeft__color--accent___1RS0r",
1086
1096
  "borderLeft__color--success": "border-module__borderLeft__color--success___12Kiu",
1087
1097
  "borderLeft__color--notice": "border-module__borderLeft__color--notice___mhJAn",
1088
1098
  "borderLeft__color--warning": "border-module__borderLeft__color--warning___uV5tW",
@@ -1680,9 +1690,9 @@ __export(test_util_runnable_injectable_exports, {
1680
1690
  });
1681
1691
  var import_test_utils = require("@k8slens/test-utils");
1682
1692
 
1683
- // import-glob:./**/*.global-override-for-injectable.(ts|tsx)/proof-of-uniqueness/be9de094-5d05-4336-b849-3de737c03a33
1693
+ // import-glob:./**/*.global-override-for-injectable.(ts|tsx)/proof-of-uniqueness/5f26dd1f-a70d-468d-aa06-187dfa6e266e
1684
1694
  var modules = [];
1685
- var be9de094_5d05_4336_b849_3de737c03a33_default = modules;
1695
+ var f26dd1f_a70d_468d_aa06_187dfa6e266e_default = modules;
1686
1696
 
1687
1697
  // 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
1688
1698
  var make_sure_drag_and_drop_events_have_time_to_happen_default_override_exports = {};
@@ -1711,24 +1721,24 @@ var remove_css_module_clutter_default_override_default = () => {
1711
1721
  removeCssModuleClutterForUnitTesting();
1712
1722
  };
1713
1723
 
1714
- // import-glob:./**/*.default-override.(ts|tsx)/proof-of-uniqueness/34b9f64f-2ee4-47d3-98ac-bdc47675956a
1724
+ // import-glob:./**/*.default-override.(ts|tsx)/proof-of-uniqueness/8f662aa6-8c17-4936-9ed1-275f28746ed6
1715
1725
  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];
1716
- var b9f64f_2ee4_47d3_98ac_bdc47675956a_default = modules2;
1726
+ var f662aa6_8c17_4936_9ed1_275f28746ed6_default = modules2;
1717
1727
 
1718
1728
  // src/test-util-runnable.injectable.ts
1719
1729
  var testUtilRunnableInjectable = (0, import_test_utils.getTestUtilRunnableForOverrides)({
1720
- globalOverrides: be9de094_5d05_4336_b849_3de737c03a33_default,
1721
- defaultOverrides: b9f64f_2ee4_47d3_98ac_bdc47675956a_default
1730
+ globalOverrides: f26dd1f_a70d_468d_aa06_187dfa6e266e_default,
1731
+ defaultOverrides: f662aa6_8c17_4936_9ed1_275f28746ed6_default
1722
1732
  });
1723
1733
 
1724
- // import-glob:./**/*.injectable.(ts|tsx)/proof-of-uniqueness/2056217b-91f5-4c68-ad97-a2917545d837
1734
+ // import-glob:./**/*.injectable.(ts|tsx)/proof-of-uniqueness/61933973-66f5-4b0b-b919-73e8fb736f66
1725
1735
  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];
1726
- var b_91f5_4c68_ad97_a2917545d837_default = modules3;
1736
+ var f5_4b0b_b919_73e8fb736f66_default = modules3;
1727
1737
 
1728
1738
  // src/feature.ts
1729
1739
  var elementComponentFeature = (0, import_feature_core.getFeature)({
1730
1740
  id: "element-component",
1731
- register: (di) => (0, import_feature_core2.registerInjectablesFromModules)(di, b_91f5_4c68_ad97_a2917545d837_default)
1741
+ register: (di) => (0, import_feature_core2.registerInjectablesFromModules)(di, f5_4b0b_b919_73e8fb736f66_default)
1732
1742
  // No feature dependencies: a design system everyone may install cannot drag
1733
1743
  // Lens features into the closure. The clock the hoverable plugin needs is
1734
1744
  // local, and the platform is read directly.
@@ -2240,6 +2250,10 @@ var color_module_default = {
2240
2250
  "color-hover--primary": "color-module__color-hover--primary___Vt-3f",
2241
2251
  "color-focus--primary": "color-module__color-focus--primary___t5r02",
2242
2252
  "color-disabled--primary": "color-module__color-disabled--primary___0Xsk9",
2253
+ "color--accent": "color-module__color--accent___j-Lfo",
2254
+ "color-hover--accent": "color-module__color-hover--accent___4h3LT",
2255
+ "color-focus--accent": "color-module__color-focus--accent___AjS7Y",
2256
+ "color-disabled--accent": "color-module__color-disabled--accent___ZS9W5",
2243
2257
  "color--success": "color-module__color--success___woTF2",
2244
2258
  "color-hover--success": "color-module__color-hover--success___7EIWc",
2245
2259
  "color-focus--success": "color-module__color-focus--success___KZ0di",
@@ -2940,6 +2954,9 @@ var useKeyboardNavigation = (context, item, orderNumber, element) => {
2940
2954
  const entry = { item, orderNumber: orderNumber ?? 0, element };
2941
2955
  navigation.register(context, entry);
2942
2956
  const focusWhatShouldHaveFocus = () => {
2957
+ if (!document.hasFocus()) {
2958
+ return;
2959
+ }
2943
2960
  const contextInFocus = navigation.contextInFocus();
2944
2961
  if (!contextInFocus) {
2945
2962
  return;
@@ -3426,6 +3443,7 @@ var outline_module_default = {
3426
3443
  "color--grey70": "outline-module__color--grey70___0OGlU",
3427
3444
  "color--grey80Alpha85": "outline-module__color--grey80Alpha85___jRwHn",
3428
3445
  "color--primary": "outline-module__color--primary___Pxcmx",
3446
+ "color--accent": "outline-module__color--accent___jMhIN",
3429
3447
  "color--success": "outline-module__color--success___xjJLn",
3430
3448
  "color--notice": "outline-module__color--notice___CRiYb",
3431
3449
  "color--warning": "outline-module__color--warning___1Oe7W",
@@ -4250,4 +4268,4 @@ var useLocalHoverable = () => {
4250
4268
  useOnOutsideClick,
4251
4269
  usePopoverIsOpen
4252
4270
  });
4253
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vaW5kZXgudHMiLCAiLi4vc3JjL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZG8tZm9jdXMuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvaXRlbS1iZWluZy1mb2N1c2VkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQvZm9jdXNhYmxlLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9lbmFibGVkL2VuYWJsZWQudHMiLCAiLi4vc3JjL3BsdWdpbnMvZW5hYmxlZC9lbmFibGVkLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUtYnktZHJhZ2dpbmcudHMiLCAiLi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9pdGVtLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9ob3ZlcmFibGUvY29tcHV0ZWQtbm93LmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvaXRlbS1iZWluZy1kcmFnZ2VkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvX3NoYXJlZC9kcmFnZ2VkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy90b29sdGlwL3Rvb2x0aXAudHN4IiwgIi4uL3NyYy9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvdG9vbHRpcC90b29sdGlwLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9lbGVtZW50cy9taW5pbWFsLWRpdi50cyIsICIuLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZS50cyIsICIuLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZS5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9wYWRkaW5nL3BhZGRpbmcudHMiLCAiLi4vc3JjL3BsdWdpbnMvcGFkZGluZy9wYWRkaW5nLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvci50cyIsICIuLi9zcmMvcGx1Z2lucy9iYWNrZ3JvdW5kLWNvbG9yL2JhY2tncm91bmQtY29sb3IubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvYm9yZGVyL2JvcmRlci50cyIsICIuLi9zcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2JvcmRlci9nZXQtY29ybmVyLXN0eWxlcy50cyIsICIuLi9zcmMvcGx1Z2lucy9ib3JkZXIvZ2V0LXNpZGUtc3R5bGVzLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvbnQvZm9udC50cyIsICIuLi9zcmMvcGx1Z2lucy9mb250L2ZvbnQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvYm94LXNoYWRvdy9ib3gtc2hhZG93LnRzIiwgIi4uL3NyYy9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvdy5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50cy50cyIsICIuLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50cy5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9yZWYvcmVmLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9jbGFzcy1uYW1lL2NsYXNzLW5hbWUudHMiLCAiLi4vc3JjL3BsdWdpbnMvcmVsYXRpdmUvcmVsYXRpdmUudHMiLCAiLi4vc3JjL3BsdWdpbnMvcmVsYXRpdmUvcmVsYXRpdmUubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZ2V0LWRyYWdnYWJsZS1jb250ZXh0LnRzIiwgIi4uL3NyYy9mZWF0dXJlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2NsaWNrYWJsZS9pcy1tYWMuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9jbGlja2FibGUvb24tcmlnaHQtdHJpZ2dlci5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQva2V5Ym9hcmQtbmF2aWdhdGlvbi1zdGF0ZS5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvX3ByaXZhdGUvY29udGV4dC1pcy1iZWluZy1ob3ZlcmVkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3Rlc3QtdXRpbC1ydW5uYWJsZS5pbmplY3RhYmxlLnRzIiwgImltcG9ydC1nbG9iOi4vKiovKi5nbG9iYWwtb3ZlcnJpZGUtZm9yLWluamVjdGFibGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy9iZTlkZTA5NC01ZDA1LTQzMzYtYjg0OS0zZGU3MzdjMDNhMzMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvbWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW4vbWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW4uZGVmYXVsdC1vdmVycmlkZS50cyIsICIuLi9zcmMvcGx1Z2lucy90b29sdGlwL3Rvb2x0aXAtZGVsYXkvdG9vbHRpcC1kZWxheS5kZWZhdWx0LW92ZXJyaWRlLnRzIiwgIi4uL3NyYy9yZW1vdmUtY3NzLW1vZHVsZS1jbHV0dGVyLmRlZmF1bHQtb3ZlcnJpZGUudHMiLCAiaW1wb3J0LWdsb2I6Li8qKi8qLmRlZmF1bHQtb3ZlcnJpZGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy8zNGI5ZjY0Zi0yZWU0LTQ3ZDMtOThhYy1iZGM0NzY3NTk1NmEiLCAiaW1wb3J0LWdsb2I6Li8qKi8qLmluamVjdGFibGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy8yMDU2MjE3Yi05MWY1LTRjNjgtYWQ5Ny1hMjkxNzU0NWQ4MzciLCAiLi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplcy50cyIsICIuLi9zcmMvZWxlbWVudHMudHMiLCAiLi4vc3JjL3BsdWdpbnMvZmxleC9mbGV4Lm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZsZXgvZmxleC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmlkL2dyaWQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZ3JpZC9ncmlkLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3N0eWxlL3N0eWxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hlaWdodC9oZWlnaHQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvaGVpZ2h0L2hlaWdodC50cyIsICIuLi9zcmMvcGx1Z2lucy9jb2xvci9jb2xvci50cyIsICIuLi9zcmMvcGx1Z2lucy9jb2xvci9jb2xvci5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9ncmFkaWVudC9ncmFkaWVudC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmFkaWVudC9ncmFkaWVudC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9kcmFnZ2FibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZHJhZ2dhYmxlLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2Ryb3BwYWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy90cmFuc2l0aW9uL3RyYW5zaXRpb24udHMiLCAiLi4vc3JjL3BsdWdpbnMvdHJhbnNpdGlvbi90cmFuc2l0aW9uLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL29mZnNldC9vZmZzZXQudHMiLCAiLi4vc3JjL3BsdWdpbnMvb2Zmc2V0L29mZnNldC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9vZmZzZXQtY2hpbGRyZW4vb2Zmc2V0LWNoaWxkcmVuLnRzIiwgIi4uL3NyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW4ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvaGlkZGVuL2hpZGRlbi50cyIsICIuLi9zcmMvcGx1Z2lucy9oaWRkZW4vaGlkZGVuLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL21hcmdpbi9tYXJnaW4udHMiLCAiLi4vc3JjL3BsdWdpbnMvbWFyZ2luL21hcmdpbi5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy92aXN1YWxseS1oaWRkZW4vdmlzdWFsbHktaGlkZGVuLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3Zpc3VhbGx5LWhpZGRlbi92aXN1YWxseS1oaWRkZW4ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3cudHMiLCAiLi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3cubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZmxleC1jaGlsZC9mbGV4LWNoaWxkLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZsZXgtY2hpbGQvZmxleC1jaGlsZC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmF5c2NhbGUvZ3JheXNjYWxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGUubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvdGludC90aW50LnRzIiwgIi4uL3NyYy9wbHVnaW5zL3RpbnQvdGludC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC50cyIsICIuLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZm9jdXNhYmxlLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvdXNlLXVwZGF0ZS13aGVuLXByb3BzLWNoYW5nZS50c3giLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19wcml2YXRlL3VzZS1jbGVhbnVwLW9uLXVubW91bnQudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9fcHJpdmF0ZS91c2Uta2V5Ym9hcmQtbmF2aWdhdGlvbi50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvaGFuZGxlLWZvY3VzLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9fcHJpdmF0ZS9oYW5kbGUtYmx1ci50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvdXNlLXByb2dyYW1tYXRpYy1mb2N1c2luZy50cyIsICIuLi9zcmMvcGx1Z2lucy9hcmVhL2FyZWEudHMiLCAiLi4vc3JjL3BsdWdpbnMvYXJlYS1jb250ZW50L2FyZWEtY29udGVudC50cyIsICIuLi9zcmMvcGx1Z2lucy9zaXplL3NpemUudHMiLCAiLi4vc3JjL3BsdWdpbnMvY3Vyc29yL2N1cnNvci5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9jbGlja2FibGUvY2xpY2thYmxlLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9kaXNwbGF5LWNvbnRlbnRzL2Rpc3BsYXktY29udGVudHMubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzLnRzeCIsICIuLi9zcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ24ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvdGV4dC1hbGlnbi90ZXh0LWFsaWduLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2Jsb2NrL2Jsb2NrLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2Jsb2NrL2Jsb2NrLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmUudHMiLCAiLi4vc3JjL3BsdWdpbnMvb3V0bGluZS9vdXRsaW5lLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL3BvcG92ZXIvcG9wb3Zlci50c3giLCAiLi4vc3JjL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2Zsb2F0aW5nL2Zsb2F0aW5nLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9pbnZpc2libGUtYmFja2Ryb3AvaW52aXNpYmxlLWJhY2tkcm9wLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ludmlzaWJsZS1iYWNrZHJvcC9pbnZpc2libGUtYmFja2Ryb3AudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2Ryb3AtZG93bi1tZW51L2Ryb3AtZG93bi1tZW51LnRzeCIsICIuLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9nZXQtZm9jdXNhYmxlLWNvbnRleHQudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9mb2N1c2FibGUtaXRlbS1jb250ZXh0LnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvbG9jYWwtaG92ZXJhYmxlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgdHlwZSB7IEJsb2NrUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ibG9jay9ibG9ja1wiO1xuZXhwb3J0IHR5cGUgeyBBbmNob3JlZEF0LCBBbmNob3JQbHVnaW5Qcm9wcywgQW5jaG9yUG9zaXRpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yXCI7XG5leHBvcnQgeyB1c2VPbk91dHNpZGVDbGljayB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29uLW91dHNpZGUtY2xpY2svb24tb3V0c2lkZS1jbGlja1wiO1xuZXhwb3J0IHR5cGUgeyBPbk91dHNpZGVDbGlja1BsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrXCI7XG5leHBvcnQgdHlwZSB7IERyb3BEb3duTWVudVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZHJvcC1kb3duLW1lbnUvZHJvcC1kb3duLW1lbnVcIjtcbmV4cG9ydCB0eXBlIHsgVGV4dEFsaWduUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ25cIjtcblxuZXhwb3J0IHsgdHlwZSBEb0ZvY3VzLCB0eXBlIERvRm9jdXNGb3IsIGRvRm9jdXNGb3JJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9kby1mb2N1cy5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB7IGl0ZW1CZWluZ0ZvY3VzZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9pdGVtLWJlaW5nLWZvY3VzZWQuaW5qZWN0YWJsZVwiO1xuZXhwb3J0IHR5cGUgeyBJdGVtQmVpbmdGb2N1c2VkIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2l0ZW0tYmVpbmctZm9jdXNlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgRm9jdXNhYmxlUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZm9jdXNhYmxlXCI7XG5leHBvcnQgeyB0eXBlIEVuYWJsZWRQbHVnaW5Qcm9wcywgaXNEaXNhYmxlZCB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2VuYWJsZWQvZW5hYmxlZFwiO1xuZXhwb3J0IHR5cGUgeyBHcmF5c2NhbGVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGVcIjtcbmV4cG9ydCB0eXBlIHsgVGludFBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdGludC90aW50XCI7XG5leHBvcnQgdHlwZSB7IEZhZGVkUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZFwiO1xuXG5leHBvcnQgdHlwZSB7IFNpZGVTdHlsZXMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvZ2V0LXNpZGUtc3R5bGVzXCI7XG5leHBvcnQgdHlwZSB7IENvcm5lclN0eWxlcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JvcmRlci9nZXQtY29ybmVyLXN0eWxlc1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEJhY2tncm91bmRDb2xvclBsdWdpblByb3BzLFxuICBCYWNrZ3JvdW5kQ29sb3IsXG4gIEJhY2tncm91bmRDb2xvckFsaWFzLFxuICAkQmFja2dyb3VuZENvbG9yUHJvcHMsXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvclwiO1xuXG5leHBvcnQgdHlwZSB7XG4gIE91dGxpbmVXaWR0aCxcbiAgJE91dGxpbmVQcm9wcyxcbiAgT3V0bGluZVBsdWdpblByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmVcIjtcblxuZXhwb3J0IHR5cGUge1xuICBGbG9hdGluZ0NvbnRlbnRBcmdzLFxuICBGbG9hdGluZ0NvbnRlbnRGYWN0b3J5LFxuICAkRmxvYXRpbmdQcm9wcyxcbiAgRmxvYXRpbmdQbHVnaW5Qcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZmxvYXRpbmcvZmxvYXRpbmdcIjtcblxuZXhwb3J0IHR5cGUgeyBQYWRkaW5nUGx1Z2luUHJvcHMsIERpcmVjdGlvbmFsUGFkZGluZyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3BhZGRpbmcvcGFkZGluZ1wiO1xuZXhwb3J0IHR5cGUgeyBNYXJnaW5QbHVnaW5Qcm9wcywgRGlyZWN0aW9uYWxNYXJnaW4gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9tYXJnaW4vbWFyZ2luXCI7XG5leHBvcnQgdHlwZSB7IE92ZXJmbG93UGx1Z2luUHJvcHMsIE92ZXJmbG93IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3dcIjtcblxuZXhwb3J0IHR5cGUgeyBCb3hTaGFkb3dQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvd1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEhvdmVyYWJsZUJ5RHJhZ2dpbmdQbHVnaW5Qcm9wcyxcbiAgJEhvdmVyYWJsZUJ5RHJhZ2dpbmdQcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZS1ieS1kcmFnZ2luZ1wiO1xuZXhwb3J0IHsgaG92ZXJhYmxlQnlEcmFnZ2luZ1BsdWdpbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUtYnktZHJhZ2dpbmdcIjtcblxuZXhwb3J0IHR5cGUge1xuICBIb3ZlcmFibGVDb250ZXh0LFxuICAkSG92ZXJhYmxlUHJvcHMsXG4gIEhvdmVyYWJsZUNvbnRleHRPcHRpb25zLFxuICBIb3ZlcmFibGVQbHVnaW5Qcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZVwiO1xuZXhwb3J0IHsgaG92ZXJhYmxlUGx1Z2luLCBnZXRIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZVwiO1xuZXhwb3J0IHsgaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2l0ZW0tYmVpbmctaG92ZXJlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgUmVmUGx1Z2luUHJvcHMsICRSZWZQcm9wLCBSZWZMaWtlIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvcmVmL3JlZlwiO1xuXG5leHBvcnQgdHlwZSB7IEFic29sdXRlUGx1Z2luUHJvcHMsIEFic29sdXRlUG9zaXRpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZVwiO1xuZXhwb3J0IHR5cGUgeyBIaWRkZW5QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hpZGRlbi9oaWRkZW5cIjtcbmV4cG9ydCB0eXBlIHsgTm9Qb2ludGVyRXZlbnRzUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50c1wiO1xuZXhwb3J0IHR5cGUgeyBPZmZzZXRQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29mZnNldC9vZmZzZXRcIjtcbmV4cG9ydCB0eXBlIHsgT2Zmc2V0Q2hpbGRyZW5QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW5cIjtcbmV4cG9ydCB0eXBlIHsgUmVsYXRpdmVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3JlbGF0aXZlL3JlbGF0aXZlXCI7XG5leHBvcnQgdHlwZSB7IFRyYW5zaXRpb25QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3RyYW5zaXRpb24vdHJhbnNpdGlvblwiO1xuZXhwb3J0IHR5cGUgeyBWaXN1YWxseUhpZGRlblBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdmlzdWFsbHktaGlkZGVuL3Zpc3VhbGx5LWhpZGRlblwiO1xuXG5leHBvcnQgdHlwZSB7ICRDdXJzb3JQcm9wcywgQ3Vyc29yUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yXCI7XG5leHBvcnQgdHlwZSB7IERpc3BsYXlDb250ZW50c1BsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzXCI7XG5cbmV4cG9ydCB7IGl0ZW1CZWluZ0RyYWdnZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2l0ZW0tYmVpbmctZHJhZ2dlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgVG9vbHRpcFBsdWdpblByb3BzLCAkVG9vbHRpcFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdG9vbHRpcC90b29sdGlwXCI7XG5leHBvcnQgeyBTdHlsZWRUb29sdGlwQ29udGFpbmVyLCBnZXRUb29sdGlwUHJvcHMsIHN1cHByZXNzVG9vbHRpcCB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcFwiO1xuXG5leHBvcnQgdHlwZSB7IERyYWdnYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcbmV4cG9ydCB7IGdldERyYWdnYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IHsgZWxlbWVudENvbXBvbmVudEZlYXR1cmUgfSBmcm9tIFwiLi9zcmMvZmVhdHVyZVwiO1xuXG5leHBvcnQgdHlwZSB7IFNpemVQbHVnaW5Qcm9wcywgJFNpemVQcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3NpemUvc2l6ZVwiO1xuXG5leHBvcnQgdHlwZSB7IFdpZHRoUGx1Z2luUHJvcHMsICRXaWR0aFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvd2lkdGgvd2lkdGhcIjtcblxuZXhwb3J0IHR5cGUgeyBTdHlsZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvc3R5bGUvc3R5bGVcIjtcblxuZXhwb3J0IHR5cGUgeyBIZWlnaHRQbHVnaW5Qcm9wcywgJEhlaWdodFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaGVpZ2h0L2hlaWdodFwiO1xuXG5leHBvcnQgdHlwZSB7IEZvbnRQbHVnaW5Qcm9wcywgRm9udFNpemUsIEZvbnRMaW5lSGVpZ2h0IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9udC9mb250XCI7XG5cbmV4cG9ydCB0eXBlIHsgR3JpZFBsdWdpblByb3BzLCBHcmlkUHJvcHMsIEdyaWRDb2x1bW5zIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZ3JpZC9ncmlkXCI7XG5cbmV4cG9ydCB0eXBlIHtcbiAgRHJhZ2dhYmxlUGx1Z2luUHJvcHMsXG4gIERyb3BwYWJsZVBsdWdpblByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IHR5cGUgeyBDb2xvclBsdWdpblByb3BzLCAkQ29sb3JQcm9wcywgVGV4dENvbG9yLCBUZXh0Q29sb3JBbGlhcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2NvbG9yL2NvbG9yXCI7XG5leHBvcnQgdHlwZSB7IENsYXNzTmFtZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCB0eXBlIHtcbiAgQm9yZGVyUGx1Z2luUHJvcHMsXG4gIEJvcmRlckNvbG9yQWxpYXMsXG4gIEJvcmRlckNvbG9yLFxuICAkQm9yZGVyUHJvcHMsXG4gICRCb3JkZXJDb2xvclByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyXCI7XG5cbmV4cG9ydCB0eXBlIHsgQm9yZGVyUmFkaXVzU2l6ZSwgQm9yZGVyV2lkdGgsIEJvcmRlclNpZGUgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvdHlwZXNcIjtcblxuZXhwb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplc1wiO1xuZXhwb3J0IHsgdFNoaXJ0U2l6ZUluUGl4ZWxzLCBzaXplVW5pdEluUGl4ZWxzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplc1wiO1xuXG5leHBvcnQgdHlwZSB7IERpcmVjdGlvbiwgU2hvcnREaXJlY3Rpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9fc2hhcmVkL2RpcmVjdGlvbnNcIjtcbmV4cG9ydCB0eXBlIHsgQ29sb3IgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9fc2hhcmVkL2NvbG9yc1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIENsaWNrSGFuZGxlcixcbiAgQ2xpY2tIYW5kbGVyRGV0YWlscyxcbiAgQ2xpY2tQbHVnaW5Qcm9wcyxcbiAgUG9zaXRpb24yZCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvY2xpY2thYmxlL2NsaWNrYWJsZVwiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEZsZXhQbHVnaW5Qcm9wcyxcbiAgSG9yaXpvbnRhbEZsZXhQcm9wcyxcbiAgTWF4aW1hbEZsZXhQcm9wcyxcbiAgU2ltcGxlRmxleFByb3AsXG4gIFZlcnRpY2FsRmxleFByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mbGV4L2ZsZXhcIjtcblxuaW1wb3J0IHtcbiAgcmVtb3ZlQ3NzTW9kdWxlQ2x1dHRlckZvclVuaXRUZXN0aW5nLFxuICBzaG93Q3NzTW9kdWxlQ2x1dHRlckZvclByb2R1Y3Rpb24sXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuXG5leHBvcnQgeyByZW1vdmVDc3NNb2R1bGVDbHV0dGVyRm9yVW5pdFRlc3RpbmcsIHNob3dDc3NNb2R1bGVDbHV0dGVyRm9yUHJvZHVjdGlvbiB9O1xuXG5leHBvcnQge1xuICBDbGlja2FibGVEaXYsXG4gIE5hdixcbiAgU3ZnLFxuICBEaXYsXG4gIEJ1dHRvbixcbiAgSSxcbiAgSW5wdXQsXG4gIEZvcm0sXG4gIFNwYW4sXG4gIFRleHRBcmVhLFxuICBBLFxuICBDb2RlLFxuICBQcmUsXG4gIEgxLFxuICBIMixcbiAgSDMsXG4gIEg0LFxuICBINSxcbiAgSDYsXG4gIFAsXG4gIENsaWNrYWJsZUxpLFxuICBMaSxcbiAgT2wsXG4gIFVsLFxuICBUaCxcbiAgVGQsXG4gIFRyLFxuICBUYWJsZSxcbiAgTGFiZWwsXG4gIFRCb2R5LFxuICBEaWFsb2csXG4gIENhbnZhcyxcbiAgSW1nLFxufSBmcm9tIFwiLi9zcmMvZWxlbWVudHNcIjtcblxuZXhwb3J0IHR5cGUge1xuICBDb21tb25Qcm9wcyxcbiAgQ2xpY2thYmxlRGl2UHJvcHMsXG4gIENsaWNrYWJsZUxpUHJvcHMsXG4gIE5hdlByb3BzLFxuICBTdmdQcm9wcyxcbiAgRGl2UHJvcHMsXG4gIEJ1dHRvblByb3BzLFxuICBJUHJvcHMsXG4gIElucHV0UHJvcHMsXG4gIEZvcm1Qcm9wcyxcbiAgU3BhblByb3BzLFxuICBUZXh0QXJlYVByb3BzLFxuICBBUHJvcHMsXG4gIENvZGVQcm9wcyxcbiAgUHJlUHJvcHMsXG4gIEgxUHJvcHMsXG4gIEgyUHJvcHMsXG4gIEgzUHJvcHMsXG4gIEg0UHJvcHMsXG4gIEg1UHJvcHMsXG4gIEg2UHJvcHMsXG4gIFBQcm9wcyxcbiAgTGlQcm9wcyxcbiAgT2xQcm9wcyxcbiAgVWxQcm9wcyxcbiAgVGhQcm9wcyxcbiAgVGRQcm9wcyxcbiAgVHJQcm9wcyxcbiAgVGFibGVQcm9wcyxcbiAgTGFiZWxQcm9wcyxcbiAgVEJvZHlQcm9wcyxcbiAgRGlhbG9nUHJvcHMsXG4gIENhbnZhc1Byb3BzLFxuICBJbWdQcm9wcyxcbn0gZnJvbSBcIi4vc3JjL2VsZW1lbnRzXCI7XG5cbmV4cG9ydCB7XG4gIGdldEZvY3VzYWJsZUNvbnRleHQsXG4gIGdldEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuZXhwb3J0IHR5cGUge1xuICAkRm9jdXNhYmxlUHJvcHMsXG4gIEFueUZvY3VzYWJsZUNvbnRleHQsXG4gIEZvY3VzYWJsZUNvbnRleHQsXG4gIEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCxcbiAgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0T3B0aW9ucyxcbiAgS2V5Ym9hcmROYXZpZ2F0aW9uT3JpZW50YXRpb24sXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9nZXQtZm9jdXNhYmxlLWNvbnRleHRcIjtcbmV4cG9ydCB7IGNvbnRleHRGb3JGb2N1c2FibGVJdGVtLCB1c2VGb2N1c2FibGVJdGVtIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2ZvY3VzYWJsZS1pdGVtLWNvbnRleHRcIjtcbmV4cG9ydCB7IHVzZUNsb3NlUG9wb3ZlciwgdXNlUG9wb3ZlcklzT3BlbiwgY29udGV4dEZvckNsb3NpbmdQb3BvdmVyIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyXCI7XG5leHBvcnQgeyB1c2VMb2NhbEhvdmVyYWJsZSB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvbG9jYWwtaG92ZXJhYmxlXCI7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luLCB0eXBlIENvbnRyaWJ1dGVQcm9wcyB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IHR5cGUgT25PdXRzaWRlQ2xpY2tQbHVnaW5Qcm9wcyA9IHtcbiAgcmVhZG9ubHkgY2hpbGRyZW4/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+IHwgdW5kZWZpbmVkLFxuICBpdGVtOiB1bmtub3duLFxuICBvcmRlck51bWJlcjogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwsXG4pOiBLZXlib2FyZE5hdmlnYXRpb24gPT4ge1xuICBjb25zdCBuYXZpZ2F0aW9uID0gdXNlU3luY0luamVjdChrZXlib2FyZE5hdmlnYXRpb25TdGF0ZUluamVjdGFibGUpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFjb250ZXh0IHx8ICFlbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW50cnk6IE5hdmlnYWJsZUVudHJ5ID0geyBpdGVtLCBvcmRlck51bWJlcjogb3JkZXJOdW1iZXIgPz8gMCwgZWxlbWVudCB9O1xuXG4gICAgbmF2aWdhdGlvbi5yZWdpc3Rlcihjb250ZXh0LCBlbnRyeSk7XG5cbiAgICBjb25zdCBmb2N1c1doYXRTaG91bGRIYXZlRm9jdXMgPSAoKSA9PiB7XG4gICAgICBjb25zdCBjb250ZXh0SW5Gb2N1cyA9IG5hdmlnYXRpb24uY29udGV4dEluRm9jdXMoKTtcblxuICAgICAgaWYgKCFjb250ZXh0SW5Gb2N1cykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVudHJpZXMgPSBuYXZpZ2F0aW9uLnNvcnRlZEVudHJpZXNPZihjb250ZXh0SW5Gb2N1cyk7XG5cbiAgICAgIC8vIFRoZSBtZW1iZXIgdGhhdCBjb250ZXh0IHdhcyBsZWZ0IG9uLCBzbyBzdGVwcGluZyBpbnRvIHNvbWV0aGluZyBhbmQgYmFjayBvdXQgb2YgaXQgbGFuZHNcbiAgICAgIC8vIHdoZXJlIGl0IHN0YXJ0ZWQuIE9ubHkgdGhlIGxvd2VzdCBvcmRlciBudW1iZXIgd2hlbiBpdCB3YXMgbmV2ZXIgbGVmdCBhbnl3aGVyZTogdGhhdCBpcyBhXG4gICAgICAvLyBzZXQgb2YgbWVtYmVycyBhcHBlYXJpbmcgcmF0aGVyIHRoYW4gb25lIGJlaW5nIHJldHVybmVkIHRvIFx1MjAxNCBhbmQgYSBzZXQgdGhhdCBsZWF2ZXMgZm9jdXNcbiAgICAgIC8vIHdoZXJlIGl0IGlzIGFzIGl0IGFwcGVhcnMgaGFzIG5vdGhpbmcgdG8gb2ZmZXIgdW50aWwgb25lIG9mIGl0cyBtZW1iZXJzIGhhcyBoYWQgZm9jdXMuXG4gICAgICBjb25zdCBpdGVtSW5Gb2N1cyA9IG5hdmlnYXRpb24uaXRlbUluRm9jdXNPZihjb250ZXh0SW5Gb2N1cyk7XG4gICAgICBjb25zdCB0b0ZvY3VzID1cbiAgICAgICAgZW50cmllcy5maW5kKChjYW5kaWRhdGUpID0+IGNhbmRpZGF0ZS5pdGVtID09PSBpdGVtSW5Gb2N1cykgPz9cbiAgICAgICAgKGNvbnRleHRJbkZvY3VzLnRha2VzRm9jdXNBc0l0QXBwZWFycyA/IGVudHJpZXNbMF0gOiB1bmRlZmluZWQpO1xuXG4gICAgICBpZiAodG9Gb2N1cz8uZWxlbWVudC5pc0Nvbm5lY3RlZCAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSB0b0ZvY3VzLmVsZW1lbnQpIHtcbiAgICAgICAgdG9Gb2N1cy5lbGVtZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIERlZmVycmVkIHNvIHRoYXQgZXZlcnl0aGluZyBhcHBlYXJpbmcgdG9nZXRoZXIgaGFzIHJlZ2lzdGVyZWQsIGFuZCB0aGUgbG93ZXN0IG9yZGVyIG51bWJlciBvZlxuICAgIC8vIHRoZSB3aG9sZSBzZXQgd2lucyByYXRoZXIgdGhhbiB3aGljaGV2ZXIgYXBwZWFyZWQgZmlyc3QuXG4gICAgdm9pZCBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZvY3VzV2hhdFNob3VsZEhhdmVGb2N1cyk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbmF2aWdhdGlvbi5kZXJlZ2lzdGVyKGNvbnRleHQsIGVudHJ5KTtcblxuICAgICAgdm9pZCBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZvY3VzV2hhdFNob3VsZEhhdmVGb2N1cyk7XG4gICAgfTtcbiAgfSwgW25hdmlnYXRpb24sIGNvbnRleHQsIGl0ZW0sIG9yZGVyTnVtYmVyLCBlbGVtZW50XSk7XG5cbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgcmV0dXJuIG5vS2V5Ym9hcmROYXZpZ2F0aW9uO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBXaGljaCBtZW1iZXIgdGhlIGNvbnRleHQgaXMgb24sIHJlbWVtYmVyZWQgZm9yIGFzIGxvbmcgYXMgaXRzIG1lbWJlcnMgYXJlIHRoZXJlOiBpdCBpcyB3aGF0XG4gICAgLy8gZm9jdXMgcmV0dXJucyB0byB3aGVuIHNvbWV0aGluZyB0aGF0IHRvb2sgZm9jdXMgb3ZlciBnb2VzIGF3YXkgYWdhaW4uXG4gICAgb25Gb2N1czogKCkgPT4gbmF2aWdhdGlvbi5ub3RlSXRlbUluRm9jdXMoY29udGV4dCwgaXRlbSksXG5cbiAgICAvLyBXaGVyZSB0aGUgcG9pbnRlciBnb2VzLCBmb2N1cyBnb2VzOiB0aGUgbWVtYmVyIHVuZGVyIGl0IGJlY29tZXMgdGhlIGZvY3VzZWQgb25lLCBzbyBhcnJvd2luZ1xuICAgIC8vIG9uIGZyb20gdGhlcmUgY29udGludWVzIGZyb20gd2hhdCB0aGUgdXNlciBpcyBsb29raW5nIGF0IHJhdGhlciB0aGFuIGZyb20gd2hlcmV2ZXIgdGhlXG4gICAgLy8ga2V5Ym9hcmQgd2FzIGxlZnQuIFdoaWNoZXZlciBvZiB0aGUgdHdvIG1vdmVkIGxhc3QgZGVjaWRlcywgd2hpY2ggaXMgd2h5IHRoaXMgYW5zd2VycyB0byB0aGVcbiAgICAvLyBwb2ludGVyIG1vdmluZyBhcyB3ZWxsIGFzIHRvIGl0IGFycml2aW5nIFx1MjAxNCB0aGUga2V5Ym9hcmQgbWF5IGhhdmUgdGFrZW4gZm9jdXMgZWxzZXdoZXJlIHdoaWxlXG4gICAgLy8gdGhlIHBvaW50ZXIgcmVzdGVkIHdoZXJlIGl0IHdhcywgYW5kIG1vdmluZyBpdCBhdCBhbGwgaXMgdGhlIHVzZXIgcG9pbnRpbmcgYWdhaW4uXG4gICAgLy9cbiAgICAvLyBUaGUgZWxlbWVudCBjb21lcyBmcm9tIHRoZSBldmVudCByYXRoZXIgdGhhbiBmcm9tIHRoZSByZW5kZXIgdGhpcyBoYW5kbGVyIHdhcyBjcmVhdGVkIGluOlxuICAgIC8vIHRoZSBoYW5kbGVyIHRoZSBET00gZW5kcyB1cCB3aXRoIGlzIHRoZSBvbmUgZnJvbSB0aGUgZmlyc3QgcmVuZGVyLCB3aGVuIHRoZXJlIHdhcyBubyBlbGVtZW50XG4gICAgLy8geWV0IFx1MjAxNCBSZWFjdCBoYXMgbm8gcmVhc29uIHRvIHJlbmRlciB0aGUgZWxlbWVudCBhZ2FpbiBmb3IgYSB3cmFwcGVyJ3Mgb3duIHN0YXRlLlxuICAgIGZvY3VzV2hhdFRoZVBvaW50ZXJJc09uOiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGhvdmVyZWQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gaG92ZXJlZCkge1xuICAgICAgICBob3ZlcmVkLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIG9uS2V5RG93bjogKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBzdGVwID0gc3RlcE9mKGV2ZW50LmtleSwgY29udGV4dC5vcmllbnRhdGlvbik7XG5cbiAgICAgIGlmIChzdGVwID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlbnRyaWVzID0gbmF2aWdhdGlvbi5zb3J0ZWRFbnRyaWVzT2YoY29udGV4dCk7XG5cbiAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGVudHJpZXMuZmluZEluZGV4KChjYW5kaWRhdGUpID0+IGNhbmRpZGF0ZS5pdGVtID09PSBpdGVtKTtcblxuICAgICAgY29uc3QgbmV4dEluZGV4ID1cbiAgICAgICAgc3RlcCA9PT0gXCJmaXJzdFwiXG4gICAgICAgICAgPyAwXG4gICAgICAgICAgOiBzdGVwID09PSBcImxhc3RcIlxuICAgICAgICAgICAgPyBlbnRyaWVzLmxlbmd0aCAtIDFcbiAgICAgICAgICAgIDogKGN1cnJlbnRJbmRleCArIHN0ZXAgKyBlbnRyaWVzLmxlbmd0aCkgJSBlbnRyaWVzLmxlbmd0aDtcblxuICAgICAgY29uc3QgbmV4dCA9IGVudHJpZXNbbmV4dEluZGV4XTtcblxuICAgICAgaWYgKG5leHQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgbmV4dC5lbGVtZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn07XG5cbmNvbnN0IHN0ZXBPZiA9IChrZXk6IHN0cmluZywgb3JpZW50YXRpb246IEtleWJvYXJkTmF2aWdhdGlvbk9yaWVudGF0aW9uKSA9PiB7XG4gIHN3aXRjaCAoa2V5KSB7XG4gICAgY2FzZSBcIkFycm93RG93blwiOlxuICAgICAgcmV0dXJuIG9yaWVudGF0aW9uID09PSBcImhvcml6b250YWxcIiA/IHVuZGVmaW5lZCA6IDE7XG4gICAgY2FzZSBcIkFycm93UmlnaHRcIjpcbiAgICAgIHJldHVybiBvcmllbnRhdGlvbiA9PT0gXCJ2ZXJ0aWNhbFwiID8gdW5kZWZpbmVkIDogMTtcbiAgICBjYXNlIFwiQXJyb3dVcFwiOlxuICAgICAgcmV0dXJuIG9yaWVudGF0aW9uID09PSBcImhvcml6b250YWxcIiA/IHVuZGVmaW5lZCA6IC0xO1xuICAgIGNhc2UgXCJBcnJvd0xlZnRcIjpcbiAgICAgIHJldHVybiBvcmllbnRhdGlvbiA9PT0gXCJ2ZXJ0aWNhbFwiID8gdW5kZWZpbmVkIDogLTE7XG4gICAgY2FzZSBcIkhvbWVcIjpcbiAgICAgIHJldHVybiBcImZpcnN0XCIgYXMgY29uc3Q7XG4gICAgY2FzZSBcIkVuZFwiOlxuICAgICAgcmV0dXJuIFwibGFzdFwiIGFzIGNvbnN0O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59O1xuIiwgImltcG9ydCB7IHJ1bkluQWN0aW9uLCB0eXBlIElPYnNlcnZhYmxlVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBNdXRhYmxlUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IEZvY3VzYWJsZUV2ZW50IH0gZnJvbSBcIi4vX3NoYXJlZC9mb2N1c2FibGUtZXZlbnRcIjtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUZvY3VzRm9yID1cbiAgPEZvY3VzYWJsZUl0ZW0+KFxuICAgIHN0YXRlOiBJT2JzZXJ2YWJsZVZhbHVlPEZvY3VzYWJsZUl0ZW0gfCB1bmRlZmluZWQ+LFxuICAgIGZvY3VzYWJsZUl0ZW06IEZvY3VzYWJsZUl0ZW0sXG4gICAgZm9jdXNhYmxlQ29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxGb2N1c2FibGVJdGVtPixcbiAgICBmb2N1c2VkUmVmOiBNdXRhYmxlUmVmT2JqZWN0PGJvb2xlYW4+LFxuICApID0+XG4gIDxUPihldmVudDogRm9jdXNhYmxlRXZlbnQ8VD4pID0+IHtcbiAgICBjb25zdCBuYXRpdmVFdmVudCA9IGV2ZW50Lm5hdGl2ZUV2ZW50O1xuXG4gICAgbmF0aXZlRXZlbnQuYWxyZWFkeVByb2Nlc3NlZEZvY3VzYWJsZUNvbnRleHRzID8/PSBuZXcgU2V0KCk7XG5cbiAgICBpZiAobmF0aXZlRXZlbnQuYWxyZWFkeVByb2Nlc3NlZEZvY3VzYWJsZUNvbnRleHRzLmhhcyhmb2N1c2FibGVDb250ZXh0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG5hdGl2ZUV2ZW50LmFscmVhZHlQcm9jZXNzZWRGb2N1c2FibGVDb250ZXh0cy5hZGQoZm9jdXNhYmxlQ29udGV4dCk7XG5cbiAgICBmb2N1c2VkUmVmLmN1cnJlbnQgPSB0cnVlO1xuXG4gICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgc3RhdGUuc2V0KGZvY3VzYWJsZUl0ZW0pO1xuICAgIH0pO1xuICB9O1xuIiwgImltcG9ydCB0eXBlIHsgSU9ic2VydmFibGVWYWx1ZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyBydW5JbkFjdGlvbiB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgdHlwZSB7IEFueUZvY3VzYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEZvY3VzYWJsZUV2ZW50IH0gZnJvbSBcIi4vX3NoYXJlZC9mb2N1c2FibGUtZXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgTXV0YWJsZVJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlQmx1ckZvciA9XG4gIDxUPihcbiAgICBmb2N1c2FibGVDb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PFQ+LFxuICAgIHN0YXRlOiBJT2JzZXJ2YWJsZVZhbHVlPFQgfCB1bmRlZmluZWQ+LFxuICAgIGZvY3VzZWRSZWY6IE11dGFibGVSZWZPYmplY3Q8Ym9vbGVhbj4sXG4gICkgPT5cbiAgPFQ+KGV2ZW50OiBGb2N1c2FibGVFdmVudDxUPikgPT4ge1xuICAgIGNvbnN0IG5hdGl2ZUV2ZW50ID0gZXZlbnQubmF0aXZlRXZlbnQ7XG5cbiAgICBpZiAobmF0aXZlRXZlbnQuYWxyZWFkeVByb2Nlc3NlZEZvY3VzYWJsZUNvbnRleHRzPy5oYXMoZm9jdXNhYmxlQ29udGV4dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb2N1c2VkUmVmLmN1cnJlbnQgPSBmYWxzZTtcblxuICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgIHN0YXRlLnNldCh1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9O1xuIiwgImltcG9ydCB0eXBlIHsgTXV0YWJsZVJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBmb2N1c2FibGVIdG1sRWxlbWVudFJlZlNldEluamVjdGFibGUgfSBmcm9tIFwiLi4vX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgdHlwZSB7IEFueUZvY3VzYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5cbmV4cG9ydCBjb25zdCB1c2VQcm9ncmFtbWF0aWNGb2N1c2luZyA9IDxUPihcbiAgZm9jdXNhYmxlQ29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxUPixcbiAgZm9jdXNhYmxlSXRlbTogVCxcbiAgaHRtbEVsZW1lbnRSZWY6IE11dGFibGVSZWZPYmplY3Q8SFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ+LFxuKSA9PiB7XG4gIGNvbnN0IGh0bWxFbGVtZW50c0J5Rm9jdXNhYmxlTWFwID0gdXNlU3luY0luamVjdChcbiAgICBmb2N1c2FibGVIdG1sRWxlbWVudFJlZlNldEluamVjdGFibGUsXG4gICAgZm9jdXNhYmxlQ29udGV4dCxcbiAgICBmb2N1c2FibGVJdGVtLFxuICApO1xuXG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IHJlbW92ZSB3aGVuIHBvc3NpYmxlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaHRtbEVsZW1lbnRzQnlGb2N1c2FibGVNYXAuYWRkKGh0bWxFbGVtZW50UmVmKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBodG1sRWxlbWVudHNCeUZvY3VzYWJsZU1hcC5kZWxldGUoaHRtbEVsZW1lbnRSZWYpO1xuICAgIH07XG4gIH0sIFtodG1sRWxlbWVudHNCeUZvY3VzYWJsZU1hcCwgZm9jdXNhYmxlSXRlbSwgaHRtbEVsZW1lbnRSZWZdKTtcbn07XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IGZsZXhQbHVnaW4gfSBmcm9tIFwiLi4vZmxleC9mbGV4XCI7XG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgdHlwZSB7IG92ZXJmbG93UGx1Z2luIH0gZnJvbSBcIi4uL292ZXJmbG93L292ZXJmbG93XCI7XG5cbmV4cG9ydCB0eXBlIEFyZWFQbHVnaW5Qcm9wcyA9IHsgJGFyZWE/OiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBhcmVhUGx1Z2luID0gZ2V0UGx1Z2luPEFyZWFQbHVnaW5Qcm9wcywgW3R5cGVvZiBmbGV4UGx1Z2luLCB0eXBlb2Ygb3ZlcmZsb3dQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgZXhwbGljaXRGbGV4UHJvcHMgPSBpc09iamVjdChwcm9wcy4kZmxleCkgPyBwcm9wcy4kZmxleCA6IHt9O1xuXG4gIHJldHVybiB7XG4gICAgJGFyZWE6IHVuZGVmaW5lZCxcblxuICAgICRmbGV4OiBwcm9wcy4kYXJlYVxuICAgICAgPyB7XG4gICAgICAgICAgdmVydGljYWxBbGlnbjogXCJzdHJldGNoXCIsXG4gICAgICAgICAgaG9yaXpvbnRhbEFsaWduOiBcInN0cmV0Y2hcIixcbiAgICAgICAgICAuLi5leHBsaWNpdEZsZXhQcm9wcyxcbiAgICAgICAgfVxuICAgICAgOiBwcm9wcy4kZmxleCxcblxuICAgICRvdmVyZmxvdzogcHJvcHMuJG92ZXJmbG93ID8/IChwcm9wcy4kYXJlYSA/IFwiaGlkZGVuXCIgOiB1bmRlZmluZWQpLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IGZsZXhDaGlsZFBsdWdpbiB9IGZyb20gXCIuLi9mbGV4LWNoaWxkL2ZsZXgtY2hpbGRcIjtcblxuZXhwb3J0IHR5cGUgQXJlYUNvbnRlbnRQbHVnaW5Qcm9wcyA9IHsgJGFyZWFDb250ZW50PzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgYXJlYUNvbnRlbnRQbHVnaW4gPSBnZXRQbHVnaW48QXJlYUNvbnRlbnRQbHVnaW5Qcm9wcywgW3R5cGVvZiBmbGV4Q2hpbGRQbHVnaW5dPigocHJvcHMpID0+ICh7XG4gICRhcmVhQ29udGVudDogdW5kZWZpbmVkLFxuICAkZmxleENoaWxkOiBwcm9wcy4kYXJlYUNvbnRlbnQgPyB0cnVlIDogcHJvcHMuJGZsZXhDaGlsZCxcbn0pKTtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgVFNoaXJ0U2l6ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5pbXBvcnQgdHlwZSB7IHdpZHRoUGx1Z2luIH0gZnJvbSBcIi4uL3dpZHRoL3dpZHRoXCI7XG5pbXBvcnQgdHlwZSB7IGhlaWdodFBsdWdpbiB9IGZyb20gXCIuLi9oZWlnaHQvaGVpZ2h0XCI7XG5cbmV4cG9ydCB0eXBlICRTaXplUHJvcHMgPSB7XG4gIHNpemU/OiBUU2hpcnRTaXplIHwgXCJmdWxsXCIgfCBcImF1dG9cIjtcbiAgbWluPzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiO1xuICBtYXg/OiBUU2hpcnRTaXplIHwgXCJmdWxsXCI7XG59O1xuXG5leHBvcnQgdHlwZSBTaXplUGx1Z2luUHJvcHMgPSB7ICRzaXplPzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiIHwgJFNpemVQcm9wcyB9O1xuXG5leHBvcnQgY29uc3Qgc2l6ZVBsdWdpbiA9IGdldFBsdWdpbjxTaXplUGx1Z2luUHJvcHMsIFt0eXBlb2Ygd2lkdGhQbHVnaW4sIHR5cGVvZiBoZWlnaHRQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkc2l6ZSB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkc2l6ZSkge1xuICAgIHJldHVybiB7ICRzaXplOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IHsgc2l6ZSwgbWluLCBtYXggfSA9IHR5cGVvZiAkc2l6ZSA9PT0gXCJzdHJpbmdcIiA/IHsgc2l6ZTogJHNpemUgfSA6ICRzaXplO1xuXG4gIHJldHVybiB7XG4gICAgJGhlaWdodDogeyBoZWlnaHQ6IHNpemUsIG1pbiwgbWF4IH0sXG4gICAgJHdpZHRoOiB7IHdpZHRoOiBzaXplLCBtaW4sIG1heCB9LFxuICAgICRzaXplOiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiYWxpYXNcIjogXCJjdXJzb3ItbW9kdWxlX19hbGlhc19fXzBpeUgyXCIsXG4gIFwiYWxsLXNjcm9sbFwiOiBcImN1cnNvci1tb2R1bGVfX2FsbC1zY3JvbGxfX19VOWhvOFwiLFxuICBcImNlbGxcIjogXCJjdXJzb3ItbW9kdWxlX19jZWxsX19fNVdPMkZcIixcbiAgXCJjb2x1bW4tcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fY29sdW1uLXJlc2l6ZV9fX3BMcTNzXCIsXG4gIFwiY29udGV4dC1tZW51XCI6IFwiY3Vyc29yLW1vZHVsZV9fY29udGV4dC1tZW51X19fSXFwNTZcIixcbiAgXCJjb3B5XCI6IFwiY3Vyc29yLW1vZHVsZV9fY29weV9fX1hVN3lMXCIsXG4gIFwiY3Jvc3NoYWlyXCI6IFwiY3Vyc29yLW1vZHVsZV9fY3Jvc3NoYWlyX19fMThheWtcIixcbiAgXCJkZWZhdWx0XCI6IFwiY3Vyc29yLW1vZHVsZV9fZGVmYXVsdF9fX3ZELThUXCIsXG4gIFwiZWFzdC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19lYXN0LXJlc2l6ZV9fX1M0SEY1XCIsXG4gIFwiZWFzdC1hbmQtd2VzdC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19lYXN0LWFuZC13ZXN0LXJlc2l6ZV9fX3UtSmYtXCIsXG4gIFwiZ3JhYlwiOiBcImN1cnNvci1tb2R1bGVfX2dyYWJfX19VdkFGN1wiLFxuICBcImdyYWJiaW5nXCI6IFwiY3Vyc29yLW1vZHVsZV9fZ3JhYmJpbmdfX19NTWl2WFwiLFxuICBcImhlbHBcIjogXCJjdXJzb3ItbW9kdWxlX19oZWxwX19faUI4RzRcIixcbiAgXCJtb3ZlXCI6IFwiY3Vyc29yLW1vZHVsZV9fbW92ZV9fX3lwZC1QXCIsXG4gIFwibm9ydGgtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGgtcmVzaXplX19fN05raFZcIixcbiAgXCJub3J0aGVhc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGhlYXN0LXJlc2l6ZV9fX000TUl6XCIsXG4gIFwibm9ydGhlYXN0LWFuZC1zb3V0aHdlc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGhlYXN0LWFuZC1zb3V0aHdlc3QtcmVzaXplX19fei0xZHFcIixcbiAgXCJuby1kcm9wXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm8tZHJvcF9fX1dUMXQ5XCIsXG4gIFwibm9uZVwiOiBcImN1cnNvci1tb2R1bGVfX25vbmVfX19FaTlzelwiLFxuICBcIm5vdC1hbGxvd2VkXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm90LWFsbG93ZWRfX185dUZMdVwiLFxuICBcIm5vcnRoLWFuZC1zb3V0aC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19ub3J0aC1hbmQtc291dGgtcmVzaXplX19fUUc1QU5cIixcbiAgXCJub3J0aHdlc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGh3ZXN0LXJlc2l6ZV9fX2NrQ29oXCIsXG4gIFwibm9ydGh3ZXN0LWFuZC1zb3V0aGVhc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGh3ZXN0LWFuZC1zb3V0aGVhc3QtcmVzaXplX19fbmo0VlNcIixcbiAgXCJwb2ludGVyXCI6IFwiY3Vyc29yLW1vZHVsZV9fcG9pbnRlcl9fX0ZpZGZLXCIsXG4gIFwicHJvZ3Jlc3NcIjogXCJjdXJzb3ItbW9kdWxlX19wcm9ncmVzc19fX0lnRXh5XCIsXG4gIFwicm93LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX3Jvdy1yZXNpemVfX18wU3NlNlwiLFxuICBcInNvdXRoLXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX3NvdXRoLXJlc2l6ZV9fXzRGZW5TXCIsXG4gIFwic291dGhlYXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX3NvdXRoZWFzdC1yZXNpemVfX193OGhHcVwiLFxuICBcInNvdXRod2VzdC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19zb3V0aHdlc3QtcmVzaXplX19fNlV2NEdcIixcbiAgXCJ0ZXh0XCI6IFwiY3Vyc29yLW1vZHVsZV9fdGV4dF9fX3RxLUF3XCIsXG4gIFwidmVydGljYWwtdGV4dFwiOiBcImN1cnNvci1tb2R1bGVfX3ZlcnRpY2FsLXRleHRfX18zT2F6RVwiLFxuICBcIndlc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fd2VzdC1yZXNpemVfX19iclc1NlwiLFxuICBcIndhaXRcIjogXCJjdXJzb3ItbW9kdWxlX193YWl0X19fUXRYbEdcIixcbiAgXCJ6b29tLWluXCI6IFwiY3Vyc29yLW1vZHVsZV9fem9vbS1pbl9fX3pFREhRXCIsXG4gIFwiem9vbS1vdXRcIjogXCJjdXJzb3ItbW9kdWxlX196b29tLW91dF9fX3FicW82XCJcbn07IiwgImltcG9ydCByYXdTdHlsZXMgZnJvbSBcIi4vY3Vyc29yLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgc2FuaXRpemVTY3NzTW9kdWxlcyB9IGZyb20gXCJAazhzbGVucy90ZXN0LXV0aWxzXCI7XG5cbmNvbnN0IHN0eWxlcyA9IHNhbml0aXplU2Nzc01vZHVsZXMocmF3U3R5bGVzKTtcblxuZXhwb3J0IHR5cGUgJEN1cnNvclByb3BzID1cbiAgfCBcImFsaWFzXCJcbiAgfCBcImFsbC1zY3JvbGxcIlxuICB8IFwiY2VsbFwiXG4gIHwgXCJjb2x1bW4tcmVzaXplXCJcbiAgfCBcImNvbnRleHQtbWVudVwiXG4gIHwgXCJjb3B5XCJcbiAgfCBcImNyb3NzaGFpclwiXG4gIHwgXCJkZWZhdWx0XCJcbiAgfCBcImVhc3QtcmVzaXplXCJcbiAgfCBcImVhc3QtYW5kLXdlc3QtcmVzaXplXCJcbiAgfCBcImdyYWJcIlxuICB8IFwiZ3JhYmJpbmdcIlxuICB8IFwiaGVscFwiXG4gIHwgXCJtb3ZlXCJcbiAgfCBcIm5vcnRoLXJlc2l6ZVwiXG4gIHwgXCJub3J0aGVhc3QtcmVzaXplXCJcbiAgfCBcIm5vcnRoZWFzdC1hbmQtc291dGh3ZXN0LXJlc2l6ZVwiXG4gIHwgXCJuby1kcm9wXCJcbiAgfCBcIm5vbmVcIlxuICB8IFwibm90LWFsbG93ZWRcIlxuICB8IFwibm9ydGgtYW5kLXNvdXRoLXJlc2l6ZVwiXG4gIHwgXCJub3J0aHdlc3QtcmVzaXplXCJcbiAgfCBcIm5vcnRod2VzdC1hbmQtc291dGhlYXN0LXJlc2l6ZVwiXG4gIHwgXCJwb2ludGVyXCJcbiAgfCBcInByb2dyZXNzXCJcbiAgfCBcInJvdy1yZXNpemVcIlxuICB8IFwic291dGgtcmVzaXplXCJcbiAgfCBcInNvdXRoZWFzdC1yZXNpemVcIlxuICB8IFwic291dGh3ZXN0LXJlc2l6ZVwiXG4gIHwgXCJ0ZXh0XCJcbiAgfCBcInZlcnRpY2FsLXRleHRcIlxuICB8IFwid2VzdC1yZXNpemVcIlxuICB8IFwid2FpdFwiXG4gIHwgXCJ6b29tLWluXCJcbiAgfCBcInpvb20tb3V0XCI7XG5cbmV4cG9ydCB0eXBlIEN1cnNvclBsdWdpblByb3BzID0ge1xuICAkY3Vyc29yPzogJEN1cnNvclByb3BzO1xufTtcblxuZXhwb3J0IGNvbnN0IGN1cnNvclBsdWdpbiA9IGdldFBsdWdpbjxDdXJzb3JQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkY3Vyc29yLCAkY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICBpZiAoISRjdXJzb3IpIHtcbiAgICByZXR1cm4geyAkY3Vyc29yOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJGN1cnNvcjogdW5kZWZpbmVkLFxuICAgICRjbGFzc05hbWU6IFskY2xhc3NOYW1lLCBzdHlsZXNbJGN1cnNvcl1dLFxuICAgIFwiZGF0YS1jdXJzb3ItdGVzdFwiOiAkY3Vyc29yLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBvbk1pZGRsZUNsaWNrLCBvblRyaWdnZXIgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IGVuYWJsZWRQbHVnaW4gfSBmcm9tIFwiLi4vZW5hYmxlZC9lbmFibGVkXCI7XG5pbXBvcnQgdHlwZSB7ICRDdXJzb3JQcm9wcywgY3Vyc29yUGx1Z2luIH0gZnJvbSBcIi4uL2N1cnNvci9jdXJzb3JcIjtcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB7IG9uUmlnaHRUcmlnZ2VySW5qZWN0YWJsZSB9IGZyb20gXCIuL29uLXJpZ2h0LXRyaWdnZXIuaW5qZWN0YWJsZVwiO1xuXG5leHBvcnQgdHlwZSBQb3NpdGlvbjJkID0ge1xuICByZWFkb25seSB4OiBudW1iZXI7XG4gIHJlYWRvbmx5IHk6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIENsaWNrSGFuZGxlckRldGFpbHMgPSB7XG4gIHJlYWRvbmx5IGN1cnNvcjogUG9zaXRpb24yZDtcbiAgcmVhZG9ubHkgY2F1c2U6IFwiY2xpY2tcIiB8IFwia2V5Ym9hcmRcIjtcbn07XG5cbmV4cG9ydCB0eXBlIENsaWNrSGFuZGxlciA9ICgoZGV0YWlsczogQ2xpY2tIYW5kbGVyRGV0YWlscykgPT4gdm9pZCkgfCAoKGRldGFpbHM6IENsaWNrSGFuZGxlckRldGFpbHMpID0+IFByb21pc2U8dm9pZD4pO1xuXG5leHBvcnQgdHlwZSBDbGlja1BsdWdpblByb3BzID0ge1xuICAkb25DbGljaz86IENsaWNrSGFuZGxlcjtcbiAgJG9uT25seU1vdXNlQ2xpY2s/OiBDbGlja0hhbmRsZXI7XG4gICRvbkRvdWJsZUNsaWNrPzogQ2xpY2tIYW5kbGVyO1xuICAkb25SaWdodENsaWNrPzogQ2xpY2tIYW5kbGVyO1xuICAkb25NaWRkbGVDbGljaz86IENsaWNrSGFuZGxlcjtcbiAgdGFiSW5kZXg/OiBudW1iZXI7XG59O1xuXG5jb25zdCBjbGlja1VzZWQgPSBTeW1ib2woKTtcblxuZXhwb3J0IGNvbnN0IGNsaWNrYWJsZVBsdWdpbiA9IGdldFBsdWdpbjxDbGlja1BsdWdpblByb3BzLCBbdHlwZW9mIGVuYWJsZWRQbHVnaW4sIHR5cGVvZiBjdXJzb3JQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgLy8gdHlwaW5nIHJlcXVpcmVkIGR1ZSB0byBsYWNrIG9mIGdvb2QgdHlwaW5nIG9mIHByZS1wcm9jZXNzZWQgZGVwZW5kZW50IHBsdWdpbnNcbiAgY29uc3Qge1xuICAgICRjdXJzb3IsXG4gICAgJG9uQ2xpY2ssXG4gICAgJG9uT25seU1vdXNlQ2xpY2ssXG4gICAgJG9uTWlkZGxlQ2xpY2ssXG4gICAgJG9uUmlnaHRDbGljayxcbiAgICAkb25Eb3VibGVDbGljayxcbiAgICBvbkRvdWJsZUNsaWNrLFxuICAgIG9uQXV4Q2xpY2ssXG4gICAgb25DbGljayxcbiAgICBvbkNvbnRleHRNZW51LFxuICAgIG9uS2V5RG93bixcbiAgICB0YWJJbmRleCxcbiAgICBkaXNhYmxlZCxcbiAgICByb2xlLFxuICB9ID0gcHJvcHMgYXMgdHlwZW9mIHByb3BzICYgUmVhY3QuSFRNTFByb3BzPEhUTUxFbGVtZW50PjtcbiAgY29uc3QgW3BlbmRpbmcsIHNldFBlbmRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBvblJpZ2h0VHJpZ2dlciA9IHVzZVN5bmNJbmplY3Qob25SaWdodFRyaWdnZXJJbmplY3RhYmxlKTtcbiAgY29uc3Qgb25Nb3VzZUNsaWNrID0gJG9uQ2xpY2sgPz8gJG9uT25seU1vdXNlQ2xpY2s7XG5cbiAgaWYgKCRvbkNsaWNrICYmICRvbk9ubHlNb3VzZUNsaWNrKSB7XG4gICAgY29uc29sZS53YXJuKFwiQ2Fubm90IGhhdmUgYm90aCAkb25DbGljayBhbmQgJG9uTW91c2VDbGlja09ubHkgb24gdGhlIHNhbWUgY29tcG9uZW50XCIpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkb25DbGljazogdW5kZWZpbmVkLFxuICAgICRvbk1pZGRsZUNsaWNrOiB1bmRlZmluZWQsXG4gICAgJG9uUmlnaHRDbGljazogdW5kZWZpbmVkLFxuICAgICRvbkRvdWJsZUNsaWNrOiB1bmRlZmluZWQsXG4gICAgJG9uT25seU1vdXNlQ2xpY2s6IHVuZGVmaW5lZCxcbiAgICB0YWJJbmRleDogdGFiSW5kZXggPz8gKG9uTW91c2VDbGljayB8fCAkb25SaWdodENsaWNrIHx8ICRvbkRvdWJsZUNsaWNrID8gMCA6IHVuZGVmaW5lZCksXG4gICAgJGN1cnNvcjogZ2V0Q3Vyc29yUHJvcHMoJGN1cnNvciwgZGlzYWJsZWQsIHBlbmRpbmcsIG9uTW91c2VDbGljaywgJG9uUmlnaHRDbGljayksXG4gICAgcm9sZTogcm9sZSA/PyAob25Nb3VzZUNsaWNrID8gXCJidXR0b25cIiA6IHJvbGUpLFxuICAgIG9uQ2xpY2s6IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIG9uQ2xpY2s/LihldmVudCk7XG5cbiAgICAgIGlmICghZGlzYWJsZWQgJiYgb25Nb3VzZUNsaWNrICYmICEoY2xpY2tVc2VkIGluIGV2ZW50KSkge1xuICAgICAgICBPYmplY3QuYXNzaWduKGV2ZW50LCB7IFtjbGlja1VzZWRdOiB0cnVlIH0pO1xuXG4gICAgICAgIGNvbnN0IG1heWJlUHJvbWlzZSA9IG9uTW91c2VDbGljayh0b0RldGFpbHMoZXZlbnQpKTtcblxuICAgICAgICBpZiAoaXNQcm9taXNlTGlrZShtYXliZVByb21pc2UpKSB7XG4gICAgICAgICAgc2V0UGVuZGluZyh0cnVlKTtcbiAgICAgICAgICBtYXliZVByb21pc2UudGhlbigoKSA9PiBzZXRQZW5kaW5nKGZhbHNlKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIG9uRG91YmxlQ2xpY2s6IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIG9uRG91YmxlQ2xpY2s/LihldmVudCk7XG4gICAgICAkb25Eb3VibGVDbGljaz8uKHRvRGV0YWlscyhldmVudCkpO1xuICAgIH0sXG4gICAgb25Db250ZXh0TWVudTogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgb25Db250ZXh0TWVudT8uKGV2ZW50KTtcbiAgICAgICRvblJpZ2h0Q2xpY2s/Lih0b0RldGFpbHMoZXZlbnQpKTtcbiAgICB9LFxuICAgIG9uQXV4Q2xpY2s6IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIG9uQXV4Q2xpY2s/LihldmVudCk7XG4gICAgICBvbk1pZGRsZUNsaWNrKGV2ZW50LCAoKSA9PiAkb25NaWRkbGVDbGljaz8uKHRvRGV0YWlscyhldmVudCkpKTtcbiAgICB9LFxuICAgIG9uS2V5RG93bjogKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgb25LZXlEb3duPy4oZXZlbnQpO1xuXG4gICAgICBpZiAoJG9uQ2xpY2spIHtcbiAgICAgICAgb25UcmlnZ2VyKGV2ZW50LCAoKSA9PiB7XG4gICAgICAgICAgaWYgKCFkaXNhYmxlZCAmJiAhKGNsaWNrVXNlZCBpbiBldmVudCkpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZXZlbnQsIHsgW2NsaWNrVXNlZF06IHRydWUgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG1heWJlUHJvbWlzZSA9ICRvbkNsaWNrKHRvRGV0YWlscyhldmVudCkpO1xuXG4gICAgICAgICAgICBpZiAoaXNQcm9taXNlTGlrZShtYXliZVByb21pc2UpKSB7XG4gICAgICAgICAgICAgIHNldFBlbmRpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgIG1heWJlUHJvbWlzZS50aGVuKCgpID0+IHNldFBlbmRpbmcoZmFsc2UpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoJG9uUmlnaHRDbGljaykge1xuICAgICAgICBvblJpZ2h0VHJpZ2dlcihldmVudCwgKCkgPT4ge1xuICAgICAgICAgICRvblJpZ2h0Q2xpY2sodG9EZXRhaWxzKGV2ZW50KSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59KTtcblxuY29uc3QgdG9NaWRkbGUgPSAocmVjdDogRE9NUmVjdCkgPT4gKHtcbiAgeDogcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAvIDIsXG4gIHk6IHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyLFxufSk7XG5cbmNvbnN0IHRvRGV0YWlscyA9IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4gfCBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxFbGVtZW50Pik6IENsaWNrSGFuZGxlckRldGFpbHMgPT4ge1xuICBjb25zdCBjdXJzb3IgPVxuICAgIFwiY2xpZW50WFwiIGluIGV2ZW50XG4gICAgICA/IHtcbiAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgIHk6IGV2ZW50LmNsaWVudFksXG4gICAgICAgIH1cbiAgICAgIDogdG9NaWRkbGUoZXZlbnQuY3VycmVudFRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XG5cbiAgcmV0dXJuIHtcbiAgICBjdXJzb3IsXG4gICAgY2F1c2U6IGV2ZW50LmRldGFpbCA/IFwiY2xpY2tcIiA6IFwia2V5Ym9hcmRcIixcbiAgfTtcbn07XG5cbmNvbnN0IGlzUHJvbWlzZUxpa2UgPSAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBQcm9taXNlPHVua25vd24+ID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiAhIXZhbHVlICYmIFwidGhlblwiIGluIHZhbHVlO1xuXG5jb25zdCBnZXRDdXJzb3JQcm9wcyA9IChcbiAgJGN1cnNvcjogJEN1cnNvclByb3BzIHwgdW5kZWZpbmVkLFxuICBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCxcbiAgcGVuZGluZzogYm9vbGVhbixcbiAgJG9uQ2xpY2s6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkLFxuICAkb25SaWdodENsaWNrOiBGdW5jdGlvbiB8IHVuZGVmaW5lZCxcbik6ICRDdXJzb3JQcm9wcyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICgkY3Vyc29yKSB7XG4gICAgcmV0dXJuICRjdXJzb3I7XG4gIH1cblxuICBpZiAocGVuZGluZykge1xuICAgIHJldHVybiBcInByb2dyZXNzXCI7XG4gIH1cblxuICBpZiAoISRvbkNsaWNrICYmICEkb25SaWdodENsaWNrKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmIChkaXNhYmxlZCkge1xuICAgIHJldHVybiBcIm5vdC1hbGxvd2VkXCI7XG4gIH1cblxuICBpZiAoJG9uQ2xpY2spIHtcbiAgICByZXR1cm4gXCJwb2ludGVyXCI7XG4gIH1cblxuICByZXR1cm4gXCJjb250ZXh0LW1lbnVcIjtcbn07XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiY29udGVudHNcIjogXCJkaXNwbGF5LWNvbnRlbnRzLW1vZHVsZV9fY29udGVudHNfX19tUmVYS1wiXG59OyIsICJpbXBvcnQgcmF3U3R5bGVzIGZyb20gXCIuL2Rpc3BsYXktY29udGVudHMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBzYW5pdGl6ZVNjc3NNb2R1bGVzIH0gZnJvbSBcIkBrOHNsZW5zL3Rlc3QtdXRpbHNcIjtcblxuY29uc3Qgc3R5bGVzID0gc2FuaXRpemVTY3NzTW9kdWxlcyhyYXdTdHlsZXMpO1xuXG5leHBvcnQgdHlwZSBEaXNwbGF5Q29udGVudHNQbHVnaW5Qcm9wcyA9IHtcbiAgJGRpc3BsYXlDb250ZW50cz86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgZGlzcGxheUNvbnRlbnRzUGx1Z2luID0gZ2V0UGx1Z2luPERpc3BsYXlDb250ZW50c1BsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRkaXNwbGF5Q29udGVudHMsICRjbGFzc05hbWUgfSA9IHByb3BzO1xuXG4gIGlmICghJGRpc3BsYXlDb250ZW50cykge1xuICAgIHJldHVybiB7ICRkaXNwbGF5Q29udGVudHM6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkZGlzcGxheUNvbnRlbnRzOiB1bmRlZmluZWQsXG4gICAgJGNsYXNzTmFtZTogWyRjbGFzc05hbWUsIHN0eWxlcy5jb250ZW50c10sXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ24ubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJ0ZXh0LWFsaWduLS1jZW50ZXJcIjogXCJ0ZXh0LWFsaWduLW1vZHVsZV9fdGV4dC1hbGlnbi0tY2VudGVyX19fYkRyUjJcIixcbiAgXCJ0ZXh0LWFsaWduLS1yaWdodFwiOiBcInRleHQtYWxpZ24tbW9kdWxlX190ZXh0LWFsaWduLS1yaWdodF9fX0pWUk1QXCIsXG4gIFwidGV4dC1hbGlnbi0tbGVmdFwiOiBcInRleHQtYWxpZ24tbW9kdWxlX190ZXh0LWFsaWduLS1sZWZ0X19fTExMazZcIlxufTsiLCAiaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi90ZXh0LWFsaWduLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuXG5leHBvcnQgdHlwZSBUZXh0QWxpZ25QbHVnaW5Qcm9wcyA9IHsgJHRleHRBbGlnbj86IFwibGVmdFwiIHwgXCJjZW50ZXJcIiB8IFwicmlnaHRcIiB9O1xuXG5leHBvcnQgY29uc3QgdGV4dEFsaWduUGx1Z2luID0gZ2V0UGx1Z2luPFRleHRBbGlnblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICR0ZXh0QWxpZ24gfSA9IHByb3BzO1xuXG4gIGlmICghJHRleHRBbGlnbikge1xuICAgIHJldHVybiB7ICR0ZXh0QWxpZ246IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHsgJGNsYXNzTmFtZTogW3N0eWxlc1tgdGV4dC1hbGlnbi0tJHskdGV4dEFsaWdufWBdLCBwcm9wcy4kY2xhc3NOYW1lXSwgJHRleHRBbGlnbjogdW5kZWZpbmVkIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9ibG9jay9ibG9jay5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImJsb2NrXCI6IFwiYmxvY2stbW9kdWxlX19ibG9ja19fX1k0dHpqXCIsXG4gIFwiYmxvY2stLWlubGluZVwiOiBcImJsb2NrLW1vZHVsZV9fYmxvY2stLWlubGluZV9fXy0xWUNnXCJcbn07IiwgImltcG9ydCBzdHlsZXMgZnJvbSBcIi4vYmxvY2subW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCB0eXBlIEJsb2NrUGx1Z2luUHJvcHMgPSB7XG4gICRibG9jaz86IGJvb2xlYW4gfCBcImlubGluZVwiO1xufTtcblxuZXhwb3J0IGNvbnN0IGJsb2NrUGx1Z2luID0gZ2V0UGx1Z2luPEJsb2NrUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGJsb2NrLCAkY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICBpZiAoISRibG9jaykge1xuICAgIHJldHVybiB7ICRibG9jazogdW5kZWZpbmVkIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRibG9jazogdW5kZWZpbmVkLFxuICAgICRjbGFzc05hbWU6IFskY2xhc3NOYW1lLCAkYmxvY2sgPT09IFwiaW5saW5lXCIgPyBzdHlsZXNbXCJibG9jay0taW5saW5lXCJdIDogc3R5bGVzLmJsb2NrXSxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgdHlwZSB7IENvbG9yIH0gZnJvbSBcIi4uL19zaGFyZWQvY29sb3JzXCI7XG5pbXBvcnQgdHlwZSB7IFJhbmdlIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcbmltcG9ydCBvdXRsaW5lU3R5bGVzIGZyb20gXCIuL291dGxpbmUubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IHNhbml0aXplU2Nzc01vZHVsZXMgfSBmcm9tIFwiQGs4c2xlbnMvdGVzdC11dGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBJQ2xhc3NOYW1lIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcblxuY29uc3Qgc3R5bGVzID0gc2FuaXRpemVTY3NzTW9kdWxlcyhvdXRsaW5lU3R5bGVzKTtcblxuZXhwb3J0IHR5cGUgT3V0bGluZVdpZHRoID0gXCJ6ZXJvXCIgfCBcInh4c1wiIHwgXCJ4c1wiIHwgXCJzXCIgfCBcIm1cIiB8IFwibFwiIHwgXCJ4bFwiIHwgXCJ4eGxcIiB8IGAke1JhbmdlPDMsIDU+fXhsYDtcblxuZXhwb3J0IHR5cGUgJE91dGxpbmVQcm9wcyA9IHsgY29sb3I/OiBDb2xvcjsgd2lkdGg/OiBPdXRsaW5lV2lkdGggfTtcblxuZXhwb3J0IHR5cGUgT3V0bGluZVBsdWdpblByb3BzID0geyAkb3V0bGluZT86IHsgZm9jdXNWaXNpYmxlPzogJE91dGxpbmVQcm9wcyB9IH07XG5cbmV4cG9ydCBjb25zdCBvdXRsaW5lUGx1Z2luID0gZ2V0UGx1Z2luPE91dGxpbmVQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgZ2V0Rm9jdXNWaXNpYmxlT3V0bGluZVN0eWxlcyhwcm9wcy4kb3V0bGluZT8uZm9jdXNWaXNpYmxlKV0sXG4gICAgJG91dGxpbmU6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuXG5jb25zdCBnZXRGb2N1c1Zpc2libGVPdXRsaW5lU3R5bGVzID0gKHByb3BzOiAkT3V0bGluZVByb3BzIHwgdW5kZWZpbmVkKTogSUNsYXNzTmFtZSA9PiB7XG4gIGlmICghcHJvcHMpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgeyBjb2xvciwgd2lkdGggfSA9IHByb3BzO1xuXG4gIHJldHVybiBbXG4gICAgY29sb3IgIT09IHVuZGVmaW5lZCB8fCB3aWR0aCAhPT0gdW5kZWZpbmVkID8gW3N0eWxlcy5vdXRsaW5lLCBzdHlsZXMuZm9jdXNWaXNpYmxlXSA6IHVuZGVmaW5lZCxcbiAgICBjb2xvciA/IHN0eWxlc1tgY29sb3ItLSR7Y29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgd2lkdGggPyBzdHlsZXNbYHdpZHRoLS0ke3dpZHRofWBdIDogdW5kZWZpbmVkLFxuICBdO1xufTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmUubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJvdXRsaW5lXCI6IFwib3V0bGluZS1tb2R1bGVfX291dGxpbmVfX19Bb0J0RlwiLFxuICBcImZvY3VzVmlzaWJsZVwiOiBcIm91dGxpbmUtbW9kdWxlX19mb2N1c1Zpc2libGVfX19KQXJQSlwiLFxuICBcImNvbG9yLS1pbmhlcml0XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1pbmhlcml0X19fMFdQMHJcIixcbiAgXCJjb2xvci0td2hpdGVcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXdoaXRlX19fVXEtZ2RcIixcbiAgXCJjb2xvci0tdHJhbnNwYXJlbnRcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXRyYW5zcGFyZW50X19fVE5vTXZcIixcbiAgXCJjb2xvci0tZ3JleTEwMFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTEwMF9fX1ZNRjdZXCIsXG4gIFwiY29sb3ItLWdyZXk4MFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTgwX19fS2Q4Zk1cIixcbiAgXCJjb2xvci0tZ3JleTYwXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5NjBfX19aR2pPdFwiLFxuICBcImNvbG9yLS1ncmV5NDBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXk0MF9fX3VhRm5HXCIsXG4gIFwiY29sb3ItLWdyZXkzMFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTMwX19fN1FCVlZcIixcbiAgXCJjb2xvci0tZ3JleTI1XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5MjVfX19yLWJiSlwiLFxuICBcImNvbG9yLS1ncmV5MjBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXkyMF9fX2l3emVMXCIsXG4gIFwiY29sb3ItLWdyZXkxMFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTEwX19faEp0dFNcIixcbiAgXCJjb2xvci0tZ3JleTcwXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5NzBfX18wT0dsVVwiLFxuICBcImNvbG9yLS1ncmV5ODBBbHBoYTg1XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19falJ3SG5cIixcbiAgXCJjb2xvci0tcHJpbWFyeVwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tcHJpbWFyeV9fX1B4Y214XCIsXG4gIFwiY29sb3ItLXN1Y2Nlc3NcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXN1Y2Nlc3NfX194akpMblwiLFxuICBcImNvbG9yLS1ub3RpY2VcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLW5vdGljZV9fX0NSaVliXCIsXG4gIFwiY29sb3ItLXdhcm5pbmdcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXdhcm5pbmdfX18xT2U3V1wiLFxuICBcImNvbG9yLS1jcml0aWNhbFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tY3JpdGljYWxfX195UXgtTFwiLFxuICBcImNvbG9yLS1zdWNjZXNzVGludFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tc3VjY2Vzc1RpbnRfX19HSGFxLVwiLFxuICBcImNvbG9yLS13YXJuaW5nVGludFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0td2FybmluZ1RpbnRfX19ZQW50dVwiLFxuICBcImNvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWNyaXRpY2FsVGludF9fX1ExbWRoXCIsXG4gIFwiY29sb3ItLWxpbmtcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWxpbmtfX191SWszb1wiLFxuICBcImNvbG9yLS1jb2RlXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1jb2RlX19feWJud2lcIixcbiAgXCJ3aWR0aC0temVyb1wiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0temVyb19fX0VrZnpOXCIsXG4gIFwid2lkdGgtLXh4c1wiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0teHhzX19fYkd5VHJcIixcbiAgXCJ3aWR0aC0teHNcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLXhzX19fWlpSMkJcIixcbiAgXCJ3aWR0aC0tc1wiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0tc19fXzhkREV6XCIsXG4gIFwid2lkdGgtLW1cIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLW1fX19nMnVHNVwiLFxuICBcIndpZHRoLS1sXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS1sX19fV2gwYkNcIixcbiAgXCJ3aWR0aC0teGxcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLXhsX19fOGRPTWpcIixcbiAgXCJ3aWR0aC0teHhsXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS14eGxfX19CRXNVbVwiLFxuICBcIndpZHRoLS0zeGxcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLTN4bF9fX0VzMFNZXCIsXG4gIFwid2lkdGgtLTR4bFwiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0tNHhsX19fWWVvdjhcIixcbiAgXCJ3aWR0aC0tNXhsXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS01eGxfX19Oc1Y4UFwiXG59OyIsICJpbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IGNsaWNrYWJsZVBsdWdpbiwgQ2xpY2tIYW5kbGVyRGV0YWlscyB9IGZyb20gXCIuLi9jbGlja2FibGUvY2xpY2thYmxlXCI7XG5pbXBvcnQgeyBhdXRvVXBkYXRlLCBmbGlwLCBvZmZzZXQsIHNoaWZ0LCB1c2VGbG9hdGluZyB9IGZyb20gXCJAZmxvYXRpbmctdWkvcmVhY3QtZG9tXCI7XG5pbXBvcnQgdHlwZSB7IFJlZlBsdWdpbiB9IGZyb20gXCIuLi9yZWYvcmVmXCI7XG5pbXBvcnQgeyBleHBlY3REZWZpbmVkLCBzdG9wUHJvcGFnYXRpb24gfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9wb3BvdmVyLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBNaW5pbWFsRGl2IH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzL21pbmltYWwtZGl2XCI7XG5cbmV4cG9ydCB0eXBlIFBvcG92ZXJQbHVnaW5Qcm9wcyA9IHtcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG4gICRwb3BvdmVyPzogKCkgPT4gUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuZXhwb3J0IGNvbnN0IHBvcG92ZXJJc09wZW5Db250ZXh0ID0gY3JlYXRlQ29udGV4dChmYWxzZSk7XG5cbmV4cG9ydCBjb25zdCB1c2VQb3BvdmVySXNPcGVuID0gKCkgPT4gdXNlQ29udGV4dChwb3BvdmVySXNPcGVuQ29udGV4dCk7XG5cbmV4cG9ydCBjb25zdCBwb3BvdmVyUGx1Z2luID0gZ2V0UGx1Z2luPFBvcG92ZXJQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGlja2FibGVQbHVnaW4sIFJlZlBsdWdpbjxhbnk+XT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJHBvcG92ZXIsICRvbkNsaWNrLCAkcmVmIH0gPSBwcm9wcztcbiAgY29uc3QgW3BvcG92ZXJDb250ZW50SXNTaG93biwgc2V0UG9wb3ZlckNvbnRlbnRJc1Nob3duXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3JlZmVyZW5jZSwgc2V0RWxlbWVudF0gPSB1c2VTdGF0ZTxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBjbG9zZVBvcG92ZXIgPSB1c2VDYWxsYmFjaygoKSA9PiBzZXRQb3BvdmVyQ29udGVudElzU2hvd24oZmFsc2UpLCBbXSk7XG5cbiAgaWYgKCEkcG9wb3Zlcikge1xuICAgIHJldHVybiB7XG4gICAgICAkcG9wb3ZlcjogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRwb3BvdmVyOiB1bmRlZmluZWQsXG4gICAgJHJlZjogWyRyZWYsIHNldEVsZW1lbnRdLFxuICAgICRvbkNsaWNrOiAoZGV0YWlsczogQ2xpY2tIYW5kbGVyRGV0YWlscykgPT4ge1xuICAgICAgc2V0UG9wb3ZlckNvbnRlbnRJc1Nob3duKCFwb3BvdmVyQ29udGVudElzU2hvd24pO1xuICAgICAgJG9uQ2xpY2s/LihkZXRhaWxzKTtcbiAgICB9LFxuICAgIG9uQ2xpY2s6IHN0b3BQcm9wYWdhdGlvbixcbiAgICAkd3JhcHBlcjoge1xuICAgICAgQ29tcG9uZW50OiBQb3BvdmVyV3JhcHBlckNvbXBvbmVudCxcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIHBvcG92ZXI6IHtcbiAgICAgICAgICAkcG9wb3ZlcixcbiAgICAgICAgICBpc1Nob3duOiBwb3BvdmVyQ29udGVudElzU2hvd24sXG4gICAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICAgIGNsb3NlUG9wb3ZlcixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn0pO1xuXG50eXBlIFBvcG92ZXJXcmFwcGVyUHJvcHMgPSB7XG4gIHJlYWRvbmx5IHBvcG92ZXI6IHtcbiAgICByZWFkb25seSAkcG9wb3ZlcjogKCkgPT4gUmVhY3QuUmVhY3ROb2RlO1xuICAgIHJlYWRvbmx5IGlzU2hvd246IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgcmVmZXJlbmNlOiBIVE1MRGl2RWxlbWVudCB8IG51bGw7XG4gICAgcmVhZG9ubHkgY2xvc2VQb3BvdmVyOiBWb2lkRnVuY3Rpb247XG4gIH07XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBQb3BvdmVyV3JhcHBlckNvbXBvbmVudCA9ICh7IHBvcG92ZXIsIGNoaWxkcmVuIH06IFBvcG92ZXJXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29uc3QgeyAkcG9wb3ZlciwgaXNTaG93biwgcmVmZXJlbmNlLCBjbG9zZVBvcG92ZXIgfSA9IHBvcG92ZXI7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2lzU2hvd24gJiZcbiAgICAgICAgY3JlYXRlUG9ydGFsKFxuICAgICAgICAgIDxQb3BvdmVyT3ZlcmxheUNvbnRlbnRcbiAgICAgICAgICAgIHsuLi57XG4gICAgICAgICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgICAgICAgJHBvcG92ZXIsXG4gICAgICAgICAgICAgIGNsb3NlUG9wb3ZlcixcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz4sXG4gICAgICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgICAgKX1cbiAgICAgIDxwb3BvdmVySXNPcGVuQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17aXNTaG93bn0+e2NoaWxkcmVufTwvcG9wb3ZlcklzT3BlbkNvbnRleHQuUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuXG50eXBlIFBvcG92ZXJPdmVybGF5Q29udGVudFByb3BzID0ge1xuICByZWZlcmVuY2U6IEhUTUxEaXZFbGVtZW50IHwgbnVsbDtcbiAgJHBvcG92ZXI6ICgpID0+IFJlYWN0LlJlYWN0Tm9kZTtcbiAgY2xvc2VQb3BvdmVyOiBWb2lkRnVuY3Rpb247XG59O1xuXG5jb25zdCBQb3BvdmVyT3ZlcmxheUNvbnRlbnQgPSAocHJvcHM6IFBvcG92ZXJPdmVybGF5Q29udGVudFByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJHBvcG92ZXIsIGNsb3NlUG9wb3ZlciwgcmVmZXJlbmNlIH0gPSBwcm9wcztcbiAgY29uc3QgW2Zsb2F0aW5nLCBzZXRGbG9hdGluZ10gPSB1c2VTdGF0ZTxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCB7IGZsb2F0aW5nU3R5bGVzIH0gPSB1c2VGbG9hdGluZyh7XG4gICAgcGxhY2VtZW50OiBcImJvdHRvbVwiLFxuICAgIG1pZGRsZXdhcmU6IFtmbGlwKCksIG9mZnNldCg4KSwgc2hpZnQoKV0sXG4gICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6IGF1dG9VcGRhdGUsXG4gICAgZWxlbWVudHM6IHtcbiAgICAgIGZsb2F0aW5nLFxuICAgICAgcmVmZXJlbmNlLFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGNsb3NlUG9wb3ZlckZyb21PdmVybGF5ID0gKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgc3RvcFByb3BhZ2F0aW9uKGV2ZW50KTtcbiAgICBjbG9zZVBvcG92ZXIoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxNaW5pbWFsRGl2XG4gICAgICBkYXRhLXBvcG92ZXItb3ZlcmxheS10ZXN0XG4gICAgICAkYWJzb2x1dGVcbiAgICAgICRjbGFzc05hbWU9e3N0eWxlcy5wb3BvdmVyX19vdmVybGF5fVxuICAgICAgb25DbGljaz17Y2xvc2VQb3BvdmVyRnJvbU92ZXJsYXl9XG4gICAgPlxuICAgICAgPE1pbmltYWxEaXZcbiAgICAgICAgJHJlZj17c2V0RmxvYXRpbmd9XG4gICAgICAgIHN0eWxlPXtmbG9hdGluZ1N0eWxlc31cbiAgICAgICAgb25DbGljaz17c3RvcFByb3BhZ2F0aW9ufVxuICAgICAgICAkY2xhc3NOYW1lPXtzdHlsZXMucG9wb3Zlcl9fY29udGVudH1cbiAgICAgID5cbiAgICAgICAgPGNvbnRleHRGb3JDbG9zaW5nUG9wb3Zlci5Qcm92aWRlciB2YWx1ZT17Y2xvc2VQb3BvdmVyfT57JHBvcG92ZXIoKX08L2NvbnRleHRGb3JDbG9zaW5nUG9wb3Zlci5Qcm92aWRlcj5cbiAgICAgIDwvTWluaW1hbERpdj5cbiAgICA8L01pbmltYWxEaXY+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgY29udGV4dEZvckNsb3NpbmdQb3BvdmVyID0gY3JlYXRlQ29udGV4dDxWb2lkRnVuY3Rpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbmV4cG9ydCBjb25zdCB1c2VDbG9zZVBvcG92ZXIgPSAoKSA9PlxuICBleHBlY3REZWZpbmVkKFxuICAgIHVzZUNvbnRleHQoY29udGV4dEZvckNsb3NpbmdQb3BvdmVyKSxcbiAgICBcIlRyaWVkIHRvIHVzZSBjbG9zZSBwb3BvdmVyIHdoaWxlIGNvbnRlbnQgaXMgbm90IHNob3duIGluc2lkZSB0aGUgcG9wb3ZlciBjb250ZW50LlwiLFxuICApO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3BvcG92ZXIvcG9wb3Zlci5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcInBvcG92ZXJfX292ZXJsYXlcIjogXCJwb3BvdmVyLW1vZHVsZV9fcG9wb3Zlcl9fb3ZlcmxheV9fX1RjS3YtXCIsXG4gIFwicG9wb3Zlcl9fY29udGVudFwiOiBcInBvcG92ZXItbW9kdWxlX19wb3BvdmVyX19jb250ZW50X19fVUNVWjZcIlxufTsiLCAiaW1wb3J0IHsgZ2V0UGx1Z2luLCB0eXBlIENvbnRyaWJ1dGVSZWYsIHR5cGUgUGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFJlZlBsdWdpbiB9IGZyb20gXCIuLi9yZWYvcmVmXCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGF1dG9VcGRhdGUsIGZsaXAsIG9mZnNldCwgc2hpZnQsIHVzZUZsb2F0aW5nLCB0eXBlIFBsYWNlbWVudCB9IGZyb20gXCJAZmxvYXRpbmctdWkvcmVhY3QtZG9tXCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgdHlwZSBGbG9hdGluZ0NvbnRlbnRBcmdzID0ge1xuICByZWFkb25seSBmbG9hdGluZ1N0eWxlczogUmVhY3QuQ1NTUHJvcGVydGllcztcbiAgcmVhZG9ubHkgY29udGVudFJlZjogTm9uTnVsbGFibGU8UmVhY3QuUmVmPEhUTUxEaXZFbGVtZW50Pj47XG59O1xuXG5leHBvcnQgdHlwZSBGbG9hdGluZ0NvbnRlbnRGYWN0b3J5ID0gKGFyZ3M6IEZsb2F0aW5nQ29udGVudEFyZ3MpID0+IFJlYWN0LlJlYWN0Tm9kZTtcblxuZXhwb3J0IHR5cGUgJEZsb2F0aW5nUHJvcHMgPSB7XG4gIHJlYWRvbmx5IHBvc2l0aW9uPzogUGxhY2VtZW50O1xuICByZWFkb25seSBjb250ZW50OiBGbG9hdGluZ0NvbnRlbnRGYWN0b3J5O1xufTtcblxuZXhwb3J0IHR5cGUgRmxvYXRpbmdQbHVnaW5Qcm9wcyA9IHtcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIHJlYWRvbmx5ICRmbG9hdGluZz86ICRGbG9hdGluZ1Byb3BzO1xufTtcblxuZXhwb3J0IHR5cGUgRmxvYXRpbmdQbHVnaW4gPSBQbHVnaW48RmxvYXRpbmdQbHVnaW5Qcm9wcywgdW5rbm93bj47XG5cbnR5cGUgRmxvYXRpbmdXcmFwcGVyUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGZsb2F0aW5nOiAkRmxvYXRpbmdQcm9wcztcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVJlZjogQ29udHJpYnV0ZVJlZjtcbiAgcmVhZG9ubHkgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IEZsb2F0aW5nV3JhcHBlckNvbXBvbmVudCA9ICh7IGZsb2F0aW5nLCBjb250cmlidXRlUmVmLCBjaGlsZHJlbiB9OiBGbG9hdGluZ1dyYXBwZXJQcm9wcykgPT4ge1xuICBjb25zdCBbcmVmZXJlbmNlLCBzZXRSZWZlcmVuY2VdID0gdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2Zsb2F0aW5nRWwsIHNldEZsb2F0aW5nXSA9IHVzZVN0YXRlPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgY29udHJpYnV0ZVJlZihzZXRSZWZlcmVuY2UpO1xuXG4gIGNvbnN0IHsgZmxvYXRpbmdTdHlsZXMgfSA9IHVzZUZsb2F0aW5nKHtcbiAgICBwbGFjZW1lbnQ6IGZsb2F0aW5nLnBvc2l0aW9uID8/IFwiYm90dG9tXCIsXG4gICAgbWlkZGxld2FyZTogW2ZsaXAoKSwgb2Zmc2V0KDgpLCBzaGlmdCgpXSxcbiAgICB3aGlsZUVsZW1lbnRzTW91bnRlZDogYXV0b1VwZGF0ZSxcbiAgICBlbGVtZW50czoge1xuICAgICAgZmxvYXRpbmc6IGZsb2F0aW5nRWwsXG4gICAgICByZWZlcmVuY2UsXG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3QgZmxvYXRpbmdDb250ZW50ID0gZmxvYXRpbmcuY29udGVudCh7IGZsb2F0aW5nU3R5bGVzLCBjb250ZW50UmVmOiBzZXRGbG9hdGluZyB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7ZmxvYXRpbmdDb250ZW50ID8gY3JlYXRlUG9ydGFsKGZsb2F0aW5nQ29udGVudCwgZG9jdW1lbnQuYm9keSkgOiBudWxsfVxuICAgICAge2NoaWxkcmVufVxuICAgIDwvPlxuICApO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGZsb2F0aW5nUGx1Z2luPFQ+KCkge1xuICByZXR1cm4gZ2V0UGx1Z2luPEZsb2F0aW5nUGx1Z2luUHJvcHMsIFtSZWZQbHVnaW48VD5dPigocHJvcHMpID0+IHtcbiAgICBjb25zdCB7ICRmbG9hdGluZyB9ID0gcHJvcHM7XG5cbiAgICBpZiAoJGZsb2F0aW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB7ICRmbG9hdGluZzogdW5kZWZpbmVkIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICRmbG9hdGluZzogdW5kZWZpbmVkLFxuICAgICAgJHdyYXBwZXI6IHtcbiAgICAgICAgQ29tcG9uZW50OiBGbG9hdGluZ1dyYXBwZXJDb21wb25lbnQsXG4gICAgICAgIHByb3BzOiB7IGZsb2F0aW5nOiAkZmxvYXRpbmcgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG59XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvaW52aXNpYmxlLWJhY2tkcm9wL2ludmlzaWJsZS1iYWNrZHJvcC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImludmlzaWJsZUJhY2tkcm9wXCI6IFwiaW52aXNpYmxlLWJhY2tkcm9wLW1vZHVsZV9faW52aXNpYmxlQmFja2Ryb3BfX19oT2g1YlwiXG59OyIsICJpbXBvcnQgc3R5bGVzIGZyb20gXCIuL2ludmlzaWJsZS1iYWNrZHJvcC5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcblxuZXhwb3J0IHR5cGUgSW52aXNpYmxlQmFja2Ryb3BQbHVnaW5Qcm9wcyA9IHtcbiAgJGludmlzaWJsZUJhY2tkcm9wPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnZpc2libGVCYWNrZHJvcFBsdWdpbiA9IGdldFBsdWdpbjxJbnZpc2libGVCYWNrZHJvcFBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRpbnZpc2libGVCYWNrZHJvcCwgJGNsYXNzTmFtZSB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkaW52aXNpYmxlQmFja2Ryb3ApIHtcbiAgICByZXR1cm4geyAkaW52aXNpYmxlQmFja2Ryb3A6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkaW52aXNpYmxlQmFja2Ryb3A6IHVuZGVmaW5lZCxcbiAgICAkY2xhc3NOYW1lOiBbJGNsYXNzTmFtZSwgc3R5bGVzLmludmlzaWJsZUJhY2tkcm9wXSxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiwgdHlwZSBDb250cmlidXRlUHJvcHMsIHR5cGUgQ29udHJpYnV0ZVJlZiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRHJvcERvd25NZW51LCB0eXBlIERyb3BEb3duTWVudVNwZWMgfSBmcm9tIFwiQGs4c2xlbnMvZHJvcC1kb3duLW1lbnUtY29udHJhY3RzXCI7XG5pbXBvcnQgeyBvblRyaWdnZXIgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IG9uUmlnaHRUcmlnZ2VySW5qZWN0YWJsZSB9IGZyb20gXCIuLi9jbGlja2FibGUvb24tcmlnaHQtdHJpZ2dlci5pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IFBvc2l0aW9uMmQgfSBmcm9tIFwiLi4vY2xpY2thYmxlL2NsaWNrYWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBjdXJzb3JQbHVnaW4gfSBmcm9tIFwiLi4vY3Vyc29yL2N1cnNvclwiO1xuaW1wb3J0IHsgdHlwZSBlbmFibGVkUGx1Z2luLCBpc0Rpc2FibGVkIH0gZnJvbSBcIi4uL2VuYWJsZWQvZW5hYmxlZFwiO1xuaW1wb3J0IHsgdXNlT25PdXRzaWRlQ2xpY2sgfSBmcm9tIFwiLi4vb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrXCI7XG5cbmV4cG9ydCB0eXBlIERyb3BEb3duTWVudVBsdWdpblByb3BzID0ge1xuICByZWFkb25seSBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgcmVhZG9ubHkgdGFiSW5kZXg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEF0dGFjaGVzIGEgZHJvcC1kb3duIG1lbnUgdG8gdGhlIGVsZW1lbnQuIENyZWF0ZSB0aGUgdmFsdWUgd2l0aCBgZHJvcERvd25NZW51KGtpbmQsIG9wdGlvbnM/KWBcbiAgICogZnJvbSBgQGs4c2xlbnMvZHJvcC1kb3duLW1lbnUtY29udHJhY3RzYDsgdGhlIGl0ZW1zIGNvbWUgZnJvbSB0aGUgY29udHJpYnV0aW9ucyByZWdpc3RlcmVkIGZvclxuICAgKiB0aGUga2luZC5cbiAgICpcbiAgICogVGhlIG1lbnUgcG9zaXRpb25zIGl0c2VsZiBhZ2FpbnN0IHRoZSBuZWFyZXN0IGFuY2hvciBhcm91bmQgaXQsIHNvIHRoZSBlbGVtZW50IFx1MjAxNCBvciBzb21ldGhpbmdcbiAgICogZW5jbG9zaW5nIGl0IFx1MjAxNCBkZWNsYXJlcyBgJGFuY2hvcmAuXG4gICAqXG4gICAqIFRoZSBtZW51IHRha2VzIGZvY3VzIGFzIGl0IG9wZW5zLCBpdHMgZmlyc3QgaXRlbSBiZWNvbWluZyB0aGUgY3VycmVudCBvbmUgXHUyMDE0IGV4Y2VwdCB3aGVuIGl0XG4gICAqIG9wZW5zIGJ5IGJlaW5nIGhvdmVyZWQsIHdoZXJlIGZvY3VzIHN0YXlzIG9uIHRoZSBlbGVtZW50OiB0aGUgcm93IHRoZSBwb2ludGVyIHJlc3RzIG9uIGlzIHdoYXRcbiAgICogdGhlIHVzZXIgaXMgbG9va2luZyBhdC4gRm9jdXMgcmV0dXJucyB0byB0aGUgZWxlbWVudCBvbmNlIHRoZSBtZW51IGlzIGdvbmUuIEEgbWVudSB0aGF0IG9wZW5zIG9uXG4gICAqIGhvdmVyaW5nIG9wZW5zIHdpdGggQXJyb3dSaWdodCBhcyB3ZWxsLCB0YWtpbmcgZm9jdXMgdGhlbiwgYW5kIGNsb3NlcyB3aXRoIEFycm93TGVmdCBmcm9tXG4gICAqIGFueXdoZXJlIHdpdGhpbiBpdCwgc28gYSBtZW51IGhlbGQgYnkgYSBtZW51IHJvdyBpcyByZWFjaGFibGUgd2l0aG91dCBhIHBvaW50ZXIuXG4gICAqXG4gICAqIFJlcXVpcmVzIGBkcm9wRG93bk1lbnVGZWF0dXJlYCBvZiBgQGxlbnNhcHAvZHJvcC1kb3duLW1lbnVgIHRvIGJlIHJlZ2lzdGVyZWQ6IHRoZSBtZW51XG4gICAqIGNvbXBvbmVudCBpcyByZXNvbHZlZCB0aHJvdWdoIGFuIGluamVjdGlvbiB0b2tlbiB0aGlzIHBhY2thZ2UgZG9lcyBub3QgaW1wbGVtZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgJGRyb3BEb3duTWVudT86IERyb3BEb3duTWVudVNwZWM7XG59O1xuXG5jb25zdCBob3ZlckNsb3NlRGVsYXlJbk1pbGxpc2Vjb25kcyA9IDIwMDtcblxudHlwZSBEcm9wRG93bk1lbnVXcmFwcGVyUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGRyb3BEb3duTWVudTogRHJvcERvd25NZW51U3BlYztcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVJlZjogQ29udHJpYnV0ZVJlZjtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVByb3BzOiBDb250cmlidXRlUHJvcHM7XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBEcm9wRG93bk1lbnVXcmFwcGVyQ29tcG9uZW50ID0gKHtcbiAgZHJvcERvd25NZW51LFxuICBjb250cmlidXRlUmVmLFxuICBjb250cmlidXRlUHJvcHMsXG4gIGNoaWxkcmVuLFxufTogRHJvcERvd25NZW51V3JhcHBlclByb3BzKSA9PiB7XG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIC8vIFdoZXRoZXIgdGhlIG1lbnUgdGFrZXMgZm9jdXMgYXMgaXQgb3BlbnMuIE9ubHkgYSBtZW51IHRoZSBwb2ludGVyIG9wZW5lZCBieSByZXN0aW5nIG9uIHRoZVxuICAvLyBlbGVtZW50IGxlYXZlcyBpdCBiZTogdGhlIGtleWJvYXJkIG9wZW5pbmcgb25lLCBvciBhIGNsaWNrLCBpcyB0aGUgdXNlciBhc2tpbmcgZm9yIHRoZSBtZW51LFxuICAvLyBhbmQgaXRzIGZpcnN0IGl0ZW0gaXMgd2hlcmUgdGhleSBnbyBvbiBmcm9tLlxuICBjb25zdCBbdGFrZXNGb2N1cywgc2V0VGFrZXNGb2N1c10gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgW2N1cnNvciwgc2V0Q3Vyc29yXSA9IHVzZVN0YXRlPFBvc2l0aW9uMmQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IGNsb3NlVGltZXJSZWYgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IG9uUmlnaHRUcmlnZ2VyID0gdXNlU3luY0luamVjdChvblJpZ2h0VHJpZ2dlckluamVjdGFibGUpO1xuXG4gIGNvbnN0IGVsZW1lbnRSZWYgPSB1c2VSZWY8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgbWVudVJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBlbGVtZW50VGFrZXNGb2N1c0JhY2tSZWYgPSB1c2VSZWYoZmFsc2UpO1xuXG4gIGNvbnRyaWJ1dGVSZWYoXG4gICAgdXNlQ2FsbGJhY2soKGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgZWxlbWVudFJlZi5jdXJyZW50ID0gZWxlbWVudDtcbiAgICB9LCBbXSksXG4gICk7XG5cbiAgY29uc3QgdG9nZ2xlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFRha2VzRm9jdXModHJ1ZSk7XG4gICAgc2V0SXNPcGVuKCh3YXNPcGVuKSA9PiAhd2FzT3Blbik7XG4gIH0sIFtdKTtcblxuICBjb25zdCBjbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAvLyBUaGUgZWxlbWVudCB0aGUgbWVudSBiZWxvbmdzIHRvIHRha2VzIGZvY3VzIGJhY2sgd2hlbiBmb2N1cyBpcyBpbiB0aGUgbWVudSB0aGF0IGlzIGNsb3NpbmcsXG4gICAgLy8gb3Igbm93aGVyZSBhdCBhbGw6IHdoYXRldmVyIHRoZSB1c2VyIGRvZXMgbmV4dCwgdGhleSBkbyBmcm9tIHdoZXJlIHRoZXkgd2VyZS4gRGVjaWRlZCBoZXJlLFxuICAgIC8vIHdoaWxlIGl0IGlzIHN0aWxsIGNsZWFyIHdoZXJlIGZvY3VzIHdhcywgcmF0aGVyIHRoYW4gb25jZSB0aGUgbWVudSBoYXMgZ29uZS5cbiAgICBjb25zdCBmb2N1c2VkID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblxuICAgIGVsZW1lbnRUYWtlc0ZvY3VzQmFja1JlZi5jdXJyZW50ID1cbiAgICAgIGZvY3VzZWQgPT09IG51bGwgfHwgZm9jdXNlZCA9PT0gZG9jdW1lbnQuYm9keSB8fCBtZW51UmVmLmN1cnJlbnQ/LmNvbnRhaW5zKGZvY3VzZWQpID09PSB0cnVlO1xuXG4gICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGNhbmNlbFNjaGVkdWxlZENsb3NlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChjbG9zZVRpbWVyUmVmLmN1cnJlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KGNsb3NlVGltZXJSZWYuY3VycmVudCk7XG4gICAgICBjbG9zZVRpbWVyUmVmLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9LCBbXSk7XG5cbiAgY29uc3Qgb3BlbiA9IHVzZUNhbGxiYWNrKFxuICAgIChvcGVuZWRCeTogXCJwb2ludGVyXCIgfCBcImtleWJvYXJkXCIpID0+IHtcbiAgICAgIGNhbmNlbFNjaGVkdWxlZENsb3NlKCk7XG4gICAgICBzZXRUYWtlc0ZvY3VzKG9wZW5lZEJ5ID09PSBcImtleWJvYXJkXCIpO1xuICAgICAgc2V0SXNPcGVuKHRydWUpO1xuICAgIH0sXG4gICAgW2NhbmNlbFNjaGVkdWxlZENsb3NlXSxcbiAgKTtcblxuICBjb25zdCBzY2hlZHVsZUNsb3NlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNhbmNlbFNjaGVkdWxlZENsb3NlKCk7XG4gICAgY2xvc2VUaW1lclJlZi5jdXJyZW50ID0gc2V0VGltZW91dChjbG9zZSwgaG92ZXJDbG9zZURlbGF5SW5NaWxsaXNlY29uZHMpO1xuICB9LCBbY2FuY2VsU2NoZWR1bGVkQ2xvc2UsIGNsb3NlXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IGNhbmNlbFNjaGVkdWxlZENsb3NlLCBbY2FuY2VsU2NoZWR1bGVkQ2xvc2VdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNPcGVuKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIEEgbWVudSB0aGF0IGlzIGRpc21pc3NlZCByYXRoZXIgdGhhbiBjbG9zZWQgXHUyMDE0IGNsaWNrZWQgYXdheSBmcm9tIFx1MjAxNCBsZWF2ZXMgZm9jdXMgd2hlcmV2ZXIgdGhlXG4gICAgLy8gdXNlciBwdXQgaXQuXG4gICAgZWxlbWVudFRha2VzRm9jdXNCYWNrUmVmLmN1cnJlbnQgPSBmYWxzZTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoIWVsZW1lbnRUYWtlc0ZvY3VzQmFja1JlZi5jdXJyZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gRGVmZXJyZWQgcGFzdCB3aGF0IGlzIGJlaW5nIHRha2VuIGF3YXk6IHRoZSBlbGVtZW50IG1heSBiZSBnb2luZyB3aXRoIHRoZSBtZW51LCBhIG1lbnVcbiAgICAgIC8vIGluc2lkZSBhIG1lbnUgdGhhdCBpcyBjbG9zaW5nIHRvbywgYW5kIG9ubHkgdGhlbiBpcyBpdCBjbGVhciB3aGV0aGVyIGl0IGlzIHN0aWxsIHRoZXJlIHRvXG4gICAgICAvLyB0YWtlIGZvY3VzIGJhY2suIEFueXRoaW5nIHRoYXQgdG9vayBmb2N1cyBpbiB0aGUgbWVhbnRpbWUgd2FzIGdpdmVuIGl0IG9uIHB1cnBvc2UsIGFuZCBhXG4gICAgICAvLyBtZW51IGNsb3NpbmcgaXMgbm8gcmVhc29uIHRvIHRha2UgaXQgYXdheSBhZ2Fpbi5cbiAgICAgIHZvaWQgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50UmVmLmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IGZvY3VzZWQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuXG4gICAgICAgIGlmIChlbGVtZW50Py5pc0Nvbm5lY3RlZCAmJiAoZm9jdXNlZCA9PT0gbnVsbCB8fCBmb2N1c2VkID09PSBkb2N1bWVudC5ib2R5KSkge1xuICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcbiAgfSwgW2lzT3Blbl0pO1xuXG4gIGNvbnN0IG9wZW5PbiA9IGRyb3BEb3duTWVudS5vcGVuT24gPz8gXCJjbGlja1wiO1xuXG4gIGNvbnN0IGNsb3NlT25BcnJvd0xlZnQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dMZWZ0XCIpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGNsb3NlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbY2xvc2VdLFxuICApO1xuXG4gIC8vIE1hcmtzIHRoZSBlbGVtZW50IGFuZCwgYmVsb3csIHRoZSBtZW51IGl0IG9wZW5zIGFzIG9uZSB0aGluZyBmb3Igb3V0c2lkZS1jbGljayBwdXJwb3Nlcy5cbiAgY29uc3Qgb3V0c2lkZUNsaWNrTWFya2luZ1Byb3BzID0gdXNlT25PdXRzaWRlQ2xpY2soXG4gICAgdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICBzZXRJc09wZW4oZmFsc2UpO1xuICAgICAgfVxuICAgIH0sIFtpc09wZW5dKSxcbiAgKTtcblxuICBjb250cmlidXRlUHJvcHMoe1xuICAgIC4uLm91dHNpZGVDbGlja01hcmtpbmdQcm9wcyxcbiAgICBcImFyaWEtaGFzcG9wdXBcIjogXCJtZW51XCIsXG5cbiAgICAuLi4ob3Blbk9uID09PSBcImNsaWNrXCIgJiYge1xuICAgICAgb25DbGljazogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0b2dnbGUoKTtcbiAgICAgIH0sXG5cbiAgICAgIC8vIEEga2V5IHByZXNzIHRoZSBlbGVtZW50IGFuc3dlcnMgd2l0aCBhIG1lbnUgaXMgYW5zd2VyZWQgaGVyZSBhbmQgbm93aGVyZSBlbHNlLFxuICAgICAgLy8gZXhhY3RseSBhcyBpdHMgY2xpY2sgaXM6IHdoYXRldmVyIGVuY2xvc2VzIHRoZSBlbGVtZW50IChhIG1lbnUgcm93IHdpdGggYW5cbiAgICAgIC8vIGFjdGlvbiBvZiBpdHMgb3duLCBzYXkpIG11c3Qgbm90IHRha2UgdGhlIHNhbWUgcHJlc3MgZm9yIGJlaW5nIGFjdGl2YXRlZCB0b28uXG4gICAgICBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBvblRyaWdnZXIoZXZlbnQsICgpID0+IHtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB0b2dnbGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0pLFxuXG4gICAgLi4uKG9wZW5PbiA9PT0gXCJyaWdodC1jbGlja1wiICYmIHtcbiAgICAgIG9uQ29udGV4dE1lbnU6IChldmVudDogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgLy8gQSBtZW51IG9wZW5lZCBieSByaWdodC1jbGlja2luZyBiZWxvbmdzIGF0IHRoZSBjdXJzb3IgcmF0aGVyIHRoYW4gYXQgdGhlIGVsZW1lbnQuXG4gICAgICAgIHNldEN1cnNvcih7IHg6IGV2ZW50LmNsaWVudFgsIHk6IGV2ZW50LmNsaWVudFkgfSk7XG4gICAgICAgIHRvZ2dsZSgpO1xuICAgICAgfSxcblxuICAgICAgb25LZXlEb3duOiAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgb25SaWdodFRyaWdnZXIoZXZlbnQsICgpID0+IHtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB0b2dnbGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0pLFxuXG4gICAgLi4uKG9wZW5PbiA9PT0gXCJob3ZlclwiICYmIHtcbiAgICAgIG9uTW91c2VFbnRlcjogKCkgPT4gb3BlbihcInBvaW50ZXJcIiksXG4gICAgICBvbk1vdXNlTGVhdmU6IHNjaGVkdWxlQ2xvc2UsXG5cbiAgICAgIC8vIEEgbWVudSB0aGF0IG9wZW5zIG9uIGhvdmVyaW5nIHdvdWxkIGJlIG91dCBvZiB0aGUga2V5Ym9hcmQncyByZWFjaCBvdGhlcndpc2UuIFNpZGV3YXlzXG4gICAgICAvLyBpbnRvIGl0LCBzaW5jZSB0aGF0IGlzIHdoZXJlIHN1Y2ggYSBtZW51IHNpdHM6IGJlc2lkZSB0aGUgZWxlbWVudCBpdCBiZWxvbmdzIHRvLiBGb2N1c1xuICAgICAgLy8gZm9sbG93cyBvbiBpdHMgb3duLCB0aGUgbWVudSB0YWtpbmcgaXQgYXMgaXQgYXBwZWFycyBcdTIwMTQgb3IsIHRoZSBwb2ludGVyIGhhdmluZyBvcGVuZWQgaXRcbiAgICAgIC8vIGFscmVhZHksIGFzIHRoZSBrZXlib2FyZCBzdGVwcyBpbnRvIGl0LlxuICAgICAgb25LZXlEb3duOiAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd1JpZ2h0XCIpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIG9wZW4oXCJrZXlib2FyZFwiKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2NoaWxkcmVufVxuXG4gICAgICB7aXNPcGVuICYmIChcbiAgICAgICAgLy8gTWFya2VkIGFzIGluc2lkZSBmb3IgdGhlIG91dHNpZGUtY2xpY2sgZGV0ZWN0aW9uIGFib3ZlOiB0aGUgbWVudSBpcyBhIHNpYmxpbmcgb2YgdGhlXG4gICAgICAgIC8vIGVsZW1lbnQgaW4gdGhlIERPTSwgYnV0IHBhcnQgb2YgdGhlIHNhbWUgdGhpbmcgYXMgZmFyIGFzIGEgdXNlciBpcyBjb25jZXJuZWQuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEEgY2xpY2sgbGFuZGluZyBvbiB0aGUgbWVudSBpcyBhIGNsaWNrIG9uIHRoZSBtZW51IGFuZCBub3RoaW5nIGVsc2UsIHNvIGl0IHN0b3BzIGhlcmVcbiAgICAgICAgLy8gcmF0aGVyIHRoYW4gZ29pbmcgb24gdG8gd2hhdGV2ZXIgZW5jbG9zZXMgdGhlIGVsZW1lbnQgdGhlIG1lbnUgd2FzIG9wZW5lZCBmcm9tIFx1MjAxNCBhIHJvd1xuICAgICAgICAvLyBvZiBhIG1lbnUgb2YgaXRzIG93biwgc2F5LCB3aGljaCB3b3VsZCB0YWtlIGl0IGZvciB0aGUgcm93IGJlaW5nIGFjdGl2YXRlZC4gT25seVxuICAgICAgICAvLyBgY2xpY2tgIHN0b3BzOiB0aGUgb3V0c2lkZS1jbGljayBkZXRlY3Rpb24gYWJvdmUgd29ya3Mgb24gYHBvaW50ZXJkb3duYC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gRm9jdXMgbGFuZGluZyBpbiB0aGUgbWVudSBpcyBsaWtld2lzZSBmb2N1cyBpbiB0aGUgbWVudSBhbmQgbm90aGluZyBlbHNlLiBBIHRyZWUgcm93XG4gICAgICAgIC8vIGVuY2xvc2luZyB0aGUgZWxlbWVudCB3b3VsZCBvdGhlcndpc2UgdGFrZSBpdCBmb3IgdGhlIHJvdyBpdHNlbGYgYmVpbmcgZm9jdXNlZCwgYW5kXG4gICAgICAgIC8vIHRha2UgZm9jdXMgc3RyYWlnaHQgYmFjayBmcm9tIHRoZSBtZW51IHJvdyB0aGUgcG9pbnRlciBoYWQganVzdCBwdXQgaXQgb24gXHUyMDE0IGFuZCBzaW5jZVxuICAgICAgICAvLyB0aGUgaGlnaGxpZ2h0IG9mIGEgbWVudSByb3cgZm9sbG93cyBmb2N1cywgdGhhdCBpcyBhIG1lbnUgdGhhdCBuZXZlciBsb29rcyBwb2ludGVkIGF0LlxuICAgICAgICAvLyBPbmx5IGZvY3VzIHN0b3BzLCBub3QgYmx1cjogd2hhdGV2ZXIgZW5jbG9zZXMgdGhlIGVsZW1lbnQgdGVsbHMgZm9jdXMgbGVhdmluZyBpdCBhcGFydFxuICAgICAgICAvLyBmcm9tIGZvY3VzIG1vdmluZyB3aXRoaW4gaXQgYnkgd2hlcmUgZm9jdXMgd2VudCwgYW5kIGhhcyB0byBoZWFyIG9mIGl0IGxlYXZpbmcgZnJvbSB0aGVcbiAgICAgICAgLy8gbWVudSBhcyBtdWNoIGFzIGZyb20gYW55d2hlcmUgZWxzZS5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICB7Li4ub3V0c2lkZUNsaWNrTWFya2luZ1Byb3BzfVxuICAgICAgICAgIHJlZj17bWVudVJlZn1cbiAgICAgICAgICBzdHlsZT17ZGlzcGxheUNvbnRlbnRzfVxuICAgICAgICAgIG9uQ2xpY2s9e3N0b3BQcm9wYWdhdGlvbn1cbiAgICAgICAgICBvbkZvY3VzPXtzdG9wUHJvcGFnYXRpb259XG4gICAgICAgICAgLy8gU2lkZXdheXMgYmFjayBvdXQgb2YgYSBtZW51IHRoYXQgb3BlbmVkIHNpZGV3YXlzLCBmcm9tIHdoZXJldmVyIGluIGl0IGZvY3VzIGhhcHBlbnMgdG9cbiAgICAgICAgICAvLyBiZS4gSXQgc3RvcHMgaGVyZSwgc28gdGhlIG1lbnUgdGhpcyBvbmUgd2FzIG9wZW5lZCBmcm9tIGlzIGxlZnQgYXMgaXQgaXMgcmF0aGVyIHRoYW5cbiAgICAgICAgICAvLyBjbG9zaW5nIGFsb25nIHdpdGggaXQgXHUyMDE0IG9uZSBzdGVwIG91dCBwZXIgcHJlc3MuIE9ubHkgc3VjaCBhIG1lbnU6IGVsc2V3aGVyZSB0aGUga2V5XG4gICAgICAgICAgLy8gYmVsb25ncyB0byB3aGF0ZXZlciB0aGUgbWVudSBob2xkcywgYW5kIEVzY2FwZSBpcyBob3cgYSBtZW51IGlzIGRpc21pc3NlZC5cbiAgICAgICAgICBvbktleURvd249e29wZW5PbiA9PT0gXCJob3ZlclwiID8gY2xvc2VPbkFycm93TGVmdCA6IHVuZGVmaW5lZH1cbiAgICAgICAgPlxuICAgICAgICAgIDxEcm9wRG93bk1lbnVcbiAgICAgICAgICAgIHNwZWM9e2Ryb3BEb3duTWVudX1cbiAgICAgICAgICAgIGFuY2hvclBvaW50PXtvcGVuT24gPT09IFwicmlnaHQtY2xpY2tcIiA/IGN1cnNvciA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgIHRha2VzRm9jdXM9e3Rha2VzRm9jdXN9XG4gICAgICAgICAgICBvbkNsb3NlPXtjbG9zZX1cbiAgICAgICAgICAgIG9uTWVudUhvdmVyQ2hhbmdlPXtcbiAgICAgICAgICAgICAgb3Blbk9uID09PSBcImhvdmVyXCJcbiAgICAgICAgICAgICAgICA/IChtZW51SXNIb3ZlcmVkKSA9PiAobWVudUlzSG92ZXJlZCA/IGNhbmNlbFNjaGVkdWxlZENsb3NlKCkgOiBzY2hlZHVsZUNsb3NlKCkpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuY29uc3QgZGlzcGxheUNvbnRlbnRzID0geyBkaXNwbGF5OiBcImNvbnRlbnRzXCIgfSBhcyBjb25zdDtcblxuY29uc3Qgc3RvcFByb3BhZ2F0aW9uID0gKGV2ZW50OiBSZWFjdC5TeW50aGV0aWNFdmVudCkgPT4gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbmV4cG9ydCBjb25zdCBkcm9wRG93bk1lbnVQbHVnaW4gPSBnZXRQbHVnaW48RHJvcERvd25NZW51UGx1Z2luUHJvcHMsIFt0eXBlb2YgZW5hYmxlZFBsdWdpbiwgdHlwZW9mIGN1cnNvclBsdWdpbl0+KFxuICAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7ICRkcm9wRG93bk1lbnUsICRjdXJzb3IsIHJvbGUgfSA9IHByb3BzIGFzIHR5cGVvZiBwcm9wcyAmIFJlYWN0LkhUTUxQcm9wczxIVE1MRWxlbWVudD47XG5cbiAgICBpZiAoJGRyb3BEb3duTWVudSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4geyAkZHJvcERvd25NZW51OiB1bmRlZmluZWQgfTtcbiAgICB9XG5cbiAgICBjb25zdCBvcGVuc09uQ2xpY2sgPSAoJGRyb3BEb3duTWVudS5vcGVuT24gPz8gXCJjbGlja1wiKSA9PT0gXCJjbGlja1wiO1xuICAgIC8vIFJlYWQgZnJvbSB3aGF0IHRoZSBlbGVtZW50IHdhcyBnaXZlbjogdGhpcyBwbHVnaW4gcnVucyBiZWZvcmUgdGhlIG9uZSB0aGF0IHR1cm5zIGl0IGludG9cbiAgICAvLyB0aGUgYGRpc2FibGVkYCBwcm9wLlxuICAgIGNvbnN0IGNhbm5vdEJlVXNlZCA9IGlzRGlzYWJsZWQocHJvcHMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICRkcm9wRG93bk1lbnU6IHVuZGVmaW5lZCxcblxuICAgICAgLi4uKCRkcm9wRG93bk1lbnUub3Blbk9uID09PSBcImhvdmVyXCIgPyB7fSA6IHsgdGFiSW5kZXg6IHByb3BzLnRhYkluZGV4ID8/IDAgfSksXG5cbiAgICAgIC8vIEFuIGVsZW1lbnQgdGhhdCBhbnN3ZXJzIGEgY2xpY2sgd2l0aCBhIG1lbnUgaXMgYSBidXR0b24sIGFuZCB0aGUgY3Vyc29yIGlzIGhvdyBpdCBzYXlzIHNvXG4gICAgICAvLyAtLSBvciBzYXlzIHRoYXQgaXQgY2Fubm90IHJpZ2h0IG5vdy4gQm90aCB3b3VsZCBvdGhlcndpc2UgY29tZSBmcm9tIGEgY2xpY2sgaGFuZGxlciBzdWNoIGFuXG4gICAgICAvLyBlbGVtZW50IGhhcyBubyByZWFzb24gdG8gaGF2ZS4gT25seSBhIGNsaWNrOiBzb21ldGhpbmcgcmlnaHQtY2xpY2tlZCBpcyBub3QgYSBidXR0b24sIGFuZCBhXG4gICAgICAvLyByb3cgdGhhdCByZXZlYWxzIGEgbWVudSBvbiBob3ZlciBpcyBhIHJvdy5cbiAgICAgIC4uLihvcGVuc09uQ2xpY2sgJiYge1xuICAgICAgICByb2xlOiByb2xlID8/IFwiYnV0dG9uXCIsXG4gICAgICAgICRjdXJzb3I6ICRjdXJzb3IgPz8gKGNhbm5vdEJlVXNlZCA/IFwibm90LWFsbG93ZWRcIiA6IFwicG9pbnRlclwiKSxcbiAgICAgIH0pLFxuXG4gICAgICAkd3JhcHBlcjoge1xuICAgICAgICBDb21wb25lbnQ6IERyb3BEb3duTWVudVdyYXBwZXJDb21wb25lbnQsXG4gICAgICAgIHByb3BzOiB7IGRyb3BEb3duTWVudTogJGRyb3BEb3duTWVudSB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9LFxuKTtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4sIHR5cGUgQ29udHJpYnV0ZVByb3BzLCB0eXBlIENvbnRyaWJ1dGVSZWYgfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB7IGNzc05hbWVzIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlSWQsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9hbmNob3IubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgUG9zaXRpb24yZCB9IGZyb20gXCIuLi9jbGlja2FibGUvY2xpY2thYmxlXCI7XG5pbXBvcnQgeyB0eXBlIFRTaGlydFNpemUsIHRTaGlydFNpemVJblBpeGVscyB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB0eXBlIHsgY29sb3JQbHVnaW4gfSBmcm9tIFwiLi4vY29sb3IvY29sb3JcIjtcbmltcG9ydCB0eXBlIHsgYmFja2dyb3VuZENvbG9yUGx1Z2luIH0gZnJvbSBcIi4uL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvclwiO1xuaW1wb3J0IHR5cGUgeyBib3JkZXJQbHVnaW4gfSBmcm9tIFwiLi4vYm9yZGVyL2JvcmRlclwiO1xuaW1wb3J0IHR5cGUgeyBwYWRkaW5nUGx1Z2luIH0gZnJvbSBcIi4uL3BhZGRpbmcvcGFkZGluZ1wiO1xuaW1wb3J0IHR5cGUgeyBtYXJnaW5QbHVnaW4gfSBmcm9tIFwiLi4vbWFyZ2luL21hcmdpblwiO1xuaW1wb3J0IHR5cGUgeyBvdmVyZmxvd1BsdWdpbiB9IGZyb20gXCIuLi9vdmVyZmxvdy9vdmVyZmxvd1wiO1xuXG4vKipcbiAqIFdoZXJlIGFuIGVsZW1lbnQgc2l0cyByZWxhdGl2ZSB0byBpdHMgYW5jaG9yOiBhIHNpZGUgb2YgdGhlIGFuY2hvciwgb3B0aW9uYWxseSByZWZpbmVkIHdpdGggaG93XG4gKiB0aGUgZWxlbWVudCBleHRlbmRzIGFsb25nIHRoYXQgc2lkZS4gQSBiYXJlIHNpZGUgY2VudGVycyB0aGUgZWxlbWVudCBvbiBpdDsgYHNwYW4tPGRpcmVjdGlvbj5gXG4gKiBhbGlnbnMgdGhlaXIgZWRnZXMgYW5kIGxldHMgdGhlIGVsZW1lbnQgZXh0ZW5kIHRvd2FyZCB0aGF0IGRpcmVjdGlvbi5cbiAqXG4gKiBXaGVuIHRoZSBlbGVtZW50IHdvdWxkIG5vdCBmaXQgdGhlIHZpZXdwb3J0LCBpdCBmYWxscyBiYWNrIHRvIHRoZSBtaXJyb3JlZCBwb3NpdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIEFuY2hvclBvc2l0aW9uID1cbiAgfCBcInRvcFwiXG4gIHwgXCJib3R0b21cIlxuICB8IFwibGVmdFwiXG4gIHwgXCJyaWdodFwiXG4gIHwgXCJ0b3Agc3Bhbi1sZWZ0XCJcbiAgfCBcInRvcCBzcGFuLXJpZ2h0XCJcbiAgfCBcImJvdHRvbSBzcGFuLWxlZnRcIlxuICB8IFwiYm90dG9tIHNwYW4tcmlnaHRcIlxuICB8IFwibGVmdCBzcGFuLXRvcFwiXG4gIHwgXCJsZWZ0IHNwYW4tYm90dG9tXCJcbiAgfCBcInJpZ2h0IHNwYW4tdG9wXCJcbiAgfCBcInJpZ2h0IHNwYW4tYm90dG9tXCI7XG5cbi8qKlxuICogRWl0aGVyIGEgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIG5lYXJlc3QgYW5jZXN0b3IgYCRhbmNob3JgLCBvciB0aGUgc2FtZSBwb3NpdGlvbiByZWxhdGl2ZSB0byBhXG4gKiBwb2ludCBpbiB0aGUgdmlld3BvcnQuXG4gKi9cbmV4cG9ydCB0eXBlIEFuY2hvcmVkQXQgPVxuICB8IEFuY2hvclBvc2l0aW9uXG4gIHwge1xuICAgICAgcmVhZG9ubHkgcG9zaXRpb246IEFuY2hvclBvc2l0aW9uO1xuXG4gICAgICAvKiogSG93IGZhciBmcm9tIHRoZSBhbmNob3IgdGhlIGVsZW1lbnQgc2l0cy4gRGVmYXVsdHMgdG8gYFwieHNcImAuICovXG4gICAgICByZWFkb25seSBnYXA/OiBUU2hpcnRTaXplO1xuXG4gICAgICAvKiogU2l0IGF0IHRoaXMgdmlld3BvcnQgcG9pbnQgaW5zdGVhZCBvZiBhdCBhbiBhbmNob3IuICovXG4gICAgICByZWFkb25seSBwb2ludD86IFBvc2l0aW9uMmQ7XG4gICAgfTtcblxuY29uc3QgZGVmYXVsdEdhcDogVFNoaXJ0U2l6ZSA9IFwieHNcIjtcblxuZXhwb3J0IHR5cGUgQW5jaG9yUGx1Z2luUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuXG4gIC8qKlxuICAgKiBNYWtlcyB0aGUgZWxlbWVudCBhbiBhbmNob3IgZm9yIHRoZSBlbGVtZW50cyBvZiBpdHMgc3VidHJlZSB0aGF0IGRlY2xhcmUge0BsaW5rICRhbmNob3JlZEF0fS5cbiAgICogVGhlIG5lYXJlc3Qgc3VjaCBhbmNlc3RvciB3aW5zLCBzbyBuZXN0aW5nIHdvcmtzIHdpdGhvdXQgbmFtaW5nIGFueXRoaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgJGFuY2hvcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFBvc2l0aW9ucyB0aGUgZWxlbWVudCByZWxhdGl2ZSB0byBhbiBhbmNob3IsIGFib3ZlIGV2ZXJ5dGhpbmcgZWxzZSBvbiB0aGUgcGFnZSBcdTIwMTQgaXQgZXNjYXBlc1xuICAgKiBjbGlwcGluZyBhbmNlc3RvcnMgYW5kIHN0YWNraW5nIGNvbnRleHRzLCBzbyBpdCBuZWVkcyBubyBwb3J0YWwuXG4gICAqXG4gICAqIFRoZSBhbmNob3IgaXMgdGhlIG5lYXJlc3QgYW5jZXN0b3IgZGVjbGFyaW5nIHtAbGluayAkYW5jaG9yfSwgb3IgdGhlIGdpdmVuIHBvaW50IHdoZW4gYSBwb2ludFxuICAgKiBpcyBwcm92aWRlZCBpbnN0ZWFkLlxuICAgKi9cbiAgcmVhZG9ubHkgJGFuY2hvcmVkQXQ/OiBBbmNob3JlZEF0O1xufTtcblxuY29uc3QgYW5jaG9yTmFtZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxudHlwZSBBbmNob3JXcmFwcGVyUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGlzQW5jaG9yOiBib29sZWFuO1xuICByZWFkb25seSBhbmNob3JlZEF0OiBBbmNob3JlZEF0IHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBjb250cmlidXRlUmVmOiBDb250cmlidXRlUmVmO1xuICByZWFkb25seSBjb250cmlidXRlUHJvcHM6IENvbnRyaWJ1dGVQcm9wcztcbiAgcmVhZG9ubHkgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IEFuY2hvcldyYXBwZXJDb21wb25lbnQgPSAoe1xuICBpc0FuY2hvcixcbiAgYW5jaG9yZWRBdCxcbiAgY29udHJpYnV0ZVJlZixcbiAgY29udHJpYnV0ZVByb3BzLFxuICBjaGlsZHJlbixcbn06IEFuY2hvcldyYXBwZXJQcm9wcykgPT4ge1xuICBjb25zdCBvd25BbmNob3JOYW1lID0gdG9BbmNob3JOYW1lKHVzZUlkKCkpO1xuICBjb25zdCBpbmhlcml0ZWRBbmNob3JOYW1lID0gdXNlQ29udGV4dChhbmNob3JOYW1lQ29udGV4dCk7XG4gIGNvbnN0IGVsZW1lbnRSZWYgPSB1c2VSZWY8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgcG9pbnRSZWYgPSB1c2VSZWY8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcblxuICBjb250cmlidXRlUmVmKFxuICAgIHVzZUNhbGxiYWNrKChlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwpID0+IHtcbiAgICAgIGVsZW1lbnRSZWYuY3VycmVudCA9IGVsZW1lbnQ7XG4gICAgfSwgW10pLFxuICApO1xuXG4gIGNvbnN0IHBvc2l0aW9uID0gdHlwZW9mIGFuY2hvcmVkQXQgPT09IFwic3RyaW5nXCIgPyBhbmNob3JlZEF0IDogYW5jaG9yZWRBdD8ucG9zaXRpb247XG4gIGNvbnN0IHBvaW50ID0gdHlwZW9mIGFuY2hvcmVkQXQgPT09IFwib2JqZWN0XCIgPyBhbmNob3JlZEF0LnBvaW50IDogdW5kZWZpbmVkO1xuICBjb25zdCBnYXAgPSB0eXBlb2YgYW5jaG9yZWRBdCA9PT0gXCJvYmplY3RcIiA/IChhbmNob3JlZEF0LmdhcCA/PyBkZWZhdWx0R2FwKSA6IGRlZmF1bHRHYXA7XG5cbiAgaWYgKHBvc2l0aW9uICYmICFwb2ludCAmJiAhaW5oZXJpdGVkQW5jaG9yTmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBUcmllZCB0byBwb3NpdGlvbiBhbiBlbGVtZW50IGF0IFwiJHtwb3NpdGlvbn1cIiB3aXRob3V0IGFuIGFuY2hvci4gRWl0aGVyIGdpdmUgYW4gYW5jZXN0b3IgdGhlICRhbmNob3IgcHJvcCwgb3IgYW5jaG9yIHRvIGEgcG9pbnQgaW5zdGVhZC5gLFxuICAgICk7XG4gIH1cblxuICAvLyBBIHBvaW50IGFuY2hvciBpcyB0aGUgZWxlbWVudCdzIG93bjsgb3RoZXJ3aXNlIGl0IHBvc2l0aW9ucyBhZ2FpbnN0IHdoYXRldmVyIGFuY2hvciBlbmNsb3NlcyBpdC5cbiAgY29uc3QgYW5jaG9yTmFtZVRvUG9zaXRpb25BZ2FpbnN0ID0gcG9pbnQgPyBvd25BbmNob3JOYW1lIDogaW5oZXJpdGVkQW5jaG9yTmFtZTtcblxuICBpZiAoYW5jaG9yZWRBdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29udHJpYnV0ZVByb3BzKHsgcG9wb3ZlcjogXCJtYW51YWxcIiB9KTtcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRSZWYuY3VycmVudDtcblxuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc0FuY2hvcikge1xuICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShhbmNob3JOYW1lUHJvcGVydHksIG93bkFuY2hvck5hbWUpO1xuICAgIH1cblxuICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShwb3NpdGlvblByb3BlcnR5LCBwb3NpdGlvbik7XG4gICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGdhcFByb3BlcnR5LCBgJHt0U2hpcnRTaXplSW5QaXhlbHMoZ2FwKX1weGApO1xuXG4gICAgICAvLyBPbmx5IHRvd2FyZCB0aGUgYW5jaG9yLCBzbyB0aGUgZWxlbWVudCBzdGlsbCBsaW5lcyB1cCB3aXRoIGl0IG9uIHRoZSBvdGhlciBheGlzLiBBXG4gICAgICAvLyBmYWxsYmFjayB0aGF0IG1pcnJvcnMgdGhlIHBvc2l0aW9uIG1pcnJvcnMgdGhpcyBtYXJnaW4gd2l0aCBpdC5cbiAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkobWFyZ2luUHJvcGVydHlUb3dhcmRzQW5jaG9yKHBvc2l0aW9uKSwgYCR7dFNoaXJ0U2l6ZUluUGl4ZWxzKGdhcCl9cHhgKTtcblxuICAgICAgaWYgKGFuY2hvck5hbWVUb1Bvc2l0aW9uQWdhaW5zdCkge1xuICAgICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHBvc2l0aW9uQW5jaG9yUHJvcGVydHksIGFuY2hvck5hbWVUb1Bvc2l0aW9uQWdhaW5zdCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwb2ludCkge1xuICAgICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHBvaW50WFByb3BlcnR5LCBgJHtwb2ludC54fXB4YCk7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkocG9pbnRZUHJvcGVydHksIGAke3BvaW50Lnl9cHhgKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIC8vIFRoZSBwb2ludCByaXNlcyB0byB0aGUgdG9wIGxheWVyIGFsb25nIHdpdGggd2hhdCBpcyBhbmNob3JlZCB0byBpdC4gQSBgZml4ZWRgIGVsZW1lbnQgcmVzb2x2ZXNcbiAgLy8gYWdhaW5zdCB0aGUgbmVhcmVzdCBhbmNlc3RvciB0aGF0IHRyYW5zZm9ybXMsIGZpbHRlcnMgb3IgY29udGFpbnMgaXRzIHN1YnRyZWUsIHNvIGEgcG9pbnQgbGVmdFxuICAvLyBpbiB0aGUgdHJlZSBsYW5kcyBhdCB0aGUgY3Vyc29yIHBsdXMgdGhhdCBhbmNlc3RvcidzIG93biBvZmZzZXQgXHUyMDE0IHdoaWNoIGlzIGhvdyBhIG1lbnUgb3BlbmVkXG4gIC8vIG92ZXIgYSBuYXZpZ2F0b3IgaXRlbSB1c2VkIHRvIGFwcGVhciBodW5kcmVkcyBvZiBwaXhlbHMgYmVsb3cgdGhlIGN1cnNvci5cbiAgLy9cbiAgLy8gU2hvd24gYmVmb3JlIHRoZSBlbGVtZW50IGFuY2hvcmVkIHRvIGl0OiBhbiBhbmNob3IgaGFzIHRvIHJlYWNoIHRoZSB0b3AgbGF5ZXIgZmlyc3QsIG9yIHRoZVxuICAvLyBlbGVtZW50IHBvc2l0aW9uaW5nIGFnYWluc3QgaXQgZmluZHMgbm8gYW5jaG9yIGF0IGFsbCBhbmQgbGFuZHMgaW4gdGhlIHZpZXdwb3J0J3MgY29ybmVyLlxuICAvL1xuICAvLyBPbmNlLCBvbiBtb3VudDogYW4gZWxlbWVudCBpcyBhbmNob3JlZCB0byBhIHBvaW50IGZvciBhcyBsb25nIGFzIGl0IGlzIG1vdW50ZWQsIHNpbmNlIHRoZSBwb2ludFxuICAvLyBpcyB3aGVyZSB0aGUgY3Vyc29yIHdhcyB3aGVuIHdoYXRldmVyIG9wZW5lZCBpdCB3YXMgb3BlbmVkLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBwb2ludFJlZi5jdXJyZW50O1xuXG4gICAgaWYgKCFlbGVtZW50IHx8ICFpc1BvcG92ZXJDYXBhYmxlKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWxlbWVudC5zaG93UG9wb3ZlcigpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmlzQ29ubmVjdGVkKSB7XG4gICAgICAgIGVsZW1lbnQuaGlkZVBvcG92ZXIoKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gZWxlbWVudFJlZi5jdXJyZW50O1xuXG4gICAgaWYgKCFwb3NpdGlvbiB8fCAhZWxlbWVudCB8fCAhaXNQb3BvdmVyQ2FwYWJsZShlbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGVsZW1lbnQuc2hvd1BvcG92ZXIoKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoZWxlbWVudC5pc0Nvbm5lY3RlZCkge1xuICAgICAgICBlbGVtZW50LmhpZGVQb3BvdmVyKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW3Bvc2l0aW9uXSk7XG5cbiAgY29uc3QgY29udGVudCA9IHBvaW50ID8gKFxuICAgIDw+XG4gICAgICB7LyogQSB6ZXJvLXNpemUgYW5jaG9yIGF0IHRoZSBwb2ludCwgc28gYSBjdXJzb3ItYW5jaG9yZWQgZWxlbWVudCBwb3NpdGlvbnMgbGlrZSBhbnkgb3RoZXIuICovfVxuICAgICAgPGRpdlxuICAgICAgICByZWY9e3BvaW50UmVmIGFzIFJlYWN0LlJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD59XG4gICAgICAgIHBvcG92ZXI9XCJtYW51YWxcIlxuICAgICAgICBkYXRhLWFuY2hvci1wb2ludC10ZXN0XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmFuY2hvclBvaW50fVxuICAgICAgICBzdHlsZT17XG4gICAgICAgICAge1xuICAgICAgICAgICAgW2FuY2hvck5hbWVQcm9wZXJ0eV06IG93bkFuY2hvck5hbWUsXG4gICAgICAgICAgICBbcG9pbnRYUHJvcGVydHldOiBgJHtwb2ludC54fXB4YCxcbiAgICAgICAgICAgIFtwb2ludFlQcm9wZXJ0eV06IGAke3BvaW50Lnl9cHhgLFxuICAgICAgICAgIH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllc1xuICAgICAgICB9XG4gICAgICAvPlxuXG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC8+XG4gICkgOiAoXG4gICAgY2hpbGRyZW5cbiAgKTtcblxuICBpZiAoaXNBbmNob3IpIHtcbiAgICByZXR1cm4gPGFuY2hvck5hbWVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtvd25BbmNob3JOYW1lfT57Y29udGVudH08L2FuY2hvck5hbWVDb250ZXh0LlByb3ZpZGVyPjtcbiAgfVxuXG4gIHJldHVybiA8Pntjb250ZW50fTwvPjtcbn07XG5cbmV4cG9ydCBjb25zdCBhbmNob3JQbHVnaW4gPSBnZXRQbHVnaW48XG4gIEFuY2hvclBsdWdpblByb3BzLFxuICBbXG4gICAgdHlwZW9mIGNsYXNzTmFtZVBsdWdpbixcbiAgICB0eXBlb2YgY29sb3JQbHVnaW4sXG4gICAgdHlwZW9mIGJhY2tncm91bmRDb2xvclBsdWdpbixcbiAgICB0eXBlb2YgYm9yZGVyUGx1Z2luLFxuICAgIHR5cGVvZiBwYWRkaW5nUGx1Z2luLFxuICAgIHR5cGVvZiBtYXJnaW5QbHVnaW4sXG4gICAgdHlwZW9mIG92ZXJmbG93UGx1Z2luLFxuICBdXG4+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRhbmNob3IsICRhbmNob3JlZEF0LCAkY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICBpZiAoISRhbmNob3IgJiYgJGFuY2hvcmVkQXQgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7ICRhbmNob3I6IHVuZGVmaW5lZCwgJGFuY2hvcmVkQXQ6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkYW5jaG9yOiB1bmRlZmluZWQsXG4gICAgJGFuY2hvcmVkQXQ6IHVuZGVmaW5lZCxcblxuICAgIC8vIFJpc2luZyB0byB0aGUgdG9wIGxheWVyIGlzIGEgdGVjaG5pY2FsaXR5IG9mIHBvc2l0aW9uaW5nLCBidXQgdGhlIGJyb3dzZXIgbWFrZXMgaXQgYSBsb29rOlxuICAgIC8vIGNvbG91cnMgb2YgaXRzIG93biwgYSBib3JkZXIsIHBhZGRpbmcsIGFuZCBhIG1hcmdpbiB0aGF0IHdvdWxkIGNlbnRlciB0aGUgZWxlbWVudC4gVW5kbyB0aGF0LFxuICAgIC8vIHNvIGFuIGVsZW1lbnQgcG9zaXRpb25lZCB0aGlzIHdheSBsb29rcyBsaWtlIGl0IGRvZXMgYW55d2hlcmUgZWxzZSwgYW5kIGxldCB3aGF0ZXZlciBpdCBzYXlzXG4gICAgLy8gYWJvdXQgaXRzZWxmIHdpbi5cbiAgICAuLi4oJGFuY2hvcmVkQXQgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAkY29sb3I6IHByb3BzLiRjb2xvciA/PyBcImluaGVyaXRcIixcbiAgICAgICRiYWNrZ3JvdW5kQ29sb3I6IHByb3BzLiRiYWNrZ3JvdW5kQ29sb3IgPz8gXCJ0cmFuc3BhcmVudFwiLFxuICAgICAgJGJvcmRlcjogeyB3aWR0aDogXCJ6ZXJvXCIsIC4uLnByb3BzLiRib3JkZXIgfSxcbiAgICAgICRwYWRkaW5nOiBwcm9wcy4kcGFkZGluZyA/PyBcInplcm9cIixcbiAgICAgICRtYXJnaW46IHByb3BzLiRtYXJnaW4gPz8gXCJ6ZXJvXCIsXG4gICAgICAkb3ZlcmZsb3c6IHByb3BzLiRvdmVyZmxvdyA/PyBcInZpc2libGVcIixcbiAgICB9KSxcblxuICAgICRjbGFzc05hbWU6IGNzc05hbWVzKCRjbGFzc05hbWUsIHtcbiAgICAgIFtzdHlsZXMuYW5jaG9yXTogISEkYW5jaG9yLFxuICAgICAgW3N0eWxlcy5hbmNob3JlZEF0XTogJGFuY2hvcmVkQXQgIT09IHVuZGVmaW5lZCxcbiAgICB9KSxcblxuICAgICR3cmFwcGVyOiB7XG4gICAgICBDb21wb25lbnQ6IEFuY2hvcldyYXBwZXJDb21wb25lbnQsXG4gICAgICBwcm9wczogeyBpc0FuY2hvcjogISEkYW5jaG9yLCBhbmNob3JlZEF0OiAkYW5jaG9yZWRBdCB9LFxuICAgIH0sXG4gIH07XG59KTtcblxuY29uc3QgbWFyZ2luUHJvcGVydHlUb3dhcmRzQW5jaG9yID0gKHBvc2l0aW9uOiBBbmNob3JQb3NpdGlvbikgPT4ge1xuICBpZiAocG9zaXRpb24uc3RhcnRzV2l0aChcImJvdHRvbVwiKSkge1xuICAgIHJldHVybiBcIm1hcmdpbi10b3BcIjtcbiAgfVxuXG4gIGlmIChwb3NpdGlvbi5zdGFydHNXaXRoKFwidG9wXCIpKSB7XG4gICAgcmV0dXJuIFwibWFyZ2luLWJvdHRvbVwiO1xuICB9XG5cbiAgcmV0dXJuIHBvc2l0aW9uLnN0YXJ0c1dpdGgoXCJyaWdodFwiKSA/IFwibWFyZ2luLWxlZnRcIiA6IFwibWFyZ2luLXJpZ2h0XCI7XG59O1xuXG5jb25zdCBhbmNob3JOYW1lUHJvcGVydHkgPSBcIi0tYW5jaG9yLW5hbWVcIjtcbmNvbnN0IGdhcFByb3BlcnR5ID0gXCItLWFuY2hvci1nYXBcIjtcbmNvbnN0IHBvc2l0aW9uQW5jaG9yUHJvcGVydHkgPSBcIi0tYW5jaG9yLXRhcmdldFwiO1xuY29uc3QgcG9zaXRpb25Qcm9wZXJ0eSA9IFwiLS1hbmNob3ItcG9zaXRpb25cIjtcbmNvbnN0IHBvaW50WFByb3BlcnR5ID0gXCItLWFuY2hvci1wb2ludC14XCI7XG5jb25zdCBwb2ludFlQcm9wZXJ0eSA9IFwiLS1hbmNob3ItcG9pbnQteVwiO1xuXG4vKiogQW5jaG9yIG5hbWVzIGFyZSBkYXNoZWQgaWRlbnRzLCBzbyB0aGUgZ2VuZXJhdGVkIGlkIGhhcyB0byBsb3NlIGV2ZXJ5dGhpbmcgZWxzZS4gKi9cbmNvbnN0IHRvQW5jaG9yTmFtZSA9IChpZDogc3RyaW5nKSA9PiBgLS1hbmNob3ItJHtpZC5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZywgXCJcIil9YDtcblxudHlwZSBQb3BvdmVyQ2FwYWJsZSA9IEhUTUxFbGVtZW50ICYgeyBzaG93UG9wb3ZlcjogVm9pZEZ1bmN0aW9uOyBoaWRlUG9wb3ZlcjogVm9pZEZ1bmN0aW9uIH07XG5cbmNvbnN0IGlzUG9wb3ZlckNhcGFibGUgPSAoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBlbGVtZW50IGlzIFBvcG92ZXJDYXBhYmxlID0+XG4gIHR5cGVvZiAoZWxlbWVudCBhcyBQYXJ0aWFsPFBvcG92ZXJDYXBhYmxlPikuc2hvd1BvcG92ZXIgPT09IFwiZnVuY3Rpb25cIjtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiYW5jaG9yXCI6IFwiYW5jaG9yLW1vZHVsZV9fYW5jaG9yX19fbS01dWJcIixcbiAgXCJhbmNob3JlZEF0XCI6IFwiYW5jaG9yLW1vZHVsZV9fYW5jaG9yZWRBdF9fX1VBclVLXCIsXG4gIFwiYW5jaG9yUG9pbnRcIjogXCJhbmNob3ItbW9kdWxlX19hbmNob3JQb2ludF9fX3NBMUFjXCJcbn07IiwgImltcG9ydCB0eXBlIHsgRm9jdXNhYmxlUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9mb2N1c2FibGVcIjtcblxuZXhwb3J0IHR5cGUgJEZvY3VzYWJsZVByb3BzPEZvY3VzZWRJdGVtPiA9IFJlcXVpcmVkPEZvY3VzYWJsZVBsdWdpblByb3BzPEZvY3VzZWRJdGVtPj5bXCIkZm9jdXNhYmxlXCJdO1xuXG4vKipcbiAqIElkZW50aWZpZXMgYSBzZXQgb2YgZm9jdXNhYmxlcyBjb21wZXRpbmcgZm9yIG9uZSBmb2N1c2VkIGl0ZW0uIEVsZW1lbnRzIGpvaW4gaXQgYnkgZGVjbGFyaW5nXG4gKiBgJGZvY3VzYWJsZWA7IG5vdGhpbmcgZW51bWVyYXRlcyB0aGVtIGF0IHRoZSBjYWxsIHNpdGUuXG4gKi9cbmV4cG9ydCB0eXBlIEZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+ID0ge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBpc0tleWJvYXJkTmF2aWdhYmxlOiBmYWxzZTtcbiAgZm9jdXNhYmxlOiAoaXRlbTogRm9jdXNlZEl0ZW0pID0+ICRGb2N1c2FibGVQcm9wczxGb2N1c2VkSXRlbT47XG59O1xuXG4vKiogV2hpY2ggYXJyb3cga2V5cyBtb3ZlIGZvY3VzIHdpdGhpbiBhIGtleWJvYXJkLW5hdmlnYWJsZSBjb250ZXh0LiAqL1xuZXhwb3J0IHR5cGUgS2V5Ym9hcmROYXZpZ2F0aW9uT3JpZW50YXRpb24gPSBcInZlcnRpY2FsXCIgfCBcImhvcml6b250YWxcIiB8IFwiYm90aFwiO1xuXG4vKipcbiAqIEEgZm9jdXNhYmxlIGNvbnRleHQgd2hvc2UgbWVtYmVycyBhcmUgYWxzbyBuYXZpZ2F0ZWQgd2l0aCBhcnJvdyBrZXlzLCBpbiB0aGUgb3JkZXIgdGhleSBzdGF0ZS5cbiAqIFRoZSBsb3dlc3Qgb3JkZXIgbnVtYmVyIGlzIGZvY3VzZWQgd2hlbiB0aGUgbWVtYmVycyBhcHBlYXIsIHVubGVzcyB0aGUgY29udGV4dCBzYXlzIG90aGVyd2lzZSxcbiAqIGFuZCBmb2N1cyByZXR1cm5zIHRvIHRoZSBlbmNsb3NpbmcgY29udGV4dCB3aGVuIHRoZXkgZ28gYXdheS5cbiAqL1xuZXhwb3J0IHR5cGUgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPiA9IHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgaXNLZXlib2FyZE5hdmlnYWJsZTogdHJ1ZTtcbiAgcmVhZG9ubHkgb3JpZW50YXRpb246IEtleWJvYXJkTmF2aWdhdGlvbk9yaWVudGF0aW9uO1xuICByZWFkb25seSB0YWtlc0ZvY3VzQXNJdEFwcGVhcnM6IGJvb2xlYW47XG4gIGZvY3VzYWJsZTogKGl0ZW06IEZvY3VzZWRJdGVtLCBvcmRlck51bWJlcjogbnVtYmVyKSA9PiAkRm9jdXNhYmxlUHJvcHM8Rm9jdXNlZEl0ZW0+O1xufTtcblxuZXhwb3J0IHR5cGUgQW55Rm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbSA9IGFueT4gPVxuICB8IEZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+XG4gIHwgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPjtcblxuY29uc3QgY29udGV4dHNCeUtleSA9IG5ldyBNYXA8c3RyaW5nLCBBbnlGb2N1c2FibGVDb250ZXh0PigpO1xuXG4vKipcbiAqIERlY2xhcmVzIGEgZm9jdXNhYmxlIGNvbnRleHQuIFRoZSBzYW1lIGlkIGFsd2F5cyB5aWVsZHMgdGhlIHNhbWUgY29udGV4dCwgc28gY2FsbGluZyB0aGlzIGR1cmluZ1xuICogcmVuZGVyIGlzIHN0YWJsZSBcdTIwMTQgd2hpY2ggaXMgd2hhdCBsZXRzIGEgc3VyZmFjZSB3aXRoIHNldmVyYWwgbGl2ZSBpbnN0YW5jZXMgbmFtZSBvbmUgY29udGV4dCBwZXJcbiAqIGluc3RhbmNlLlxuICovXG5leHBvcnQgY29uc3QgZ2V0Rm9jdXNhYmxlQ29udGV4dCA9IDxGb2N1c2VkSXRlbSw+KGlkOiBzdHJpbmcpOiBGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPiA9PlxuICBnZXRPckNyZWF0ZUNvbnRleHQoYGZvY3VzYWJsZToke2lkfWAsICgpID0+IHtcbiAgICBjb25zdCBjb250ZXh0OiBGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPiA9IHtcbiAgICAgIGlkLFxuICAgICAgaXNLZXlib2FyZE5hdmlnYWJsZTogZmFsc2UsXG4gICAgICBmb2N1c2FibGU6IChpdGVtKSA9PiAoeyBjb250ZXh0LCBpdGVtIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gY29udGV4dDtcbiAgfSk7XG5cbmV4cG9ydCB0eXBlIEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dE9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBXaGljaCBhcnJvdyBrZXlzIG1vdmUgZm9jdXMuIERvd253YXJkcyBieSBkZWZhdWx0LCBhcyBtb3N0IHNldHMgb2YgdGhpbmdzIGFyZSBsYWlkIG91dDogdGhlXG4gICAqIGtleXMgb2YgdGhlIG90aGVyIGF4aXMgYXJlIHRoZW4gbGVmdCB0byB3aGF0ZXZlciB0aGUgbWVtYmVycyB3YW50IHRoZW0gZm9yLCBzdWNoIGFzIGEgbWVtYmVyXG4gICAqIG9wZW5pbmcgc29tZXRoaW5nIG9mIGl0cyBvd24gd2l0aCBBcnJvd1JpZ2h0LlxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZW50YXRpb24/OiBLZXlib2FyZE5hdmlnYXRpb25PcmllbnRhdGlvbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgbG93ZXN0IG9yZGVyIG51bWJlciBpcyBmb2N1c2VkIGFzIHRoZSBtZW1iZXJzIGFwcGVhci4gSXQgaXMgYnkgZGVmYXVsdDogYSBzZXQgb2ZcbiAgICogbWVtYmVycyBhcHBlYXJpbmcgaXMgdXN1YWxseSBzb21ldGhpbmcgdGhlIHVzZXIgYXNrZWQgZm9yIGFuZCB3aWxsIGdvIG9uIHdpdGguIE5vdCBzbyBmb3IgYSBzZXRcbiAgICogdGhhdCBhcHBlYXJzIGJlY2F1c2UgdGhlIHBvaW50ZXIgcmVzdHMgb24gc29tZXRoaW5nLCB3aGVyZSB3aGF0IHRoZSB1c2VyIGlzIGxvb2tpbmcgYXQgaXMgd2hhdFxuICAgKiB0aGUgcG9pbnRlciBpcyBvbiwgYW5kIGZvY3VzIHN0YXlzIHRoZXJlIHVudGlsIGVpdGhlciB0aGUgcG9pbnRlciBvciB0aGUga2V5Ym9hcmQgbW92ZXMgaXQuXG4gICAqL1xuICByZWFkb25seSB0YWtlc0ZvY3VzQXNJdEFwcGVhcnM/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBEZWNsYXJlcyBhIGZvY3VzYWJsZSBjb250ZXh0IHdob3NlIG1lbWJlcnMgYXJlIG5hdmlnYXRlZCB3aXRoIGFycm93IGtleXMuIEFzIHdpdGhcbiAqIHtAbGluayBnZXRGb2N1c2FibGVDb250ZXh0fSwgdGhlIHNhbWUgaWQgYWx3YXlzIHlpZWxkcyB0aGUgc2FtZSBjb250ZXh0IFx1MjAxNCB0aGUgc2FtZSBpZCB3aXRoIHRoZVxuICogc2FtZSBvcHRpb25zLCB0aGF0IGlzLiBBIGNvbnRleHQgd2l0aCBvdGhlciBvcHRpb25zIGlzIGEgY29udGV4dCBvZiBpdHMgb3duLCB3aGF0ZXZlciBpdCBpc1xuICogbmFtZWQsIHNvIGEgc3VyZmFjZSB0aGF0IGFza3MgZm9yIGl0cyBjb250ZXh0IGJ5IHRoZSBzYW1lIG5hbWUgd2l0aCBvdGhlciBvcHRpb25zIG1vdmVzIGl0c1xuICogbWVtYmVycyB0aGVyZSBhcyB0aGV5IHJlbmRlciBhZ2FpbiwgYW5kIHRoZXkgYXBwZWFyIGFuZXcgYXMgZmFyIGFzIHRoYXQgY29udGV4dCBpcyBjb25jZXJuZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQgPSA8Rm9jdXNlZEl0ZW0sPihcbiAgaWQ6IHN0cmluZyxcbiAgb3B0aW9uczogS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0T3B0aW9ucyA9IHt9LFxuKTogS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPiA9PiB7XG4gIGNvbnN0IG9yaWVudGF0aW9uID0gb3B0aW9ucy5vcmllbnRhdGlvbiA/PyBcInZlcnRpY2FsXCI7XG4gIGNvbnN0IHRha2VzRm9jdXNBc0l0QXBwZWFycyA9IG9wdGlvbnMudGFrZXNGb2N1c0FzSXRBcHBlYXJzID8/IHRydWU7XG5cbiAgY29uc3Qga2V5ID0gYGtleWJvYXJkLW5hdmlnYWJsZToke2lkfXwke29yaWVudGF0aW9ufXwke3Rha2VzRm9jdXNBc0l0QXBwZWFycyA/IFwidGFraW5nXCIgOiBcImxlYXZpbmdcIn0tZm9jdXNgO1xuXG4gIHJldHVybiBnZXRPckNyZWF0ZUNvbnRleHQoa2V5LCAoKSA9PiB7XG4gICAgY29uc3QgY29udGV4dDogS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPiA9IHtcbiAgICAgIGlkLFxuICAgICAgaXNLZXlib2FyZE5hdmlnYWJsZTogdHJ1ZSxcbiAgICAgIG9yaWVudGF0aW9uLFxuICAgICAgdGFrZXNGb2N1c0FzSXRBcHBlYXJzLFxuICAgICAgZm9jdXNhYmxlOiAoaXRlbSwgb3JkZXJOdW1iZXIpID0+ICh7IGNvbnRleHQsIGl0ZW0sIG9yZGVyTnVtYmVyIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gY29udGV4dDtcbiAgfSk7XG59O1xuXG5jb25zdCBnZXRPckNyZWF0ZUNvbnRleHQgPSA8VCBleHRlbmRzIEFueUZvY3VzYWJsZUNvbnRleHQ+KGtleTogc3RyaW5nLCBjcmVhdGU6ICgpID0+IFQpOiBUID0+IHtcbiAgY29uc3QgZXhpc3RpbmcgPSBjb250ZXh0c0J5S2V5LmdldChrZXkpO1xuXG4gIGlmIChleGlzdGluZykge1xuICAgIHJldHVybiBleGlzdGluZyBhcyBUO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlZCA9IGNyZWF0ZSgpO1xuXG4gIGNvbnRleHRzQnlLZXkuc2V0KGtleSwgY3JlYXRlZCk7XG5cbiAgcmV0dXJuIGNyZWF0ZWQ7XG59O1xuIiwgImltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgJEZvY3VzYWJsZVByb3BzIH0gZnJvbSBcIi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5cbi8qKlxuICogQ2FycmllcyB0aGUgZm9jdXNhYmxlIGFuIGVsZW1lbnQgaXMsIGFzIGRlY2lkZWQgYnkgdGhlIHN1cmZhY2UgaXQgcmVuZGVycyBpbiByYXRoZXIgdGhhbiBieSB0aGVcbiAqIGVsZW1lbnQgaXRzZWxmOiB3aGljaCBjb250ZXh0IGl0IGNvbXBldGVzIGluLCB3aGljaCBpdGVtIGl0IHN0YW5kcyBmb3IsIGFuZCB3aGVyZSBpdCBzaXRzIGFtb25nXG4gKiB0aGUgb3RoZXJzLlxuICpcbiAqIEEgc3VyZmFjZSB0aGF0IGtub3dzIGl0cyBpdGVtcyBcdTIwMTQgYSBtZW51LCBhIHRvb2xiYXIgXHUyMDE0IHByb3ZpZGVzIG9uZSBvZiB0aGVzZSBwZXIgaXRlbTsgd2hhdGV2ZXJcbiAqIGRyYXdzIHRoZSBpdGVtIGFkb3B0cyBpdCB0aHJvdWdoIHtAbGluayB1c2VGb2N1c2FibGVJdGVtfSB3aGlsZSBrbm93aW5nIG5vdGhpbmcgYWJvdXQgdGhlXG4gKiBzdXJmYWNlLCB3aGljaCBpcyB3aGF0IGxldHMgYSBkdW1iIGNvbXBvbmVudCBiZSBrZXlib2FyZC1uYXZpZ2FibGUgaW4gb25lIHN1cmZhY2UgYW5kIG9yZGluYXJ5XG4gKiBpbiBhbm90aGVyLlxuICovXG5leHBvcnQgY29uc3QgY29udGV4dEZvckZvY3VzYWJsZUl0ZW0gPSBjcmVhdGVDb250ZXh0PCRGb2N1c2FibGVQcm9wczxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4vKipcbiAqIFRoZSBgJGZvY3VzYWJsZWAgb2YgdGhlIGl0ZW0gYSBjb21wb25lbnQgZHJhd3MsIHdoZW4gdGhlIHN1cmZhY2UgYXJvdW5kIGl0IGRlY2lkZWQgb25lLlxuICogYHVuZGVmaW5lZGAgb3V0c2lkZSBzdWNoIGEgc3VyZmFjZSwgd2hpY2ggaXMgd2hhdCBtYWtlcyBhZG9wdGluZyBpdCBhIG1hdHRlciBvZiBwYXNzaW5nIGl0IG9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IFJvdyA9ICh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9KSA9PiAoXG4gKiAgIDxDbGlja2FibGVMaSAkZm9jdXNhYmxlPXt1c2VGb2N1c2FibGVJdGVtKCl9PntjaGlsZHJlbn08L0NsaWNrYWJsZUxpPlxuICogKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgdXNlRm9jdXNhYmxlSXRlbSA9ICgpID0+IHVzZUNvbnRleHQoY29udGV4dEZvckZvY3VzYWJsZUl0ZW0pO1xuIiwgImltcG9ydCB7IHVzZVN5bmNJbmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvdXNlLWluamVjdFwiO1xuaW1wb3J0IHsgZ2V0SG92ZXJhYmxlQ29udGV4dCB9IGZyb20gXCIuLi9ob3ZlcmFibGVcIjtcbmltcG9ydCB7IHR5cGUgTXV0YWJsZVJlZk9iamVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjb250ZXh0SXNCZWluZ0hvdmVyZWRJbmplY3RhYmxlIH0gZnJvbSBcIi4vX3ByaXZhdGUvY29udGV4dC1pcy1iZWluZy1ob3ZlcmVkLmluamVjdGFibGVcIjtcblxuZXhwb3J0IGNvbnN0IHVzZUxvY2FsSG92ZXJhYmxlID0gPEVsZW0gZXh0ZW5kcyBIVE1MRWxlbWVudD4oKSA9PiB7XG4gIGNvbnN0IGhvdmVyYWJsZUNvbnRleHQgPSB1c2VNZW1vKCgpID0+IGdldEhvdmVyYWJsZUNvbnRleHQ8TXV0YWJsZVJlZk9iamVjdDxFbGVtIHwgbnVsbD4+KCksIFtdKTtcbiAgY29uc3QgcmVmID0gdXNlUmVmPEVsZW0+KG51bGwpO1xuICBjb25zdCBpdGVtQmVpbmdIb3ZlcmVkID0gdXNlU3luY0luamVjdChjb250ZXh0SXNCZWluZ0hvdmVyZWRJbmplY3RhYmxlLCBob3ZlcmFibGVDb250ZXh0KTtcblxuICByZXR1cm4ge1xuICAgIHJlZixcbiAgICBjb250ZXh0OiBob3ZlcmFibGVDb250ZXh0LmhvdmVyYWJsZShyZWYpLFxuICAgIGNvbXBvbmVudElzSG92ZXJlZDogaXRlbUJlaW5nSG92ZXJlZCxcbiAgfTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7O0FDQUEsK0JBQWdEO0FBRWhELG1CQUErQztBQXdEdEM7QUFwQ0YsSUFBTSxvQkFBb0IsQ0FBQyxtQkFBa0Q7QUFDbEYsUUFBTSwrQkFBMkIscUJBQTBCLE1BQVM7QUFDcEUsUUFBTSxpQkFBYSxxQkFBTyxjQUFjO0FBRXhDLDhCQUFVLE1BQU07QUFDZCxlQUFXLFVBQVU7QUFBQSxFQUN2QixDQUFDO0FBRUQsOEJBQVUsTUFBTTtBQUNkLFVBQU0sNEJBQTRCLENBQUMsVUFBd0I7QUFDekQsVUFBSSxVQUFVLHlCQUF5QixTQUFTO0FBQzlDLG1CQUFXLFFBQVEsS0FBSztBQUFBLE1BQzFCO0FBQUEsSUFDRjtBQUVB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QSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2QixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix5QkFBeUI7QUFBQSxFQUN6Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix1QkFBdUI7QUFBQSxFQUN2QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qix1QkFBdUI7QUFBQSxFQUN2QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2QixpQkFBaUI7QUFBQSxFQUNqQixnQkFBZ0I7QUFBQSxFQUNoQixnQkFBZ0I7QUFBQSxFQUNoQixnQkFBZ0I7QUFBQSxFQUNoQixlQUFlO0FBQUEsRUFDZixjQUFjO0FBQUEsRUFDZCxjQUFjO0FBQUEsRUFDZCxjQUFjO0FBQUEsRUFDZCxlQUFlO0FBQUEsRUFDZixnQkFBZ0I7QUFBQSxFQUNoQixnQkFBZ0I7QUFBQSxFQUNoQixnQkFBZ0I7QUFBQSxFQUNoQixnQkFBZ0I7QUFBQSxFQUNoQixnQkFBZ0I7QUFBQSxFQUNoQixnQkFBZ0I7QUFBQSxFQUNoQixnQkFBZ0I7QUFBQSxFQUNoQixnQkFBZ0I7QUFBQSxFQUNoQixpQkFBaUI7QUFBQSxFQUNqQixpQkFBaUI7QUFDbkI7OztBRDdGQSxJQUFBQyxhQUF5QjtBQWNsQixJQUFNLG9CQUFnQixxQ0FBd0QsQ0FBQyxVQUFVO0FBQzlGLE1BQUksQ0FBQyxNQUFNLFVBQVU7QUFDbkIsV0FBTyxFQUFFLFVBQVUsT0FBVTtBQUFBLEVBQy9CO0FBRUEsUUFBTSxVQUFVLE1BQU0sYUFBYSxPQUFPLE9BQU8sTUFBTTtBQUV2RCxVQUFJLHFCQUFTLE9BQU8sR0FBRztBQUNyQixXQUFPO0FBQUEsTUFDTCxZQUFZLENBQUMsTUFBTSxZQUFZLHVCQUFjLFlBQVksT0FBTyxFQUFFLENBQUM7QUFBQSxNQUNuRSxVQUFVO0FBQUEsSUFDWjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLFVBQVUsUUFBUSxPQUFPLFFBQVE7QUFDdkMsUUFBTSxhQUFhLFFBQVEsVUFBVSxRQUFRO0FBQzdDLFFBQU0sWUFBWSxRQUFRLFNBQVMsUUFBUTtBQUMzQyxRQUFNLFdBQVcsUUFBUSxRQUFRLFFBQVE7QUFFekMsU0FBTztBQUFBLElBQ0wsWUFBWTtBQUFBLE1BQ1YsTUFBTTtBQUFBLE1BRU47QUFBQSxRQUNFLENBQUMsdUJBQWMsaUJBQWlCLE9BQU8sRUFBRSxDQUFDLEdBQUc7QUFBQSxRQUM3QyxDQUFDLHVCQUFjLG1CQUFtQixTQUFTLEVBQUUsQ0FBQyxHQUFHO0FBQUEsUUFDakQsQ0FBQyx1QkFBYyxvQkFBb0IsVUFBVSxFQUFFLENBQUMsR0FBRztBQUFBLFFBQ25ELENBQUMsdUJBQWMsa0JBQWtCLFFBQVEsRUFBRSxDQUFDLEdBQUc7QUFBQSxNQUNqRDtBQUFBLElBQ0Y7QUFBQSxJQUVBLFVBQVU7QUFBQSxFQUNaO0FBQ0YsQ0FBQzs7O0FFakRELElBQUFDLDRCQUEwQjs7O0FDRG1ELElBQU8sa0NBQVE7QUFBQSxFQUMxRiw0QkFBNEI7QUFBQSxFQUM1QiwwQkFBMEI7QUFBQSxFQUMxQixnQ0FBZ0M7QUFBQSxFQUNoQyw0QkFBNEI7QUFBQSxFQUM1QiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQixrQ0FBa0M7QUFBQSxFQUNsQyw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1QiwyQkFBMkI7QUFBQSxFQUMzQiw0QkFBNEI7QUFBQSxFQUM1Qiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyxnQ0FBZ0M7QUFBQSxFQUNoQyxpQ0FBaUM7QUFBQSxFQUNqQyx5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6QixrQ0FBa0M7QUFBQSxFQUNsQyxnQ0FBZ0M7QUFBQSxFQUNoQyxzQ0FBc0M7QUFBQSxFQUN0QyxrQ0FBa0M7QUFBQSxFQUNsQyxpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyx3Q0FBd0M7QUFBQSxFQUN4QyxrQ0FBa0M7QUFBQSxFQUNsQyxrQ0FBa0M7QUFBQSxFQUNsQyxpQ0FBaUM7QUFBQSxFQUNqQyxrQ0FBa0M7QUFBQSxFQUNsQyxtQ0FBbUM7QUFBQSxFQUNuQyxzQ0FBc0M7QUFBQSxFQUN0QyxzQ0FBc0M7QUFBQSxFQUN0Qyx1Q0FBdUM7QUFBQSxFQUN2QywrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQixrQ0FBa0M7QUFBQSxFQUNsQyxnQ0FBZ0M7QUFBQSxFQUNoQyxzQ0FBc0M7QUFBQSxFQUN0QyxrQ0FBa0M7QUFBQSxFQUNsQyxpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyx3Q0FBd0M7QUFBQSxFQUN4QyxrQ0FBa0M7QUFBQSxFQUNsQyxrQ0FBa0M7QUFBQSxFQUNsQyxpQ0FBaUM7QUFBQSxFQUNqQyxrQ0FBa0M7QUFBQSxFQUNsQyxtQ0FBbUM7QUFBQSxFQUNuQyxzQ0FBc0M7QUFBQSxFQUN0QyxzQ0FBc0M7QUFBQSxFQUN0Qyx1Q0FBdUM7QUFBQSxFQUN2QywrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFDakM7OztBRHREQSxJQUFNLGlCQUFpQjtBQUFBLEVBQ3JCLG1CQUFtQjtBQUFBLEVBQ25CLHFCQUFxQjtBQUFBLEVBQ3JCLHlCQUF5QjtBQUMzQjtBQUVBLElBQU0seUJBQXlCLENBQUMsVUFBMEQsU0FBUztBQUU1RixJQUFNLDRCQUF3QixxQ0FBZ0UsQ0FBQyxVQUFVO0FBQzlHLFFBQU0sRUFBRSxrQkFBa0IsTUFBTSxJQUFJO0FBQ3BDLFFBQU0sRUFBRSxRQUFRLE9BQU8sTUFBTSxJQUFJLE9BQU8sVUFBVSxXQUFXLEVBQUUsUUFBUSxNQUFNLElBQUssU0FBUyxDQUFDO0FBRTVGLFFBQU0sY0FBYyxTQUFVLHVCQUF1QixNQUFNLElBQUksZUFBZSxNQUFNLElBQUksU0FBVTtBQUNsRyxRQUFNLGFBQWEsUUFBUyx1QkFBdUIsS0FBSyxJQUFJLGVBQWUsS0FBSyxJQUFJLFFBQVM7QUFDN0YsUUFBTSxhQUFhLFFBQVMsdUJBQXVCLEtBQUssSUFBSSxlQUFlLEtBQUssSUFBSSxRQUFTO0FBRTdGLFNBQU87QUFBQSxJQUNMLFlBQVk7QUFBQSxNQUNWLE1BQU07QUFBQSxNQUNOLGNBQWMsZ0NBQXNCLG9CQUFvQixXQUFXLEVBQUUsSUFBSTtBQUFBLE1BQ3pFLGFBQWEsZ0NBQXNCLDBCQUEwQixVQUFVLEVBQUUsSUFBSTtBQUFBLE1BQzdFLGFBQWEsZ0NBQXNCLDBCQUEwQixVQUFVLEVBQUUsSUFBSTtBQUFBLElBQy9FO0FBQUEsSUFDQSxrQkFBa0I7QUFBQSxFQUNwQjtBQUNGLENBQUM7OztBRXhDRCxJQUFBQyw0QkFBMEI7OztBQ0QrQixJQUFPLHdCQUFRO0FBQUEsRUFDdEUsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIsc0JBQXNCO0FBQUEsRUFDdEIscUJBQXFCO0FBQUEsRUFDckIsc0JBQXNCO0FBQUEsRUFDdEIsd0JBQXdCO0FBQUEsRUFDeEIsdUJBQXVCO0FBQUEsRUFDdkIsc0JBQXNCO0FBQUEsRUFDdEIscUJBQXFCO0FBQUEsRUFDckIsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIscUJBQXFCO0FBQUEsRUFDckIsc0JBQXNCO0FBQUEsRUFDdEIsc0JBQXNCO0FBQUEsRUFDdEIsc0JBQXNCO0FBQUEsRUFDdEIsc0JBQXNCO0FBQUEsRUFDdEIsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMsd0JBQXdCO0FBQUEsRUFDeEIsK0JBQStCO0FBQUEsRUFDL0Isa0NBQWtDO0FBQUEsRUFDbEMsOEJBQThCO0FBQUEsRUFDOUIscUNBQXFDO0FBQUEsRUFDckMsd0NBQXdDO0FBQUEsRUFDeEMsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMsZ0NBQWdDO0FBQUEsRUFDaEMsdUNBQXVDO0FBQUEsRUFDdkMsMENBQTBDO0FBQUEsRUFDMUMsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMsMkJBQTJCO0FBQUEsRUFDM0Isa0NBQWtDO0FBQUEsRUFDbEMscUNBQXFDO0FBQUEsRUFDckMsOEJBQThCO0FBQUEsRUFDOUIscUNBQXFDO0FBQUEsRUFDckMsd0NBQXdDO0FBQUEsRUFDeEMsOEJBQThCO0FBQUEsRUFDOUIscUNBQXFDO0FBQUEsRUFDckMsd0NBQXdDO0FBQUEsRUFDeEMsK0JBQStCO0FBQUEsRUFDL0Isc0NBQXNDO0FBQUEsRUFDdEMseUNBQXlDO0FBQUEsRUFDekMsdUJBQXVCO0FBQUEsRUFDdkIsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsdUJBQXVCO0FBQUEsRUFDdkIsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsMEJBQTBCO0FBQUEsRUFDMUIseUJBQXlCO0FBQUEsRUFDekIsd0JBQXdCO0FBQUEsRUFDeEIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsd0JBQXdCO0FBQUEsRUFDeEIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIsNkJBQTZCO0FBQUEsRUFDN0IsMkJBQTJCO0FBQUEsRUFDM0IsaUNBQWlDO0FBQUEsRUFDakMsNkJBQTZCO0FBQUEsRUFDN0IsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsbUNBQW1DO0FBQUEsRUFDbkMsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNEJBQTRCO0FBQUEsRUFDNUIsNkJBQTZCO0FBQUEsRUFDN0IsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsaUNBQWlDO0FBQUEsRUFDakMsa0NBQWtDO0FBQUEsRUFDbEMsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsNEJBQTRCO0FBQUEsRUFDNUIsMkJBQTJCO0FBQUEsRUFDM0IsMEJBQTBCO0FBQUEsRUFDMUIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIsMEJBQTBCO0FBQUEsRUFDMUIsMkJBQTJCO0FBQUEsRUFDM0IsMkJBQTJCO0FBQUEsRUFDM0IsMkJBQTJCO0FBQUEsRUFDM0IsMkJBQTJCO0FBQUEsRUFDM0IsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsbUNBQW1DO0FBQUEsRUFDbkMsK0JBQStCO0FBQUEsRUFDL0IsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIscUNBQXFDO0FBQUEsRUFDckMsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMsbUNBQW1DO0FBQUEsRUFDbkMsb0NBQW9DO0FBQUEsRUFDcEMsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNkJBQTZCO0FBQUEsRUFDN0IsNEJBQTRCO0FBQUEsRUFDNUIsMkJBQTJCO0FBQUEsRUFDM0IsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsMkJBQTJCO0FBQUEsRUFDM0IsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsb0NBQW9DO0FBQUEsRUFDcEMsZ0NBQWdDO0FBQUEsRUFDaEMsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0Isc0NBQXNDO0FBQUEsRUFDdEMsZ0NBQWdDO0FBQUEsRUFDaEMsZ0NBQWdDO0FBQUEsRUFDaEMsK0JBQStCO0FBQUEsRUFDL0IsZ0NBQWdDO0FBQUEsRUFDaEMsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMsb0NBQW9DO0FBQUEsRUFDcEMscUNBQXFDO0FBQUEsRUFDckMsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsMkJBQTJCO0FBQUEsRUFDM0IsMEJBQTBCO0FBQUEsRUFDMUIseUJBQXlCO0FBQUEsRUFDekIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIseUJBQXlCO0FBQUEsRUFDekIsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsOEJBQThCO0FBQUEsRUFDOUIsNEJBQTRCO0FBQUEsRUFDNUIsa0NBQWtDO0FBQUEsRUFDbEMsOEJBQThCO0FBQUEsRUFDOUIsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0Isb0NBQW9DO0FBQUEsRUFDcEMsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsNkJBQTZCO0FBQUEsRUFDN0IsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0Isa0NBQWtDO0FBQUEsRUFDbEMsa0NBQWtDO0FBQUEsRUFDbEMsbUNBQW1DO0FBQUEsRUFDbkMsMkJBQTJCO0FBQUEsRUFDM0IsMkJBQTJCO0FBQUEsRUFDM0IsOEJBQThCO0FBQUEsRUFDOUIsMkJBQTJCO0FBQUEsRUFDM0Is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RUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsaUJBQWlCO0FBQUEsRUFDakIseUJBQXlCO0FBQUEsRUFDekIsc0JBQXNCO0FBQUEsRUFDdEIsZ0JBQWdCO0FBQUEsRUFDaEIsd0JBQXdCO0FBQUEsRUFDeEIscUJBQXFCO0FBQUEsRUFDckIsZ0JBQWdCO0FBQUEsRUFDaEIsd0JBQXdCO0FBQUEsRUFDeEIscUJBQXFCO0FBQUEsRUFDckIsZ0JBQWdCO0FBQUEsRUFDaEIsd0JBQXdCO0FBQUEsRUFDeEIscUJBQXFCO0FBQUEsRUFDckIsaUJBQWlCO0FBQUEsRUFDakIseUJBQXlCO0FBQUEsRUFDekIsc0JBQXNCO0FBQUEsRUFDdEIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsbUJBQW1CO0FBQUEsRUFDbkIsMkJBQTJCO0FBQUEsRUFDM0Isd0JBQXdCO0FBQUEsRUFDeEIsbUJBQW1CO0FBQUEsRUFDbkIsMkJBQTJCO0FBQUEsRUFDM0Isd0JBQXdCO0FBQzFCOzs7QUNuRUEsSUFBQUMsNkJBQTBCO0FBYW5CLElBQU0saUJBQWEsc0NBQXFELENBQUMsVUFBVTtBQUN4RixRQUFNLEVBQUUsTUFBTSxJQUFJO0FBRWxCLE1BQUksQ0FBQyxPQUFPO0FBQ1YsV0FBTyxFQUFFLE9BQU8sT0FBVTtBQUFBLEVBQzVCO0FBRUEsUUFBTSxFQUFFLFNBQVMsS0FBSyxXQUFXLElBQUk7QUFFckMsU0FBTztBQUFBLElBQ0wsWUFBWTtBQUFBLE1BQ1Ysb0JBQVc7QUFBQSxNQUNYLG9CQUFXLGtCQUFrQixPQUFPLEVBQUU7QUFBQSxNQUN0QyxhQUFhLG9CQUFXLHFCQUFxQixVQUFVLEVBQUUsSUFBSTtBQUFBLE1BRTdELE9BQU8sUUFBUSxXQUNYLG9CQUFXLGNBQWMsR0FBRyxFQUFFLElBQzlCLE1BQ0U7QUFBQSxRQUNFLElBQUksU0FBUyxvQkFBVyxzQkFBc0IsSUFBSSxNQUFNLEVBQUUsSUFBSTtBQUFBLFFBQzlELElBQUksTUFBTSxvQkFBVyxtQkFBbUIsSUFBSSxHQUFHLEVBQUUsSUFBSTtBQUFBLE1BQ3ZELElBQ0E7QUFBQSxNQUVOLE1BQU07QUFBQSxJQUNSO0FBQUEsSUFFQSxPQUFPO0FBQUEsRUFDVDtBQUNGLENBQUM7OztBQzVDc0QsSUFBTyx1QkFBUTtBQUFBLEVBQ3BFLG1CQUFtQjtBQUFBLEVBQ25CLHNCQUFzQjtBQUFBLEVBQ3RCLG1CQUFtQjtBQUFBLEVBQ25CLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLGlCQUFpQjtBQUFBLEVBQ2pCLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGlCQUFpQjtBQUFBLEVBQ2pCLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLG1CQUFtQjtBQUFBLEVBQ25CLG1CQUFtQjtBQUFBLEVBQ25CLGFBQWE7QUFBQSxFQUNiLGtCQUFrQjtBQUFBLEVBQ2xCLG1CQUFtQjtBQUFBLEVBQ25CLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLGlCQUFpQjtBQUFBLEVBQ2pCLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGlCQUFpQjtBQUFBLEVBQ2pCLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLG1CQUFtQjtBQUFBLEVBQ25CLG1CQUFtQjtBQUFBLEVBQ25CLGVBQWU7QUFBQSxFQUNmLGtCQUFrQjtBQUFBLEVBQ2xCLGVBQWU7QUFBQSxFQUNmLGNBQWM7QUFBQSxFQUNkLGNBQWM7QUFBQSxFQUNkLGNBQWM7QUFBQSxFQUNkLGFBQWE7QUFBQSxFQUNiLFlBQVk7QUFBQSxFQUNaLFlBQVk7QUFBQSxFQUNaLFlBQVk7QUFBQSxFQUNaLGFBQWE7QUFBQSxFQUNiLGNBQWM7QUFBQSxFQUNkLGNBQWM7QUFBQSxFQUNkLGNBQWM7QUFBQSxFQUNkLGNBQWM7QUFBQSxFQUNkLGNBQWM7QUFBQSxFQUNkLGNBQWM7QUFBQSxFQUNkLGNBQWM7QUFBQSxFQUNkLGNBQWM7QUFBQSxFQUNkLGVBQWU7QUFBQSxFQUNmLGVBQWU7QUFDakI7OztBQzdEQSxJQUFBQyw2QkFBMEI7QUFjMUIsSUFBTSxlQUFlLENBQUMsV0FBbUQsK0JBQU8sU0FBUyxVQUFTO0FBRTNGLElBQU0sa0JBQWMsc0NBQTBFLENBQUMsVUFBVTtBQUM5RyxRQUFNLEVBQUUsUUFBUSxZQUFZLE9BQU8sSUFBSTtBQUN2QyxRQUFNLEVBQUUsT0FBTyxLQUFLLElBQUksSUFBSSxPQUFPLFdBQVcsV0FBVyxFQUFFLE9BQU8sT0FBTyxJQUFLLFVBQVUsQ0FBQztBQUN6RixRQUFNLGNBQWM7QUFBQSxJQUNsQixHQUFJLGFBQWEsS0FBSyxJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFBQSxJQUN2QyxHQUFJLGFBQWEsR0FBRyxJQUFJLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQztBQUFBLElBQzdDLEdBQUksYUFBYSxHQUFHLElBQUksRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDO0FBQUEsRUFDL0M7QUFFQSxTQUFPO0FBQUEsSUFDTCxZQUFZO0FBQUEsTUFDVixTQUFTLENBQUMsYUFBYSxLQUFLLElBQUkscUJBQVksVUFBVSxLQUFLLEVBQUUsSUFBSTtBQUFBLE1BQ2pFLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxxQkFBWSxjQUFjLEdBQUcsRUFBRSxJQUFJO0FBQUEsTUFDL0QsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLHFCQUFZLGNBQWMsR0FBRyxFQUFFLElBQUk7QUFBQSxNQUMvRDtBQUFBLElBQ0Y7QUFBQSxJQUNBLFFBQVEsT0FBTyxLQUFLLFdBQVcsRUFBRSxTQUFTLElBQUksRUFBRSxHQUFHLFFBQVEsR0FBRyxZQUFZLElBQUk7QUFBQSxJQUM5RSxRQUFRO0FBQUEsRUFDVjtBQUNGLENBQUM7OztBQ3RDRCxJQUFBQyw2QkFBMEI7QUFJbkIsSUFBTSxrQkFBYyxzQ0FBNEIsQ0FBQyxVQUFVO0FBRWhFLFFBQU0sU0FBUyxNQUFNLFVBQVUsQ0FBQztBQUVoQyxRQUFNLFFBQVEsTUFBTSxTQUFTLENBQUM7QUFFOUIsU0FBTztBQUFBLElBQ0wsT0FBTyxFQUFFLEdBQUcsUUFBUSxHQUFHLE1BQU07QUFBQSxJQUM3QixRQUFRO0FBQUEsRUFDVjtBQUNGLENBQUM7OztBQ2R3RCxJQUFPLHdCQUFRO0FBQUEsRUFDdEUsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsa0JBQWtCO0FBQUEsRUFDbEIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsa0JBQWtCO0FBQUEsRUFDbEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsa0JBQWtCO0FBQUEsRUFDbEIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsa0JBQWtCO0FBQUEsRUFDbEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsbUJBQW1CO0FBQUEsRUFDbkIsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsY0FBYztBQUFBLEVBQ2QsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQ2xCOzs7QUMzREEsSUFBQUMsNkJBQTBCO0FBWTFCLElBQU1DLGdCQUFlLENBQUMsV0FBbUQsK0JBQU8sU0FBUyxVQUFTO0FBRTNGLElBQU0sbUJBQWUsc0NBQTJFLENBQUMsVUFBVTtBQUNoSCxRQUFNLEVBQUUsU0FBUyxPQUFPLElBQUk7QUFDNUIsUUFBTSxFQUFFLFFBQVEsS0FBSyxJQUFJLElBQUksT0FBTyxZQUFZLFdBQVcsRUFBRSxRQUFRLFFBQVEsSUFBSyxXQUFXLENBQUM7QUFDOUYsUUFBTSxjQUFjO0FBQUEsSUFDbEIsR0FBSUEsY0FBYSxNQUFNLElBQUksRUFBRSxPQUFPLElBQUksQ0FBQztBQUFBLElBQ3pDLEdBQUlBLGNBQWEsR0FBRyxJQUFJLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQztBQUFBLElBQzlDLEdBQUlBLGNBQWEsR0FBRyxJQUFJLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQztBQUFBLEVBQ2hEO0FBRUEsU0FBTztBQUFBLElBQ0wsWUFBWTtBQUFBLE1BQ1YsVUFBVSxDQUFDQSxjQUFhLE1BQU0sSUFBSSxzQkFBYSxXQUFXLE1BQU0sRUFBRSxJQUFJO0FBQUEsTUFDdEUsT0FBTyxDQUFDQSxjQUFhLEdBQUcsSUFBSSxzQkFBYSxlQUFlLEdBQUcsRUFBRSxJQUFJO0FBQUEsTUFDakUsT0FBTyxDQUFDQSxjQUFhLEdBQUcsSUFBSSxzQkFBYSxlQUFlLEdBQUcsRUFBRSxJQUFJO0FBQUEsTUFDakUsTUFBTTtBQUFBLElBQ1I7QUFBQSxJQUNBLFFBQVEsT0FBTyxLQUFLLFdBQVcsRUFBRSxTQUFTLElBQUksRUFBRSxHQUFHLFFBQVEsR0FBRyxZQUFZLElBQUk7QUFBQSxJQUM5RSxTQUFTO0FBQUEsRUFDWDtBQUNGLENBQUM7OztBQ25DRCxJQUFBQyw2QkFBMEI7OztBQ0Q2QixJQUFPLHVCQUFRO0FBQUEsRUFDcEUsa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIsMkJBQTJCO0FBQUEsRUFDM0IsZ0JBQWdCO0FBQUEsRUFDaEIsc0JBQXNCO0FBQUEsRUFDdEIsc0JBQXNCO0FBQUEsRUFDdEIseUJBQXlCO0FBQUEsRUFDekIsc0JBQXNCO0FBQUEsRUFDdEIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsK0JBQStCO0FBQUEsRUFDL0Isa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIsMkJBQTJCO0FBQUEsRUFDM0IsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsd0JBQXdCO0FBQUEsRUFDeEIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsa0JBQWtCO0FBQUEsRUFDbEIs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QSxFQUNuQixzQkFBc0I7QUFBQSxFQUN0QixvQkFBb0I7QUFBQSxFQUNwQixxQkFBcUI7QUFBQSxFQUNyQixrQkFBa0I7QUFBQSxFQUNsQixxQkFBcUI7QUFBQSxFQUNyQixtQkFBbUI7QUFBQSxFQUNuQixvQkFBb0I7QUFBQSxFQUNwQixrQkFBa0I7QUFBQSxFQUNsQixxQkFBcUI7QUFBQSxFQUNyQixtQkFBbUI7QUFBQSxFQUNuQixvQkFBb0I7QUFBQSxFQUNwQixrQkFBa0I7QUFBQSxFQUNsQixxQkFBcUI7QUFBQSxFQUNyQixtQkFBbUI7QUFBQSxFQUNuQixvQkFBb0I7QUFBQSxFQUNwQixtQkFBbUI7QUFBQSxFQUNuQixzQkFBc0I7QUFBQSxFQUN0QixvQkFBb0I7QUFBQSxFQUNwQixxQkFBcUI7QUFBQSxFQUNyQixvQkFBb0I7QUFBQSxFQUNwQix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixvQkFBb0I7QUFBQSxFQUNwQix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixvQkFBb0I7QUFBQSxFQUNwQix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixvQkFBb0I7QUFBQSxFQUNwQix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixvQkFBb0I7QUFBQSxFQUNwQix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixvQkFBb0I7QUFBQSxFQUNwQix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixvQkFBb0I7QUFBQSxFQUNwQix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixvQkFBb0I7QUFBQSxFQUNwQix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQix3QkFBd0I7QUFBQSxFQUN4QixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQix3QkFBd0I7QUFBQSxFQUN4QixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFDekI7OztBRHJFTyxJQUFNLG1CQUFlLHNDQUF1RCxDQUFDLFVBQVU7QUFDNUYsTUFBSSxDQUFDLE1BQU0sU0FBUztBQUNsQixXQUFPLEVBQUUsU0FBUyxPQUFVO0FBQUEsRUFDOUI7QUFFQSxTQUFPO0FBQUEsSUFDTCxZQUFZLENBQUMsTUFBTSxZQUFZLHNCQUFhLFdBQVcsTUFBTSxRQUFRLFNBQVMsS0FBSyxNQUFNLFFBQVEsSUFBSSxFQUFFLENBQUM7QUFBQSxJQUV4RyxTQUFTO0FBQUEsRUFDWDtBQUNGLENBQUM7OztBRWpCRCxJQUFBQyw2QkFBMEI7OztBQ0RpRCxJQUFPLGlDQUFRO0FBQUEsRUFDeEYsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsK0JBQStCO0FBQUEsRUFDL0IsZ0NBQWdDO0FBQUEsRUFDaEMsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsNEJBQTRCO0FBQUEsRUFDNUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsOEJBQThCO0FBQUEsRUFDOUIsMkJBQTJCO0FBQUEsRUFDM0IsOEJBQThCO0FBQUEsRUFDOUIsNEJBQTRCO0FBQUEsRUFDNUIsNkJBQTZCO0FBQUEsRUFDN0IsMkJBQTJCO0FBQUEsRUFDM0IsOEJBQThCO0FBQUEsRUFDOUIsNEJBQTRCO0FBQUEsRUFDNUIsNkJBQTZCO0FBQUEsRUFDN0IsMkJBQTJCO0FBQUEsRUFDM0IsOEJBQThCO0FBQUEsRUFDOUIsNEJBQTRCO0FBQUEsRUFDNUIsNkJBQTZCO0FBQUEsRUFDN0IsNEJBQTRCO0FBQUEsRUFDNUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsOEJBQThCO0FBQUEsRUFDOUIsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsK0JBQStCO0FBQUEsRUFDL0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsK0JBQStCO0FBQUEsRUFDL0IsZ0NBQWdDO0FBQ2xDOzs7QURyRU8sSUFBTSwyQkFBdUIsc0NBQStELENBQUMsVUFBVTtBQUM1RyxNQUFJLENBQUMsTUFBTSxpQkFBaUI7QUFDMUIsV0FBTyxFQUFFLGlCQUFpQixPQUFVO0FBQUEsRUFDdEM7QUFFQSxTQUFPO0FBQUEsSUFDTCxZQUFZO0FBQUEsTUFDVixNQUFNO0FBQUEsTUFDTiwrQkFBYSxvQkFBb0IsTUFBTSxnQkFBZ0IsU0FBUyxLQUFLLE1BQU0sZ0JBQWdCLElBQUksRUFBRTtBQUFBLElBQ25HO0FBQUEsSUFFQSxpQkFBaUI7QUFBQSxFQUNuQjtBQUNGLENBQUM7OztBRXBCRCxJQUFBQyw2QkFBMEI7OztBQ0QrQixJQUFPLHdCQUFRO0FBQUEsRUFDdEUsVUFBVTtBQUNaOzs7QURJTyxJQUFNLG1CQUFlLHNDQUF1RCxDQUFDLFdBQVc7QUFBQSxFQUM3RixZQUFZLENBQUMsTUFBTSxZQUFZLEVBQUUsQ0FBQyxzQkFBYSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQUEsRUFFekUsU0FBUztBQUNYLEVBQUU7OztBRVRGLElBQUFDLDZCQUEwQjs7O0FDRCtCLElBQU8sd0JBQVE7QUFBQSxFQUN0RSxxQkFBcUI7QUFBQSxFQUNyQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixtQkFBbUI7QUFBQSxFQUNuQixrQkFBa0I7QUFBQSxFQUNsQixrQkFBa0I7QUFBQSxFQUNsQixrQkFBa0I7QUFBQSxFQUNsQixtQkFBbUI7QUFBQSxFQUNuQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQix1QkFBdUI7QUFBQSxFQUN2QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2QixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4QixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixvQkFBb0I7QUFBQSxFQUNwQixtQkFBbUI7QUFBQSxFQUNuQixtQkFBbUI7QUFBQSxFQUNuQixtQkFBbUI7QUFBQSxFQUNuQixvQkFBb0I7QUFBQSxFQUNwQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNy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QUEsSUFDSCxHQUFHLHNCQUF5QztBQUFBLEVBQzlDO0FBQ0Y7QUFHTyxJQUFNLFdBQU8saUNBQVMsZ0RBQW9CLFFBQVEsR0FBRyxlQUFlLEdBQUcsc0JBQW1DLENBQUMsQ0FBQztBQUc1RyxJQUFNLFlBQVEsaUNBQVMsZ0RBQW9CLFNBQVMsR0FBRyxlQUFlLEdBQUcsc0JBQW1DLENBQUMsQ0FBQztBQUc5RyxJQUFNLFVBQU0saUNBQVMsZ0RBQW9CLE9BQU8sR0FBRyxlQUFlLEdBQUcsc0JBQXNDLENBQUMsQ0FBQztBQUc3RyxJQUFNLFVBQU0saUNBQVMsZ0RBQW9CLE9BQU8sR0FBRyxlQUFlLEdBQUcsc0JBQW1DLENBQUMsQ0FBQztBQUcxRyxJQUFNLFNBQUssaUNBQVMsZ0RBQW9CLE1BQU0sR0FBRyxlQUFlLEdBQUcsc0JBQTBDLENBQUMsQ0FBQztBQUcvRyxJQUFNLFNBQUssaUNBQVMsZ0RBQW9CLE1BQU0sR0FBRyxlQUFlLEdBQUcsc0JBQTBDLENBQUMsQ0FBQztBQUcvRyxJQUFNLFNBQUssaUNBQVMsZ0RBQW9CLE1BQU0sR0FBRyxlQUFlLEdBQUcsc0JBQTBDLENBQUMsQ0FBQztBQUcvRyxJQUFNLFNBQUssaUNBQVMsZ0RBQW9CLE1BQU0sR0FBRyxlQUFlLEdBQUcsc0JBQTBDLENBQUMsQ0FBQztBQUcvRyxJQUFNLFNBQUssaUNBQVMsZ0RBQW9CLE1BQU0sR0FBRyxlQUFlLEdBQUcsc0JBQTBDLENBQUMsQ0FBQztBQUcvRyxJQUFNLFNBQUssaUNBQVMsZ0RBQW9CLE1BQU0sR0FBRyxlQUFlLEdBQUcsc0JBQTBDLENBQUMsQ0FBQztBQUcvRyxJQUFNLFNBQUssaUNBQVMsZ0RBQW9CLE1BQU0sR0FBRyxlQUFlLEdBQUcsc0JBQXdDLENBQUMsQ0FBQztBQUc3RyxJQUFNLFNBQUssaUNBQVMsZ0RBQW9CLE1BQU0sR0FBRyxlQUFlLEdBQUcsc0JBQXdDLENBQUMsQ0FBQztBQUc3RyxJQUFNLFNBQUssaUNBQVMsZ0RBQW9CLE1BQU0sR0FBRyxlQUFlLEdBQUcsc0JBQXFDLENBQUMsQ0FBQztBQUUxRyxJ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cnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJ0b0NvbnRleHRNYXAiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfcmVhY3RfZG9tIiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9mcCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgInN0eWxlcyIsICJpbXBvcnRfZnAiLCAibG9kYXNoQ2FwaXRhbGl6ZSIsICJpbXBvcnRfZnAiLCAiYWxpYXNUb05vbWluYWwiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpbXBvcnRfZmVhdHVyZV9jb3JlIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9mcCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJtb2R1bGVzIiwgIm1vZHVsZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaXNQZXJjZW50YWdlIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJhbGlhc1RvTm9taW5hbCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X21vYnhfcmVhY3QiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZnAiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfdGVzdF91dGlscyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfdGVzdF91dGlscyIsICJzdHlsZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3Rlc3RfdXRpbHMiLCAic3R5bGVzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcmVhY3RfZG9tIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9yZWFjdF9kb20iLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAic3RvcFByb3BhZ2F0aW9uIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgImlzUG9wb3ZlckNhcGFibGUiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9yZWFjdCJdCn0K
4271
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vaW5kZXgudHMiLCAiLi4vc3JjL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZG8tZm9jdXMuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvaXRlbS1iZWluZy1mb2N1c2VkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQvZm9jdXNhYmxlLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9lbmFibGVkL2VuYWJsZWQudHMiLCAiLi4vc3JjL3BsdWdpbnMvZW5hYmxlZC9lbmFibGVkLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUtYnktZHJhZ2dpbmcudHMiLCAiLi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9pdGVtLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9ob3ZlcmFibGUvY29tcHV0ZWQtbm93LmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvaXRlbS1iZWluZy1kcmFnZ2VkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvX3NoYXJlZC9kcmFnZ2VkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy90b29sdGlwL3Rvb2x0aXAudHN4IiwgIi4uL3NyYy9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvdG9vbHRpcC90b29sdGlwLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9lbGVtZW50cy9taW5pbWFsLWRpdi50cyIsICIuLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZS50cyIsICIuLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZS5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9wYWRkaW5nL3BhZGRpbmcudHMiLCAiLi4vc3JjL3BsdWdpbnMvcGFkZGluZy9wYWRkaW5nLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvci50cyIsICIuLi9zcmMvcGx1Z2lucy9iYWNrZ3JvdW5kLWNvbG9yL2JhY2tncm91bmQtY29sb3IubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvYm9yZGVyL2JvcmRlci50cyIsICIuLi9zcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2JvcmRlci9nZXQtY29ybmVyLXN0eWxlcy50cyIsICIuLi9zcmMvcGx1Z2lucy9ib3JkZXIvZ2V0LXNpZGUtc3R5bGVzLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvbnQvZm9udC50cyIsICIuLi9zcmMvcGx1Z2lucy9mb250L2ZvbnQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvYm94LXNoYWRvdy9ib3gtc2hhZG93LnRzIiwgIi4uL3NyYy9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvdy5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50cy50cyIsICIuLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50cy5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9yZWYvcmVmLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9jbGFzcy1uYW1lL2NsYXNzLW5hbWUudHMiLCAiLi4vc3JjL3BsdWdpbnMvcmVsYXRpdmUvcmVsYXRpdmUudHMiLCAiLi4vc3JjL3BsdWdpbnMvcmVsYXRpdmUvcmVsYXRpdmUubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZ2V0LWRyYWdnYWJsZS1jb250ZXh0LnRzIiwgIi4uL3NyYy9mZWF0dXJlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2NsaWNrYWJsZS9pcy1tYWMuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9jbGlja2FibGUvb24tcmlnaHQtdHJpZ2dlci5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQva2V5Ym9hcmQtbmF2aWdhdGlvbi1zdGF0ZS5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvX3ByaXZhdGUvY29udGV4dC1pcy1iZWluZy1ob3ZlcmVkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3Rlc3QtdXRpbC1ydW5uYWJsZS5pbmplY3RhYmxlLnRzIiwgImltcG9ydC1nbG9iOi4vKiovKi5nbG9iYWwtb3ZlcnJpZGUtZm9yLWluamVjdGFibGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy81ZjI2ZGQxZi1hNzBkLTQ2OGQtYWEwNi0xODdkZmE2ZTI2NmUiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvbWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW4vbWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW4uZGVmYXVsdC1vdmVycmlkZS50cyIsICIuLi9zcmMvcGx1Z2lucy90b29sdGlwL3Rvb2x0aXAtZGVsYXkvdG9vbHRpcC1kZWxheS5kZWZhdWx0LW92ZXJyaWRlLnRzIiwgIi4uL3NyYy9yZW1vdmUtY3NzLW1vZHVsZS1jbHV0dGVyLmRlZmF1bHQtb3ZlcnJpZGUudHMiLCAiaW1wb3J0LWdsb2I6Li8qKi8qLmRlZmF1bHQtb3ZlcnJpZGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy84ZjY2MmFhNi04YzE3LTQ5MzYtOWVkMS0yNzVmMjg3NDZlZDYiLCAiaW1wb3J0LWdsb2I6Li8qKi8qLmluamVjdGFibGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy82MTkzMzk3My02NmY1LTRiMGItYjkxOS03M2U4ZmI3MzZmNjYiLCAiLi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplcy50cyIsICIuLi9zcmMvZWxlbWVudHMudHMiLCAiLi4vc3JjL3BsdWdpbnMvZmxleC9mbGV4Lm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZsZXgvZmxleC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmlkL2dyaWQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZ3JpZC9ncmlkLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3N0eWxlL3N0eWxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hlaWdodC9oZWlnaHQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvaGVpZ2h0L2hlaWdodC50cyIsICIuLi9zcmMvcGx1Z2lucy9jb2xvci9jb2xvci50cyIsICIuLi9zcmMvcGx1Z2lucy9jb2xvci9jb2xvci5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9ncmFkaWVudC9ncmFkaWVudC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmFkaWVudC9ncmFkaWVudC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9kcmFnZ2FibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZHJhZ2dhYmxlLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2Ryb3BwYWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy90cmFuc2l0aW9uL3RyYW5zaXRpb24udHMiLCAiLi4vc3JjL3BsdWdpbnMvdHJhbnNpdGlvbi90cmFuc2l0aW9uLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL29mZnNldC9vZmZzZXQudHMiLCAiLi4vc3JjL3BsdWdpbnMvb2Zmc2V0L29mZnNldC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9vZmZzZXQtY2hpbGRyZW4vb2Zmc2V0LWNoaWxkcmVuLnRzIiwgIi4uL3NyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW4ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvaGlkZGVuL2hpZGRlbi50cyIsICIuLi9zcmMvcGx1Z2lucy9oaWRkZW4vaGlkZGVuLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL21hcmdpbi9tYXJnaW4udHMiLCAiLi4vc3JjL3BsdWdpbnMvbWFyZ2luL21hcmdpbi5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy92aXN1YWxseS1oaWRkZW4vdmlzdWFsbHktaGlkZGVuLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3Zpc3VhbGx5LWhpZGRlbi92aXN1YWxseS1oaWRkZW4ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3cudHMiLCAiLi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3cubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZmxleC1jaGlsZC9mbGV4LWNoaWxkLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZsZXgtY2hpbGQvZmxleC1jaGlsZC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmF5c2NhbGUvZ3JheXNjYWxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGUubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvdGludC90aW50LnRzIiwgIi4uL3NyYy9wbHVnaW5zL3RpbnQvdGludC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC50cyIsICIuLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZm9jdXNhYmxlLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvdXNlLXVwZGF0ZS13aGVuLXByb3BzLWNoYW5nZS50c3giLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19wcml2YXRlL3VzZS1jbGVhbnVwLW9uLXVubW91bnQudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9fcHJpdmF0ZS91c2Uta2V5Ym9hcmQtbmF2aWdhdGlvbi50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvaGFuZGxlLWZvY3VzLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9fcHJpdmF0ZS9oYW5kbGUtYmx1ci50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvdXNlLXByb2dyYW1tYXRpYy1mb2N1c2luZy50cyIsICIuLi9zcmMvcGx1Z2lucy9hcmVhL2FyZWEudHMiLCAiLi4vc3JjL3BsdWdpbnMvYXJlYS1jb250ZW50L2FyZWEtY29udGVudC50cyIsICIuLi9zcmMvcGx1Z2lucy9zaXplL3NpemUudHMiLCAiLi4vc3JjL3BsdWdpbnMvY3Vyc29yL2N1cnNvci5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9jbGlja2FibGUvY2xpY2thYmxlLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9kaXNwbGF5LWNvbnRlbnRzL2Rpc3BsYXktY29udGVudHMubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzLnRzeCIsICIuLi9zcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ24ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvdGV4dC1hbGlnbi90ZXh0LWFsaWduLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2Jsb2NrL2Jsb2NrLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2Jsb2NrL2Jsb2NrLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmUudHMiLCAiLi4vc3JjL3BsdWdpbnMvb3V0bGluZS9vdXRsaW5lLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL3BvcG92ZXIvcG9wb3Zlci50c3giLCAiLi4vc3JjL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2Zsb2F0aW5nL2Zsb2F0aW5nLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9pbnZpc2libGUtYmFja2Ryb3AvaW52aXNpYmxlLWJhY2tkcm9wLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ludmlzaWJsZS1iYWNrZHJvcC9pbnZpc2libGUtYmFja2Ryb3AudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2Ryb3AtZG93bi1tZW51L2Ryb3AtZG93bi1tZW51LnRzeCIsICIuLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9nZXQtZm9jdXNhYmxlLWNvbnRleHQudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9mb2N1c2FibGUtaXRlbS1jb250ZXh0LnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvbG9jYWwtaG92ZXJhYmxlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgdHlwZSB7IEJsb2NrUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ibG9jay9ibG9ja1wiO1xuZXhwb3J0IHR5cGUgeyBBbmNob3JlZEF0LCBBbmNob3JQbHVnaW5Qcm9wcywgQW5jaG9yUG9zaXRpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yXCI7XG5leHBvcnQgeyB1c2VPbk91dHNpZGVDbGljayB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29uLW91dHNpZGUtY2xpY2svb24tb3V0c2lkZS1jbGlja1wiO1xuZXhwb3J0IHR5cGUgeyBPbk91dHNpZGVDbGlja1BsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrXCI7XG5leHBvcnQgdHlwZSB7IERyb3BEb3duTWVudVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZHJvcC1kb3duLW1lbnUvZHJvcC1kb3duLW1lbnVcIjtcbmV4cG9ydCB0eXBlIHsgVGV4dEFsaWduUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ25cIjtcblxuZXhwb3J0IHsgdHlwZSBEb0ZvY3VzLCB0eXBlIERvRm9jdXNGb3IsIGRvRm9jdXNGb3JJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9kby1mb2N1cy5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB7IGl0ZW1CZWluZ0ZvY3VzZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9pdGVtLWJlaW5nLWZvY3VzZWQuaW5qZWN0YWJsZVwiO1xuZXhwb3J0IHR5cGUgeyBJdGVtQmVpbmdGb2N1c2VkIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2l0ZW0tYmVpbmctZm9jdXNlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgRm9jdXNhYmxlUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZm9jdXNhYmxlXCI7XG5leHBvcnQgeyB0eXBlIEVuYWJsZWRQbHVnaW5Qcm9wcywgaXNEaXNhYmxlZCB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2VuYWJsZWQvZW5hYmxlZFwiO1xuZXhwb3J0IHR5cGUgeyBHcmF5c2NhbGVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGVcIjtcbmV4cG9ydCB0eXBlIHsgVGludFBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdGludC90aW50XCI7XG5leHBvcnQgdHlwZSB7IEZhZGVkUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZFwiO1xuXG5leHBvcnQgdHlwZSB7IFNpZGVTdHlsZXMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvZ2V0LXNpZGUtc3R5bGVzXCI7XG5leHBvcnQgdHlwZSB7IENvcm5lclN0eWxlcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JvcmRlci9nZXQtY29ybmVyLXN0eWxlc1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEJhY2tncm91bmRDb2xvclBsdWdpblByb3BzLFxuICBCYWNrZ3JvdW5kQ29sb3IsXG4gIEJhY2tncm91bmRDb2xvckFsaWFzLFxuICAkQmFja2dyb3VuZENvbG9yUHJvcHMsXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvclwiO1xuXG5leHBvcnQgdHlwZSB7XG4gIE91dGxpbmVXaWR0aCxcbiAgJE91dGxpbmVQcm9wcyxcbiAgT3V0bGluZVBsdWdpblByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmVcIjtcblxuZXhwb3J0IHR5cGUge1xuICBGbG9hdGluZ0NvbnRlbnRBcmdzLFxuICBGbG9hdGluZ0NvbnRlbnRGYWN0b3J5LFxuICAkRmxvYXRpbmdQcm9wcyxcbiAgRmxvYXRpbmdQbHVnaW5Qcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZmxvYXRpbmcvZmxvYXRpbmdcIjtcblxuZXhwb3J0IHR5cGUgeyBQYWRkaW5nUGx1Z2luUHJvcHMsIERpcmVjdGlvbmFsUGFkZGluZyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3BhZGRpbmcvcGFkZGluZ1wiO1xuZXhwb3J0IHR5cGUgeyBNYXJnaW5QbHVnaW5Qcm9wcywgRGlyZWN0aW9uYWxNYXJnaW4gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9tYXJnaW4vbWFyZ2luXCI7XG5leHBvcnQgdHlwZSB7IE92ZXJmbG93UGx1Z2luUHJvcHMsIE92ZXJmbG93IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3dcIjtcblxuZXhwb3J0IHR5cGUgeyBCb3hTaGFkb3dQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvd1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEhvdmVyYWJsZUJ5RHJhZ2dpbmdQbHVnaW5Qcm9wcyxcbiAgJEhvdmVyYWJsZUJ5RHJhZ2dpbmdQcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZS1ieS1kcmFnZ2luZ1wiO1xuZXhwb3J0IHsgaG92ZXJhYmxlQnlEcmFnZ2luZ1BsdWdpbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUtYnktZHJhZ2dpbmdcIjtcblxuZXhwb3J0IHR5cGUge1xuICBIb3ZlcmFibGVDb250ZXh0LFxuICAkSG92ZXJhYmxlUHJvcHMsXG4gIEhvdmVyYWJsZUNvbnRleHRPcHRpb25zLFxuICBIb3ZlcmFibGVQbHVnaW5Qcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZVwiO1xuZXhwb3J0IHsgaG92ZXJhYmxlUGx1Z2luLCBnZXRIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZVwiO1xuZXhwb3J0IHsgaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2l0ZW0tYmVpbmctaG92ZXJlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgUmVmUGx1Z2luUHJvcHMsICRSZWZQcm9wLCBSZWZMaWtlIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvcmVmL3JlZlwiO1xuXG5leHBvcnQgdHlwZSB7IEFic29sdXRlUGx1Z2luUHJvcHMsIEFic29sdXRlUG9zaXRpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZVwiO1xuZXhwb3J0IHR5cGUgeyBIaWRkZW5QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hpZGRlbi9oaWRkZW5cIjtcbmV4cG9ydCB0eXBlIHsgTm9Qb2ludGVyRXZlbnRzUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50c1wiO1xuZXhwb3J0IHR5cGUgeyBPZmZzZXRQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29mZnNldC9vZmZzZXRcIjtcbmV4cG9ydCB0eXBlIHsgT2Zmc2V0Q2hpbGRyZW5QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW5cIjtcbmV4cG9ydCB0eXBlIHsgUmVsYXRpdmVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3JlbGF0aXZlL3JlbGF0aXZlXCI7XG5leHBvcnQgdHlwZSB7IFRyYW5zaXRpb25QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3RyYW5zaXRpb24vdHJhbnNpdGlvblwiO1xuZXhwb3J0IHR5cGUgeyBWaXN1YWxseUhpZGRlblBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdmlzdWFsbHktaGlkZGVuL3Zpc3VhbGx5LWhpZGRlblwiO1xuXG5leHBvcnQgdHlwZSB7ICRDdXJzb3JQcm9wcywgQ3Vyc29yUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yXCI7XG5leHBvcnQgdHlwZSB7IERpc3BsYXlDb250ZW50c1BsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzXCI7XG5cbmV4cG9ydCB7IGl0ZW1CZWluZ0RyYWdnZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2l0ZW0tYmVpbmctZHJhZ2dlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgVG9vbHRpcFBsdWdpblByb3BzLCAkVG9vbHRpcFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdG9vbHRpcC90b29sdGlwXCI7XG5leHBvcnQgeyBTdHlsZWRUb29sdGlwQ29udGFpbmVyLCBnZXRUb29sdGlwUHJvcHMsIHN1cHByZXNzVG9vbHRpcCB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcFwiO1xuXG5leHBvcnQgdHlwZSB7IERyYWdnYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcbmV4cG9ydCB7IGdldERyYWdnYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IHsgZWxlbWVudENvbXBvbmVudEZlYXR1cmUgfSBmcm9tIFwiLi9zcmMvZmVhdHVyZVwiO1xuXG5leHBvcnQgdHlwZSB7IFNpemVQbHVnaW5Qcm9wcywgJFNpemVQcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3NpemUvc2l6ZVwiO1xuXG5leHBvcnQgdHlwZSB7IFdpZHRoUGx1Z2luUHJvcHMsICRXaWR0aFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvd2lkdGgvd2lkdGhcIjtcblxuZXhwb3J0IHR5cGUgeyBTdHlsZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvc3R5bGUvc3R5bGVcIjtcblxuZXhwb3J0IHR5cGUgeyBIZWlnaHRQbHVnaW5Qcm9wcywgJEhlaWdodFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaGVpZ2h0L2hlaWdodFwiO1xuXG5leHBvcnQgdHlwZSB7IEZvbnRQbHVnaW5Qcm9wcywgRm9udFNpemUsIEZvbnRMaW5lSGVpZ2h0IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9udC9mb250XCI7XG5cbmV4cG9ydCB0eXBlIHsgR3JpZFBsdWdpblByb3BzLCBHcmlkUHJvcHMsIEdyaWRDb2x1bW5zIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZ3JpZC9ncmlkXCI7XG5cbmV4cG9ydCB0eXBlIHtcbiAgRHJhZ2dhYmxlUGx1Z2luUHJvcHMsXG4gIERyb3BwYWJsZVBsdWdpblByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IHR5cGUgeyBDb2xvclBsdWdpblByb3BzLCAkQ29sb3JQcm9wcywgVGV4dENvbG9yLCBUZXh0Q29sb3JBbGlhcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2NvbG9yL2NvbG9yXCI7XG5leHBvcnQgdHlwZSB7IENsYXNzTmFtZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCB0eXBlIHtcbiAgQm9yZGVyUGx1Z2luUHJvcHMsXG4gIEJvcmRlckNvbG9yQWxpYXMsXG4gIEJvcmRlckNvbG9yLFxuICAkQm9yZGVyUHJvcHMsXG4gICRCb3JkZXJDb2xvclByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyXCI7XG5cbmV4cG9ydCB0eXBlIHsgQm9yZGVyUmFkaXVzU2l6ZSwgQm9yZGVyV2lkdGgsIEJvcmRlclNpZGUgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvdHlwZXNcIjtcblxuZXhwb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplc1wiO1xuZXhwb3J0IHsgdFNoaXJ0U2l6ZUluUGl4ZWxzLCBzaXplVW5pdEluUGl4ZWxzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplc1wiO1xuXG5leHBvcnQgdHlwZSB7IERpcmVjdGlvbiwgU2hvcnREaXJlY3Rpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9fc2hhcmVkL2RpcmVjdGlvbnNcIjtcbmV4cG9ydCB0eXBlIHsgQ29sb3IgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9fc2hhcmVkL2NvbG9yc1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIENsaWNrSGFuZGxlcixcbiAgQ2xpY2tIYW5kbGVyRGV0YWlscyxcbiAgQ2xpY2tQbHVnaW5Qcm9wcyxcbiAgUG9zaXRpb24yZCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvY2xpY2thYmxlL2NsaWNrYWJsZVwiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEZsZXhQbHVnaW5Qcm9wcyxcbiAgSG9yaXpvbnRhbEZsZXhQcm9wcyxcbiAgTWF4aW1hbEZsZXhQcm9wcyxcbiAgU2ltcGxlRmxleFByb3AsXG4gIFZlcnRpY2FsRmxleFByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mbGV4L2ZsZXhcIjtcblxuaW1wb3J0IHtcbiAgcmVtb3ZlQ3NzTW9kdWxlQ2x1dHRlckZvclVuaXRUZXN0aW5nLFxuICBzaG93Q3NzTW9kdWxlQ2x1dHRlckZvclByb2R1Y3Rpb24sXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuXG5leHBvcnQgeyByZW1vdmVDc3NNb2R1bGVDbHV0dGVyRm9yVW5pdFRlc3RpbmcsIHNob3dDc3NNb2R1bGVDbHV0dGVyRm9yUHJvZHVjdGlvbiB9O1xuXG5leHBvcnQge1xuICBDbGlja2FibGVEaXYsXG4gIE5hdixcbiAgU3ZnLFxuICBEaXYsXG4gIEJ1dHRvbixcbiAgSSxcbiAgSW5wdXQsXG4gIEZvcm0sXG4gIFNwYW4sXG4gIFRleHRBcmVhLFxuICBBLFxuICBDb2RlLFxuICBQcmUsXG4gIEgxLFxuICBIMixcbiAgSDMsXG4gIEg0LFxuICBINSxcbiAgSDYsXG4gIFAsXG4gIENsaWNrYWJsZUxpLFxuICBMaSxcbiAgT2wsXG4gIFVsLFxuICBUaCxcbiAgVGQsXG4gIFRyLFxuICBUYWJsZSxcbiAgTGFiZWwsXG4gIFRCb2R5LFxuICBEaWFsb2csXG4gIENhbnZhcyxcbiAgSW1nLFxufSBmcm9tIFwiLi9zcmMvZWxlbWVudHNcIjtcblxuZXhwb3J0IHR5cGUge1xuICBDb21tb25Qcm9wcyxcbiAgQ2xpY2thYmxlRGl2UHJvcHMsXG4gIENsaWNrYWJsZUxpUHJvcHMsXG4gIE5hdlByb3BzLFxuICBTdmdQcm9wcyxcbiAgRGl2UHJvcHMsXG4gIEJ1dHRvblByb3BzLFxuICBJUHJvcHMsXG4gIElucHV0UHJvcHMsXG4gIEZvcm1Qcm9wcyxcbiAgU3BhblByb3BzLFxuICBUZXh0QXJlYVByb3BzLFxuICBBUHJvcHMsXG4gIENvZGVQcm9wcyxcbiAgUHJlUHJvcHMsXG4gIEgxUHJvcHMsXG4gIEgyUHJvcHMsXG4gIEgzUHJvcHMsXG4gIEg0UHJvcHMsXG4gIEg1UHJvcHMsXG4gIEg2UHJvcHMsXG4gIFBQcm9wcyxcbiAgTGlQcm9wcyxcbiAgT2xQcm9wcyxcbiAgVWxQcm9wcyxcbiAgVGhQcm9wcyxcbiAgVGRQcm9wcyxcbiAgVHJQcm9wcyxcbiAgVGFibGVQcm9wcyxcbiAgTGFiZWxQcm9wcyxcbiAgVEJvZHlQcm9wcyxcbiAgRGlhbG9nUHJvcHMsXG4gIENhbnZhc1Byb3BzLFxuICBJbWdQcm9wcyxcbn0gZnJvbSBcIi4vc3JjL2VsZW1lbnRzXCI7XG5cbmV4cG9ydCB7XG4gIGdldEZvY3VzYWJsZUNvbnRleHQsXG4gIGdldEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuZXhwb3J0IHR5cGUge1xuICAkRm9jdXNhYmxlUHJvcHMsXG4gIEFueUZvY3VzYWJsZUNvbnRleHQsXG4gIEZvY3VzYWJsZUNvbnRleHQsXG4gIEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCxcbiAgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0T3B0aW9ucyxcbiAgS2V5Ym9hcmROYXZpZ2F0aW9uT3JpZW50YXRpb24sXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9nZXQtZm9jdXNhYmxlLWNvbnRleHRcIjtcbmV4cG9ydCB7IGNvbnRleHRGb3JGb2N1c2FibGVJdGVtLCB1c2VGb2N1c2FibGVJdGVtIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2ZvY3VzYWJsZS1pdGVtLWNvbnRleHRcIjtcbmV4cG9ydCB7IHVzZUNsb3NlUG9wb3ZlciwgdXNlUG9wb3ZlcklzT3BlbiwgY29udGV4dEZvckNsb3NpbmdQb3BvdmVyIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyXCI7XG5leHBvcnQgeyB1c2VMb2NhbEhvdmVyYWJsZSB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvbG9jYWwtaG92ZXJhYmxlXCI7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luLCB0eXBlIENvbnRyaWJ1dGVQcm9wcyB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IHR5cGUgT25PdXRzaWRlQ2xpY2tQbHVnaW5Qcm9wcyA9IHtcbiAgcmVhZG9ubHkgY2hpbGRyZW4/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/IGJhY2tncm91bmRDb2xvclN0eWxlc1tgYmFja2dyb3VuZENvbG9yLWZvY3VzLS0ke2ZvY3VzQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgXSxcbiAgICAkYmFja2dyb3VuZENvbG9yOiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9iYWNrZ3JvdW5kLWNvbG9yL2JhY2tncm91bmQtY29sb3IubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWluaGVyaXRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1pbmhlcml0X19fTi1EdFlcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLXdoaXRlXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0td2hpdGVfX18xOGZ4dVwiLFxuICBcImJhY2tncm91bmRDb2xvci0tdHJhbnNwYXJlbnRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS10cmFuc3BhcmVudF9fX1ZkdC1ZXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5MTAwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTEwMF9fX1BSelV0XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5ODBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5ODBfX19hYnl0dVwiLFxuICBcImJhY2tncm91bmRDb2xvci0tZ3JleTYwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTYwX19fUFBBU2xcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXk0MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWdyZXk0MF9fX3dGQmFsXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5MzBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5MzBfX18tLThNVFwiLFxuICBcImJhY2tncm91bmRDb2xvci0tZ3JleTI1XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTI1X19fWUU4UWZcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXkyMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWdyZXkyMF9fXzYwMGpRXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5MTBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5MTBfX19JU3NjOVwiLFxuICBcImJhY2tncm91bmRDb2xvci0tZ3JleTcwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTcwX19fVi1aR0xcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5ODBBbHBoYTg1X19fN29UWDNcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLXByaW1hcnlcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1wcmltYXJ5X19fT0huckxcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWFjY2VudFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWFjY2VudF9fX2R0NDdmXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1zdWNjZXNzXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tc3VjY2Vzc19fX1dVUjN5XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ub3RpY2VcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ub3RpY2VfX19sVk5SZFwiLFxuICBcImJhY2tncm91bmRDb2xvci0td2FybmluZ1wiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLXdhcm5pbmdfX19BclZ2bFwiLFxuICBcImJhY2tncm91bmRDb2xvci0tY3JpdGljYWxcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1jcml0aWNhbF9fX3AtV2I5XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1zdWNjZXNzVGludFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLXN1Y2Nlc3NUaW50X19fMlVQM1lcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLXdhcm5pbmdUaW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0td2FybmluZ1RpbnRfX19xd0YwOFwiLFxuICBcImJhY2tncm91bmRDb2xvci0tY3JpdGljYWxUaW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tY3JpdGljYWxUaW50X19faUstamxcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWxpbmtcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1saW5rX19fajRSajdcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWNvZGVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1jb2RlX19fRW0tYkpcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWluaGVyaXRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1pbmhlcml0X19fbXkyUnFcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXdoaXRlXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0td2hpdGVfX190ZS1ncFwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tdHJhbnNwYXJlbnRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS10cmFuc3BhcmVudF9fXzFEMklqXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5MTAwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTEwMF9fXy1KSHUyXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5ODBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5ODBfX196LTg1SVwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTYwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTYwX19faFViWTNcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk0MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk0MF9fXzNBLWU2XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5MzBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5MzBfX183LUNGalwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTI1XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTI1X19fbUlUOFFcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkyMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkyMF9fX29NQWNEXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5MTBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5MTBfX19nUjE5M1wiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTcwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTcwX19fazJKS01cIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk4MEFscGhhODVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5ODBBbHBoYTg1X19fQ2RrLS1cIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXByaW1hcnlcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1wcmltYXJ5X19fenRnekFcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWFjY2VudFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWFjY2VudF9fX0JBalVRXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1zdWNjZXNzXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tc3VjY2Vzc19fX0czMFZIXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ub3RpY2VcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ub3RpY2VfX19qV0ZjQ1wiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0td2FybmluZ1wiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXdhcm5pbmdfX192bi1CS1wiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tY3JpdGljYWxcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1jcml0aWNhbF9fX3I2YlpJXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1zdWNjZXNzVGludFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXN1Y2Nlc3NUaW50X19fODhMRGpcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXdhcm5pbmdUaW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0td2FybmluZ1RpbnRfX19YaTYyRlwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tY3JpdGljYWxUaW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tY3JpdGljYWxUaW50X19fVjBxMm9cIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWxpbmtcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1saW5rX19fWDlMRnFcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWNvZGVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1jb2RlX19fbEhDSWdcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWluaGVyaXRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1pbmhlcml0X19fUkpQV0pcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLXdoaXRlXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0td2hpdGVfX194Rjh1M1wiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tdHJhbnNwYXJlbnRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS10cmFuc3BhcmVudF9fX3RxcS14XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5MTAwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTEwMF9fX3h0MXhMXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5ODBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5ODBfX19lMjhqalwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTYwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTYwX19fd3REd1RcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXk0MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXk0MF9fX0RESGtQXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5MzBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5MzBfX19aVnZENVwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTI1XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTI1X19fQXNWNmZcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXkyMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXkyMF9fX09MMFpZXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5MTBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5MTBfX19tYWl6ZlwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTcwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTcwX19fdlJuTDJcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXk4MEFscGhhODVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5ODBBbHBoYTg1X19fVmh5dU5cIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLXByaW1hcnlcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1wcmltYXJ5X19fN1R6a3VcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWFjY2VudFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWFjY2VudF9fX210REdPXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1zdWNjZXNzXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tc3VjY2Vzc19fX255M3psXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ub3RpY2VcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ub3RpY2VfX19vdkZ2MVwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0td2FybmluZ1wiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLXdhcm5pbmdfX19xbG4ydVwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tY3JpdGljYWxcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1jcml0aWNhbF9fX1BnREk1XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1zdWNjZXNzVGludFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLXN1Y2Nlc3NUaW50X19fY3EtRDVcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLXdhcm5pbmdUaW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0td2FybmluZ1RpbnRfX19hSHRnQVwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tY3JpdGljYWxUaW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tY3JpdGljYWxUaW50X19fZUo5TmhcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWxpbmtcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1saW5rX19fVGxSUllcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWNvZGVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1jb2RlX19fZmE2NVVcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBib3JkZXJTdHlsZXMgZnJvbSBcIi4vYm9yZGVyLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IENvbG9yIH0gZnJvbSBcIi4uL19zaGFyZWQvY29sb3JzXCI7XG5pbXBvcnQgdHlwZSB7IEJvcmRlcldpZHRoIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgQ29ybmVyU3R5bGVzLCBnZXRDb3JuZXJTdHlsZXMgfSBmcm9tIFwiLi9nZXQtY29ybmVyLXN0eWxlc1wiO1xuaW1wb3J0IHsgZ2V0U2lkZVN0eWxlcywgdHlwZSBTaWRlU3R5bGVzIH0gZnJvbSBcIi4vZ2V0LXNpZGUtc3R5bGVzXCI7XG5pbXBvcnQgeyBjb21wYWN0IH0gZnJvbSBcImxvZGFzaC9mcFwiO1xuXG5leHBvcnQgdHlwZSBCb3JkZXJDb2xvckFsaWFzID0ga2V5b2YgdHlwZW9mIGFsaWFzVG9Ob21pbmFsO1xuZXhwb3J0IHR5cGUgQm9yZGVyQ29sb3IgPSBDb2xvciB8IEJvcmRlckNvbG9yQWxpYXM7XG5cbmNvbnN0IGFsaWFzVG9Ob21pbmFsID0geyBib3JkZXJQcmltYXJ5OiBcImdyZXk2MFwiIH0gYXMgY29uc3Q7XG5cbmNvbnN0IGlzQm9yZGVyQ29sb3JBbGlhcyA9IChjb2xvcjogQm9yZGVyQ29sb3IpOiBjb2xvciBpcyBCb3JkZXJDb2xvckFsaWFzID0+IGNvbG9yIGluIGFsaWFzVG9Ob21pbmFsO1xuXG5leHBvcnQgdHlwZSAkQm9yZGVyQ29sb3JQcm9wcyA9IHtcbiAgcmVhZG9ubHkgbm9ybWFsPzogQm9yZGVyQ29sb3I7XG4gIHJlYWRvbmx5IGhvdmVyPzogQm9yZGVyQ29sb3I7XG4gIHJlYWRvbmx5IGRpc2FibGVkPzogQm9yZGVyQ29sb3I7XG59O1xuXG5leHBvcnQgdHlwZSAkQm9yZGVyUHJvcHMgPSB7XG4gIGNvbG9yPzogQm9yZGVyQ29sb3IgfCAkQm9yZGVyQ29sb3JQcm9wcztcbiAgd2lkdGg/OiBCb3JkZXJXaWR0aCB8IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMZWF2ZSB0aGUgbGFzdCBvZiB0aGUgZWxlbWVudCdzIHNpYmxpbmdzIHdpdGhvdXQgdGhlIGJvcmRlciwgc28gdGhhdCBhIHN0YWNrXG4gICAqIG9mIGJvcmRlcmVkIHJvd3MgcmVhZHMgYXMgcm93cyBzZXBhcmF0ZWQgZnJvbSBlYWNoIG90aGVyIHJhdGhlciB0aGFuIGZyYW1lZC5cbiAgICovXG4gIGV4Y2VwdExhc3Q/OiBib29sZWFuO1xufSAmIFNpZGVTdHlsZXMgJlxuICBDb3JuZXJTdHlsZXM7XG5cbmV4cG9ydCB0eXBlIEJvcmRlclBsdWdpblByb3BzID0geyAkYm9yZGVyPzogJEJvcmRlclByb3BzIH07XG5cbmV4cG9ydCBjb25zdCBib3JkZXJQbHVnaW4gPSBnZXRQbHVnaW48Qm9yZGVyUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJGJvcmRlcikge1xuICAgIHJldHVybiB7ICRib3JkZXI6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgZ2V0Q29ybmVyU3R5bGVzKHByb3BzLiRib3JkZXIpLCBnZXRCb3JkZXJTdHlsZXMocHJvcHMuJGJvcmRlcildLFxuICAgICRib3JkZXI6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuXG5jb25zdCBnZXRCb3JkZXJTdHlsZXMgPSAoeyB3aWR0aCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgdG9wLCBjb2xvciwgZXhjZXB0TGFzdCB9OiAkQm9yZGVyUHJvcHMpID0+IHtcbiAgY29uc3QgYm9yZGVyV2lkdGggPSB3aWR0aCA9PT0gdHJ1ZSB8fCAod2lkdGggPT09IHVuZGVmaW5lZCAmJiBjb2xvcikgPyBcInh4c1wiIDogd2lkdGg7XG4gIGNvbnN0IHsgbm9ybWFsLCBob3ZlciwgZGlzYWJsZWQgfSA9XG4gICAgYm9yZGVyV2lkdGggJiYgY29sb3IgPT09IHVuZGVmaW5lZFxuICAgICAgPyB7IG5vcm1hbDogXCJib3JkZXJQcmltYXJ5XCIgYXMgY29uc3QgfVxuICAgICAgOiB0eXBlb2YgY29sb3IgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyB7IG5vcm1hbDogY29sb3IgfVxuICAgICAgICA6IChjb2xvciA/PyB7fSk7XG5cbiAgY29uc3Qgbm9ybWFsQ29sb3IgPSBub3JtYWwgJiYgaXNCb3JkZXJDb2xvckFsaWFzKG5vcm1hbCkgPyBhbGlhc1RvTm9taW5hbFtub3JtYWxdIDogbm9ybWFsO1xuICBjb25zdCBob3ZlckNvbG9yID0gaG92ZXIgJiYgaXNCb3JkZXJDb2xvckFsaWFzKGhvdmVyKSA/IGFsaWFzVG9Ob21pbmFsW2hvdmVyXSA6IGhvdmVyO1xuICBjb25zdCBkaXNhYmxlZENvbG9yID0gZGlzYWJsZWQgJiYgaXNCb3JkZXJDb2xvckFsaWFzKGRpc2FibGVkKSA/IGFsaWFzVG9Ob21pbmFsW2Rpc2FibGVkXSA6IGRpc2FibGVkO1xuXG4gIGNvbnN0IHN0eWxlQ2xhc3NlcyA9IGNvbXBhY3QoW1xuICAgIGJvcmRlcldpZHRoID8gYm9yZGVyU3R5bGVzW2Bib3JkZXJfX3dpZHRoLS0ke2JvcmRlcldpZHRofWBdIDogdW5kZWZpbmVkLFxuICAgIG5vcm1hbENvbG9yID8gYm9yZGVyU3R5bGVzW2Bib3JkZXJfX2NvbG9yLS0ke25vcm1hbENvbG9yfWBdIDogdW5kZWZpbmVkLFxuICAgIGhvdmVyQ29sb3IgPyBib3JkZXJTdHlsZXNbYGJvcmRlcl9fY29sb3ItLSR7aG92ZXJDb2xvcn0tLWhvdmVyYF0gOiB1bmRlZmluZWQsXG4gICAgZGlzYWJsZWRDb2xvciA/IGJvcmRlclN0eWxlc1tgYm9yZGVyX19jb2xvci0tJHtkaXNhYmxlZENvbG9yfS0tZGlzYWJsZWRgXSA6IHVuZGVmaW5lZCxcbiAgICAuLi5nZXRTaWRlU3R5bGVzKHsgbGVmdCwgcmlnaHQsIGJvdHRvbSwgdG9wIH0pLFxuICAgIGV4Y2VwdExhc3QgPyBib3JkZXJTdHlsZXNbXCJib3JkZXItLWV4Y2VwdC1sYXN0XCJdIDogdW5kZWZpbmVkLFxuICBdKTtcblxuICByZXR1cm4gW3N0eWxlQ2xhc3Nlcywgc3R5bGVDbGFzc2VzLmxlbmd0aCA+IDAgJiYgYm9yZGVyU3R5bGVzW1wiYm9yZGVyX19zdHlsZS0tc29saWRcIl1dO1xufTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiYm9yZGVyX19zdHlsZS0tc29saWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3N0eWxlLS1zb2xpZF9fXzFReTFKXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0temVyb19fXy1rN1VDXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0tc19fX3ZsbXVsXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0tbV9fX0VvSHZqXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLW1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19yYWRpdXMtLW1sX19fa3NLUGVcIixcbiAgXCJib3JkZXJfX3JhZGl1cy0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fcmFkaXVzLS1sX19fLTU0bnhcIixcbiAgXCJib3JkZXJfX3JhZGl1cy0tNTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0tNTBfX19FYzVjY1wiLFxuICBcImJvcmRlcl9fcmFkaXVzLS1mdWxsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19yYWRpdXMtLWZ1bGxfX19mME9rTFwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS16ZXJvX19fdUxjTzJcIixcbiAgXCJib3JkZXJfX3dpZHRoLS14eHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS14eHNfX19KMHRaOVwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0teHNfX19VUmNrSVwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS1zX19feDlOVWpcIixcbiAgXCJib3JkZXJfX3dpZHRoLS1tXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0tbV9fX0NGOENFXCIsXG4gIFwiYm9yZGVyX193aWR0aC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fd2lkdGgtLWxfX19Zb0I2NVwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0teGxfX19CQ0xsTlwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXh4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fd2lkdGgtLXh4bF9fXy1kcmdQXCIsXG4gIFwiYm9yZGVyX193aWR0aC0tM3hsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0tM3hsX19fZHFtaUZcIixcbiAgXCJib3JkZXJfX3dpZHRoLS00eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS00eGxfX19iRUw5MFwiLFxuICBcImJvcmRlcl9fd2lkdGgtLTV4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fd2lkdGgtLTV4bF9fX3pqMVZYXCIsXG4gIFwiYm9yZGVyX19jb2xvci0taW5oZXJpdFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWluaGVyaXRfX19FMk1Tc1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWluaGVyaXQtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0taW5oZXJpdC0taG92ZXJfX19XeW5CUFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWluaGVyaXQtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0taW5oZXJpdC0tZGlzYWJsZWRfX19xLXRzRVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdoaXRlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2hpdGVfX19nVDJvZ1wiLFxuICBcImJvcmRlcl9fY29sb3ItLXdoaXRlLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdoaXRlLS1ob3Zlcl9fX1FkcFZiXCIsXG4gIFwiYm9yZGVyX19jb2xvci0td2hpdGUtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2hpdGUtLWRpc2FibGVkX19faXlUWEtcIixcbiAgXCJib3JkZXJfX2NvbG9yLS10cmFuc3BhcmVudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXRyYW5zcGFyZW50X19fc3dhbUhcIixcbiAgXCJib3JkZXJfX2NvbG9yLS10cmFuc3BhcmVudC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS10cmFuc3BhcmVudC0taG92ZXJfX19qVVotelwiLFxuICBcImJvcmRlcl9fY29sb3ItLXRyYW5zcGFyZW50LS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXRyYW5zcGFyZW50LS1kaXNhYmxlZF9fX3NpRHJ5XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkxMDBfX192NWw4M1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMDAtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTEwMC0taG92ZXJfX19KMS1PUVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMDAtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTEwMC0tZGlzYWJsZWRfX19RaktSUlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk4MF9fX2txNWFUXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTgwLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk4MC0taG92ZXJfX19DcHBsVlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5ODAtLWRpc2FibGVkX19fLThQS2xcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NjBfX19QOUpNSFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk2MC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NjAtLWhvdmVyX19fQVppY0dcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NjAtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTYwLS1kaXNhYmxlZF9fX2djVmREXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTQwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTQwX19fZjZTRHdcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NDAtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTQwLS1ob3Zlcl9fX1VIZElyXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTQwLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk0MC0tZGlzYWJsZWRfX180ZURrQ1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkzMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkzMF9fX2ZxYnR1XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTMwLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkzMC0taG92ZXJfX19WTkRTUlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkzMC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MzAtLWRpc2FibGVkX19fcHlKT3FcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5MjVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MjVfX19zblZuZFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkyNS0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MjUtLWhvdmVyX19fbmRyZllcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5MjUtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTI1LS1kaXNhYmxlZF9fX29tUEpQXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTIwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTIwX19fZ2JuM1pcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5MjAtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTIwLS1ob3Zlcl9fX3hSc3djXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTIwLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkyMC0tZGlzYWJsZWRfX19TVmVBVFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkxMF9fX1pVNUdhXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTEwLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkxMC0taG92ZXJfX19VWmgtZFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MTAtLWRpc2FibGVkX19fOVotT1RcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NzBfX195cjlpTVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk3MC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NzAtLWhvdmVyX19fbDlZVGRcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NzAtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTcwLS1kaXNhYmxlZF9fX1N3UlFpXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTgwQWxwaGE4NVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk4MEFscGhhODVfX182RGJkU1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MEFscGhhODUtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTgwQWxwaGE4NS0taG92ZXJfX194U2t3QVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MEFscGhhODUtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTgwQWxwaGE4NS0tZGlzYWJsZWRfX195UDRPLVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXByaW1hcnlcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1wcmltYXJ5X19fZ2Z4Qk9cIixcbiAgXCJib3JkZXJfX2NvbG9yLS1wcmltYXJ5LS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXByaW1hcnktLWhvdmVyX19fcHVIRHBcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1wcmltYXJ5LS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXByaW1hcnktLWRpc2FibGVkX19fSDVGc0dcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1hY2NlbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1hY2NlbnRfX19lLUhsRFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWFjY2VudC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1hY2NlbnQtLWhvdmVyX19fUzJvVkVcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1hY2NlbnQtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tYWNjZW50LS1kaXNhYmxlZF9fX3kzQmJiXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXN1Y2Nlc3NfX19adXJsU1wiLFxuICBcImJvcmRlcl9fY29sb3ItLXN1Y2Nlc3MtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tc3VjY2Vzcy0taG92ZXJfX19XeS0yTVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXN1Y2Nlc3MtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tc3VjY2Vzcy0tZGlzYWJsZWRfX19UUDNSdlwiLFxuICBcImJvcmRlcl9fY29sb3ItLW5vdGljZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLW5vdGljZV9fX1p3UXZUXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tbm90aWNlLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLW5vdGljZS0taG92ZXJfX19NSlFVaFwiLFxuICBcImJvcmRlcl9fY29sb3ItLW5vdGljZS0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ub3RpY2UtLWRpc2FibGVkX19feVZ1aTJcIixcbiAgXCJib3JkZXJfX2NvbG9yLS13YXJuaW5nXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2FybmluZ19fX0xLNkF6XCIsXG4gIFwiYm9yZGVyX19jb2xvci0td2FybmluZy0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS13YXJuaW5nLS1ob3Zlcl9fX21Bb1NCXCIsXG4gIFwiYm9yZGVyX19jb2xvci0td2FybmluZy0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS13YXJuaW5nLS1kaXNhYmxlZF9fX1djQUstXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tY3JpdGljYWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jcml0aWNhbF9fX0dUWXoxXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tY3JpdGljYWwtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tY3JpdGljYWwtLWhvdmVyX19fdU1GamFcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jcml0aWNhbC0tZGlzYWJsZWRfX19LOWdsN1wiLFxuICBcImJvcmRlcl9fY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tc3VjY2Vzc1RpbnRfX19QU1JNblwiLFxuICBcImJvcmRlcl9fY29sb3ItLXN1Y2Nlc3NUaW50LS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXN1Y2Nlc3NUaW50LS1ob3Zlcl9fX1VmSlBnXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzc1RpbnQtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tc3VjY2Vzc1RpbnQtLWRpc2FibGVkX19fV2tPcEFcIixcbiAgXCJib3JkZXJfX2NvbG9yLS13YXJuaW5nVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdhcm5pbmdUaW50X19fSVRXbU1cIixcbiAgXCJib3JkZXJfX2NvbG9yLS13YXJuaW5nVGludC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS13YXJuaW5nVGludC0taG92ZXJfX19KYy1OblwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdhcm5pbmdUaW50LS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdhcm5pbmdUaW50LS1kaXNhYmxlZF9fX3VxekJvXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tY3JpdGljYWxUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tY3JpdGljYWxUaW50X19fT1F1eHRcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnQtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tY3JpdGljYWxUaW50LS1ob3Zlcl9fX2xXYTlEXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tY3JpdGljYWxUaW50LS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNyaXRpY2FsVGludC0tZGlzYWJsZWRfX19sWWhoNFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWxpbmtcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1saW5rX19faVllRmtcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1saW5rLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWxpbmstLWhvdmVyX19fNHlSSlBcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1saW5rLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWxpbmstLWRpc2FibGVkX19fMGs5ZEJcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jb2RlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tY29kZV9fXzhPc0ZpXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tY29kZS0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jb2RlLS1ob3Zlcl9fX1o1czVkXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tY29kZS0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jb2RlLS1kaXNhYmxlZF9fX3VEUVpNXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLXplcm9fX19WS1JxLVwiLFxuICBcImJvcmRlclRvcF9fd2lkdGgtLXh4c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLXh4c19fXzh6aTdUXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0teHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS14c19fX1JORUsyXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0tc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLXNfX19hVm4xV1wiLFxuICBcImJvcmRlclRvcF9fd2lkdGgtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS1tX19fQjYxNGpcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0tbF9fXy1vZVBQXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0teGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS14bF9fX1pKYzZJXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0teHhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0teHhsX19fTW5ySHpcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS0zeGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS0zeGxfX181eEstLVwiLFxuICBcImJvcmRlclRvcF9fd2lkdGgtLTR4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLTR4bF9fX3BFRHRjXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0tNXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0tNXhsX19fTUZ2ZmhcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1pbmhlcml0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0taW5oZXJpdF9fX0NyMW5hXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0td2hpdGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS13aGl0ZV9fX3UtdVFiXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tdHJhbnNwYXJlbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS10cmFuc3BhcmVudF9fX1BzTW14XCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWdyZXkxMDBfX19XYzl0TFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWdyZXk4MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWdyZXk4MF9fX2VIanpGXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTYwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTYwX19fdFNBdGVcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5NDBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5NDBfX19IaXJnZlwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWdyZXkzMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWdyZXkzMF9fX0JCckJRXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTI1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTI1X19fVUhWWlhcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5MjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5MjBfX18xbHVwUFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWdyZXkxMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWdyZXkxMF9fX0UyR2ZUXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTcwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTcwX19fRGJDMkdcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5ODBBbHBoYTg1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTgwQWxwaGE4NV9fX2tCOS12XCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tcHJpbWFyeVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXByaW1hcnlfX181MTFqa1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWFjY2VudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWFjY2VudF9fX0kxS0JQXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tc3VjY2Vzc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXN1Y2Nlc3NfX183OS11alwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLW5vdGljZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLW5vdGljZV9fXy1kT0QwXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0td2FybmluZ1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXdhcm5pbmdfX19UMzVrWFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWNyaXRpY2FsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tY3JpdGljYWxfX19zLXF2a1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tc3VjY2Vzc1RpbnRfX19QYTBOR1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLXdhcm5pbmdUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0td2FybmluZ1RpbnRfX18yZVVRVFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWNyaXRpY2FsVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWNyaXRpY2FsVGludF9fX0hKQW8yXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tbGlua1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWxpbmtfX19LWUZHS1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWNvZGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1jb2RlX19fdktPS3dcIixcbiAgXCJib3JkZXJSaWdodF9fd2lkdGgtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXplcm9fX19ybERJblwiLFxuICBcImJvcmRlclJpZ2h0X193aWR0aC0teHhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX3dpZHRoLS14eHNfX18tejc5YVwiLFxuICBcImJvcmRlclJpZ2h0X193aWR0aC0teHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXhzX19fd1pWaGpcIixcbiAgXCJib3JkZXJSaWdodF9fd2lkdGgtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXNfX19NdFlUNlwiLFxuICBcImJvcmRlclJpZ2h0X193aWR0aC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X193aWR0aC0tbV9fX1NEOTd3XCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX3dpZHRoLS1sX19fcVNJMEVcIixcbiAgXCJib3JkZXJSaWdodF9fd2lkdGgtLXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX3dpZHRoLS14bF9fXzA1bjAwXCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS14eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXh4bF9fXy1hRXd2XCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS0zeGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLTN4bF9fX0R1MFJvXCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS00eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLTR4bF9fXzJaQ1hrXCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS01eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLTV4bF9fX1NwNDhrXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1pbmhlcml0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1pbmhlcml0X19fOXlQZUlcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLXdoaXRlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS13aGl0ZV9fX2hJT0JkXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS10cmFuc3BhcmVudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tdHJhbnNwYXJlbnRfX19veElOSlwiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tZ3JleTEwMF9fX2FhU25hXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5ODBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk4MF9fXzVQVDVqXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5NjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk2MF9fX29OVy1VXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5NDBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk0MF9fXzJKd2k5XCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkzMF9fX1Q2aHR4XCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MjVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkyNV9fX1FiRlVKXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkyMF9fX2VzTVFNXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkxMF9fX1owUXpmXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5NzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk3MF9fX3RrekFKXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5ODBBbHBoYTg1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19fajQ1VU5cIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLXByaW1hcnlcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLXByaW1hcnlfX19ISWsyQVwiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tYWNjZW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1hY2NlbnRfX19XWDJMU1wiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tc3VjY2Vzc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tc3VjY2Vzc19fX1JJd2FIXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ub3RpY2VcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLW5vdGljZV9fX3ZVTGFUXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS13YXJuaW5nXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS13YXJuaW5nX19fWTJpUGlcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLWNyaXRpY2FsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1jcml0aWNhbF9fX1htNnRRXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1zdWNjZXNzVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tc3VjY2Vzc1RpbnRfX19tMW52WVwiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0td2FybmluZ1RpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLXdhcm5pbmdUaW50X19fbi1oeEZcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLWNyaXRpY2FsVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tY3JpdGljYWxUaW50X19fNFZKTjhcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLWxpbmtcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWxpbmtfX19IMnJlM1wiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tY29kZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tY29kZV9fX1VDZE0wXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLXplcm9fX19QbEFCTFwiLFxuICBcImJvcmRlckJvdHRvbV9fd2lkdGgtLXh4c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLXh4c19fX1pGbS1VXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0teHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS14c19fX2hEelNzXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0tc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLXNfX19JV3QtdVwiLFxuICBcImJvcmRlckJvdHRvbV9fd2lkdGgtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS1tX19fZjFyLXNcIixcbiAgXCJib3JkZXJCb3R0b21fX3dpZHRoLS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX193aWR0aC0tbF9fXzBIdmwxXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0teGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS14bF9fX3NTUnRzXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0teHhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX193aWR0aC0teHhsX19fTnVCZ0ZcIixcbiAgXCJib3JkZXJCb3R0b21fX3dpZHRoLS0zeGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS0zeGxfX19HakxZVVwiLFxuICBcImJvcmRlckJvdHRvbV9fd2lkdGgtLTR4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLTR4bF9fX0J2SldQXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0tNXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX193aWR0aC0tNXhsX19fckNlREJcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1pbmhlcml0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0taW5oZXJpdF9fXzczZHFWXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0td2hpdGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS13aGl0ZV9fX0RabWo2XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tdHJhbnNwYXJlbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS10cmFuc3BhcmVudF9fX3FrTmdGXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkxMDBfX19YMnY3eFwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWdyZXk4MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXk4MF9fX3RuTWo1XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTYwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTYwX19fVU9XMG5cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5NDBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5NDBfX19jN3VjMFwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkzMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkzMF9fX1k4NUM0XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTI1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTI1X19fa3YyTm1cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5MjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5MjBfX192Ty1tSlwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkxMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkxMF9fX0ZhLWh5XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTcwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTcwX19faC1Da1ZcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5ODBBbHBoYTg1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTgwQWxwaGE4NV9fX2lyeG9IXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tcHJpbWFyeVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLXByaW1hcnlfX19KLXI1SlwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWFjY2VudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWFjY2VudF9fX29jNFFTXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tc3VjY2Vzc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLXN1Y2Nlc3NfX19meFp2UlwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLW5vdGljZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLW5vdGljZV9fX0lJQTVSXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0td2FybmluZ1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLXdhcm5pbmdfX19sc1pHLVwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWNyaXRpY2FsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tY3JpdGljYWxfX19CN0w1LVwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tc3VjY2Vzc1RpbnRfX19Bc3Z0Y1wiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLXdhcm5pbmdUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0td2FybmluZ1RpbnRfX180T1BmT1wiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWNyaXRpY2FsVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWNyaXRpY2FsVGludF9fX3gyVUxRXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tbGlua1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWxpbmtfX19SMlhEdVwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWNvZGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1jb2RlX19fRXI5aGJcIixcbiAgXCJib3JkZXJMZWZ0X193aWR0aC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS16ZXJvX19fMS1GTS1cIixcbiAgXCJib3JkZXJMZWZ0X193aWR0aC0teHhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fd2lkdGgtLXh4c19fX29qQWFwXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fd2lkdGgtLXhzX19fejJYSUZcIixcbiAgXCJib3JkZXJMZWZ0X193aWR0aC0tc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS1zX19fRHFYYmNcIixcbiAgXCJib3JkZXJMZWZ0X193aWR0aC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS1tX19fNGpQdTVcIixcbiAgXCJib3JkZXJMZWZ0X193aWR0aC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS1sX19fbFBhUktcIixcbiAgXCJib3JkZXJMZWZ0X193aWR0aC0teGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0teGxfX19NYy0tUlwiLFxuICBcImJvcmRlckxlZnRfX3dpZHRoLS14eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0teHhsX19fS1hPUlpcIixcbiAgXCJib3JkZXJMZWZ0X193aWR0aC0tM3hsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fd2lkdGgtLTN4bF9fXzRmWUlFXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLTR4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS00eGxfX19jZFVsV1wiLFxuICBcImJvcmRlckxlZnRfX3dpZHRoLS01eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tNXhsX19fN2w5SDBcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0taW5oZXJpdFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1pbmhlcml0X19fcWQ0a0RcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0td2hpdGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0td2hpdGVfX18tcnpzN1wiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS10cmFuc3BhcmVudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS10cmFuc3BhcmVudF9fX3VVVUV4XCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkxMDBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTEwMF9fX1FEYlYyXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk4MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ncmV5ODBfX183aFZ5OFwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5NjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTYwX19fcTlUczJcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tZ3JleTQwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk0MF9fX3lJcjBKXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkzMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ncmV5MzBfX19pdFVVc1wiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5MjVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTI1X19fejlFZ0RcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tZ3JleTIwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkyMF9fX0hxckpuXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkxMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ncmV5MTBfX195dFpQTlwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5NzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTcwX19fRW95VldcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tZ3JleTgwQWxwaGE4NVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19fMkdJVzJcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tcHJpbWFyeVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1wcmltYXJ5X19fSU5DOHlcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tYWNjZW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWFjY2VudF9fXzFSUzByXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXN1Y2Nlc3NcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tc3VjY2Vzc19fXzEyS2l1XCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLW5vdGljZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ub3RpY2VfX19taEpBblwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS13YXJuaW5nXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLXdhcm5pbmdfX191VjV0V1wiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1jcml0aWNhbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1jcml0aWNhbF9fX0E2SmlPXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLXN1Y2Nlc3NUaW50X19fZ09yWWpcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0td2FybmluZ1RpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0td2FybmluZ1RpbnRfX19ON1VjVFwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tY3JpdGljYWxUaW50X19fYS1mYUdcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tbGlua1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1saW5rX19fbXdSS3dcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tY29kZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1jb2RlX19fdUpXRkhcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS16ZXJvX19fZGxzdFZcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0tc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS1zX19fdm81ZWxcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS1tX19fR0lFY3RcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0tbWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BSaWdodC0tbWxfX19tRWNEdlwiLFxuICBcImJvcmRlclJhZGl1c1RvcFJpZ2h0LS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzVG9wUmlnaHQtLWxfX19yZy1EMFwiLFxuICBcImJvcmRlclJhZGl1c1RvcFJpZ2h0LS01MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS01MF9fX1hsbEdzXCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wUmlnaHQtLWZ1bGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BSaWdodC0tZnVsbF9fXzVaSXY4XCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0temVyb19fX084ZEUzXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tc19fX254THRMXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tbV9fX1NsNVJSXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLW1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLW1sX19fQW9RMGJcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c0JvdHRvbVJpZ2h0LS1sX19fNTJKb2xcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tNTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tNTBfX183LXdPR1wiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbVJpZ2h0LS1mdWxsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLWZ1bGxfX19MQmFQNlwiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbUxlZnQtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS16ZXJvX19fb1FCZG1cIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS1zXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tc19fX3pGSUwzXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c0JvdHRvbUxlZnQtLW1fX19LTlNjVFwiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbUxlZnQtLW1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tbWxfX192dDd4MlwiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbUxlZnQtLWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS1sX19fazhwaWtcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS01MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c0JvdHRvbUxlZnQtLTUwX19fZjJYVHVcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS1mdWxsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tZnVsbF9fX2VIajZzXCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wTGVmdC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcExlZnQtLXplcm9fX19QMVl0d1wiLFxuICBcImJvcmRlclJhZGl1c1RvcExlZnQtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BMZWZ0LS1zX19fSC1sWGVcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BMZWZ0LS1tXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzVG9wTGVmdC0tbV9fXzNMUlIwXCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wTGVmdC0tbWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BMZWZ0LS1tbF9fX2lndjB3XCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wTGVmdC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcExlZnQtLWxfX18zczJDSlwiLFxuICBcImJvcmRlclJhZGl1c1RvcExlZnQtLTUwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzVG9wTGVmdC0tNTBfX193Tll3UVwiLFxuICBcImJvcmRlclJhZGl1c1RvcExlZnQtLWZ1bGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BMZWZ0LS1mdWxsX19fQ2Z6LVJcIixcbiAgXCJib3JkZXItLWV4Y2VwdC1sYXN0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyLS1leGNlcHQtbGFzdF9fXzIyWXNCXCJcbn07IiwgImltcG9ydCBib3JkZXJTdHlsZXMgZnJvbSBcIi4vYm9yZGVyLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IEJvcmRlclJhZGl1c1NpemUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvcm5lclN0eWxlcyB7XG4gIHJhZGl1cz86IEJvcmRlclJhZGl1c1NpemUgfCBib29sZWFuO1xuICByYWRpdXNUb3BSaWdodD86IEJvcmRlclJhZGl1c1NpemU7XG4gIHJhZGl1c0JvdHRvbVJpZ2h0PzogQm9yZGVyUmFkaXVzU2l6ZTtcbiAgcmFkaXVzQm90dG9tTGVmdD86IEJvcmRlclJhZGl1c1NpemU7XG4gIHJhZGl1c1RvcExlZnQ/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/IGFsaWFzVG9Ob21pbmFsW2hvdmVyXSA6IGhvdmVyKSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgZm9jdXNDb2xvciA9IGZvY3VzID8gKGlzVGV4dENvbG9yQWxpYXMoZm9jdXMpID8gYWxpYXNUb05vbWluYWxbZm9jdXNdIDogZm9jdXMpIDogdW5kZWZpbmVkO1xuICBjb25zdCBkaXNhYmxlZENvbG9yID0gZGlzYWJsZWQgPyAoaXNUZXh0Q29sb3JBbGlhcyhkaXNhYmxlZCkgPyBhbGlhc1RvTm9taW5hbFtkaXNhYmxlZF0gOiBkaXNhYmxlZCkgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbXG4gICAgICAkY2xhc3NOYW1lLFxuICAgICAgbm9ybWFsQ29sb3IgPyBjb2xvclN0eWxlc1tgY29sb3ItLSR7bm9ybWFsQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgICBob3ZlckNvbG9yID8gY29sb3JTdHlsZXNbYGNvbG9yLWhvdmVyLS0ke2hvdmVyQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgICBmb2N1c0NvbG9yID8gY29sb3JTdHlsZXNbYGNvbG9yLWZvY3VzLS0ke2ZvY3VzQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgICBkaXNhYmxlZENvbG9yID8gY29sb3JTdHlsZXNbYGNvbG9yLWRpc2FibGVkLS0ke2Rpc2FibGVkQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgXSxcbiAgICAkY29sb3I6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2NvbG9yL2NvbG9yLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiY29sb3ItLWluaGVyaXRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1pbmhlcml0X19fR01wLWFcIixcbiAgXCJjb2xvci1ob3Zlci0taW5oZXJpdFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWluaGVyaXRfX19mR0xLNlwiLFxuICBcImNvbG9yLWZvY3VzLS1pbmhlcml0XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1mb2N1cy0taW5oZXJpdF9fX3lHZkNlXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWluaGVyaXRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1pbmhlcml0X19fczlNQ0lcIixcbiAgXCJjb2xvci0td2hpdGVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS13aGl0ZV9fX2Y4YzFzXCIsXG4gIFwiY29sb3ItaG92ZXItLXdoaXRlXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1ob3Zlci0td2hpdGVfX19NNmFSZ1wiLFxuICBcImNvbG9yLWZvY3VzLS13aGl0ZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLXdoaXRlX19faTZ1WXpcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0td2hpdGVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS13aGl0ZV9fX250allFXCIsXG4gIFwiY29sb3ItLXRyYW5zcGFyZW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tdHJhbnNwYXJlbnRfX18xdmZydlwiLFxuICBcImNvbG9yLWhvdmVyLS10cmFuc3BhcmVudFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXRyYW5zcGFyZW50X19feG03QkRcIixcbiAgXCJjb2xvci1mb2N1cy0tdHJhbnNwYXJlbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS10cmFuc3BhcmVudF9fX3BkZS1XXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLXRyYW5zcGFyZW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tdHJhbnNwYXJlbnRfX19aMFF1VVwiLFxuICBcImNvbG9yLS1ncmV5MTAwXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tZ3JleTEwMF9fX0NwRHp2XCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkxMDBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ncmV5MTAwX19fR0ZDb21cIixcbiAgXCJjb2xvci1mb2N1cy0tZ3JleTEwMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWdyZXkxMDBfX19BTTdvTVwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5MTAwXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tZ3JleTEwMF9fXzhTUnVKXCIsXG4gIFwiY29sb3ItLWdyZXk4MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXk4MF9fX0Q3MWZuXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk4MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk4MF9fX3NCSXhiXCIsXG4gIFwiY29sb3ItZm9jdXMtLWdyZXk4MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWdyZXk4MF9fXzhQbHlvXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk4MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXk4MF9fX3cxbnBjXCIsXG4gIFwiY29sb3ItLWdyZXk2MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXk2MF9fX1VUMjhYXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk2MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk2MF9fX3hmWm1iXCIsXG4gIFwiY29sb3ItZm9jdXMtLWdyZXk2MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWdyZXk2MF9fX2t3bTJHXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk2MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXk2MF9fX21mVmdxXCIsXG4gIFwiY29sb3ItLWdyZXk0MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXk0MF9fX2lST3pSXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk0MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk0MF9fX3JiTjA0XCIsXG4gIFwiY29sb3ItZm9jdXMtLWdyZXk0MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWdyZXk0MF9fX29JUlVmXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk0MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXk0MF9fX05pWnhpXCIsXG4gIFwiY29sb3ItLWdyZXkzMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkzMF9fX0x3bkwyXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkzMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkzMF9fX1g3aC1oXCIsXG4gIFwiY29sb3ItZm9jdXMtLWdyZXkzMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWdyZXkzMF9fX1FVYjRTXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXkzMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkzMF9fX0txOWdXXCIsXG4gIFwiY29sb3ItLWdyZXkyNVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkyNV9fX0VOVDVvXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkyNVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkyNV9fX3RZeWdEXCIsXG4gIFwiY29sb3ItZm9jdXMtLWdyZXkyNVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWdyZXkyNV9fX1R4aTVsXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXkyNVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkyNV9fX2JtLTFjXCIsXG4gIFwiY29sb3ItLWdyZXkyMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkyMF9fX0VGMk9MXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkyMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkyMF9fX3VQdFhVXCIsXG4gIFwiY29sb3ItZm9jdXMtLWdyZXkyMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWdyZXkyMF9fX3czcldjXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXkyMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkyMF9fX3ZwdXkxXCIsXG4gIFwiY29sb3ItLWdyZXkxMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkxMF9fX2w1YVpwXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkxMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkxMF9fXzRBcGNyXCIsXG4gIFwiY29sb3ItZm9jdXMtLWdyZXkxMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWdyZXkxMF9fX1Z3VzcxXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXkxMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkxMF9fX1k1cXl3XCIsXG4gIFwiY29sb3ItLWdyZXk3MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXk3MF9fX0M5SEhNXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk3MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk3MF9fXzNrcnRMXCIsXG4gIFwiY29sb3ItZm9jdXMtLWdyZXk3MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWdyZXk3MF9fX3AzaWV4XCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk3MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXk3MF9fXzg2SnFWXCIsXG4gIFwiY29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19fLTNUZGRcIixcbiAgXCJjb2xvci1ob3Zlci0tZ3JleTgwQWxwaGE4NVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk4MEFscGhhODVfX19Eb2ZvMFwiLFxuICBcImNvbG9yLWZvY3VzLS1ncmV5ODBBbHBoYTg1XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1mb2N1cy0tZ3JleTgwQWxwaGE4NV9fX1Q0QmdGXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk4MEFscGhhODVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1ncmV5ODBBbHBoYTg1X19fZVIzenNcIixcbiAgXCJjb2xvci0tcHJpbWFyeVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLXByaW1hcnlfX18wOFduVlwiLFxuICBcImNvbG9yLWhvdmVyLS1wcmltYXJ5XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1ob3Zlci0tcHJpbWFyeV9fX1Z0LTNmXCIsXG4gIFwiY29sb3ItZm9jdXMtLXByaW1hcnlcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1wcmltYXJ5X19fdDVyMDJcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tcHJpbWFyeVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLXByaW1hcnlfX18wWHNrOVwiLFxuICBcImNvbG9yLS1hY2NlbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1hY2NlbnRfX19qLUxmb1wiLFxuICBcImNvbG9yLWhvdmVyLS1hY2NlbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1hY2NlbnRfX180aDNMVFwiLFxuICBcImNvbG9yLWZvY3VzLS1hY2NlbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1hY2NlbnRfX19BalM3WVwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1hY2NlbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1hY2NlbnRfX19aUzlXNVwiLFxuICBcImNvbG9yLS1zdWNjZXNzXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tc3VjY2Vzc19fX3dvVEYyXCIsXG4gIFwiY29sb3ItaG92ZXItLXN1Y2Nlc3NcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1zdWNjZXNzX19fN0VJV2NcIixcbiAgXCJjb2xvci1mb2N1cy0tc3VjY2Vzc1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLXN1Y2Nlc3NfX19LWjBkaVwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1zdWNjZXNzXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tc3VjY2Vzc19fX05lMldJXCIsXG4gIFwiY29sb3ItLW5vdGljZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLW5vdGljZV9fXzZENktHXCIsXG4gIFwiY29sb3ItaG92ZXItLW5vdGljZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLW5vdGljZV9fX2VPZFVwXCIsXG4gIFwiY29sb3ItZm9jdXMtLW5vdGljZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLW5vdGljZV9fX05nVVJMXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLW5vdGljZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLW5vdGljZV9fX3NEbzhyXCIsXG4gIFwiY29sb3ItLXdhcm5pbmdcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS13YXJuaW5nX19fZktid2RcIixcbiAgXCJjb2xvci1ob3Zlci0td2FybmluZ1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXdhcm5pbmdfX19HajJoTVwiLFxuICBcImNvbG9yLWZvY3VzLS13YXJuaW5nXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1mb2N1cy0td2FybmluZ19fX2NCbXQ5XCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLXdhcm5pbmdcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS13YXJuaW5nX19fclhEYlJcIixcbiAgXCJjb2xvci0tY3JpdGljYWxcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1jcml0aWNhbF9fX3NoRkJxXCIsXG4gIFwiY29sb3ItaG92ZXItLWNyaXRpY2FsXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1ob3Zlci0tY3JpdGljYWxfX19SUVdaWVwiLFxuICBcImNvbG9yLWZvY3VzLS1jcml0aWNhbFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWNyaXRpY2FsX19fOVlsQ1lcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tY3JpdGljYWxcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1jcml0aWNhbF9fX2gzNy0zXCIsXG4gIFwiY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tc3VjY2Vzc1RpbnRfX19EZDBSeVwiLFxuICBcImNvbG9yLWhvdmVyLS1zdWNjZXNzVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXN1Y2Nlc3NUaW50X19fTEtsemdcIixcbiAgXCJjb2xvci1mb2N1cy0tc3VjY2Vzc1RpbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1zdWNjZXNzVGludF9fX2JRWWhwXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLXN1Y2Nlc3NUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tc3VjY2Vzc1RpbnRfX19sc21KaFwiLFxuICBcImNvbG9yLS13YXJuaW5nVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLXdhcm5pbmdUaW50X19fajNQWlhcIixcbiAgXCJjb2xvci1ob3Zlci0td2FybmluZ1RpbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS13YXJuaW5nVGludF9fX2puMXd1XCIsXG4gIFwiY29sb3ItZm9jdXMtLXdhcm5pbmdUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1mb2N1cy0td2FybmluZ1RpbnRfX19DNnpuRFwiLFxuICBcImNvbG9yLWRpc2FibGVkLS13YXJuaW5nVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLXdhcm5pbmdUaW50X19fVzZqSThcIixcbiAgXCJjb2xvci0tY3JpdGljYWxUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tY3JpdGljYWxUaW50X19feVJKYUFcIixcbiAgXCJjb2xvci1ob3Zlci0tY3JpdGljYWxUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1ob3Zlci0tY3JpdGljYWxUaW50X19fVnNvTjVcIixcbiAgXCJjb2xvci1mb2N1cy0tY3JpdGljYWxUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1mb2N1cy0tY3JpdGljYWxUaW50X19fOHREbWdcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tY3JpdGljYWxUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tY3JpdGljYWxUaW50X19fVEFCSGtcIixcbiAgXCJjb2xvci0tbGlua1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWxpbmtfX19uU01tOVwiLFxuICBcImNvbG9yLWhvdmVyLS1saW5rXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1ob3Zlci0tbGlua19fX0duaVkzXCIsXG4gIFwiY29sb3ItZm9jdXMtLWxpbmtcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1saW5rX19fODZKdGZcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tbGlua1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWxpbmtfX19Gb0o1WFwiLFxuICBcImNvbG9yLS1jb2RlXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tY29kZV9fX25DT2pBXCIsXG4gIFwiY29sb3ItaG92ZXItLWNvZGVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1jb2RlX19fVjV1dVZcIixcbiAgXCJjb2xvci1mb2N1cy0tY29kZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWNvZGVfX19JQUs3ZFwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1jb2RlXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tY29kZV9fX3czVlV3XCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgZ3JhZGllbnRTdHlsZXMgZnJvbSBcIi4vZ3JhZGllbnQubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgR3JhZGllbnRQbHVnaW5Qcm9wcyA9IHsgJGdyYWRpZW50PzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgZ3JhZGllbnRQbHVnaW4gPSBnZXRQbHVnaW48R3JhZGllbnRQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+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+IHwgdW5kZWZpbmVkLFxuICBpdGVtOiB1bmtub3duLFxuICBvcmRlck51bWJlcjogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwsXG4pOiBLZXlib2FyZE5hdmlnYXRpb24gPT4ge1xuICBjb25zdCBuYXZpZ2F0aW9uID0gdXNlU3luY0luamVjdChrZXlib2FyZE5hdmlnYXRpb25TdGF0ZUluamVjdGFibGUpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFjb250ZXh0IHx8ICFlbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW50cnk6IE5hdmlnYWJsZUVudHJ5ID0geyBpdGVtLCBvcmRlck51bWJlcjogb3JkZXJOdW1iZXIgPz8gMCwgZWxlbWVudCB9O1xuXG4gICAgbmF2aWdhdGlvbi5yZWdpc3Rlcihjb250ZXh0LCBlbnRyeSk7XG5cbiAgICBjb25zdCBmb2N1c1doYXRTaG91bGRIYXZlRm9jdXMgPSAoKSA9PiB7XG4gICAgICAvLyBPbmx5IHdpdGhpbiB0aGUgd2luZG93IHRoZSB1c2VyIGlzIGFjdHVhbGx5IGluLiBMZW5zIERlc2t0b3AgaXMgbW9yZSB0aGFuIG9uZSB3aW5kb3csXG4gICAgICAvLyBhbmQgZm9jdXNpbmcgYW4gZWxlbWVudCBvZiBhIHdpbmRvdyB0aGF0IGRvZXMgbm90IGhhdmUgZm9jdXMgaXMgaG93IGEgYnJvd3NlciBpcyBhc2tlZFxuICAgICAgLy8gdG8gYnJpbmcgdGhhdCB3aW5kb3cgdG8gdGhlIGZyb250OiBhIGxpc3QgdXBkYXRpbmcgaW4gdGhlIGFwcGxpY2F0aW9uIHdpbmRvdyB3aGlsZSB0aGVcbiAgICAgIC8vIHVzZXIgcmVhZHMgYSBzdWItd2luZG93IHdvdWxkIGtlZXAgc25hdGNoaW5nIHRoZSBzdWItd2luZG93J3MgZm9jdXMgYXdheS4gV2hpY2ggbWVtYmVyXG4gICAgICAvLyB0aGlzIHdpbmRvdyBpcyBvbiBpcyBzdGlsbCByZW1lbWJlcmVkLCBzbyBpdCBsYW5kcyB0aGVyZSB3aGVuIHRoZSB1c2VyIGNvbWVzIGJhY2suXG4gICAgICBpZiAoIWRvY3VtZW50Lmhhc0ZvY3VzKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250ZXh0SW5Gb2N1cyA9IG5hdmlnYXRpb24uY29udGV4dEluRm9jdXMoKTtcblxuICAgICAgaWYgKCFjb250ZXh0SW5Gb2N1cykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVudHJpZXMgPSBuYXZpZ2F0aW9uLnNvcnRlZEVudHJpZXNPZihjb250ZXh0SW5Gb2N1cyk7XG5cbiAgICAgIC8vIFRoZSBtZW1iZXIgdGhhdCBjb250ZXh0IHdhcyBsZWZ0IG9uLCBzbyBzdGVwcGluZyBpbnRvIHNvbWV0aGluZyBhbmQgYmFjayBvdXQgb2YgaXQgbGFuZHNcbiAgICAgIC8vIHdoZXJlIGl0IHN0YXJ0ZWQuIE9ubHkgdGhlIGxvd2VzdCBvcmRlciBudW1iZXIgd2hlbiBpdCB3YXMgbmV2ZXIgbGVmdCBhbnl3aGVyZTogdGhhdCBpcyBhXG4gICAgICAvLyBzZXQgb2YgbWVtYmVycyBhcHBlYXJpbmcgcmF0aGVyIHRoYW4gb25lIGJlaW5nIHJldHVybmVkIHRvIFx1MjAxNCBhbmQgYSBzZXQgdGhhdCBsZWF2ZXMgZm9jdXNcbiAgICAgIC8vIHdoZXJlIGl0IGlzIGFzIGl0IGFwcGVhcnMgaGFzIG5vdGhpbmcgdG8gb2ZmZXIgdW50aWwgb25lIG9mIGl0cyBtZW1iZXJzIGhhcyBoYWQgZm9jdXMuXG4gICAgICBjb25zdCBpdGVtSW5Gb2N1cyA9IG5hdmlnYXRpb24uaXRlbUluRm9jdXNPZihjb250ZXh0SW5Gb2N1cyk7XG4gICAgICBjb25zdCB0b0ZvY3VzID1cbiAgICAgICAgZW50cmllcy5maW5kKChjYW5kaWRhdGUpID0+IGNhbmRpZGF0ZS5pdGVtID09PSBpdGVtSW5Gb2N1cykgPz9cbiAgICAgICAgKGNvbnRleHRJbkZvY3VzLnRha2VzRm9jdXNBc0l0QXBwZWFycyA/IGVudHJpZXNbMF0gOiB1bmRlZmluZWQpO1xuXG4gICAgICBpZiAodG9Gb2N1cz8uZWxlbWVudC5pc0Nvbm5lY3RlZCAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSB0b0ZvY3VzLmVsZW1lbnQpIHtcbiAgICAgICAgdG9Gb2N1cy5lbGVtZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIERlZmVycmVkIHNvIHRoYXQgZXZlcnl0aGluZyBhcHBlYXJpbmcgdG9nZXRoZXIgaGFzIHJlZ2lzdGVyZWQsIGFuZCB0aGUgbG93ZXN0IG9yZGVyIG51bWJlciBvZlxuICAgIC8vIHRoZSB3aG9sZSBzZXQgd2lucyByYXRoZXIgdGhhbiB3aGljaGV2ZXIgYXBwZWFyZWQgZmlyc3QuXG4gICAgdm9pZCBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZvY3VzV2hhdFNob3VsZEhhdmVGb2N1cyk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbmF2aWdhdGlvbi5kZXJlZ2lzdGVyKGNvbnRleHQsIGVudHJ5KTtcblxuICAgICAgdm9pZCBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZvY3VzV2hhdFNob3VsZEhhdmVGb2N1cyk7XG4gICAgfTtcbiAgfSwgW25hdmlnYXRpb24sIGNvbnRleHQsIGl0ZW0sIG9yZGVyTnVtYmVyLCBlbGVtZW50XSk7XG5cbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgcmV0dXJuIG5vS2V5Ym9hcmROYXZpZ2F0aW9uO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBXaGljaCBtZW1iZXIgdGhlIGNvbnRleHQgaXMgb24sIHJlbWVtYmVyZWQgZm9yIGFzIGxvbmcgYXMgaXRzIG1lbWJlcnMgYXJlIHRoZXJlOiBpdCBpcyB3aGF0XG4gICAgLy8gZm9jdXMgcmV0dXJucyB0byB3aGVuIHNvbWV0aGluZyB0aGF0IHRvb2sgZm9jdXMgb3ZlciBnb2VzIGF3YXkgYWdhaW4uXG4gICAgb25Gb2N1czogKCkgPT4gbmF2aWdhdGlvbi5ub3RlSXRlbUluRm9jdXMoY29udGV4dCwgaXRlbSksXG5cbiAgICAvLyBXaGVyZSB0aGUgcG9pbnRlciBnb2VzLCBmb2N1cyBnb2VzOiB0aGUgbWVtYmVyIHVuZGVyIGl0IGJlY29tZXMgdGhlIGZvY3VzZWQgb25lLCBzbyBhcnJvd2luZ1xuICAgIC8vIG9uIGZyb20gdGhlcmUgY29udGludWVzIGZyb20gd2hhdCB0aGUgdXNlciBpcyBsb29raW5nIGF0IHJhdGhlciB0aGFuIGZyb20gd2hlcmV2ZXIgdGhlXG4gICAgLy8ga2V5Ym9hcmQgd2FzIGxlZnQuIFdoaWNoZXZlciBvZiB0aGUgdHdvIG1vdmVkIGxhc3QgZGVjaWRlcywgd2hpY2ggaXMgd2h5IHRoaXMgYW5zd2VycyB0byB0aGVcbiAgICAvLyBwb2ludGVyIG1vdmluZyBhcyB3ZWxsIGFzIHRvIGl0IGFycml2aW5nIFx1MjAxNCB0aGUga2V5Ym9hcmQgbWF5IGhhdmUgdGFrZW4gZm9jdXMgZWxzZXdoZXJlIHdoaWxlXG4gICAgLy8gdGhlIHBvaW50ZXIgcmVzdGVkIHdoZXJlIGl0IHdhcywgYW5kIG1vdmluZyBpdCBhdCBhbGwgaXMgdGhlIHVzZXIgcG9pbnRpbmcgYWdhaW4uXG4gICAgLy9cbiAgICAvLyBUaGUgZWxlbWVudCBjb21lcyBmcm9tIHRoZSBldmVudCByYXRoZXIgdGhhbiBmcm9tIHRoZSByZW5kZXIgdGhpcyBoYW5kbGVyIHdhcyBjcmVhdGVkIGluOlxuICAgIC8vIHRoZSBoYW5kbGVyIHRoZSBET00gZW5kcyB1cCB3aXRoIGlzIHRoZSBvbmUgZnJvbSB0aGUgZmlyc3QgcmVuZGVyLCB3aGVuIHRoZXJlIHdhcyBubyBlbGVtZW50XG4gICAgLy8geWV0IFx1MjAxNCBSZWFjdCBoYXMgbm8gcmVhc29uIHRvIHJlbmRlciB0aGUgZWxlbWVudCBhZ2FpbiBmb3IgYSB3cmFwcGVyJ3Mgb3duIHN0YXRlLlxuICAgIGZvY3VzV2hhdFRoZVBvaW50ZXJJc09uOiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGhvdmVyZWQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gaG92ZXJlZCkge1xuICAgICAgICBob3ZlcmVkLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIG9uS2V5RG93bjogKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBzdGVwID0gc3RlcE9mKGV2ZW50LmtleSwgY29udGV4dC5vcmllbnRhdGlvbik7XG5cbiAgICAgIGlmIChzdGVwID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlbnRyaWVzID0gbmF2aWdhdGlvbi5zb3J0ZWRFbnRyaWVzT2YoY29udGV4dCk7XG5cbiAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGVudHJpZXMuZmluZEluZGV4KChjYW5kaWRhdGUpID0+IGNhbmRpZGF0ZS5pdGVtID09PSBpdGVtKTtcblxuICAgICAgY29uc3QgbmV4dEluZGV4ID1cbiAgICAgICAgc3RlcCA9PT0gXCJmaXJzdFwiXG4gICAgICAgICAgPyAwXG4gICAgICAgICAgOiBzdGVwID09PSBcImxhc3RcIlxuICAgICAgICAgICAgPyBlbnRyaWVzLmxlbmd0aCAtIDFcbiAgICAgICAgICAgIDogKGN1cnJlbnRJbmRleCArIHN0ZXAgKyBlbnRyaWVzLmxlbmd0aCkgJSBlbnRyaWVzLmxlbmd0aDtcblxuICAgICAgY29uc3QgbmV4dCA9IGVudHJpZXNbbmV4dEluZGV4XTtcblxuICAgICAgaWYgKG5leHQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgbmV4dC5lbGVtZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn07XG5cbmNvbnN0IHN0ZXBPZiA9IChrZXk6IHN0cmluZywgb3JpZW50YXRpb246IEtleWJvYXJkTmF2aWdhdGlvbk9yaWVudGF0aW9uKSA9PiB7XG4gIHN3aXRjaCAoa2V5KSB7XG4gICAgY2FzZSBcIkFycm93RG93blwiOlxuICAgICAgcmV0dXJuIG9yaWVudGF0aW9uID09PSBcImhvcml6b250YWxcIiA/IHVuZGVmaW5lZCA6IDE7XG4gICAgY2FzZSBcIkFycm93UmlnaHRcIjpcbiAgICAgIHJldHVybiBvcmllbnRhdGlvbiA9PT0gXCJ2ZXJ0aWNhbFwiID8gdW5kZWZpbmVkIDogMTtcbiAgICBjYXNlIFwiQXJyb3dVcFwiOlxuICAgICAgcmV0dXJuIG9yaWVudGF0aW9uID09PSBcImhvcml6b250YWxcIiA/IHVuZGVmaW5lZCA6IC0xO1xuICAgIGNhc2UgXCJBcnJvd0xlZnRcIjpcbiAgICAgIHJldHVybiBvcmllbnRhdGlvbiA9PT0gXCJ2ZXJ0aWNhbFwiID8gdW5kZWZpbmVkIDogLTE7XG4gICAgY2FzZSBcIkhvbWVcIjpcbiAgICAgIHJldHVybiBcImZpcnN0XCIgYXMgY29uc3Q7XG4gICAgY2FzZSBcIkVuZFwiOlxuICAgICAgcmV0dXJuIFwibGFzdFwiIGFzIGNvbnN0O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59O1xuIiwgImltcG9ydCB7IHJ1bkluQWN0aW9uLCB0eXBlIElPYnNlcnZhYmxlVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBNdXRhYmxlUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IEZvY3VzYWJsZUV2ZW50IH0gZnJvbSBcIi4vX3NoYXJlZC9mb2N1c2FibGUtZXZlbnRcIjtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUZvY3VzRm9yID1cbiAgPEZvY3VzYWJsZUl0ZW0+KFxuICAgIHN0YXRlOiBJT2JzZXJ2YWJsZVZhbHVlPEZvY3VzYWJsZUl0ZW0gfCB1bmRlZmluZWQ+LFxuICAgIGZvY3VzYWJsZUl0ZW06IEZvY3VzYWJsZUl0ZW0sXG4gICAgZm9jdXNhYmxlQ29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxGb2N1c2FibGVJdGVtPixcbiAgICBmb2N1c2VkUmVmOiBNdXRhYmxlUmVmT2JqZWN0PGJvb2xlYW4+LFxuICApID0+XG4gIDxUPihldmVudDogRm9jdXNhYmxlRXZlbnQ8VD4pID0+IHtcbiAgICBjb25zdCBuYXRpdmVFdmVudCA9IGV2ZW50Lm5hdGl2ZUV2ZW50O1xuXG4gICAgbmF0aXZlRXZlbnQuYWxyZWFkeVByb2Nlc3NlZEZvY3VzYWJsZUNvbnRleHRzID8/PSBuZXcgU2V0KCk7XG5cbiAgICBpZiAobmF0aXZlRXZlbnQuYWxyZWFkeVByb2Nlc3NlZEZvY3VzYWJsZUNvbnRleHRzLmhhcyhmb2N1c2FibGVDb250ZXh0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG5hdGl2ZUV2ZW50LmFscmVhZHlQcm9jZXNzZWRGb2N1c2FibGVDb250ZXh0cy5hZGQoZm9jdXNhYmxlQ29udGV4dCk7XG5cbiAgICBmb2N1c2VkUmVmLmN1cnJlbnQgPSB0cnVlO1xuXG4gICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgc3RhdGUuc2V0KGZvY3VzYWJsZUl0ZW0pO1xuICAgIH0pO1xuICB9O1xuIiwgImltcG9ydCB0eXBlIHsgSU9ic2VydmFibGVWYWx1ZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyBydW5JbkFjdGlvbiB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgdHlwZSB7IEFueUZvY3VzYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEZvY3VzYWJsZUV2ZW50IH0gZnJvbSBcIi4vX3NoYXJlZC9mb2N1c2FibGUtZXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgTXV0YWJsZVJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlQmx1ckZvciA9XG4gIDxUPihcbiAgICBmb2N1c2FibGVDb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PFQ+LFxuICAgIHN0YXRlOiBJT2JzZXJ2YWJsZVZhbHVlPFQgfCB1bmRlZmluZWQ+LFxuICAgIGZvY3VzZWRSZWY6IE11dGFibGVSZWZPYmplY3Q8Ym9vbGVhbj4sXG4gICkgPT5cbiAgPFQ+KGV2ZW50OiBGb2N1c2FibGVFdmVudDxUPikgPT4ge1xuICAgIGNvbnN0IG5hdGl2ZUV2ZW50ID0gZXZlbnQubmF0aXZlRXZlbnQ7XG5cbiAgICBpZiAobmF0aXZlRXZlbnQuYWxyZWFkeVByb2Nlc3NlZEZvY3VzYWJsZUNvbnRleHRzPy5oYXMoZm9jdXNhYmxlQ29udGV4dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb2N1c2VkUmVmLmN1cnJlbnQgPSBmYWxzZTtcblxuICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgIHN0YXRlLnNldCh1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9O1xuIiwgImltcG9ydCB0eXBlIHsgTXV0YWJsZVJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBmb2N1c2FibGVIdG1sRWxlbWVudFJlZlNldEluamVjdGFibGUgfSBmcm9tIFwiLi4vX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgdHlwZSB7IEFueUZvY3VzYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5cbmV4cG9ydCBjb25zdCB1c2VQcm9ncmFtbWF0aWNGb2N1c2luZyA9IDxUPihcbiAgZm9jdXNhYmxlQ29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxUPixcbiAgZm9jdXNhYmxlSXRlbTogVCxcbiAgaHRtbEVsZW1lbnRSZWY6IE11dGFibGVSZWZPYmplY3Q8SFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ+LFxuKSA9PiB7XG4gIGNvbnN0IGh0bWxFbGVtZW50c0J5Rm9jdXNhYmxlTWFwID0gdXNlU3luY0luamVjdChcbiAgICBmb2N1c2FibGVIdG1sRWxlbWVudFJlZlNldEluamVjdGFibGUsXG4gICAgZm9jdXNhYmxlQ29udGV4dCxcbiAgICBmb2N1c2FibGVJdGVtLFxuICApO1xuXG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IHJlbW92ZSB3aGVuIHBvc3NpYmxlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaHRtbEVsZW1lbnRzQnlGb2N1c2FibGVNYXAuYWRkKGh0bWxFbGVtZW50UmVmKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBodG1sRWxlbWVudHNCeUZvY3VzYWJsZU1hcC5kZWxldGUoaHRtbEVsZW1lbnRSZWYpO1xuICAgIH07XG4gIH0sIFtodG1sRWxlbWVudHNCeUZvY3VzYWJsZU1hcCwgZm9jdXNhYmxlSXRlbSwgaHRtbEVsZW1lbnRSZWZdKTtcbn07XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IGZsZXhQbHVnaW4gfSBmcm9tIFwiLi4vZmxleC9mbGV4XCI7XG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgdHlwZSB7IG92ZXJmbG93UGx1Z2luIH0gZnJvbSBcIi4uL292ZXJmbG93L292ZXJmbG93XCI7XG5cbmV4cG9ydCB0eXBlIEFyZWFQbHVnaW5Qcm9wcyA9IHsgJGFyZWE/OiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBhcmVhUGx1Z2luID0gZ2V0UGx1Z2luPEFyZWFQbHVnaW5Qcm9wcywgW3R5cGVvZiBmbGV4UGx1Z2luLCB0eXBlb2Ygb3ZlcmZsb3dQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgZXhwbGljaXRGbGV4UHJvcHMgPSBpc09iamVjdChwcm9wcy4kZmxleCkgPyBwcm9wcy4kZmxleCA6IHt9O1xuXG4gIHJldHVybiB7XG4gICAgJGFyZWE6IHVuZGVmaW5lZCxcblxuICAgICRmbGV4OiBwcm9wcy4kYXJlYVxuICAgICAgPyB7XG4gICAgICAgICAgdmVydGljYWxBbGlnbjogXCJzdHJldGNoXCIsXG4gICAgICAgICAgaG9yaXpvbnRhbEFsaWduOiBcInN0cmV0Y2hcIixcbiAgICAgICAgICAuLi5leHBsaWNpdEZsZXhQcm9wcyxcbiAgICAgICAgfVxuICAgICAgOiBwcm9wcy4kZmxleCxcblxuICAgICRvdmVyZmxvdzogcHJvcHMuJG92ZXJmbG93ID8/IChwcm9wcy4kYXJlYSA/IFwiaGlkZGVuXCIgOiB1bmRlZmluZWQpLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IGZsZXhDaGlsZFBsdWdpbiB9IGZyb20gXCIuLi9mbGV4LWNoaWxkL2ZsZXgtY2hpbGRcIjtcblxuZXhwb3J0IHR5cGUgQXJlYUNvbnRlbnRQbHVnaW5Qcm9wcyA9IHsgJGFyZWFDb250ZW50PzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgYXJlYUNvbnRlbnRQbHVnaW4gPSBnZXRQbHVnaW48QXJlYUNvbnRlbnRQbHVnaW5Qcm9wcywgW3R5cGVvZiBmbGV4Q2hpbGRQbHVnaW5dPigocHJvcHMpID0+ICh7XG4gICRhcmVhQ29udGVudDogdW5kZWZpbmVkLFxuICAkZmxleENoaWxkOiBwcm9wcy4kYXJlYUNvbnRlbnQgPyB0cnVlIDogcHJvcHMuJGZsZXhDaGlsZCxcbn0pKTtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgVFNoaXJ0U2l6ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5pbXBvcnQgdHlwZSB7IHdpZHRoUGx1Z2luIH0gZnJvbSBcIi4uL3dpZHRoL3dpZHRoXCI7XG5pbXBvcnQgdHlwZSB7IGhlaWdodFBsdWdpbiB9IGZyb20gXCIuLi9oZWlnaHQvaGVpZ2h0XCI7XG5cbmV4cG9ydCB0eXBlICRTaXplUHJvcHMgPSB7XG4gIHNpemU/OiBUU2hpcnRTaXplIHwgXCJmdWxsXCIgfCBcImF1dG9cIjtcbiAgbWluPzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiO1xuICBtYXg/OiBUU2hpcnRTaXplIHwgXCJmdWxsXCI7XG59O1xuXG5leHBvcnQgdHlwZSBTaXplUGx1Z2luUHJvcHMgPSB7ICRzaXplPzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiIHwgJFNpemVQcm9wcyB9O1xuXG5leHBvcnQgY29uc3Qgc2l6ZVBsdWdpbiA9IGdldFBsdWdpbjxTaXplUGx1Z2luUHJvcHMsIFt0eXBlb2Ygd2lkdGhQbHVnaW4sIHR5cGVvZiBoZWlnaHRQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkc2l6ZSB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkc2l6ZSkge1xuICAgIHJldHVybiB7ICRzaXplOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IHsgc2l6ZSwgbWluLCBtYXggfSA9IHR5cGVvZiAkc2l6ZSA9PT0gXCJzdHJpbmdcIiA/IHsgc2l6ZTogJHNpemUgfSA6ICRzaXplO1xuXG4gIHJldHVybiB7XG4gICAgJGhlaWdodDogeyBoZWlnaHQ6IHNpemUsIG1pbiwgbWF4IH0sXG4gICAgJHdpZHRoOiB7IHdpZHRoOiBzaXplLCBtaW4sIG1heCB9LFxuICAgICRzaXplOiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiYWxpYXNcIjogXCJjdXJzb3ItbW9kdWxlX19hbGlhc19fXzBpeUgyXCIsXG4gIFwiYWxsLXNjcm9sbFwiOiBcImN1cnNvci1tb2R1bGVfX2FsbC1zY3JvbGxfX19VOWhvOFwiLFxuICBcImNlbGxcIjogXCJjdXJzb3ItbW9kdWxlX19jZWxsX19fNVdPMkZcIixcbiAgXCJjb2x1bW4tcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fY29sdW1uLXJlc2l6ZV9fX3BMcTNzXCIsXG4gIFwiY29udGV4dC1tZW51XCI6IFwiY3Vyc29yLW1vZHVsZV9fY29udGV4dC1tZW51X19fSXFwNTZcIixcbiAgXCJjb3B5XCI6IFwiY3Vyc29yLW1vZHVsZV9fY29weV9fX1hVN3lMXCIsXG4gIFwiY3Jvc3NoYWlyXCI6IFwiY3Vyc29yLW1vZHVsZV9fY3Jvc3NoYWlyX19fMThheWtcIixcbiAgXCJkZWZhdWx0XCI6IFwiY3Vyc29yLW1vZHVsZV9fZGVmYXVsdF9fX3ZELThUXCIsXG4gIFwiZWFzdC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19lYXN0LXJlc2l6ZV9fX1M0SEY1XCIsXG4gIFwiZWFzdC1hbmQtd2VzdC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19lYXN0LWFuZC13ZXN0LXJlc2l6ZV9fX3UtSmYtXCIsXG4gIFwiZ3JhYlwiOiBcImN1cnNvci1tb2R1bGVfX2dyYWJfX19VdkFGN1wiLFxuICBcImdyYWJiaW5nXCI6IFwiY3Vyc29yLW1vZHVsZV9fZ3JhYmJpbmdfX19NTWl2WFwiLFxuICBcImhlbHBcIjogXCJjdXJzb3ItbW9kdWxlX19oZWxwX19faUI4RzRcIixcbiAgXCJtb3ZlXCI6IFwiY3Vyc29yLW1vZHVsZV9fbW92ZV9fX3lwZC1QXCIsXG4gIFwibm9ydGgtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGgtcmVzaXplX19fN05raFZcIixcbiAgXCJub3J0aGVhc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGhlYXN0LXJlc2l6ZV9fX000TUl6XCIsXG4gIFwibm9ydGhlYXN0LWFuZC1zb3V0aHdlc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGhlYXN0LWFuZC1zb3V0aHdlc3QtcmVzaXplX19fei0xZHFcIixcbiAgXCJuby1kcm9wXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm8tZHJvcF9fX1dUMXQ5XCIsXG4gIFwibm9uZVwiOiBcImN1cnNvci1tb2R1bGVfX25vbmVfX19FaTlzelwiLFxuICBcIm5vdC1hbGxvd2VkXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm90LWFsbG93ZWRfX185dUZMdVwiLFxuICBcIm5vcnRoLWFuZC1zb3V0aC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19ub3J0aC1hbmQtc291dGgtcmVzaXplX19fUUc1QU5cIixcbiAgXCJub3J0aHdlc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGh3ZXN0LXJlc2l6ZV9fX2NrQ29oXCIsXG4gIFwibm9ydGh3ZXN0LWFuZC1zb3V0aGVhc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGh3ZXN0LWFuZC1zb3V0aGVhc3QtcmVzaXplX19fbmo0VlNcIixcbiAgXCJwb2ludGVyXCI6IFwiY3Vyc29yLW1vZHVsZV9fcG9pbnRlcl9fX0ZpZGZLXCIsXG4gIFwicHJvZ3Jlc3NcIjogXCJjdXJzb3ItbW9kdWxlX19wcm9ncmVzc19fX0lnRXh5XCIsXG4gIFwicm93LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX3Jvdy1yZXNpemVfX18wU3NlNlwiLFxuICBcInNvdXRoLXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX3NvdXRoLXJlc2l6ZV9fXzRGZW5TXCIsXG4gIFwic291dGhlYXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX3NvdXRoZWFzdC1yZXNpemVfX193OGhHcVwiLFxuICBcInNvdXRod2VzdC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19zb3V0aHdlc3QtcmVzaXplX19fNlV2NEdcIixcbiAgXCJ0ZXh0XCI6IFwiY3Vyc29yLW1vZHVsZV9fdGV4dF9fX3RxLUF3XCIsXG4gIFwidmVydGljYWwtdGV4dFwiOiBcImN1cnNvci1tb2R1bGVfX3ZlcnRpY2FsLXRleHRfX18zT2F6RVwiLFxuICBcIndlc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fd2VzdC1yZXNpemVfX19iclc1NlwiLFxuICBcIndhaXRcIjogXCJjdXJzb3ItbW9kdWxlX193YWl0X19fUXRYbEdcIixcbiAgXCJ6b29tLWluXCI6IFwiY3Vyc29yLW1vZHVsZV9fem9vbS1pbl9fX3pFREhRXCIsXG4gIFwiem9vbS1vdXRcIjogXCJjdXJzb3ItbW9kdWxlX196b29tLW91dF9fX3FicW82XCJcbn07IiwgImltcG9ydCByYXdTdHlsZXMgZnJvbSBcIi4vY3Vyc29yLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgc2FuaXRpemVTY3NzTW9kdWxlcyB9IGZyb20gXCJAazhzbGVucy90ZXN0LXV0aWxzXCI7XG5cbmNvbnN0IHN0eWxlcyA9IHNhbml0aXplU2Nzc01vZHVsZXMocmF3U3R5bGVzKTtcblxuZXhwb3J0IHR5cGUgJEN1cnNvclByb3BzID1cbiAgfCBcImFsaWFzXCJcbiAgfCBcImFsbC1zY3JvbGxcIlxuICB8IFwiY2VsbFwiXG4gIHwgXCJjb2x1bW4tcmVzaXplXCJcbiAgfCBcImNvbnRleHQtbWVudVwiXG4gIHwgXCJjb3B5XCJcbiAgfCBcImNyb3NzaGFpclwiXG4gIHwgXCJkZWZhdWx0XCJcbiAgfCBcImVhc3QtcmVzaXplXCJcbiAgfCBcImVhc3QtYW5kLXdlc3QtcmVzaXplXCJcbiAgfCBcImdyYWJcIlxuICB8IFwiZ3JhYmJpbmdcIlxuICB8IFwiaGVscFwiXG4gIHwgXCJtb3ZlXCJcbiAgfCBcIm5vcnRoLXJlc2l6ZVwiXG4gIHwgXCJub3J0aGVhc3QtcmVzaXplXCJcbiAgfCBcIm5vcnRoZWFzdC1hbmQtc291dGh3ZXN0LXJlc2l6ZVwiXG4gIHwgXCJuby1kcm9wXCJcbiAgfCBcIm5vbmVcIlxuICB8IFwibm90LWFsbG93ZWRcIlxuICB8IFwibm9ydGgtYW5kLXNvdXRoLXJlc2l6ZVwiXG4gIHwgXCJub3J0aHdlc3QtcmVzaXplXCJcbiAgfCBcIm5vcnRod2VzdC1hbmQtc291dGhlYXN0LXJlc2l6ZVwiXG4gIHwgXCJwb2ludGVyXCJcbiAgfCBcInByb2dyZXNzXCJcbiAgfCBcInJvdy1yZXNpemVcIlxuICB8IFwic291dGgtcmVzaXplXCJcbiAgfCBcInNvdXRoZWFzdC1yZXNpemVcIlxuICB8IFwic291dGh3ZXN0LXJlc2l6ZVwiXG4gIHwgXCJ0ZXh0XCJcbiAgfCBcInZlcnRpY2FsLXRleHRcIlxuICB8IFwid2VzdC1yZXNpemVcIlxuICB8IFwid2FpdFwiXG4gIHwgXCJ6b29tLWluXCJcbiAgfCBcInpvb20tb3V0XCI7XG5cbmV4cG9ydCB0eXBlIEN1cnNvclBsdWdpblByb3BzID0ge1xuICAkY3Vyc29yPzogJEN1cnNvclByb3BzO1xufTtcblxuZXhwb3J0IGNvbnN0IGN1cnNvclBsdWdpbiA9IGdldFBsdWdpbjxDdXJzb3JQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkY3Vyc29yLCAkY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICBpZiAoISRjdXJzb3IpIHtcbiAgICByZXR1cm4geyAkY3Vyc29yOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJGN1cnNvcjogdW5kZWZpbmVkLFxuICAgICRjbGFzc05hbWU6IFskY2xhc3NOYW1lLCBzdHlsZXNbJGN1cnNvcl1dLFxuICAgIFwiZGF0YS1jdXJzb3ItdGVzdFwiOiAkY3Vyc29yLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBvbk1pZGRsZUNsaWNrLCBvblRyaWdnZXIgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IGVuYWJsZWRQbHVnaW4gfSBmcm9tIFwiLi4vZW5hYmxlZC9lbmFibGVkXCI7XG5pbXBvcnQgdHlwZSB7ICRDdXJzb3JQcm9wcywgY3Vyc29yUGx1Z2luIH0gZnJvbSBcIi4uL2N1cnNvci9jdXJzb3JcIjtcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB7IG9uUmlnaHRUcmlnZ2VySW5qZWN0YWJsZSB9IGZyb20gXCIuL29uLXJpZ2h0LXRyaWdnZXIuaW5qZWN0YWJsZVwiO1xuXG5leHBvcnQgdHlwZSBQb3NpdGlvbjJkID0ge1xuICByZWFkb25seSB4OiBudW1iZXI7XG4gIHJlYWRvbmx5IHk6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIENsaWNrSGFuZGxlckRldGFpbHMgPSB7XG4gIHJlYWRvbmx5IGN1cnNvcjogUG9zaXRpb24yZDtcbiAgcmVhZG9ubHkgY2F1c2U6IFwiY2xpY2tcIiB8IFwia2V5Ym9hcmRcIjtcbn07XG5cbmV4cG9ydCB0eXBlIENsaWNrSGFuZGxlciA9ICgoZGV0YWlsczogQ2xpY2tIYW5kbGVyRGV0YWlscykgPT4gdm9pZCkgfCAoKGRldGFpbHM6IENsaWNrSGFuZGxlckRldGFpbHMpID0+IFByb21pc2U8dm9pZD4pO1xuXG5leHBvcnQgdHlwZSBDbGlja1BsdWdpblByb3BzID0ge1xuICAkb25DbGljaz86IENsaWNrSGFuZGxlcjtcbiAgJG9uT25seU1vdXNlQ2xpY2s/OiBDbGlja0hhbmRsZXI7XG4gICRvbkRvdWJsZUNsaWNrPzogQ2xpY2tIYW5kbGVyO1xuICAkb25SaWdodENsaWNrPzogQ2xpY2tIYW5kbGVyO1xuICAkb25NaWRkbGVDbGljaz86IENsaWNrSGFuZGxlcjtcbiAgdGFiSW5kZXg/OiBudW1iZXI7XG59O1xuXG5jb25zdCBjbGlja1VzZWQgPSBTeW1ib2woKTtcblxuZXhwb3J0IGNvbnN0IGNsaWNrYWJsZVBsdWdpbiA9IGdldFBsdWdpbjxDbGlja1BsdWdpblByb3BzLCBbdHlwZW9mIGVuYWJsZWRQbHVnaW4sIHR5cGVvZiBjdXJzb3JQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgLy8gdHlwaW5nIHJlcXVpcmVkIGR1ZSB0byBsYWNrIG9mIGdvb2QgdHlwaW5nIG9mIHByZS1wcm9jZXNzZWQgZGVwZW5kZW50IHBsdWdpbnNcbiAgY29uc3Qge1xuICAgICRjdXJzb3IsXG4gICAgJG9uQ2xpY2ssXG4gICAgJG9uT25seU1vdXNlQ2xpY2ssXG4gICAgJG9uTWlkZGxlQ2xpY2ssXG4gICAgJG9uUmlnaHRDbGljayxcbiAgICAkb25Eb3VibGVDbGljayxcbiAgICBvbkRvdWJsZUNsaWNrLFxuICAgIG9uQXV4Q2xpY2ssXG4gICAgb25DbGljayxcbiAgICBvbkNvbnRleHRNZW51LFxuICAgIG9uS2V5RG93bixcbiAgICB0YWJJbmRleCxcbiAgICBkaXNhYmxlZCxcbiAgICByb2xlLFxuICB9ID0gcHJvcHMgYXMgdHlwZW9mIHByb3BzICYgUmVhY3QuSFRNTFByb3BzPEhUTUxFbGVtZW50PjtcbiAgY29uc3QgW3BlbmRpbmcsIHNldFBlbmRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBvblJpZ2h0VHJpZ2dlciA9IHVzZVN5bmNJbmplY3Qob25SaWdodFRyaWdnZXJJbmplY3RhYmxlKTtcbiAgY29uc3Qgb25Nb3VzZUNsaWNrID0gJG9uQ2xpY2sgPz8gJG9uT25seU1vdXNlQ2xpY2s7XG5cbiAgaWYgKCRvbkNsaWNrICYmICRvbk9ubHlNb3VzZUNsaWNrKSB7XG4gICAgY29uc29sZS53YXJuKFwiQ2Fubm90IGhhdmUgYm90aCAkb25DbGljayBhbmQgJG9uTW91c2VDbGlja09ubHkgb24gdGhlIHNhbWUgY29tcG9uZW50XCIpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkb25DbGljazogdW5kZWZpbmVkLFxuICAgICRvbk1pZGRsZUNsaWNrOiB1bmRlZmluZWQsXG4gICAgJG9uUmlnaHRDbGljazogdW5kZWZpbmVkLFxuICAgICRvbkRvdWJsZUNsaWNrOiB1bmRlZmluZWQsXG4gICAgJG9uT25seU1vdXNlQ2xpY2s6IHVuZGVmaW5lZCxcbiAgICB0YWJJbmRleDogdGFiSW5kZXggPz8gKG9uTW91c2VDbGljayB8fCAkb25SaWdodENsaWNrIHx8ICRvbkRvdWJsZUNsaWNrID8gMCA6IHVuZGVmaW5lZCksXG4gICAgJGN1cnNvcjogZ2V0Q3Vyc29yUHJvcHMoJGN1cnNvciwgZGlzYWJsZWQsIHBlbmRpbmcsIG9uTW91c2VDbGljaywgJG9uUmlnaHRDbGljayksXG4gICAgcm9sZTogcm9sZSA/PyAob25Nb3VzZUNsaWNrID8gXCJidXR0b25cIiA6IHJvbGUpLFxuICAgIG9uQ2xpY2s6IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIG9uQ2xpY2s/LihldmVudCk7XG5cbiAgICAgIGlmICghZGlzYWJsZWQgJiYgb25Nb3VzZUNsaWNrICYmICEoY2xpY2tVc2VkIGluIGV2ZW50KSkge1xuICAgICAgICBPYmplY3QuYXNzaWduKGV2ZW50LCB7IFtjbGlja1VzZWRdOiB0cnVlIH0pO1xuXG4gICAgICAgIGNvbnN0IG1heWJlUHJvbWlzZSA9IG9uTW91c2VDbGljayh0b0RldGFpbHMoZXZlbnQpKTtcblxuICAgICAgICBpZiAoaXNQcm9taXNlTGlrZShtYXliZVByb21pc2UpKSB7XG4gICAgICAgICAgc2V0UGVuZGluZyh0cnVlKTtcbiAgICAgICAgICBtYXliZVByb21pc2UudGhlbigoKSA9PiBzZXRQZW5kaW5nKGZhbHNlKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIG9uRG91YmxlQ2xpY2s6IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIG9uRG91YmxlQ2xpY2s/LihldmVudCk7XG4gICAgICAkb25Eb3VibGVDbGljaz8uKHRvRGV0YWlscyhldmVudCkpO1xuICAgIH0sXG4gICAgb25Db250ZXh0TWVudTogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgb25Db250ZXh0TWVudT8uKGV2ZW50KTtcbiAgICAgICRvblJpZ2h0Q2xpY2s/Lih0b0RldGFpbHMoZXZlbnQpKTtcbiAgICB9LFxuICAgIG9uQXV4Q2xpY2s6IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIG9uQXV4Q2xpY2s/LihldmVudCk7XG4gICAgICBvbk1pZGRsZUNsaWNrKGV2ZW50LCAoKSA9PiAkb25NaWRkbGVDbGljaz8uKHRvRGV0YWlscyhldmVudCkpKTtcbiAgICB9LFxuICAgIG9uS2V5RG93bjogKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgb25LZXlEb3duPy4oZXZlbnQpO1xuXG4gICAgICBpZiAoJG9uQ2xpY2spIHtcbiAgICAgICAgb25UcmlnZ2VyKGV2ZW50LCAoKSA9PiB7XG4gICAgICAgICAgaWYgKCFkaXNhYmxlZCAmJiAhKGNsaWNrVXNlZCBpbiBldmVudCkpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZXZlbnQsIHsgW2NsaWNrVXNlZF06IHRydWUgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG1heWJlUHJvbWlzZSA9ICRvbkNsaWNrKHRvRGV0YWlscyhldmVudCkpO1xuXG4gICAgICAgICAgICBpZiAoaXNQcm9taXNlTGlrZShtYXliZVByb21pc2UpKSB7XG4gICAgICAgICAgICAgIHNldFBlbmRpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgIG1heWJlUHJvbWlzZS50aGVuKCgpID0+IHNldFBlbmRpbmcoZmFsc2UpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoJG9uUmlnaHRDbGljaykge1xuICAgICAgICBvblJpZ2h0VHJpZ2dlcihldmVudCwgKCkgPT4ge1xuICAgICAgICAgICRvblJpZ2h0Q2xpY2sodG9EZXRhaWxzKGV2ZW50KSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59KTtcblxuY29uc3QgdG9NaWRkbGUgPSAocmVjdDogRE9NUmVjdCkgPT4gKHtcbiAgeDogcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAvIDIsXG4gIHk6IHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyLFxufSk7XG5cbmNvbnN0IHRvRGV0YWlscyA9IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4gfCBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxFbGVtZW50Pik6IENsaWNrSGFuZGxlckRldGFpbHMgPT4ge1xuICBjb25zdCBjdXJzb3IgPVxuICAgIFwiY2xpZW50WFwiIGluIGV2ZW50XG4gICAgICA/IHtcbiAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgIHk6IGV2ZW50LmNsaWVudFksXG4gICAgICAgIH1cbiAgICAgIDogdG9NaWRkbGUoZXZlbnQuY3VycmVudFRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XG5cbiAgcmV0dXJuIHtcbiAgICBjdXJzb3IsXG4gICAgY2F1c2U6IGV2ZW50LmRldGFpbCA/IFwiY2xpY2tcIiA6IFwia2V5Ym9hcmRcIixcbiAgfTtcbn07XG5cbmNvbnN0IGlzUHJvbWlzZUxpa2UgPSAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBQcm9taXNlPHVua25vd24+ID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiAhIXZhbHVlICYmIFwidGhlblwiIGluIHZhbHVlO1xuXG5jb25zdCBnZXRDdXJzb3JQcm9wcyA9IChcbiAgJGN1cnNvcjogJEN1cnNvclByb3BzIHwgdW5kZWZpbmVkLFxuICBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCxcbiAgcGVuZGluZzogYm9vbGVhbixcbiAgJG9uQ2xpY2s6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkLFxuICAkb25SaWdodENsaWNrOiBGdW5jdGlvbiB8IHVuZGVmaW5lZCxcbik6ICRDdXJzb3JQcm9wcyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICgkY3Vyc29yKSB7XG4gICAgcmV0dXJuICRjdXJzb3I7XG4gIH1cblxuICBpZiAocGVuZGluZykge1xuICAgIHJldHVybiBcInByb2dyZXNzXCI7XG4gIH1cblxuICBpZiAoISRvbkNsaWNrICYmICEkb25SaWdodENsaWNrKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmIChkaXNhYmxlZCkge1xuICAgIHJldHVybiBcIm5vdC1hbGxvd2VkXCI7XG4gIH1cblxuICBpZiAoJG9uQ2xpY2spIHtcbiAgICByZXR1cm4gXCJwb2ludGVyXCI7XG4gIH1cblxuICByZXR1cm4gXCJjb250ZXh0LW1lbnVcIjtcbn07XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiY29udGVudHNcIjogXCJkaXNwbGF5LWNvbnRlbnRzLW1vZHVsZV9fY29udGVudHNfX19tUmVYS1wiXG59OyIsICJpbXBvcnQgcmF3U3R5bGVzIGZyb20gXCIuL2Rpc3BsYXktY29udGVudHMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBzYW5pdGl6ZVNjc3NNb2R1bGVzIH0gZnJvbSBcIkBrOHNsZW5zL3Rlc3QtdXRpbHNcIjtcblxuY29uc3Qgc3R5bGVzID0gc2FuaXRpemVTY3NzTW9kdWxlcyhyYXdTdHlsZXMpO1xuXG5leHBvcnQgdHlwZSBEaXNwbGF5Q29udGVudHNQbHVnaW5Qcm9wcyA9IHtcbiAgJGRpc3BsYXlDb250ZW50cz86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgZGlzcGxheUNvbnRlbnRzUGx1Z2luID0gZ2V0UGx1Z2luPERpc3BsYXlDb250ZW50c1BsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRkaXNwbGF5Q29udGVudHMsICRjbGFzc05hbWUgfSA9IHByb3BzO1xuXG4gIGlmICghJGRpc3BsYXlDb250ZW50cykge1xuICAgIHJldHVybiB7ICRkaXNwbGF5Q29udGVudHM6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkZGlzcGxheUNvbnRlbnRzOiB1bmRlZmluZWQsXG4gICAgJGNsYXNzTmFtZTogWyRjbGFzc05hbWUsIHN0eWxlcy5jb250ZW50c10sXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ24ubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJ0ZXh0LWFsaWduLS1jZW50ZXJcIjogXCJ0ZXh0LWFsaWduLW1vZHVsZV9fdGV4dC1hbGlnbi0tY2VudGVyX19fYkRyUjJcIixcbiAgXCJ0ZXh0LWFsaWduLS1yaWdodFwiOiBcInRleHQtYWxpZ24tbW9kdWxlX190ZXh0LWFsaWduLS1yaWdodF9fX0pWUk1QXCIsXG4gIFwidGV4dC1hbGlnbi0tbGVmdFwiOiBcInRleHQtYWxpZ24tbW9kdWxlX190ZXh0LWFsaWduLS1sZWZ0X19fTExMazZcIlxufTsiLCAiaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi90ZXh0LWFsaWduLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuXG5leHBvcnQgdHlwZSBUZXh0QWxpZ25QbHVnaW5Qcm9wcyA9IHsgJHRleHRBbGlnbj86IFwibGVmdFwiIHwgXCJjZW50ZXJcIiB8IFwicmlnaHRcIiB9O1xuXG5leHBvcnQgY29uc3QgdGV4dEFsaWduUGx1Z2luID0gZ2V0UGx1Z2luPFRleHRBbGlnblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICR0ZXh0QWxpZ24gfSA9IHByb3BzO1xuXG4gIGlmICghJHRleHRBbGlnbikge1xuICAgIHJldHVybiB7ICR0ZXh0QWxpZ246IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHsgJGNsYXNzTmFtZTogW3N0eWxlc1tgdGV4dC1hbGlnbi0tJHskdGV4dEFsaWdufWBdLCBwcm9wcy4kY2xhc3NOYW1lXSwgJHRleHRBbGlnbjogdW5kZWZpbmVkIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9ibG9jay9ibG9jay5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImJsb2NrXCI6IFwiYmxvY2stbW9kdWxlX19ibG9ja19fX1k0dHpqXCIsXG4gIFwiYmxvY2stLWlubGluZVwiOiBcImJsb2NrLW1vZHVsZV9fYmxvY2stLWlubGluZV9fXy0xWUNnXCJcbn07IiwgImltcG9ydCBzdHlsZXMgZnJvbSBcIi4vYmxvY2subW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCB0eXBlIEJsb2NrUGx1Z2luUHJvcHMgPSB7XG4gICRibG9jaz86IGJvb2xlYW4gfCBcImlubGluZVwiO1xufTtcblxuZXhwb3J0IGNvbnN0IGJsb2NrUGx1Z2luID0gZ2V0UGx1Z2luPEJsb2NrUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGJsb2NrLCAkY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICBpZiAoISRibG9jaykge1xuICAgIHJldHVybiB7ICRibG9jazogdW5kZWZpbmVkIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRibG9jazogdW5kZWZpbmVkLFxuICAgICRjbGFzc05hbWU6IFskY2xhc3NOYW1lLCAkYmxvY2sgPT09IFwiaW5saW5lXCIgPyBzdHlsZXNbXCJibG9jay0taW5saW5lXCJdIDogc3R5bGVzLmJsb2NrXSxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgdHlwZSB7IENvbG9yIH0gZnJvbSBcIi4uL19zaGFyZWQvY29sb3JzXCI7XG5pbXBvcnQgdHlwZSB7IFJhbmdlIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcbmltcG9ydCBvdXRsaW5lU3R5bGVzIGZyb20gXCIuL291dGxpbmUubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IHNhbml0aXplU2Nzc01vZHVsZXMgfSBmcm9tIFwiQGs4c2xlbnMvdGVzdC11dGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBJQ2xhc3NOYW1lIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcblxuY29uc3Qgc3R5bGVzID0gc2FuaXRpemVTY3NzTW9kdWxlcyhvdXRsaW5lU3R5bGVzKTtcblxuZXhwb3J0IHR5cGUgT3V0bGluZVdpZHRoID0gXCJ6ZXJvXCIgfCBcInh4c1wiIHwgXCJ4c1wiIHwgXCJzXCIgfCBcIm1cIiB8IFwibFwiIHwgXCJ4bFwiIHwgXCJ4eGxcIiB8IGAke1JhbmdlPDMsIDU+fXhsYDtcblxuZXhwb3J0IHR5cGUgJE91dGxpbmVQcm9wcyA9IHsgY29sb3I/OiBDb2xvcjsgd2lkdGg/OiBPdXRsaW5lV2lkdGggfTtcblxuZXhwb3J0IHR5cGUgT3V0bGluZVBsdWdpblByb3BzID0geyAkb3V0bGluZT86IHsgZm9jdXNWaXNpYmxlPzogJE91dGxpbmVQcm9wcyB9IH07XG5cbmV4cG9ydCBjb25zdCBvdXRsaW5lUGx1Z2luID0gZ2V0UGx1Z2luPE91dGxpbmVQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgZ2V0Rm9jdXNWaXNpYmxlT3V0bGluZVN0eWxlcyhwcm9wcy4kb3V0bGluZT8uZm9jdXNWaXNpYmxlKV0sXG4gICAgJG91dGxpbmU6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuXG5jb25zdCBnZXRGb2N1c1Zpc2libGVPdXRsaW5lU3R5bGVzID0gKHByb3BzOiAkT3V0bGluZVByb3BzIHwgdW5kZWZpbmVkKTogSUNsYXNzTmFtZSA9PiB7XG4gIGlmICghcHJvcHMpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgeyBjb2xvciwgd2lkdGggfSA9IHByb3BzO1xuXG4gIHJldHVybiBbXG4gICAgY29sb3IgIT09IHVuZGVmaW5lZCB8fCB3aWR0aCAhPT0gdW5kZWZpbmVkID8gW3N0eWxlcy5vdXRsaW5lLCBzdHlsZXMuZm9jdXNWaXNpYmxlXSA6IHVuZGVmaW5lZCxcbiAgICBjb2xvciA/IHN0eWxlc1tgY29sb3ItLSR7Y29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgd2lkdGggPyBzdHlsZXNbYHdpZHRoLS0ke3dpZHRofWBdIDogdW5kZWZpbmVkLFxuICBdO1xufTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmUubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJvdXRsaW5lXCI6IFwib3V0bGluZS1tb2R1bGVfX291dGxpbmVfX19Bb0J0RlwiLFxuICBcImZvY3VzVmlzaWJsZVwiOiBcIm91dGxpbmUtbW9kdWxlX19mb2N1c1Zpc2libGVfX19KQXJQSlwiLFxuICBcImNvbG9yLS1pbmhlcml0XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1pbmhlcml0X19fMFdQMHJcIixcbiAgXCJjb2xvci0td2hpdGVcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXdoaXRlX19fVXEtZ2RcIixcbiAgXCJjb2xvci0tdHJhbnNwYXJlbnRcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXRyYW5zcGFyZW50X19fVE5vTXZcIixcbiAgXCJjb2xvci0tZ3JleTEwMFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTEwMF9fX1ZNRjdZXCIsXG4gIFwiY29sb3ItLWdyZXk4MFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTgwX19fS2Q4Zk1cIixcbiAgXCJjb2xvci0tZ3JleTYwXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5NjBfX19aR2pPdFwiLFxuICBcImNvbG9yLS1ncmV5NDBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXk0MF9fX3VhRm5HXCIsXG4gIFwiY29sb3ItLWdyZXkzMFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTMwX19fN1FCVlZcIixcbiAgXCJjb2xvci0tZ3JleTI1XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5MjVfX19yLWJiSlwiLFxuICBcImNvbG9yLS1ncmV5MjBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXkyMF9fX2l3emVMXCIsXG4gIFwiY29sb3ItLWdyZXkxMFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTEwX19faEp0dFNcIixcbiAgXCJjb2xvci0tZ3JleTcwXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5NzBfX18wT0dsVVwiLFxuICBcImNvbG9yLS1ncmV5ODBBbHBoYTg1XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19falJ3SG5cIixcbiAgXCJjb2xvci0tcHJpbWFyeVwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tcHJpbWFyeV9fX1B4Y214XCIsXG4gIFwiY29sb3ItLWFjY2VudFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tYWNjZW50X19fak1oSU5cIixcbiAgXCJjb2xvci0tc3VjY2Vzc1wiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tc3VjY2Vzc19fX3hqSkxuXCIsXG4gIFwiY29sb3ItLW5vdGljZVwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tbm90aWNlX19fQ1JpWWJcIixcbiAgXCJjb2xvci0td2FybmluZ1wiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0td2FybmluZ19fXzFPZTdXXCIsXG4gIFwiY29sb3ItLWNyaXRpY2FsXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1jcml0aWNhbF9fX3lReC1MXCIsXG4gIFwiY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1zdWNjZXNzVGludF9fX0dIYXEtXCIsXG4gIFwiY29sb3ItLXdhcm5pbmdUaW50XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS13YXJuaW5nVGludF9fX1lBbnR1XCIsXG4gIFwiY29sb3ItLWNyaXRpY2FsVGludFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tY3JpdGljYWxUaW50X19fUTFtZGhcIixcbiAgXCJjb2xvci0tbGlua1wiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tbGlua19fX3VJazNvXCIsXG4gIFwiY29sb3ItLWNvZGVcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWNvZGVfX195Ym53aVwiLFxuICBcIndpZHRoLS16ZXJvXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS16ZXJvX19fRWtmek5cIixcbiAgXCJ3aWR0aC0teHhzXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS14eHNfX19iR3lUclwiLFxuICBcIndpZHRoLS14c1wiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0teHNfX19aWlIyQlwiLFxuICBcIndpZHRoLS1zXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS1zX19fOGRERXpcIixcbiAgXCJ3aWR0aC0tbVwiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0tbV9fX2cydUc1XCIsXG4gIFwid2lkdGgtLWxcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLWxfX19XaDBiQ1wiLFxuICBcIndpZHRoLS14bFwiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0teGxfX184ZE9NalwiLFxuICBcIndpZHRoLS14eGxcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLXh4bF9fX0JFc1VtXCIsXG4gIFwid2lkdGgtLTN4bFwiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0tM3hsX19fRXMwU1lcIixcbiAgXCJ3aWR0aC0tNHhsXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS00eGxfX19ZZW92OFwiLFxuICBcIndpZHRoLS01eGxcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLTV4bF9fX05zVjhQXCJcbn07IiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgY2xpY2thYmxlUGx1Z2luLCBDbGlja0hhbmRsZXJEZXRhaWxzIH0gZnJvbSBcIi4uL2NsaWNrYWJsZS9jbGlja2FibGVcIjtcbmltcG9ydCB7IGF1dG9VcGRhdGUsIGZsaXAsIG9mZnNldCwgc2hpZnQsIHVzZUZsb2F0aW5nIH0gZnJvbSBcIkBmbG9hdGluZy11aS9yZWFjdC1kb21cIjtcbmltcG9ydCB0eXBlIHsgUmVmUGx1Z2luIH0gZnJvbSBcIi4uL3JlZi9yZWZcIjtcbmltcG9ydCB7IGV4cGVjdERlZmluZWQsIHN0b3BQcm9wYWdhdGlvbiB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL3BvcG92ZXIubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IE1pbmltYWxEaXYgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHMvbWluaW1hbC1kaXZcIjtcblxuZXhwb3J0IHR5cGUgUG9wb3ZlclBsdWdpblByb3BzID0ge1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgJHBvcG92ZXI/OiAoKSA9PiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5leHBvcnQgY29uc3QgcG9wb3ZlcklzT3BlbkNvbnRleHQgPSBjcmVhdGVDb250ZXh0KGZhbHNlKTtcblxuZXhwb3J0IGNvbnN0IHVzZVBvcG92ZXJJc09wZW4gPSAoKSA9PiB1c2VDb250ZXh0KHBvcG92ZXJJc09wZW5Db250ZXh0KTtcblxuZXhwb3J0IGNvbnN0IHBvcG92ZXJQbHVnaW4gPSBnZXRQbHVnaW48UG9wb3ZlclBsdWdpblByb3BzLCBbdHlwZW9mIGNsaWNrYWJsZVBsdWdpbiwgUmVmUGx1Z2luPGFueT5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkcG9wb3ZlciwgJG9uQ2xpY2ssICRyZWYgfSA9IHByb3BzO1xuICBjb25zdCBbcG9wb3ZlckNvbnRlbnRJc1Nob3duLCBzZXRQb3BvdmVyQ29udGVudElzU2hvd25dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbcmVmZXJlbmNlLCBzZXRFbGVtZW50XSA9IHVzZVN0YXRlPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGNsb3NlUG9wb3ZlciA9IHVzZUNhbGxiYWNrKCgpID0+IHNldFBvcG92ZXJDb250ZW50SXNTaG93bihmYWxzZSksIFtdKTtcblxuICBpZiAoISRwb3BvdmVyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICRwb3BvdmVyOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJHBvcG92ZXI6IHVuZGVmaW5lZCxcbiAgICAkcmVmOiBbJHJlZiwgc2V0RWxlbWVudF0sXG4gICAgJG9uQ2xpY2s6IChkZXRhaWxzOiBDbGlja0hhbmRsZXJEZXRhaWxzKSA9PiB7XG4gICAgICBzZXRQb3BvdmVyQ29udGVudElzU2hvd24oIXBvcG92ZXJDb250ZW50SXNTaG93bik7XG4gICAgICAkb25DbGljaz8uKGRldGFpbHMpO1xuICAgIH0sXG4gICAgb25DbGljazogc3RvcFByb3BhZ2F0aW9uLFxuICAgICR3cmFwcGVyOiB7XG4gICAgICBDb21wb25lbnQ6IFBvcG92ZXJXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgcG9wb3Zlcjoge1xuICAgICAgICAgICRwb3BvdmVyLFxuICAgICAgICAgIGlzU2hvd246IHBvcG92ZXJDb250ZW50SXNTaG93bixcbiAgICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgICAgY2xvc2VQb3BvdmVyLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xufSk7XG5cbnR5cGUgUG9wb3ZlcldyYXBwZXJQcm9wcyA9IHtcbiAgcmVhZG9ubHkgcG9wb3Zlcjoge1xuICAgIHJlYWRvbmx5ICRwb3BvdmVyOiAoKSA9PiBSZWFjdC5SZWFjdE5vZGU7XG4gICAgcmVhZG9ubHkgaXNTaG93bjogYm9vbGVhbjtcbiAgICByZWFkb25seSByZWZlcmVuY2U6IEhUTUxEaXZFbGVtZW50IHwgbnVsbDtcbiAgICByZWFkb25seSBjbG9zZVBvcG92ZXI6IFZvaWRGdW5jdGlvbjtcbiAgfTtcbiAgcmVhZG9ubHkgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IFBvcG92ZXJXcmFwcGVyQ29tcG9uZW50ID0gKHsgcG9wb3ZlciwgY2hpbGRyZW4gfTogUG9wb3ZlcldyYXBwZXJQcm9wcykgPT4ge1xuICBjb25zdCB7ICRwb3BvdmVyLCBpc1Nob3duLCByZWZlcmVuY2UsIGNsb3NlUG9wb3ZlciB9ID0gcG9wb3ZlcjtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7aXNTaG93biAmJlxuICAgICAgICBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgPFBvcG92ZXJPdmVybGF5Q29udGVudFxuICAgICAgICAgICAgey4uLntcbiAgICAgICAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICAgICAgICAkcG9wb3ZlcixcbiAgICAgICAgICAgICAgY2xvc2VQb3BvdmVyLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPixcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LFxuICAgICAgICApfVxuICAgICAgPHBvcG92ZXJJc09wZW5Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXtpc1Nob3dufT57Y2hpbGRyZW59PC9wb3BvdmVySXNPcGVuQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbnR5cGUgUG9wb3Zlck92ZXJsYXlDb250ZW50UHJvcHMgPSB7XG4gIHJlZmVyZW5jZTogSFRNTERpdkVsZW1lbnQgfCBudWxsO1xuICAkcG9wb3ZlcjogKCkgPT4gUmVhY3QuUmVhY3ROb2RlO1xuICBjbG9zZVBvcG92ZXI6IFZvaWRGdW5jdGlvbjtcbn07XG5cbmNvbnN0IFBvcG92ZXJPdmVybGF5Q29udGVudCA9IChwcm9wczogUG9wb3Zlck92ZXJsYXlDb250ZW50UHJvcHMpID0+IHtcbiAgY29uc3QgeyAkcG9wb3ZlciwgY2xvc2VQb3BvdmVyLCByZWZlcmVuY2UgfSA9IHByb3BzO1xuICBjb25zdCBbZmxvYXRpbmcsIHNldEZsb2F0aW5nXSA9IHVzZVN0YXRlPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHsgZmxvYXRpbmdTdHlsZXMgfSA9IHVzZUZsb2F0aW5nKHtcbiAgICBwbGFjZW1lbnQ6IFwiYm90dG9tXCIsXG4gICAgbWlkZGxld2FyZTogW2ZsaXAoKSwgb2Zmc2V0KDgpLCBzaGlmdCgpXSxcbiAgICB3aGlsZUVsZW1lbnRzTW91bnRlZDogYXV0b1VwZGF0ZSxcbiAgICBlbGVtZW50czoge1xuICAgICAgZmxvYXRpbmcsXG4gICAgICByZWZlcmVuY2UsXG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3QgY2xvc2VQb3BvdmVyRnJvbU92ZXJsYXkgPSAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICBzdG9wUHJvcGFnYXRpb24oZXZlbnQpO1xuICAgIGNsb3NlUG9wb3ZlcigpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPE1pbmltYWxEaXZcbiAgICAgIGRhdGEtcG9wb3Zlci1vdmVybGF5LXRlc3RcbiAgICAgICRhYnNvbHV0ZVxuICAgICAgJGNsYXNzTmFtZT17c3R5bGVzLnBvcG92ZXJfX292ZXJsYXl9XG4gICAgICBvbkNsaWNrPXtjbG9zZVBvcG92ZXJGcm9tT3ZlcmxheX1cbiAgICA+XG4gICAgICA8TWluaW1hbERpdlxuICAgICAgICAkcmVmPXtzZXRGbG9hdGluZ31cbiAgICAgICAgc3R5bGU9e2Zsb2F0aW5nU3R5bGVzfVxuICAgICAgICBvbkNsaWNrPXtzdG9wUHJvcGFnYXRpb259XG4gICAgICAgICRjbGFzc05hbWU9e3N0eWxlcy5wb3BvdmVyX19jb250ZW50fVxuICAgICAgPlxuICAgICAgICA8Y29udGV4dEZvckNsb3NpbmdQb3BvdmVyLlByb3ZpZGVyIHZhbHVlPXtjbG9zZVBvcG92ZXJ9PnskcG9wb3ZlcigpfTwvY29udGV4dEZvckNsb3NpbmdQb3BvdmVyLlByb3ZpZGVyPlxuICAgICAgPC9NaW5pbWFsRGl2PlxuICAgIDwvTWluaW1hbERpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb250ZXh0Rm9yQ2xvc2luZ1BvcG92ZXIgPSBjcmVhdGVDb250ZXh0PFZvaWRGdW5jdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuZXhwb3J0IGNvbnN0IHVzZUNsb3NlUG9wb3ZlciA9ICgpID0+XG4gIGV4cGVjdERlZmluZWQoXG4gICAgdXNlQ29udGV4dChjb250ZXh0Rm9yQ2xvc2luZ1BvcG92ZXIpLFxuICAgIFwiVHJpZWQgdG8gdXNlIGNsb3NlIHBvcG92ZXIgd2hpbGUgY29udGVudCBpcyBub3Qgc2hvd24gaW5zaWRlIHRoZSBwb3BvdmVyIGNvbnRlbnQuXCIsXG4gICk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwicG9wb3Zlcl9fb3ZlcmxheVwiOiBcInBvcG92ZXItbW9kdWxlX19wb3BvdmVyX19vdmVybGF5X19fVGNLdi1cIixcbiAgXCJwb3BvdmVyX19jb250ZW50XCI6IFwicG9wb3Zlci1tb2R1bGVfX3BvcG92ZXJfX2NvbnRlbnRfX19VQ1VaNlwiXG59OyIsICJpbXBvcnQgeyBnZXRQbHVnaW4sIHR5cGUgQ29udHJpYnV0ZVJlZiwgdHlwZSBQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgUmVmUGx1Z2luIH0gZnJvbSBcIi4uL3JlZi9yZWZcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgYXV0b1VwZGF0ZSwgZmxpcCwgb2Zmc2V0LCBzaGlmdCwgdXNlRmxvYXRpbmcsIHR5cGUgUGxhY2VtZW50IH0gZnJvbSBcIkBmbG9hdGluZy11aS9yZWFjdC1kb21cIjtcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCB0eXBlIEZsb2F0aW5nQ29udGVudEFyZ3MgPSB7XG4gIHJlYWRvbmx5IGZsb2F0aW5nU3R5bGVzOiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuICByZWFkb25seSBjb250ZW50UmVmOiBOb25OdWxsYWJsZTxSZWFjdC5SZWY8SFRNTERpdkVsZW1lbnQ+Pjtcbn07XG5cbmV4cG9ydCB0eXBlIEZsb2F0aW5nQ29udGVudEZhY3RvcnkgPSAoYXJnczogRmxvYXRpbmdDb250ZW50QXJncykgPT4gUmVhY3QuUmVhY3ROb2RlO1xuXG5leHBvcnQgdHlwZSAkRmxvYXRpbmdQcm9wcyA9IHtcbiAgcmVhZG9ubHkgcG9zaXRpb24/OiBQbGFjZW1lbnQ7XG4gIHJlYWRvbmx5IGNvbnRlbnQ6IEZsb2F0aW5nQ29udGVudEZhY3Rvcnk7XG59O1xuXG5leHBvcnQgdHlwZSBGbG9hdGluZ1BsdWdpblByb3BzID0ge1xuICByZWFkb25seSBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgcmVhZG9ubHkgJGZsb2F0aW5nPzogJEZsb2F0aW5nUHJvcHM7XG59O1xuXG5leHBvcnQgdHlwZSBGbG9hdGluZ1BsdWdpbiA9IFBsdWdpbjxGbG9hdGluZ1BsdWdpblByb3BzLCB1bmtub3duPjtcblxudHlwZSBGbG9hdGluZ1dyYXBwZXJQcm9wcyA9IHtcbiAgcmVhZG9ubHkgZmxvYXRpbmc6ICRGbG9hdGluZ1Byb3BzO1xuICByZWFkb25seSBjb250cmlidXRlUmVmOiBDb250cmlidXRlUmVmO1xuICByZWFkb25seSBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgRmxvYXRpbmdXcmFwcGVyQ29tcG9uZW50ID0gKHsgZmxvYXRpbmcsIGNvbnRyaWJ1dGVSZWYsIGNoaWxkcmVuIH06IEZsb2F0aW5nV3JhcHBlclByb3BzKSA9PiB7XG4gIGNvbnN0IFtyZWZlcmVuY2UsIHNldFJlZmVyZW5jZV0gPSB1c2VTdGF0ZTxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbZmxvYXRpbmdFbCwgc2V0RmxvYXRpbmddID0gdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcblxuICBjb250cmlidXRlUmVmKHNldFJlZmVyZW5jZSk7XG5cbiAgY29uc3QgeyBmbG9hdGluZ1N0eWxlcyB9ID0gdXNlRmxvYXRpbmcoe1xuICAgIHBsYWNlbWVudDogZmxvYXRpbmcucG9zaXRpb24gPz8gXCJib3R0b21cIixcbiAgICBtaWRkbGV3YXJlOiBbZmxpcCgpLCBvZmZzZXQoOCksIHNoaWZ0KCldLFxuICAgIHdoaWxlRWxlbWVudHNNb3VudGVkOiBhdXRvVXBkYXRlLFxuICAgIGVsZW1lbnRzOiB7XG4gICAgICBmbG9hdGluZzogZmxvYXRpbmdFbCxcbiAgICAgIHJlZmVyZW5jZSxcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCBmbG9hdGluZ0NvbnRlbnQgPSBmbG9hdGluZy5jb250ZW50KHsgZmxvYXRpbmdTdHlsZXMsIGNvbnRlbnRSZWY6IHNldEZsb2F0aW5nIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtmbG9hdGluZ0NvbnRlbnQgPyBjcmVhdGVQb3J0YWwoZmxvYXRpbmdDb250ZW50LCBkb2N1bWVudC5ib2R5KSA6IG51bGx9XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC8+XG4gICk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZmxvYXRpbmdQbHVnaW48VD4oKSB7XG4gIHJldHVybiBnZXRQbHVnaW48RmxvYXRpbmdQbHVnaW5Qcm9wcywgW1JlZlBsdWdpbjxUPl0+KChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgJGZsb2F0aW5nIH0gPSBwcm9wcztcblxuICAgIGlmICgkZmxvYXRpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHsgJGZsb2F0aW5nOiB1bmRlZmluZWQgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgJGZsb2F0aW5nOiB1bmRlZmluZWQsXG4gICAgICAkd3JhcHBlcjoge1xuICAgICAgICBDb21wb25lbnQ6IEZsb2F0aW5nV3JhcHBlckNvbXBvbmVudCxcbiAgICAgICAgcHJvcHM6IHsgZmxvYXRpbmc6ICRmbG9hdGluZyB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9KTtcbn1cbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9pbnZpc2libGUtYmFja2Ryb3AvaW52aXNpYmxlLWJhY2tkcm9wLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiaW52aXNpYmxlQmFja2Ryb3BcIjogXCJpbnZpc2libGUtYmFja2Ryb3AtbW9kdWxlX19pbnZpc2libGVCYWNrZHJvcF9fX2hPaDViXCJcbn07IiwgImltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW52aXNpYmxlLWJhY2tkcm9wLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuXG5leHBvcnQgdHlwZSBJbnZpc2libGVCYWNrZHJvcFBsdWdpblByb3BzID0ge1xuICAkaW52aXNpYmxlQmFja2Ryb3A/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGludmlzaWJsZUJhY2tkcm9wUGx1Z2luID0gZ2V0UGx1Z2luPEludmlzaWJsZUJhY2tkcm9wUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGludmlzaWJsZUJhY2tkcm9wLCAkY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICBpZiAoISRpbnZpc2libGVCYWNrZHJvcCkge1xuICAgIHJldHVybiB7ICRpbnZpc2libGVCYWNrZHJvcDogdW5kZWZpbmVkIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRpbnZpc2libGVCYWNrZHJvcDogdW5kZWZpbmVkLFxuICAgICRjbGFzc05hbWU6IFskY2xhc3NOYW1lLCBzdHlsZXMuaW52aXNpYmxlQmFja2Ryb3BdLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luLCB0eXBlIENvbnRyaWJ1dGVQcm9wcywgdHlwZSBDb250cmlidXRlUmVmIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEcm9wRG93bk1lbnUsIHR5cGUgRHJvcERvd25NZW51U3BlYyB9IGZyb20gXCJAazhzbGVucy9kcm9wLWRvd24tbWVudS1jb250cmFjdHNcIjtcbmltcG9ydCB7IG9uVHJpZ2dlciB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgb25SaWdodFRyaWdnZXJJbmplY3RhYmxlIH0gZnJvbSBcIi4uL2NsaWNrYWJsZS9vbi1yaWdodC10cmlnZ2VyLmluamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgUG9zaXRpb24yZCB9IGZyb20gXCIuLi9jbGlja2FibGUvY2xpY2thYmxlXCI7XG5pbXBvcnQgdHlwZSB7IGN1cnNvclBsdWdpbiB9IGZyb20gXCIuLi9jdXJzb3IvY3Vyc29yXCI7XG5pbXBvcnQgeyB0eXBlIGVuYWJsZWRQbHVnaW4sIGlzRGlzYWJsZWQgfSBmcm9tIFwiLi4vZW5hYmxlZC9lbmFibGVkXCI7XG5pbXBvcnQgeyB1c2VPbk91dHNpZGVDbGljayB9IGZyb20gXCIuLi9vbi1vdXRzaWRlLWNsaWNrL29uLW91dHNpZGUtY2xpY2tcIjtcblxuZXhwb3J0IHR5cGUgRHJvcERvd25NZW51UGx1Z2luUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICByZWFkb25seSB0YWJJbmRleD86IG51bWJlcjtcblxuICAvKipcbiAgICogQXR0YWNoZXMgYSBkcm9wLWRvd24gbWVudSB0byB0aGUgZWxlbWVudC4gQ3JlYXRlIHRoZSB2YWx1ZSB3aXRoIGBkcm9wRG93bk1lbnUoa2luZCwgb3B0aW9ucz8pYFxuICAgKiBmcm9tIGBAazhzbGVucy9kcm9wLWRvd24tbWVudS1jb250cmFjdHNgOyB0aGUgaXRlbXMgY29tZSBmcm9tIHRoZSBjb250cmlidXRpb25zIHJlZ2lzdGVyZWQgZm9yXG4gICAqIHRoZSBraW5kLlxuICAgKlxuICAgKiBUaGUgbWVudSBwb3NpdGlvbnMgaXRzZWxmIGFnYWluc3QgdGhlIG5lYXJlc3QgYW5jaG9yIGFyb3VuZCBpdCwgc28gdGhlIGVsZW1lbnQgXHUyMDE0IG9yIHNvbWV0aGluZ1xuICAgKiBlbmNsb3NpbmcgaXQgXHUyMDE0IGRlY2xhcmVzIGAkYW5jaG9yYC5cbiAgICpcbiAgICogVGhlIG1lbnUgdGFrZXMgZm9jdXMgYXMgaXQgb3BlbnMsIGl0cyBmaXJzdCBpdGVtIGJlY29taW5nIHRoZSBjdXJyZW50IG9uZSBcdTIwMTQgZXhjZXB0IHdoZW4gaXRcbiAgICogb3BlbnMgYnkgYmVpbmcgaG92ZXJlZCwgd2hlcmUgZm9jdXMgc3RheXMgb24gdGhlIGVsZW1lbnQ6IHRoZSByb3cgdGhlIHBvaW50ZXIgcmVzdHMgb24gaXMgd2hhdFxuICAgKiB0aGUgdXNlciBpcyBsb29raW5nIGF0LiBGb2N1cyByZXR1cm5zIHRvIHRoZSBlbGVtZW50IG9uY2UgdGhlIG1lbnUgaXMgZ29uZS4gQSBtZW51IHRoYXQgb3BlbnMgb25cbiAgICogaG92ZXJpbmcgb3BlbnMgd2l0aCBBcnJvd1JpZ2h0IGFzIHdlbGwsIHRha2luZyBmb2N1cyB0aGVuLCBhbmQgY2xvc2VzIHdpdGggQXJyb3dMZWZ0IGZyb21cbiAgICogYW55d2hlcmUgd2l0aGluIGl0LCBzbyBhIG1lbnUgaGVsZCBieSBhIG1lbnUgcm93IGlzIHJlYWNoYWJsZSB3aXRob3V0IGEgcG9pbnRlci5cbiAgICpcbiAgICogUmVxdWlyZXMgYGRyb3BEb3duTWVudUZlYXR1cmVgIG9mIGBAbGVuc2FwcC9kcm9wLWRvd24tbWVudWAgdG8gYmUgcmVnaXN0ZXJlZDogdGhlIG1lbnVcbiAgICogY29tcG9uZW50IGlzIHJlc29sdmVkIHRocm91Z2ggYW4gaW5qZWN0aW9uIHRva2VuIHRoaXMgcGFja2FnZSBkb2VzIG5vdCBpbXBsZW1lbnQuXG4gICAqL1xuICByZWFkb25seSAkZHJvcERvd25NZW51PzogRHJvcERvd25NZW51U3BlYztcbn07XG5cbmNvbnN0IGhvdmVyQ2xvc2VEZWxheUluTWlsbGlzZWNvbmRzID0gMjAwO1xuXG50eXBlIERyb3BEb3duTWVudVdyYXBwZXJQcm9wcyA9IHtcbiAgcmVhZG9ubHkgZHJvcERvd25NZW51OiBEcm9wRG93bk1lbnVTcGVjO1xuICByZWFkb25seSBjb250cmlidXRlUmVmOiBDb250cmlidXRlUmVmO1xuICByZWFkb25seSBjb250cmlidXRlUHJvcHM6IENvbnRyaWJ1dGVQcm9wcztcbiAgcmVhZG9ubHkgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IERyb3BEb3duTWVudVdyYXBwZXJDb21wb25lbnQgPSAoe1xuICBkcm9wRG93bk1lbnUsXG4gIGNvbnRyaWJ1dGVSZWYsXG4gIGNvbnRyaWJ1dGVQcm9wcyxcbiAgY2hpbGRyZW4sXG59OiBEcm9wRG93bk1lbnVXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgLy8gV2hldGhlciB0aGUgbWVudSB0YWtlcyBmb2N1cyBhcyBpdCBvcGVucy4gT25seSBhIG1lbnUgdGhlIHBvaW50ZXIgb3BlbmVkIGJ5IHJlc3Rpbmcgb24gdGhlXG4gIC8vIGVsZW1lbnQgbGVhdmVzIGl0IGJlOiB0aGUga2V5Ym9hcmQgb3BlbmluZyBvbmUsIG9yIGEgY2xpY2ssIGlzIHRoZSB1c2VyIGFza2luZyBmb3IgdGhlIG1lbnUsXG4gIC8vIGFuZCBpdHMgZmlyc3QgaXRlbSBpcyB3aGVyZSB0aGV5IGdvIG9uIGZyb20uXG4gIGNvbnN0IFt0YWtlc0ZvY3VzLCBzZXRUYWtlc0ZvY3VzXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbY3Vyc29yLCBzZXRDdXJzb3JdID0gdXNlU3RhdGU8UG9zaXRpb24yZCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgY29uc3QgY2xvc2VUaW1lclJlZiA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgY29uc3Qgb25SaWdodFRyaWdnZXIgPSB1c2VTeW5jSW5qZWN0KG9uUmlnaHRUcmlnZ2VySW5qZWN0YWJsZSk7XG5cbiAgY29uc3QgZWxlbWVudFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBtZW51UmVmID0gdXNlUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGVsZW1lbnRUYWtlc0ZvY3VzQmFja1JlZiA9IHVzZVJlZihmYWxzZSk7XG5cbiAgY29udHJpYnV0ZVJlZihcbiAgICB1c2VDYWxsYmFjaygoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgICBlbGVtZW50UmVmLmN1cnJlbnQgPSBlbGVtZW50O1xuICAgIH0sIFtdKSxcbiAgKTtcblxuICBjb25zdCB0b2dnbGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0VGFrZXNGb2N1cyh0cnVlKTtcbiAgICBzZXRJc09wZW4oKHdhc09wZW4pID0+ICF3YXNPcGVuKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGNsb3NlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIFRoZSBlbGVtZW50IHRoZSBtZW51IGJlbG9uZ3MgdG8gdGFrZXMgZm9jdXMgYmFjayB3aGVuIGZvY3VzIGlzIGluIHRoZSBtZW51IHRoYXQgaXMgY2xvc2luZyxcbiAgICAvLyBvciBub3doZXJlIGF0IGFsbDogd2hhdGV2ZXIgdGhlIHVzZXIgZG9lcyBuZXh0LCB0aGV5IGRvIGZyb20gd2hlcmUgdGhleSB3ZXJlLiBEZWNpZGVkIGhlcmUsXG4gICAgLy8gd2hpbGUgaXQgaXMgc3RpbGwgY2xlYXIgd2hlcmUgZm9jdXMgd2FzLCByYXRoZXIgdGhhbiBvbmNlIHRoZSBtZW51IGhhcyBnb25lLlxuICAgIGNvbnN0IGZvY3VzZWQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuXG4gICAgZWxlbWVudFRha2VzRm9jdXNCYWNrUmVmLmN1cnJlbnQgPVxuICAgICAgZm9jdXNlZCA9PT0gbnVsbCB8fCBmb2N1c2VkID09PSBkb2N1bWVudC5ib2R5IHx8IG1lbnVSZWYuY3VycmVudD8uY29udGFpbnMoZm9jdXNlZCkgPT09IHRydWU7XG5cbiAgICBzZXRJc09wZW4oZmFsc2UpO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgY2FuY2VsU2NoZWR1bGVkQ2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGNsb3NlVGltZXJSZWYuY3VycmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGVhclRpbWVvdXQoY2xvc2VUaW1lclJlZi5jdXJyZW50KTtcbiAgICAgIGNsb3NlVGltZXJSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH0sIFtdKTtcblxuICBjb25zdCBvcGVuID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wZW5lZEJ5OiBcInBvaW50ZXJcIiB8IFwia2V5Ym9hcmRcIikgPT4ge1xuICAgICAgY2FuY2VsU2NoZWR1bGVkQ2xvc2UoKTtcbiAgICAgIHNldFRha2VzRm9jdXMob3BlbmVkQnkgPT09IFwia2V5Ym9hcmRcIik7XG4gICAgICBzZXRJc09wZW4odHJ1ZSk7XG4gICAgfSxcbiAgICBbY2FuY2VsU2NoZWR1bGVkQ2xvc2VdLFxuICApO1xuXG4gIGNvbnN0IHNjaGVkdWxlQ2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2FuY2VsU2NoZWR1bGVkQ2xvc2UoKTtcbiAgICBjbG9zZVRpbWVyUmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KGNsb3NlLCBob3ZlckNsb3NlRGVsYXlJbk1pbGxpc2Vjb25kcyk7XG4gIH0sIFtjYW5jZWxTY2hlZHVsZWRDbG9zZSwgY2xvc2VdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gY2FuY2VsU2NoZWR1bGVkQ2xvc2UsIFtjYW5jZWxTY2hlZHVsZWRDbG9zZV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gQSBtZW51IHRoYXQgaXMgZGlzbWlzc2VkIHJhdGhlciB0aGFuIGNsb3NlZCBcdTIwMTQgY2xpY2tlZCBhd2F5IGZyb20gXHUyMDE0IGxlYXZlcyBmb2N1cyB3aGVyZXZlciB0aGVcbiAgICAvLyB1c2VyIHB1dCBpdC5cbiAgICBlbGVtZW50VGFrZXNGb2N1c0JhY2tSZWYuY3VycmVudCA9IGZhbHNlO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICghZWxlbWVudFRha2VzRm9jdXNCYWNrUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBEZWZlcnJlZCBwYXN0IHdoYXQgaXMgYmVpbmcgdGFrZW4gYXdheTogdGhlIGVsZW1lbnQgbWF5IGJlIGdvaW5nIHdpdGggdGhlIG1lbnUsIGEgbWVudVxuICAgICAgLy8gaW5zaWRlIGEgbWVudSB0aGF0IGlzIGNsb3NpbmcgdG9vLCBhbmQgb25seSB0aGVuIGlzIGl0IGNsZWFyIHdoZXRoZXIgaXQgaXMgc3RpbGwgdGhlcmUgdG9cbiAgICAgIC8vIHRha2UgZm9jdXMgYmFjay4gQW55dGhpbmcgdGhhdCB0b29rIGZvY3VzIGluIHRoZSBtZWFudGltZSB3YXMgZ2l2ZW4gaXQgb24gcHVycG9zZSwgYW5kIGFcbiAgICAgIC8vIG1lbnUgY2xvc2luZyBpcyBubyByZWFzb24gdG8gdGFrZSBpdCBhd2F5IGFnYWluLlxuICAgICAgdm9pZCBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRSZWYuY3VycmVudDtcbiAgICAgICAgY29uc3QgZm9jdXNlZCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKGVsZW1lbnQ/LmlzQ29ubmVjdGVkICYmIChmb2N1c2VkID09PSBudWxsIHx8IGZvY3VzZWQgPT09IGRvY3VtZW50LmJvZHkpKSB7XG4gICAgICAgICAgZWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICB9LCBbaXNPcGVuXSk7XG5cbiAgY29uc3Qgb3Blbk9uID0gZHJvcERvd25NZW51Lm9wZW5PbiA/PyBcImNsaWNrXCI7XG5cbiAgY29uc3QgY2xvc2VPbkFycm93TGVmdCA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd0xlZnRcIikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtjbG9zZV0sXG4gICk7XG5cbiAgLy8gTWFya3MgdGhlIGVsZW1lbnQgYW5kLCBiZWxvdywgdGhlIG1lbnUgaXQgb3BlbnMgYXMgb25lIHRoaW5nIGZvciBvdXRzaWRlLWNsaWNrIHB1cnBvc2VzLlxuICBjb25zdCBvdXRzaWRlQ2xpY2tNYXJraW5nUHJvcHMgPSB1c2VPbk91dHNpZGVDbGljayhcbiAgICB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAoaXNPcGVuKSB7XG4gICAgICAgIHNldElzT3BlbihmYWxzZSk7XG4gICAgICB9XG4gICAgfSwgW2lzT3Blbl0pLFxuICApO1xuXG4gIGNvbnRyaWJ1dGVQcm9wcyh7XG4gICAgLi4ub3V0c2lkZUNsaWNrTWFya2luZ1Byb3BzLFxuICAgIFwiYXJpYS1oYXNwb3B1cFwiOiBcIm1lbnVcIixcblxuICAgIC4uLihvcGVuT24gPT09IFwiY2xpY2tcIiAmJiB7XG4gICAgICBvbkNsaWNrOiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRvZ2dsZSgpO1xuICAgICAgfSxcblxuICAgICAgLy8gQSBrZXkgcHJlc3MgdGhlIGVsZW1lbnQgYW5zd2VycyB3aXRoIGEgbWVudSBpcyBhbnN3ZXJlZCBoZXJlIGFuZCBub3doZXJlIGVsc2UsXG4gICAgICAvLyBleGFjdGx5IGFzIGl0cyBjbGljayBpczogd2hhdGV2ZXIgZW5jbG9zZXMgdGhlIGVsZW1lbnQgKGEgbWVudSByb3cgd2l0aCBhblxuICAgICAgLy8gYWN0aW9uIG9mIGl0cyBvd24sIHNheSkgbXVzdCBub3QgdGFrZSB0aGUgc2FtZSBwcmVzcyBmb3IgYmVpbmcgYWN0aXZhdGVkIHRvby5cbiAgICAgIG9uS2V5RG93bjogKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIG9uVHJpZ2dlcihldmVudCwgKCkgPT4ge1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRvZ2dsZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSksXG5cbiAgICAuLi4ob3Blbk9uID09PSBcInJpZ2h0LWNsaWNrXCIgJiYge1xuICAgICAgb25Db250ZXh0TWVudTogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAvLyBBIG1lbnUgb3BlbmVkIGJ5IHJpZ2h0LWNsaWNraW5nIGJlbG9uZ3MgYXQgdGhlIGN1cnNvciByYXRoZXIgdGhhbiBhdCB0aGUgZWxlbWVudC5cbiAgICAgICAgc2V0Q3Vyc29yKHsgeDogZXZlbnQuY2xpZW50WCwgeTogZXZlbnQuY2xpZW50WSB9KTtcbiAgICAgICAgdG9nZ2xlKCk7XG4gICAgICB9LFxuXG4gICAgICBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBvblJpZ2h0VHJpZ2dlcihldmVudCwgKCkgPT4ge1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRvZ2dsZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSksXG5cbiAgICAuLi4ob3Blbk9uID09PSBcImhvdmVyXCIgJiYge1xuICAgICAgb25Nb3VzZUVudGVyOiAoKSA9PiBvcGVuKFwicG9pbnRlclwiKSxcbiAgICAgIG9uTW91c2VMZWF2ZTogc2NoZWR1bGVDbG9zZSxcblxuICAgICAgLy8gQSBtZW51IHRoYXQgb3BlbnMgb24gaG92ZXJpbmcgd291bGQgYmUgb3V0IG9mIHRoZSBrZXlib2FyZCdzIHJlYWNoIG90aGVyd2lzZS4gU2lkZXdheXNcbiAgICAgIC8vIGludG8gaXQsIHNpbmNlIHRoYXQgaXMgd2hlcmUgc3VjaCBhIG1lbnUgc2l0czogYmVzaWRlIHRoZSBlbGVtZW50IGl0IGJlbG9uZ3MgdG8uIEZvY3VzXG4gICAgICAvLyBmb2xsb3dzIG9uIGl0cyBvd24sIHRoZSBtZW51IHRha2luZyBpdCBhcyBpdCBhcHBlYXJzIFx1MjAxNCBvciwgdGhlIHBvaW50ZXIgaGF2aW5nIG9wZW5lZCBpdFxuICAgICAgLy8gYWxyZWFkeSwgYXMgdGhlIGtleWJvYXJkIHN0ZXBzIGludG8gaXQuXG4gICAgICBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93UmlnaHRcIikge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgb3BlbihcImtleWJvYXJkXCIpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pLFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7Y2hpbGRyZW59XG5cbiAgICAgIHtpc09wZW4gJiYgKFxuICAgICAgICAvLyBNYXJrZWQgYXMgaW5zaWRlIGZvciB0aGUgb3V0c2lkZS1jbGljayBkZXRlY3Rpb24gYWJvdmU6IHRoZSBtZW51IGlzIGEgc2libGluZyBvZiB0aGVcbiAgICAgICAgLy8gZWxlbWVudCBpbiB0aGUgRE9NLCBidXQgcGFydCBvZiB0aGUgc2FtZSB0aGluZyBhcyBmYXIgYXMgYSB1c2VyIGlzIGNvbmNlcm5lZC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gQSBjbGljayBsYW5kaW5nIG9uIHRoZSBtZW51IGlzIGEgY2xpY2sgb24gdGhlIG1lbnUgYW5kIG5vdGhpbmcgZWxzZSwgc28gaXQgc3RvcHMgaGVyZVxuICAgICAgICAvLyByYXRoZXIgdGhhbiBnb2luZyBvbiB0byB3aGF0ZXZlciBlbmNsb3NlcyB0aGUgZWxlbWVudCB0aGUgbWVudSB3YXMgb3BlbmVkIGZyb20gXHUyMDE0IGEgcm93XG4gICAgICAgIC8vIG9mIGEgbWVudSBvZiBpdHMgb3duLCBzYXksIHdoaWNoIHdvdWxkIHRha2UgaXQgZm9yIHRoZSByb3cgYmVpbmcgYWN0aXZhdGVkLiBPbmx5XG4gICAgICAgIC8vIGBjbGlja2Agc3RvcHM6IHRoZSBvdXRzaWRlLWNsaWNrIGRldGVjdGlvbiBhYm92ZSB3b3JrcyBvbiBgcG9pbnRlcmRvd25gLlxuICAgICAgICAvL1xuICAgICAgICAvLyBGb2N1cyBsYW5kaW5nIGluIHRoZSBtZW51IGlzIGxpa2V3aXNlIGZvY3VzIGluIHRoZSBtZW51IGFuZCBub3RoaW5nIGVsc2UuIEEgdHJlZSByb3dcbiAgICAgICAgLy8gZW5jbG9zaW5nIHRoZSBlbGVtZW50IHdvdWxkIG90aGVyd2lzZSB0YWtlIGl0IGZvciB0aGUgcm93IGl0c2VsZiBiZWluZyBmb2N1c2VkLCBhbmRcbiAgICAgICAgLy8gdGFrZSBmb2N1cyBzdHJhaWdodCBiYWNrIGZyb20gdGhlIG1lbnUgcm93IHRoZSBwb2ludGVyIGhhZCBqdXN0IHB1dCBpdCBvbiBcdTIwMTQgYW5kIHNpbmNlXG4gICAgICAgIC8vIHRoZSBoaWdobGlnaHQgb2YgYSBtZW51IHJvdyBmb2xsb3dzIGZvY3VzLCB0aGF0IGlzIGEgbWVudSB0aGF0IG5ldmVyIGxvb2tzIHBvaW50ZWQgYXQuXG4gICAgICAgIC8vIE9ubHkgZm9jdXMgc3RvcHMsIG5vdCBibHVyOiB3aGF0ZXZlciBlbmNsb3NlcyB0aGUgZWxlbWVudCB0ZWxscyBmb2N1cyBsZWF2aW5nIGl0IGFwYXJ0XG4gICAgICAgIC8vIGZyb20gZm9jdXMgbW92aW5nIHdpdGhpbiBpdCBieSB3aGVyZSBmb2N1cyB3ZW50LCBhbmQgaGFzIHRvIGhlYXIgb2YgaXQgbGVhdmluZyBmcm9tIHRoZVxuICAgICAgICAvLyBtZW51IGFzIG11Y2ggYXMgZnJvbSBhbnl3aGVyZSBlbHNlLlxuICAgICAgICA8c3BhblxuICAgICAgICAgIHsuLi5vdXRzaWRlQ2xpY2tNYXJraW5nUHJvcHN9XG4gICAgICAgICAgcmVmPXttZW51UmVmfVxuICAgICAgICAgIHN0eWxlPXtkaXNwbGF5Q29udGVudHN9XG4gICAgICAgICAgb25DbGljaz17c3RvcFByb3BhZ2F0aW9ufVxuICAgICAgICAgIG9uRm9jdXM9e3N0b3BQcm9wYWdhdGlvbn1cbiAgICAgICAgICAvLyBTaWRld2F5cyBiYWNrIG91dCBvZiBhIG1lbnUgdGhhdCBvcGVuZWQgc2lkZXdheXMsIGZyb20gd2hlcmV2ZXIgaW4gaXQgZm9jdXMgaGFwcGVucyB0b1xuICAgICAgICAgIC8vIGJlLiBJdCBzdG9wcyBoZXJlLCBzbyB0aGUgbWVudSB0aGlzIG9uZSB3YXMgb3BlbmVkIGZyb20gaXMgbGVmdCBhcyBpdCBpcyByYXRoZXIgdGhhblxuICAgICAgICAgIC8vIGNsb3NpbmcgYWxvbmcgd2l0aCBpdCBcdTIwMTQgb25lIHN0ZXAgb3V0IHBlciBwcmVzcy4gT25seSBzdWNoIGEgbWVudTogZWxzZXdoZXJlIHRoZSBrZXlcbiAgICAgICAgICAvLyBiZWxvbmdzIHRvIHdoYXRldmVyIHRoZSBtZW51IGhvbGRzLCBhbmQgRXNjYXBlIGlzIGhvdyBhIG1lbnUgaXMgZGlzbWlzc2VkLlxuICAgICAgICAgIG9uS2V5RG93bj17b3Blbk9uID09PSBcImhvdmVyXCIgPyBjbG9zZU9uQXJyb3dMZWZ0IDogdW5kZWZpbmVkfVxuICAgICAgICA+XG4gICAgICAgICAgPERyb3BEb3duTWVudVxuICAgICAgICAgICAgc3BlYz17ZHJvcERvd25NZW51fVxuICAgICAgICAgICAgYW5jaG9yUG9pbnQ9e29wZW5PbiA9PT0gXCJyaWdodC1jbGlja1wiID8gY3Vyc29yIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgdGFrZXNGb2N1cz17dGFrZXNGb2N1c31cbiAgICAgICAgICAgIG9uQ2xvc2U9e2Nsb3NlfVxuICAgICAgICAgICAgb25NZW51SG92ZXJDaGFuZ2U9e1xuICAgICAgICAgICAgICBvcGVuT24gPT09IFwiaG92ZXJcIlxuICAgICAgICAgICAgICAgID8gKG1lbnVJc0hvdmVyZWQpID0+IChtZW51SXNIb3ZlcmVkID8gY2FuY2VsU2NoZWR1bGVkQ2xvc2UoKSA6IHNjaGVkdWxlQ2xvc2UoKSlcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuXG5jb25zdCBkaXNwbGF5Q29udGVudHMgPSB7IGRpc3BsYXk6IFwiY29udGVudHNcIiB9IGFzIGNvbnN0O1xuXG5jb25zdCBzdG9wUHJvcGFnYXRpb24gPSAoZXZlbnQ6IFJlYWN0LlN5bnRoZXRpY0V2ZW50KSA9PiBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuZXhwb3J0IGNvbnN0IGRyb3BEb3duTWVudVBsdWdpbiA9IGdldFBsdWdpbjxEcm9wRG93bk1lbnVQbHVnaW5Qcm9wcywgW3R5cGVvZiBlbmFibGVkUGx1Z2luLCB0eXBlb2YgY3Vyc29yUGx1Z2luXT4oXG4gIChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgJGRyb3BEb3duTWVudSwgJGN1cnNvciwgcm9sZSB9ID0gcHJvcHMgYXMgdHlwZW9mIHByb3BzICYgUmVhY3QuSFRNTFByb3BzPEhUTUxFbGVtZW50PjtcblxuICAgIGlmICgkZHJvcERvd25NZW51ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB7ICRkcm9wRG93bk1lbnU6IHVuZGVmaW5lZCB9O1xuICAgIH1cblxuICAgIGNvbnN0IG9wZW5zT25DbGljayA9ICgkZHJvcERvd25NZW51Lm9wZW5PbiA/PyBcImNsaWNrXCIpID09PSBcImNsaWNrXCI7XG4gICAgLy8gUmVhZCBmcm9tIHdoYXQgdGhlIGVsZW1lbnQgd2FzIGdpdmVuOiB0aGlzIHBsdWdpbiBydW5zIGJlZm9yZSB0aGUgb25lIHRoYXQgdHVybnMgaXQgaW50b1xuICAgIC8vIHRoZSBgZGlzYWJsZWRgIHByb3AuXG4gICAgY29uc3QgY2Fubm90QmVVc2VkID0gaXNEaXNhYmxlZChwcm9wcyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgJGRyb3BEb3duTWVudTogdW5kZWZpbmVkLFxuXG4gICAgICAuLi4oJGRyb3BEb3duTWVudS5vcGVuT24gPT09IFwiaG92ZXJcIiA/IHt9IDogeyB0YWJJbmRleDogcHJvcHMudGFiSW5kZXggPz8gMCB9KSxcblxuICAgICAgLy8gQW4gZWxlbWVudCB0aGF0IGFuc3dlcnMgYSBjbGljayB3aXRoIGEgbWVudSBpcyBhIGJ1dHRvbiwgYW5kIHRoZSBjdXJzb3IgaXMgaG93IGl0IHNheXMgc29cbiAgICAgIC8vIC0tIG9yIHNheXMgdGhhdCBpdCBjYW5ub3QgcmlnaHQgbm93LiBCb3RoIHdvdWxkIG90aGVyd2lzZSBjb21lIGZyb20gYSBjbGljayBoYW5kbGVyIHN1Y2ggYW5cbiAgICAgIC8vIGVsZW1lbnQgaGFzIG5vIHJlYXNvbiB0byBoYXZlLiBPbmx5IGEgY2xpY2s6IHNvbWV0aGluZyByaWdodC1jbGlja2VkIGlzIG5vdCBhIGJ1dHRvbiwgYW5kIGFcbiAgICAgIC8vIHJvdyB0aGF0IHJldmVhbHMgYSBtZW51IG9uIGhvdmVyIGlzIGEgcm93LlxuICAgICAgLi4uKG9wZW5zT25DbGljayAmJiB7XG4gICAgICAgIHJvbGU6IHJvbGUgPz8gXCJidXR0b25cIixcbiAgICAgICAgJGN1cnNvcjogJGN1cnNvciA/PyAoY2Fubm90QmVVc2VkID8gXCJub3QtYWxsb3dlZFwiIDogXCJwb2ludGVyXCIpLFxuICAgICAgfSksXG5cbiAgICAgICR3cmFwcGVyOiB7XG4gICAgICAgIENvbXBvbmVudDogRHJvcERvd25NZW51V3JhcHBlckNvbXBvbmVudCxcbiAgICAgICAgcHJvcHM6IHsgZHJvcERvd25NZW51OiAkZHJvcERvd25NZW51IH0sXG4gICAgICB9LFxuICAgIH07XG4gIH0sXG4pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiwgdHlwZSBDb250cmlidXRlUHJvcHMsIHR5cGUgQ29udHJpYnV0ZVJlZiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgY3NzTmFtZXMgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VJZCwgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2FuY2hvci5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBQb3NpdGlvbjJkIH0gZnJvbSBcIi4uL2NsaWNrYWJsZS9jbGlja2FibGVcIjtcbmltcG9ydCB7IHR5cGUgVFNoaXJ0U2l6ZSwgdFNoaXJ0U2l6ZUluUGl4ZWxzIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHR5cGUgeyBjb2xvclBsdWdpbiB9IGZyb20gXCIuLi9jb2xvci9jb2xvclwiO1xuaW1wb3J0IHR5cGUgeyBiYWNrZ3JvdW5kQ29sb3JQbHVnaW4gfSBmcm9tIFwiLi4vYmFja2dyb3VuZC1jb2xvci9iYWNrZ3JvdW5kLWNvbG9yXCI7XG5pbXBvcnQgdHlwZSB7IGJvcmRlclBsdWdpbiB9IGZyb20gXCIuLi9ib3JkZXIvYm9yZGVyXCI7XG5pbXBvcnQgdHlwZSB7IHBhZGRpbmdQbHVnaW4gfSBmcm9tIFwiLi4vcGFkZGluZy9wYWRkaW5nXCI7XG5pbXBvcnQgdHlwZSB7IG1hcmdpblBsdWdpbiB9IGZyb20gXCIuLi9tYXJnaW4vbWFyZ2luXCI7XG5pbXBvcnQgdHlwZSB7IG92ZXJmbG93UGx1Z2luIH0gZnJvbSBcIi4uL292ZXJmbG93L292ZXJmbG93XCI7XG5cbi8qKlxuICogV2hlcmUgYW4gZWxlbWVudCBzaXRzIHJlbGF0aXZlIHRvIGl0cyBhbmNob3I6IGEgc2lkZSBvZiB0aGUgYW5jaG9yLCBvcHRpb25hbGx5IHJlZmluZWQgd2l0aCBob3dcbiAqIHRoZSBlbGVtZW50IGV4dGVuZHMgYWxvbmcgdGhhdCBzaWRlLiBBIGJhcmUgc2lkZSBjZW50ZXJzIHRoZSBlbGVtZW50IG9uIGl0OyBgc3Bhbi08ZGlyZWN0aW9uPmBcbiAqIGFsaWducyB0aGVpciBlZGdlcyBhbmQgbGV0cyB0aGUgZWxlbWVudCBleHRlbmQgdG93YXJkIHRoYXQgZGlyZWN0aW9uLlxuICpcbiAqIFdoZW4gdGhlIGVsZW1lbnQgd291bGQgbm90IGZpdCB0aGUgdmlld3BvcnQsIGl0IGZhbGxzIGJhY2sgdG8gdGhlIG1pcnJvcmVkIHBvc2l0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgQW5jaG9yUG9zaXRpb24gPVxuICB8IFwidG9wXCJcbiAgfCBcImJvdHRvbVwiXG4gIHwgXCJsZWZ0XCJcbiAgfCBcInJpZ2h0XCJcbiAgfCBcInRvcCBzcGFuLWxlZnRcIlxuICB8IFwidG9wIHNwYW4tcmlnaHRcIlxuICB8IFwiYm90dG9tIHNwYW4tbGVmdFwiXG4gIHwgXCJib3R0b20gc3Bhbi1yaWdodFwiXG4gIHwgXCJsZWZ0IHNwYW4tdG9wXCJcbiAgfCBcImxlZnQgc3Bhbi1ib3R0b21cIlxuICB8IFwicmlnaHQgc3Bhbi10b3BcIlxuICB8IFwicmlnaHQgc3Bhbi1ib3R0b21cIjtcblxuLyoqXG4gKiBFaXRoZXIgYSBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgbmVhcmVzdCBhbmNlc3RvciBgJGFuY2hvcmAsIG9yIHRoZSBzYW1lIHBvc2l0aW9uIHJlbGF0aXZlIHRvIGFcbiAqIHBvaW50IGluIHRoZSB2aWV3cG9ydC5cbiAqL1xuZXhwb3J0IHR5cGUgQW5jaG9yZWRBdCA9XG4gIHwgQW5jaG9yUG9zaXRpb25cbiAgfCB7XG4gICAgICByZWFkb25seSBwb3NpdGlvbjogQW5jaG9yUG9zaXRpb247XG5cbiAgICAgIC8qKiBIb3cgZmFyIGZyb20gdGhlIGFuY2hvciB0aGUgZWxlbWVudCBzaXRzLiBEZWZhdWx0cyB0byBgXCJ4c1wiYC4gKi9cbiAgICAgIHJlYWRvbmx5IGdhcD86IFRTaGlydFNpemU7XG5cbiAgICAgIC8qKiBTaXQgYXQgdGhpcyB2aWV3cG9ydCBwb2ludCBpbnN0ZWFkIG9mIGF0IGFuIGFuY2hvci4gKi9cbiAgICAgIHJlYWRvbmx5IHBvaW50PzogUG9zaXRpb24yZDtcbiAgICB9O1xuXG5jb25zdCBkZWZhdWx0R2FwOiBUU2hpcnRTaXplID0gXCJ4c1wiO1xuXG5leHBvcnQgdHlwZSBBbmNob3JQbHVnaW5Qcm9wcyA9IHtcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG5cbiAgLyoqXG4gICAqIE1ha2VzIHRoZSBlbGVtZW50IGFuIGFuY2hvciBmb3IgdGhlIGVsZW1lbnRzIG9mIGl0cyBzdWJ0cmVlIHRoYXQgZGVjbGFyZSB7QGxpbmsgJGFuY2hvcmVkQXR9LlxuICAgKiBUaGUgbmVhcmVzdCBzdWNoIGFuY2VzdG9yIHdpbnMsIHNvIG5lc3Rpbmcgd29ya3Mgd2l0aG91dCBuYW1pbmcgYW55dGhpbmcuXG4gICAqL1xuICByZWFkb25seSAkYW5jaG9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUG9zaXRpb25zIHRoZSBlbGVtZW50IHJlbGF0aXZlIHRvIGFuIGFuY2hvciwgYWJvdmUgZXZlcnl0aGluZyBlbHNlIG9uIHRoZSBwYWdlIFx1MjAxNCBpdCBlc2NhcGVzXG4gICAqIGNsaXBwaW5nIGFuY2VzdG9ycyBhbmQgc3RhY2tpbmcgY29udGV4dHMsIHNvIGl0IG5lZWRzIG5vIHBvcnRhbC5cbiAgICpcbiAgICogVGhlIGFuY2hvciBpcyB0aGUgbmVhcmVzdCBhbmNlc3RvciBkZWNsYXJpbmcge0BsaW5rICRhbmNob3J9LCBvciB0aGUgZ2l2ZW4gcG9pbnQgd2hlbiBhIHBvaW50XG4gICAqIGlzIHByb3ZpZGVkIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSAkYW5jaG9yZWRBdD86IEFuY2hvcmVkQXQ7XG59O1xuXG5jb25zdCBhbmNob3JOYW1lQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG50eXBlIEFuY2hvcldyYXBwZXJQcm9wcyA9IHtcbiAgcmVhZG9ubHkgaXNBbmNob3I6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGFuY2hvcmVkQXQ6IEFuY2hvcmVkQXQgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVSZWY6IENvbnRyaWJ1dGVSZWY7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVQcm9wczogQ29udHJpYnV0ZVByb3BzO1xuICByZWFkb25seSBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgQW5jaG9yV3JhcHBlckNvbXBvbmVudCA9ICh7XG4gIGlzQW5jaG9yLFxuICBhbmNob3JlZEF0LFxuICBjb250cmlidXRlUmVmLFxuICBjb250cmlidXRlUHJvcHMsXG4gIGNoaWxkcmVuLFxufTogQW5jaG9yV3JhcHBlclByb3BzKSA9PiB7XG4gIGNvbnN0IG93bkFuY2hvck5hbWUgPSB0b0FuY2hvck5hbWUodXNlSWQoKSk7XG4gIGNvbnN0IGluaGVyaXRlZEFuY2hvck5hbWUgPSB1c2VDb250ZXh0KGFuY2hvck5hbWVDb250ZXh0KTtcbiAgY29uc3QgZWxlbWVudFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBwb2ludFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnRyaWJ1dGVSZWYoXG4gICAgdXNlQ2FsbGJhY2soKGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgZWxlbWVudFJlZi5jdXJyZW50ID0gZWxlbWVudDtcbiAgICB9LCBbXSksXG4gICk7XG5cbiAgY29uc3QgcG9zaXRpb24gPSB0eXBlb2YgYW5jaG9yZWRBdCA9PT0gXCJzdHJpbmdcIiA/IGFuY2hvcmVkQXQgOiBhbmNob3JlZEF0Py5wb3NpdGlvbjtcbiAgY29uc3QgcG9pbnQgPSB0eXBlb2YgYW5jaG9yZWRBdCA9PT0gXCJvYmplY3RcIiA/IGFuY2hvcmVkQXQucG9pbnQgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGdhcCA9IHR5cGVvZiBhbmNob3JlZEF0ID09PSBcIm9iamVjdFwiID8gKGFuY2hvcmVkQXQuZ2FwID8/IGRlZmF1bHRHYXApIDogZGVmYXVsdEdhcDtcblxuICBpZiAocG9zaXRpb24gJiYgIXBvaW50ICYmICFpbmhlcml0ZWRBbmNob3JOYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFRyaWVkIHRvIHBvc2l0aW9uIGFuIGVsZW1lbnQgYXQgXCIke3Bvc2l0aW9ufVwiIHdpdGhvdXQgYW4gYW5jaG9yLiBFaXRoZXIgZ2l2ZSBhbiBhbmNlc3RvciB0aGUgJGFuY2hvciBwcm9wLCBvciBhbmNob3IgdG8gYSBwb2ludCBpbnN0ZWFkLmAsXG4gICAgKTtcbiAgfVxuXG4gIC8vIEEgcG9pbnQgYW5jaG9yIGlzIHRoZSBlbGVtZW50J3Mgb3duOyBvdGhlcndpc2UgaXQgcG9zaXRpb25zIGFnYWluc3Qgd2hhdGV2ZXIgYW5jaG9yIGVuY2xvc2VzIGl0LlxuICBjb25zdCBhbmNob3JOYW1lVG9Qb3NpdGlvbkFnYWluc3QgPSBwb2ludCA/IG93bkFuY2hvck5hbWUgOiBpbmhlcml0ZWRBbmNob3JOYW1lO1xuXG4gIGlmIChhbmNob3JlZEF0ICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb250cmlidXRlUHJvcHMoeyBwb3BvdmVyOiBcIm1hbnVhbFwiIH0pO1xuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gZWxlbWVudFJlZi5jdXJyZW50O1xuXG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzQW5jaG9yKSB7XG4gICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGFuY2hvck5hbWVQcm9wZXJ0eSwgb3duQW5jaG9yTmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHBvc2l0aW9uUHJvcGVydHksIHBvc2l0aW9uKTtcbiAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoZ2FwUHJvcGVydHksIGAke3RTaGlydFNpemVJblBpeGVscyhnYXApfXB4YCk7XG5cbiAgICAgIC8vIE9ubHkgdG93YXJkIHRoZSBhbmNob3IsIHNvIHRoZSBlbGVtZW50IHN0aWxsIGxpbmVzIHVwIHdpdGggaXQgb24gdGhlIG90aGVyIGF4aXMuIEFcbiAgICAgIC8vIGZhbGxiYWNrIHRoYXQgbWlycm9ycyB0aGUgcG9zaXRpb24gbWlycm9ycyB0aGlzIG1hcmdpbiB3aXRoIGl0LlxuICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShtYXJnaW5Qcm9wZXJ0eVRvd2FyZHNBbmNob3IocG9zaXRpb24pLCBgJHt0U2hpcnRTaXplSW5QaXhlbHMoZ2FwKX1weGApO1xuXG4gICAgICBpZiAoYW5jaG9yTmFtZVRvUG9zaXRpb25BZ2FpbnN0KSB7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkocG9zaXRpb25BbmNob3JQcm9wZXJ0eSwgYW5jaG9yTmFtZVRvUG9zaXRpb25BZ2FpbnN0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBvaW50KSB7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkocG9pbnRYUHJvcGVydHksIGAke3BvaW50Lnh9cHhgKTtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShwb2ludFlQcm9wZXJ0eSwgYCR7cG9pbnQueX1weGApO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gVGhlIHBvaW50IHJpc2VzIHRvIHRoZSB0b3AgbGF5ZXIgYWxvbmcgd2l0aCB3aGF0IGlzIGFuY2hvcmVkIHRvIGl0LiBBIGBmaXhlZGAgZWxlbWVudCByZXNvbHZlc1xuICAvLyBhZ2FpbnN0IHRoZSBuZWFyZXN0IGFuY2VzdG9yIHRoYXQgdHJhbnNmb3JtcywgZmlsdGVycyBvciBjb250YWlucyBpdHMgc3VidHJlZSwgc28gYSBwb2ludCBsZWZ0XG4gIC8vIGluIHRoZSB0cmVlIGxhbmRzIGF0IHRoZSBjdXJzb3IgcGx1cyB0aGF0IGFuY2VzdG9yJ3Mgb3duIG9mZnNldCBcdTIwMTQgd2hpY2ggaXMgaG93IGEgbWVudSBvcGVuZWRcbiAgLy8gb3ZlciBhIG5hdmlnYXRvciBpdGVtIHVzZWQgdG8gYXBwZWFyIGh1bmRyZWRzIG9mIHBpeGVscyBiZWxvdyB0aGUgY3Vyc29yLlxuICAvL1xuICAvLyBTaG93biBiZWZvcmUgdGhlIGVsZW1lbnQgYW5jaG9yZWQgdG8gaXQ6IGFuIGFuY2hvciBoYXMgdG8gcmVhY2ggdGhlIHRvcCBsYXllciBmaXJzdCwgb3IgdGhlXG4gIC8vIGVsZW1lbnQgcG9zaXRpb25pbmcgYWdhaW5zdCBpdCBmaW5kcyBubyBhbmNob3IgYXQgYWxsIGFuZCBsYW5kcyBpbiB0aGUgdmlld3BvcnQncyBjb3JuZXIuXG4gIC8vXG4gIC8vIE9uY2UsIG9uIG1vdW50OiBhbiBlbGVtZW50IGlzIGFuY2hvcmVkIHRvIGEgcG9pbnQgZm9yIGFzIGxvbmcgYXMgaXQgaXMgbW91bnRlZCwgc2luY2UgdGhlIHBvaW50XG4gIC8vIGlzIHdoZXJlIHRoZSBjdXJzb3Igd2FzIHdoZW4gd2hhdGV2ZXIgb3BlbmVkIGl0IHdhcyBvcGVuZWQuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudCA9IHBvaW50UmVmLmN1cnJlbnQ7XG5cbiAgICBpZiAoIWVsZW1lbnQgfHwgIWlzUG9wb3ZlckNhcGFibGUoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlbGVtZW50LnNob3dQb3BvdmVyKCk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQuaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgZWxlbWVudC5oaWRlUG9wb3ZlcigpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50UmVmLmN1cnJlbnQ7XG5cbiAgICBpZiAoIXBvc2l0aW9uIHx8ICFlbGVtZW50IHx8ICFpc1BvcG92ZXJDYXBhYmxlKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWxlbWVudC5zaG93UG9wb3ZlcigpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmlzQ29ubmVjdGVkKSB7XG4gICAgICAgIGVsZW1lbnQuaGlkZVBvcG92ZXIoKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbcG9zaXRpb25dKTtcblxuICBjb25zdCBjb250ZW50ID0gcG9pbnQgPyAoXG4gICAgPD5cbiAgICAgIHsvKiBBIHplcm8tc2l6ZSBhbmNob3IgYXQgdGhlIHBvaW50LCBzbyBhIGN1cnNvci1hbmNob3JlZCBlbGVtZW50IHBvc2l0aW9ucyBsaWtlIGFueSBvdGhlci4gKi99XG4gICAgICA8ZGl2XG4gICAgICAgIHJlZj17cG9pbnRSZWYgYXMgUmVhY3QuUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50Pn1cbiAgICAgICAgcG9wb3Zlcj1cIm1hbnVhbFwiXG4gICAgICAgIGRhdGEtYW5jaG9yLXBvaW50LXRlc3RcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYW5jaG9yUG9pbnR9XG4gICAgICAgIHN0eWxlPXtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBbYW5jaG9yTmFtZVByb3BlcnR5XTogb3duQW5jaG9yTmFtZSxcbiAgICAgICAgICAgIFtwb2ludFhQcm9wZXJ0eV06IGAke3BvaW50Lnh9cHhgLFxuICAgICAgICAgICAgW3BvaW50WVByb3BlcnR5XTogYCR7cG9pbnQueX1weGAsXG4gICAgICAgICAgfSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gICAgICAgIH1cbiAgICAgIC8+XG5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8Lz5cbiAgKSA6IChcbiAgICBjaGlsZHJlblxuICApO1xuXG4gIGlmIChpc0FuY2hvcikge1xuICAgIHJldHVybiA8YW5jaG9yTmFtZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e293bkFuY2hvck5hbWV9Pntjb250ZW50fTwvYW5jaG9yTmFtZUNvbnRleHQuUHJvdmlkZXI+O1xuICB9XG5cbiAgcmV0dXJuIDw+e2NvbnRlbnR9PC8+O1xufTtcblxuZXhwb3J0IGNvbnN0IGFuY2hvclBsdWdpbiA9IGdldFBsdWdpbjxcbiAgQW5jaG9yUGx1Z2luUHJvcHMsXG4gIFtcbiAgICB0eXBlb2YgY2xhc3NOYW1lUGx1Z2luLFxuICAgIHR5cGVvZiBjb2xvclBsdWdpbixcbiAgICB0eXBlb2YgYmFja2dyb3VuZENvbG9yUGx1Z2luLFxuICAgIHR5cGVvZiBib3JkZXJQbHVnaW4sXG4gICAgdHlwZW9mIHBhZGRpbmdQbHVnaW4sXG4gICAgdHlwZW9mIG1hcmdpblBsdWdpbixcbiAgICB0eXBlb2Ygb3ZlcmZsb3dQbHVnaW4sXG4gIF1cbj4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGFuY2hvciwgJGFuY2hvcmVkQXQsICRjbGFzc05hbWUgfSA9IHByb3BzO1xuXG4gIGlmICghJGFuY2hvciAmJiAkYW5jaG9yZWRBdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgJGFuY2hvcjogdW5kZWZpbmVkLCAkYW5jaG9yZWRBdDogdW5kZWZpbmVkIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRhbmNob3I6IHVuZGVmaW5lZCxcbiAgICAkYW5jaG9yZWRBdDogdW5kZWZpbmVkLFxuXG4gICAgLy8gUmlzaW5nIHRvIHRoZSB0b3AgbGF5ZXIgaXMgYSB0ZWNobmljYWxpdHkgb2YgcG9zaXRpb25pbmcsIGJ1dCB0aGUgYnJvd3NlciBtYWtlcyBpdCBhIGxvb2s6XG4gICAgLy8gY29sb3VycyBvZiBpdHMgb3duLCBhIGJvcmRlciwgcGFkZGluZywgYW5kIGEgbWFyZ2luIHRoYXQgd291bGQgY2VudGVyIHRoZSBlbGVtZW50LiBVbmRvIHRoYXQsXG4gICAgLy8gc28gYW4gZWxlbWVudCBwb3NpdGlvbmVkIHRoaXMgd2F5IGxvb2tzIGxpa2UgaXQgZG9lcyBhbnl3aGVyZSBlbHNlLCBhbmQgbGV0IHdoYXRldmVyIGl0IHNheXNcbiAgICAvLyBhYm91dCBpdHNlbGYgd2luLlxuICAgIC4uLigkYW5jaG9yZWRBdCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICRjb2xvcjogcHJvcHMuJGNvbG9yID8/IFwiaW5oZXJpdFwiLFxuICAgICAgJGJhY2tncm91bmRDb2xvcjogcHJvcHMuJGJhY2tncm91bmRDb2xvciA/PyBcInRyYW5zcGFyZW50XCIsXG4gICAgICAkYm9yZGVyOiB7IHdpZHRoOiBcInplcm9cIiwgLi4ucHJvcHMuJGJvcmRlciB9LFxuICAgICAgJHBhZGRpbmc6IHByb3BzLiRwYWRkaW5nID8/IFwiemVyb1wiLFxuICAgICAgJG1hcmdpbjogcHJvcHMuJG1hcmdpbiA/PyBcInplcm9cIixcbiAgICAgICRvdmVyZmxvdzogcHJvcHMuJG92ZXJmbG93ID8/IFwidmlzaWJsZVwiLFxuICAgIH0pLFxuXG4gICAgJGNsYXNzTmFtZTogY3NzTmFtZXMoJGNsYXNzTmFtZSwge1xuICAgICAgW3N0eWxlcy5hbmNob3JdOiAhISRhbmNob3IsXG4gICAgICBbc3R5bGVzLmFuY2hvcmVkQXRdOiAkYW5jaG9yZWRBdCAhPT0gdW5kZWZpbmVkLFxuICAgIH0pLFxuXG4gICAgJHdyYXBwZXI6IHtcbiAgICAgIENvbXBvbmVudDogQW5jaG9yV3JhcHBlckNvbXBvbmVudCxcbiAgICAgIHByb3BzOiB7IGlzQW5jaG9yOiAhISRhbmNob3IsIGFuY2hvcmVkQXQ6ICRhbmNob3JlZEF0IH0sXG4gICAgfSxcbiAgfTtcbn0pO1xuXG5jb25zdCBtYXJnaW5Qcm9wZXJ0eVRvd2FyZHNBbmNob3IgPSAocG9zaXRpb246IEFuY2hvclBvc2l0aW9uKSA9PiB7XG4gIGlmIChwb3NpdGlvbi5zdGFydHNXaXRoKFwiYm90dG9tXCIpKSB7XG4gICAgcmV0dXJuIFwibWFyZ2luLXRvcFwiO1xuICB9XG5cbiAgaWYgKHBvc2l0aW9uLnN0YXJ0c1dpdGgoXCJ0b3BcIikpIHtcbiAgICByZXR1cm4gXCJtYXJnaW4tYm90dG9tXCI7XG4gIH1cblxuICByZXR1cm4gcG9zaXRpb24uc3RhcnRzV2l0aChcInJpZ2h0XCIpID8gXCJtYXJnaW4tbGVmdFwiIDogXCJtYXJnaW4tcmlnaHRcIjtcbn07XG5cbmNvbnN0IGFuY2hvck5hbWVQcm9wZXJ0eSA9IFwiLS1hbmNob3ItbmFtZVwiO1xuY29uc3QgZ2FwUHJvcGVydHkgPSBcIi0tYW5jaG9yLWdhcFwiO1xuY29uc3QgcG9zaXRpb25BbmNob3JQcm9wZXJ0eSA9IFwiLS1hbmNob3ItdGFyZ2V0XCI7XG5jb25zdCBwb3NpdGlvblByb3BlcnR5ID0gXCItLWFuY2hvci1wb3NpdGlvblwiO1xuY29uc3QgcG9pbnRYUHJvcGVydHkgPSBcIi0tYW5jaG9yLXBvaW50LXhcIjtcbmNvbnN0IHBvaW50WVByb3BlcnR5ID0gXCItLWFuY2hvci1wb2ludC15XCI7XG5cbi8qKiBBbmNob3IgbmFtZXMgYXJlIGRhc2hlZCBpZGVudHMsIHNvIHRoZSBnZW5lcmF0ZWQgaWQgaGFzIHRvIGxvc2UgZXZlcnl0aGluZyBlbHNlLiAqL1xuY29uc3QgdG9BbmNob3JOYW1lID0gKGlkOiBzdHJpbmcpID0+IGAtLWFuY2hvci0ke2lkLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCBcIlwiKX1gO1xuXG50eXBlIFBvcG92ZXJDYXBhYmxlID0gSFRNTEVsZW1lbnQgJiB7IHNob3dQb3BvdmVyOiBWb2lkRnVuY3Rpb247IGhpZGVQb3BvdmVyOiBWb2lkRnVuY3Rpb24gfTtcblxuY29uc3QgaXNQb3BvdmVyQ2FwYWJsZSA9IChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGVsZW1lbnQgaXMgUG9wb3ZlckNhcGFibGUgPT5cbiAgdHlwZW9mIChlbGVtZW50IGFzIFBhcnRpYWw8UG9wb3ZlckNhcGFibGU+KS5zaG93UG9wb3ZlciA9PT0gXCJmdW5jdGlvblwiO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2FuY2hvci9hbmNob3IubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJhbmNob3JcIjogXCJhbmNob3ItbW9kdWxlX19hbmNob3JfX19tLTV1YlwiLFxuICBcImFuY2hvcmVkQXRcIjogXCJhbmNob3ItbW9kdWxlX19hbmNob3JlZEF0X19fVUFyVUtcIixcbiAgXCJhbmNob3JQb2ludFwiOiBcImFuY2hvci1tb2R1bGVfX2FuY2hvclBvaW50X19fc0ExQWNcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBGb2N1c2FibGVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL2ZvY3VzYWJsZVwiO1xuXG5leHBvcnQgdHlwZSAkRm9jdXNhYmxlUHJvcHM8Rm9jdXNlZEl0ZW0+ID0gUmVxdWlyZWQ8Rm9jdXNhYmxlUGx1Z2luUHJvcHM8Rm9jdXNlZEl0ZW0+PltcIiRmb2N1c2FibGVcIl07XG5cbi8qKlxuICogSWRlbnRpZmllcyBhIHNldCBvZiBmb2N1c2FibGVzIGNvbXBldGluZyBmb3Igb25lIGZvY3VzZWQgaXRlbS4gRWxlbWVudHMgam9pbiBpdCBieSBkZWNsYXJpbmdcbiAqIGAkZm9jdXNhYmxlYDsgbm90aGluZyBlbnVtZXJhdGVzIHRoZW0gYXQgdGhlIGNhbGwgc2l0ZS5cbiAqL1xuZXhwb3J0IHR5cGUgRm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbT4gPSB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlzS2V5Ym9hcmROYXZpZ2FibGU6IGZhbHNlO1xuICBmb2N1c2FibGU6IChpdGVtOiBGb2N1c2VkSXRlbSkgPT4gJEZvY3VzYWJsZVByb3BzPEZvY3VzZWRJdGVtPjtcbn07XG5cbi8qKiBXaGljaCBhcnJvdyBrZXlzIG1vdmUgZm9jdXMgd2l0aGluIGEga2V5Ym9hcmQtbmF2aWdhYmxlIGNvbnRleHQuICovXG5leHBvcnQgdHlwZSBLZXlib2FyZE5hdmlnYXRpb25PcmllbnRhdGlvbiA9IFwidmVydGljYWxcIiB8IFwiaG9yaXpvbnRhbFwiIHwgXCJib3RoXCI7XG5cbi8qKlxuICogQSBmb2N1c2FibGUgY29udGV4dCB3aG9zZSBtZW1iZXJzIGFyZSBhbHNvIG5hdmlnYXRlZCB3aXRoIGFycm93IGtleXMsIGluIHRoZSBvcmRlciB0aGV5IHN0YXRlLlxuICogVGhlIGxvd2VzdCBvcmRlciBudW1iZXIgaXMgZm9jdXNlZCB3aGVuIHRoZSBtZW1iZXJzIGFwcGVhciwgdW5sZXNzIHRoZSBjb250ZXh0IHNheXMgb3RoZXJ3aXNlLFxuICogYW5kIGZvY3VzIHJldHVybnMgdG8gdGhlIGVuY2xvc2luZyBjb250ZXh0IHdoZW4gdGhleSBnbyBhd2F5LlxuICovXG5leHBvcnQgdHlwZSBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+ID0ge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBpc0tleWJvYXJkTmF2aWdhYmxlOiB0cnVlO1xuICByZWFkb25seSBvcmllbnRhdGlvbjogS2V5Ym9hcmROYXZpZ2F0aW9uT3JpZW50YXRpb247XG4gIHJlYWRvbmx5IHRha2VzRm9jdXNBc0l0QXBwZWFyczogYm9vbGVhbjtcbiAgZm9jdXNhYmxlOiAoaXRlbTogRm9jdXNlZEl0ZW0sIG9yZGVyTnVtYmVyOiBudW1iZXIpID0+ICRGb2N1c2FibGVQcm9wczxGb2N1c2VkSXRlbT47XG59O1xuXG5leHBvcnQgdHlwZSBBbnlGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtID0gYW55PiA9XG4gIHwgRm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbT5cbiAgfCBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+O1xuXG5jb25zdCBjb250ZXh0c0J5S2V5ID0gbmV3IE1hcDxzdHJpbmcsIEFueUZvY3VzYWJsZUNvbnRleHQ+KCk7XG5cbi8qKlxuICogRGVjbGFyZXMgYSBmb2N1c2FibGUgY29udGV4dC4gVGhlIHNhbWUgaWQgYWx3YXlzIHlpZWxkcyB0aGUgc2FtZSBjb250ZXh0LCBzbyBjYWxsaW5nIHRoaXMgZHVyaW5nXG4gKiByZW5kZXIgaXMgc3RhYmxlIFx1MjAxNCB3aGljaCBpcyB3aGF0IGxldHMgYSBzdXJmYWNlIHdpdGggc2V2ZXJhbCBsaXZlIGluc3RhbmNlcyBuYW1lIG9uZSBjb250ZXh0IHBlclxuICogaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGb2N1c2FibGVDb250ZXh0ID0gPEZvY3VzZWRJdGVtLD4oaWQ6IHN0cmluZyk6IEZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+ID0+XG4gIGdldE9yQ3JlYXRlQ29udGV4dChgZm9jdXNhYmxlOiR7aWR9YCwgKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQ6IEZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+ID0ge1xuICAgICAgaWQsXG4gICAgICBpc0tleWJvYXJkTmF2aWdhYmxlOiBmYWxzZSxcbiAgICAgIGZvY3VzYWJsZTogKGl0ZW0pID0+ICh7IGNvbnRleHQsIGl0ZW0gfSksXG4gICAgfTtcblxuICAgIHJldHVybiBjb250ZXh0O1xuICB9KTtcblxuZXhwb3J0IHR5cGUgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0T3B0aW9ucyA9IHtcbiAgLyoqXG4gICAqIFdoaWNoIGFycm93IGtleXMgbW92ZSBmb2N1cy4gRG93bndhcmRzIGJ5IGRlZmF1bHQsIGFzIG1vc3Qgc2V0cyBvZiB0aGluZ3MgYXJlIGxhaWQgb3V0OiB0aGVcbiAgICoga2V5cyBvZiB0aGUgb3RoZXIgYXhpcyBhcmUgdGhlbiBsZWZ0IHRvIHdoYXRldmVyIHRoZSBtZW1iZXJzIHdhbnQgdGhlbSBmb3IsIHN1Y2ggYXMgYSBtZW1iZXJcbiAgICogb3BlbmluZyBzb21ldGhpbmcgb2YgaXRzIG93biB3aXRoIEFycm93UmlnaHQuXG4gICAqL1xuICByZWFkb25seSBvcmllbnRhdGlvbj86IEtleWJvYXJkTmF2aWdhdGlvbk9yaWVudGF0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBsb3dlc3Qgb3JkZXIgbnVtYmVyIGlzIGZvY3VzZWQgYXMgdGhlIG1lbWJlcnMgYXBwZWFyLiBJdCBpcyBieSBkZWZhdWx0OiBhIHNldCBvZlxuICAgKiBtZW1iZXJzIGFwcGVhcmluZyBpcyB1c3VhbGx5IHNvbWV0aGluZyB0aGUgdXNlciBhc2tlZCBmb3IgYW5kIHdpbGwgZ28gb24gd2l0aC4gTm90IHNvIGZvciBhIHNldFxuICAgKiB0aGF0IGFwcGVhcnMgYmVjYXVzZSB0aGUgcG9pbnRlciByZXN0cyBvbiBzb21ldGhpbmcsIHdoZXJlIHdoYXQgdGhlIHVzZXIgaXMgbG9va2luZyBhdCBpcyB3aGF0XG4gICAqIHRoZSBwb2ludGVyIGlzIG9uLCBhbmQgZm9jdXMgc3RheXMgdGhlcmUgdW50aWwgZWl0aGVyIHRoZSBwb2ludGVyIG9yIHRoZSBrZXlib2FyZCBtb3ZlcyBpdC5cbiAgICovXG4gIHJlYWRvbmx5IHRha2VzRm9jdXNBc0l0QXBwZWFycz86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIERlY2xhcmVzIGEgZm9jdXNhYmxlIGNvbnRleHQgd2hvc2UgbWVtYmVycyBhcmUgbmF2aWdhdGVkIHdpdGggYXJyb3cga2V5cy4gQXMgd2l0aFxuICoge0BsaW5rIGdldEZvY3VzYWJsZUNvbnRleHR9LCB0aGUgc2FtZSBpZCBhbHdheXMgeWllbGRzIHRoZSBzYW1lIGNvbnRleHQgXHUyMDE0IHRoZSBzYW1lIGlkIHdpdGggdGhlXG4gKiBzYW1lIG9wdGlvbnMsIHRoYXQgaXMuIEEgY29udGV4dCB3aXRoIG90aGVyIG9wdGlvbnMgaXMgYSBjb250ZXh0IG9mIGl0cyBvd24sIHdoYXRldmVyIGl0IGlzXG4gKiBuYW1lZCwgc28gYSBzdXJmYWNlIHRoYXQgYXNrcyBmb3IgaXRzIGNvbnRleHQgYnkgdGhlIHNhbWUgbmFtZSB3aXRoIG90aGVyIG9wdGlvbnMgbW92ZXMgaXRzXG4gKiBtZW1iZXJzIHRoZXJlIGFzIHRoZXkgcmVuZGVyIGFnYWluLCBhbmQgdGhleSBhcHBlYXIgYW5ldyBhcyBmYXIgYXMgdGhhdCBjb250ZXh0IGlzIGNvbmNlcm5lZC5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCA9IDxGb2N1c2VkSXRlbSw+KFxuICBpZDogc3RyaW5nLFxuICBvcHRpb25zOiBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHRPcHRpb25zID0ge30sXG4pOiBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+ID0+IHtcbiAgY29uc3Qgb3JpZW50YXRpb24gPSBvcHRpb25zLm9yaWVudGF0aW9uID8/IFwidmVydGljYWxcIjtcbiAgY29uc3QgdGFrZXNGb2N1c0FzSXRBcHBlYXJzID0gb3B0aW9ucy50YWtlc0ZvY3VzQXNJdEFwcGVhcnMgPz8gdHJ1ZTtcblxuICBjb25zdCBrZXkgPSBga2V5Ym9hcmQtbmF2aWdhYmxlOiR7aWR9fCR7b3JpZW50YXRpb259fCR7dGFrZXNGb2N1c0FzSXRBcHBlYXJzID8gXCJ0YWtpbmdcIiA6IFwibGVhdmluZ1wifS1mb2N1c2A7XG5cbiAgcmV0dXJuIGdldE9yQ3JlYXRlQ29udGV4dChrZXksICgpID0+IHtcbiAgICBjb25zdCBjb250ZXh0OiBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+ID0ge1xuICAgICAgaWQsXG4gICAgICBpc0tleWJvYXJkTmF2aWdhYmxlOiB0cnVlLFxuICAgICAgb3JpZW50YXRpb24sXG4gICAgICB0YWtlc0ZvY3VzQXNJdEFwcGVhcnMsXG4gICAgICBmb2N1c2FibGU6IChpdGVtLCBvcmRlck51bWJlcikgPT4gKHsgY29udGV4dCwgaXRlbSwgb3JkZXJOdW1iZXIgfSksXG4gICAgfTtcblxuICAgIHJldHVybiBjb250ZXh0O1xuICB9KTtcbn07XG5cbmNvbnN0IGdldE9yQ3JlYXRlQ29udGV4dCA9IDxUIGV4dGVuZHMgQW55Rm9jdXNhYmxlQ29udGV4dD4oa2V5OiBzdHJpbmcsIGNyZWF0ZTogKCkgPT4gVCk6IFQgPT4ge1xuICBjb25zdCBleGlzdGluZyA9IGNvbnRleHRzQnlLZXkuZ2V0KGtleSk7XG5cbiAgaWYgKGV4aXN0aW5nKSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nIGFzIFQ7XG4gIH1cblxuICBjb25zdCBjcmVhdGVkID0gY3JlYXRlKCk7XG5cbiAgY29udGV4dHNCeUtleS5zZXQoa2V5LCBjcmVhdGVkKTtcblxuICByZXR1cm4gY3JlYXRlZDtcbn07XG4iLCAiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyAkRm9jdXNhYmxlUHJvcHMgfSBmcm9tIFwiLi9nZXQtZm9jdXNhYmxlLWNvbnRleHRcIjtcblxuLyoqXG4gKiBDYXJyaWVzIHRoZSBmb2N1c2FibGUgYW4gZWxlbWVudCBpcywgYXMgZGVjaWRlZCBieSB0aGUgc3VyZmFjZSBpdCByZW5kZXJzIGluIHJhdGhlciB0aGFuIGJ5IHRoZVxuICogZWxlbWVudCBpdHNlbGY6IHdoaWNoIGNvbnRleHQgaXQgY29tcGV0ZXMgaW4sIHdoaWNoIGl0ZW0gaXQgc3RhbmRzIGZvciwgYW5kIHdoZXJlIGl0IHNpdHMgYW1vbmdcbiAqIHRoZSBvdGhlcnMuXG4gKlxuICogQSBzdXJmYWNlIHRoYXQga25vd3MgaXRzIGl0ZW1zIFx1MjAxNCBhIG1lbnUsIGEgdG9vbGJhciBcdTIwMTQgcHJvdmlkZXMgb25lIG9mIHRoZXNlIHBlciBpdGVtOyB3aGF0ZXZlclxuICogZHJhd3MgdGhlIGl0ZW0gYWRvcHRzIGl0IHRocm91Z2gge0BsaW5rIHVzZUZvY3VzYWJsZUl0ZW19IHdoaWxlIGtub3dpbmcgbm90aGluZyBhYm91dCB0aGVcbiAqIHN1cmZhY2UsIHdoaWNoIGlzIHdoYXQgbGV0cyBhIGR1bWIgY29tcG9uZW50IGJlIGtleWJvYXJkLW5hdmlnYWJsZSBpbiBvbmUgc3VyZmFjZSBhbmQgb3JkaW5hcnlcbiAqIGluIGFub3RoZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBjb250ZXh0Rm9yRm9jdXNhYmxlSXRlbSA9IGNyZWF0ZUNvbnRleHQ8JEZvY3VzYWJsZVByb3BzPGFueT4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbi8qKlxuICogVGhlIGAkZm9jdXNhYmxlYCBvZiB0aGUgaXRlbSBhIGNvbXBvbmVudCBkcmF3cywgd2hlbiB0aGUgc3VyZmFjZSBhcm91bmQgaXQgZGVjaWRlZCBvbmUuXG4gKiBgdW5kZWZpbmVkYCBvdXRzaWRlIHN1Y2ggYSBzdXJmYWNlLCB3aGljaCBpcyB3aGF0IG1ha2VzIGFkb3B0aW5nIGl0IGEgbWF0dGVyIG9mIHBhc3NpbmcgaXQgb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgUm93ID0gKHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0pID0+IChcbiAqICAgPENsaWNrYWJsZUxpICRmb2N1c2FibGU9e3VzZUZvY3VzYWJsZUl0ZW0oKX0+e2NoaWxkcmVufTwvQ2xpY2thYmxlTGk+XG4gKiApO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VGb2N1c2FibGVJdGVtID0gKCkgPT4gdXNlQ29udGV4dChjb250ZXh0Rm9yRm9jdXNhYmxlSXRlbSk7XG4iLCAiaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgeyBnZXRIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4uL2hvdmVyYWJsZVwiO1xuaW1wb3J0IHsgdHlwZSBNdXRhYmxlUmVmT2JqZWN0LCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNvbnRleHRJc0JlaW5nSG92ZXJlZEluamVjdGFibGUgfSBmcm9tIFwiLi9fcHJpdmF0ZS9jb250ZXh0LWlzLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZVwiO1xuXG5leHBvcnQgY29uc3QgdXNlTG9jYWxIb3ZlcmFibGUgPSA8RWxlbSBleHRlbmRzIEhUTUxFbGVtZW50PigpID0+IHtcbiAgY29uc3QgaG92ZXJhYmxlQ29udGV4dCA9IHVzZU1lbW8oKCkgPT4gZ2V0SG92ZXJhYmxlQ29udGV4dDxNdXRhYmxlUmVmT2JqZWN0PEVsZW0gfCBudWxsPj4oKSwgW10pO1xuICBjb25zdCByZWYgPSB1c2VSZWY8RWxlbT4obnVsbCk7XG4gIGNvbnN0IGl0ZW1CZWluZ0hvdmVyZWQgPSB1c2VTeW5jSW5qZWN0KGNvbnRleHRJc0JlaW5nSG92ZXJlZEluamVjdGFibGUsIGhvdmVyYWJsZUNvbnRleHQpO1xuXG4gIHJldHVybiB7XG4gICAgcmVmLFxuICAgIGNvbnRleHQ6IGhvdmVyYWJsZUNvbnRleHQuaG92ZXJhYmxlKHJlZiksXG4gICAgY29tcG9uZW50SXNIb3ZlcmVkOiBpdGVtQmVpbmdIb3ZlcmVkLFxuICB9O1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNBQSwrQkFBZ0Q7QUFFaEQsbUJBQStDO0FBd0R0QztBQXBDRixJQUFNLG9CQUFvQixDQUFDLG1CQUFrRDtBQUNsRixRQUFNLCtCQUEyQixxQkFBMEIsTUFBUztBQUNwRSxRQUFNLGlCQUFhLHFCQUFPLGNBQWM7QUFFeEMsOEJBQVUsTUFBTTtBQUNkLGVBQVcsVUFBVTtBQUFBLEVBQ3ZCLENBQUM7QUFFRCw4QkFBVSxNQUFNO0FBQ2QsVUFBTSw0QkFBNEIsQ0FBQyxVQUF3QjtBQUN6RCxVQUFJLFVBQVUseUJBQXlCLFNBQVM7QUFDOUMsbUJB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QUFBLEVBQ3RCLHdCQUF3QjtBQUFBLEVBQ3hCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHlCQUF5QjtBQUFBLEVBQ3pCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHVCQUF1QjtBQUFBLEVBQ3ZCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHlCQUF5QjtBQUFBLEVBQ3pCLHlCQUF5QjtBQUFBLEVBQ3pCLHVCQUF1QjtBQUFBLEVBQ3ZCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLGlCQUFpQjtBQUFBLEVBQ2pCLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGVBQWU7QUFBQSxFQUNmLGNBQWM7QUFBQSxFQUNkLGNBQWM7QUFBQSxFQUNkLGNBQWM7QUFBQSxFQUNkLGVBQWU7QUFBQSxFQUNmLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGlCQUFpQjtBQUFBLEVBQ2pCLGlCQUFpQjtBQUNuQjs7O0FEN0ZBLElBQUFDLGFBQXlCO0FBY2xCLElBQU0sb0JBQWdCLHFDQUF3RCxDQUFDLFVBQVU7QUFDOUYsTUFBSSxDQUFDLE1BQU0sVUFBVTtBQUNuQixXQUFPLEVBQUUsVUFBVSxPQUFVO0FBQUEsRUFDL0I7QUFFQSxRQUFNLFVBQVUsTUFBTSxhQUFhLE9BQU8sT0FBTyxNQUFNO0FBRXZELFVBQUkscUJBQVMsT0FBTyxHQUFHO0FBQ3JCLFdBQU87QUFBQSxNQUNMLFlBQVksQ0FBQyxNQUFNLFlBQVksdUJBQWMsWUFBWSxPQUFPLEVBQUUsQ0FBQztBQUFBLE1BQ25FLFVBQVU7QUFBQSxJQUNaO0FBQUEsRUFDRjtBQUVBLFFBQU0sVUFBVSxRQUFRLE9BQU8sUUFBUTtBQUN2QyxRQUFNLGFBQWEsUUFBUSxVQUFVLFFBQVE7QUFDN0MsUUFBTSxZQUFZLFFBQVEsU0FBUyxRQUFRO0FBQzNDLFFBQU0sV0FBVyxRQUFRLFFBQVEsUUFBUTtBQUV6QyxTQUFPO0FBQUEsSUFDTCxZQUFZO0FBQUEsTUFDVixNQUFNO0FBQUEsTUFFTjtBQUFBLFFBQ0UsQ0FBQyx1QkFBYyxpQkFBaUIsT0FBTyxFQUFFLENBQUMsR0FBRztBQUFBLFFBQzdDLENBQUMsdUJBQWMsbUJBQW1CLFNBQVMsRUFBRSxDQUFDLEdBQUc7QUFBQSxRQUNqRCxDQUFDLHVCQUFjLG9CQUFvQixVQUFVLEVBQUUsQ0FBQyxHQUFHO0FBQUEsUUFDbkQsQ0FBQyx1QkFBYyxrQkFBa0IsUUFBUSxFQUFFLENBQUMsR0FBRztBQUFBLE1BQ2pEO0FBQUEsSUFDRjtBQUFBLElBRUEsVUFBVTtBQUFBLEVBQ1o7QUFDRixDQUFDOzs7QUVqREQsSUFBQUMsNEJBQTBCOzs7QUNEbUQsSUFBTyxrQ0FBUTtBQUFBLEVBQzFGLDRCQUE0QjtBQUFBLEVBQzVCLDBCQUEwQjtBQUFBLEVBQzFCLGdDQUFnQztBQUFBLEVBQ2hDLDRCQUE0QjtBQUFBLEVBQzVCLDJCQUEyQjtBQUFBLEVBQzNCLDJCQUEyQjtBQUFBLEVBQzNCLDJCQUEyQjtBQUFBLEVBQzNCLDJCQUEyQjtBQUFBLEVBQzNCLDJCQUEyQjtBQUFBLEVBQzNCLDJCQUEyQjtBQUFBLEVBQzNCLDJCQUEyQjtBQUFBLEVBQzNCLDJCQUEyQjtBQUFBLEVBQzNCLGtDQUFrQztBQUFBLEVBQ2xDLDRCQUE0QjtBQUFBLEVBQzVCLDJCQUEyQjtBQUFBLEVBQzNCLDRCQUE0QjtBQUFBLEVBQzVCLDJCQUEyQjtBQUFBLEVBQzNCLDRCQUE0QjtBQUFBLEVBQzVCLDZCQUE2QjtBQUFBLEVBQzdCLGdDQUFnQztBQUFBLEVBQ2hDLGdDQUFnQztBQUFBLEVBQ2hDLGlDQUFpQztBQUFBLEVBQ2pDLHlCQUF5QjtBQUFBLEVBQ3pCLHlCQUF5QjtBQUFBLEVBQ3pCLGtDQUFrQztBQUFBLEVBQ2xDLGdDQUFnQztBQUFBLEVBQ2hDLHNDQUFzQztBQUFBLEVBQ3RDLGtDQUFrQztBQUFBLEVBQ2xDLGlDQUFpQztBQUFBLEVBQ2pDLGlDQUFpQztBQUFBLEVBQ2pDLGlDQUFpQztBQUFBLEVBQ2pDLGlDQUFpQztBQUFBLEVBQ2pDLGlDQUFpQztBQUFBLEVBQ2pDLGlDQUFpQztBQUFBLEVBQ2pDLGlDQUFpQztBQUFBLEVBQ2pDLGlDQUFpQztBQUFBLEVBQ2pDLHdDQUF3QztBQUFBLEVBQ3hDLGtDQUFrQztBQUFBLEVBQ2xDLGlDQUFpQztBQUFBLEVBQ2pDLGtDQUFrQztBQUFBLEVBQ2xDLGlDQUFpQztBQUFBLEVBQ2pDLGtDQUFrQztBQUFBLEVBQ2xDLG1DQUFtQztBQUFBLEVBQ25DLHNDQUFzQztBQUFBLEVBQ3RDLHNDQUFzQztBQUFBLEVBQ3RDLHVDQUF1QztBQUFBLEVBQ3ZDLCtCQUErQjtBQUFBLEVBQy9CLCtCQUErQjtBQUFBLEVBQy9CLGtDQUFrQztBQUFBLEVBQ2xDLGdDQUFnQztBQUFBLEVBQ2hDLHNDQUFzQztBQUFBLEVBQ3RDLGtDQUFrQztBQUFBLEVBQ2xDLGlDQUFpQztBQUFBLEVBQ2pDLGlDQUFpQztBQUFBLEVBQ2pDLGlDQUFpQztBQUFBLEVBQ2pDLGlDQUFpQztBQUFBLEVBQ2pDLGlDQUFpQztBQUFBLEVBQ2pDLGlDQUFpQztBQUFBLEVBQ2pDLGlDQUFpQztBQUFBLEVBQ2pDLGlDQUFpQztBQUFBLEVBQ2pDLHdDQUF3QztBQUFBLEVBQ3hDLGtDQUFrQztBQUFBLEVBQ2xDLGlDQUFpQztBQUFBLEVBQ2pDLGtDQUFrQztBQUFBLEVBQ2xDLGlDQUFpQztBQUFBLEVBQ2pDLGtDQUFrQztBQUFBLEVBQ2xDLG1DQUFtQztBQUFBLEVBQ25DLHNDQUFzQztBQUFBLEVBQ3RDLHNDQUFzQztBQUFBLEVBQ3RDLHVDQUF1QztBQUFBLEVBQ3ZDLCtCQUErQjtBQUFBLEVBQy9CLCtCQUErQjtBQUNqQzs7O0FEekRBLElBQU0saUJBQWlCO0FBQUEsRUFDckIsbUJBQW1CO0FBQUEsRUFDbkIscUJBQXFCO0FBQUEsRUFDckIseUJBQXlCO0FBQzNCO0FBRUEsSUFBTSx5QkFBeUIsQ0FBQyxVQUEwRCxTQUFTO0FBRTVGLElBQU0sNEJBQXdCLHFDQUFnRSxDQUFDLFVBQVU7QUFDOUcsUUFBTSxFQUFFLGtCQUFrQixNQUFNLElBQUk7QUFDcEMsUUFBTSxFQUFFLFFBQVEsT0FBTyxNQUFNLElBQUksT0FBTyxVQUFVLFdBQVcsRUFBRSxRQUFRLE1BQU0sSUFBSyxTQUFTLENBQUM7QUFFNUYsUUFBTSxjQUFjLFNBQVUsdUJBQXVCLE1BQU0sSUFBSSxlQUFlLE1BQU0sSUFBSSxTQUFVO0FBQ2xHLFFBQU0sYUFBYSxRQUFTLHVCQUF1QixLQUFLLElBQUksZUFBZSxLQUFLLElBQUksUUFBUztBQUM3RixRQUFNLGFBQWEsUUFBUyx1QkFBdUIsS0FBSyxJQUFJLGVBQWUsS0FBSyxJQUFJLFFBQVM7QUFFN0YsU0FBTztBQUFBLElBQ0wsWUFBWTtBQUFBLE1BQ1YsTUFBTTtBQUFBLE1BQ04sY0FBYyxnQ0FBc0Isb0JBQW9CLFdBQVcsRUFBRSxJQUFJO0FBQUEsTUFDekUsYUFBYSxnQ0FBc0IsMEJBQTBCLFVBQVUsRUFBRSxJQUFJO0FBQUEsTUFDN0UsYUFBYSxnQ0FBc0IsMEJBQTBCLFVBQVUsRUFBRSxJQUFJO0FBQUEsSUFDL0U7QUFBQSxJQUNBLGtCQUFrQjtBQUFBLEVBQ3BCO0FBQ0YsQ0FBQzs7O0FFeENELElBQUFDLDRCQUEwQjs7O0FDRCtCLElBQU8sd0JBQVE7QUFBQSxFQUN0RSx3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4QixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0Qix3QkFBd0I7QUFBQSxFQUN4Qix1QkFBdUI7QUFBQSxFQUN2QixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QiwwQkFBMEI7QUFBQSxFQUMxQixpQ0FBaUM7QUFBQSxFQUNqQyxvQ0FBb0M7QUFBQSxFQUNwQyx3QkFBd0I7QUFBQSxFQUN4QiwrQkFBK0I7QUFBQSxFQUMvQixrQ0FBa0M7QUFBQSxFQUNsQyw4QkFBOEI7QUFBQSxFQUM5QixxQ0FBcUM7QUFBQSxFQUNyQyx3Q0FBd0M7QUFBQSxFQUN4QywwQkFBMEI7QUFBQSxFQUMxQixpQ0FBaUM7QUFBQSxFQUNqQyxvQ0FBb0M7QUFBQSxFQUNwQyx5QkFBeUI7QUFBQSxFQUN6QixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQyx5QkFBeUI7QUFBQSxFQUN6QixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQyx5QkFBeUI7QUFBQSxFQUN6QixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQyx5QkFBeUI7QUFBQSxFQUN6QixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQyx5QkFBeUI7QUFBQSxFQUN6QixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQyx5QkFBeUI7QUFBQSxFQUN6QixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQyx5QkFBeUI7QUFBQSxFQUN6QixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQyx5QkFBeUI7QUFBQSxFQUN6QixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQyxnQ0FBZ0M7QUFBQSxFQUNoQyx1Q0FBdUM7QUFBQSxFQUN2QywwQ0FBMEM7QUFBQSxFQUMxQywwQkFBMEI7QUFBQSxFQUMxQixpQ0FBaUM7QUFBQSxFQUNqQyxvQ0FBb0M7QUFBQSxFQUNwQyx5QkFBeUI7QUFBQSxFQUN6QixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQywwQkFBMEI7QUFBQSxFQUMxQixpQ0FBaUM7QUFBQSxFQUNqQyxvQ0FBb0M7QUFBQSxFQUNwQyx5QkFBeUI7QUFBQSxFQUN6QixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQywwQkFBMEI7QUFBQSxFQUMxQixpQ0FBaUM7QUFBQSxFQUNqQyxvQ0FBb0M7QUFBQSxFQUNwQywyQkFBMkI7QUFBQSxFQUMzQixrQ0FBa0M7QUFBQSxFQUNsQyxxQ0FBcUM7QUFBQSxFQUNyQyw4QkFBOEI7QUFBQSxFQUM5QixxQ0FBcUM7QUFBQSxFQUNyQyx3Q0FBd0M7QUFBQSxFQUN4Qyw4QkFBOEI7QUFBQSxFQUM5QixxQ0FBcUM7QUFBQSxFQUNyQyx3Q0FBd0M7QUFBQSxFQUN4QywrQkFBK0I7QUFBQSxFQUMvQixzQ0FBc0M7QUFBQSxFQUN0Qyx5Q0FBeUM7QUFBQSxFQUN6Qyx1QkFBdUI7QUFBQSxFQUN2Qiw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQyx1QkFBdUI7QUFBQSxFQUN2Qiw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQywwQkFBMEI7QUFBQSxFQUMxQix5QkFBeUI7QUFBQSxFQUN6Qix3QkFBd0I7QUFBQSxFQUN4Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qiw2QkFBNkI7QUFBQSxFQUM3QiwyQkFBMkI7QUFBQSxFQUMzQixpQ0FBaUM7QUFBQSxFQUNqQyw2QkFBNkI7QUFBQSxFQUM3Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1QixtQ0FBbUM7QUFBQSxFQUNuQyw2QkFBNkI7QUFBQSxFQUM3Qiw0QkFBNEI7QUFBQSxFQUM1Qiw2QkFBNkI7QUFBQSxFQUM3Qiw0QkFBNEI7QUFBQSxFQUM1Qiw2QkFBNkI7QUFBQSxFQUM3Qiw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyxrQ0FBa0M7QUFBQSxFQUNsQywwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiw0QkFBNEI7QUFBQSxFQUM1QiwyQkFBMkI7QUFBQSxFQUMzQiwwQkFBMEI7QUFBQSxFQUMxQix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6QiwwQkFBMEI7QUFBQSxFQUMxQiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixtQ0FBbUM7QUFBQSxFQUNuQywrQkFBK0I7QUFBQSxFQUMvQiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5QixxQ0FBcUM7QUFBQSxFQUNyQywrQkFBK0I7QUFBQSxFQUMvQiw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQyxtQ0FBbUM7QUFBQSxFQUNuQyxvQ0FBb0M7QUFBQSxFQUNwQyw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw2QkFBNkI7QUFBQSxFQUM3Qiw0QkFBNEI7QUFBQSxFQUM1QiwyQkFBMkI7QUFBQSxFQUMzQiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiwyQkFBMkI7QUFBQSxFQUMzQiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QixvQ0FBb0M7QUFBQSxFQUNwQyxnQ0FBZ0M7QUFBQSxFQUNoQywrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQixzQ0FBc0M7QUFBQSxFQUN0QyxnQ0FBZ0M7QUFBQSxFQUNoQywrQkFBK0I7QUFBQSxFQUMvQixnQ0FBZ0M7QUFBQSxFQUNoQywrQkFBK0I7QUFBQSxFQUMvQixnQ0FBZ0M7QUFBQSxFQUNoQyxpQ0FBaUM7QUFBQSxFQUNqQyxvQ0FBb0M7QUFBQSxFQUNwQyxvQ0FBb0M7QUFBQSxFQUNwQyxxQ0FBcUM7QUFBQSxFQUNyQyw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3QiwyQkFBMkI7QUFBQSxFQUMzQiwwQkFBMEI7QUFBQSxFQUMxQix5QkFBeUI7QUFBQSxFQUN6Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix5QkFBeUI7QUFBQSxFQUN6QiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiw4QkFBOEI7QUFBQSxFQUM5Qiw0QkFBNEI7QUFBQSxFQUM1QixrQ0FBa0M7QUFBQSxFQUNsQyw4QkFBOEI7QUFBQSxFQUM5Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3QixvQ0FBb0M7QUFBQSxFQUNwQyw4QkFBOEI7QUFBQSxFQUM5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QSxFQUNwQiw2QkFBNkI7QUFBQSxFQUM3Qiw0QkFBNEI7QUFBQSxFQUM1QiwyQkFBMkI7QUFBQSxFQUMzQix5QkFBeUI7QUFBQSxFQUN6QixtQkFBbUI7QUFBQSxFQUNuQiwyQkFBMkI7QUFBQSxFQUMzQix3QkFBd0I7QUFBQSxFQUN4QixrQkFBa0I7QUFBQSxFQUNsQiwwQkFBMEI7QUFBQSxFQUMxQix1QkFBdUI7QUFBQSxFQUN2QixrQkFBa0I7QUFBQSxFQUNsQiwwQkFBMEI7QUFBQSxFQUMxQix1QkFBdUI7QUFBQSxFQUN2QixrQkFBa0I7QUFBQSxFQUNsQiwwQkFBMEI7QUFBQSxFQUMxQix1QkFBdUI7QUFBQSxFQUN2QixpQkFBaUI7QUFBQSxFQUNqQix5QkFBeUI7QUFBQSxFQUN6QixzQkFBc0I7QUFBQSxFQUN0QixnQkFBZ0I7QUFBQSxFQUNoQix3QkFBd0I7QUFBQSxFQUN4QixxQkFBcUI7QUFBQSxFQUNyQixnQkFBZ0I7QUFBQSxFQUNoQix3QkFBd0I7QUFBQSxFQUN4QixxQkFBcUI7QUFBQSxFQUNyQixnQkFBZ0I7QUFBQSxFQUNoQix3QkFBd0I7QUFBQSxFQUN4QixxQkFBcUI7QUFBQSxFQUNyQixpQkFBaUI7QUFBQSxFQUNqQix5QkFBeUI7QUFBQSxFQUN6QixzQkFBc0I7QUFBQSxFQUN0QixrQkFBa0I7QUFBQSxFQUNsQiwwQkFBMEI7QUFBQSxFQUMxQix1QkFBdUI7QUFBQSxFQUN2QixrQkFBa0I7QUFBQSxFQUNsQiwwQkFBMEI7QUFBQSxFQUMxQix1QkFBdUI7QUFBQSxFQUN2QixrQkFBa0I7QUFBQSxFQUNsQiwwQkFBMEI7QUFBQSxFQUMxQix1QkFBdUI7QUFBQSxFQUN2QixrQkFBa0I7QUFBQSxFQUNsQiwwQkFBMEI7QUFBQSxFQUMxQix1QkFBdUI7QUFBQSxFQUN2QixrQkFBa0I7QUFBQSxFQUNsQiwwQkFBMEI7QUFBQSxFQUMxQix1QkFBdUI7QUFBQSxFQUN2QixrQkFBa0I7QUFBQSxFQUNsQiwwQkFBMEI7QUFBQSxFQUMxQix1QkFBdUI7QUFBQSxFQUN2QixrQkFBa0I7QUFBQSxFQUNsQiwwQkFBMEI7QUFBQSxFQUMxQix1QkFBdUI7QUFBQSxFQUN2QixrQkFBa0I7QUFBQSxFQUNsQiwwQkFBMEI7QUFBQSxFQUMxQix1QkFBdUI7QUFBQSxFQUN2QixtQkFBbUI7QUFBQSxFQUNuQiwyQkFBMkI7QUFBQSxFQUMzQix3QkFBd0I7QUFBQSxFQUN4QixtQkFBbUI7QUFBQSxFQUNuQiwyQkFBMkI7QUFBQSxFQUMzQix3QkFBd0I7QUFDMUI7OztBQ25FQSxJQUFBQyw2QkFBMEI7QUFhbkIsSUFBTSxpQkFBYSxzQ0FBcUQsQ0FBQyxVQUFVO0FBQ3hGLFFBQU0sRUFBRSxNQUFNLElBQUk7QUFFbEIsTUFBSSxDQUFDLE9BQU87QUFDVixXQUFPLEVBQUUsT0FBTyxPQUFVO0FBQUEsRUFDNUI7QUFFQSxRQUFNLEVBQUUsU0FBUyxLQUFLLFdBQVcsSUFBSTtBQUVyQyxTQUFPO0FBQUEsSUFDTCxZQUFZO0FBQUEsTUFDVixvQkFBVztBQUFBLE1BQ1gsb0JBQVcsa0JBQWtCLE9BQU8sRUFBRTtBQUFBLE1BQ3RDLGFBQWEsb0JBQVcscUJBQXFCLFVBQVUsRUFBRSxJQUFJO0FBQUEsTUFFN0QsT0FBTyxRQUFRLFdBQ1gsb0JBQVcsY0FBYyxHQUFHLEVBQUUsSUFDOUIsTUFDRTtBQUFBLFFBQ0UsSUFBSSxTQUFTLG9CQUFXLHNCQUFzQixJQUFJLE1BQU0sRUFBRSxJQUFJO0FBQUEsUUFDOUQsSUFBSSxNQUFNLG9CQUFXLG1CQUFtQixJQUFJLEdBQUcsRUFBRSxJQUFJO0FBQUEsTUFDdkQsSUFDQTtBQUFBLE1BRU4sTUFBTTtBQUFBLElBQ1I7QUFBQSxJQUVBLE9BQU87QUFBQSxFQUNUO0FBQ0YsQ0FBQzs7O0FDNUNzRCxJQUFPLHVCQUFRO0FBQUEsRUFDcEUsbUJBQW1CO0FBQUEsRUFDbkIsc0JBQXNCO0FBQUEsRUFDdEIsbUJBQW1CO0FBQUEsRUFDbkIsa0JBQWtCO0FBQUEsRUFDbEIsa0JBQWtCO0FBQUEsRUFDbEIsa0JBQWtCO0FBQUEsRUFDbEIsaUJBQWlCO0FBQUEsRUFDakIsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsaUJBQWlCO0FBQUEsRUFDakIsa0JBQWtCO0FBQUEsRUFDbEIsa0JBQWtCO0FBQUEsRUFDbEIsa0JBQWtCO0FBQUEsRUFDbEIsa0JBQWtCO0FBQUEsRUFDbEIsa0JBQWtCO0FBQUEsRUFDbEIsa0JBQWtCO0FBQUEsRUFDbEIsa0JBQWtCO0FBQUEsRUFDbEIsa0JBQWtCO0FBQUEsRUFDbEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsYUFBYTtBQUFBLEVBQ2Isa0JBQWtCO0FBQUEsRUFDbEIsbUJBQW1CO0FBQUEsRUFDbkIsa0JBQWtCO0FBQUEsRUFDbEIsa0JBQWtCO0FBQUEsRUFDbEIsa0JBQWtCO0FBQUEsRUFDbEIsaUJBQWlCO0FBQUEsRUFDakIsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsaUJBQWlCO0FBQUEsRUFDakIsa0JBQWtCO0FBQUEsRUFDbEIsa0JBQWtCO0FBQUEsRUFDbEIsa0JBQWtCO0FBQUEsRUFDbEIsa0JBQWtCO0FBQUEsRUFDbEIsa0JBQWtCO0FBQUEsRUFDbEIsa0JBQWtCO0FBQUEsRUFDbEIsa0JBQWtCO0FBQUEsRUFDbEIsa0JBQWtCO0FBQUEsRUFDbEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsZUFBZTtBQUFBLEVBQ2Ysa0JBQWtCO0FBQUEsRUFDbEIsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsY0FBYztBQUFBLEVBQ2QsY0FBYztBQUFBLEVBQ2QsYUFBYTtBQUFBLEVBQ2IsWUFBWTtBQUFBLEVBQ1osWUFBWTtBQUFBLEVBQ1osWUFBWTtBQUFBLEVBQ1osYUFBYTtBQUFBLEVBQ2IsY0FBYztBQUFBLEVBQ2QsY0FBYztBQUFBLEVBQ2QsY0FBYztBQUFBLEVBQ2QsY0FBYztBQUFBLEVBQ2QsY0FBYztBQUFBLEVBQ2QsY0FBYztBQUFBLEVBQ2QsY0FBYztBQUFBLEVBQ2QsY0FBYztBQUFB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QUFBLEVBQ3JCLHdCQUF3QjtBQUFBLEVBQ3hCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG1CQUFtQjtBQUFBLEVBQ25CLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHFCQUFxQjtBQUFBLEVBQ3JCLGtCQUFrQjtBQUFBLEVBQ2xCLHFCQUFxQjtBQUFBLEVBQ3JCLG1CQUFtQjtBQUFBLEVBQ25CLG9CQUFvQjtBQUFBLEVBQ3BCLGtCQUFrQjtBQUFBLEVBQ2xCLHFCQUFxQjtBQUFBLEVBQ3JCLG1CQUFtQjtBQUFBLEVBQ25CLG9CQUFvQjtBQUFBLEVBQ3BCLGtCQUFrQjtBQUFBLEVBQ2xCLHFCQUFxQjtBQUFBLEVBQ3JCLG1CQUFtQjtBQUFBLEVBQ25CLG9CQUFvQjtBQUFBLEVBQ3BCLG1CQUFtQjtBQUFBLEVBQ25CLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHFCQUFxQjtBQUFBLEVBQ3JCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLHdCQUF3QjtBQUFBLEVBQ3hCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHdCQUF3QjtBQUFBLEVBQ3hCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUN6Qjs7O0FEckVPLElBQU0sbUJBQWUsc0NBQXVELENBQUMsVUFBVTtBQUM1RixNQUFJLENBQUMsTUFBTSxTQUFTO0FBQ2xCLFdBQU8sRUFBRSxTQUFTLE9BQVU7QUFBQSxFQUM5QjtBQUVBLFNBQU87QUFBQSxJQUNMLFlBQVksQ0FBQyxNQUFNLFlBQVksc0JBQWEsV0FBVyxNQUFNLFFBQVEsU0FBUyxLQUFLLE1BQU0sUUFBUSxJQUFJLEVBQUUsQ0FBQztBQUFBLElBRXhHLFNBQVM7QUFBQSxFQUNYO0FBQ0YsQ0FBQzs7O0FFakJELElBQUFDLDZCQUEwQjs7O0FDRGlELElBQU8saUNBQVE7QUFBQSxFQUN4Riw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQywrQkFBK0I7QUFBQSxFQUMvQixnQ0FBZ0M7QUFBQSxFQUNoQyw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw0QkFBNEI7QUFBQSxFQUM1QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3Qiw4QkFBOEI7QUFBQSxFQUM5QiwyQkFBMkI7QUFBQSxFQUMzQiw4QkFBOEI7QUFBQSxFQUM5Qiw0QkFBNEI7QUFBQSxFQUM1Qiw2QkFBNkI7QUFBQSxFQUM3QiwyQkFBMkI7QUFBQSxFQUMzQiw4QkFBOEI7QUFBQSxFQUM5Qiw0QkFBNEI7QUFBQSxFQUM1Qiw2QkFBNkI7QUFBQSxFQUM3QiwyQkFBMkI7QUFBQSxFQUMzQiw4QkFBOEI7QUFBQSxFQUM5Qiw0QkFBNEI7QUFBQSxFQUM1Qiw2QkFBNkI7QUFBQSxFQUM3Qiw0QkFBNEI7QUFBQSxFQUM1QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3Qiw4QkFBOEI7QUFBQSxFQUM5Qiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQywrQkFBK0I7QUFBQSxFQUMvQixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQywrQkFBK0I7QUFBQSxFQUMvQixnQ0FBZ0M7QUFDbEM7OztBRHJFTyxJQUFNLDJCQUF1QixzQ0FBK0QsQ0FBQyxVQUFVO0FBQzVHLE1BQUksQ0FBQyxNQUFNLGlCQUFpQjtBQUMxQixXQUFPLEVBQUUsaUJBQWlCLE9BQVU7QUFBQSxFQUN0QztBQUVBLFNBQU87QUFBQSxJQUNMLFlBQVk7QUFBQSxNQUNWLE1BQU07QUFBQSxNQUNOLCtCQUFhLG9CQUFvQixNQUFNLGdCQUFnQixTQUFTLEtBQUssTUFBTSxnQkFBZ0IsSUFBSSxFQUFFO0FBQUEsSUFDbkc7QUFBQSxJQUVBLGlCQUFpQjtBQUFBLEVBQ25CO0FBQ0YsQ0FBQzs7O0FFcEJELElBQUFDLDZCQUEwQjs7O0FDRCtCLElBQU8sd0JBQVE7QUFBQSxFQUN0RSxVQUFVO0FBQ1o7OztBRElPLElBQU0sbUJBQWUsc0NBQXVELENBQUMsV0FBVztBQUFBLEVBQzdGLFlBQVksQ0FBQyxNQUFNLFlBQVksRUFBRSxDQUFDLHNCQUFhLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxRQUFRLENBQUM7QUFBQSxFQUV6RSxTQUFTO0FBQ1gsRUFBRTs7O0FFVEYsSUFBQUMsNkJBQTBCOzs7QUNEK0IsSUFBTyx3QkFBUTtBQUFBLEVBQ3RFLHFCQUFxQjtBQUFBLEVBQ3JCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG1CQUFtQjtBQUFBLEVBQ25CLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLG1CQUFtQjtBQUFBLEVBQ25CLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHVCQUF1QjtBQUFBLEVBQ3ZCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHdCQUF3QjtBQUFBLEVBQ3hCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVB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QUFhbkMsSUFBTSw4QkFBMEIsOEJBQWdELE1BQVM7QUFhekYsSUFBTSxtQkFBbUIsVUFBTSwyQkFBVyx1QkFBdUI7OztBQzFCeEUsSUFBQUMsc0JBQThCO0FBRTlCLElBQUFDLGlCQUF1RDtBQUdoRCxJQUFNLG9CQUFvQixNQUFnQztBQUMvRCxRQUFNLHVCQUFtQix3QkFBUSxNQUFNLG9CQUFtRCxHQUFHLENBQUMsQ0FBQztBQUMvRixRQUFNLFVBQU0sdUJBQWEsSUFBSTtBQUM3QixRQUFNLHVCQUFtQixtQ0FBYyxpQ0FBaUMsZ0JBQWdCO0FBRXhGLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQSxTQUFTLGlCQUFpQixVQUFVLEdBQUc7QUFBQSxJQUN2QyxvQkFBb0I7QUFBQSxFQUN0QjtBQUNGOyIsCiAgIm5hbWVzIjogWyJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJ0b0NvbnRleHRNYXAiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfcmVhY3RfZG9tIiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9mcCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgInN0eWxlcyIsICJpbXBvcnRfZnAiLCAibG9kYXNoQ2FwaXRhbGl6ZSIsICJpbXBvcnRfZnAiLCAiYWxpYXNUb05vbWluYWwiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpbXBvcnRfZmVhdHVyZV9jb3JlIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9mcCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJtb2R1bGVzIiwgIm1vZHVsZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaXNQZXJjZW50YWdlIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJhbGlhc1RvTm9taW5hbCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X21vYnhfcmVhY3QiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZnAiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfdGVzdF91dGlscyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfdGVzdF91dGlscyIsICJzdHlsZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3Rlc3RfdXRpbHMiLCAic3R5bGVzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcmVhY3RfZG9tIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9yZWFjdF9kb20iLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAic3RvcFByb3BhZ2F0aW9uIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgImlzUG9wb3ZlckNhcGFibGUiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9yZWFjdCJdCn0K