@sapui5/sap.fe.controls 1.140.0 → 1.141.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/controls/.library +1 -1
  3. package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.js +97 -16
  4. package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.tsx +110 -11
  5. package/src/sap/fe/controls/easyFilter/EasyFilterInput.js +28 -28
  6. package/src/sap/fe/controls/easyFilter/EasyFilterInput.tsx +41 -34
  7. package/src/sap/fe/controls/easyFilter/PXFeedback.js +26 -0
  8. package/src/sap/fe/controls/easyFilter/PXFeedback.ts +14 -0
  9. package/src/sap/fe/controls/library.js +1 -1
  10. package/src/sap/fe/controls/messagebundle.properties +7 -1
  11. package/src/sap/fe/controls/messagebundle_ar.properties +1 -2
  12. package/src/sap/fe/controls/messagebundle_bg.properties +1 -2
  13. package/src/sap/fe/controls/messagebundle_ca.properties +1 -2
  14. package/src/sap/fe/controls/messagebundle_cnr.properties +1 -2
  15. package/src/sap/fe/controls/messagebundle_cs.properties +1 -2
  16. package/src/sap/fe/controls/messagebundle_cy.properties +1 -2
  17. package/src/sap/fe/controls/messagebundle_da.properties +1 -2
  18. package/src/sap/fe/controls/messagebundle_de.properties +2 -3
  19. package/src/sap/fe/controls/messagebundle_el.properties +1 -2
  20. package/src/sap/fe/controls/messagebundle_en.properties +1 -2
  21. package/src/sap/fe/controls/messagebundle_en_GB.properties +1 -2
  22. package/src/sap/fe/controls/messagebundle_en_US_saprigi.properties +1 -2
  23. package/src/sap/fe/controls/messagebundle_es.properties +1 -2
  24. package/src/sap/fe/controls/messagebundle_es_MX.properties +1 -2
  25. package/src/sap/fe/controls/messagebundle_et.properties +1 -2
  26. package/src/sap/fe/controls/messagebundle_fi.properties +1 -2
  27. package/src/sap/fe/controls/messagebundle_fr.properties +1 -2
  28. package/src/sap/fe/controls/messagebundle_fr_CA.properties +1 -2
  29. package/src/sap/fe/controls/messagebundle_hi.properties +1 -2
  30. package/src/sap/fe/controls/messagebundle_hr.properties +1 -2
  31. package/src/sap/fe/controls/messagebundle_hu.properties +1 -2
  32. package/src/sap/fe/controls/messagebundle_id.properties +1 -2
  33. package/src/sap/fe/controls/messagebundle_it.properties +1 -2
  34. package/src/sap/fe/controls/messagebundle_iw.properties +1 -2
  35. package/src/sap/fe/controls/messagebundle_ja.properties +1 -2
  36. package/src/sap/fe/controls/messagebundle_kk.properties +1 -2
  37. package/src/sap/fe/controls/messagebundle_ko.properties +1 -2
  38. package/src/sap/fe/controls/messagebundle_lt.properties +1 -2
  39. package/src/sap/fe/controls/messagebundle_lv.properties +1 -2
  40. package/src/sap/fe/controls/messagebundle_mk.properties +1 -2
  41. package/src/sap/fe/controls/messagebundle_ms.properties +1 -2
  42. package/src/sap/fe/controls/messagebundle_nl.properties +1 -2
  43. package/src/sap/fe/controls/messagebundle_no.properties +1 -2
  44. package/src/sap/fe/controls/messagebundle_pl.properties +1 -2
  45. package/src/sap/fe/controls/messagebundle_pt.properties +1 -2
  46. package/src/sap/fe/controls/messagebundle_pt_PT.properties +1 -2
  47. package/src/sap/fe/controls/messagebundle_ro.properties +1 -2
  48. package/src/sap/fe/controls/messagebundle_ru.properties +1 -2
  49. package/src/sap/fe/controls/messagebundle_sh.properties +1 -2
  50. package/src/sap/fe/controls/messagebundle_sk.properties +1 -2
  51. package/src/sap/fe/controls/messagebundle_sl.properties +1 -2
  52. package/src/sap/fe/controls/messagebundle_sr.properties +1 -2
  53. package/src/sap/fe/controls/messagebundle_sv.properties +1 -2
  54. package/src/sap/fe/controls/messagebundle_th.properties +1 -2
  55. package/src/sap/fe/controls/messagebundle_tr.properties +1 -2
  56. package/src/sap/fe/controls/messagebundle_uk.properties +1 -2
  57. package/src/sap/fe/controls/messagebundle_vi.properties +1 -2
  58. package/src/sap/fe/controls/messagebundle_zh_CN.properties +1 -2
  59. package/src/sap/fe/controls/messagebundle_zh_TW.properties +1 -2
  60. package/src/sap/fe/controls/shortcuts/ShortcutExplanationProvider.js +1 -2
  61. package/src/sap/fe/controls/shortcuts/ShortcutExplanationProvider.tsx +0 -1
@@ -34,8 +34,11 @@ import deepClone from "sap/base/util/deepClone";
34
34
  import { and, bindState } from "sap/fe/base/BindingToolkit";
35
35
  import EasyFilterInput from "sap/fe/controls/easyFilter/EasyFilterInput";
36
36
  import type EasyFilterToken from "sap/fe/controls/easyFilter/Token";
37
+ import HBox from "sap/m/HBox";
37
38
  import MessageStrip from "sap/m/MessageStrip";
39
+ import MessageToast from "sap/m/MessageToast";
38
40
  import OverflowToolbar from "sap/m/OverflowToolbar";
41
+ import ToggleButton from "sap/m/ToggleButton";
39
42
  import ToolbarSpacer from "sap/m/ToolbarSpacer";
40
43
  import MessageType from "sap/ui/core/message/MessageType";
41
44
  import FilterOperator from "sap/ui/model/FilterOperator";
@@ -45,6 +48,7 @@ import type { EasyFilterMetadata, EasyFilterResult, PropertyMetadata } from "ux/
45
48
  import type { Success } from "ux/eng/fioriai/reuse/shared";
46
49
  import type { EventHandler } from "../../../../../../../types/extension_types";
47
50
  import { AINotice } from "./AINotice";
51
+ import { triggerPXIntegration } from "./PXFeedback";
48
52
  import EasyFilterUtils from "./utils";
49
53
 
50
54
  //For current release we are ignoring "All" and "Any"
@@ -201,6 +205,10 @@ export default class EasyFilterBarContainer extends Control {
201
205
  singleValueMessageStripText?: string;
202
206
  messageStripText?: string;
203
207
  showMessageStrip?: boolean;
208
+ messageStripType: MessageType;
209
+ thumbButtonEnabled: boolean;
210
+ thumbUpButtonPressed: boolean;
211
+ thumbDownButtonPressed: boolean;
204
212
  }> = {
205
213
  showResult: false,
206
214
  tokens: [] as TokenDefinition[],
@@ -208,7 +216,11 @@ export default class EasyFilterBarContainer extends Control {
208
216
  showSingleValueMessageStrip: false,
209
217
  singleValueMessageStripText: "",
210
218
  messageStripText: "",
211
- showMessageStrip: false
219
+ showMessageStrip: false,
220
+ messageStripType: MessageType.Error,
221
+ thumbButtonEnabled: true,
222
+ thumbUpButtonPressed: false,
223
+ thumbDownButtonPressed: false
212
224
  };
213
225
 
214
226
  private innerControlPopover?: Popover;
@@ -386,8 +398,9 @@ export default class EasyFilterBarContainer extends Control {
386
398
  }
387
399
  } else {
388
400
  // error
389
- this.easyFilterInput.current?.setAsInvalid(easyFilterResult.message);
390
401
  this.removeNonMandatoryTokens();
402
+ this.setMessageStrip(easyFilterResult.message);
403
+ this.state.messageStripType = MessageType.Warning;
391
404
  Log.error("Error while generating filter criteria: ", easyFilterResult.message);
392
405
  }
393
406
 
@@ -407,14 +420,14 @@ export default class EasyFilterBarContainer extends Control {
407
420
  const tokens = [...this.state.tokens].filter((token) => token.isRequired);
408
421
 
409
422
  // Clear the previous message strip for validated filters
410
- this.clearMessageStripForValidatedFilters();
423
+ this.clearMessageStrip();
411
424
 
412
425
  // Validate and apply the filter criteria
413
426
  EasyFilterUtils.formatData(
414
427
  tokens,
415
428
  easyFilterResult.data.filter,
416
429
  this.filterBarMetadata as EasyFilterPropertyMetadata[],
417
- this.setMessageStripForValidatedFilters.bind(this)
430
+ this.setMessageStrip.bind(this)
418
431
  );
419
432
 
420
433
  //We only have to call the dataFetcher on the VH tokens which have been asked by the user
@@ -469,6 +482,9 @@ export default class EasyFilterBarContainer extends Control {
469
482
 
470
483
  const updatedTokens = this.verifySingleSelectTokenValues(tokens);
471
484
  this.state.showResult = true;
485
+ this.state.thumbButtonEnabled = true;
486
+ this.state.thumbDownButtonPressed = false;
487
+ this.state.thumbUpButtonPressed = false;
472
488
  this.state.tokens = updatedTokens;
473
489
  }
474
490
  }
@@ -493,12 +509,18 @@ export default class EasyFilterBarContainer extends Control {
493
509
  return tokens;
494
510
  }
495
511
 
496
- clearMessageStripForValidatedFilters(): void {
512
+ clearMessageStrip(): void {
513
+ this.state.thumbDownButtonPressed = false;
514
+ this.state.thumbUpButtonPressed = false;
497
515
  this.state.showMessageStrip = false;
498
516
  this.state.messageStripText = "";
517
+ this.state.messageStripType = MessageType.Error;
499
518
  }
500
519
 
501
- setMessageStripForValidatedFilters(text: string): void {
520
+ setMessageStrip(text: string): void {
521
+ this.state.thumbDownButtonPressed = false;
522
+ this.state.thumbUpButtonPressed = false;
523
+ this.state.thumbButtonEnabled = true;
502
524
  this.state.messageStripText = text;
503
525
  this.state.showMessageStrip = true;
504
526
  }
@@ -598,8 +620,79 @@ export default class EasyFilterBarContainer extends Control {
598
620
  (this.tokenizer?.current as FocusHandlingControl).onsapfocusleave = (): void => {};
599
621
  }
600
622
 
623
+ private onThumbUpPressed(): void {
624
+ this.state.thumbUpButtonPressed = true;
625
+ this.state.thumbDownButtonPressed = false;
626
+ triggerPXIntegration("thumbUp");
627
+ this.onThumbPressed();
628
+ }
629
+
630
+ private onThumbDownPressed(): void {
631
+ this.state.thumbDownButtonPressed = true;
632
+ this.state.thumbUpButtonPressed = false;
633
+ triggerPXIntegration("thumbDown");
634
+ this.onThumbPressed();
635
+ }
636
+
637
+ private onThumbPressed(): void {
638
+ this.state.thumbButtonEnabled = false;
639
+ MessageToast.show(this.resourceBundle.getText("C_EASY_FILTER_FEEDBACK_SENT"));
640
+ }
641
+
601
642
  createContent(): VBox {
602
643
  const $topGoBtn = createReference<Button>();
644
+ const thumbUpButtonTokenizer = (
645
+ <ToggleButton
646
+ icon={"sap-icon://thumb-up"}
647
+ tooltip={this.resourceBundle.getText("C_EASY_FILTER_THUMBS_UP")}
648
+ type={"Transparent"}
649
+ press={(): void => {
650
+ return this.onThumbUpPressed();
651
+ }}
652
+ enabled={bindState(this.state, "thumbButtonEnabled")}
653
+ pressed={bindState(this.state, "thumbUpButtonPressed")}
654
+ />
655
+ );
656
+ FESRHelper.setSemanticStepname(thumbUpButtonTokenizer, "press", "fe4:eft:t:thumbUp");
657
+ const thumbDownButtonTokenizer = (
658
+ <ToggleButton
659
+ icon={"sap-icon://thumb-down"}
660
+ tooltip={this.resourceBundle.getText("C_EASY_FILTER_THUMBS_DOWN")}
661
+ type={"Transparent"}
662
+ press={(): void => {
663
+ return this.onThumbDownPressed();
664
+ }}
665
+ enabled={bindState(this.state, "thumbButtonEnabled")}
666
+ pressed={bindState(this.state, "thumbDownButtonPressed")}
667
+ />
668
+ );
669
+ FESRHelper.setSemanticStepname(thumbDownButtonTokenizer, "press", "fe4:eft:t:thumbDown");
670
+ const thumbUpButtonMessageStripe = (
671
+ <ToggleButton
672
+ icon={"sap-icon://thumb-up"}
673
+ tooltip={this.resourceBundle.getText("C_EASY_FILTER_THUMBS_UP")}
674
+ type={"Transparent"}
675
+ press={(): void => {
676
+ return this.onThumbUpPressed();
677
+ }}
678
+ enabled={bindState(this.state, "thumbButtonEnabled")}
679
+ pressed={bindState(this.state, "thumbUpButtonPressed")}
680
+ />
681
+ );
682
+ FESRHelper.setSemanticStepname(thumbUpButtonMessageStripe, "press", "fe4:eft:ms:thumbUp");
683
+ const thumbDownButtonMessageStripe = (
684
+ <ToggleButton
685
+ icon={"sap-icon://thumb-down"}
686
+ tooltip={this.resourceBundle.getText("C_EASY_FILTER_THUMBS_DOWN")}
687
+ type={"Transparent"}
688
+ press={(): void => {
689
+ return this.onThumbDownPressed();
690
+ }}
691
+ enabled={bindState(this.state, "thumbButtonEnabled")}
692
+ pressed={bindState(this.state, "thumbDownButtonPressed")}
693
+ />
694
+ );
695
+ FESRHelper.setSemanticStepname(thumbDownButtonMessageStripe, "press", "fe4:eft:ms:thumbDown");
603
696
  const outVBox = (
604
697
  <VBox>
605
698
  <FlexBox renderType="Bare">
@@ -675,6 +768,9 @@ export default class EasyFilterBarContainer extends Control {
675
768
  }
676
769
  }}
677
770
  </Tokenizer>
771
+ <HBox>
772
+ {thumbUpButtonTokenizer}, {thumbDownButtonTokenizer}
773
+ </HBox>
678
774
  <Button
679
775
  text={this.resourceBundle.getText("M_EASY_FILTER_RESET")}
680
776
  type={ButtonType.Transparent}
@@ -699,18 +795,21 @@ export default class EasyFilterBarContainer extends Control {
699
795
  }}
700
796
  ></MessageStrip>
701
797
  </FlexBox>
702
- <FlexBox renderType="Bare">
798
+ <FlexBox renderType="Bare" class={"sapFeControlsGap8px"}>
703
799
  <MessageStrip
704
- type={MessageType.Error}
800
+ type={bindState(this.state, "messageStripType")}
705
801
  text={bindState(this.state, "messageStripText")}
706
802
  showIcon={true}
707
803
  enableFormattedText={true}
708
- visible={bindState(this.state, "showMessageStrip")}
709
804
  showCloseButton={true}
710
805
  close={(): void => {
711
- this.clearMessageStripForValidatedFilters();
806
+ this.clearMessageStrip();
712
807
  }}
808
+ visible={bindState(this.state, "showMessageStrip")}
713
809
  ></MessageStrip>
810
+ <HBox visible={bindState(this.state, "showMessageStrip")}>
811
+ {thumbUpButtonMessageStripe}, {thumbDownButtonMessageStripe}
812
+ </HBox>
714
813
  </FlexBox>
715
814
  </VBox>
716
815
  ) as VBox;
@@ -743,7 +842,7 @@ export default class EasyFilterBarContainer extends Control {
743
842
  //Set the Value States of all the Tokens back to None
744
843
  this.tokenizer.current?.getTokens().forEach((token) => token.setProperty("valueState", ValueState.None));
745
844
  this.tokenizer.current?.getTokens().forEach((token) => token.setProperty("valueStateText", null));
746
- this.clearMessageStripForValidatedFilters(); //clear the message strip for validated filters
845
+ this.clearMessageStrip(); //clear the message strip for validated filters
747
846
  }
748
847
 
749
848
  //The below code updates the existing state by fetching the key and selectedValues
@@ -2,13 +2,15 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/base/EventDelegateHook", "sap/fe/base/jsx-runtime/jsx", "sap/fe/controls/easyFilter/ShellHistoryProvider", "sap/m/Button", "sap/m/CustomListItem", "sap/m/FlexBox", "sap/m/HBox", "sap/m/IllustratedMessage", "sap/m/IllustratedMessageSize", "sap/m/IllustratedMessageType", "sap/m/Input", "sap/m/List", "sap/m/Popover", "sap/m/Text", "sap/m/Title", "sap/m/library", "sap/ui/core/Control", "sap/ui/core/CustomData", "sap/ui/core/InvisibleText", "sap/ui/core/Lib", "sap/ui/core/library", "sap/fe/base/jsx-runtime/jsx", "sap/fe/base/jsx-runtime/jsxs"], function (Log, BindingToolkit, ClassSupport, EventDelegateHook, jsx, ShellHistoryProvider, Button, CustomListItem, FlexBox, HBox, IllustratedMessage, IllustratedMessageSize, IllustratedMessageType, Input, List, Popover, Text, Title, library, Control, CustomData, InvisibleText, Lib, coreLibrary, _jsx, _jsxs) {
5
+ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/base/EventDelegateHook", "sap/fe/base/jsx-runtime/jsx", "sap/fe/controls/easyFilter/ShellHistoryProvider", "sap/m/Button", "sap/m/CustomListItem", "sap/m/FlexBox", "sap/m/HBox", "sap/m/IllustratedMessage", "sap/m/IllustratedMessageSize", "sap/m/IllustratedMessageType", "sap/m/Input", "sap/m/List", "sap/m/Popover", "sap/m/Text", "sap/m/Title", "sap/m/library", "sap/ui/core/Control", "sap/ui/core/CustomData", "sap/ui/core/InvisibleMessage", "sap/ui/core/Lib", "sap/ui/core/library", "./PXFeedback", "sap/fe/base/jsx-runtime/jsx", "sap/fe/base/jsx-runtime/jsxs"], function (Log, BindingToolkit, ClassSupport, EventDelegateHook, jsx, ShellHistoryProvider, Button, CustomListItem, FlexBox, HBox, IllustratedMessage, IllustratedMessageSize, IllustratedMessageType, Input, List, Popover, Text, Title, library, Control, CustomData, InvisibleMessage, Lib, coreLibrary, PXFeedback, _jsx, _jsxs) {
6
6
  "use strict";
7
7
 
8
8
  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7;
9
9
  var _exports = {};
10
+ var triggerPXIntegration = PXFeedback.triggerPXIntegration;
10
11
  var ValueState = coreLibrary.ValueState;
11
12
  var TitleLevel = coreLibrary.TitleLevel;
13
+ var InvisibleMessageMode = coreLibrary.InvisibleMessageMode;
12
14
  var PlacementType = library.PlacementType;
13
15
  var ListMode = library.ListMode;
14
16
  var FlexWrap = library.FlexWrap;
@@ -75,6 +77,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
75
77
  _proto.initialize = function initialize() {
76
78
  this.state.recommendedQueries = this.recommendedValues ?? [];
77
79
  this.resourceBundle = Lib.getResourceBundleFor("sap.fe.controls");
80
+ this.popoverInvisibleMessage = InvisibleMessage.getInstance();
78
81
  this.createInput();
79
82
  };
80
83
  _proto.setAsInvalid = function setAsInvalid(message) {
@@ -110,14 +113,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
110
113
  },
111
114
  placeholder: this.resourceBundle.getText("M_EASY_FILTER_PLACEHOLDER")
112
115
  });
113
- const textBinding = this.resourceBundle.getText("T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA");
114
- const invisibleText = new InvisibleText({
115
- text: textBinding
116
- }).toStatic();
117
116
  const favoritePopover = this.createFavoritePopover();
118
117
  this.$favoritePopover = favoritePopover;
119
- this.$searchInput.addAriaDescribedBy(favoritePopover);
120
- this.$searchInput.addAriaDescribedBy(invisibleText);
121
118
  this.$searchInput.addDependent(favoritePopover);
122
119
  this.$searchInput.addEventDelegate({
123
120
  onkeyup: e => {
@@ -167,6 +164,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
167
164
  }
168
165
  break;
169
166
  }
167
+ },
168
+ onAfterRendering: () => {
169
+ this.popoverInvisibleMessage?.announce(this.resourceBundle.getText("T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA"), InvisibleMessageMode.Assertive);
170
170
  }
171
171
  });
172
172
  };
@@ -307,15 +307,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
307
307
  text: ctx.getObject(),
308
308
  tooltip: ctx.getObject(),
309
309
  wrapping: false,
