imm-element-ui 1.0.6 → 1.0.8

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 (42) hide show
  1. package/esm2022/lib/form/form/form.component.mjs +9 -6
  2. package/esm2022/lib/form/form-field/field-control.mjs +5 -5
  3. package/esm2022/lib/form/form-field/field-utils.mjs +4 -5
  4. package/esm2022/lib/form/form-field/form-field.mjs +107 -107
  5. package/esm2022/lib/form/form-type/autocomplete.type.mjs +160 -151
  6. package/esm2022/lib/form/form-type/codemirror.type.mjs +5 -4
  7. package/esm2022/lib/form/form-type/datepicker.type.mjs +10 -1
  8. package/esm2022/lib/form/form-type/image.type.mjs +147 -146
  9. package/esm2022/lib/form/form-type/inputnumber.type.mjs +100 -91
  10. package/esm2022/lib/form/form-type/inputtext.type.mjs +28 -19
  11. package/esm2022/lib/form/form-type/multiselect.type.mjs +172 -163
  12. package/esm2022/lib/form/form-type/radio.type.mjs +81 -80
  13. package/esm2022/lib/form/form-type/rowselector.type.mjs +29 -28
  14. package/esm2022/lib/form/form-type/select.type.mjs +136 -136
  15. package/esm2022/lib/form/form-type/textarea.type.mjs +10 -1
  16. package/esm2022/lib/form/form-type/treeselect.type.mjs +4 -4
  17. package/esm2022/lib/form/form-type/upload.type.mjs +135 -134
  18. package/esm2022/lib/grid/actions/actions.component.mjs +3 -3
  19. package/esm2022/lib/page-form/page-form.component.mjs +12 -3
  20. package/esm2022/lib/share/utils.mjs +10 -1
  21. package/fesm2022/imm-element-ui.mjs +1147 -1068
  22. package/fesm2022/imm-element-ui.mjs.map +1 -1
  23. package/lib/crumb-action/crumb-action.component.d.ts +1 -1
  24. package/lib/form/form/form.component.d.ts +3 -1
  25. package/lib/form/form-field/field-control.d.ts +2 -2
  26. package/lib/form/form-field/field-utils.d.ts +1 -1
  27. package/lib/form/form-field/form-field.d.ts +2 -0
  28. package/lib/form/form-type/autocomplete.type.d.ts +1 -0
  29. package/lib/form/form-type/codemirror.type.d.ts +1 -1
  30. package/lib/form/form-type/datepicker.type.d.ts +2 -0
  31. package/lib/form/form-type/image.type.d.ts +1 -1
  32. package/lib/form/form-type/inputnumber.type.d.ts +1 -0
  33. package/lib/form/form-type/inputtext.type.d.ts +1 -0
  34. package/lib/form/form-type/multiselect.type.d.ts +1 -0
  35. package/lib/form/form-type/radio.type.d.ts +1 -1
  36. package/lib/form/form-type/rowselector.type.d.ts +1 -1
  37. package/lib/form/form-type/select.type.d.ts +1 -2
  38. package/lib/form/form-type/textarea.type.d.ts +1 -0
  39. package/lib/form/form-type/treeselect.type.d.ts +1 -1
  40. package/lib/form/form-type/upload.type.d.ts +1 -1
  41. package/lib/grid/grid/grid.component.d.ts +1 -1
  42. package/package.json +1 -1
@@ -32,116 +32,116 @@ export class FormFieldComponent {
32
32
  return this.fieldLabel;
33
33
  }
