@openziti/ziti-console-lib 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/assets/styles/global.scss +126 -1
  2. package/assets/styles/ziti.css +7 -0
  3. package/esm2022/lib/features/custom-tags/custom-tags.component.mjs +5 -2
  4. package/esm2022/lib/features/data-table/column-headers/table-column-default/table-column-default.component.mjs +2 -2
  5. package/esm2022/lib/features/data-table/data-table.component.mjs +7 -7
  6. package/esm2022/lib/features/data-table/data-table.service.mjs +5 -5
  7. package/esm2022/lib/features/preview-list/preview-list.component.mjs +3 -3
  8. package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +12 -9
  9. package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +1 -2
  10. package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.mjs +13 -11
  11. package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +7 -8
  12. package/esm2022/lib/features/projectable-forms/projectable-form.class.mjs +8 -1
  13. package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +83 -23
  14. package/esm2022/lib/features/projectable-forms/service/service-form.service.mjs +32 -11
  15. package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.mjs +13 -11
  16. package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +14 -12
  17. package/esm2022/lib/features/wrappers/zac-wrapper-service.class.mjs +4 -1
  18. package/esm2022/lib/features/wrappers/zac-wrapper.component.mjs +5 -4
  19. package/esm2022/lib/features/wrappers/zac-wrapper.service.mjs +3 -3
  20. package/esm2022/lib/models/config.mjs +2 -1
  21. package/esm2022/lib/models/edge-router-policy.mjs +2 -1
  22. package/esm2022/lib/models/service-edge-router-policy.mjs +2 -1
  23. package/esm2022/lib/models/service-policy.mjs +2 -1
  24. package/esm2022/lib/services/settings-service.class.mjs +2 -2
  25. package/esm2022/lib/shared/list-page-component.class.mjs +2 -2
  26. package/fesm2022/openziti-ziti-console-lib.mjs +158 -62
  27. package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
  28. package/lib/features/custom-tags/custom-tags.component.d.ts +3 -2
  29. package/lib/features/custom-tags/custom-tags.component.d.ts.map +1 -1
  30. package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +1 -1
  31. package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts +0 -1
  32. package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts.map +1 -1
  33. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts +0 -1
  34. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts.map +1 -1
  35. package/lib/features/projectable-forms/identity/identity-form.component.d.ts +0 -1
  36. package/lib/features/projectable-forms/identity/identity-form.component.d.ts.map +1 -1
  37. package/lib/features/projectable-forms/projectable-form.class.d.ts +7 -0
  38. package/lib/features/projectable-forms/projectable-form.class.d.ts.map +1 -1
  39. package/lib/features/projectable-forms/service/service-form.component.d.ts +3 -1
  40. package/lib/features/projectable-forms/service/service-form.component.d.ts.map +1 -1
  41. package/lib/features/projectable-forms/service/service-form.service.d.ts +5 -1
  42. package/lib/features/projectable-forms/service/service-form.service.d.ts.map +1 -1
  43. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts +0 -1
  44. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts.map +1 -1
  45. package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts +0 -1
  46. package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts.map +1 -1
  47. package/lib/features/wrappers/zac-wrapper-service.class.d.ts.map +1 -1
  48. package/lib/features/wrappers/zac-wrapper.component.d.ts.map +1 -1
  49. package/lib/features/wrappers/zac-wrapper.service.d.ts +1 -0
  50. package/lib/features/wrappers/zac-wrapper.service.d.ts.map +1 -1
  51. package/lib/models/config.d.ts +1 -0
  52. package/lib/models/config.d.ts.map +1 -1
  53. package/lib/models/edge-router-policy.d.ts +1 -0
  54. package/lib/models/edge-router-policy.d.ts.map +1 -1
  55. package/lib/models/service-edge-router-policy.d.ts +1 -0
  56. package/lib/models/service-edge-router-policy.d.ts.map +1 -1
  57. package/lib/models/service-policy.d.ts +1 -0
  58. package/lib/models/service-policy.d.ts.map +1 -1
  59. package/package.json +3 -3
@@ -1,3 +1,53 @@
1
+ body {
2
+ --highlighted: #f5a93d;
3
+ --red: #ff104b;
4
+ --green: #00db48;
5
+ --white: #FFF;
6
+ --menu: #434c5e;
7
+ --stroke: #d4d9e2;
8
+ --black: #000;
9
+ --shaded: #f6f7fb;
10
+ --formBackground: #f6f7fb;
11
+ --visualizerBackground: #ffffff80;
12
+ --background: #ffffff;
13
+ --placeholder: #CDCDCD;
14
+ --text: #000;
15
+ --tableText: #000;
16
+ --table: #ffffff;
17
+ --shadow: 0px 0px 8px 2px rgba(0,0,0,0.08);
18
+ --shadowLarge: 0 12px 23px 0 rgba(0, 0, 0, .07);
19
+ --shadowColor: rgba(0,0,0,0.08);
20
+ --transition: 0.5s;
21
+ --offWhite: #FCFCFC;
22
+ --dark: #28292B;
23
+ --formBase: #919ca5;
24
+ --formGroup: #232f3e;
25
+ --formSubGroup: #5e7088;
26
+ --modalBorderRadius: 15px;
27
+ --paddingSmall: 5px;
28
+ --paddingMedium: 10px;
29
+ --paddingLarge: 10px;
30
+ --paddingXL: 15px;
31
+ --paddingXXL: 20px;
32
+ --marginSmall: 5px;
33
+ --marginMedium: 10px;
34
+ --marginLarge: 10px;
35
+ --marginXL: 15px;
36
+ --marginXXL: 20px;
37
+ --gapSmall: 5px;
38
+ --gapMedium: 10px;
39
+ --gapLarge: 10px;
40
+ --gapXL: 15px;
41
+ --defaultInputHeight: 43px;
42
+ --defaultLineHeight: 15px;
43
+ --inputBorderRadius: 7px;
44
+ --inputBorderWidth: 2px;
45
+ --spinnerSizeMedium: 20px;
46
+ --spinerBorderTopMedium: 2px solid var(--stroke);
47
+ --spinerBorderRightMedium: 2px solid var(--stroke);
48
+ --spinerBorderBottomMedium: 2px solid transparent;
49
+ --spinerBorderLeftMedium: 2px solid transparent;
50
+ }
1
51
 
2
52
  body {
3
53
  overflow: hidden;
@@ -941,4 +991,79 @@ lib-tag-selector {
941
991
  margin-top: 10px;
942
992
  transition: var(--transition);
943
993
  }
944
- }
994
+ }
995
+
996
+ .dropdown-loading {
997
+ .p-dropdown {
998
+ &.p-component {
999
+ .p-inputtext {
1000
+ &.p-dropdown-label {
1001
+ background: none;
1002
+ }
1003
+ }
1004
+ }
1005
+ }
1006
+ }
1007
+
1008
+ p-dropdown {
1009
+ .p-dropdown {
1010
+ &.p-component {
1011
+ width: 100%;
1012
+ border-radius: var(--inputBorderRadius);
1013
+ height: var(--defaultInputHeight);
1014
+ font-family: 'Open Sans', Arial, sans-serif;
1015
+ border-color: var(--stroke);
1016
+ border-style: solid;
1017
+ border-width: var(--inputBorderWidth);
1018
+
1019
+ .p-inputtext {
1020
+ font-size: 14px;
1021
+ font-family: 'Open Sans', Arial, sans-serif;
1022
+ padding: 7px;
1023
+ border-radius: var(--inputBorderRadius);
1024
+ }
1025
+
1026
+ &.p-focus {
1027
+ box-shadow: none;
1028
+ border-color: var(--primary);
1029
+ border-width: var(--inputBorderWidth);
1030
+ }
1031
+
1032
+ .p-dropdown-header {
1033
+ padding: 10px;
1034
+
1035
+ .p-dropdown-filter {
1036
+ box-shadow: none;
1037
+ border-style: solid;
1038
+ border-width: var(--inputBorderWidth);
1039
+ border-color: var(--stroke);
1040
+
1041
+ &:focus {
1042
+ border-color: var(--primary);
1043
+ }
1044
+ }
1045
+ }
1046
+
1047
+ .p-inputtext {
1048
+ &.p-dropdown-label {
1049
+ background-image: url(/assets/svgs/ArrowDown.svg);
1050
+ background-position: center right 10px;
1051
+ background-repeat: no-repeat;
1052
+ background-size: 18px;
1053
+ min-height: var(--defaultInputHeight);
1054
+ font-family: 'Open Sans', Arial, sans-serif;
1055
+ font-size: 14px;
1056
+ color: var(--tableText);
1057
+ height: 43px;
1058
+ line-height: 40px;
1059
+ padding: 0;
1060
+ padding-left: var(--inputBorderRadius);
1061
+ }
1062
+ }
1063
+
1064
+ .p-dropdown-trigger {
1065
+ display: none;
1066
+ }
1067
+ }
1068
+ }
1069
+ }
@@ -43,6 +43,13 @@ body {
43
43
  --gapXL: 15px;
44
44
  --defaultInputHeight: 43px;
45
45
  --defaultLineHeight: 15px;
46
+ --inputBorderRadius: 7px;
47
+ --inputBorderWidth: 2px;
48
+ --spinnerSizeMedium: 20px;
49
+ --spinerBorderTopMedium: 2px solid var(--stroke);
50
+ --spinerBorderRightMedium: 2px solid var(--stroke);
51
+ --spinerBorderBottomMedium: 2px solid transparent;
52
+ --spinerBorderLeftMedium: 2px solid transparent;
46
53
  }
47
54
 