310
- class: "sapFEControlsPointer",
311
- children: {
312
- dependents: _jsx(EventDelegateHook, {
313
- tap: () => {
314
- this.$searchInput?.setValue(ctx.getObject().replace(/\\\\/g, "\\"));
315
- this.onEnterPressed();
316
- }
317
- })
318
- }
310
+ class: "sapFEControlsPointer"
319
311
  }), _jsx(Button, {
320
312
  icon: "sap-icon://favorite",
321
313
  tooltip: this.resourceBundle.getText("M_EASY_FILTER_FILLED_STAR"),
@@ -330,7 +322,15 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
330
322
  this.state.favoriteQueries = this.state.favoriteQueries.filter(query => query !== queryString);
331
323
  }
332
324
  }
333
- })]
325
+ }), {
326
+ dependents: _jsx(EventDelegateHook, {
327
+ tap: () => {
328
+ this.$searchInput?.setValue(ctx.getObject().replace(/\\\\/g, "\\"));
329
+ triggerPXIntegration("favorite");
330
+ this.onEnterPressed();
331
+ }
332
+ })
333
+ }]
334
334
  })
335
335
  });
336
336
  }
@@ -384,15 +384,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
384
384
  text: ctx.getObject().text,
385
385
  tooltip: ctx.getObject().text,
386
386
  wrapping: false,
387
- class: "sapFEControlsPointer",
388
- children: {
389
- dependents: _jsx(EventDelegateHook, {
390
- tap: () => {
391
- this.$searchInput?.setValue(ctx.getObject().text.replace(/\\\\/g, "\\"));
392
- this.onEnterPressed();
393
- }
394
- })
395
- }
387
+ class: "sapFEControlsPointer"
396
388
  }), _jsx(Button, {
397
389
  icon: ctx.getObject().isFavorite ? "sap-icon://favorite" : "sap-icon://add-favorite",
398
390
  tooltip: ctx.getObject().isFavorite ? this.resourceBundle.getText("M_EASY_FILTER_FILLED_STAR") : this.resourceBundle.getText("M_EASY_FILTER_EMPTY_START"),
@@ -410,7 +402,15 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
410
402
  this.addToFavorites(queryString);
411
403
  }
412
404
  }
413
- })]
405
+ }), {
406
+ dependents: _jsx(EventDelegateHook, {
407
+ tap: () => {
408
+ this.$searchInput?.setValue(ctx.getObject().text.replace(/\\\\/g, "\\"));
409
+ triggerPXIntegration("recent");
410
+ this.onEnterPressed();
411
+ }
412
+ })
413
+ }]
414
414
  })
415
415
  });
416
416
  }
@@ -489,4 +489,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
489
489
  _exports = EasyFilterInput;
490
490
  return _exports;
491
491
  }, false);