34
34
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FormFieldComponent, isStandalone: true, selector: "form-field", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "fieldLabel", first: true, predicate: ["fieldLabelRef"], descendants: true }, { propertyName: "fieldComponents", predicate: FormFieldComponent, descendants: true }], ngImport: i0, template: `
36
- @if (field()?.group) {
37
- <div [class]="field()?.groupClass">
38
- @for (fchild of field()!.group; track fchild) {
39
- @if (!fchild.hide) {
40
- <div [class]="fchild.groupClass || fchild.class">
41
- <form-field
42
- class="w-full"
43
- [field]="fchild">
44
- </form-field>
45
- </div>
46
- }
47
- }
48
- </div>
49
- } @else {
50
- <div [class]="field()?.innerClass || 'px-4 my-1'">
51
- <div class="flex flex-row flex-nowrap items-start">
52
- <div
53
- class="flex-none p-field field-label min-h-8 pt-[1.5px] flex items-center"
54
- [style]="getStyle()">
55
- <label
56
- #label
57
- [class]="labelClass()"
58
- fieldLabel
59
- [field]="field()!"
60
- [contextMenu]="contextMenu">
61
- <span
62
- style="user-select: none"
63
- #fieldLabelRef
64
- >{{ props(field()!).i18nKey ? (props(field()!).i18nKey! | translate) : props(field()!).label! }}</span
65
- >
66
- @if (props(field()!).required) {
67
- <span class="field-required">*</span>
68
- }
69
- @if (!field()?.fieldControl?.disabled) {
70
- <span class="iconfont icon-edit-flag field-editable"></span>
71
- }
72
- </label>
73
- </div>
74
- <div class="flex-1 min-h-8 pt-1 w-0 flex flex-row-reverse">
75
- <div
76
- #fieldTypeRef
77
- class="w-full">
78
- <form-type [field]="field()!"></form-type>
79
- </div>
80
- </div>
81
- </div>
82
- </div>
83
- <app-context-menu
84
- #contextMenu
85
- [target]="label"
86
- [field]="field()!"></app-context-menu>
87
- }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FormFieldComponent, isStandalone: true, selector: "form-field", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "fieldLabel", first: true, predicate: ["fieldLabelRef"], descendants: true }, { propertyName: "fieldComponents", predicate: FormFieldComponent, descendants: true }], ngImport: i0, template: `
36
+ @if (field()?.group) {
37
+ <div [class]="field()?.groupClass">
38
+ @for (fchild of field()!.group; track fchild) {
39
+ @if (!fchild.hide) {
40
+ <div [class]="fchild.groupClass || fchild.class">
41
+ <form-field
42
+ class="w-full"
43
+ [field]="fchild">
44
+ </form-field>
45
+ </div>
46
+ }
47
+ }
48
+ </div>
49
+ } @else {
50
+ <div [class]="field()?.innerClass || 'px-4 my-1'">
51
+ <div class="flex flex-row flex-nowrap items-start">
52
+ <div
53
+ class="flex-none p-field field-label min-h-8 pt-[1.5px] flex items-center"
54
+ [style]="getStyle()">
55
+ <label
56
+ #label
57
+ [class]="labelClass()"
58
+ fieldLabel
59
+ [field]="field()!"
60
+ [contextMenu]="contextMenu">
61
+ <span
62
+ style="user-select: none"
63
+ #fieldLabelRef
64
+ >{{ props(field()!).i18nKey ? (props(field()!).i18nKey! | translate) : props(field()!).label! }}</span
65
+ >
66
+ @if (props(field()!).required) {
67
+ <span class="field-required">*</span>
68
+ }
69
+ @if (!field()?.fieldControl?.disabled) {
70
+ <span class="iconfont icon-edit-flag field-editable"></span>
71
+ }
72
+ </label>
73
+ </div>
74
+ <div class="flex-1 min-h-8 pt-1 w-0 flex flex-row-reverse">
75
+ <div
76
+ #fieldTypeRef
77
+ class="w-full">
78
+ <form-type [field]="field()!"></form-type>
79
+ </div>
80
+ </div>
81
+ </div>
82
+ </div>
83
+ <app-context-menu
84
+ #contextMenu
85
+ [target]="label"
86
+ [field]="field()!"></app-context-menu>
87
+ }
88
88
  `, isInline: true, styles: [".p-field>label{margin:2px;text-overflow:ellipsis;display:block;color:#1e293b}.p-field>label:not(.ng-valid).ng-dirty{color:var(--p-red-500)!important}.p-field>label:not(.ng-valid).ng-dirty>.field-required{color:var(--p-red-500)!important}.field-required{padding-left:2.5px;color:var(--p-primary-color)}.p-field>label:not(.ng-valid).ng-dirty>.field-editable{color:var(--p-red-500)!important}.field-editable{padding-left:1px;font-size:6px;color:var(--p-primary-color)}.field-label{display:inline-block;overflow-wrap:break-word;word-break:break-word;white-space:normal}\n"], dependencies: [{ kind: "component", type: FormFieldComponent, selector: "form-field", inputs: ["field"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: FormTypeComponent, selector: "form-type", inputs: ["field"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: LabelDirective, selector: "[fieldLabel], [fieldLabel][field], [fieldLabel][contextMenu]", inputs: ["field", "contextMenu"] }, { kind: "component", type: ContextMenuComponent, selector: "app-context-menu", inputs: ["target", "field"] }] }); }
89
89
  }
90
90
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldComponent, decorators: [{
91
91
  type: Component,
92
- args: [{ selector: 'form-field', standalone: true, imports: [ReactiveFormsModule, FormTypeComponent, TranslatePipe, LabelDirective, ContextMenuComponent], template: `
93
- @if (field()?.group) {
94
- <div [class]="field()?.groupClass">
95
- @for (fchild of field()!.group; track fchild) {
96
- @if (!fchild.hide) {
97
- <div [class]="fchild.groupClass || fchild.class">
98
- <form-field
99
- class="w-full"
100
- [field]="fchild">
101
- </form-field>
102
- </div>
103
- }
104
- }
105
- </div>
106
- } @else {
107
- <div [class]="field()?.innerClass || 'px-4 my-1'">
108
- <div class="flex flex-row flex-nowrap items-start">
109
- <div
110
- class="flex-none p-field field-label min-h-8 pt-[1.5px] flex items-center"
111
- [style]="getStyle()">
112
- <label
113
- #label
114
- [class]="labelClass()"
115
- fieldLabel
116
- [field]="field()!"
117
- [contextMenu]="contextMenu">
118
- <span
119
- style="user-select: none"
120
- #fieldLabelRef
121
- >{{ props(field()!).i18nKey ? (props(field()!).i18nKey! | translate) : props(field()!).label! }}</span
122
- >
123
- @if (props(field()!).required) {
124
- <span class="field-required">*</span>
125
- }
126
- @if (!field()?.fieldControl?.disabled) {
127
- <span class="iconfont icon-edit-flag field-editable"></span>
128
- }
129
- </label>
130
- </div>
131
- <div class="flex-1 min-h-8 pt-1 w-0 flex flex-row-reverse">
132
- <div
133
- #fieldTypeRef
134
- class="w-full">
135
- <form-type [field]="field()!"></form-type>
136
- </div>
137
- </div>
138
- </div>
139
- </div>
140
- <app-context-menu
141
- #contextMenu
142
- [target]="label"
143
- [field]="field()!"></app-context-menu>
144
- }
92
+ args: [{ selector: 'form-field', standalone: true, imports: [ReactiveFormsModule, FormTypeComponent, TranslatePipe, LabelDirective, ContextMenuComponent], template: `
93
+ @if (field()?.group) {
94
+ <div [class]="field()?.groupClass">
95
+ @for (fchild of field()!.group; track fchild) {
96
+ @if (!fchild.hide) {
97
+ <div [class]="fchild.groupClass || fchild.class">
98
+ <form-field
99
+ class="w-full"
100
+ [field]="fchild">
101
+ </form-field>
102
+ </div>
103
+ }
104
+ }
105
+ </div>
106
+ } @else {
107
+ <div [class]="field()?.innerClass || 'px-4 my-1'">
108
+ <div class="flex flex-row flex-nowrap items-start">
109
+ <div
110
+ class="flex-none p-field field-label min-h-8 pt-[1.5px] flex items-center"
111
+ [style]="getStyle()">
112
+ <label
113
+ #label
114
+ [class]="labelClass()"
115
+ fieldLabel
116
+ [field]="field()!"
117
+ [contextMenu]="contextMenu">
118
+ <span
119
+ style="user-select: none"
120
+ #fieldLabelRef
121
+ >{{ props(field()!).i18nKey ? (props(field()!).i18nKey! | translate) : props(field()!).label! }}</span
122
+ >
123
+ @if (props(field()!).required) {
124
+ <span class="field-required">*</span>
125
+ }
126
+ @if (!field()?.fieldControl?.disabled) {
127
+ <span class="iconfont icon-edit-flag field-editable"></span>
128
+ }
129
+ </label>
130
+ </div>
131
+ <div class="flex-1 min-h-8 pt-1 w-0 flex flex-row-reverse">
132
+ <div
133
+ #fieldTypeRef
134
+ class="w-full">
135
+ <form-type [field]="field()!"></form-type>
136
+ </div>
137
+ </div>
138
+ </div>
139
+ </div>
140
+ <app-context-menu
141
+ #contextMenu
142
+ [target]="label"
143
+ [field]="field()!"></app-context-menu>
144
+ }
145
145
  `, styles: [".p-field>label{margin:2px;text-overflow:ellipsis;display:block;color:#1e293b}.p-field>label:not(.ng-valid).ng-dirty{color:var(--p-red-500)!important}.p-field>label:not(.ng-valid).ng-dirty>.field-required{color:var(--p-red-500)!important}.field-required{padding-left:2.5px;color:var(--p-primary-color)}.p-field>label:not(.ng-valid).ng-dirty>.field-editable{color:var(--p-red-500)!important}.field-editable{padding-left:1px;font-size:6px;color:var(--p-primary-color)}.field-label{display:inline-block;overflow-wrap:break-word;word-break:break-word;white-space:normal}\n"] }]