48
55
  ::placeholder {
@@ -31,6 +31,9 @@ class CustomTagsComponent {
31
31
  ngOnInit() {
32
32
  this.updateTagsArray();
33
33
  }
34
+ ngOnChanges(changes) {
35
+ this.updateTagsArray();
36
+ }
34
37
  updateTagsArray() {
35
38
  this.tagsArray = map(this.tags, (value, key) => {
36
39
  return { name: key, value: value };
@@ -63,7 +66,7 @@ class CustomTagsComponent {
63
66
  event.preventDefault();
64
67
  }
65
68
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CustomTagsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
66
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CustomTagsComponent, selector: "lib-custom-tags", inputs: { tags: "tags" }, outputs: { tagsChange: "tagsChange" }, ngImport: i0, template: "<div id=\"TagExtended\">\n <div class=\"grid tags\">\n <label>Name</label><label>Value</label>\n </div>\n <div id=\"NewTags\" >\n <div class=\"grid tags\" *ngFor=\"let tag of tagsArray\">\n <input\n id=\"NewKey\"\n maxlength=\"100\"\n placeholder=\"enter the tag key\"\n [(ngModel)]=\"tag['name']\"\n (keyup.enter)=\"enterKeyPressed($event)\"\n >\n <input\n id=\"NewValue\"\n placeholder=\"enter the value\"\n type=\"text\"\n maxlength=\"100\"\n [(ngModel)]=\"tag['value']\"\n (keyup.enter)=\"enterKeyPressed($event)\"\n >\n <div class=\"removeIcon icon-clear\" (click)=\"removeTag(tag.name)\"></div>\n </div>\n </div>\n <div class=\"grid tags\">\n <input id=\"NewKey\" (keyup.enter)=\"enterKeyPressed($event)\" [(ngModel)]=\"newTagName\" [ngClass]=\"{invalid: this.errors.name}\" maxlength=\"100\" placeholder=\"enter the tag key\">\n <input id=\"NewValue\" (keyup.enter)=\"enterKeyPressed($event)\" [(ngModel)]=\"newTagValue\" [ngClass]=\"{invalid: this.errors.value}\" placeholder=\"enter the value\" maxlength=\"100\">\n <div id=\"AddCustomButton\" class=\"addIcon icon-add\" (click)=\"addTag()\"></div>\n </div>\n</div>", styles: [".grid.tags .invalid{border-color:var(--red)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
69
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CustomTagsComponent, selector: "lib-custom-tags", inputs: { tags: "tags" }, outputs: { tagsChange: "tagsChange" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"TagExtended\">\n <div class=\"grid tags\">\n <label>Name</label><label>Value</label>\n </div>\n <div id=\"NewTags\" >\n <div class=\"grid tags\" *ngFor=\"let tag of tagsArray\">\n <input\n id=\"NewKey\"\n maxlength=\"100\"\n placeholder=\"enter the tag key\"\n [(ngModel)]=\"tag['name']\"\n (keyup.enter)=\"enterKeyPressed($event)\"\n >\n <input\n id=\"NewValue\"\n placeholder=\"enter the value\"\n type=\"text\"\n maxlength=\"100\"\n [(ngModel)]=\"tag['value']\"\n (keyup.enter)=\"enterKeyPressed($event)\"\n >\n <div class=\"removeIcon icon-clear\" (click)=\"removeTag(tag.name)\"></div>\n </div>\n </div>\n <div class=\"grid tags\">\n <input id=\"NewKey\" (keyup.enter)=\"enterKeyPressed($event)\" [(ngModel)]=\"newTagName\" [ngClass]=\"{invalid: this.errors.name}\" maxlength=\"100\" placeholder=\"enter the tag key\">\n <input id=\"NewValue\" (keyup.enter)=\"enterKeyPressed($event)\" [(ngModel)]=\"newTagValue\" [ngClass]=\"{invalid: this.errors.value}\" placeholder=\"enter the value\" maxlength=\"100\">\n <div id=\"AddCustomButton\" class=\"addIcon icon-add\" (click)=\"addTag()\"></div>\n </div>\n</div>", styles: [".grid.tags .invalid{border-color:var(--red)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
67
70
  }
68
71
  export { CustomTagsComponent };
69
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CustomTagsComponent, decorators: [{
@@ -74,4 +77,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
74
77
  }], tagsChange: [{
75
78
  type: Output
76
79
  }] } });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXRhZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2N1c3RvbS10YWdzL2N1c3RvbS10YWdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9jdXN0b20tdGFncy9jdXN0b20tdGFncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFDLE1BQU0sUUFBUSxDQUFDOzs7O0FBRTNDLE1BS2EsbUJBQW1CO0lBVzlCO1FBVFMsU0FBSSxHQUFRLEVBQUUsQ0FBQztRQUNkLGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVsRSxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixXQUFNLEdBQVEsRUFBRSxDQUFDO1FBQ2pCLFdBQU0sR0FBRyxNQUFNLENBQUM7SUFFRCxDQUFDO0lBRWhCLFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQzdDLE9BQU8sRUFBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUMsQ0FBQTtRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztTQUM1QjtRQUNELElBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQztTQUM3QjtRQUNELElBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3hCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDOUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBZTtRQUN2QixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFLO1FBQ25CLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNkLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDekIsQ0FBQzsrR0FsRFUsbUJBQW1CO21HQUFuQixtQkFBbUIsd0hDeEJoQyw4M0NBNkJNOztTRExPLG1CQUFtQjs0RkFBbkIsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQjswRUFNbEIsSUFBSTtzQkFBWixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtpc0VtcHR5LCBtYXAsIHVuc2V0fSBmcm9tIFwibG9kYXNoXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1jdXN0b20tdGFncycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tdGFncy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2N1c3RvbS10YWdzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tVGFnc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgdGFnczogYW55ID0ge307XG4gIEBPdXRwdXQoKSB0YWdzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHRhZ3NBcnJheSA9IFtdO1xuICBuZXdUYWdOYW1lID0gJyc7XG4gIG5ld1RhZ1ZhbHVlID0gJyc7XG4gIGVycm9yczogYW55ID0ge307XG4gIG9iamVjdCA9IE9iamVjdDtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy51cGRhdGVUYWdzQXJyYXkoKTtcbiAgfVxuXG4gIHVwZGF0ZVRhZ3NBcnJheSgpIHtcbiAgICB0aGlzLnRhZ3NBcnJheSA9IG1hcCh0aGlzLnRhZ3MsICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICByZXR1cm4ge25hbWU6IGtleSwgdmFsdWU6IHZhbHVlfVxuICAgIH0pO1xuICAgIHRoaXMudGFnc0NoYW5nZS5lbWl0KHRoaXMudGFncyk7XG4gIH1cblxuICBhZGRUYWcoKSB7XG4gICAgdGhpcy5lcnJvcnMgPSB7fTtcbiAgICBpZihpc0VtcHR5KHRoaXMubmV3VGFnTmFtZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JzWyduYW1lJ10gPSB0cnVlO1xuICAgIH1cbiAgICBpZihpc0VtcHR5KHRoaXMubmV3VGFnVmFsdWUpKSB7XG4gICAgICB0aGlzLmVycm9yc1sndmFsdWUnXSA9IHRydWU7XG4gICAgfVxuICAgIGlmKCFpc0VtcHR5KHRoaXMuZXJyb3JzKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnRhZ3NbdGhpcy5uZXdUYWdOYW1lXSA9IHRoaXMubmV3VGFnVmFsdWU7XG4gICAgdGhpcy5uZXdUYWdOYW1lID0gJyc7XG4gICAgdGhpcy5uZXdUYWdWYWx1ZSA9ICcnO1xuICAgIHRoaXMudXBkYXRlVGFnc0FycmF5KCk7XG4gIH1cblxuICByZW1vdmVUYWcodGFnTmFtZTogc3RyaW5nKSB7XG4gICAgdW5zZXQodGhpcy50YWdzLCB0YWdOYW1lKTtcbiAgICB0aGlzLnVwZGF0ZVRhZ3NBcnJheSgpO1xuICB9XG5cbiAgZW50ZXJLZXlQcmVzc2VkKGV2ZW50KSB7XG4gICAgdGhpcy5hZGRUYWcoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG59XG4iLCI8ZGl2IGlkPVwiVGFnRXh0ZW5kZWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZ3JpZCB0YWdzXCI+XG4gICAgICAgIDxsYWJlbD5OYW1lPC9sYWJlbD48bGFiZWw+VmFsdWU8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgaWQ9XCJOZXdUYWdzXCIgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCB0YWdzXCIgKm5nRm9yPVwibGV0IHRhZyBvZiB0YWdzQXJyYXlcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGlkPVwiTmV3S2V5XCJcbiAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIxMDBcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZW50ZXIgdGhlIHRhZyBrZXlcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGFnWyduYW1lJ11cIlxuICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJlbnRlcktleVByZXNzZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBpZD1cIk5ld1ZhbHVlXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVudGVyIHRoZSB2YWx1ZVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0YWdbJ3ZhbHVlJ11cIlxuICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJlbnRlcktleVByZXNzZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVtb3ZlSWNvbiBpY29uLWNsZWFyXCIgKGNsaWNrKT1cInJlbW92ZVRhZyh0YWcubmFtZSlcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImdyaWQgdGFnc1wiPlxuICAgICAgICA8aW5wdXQgaWQ9XCJOZXdLZXlcIiAoa2V5dXAuZW50ZXIpPVwiZW50ZXJLZXlQcmVzc2VkKCRldmVudClcIiBbKG5nTW9kZWwpXT1cIm5ld1RhZ05hbWVcIiBbbmdDbGFzc109XCJ7aW52YWxpZDogdGhpcy5lcnJvcnMubmFtZX1cIiBtYXhsZW5ndGg9XCIxMDBcIiBwbGFjZWhvbGRlcj1cImVudGVyIHRoZSB0YWcga2V5XCI+XG4gICAgICAgIDxpbnB1dCBpZD1cIk5ld1ZhbHVlXCIgKGtleXVwLmVudGVyKT1cImVudGVyS2V5UHJlc3NlZCgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJuZXdUYWdWYWx1ZVwiIFtuZ0NsYXNzXT1cIntpbnZhbGlkOiB0aGlzLmVycm9ycy52YWx1ZX1cIiBwbGFjZWhvbGRlcj1cImVudGVyIHRoZSB2YWx1ZVwiIG1heGxlbmd0aD1cIjEwMFwiPlxuICAgICAgICA8ZGl2IGlkPVwiQWRkQ3VzdG9tQnV0dG9uXCIgY2xhc3M9XCJhZGRJY29uIGljb24tYWRkXCIgKGNsaWNrKT1cImFkZFRhZygpXCI+PC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXRhZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2N1c3RvbS10YWdzL2N1c3RvbS10YWdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9jdXN0b20tdGFncy9jdXN0b20tdGFncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFFM0MsTUFLYSxtQkFBbUI7SUFXOUI7UUFUUyxTQUFJLEdBQVEsRUFBRSxDQUFDO1FBQ2QsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRWxFLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFDakIsV0FBTSxHQUFHLE1BQU0sQ0FBQztJQUVELENBQUM7SUFFaEIsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQTtJQUN4QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDN0MsT0FBTyxFQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBQyxDQUFBO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQzVCO1FBQ0QsSUFBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQzdCO1FBQ0QsSUFBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDeEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUFlO1FBQ3ZCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQUs7UUFDbkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QixDQUFDOytHQXREVSxtQkFBbUI7bUdBQW5CLG1CQUFtQiw2SUN4QmhDLDgzQ0E2Qk07O1NETE8sbUJBQW1COzRGQUFuQixtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsaUJBQWlCOzBFQU1sQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7aXNFbXB0eSwgbWFwLCB1bnNldH0gZnJvbSBcImxvZGFzaFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItY3VzdG9tLXRhZ3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLXRhZ3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tdGFncy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbVRhZ3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgQElucHV0KCkgdGFnczogYW55ID0ge307XG4gIEBPdXRwdXQoKSB0YWdzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHRhZ3NBcnJheSA9IFtdO1xuICBuZXdUYWdOYW1lID0gJyc7XG4gIG5ld1RhZ1ZhbHVlID0gJyc7XG4gIGVycm9yczogYW55ID0ge307XG4gIG9iamVjdCA9IE9iamVjdDtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy51cGRhdGVUYWdzQXJyYXkoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLnVwZGF0ZVRhZ3NBcnJheSgpXG4gIH1cblxuICB1cGRhdGVUYWdzQXJyYXkoKSB7XG4gICAgdGhpcy50YWdzQXJyYXkgPSBtYXAodGhpcy50YWdzLCAodmFsdWUsIGtleSkgPT4ge1xuICAgICAgcmV0dXJuIHtuYW1lOiBrZXksIHZhbHVlOiB2YWx1ZX1cbiAgICB9KTtcbiAgICB0aGlzLnRhZ3NDaGFuZ2UuZW1pdCh0aGlzLnRhZ3MpO1xuICB9XG5cbiAgYWRkVGFnKCkge1xuICAgIHRoaXMuZXJyb3JzID0ge307XG4gICAgaWYoaXNFbXB0eSh0aGlzLm5ld1RhZ05hbWUpKSB7XG4gICAgICB0aGlzLmVycm9yc1snbmFtZSddID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYoaXNFbXB0eSh0aGlzLm5ld1RhZ1ZhbHVlKSkge1xuICAgICAgdGhpcy5lcnJvcnNbJ3ZhbHVlJ10gPSB0cnVlO1xuICAgIH1cbiAgICBpZighaXNFbXB0eSh0aGlzLmVycm9ycykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50YWdzW3RoaXMubmV3VGFnTmFtZV0gPSB0aGlzLm5ld1RhZ1ZhbHVlO1xuICAgIHRoaXMubmV3VGFnTmFtZSA9ICcnO1xuICAgIHRoaXMubmV3VGFnVmFsdWUgPSAnJztcbiAgICB0aGlzLnVwZGF0ZVRhZ3NBcnJheSgpO1xuICB9XG5cbiAgcmVtb3ZlVGFnKHRhZ05hbWU6IHN0cmluZykge1xuICAgIHVuc2V0KHRoaXMudGFncywgdGFnTmFtZSk7XG4gICAgdGhpcy51cGRhdGVUYWdzQXJyYXkoKTtcbiAgfVxuXG4gIGVudGVyS2V5UHJlc3NlZChldmVudCkge1xuICAgIHRoaXMuYWRkVGFnKCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxufVxuIiwiPGRpdiBpZD1cIlRhZ0V4dGVuZGVkXCI+XG4gICAgPGRpdiBjbGFzcz1cImdyaWQgdGFnc1wiPlxuICAgICAgICA8bGFiZWw+TmFtZTwvbGFiZWw+PGxhYmVsPlZhbHVlPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGlkPVwiTmV3VGFnc1wiID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgdGFnc1wiICpuZ0Zvcj1cImxldCB0YWcgb2YgdGFnc0FycmF5XCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBpZD1cIk5ld0tleVwiXG4gICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMTAwXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVudGVyIHRoZSB0YWcga2V5XCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhZ1snbmFtZSddXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiZW50ZXJLZXlQcmVzc2VkKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgaWQ9XCJOZXdWYWx1ZVwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlbnRlciB0aGUgdmFsdWVcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIxMDBcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGFnWyd2YWx1ZSddXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiZW50ZXJLZXlQcmVzc2VkKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbW92ZUljb24gaWNvbi1jbGVhclwiIChjbGljayk9XCJyZW1vdmVUYWcodGFnLm5hbWUpXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJncmlkIHRhZ3NcIj5cbiAgICAgICAgPGlucHV0IGlkPVwiTmV3S2V5XCIgKGtleXVwLmVudGVyKT1cImVudGVyS2V5UHJlc3NlZCgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJuZXdUYWdOYW1lXCIgW25nQ2xhc3NdPVwie2ludmFsaWQ6IHRoaXMuZXJyb3JzLm5hbWV9XCIgbWF4bGVuZ3RoPVwiMTAwXCIgcGxhY2Vob2xkZXI9XCJlbnRlciB0aGUgdGFnIGtleVwiPlxuICAgICAgICA8aW5wdXQgaWQ9XCJOZXdWYWx1ZVwiIChrZXl1cC5lbnRlcik9XCJlbnRlcktleVByZXNzZWQoJGV2ZW50KVwiIFsobmdNb2RlbCldPVwibmV3VGFnVmFsdWVcIiBbbmdDbGFzc109XCJ7aW52YWxpZDogdGhpcy5lcnJvcnMudmFsdWV9XCIgcGxhY2Vob2xkZXI9XCJlbnRlciB0aGUgdmFsdWVcIiBtYXhsZW5ndGg9XCIxMDBcIj5cbiAgICAgICAgPGRpdiBpZD1cIkFkZEN1c3RvbUJ1dHRvblwiIGNsYXNzPVwiYWRkSWNvbiBpY29uLWFkZFwiIChjbGljayk9XCJhZGRUYWcoKVwiPjwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
@@ -118,7 +118,7 @@ class TableColumnDefaultComponent {
118
118
  }
119
119
  });
120
120
  headerParams.api.addEventListener('columnEverythingChanged', (event) => {
121
- _.forEach(event.columnApi.columnModel.columnDefs, colDef => {
121
+ _.forEach(event.api?.columnModel?.columnDefs, colDef => {
122
122
  if (this.columnDef.colId === colDef.colId && colDef.headerComponentParams?.filterOptions) {
123
123
  this.updateFilterOptions();
124
124
  }
@@ -266,4 +266,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
266
266
  type: ViewChild,
267
267
  args: ['menuButton']
268
268
  }] } });
269
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLWRlZmF1bHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2RhdGEtdGFibGUvY29sdW1uLWhlYWRlcnMvdGFibGUtY29sdW1uLWRlZmF1bHQvdGFibGUtY29sdW1uLWRlZmF1bHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2RhdGEtdGFibGUvY29sdW1uLWhlYWRlcnMvdGFibGUtY29sdW1uLWRlZmF1bHQvdGFibGUtY29sdW1uLWRlZmF1bHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixPQUFPLEVBQWdCLFNBQVMsRUFBc0IsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3RGLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFHbEMsTUFLYSwyQkFBMkI7SUFrQ3RDLFlBQW9CLGFBQXFDO1FBQXJDLGtCQUFhLEdBQWIsYUFBYSxDQUF3QjtRQTlCekQsaUJBQVksR0FBUTtZQUNsQixHQUFHLEVBQUUsRUFBRTtTQUNSLENBQUM7UUFNRixjQUFTLEdBQVE7WUFDZixPQUFPLEVBQUUsU0FBUztZQUNsQixLQUFLLEVBQUUsU0FBUztZQUNoQixTQUFTLEVBQUUsU0FBUztZQUNwQixVQUFVLEVBQUUsU0FBUztTQUN0QixDQUFDO1FBQ0YsZUFBVSxHQUFHLFdBQVcsQ0FBQztRQUN6QixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQUN4QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGVBQVUs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RSwwQkFBMEI7NkdBb0NYLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0lIZWFkZXJBbmd1bGFyQ29tcH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcbmltcG9ydCB7SUhlYWRlclBhcmFtc30gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtEYXRhVGFibGVGaWx0ZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vZGF0YS10YWJsZS1maWx0ZXIuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdGFibGUtY29sdW1uLWRlZmF1bHQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtY29sdW1uLWRlZmF1bHQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1jb2x1bW4tZGVmYXVsdC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQgaW1wbGVtZW50cyBJSGVhZGVyQW5ndWxhckNvbXAsIEFmdGVyVmlld0luaXQsIE9uSW5pdCB7XG4gIGl0ZW06IHtcbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgfTtcbiAgaGVhZGVyUGFyYW1zOiBhbnkgPSB7XG4gICAgYXBpOiB7fSxcbiAgfTtcbiAgaGVhZGVyTmFtZTtcbiAgZW5hYmxlU29ydGluZztcbiAgc29ydERpcjtcbiAgc29ydENvbDtcbiAgY29sdW1uT2JqO1xuICBjb2x1bW5EZWY6IGFueSA9IHtcbiAgICBzb3J0RGlyOiB1bmRlZmluZWQsXG4gICAgY29sSWQ6IHVuZGVmaW5lZCxcbiAgICBwaW5Db2x1bW46IHVuZGVmaW5lZCxcbiAgICBzb3J0Q29sdW1uOiB1bmRlZmluZWQsXG4gIH07XG4gIGZpbHRlclR5cGUgPSAnVEVYVElOUFVUJztcbiAgZmlsdGVyT3B0aW9ucyA9IFtdO1xuICBjb2x1bW5GaWx0ZXJzOiBhbnkgPSB7fTtcbiAgZmlsdGVyaW5nID0gZmFsc2U7XG4gIHBpbm5lZDtcbiAgc2hvd0ZpbHRlciA9IGZhbHNlO1xuICBjb21ib0FjdGl2ZSA9IGZhbHNlO1xuICBzaG93U2Vjb25kYXJ5RmlsdGVyID0gZmFsc2U7XG4gIF9zaG93Q29sdW1uTWVudTtcblxuICBvbmxpbmVTdGF0dXNGaWx0ZXI7XG4gIHNob3dCdWJibGUgPSBmYWxzZTtcbiAgc2hvd0xvYWRlciA9IGZhbHNlO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgQFZpZXdDaGlsZCgnbWVudUJ1dHRvbicpIG1lbnVCdXR0b246IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBEYXRhVGFibGVGaWx0ZXJTZXJ2aWNlKSB7XG4gICAgaWYgKCF0aGlzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXRlbSA9IHtcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICB9O1xuICB9XG5cbiAgX3N0YXR1c0NsYXNzID0gJ3Y3T2ZmbGluZSc7XG5cbiAgZ2V0IHN0YXR1c0NsYXNzKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnNob3dCdWJibGUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgY29uc3Qgc3RhdHVzID0gXy5nZXQoXG4gICAgICB0aGlzLmNvbHVtbk9iaixcbiAgICAgICdncmlkQXBpLmNvbHVtbkZpbHRlcnMuaGFzQXBpU2Vzc2lvbicsXG4gICAgICBfLmdldCh0aGlzLmNvbHVtbk9iaiwgJ2dyaWRBcGkuY29sdW1uRmlsdGVycy5vbmxpbmUnKVxuICAgICk7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ2FsbCc6XG4gICAgICAgIHRoaXMuX3N0YXR1c0NsYXNzID0gJ3Y3T25saW5lT2ZmbGluZSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZmFsc2UnOlxuICAgICAgICB0aGlzLl9zdGF0dXNDbGFzcyA9ICd2N09mZmxpbmUnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RydWUnOlxuICAgICAgICB0aGlzLl9zdGF0dXNDbGFzcyA9ICd2N09ubGluZSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncHJvdmlzaW9uaW5nJzpcbiAgICAgICAgdGhpcy5fc3RhdHVzQ2xhc3MgPSAnJztcbiAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHRoaXMuX3N0YXR1c0NsYXNzID0gJ3Y3RXJyb3InO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuX3N0YXR1c0NsYXNzID0gJ3Y3T25saW5lT2ZmbGluZSc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc3RhdHVzQ2xhc3M7XG4gIH1cblxuICBnZXQgZmlsdGVyQXBwbGllZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb2x1bW5JZCA9IF8uZ2V0KHRoaXMuY29sdW1uRGVmLCAnY29sSWQnKTtcbiAgICBjb25zdCBmaWx0ZXJWYWwgPSBfLmdldCh0aGlzLmhlYWRlclBhcmFtcywgYGFwaS5jb2x1bW5GaWx0ZXJzLiR7Y29sdW1uSWR9YCk7XG4gICAgcmV0dXJuICFfLmlzRW1wdHkoZmlsdGVyVmFsKSB8fCB0aGlzLnNob3dGaWx0ZXIgfHwgdGhpcy5maWx0ZXJpbmc7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcblxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxuICB9XG5cbiAgYWdJbml0KGhlYWRlclBhcmFtczogYW55ID0ge30pOiB2b2lkIHtcbiAgICBpZiAoIWhlYWRlclBhcmFtcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmhlYWRlclBhcmFtcyA9IGhlYWRlclBhcmFtcztcbiAgICB0aGlzLmVuYWJsZVNvcnRpbmcgPSBoZWFkZXJQYXJhbXMuZW5hYmxlU29ydGluZztcbiAgICB0aGlzLmhlYWRlck5hbWUgPSBoZWFkZXJQYXJhbXMuZGlzcGxheU5hbWU7XG4gICAgdGhpcy5jb2x1bW5PYmogPSBoZWFkZXJQYXJhbXMuY29sdW1uO1xuICAgIHRoaXMuZmlsdGVyVHlwZSA9IGhlYWRlclBhcmFtcy5maWx0ZXJUeXBlIHx8ICdURVhUSU5QVVQnO1xuICAgIHRoaXMuY29sdW1uRmlsdGVycyA9IGhlYWRlclBhcmFtcy5jb2x1bW5GaWx0ZXJzO1xuICAgIHRoaXMuY29sdW1uRGVmID0gdGhpcy5jb2x1bW5PYmouY29sRGVmO1xuICAgIHRoaXMucGlubmVkID0gdGhpcy5jb2x1bW5PYmoucGlubmVkID09PSAnbGVmdCc7XG4gICAgdGhpcy5zb3J0RGlyID0gdGhpcy5jb2x1bW5EZWYuc29ydERpciB8fCAnbm9uZSc7XG4gICAgdGhpcy5vbmxpbmVTdGF0dXNGaWx0ZXIgPSBfLmhhcyh0aGlzLmNvbHVtbkZpbHRlcnMsICdoYXNBcGlTZXNzaW9uJykgPyAnaGFzQXBpU2Vzc2lvbicgOiAnb25saW5lJztcbiAgICB0aGlzLnNob3dCdWJibGUgPVxuICAgICAgdGhpcy5jb2x1bW5EZWYuY29sSWQgPT09ICduYW1lJyAmJlxuICAgICAgKF8uaGFzKHRoaXMuY29sdW1uRmlsdGVycywgJ2hhc0FwaVNlc3Npb24nKSB8fCBfLmhhcyh0aGlzLmNvbHVtbkZpbHRlcnMsICdvbmxpbmUnKSk7XG4gICAgdGhpcy5fc2hvd0NvbHVtbk1lbnUgPSBoZWFkZXJQYXJhbXMuc2hvd0NvbHVtbk1lbnU7XG4gICAgdGhpcy51cGRhdGVGaWx0ZXJPcHRpb25zKCk7XG4gICAgaGVhZGVyUGFyYW1zLmFwaS5hZGRFdmVudExpc3RlbmVyKCdzb3J0Q2hhbmdlZCcsIChldmVudCkgPT4ge1xuICAgICAgY29uc3QgY29sSWQgPSBfLmdldChldmVudCwgJ2NvbHVtbkRlZi5jb2xJZCcsICcnKTtcbiAgICAgIGlmIChjb2xJZCAhPT0gdGhpcy5jb2x1bW5EZWYuY29sSWQpIHtcbiAgICAgICAgdGhpcy5zb3J0RGlyID0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zb3J0RGlyID0gXy5nZXQoZXZlbnQsICdzb3J0RGlyJyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaGVhZGVyUGFyYW1zLmFwaS5hZGRFdmVudExpc3RlbmVyKCdjb2x1bW5FdmVyeXRoaW5nQ2hhbmdlZCcsIChldmVudCkgPT4ge1xuICAgICAgXy5mb3JFYWNoKGV2ZW50LmNvbHVtbkFwaS5jb2x1bW5Nb2RlbC5jb2x1bW5EZWZzLCBjb2xEZWYgPT4ge1xuICAgICAgICBpZiAodGhpcy5jb2x1bW5EZWYuY29sSWQgPT09IGNvbERlZi5jb2xJZCAmJiBjb2xEZWYuaGVhZGVyQ29tcG9uZW50UGFyYW1zPy5maWx0ZXJPcHRpb25zKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJPcHRpb25zKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLnNob3dCdWJibGUpIHtcbiAgICAgIC8vIHRoaXMudXBkYXRlU3RhdHVzQ2xhc3MoKTtcbiAgICB9XG4gIH1cblxuICBwaW4oKTogdm9pZCB7XG4gICAgdGhpcy5jb2x1bW5EZWYucGluQ29sdW1uKHRoaXMuY29sdW1uT2JqLCB0aGlzLnBpbm5lZCA/IGZhbHNlIDogJ2xlZnQnKTtcbiAgICB0aGlzLnBpbm5lZCA9ICF0aGlzLnBpbm5lZDtcbiAgfVxuXG4gIGhpZGUoKTogdm9pZCB7XG4gICAgdGhpcy5oZWFkZXJQYXJhbXMuYXBpLnppdGlIaWRlQ29sdW1uKHRoaXMuY29sdW1uT2JqLCBmYWxzZSk7XG4gIH1cblxuICBzb3J0KGV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbHVtbkRlZi5zb3J0YWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0YXJnZXRJZCA9IF8uZ2V0KGV2ZW50LCAndGFyZ2V0LmlkJyk7XG4gICAgaWYgKFxuICAgICAgXy5pbmNsdWRlcyhcbiAgICAgICAgW2BIZWFkZXJTdGF0dXNfJHt0aGlzLmNvbHVtbkRlZi5jb2xJZH1gLCAnU2VhcmNoRmlsdGVyJywgYEhlYWRlckZpbHRlckljb25fJHt0aGlzLmNvbHVtbkRlZi5jb2xJZH1gXSxcbiAgICAgICAgdGFyZ2V0SWRcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKF8uaXNFbXB0eSh0aGlzLnNvcnREaXIpKSB7XG4gICAgICB0aGlzLnNvcnREaXIgPSAnYXNjJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuc29ydERpciA9PT0gJ2FzYycpIHtcbiAgICAgIHRoaXMuc29ydERpciA9ICdkZXNjJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zb3J0RGlyID0gJ2FzYyc7XG4gICAgfVxuICAgIF8uc2V0KHRoaXMuaGVhZGVyUGFyYW1zLCAnYXBpLnNvcnREaXInLCB0aGlzLnNvcnREaXIpO1xuICAgIF8uc2V0KHRoaXMuaGVhZGVyUGFyYW1zLCAnYXBpLnNvcnREaXInLCB0aGlzLmNvbHVtbkRlZi5jb2xJZCk7XG4gICAgaWYgKHRoaXMuY29sdW1uRGVmLnNvcnRDb2x1bW4pIHtcbiAgICAgIHRoaXMuY29sdW1uRGVmLnNvcnRDb2x1bW4odGhpcy5jb2x1bW5EZWYuY29sSWQsIHRoaXMuc29ydERpciwgdGhpcy5oZWFkZXJQYXJhbXMuYXBpKTtcbiAgICAgIHRoaXMuaGVhZGVyUGFyYW1zLmFwaS5kaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgdHlwZTogJ3NvcnRDaGFuZ2VkJyxcbiAgICAgICAgY29sdW1uRGVmOiB0aGlzLmNvbHVtbkRlZixcbiAgICAgICAgc29ydERpcjogdGhpcy5zb3J0RGlyLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlRmlsdGVyKGV2ZW50KSB7XG4gICAgdGhpcy5zaG93RmlsdGVyID0gIXRoaXMuc2hvd0ZpbHRlcjtcbiAgICBpZiAodGhpcy5maWx0ZXJUeXBlID09PSAnU0VMRUNUJyB8fCB0aGlzLmZpbHRlclR5cGUgPT09ICdDT01CTycgfHwgdGhpcy5maWx0ZXJUeXBlID09PSAnREFURVRJTUUnfHwgdGhpcy5maWx0ZXJUeXBlID09PSAnQVRUUklCVVRFJykge1xuICAgICAgaWYgKHRoaXMuc2hvd0ZpbHRlcikge1xuICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlck9wdGlvbnMoKTtcbiAgICAgICAgXy5pbnZva2UodGhpcy5oZWFkZXJQYXJhbXMsICdhcGkub3BlbkhlYWRlckZpbHRlcicsIGV2ZW50LCB0aGlzLmZpbHRlck9wdGlvbnMsIHRoaXMuZmlsdGVyVHlwZSwgdGhpcy5jb2x1bW5EZWY/LmNvbElkLCB0aGlzLmhlYWRlck5hbWUsIHRoaXMuY29sdW1uRGVmPy5oZWFkZXJDb21wb25lbnRQYXJhbXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgXy5pbnZva2UodGhpcy5oZWFkZXJQYXJhbXMsICdhcGkuY2xvc2VIZWFkZXJGaWx0ZXInLCBldmVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmZpbHRlclR5cGUgPT09ICdDVVNUT00nKSB7XG4gICAgICBpZiAodGhpcy5zaG93RmlsdGVyKSB7XG4gICAgICAgIHRoaXMudXBkYXRlRmlsdGVyT3B0aW9ucygpO1xuICAgICAgICBfLmludm9rZSh0aGlzLmhlYWRlclBhcmFtcywgJ2NvbHVtbi5jb2xEZWYuaGVhZGVyQ29tcG9uZW50UGFyYW1zLm9wZW5IZWFkZXJGaWx0ZXInLCBldmVudCwgdGhpcy5maWx0ZXJPcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF8uaW52b2tlKHRoaXMuaGVhZGVyUGFyYW1zLCAnY29sdW1uLmNvbERlZi5oZWFkZXJDb21wb25lbnRQYXJhbXMuY2xvc2VIZWFkZXJGaWx0ZXInLCBldmVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlU2Vjb25kYXJ5RmlsdGVyKGV2ZW50KSB7XG4gICAgdGhpcy5zaG93U2Vjb25kYXJ5RmlsdGVyID0gIXRoaXMuc2hvd1NlY29uZGFyeUZpbHRlcjtcbiAgICBpZiAodGhpcy5zaG93U2Vjb25kYXJ5RmlsdGVyKSB7XG4gICAgICBjb25zdCBvcHRpb25zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6ICdBbnknLFxuICAgICAgICAgIGNvbHVtbklkOiB0aGlzLm9ubGluZVN0YXR1c0ZpbHRlcixcbiAgICAgICAgICBmaWx0ZXJOYW1lOiAnU3RhdHVzJyxcbiAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgIGJ1YmJsZUNsYXNzOiAndjdPbmxpbmVPZmZsaW5lJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnT25saW5lJyxcbiAgICAgICAgICBjb2x1bW5JZDogdGhpcy5vbmxpbmVTdGF0dXNGaWx0ZXIsXG4gICAgICAgICAgZmlsdGVyTmFtZTogJ1N0YXR1cycsXG4gICAgICAgICAgdmFsdWU6ICd0cnVlJyxcbiAgICAgICAgICBidWJibGVDbGFzczogJ3Y3T25saW5lJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnT2ZmbGluZScsXG4gICAgICAgICAgY29sdW1uSWQ6IHRoaXMub25saW5lU3RhdHVzRmlsdGVyLFxuICAgICAgICAgIGZpbHRlck5hbWU6ICdTdGF0dXMnLFxuICAgICAgICAgIHZhbHVlOiAnZmFsc2UnLFxuICAgICAgICAgIGJ1YmJsZUNsYXNzOiAndjdPZmZsaW5lJyxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgICBfLmludm9rZSh0aGlzLmhlYWRlclBhcmFtcywgJ2FwaS5vcGVuSGVhZGVyRmlsdGVyJywgZXZlbnQsIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBfLmludm9rZSh0aGlzLmhlYWRlclBhcmFtcywgJ2FwaS5jbG9zZUhlYWRlckZpbHRlcicsIGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBoaWRlRmlsdGVyKGV2ZW50KSB7XG4gICAgY29uc3QgdGFyZ2V0SWQgPSBfLmdldChldmVudCwgJ3RhcmdldC5pZCcpO1xuICAgIGlmIChcbiAgICAgIF8uaW5jbHVkZXMoXG4gICAgICAgIFtgSGVhZGVyRmlsdGVyQnV0dG9uXyR7dGhpcy5jb2x1bW5EZWYuY29sSWR9YCwgYEhlYWRlckZpbHRlckljb25fJHt0aGlzLmNvbHVtbkRlZi5jb2xJZH1gXSxcbiAgICAgICAgdGFyZ2V0SWRcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKHRhcmdldElkID09PSB0aGlzLmNvbHVtbkRlZj8uY29sSWQgJiYgdGhpcy5maWx0ZXJUeXBlID09PSAnQ09NQk8nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIF8uaW52b2tlKHRoaXMuaGVhZGVyUGFyYW1zLCAnYXBpLmNsb3NlSGVhZGVyRmlsdGVyJywgZXZlbnQpO1xuXG4gICAgdGhpcy5jb21ib0FjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0ZpbHRlciA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd1NlY29uZGFyeUZpbHRlciA9IGZhbHNlO1xuICB9XG5cbiAgcmVmcmVzaChwYXJhbXM6IElIZWFkZXJQYXJhbXMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIG9wZW5HcmlkTWVudSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3Nob3dDb2x1bW5NZW51KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3Nob3dDb2x1bW5NZW51KHRoaXMubWVudUJ1dHRvbi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIHVwZGF0ZUZpbHRlck9wdGlvbnMoKSB7XG4gICAgbGV0IG9wdGlvbnMgPSBbXTtcbiAgICBpZiAodGhpcy5oZWFkZXJQYXJhbXMuZ2V0RmlsdGVyT3B0aW9ucykge1xuICAgICAgb3B0aW9ucyA9IHRoaXMuaGVhZGVyUGFyYW1zLmdldEZpbHRlck9wdGlvbnMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9ucyA9IHRoaXMuaGVhZGVyUGFyYW1zLmZpbHRlck9wdGlvbnM7XG4gICAgfVxuICAgIHRoaXMuZmlsdGVyT3B0aW9ucyA9IF8ubWFwKG9wdGlvbnMsIChvcHRpb24pID0+IHtcbiAgICAgIG9wdGlvbi5jb2x1bW5JZCA9IHRoaXMuY29sdW1uRGVmLmNvbElkO1xuICAgICAgb3B0aW9uLmZpbHRlck5hbWUgPSB0aGlzLmhlYWRlck5hbWU7XG4gICAgICBvcHRpb24udHlwZSA9IHRoaXMuZmlsdGVyVHlwZTtcbiAgICAgIHJldHVybiBvcHRpb247XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgKGNsaWNrKT1cInNvcnQoJGV2ZW50KVwiXG4gIFtuZ0NsYXNzXT1cInsgJ25mLWNhbi1zb3J0JzogZW5hYmxlU29ydGluZyB9XCJcbiAgY2xhc3M9XCJhZy1jZWxsLWxhYmVsLWNvbnRhaW5lciBhZy1oZWFkZXItY2VsbC1zb3J0ZWQtbm9uZVwiXG4gIGlkPVwiVGFibGVIZWFkZXJDb250YWluZXJfe3sgY29sdW1uRGVmLmNvbElkIH19XCJcbj5cbiAgICA8c3BhblxuICAgICAgI21lbnVCdXR0b25cbiAgICAgIChjbGljayk9XCJvcGVuR3JpZE1lbnUoKVwiXG4gICAgICAqbmdJZj1cImZhbHNlXCJcbiAgICAgIGNsYXNzPVwiYWctaGVhZGVyLWljb24gYWctaGVhZGVyLWNlbGwtbWVudS1idXR0b25cIlxuICAgICAgaWQ9XCJIZWFkZXJNZW51X3t7IGNvbHVtbkRlZi5jb2xJZCB9fVwiXG4gICAgICByZWY9XCJlTWVudVwiXG4gICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImFnLWljb24gYWctaWNvbi1tZW51XCIgdW5zZWxlY3RhYmxlPVwib25cIj48L3NwYW4+XG4gICAgPC9zcGFuPlxuICA8c3BhblxuICAgIChjbGljayk9XCJwaW4oKVwiXG4gICAgY2xhc3M9XCJhZy1oZWFkZXItaWNvbiBhZy1oZWFkZXItY29sLXBpbi1idXR0b25cIlxuICAgIGlkPVwiSGVhZGVyUGluX3t7IGNvbHVtbkRlZi5jb2xJZCB9fVwiXG4gICAgdGl0bGU9XCJ7eyBwaW5uZWQgPyAnVW5waW4gQ29sdW1uJyA6ICdQaW4gQ29sdW1uJyB9fVwiXG4gID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhZy1pY29uIGFnLWljb24tcGluXCI+PC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPHNwYW5cbiAgICAoY2xpY2spPVwiaGlkZSgpXCJcbiAgICBjbGFzcz1cImFnLWhlYWRlci1pY29uIGFnLWhlYWRlci1jb2wtaGlkZS1idXR0b25cIlxuICAgIGlkPVwiSGVhZGVySGlkZV97eyBjb2x1bW5EZWYuY29sSWQgfX1cIlxuICAgIHRpdGxlPVwiSGlkZSBDb2x1bW5cIlxuICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYWctaWNvbiBhZy1pY29uLWV5ZS1zbGFzaFwiPjwvc3Bhbj5cbiAgICA8L3NwYW4+XG4gIDxkaXYgY2xhc3M9XCJhZy1oZWFkZXItY2VsbC1sYWJlbFwiIHJlZj1cImVMYWJlbFwiIHVuc2VsZWN0YWJsZT1cIm9uXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKm5nSWY9XCIhaGVhZGVyUGFyYW1zLmZpbHRlclR5cGVcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2FnLWZpbHRlci1hcHBsaWVkJzogZmlsdGVyQXBwbGllZCB9XCJcbiAgICAgICAgICBjbGFzcz1cImFnLWhlYWRlci1pY29uIGFnLWhlYWRlci1jb2wtZmlsdGVyLWJ1dHRvblwiXG4gICAgICAgICAgaWQ9XCJIZWFkZXJGaWx0ZXJTcGFjZXJfe3sgY29sdW1uRGVmLmNvbElkIH19XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhZy1pY29uIGFnLWljb24tZmlsdGVyXCIgaWQ9XCJIZWFkZXJGaWx0ZXJTcGFjZV97eyBjb2x1bW5EZWYuY29sSWQgfX1cIiBzdHlsZT1cIm9wYWNpdHk6IDBcIj48L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8c3BhblxuICAgICAgKGNsaWNrKT1cInRvZ2dsZUZpbHRlcigkZXZlbnQpXCJcbiAgICAgICpuZ0lmPVwiaGVhZGVyUGFyYW1zLmZpbHRlclR5cGVcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnYWctZmlsdGVyLWFwcGxpZWQnOiBmaWx0ZXJBcHBsaWVkIH1cIlxuICAgICAgY2xhc3M9XCJhZy1oZWFkZXItaWNvbiBhZy1oZWFkZXItY29sLWZpbHRlci1idXR0b25cIlxuICAgICAgaWQ9XCJIZWFkZXJGaWx0ZXJCdXR0b25fe3sgY29sdW1uRGVmLmNvbElkIH19XCJcbiAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFnLWljb24gYWctaWNvbi1maWx0ZXJcIiBpZD1cIkhlYWRlckZpbHRlckljb25fe3sgY29sdW1uRGVmLmNvbElkIH19XCI+PC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgPGRpdlxuICAgICAgKGNsaWNrT3V0c2lkZSk9XCJoaWRlRmlsdGVyKCRldmVudClcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnc2hvdy1pbnB1dC1maWx0ZXInOiBzaG93RmlsdGVyIH1cIlxuICAgICAgY2xhc3M9XCJoZWFkZXItdGV4dC1jb250YWluZXIgdGV4dC1pbnB1dC1maWx0ZXJcIlxuICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTZWNvbmRhcnlGaWx0ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwic2hvd0J1YmJsZVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInN0YXR1c0NsYXNzXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidWJibGVcIlxuICAgICAgICAgICAgICBpZD1cIkhlYWRlclN0YXR1c197eyBjb2x1bW5EZWYuY29sSWQgfX1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJzaG93TG9hZGVyXCIgY2xhc3M9XCJjaXJjdWxhclwiIHZpZXdCb3g9XCIyNSAyNSA1MCA1MFwiPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwYXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICBjeD1cIjUwXCJcbiAgICAgICAgICAgICAgICAgICAgICBjeT1cIjUwXCJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcj1cIjIwXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbWl0ZXJsaW1pdD1cIjEwXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIzXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvY2lyY2xlPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgPGFwcC10YWJsZS1jb2x1bW4tZmlsdGVyXG4gICAgICAgICpuZ0lmPVwiKChzaG93RmlsdGVyIHx8IGNvbWJvQWN0aXZlKSAmJiAhKGZpbHRlclR5cGUgPT09ICdDT01CTycgJiYgIWNvbWJvQWN0aXZlKSkgJiYgZmlsdGVyVHlwZSAhPT0gJ1NFTEVDVCcgJiYgZmlsdGVyVHlwZSAhPT0gJ0NVU1RPTSdcIlxuICAgICAgICBbY29sdW1uRGVmXT1cImNvbHVtbkRlZlwiXG4gICAgICAgIFtmaWx0ZXJOYW1lXT1cImhlYWRlck5hbWVcIlxuICAgICAgICBbZmlsdGVyU3RyaW5nXT1cIicnXCJcbiAgICAgICAgW29wZW5TdGF0dXNNZW51XT1cInRvZ2dsZVNlY29uZGFyeUZpbHRlci5iaW5kKHRoaXMpXCJcbiAgICAgICAgW3R5cGVdPVwiZmlsdGVyVHlwZVwiXG4gICAgICA+PC9hcHAtdGFibGUtY29sdW1uLWZpbHRlcj5cbiAgICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwiKCghc2hvd0ZpbHRlciAmJiAhY29tYm9BY3RpdmUpIHx8IChmaWx0ZXJUeXBlID09PSAnQ09NQk8nICYmICFjb21ib0FjdGl2ZSkpIHx8IGZpbHRlclR5cGUgPT09ICdTRUxFQ1QnIHx8IGZpbHRlclR5cGUgPT09ICdDVVNUT00nXCJcbiAgICAgICAgW3RpdGxlXT1cImhlYWRlck5hbWVcIlxuICAgICAgICBjbGFzcz1cImFnLWhlYWRlci1jZWxsLXRleHRcIlxuICAgICAgICBpZD1cIkhlYWRlck5hbWVfe3sgY29sdW1uRGVmLmNvbElkIH19XCJcbiAgICAgICAgdW5zZWxlY3RhYmxlPVwib25cIlxuICAgICAgPnt7IGhlYWRlck5hbWUgfX08L3NwYW5cbiAgICAgID5cbiAgICA8L2Rpdj5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJlbmFibGVTb3J0aW5nICYmICFzaG93RmlsdGVyXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2FnLWhpZGRlbic6IHNvcnREaXIgIT09ICdkZXNjJyB9XCJcbiAgICAgIGNsYXNzPVwiYWctaGVhZGVyLWljb24gYWctaGVhZGVyLWxhYmVsLWljb24gYWctc29ydC1hc2NlbmRpbmctaWNvblwiXG4gICAgICBpZD1cIkhlYWRlclNvcnRBc2Nfe3sgY29sdW1uRGVmLmNvbElkIH19XCJcbiAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFnLWljb24gYWctaWNvbi1hc2NcIiB1bnNlbGVjdGFibGU9XCJvblwiPjwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgIDxzcGFuXG4gICAgICAqbmdJZj1cImVuYWJsZVNvcnRpbmcgJiYgIXNob3dGaWx0ZXJcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnYWctaGlkZGVuJzogc29ydERpciAhPT0gJ2FzYycgfVwiXG4gICAgICBjbGFzcz1cImFnLWhlYWRlci1pY29uIGFnLWhlYWRlci1sYWJlbC1pY29uIGFnLXNvcnQtZGVzY2VuZGluZy1pY29uXCJcbiAgICAgIGlkPVwiSGVhZGVyU29ydERlc2Nfe3sgY29sdW1uRGVmLmNvbElkIH19XCJcbiAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFnLWljb24gYWctaWNvbi1kZXNjXCIgdW5zZWxlY3RhYmxlPVwib25cIj48L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
269
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLWRlZmF1bHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2RhdGEtdGFibGUvY29sdW1uLWhlYWRlcnMvdGFibGUtY29sdW1uLWRlZmF1bHQvdGFibGUtY29sdW1uLWRlZmF1bHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2RhdGEtdGFibGUvY29sdW1uLWhlYWRlcnMvdGFibGUtY29sdW1uLWRlZmF1bHQvdGFibGUtY29sdW1uLWRlZmF1bHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixPQUFPLEVBQWdCLFNBQVMsRUFBc0IsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3RGLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFHbEMsTUFLYSwyQkFBMkI7SUFrQ3RDLFlBQW9CLGFBQXFDO1FBQXJDLGtCQUFhLEdBQWIsYUFBYSxDQUF3QjtRQTlCekQsaUJBQVksR0FBUTtZQUNsQixHQUFHLEVBQUUsRUFBRTtTQUNSLENBQUM7UUFNRixjQUFTLEdBQVE7WUFDZixPQUFPLEVBQUUsU0FBUztZQUNsQixLQUFLLEVBQUUsU0FBUztZQUNoQixTQUFTLEVBQUUsU0FBUztZQUNwQixVQUFVLEVBQUUsU0FBUztTQUN0QixDQUFDO1FBQ0YsZUFBVSxHQUFHLFdBQVcsQ0FBQztRQUN6QixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQUN4QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGVBQVUs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RSwwQkFBMEI7NkdBb0NYLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0lIZWFkZXJBbmd1bGFyQ29tcH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcbmltcG9ydCB7SUhlYWRlclBhcmFtc30gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtEYXRhVGFibGVGaWx0ZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vZGF0YS10YWJsZS1maWx0ZXIuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdGFibGUtY29sdW1uLWRlZmF1bHQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtY29sdW1uLWRlZmF1bHQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1jb2x1bW4tZGVmYXVsdC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQgaW1wbGVtZW50cyBJSGVhZGVyQW5ndWxhckNvbXAsIEFmdGVyVmlld0luaXQsIE9uSW5pdCB7XG4gIGl0ZW06IHtcbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgfTtcbiAgaGVhZGVyUGFyYW1zOiBhbnkgPSB7XG4gICAgYXBpOiB7fSxcbiAgfTtcbiAgaGVhZGVyTmFtZTtcbiAgZW5hYmxlU29ydGluZztcbiAgc29ydERpcjtcbiAgc29ydENvbDtcbiAgY29sdW1uT2JqO1xuICBjb2x1bW5EZWY6IGFueSA9IHtcbiAgICBzb3J0RGlyOiB1bmRlZmluZWQsXG4gICAgY29sSWQ6IHVuZGVmaW5lZCxcbiAgICBwaW5Db2x1bW46IHVuZGVmaW5lZCxcbiAgICBzb3J0Q29sdW1uOiB1bmRlZmluZWQsXG4gIH07XG4gIGZpbHRlclR5cGUgPSAnVEVYVElOUFVUJztcbiAgZmlsdGVyT3B0aW9ucyA9IFtdO1xuICBjb2x1bW5GaWx0ZXJzOiBhbnkgPSB7fTtcbiAgZmlsdGVyaW5nID0gZmFsc2U7XG4gIHBpbm5lZDtcbiAgc2hvd0ZpbHRlciA9IGZhbHNlO1xuICBjb21ib0FjdGl2ZSA9IGZhbHNlO1xuICBzaG93U2Vjb25kYXJ5RmlsdGVyID0gZmFsc2U7XG4gIF9zaG93Q29sdW1uTWVudTtcblxuICBvbmxpbmVTdGF0dXNGaWx0ZXI7XG4gIHNob3dCdWJibGUgPSBmYWxzZTtcbiAgc2hvd0xvYWRlciA9IGZhbHNlO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgQFZpZXdDaGlsZCgnbWVudUJ1dHRvbicpIG1lbnVCdXR0b246IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBEYXRhVGFibGVGaWx0ZXJTZXJ2aWNlKSB7XG4gICAgaWYgKCF0aGlzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXRlbSA9IHtcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICB9O1xuICB9XG5cbiAgX3N0YXR1c0NsYXNzID0gJ3Y3T2ZmbGluZSc7XG5cbiAgZ2V0IHN0YXR1c0NsYXNzKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnNob3dCdWJibGUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgY29uc3Qgc3RhdHVzID0gXy5nZXQoXG4gICAgICB0aGlzLmNvbHVtbk9iaixcbiAgICAgICdncmlkQXBpLmNvbHVtbkZpbHRlcnMuaGFzQXBpU2Vzc2lvbicsXG4gICAgICBfLmdldCh0aGlzLmNvbHVtbk9iaiwgJ2dyaWRBcGkuY29sdW1uRmlsdGVycy5vbmxpbmUnKVxuICAgICk7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ2FsbCc6XG4gICAgICAgIHRoaXMuX3N0YXR1c0NsYXNzID0gJ3Y3T25saW5lT2ZmbGluZSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZmFsc2UnOlxuICAgICAgICB0aGlzLl9zdGF0dXNDbGFzcyA9ICd2N09mZmxpbmUnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RydWUnOlxuICAgICAgICB0aGlzLl9zdGF0dXNDbGFzcyA9ICd2N09ubGluZSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncHJvdmlzaW9uaW5nJzpcbiAgICAgICAgdGhpcy5fc3RhdHVzQ2xhc3MgPSAnJztcbiAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHRoaXMuX3N0YXR1c0NsYXNzID0gJ3Y3RXJyb3InO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuX3N0YXR1c0NsYXNzID0gJ3Y3T25saW5lT2ZmbGluZSc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc3RhdHVzQ2xhc3M7XG4gIH1cblxuICBnZXQgZmlsdGVyQXBwbGllZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb2x1bW5JZCA9IF8uZ2V0KHRoaXMuY29sdW1uRGVmLCAnY29sSWQnKTtcbiAgICBjb25zdCBmaWx0ZXJWYWwgPSBfLmdldCh0aGlzLmhlYWRlclBhcmFtcywgYGFwaS5jb2x1bW5GaWx0ZXJzLiR7Y29sdW1uSWR9YCk7XG4gICAgcmV0dXJuICFfLmlzRW1wdHkoZmlsdGVyVmFsKSB8fCB0aGlzLnNob3dGaWx0ZXIgfHwgdGhpcy5maWx0ZXJpbmc7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcblxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxuICB9XG5cbiAgYWdJbml0KGhlYWRlclBhcmFtczogYW55ID0ge30pOiB2b2lkIHtcbiAgICBpZiAoIWhlYWRlclBhcmFtcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmhlYWRlclBhcmFtcyA9IGhlYWRlclBhcmFtcztcbiAgICB0aGlzLmVuYWJsZVNvcnRpbmcgPSBoZWFkZXJQYXJhbXMuZW5hYmxlU29ydGluZztcbiAgICB0aGlzLmhlYWRlck5hbWUgPSBoZWFkZXJQYXJhbXMuZGlzcGxheU5hbWU7XG4gICAgdGhpcy5jb2x1bW5PYmogPSBoZWFkZXJQYXJhbXMuY29sdW1uO1xuICAgIHRoaXMuZmlsdGVyVHlwZSA9IGhlYWRlclBhcmFtcy5maWx0ZXJUeXBlIHx8ICdURVhUSU5QVVQnO1xuICAgIHRoaXMuY29sdW1uRmlsdGVycyA9IGhlYWRlclBhcmFtcy5jb2x1bW5GaWx0ZXJzO1xuICAgIHRoaXMuY29sdW1uRGVmID0gdGhpcy5jb2x1bW5PYmouY29sRGVmO1xuICAgIHRoaXMucGlubmVkID0gdGhpcy5jb2x1bW5PYmoucGlubmVkID09PSAnbGVmdCc7XG4gICAgdGhpcy5zb3J0RGlyID0gdGhpcy5jb2x1bW5EZWYuc29ydERpciB8fCAnbm9uZSc7XG4gICAgdGhpcy5vbmxpbmVTdGF0dXNGaWx0ZXIgPSBfLmhhcyh0aGlzLmNvbHVtbkZpbHRlcnMsICdoYXNBcGlTZXNzaW9uJykgPyAnaGFzQXBpU2Vzc2lvbicgOiAnb25saW5lJztcbiAgICB0aGlzLnNob3dCdWJibGUgPVxuICAgICAgdGhpcy5jb2x1bW5EZWYuY29sSWQgPT09ICduYW1lJyAmJlxuICAgICAgKF8uaGFzKHRoaXMuY29sdW1uRmlsdGVycywgJ2hhc0FwaVNlc3Npb24nKSB8fCBfLmhhcyh0aGlzLmNvbHVtbkZpbHRlcnMsICdvbmxpbmUnKSk7XG4gICAgdGhpcy5fc2hvd0NvbHVtbk1lbnUgPSBoZWFkZXJQYXJhbXMuc2hvd0NvbHVtbk1lbnU7XG4gICAgdGhpcy51cGRhdGVGaWx0ZXJPcHRpb25zKCk7XG4gICAgaGVhZGVyUGFyYW1zLmFwaS5hZGRFdmVudExpc3RlbmVyKCdzb3J0Q2hhbmdlZCcsIChldmVudCkgPT4ge1xuICAgICAgY29uc3QgY29sSWQgPSBfLmdldChldmVudCwgJ2NvbHVtbkRlZi5jb2xJZCcsICcnKTtcbiAgICAgIGlmIChjb2xJZCAhPT0gdGhpcy5jb2x1bW5EZWYuY29sSWQpIHtcbiAgICAgICAgdGhpcy5zb3J0RGlyID0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zb3J0RGlyID0gXy5nZXQoZXZlbnQsICdzb3J0RGlyJyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaGVhZGVyUGFyYW1zLmFwaS5hZGRFdmVudExpc3RlbmVyKCdjb2x1bW5FdmVyeXRoaW5nQ2hhbmdlZCcsIChldmVudCkgPT4ge1xuICAgICAgXy5mb3JFYWNoKGV2ZW50LmFwaT8uY29sdW1uTW9kZWw/LmNvbHVtbkRlZnMsIGNvbERlZiA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNvbHVtbkRlZi5jb2xJZCA9PT0gY29sRGVmLmNvbElkICYmIGNvbERlZi5oZWFkZXJDb21wb25lbnRQYXJhbXM/LmZpbHRlck9wdGlvbnMpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlck9wdGlvbnMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuc2hvd0J1YmJsZSkge1xuICAgICAgLy8gdGhpcy51cGRhdGVTdGF0dXNDbGFzcygpO1xuICAgIH1cbiAgfVxuXG4gIHBpbigpOiB2b2lkIHtcbiAgICB0aGlzLmNvbHVtbkRlZi5waW5Db2x1bW4odGhpcy5jb2x1bW5PYmosIHRoaXMucGlubmVkID8gZmFsc2UgOiAnbGVmdCcpO1xuICAgIHRoaXMucGlubmVkID0gIXRoaXMucGlubmVkO1xuICB9XG5cbiAgaGlkZSgpOiB2b2lkIHtcbiAgICB0aGlzLmhlYWRlclBhcmFtcy5hcGkueml0aUhpZGVDb2x1bW4odGhpcy5jb2x1bW5PYmosIGZhbHNlKTtcbiAgfVxuXG4gIHNvcnQoZXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29sdW1uRGVmLnNvcnRhYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRhcmdldElkID0gXy5nZXQoZXZlbnQsICd0YXJnZXQuaWQnKTtcbiAgICBpZiAoXG4gICAgICBfLmluY2x1ZGVzKFxuICAgICAgICBbYEhlYWRlclN0YXR1c18ke3RoaXMuY29sdW1uRGVmLmNvbElkfWAsICdTZWFyY2hGaWx0ZXInLCBgSGVhZGVyRmlsdGVySWNvbl8ke3RoaXMuY29sdW1uRGVmLmNvbElkfWBdLFxuICAgICAgICB0YXJnZXRJZFxuICAgICAgKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXy5pc0VtcHR5KHRoaXMuc29ydERpcikpIHtcbiAgICAgIHRoaXMuc29ydERpciA9ICdhc2MnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zb3J0RGlyID09PSAnYXNjJykge1xuICAgICAgdGhpcy5zb3J0RGlyID0gJ2Rlc2MnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNvcnREaXIgPSAnYXNjJztcbiAgICB9XG4gICAgXy5zZXQodGhpcy5oZWFkZXJQYXJhbXMsICdhcGkuc29ydERpcicsIHRoaXMuc29ydERpcik7XG4gICAgXy5zZXQodGhpcy5oZWFkZXJQYXJhbXMsICdhcGkuc29ydERpcicsIHRoaXMuY29sdW1uRGVmLmNvbElkKTtcbiAgICBpZiAodGhpcy5jb2x1bW5EZWYuc29ydENvbHVtbikge1xuICAgICAgdGhpcy5jb2x1bW5EZWYuc29ydENvbHVtbih0aGlzLmNvbHVtbkRlZi5jb2xJZCwgdGhpcy5zb3J0RGlyLCB0aGlzLmhlYWRlclBhcmFtcy5hcGkpO1xuICAgICAgdGhpcy5oZWFkZXJQYXJhbXMuYXBpLmRpc3BhdGNoRXZlbnQoe1xuICAgICAgICB0eXBlOiAnc29ydENoYW5nZWQnLFxuICAgICAgICBjb2x1bW5EZWY6IHRoaXMuY29sdW1uRGVmLFxuICAgICAgICBzb3J0RGlyOiB0aGlzLnNvcnREaXIsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVGaWx0ZXIoZXZlbnQpIHtcbiAgICB0aGlzLnNob3dGaWx0ZXIgPSAhdGhpcy5zaG93RmlsdGVyO1xuICAgIGlmICh0aGlzLmZpbHRlclR5cGUgPT09ICdTRUxFQ1QnIHx8IHRoaXMuZmlsdGVyVHlwZSA9PT0gJ0NPTUJPJyB8fCB0aGlzLmZpbHRlclR5cGUgPT09ICdEQVRFVElNRSd8fCB0aGlzLmZpbHRlclR5cGUgPT09ICdBVFRSSUJVVEUnKSB7XG4gICAgICBpZiAodGhpcy5zaG93RmlsdGVyKSB7XG4gICAgICAgIHRoaXMudXBkYXRlRmlsdGVyT3B0aW9ucygpO1xuICAgICAgICBfLmludm9rZSh0aGlzLmhlYWRlclBhcmFtcywgJ2FwaS5vcGVuSGVhZGVyRmlsdGVyJywgZXZlbnQsIHRoaXMuZmlsdGVyT3B0aW9ucywgdGhpcy5maWx0ZXJUeXBlLCB0aGlzLmNvbHVtbkRlZj8uY29sSWQsIHRoaXMuaGVhZGVyTmFtZSwgdGhpcy5jb2x1bW5EZWY/LmhlYWRlckNvbXBvbmVudFBhcmFtcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfLmludm9rZSh0aGlzLmhlYWRlclBhcmFtcywgJ2FwaS5jbG9zZUhlYWRlckZpbHRlcicsIGV2ZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuZmlsdGVyVHlwZSA9PT0gJ0NVU1RPTScpIHtcbiAgICAgIGlmICh0aGlzLnNob3dGaWx0ZXIpIHtcbiAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJPcHRpb25zKCk7XG4gICAgICAgIF8uaW52b2tlKHRoaXMuaGVhZGVyUGFyYW1zLCAnY29sdW1uLmNvbERlZi5oZWFkZXJDb21wb25lbnRQYXJhbXMub3BlbkhlYWRlckZpbHRlcicsIGV2ZW50LCB0aGlzLmZpbHRlck9wdGlvbnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgXy5pbnZva2UodGhpcy5oZWFkZXJQYXJhbXMsICdjb2x1bW4uY29sRGVmLmhlYWRlckNvbXBvbmVudFBhcmFtcy5jbG9zZUhlYWRlckZpbHRlcicsIGV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0b2dnbGVTZWNvbmRhcnlGaWx0ZXIoZXZlbnQpIHtcbiAgICB0aGlzLnNob3dTZWNvbmRhcnlGaWx0ZXIgPSAhdGhpcy5zaG93U2Vjb25kYXJ5RmlsdGVyO1xuICAgIGlmICh0aGlzLnNob3dTZWNvbmRhcnlGaWx0ZXIpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ0FueScsXG4gICAgICAgICAgY29sdW1uSWQ6IHRoaXMub25saW5lU3RhdHVzRmlsdGVyLFxuICAgICAgICAgIGZpbHRlck5hbWU6ICdTdGF0dXMnLFxuICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgYnViYmxlQ2xhc3M6ICd2N09ubGluZU9mZmxpbmUnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6ICdPbmxpbmUnLFxuICAgICAgICAgIGNvbHVtbklkOiB0aGlzLm9ubGluZVN0YXR1c0ZpbHRlcixcbiAgICAgICAgICBmaWx0ZXJOYW1lOiAnU3RhdHVzJyxcbiAgICAgICAgICB2YWx1ZTogJ3RydWUnLFxuICAgICAgICAgIGJ1YmJsZUNsYXNzOiAndjdPbmxpbmUnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6ICdPZmZsaW5lJyxcbiAgICAgICAgICBjb2x1bW5JZDogdGhpcy5vbmxpbmVTdGF0dXNGaWx0ZXIsXG4gICAgICAgICAgZmlsdGVyTmFtZTogJ1N0YXR1cycsXG4gICAgICAgICAgdmFsdWU6ICdmYWxzZScsXG4gICAgICAgICAgYnViYmxlQ2xhc3M6ICd2N09mZmxpbmUnLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICAgIF8uaW52b2tlKHRoaXMuaGVhZGVyUGFyYW1zLCAnYXBpLm9wZW5IZWFkZXJGaWx0ZXInLCBldmVudCwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIF8uaW52b2tlKHRoaXMuaGVhZGVyUGFyYW1zLCAnYXBpLmNsb3NlSGVhZGVyRmlsdGVyJywgZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGhpZGVGaWx0ZXIoZXZlbnQpIHtcbiAgICBjb25zdCB0YXJnZXRJZCA9IF8uZ2V0KGV2ZW50LCAndGFyZ2V0LmlkJyk7XG4gICAgaWYgKFxuICAgICAgXy5pbmNsdWRlcyhcbiAgICAgICAgW2BIZWFkZXJGaWx0ZXJCdXR0b25fJHt0aGlzLmNvbHVtbkRlZi5jb2xJZH1gLCBgSGVhZGVyRmlsdGVySWNvbl8ke3RoaXMuY29sdW1uRGVmLmNvbElkfWBdLFxuICAgICAgICB0YXJnZXRJZFxuICAgICAgKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAodGFyZ2V0SWQgPT09IHRoaXMuY29sdW1uRGVmPy5jb2xJZCAmJiB0aGlzLmZpbHRlclR5cGUgPT09ICdDT01CTycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXy5pbnZva2UodGhpcy5oZWFkZXJQYXJhbXMsICdhcGkuY2xvc2VIZWFkZXJGaWx0ZXInLCBldmVudCk7XG5cbiAgICB0aGlzLmNvbWJvQWN0aXZlID0gZmFsc2U7XG4gICAgdGhpcy5zaG93RmlsdGVyID0gZmFsc2U7XG4gICAgdGhpcy5zaG93U2Vjb25kYXJ5RmlsdGVyID0gZmFsc2U7XG4gIH1cblxuICByZWZyZXNoKHBhcmFtczogSUhlYWRlclBhcmFtcyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgb3BlbkdyaWRNZW51KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fc2hvd0NvbHVtbk1lbnUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fc2hvd0NvbHVtbk1lbnUodGhpcy5tZW51QnV0dG9uLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgdXBkYXRlRmlsdGVyT3B0aW9ucygpIHtcbiAgICBsZXQgb3B0aW9ucyA9IFtdO1xuICAgIGlmICh0aGlzLmhlYWRlclBhcmFtcy5nZXRGaWx0ZXJPcHRpb25zKSB7XG4gICAgICBvcHRpb25zID0gdGhpcy5oZWFkZXJQYXJhbXMuZ2V0RmlsdGVyT3B0aW9ucygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zID0gdGhpcy5oZWFkZXJQYXJhbXMuZmlsdGVyT3B0aW9ucztcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJPcHRpb25zID0gXy5tYXAob3B0aW9ucywgKG9wdGlvbikgPT4ge1xuICAgICAgb3B0aW9uLmNvbHVtbklkID0gdGhpcy5jb2x1bW5EZWYuY29sSWQ7XG4gICAgICBvcHRpb24uZmlsdGVyTmFtZSA9IHRoaXMuaGVhZGVyTmFtZTtcbiAgICAgIG9wdGlvbi50eXBlID0gdGhpcy5maWx0ZXJUeXBlO1xuICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdlxuICAoY2xpY2spPVwic29ydCgkZXZlbnQpXCJcbiAgW25nQ2xhc3NdPVwieyAnbmYtY2FuLXNvcnQnOiBlbmFibGVTb3J0aW5nIH1cIlxuICBjbGFzcz1cImFnLWNlbGwtbGFiZWwtY29udGFpbmVyIGFnLWhlYWRlci1jZWxsLXNvcnRlZC1ub25lXCJcbiAgaWQ9XCJUYWJsZUhlYWRlckNvbnRhaW5lcl97eyBjb2x1bW5EZWYuY29sSWQgfX1cIlxuPlxuICAgIDxzcGFuXG4gICAgICAjbWVudUJ1dHRvblxuICAgICAgKGNsaWNrKT1cIm9wZW5HcmlkTWVudSgpXCJcbiAgICAgICpuZ0lmPVwiZmFsc2VcIlxuICAgICAgY2xhc3M9XCJhZy1oZWFkZXItaWNvbiBhZy1oZWFkZXItY2VsbC1tZW51LWJ1dHRvblwiXG4gICAgICBpZD1cIkhlYWRlck1lbnVfe3sgY29sdW1uRGVmLmNvbElkIH19XCJcbiAgICAgIHJlZj1cImVNZW51XCJcbiAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYWctaWNvbiBhZy1pY29uLW1lbnVcIiB1bnNlbGVjdGFibGU9XCJvblwiPjwvc3Bhbj5cbiAgICA8L3NwYW4+XG4gIDxzcGFuXG4gICAgKGNsaWNrKT1cInBpbigpXCJcbiAgICBjbGFzcz1cImFnLWhlYWRlci1pY29uIGFnLWhlYWRlci1jb2wtcGluLWJ1dHRvblwiXG4gICAgaWQ9XCJIZWFkZXJQaW5fe3sgY29sdW1uRGVmLmNvbElkIH19XCJcbiAgICB0aXRsZT1cInt7IHBpbm5lZCA/ICdVbnBpbiBDb2x1bW4nIDogJ1BpbiBDb2x1bW4nIH19XCJcbiAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImFnLWljb24gYWctaWNvbi1waW5cIj48L3NwYW4+XG4gICAgPC9zcGFuPlxuICA8c3BhblxuICAgIChjbGljayk9XCJoaWRlKClcIlxuICAgIGNsYXNzPVwiYWctaGVhZGVyLWljb24gYWctaGVhZGVyLWNvbC1oaWRlLWJ1dHRvblwiXG4gICAgaWQ9XCJIZWFkZXJIaWRlX3t7IGNvbHVtbkRlZi5jb2xJZCB9fVwiXG4gICAgdGl0bGU9XCJIaWRlIENvbHVtblwiXG4gID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhZy1pY29uIGFnLWljb24tZXllLXNsYXNoXCI+PC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPGRpdiBjbGFzcz1cImFnLWhlYWRlci1jZWxsLWxhYmVsXCIgcmVmPVwiZUxhYmVsXCIgdW5zZWxlY3RhYmxlPVwib25cIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdJZj1cIiFoZWFkZXJQYXJhbXMuZmlsdGVyVHlwZVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnYWctZmlsdGVyLWFwcGxpZWQnOiBmaWx0ZXJBcHBsaWVkIH1cIlxuICAgICAgICAgIGNsYXNzPVwiYWctaGVhZGVyLWljb24gYWctaGVhZGVyLWNvbC1maWx0ZXItYnV0dG9uXCJcbiAgICAgICAgICBpZD1cIkhlYWRlckZpbHRlclNwYWNlcl97eyBjb2x1bW5EZWYuY29sSWQgfX1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFnLWljb24gYWctaWNvbi1maWx0ZXJcIiBpZD1cIkhlYWRlckZpbHRlclNwYWNlX3t7IGNvbHVtbkRlZi5jb2xJZCB9fVwiIHN0eWxlPVwib3BhY2l0eTogMFwiPjwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgIDxzcGFuXG4gICAgICAoY2xpY2spPVwidG9nZ2xlRmlsdGVyKCRldmVudClcIlxuICAgICAgKm5nSWY9XCJoZWFkZXJQYXJhbXMuZmlsdGVyVHlwZVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdhZy1maWx0ZXItYXBwbGllZCc6IGZpbHRlckFwcGxpZWQgfVwiXG4gICAgICBjbGFzcz1cImFnLWhlYWRlci1pY29uIGFnLWhlYWRlci1jb2wtZmlsdGVyLWJ1dHRvblwiXG4gICAgICBpZD1cIkhlYWRlckZpbHRlckJ1dHRvbl97eyBjb2x1bW5EZWYuY29sSWQgfX1cIlxuICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWctaWNvbiBhZy1pY29uLWZpbHRlclwiIGlkPVwiSGVhZGVyRmlsdGVySWNvbl97eyBjb2x1bW5EZWYuY29sSWQgfX1cIj48L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8ZGl2XG4gICAgICAoY2xpY2tPdXRzaWRlKT1cImhpZGVGaWx0ZXIoJGV2ZW50KVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdzaG93LWlucHV0LWZpbHRlcic6IHNob3dGaWx0ZXIgfVwiXG4gICAgICBjbGFzcz1cImhlYWRlci10ZXh0LWNvbnRhaW5lciB0ZXh0LWlucHV0LWZpbHRlclwiXG4gICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlY29uZGFyeUZpbHRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzaG93QnViYmxlXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic3RhdHVzQ2xhc3NcIlxuICAgICAgICAgICAgICBjbGFzcz1cImJ1YmJsZVwiXG4gICAgICAgICAgICAgIGlkPVwiSGVhZGVyU3RhdHVzX3t7IGNvbHVtbkRlZi5jb2xJZCB9fVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cInNob3dMb2FkZXJcIiBjbGFzcz1cImNpcmN1bGFyXCIgdmlld0JveD1cIjI1IDI1IDUwIDUwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBhdGhcIlxuICAgICAgICAgICAgICAgICAgICAgIGN4PVwiNTBcIlxuICAgICAgICAgICAgICAgICAgICAgIGN5PVwiNTBcIlxuICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICByPVwiMjBcIlxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1taXRlcmxpbWl0PVwiMTBcIlxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjNcIlxuICAgICAgICAgICAgICAgICAgICA+PC9jaXJjbGU+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICA8YXBwLXRhYmxlLWNvbHVtbi1maWx0ZXJcbiAgICAgICAgKm5nSWY9XCIoKHNob3dGaWx0ZXIgfHwgY29tYm9BY3RpdmUpICYmICEoZmlsdGVyVHlwZSA9PT0gJ0NPTUJPJyAmJiAhY29tYm9BY3RpdmUpKSAmJiBmaWx0ZXJUeXBlICE9PSAnU0VMRUNUJyAmJiBmaWx0ZXJUeXBlICE9PSAnQ1VTVE9NJ1wiXG4gICAgICAgIFtjb2x1bW5EZWZdPVwiY29sdW1uRGVmXCJcbiAgICAgICAgW2ZpbHRlck5hbWVdPVwiaGVhZGVyTmFtZVwiXG4gICAgICAgIFtmaWx0ZXJTdHJpbmddPVwiJydcIlxuICAgICAgICBbb3BlblN0YXR1c01lbnVdPVwidG9nZ2xlU2Vjb25kYXJ5RmlsdGVyLmJpbmQodGhpcylcIlxuICAgICAgICBbdHlwZV09XCJmaWx0ZXJUeXBlXCJcbiAgICAgID48L2FwcC10YWJsZS1jb2x1bW4tZmlsdGVyPlxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCIoKCFzaG93RmlsdGVyICYmICFjb21ib0FjdGl2ZSkgfHwgKGZpbHRlclR5cGUgPT09ICdDT01CTycgJiYgIWNvbWJvQWN0aXZlKSkgfHwgZmlsdGVyVHlwZSA9PT0gJ1NFTEVDVCcgfHwgZmlsdGVyVHlwZSA9PT0gJ0NVU1RPTSdcIlxuICAgICAgICBbdGl0bGVdPVwiaGVhZGVyTmFtZVwiXG4gICAgICAgIGNsYXNzPVwiYWctaGVhZGVyLWNlbGwtdGV4dFwiXG4gICAgICAgIGlkPVwiSGVhZGVyTmFtZV97eyBjb2x1bW5EZWYuY29sSWQgfX1cIlxuICAgICAgICB1bnNlbGVjdGFibGU9XCJvblwiXG4gICAgICA+e3sgaGVhZGVyTmFtZSB9fTwvc3BhblxuICAgICAgPlxuICAgIDwvZGl2PlxuICAgIDxzcGFuXG4gICAgICAqbmdJZj1cImVuYWJsZVNvcnRpbmcgJiYgIXNob3dGaWx0ZXJcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnYWctaGlkZGVuJzogc29ydERpciAhPT0gJ2Rlc2MnIH1cIlxuICAgICAgY2xhc3M9XCJhZy1oZWFkZXItaWNvbiBhZy1oZWFkZXItbGFiZWwtaWNvbiBhZy1zb3J0LWFzY2VuZGluZy1pY29uXCJcbiAgICAgIGlkPVwiSGVhZGVyU29ydEFzY197eyBjb2x1bW5EZWYuY29sSWQgfX1cIlxuICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWctaWNvbiBhZy1pY29uLWFzY1wiIHVuc2VsZWN0YWJsZT1cIm9uXCI+PC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgICpuZ0lmPVwiZW5hYmxlU29ydGluZyAmJiAhc2hvd0ZpbHRlclwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdhZy1oaWRkZW4nOiBzb3J0RGlyICE9PSAnYXNjJyB9XCJcbiAgICAgIGNsYXNzPVwiYWctaGVhZGVyLWljb24gYWctaGVhZGVyLWxhYmVsLWljb24gYWctc29ydC1kZXNjZW5kaW5nLWljb25cIlxuICAgICAgaWQ9XCJIZWFkZXJTb3J0RGVzY197eyBjb2x1bW5EZWYuY29sSWQgfX1cIlxuICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWctaWNvbiBhZy1pY29uLWRlc2NcIiB1bnNlbGVjdGFibGU9XCJvblwiPjwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19