492
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFYXN5RmlsdGVySW5wdXQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImFnZ3JlZ2F0aW9uIiwidHlwZSIsIm11bHRpcGxlIiwiaXNEZWZhdWx0IiwiX2RlYzMiLCJwcm9wZXJ0eSIsIl9kZWM0IiwiX2RlYzUiLCJldmVudCIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsImRlZmluZVN0YXRlIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9Db250cm9sIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJpbml0aWFsaXplIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFZhbHVlIiwiJHNlYXJjaElucHV0IiwiaXNIaXN0b3J5RW5hYmxlZCIsInN0YXRlIiwidmFsdWVPZiIsInNldFZhbHVlIiwidmFsdWUiLCJzZXRQbGFjZWhvbGRlciIsImdldFBsYWNlaG9sZGVyIiwicmVjb21tZW5kZWRRdWVyaWVzIiwicmVjb21tZW5kZWRWYWx1ZXMiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiY3JlYXRlSW5wdXQiLCJzZXRBc0ludmFsaWQiLCJtZXNzYWdlIiwic2V0VmFsdWVTdGF0ZSIsIlZhbHVlU3RhdGUiLCJXYXJuaW5nIiwic2V0VmFsdWVTdGF0ZVRleHQiLCJvcGVuVmFsdWVTdGF0ZU1lc3NhZ2UiLCJzZXRBc1ZhbGlkIiwiTm9uZSIsImNsb3NlVmFsdWVTdGF0ZU1lc3NhZ2UiLCJfanN4IiwiSW5wdXQiLCJ3aWR0aCIsInNob3dDbGVhckljb24iLCJjaGFuZ2UiLCJlIiwiZmlyZUV2ZW50IiwicXVlcnkiLCJnZXRQYXJhbWV0ZXIiLCJsaXZlQ2hhbmdlIiwicXVlcnlDaGFuZ2VkIiwiZ2V0U291cmNlIiwiJGZhdm9yaXRlUG9wb3ZlciIsImlzT3BlbiIsIm9wZW5TdWdnZXN0aW9uUG9wb3ZlciIsImdldFRleHQiLCJnZXRWYWx1ZVN0YXRlIiwicGxhY2Vob2xkZXIiLCJ0ZXh0QmluZGluZyIsImludmlzaWJsZVRleHQiLCJJbnZpc2libGVUZXh0IiwidGV4dCIsInRvU3RhdGljIiwiZmF2b3JpdGVQb3BvdmVyIiwiY3JlYXRlRmF2b3JpdGVQb3BvdmVyIiwiYWRkQXJpYURlc2NyaWJlZEJ5IiwiYWRkRGVwZW5kZW50IiwiYWRkRXZlbnREZWxlZ2F0ZSIsIm9ua2V5dXAiLCJrZXkiLCJvbkVudGVyUHJlc3NlZCIsImNsb3NlIiwib25rZXlkb3duIiwibGVuZ3RoIiwicHJldmVudERlZmF1bHQiLCJwb3BvdmVyQ29uYWluZXIiLCJnZXRDb250ZW50IiwiY29udGFpbmVySXRlbXMiLCJnZXRJdGVtcyIsImZpbmQiLCJpdGVtIiwiaXNGb2N1c2FibGUiLCJmb2N1cyIsIm9udGFwIiwib25mb2N1c2luIiwidGFyZ2V0VGV4dCIsInRhcmdldCIsIm91dGVyVGV4dCIsInRhcmdldElkIiwiaWQiLCJpbmNsdWRlcyIsImZhdm9yaXRlUXVlcmllcyIsImZpbHRlciIsImRhdGEiLCJ0b0xvd2VyQ2FzZSIsInJlY2VudFF1ZXJpZXMiLCJzaGVsbEhpc3RvcnlQcm92aWRlciIsImdldEZhdm9yaXRlUXVlcmllcyIsImdldFJlY2VudFF1ZXJpZXMiLCJtYXAiLCJvcGVuQnkiLCJyZXF1ZXN0RmF2b3JpdGUiLCJtYWdpY1F1ZXJ5IiwiYWRkUmVjZW50UXVlcnkiLCJxdWVyeVN0cmluZyIsInJlcGxhY2UiLCJyZWNlbnRRdWVyeUluZGV4IiwiZmluZEluZGV4IiwiY29uY2F0Iiwic2xpY2UiLCJ1bnNoaWZ0Iiwib25TdGF0ZUNoYW5nZSIsImNoYW5nZWRQcm9wcyIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNldEZhdm9yaXRlUXVlcmllcyIsInNldFJlY2VudFF1ZXJpZXMiLCJyZWNlbnRRdWVyaWVzV2l0RmF2b3JpdGVzIiwicmVjZW50UXVlcnkiLCJpc0Zhdm9yaXRlIiwiZmF2b3JpdGVRdWVyeSIsImluaXRTaGVsbEhpc3RvcnlQcm92aWRlciIsIlNoZWxsSGlzdG9yeVByb3ZpZGVyIiwiZ2V0SW5zdGFuY2UiLCJhcHBJZCIsImVycm9yIiwiTG9nIiwiUG9wb3ZlciIsImdldElkIiwic2hvd0hlYWRlciIsImhvcml6b250YWxTY3JvbGxpbmciLCJwbGFjZW1lbnQiLCJQbGFjZW1lbnRUeXBlIiwiQm90dG9tIiwic2hvd0Fycm93IiwiaW5pdGlhbEZvY3VzIiwiY2xhc3MiLCJ2aXNpYmxlIiwiZXF1YWwiLCJiaW5kU3RhdGUiLCJjaGlsZHJlbiIsImNvbnRlbnQiLCJGbGV4Qm94IiwiZGlyZWN0aW9uIiwiRmxleERpcmVjdGlvbiIsIkNvbHVtbiIsInJlbmRlclR5cGUiLCJpdGVtcyIsIlRpdGxlIiwidGl0bGVTdHlsZSIsIlRpdGxlTGV2ZWwiLCJINiIsIkhCb3giLCJ3cmFwIiwiRmxleFdyYXAiLCJXcmFwIiwiY3R4IiwiQnV0dG9uIiwiZ2V0T2JqZWN0IiwicHJlc3MiLCJiaW5kIiwiTGlzdCIsIm5vRGF0YSIsIklsbHVzdHJhdGVkTWVzc2FnZSIsInRpdGxlIiwiaWxsdXN0cmF0aW9uU2l6ZSIsIklsbHVzdHJhdGVkTWVzc2FnZVNpemUiLCJFeHRyYVNtYWxsIiwiaWxsdXN0cmF0aW9uVHlwZSIsIklsbHVzdHJhdGVkTWVzc2FnZVR5cGUiLCJOb0VudHJpZXMiLCJkZXNjcmlwdGlvbiIsIkN1c3RvbUxpc3RJdGVtIiwiYXJpYUxhYmVsbGVkQnkiLCJjdXN0b21EYXRhIiwiQ3VzdG9tRGF0YSIsIl9qc3hzIiwiUm93IiwiYWxpZ25JdGVtcyIsIkZsZXhBbGlnbkl0ZW1zIiwiQ2VudGVyIiwianVzdGlmeUNvbnRlbnQiLCJGbGV4SnVzdGlmeUNvbnRlbnQiLCJTcGFjZUJldHdlZW4iLCJUZXh0IiwidG9vbHRpcCIsIndyYXBwaW5nIiwiZGVwZW5kZW50cyIsIkV2ZW50RGVsZWdhdGVIb29rIiwidGFwIiwiaWNvbiIsIkJ1dHRvblR5cGUiLCJUcmFuc3BhcmVudCIsImluZGV4IiwiaW5kZXhPZiIsIm1vZGUiLCJMaXN0TW9kZSIsIkRlbGV0ZSIsImRlbGV0ZSIsImVuYWJsZWQiLCJsZXNzVGhhbiIsInJlbW92ZUZyb21GYXZvcml0ZXMiLCJhZGRUb0Zhdm9yaXRlcyIsIm5ld0Zhdm9yaXRlIiwicG9wIiwicmVuZGVyIiwicm0iLCJjb250cm9sIiwianN4IiwicmVuZGVyVXNpbmdSZW5kZXJNYW5hZ2VyIiwicmVmIiwiQ29udHJvbCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRWFzeUZpbHRlcklucHV0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlQnVuZGxlIGZyb20gXCJzYXAvYmFzZS9pMThuL1Jlc291cmNlQnVuZGxlXCI7XG5pbXBvcnQgdHlwZSB7IFBhdGhJbk1vZGVsRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgYmluZFN0YXRlLCBlcXVhbCwgbGVuZ3RoLCBsZXNzVGhhbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGRlZmluZVN0YXRlLCBkZWZpbmVVSTVDbGFzcywgZXZlbnQsIHByb3BlcnR5LCB0eXBlIFByb3BlcnRpZXNPZiwgdHlwZSBTdGF0ZU9mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEV2ZW50RGVsZWdhdGVIb29rIGZyb20gXCJzYXAvZmUvYmFzZS9FdmVudERlbGVnYXRlSG9va1wiO1xuaW1wb3J0IGpzeCBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgU2hlbGxIaXN0b3J5UHJvdmlkZXIgZnJvbSBcInNhcC9mZS9jb250cm9scy9lYXN5RmlsdGVyL1NoZWxsSGlzdG9yeVByb3ZpZGVyXCI7XG5pbXBvcnQgdHlwZSB7IEJ1dHRvbiRQcmVzc0V2ZW50IH0gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgQ3VzdG9tTGlzdEl0ZW0gZnJvbSBcInNhcC9tL0N1c3RvbUxpc3RJdGVtXCI7XG5pbXBvcnQgRmxleEJveCBmcm9tIFwic2FwL20vRmxleEJveFwiO1xuaW1wb3J0IEhCb3ggZnJvbSBcInNhcC9tL0hCb3hcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2UgZnJvbSBcInNhcC9tL0lsbHVzdHJhdGVkTWVzc2FnZVwiO1xuaW1wb3J0IElsbHVzdHJhdGVkTWVzc2FnZVNpemUgZnJvbSBcInNhcC9tL0lsbHVzdHJhdGVkTWVzc2FnZVNpemVcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgdHlwZSB7IElucHV0JExpdmVDaGFuZ2VFdmVudCB9IGZyb20gXCJzYXAvbS9JbnB1dFwiO1xuaW1wb3J0IElucHV0IGZyb20gXCJzYXAvbS9JbnB1dFwiO1xuaW1wb3J0IExpc3QgZnJvbSBcInNhcC9tL0xpc3RcIjtcbmltcG9ydCB0eXBlIHsgTGlzdEJhc2UkRGVsZXRlRXZlbnQgfSBmcm9tIFwic2FwL20vTGlzdEJhc2VcIjtcbmltcG9ydCBQb3BvdmVyIGZyb20gXCJzYXAvbS9Qb3BvdmVyXCI7XG5pbXBvcnQgdHlwZSBTdGFuZGFyZExpc3RJdGVtIGZyb20gXCJzYXAvbS9TdGFuZGFyZExpc3RJdGVtXCI7XG5pbXBvcnQgVGV4dCBmcm9tIFwic2FwL20vVGV4dFwiO1xuaW1wb3J0IFRpdGxlIGZyb20gXCJzYXAvbS9UaXRsZVwiO1xuaW1wb3J0IHsgQnV0dG9uVHlwZSwgRmxleEFsaWduSXRlbXMsIEZsZXhEaXJlY3Rpb24sIEZsZXhKdXN0aWZ5Q29udGVudCwgRmxleFdyYXAsIExpc3RNb2RlLCBQbGFjZW1lbnRUeXBlIH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIFVJNUV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ3VzdG9tRGF0YSBmcm9tIFwic2FwL3VpL2NvcmUvQ3VzdG9tRGF0YVwiO1xuaW1wb3J0IEludmlzaWJsZVRleHQgZnJvbSBcInNhcC91aS9jb3JlL0ludmlzaWJsZVRleHRcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgUmVuZGVyTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyTWFuYWdlclwiO1xuaW1wb3J0IHsgVGl0bGVMZXZlbCwgVmFsdWVTdGF0ZSB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbnR5cGUgUmVjZW50VHlwZSA9IHtcblx0dGV4dDogc3RyaW5nO1xuXHRpc0Zhdm9yaXRlOiBib29sZWFuO1xufTtcbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb250cm9scy5lYXN5RmlsdGVyLkVhc3lGaWx0ZXJJbnB1dFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWFzeUZpbHRlcklucHV0IGV4dGVuZHMgQ29udHJvbCB7XG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLm0uSW5wdXRcIiwgbXVsdGlwbGU6IGZhbHNlLCBpc0RlZmF1bHQ6IHRydWUgfSlcblx0JHNlYXJjaElucHV0ITogSW5wdXQ7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRhcHBJZD86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImFycmF5XCIgfSlcblx0cmVjb21tZW5kZWRWYWx1ZXM/OiBzdHJpbmdbXTtcblxuXHRAZXZlbnQoKVxuXHRxdWVyeUNoYW5nZWQ/OiBFdmVudEhhbmRsZXI8VUk1RXZlbnQ8eyBxdWVyeTogc3RyaW5nIH0sIEVhc3lGaWx0ZXJJbnB1dD4+O1xuXG5cdEBldmVudCgpXG5cdGVudGVyUHJlc3NlZD86IEV2ZW50SGFuZGxlcjxVSTVFdmVudDx7IHF1ZXJ5OiBzdHJpbmcgfSwgRWFzeUZpbHRlcklucHV0Pj47XG5cblx0QGV2ZW50KClcblx0bGl2ZUNoYW5nZT86IEV2ZW50SGFuZGxlcjtcblxuXHRwcml2YXRlIHJlc291cmNlQnVuZGxlITogUmVzb3VyY2VCdW5kbGU7XG5cblx0c2hlbGxIaXN0b3J5UHJvdmlkZXI6IFNoZWxsSGlzdG9yeVByb3ZpZGVyIHwgdW5kZWZpbmVkO1xuXG5cdCRmYXZvcml0ZVBvcG92ZXI6IFBvcG92ZXIgfCB1bmRlZmluZWQ7XG5cblx0QGRlZmluZVN0YXRlKClcblx0cHJvdGVjdGVkIHN0YXRlOiBTdGF0ZU9mPHtcblx0XHRxdWVyeUNoYW5nZWQ6IGJvb2xlYW47XG5cdFx0cmVjZW50UXVlcmllczogcmVhZG9ubHkgc3RyaW5nW107XG5cdFx0cmVjZW50UXVlcmllc1dpdEZhdm9yaXRlczogcmVhZG9ubHkgUmVjZW50VHlwZVtdO1xuXHRcdGlzSGlzdG9yeUVuYWJsZWQ6IGJvb2xlYW47XG5cdFx0ZmF2b3JpdGVRdWVyaWVzOiBzdHJpbmdbXTtcblx0XHRyZWNvbW1lbmRlZFF1ZXJpZXM6IHN0cmluZ1tdO1xuXHR9PiA9IHtcblx0XHRxdWVyeUNoYW5nZWQ6IGZhbHNlLFxuXHRcdGlzSGlzdG9yeUVuYWJsZWQ6IGZhbHNlLFxuXHRcdHJlY2VudFF1ZXJpZXM6IFtdLFxuXHRcdHJlY2VudFF1ZXJpZXNXaXRGYXZvcml0ZXM6IFtdLFxuXHRcdGZhdm9yaXRlUXVlcmllczogW10gYXMgc3RyaW5nW10sXG5cdFx0cmVjb21tZW5kZWRRdWVyaWVzOiBbXSBhcyBzdHJpbmdbXVxuXHR9O1xuXG5cdGNvbnN0cnVjdG9yKHByb3BlcnRpZXM6IHN0cmluZyB8ICgkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPEVhc3lGaWx0ZXJJbnB1dD4pLCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcGVydGllcyBhcyBzdHJpbmcsIG90aGVycyk7XG5cdFx0dGhpcy5pbml0aWFsaXplKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VmFsdWUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0VmFsdWUoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0hpc3RvcnlFbmFibGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnN0YXRlLmlzSGlzdG9yeUVuYWJsZWQudmFsdWVPZigpO1xuXHR9XG5cblx0c2V0VmFsdWUodmFsdWU6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlKHZhbHVlKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHNldFBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRQbGFjZWhvbGRlcih2YWx1ZSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0UGxhY2Vob2xkZXIoKTtcblx0fVxuXG5cdGluaXRpYWxpemUoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGF0ZS5yZWNvbW1lbmRlZFF1ZXJpZXMgPSB0aGlzLnJlY29tbWVuZGVkVmFsdWVzID8/IFtdO1xuXHRcdHRoaXMucmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXHRcdHRoaXMuY3JlYXRlSW5wdXQoKTtcblx0fVxuXG5cdHNldEFzSW52YWxpZChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRWYWx1ZVN0YXRlKFZhbHVlU3RhdGUuV2FybmluZyk7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuc2V0VmFsdWVTdGF0ZVRleHQobWVzc2FnZSk7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQub3BlblZhbHVlU3RhdGVNZXNzYWdlKCk7XG5cdH1cblxuXHRzZXRBc1ZhbGlkKCk6IHZvaWQge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlU3RhdGUoVmFsdWVTdGF0ZS5Ob25lKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5jbG9zZVZhbHVlU3RhdGVNZXNzYWdlKCk7XG5cdH1cblxuXHRjcmVhdGVJbnB1dCgpOiB2b2lkIHtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dCA9IChcblx0XHRcdDxJbnB1dFxuXHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRzaG93Q2xlYXJJY29uPXt0cnVlfVxuXHRcdFx0XHRjaGFuZ2U9eyhlKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJxdWVyeUNoYW5nZWRcIiwgeyBxdWVyeTogZS5nZXRQYXJhbWV0ZXIoXCJ2YWx1ZVwiKSB9KTtcblx0XHRcdFx0fX1cblx0XHRcdFx0bGl2ZUNoYW5nZT17KGU6IElucHV0JExpdmVDaGFuZ2VFdmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdHRoaXMuc3RhdGUucXVlcnlDaGFuZ2VkID0gdHJ1ZTtcblx0XHRcdFx0XHR0aGlzLmZpcmVFdmVudChcImxpdmVDaGFuZ2VcIik7XG5cdFx0XHRcdFx0aWYgKCFlLmdldFNvdXJjZSgpLmdldFZhbHVlKCkgJiYgISh0aGlzLiRmYXZvcml0ZVBvcG92ZXI/LmlzT3BlbigpID8/IGZhbHNlKSkge1xuXHRcdFx0XHRcdFx0dGhpcy5vcGVuU3VnZ2VzdGlvblBvcG92ZXIoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGUuZ2V0UGFyYW1ldGVyKFwidmFsdWVcIikgPT09IFwiXCIpIHtcblx0XHRcdFx0XHRcdHRoaXMuc2V0UGxhY2Vob2xkZXIodGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QTEFDRUhPTERFUlwiKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICh0aGlzLiRzZWFyY2hJbnB1dC5nZXRWYWx1ZVN0YXRlKCkgPT09IFZhbHVlU3RhdGUuV2FybmluZykge1xuXHRcdFx0XHRcdFx0dGhpcy5zZXRBc1ZhbGlkKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9fVxuXHRcdFx0XHRwbGFjZWhvbGRlcj17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QTEFDRUhPTERFUlwiKX1cblx0XHRcdD48L0lucHV0PlxuXHRcdCk7XG5cblx0XHRjb25zdCB0ZXh0QmluZGluZyA9IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIlRfRUFTWV9GSUxURVJfSU5QVVRfVEVYVF9MSU5LX1BPUE9WRVJfQVJJQVwiKTtcblx0XHRjb25zdCBpbnZpc2libGVUZXh0ID0gbmV3IEludmlzaWJsZVRleHQoeyB0ZXh0OiB0ZXh0QmluZGluZyB9KS50b1N0YXRpYygpO1xuXHRcdGNvbnN0IGZhdm9yaXRlUG9wb3ZlciA9IHRoaXMuY3JlYXRlRmF2b3JpdGVQb3BvdmVyKCk7XG5cdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyID0gZmF2b3JpdGVQb3BvdmVyO1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LmFkZEFyaWFEZXNjcmliZWRCeShmYXZvcml0ZVBvcG92ZXIpO1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LmFkZEFyaWFEZXNjcmliZWRCeShpbnZpc2libGVUZXh0KTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5hZGREZXBlbmRlbnQoZmF2b3JpdGVQb3BvdmVyKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5hZGRFdmVudERlbGVnYXRlKHtcblx0XHRcdG9ua2V5dXA6IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG5cdFx0XHRcdGlmIChlLmtleSA9PT0gXCJFbnRlclwiKSB7XG5cdFx0XHRcdFx0dGhpcy5vbkVudGVyUHJlc3NlZCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0aGlzLiRmYXZvcml0ZVBvcG92ZXIgJiYgdGhpcy4kc2VhcmNoSW5wdXQuZ2V0VmFsdWUoKSkge1xuXHRcdFx0XHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlci5jbG9zZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0b25rZXlkb3duOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0ZS5rZXkgPT09IFwiVGFiXCIgJiZcblx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0VmFsdWUoKS5sZW5ndGggPT09IDAgJiZcblx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0VmFsdWUoKSAhPT0gdGhpcy4kc2VhcmNoSW5wdXQ/LmdldFBsYWNlaG9sZGVyKCkgJiZcblx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0UGxhY2Vob2xkZXIoKSAhPT0gdGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QTEFDRUhPTERFUlwiKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlKHRoaXMuJHNlYXJjaElucHV0Py5nZXRQbGFjZWhvbGRlcigpKTtcblx0XHRcdFx0XHR0aGlzLmZpcmVFdmVudChcImxpdmVDaGFuZ2VcIik7XG5cdFx0XHRcdH0gZWxzZSBpZiAoZS5rZXkgPT09IFwiQXJyb3dEb3duXCIpIHtcblx0XHRcdFx0XHRjb25zdCBwb3BvdmVyQ29uYWluZXIgPSB0aGlzLiRmYXZvcml0ZVBvcG92ZXI/LmdldENvbnRlbnQoKVswXTtcblx0XHRcdFx0XHRjb25zdCBjb250YWluZXJJdGVtcyA9IChwb3BvdmVyQ29uYWluZXIgYXMgRmxleEJveCkuZ2V0SXRlbXMoKTtcblx0XHRcdFx0XHRjb250YWluZXJJdGVtcz8uZmluZCgoaXRlbSkgPT4gaXRlbS5pc0ZvY3VzYWJsZSgpICYmIChpdGVtLmZvY3VzKCksIHRydWUpKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdG9udGFwOiAoKSA9PiB7XG5cdFx0XHRcdHRoaXMub3BlblN1Z2dlc3Rpb25Qb3BvdmVyKCk7XG5cdFx0XHR9LFxuXHRcdFx0b25mb2N1c2luOiAoKSA9PiB7XG5cdFx0XHRcdHRoaXMub3BlblN1Z2dlc3Rpb25Qb3BvdmVyKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyLmFkZEV2ZW50RGVsZWdhdGUoe1xuXHRcdFx0b25rZXlkb3duOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuXHRcdFx0XHRjb25zdCB0YXJnZXRUZXh0ID0gKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KT8ub3V0ZXJUZXh0O1xuXHRcdFx0XHRjb25zdCB0YXJnZXRJZCA9IChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCk/LmlkO1xuXHRcdFx0XHRzd2l0Y2ggKGUua2V5KSB7XG5cdFx0XHRcdFx0Y2FzZSBcIkVudGVyXCI6XG5cdFx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUodGFyZ2V0VGV4dCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlIFwiRGVsZXRlXCI6XG5cdFx0XHRcdFx0XHRpZiAodGFyZ2V0SWQ/LmluY2x1ZGVzKFwiZWFzeUZpbHRlckZhdm9yaXRlSXRlbVwiKSkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcyA9IHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzLmZpbHRlcihcblx0XHRcdFx0XHRcdFx0XHQoZGF0YSkgPT4gZGF0YS50b0xvd2VyQ2FzZSgpICE9PSB0YXJnZXRUZXh0LnRvTG93ZXJDYXNlKClcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyA9IHRoaXMuc3RhdGUucmVjZW50UXVlcmllcy5maWx0ZXIoKHF1ZXJ5KSA9PiBxdWVyeSAhPT0gdGFyZ2V0VGV4dCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlIFwiRXNjYXBlXCI6XG5cdFx0XHRcdFx0XHRpZiAodGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5pc09wZW4oKSkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXIuY2xvc2UoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIG9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuJHNlYXJjaElucHV0Py5nZXRWYWx1ZSgpICYmICghdGhpcy4kZmF2b3JpdGVQb3BvdmVyIHx8ICF0aGlzLiRmYXZvcml0ZVBvcG92ZXI/LmlzT3BlbigpKSkge1xuXHRcdFx0Ly8gT3BlbiB0aGUgZWFzeSBmaWx0ZXIgcG9wb3ZlclxuXHRcdFx0dGhpcy5zdGF0ZS5pc0hpc3RvcnlFbmFibGVkID0gdGhpcy5zaGVsbEhpc3RvcnlQcm92aWRlcj8uaXNIaXN0b3J5RW5hYmxlZCgpID8/IGZhbHNlO1xuXHRcdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSB0aGlzLnNoZWxsSGlzdG9yeVByb3ZpZGVyPy5nZXRGYXZvcml0ZVF1ZXJpZXMoKSA/PyBbXTtcblx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyA9ICh0aGlzLnNoZWxsSGlzdG9yeVByb3ZpZGVyPy5nZXRSZWNlbnRRdWVyaWVzKCkgPz8gW10pLm1hcCgocXVlcnkpID0+IHF1ZXJ5KTtcblx0XHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8ub3BlbkJ5KHRoaXMuJHNlYXJjaElucHV0KTtcblx0XHR9XG5cdH1cblxuXHRyZXF1ZXN0RmF2b3JpdGUoZTogQnV0dG9uJFByZXNzRXZlbnQpOiB2b2lkIHtcblx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXI/LmNsb3NlKCk7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlKGUuZ2V0U291cmNlKCkuZ2V0VGV4dCgpKTtcblx0XHR0aGlzLm9uRW50ZXJQcmVzc2VkKCk7XG5cdH1cblxuXHRvbkVudGVyUHJlc3NlZCgpOiB2b2lkIHtcblx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXI/LmNsb3NlKCk7XG5cdFx0dGhpcy5zdGF0ZS5xdWVyeUNoYW5nZWQgPSBmYWxzZTtcblx0XHRsZXQgbWFnaWNRdWVyeSA9IHRoaXMuJHNlYXJjaElucHV0Py5nZXRWYWx1ZSgpO1xuXHRcdGlmIChtYWdpY1F1ZXJ5ID09PSBcIlwiICYmIHRoaXMuJHNlYXJjaElucHV0LmdldFBsYWNlaG9sZGVyKCkgIT09IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUExBQ0VIT0xERVJcIikpIHtcblx0XHRcdG1hZ2ljUXVlcnkgPSB0aGlzLiRzZWFyY2hJbnB1dC5nZXRQbGFjZWhvbGRlcigpO1xuXHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlKG1hZ2ljUXVlcnkpO1xuXHRcdH1cblx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWVTdGF0ZVRleHQoXCJcIik7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlU3RhdGUoXCJOb25lXCIpO1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwiZW50ZXJQcmVzc2VkXCIsIHsgcXVlcnk6IG1hZ2ljUXVlcnkgfSk7XG5cdH1cblxuXHRhZGRSZWNlbnRRdWVyeShxdWVyeVN0cmluZzogc3RyaW5nIHwgdW5kZWZpbmVkKTogdm9pZCB7XG5cdFx0Ly8gTm9ybWFsaXplIGJhY2tzbGFzaGVzIGJlZm9yZSBzdG9yaW5nXG5cdFx0cXVlcnlTdHJpbmcgPSBxdWVyeVN0cmluZz8ucmVwbGFjZSgvXFxcXC9nLCBcIlxcXFxcXFxcXCIpO1xuXG5cdFx0Y29uc3QgcmVjZW50UXVlcnlJbmRleCA9IHRoaXMuc3RhdGUucmVjZW50UXVlcmllcy5maW5kSW5kZXgoKHF1ZXJ5KSA9PiBxdWVyeS50b0xvd2VyQ2FzZSgpID09PSBxdWVyeVN0cmluZz8udG9Mb3dlckNhc2UoKSk7XG5cdFx0aWYgKHF1ZXJ5U3RyaW5nICYmIHJlY2VudFF1ZXJ5SW5kZXggPT09IC0xKSB7XG5cdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSBbcXVlcnlTdHJpbmddLmNvbmNhdCh0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMpO1xuXHRcdFx0aWYgKHRoaXMuc3RhdGUucmVjZW50UXVlcmllcy5sZW5ndGggPiA1KSB7XG5cdFx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyA9IHRoaXMuc3RhdGUucmVjZW50UXVlcmllcy5zbGljZSgwLCA1KTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKHF1ZXJ5U3RyaW5nKSB7XG5cdFx0XHRjb25zdCByZWNlbnRRdWVyaWVzID0gdGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLmZpbHRlcigocXVlcnkpID0+IHF1ZXJ5LnRvTG93ZXJDYXNlKCkgIT09IHF1ZXJ5U3RyaW5nPy50b0xvd2VyQ2FzZSgpKTtcblx0XHRcdHJlY2VudFF1ZXJpZXMudW5zaGlmdChxdWVyeVN0cmluZyk7XG5cdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSByZWNlbnRRdWVyaWVzO1xuXHRcdH1cblx0fVxuXG5cdG9uU3RhdGVDaGFuZ2UoY2hhbmdlZFByb3BzOiBzdHJpbmdbXSA9IFtdKTogdm9pZCB7XG5cdFx0aWYgKGNoYW5nZWRQcm9wcy5pbmNsdWRlcyhcImZhdm9yaXRlUXVlcmllc1wiKSB8fCBjaGFuZ2VkUHJvcHMuaW5jbHVkZXMoXCJyZWNlbnRRdWVyaWVzXCIpKSB7XG5cdFx0XHR0aGlzLnNoZWxsSGlzdG9yeVByb3ZpZGVyPy5zZXRGYXZvcml0ZVF1ZXJpZXModGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMpO1xuXHRcdFx0dGhpcy5zaGVsbEhpc3RvcnlQcm92aWRlcj8uc2V0UmVjZW50UXVlcmllcyh0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMubWFwKChxdWVyeSkgPT4gcXVlcnkpKTtcblx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllc1dpdEZhdm9yaXRlcyA9IHRoaXMuc3RhdGUucmVjZW50UXVlcmllcy5tYXAoKHJlY2VudFF1ZXJ5KSA9PiB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0dGV4dDogcmVjZW50UXVlcnksXG5cdFx0XHRcdFx0aXNGYXZvcml0ZTogISF0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcy5maW5kKChmYXZvcml0ZVF1ZXJ5KSA9PiBmYXZvcml0ZVF1ZXJ5ID09PSByZWNlbnRRdWVyeSlcblx0XHRcdFx0fTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdGFzeW5jIGluaXRTaGVsbEhpc3RvcnlQcm92aWRlcigpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0dGhpcy5zaGVsbEhpc3RvcnlQcm92aWRlciA9IGF3YWl0IFNoZWxsSGlzdG9yeVByb3ZpZGVyLmdldEluc3RhbmNlKHRoaXMuYXBwSWQgPz8gXCI8dW5rbm93bkFwcD5cIik7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoaWxlIGNyZWF0aW5nIFNoZWxsSGlzdG9yeVByb3ZpZGVyIGZvciBlYXN5IGZpbHRlclwiLCBlcnJvciBhcyBzdHJpbmcpO1xuXHRcdH1cblx0fVxuXG5cdGNyZWF0ZUZhdm9yaXRlUG9wb3ZlcigpOiBQb3BvdmVyIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PFBvcG92ZXJcblx0XHRcdFx0aWQ9e3RoaXMuZ2V0SWQoKSArIFwiLWZhdm9yaXRlUG9wb3ZlclwifVxuXHRcdFx0XHRzaG93SGVhZGVyPXtmYWxzZX1cblx0XHRcdFx0aG9yaXpvbnRhbFNjcm9sbGluZz17ZmFsc2V9XG5cdFx0XHRcdHBsYWNlbWVudD17UGxhY2VtZW50VHlwZS5Cb3R0b219XG5cdFx0XHRcdHNob3dBcnJvdz17ZmFsc2V9XG5cdFx0XHRcdGluaXRpYWxGb2N1cz17dGhpcy4kc2VhcmNoSW5wdXR9XG5cdFx0XHRcdGNsYXNzPXtcInNhcEZFQ29udHJvbHNQb3BvdmVyXCJ9XG5cdFx0XHRcdHZpc2libGU9e3RoaXMuc3RhdGUucmVjb21tZW5kZWRRdWVyaWVzLmxlbmd0aCA+IDAgfHwgZXF1YWwoYmluZFN0YXRlKHRoaXMuc3RhdGUsIFwiaXNIaXN0b3J5RW5hYmxlZFwiKSwgdHJ1ZSl9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0PEZsZXhCb3ggZGlyZWN0aW9uPXtGbGV4RGlyZWN0aW9uLkNvbHVtbn0gY2xhc3M9e1wic2FwVWlDb250ZW50UGFkZGluZ1wifSByZW5kZXJUeXBlPXtcIkJhcmVcIn0+XG5cdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0aXRlbXM6IFtcblx0XHRcdFx0XHRcdFx0XHRcdDxUaXRsZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZVN0eWxlPXtUaXRsZUxldmVsLkg2fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfU1VHR0VTVElPTlNfVElUTEVcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcEZlQ29udHJvbHNUaXRsZUJvcmRlclwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXt0aGlzLnN0YXRlLnJlY29tbWVuZGVkUXVlcmllcy5sZW5ndGggPiAwfVxuXHRcdFx0XHRcdFx0XHRcdFx0Lz4sXG5cdFx0XHRcdFx0XHRcdFx0XHQ8SEJveFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBVaUNvbnRlbnRQYWRkaW5nXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zPXtiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJyZWNvbW1lbmRlZFF1ZXJpZXNcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdyYXA9e0ZsZXhXcmFwLldyYXB9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e3RoaXMuc3RhdGUucmVjb21tZW5kZWRRdWVyaWVzLmxlbmd0aCA+IDB9XG5cdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM6IChpZDogc3RyaW5nLCBjdHg6IENvbnRleHQpOiBTdGFuZGFyZExpc3RJdGVtID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBVaVRpbnlNYXJnaW5FbmRcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXtjdHguZ2V0T2JqZWN0KCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cHJlc3M9e3RoaXMucmVxdWVzdEZhdm9yaXRlLmJpbmQodGhpcyl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdDwvSEJveD4sXG5cdFx0XHRcdFx0XHRcdFx0XHQ8VGl0bGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e3RoaXMuZ2V0SWQoKSArIFwiLWVhc3lGaWx0ZXJGYXZvcml0ZVRpdGxlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlU3R5bGU9e1RpdGxlTGV2ZWwuSDZ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9GQVZPUklURV9USVRMRVwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwRmVDb250cm9sc1RpdGxlQm9yZGVyXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e2VxdWFsKGJpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImlzSGlzdG9yeUVuYWJsZWRcIiksIHRydWUpfVxuXHRcdFx0XHRcdFx0XHRcdFx0Lz4sXG5cdFx0XHRcdFx0XHRcdFx0XHQ8TGlzdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtcz17YmluZFN0YXRlKHRoaXMuc3RhdGUsIFwiZmF2b3JpdGVRdWVyaWVzXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXtlcXVhbChiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJpc0hpc3RvcnlFbmFibGVkXCIpLCB0cnVlKX1cblx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRub0RhdGE6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxJbGx1c3RyYXRlZE1lc3NhZ2Vcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9FTVBUWV9GQVZPUklURV9USVRMRVwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWxsdXN0cmF0aW9uU2l6ZT17SWxsdXN0cmF0ZWRNZXNzYWdlU2l6ZS5FeHRyYVNtYWxsfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpbGx1c3RyYXRpb25UeXBlPXtJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlLk5vRW50cmllc31cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb249e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9FTVBUWV9GQVZPUklURV9ERVNDUklQVElPTlwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM6IChpZDogc3RyaW5nLCBjdHg6IENvbnRleHQpOiBTdGFuZGFyZExpc3RJdGVtID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21MaXN0SXRlbVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlkPXtpZCArIFwiLWVhc3lGaWx0ZXJGYXZvcml0ZUl0ZW1cIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBVaVNtYWxsTWFyZ2luQmVnaW5cIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17W2lkICsgXCItZWFzeUZpbHRlckZhdm9yaXRlVGl0bGVcIl19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y3VzdG9tRGF0YT17WzxDdXN0b21EYXRhIGtleT17XCJ0ZXh0XCJ9IHZhbHVlPXtjdHguZ2V0T2JqZWN0KCl9IC8+XX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQuc2V0VmFsdWUoY3R4LmdldE9iamVjdCgpKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEZsZXhCb3hcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdpZHRoPXtcIjEwMCVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpcmVjdGlvbj17RmxleERpcmVjdGlvbi5Sb3d9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhbGlnbkl0ZW1zPXtGbGV4QWxpZ25JdGVtcy5DZW50ZXJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRqdXN0aWZ5Q29udGVudD17RmxleEp1c3RpZnlDb250ZW50LlNwYWNlQmV0d2Vlbn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlbmRlclR5cGU9e1wiQmFyZVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e2lkfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxUZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e2N0eC5nZXRPYmplY3QoKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcD17Y3R4LmdldE9iamVjdCgpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3cmFwcGluZz17ZmFsc2V9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwic2FwRkVDb250cm9sc1BvaW50ZXJcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlcGVuZGVudHM6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxFdmVudERlbGVnYXRlSG9va1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0YXA9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdHguZ2V0T2JqZWN0KCkucmVwbGFjZSgvXFxcXFxcXFwvZywgXCJcXFxcXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLm9uRW50ZXJQcmVzc2VkKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvVGV4dD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWNvbj17XCJzYXAtaWNvbjovL2Zhdm9yaXRlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXA9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfRklMTEVEX1NUQVJcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtbdGhpcy5nZXRJZCgpICsgXCItZWFzeUZpbHRlckZhdm9yaXRlSXRlbVwiXX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZT17QnV0dG9uVHlwZS5UcmFuc3BhcmVudH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvL1JldGFpbmluZyB0aGUgZm9jdXMgb24gcG9wb3ZlciBkb2Vzbid0IG1ha2UgdGhlIHBvcG92ZXIgY2xvc2Ugb24gZXZlcnkgaW50ZXJhY3Rpb25cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXI/LmZvY3VzKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgcXVlcnlTdHJpbmcgPSBjdHguZ2V0T2JqZWN0KCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgaW5kZXggPSB0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcy5pbmRleE9mKHF1ZXJ5U3RyaW5nKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoaW5kZXggIT09IC0xKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcyA9IHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzLmZpbHRlcihcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHF1ZXJ5KSA9PiBxdWVyeSAhPT0gcXVlcnlTdHJpbmdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvQ3VzdG9tTGlzdEl0ZW0+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdDwvTGlzdD4sXG5cdFx0XHRcdFx0XHRcdFx0XHQ8VGl0bGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e3RoaXMuZ2V0SWQoKSArIFwiLWVhc3lGaWx0ZXJMYXN0VXNlZFRpdGxlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlU3R5bGU9e1RpdGxlTGV2ZWwuSDZ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9MQVNUX1VTRURcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcEZlQ29udHJvbHNUaXRsZUJvcmRlclwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXtlcXVhbChiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJpc0hpc3RvcnlFbmFibGVkXCIpLCB0cnVlKX1cblx0XHRcdFx0XHRcdFx0XHRcdC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PExpc3Rcblx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcInJlY2VudFF1ZXJpZXNXaXRGYXZvcml0ZXNcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e2VxdWFsKGJpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImlzSGlzdG9yeUVuYWJsZWRcIiksIHRydWUpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRtb2RlPXtMaXN0TW9kZS5EZWxldGV9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRlbGV0ZT17KGU6IExpc3RCYXNlJERlbGV0ZUV2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgaXRlbSA9IGUuZ2V0UGFyYW1ldGVyKFwibGlzdEl0ZW1cIikgYXMgQ3VzdG9tTGlzdEl0ZW07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbS5mb2N1cygpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGV0IHF1ZXJ5U3RyaW5nID0gZS5nZXRQYXJhbWV0ZXIoXCJsaXN0SXRlbVwiKT8uZGF0YShcInRleHRcIik7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXF1ZXJ5U3RyaW5nKSByZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gTm9ybWFsaXplIGJhY2tzbGFzaGVzIGJlZm9yZSBjb21wYXJpbmdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nPy5yZXBsYWNlKC9cXFxcL2csIFwiXFxcXFxcXFxcIik7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuZmlsdGVyKChxdWVyeSkgPT4gcXVlcnkgIT09IHF1ZXJ5U3RyaW5nKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRub0RhdGE6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxJbGx1c3RyYXRlZE1lc3NhZ2Vcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9FTVBUWV9MQVNUX1VTRURfVElUTEVcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlsbHVzdHJhdGlvblNpemU9e0lsbHVzdHJhdGVkTWVzc2FnZVNpemUuRXh0cmFTbWFsbH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWxsdXN0cmF0aW9uVHlwZT17SWxsdXN0cmF0ZWRNZXNzYWdlVHlwZS5Ob0VudHJpZXN9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfRU1QVFlfUkVDRU5UX0RFU0NSSVBUSU9OXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtczogKGlkOiBzdHJpbmcsIGN0eDogQ29udGV4dCk6IEZsZXhCb3ggPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbUxpc3RJdGVtXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e2lkICsgXCItZWFzeUZpbHRlckxhc3RVc2VkSXRlbVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUoY3R4LmdldE9iamVjdCgpLnRleHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5vbkVudGVyUHJlc3NlZCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlTbWFsbE1hcmdpbkJlZ2luXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y3VzdG9tRGF0YT17WzxDdXN0b21EYXRhIGtleT17XCJ0ZXh0XCJ9IHZhbHVlPXtjdHguZ2V0T2JqZWN0KCkudGV4dH0gLz5dfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtbaWQgKyBcIi1lYXN5RmlsdGVyTGFzdFVzZWRUaXRsZVwiXX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxGbGV4Qm94XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aWR0aD17XCIxMDAlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaXJlY3Rpb249e0ZsZXhEaXJlY3Rpb24uUm93fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YWxpZ25JdGVtcz17RmxleEFsaWduSXRlbXMuQ2VudGVyfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0anVzdGlmeUNvbnRlbnQ9e0ZsZXhKdXN0aWZ5Q29udGVudC5TcGFjZUJldHdlZW59XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZW5kZXJUeXBlPXtcIkJhcmVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlkPXtpZH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8VGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXtjdHguZ2V0T2JqZWN0KCkudGV4dH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcD17Y3R4LmdldE9iamVjdCgpLnRleHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdyYXBwaW5nPXtmYWxzZX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBGRUNvbnRyb2xzUG9pbnRlclwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVwZW5kZW50czogKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEV2ZW50RGVsZWdhdGVIb29rXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRhcD17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN0eC5nZXRPYmplY3QoKS50ZXh0LnJlcGxhY2UoL1xcXFxcXFxcL2csIFwiXFxcXFwiKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5vbkVudGVyUHJlc3NlZCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L1RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGljb249e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN0eC5nZXRPYmplY3QoKS5pc0Zhdm9yaXRlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IFwic2FwLWljb246Ly9mYXZvcml0ZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IFwic2FwLWljb246Ly9hZGQtZmF2b3JpdGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXA9e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN0eC5nZXRPYmplY3QoKS5pc0Zhdm9yaXRlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfRklMTEVEX1NUQVJcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogdGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9FTVBUWV9TVEFSVFwiKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVuYWJsZWQ9e2xlc3NUaGFuKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxlbmd0aChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJpbmRTdGF0ZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJmYXZvcml0ZVF1ZXJpZXNcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSBhcyBQYXRoSW5Nb2RlbEV4cHJlc3Npb248dW5rbm93bj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDVcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZT17QnV0dG9uVHlwZS5UcmFuc3BhcmVudH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e1tpZCArIFwiLWVhc3lGaWx0ZXJMYXN0VXNlZEl0ZW1cIl19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly9SZXRhaW5pbmcgdGhlIGZvY3VzIG9uIHBvcG92ZXIgZG9lc24ndCBtYWtlIHRoZSBwb3BvdmVyIGNsb3NlIG9uIGV2ZXJ5IGludGVyYWN0aW9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5mb2N1cygpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHF1ZXJ5U3RyaW5nID0gY3R4LmdldE9iamVjdCgpLnRleHQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgaXNGYXZvcml0ZSA9IGN0eC5nZXRPYmplY3QoKS5pc0Zhdm9yaXRlO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGlzRmF2b3JpdGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMucmVtb3ZlRnJvbUZhdm9yaXRlcyhxdWVyeVN0cmluZyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWRkVG9GYXZvcml0ZXMocXVlcnlTdHJpbmcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9GbGV4Qm94PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L0N1c3RvbUxpc3RJdGVtPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHQ8L0xpc3Q+XG5cdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0PC9GbGV4Qm94PlxuXHRcdFx0XHRcdClcblx0XHRcdFx0fX1cblx0XHRcdDwvUG9wb3Zlcj5cblx0XHQpIGFzIFBvcG92ZXI7XG5cdH1cblxuXHRwcml2YXRlIHJlbW92ZUZyb21GYXZvcml0ZXMocXVlcnk6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzID0gdGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMuZmlsdGVyKChkYXRhKSA9PiBkYXRhLnRvTG93ZXJDYXNlKCkgIT09IHF1ZXJ5LnRvTG93ZXJDYXNlKCkpO1xuXHR9XG5cblx0cHJpdmF0ZSBhZGRUb0Zhdm9yaXRlcyhxdWVyeTogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3RmF2b3JpdGUgPSBbcXVlcnldLmNvbmNhdCh0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcy5jb25jYXQoKSk7XG5cdFx0aWYgKG5ld0Zhdm9yaXRlLmxlbmd0aCA+IDUpIHtcblx0XHRcdG5ld0Zhdm9yaXRlLnBvcCgpO1xuXHRcdH1cblx0XHR0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcyA9IG5ld0Zhdm9yaXRlO1xuXHR9XG5cblx0c3RhdGljIHJlbmRlcihybTogUmVuZGVyTWFuYWdlciwgY29udHJvbDogRWFzeUZpbHRlcklucHV0KTogdm9pZCB7XG5cdFx0cmV0dXJuIGpzeC5yZW5kZXJVc2luZ1JlbmRlck1hbmFnZXIocm0sIGNvbnRyb2wsICgpID0+IHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdDxzcGFuIHJlZj17Y29udHJvbH0gY2xhc3M9e1wic2FwRkVFYXN5RmlsdGVySW5wdXRcIn0+XG5cdFx0XHRcdFx0e2NvbnRyb2wuJHNlYXJjaElucHV0fVxuXHRcdFx0XHQ8L3NwYW4+XG5cdFx0XHQpO1xuXHRcdH0pO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BeUNxQkEsZUFBZSxJQUFBQyxJQUFBLEdB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
492
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFYXN5RmlsdGVySW5wdXQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImFnZ3JlZ2F0aW9uIiwidHlwZSIsIm11bHRpcGxlIiwiaXNEZWZhdWx0IiwiX2RlYzMiLCJwcm9wZXJ0eSIsIl9kZWM0IiwiX2RlYzUiLCJldmVudCIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsImRlZmluZVN0YXRlIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9Db250cm9sIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJpbml0aWFsaXplIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFZhbHVlIiwiJHNlYXJjaElucHV0IiwiaXNIaXN0b3J5RW5hYmxlZCIsInN0YXRlIiwidmFsdWVPZiIsInNldFZhbHVlIiwidmFsdWUiLCJzZXRQbGFjZWhvbGRlciIsImdldFBsYWNlaG9sZGVyIiwicmVjb21tZW5kZWRRdWVyaWVzIiwicmVjb21tZW5kZWRWYWx1ZXMiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwicG9wb3ZlckludmlzaWJsZU1lc3NhZ2UiLCJJbnZpc2libGVNZXNzYWdlIiwiZ2V0SW5zdGFuY2UiLCJjcmVhdGVJbnB1dCIsInNldEFzSW52YWxpZCIsIm1lc3NhZ2UiLCJzZXRWYWx1ZVN0YXRlIiwiVmFsdWVTdGF0ZSIsIldhcm5pbmciLCJzZXRWYWx1ZVN0YXRlVGV4dCIsIm9wZW5WYWx1ZVN0YXRlTWVzc2FnZSIsInNldEFzVmFsaWQiLCJOb25lIiwiY2xvc2VWYWx1ZVN0YXRlTWVzc2FnZSIsIl9qc3giLCJJbnB1dCIsIndpZHRoIiwic2hvd0NsZWFySWNvbiIsImNoYW5nZSIsImUiLCJmaXJlRXZlbnQiLCJxdWVyeSIsImdldFBhcmFtZXRlciIsImxpdmVDaGFuZ2UiLCJxdWVyeUNoYW5nZWQiLCJnZXRTb3VyY2UiLCIkZmF2b3JpdGVQb3BvdmVyIiwiaXNPcGVuIiwib3BlblN1Z2dlc3Rpb25Qb3BvdmVyIiwiZ2V0VGV4dCIsImdldFZhbHVlU3RhdGUiLCJwbGFjZWhvbGRlciIsImZhdm9yaXRlUG9wb3ZlciIsImNyZWF0ZUZhdm9yaXRlUG9wb3ZlciIsImFkZERlcGVuZGVudCIsImFkZEV2ZW50RGVsZWdhdGUiLCJvbmtleXVwIiwia2V5Iiwib25FbnRlclByZXNzZWQiLCJjbG9zZSIsIm9ua2V5ZG93biIsImxlbmd0aCIsInByZXZlbnREZWZhdWx0IiwicG9wb3ZlckNvbmFpbmVyIiwiZ2V0Q29udGVudCIsImNvbnRhaW5lckl0ZW1zIiwiZ2V0SXRlbXMiLCJmaW5kIiwiaXRlbSIsImlzRm9jdXNhYmxlIiwiZm9jdXMiLCJvbnRhcCIsIm9uZm9jdXNpbiIsInRhcmdldFRleHQiLCJ0YXJnZXQiLCJvdXRlclRleHQiLCJ0YXJnZXRJZCIsImlkIiwiaW5jbHVkZXMiLCJmYXZvcml0ZVF1ZXJpZXMiLCJmaWx0ZXIiLCJkYXRhIiwidG9Mb3dlckNhc2UiLCJyZWNlbnRRdWVyaWVzIiwib25BZnRlclJlbmRlcmluZyIsImFubm91bmNlIiwiSW52aXNpYmxlTWVzc2FnZU1vZGUiLCJBc3NlcnRpdmUiLCJzaGVsbEhpc3RvcnlQcm92aWRlciIsImdldEZhdm9yaXRlUXVlcmllcyIsImdldFJlY2VudFF1ZXJpZXMiLCJtYXAiLCJvcGVuQnkiLCJyZXF1ZXN0RmF2b3JpdGUiLCJtYWdpY1F1ZXJ5IiwiYWRkUmVjZW50UXVlcnkiLCJxdWVyeVN0cmluZyIsInJlcGxhY2UiLCJyZWNlbnRRdWVyeUluZGV4IiwiZmluZEluZGV4IiwiY29uY2F0Iiwic2xpY2UiLCJ1bnNoaWZ0Iiwib25TdGF0ZUNoYW5nZSIsImNoYW5nZWRQcm9wcyIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNldEZhdm9yaXRlUXVlcmllcyIsInNldFJlY2VudFF1ZXJpZXMiLCJyZWNlbnRRdWVyaWVzV2l0RmF2b3JpdGVzIiwicmVjZW50UXVlcnkiLCJ0ZXh0IiwiaXNGYXZvcml0ZSIsImZhdm9yaXRlUXVlcnkiLCJpbml0U2hlbGxIaXN0b3J5UHJvdmlkZXIiLCJTaGVsbEhpc3RvcnlQcm92aWRlciIsImFwcElkIiwiZXJyb3IiLCJMb2ciLCJQb3BvdmVyIiwiZ2V0SWQiLCJzaG93SGVhZGVyIiwiaG9yaXpvbnRhbFNjcm9sbGluZyIsInBsYWNlbWVudCIsIlBsYWNlbWVudFR5cGUiLCJCb3R0b20iLCJzaG93QXJyb3ciLCJpbml0aWFsRm9jdXMiLCJjbGFzcyIsInZpc2libGUiLCJlcXVhbCIsImJpbmRTdGF0ZSIsImNoaWxkcmVuIiwiY29udGVudCIsIkZsZXhCb3giLCJkaXJlY3Rpb24iLCJGbGV4RGlyZWN0aW9uIiwiQ29sdW1uIiwicmVuZGVyVHlwZSIsIml0ZW1zIiwiVGl0bGUiLCJ0aXRsZVN0eWxlIiwiVGl0bGVMZXZlbCIsIkg2IiwiSEJveCIsIndyYXAiLCJGbGV4V3JhcCIsIldyYXAiLCJjdHgiLCJCdXR0b24iLCJnZXRPYmplY3QiLCJwcmVzcyIsImJpbmQiLCJMaXN0Iiwibm9EYXRhIiwiSWxsdXN0cmF0ZWRNZXNzYWdlIiwidGl0bGUiLCJpbGx1c3RyYXRpb25TaXplIiwiSWxsdXN0cmF0ZWRNZXNzYWdlU2l6ZSIsIkV4dHJhU21hbGwiLCJpbGx1c3RyYXRpb25UeXBlIiwiSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZSIsIk5vRW50cmllcyIsImRlc2NyaXB0aW9uIiwiQ3VzdG9tTGlzdEl0ZW0iLCJhcmlhTGFiZWxsZWRCeSIsImN1c3RvbURhdGEiLCJDdXN0b21EYXRhIiwiX2pzeHMiLCJSb3ciLCJhbGlnbkl0ZW1zIiwiRmxleEFsaWduSXRlbXMiLCJDZW50ZXIiLCJqdXN0aWZ5Q29udGVudCIsIkZsZXhKdXN0aWZ5Q29udGVudCIsIlNwYWNlQmV0d2VlbiIsIlRleHQiLCJ0b29sdGlwIiwid3JhcHBpbmciLCJpY29uIiwiQnV0dG9uVHlwZSIsIlRyYW5zcGFyZW50IiwiaW5kZXgiLCJpbmRleE9mIiwiZGVwZW5kZW50cyIsIkV2ZW50RGVsZWdhdGVIb29rIiwidGFwIiwidHJpZ2dlclBYSW50ZWdyYXRpb24iLCJtb2RlIiwiTGlzdE1vZGUiLCJEZWxldGUiLCJkZWxldGUiLCJlbmFibGVkIiwibGVzc1RoYW4iLCJyZW1vdmVGcm9tRmF2b3JpdGVzIiwiYWRkVG9GYXZvcml0ZXMiLCJuZXdGYXZvcml0ZSIsInBvcCIsInJlbmRlciIsInJtIiwiY29udHJvbCIsImpzeCIsInJlbmRlclVzaW5nUmVuZGVyTWFuYWdlciIsInJlZiIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkVhc3lGaWx0ZXJJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IHR5cGUgeyBQYXRoSW5Nb2RlbEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGJpbmRTdGF0ZSwgZXF1YWwsIGxlbmd0aCwgbGVzc1RoYW4gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVTdGF0ZSwgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBwcm9wZXJ0eSwgdHlwZSBQcm9wZXJ0aWVzT2YsIHR5cGUgU3RhdGVPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBFdmVudERlbGVnYXRlSG9vayBmcm9tIFwic2FwL2ZlL2Jhc2UvRXZlbnREZWxlZ2F0ZUhvb2tcIjtcbmltcG9ydCBqc3ggZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IFNoZWxsSGlzdG9yeVByb3ZpZGVyIGZyb20gXCJzYXAvZmUvY29udHJvbHMvZWFzeUZpbHRlci9TaGVsbEhpc3RvcnlQcm92aWRlclwiO1xuaW1wb3J0IHR5cGUgeyBCdXR0b24kUHJlc3NFdmVudCB9IGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IEN1c3RvbUxpc3RJdGVtIGZyb20gXCJzYXAvbS9DdXN0b21MaXN0SXRlbVwiO1xuaW1wb3J0IEZsZXhCb3ggZnJvbSBcInNhcC9tL0ZsZXhCb3hcIjtcbmltcG9ydCBIQm94IGZyb20gXCJzYXAvbS9IQm94XCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2VTaXplIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VTaXplXCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZSBmcm9tIFwic2FwL20vSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZVwiO1xuaW1wb3J0IHR5cGUgeyBJbnB1dCRMaXZlQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL20vSW5wdXRcIjtcbmltcG9ydCBJbnB1dCBmcm9tIFwic2FwL20vSW5wdXRcIjtcbmltcG9ydCBMaXN0IGZyb20gXCJzYXAvbS9MaXN0XCI7XG5pbXBvcnQgdHlwZSB7IExpc3RCYXNlJERlbGV0ZUV2ZW50IH0gZnJvbSBcInNhcC9tL0xpc3RCYXNlXCI7XG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwic2FwL20vUG9wb3ZlclwiO1xuaW1wb3J0IHR5cGUgU3RhbmRhcmRMaXN0SXRlbSBmcm9tIFwic2FwL20vU3RhbmRhcmRMaXN0SXRlbVwiO1xuaW1wb3J0IFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCBUaXRsZSBmcm9tIFwic2FwL20vVGl0bGVcIjtcbmltcG9ydCB7IEJ1dHRvblR5cGUsIEZsZXhBbGlnbkl0ZW1zLCBGbGV4RGlyZWN0aW9uLCBGbGV4SnVzdGlmeUNvbnRlbnQsIEZsZXhXcmFwLCBMaXN0TW9kZSwgUGxhY2VtZW50VHlwZSB9IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL0N1c3RvbURhdGFcIjtcbmltcG9ydCBJbnZpc2libGVNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9JbnZpc2libGVNZXNzYWdlXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcbmltcG9ydCB7IEludmlzaWJsZU1lc3NhZ2VNb2RlLCBUaXRsZUxldmVsLCBWYWx1ZVN0YXRlIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEV2ZW50SGFuZGxlciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi90eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcbmltcG9ydCB7IHRyaWdnZXJQWEludGVncmF0aW9uIH0gZnJvbSBcIi4vUFhGZWVkYmFja1wiO1xuXG50eXBlIFJlY2VudFR5cGUgPSB7XG5cdHRleHQ6IHN0cmluZztcblx0aXNGYXZvcml0ZTogYm9vbGVhbjtcbn07XG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29udHJvbHMuZWFzeUZpbHRlci5FYXN5RmlsdGVySW5wdXRcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc3lGaWx0ZXJJbnB1dCBleHRlbmRzIENvbnRyb2wge1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5tLklucHV0XCIsIG11bHRpcGxlOiBmYWxzZSwgaXNEZWZhdWx0OiB0cnVlIH0pXG5cdCRzZWFyY2hJbnB1dCE6IElucHV0O1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0YXBwSWQ/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJhcnJheVwiIH0pXG5cdHJlY29tbWVuZGVkVmFsdWVzPzogc3RyaW5nW107XG5cblx0QGV2ZW50KClcblx0cXVlcnlDaGFuZ2VkPzogRXZlbnRIYW5kbGVyPFVJNUV2ZW50PHsgcXVlcnk6IHN0cmluZyB9LCBFYXN5RmlsdGVySW5wdXQ+PjtcblxuXHRAZXZlbnQoKVxuXHRlbnRlclByZXNzZWQ/OiBFdmVudEhhbmRsZXI8VUk1RXZlbnQ8eyBxdWVyeTogc3RyaW5nIH0sIEVhc3lGaWx0ZXJJbnB1dD4+O1xuXG5cdEBldmVudCgpXG5cdGxpdmVDaGFuZ2U/OiBFdmVudEhhbmRsZXI7XG5cblx0cHJpdmF0ZSByZXNvdXJjZUJ1bmRsZSE6IFJlc291cmNlQnVuZGxlO1xuXG5cdHNoZWxsSGlzdG9yeVByb3ZpZGVyOiBTaGVsbEhpc3RvcnlQcm92aWRlciB8IHVuZGVmaW5lZDtcblxuXHRwb3BvdmVySW52aXNpYmxlTWVzc2FnZTogSW52aXNpYmxlTWVzc2FnZSB8IHVuZGVmaW5lZDtcblxuXHQkZmF2b3JpdGVQb3BvdmVyOiBQb3BvdmVyIHwgdW5kZWZpbmVkO1xuXG5cdEBkZWZpbmVTdGF0ZSgpXG5cdHByb3RlY3RlZCBzdGF0ZTogU3RhdGVPZjx7XG5cdFx0cXVlcnlDaGFuZ2VkOiBib29sZWFuO1xuXHRcdHJlY2VudFF1ZXJpZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXHRcdHJlY2VudFF1ZXJpZXNXaXRGYXZvcml0ZXM6IHJlYWRvbmx5IFJlY2VudFR5cGVbXTtcblx0XHRpc0hpc3RvcnlFbmFibGVkOiBib29sZWFuO1xuXHRcdGZhdm9yaXRlUXVlcmllczogc3RyaW5nW107XG5cdFx0cmVjb21tZW5kZWRRdWVyaWVzOiBzdHJpbmdbXTtcblx0fT4gPSB7XG5cdFx0cXVlcnlDaGFuZ2VkOiBmYWxzZSxcblx0XHRpc0hpc3RvcnlFbmFibGVkOiBmYWxzZSxcblx0XHRyZWNlbnRRdWVyaWVzOiBbXSxcblx0XHRyZWNlbnRRdWVyaWVzV2l0RmF2b3JpdGVzOiBbXSxcblx0XHRmYXZvcml0ZVF1ZXJpZXM6IFtdIGFzIHN0cmluZ1tdLFxuXHRcdHJlY29tbWVuZGVkUXVlcmllczogW10gYXMgc3RyaW5nW11cblx0fTtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzOiBzdHJpbmcgfCAoJENvbnRyb2xTZXR0aW5ncyAmIFByb3BlcnRpZXNPZjxFYXN5RmlsdGVySW5wdXQ+KSwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdHN1cGVyKHByb3BlcnRpZXMgYXMgc3RyaW5nLCBvdGhlcnMpO1xuXHRcdHRoaXMuaW5pdGlhbGl6ZSgpO1xuXHR9XG5cblx0cHVibGljIGdldFZhbHVlKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuJHNlYXJjaElucHV0LmdldFZhbHVlKCk7XG5cdH1cblxuXHRwdWJsaWMgaXNIaXN0b3J5RW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5zdGF0ZS5pc0hpc3RvcnlFbmFibGVkLnZhbHVlT2YoKTtcblx0fVxuXG5cdHNldFZhbHVlKHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRWYWx1ZSh2YWx1ZSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRzZXRQbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuc2V0UGxhY2Vob2xkZXIodmFsdWUpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIGdldFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuJHNlYXJjaElucHV0LmdldFBsYWNlaG9sZGVyKCk7XG5cdH1cblxuXHRpbml0aWFsaXplKCk6IHZvaWQge1xuXHRcdHRoaXMuc3RhdGUucmVjb21tZW5kZWRRdWVyaWVzID0gdGhpcy5yZWNvbW1lbmRlZFZhbHVlcyA/PyBbXTtcblx0XHR0aGlzLnJlc291cmNlQnVuZGxlID0gTGliLmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvbnRyb2xzXCIpITtcblx0XHR0aGlzLnBvcG92ZXJJbnZpc2libGVNZXNzYWdlID0gSW52aXNpYmxlTWVzc2FnZS5nZXRJbnN0YW5jZSgpO1xuXHRcdHRoaXMuY3JlYXRlSW5wdXQoKTtcblx0fVxuXG5cdHNldEFzSW52YWxpZChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRWYWx1ZVN0YXRlKFZhbHVlU3RhdGUuV2FybmluZyk7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuc2V0VmFsdWVTdGF0ZVRleHQobWVzc2FnZSk7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQub3BlblZhbHVlU3RhdGVNZXNzYWdlKCk7XG5cdH1cblxuXHRzZXRBc1ZhbGlkKCk6IHZvaWQge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlU3RhdGUoVmFsdWVTdGF0ZS5Ob25lKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5jbG9zZVZhbHVlU3RhdGVNZXNzYWdlKCk7XG5cdH1cblxuXHRjcmVhdGVJbnB1dCgpOiB2b2lkIHtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dCA9IChcblx0XHRcdDxJbnB1dFxuXHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRzaG93Q2xlYXJJY29uPXt0cnVlfVxuXHRcdFx0XHRjaGFuZ2U9eyhlKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJxdWVyeUNoYW5nZWRcIiwgeyBxdWVyeTogZS5nZXRQYXJhbWV0ZXIoXCJ2YWx1ZVwiKSB9KTtcblx0XHRcdFx0fX1cblx0XHRcdFx0bGl2ZUNoYW5nZT17KGU6IElucHV0JExpdmVDaGFuZ2VFdmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdHRoaXMuc3RhdGUucXVlcnlDaGFuZ2VkID0gdHJ1ZTtcblx0XHRcdFx0XHR0aGlzLmZpcmVFdmVudChcImxpdmVDaGFuZ2VcIik7XG5cdFx0XHRcdFx0aWYgKCFlLmdldFNvdXJjZSgpLmdldFZhbHVlKCkgJiYgISh0aGlzLiRmYXZvcml0ZVBvcG92ZXI/LmlzT3BlbigpID8/IGZhbHNlKSkge1xuXHRcdFx0XHRcdFx0dGhpcy5vcGVuU3VnZ2VzdGlvblBvcG92ZXIoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGUuZ2V0UGFyYW1ldGVyKFwidmFsdWVcIikgPT09IFwiXCIpIHtcblx0XHRcdFx0XHRcdHRoaXMuc2V0UGxhY2Vob2xkZXIodGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QTEFDRUhPTERFUlwiKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICh0aGlzLiRzZWFyY2hJbnB1dC5nZXRWYWx1ZVN0YXRlKCkgPT09IFZhbHVlU3RhdGUuV2FybmluZykge1xuXHRcdFx0XHRcdFx0dGhpcy5zZXRBc1ZhbGlkKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9fVxuXHRcdFx0XHRwbGFjZWhvbGRlcj17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QTEFDRUhPTERFUlwiKX1cblx0XHRcdD48L0lucHV0PlxuXHRcdCk7XG5cblx0XHRjb25zdCBmYXZvcml0ZVBvcG92ZXIgPSB0aGlzLmNyZWF0ZUZhdm9yaXRlUG9wb3ZlcigpO1xuXHRcdHRoaXMuJGZhdm9yaXRlUG9wb3ZlciA9IGZhdm9yaXRlUG9wb3ZlcjtcblxuXHRcdHRoaXMuJHNlYXJjaElucHV0LmFkZERlcGVuZGVudChmYXZvcml0ZVBvcG92ZXIpO1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LmFkZEV2ZW50RGVsZWdhdGUoe1xuXHRcdFx0b25rZXl1cDogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcblx0XHRcdFx0aWYgKGUua2V5ID09PSBcIkVudGVyXCIpIHtcblx0XHRcdFx0XHR0aGlzLm9uRW50ZXJQcmVzc2VkKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHRoaXMuJGZhdm9yaXRlUG9wb3ZlciAmJiB0aGlzLiRzZWFyY2hJbnB1dC5nZXRWYWx1ZSgpKSB7XG5cdFx0XHRcdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyLmNsb3NlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRvbmtleWRvd246IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRlLmtleSA9PT0gXCJUYWJcIiAmJlxuXHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5nZXRWYWx1ZSgpLmxlbmd0aCA9PT0gMCAmJlxuXHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5nZXRWYWx1ZSgpICE9PSB0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0UGxhY2Vob2xkZXIoKSAmJlxuXHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5nZXRQbGFjZWhvbGRlcigpICE9PSB0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUodGhpcy4kc2VhcmNoSW5wdXQ/LmdldFBsYWNlaG9sZGVyKCkpO1xuXHRcdFx0XHRcdHRoaXMuZmlyZUV2ZW50KFwibGl2ZUNoYW5nZVwiKTtcblx0XHRcdFx0fSBlbHNlIGlmIChlLmtleSA9PT0gXCJBcnJvd0Rvd25cIikge1xuXHRcdFx0XHRcdGNvbnN0IHBvcG92ZXJDb25haW5lciA9IHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uZ2V0Q29udGVudCgpWzBdO1xuXHRcdFx0XHRcdGNvbnN0IGNvbnRhaW5lckl0ZW1zID0gKHBvcG92ZXJDb25haW5lciBhcyBGbGV4Qm94KS5nZXRJdGVtcygpO1xuXHRcdFx0XHRcdGNvbnRhaW5lckl0ZW1zPy5maW5kKChpdGVtKSA9PiBpdGVtLmlzRm9jdXNhYmxlKCkgJiYgKGl0ZW0uZm9jdXMoKSwgdHJ1ZSkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0b250YXA6ICgpID0+IHtcblx0XHRcdFx0dGhpcy5vcGVuU3VnZ2VzdGlvblBvcG92ZXIoKTtcblx0XHRcdH0sXG5cdFx0XHRvbmZvY3VzaW46ICgpID0+IHtcblx0XHRcdFx0dGhpcy5vcGVuU3VnZ2VzdGlvblBvcG92ZXIoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXIuYWRkRXZlbnREZWxlZ2F0ZSh7XG5cdFx0XHRvbmtleWRvd246IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHRhcmdldFRleHQgPSAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpPy5vdXRlclRleHQ7XG5cdFx0XHRcdGNvbnN0IHRhcmdldElkID0gKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KT8uaWQ7XG5cdFx0XHRcdHN3aXRjaCAoZS5rZXkpIHtcblx0XHRcdFx0XHRjYXNlIFwiRW50ZXJcIjpcblx0XHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZSh0YXJnZXRUZXh0KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJEZWxldGVcIjpcblx0XHRcdFx0XHRcdGlmICh0YXJnZXRJZD8uaW5jbHVkZXMoXCJlYXN5RmlsdGVyRmF2b3JpdGVJdGVtXCIpKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzID0gdGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMuZmlsdGVyKFxuXHRcdFx0XHRcdFx0XHRcdChkYXRhKSA9PiBkYXRhLnRvTG93ZXJDYXNlKCkgIT09IHRhcmdldFRleHQudG9Mb3dlckNhc2UoKVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzID0gdGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLmZpbHRlcigocXVlcnkpID0+IHF1ZXJ5ICE9PSB0YXJnZXRUZXh0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJFc2NhcGVcIjpcblx0XHRcdFx0XHRcdGlmICh0aGlzLiRmYXZvcml0ZVBvcG92ZXI/LmlzT3BlbigpKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlci5jbG9zZSgpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRvbkFmdGVyUmVuZGVyaW5nOiAoKSA9PiB7XG5cdFx0XHRcdHRoaXMucG9wb3ZlckludmlzaWJsZU1lc3NhZ2U/LmFubm91bmNlKFxuXHRcdFx0XHRcdHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIlRfRUFTWV9GSUxURVJfSU5QVVRfVEVYVF9MSU5LX1BPUE9WRVJfQVJJQVwiKSxcblx0XHRcdFx0XHRJbnZpc2libGVNZXNzYWdlTW9kZS5Bc3NlcnRpdmVcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgb3BlblN1Z2dlc3Rpb25Qb3BvdmVyKCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy4kc2VhcmNoSW5wdXQ/LmdldFZhbHVlKCkgJiYgKCF0aGlzLiRmYXZvcml0ZVBvcG92ZXIgfHwgIXRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uaXNPcGVuKCkpKSB7XG5cdFx0XHQvLyBPcGVuIHRoZSBlYXN5IGZpbHRlciBwb3BvdmVyXG5cdFx0XHR0aGlzLnN0YXRlLmlzSGlzdG9yeUVuYWJsZWQgPSB0aGlzLnNoZWxsSGlzdG9yeVByb3ZpZGVyPy5pc0hpc3RvcnlFbmFibGVkKCkgPz8gZmFsc2U7XG5cdFx0XHR0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcyA9IHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXI/LmdldEZhdm9yaXRlUXVlcmllcygpID8/IFtdO1xuXHRcdFx0dGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzID0gKHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXI/LmdldFJlY2VudFF1ZXJpZXMoKSA/PyBbXSkubWFwKChxdWVyeSkgPT4gcXVlcnkpO1xuXHRcdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5vcGVuQnkodGhpcy4kc2VhcmNoSW5wdXQpO1xuXHRcdH1cblx0fVxuXG5cdHJlcXVlc3RGYXZvcml0ZShlOiBCdXR0b24kUHJlc3NFdmVudCk6IHZvaWQge1xuXHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uY2xvc2UoKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUoZS5nZXRTb3VyY2UoKS5nZXRUZXh0KCkpO1xuXHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0fVxuXG5cdG9uRW50ZXJQcmVzc2VkKCk6IHZvaWQge1xuXHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uY2xvc2UoKTtcblx0XHR0aGlzLnN0YXRlLnF1ZXJ5Q2hhbmdlZCA9IGZhbHNlO1xuXHRcdGxldCBtYWdpY1F1ZXJ5ID0gdGhpcy4kc2VhcmNoSW5wdXQ/LmdldFZhbHVlKCk7XG5cdFx0aWYgKG1hZ2ljUXVlcnkgPT09IFwiXCIgJiYgdGhpcy4kc2VhcmNoSW5wdXQuZ2V0UGxhY2Vob2xkZXIoKSAhPT0gdGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QTEFDRUhPTERFUlwiKSkge1xuXHRcdFx0bWFnaWNRdWVyeSA9IHRoaXMuJHNlYXJjaElucHV0LmdldFBsYWNlaG9sZGVyKCk7XG5cdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUobWFnaWNRdWVyeSk7XG5cdFx0fVxuXHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZVN0YXRlVGV4dChcIlwiKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWVTdGF0ZShcIk5vbmVcIik7XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJlbnRlclByZXNzZWRcIiwgeyBxdWVyeTogbWFnaWNRdWVyeSB9KTtcblx0fVxuXG5cdGFkZFJlY2VudFF1ZXJ5KHF1ZXJ5U3RyaW5nOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcblx0XHQvLyBOb3JtYWxpemUgYmFja3NsYXNoZXMgYmVmb3JlIHN0b3Jpbmdcblx0XHRxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nPy5yZXBsYWNlKC9cXFxcL2csIFwiXFxcXFxcXFxcIik7XG5cblx0XHRjb25zdCByZWNlbnRRdWVyeUluZGV4ID0gdGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLmZpbmRJbmRleCgocXVlcnkpID0+IHF1ZXJ5LnRvTG93ZXJDYXNlKCkgPT09IHF1ZXJ5U3RyaW5nPy50b0xvd2VyQ2FzZSgpKTtcblx0XHRpZiAocXVlcnlTdHJpbmcgJiYgcmVjZW50UXVlcnlJbmRleCA9PT0gLTEpIHtcblx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyA9IFtxdWVyeVN0cmluZ10uY29uY2F0KHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyk7XG5cdFx0XHRpZiAodGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLmxlbmd0aCA+IDUpIHtcblx0XHRcdFx0dGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzID0gdGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLnNsaWNlKDAsIDUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAocXVlcnlTdHJpbmcpIHtcblx0XHRcdGNvbnN0IHJlY2VudFF1ZXJpZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuZmlsdGVyKChxdWVyeSkgPT4gcXVlcnkudG9Mb3dlckNhc2UoKSAhPT0gcXVlcnlTdHJpbmc/LnRvTG93ZXJDYXNlKCkpO1xuXHRcdFx0cmVjZW50UXVlcmllcy51bnNoaWZ0KHF1ZXJ5U3RyaW5nKTtcblx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyA9IHJlY2VudFF1ZXJpZXM7XG5cdFx0fVxuXHR9XG5cblx0b25TdGF0ZUNoYW5nZShjaGFuZ2VkUHJvcHM6IHN0cmluZ1tdID0gW10pOiB2b2lkIHtcblx0XHRpZiAoY2hhbmdlZFByb3BzLmluY2x1ZGVzKFwiZmF2b3JpdGVRdWVyaWVzXCIpIHx8IGNoYW5nZWRQcm9wcy5pbmNsdWRlcyhcInJlY2VudFF1ZXJpZXNcIikpIHtcblx0XHRcdHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXI/LnNldEZhdm9yaXRlUXVlcmllcyh0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcyk7XG5cdFx0XHR0aGlzLnNoZWxsSGlzdG9yeVByb3ZpZGVyPy5zZXRSZWNlbnRRdWVyaWVzKHRoaXMuc3RhdGUucmVjZW50UXVlcmllcy5tYXAoKHF1ZXJ5KSA9PiBxdWVyeSkpO1xuXHRcdFx0dGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzV2l0RmF2b3JpdGVzID0gdGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLm1hcCgocmVjZW50UXVlcnkpID0+IHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHR0ZXh0OiByZWNlbnRRdWVyeSxcblx0XHRcdFx0XHRpc0Zhdm9yaXRlOiAhIXRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzLmZpbmQoKGZhdm9yaXRlUXVlcnkpID0+IGZhdm9yaXRlUXVlcnkgPT09IHJlY2VudFF1ZXJ5KVxuXHRcdFx0XHR9O1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgaW5pdFNoZWxsSGlzdG9yeVByb3ZpZGVyKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHR0aGlzLnNoZWxsSGlzdG9yeVByb3ZpZGVyID0gYXdhaXQgU2hlbGxIaXN0b3J5UHJvdmlkZXIuZ2V0SW5zdGFuY2UodGhpcy5hcHBJZCA/PyBcIjx1bmtub3duQXBwPlwiKTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgY3JlYXRpbmcgU2hlbGxIaXN0b3J5UHJvdmlkZXIgZm9yIGVhc3kgZmlsdGVyXCIsIGVycm9yIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cblx0Y3JlYXRlRmF2b3JpdGVQb3BvdmVyKCk6IFBvcG92ZXIge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8UG9wb3ZlclxuXHRcdFx0XHRpZD17dGhpcy5nZXRJZCgpICsgXCItZmF2b3JpdGVQb3BvdmVyXCJ9XG5cdFx0XHRcdHNob3dIZWFkZXI9e2ZhbHNlfVxuXHRcdFx0XHRob3Jpem9udGFsU2Nyb2xsaW5nPXtmYWxzZX1cblx0XHRcdFx0cGxhY2VtZW50PXtQbGFjZW1lbnRUeXBlLkJvdHRvbX1cblx0XHRcdFx0c2hvd0Fycm93PXtmYWxzZX1cblx0XHRcdFx0aW5pdGlhbEZvY3VzPXt0aGlzLiRzZWFyY2hJbnB1dH1cblx0XHRcdFx0Y2xhc3M9e1wic2FwRkVDb250cm9sc1BvcG92ZXJcIn1cblx0XHRcdFx0dmlzaWJsZT17dGhpcy5zdGF0ZS5yZWNvbW1lbmRlZFF1ZXJpZXMubGVuZ3RoID4gMCB8fCBlcXVhbChiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJpc0hpc3RvcnlFbmFibGVkXCIpLCB0cnVlKX1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjb250ZW50OiAoXG5cdFx0XHRcdFx0XHQ8RmxleEJveCBkaXJlY3Rpb249e0ZsZXhEaXJlY3Rpb24uQ29sdW1ufSBjbGFzcz17XCJzYXBVaUNvbnRlbnRQYWRkaW5nXCJ9IHJlbmRlclR5cGU9e1wiQmFyZVwifT5cblx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRpdGVtczogW1xuXHRcdFx0XHRcdFx0XHRcdFx0PFRpdGxlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlU3R5bGU9e1RpdGxlTGV2ZWwuSDZ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9TVUdHRVNUSU9OU19USVRMRVwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwRmVDb250cm9sc1RpdGxlQm9yZGVyXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e3RoaXMuc3RhdGUucmVjb21tZW5kZWRRdWVyaWVzLmxlbmd0aCA+IDB9XG5cdFx0XHRcdFx0XHRcdFx0XHQvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxIQm94XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpQ29udGVudFBhZGRpbmdcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcInJlY29tbWVuZGVkUXVlcmllc1wiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0d3JhcD17RmxleFdyYXAuV3JhcH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17dGhpcy5zdGF0ZS5yZWNvbW1lbmRlZFF1ZXJpZXMubGVuZ3RoID4gMH1cblx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtczogKGlkOiBzdHJpbmcsIGN0eDogQ29udGV4dCk6IFN0YW5kYXJkTGlzdEl0ZW0gPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpVGlueU1hcmdpbkVuZFwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e2N0eC5nZXRPYmplY3QoKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17dGhpcy5yZXF1ZXN0RmF2b3JpdGUuYmluZCh0aGlzKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0PC9IQm94Pixcblx0XHRcdFx0XHRcdFx0XHRcdDxUaXRsZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZD17dGhpcy5nZXRJZCgpICsgXCItZWFzeUZpbHRlckZhdm9yaXRlVGl0bGVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGVTdHlsZT17VGl0bGVMZXZlbC5INn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0ZBVk9SSVRFX1RJVExFXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBGZUNvbnRyb2xzVGl0bGVCb3JkZXJcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17ZXF1YWwoYmluZFN0YXRlKHRoaXMuc3RhdGUsIFwiaXNIaXN0b3J5RW5hYmxlZFwiKSwgdHJ1ZSl9XG5cdFx0XHRcdFx0XHRcdFx0XHQvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxMaXN0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zPXtiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJmYXZvcml0ZVF1ZXJpZXNcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e2VxdWFsKGJpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImlzSGlzdG9yeUVuYWJsZWRcIiksIHRydWUpfVxuXHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5vRGF0YTogKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PElsbHVzdHJhdGVkTWVzc2FnZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZT17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0VNUFRZX0ZBVk9SSVRFX1RJVExFXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpbGx1c3RyYXRpb25TaXplPXtJbGx1c3RyYXRlZE1lc3NhZ2VTaXplLkV4dHJhU21hbGx9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlsbHVzdHJhdGlvblR5cGU9e0lsbHVzdHJhdGVkTWVzc2FnZVR5cGUuTm9FbnRyaWVzfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbj17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0VNUFRZX0ZBVk9SSVRFX0RFU0NSSVBUSU9OXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtczogKGlkOiBzdHJpbmcsIGN0eDogQ29udGV4dCk6IFN0YW5kYXJkTGlzdEl0ZW0gPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbUxpc3RJdGVtXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e2lkICsgXCItZWFzeUZpbHRlckZhdm9yaXRlSXRlbVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpU21hbGxNYXJnaW5CZWdpblwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtbaWQgKyBcIi1lYXN5RmlsdGVyRmF2b3JpdGVUaXRsZVwiXX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdXN0b21EYXRhPXtbPEN1c3RvbURhdGEga2V5PXtcInRleHRcIn0gdmFsdWU9e2N0eC5nZXRPYmplY3QoKX0gLz5dfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRWYWx1ZShjdHguZ2V0T2JqZWN0KCkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5vbkVudGVyUHJlc3NlZCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8RmxleEJveFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0d2lkdGg9e1wiMTAwJVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlyZWN0aW9uPXtGbGV4RGlyZWN0aW9uLlJvd31cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFsaWduSXRlbXM9e0ZsZXhBbGlnbkl0ZW1zLkNlbnRlcn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGp1c3RpZnlDb250ZW50PXtGbGV4SnVzdGlmeUNvbnRlbnQuU3BhY2VCZXR3ZWVufVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVuZGVyVHlwZT17XCJCYXJlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZD17aWR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PFRleHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17Y3R4LmdldE9iamVjdCgpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwPXtjdHguZ2V0T2JqZWN0KCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdyYXBwaW5nPXtmYWxzZX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBGRUNvbnRyb2xzUG9pbnRlclwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+PC9UZXh0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpY29uPXtcInNhcC1pY29uOi8vZmF2b3JpdGVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9GSUxMRURfU1RBUlwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e1t0aGlzLmdldElkKCkgKyBcIi1lYXN5RmlsdGVyRmF2b3JpdGVJdGVtXCJdfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlPXtCdXR0b25UeXBlLlRyYW5zcGFyZW50fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vUmV0YWluaW5nIHRoZSBmb2N1cyBvbiBwb3BvdmVyIGRvZXNuJ3QgbWFrZSB0aGUgcG9wb3ZlciBjbG9zZSBvbiBldmVyeSBpbnRlcmFjdGlvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uZm9jdXMoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBxdWVyeVN0cmluZyA9IGN0eC5nZXRPYmplY3QoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBpbmRleCA9IHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzLmluZGV4T2YocXVlcnlTdHJpbmcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChpbmRleCAhPT0gLTEpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzID0gdGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMuZmlsdGVyKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocXVlcnkpID0+IHF1ZXJ5ICE9PSBxdWVyeVN0cmluZ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVwZW5kZW50czogKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxFdmVudERlbGVnYXRlSG9va1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGFwPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdHguZ2V0T2JqZWN0KCkucmVwbGFjZSgvXFxcXFxcXFwvZywgXCJcXFxcXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRyaWdnZXJQWEludGVncmF0aW9uKFwiZmF2b3JpdGVcIik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvQ3VzdG9tTGlzdEl0ZW0+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdDwvTGlzdD4sXG5cdFx0XHRcdFx0XHRcdFx0XHQ8VGl0bGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e3RoaXMuZ2V0SWQoKSArIFwiLWVhc3lGaWx0ZXJMYXN0VXNlZFRpdGxlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlU3R5bGU9e1RpdGxlTGV2ZWwuSDZ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9MQVNUX1VTRURcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcEZlQ29udHJvbHNUaXRsZUJvcmRlclwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXtlcXVhbChiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJpc0hpc3RvcnlFbmFibGVkXCIpLCB0cnVlKX1cblx0XHRcdFx0XHRcdFx0XHRcdC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PExpc3Rcblx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcInJlY2VudFF1ZXJpZXNXaXRGYXZvcml0ZXNcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e2VxdWFsKGJpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImlzSGlzdG9yeUVuYWJsZWRcIiksIHRydWUpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRtb2RlPXtMaXN0TW9kZS5EZWxldGV9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRlbGV0ZT17KGU6IExpc3RCYXNlJERlbGV0ZUV2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgaXRlbSA9IGUuZ2V0UGFyYW1ldGVyKFwibGlzdEl0ZW1cIikgYXMgQ3VzdG9tTGlzdEl0ZW07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbS5mb2N1cygpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGV0IHF1ZXJ5U3RyaW5nID0gZS5nZXRQYXJhbWV0ZXIoXCJsaXN0SXRlbVwiKT8uZGF0YShcInRleHRcIik7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXF1ZXJ5U3RyaW5nKSByZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gTm9ybWFsaXplIGJhY2tzbGFzaGVzIGJlZm9yZSBjb21wYXJpbmdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nPy5yZXBsYWNlKC9cXFxcL2csIFwiXFxcXFxcXFxcIik7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuZmlsdGVyKChxdWVyeSkgPT4gcXVlcnkgIT09IHF1ZXJ5U3RyaW5nKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRub0RhdGE6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxJbGx1c3RyYXRlZE1lc3NhZ2Vcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9FTVBUWV9MQVNUX1VTRURfVElUTEVcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlsbHVzdHJhdGlvblNpemU9e0lsbHVzdHJhdGVkTWVzc2FnZVNpemUuRXh0cmFTbWFsbH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWxsdXN0cmF0aW9uVHlwZT17SWxsdXN0cmF0ZWRNZXNzYWdlVHlwZS5Ob0VudHJpZXN9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfRU1QVFlfUkVDRU5UX0RFU0NSSVBUSU9OXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtczogKGlkOiBzdHJpbmcsIGN0eDogQ29udGV4dCk6IEZsZXhCb3ggPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbUxpc3RJdGVtXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e2lkICsgXCItZWFzeUZpbHRlckxhc3RVc2VkSXRlbVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUoY3R4LmdldE9iamVjdCgpLnRleHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5vbkVudGVyUHJlc3NlZCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlTbWFsbE1hcmdpbkJlZ2luXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y3VzdG9tRGF0YT17WzxDdXN0b21EYXRhIGtleT17XCJ0ZXh0XCJ9IHZhbHVlPXtjdHguZ2V0T2JqZWN0KCkudGV4dH0gLz5dfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtbaWQgKyBcIi1lYXN5RmlsdGVyTGFzdFVzZWRUaXRsZVwiXX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxGbGV4Qm94XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aWR0aD17XCIxMDAlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaXJlY3Rpb249e0ZsZXhEaXJlY3Rpb24uUm93fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YWxpZ25JdGVtcz17RmxleEFsaWduSXRlbXMuQ2VudGVyfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0anVzdGlmeUNvbnRlbnQ9e0ZsZXhKdXN0aWZ5Q29udGVudC5TcGFjZUJldHdlZW59XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZW5kZXJUeXBlPXtcIkJhcmVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlkPXtpZH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8VGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXtjdHguZ2V0T2JqZWN0KCkudGV4dH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcD17Y3R4LmdldE9iamVjdCgpLnRleHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdyYXBwaW5nPXtmYWxzZX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBGRUNvbnRyb2xzUG9pbnRlclwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+PC9UZXh0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpY29uPXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdHguZ2V0T2JqZWN0KCkuaXNGYXZvcml0ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyBcInNhcC1pY29uOi8vZmF2b3JpdGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBcInNhcC1pY29uOi8vYWRkLWZhdm9yaXRlXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwPXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdHguZ2V0T2JqZWN0KCkuaXNGYXZvcml0ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyB0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX0ZJTExFRF9TVEFSXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfRU1QVFlfU1RBUlRcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbmFibGVkPXtsZXNzVGhhbihcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsZW5ndGgoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRiaW5kU3RhdGUoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiZmF2b3JpdGVRdWVyaWVzXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkgYXMgUGF0aEluTW9kZWxFeHByZXNzaW9uPHVua25vd24+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ1XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9e0J1dHRvblR5cGUuVHJhbnNwYXJlbnR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtbaWQgKyBcIi1lYXN5RmlsdGVyTGFzdFVzZWRJdGVtXCJdfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vUmV0YWluaW5nIHRoZSBmb2N1cyBvbiBwb3BvdmVyIGRvZXNuJ3QgbWFrZSB0aGUgcG9wb3ZlciBjbG9zZSBvbiBldmVyeSBpbnRlcmFjdGlvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uZm9jdXMoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBxdWVyeVN0cmluZyA9IGN0eC5nZXRPYmplY3QoKS50ZXh0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGlzRmF2b3JpdGUgPSBjdHguZ2V0T2JqZWN0KCkuaXNGYXZvcml0ZTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChpc0Zhdm9yaXRlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnJlbW92ZUZyb21GYXZvcml0ZXMocXVlcnlTdHJpbmcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmFkZFRvRmF2b3JpdGVzKHF1ZXJ5U3RyaW5nKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVwZW5kZW50czogKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxFdmVudERlbGVnYXRlSG9va1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGFwPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdHguZ2V0T2JqZWN0KCkudGV4dC5yZXBsYWNlKC9cXFxcXFxcXC9nLCBcIlxcXFxcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJpZ2dlclBYSW50ZWdyYXRpb24oXCJyZWNlbnRcIik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvQ3VzdG9tTGlzdEl0ZW0+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdDwvTGlzdD5cblx0XHRcdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0KVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9Qb3BvdmVyPlxuXHRcdCkgYXMgUG9wb3Zlcjtcblx0fVxuXG5cdHByaXZhdGUgcmVtb3ZlRnJvbUZhdm9yaXRlcyhxdWVyeTogc3RyaW5nKTogdm9pZCB7XG5cdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSB0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcy5maWx0ZXIoKGRhdGEpID0+IGRhdGEudG9Mb3dlckNhc2UoKSAhPT0gcXVlcnkudG9Mb3dlckNhc2UoKSk7XG5cdH1cblxuXHRwcml2YXRlIGFkZFRvRmF2b3JpdGVzKHF1ZXJ5OiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCBuZXdGYXZvcml0ZSA9IFtxdWVyeV0uY29uY2F0KHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzLmNvbmNhdCgpKTtcblx0XHRpZiAobmV3RmF2b3JpdGUubGVuZ3RoID4gNSkge1xuXHRcdFx0bmV3RmF2b3JpdGUucG9wKCk7XG5cdFx0fVxuXHRcdHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzID0gbmV3RmF2b3JpdGU7XG5cdH1cblxuXHRzdGF0aWMgcmVuZGVyKHJtOiBSZW5kZXJNYW5hZ2VyLCBjb250cm9sOiBFYXN5RmlsdGVySW5wdXQpOiB2b2lkIHtcblx0XHRyZXR1cm4ganN4LnJlbmRlclVzaW5nUmVuZGVyTWFuYWdlcihybSwgY29udHJvbCwgKCkgPT4ge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PHNwYW4gcmVmPXtjb250cm9sfSBjbGFzcz17XCJzYXBGRUVhc3lGaWx0ZXJJbnB1dFwifT5cblx0XHRcdFx0XHR7Y29udHJvbC4kc2VhcmNoSW5wdXR9XG5cdFx0XHRcdDwvc3Bhbj5cblx0XHRcdCk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQTBDcUJBLGVBQWUsSUFBQUMsSUFBQSxHQURuQ0MsY0FBYyxDQUFDLDRDQUE0QyxDQUFDLEVBQUFDLEtBQUEsR0FFM0RDLFdBQVcsQ0FBQztJQUFFQyxJQUFJLEVBQUUsYUFBYTtJQUFFQyxRQUFRLEVBQUUsS0FBSztJQUFFQyxTQUFTLEVBQUU7RUFBSyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUd0RUMsUUFBUSxDQUFDO0lBQUVKLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBSyxLQUFBLEdBRzVCRCxRQUFRLENBQUM7SUFBRUosSUFBSSxFQUFFO0VBQVEsQ0FBQyxDQUFDLEVBQUFNLEtBQUEsR0FHM0JDLEtBQUssQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FHUEQsS0FBSyxDQUFDLENBQUMsRUFBQUUsS0FBQSxHQUdQRixLQUFLLENBQUMsQ0FBQyxFQUFBRyxLQUFBLEdBV1BDLFdBQVcsQ0FBQyxDQUFDLEVBQUFmLElBQUEsQ0FBQWdCLE1BQUEsSUFBQUMsT0FBQSwwQkFBQUMsUUFBQTtJQWlCZCxTQUFBbkIsZ0JBQVlvQixVQUF1RSxFQUFFQyxNQUF5QixFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUMvR0EsS0FBQSxHQUFBSCxRQUFBLENBQUFJLElBQUEsT0FBTUgsVUFBVSxFQUFZQyxNQUFNLENBQUM7TUFBQ0csMEJBQUEsQ0FBQUYsS0FBQSxrQkFBQUcsV0FBQSxFQUFBSCxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsV0FBQUksWUFBQSxFQUFBSixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsdUJBQUFLLFlBQUEsRUFBQUwsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLGtCQUFBTSxZQUFBLEVBQUFOLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxrQkFBQU8sWUFBQSxFQUFBUCxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsZ0JBQUFRLFlBQUEsRUFBQVIsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLFdBQUFTLFlBQUEsRUFBQVQsS0FBQTtNQUNwQ0EsS0FBQSxDQUFLVSxVQUFVLENBQUMsQ0FBQztNQUFDLE9BQUFWLEtBQUE7SUFDbkI7SUFBQ1csUUFBQSxHQUFBakMsZUFBQTtJQUFBa0MsY0FBQSxDQUFBbEMsZUFBQSxFQUFBbUIsUUFBQTtJQUFBLElBQUFnQixNQUFBLEdBQUFuQyxlQUFBLENBQUFvQyxTQUFBO0lBQUFELE1BQUEsQ0FFTUUsUUFBUSxHQUFmLFNBQU9BLFFBQVFBLENBQUEsRUFBVztNQUN6QixPQUFPLElBQUksQ0FBQ0MsWUFBWSxDQUFDRCxRQUFRLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQUFGLE1BQUEsQ0FFTUksZ0JBQWdCLEdBQXZCLFNBQU9BLGdCQUFnQkEsQ0FBQSxFQUFZO01BQ2xDLE9BQU8sSUFBSSxDQUFDQyxLQUFLLENBQUNELGdCQUFnQixDQUFDRSxPQUFPLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQUFOLE1BQUEsQ0FFRE8sUUFBUSxHQUFSLFNBQUFBLFFBQVFBLENBQUNDLEtBQWEsRUFBUTtNQUM3QixJQUFJLENBQUNMLFlBQVksQ0FBQ0ksUUFBUSxDQUFDQyxLQUFLLENBQUM7TUFDakMsT0FBTyxJQUFJO0lBQ1osQ0FBQztJQUFBUixNQUFBLENBRURTLGNBQWMsR0FBZCxTQUFBQSxjQUFjQSxDQUFDRCxLQUFhLEVBQVE7TUFDbkMsSUFBSSxDQUFDTCxZQUFZLENBQUNNLGNBQWMsQ0FBQ0QsS0FBSyxDQUFDO01BQ3ZDLE9BQU8sSUFBSTtJQUNaLENBQUM7SUFBQVIsTUFBQSxDQUVNVSxjQUFjLEdBQXJCLFNBQU9BLGNBQWNBLENBQUEsRUFBVztNQUMvQixPQUFPLElBQUksQ0FBQ1AsWUFBWSxDQUFDTyxjQUFjLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQUFWLE1BQUEsQ0FFREgsVUFBVSxHQUFWLFNBQUFBLFVBQVVBLENBQUEsRUFBUztNQUNsQixJQUFJLENBQUNRLEtBQUssQ0FBQ00sa0JBQWtCLEdBQUcsSUFBSSxDQUFDQyxpQkFBaUIsSUFBSSxFQUFFO01BQzVELElBQUksQ0FBQ0MsY0FBYyxHQUFHQyxHQUFHLENBQUNDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFFO01BQ2xFLElBQUksQ0FBQ0MsdUJBQXVCLEdBQUdDLGdCQUFnQixDQUFDQyxXQUFXLENBQUMsQ0FBQztNQUM3RCxJQUFJLENBQUNDLFdBQVcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFBQW5CLE1BQUEsQ0FFRG9CLFlBQVksR0FBWixTQUFBQSxZQUFZQSxDQUFDQyxPQUFlLEVBQVE7TUFDbkMsSUFBSSxDQUFDbEIsWUFBWSxDQUFDbUIsYUFBYSxDQUFDQyxVQUFVLENBQUNDLE9BQU8sQ0FBQztNQUNuRCxJQUFJLENBQUNyQixZQUFZLENBQUNzQixpQkFBaUIsQ0FBQ0osT0FBTyxDQUFDO01BQzVDLElBQUksQ0FBQ2xCLFlBQVksQ0FBQ3VCLHFCQUFxQixDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUFBMUIsTUFBQSxDQUVEMkIsVUFBVSxHQUFWLFNBQUFBLFVBQVVBLENBQUEsRUFBUztNQUNsQixJQUFJLENBQUN4QixZQUFZLENBQUNtQixhQUFhLENBQUNDLFVBQVUsQ0FBQ0ssSUFBSSxDQUFDO01BQ2hELElBQUksQ0FBQ3pCLFlBQVksQ0FBQzBCLHNCQUFzQixDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUFBN0IsTUFBQSxDQUVEbUIsV0FBVyxHQUFYLFNBQUFBLFdBQVdBLENBQUEsRUFBUztNQUNuQixJQUFJLENBQUNoQixZQUFZLEdBQ2hCMkIsSUFBQSxDQUFDQyxLQUFLO1FBQ0xDLEtBQUssRUFBQyxNQUFNO1FBQ1pDLGFBQWEsRUFBRSxJQUFLO1FBQ3BCQyxNQUFNLEVBQUdDLENBQUMsSUFBVztVQUNwQixJQUFJLENBQUNDLFNBQVMsQ0FBQyxjQUFjLEVBQUU7WUFBRUMsS0FBSyxFQUFFRixDQUFDLENBQUNHLFlBQVksQ0FBQyxPQUFPO1VBQUUsQ0FBQyxDQUFDO1FBQ25FLENBQUU7UUFDRkMsVUFBVSxFQUFHSixDQUF3QixJQUFXO1VBQy9DLElBQUksQ0FBQzlCLEtBQUssQ0FBQ21DLFlBQVksR0FBRyxJQUFJO1VBQzlCLElBQUksQ0FBQ0osU0FBUyxDQUFDLFlBQVksQ0FBQztVQUM1QixJQUFJLENBQUNELENBQUMsQ0FBQ00sU0FBUyxDQUFDLENBQUMsQ0FBQ3ZDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUN3QyxnQkFBZ0IsRUFBRUMsTUFBTSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtZQUM3RSxJQUFJLENBQUNDLHFCQUFxQixDQUFDLENBQUM7VUFDN0I7VUFDQSxJQUFJVCxDQUFDLENBQUNHLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkMsSUFBSSxDQUFDN0IsY0FBYyxDQUFDLElBQUksQ0FBQ0ksY0FBYyxDQUFDZ0MsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQUM7VUFDOUU7VUFDQSxJQUFJLElBQUksQ0FBQzFDLFlBQVksQ0FBQzJDLGFBQWEsQ0FBQyxDQUFDLEtBQUt2QixVQUFVLENBQUNDLE9BQU8sRUFBRTtZQUM3RCxJQUFJLENBQUNHLFVBQVUsQ0FBQyxDQUFDO1VBQ2xCO1FBQ0QsQ0FBRTtRQUNGb0IsV0FBVyxFQUFFLElBQUksQ0FBQ2xDLGNBQWMsQ0FBQ2dDLE9BQU8sQ0FBQywyQkFBMkI7TUFBRSxDQUMvRCxDQUNSO01BRUQsTUFBTUcsZUFBZSxHQUFHLElBQUksQ0FBQ0MscUJBQXFCLENBQUMsQ0FBQztNQUNwRCxJQUFJLENBQUNQLGdCQUFnQixHQUFHTSxlQUFlO01BRXZDLElBQUksQ0FBQzdDLFlBQVksQ0FBQytDLFlBQVksQ0FBQ0YsZUFBZSxDQUFDO01BQy9DLElBQUksQ0FBQzdDLFlBQVksQ0FBQ2dELGdCQUFnQixDQUFDO1FBQ2xDQyxPQUFPLEVBQUdqQixDQUFnQixJQUFLO1VBQzlCLElBQUlBLENBQUMsQ0FBQ2tCLEdBQUcsS0FBSyxPQUFPLEVBQUU7WUFDdEIsSUFBSSxDQUFDQyxjQUFjLENBQUMsQ0FBQztVQUN0QjtVQUNBLElBQUksSUFBSSxDQUFDWixnQkFBZ0IsSUFBSSxJQUFJLENBQUN2QyxZQUFZLENBQUNELFFBQVEsQ0FBQyxDQUFDLEVBQUU7WUFDMUQsSUFBSSxDQUFDd0MsZ0JBQWdCLENBQUNhLEtBQUssQ0FBQyxDQUFDO1VBQzlCO1FBQ0QsQ0FBQztRQUNEQyxTQUFTLEVBQUdyQixDQUFnQixJQUFLO1VBQ2hDLElBQ0NBLENBQUMsQ0FBQ2tCLEdBQUcsS0FBSyxLQUFLLElBQ2YsSUFBSSxDQUFDbEQsWUFBWSxFQUFFRCxRQUFRLENBQUMsQ0FBQyxDQUFDdUQsTUFBTSxLQUFLLENBQUMsSUFDMUMsSUFBSSxDQUFDdEQsWUFBWSxFQUFFRCxRQUFRLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQ0MsWUFBWSxFQUFFTyxjQUFjLENBQUMsQ0FBQyxJQUNyRSxJQUFJLENBQUNQLFlBQVksRUFBRU8sY0FBYyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUNHLGNBQWMsQ0FBQ2dDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxFQUMvRjtZQUNEVixDQUFDLENBQUN1QixjQUFjLENBQUMsQ0FBQztZQUNsQixJQUFJLENBQUN2RCxZQUFZLEVBQUVJLFFBQVEsQ0FBQyxJQUFJLENBQUNKLFlBQVksRUFBRU8sY0FBYyxDQUFDLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMwQixTQUFTLENBQUMsWUFBWSxDQUFDO1VBQzdCLENBQUMsTUFBTSxJQUFJRCxDQUFDLENBQUNrQixHQUFHLEtBQUssV0FBVyxFQUFFO1lBQ2pDLE1BQU1NLGVBQWUsR0FBRyxJQUFJLENBQUNqQixnQkFBZ0IsRUFBRWtCLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlELE1BQU1DLGNBQWMsR0FBSUYsZUFBZSxDQUFhRyxRQUFRLENBQUMsQ0FBQztZQUM5REQsY0FBYyxFQUFFRSxJQUFJLENBQUVDLElBQUksSUFBS0EsSUFBSSxDQUFDQyxXQUFXLENBQUMsQ0FBQyxLQUFLRCxJQUFJLENBQUNFLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7VUFDM0U7UUFDRCxDQUFDO1FBQ0RDLEtBQUssRUFBRUEsQ0FBQSxLQUFNO1VBQ1osSUFBSSxDQUFDdkIscUJBQXFCLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0R3QixTQUFTLEVBQUVBLENBQUEsS0FBTTtVQUNoQixJQUFJLENBQUN4QixxQkFBcUIsQ0FBQyxDQUFDO1FBQzdCO01BQ0QsQ0FBQyxDQUFDO01BQ0YsSUFBSSxDQUFDRixnQkFBZ0IsQ0FBQ1MsZ0JBQWdCLENBQUM7UUFDdENLLFNBQVMsRUFBR3JCLENBQWdCLElBQUs7VUFDaEMsTUFBTWtDLFVBQVUsR0FBSWxDLENBQUMsQ0FBQ21DLE1BQU0sRUFBa0JDLFNBQVM7VUFDdkQsTUFBTUMsUUFBUSxHQUFJckMsQ0FBQyxDQUFDbUMsTUFBTSxFQUFrQkcsRUFBRTtVQUM5QyxRQUFRdEMsQ0FBQyxDQUFDa0IsR0FBRztZQUNaLEtBQUssT0FBTztjQUNYLElBQUksQ0FBQ2xELFlBQVksRUFBRUksUUFBUSxDQUFDOEQsVUFBVSxDQUFDO2NBQ3ZDO1lBQ0QsS0FBSyxRQUFRO2NBQ1osSUFBSUcsUUFBUSxFQUFFRSxRQUFRLENBQUMsd0JBQXdCLENBQUMsRUFBRTtnQkFDakQsSUFBSSxDQUFDckUsS0FBSyxDQUFDc0UsZUFBZSxHQUFHLElBQUksQ0FBQ3RFLEtBQUssQ0FBQ3NFLGVBQWUsQ0FBQ0MsTUFBTSxDQUM1REMsSUFBSSxJQUFLQSxJQUFJLENBQUNDLFdBQVcsQ0FBQyxDQUFDLEtBQUtULFVBQVUsQ0FBQ1MsV0FBVyxDQUFDLENBQ3pELENBQUM7Y0FDRixDQUFDLE1BQU07Z0JBQ04sSUFBSSxDQUFDekUsS0FBSyxDQUFDMEUsYUFBYSxHQUFHLElBQUksQ0FBQzFFLEtBQUssQ0FBQzBFLGFBQWEsQ0FBQ0gsTUFBTSxDQUFFdkMsS0FBSyxJQUFLQSxLQUFLLEtBQUtnQyxVQUFVLENBQUM7Y0FDNUY7Y0FDQTtZQUNELEtBQUssUUFBUTtjQUNaLElBQUksSUFBSSxDQUFDM0IsZ0JBQWdCLEVBQUVDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQ0QsZ0JBQWdCLENBQUNhLEtBQUssQ0FBQyxDQUFDO2NBQzlCO2NBQ0E7VUFDRjtRQUNELENBQUM7UUFDRHlCLGdCQUFnQixFQUFFQSxDQUFBLEtBQU07VUFDdkIsSUFBSSxDQUFDaEUsdUJBQXVCLEVBQUVpRSxRQUFRLENBQ3JDLElBQUksQ0FBQ3BFLGNBQWMsQ0FBQ2dDLE9BQU8sQ0FBQyw0Q0FBNEMsQ0FBQyxFQUN6RXFDLG9CQUFvQixDQUFDQyxTQUN0QixDQUFDO1FBQ0Y7TUFDRCxDQUFDLENBQUM7SUFDSCxDQUFDO0lBQUFuRixNQUFBLENBRU80QyxxQkFBcUIsR0FBN0IsU0FBUUEscUJBQXFCQSxDQUFBLEVBQVM7TUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQ3pDLFlBQVksRUFBRUQsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQ3dDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDQSxnQkFBZ0IsRUFBRUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ25HO1FBQ0EsSUFBSSxDQUFDdEMsS0FBSyxDQUFDRCxnQkFBZ0IsR0FBRyxJQUFJLENBQUNnRixvQkFBb0IsRUFBRWhGLGdCQUFnQixDQUFDLENBQUMsSUFBSSxLQUFLO1FBQ3BGLElBQUksQ0FBQ0MsS0FBSyxDQUFDc0UsZUFBZSxHQUFHLElBQUksQ0FBQ1Msb0JBQW9CLEVBQUVDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxFQUFFO1FBQ2xGLElBQUksQ0FBQ2hGLEtBQUssQ0FBQzBFLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQ0ssb0JBQW9CLEVBQUVFLGdCQUFnQixDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUVDLEdBQUcsQ0FBRWxELEtBQUssSUFBS0EsS0FBSyxDQUFDO1FBQ3RHLElBQUksQ0FBQ0ssZ0JBQWdCLEVBQUU4QyxNQUFNLENBQUMsSUFBSSxDQUFDckYsWUFBWSxDQUFDO01BQ2pEO0lBQ0QsQ0FBQztJQUFBSCxNQUFBLENBRUR5RixlQUFlLEdBQWYsU0FBQUEsZUFBZUEsQ0FBQ3RELENBQW9CLEVBQVE7TUFDM0MsSUFBSSxDQUFDTyxnQkFBZ0IsRUFBRWEsS0FBSyxDQUFDLENBQUM7TUFDOUIsSUFBSSxDQUFDcEQsWUFBWSxFQUFFSSxRQUFRLENBQUM0QixDQUFDLENBQUNNLFNBQVMsQ0FBQyxDQUFDLENBQUNJLE9BQU8sQ0FBQyxDQUFDLENBQUM7TUFDcEQsSUFBSSxDQUFDUyxjQUFjLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBQUF0RCxNQUFBLENBRURzRCxjQUFjLEdBQWQsU0FBQUEsY0FBY0EsQ0FBQSxFQUFTO01BQ3RCLElBQUksQ0FBQ1osZ0JBQWdCLEVBQUVhLEtBQUssQ0FBQyxDQUFDO01BQzlCLElBQUksQ0FBQ2xELEtBQUssQ0FBQ21DLFlBQVksR0FBRyxLQUFLO01BQy9CLElBQUlrRCxVQUFVLEdBQUcsSUFBSSxDQUFDdkYsWUFBWSxFQUFFRCxRQUFRLENBQUMsQ0FBQztNQUM5QyxJQUFJd0YsVUFBVSxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUN2RixZQUFZLENBQUNPLGNBQWMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDRyxjQUFjLENBQUNnQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsRUFBRTtRQUN6SDZDLFVBQVUsR0FBRyxJQUFJLENBQUN2RixZQUFZLENBQUNPLGNBQWMsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQ1AsWUFBWSxFQUFFSSxRQUFRLENBQUNtRixVQUFVLENBQUM7TUFDeEM7TUFDQSxJQUFJLENBQUN2RixZQUFZLEVBQUVzQixpQkFBaUIsQ0FBQyxFQUFFLENBQUM7TUFDeEMsSUFBSSxDQUFDdEIsWUFBWSxFQUFFbUIsYUFBYSxDQUFDLE1BQU0sQ0FBQztNQUN4QyxJQUFJLENBQUNjLFNBQVMsQ0FBQyxjQUFjLEVBQUU7UUFBRUMsS0FBSyxFQUFFcUQ7TUFBVyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUFBMUYsTUFBQSxDQUVEMkYsY0FBYyxHQUFkLFNBQUFBLGNBQWNBLENBQUNDLFdBQStCLEVBQVE7TUFDckQ7TUFDQUEsV0FBVyxHQUFHQSxXQUFXLEVBQUVDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDO01BRWpELE1BQU1DLGdCQUFnQixHQUFHLElBQUksQ0FBQ3pGLEtBQUssQ0FBQzBFLGFBQWEsQ0FBQ2dCLFNBQVMsQ0FBRTFELEtBQUssSUFBS0EsS0FBSyxDQUFDeUMsV0FBVyxDQUFDLENBQUMsS0FBS2MsV0FBVyxFQUFFZCxXQUFXLENBQUMsQ0FBQyxDQUFDO01BQzFILElBQUljLFdBQVcsSUFBSUUsZ0JBQWdCLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDM0MsSUFBSSxDQUFDekYsS0FBSyxDQUFDMEUsYUFBYSxHQUFHLENBQUNhLFdBQVcsQ0FBQyxDQUFDSSxNQUFNLENBQUMsSUFBSSxDQUFDM0YsS0FBSyxDQUFDMEUsYUFBYSxDQUFDO1FBQ3pFLElBQUksSUFBSSxDQUFDMUUsS0FBSyxDQUFDMEUsYUFBYSxDQUFDdEIsTUFBTSxHQUFHLENBQUMsRUFBRTtVQUN4QyxJQUFJLENBQUNwRCxLQUFLLENBQUMwRSxhQUFhLEdBQUcsSUFBSSxDQUFDMUUsS0FBSyxDQUFDMEUsYUFBYSxDQUFDa0IsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEU7TUFDRCxDQUFDLE1BQU0sSUFBSUwsV0FBVyxFQUFFO1FBQ3ZCLE1BQU1iLGFBQWEsR0FBRyxJQUFJLENBQUMxRSxLQUFLLENBQUMwRSxhQUFhLENBQUNILE1BQU0sQ0FBRXZDLEtBQUssSUFBS0EsS0FBSyxDQUFDeUMsV0FBVyxDQUFDLENBQUMsS0FBS2MsV0FBVyxFQUFFZCxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3BIQyxhQUFhLENBQUNtQixPQUFPLENBQUNOLFdBQVcsQ0FBQztRQUNsQyxJQUFJLENBQUN2RixLQUFLLENBQUMwRSxhQUFhLEdBQUdBLGFBQWE7TUFDekM7SUFDRCxDQUFDO0lBQUEvRSxNQUFBLENBRURtRyxhQUFhLEdBQWIsU0FBQUEsYUFBYUEsQ0FBQSxFQUFvQztNQUFBLElBQW5DQyxZQUFzQixHQUFBQyxTQUFBLENBQUE1QyxNQUFBLFFBQUE0QyxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLEVBQUU7TUFDeEMsSUFBSUQsWUFBWSxDQUFDMUIsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUkwQixZQUFZLENBQUMxQixRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUU7UUFDdkYsSUFBSSxDQUFDVSxvQkFBb0IsRUFBRW1CLGtCQUFrQixDQUFDLElBQUksQ0FBQ2xHLEtBQUssQ0FBQ3NFLGVBQWUsQ0FBQztRQUN6RSxJQUFJLENBQUNTLG9CQUFvQixFQUFFb0IsZ0JBQWdCLENBQUMsSUFBSSxDQUFDbkcsS0FBSyxDQUFDMEUsYUFBYSxDQUFDUSxHQUFHLENBQUVsRCxLQUFLLElBQUtBLEtBQUssQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQ2hDLEtBQUssQ0FBQ29HLHlCQUF5QixHQUFHLElBQUksQ0FBQ3BHLEtBQUssQ0FBQzBFLGFBQWEsQ0FBQ1EsR0FBRyxDQUFFbUIsV0FBVyxJQUFLO1VBQ3BGLE9BQU87WUFDTkMsSUFBSSxFQUFFRCxXQUFXO1lBQ2pCRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQ3ZHLEtBQUssQ0FBQ3NFLGVBQWUsQ0FBQ1osSUFBSSxDQUFFOEMsYUFBYSxJQUFLQSxhQUFhLEtBQUtILFdBQVc7VUFDL0YsQ0FBQztRQUNGLENBQUMsQ0FBQztNQUNIO0lBQ0QsQ0FBQztJQUFBMUcsTUFBQSxDQUVLOEcsd0JBQXdCLEdBQTlCLGVBQU1BLHdCQUF3QkEsQ0FBQSxFQUFrQjtNQUMvQyxJQUFJO1FBQ0gsSUFBSSxDQUFDMUIsb0JBQW9CLEdBQUcsTUFBTTJCLG9CQUFvQixDQUFDN0YsV0FBVyxDQUFDLElBQUksQ0FBQzhGLEtBQUssSUFBSSxjQUFjLENBQUM7TUFDakcsQ0FBQyxDQUFDLE9BQU9DLEtBQUssRUFBRTtRQUNmQyxHQUFHLENBQUNELEtBQUssQ0FBQywyREFBMkQsRUFBRUEsS0FBZSxDQUFDO01BQ3hGO0lBQ0QsQ0FBQztJQUFBakgsTUFBQSxDQUVEaUQscUJBQXFCLEdBQXJCLFNBQUFBLHFCQUFxQkEsQ0FBQSxFQUFZO01BQ2hDLE9BQ0NuQixJQUFBLENBQUNxRixPQUFPO1FBQ1AxQyxFQUFFLEVBQUUsSUFBSSxDQUFDMkMsS0FBSyxDQUFDLENBQUMsR0FBRyxrQkFBbUI7UUFDdENDLFVBQVUsRUFBRSxLQUFNO1FBQ2xCQyxtQkFBbUIsRUFBRSxLQUFNO1FBQzNCQyxTQUFTLEVBQUVDLGFBQWEsQ0FBQ0MsTUFBTztRQUNoQ0MsU0FBUyxFQUFFLEtBQU07UUFDakJDLFlBQVksRUFBRSxJQUFJLENBQUN4SCxZQUFhO1FBQ2hDeUgsS0FBSyxFQUFFLHNCQUF1QjtRQUM5QkMsT0FBTyxFQUFFLElBQUksQ0FBQ3hILEtBQUssQ0FBQ00sa0JBQWtCLENBQUM4QyxNQUFNLEdBQUcsQ0FBQyxJQUFJcUUsS0FBSyxDQUFDQyxTQUFTLENBQUMsSUFBSSxDQUFDMUgsS0FBSyxFQUFFLGtCQUFrQixDQUFDLEVBQUUsSUFBSSxDQUFFO1FBQUEySCxRQUFBLEVBRTNHO1VBQ0FDLE9BQU8sRUFDTm5HLElBQUEsQ0FBQ29HLE9BQU87WUFBQ0MsU0FBUyxFQUFFQyxhQUFhLENBQUNDLE1BQU87WUFBQ1QsS0FBSyxFQUFFLHFCQUFzQjtZQUFDVSxVQUFVLEVBQUUsTUFBTztZQUFBTixRQUFBLEVBQ3pGO2NBQ0FPLEtBQUssRUFBRSxDQUNOekcsSUFBQSxDQUFDMEcsS0FBSztnQkFDTEMsVUFBVSxFQUFFQyxVQUFVLENBQUNDLEVBQUc7Z0JBQzFCaEMsSUFBSSxFQUFFLElBQUksQ0FBQzlGLGNBQWMsQ0FBQ2dDLE9BQU8sQ0FBQyx5Q0FBeUMsQ0FBRTtnQkFDN0UrRSxLQUFLLEVBQUUsMEJBQTJCO2dCQUNsQ0MsT0FBTyxFQUFFLElBQUksQ0FBQ3hILEtBQUssQ0FBQ00sa0JBQWtCLENBQUM4QyxNQUFNLEdBQUc7Y0FBRSxDQUNsRCxDQUFDLEVBQ0YzQixJQUFBLENBQUM4RyxJQUFJO2dCQUNKaEIsS0FBSyxFQUFFLHFCQUFzQjtnQkFDN0JXLEtBQUssRUFBRVIsU0FBUyxDQUFDLElBQUksQ0FBQzFILEtBQUssRUFBRSxvQkFBb0IsQ0FBRTtnQkFDbkR3SSxJQUFJLEVBQUVDLFFBQVEsQ0FBQ0MsSUFBSztnQkFDcEJsQixPQUFPLEVBQUUsSUFBSSxDQUFDeEgsS0FBSyxDQUFDTSxrQkFBa0IsQ0FBQzhDLE1BQU0sR0FBRyxDQUFFO2dCQUFBdUUsUUFBQSxFQUVqRDtrQkFDQU8sS0FBSyxFQUFFQSxDQUFDOUQsRUFBVSxFQUFFdUUsR0FBWSxLQUF1QjtvQkFDdEQsT0FDQ2xILElBQUEsQ0FBQ21ILE1BQU07c0JBQ05yQixLQUFLLEVBQUUsb0JBQXFCO3NCQUM1QmpCLElBQUksRUFBRXFDLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUU7c0JBQ3RCQyxLQUFLLEVBQUUsSUFBSSxDQUFDMUQsZUFBZSxDQUFDMkQsSUFBSSxDQUFDLElBQUk7b0JBQUUsQ0FDdkMsQ0FBQztrQkFFSjtnQkFDRDtjQUFDLENBQ0ksQ0FBQyxFQUNQdEgsSUFBQSxDQUFDMEcsS0FBSztnQkFDTC9ELEVBQUUsRUFBRSxJQUFJLENBQUMyQyxLQUFLLENBQUMsQ0FBQyxHQUFHLDBCQUEyQjtnQkFDOUNxQixVQUFVLEVBQUVDLFVBQVUsQ0FBQ0MsRUFBRztnQkFDMUJoQyxJQUFJLEVBQUUsSUFBSSxDQUFDOUYsY0FBYyxDQUFDZ0MsT0FBTyxDQUFDLHNDQUFzQyxDQUFFO2dCQUMxRStFLEtBQUssRUFBRSwwQkFBMkI7Z0JBQ2xDQyxPQUFPLEVBQUVDLEtBQUssQ0FBQ0MsU0FBUyxDQUFDLElBQUksQ0FBQzFILEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLElBQUk7Y0FBRSxDQUNoRSxDQUFDLEVBQ0Z5QixJQUFBLENBQUN1SCxJQUFJO2dCQUNKZCxLQUFLLEVBQUVSLFNBQVMsQ0FBQyxJQUFJLENBQUMxSCxLQUFLLEVBQUUsaUJBQWlCLENBQUU7Z0JBQ2hEd0gsT0FBTyxFQUFFQyxLQUFLLENBQUNDLFNBQVMsQ0FBQyxJQUFJLENBQUMxSCxLQUFLLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxJQUFJLENBQUU7Z0JBQUEySCxRQUFBLEVBRS9EO2tCQUNBc0IsTUFBTSxFQUNMeEgsSUFBQSxDQUFDeUgsa0JBQWtCO29CQUNsQkMsS0FBSyxFQUFFLElBQUksQ0FBQzNJLGNBQWMsQ0FBQ2dDLE9BQU8sQ0FBQyw0Q0FBNEMsQ0FBRTtvQkFDakY0RyxnQkFBZ0IsRUFBRUMsc0JBQXNCLENBQUNDLFVBQVc7b0JBQ3BEQyxnQkFBZ0IsRUFBRUMsc0JBQXNCLENBQUNDLFNBQVU7b0JBQ25EQyxXQUFXLEVBQUUsSUFBSSxDQUFDbEosY0FBYyxDQUFDZ0MsT0FBTyxDQUN2QyxrREFDRDtrQkFBRSxDQUNGLENBQ0Q7a0JBQ0QwRixLQUFLLEVBQUVBLENBQUM5RCxFQUFVLEVBQUV1RSxHQUFZLEtBQXVCO29CQUN0RCxPQUNDbEgsSUFBQSxDQUFDa0ksY0FBYztzQkFDZHZGLEVBQUUsRUFBRUEsRUFBRSxHQUFHLHlCQUEwQjtzQkFDbkNtRCxLQUFLLEVBQUUsdUJBQXdCO3NCQUMvQnFDLGNBQWMsRUFBRSxDQUFDeEYsRUFBRSxHQUFHLDBCQUEwQixDQUFFO3NCQUNsRHlGLFVBQVUsRUFBRSxDQUFDcEksSUFBQSxDQUFDcUksVUFBVTt3QkFBYzNKLEtBQUssRUFBRXdJLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDO3NCQUFFLEdBQS9CLE1BQWlDLENBQUMsQ0FBRTtzQkFDbEVDLEtBQUssRUFBRUEsQ0FBQSxLQUFZO3dCQUNsQixJQUFJLENBQUNoSixZQUFZLENBQUNJLFFBQVEsQ0FBQ3lJLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQzt3QkFDM0MsSUFBSSxDQUFDNUYsY0FBYyxDQUFDLENBQUM7c0JBQ3RCLENBQUU7c0JBQUEwRSxRQUFBLEVBRUZvQyxLQUFBLENBQUNsQyxPQUFPO3dCQUNQbEcsS0FBSyxFQUFFLE1BQU87d0JBQ2RtRyxTQUFTLEVBQUVDLGFBQWEsQ0FBQ2lDLEdBQUk7d0JBQzdCQyxVQUFVLEVBQUVDLGNBQWMsQ0FBQ0MsTUFBTzt3QkFDbENDLGNBQWMsRUFBRUMsa0JBQWtCLENBQUNDLFlBQWE7d0JBQ2hEckMsVUFBVSxFQUFFLE1BQU87d0JBQ25CN0QsRUFBRSxFQUFFQSxFQUFHO3dCQUFBdUQsUUFBQSxHQUVQbEcsSUFBQSxDQUFDOEksSUFBSTswQkFDSmpFLElBQUksRUFBRXFDLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUU7MEJBQ3RCMkIsT0FBTyxFQUFFN0IsR0FBRyxDQUFDRSxTQUFTLENBQUMsQ0FBRTswQkFDekI0QixRQUFRLEVBQUUsS0FBTTswQkFDaEJsRCxLQUFLLEVBQUM7d0JBQXNCLENBQ3RCLENBQUMsRUFDUjlGLElBQUEsQ0FBQ21ILE1BQU07MEJBQ044QixJQUFJLEVBQUUscUJBQXNCOzBCQUM1QkYsT0FBTyxFQUFFLElBQUksQ0FBQ2hLLGNBQWMsQ0FBQ2dDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBRTswQkFDbEVvSCxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUM3QyxLQUFLLENBQUMsQ0FBQyxHQUFHLHlCQUF5QixDQUFFOzBCQUMzRGxKLElBQUksRUFBRThNLFVBQVUsQ0FBQ0MsV0FBWTswQkFDN0I5QixLQUFLLEVBQUVBLENBQUEsS0FBWTs0QkFDbEI7NEJBQ0EsSUFBSSxDQUFDekcsZ0JBQWdCLEVBQUV3QixLQUFLLENBQUMsQ0FBQzs0QkFDOUIsTUFBTTBCLFdBQVcsR0FBR29ELEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUM7NEJBQ25DLE1BQU1nQyxLQUFLLEdBQUcsSUFBSSxDQUFDN0ssS0FBSyxDQUFDc0UsZUFBZSxDQUFDd0csT0FBTyxDQUFDdkYsV0FBVyxDQUFDOzRCQUM3RCxJQUFJc0YsS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFOzhCQUNqQixJQUFJLENBQUM3SyxLQUFLLENBQUNzRSxlQUFlLEdBQUcsSUFBSSxDQUFDdEUsS0FBSyxDQUFDc0UsZUFBZSxDQUFDQyxNQUFNLENBQzVEdkMsS0FBSyxJQUFLQSxLQUFLLEtBQUt1RCxXQUN0QixDQUFDOzRCQUNGOzBCQUNEO3dCQUFFLENBQ0YsQ0FBQyxFQUNEOzBCQUNBd0YsVUFBVSxFQUNUdEosSUFBQSxDQUFDdUosaUJBQWlCOzRCQUNqQkMsR0FBRyxFQUFFQSxDQUFBLEtBQVk7OEJBQ2hCLElBQUksQ0FBQ25MLFlBQVksRUFBRUksUUFBUSxDQUMxQnlJLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQ3JELE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUN0QyxDQUFDOzhCQUNEMEYsb0JBQW9CLENBQUMsVUFBVSxDQUFDOzhCQUNoQyxJQUFJLENBQUNqSSxjQUFjLENBQUMsQ0FBQzs0QkFDdEI7MEJBQUUsQ0FDRjt3QkFFSCxDQUFDO3NCQUFBLENBQ087b0JBQUMsQ0FDSyxDQUFDO2tCQUVuQjtnQkFDRDtjQUFDLENBQ0ksQ0FBQyxFQUNQeEIsSUFBQSxDQUFDMEcsS0FBSztnQkFDTC9ELEVBQUUsRUFBRSxJQUFJLENBQUMyQyxLQUFLLENBQUMsQ0FBQyxHQUFHLDBCQUEyQjtnQkFDOUNxQixVQUFVLEVBQUVDLFVBQVUsQ0FBQ0MsRUFBRztnQkFDMUJoQyxJQUFJLEVBQUUsSUFBSSxDQUFDOUYsY0FBYyxDQUFDZ0MsT0FBTyxDQUFDLGlDQUFpQyxDQUFFO2dCQUNyRStFLEtBQUssRUFBRSwwQkFBMkI7Z0JBQ2xDQyxPQUFPLEVBQUVDLEtBQUssQ0FBQ0MsU0FBUyxDQUFDLElBQUksQ0FBQzFILEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLElBQUk7Y0FBRSxDQUNoRSxDQUFDLEVBQ0Z5QixJQUFBLENBQUN1SCxJQUFJO2dCQUNKZCxLQUFLLEVBQUVSLFNBQVMsQ0FBQyxJQUFJLENBQUMxSCxLQUFLLEVBQUUsMkJBQTJCLENBQUU7Z0JBQzFEd0gsT0FBTyxFQUFFQyxLQUFLLENBQUNDLFNBQVMsQ0FBQyxJQUFJLENBQUMxSCxLQUFLLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxJQUFJLENBQUU7Z0JBQ2hFbUwsSUFBSSxFQUFFQyxRQUFRLENBQUNDLE1BQU87Z0JBQ3RCQyxNQUFNLEVBQUd4SixDQUF1QixJQUFXO2tCQUMxQyxNQUFNNkIsSUFBSSxHQUFHN0IsQ0FBQyxDQUFDRyxZQUFZLENBQUMsVUFBVSxDQUFtQjtrQkFDekQwQixJQUFJLENBQUNFLEtBQUssQ0FBQyxDQUFDO2tCQUVaLElBQUkwQixXQUFXLEdBQUd6RCxDQUFDLENBQUNHLFlBQVksQ0FBQyxVQUFVLENBQUMsRUFBRXVDLElBQUksQ0FBQyxNQUFNLENBQUM7a0JBRTFELElBQUksQ0FBQ2UsV0FBVyxFQUFFO2tCQUNsQjtrQkFDQUEsV0FBVyxHQUFHQSxXQUFXLEVBQUVDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDO2tCQUVqRCxJQUFJLENBQUN4RixLQUFLLENBQUMwRSxhQUFhLEdBQUcsSUFBSSxDQUFDMUUsS0FBSyxDQUFDMEUsYUFBYSxDQUFDSCxNQUFNLENBQUV2QyxLQUFLLElBQUtBLEtBQUssS0FBS3VELFdBQVcsQ0FBQztnQkFDN0YsQ0FBRTtnQkFBQW9DLFFBQUEsRUFFRDtrQkFDQXNCLE1BQU0sRUFDTHhILElBQUEsQ0FBQ3lILGtCQUFrQjtvQkFDbEJDLEtBQUssRUFBRSxJQUFJLENBQUMzSSxjQUFjLENBQUNnQyxPQUFPLENBQUMsNkNBQTZDLENBQUU7b0JBQ2xGNEcsZ0JBQWdCLEVBQUVDLHNCQUFzQixDQUFDQyxVQUFXO29CQUNwREMsZ0JBQWdCLEVBQUVDLHNCQUFzQixDQUFDQyxTQUFVO29CQUNuREMsV0FBVyxFQUFFLElBQUksQ0FBQ2xKLGNBQWMsQ0FBQ2dDLE9BQU8sQ0FDdkMsZ0RBQ0Q7a0JBQUUsQ0FDRixDQUNEO2tCQUNEMEYsS0FBSyxFQUFFQSxDQUFDOUQsRUFBVSxFQUFFdUUsR0FBWSxLQUFjO29CQUM3QyxPQUNDbEgsSUFBQSxDQUFDa0ksY0FBYztzQkFDZHZGLEVBQUUsRUFBRUEsRUFBRSxHQUFHLHlCQUEwQjtzQkFDbkMwRSxLQUFLLEVBQUVBLENBQUEsS0FBWTt3QkFDbEIsSUFBSSxDQUFDaEosWUFBWSxFQUFFSSxRQUFRLENBQUN5SSxHQUFHLENBQUNFLFNBQVMsQ0FBQyxDQUFDLENBQUN2QyxJQUFJLENBQUM7d0JBQ2pELElBQUksQ0FBQ3JELGNBQWMsQ0FBQyxDQUFDO3NCQUN0QixDQUFFO3NCQUNGc0UsS0FBSyxFQUFFLHVCQUF3QjtzQkFDL0JzQyxVQUFVLEVBQUUsQ0FBQ3BJLElBQUEsQ0FBQ3FJLFVBQVU7d0JBQWMzSixLQUFLLEVBQUV3SSxHQUFHLENBQUNFLFNBQVMsQ0FBQyxDQUFDLENBQUN2QztzQkFBSyxHQUFwQyxNQUFzQyxDQUFDLENBQUU7c0JBQ3ZFc0QsY0FBYyxFQUFFLENBQUN4RixFQUFFLEdBQUcsMEJBQTBCLENBQUU7c0JBQUF1RCxRQUFBLEVBRWxEb0MsS0FBQSxDQUFDbEMsT0FBTzt3QkFDUGxHLEtBQUssRUFBRSxNQUFPO3dCQUNkbUcsU0FBUyxFQUFFQyxhQUFhLENBQUNpQyxHQUFJO3dCQUM3QkMsVUFBVSxFQUFFQyxjQUFjLENBQUNDLE1BQU87d0JBQ2xDQyxjQUFjLEVBQUVDLGtCQUFrQixDQUFDQyxZQUFhO3dCQUNoRHJDLFVBQVUsRUFBRSxNQUFPO3dCQUNuQjdELEVBQUUsRUFBRUEsRUFBRzt3QkFBQXVELFFBQUEsR0FFUGxHLElBQUEsQ0FBQzhJLElBQUk7MEJBQ0pqRSxJQUFJLEVBQUVxQyxHQUFHLENBQUNFLFNBQVMsQ0FBQyxDQUFDLENBQUN2QyxJQUFLOzBCQUMzQmtFLE9BQU8sRUFBRTdCLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQ3ZDLElBQUs7MEJBQzlCbUUsUUFBUSxFQUFFLEtBQU07MEJBQ2hCbEQsS0FBSyxFQUFDO3dCQUFzQixDQUN0QixDQUFDLEVBQ1I5RixJQUFBLENBQUNtSCxNQUFNOzBCQUNOOEIsSUFBSSxFQUNIL0IsR0FBRyxDQUFDRSxTQUFTLENBQUMsQ0FBQyxDQUFDdEMsVUFBVSxHQUN2QixxQkFBcUIsR0FDckIseUJBQ0g7MEJBQ0RpRSxPQUFPLEVBQ043QixHQUFHLENBQUNFLFNBQVMsQ0FBQyxDQUFDLENBQUN0QyxVQUFVLEdBQ3ZCLElBQUksQ0FBQy9GLGNBQWMsQ0FBQ2dDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxHQUN4RCxJQUFJLENBQUNoQyxjQUFjLENBQUNnQyxPQUFPLENBQUMsMkJBQTJCLENBQzFEOzBCQUNEK0ksT0FBTyxFQUFFQyxRQUFRLENBQ2hCcEksTUFBTSxDQUNMc0UsU0FBUyxDQUNSLElBQUksQ0FBQzFILEtBQUssRUFDVixpQkFDRCxDQUNELENBQUMsRUFDRCxDQUNELENBQUU7MEJBQ0ZuQyxJQUFJLEVBQUU4TSxVQUFVLENBQUNDLFdBQVk7MEJBQzdCaEIsY0FBYyxFQUFFLENBQUN4RixFQUFFLEdBQUcseUJBQXlCLENBQUU7MEJBQ2pEMEUsS0FBSyxFQUFFQSxDQUFBLEtBQVk7NEJBQ2xCOzRCQUNBLElBQUksQ0FBQ3pHLGdCQUFnQixFQUFFd0IsS0FBSyxDQUFDLENBQUM7NEJBQzlCLE1BQU0wQixXQUFXLEdBQUdvRCxHQUFHLENBQUNFLFNBQVMsQ0FBQyxDQUFDLENBQUN2QyxJQUFJOzRCQUN4QyxNQUFNQyxVQUFVLEdBQUdvQyxHQUFHLENBQUNFLFNBQVMsQ0FBQyxDQUFDLENBQUN0QyxVQUFVOzRCQUU3QyxJQUFJQSxVQUFVLEVBQUU7OEJBQ2YsSUFBSSxDQUFDa0YsbUJBQW1CLENBQUNsRyxXQUFXLENBQUM7NEJBQ3RDLENBQUMsTUFBTTs4QkFDTixJQUFJLENBQUNtRyxjQUFjLENBQUNuRyxXQUFXLENBQUM7NEJBQ2pDOzBCQUNEO3dCQUFFLENBQ0YsQ0FBQyxFQUNEOzBCQUNBd0YsVUFBVSxFQUNUdEosSUFBQSxDQUFDdUosaUJBQWlCOzRCQUNqQkMsR0FBRyxFQUFFQSxDQUFBLEtBQVk7OEJBQ2hCLElBQUksQ0FBQ25MLFlBQVksRUFBRUksUUFBUSxDQUMxQnlJLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQ3ZDLElBQUksQ0FBQ2QsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQzNDLENBQUM7OEJBQ0QwRixvQkFBb0IsQ0FBQyxRQUFRLENBQUM7OEJBQzlCLElBQUksQ0FBQ2pJLGNBQWMsQ0FBQyxDQUFDOzRCQUN0QjswQkFBRSxDQUNGO3dCQUVILENBQUM7c0JBQUEsQ0FDTztvQkFBQyxDQUNLLENBQUM7a0JBRW5CO2dCQUNEO2NBQUMsQ0FDSSxDQUFDO1lBRVQ7VUFBQyxDQUNPO1FBRVg7TUFBQyxDQUNPLENBQUM7SUFFWixDQUFDO0lBQUF0RCxNQUFBLENBRU84TCxtQkFBbUIsR0FBM0IsU0FBUUEsbUJBQW1CQSxDQUFDekosS0FBYSxFQUFRO01BQ2hELElBQUksQ0FBQ2hDLEtBQUssQ0FBQ3NFLGVBQWUsR0FBRyxJQUFJLENBQUN0RSxLQUFLLENBQUNzRSxlQUFlLENBQUNDLE1BQU0sQ0FBRUMsSUFBSSxJQUFLQSxJQUFJLENBQUNDLFdBQVcsQ0FBQyxDQUFDLEtBQUt6QyxLQUFLLENBQUN5QyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3JILENBQUM7SUFBQTlFLE1BQUEsQ0FFTytMLGNBQWMsR0FBdEIsU0FBUUEsY0FBY0EsQ0FBQzFKLEtBQWEsRUFBUTtNQUMzQyxNQUFNMkosV0FBVyxHQUFHLENBQUMzSixLQUFLLENBQUMsQ0FBQzJELE1BQU0sQ0FBQyxJQUFJLENBQUMzRixLQUFLLENBQUNzRSxlQUFlLENBQUNxQixNQUFNLENBQUMsQ0FBQyxDQUFDO01BQ3ZFLElBQUlnRyxXQUFXLENBQUN2SSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzNCdUksV0FBVyxDQUFDQyxHQUFHLENBQUMsQ0FBQztNQUNsQjtNQUNBLElBQUksQ0FBQzVMLEtBQUssQ0FBQ3NFLGVBQWUsR0FBR3FILFdBQVc7SUFDekMsQ0FBQztJQUFBbk8sZUFBQSxDQUVNcU8sTUFBTSxHQUFiLFNBQU9BLE1BQU1BLENBQUNDLEVBQWlCLEVBQUVDLE9BQXdCLEVBQVE7TUFDaEUsT0FBT0MsR0FBRyxDQUFDQyx3QkFBd0IsQ0FBQ0gsRUFBRSxFQUFFQyxPQUFPLEVBQUUsTUFBTTtRQUN0RCxPQUNDdEssSUFBQTtVQUFNeUssR0FBRyxFQUFFSCxPQUFRO1VBQUN4RSxLQUFLLEVBQUUsc0JBQXVCO1VBQUFJLFFBQUEsRUFDaERvRSxPQUFPLENBQUNqTTtRQUFZLENBQ2hCLENBQUM7TUFFVCxDQUFDLENBQUM7SUFDSCxDQUFDO0lBQUEsT0FBQXRDLGVBQUE7RUFBQSxFQXZnQjJDMk8sT0FBTyxHQUFBbE4sV0FBQSxHQUFBbU4seUJBQUEsQ0FBQTFOLE9BQUEsQ0FBQWtCLFNBQUEsbUJBQUFqQyxLQUFBO0lBQUEwTyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXROLFlBQUEsR0FBQWtOLHlCQUFBLENBQUExTixPQUFBLENBQUFrQixTQUFBLFlBQUE1QixLQUFBO0lBQUFxTyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXJOLFlBQUEsR0FBQWlOLHlCQUFBLENBQUExTixPQUFBLENBQUFrQixTQUFBLHdCQUFBMUIsS0FBQTtJQUFBbU8sWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFwTixZQUFBLEdBQUFnTix5QkFBQSxDQUFBMU4sT0FBQSxDQUFBa0IsU0FBQSxtQkFBQXpCLEtBQUE7SUFBQWtPLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBbk4sWUFBQSxHQUFBK00seUJBQUEsQ0FBQTFOLE9BQUEsQ0FBQWtCLFNBQUEsbUJBQUF2QixLQUFBO0lBQUFnTyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQWxOLFlBQUEsR0FBQThNLHlCQUFBLENBQUExTixPQUFBLENBQUFrQixTQUFBLGlCQUFBdEIsS0FBQTtJQUFBK04sWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFqTixZQUFBLEdBQUE2TSx5QkFBQSxDQUFBMU4sT0FBQSxDQUFBa0IsU0FBQSxZQUFBckIsS0FBQTtJQUFBOE4sWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0FtQzlDO1FBQ0pySyxZQUFZLEVBQUUsS0FBSztRQUNuQnBDLGdCQUFnQixFQUFFLEtBQUs7UUFDdkIyRSxhQUFhLEVBQUUsRUFBRTtRQUNqQjBCLHlCQUF5QixFQUFFLEVBQUU7UUFDN0I5QixlQUFlLEVBQUUsRUFBYztRQUMvQmhFLGtCQUFrQixFQUFFO01BQ3JCLENBQUM7SUFBQTtFQUFBLElBQUE1QixPQUFBLE1BQUFELE1BQUE7RUFBQWdCLFFBQUEsR0FBQWpDLGVBQUE7RUFBQSxPQUFBaUMsUUFBQTtBQUFBIiwiaWdub3JlTGlzdCI6W119