146
146
  }], ctorParameters: () => [], propDecorators: { fieldComponents: [{
147
147
  type: ViewChildren,
@@ -150,4 +150,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
150
150
  type: ViewChild,
151
151
  args: ['fieldLabelRef', { static: false }]
152
152
  }] } });
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBcUMsTUFBTSxlQUFlLENBQUM7QUFDekgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFDTixpQkFBaUIsR0FhakIsTUFBTSxhQUFhLENBQUM7O0FBb0xyQixNQUFNLE9BQU8sa0JBQWtCO0lBTTlCO1FBSEEsVUFBSyxHQUFHLEtBQUssRUFBYSxDQUFDO1FBQzNCLFVBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBRVYsQ0FBQztJQUVoQixRQUFRLEtBQVUsQ0FBQztJQUVuQixVQUFVO1FBQ1QsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3ZDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLFlBQVksRUFBRSxLQUFLLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxZQUFZLEVBQUUsS0FBSyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3BHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBQ0QsUUFBUTtRQUNQLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRyxDQUFDLGFBQWMsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUNuRSxDQUFDO0lBQ0Qsa0JBQWtCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM3QixDQUFDO0lBRUQsYUFBYTtRQUNaLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN4QixDQUFDOytHQTdCVyxrQkFBa0I7bUdBQWxCLGtCQUFrQiw0VUFDaEIsa0JBQWtCLGdEQXhEdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBcURULGlvQkFFVyxrQkFBa0IseUVBeEZwQixtQkFBbUIsK0JBQUUsaUJBQWlCLG9FQUFFLGFBQWEsa0RBQUUsY0FBYywySUFBRSxvQkFBb0I7OzRGQXdGekYsa0JBQWtCO2tCQTNGOUIsU0FBUzsrQkFDQyxZQUFZLGNBQ1YsSUFBSSxXQUNQLENBQUMsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxvQkFBb0IsQ0FBQyxZQWlDNUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBcURUO3dEQUdpQyxlQUFlO3NCQUFoRCxZQUFZO3VCQUFDLGtCQUFrQjtnQkFDZSxVQUFVO3NCQUF4RCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGlucHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZHJlbiwgUXVlcnlMaXN0LCBlZmZlY3QsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IExhYmVsRGlyZWN0aXZlIH0gZnJvbSAnLi9sYWJlbC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250ZXh0TWVudUNvbXBvbmVudCB9IGZyb20gJy4vY29udGV4dC1tZW51JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBmaWVsZFV0aWxzIH0gZnJvbSAnLi9maWVsZC11dGlscyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuXHRGb3JtVHlwZUNvbXBvbmVudCxcclxuXHRJbnB1dFRleHRQcm9wcyxcclxuXHRJbnB1dE51bWJlclByb3BzLFxyXG5cdFNlbGVjdFByb3BzLFxyXG5cdFRyZWVTZWxlY3RQcm9wcyxcclxuXHREYXRlUGlja2VyUHJvcHMsXHJcblx0QXV0b0NvbXBsZXRlUHJvcHMsXHJcblx0TXVsdGlTZWxlY3RQcm9wcyxcclxuXHRSYWRpb1Byb3BzLFxyXG5cdFRleHRBcmVhUHJvcHMsXHJcblx0VXBsb2FkUHJvcHMsXHJcblx0SW1hZ2VQcm9wcyxcclxuXHRDb2RlTWlycm9yUHJvcHMsXHJcbn0gZnJvbSAnLi9mb3JtLXR5cGUnO1xyXG5pbXBvcnQgeyBGaWVsZENvbnRyb2wgfSBmcm9tICcuL2ZpZWxkLWNvbnRyb2wnO1xyXG5pbXBvcnQgeyBGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS9mb3JtLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1GaWVsZCB7XHJcblx0a2V5Pzogc3RyaW5nO1xyXG5cdHR5cGU/OlxyXG5cdFx0fCAnaW5wdXR0ZXh0J1xyXG5cdFx0fCAnaW5wdXRudW1iZXInXHJcblx0XHR8ICdzZWxlY3QnXHJcblx0XHR8ICd0cmVlc2VsZWN0J1xyXG5cdFx0fCAnZGF0ZXBpY2tlcidcclxuXHRcdHwgJ2F1dG9jb21wbGV0ZSdcclxuXHRcdHwgJ211bHRpc2VsZWN0J1xyXG5cdFx0fCAncmFkaW8nXHJcblx0XHR8ICd0ZXh0YXJlYSdcclxuXHRcdHwgJ3VwbG9hZCdcclxuXHRcdHwgJ2ltYWdlJ1xyXG5cdFx0fCAnY29kZW1pcnJvcidcclxuXHRcdHwgJ3Jvd3NlbGVjdG9yJztcclxuXHRkZWZhdWx0PzogYW55O1xyXG5cdGlkPzogc3RyaW5nO1xyXG5cdG5hbWU/OiBzdHJpbmc7XHJcblx0Z3JvdXA/OiBGb3JtRmllbGRbXTtcclxuXHRncm91cENsYXNzPzogc3RyaW5nO1xyXG5cdGNsYXNzPzogc3RyaW5nO1xyXG5cdGlubmVyQ2xhc3M/OiBzdHJpbmc7XHJcblx0ZmllbGRDb250cm9sPzogRmllbGRDb250cm9sO1xyXG5cdGlucHV0VGV4dFByb3BzPzogSW5wdXRUZXh0UHJvcHM7XHJcblx0aW5wdXROdW1iZXJQcm9wcz86IElucHV0TnVtYmVyUHJvcHM7XHJcblx0c2VsZWN0UHJvcHM/OiBTZWxlY3RQcm9wcztcclxuXHR0cmVlU2VsZWN0UHJvcHM/OiBUcmVlU2VsZWN0UHJvcHM7XHJcblx0ZGF0ZVBpY2tlclByb3BzPzogRGF0ZVBpY2tlclByb3BzO1xyXG5cdGF1dG9Db21wbGV0ZVByb3BzPzogQXV0b0NvbXBsZXRlUHJvcHM7XHJcblx0bXVsdGlTZWxlY3RQcm9wcz86IE11bHRpU2VsZWN0UHJvcHM7XHJcblx0cmFkaW9Qcm9wcz86IFJhZGlvUHJvcHM7XHJcblx0dGV4dEFyZWFQcm9wcz86IFRleHRBcmVhUHJvcHM7XHJcblx0dXBsb2FkUHJvcHM/OiBVcGxvYWRQcm9wcztcclxuXHRpbWFnZVByb3BzPzogSW1hZ2VQcm9wcztcclxuXHRjb2RlTWlycm9yUHJvcHM/OiBDb2RlTWlycm9yUHJvcHM7XHJcblx0cm93U2VsZWN0b3JQcm9wcz86IGFueTtcclxuXHRoaWRlPzogYm9vbGVhbjtcclxuXHRoaWRlRXhwcmVzc2lvbj86IChtb2RlbDogYW55LCBmaWVsZD86IEZvcm1GaWVsZCkgPT4gYm9vbGVhbjtcclxuXHRob29rPzogT2JzZXJ2YWJsZTwoZmllbGQ/OiBGb3JtRmllbGQpID0+IHZvaWQ+O1xyXG5cdHZhbGlkYXRvcnM/OiBhbnk7XHJcblx0aW52YWxpZD86IGJvb2xlYW47XHJcblx0ZXh0cmE/OiBhbnk7XHJcblx0dXVpZD86IHN0cmluZztcclxuXHRsYWJlbE1pbldpZHRoPzogV3JpdGFibGVTaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPjtcclxuXHRpbnRlcmFjdGl2ZUxhYmVsPzogYm9vbGVhbjtcclxuXHRmb3JtPzogRm9ybUNvbXBvbmVudDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWVsZFByb3BzIHtcclxuXHR0eXBlPzogc3RyaW5nO1xyXG5cdGxhYmVsPzogc3RyaW5nO1xyXG5cdGkxOG5LZXk/OiBzdHJpbmc7XHJcblx0bGFiZWxDbGFzcz86IHN0cmluZztcclxuXHRsYWJlbFZhcmlhbnQ/OiAnaW4nIHwgJ292ZXInIHwgJ29uJztcclxuXHR2YXJpYW50PzogYW55O1xyXG5cdGNsYXNzPzogc3RyaW5nO1xyXG5cdG5hbWU/OiBzdHJpbmc7XHJcblx0cGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcblx0ZGlzYWJsZWQ/OiBib29sZWFuO1xyXG5cdGhpZGRlbj86IGJvb2xlYW47XHJcblx0cmVxdWlyZWQ/OiBib29sZWFuO1xyXG5cdHNpemU/OiBhbnk7XHJcblx0c3R5bGVDbGFzcz86IHN0cmluZztcclxuXHRzdHlsZT86IGFueTtcclxuXHRhdXRvZm9jdXM/OiBib29sZWFuO1xyXG5cdG1pbj86IG51bWJlcjtcclxuXHRtYXg/OiBudW1iZXI7XHJcblx0aW5wdXRTdHlsZT86IGFueTtcclxuXHRpbnB1dFN0eWxlQ2xhc3M/OiBzdHJpbmc7XHJcblx0Zmx1aWQ/OiBib29sZWFuO1xyXG5cdGFyaWFMYWJlbD86IHN0cmluZztcclxuXHRhcmlhTGFiZWxsZWRCeT86IHN0cmluZztcclxuXHRmb2N1cz86IEZvY3VzRXZlbnQ7XHJcblx0Ymx1cj86IEZvY3VzRXZlbnQ7XHJcblx0a2V5dXA/OiBLZXlib2FyZEV2ZW50O1xyXG5cdGtleWRvd24/OiBLZXlib2FyZEV2ZW50O1xyXG5cdGNsaWNrPzogTW91c2VFdmVudDtcclxuXHRpbnB1dD86IEV2ZW50O1xyXG5cdGNoYW5nZT86IEV2ZW50O1xyXG5cdGtleXByZXNzPzogS2V5Ym9hcmRFdmVudDtcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgdHlwZSBBdHRyaWJ1dGVFdmVudCA9IChmaWVsZDogRm9ybUZpZWxkLCBldmVudD86IGFueSkgPT4gdm9pZDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnZm9ybS1maWVsZCcsXHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybVR5cGVDb21wb25lbnQsIFRyYW5zbGF0ZVBpcGUsIExhYmVsRGlyZWN0aXZlLCBDb250ZXh0TWVudUNvbXBvbmVudF0sXHJcblx0c3R5bGVzOiBgXHJcblx0XHQucC1maWVsZCA+IGxhYmVsIHtcclxuXHRcdFx0bWFyZ2luOiAycHg7XHJcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG5cdFx0XHRkaXNwbGF5OiBibG9jaztcclxuXHRcdFx0Y29sb3I6ICMxZTI5M2I7XHJcblx0XHR9XHJcblx0XHQucC1maWVsZCA+IGxhYmVsOm5vdCgubmctdmFsaWQpLm5nLWRpcnR5IHtcclxuXHRcdFx0Y29sb3I6IHZhcigtLXAtcmVkLTUwMCkgIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHRcdC5wLWZpZWxkID4gbGFiZWw6bm90KC5uZy12YWxpZCkubmctZGlydHkgPiAuZmllbGQtcmVxdWlyZWQge1xyXG5cdFx0XHRjb2xvcjogdmFyKC0tcC1yZWQtNTAwKSAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cdFx0LmZpZWxkLXJlcXVpcmVkIHtcclxuXHRcdFx0cGFkZGluZy1sZWZ0OiAyLjVweDtcclxuXHRcdFx0Y29sb3I6IHZhcigtLXAtcHJpbWFyeS1jb2xvcik7XHJcblx0XHR9XHJcblx0XHQucC1maWVsZCA+IGxhYmVsOm5vdCgubmctdmFsaWQpLm5nLWRpcnR5ID4gLmZpZWxkLWVkaXRhYmxlIHtcclxuXHRcdFx0Y29sb3I6IHZhcigtLXAtcmVkLTUwMCkgIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHRcdC5maWVsZC1lZGl0YWJsZSB7XHJcblx0XHRcdHBhZGRpbmctbGVmdDogMXB4O1xyXG5cdFx0XHRmb250LXNpemU6IDZweDtcclxuXHRcdFx0Y29sb3I6IHZhcigtLXAtcHJpbWFyeS1jb2xvcik7XHJcblx0XHR9XHJcblx0XHQuZmllbGQtbGFiZWwge1xyXG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHRcdG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XHJcblx0XHRcdHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XHJcblx0XHRcdHdoaXRlLXNwYWNlOiBub3JtYWw7XHJcblx0XHR9XHJcblx0YCxcclxuXHR0ZW1wbGF0ZTogYFxyXG5cdFx0QGlmIChmaWVsZCgpPy5ncm91cCkge1xyXG5cdFx0XHQ8ZGl2IFtjbGFzc109XCJmaWVsZCgpPy5ncm91cENsYXNzXCI+XHJcblx0XHRcdFx0QGZvciAoZmNoaWxkIG9mIGZpZWxkKCkhLmdyb3VwOyB0cmFjayBmY2hpbGQpIHtcclxuXHRcdFx0XHRcdEBpZiAoIWZjaGlsZC5oaWRlKSB7XHJcblx0XHRcdFx0XHRcdDxkaXYgW2NsYXNzXT1cImZjaGlsZC5ncm91cENsYXNzIHx8IGZjaGlsZC5jbGFzc1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxmb3JtLWZpZWxkXHJcblx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInctZnVsbFwiXHJcblx0XHRcdFx0XHRcdFx0XHRbZmllbGRdPVwiZmNoaWxkXCI+XHJcblx0XHRcdFx0XHRcdFx0PC9mb3JtLWZpZWxkPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0fSBAZWxzZSB7XHJcblx0XHRcdDxkaXYgW2NsYXNzXT1cImZpZWxkKCk/LmlubmVyQ2xhc3MgfHwgJ3B4LTQgbXktMSdcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBmbGV4LW5vd3JhcCBpdGVtcy1zdGFydFwiPlxyXG5cdFx0XHRcdFx0PGRpdlxyXG5cdFx0XHRcdFx0XHRjbGFzcz1cImZsZXgtbm9uZSBwLWZpZWxkIGZpZWxkLWxhYmVsIG1pbi1oLTggcHQtWzEuNXB4XSBmbGV4IGl0ZW1zLWNlbnRlclwiXHJcblx0XHRcdFx0XHRcdFtzdHlsZV09XCJnZXRTdHlsZSgpXCI+XHJcblx0XHRcdFx0XHRcdDxsYWJlbFxyXG5cdFx0XHRcdFx0XHRcdCNsYWJlbFxyXG5cdFx0XHRcdFx0XHRcdFtjbGFzc109XCJsYWJlbENsYXNzKClcIlxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkTGFiZWxcclxuXHRcdFx0XHRcdFx0XHRbZmllbGRdPVwiZmllbGQoKSFcIlxyXG5cdFx0XHRcdFx0XHRcdFtjb250ZXh0TWVudV09XCJjb250ZXh0TWVudVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuXHJcblx0XHRcdFx0XHRcdFx0XHRzdHlsZT1cInVzZXItc2VsZWN0OiBub25lXCJcclxuXHRcdFx0XHRcdFx0XHRcdCNmaWVsZExhYmVsUmVmXHJcblx0XHRcdFx0XHRcdFx0XHQ+e3sgcHJvcHMoZmllbGQoKSEpLmkxOG5LZXkgPyAocHJvcHMoZmllbGQoKSEpLmkxOG5LZXkhIHwgdHJhbnNsYXRlKSA6IHByb3BzKGZpZWxkKCkhKS5sYWJlbCEgfX08L3NwYW5cclxuXHRcdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0QGlmIChwcm9wcyhmaWVsZCgpISkucmVxdWlyZWQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiZmllbGQtcmVxdWlyZWRcIj4qPC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRAaWYgKCFmaWVsZCgpPy5maWVsZENvbnRyb2w/LmRpc2FibGVkKSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImljb25mb250IGljb24tZWRpdC1mbGFnIGZpZWxkLWVkaXRhYmxlXCI+PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0PC9sYWJlbD5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXgtMSBtaW4taC04IHB0LTEgdy0wIGZsZXggZmxleC1yb3ctcmV2ZXJzZVwiPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRcdFx0I2ZpZWxkVHlwZVJlZlxyXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwidy1mdWxsXCI+XHJcblx0XHRcdFx0XHRcdFx0PGZvcm0tdHlwZSBbZmllbGRdPVwiZmllbGQoKSFcIj48L2Zvcm0tdHlwZT5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdDxhcHAtY29udGV4dC1tZW51XHJcblx0XHRcdFx0I2NvbnRleHRNZW51XHJcblx0XHRcdFx0W3RhcmdldF09XCJsYWJlbFwiXHJcblx0XHRcdFx0W2ZpZWxkXT1cImZpZWxkKCkhXCI+PC9hcHAtY29udGV4dC1tZW51PlxyXG5cdFx0fVxyXG5cdGAsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGRDb21wb25lbnQge1xyXG5cdEBWaWV3Q2hpbGRyZW4oRm9ybUZpZWxkQ29tcG9uZW50KSBmaWVsZENvbXBvbmVudHM/OiBRdWVyeUxpc3Q8Rm9ybUZpZWxkQ29tcG9uZW50PjtcclxuXHRAVmlld0NoaWxkKCdmaWVsZExhYmVsUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pIGZpZWxkTGFiZWw/OiBFbGVtZW50UmVmO1xyXG5cdGZpZWxkID0gaW5wdXQ8Rm9ybUZpZWxkPigpO1xyXG5cdHByb3BzID0gZmllbGRVdGlscy5wcm9wcztcclxuXHJcblx0Y29uc3RydWN0b3IoKSB7fVxyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHt9XHJcblxyXG5cdGxhYmVsQ2xhc3MoKSB7XHJcblx0XHRjb25zdCBsYyA9IFtdO1xyXG5cdFx0aWYgKHRoaXMuZmllbGQoKT8uZmllbGRDb250cm9sPy5kaXJ0eSkge1xyXG5cdFx0XHRsYy5wdXNoKCduZy1kaXJ0eScpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuZmllbGQoKT8uZmllbGRDb250cm9sPy52YWxpZCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuZmllbGQoKT8uZmllbGRDb250cm9sPy52YWxpZCAhPT0gZmFsc2UpIHtcclxuXHRcdFx0bGMucHVzaCgnbmctdmFsaWQnKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBsYy5qb2luKCcgJyk7XHJcblx0fVxyXG5cdGdldFN0eWxlKCkge1xyXG5cdFx0cmV0dXJuIHsgd2lkdGg6IHRoaXMuZmllbGQoKSEubGFiZWxNaW5XaWR0aCEoKSwgbWF4V2lkdGg6ICc0MCUnIH07XHJcblx0fVxyXG5cdGdldEZpZWxkQ29tcG9uZW50cygpOiBRdWVyeUxpc3Q8Rm9ybUZpZWxkQ29tcG9uZW50PiB8IHVuZGVmaW5lZCB7XHJcblx0XHRyZXR1cm4gdGhpcy5maWVsZENvbXBvbmVudHM7XHJcblx0fVxyXG5cclxuXHRnZXRGaWVsZExhYmVsKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuZmllbGRMYWJlbDtcclxuXHR9XHJcbn1cclxuIl19
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBcUMsTUFBTSxlQUFlLENBQUM7QUFDekgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFDTixpQkFBaUIsR0FhakIsTUFBTSxhQUFhLENBQUM7O0FBc0xyQixNQUFNLE9BQU8sa0JBQWtCO0lBTTlCO1FBSEEsVUFBSyxHQUFHLEtBQUssRUFBYSxDQUFDO1FBQzNCLFVBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBRVYsQ0FBQztJQUVoQixRQUFRLEtBQVUsQ0FBQztJQUVuQixVQUFVO1FBQ1QsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3ZDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLFlBQVksRUFBRSxLQUFLLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxZQUFZLEVBQUUsS0FBSyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3BHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBQ0QsUUFBUTtRQUNQLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRyxDQUFDLGFBQWMsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUNuRSxDQUFDO0lBQ0Qsa0JBQWtCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM3QixDQUFDO0lBRUQsYUFBYTtRQUNaLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN4QixDQUFDOytHQTdCVyxrQkFBa0I7bUdBQWxCLGtCQUFrQiw0VUFDaEIsa0JBQWtCLGdEQXhEdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBcURULGlvQkFFVyxrQkFBa0IseUVBeEZwQixtQkFBbUIsK0JBQUUsaUJBQWlCLG9FQUFFLGFBQWEsa0RBQUUsY0FBYywySUFBRSxvQkFBb0I7OzRGQXdGekYsa0JBQWtCO2tCQTNGOUIsU0FBUzsrQkFDQyxZQUFZLGNBQ1YsSUFBSSxXQUNQLENBQUMsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxvQkFBb0IsQ0FBQyxZQWlDNUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBcURUO3dEQUdpQyxlQUFlO3NCQUFoRCxZQUFZO3VCQUFDLGtCQUFrQjtnQkFDZSxVQUFVO3NCQUF4RCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGlucHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZHJlbiwgUXVlcnlMaXN0LCBlZmZlY3QsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTGFiZWxEaXJlY3RpdmUgfSBmcm9tICcuL2xhYmVsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb250ZXh0TWVudUNvbXBvbmVudCB9IGZyb20gJy4vY29udGV4dC1tZW51JztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGZpZWxkVXRpbHMgfSBmcm9tICcuL2ZpZWxkLXV0aWxzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG5cdEZvcm1UeXBlQ29tcG9uZW50LFxuXHRJbnB1dFRleHRQcm9wcyxcblx0SW5wdXROdW1iZXJQcm9wcyxcblx0U2VsZWN0UHJvcHMsXG5cdFRyZWVTZWxlY3RQcm9wcyxcblx0RGF0ZVBpY2tlclByb3BzLFxuXHRBdXRvQ29tcGxldGVQcm9wcyxcblx0TXVsdGlTZWxlY3RQcm9wcyxcblx0UmFkaW9Qcm9wcyxcblx0VGV4dEFyZWFQcm9wcyxcblx0VXBsb2FkUHJvcHMsXG5cdEltYWdlUHJvcHMsXG5cdENvZGVNaXJyb3JQcm9wcyxcbn0gZnJvbSAnLi9mb3JtLXR5cGUnO1xuaW1wb3J0IHsgRmllbGRDb250cm9sIH0gZnJvbSAnLi9maWVsZC1jb250cm9sJztcbmltcG9ydCB7IEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9mb3JtL2Zvcm0uY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBGb3JtRmllbGQge1xuXHRrZXk/OiBzdHJpbmc7XG5cdHR5cGU/OlxuXHRcdHwgJ2lucHV0dGV4dCdcblx0XHR8ICdpbnB1dG51bWJlcidcblx0XHR8ICdzZWxlY3QnXG5cdFx0fCAndHJlZXNlbGVjdCdcblx0XHR8ICdkYXRlcGlja2VyJ1xuXHRcdHwgJ2F1dG9jb21wbGV0ZSdcblx0XHR8ICdtdWx0aXNlbGVjdCdcblx0XHR8ICdyYWRpbydcblx0XHR8ICd0ZXh0YXJlYSdcblx0XHR8ICd1cGxvYWQnXG5cdFx0fCAnaW1hZ2UnXG5cdFx0fCAnY29kZW1pcnJvcidcblx0XHR8ICdyb3dzZWxlY3Rvcic7XG5cdGRlZmF1bHQ/OiBhbnk7XG5cdGlkPzogc3RyaW5nO1xuXHRuYW1lPzogc3RyaW5nO1xuXHRncm91cD86IEZvcm1GaWVsZFtdO1xuXHRncm91cENsYXNzPzogc3RyaW5nO1xuXHRjbGFzcz86IHN0cmluZztcblx0aW5uZXJDbGFzcz86IHN0cmluZztcblx0ZmllbGRDb250cm9sPzogRmllbGRDb250cm9sO1xuXHRpbnB1dFRleHRQcm9wcz86IElucHV0VGV4dFByb3BzO1xuXHRpbnB1dE51bWJlclByb3BzPzogSW5wdXROdW1iZXJQcm9wcztcblx0c2VsZWN0UHJvcHM/OiBTZWxlY3RQcm9wcztcblx0dHJlZVNlbGVjdFByb3BzPzogVHJlZVNlbGVjdFByb3BzO1xuXHRkYXRlUGlja2VyUHJvcHM/OiBEYXRlUGlja2VyUHJvcHM7XG5cdGF1dG9Db21wbGV0ZVByb3BzPzogQXV0b0NvbXBsZXRlUHJvcHM7XG5cdG11bHRpU2VsZWN0UHJvcHM/OiBNdWx0aVNlbGVjdFByb3BzO1xuXHRyYWRpb1Byb3BzPzogUmFkaW9Qcm9wcztcblx0dGV4dEFyZWFQcm9wcz86IFRleHRBcmVhUHJvcHM7XG5cdHVwbG9hZFByb3BzPzogVXBsb2FkUHJvcHM7XG5cdGltYWdlUHJvcHM/OiBJbWFnZVByb3BzO1xuXHRjb2RlTWlycm9yUHJvcHM/OiBDb2RlTWlycm9yUHJvcHM7XG5cdHJvd1NlbGVjdG9yUHJvcHM/OiBhbnk7XG5cdGhpZGU/OiBib29sZWFuO1xuXHRoaWRlRXhwcmVzc2lvbj86IChtb2RlbDogYW55LCBmaWVsZD86IEZvcm1GaWVsZCkgPT4gYm9vbGVhbjtcblx0aG9vaz86IE9ic2VydmFibGU8KGZpZWxkPzogRm9ybUZpZWxkKSA9PiB2b2lkPjtcblx0dmFsaWRhdG9ycz86IGFueTtcblx0aW52YWxpZD86IGJvb2xlYW47XG5cdGV4dHJhPzogYW55O1xuXHR1dWlkPzogc3RyaW5nO1xuXHRsYWJlbE1pbldpZHRoPzogV3JpdGFibGVTaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPjtcblx0aW50ZXJhY3RpdmVMYWJlbD86IGJvb2xlYW47XG5cdGZvcm0/OiBGb3JtQ29tcG9uZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkUHJvcHMge1xuXHR0eXBlPzogc3RyaW5nO1xuXHRsYWJlbD86IHN0cmluZztcblx0aTE4bktleT86IHN0cmluZztcblx0bGFiZWxDbGFzcz86IHN0cmluZztcblx0bGFiZWxWYXJpYW50PzogJ2luJyB8ICdvdmVyJyB8ICdvbic7XG5cdHZhcmlhbnQ/OiBhbnk7XG5cdGNsYXNzPzogc3RyaW5nO1xuXHRuYW1lPzogc3RyaW5nO1xuXHRwbGFjZWhvbGRlcj86IHN0cmluZztcblx0ZGlzYWJsZWQ/OiBib29sZWFuO1xuXHRoaWRkZW4/OiBib29sZWFuO1xuXHRyZXF1aXJlZD86IGJvb2xlYW47XG5cdHNpemU/OiBhbnk7XG5cdHN0eWxlQ2xhc3M/OiBzdHJpbmc7XG5cdHN0eWxlPzogYW55O1xuXHRhdXRvZm9jdXM/OiBib29sZWFuO1xuXHRtaW4/OiBudW1iZXI7XG5cdG1heD86IG51bWJlcjtcblx0aW5wdXRTdHlsZT86IGFueTtcblx0aW5wdXRTdHlsZUNsYXNzPzogc3RyaW5nO1xuXHRmbHVpZD86IGJvb2xlYW47XG5cdGFyaWFMYWJlbD86IHN0cmluZztcblx0YXJpYUxhYmVsbGVkQnk/OiBzdHJpbmc7XG5cdGZvY3VzPzogRm9jdXNFdmVudDtcblx0Ymx1cj86IEZvY3VzRXZlbnQ7XG5cdGtleXVwPzogS2V5Ym9hcmRFdmVudDtcblx0a2V5ZG93bj86IEtleWJvYXJkRXZlbnQ7XG5cdGNsaWNrPzogTW91c2VFdmVudDtcblx0aW5wdXQ/OiBFdmVudDtcblx0Y2hhbmdlPzogRXZlbnQ7XG5cdGtleXByZXNzPzogS2V5Ym9hcmRFdmVudDtcblx0b25Nb2RlbENoYW5nZT86IEF0dHJpYnV0ZUV2ZW50O1xuXHRvbkhvb2tDaGFuZ2U/OiBBdHRyaWJ1dGVFdmVudDtcbn1cblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBBdHRyaWJ1dGVFdmVudCA9IChmaWVsZDogRm9ybUZpZWxkLCBldmVudD86IGFueSkgPT4gdm9pZDtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnZm9ybS1maWVsZCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3JtVHlwZUNvbXBvbmVudCwgVHJhbnNsYXRlUGlwZSwgTGFiZWxEaXJlY3RpdmUsIENvbnRleHRNZW51Q29tcG9uZW50XSxcblx0c3R5bGVzOiBgXG5cdFx0LnAtZmllbGQgPiBsYWJlbCB7XG5cdFx0XHRtYXJnaW46IDJweDtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRjb2xvcjogIzFlMjkzYjtcblx0XHR9XG5cdFx0LnAtZmllbGQgPiBsYWJlbDpub3QoLm5nLXZhbGlkKS5uZy1kaXJ0eSB7XG5cdFx0XHRjb2xvcjogdmFyKC0tcC1yZWQtNTAwKSAhaW1wb3J0YW50O1xuXHRcdH1cblx0XHQucC1maWVsZCA+IGxhYmVsOm5vdCgubmctdmFsaWQpLm5nLWRpcnR5ID4gLmZpZWxkLXJlcXVpcmVkIHtcblx0XHRcdGNvbG9yOiB2YXIoLS1wLXJlZC01MDApICFpbXBvcnRhbnQ7XG5cdFx0fVxuXHRcdC5maWVsZC1yZXF1aXJlZCB7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDIuNXB4O1xuXHRcdFx0Y29sb3I6IHZhcigtLXAtcHJpbWFyeS1jb2xvcik7XG5cdFx0fVxuXHRcdC5wLWZpZWxkID4gbGFiZWw6bm90KC5uZy12YWxpZCkubmctZGlydHkgPiAuZmllbGQtZWRpdGFibGUge1xuXHRcdFx0Y29sb3I6IHZhcigtLXAtcmVkLTUwMCkgIWltcG9ydGFudDtcblx0XHR9XG5cdFx0LmZpZWxkLWVkaXRhYmxlIHtcblx0XHRcdHBhZGRpbmctbGVmdDogMXB4O1xuXHRcdFx0Zm9udC1zaXplOiA2cHg7XG5cdFx0XHRjb2xvcjogdmFyKC0tcC1wcmltYXJ5LWNvbG9yKTtcblx0XHR9XG5cdFx0LmZpZWxkLWxhYmVsIHtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG5cdFx0XHR3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vcm1hbDtcblx0XHR9XG5cdGAsXG5cdHRlbXBsYXRlOiBgXG5cdFx0QGlmIChmaWVsZCgpPy5ncm91cCkge1xuXHRcdFx0PGRpdiBbY2xhc3NdPVwiZmllbGQoKT8uZ3JvdXBDbGFzc1wiPlxuXHRcdFx0XHRAZm9yIChmY2hpbGQgb2YgZmllbGQoKSEuZ3JvdXA7IHRyYWNrIGZjaGlsZCkge1xuXHRcdFx0XHRcdEBpZiAoIWZjaGlsZC5oaWRlKSB7XG5cdFx0XHRcdFx0XHQ8ZGl2IFtjbGFzc109XCJmY2hpbGQuZ3JvdXBDbGFzcyB8fCBmY2hpbGQuY2xhc3NcIj5cblx0XHRcdFx0XHRcdFx0PGZvcm0tZmllbGRcblx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInctZnVsbFwiXG5cdFx0XHRcdFx0XHRcdFx0W2ZpZWxkXT1cImZjaGlsZFwiPlxuXHRcdFx0XHRcdFx0XHQ8L2Zvcm0tZmllbGQ+XG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdDwvZGl2PlxuXHRcdH0gQGVsc2Uge1xuXHRcdFx0PGRpdiBbY2xhc3NdPVwiZmllbGQoKT8uaW5uZXJDbGFzcyB8fCAncHgtNCBteS0xJ1wiPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBmbGV4LW5vd3JhcCBpdGVtcy1zdGFydFwiPlxuXHRcdFx0XHRcdDxkaXZcblx0XHRcdFx0XHRcdGNsYXNzPVwiZmxleC1ub25lIHAtZmllbGQgZmllbGQtbGFiZWwgbWluLWgtOCBwdC1bMS41cHhdIGZsZXggaXRlbXMtY2VudGVyXCJcblx0XHRcdFx0XHRcdFtzdHlsZV09XCJnZXRTdHlsZSgpXCI+XG5cdFx0XHRcdFx0XHQ8bGFiZWxcblx0XHRcdFx0XHRcdFx0I2xhYmVsXG5cdFx0XHRcdFx0XHRcdFtjbGFzc109XCJsYWJlbENsYXNzKClcIlxuXHRcdFx0XHRcdFx0XHRmaWVsZExhYmVsXG5cdFx0XHRcdFx0XHRcdFtmaWVsZF09XCJmaWVsZCgpIVwiXG5cdFx0XHRcdFx0XHRcdFtjb250ZXh0TWVudV09XCJjb250ZXh0TWVudVwiPlxuXHRcdFx0XHRcdFx0XHQ8c3BhblxuXHRcdFx0XHRcdFx0XHRcdHN0eWxlPVwidXNlci1zZWxlY3Q6IG5vbmVcIlxuXHRcdFx0XHRcdFx0XHRcdCNmaWVsZExhYmVsUmVmXG5cdFx0XHRcdFx0XHRcdFx0Pnt7IHByb3BzKGZpZWxkKCkhKS5pMThuS2V5ID8gKHByb3BzKGZpZWxkKCkhKS5pMThuS2V5ISB8IHRyYW5zbGF0ZSkgOiBwcm9wcyhmaWVsZCgpISkubGFiZWwhIH19PC9zcGFuXG5cdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0QGlmIChwcm9wcyhmaWVsZCgpISkucmVxdWlyZWQpIHtcblx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZpZWxkLXJlcXVpcmVkXCI+Kjwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRAaWYgKCFmaWVsZCgpPy5maWVsZENvbnRyb2w/LmRpc2FibGVkKSB7XG5cdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJpY29uZm9udCBpY29uLWVkaXQtZmxhZyBmaWVsZC1lZGl0YWJsZVwiPjwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0PC9sYWJlbD5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleC0xIG1pbi1oLTggcHQtMSB3LTAgZmxleCBmbGV4LXJvdy1yZXZlcnNlXCI+XG5cdFx0XHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0XHRcdCNmaWVsZFR5cGVSZWZcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJ3LWZ1bGxcIj5cblx0XHRcdFx0XHRcdFx0PGZvcm0tdHlwZSBbZmllbGRdPVwiZmllbGQoKSFcIj48L2Zvcm0tdHlwZT5cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGFwcC1jb250ZXh0LW1lbnVcblx0XHRcdFx0I2NvbnRleHRNZW51XG5cdFx0XHRcdFt0YXJnZXRdPVwibGFiZWxcIlxuXHRcdFx0XHRbZmllbGRdPVwiZmllbGQoKSFcIj48L2FwcC1jb250ZXh0LW1lbnU+XG5cdFx0fVxuXHRgLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGRDb21wb25lbnQge1xuXHRAVmlld0NoaWxkcmVuKEZvcm1GaWVsZENvbXBvbmVudCkgZmllbGRDb21wb25lbnRzPzogUXVlcnlMaXN0PEZvcm1GaWVsZENvbXBvbmVudD47XG5cdEBWaWV3Q2hpbGQoJ2ZpZWxkTGFiZWxSZWYnLCB7IHN0YXRpYzogZmFsc2UgfSkgZmllbGRMYWJlbD86IEVsZW1lbnRSZWY7XG5cdGZpZWxkID0gaW5wdXQ8Rm9ybUZpZWxkPigpO1xuXHRwcm9wcyA9IGZpZWxkVXRpbHMucHJvcHM7XG5cblx0Y29uc3RydWN0b3IoKSB7fVxuXG5cdG5nT25Jbml0KCk6IHZvaWQge31cblxuXHRsYWJlbENsYXNzKCkge1xuXHRcdGNvbnN0IGxjID0gW107XG5cdFx0aWYgKHRoaXMuZmllbGQoKT8uZmllbGRDb250cm9sPy5kaXJ0eSkge1xuXHRcdFx0bGMucHVzaCgnbmctZGlydHknKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuZmllbGQoKT8uZmllbGRDb250cm9sPy52YWxpZCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuZmllbGQoKT8uZmllbGRDb250cm9sPy52YWxpZCAhPT0gZmFsc2UpIHtcblx0XHRcdGxjLnB1c2goJ25nLXZhbGlkJyk7XG5cdFx0fVxuXHRcdHJldHVybiBsYy5qb2luKCcgJyk7XG5cdH1cblx0Z2V0U3R5bGUoKSB7XG5cdFx0cmV0dXJuIHsgd2lkdGg6IHRoaXMuZmllbGQoKSEubGFiZWxNaW5XaWR0aCEoKSwgbWF4V2lkdGg6ICc0MCUnIH07XG5cdH1cblx0Z2V0RmllbGRDb21wb25lbnRzKCk6IFF1ZXJ5TGlzdDxGb3JtRmllbGRDb21wb25lbnQ+IHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5maWVsZENvbXBvbmVudHM7XG5cdH1cblxuXHRnZXRGaWVsZExhYmVsKCkge1xuXHRcdHJldHVybiB0aGlzLmZpZWxkTGFiZWw7XG5cdH1cbn1cbiJdfQ==