@alauda-fe/common 1.4.28-beta.6 → 1.4.29-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/array-form-table/form/component.d.ts +1 -1
- package/chart/common/series/bar-path.component.d.ts +1 -1
- package/chart/common/tooltip/tooltip.component.d.ts +1 -1
- package/code/code-editor-configs.d.ts +2 -0
- package/code/managed-fields-folder.util.d.ts +35 -0
- package/code/public-api.d.ts +4 -0
- package/code/resource-yaml-display/component.d.ts +64 -6
- package/code/resource-yaml-editor/component.d.ts +95 -0
- package/code/yaml-examples.d.ts +8 -0
- package/code/yaml-sidebar/component.d.ts +57 -0
- package/code/yaml-sidebar/types.d.ts +21 -0
- package/core/abstract/base-nested-form-control.d.ts +1 -1
- package/core/directives/scroll-to-first-invalid.directive.d.ts +1 -1
- package/core/services/feature-gate.service.d.ts +1 -1
- package/core/services/kubernetes-schema.service.d.ts +44 -0
- package/core/services/public-api.d.ts +1 -0
- package/core/types/openapi.d.ts +37 -0
- package/core/types/public-api.d.ts +1 -0
- package/core/utils/version.d.ts +1 -1
- package/esm2022/code/code-editor-configs.mjs +12 -2
- package/esm2022/code/managed-fields-folder.util.mjs +147 -0
- package/esm2022/code/public-api.mjs +5 -1
- package/esm2022/code/resource-yaml-display/component.mjs +256 -42
- package/esm2022/code/resource-yaml-editor/component.mjs +392 -0
- package/esm2022/code/yaml-examples.mjs +337 -0
- package/esm2022/code/yaml-sidebar/component.mjs +482 -0
- package/esm2022/code/yaml-sidebar/types.mjs +2 -0
- package/esm2022/core/services/kubernetes-schema.service.mjs +129 -0
- package/esm2022/core/services/public-api.mjs +2 -1
- package/esm2022/core/services/workspace-helper.service.mjs +4 -3
- package/esm2022/core/types/openapi.mjs +2 -0
- package/esm2022/core/types/public-api.mjs +2 -1
- package/esm2022/exec/terminal-group/component.mjs +2 -2
- package/esm2022/translate/translate.service.mjs +2 -2
- package/package.json +1 -1
- package/styles/global.scss +4 -0
- package/table/component.d.ts +1 -1
- package/table/helper.d.ts +1 -1
- package/view-chart/view-chart.component.d.ts +1 -1
|
@@ -1,25 +1,32 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { CodeEditorModule } from '@alauda/code-editor';
|
|
3
|
-
import { CARD_MODULE, CHECKBOX_MODULE } from '@alauda/ui';
|
|
2
|
+
import { CodeEditorModule, MonacoLanguageService, } from '@alauda/code-editor';
|
|
3
|
+
import { CARD_MODULE, CHECKBOX_MODULE, ButtonModule, IconModule, TooltipModule, } from '@alauda/ui';
|
|
4
4
|
import { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';
|
|
5
|
-
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
5
|
+
import { ChangeDetectionStrategy, Component, Input, ViewChild, } from '@angular/core';
|
|
6
6
|
import { FormsModule } from '@angular/forms';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { yamlDefaults, setDiagnosticsOptions } from 'monaco-yaml';
|
|
8
|
+
import { BehaviorSubject, combineLatest, Observable, map, distinctUntilChanged, of, switchMap, shareReplay, takeUntil, Subject, } from 'rxjs';
|
|
9
|
+
import { KubernetesSchemaService } from '../../core/services/kubernetes-schema.service';
|
|
10
|
+
import { YamlUtilService } from '../../core/services/yaml-util.service';
|
|
11
|
+
import { ObservableInput } from '../../core/utils/decorators';
|
|
9
12
|
import { TranslateModule } from '../../translate/translate.module';
|
|
10
|
-
import { viewActions, yamlReadOptions } from '../code-editor-configs';
|
|
13
|
+
import { viewActions, yamlReadMinimapOptions, yamlReadOptions, } from '../code-editor-configs';
|
|
14
|
+
import { foldManagedFields, } from '../managed-fields-folder.util';
|
|
15
|
+
import { ResourceYamlSidebarComponent } from '../yaml-sidebar/component';
|
|
11
16
|
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "../../core/
|
|
13
|
-
import * as i2 from "
|
|
14
|
-
import * as i3 from "@
|
|
15
|
-
import * as i4 from "@alauda/
|
|
16
|
-
import * as i5 from "
|
|
17
|
+
import * as i1 from "../../core/services/yaml-util.service";
|
|
18
|
+
import * as i2 from "../../core/services/kubernetes-schema.service";
|
|
19
|
+
import * as i3 from "@alauda/code-editor";
|
|
20
|
+
import * as i4 from "@alauda/ui";
|
|
21
|
+
import * as i5 from "@angular/forms";
|
|
22
|
+
import * as i6 from "../../translate/translate.pipe";
|
|
23
|
+
const _c0 = ["codeEditorRef"];
|
|
17
24
|
function ResourceYamlDisplayComponent_aui_card_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
18
25
|
i0.ɵɵelementContainer(0);
|
|
19
26
|
} }
|
|
20
27
|
function ResourceYamlDisplayComponent_aui_card_0_Template(rf, ctx) { if (rf & 1) {
|
|
21
28
|
i0.ɵɵelementStart(0, "aui-card");
|
|
22
|
-
i0.ɵɵtemplate(1, ResourceYamlDisplayComponent_aui_card_0_ng_container_1_Template, 1, 0, "ng-container",
|
|
29
|
+
i0.ɵɵtemplate(1, ResourceYamlDisplayComponent_aui_card_0_ng_container_1_Template, 1, 0, "ng-container", 3);
|
|
23
30
|
i0.ɵɵelementEnd();
|
|
24
31
|
} if (rf & 2) {
|
|
25
32
|
i0.ɵɵnextContext();
|
|
@@ -27,11 +34,11 @@ function ResourceYamlDisplayComponent_aui_card_0_Template(rf, ctx) { if (rf & 1)
|
|
|
27
34
|
i0.ɵɵadvance();
|
|
28
35
|
i0.ɵɵproperty("ngTemplateOutlet", content_r1);
|
|
29
36
|
} }
|
|
30
|
-
function
|
|
37
|
+
function ResourceYamlDisplayComponent_ng_template_1_aui_checkbox_7_Template(rf, ctx) { if (rf & 1) {
|
|
31
38
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
32
|
-
i0.ɵɵelementStart(0, "aui-checkbox",
|
|
39
|
+
i0.ɵɵelementStart(0, "aui-checkbox", 12);
|
|
33
40
|
i0.ɵɵpipe(1, "async");
|
|
34
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
41
|
+
i0.ɵɵlistener("ngModelChange", function ResourceYamlDisplayComponent_ng_template_1_aui_checkbox_7_Template_aui_checkbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.conciseChange($event)); });
|
|
35
42
|
i0.ɵɵtext(2);
|
|
36
43
|
i0.ɵɵpipe(3, "translate");
|
|
37
44
|
i0.ɵɵelementEnd();
|
|
@@ -41,72 +48,258 @@ function ResourceYamlDisplayComponent_ng_template_1_aui_checkbox_3_Template(rf,
|
|
|
41
48
|
i0.ɵɵadvance(2);
|
|
42
49
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 4, "preview_concise_yaml"), " ");
|
|
43
50
|
} }
|
|
44
|
-
function
|
|
51
|
+
function ResourceYamlDisplayComponent_ng_template_1_button_9_Template(rf, ctx) { if (rf & 1) {
|
|
45
52
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
46
|
-
i0.ɵɵelementStart(0, "
|
|
53
|
+
i0.ɵɵelementStart(0, "button", 13);
|
|
47
54
|
i0.ɵɵpipe(1, "async");
|
|
48
55
|
i0.ɵɵpipe(2, "async");
|
|
49
|
-
i0.ɵɵ
|
|
50
|
-
i0.ɵɵtext(3);
|
|
56
|
+
i0.ɵɵpipe(3, "async");
|
|
51
57
|
i0.ɵɵpipe(4, "translate");
|
|
58
|
+
i0.ɵɵlistener("click", function ResourceYamlDisplayComponent_ng_template_1_button_9_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.toggleSidebar()); });
|
|
59
|
+
i0.ɵɵelement(5, "aui-icon", 14);
|
|
60
|
+
i0.ɵɵpipe(6, "async");
|
|
52
61
|
i0.ɵɵelementEnd();
|
|
62
|
+
} if (rf & 2) {
|
|
63
|
+
i0.ɵɵnextContext();
|
|
64
|
+
const codeEditorRef_r5 = i0.ɵɵreference(4);
|
|
65
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
66
|
+
i0.ɵɵproperty("hidden", !!codeEditorRef_r5.fullscreenDialog)("type", i0.ɵɵpipeBind1(1, 5, ctx_r2.showSidebar$$) ? "primary" : "text")("disabled", !i0.ɵɵpipeBind1(2, 7, ctx_r2.finalSchema$))("auiTooltip", i0.ɵɵpipeBind1(4, 11, i0.ɵɵpipeBind1(3, 9, ctx_r2.showSidebar$$) ? "hide_sidebar" : "view_sidebar"));
|
|
67
|
+
i0.ɵɵadvance(5);
|
|
68
|
+
i0.ɵɵproperty("icon", i0.ɵɵpipeBind1(6, 13, ctx_r2.showSidebar$$) ? "prod:expand_sidebar" : "prod:collapse_sidebar");
|
|
69
|
+
} }
|
|
70
|
+
function ResourceYamlDisplayComponent_ng_template_1_div_10_Template(rf, ctx) { if (rf & 1) {
|
|
71
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
72
|
+
i0.ɵɵelementStart(0, "div", 15)(1, "acl-resource-yaml-sidebar", 16);
|
|
73
|
+
i0.ɵɵpipe(2, "async");
|
|
74
|
+
i0.ɵɵlistener("close", function ResourceYamlDisplayComponent_ng_template_1_div_10_Template_acl_resource_yaml_sidebar_close_1_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.toggleSidebar()); });
|
|
75
|
+
i0.ɵɵelementEnd()();
|
|
53
76
|
} if (rf & 2) {
|
|
54
77
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
55
|
-
i0.ɵɵ
|
|
56
|
-
i0.ɵɵ
|
|
57
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 7, "hide_manage_fields_field"), " ");
|
|
78
|
+
i0.ɵɵadvance();
|
|
79
|
+
i0.ɵɵproperty("resource", ctx_r2.getCurrentResource())("schema", i0.ɵɵpipeBind1(2, 4, ctx_r2.finalSchema$))("schemaEnable", ctx_r2.schemaEnable)("exampleEnable", false);
|
|
58
80
|
} }
|
|
59
81
|
function ResourceYamlDisplayComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
60
|
-
i0.ɵɵelementStart(0, "
|
|
82
|
+
i0.ɵɵelementStart(0, "div", 4);
|
|
61
83
|
i0.ɵɵpipe(1, "async");
|
|
62
|
-
i0.ɵɵ
|
|
63
|
-
i0.ɵɵ
|
|
84
|
+
i0.ɵɵelementStart(2, "div", 5)(3, "aui-code-editor", 6, 1);
|
|
85
|
+
i0.ɵɵpipe(5, "async");
|
|
86
|
+
i0.ɵɵelementContainerStart(6, 7);
|
|
87
|
+
i0.ɵɵtemplate(7, ResourceYamlDisplayComponent_ng_template_1_aui_checkbox_7_Template, 4, 6, "aui-checkbox", 8);
|
|
88
|
+
i0.ɵɵelementContainerEnd();
|
|
89
|
+
i0.ɵɵelementContainerStart(8, 9);
|
|
90
|
+
i0.ɵɵtemplate(9, ResourceYamlDisplayComponent_ng_template_1_button_9_Template, 7, 15, "button", 10);
|
|
64
91
|
i0.ɵɵelementContainerEnd();
|
|
92
|
+
i0.ɵɵelementEnd()();
|
|
93
|
+
i0.ɵɵtemplate(10, ResourceYamlDisplayComponent_ng_template_1_div_10_Template, 3, 6, "div", 11);
|
|
94
|
+
i0.ɵɵpipe(11, "async");
|
|
65
95
|
i0.ɵɵelementEnd();
|
|
66
96
|
} if (rf & 2) {
|
|
67
97
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
68
|
-
i0.ɵɵ
|
|
98
|
+
i0.ɵɵclassProp("with-sidebar", i0.ɵɵpipeBind1(1, 9, ctx_r2.showSidebar$$));
|
|
69
99
|
i0.ɵɵadvance(3);
|
|
100
|
+
i0.ɵɵproperty("ngModel", i0.ɵɵpipeBind1(5, 11, ctx_r2.yaml$))("options", ctx_r2.editorOptions)("actionsConfig", ctx_r2.viewActions)("modelUri", ctx_r2.modelUri);
|
|
101
|
+
i0.ɵɵadvance(4);
|
|
70
102
|
i0.ɵɵproperty("ngIf", ctx_r2.conciseEnable);
|
|
103
|
+
i0.ɵɵadvance(2);
|
|
104
|
+
i0.ɵɵproperty("ngIf", ctx_r2.sidebarEnable);
|
|
71
105
|
i0.ɵɵadvance();
|
|
72
|
-
i0.ɵɵproperty("ngIf", ctx_r2.
|
|
106
|
+
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(11, 13, ctx_r2.showSidebar$$));
|
|
73
107
|
} }
|
|
74
108
|
export class ResourceYamlDisplayComponent {
|
|
75
|
-
constructor(yamlUtil) {
|
|
109
|
+
constructor(yamlUtil, schemaService, monacoLanguageService) {
|
|
76
110
|
this.yamlUtil = yamlUtil;
|
|
111
|
+
this.schemaService = schemaService;
|
|
112
|
+
this.monacoLanguageService = monacoLanguageService;
|
|
113
|
+
this.destroy$ = new Subject();
|
|
77
114
|
this.concise$$ = new BehaviorSubject(false);
|
|
78
|
-
this.reduce$$ = new BehaviorSubject(
|
|
115
|
+
this.reduce$$ = new BehaviorSubject(false);
|
|
116
|
+
this.showSidebar$$ = new BehaviorSubject(false);
|
|
117
|
+
this.showDebugPanel$$ = new BehaviorSubject(false);
|
|
118
|
+
this.monacoEditor = null;
|
|
119
|
+
this.registeredSchemas = new Set();
|
|
79
120
|
this.hasWrapper = true;
|
|
121
|
+
this.showDebugInfo = false;
|
|
80
122
|
this.conciseEnable = true;
|
|
81
123
|
this.manageFieldActionEnable = true;
|
|
124
|
+
this.sidebarEnable = true;
|
|
125
|
+
this.schemaEnable = true;
|
|
126
|
+
this.exampleEnable = true;
|
|
127
|
+
this.autoFoldManagedFields = true;
|
|
128
|
+
this.minimap = true;
|
|
129
|
+
this.yamlReadMinimapOptions = yamlReadMinimapOptions;
|
|
130
|
+
this.yamlReadOptions = yamlReadOptions;
|
|
131
|
+
this.hasFolded = false;
|
|
132
|
+
/**
|
|
133
|
+
* 自动获取的 schema,当没有手动提供 schema 时使用
|
|
134
|
+
*/
|
|
135
|
+
this.autoSchema$ = this.resource$.pipe(switchMap(resource => {
|
|
136
|
+
if (!resource) {
|
|
137
|
+
return of(null);
|
|
138
|
+
}
|
|
139
|
+
const firstResource = (Array.isArray(resource) ? resource[0] : resource);
|
|
140
|
+
if (!firstResource?.apiVersion || !firstResource?.kind) {
|
|
141
|
+
return of(null);
|
|
142
|
+
}
|
|
143
|
+
return this.schemaService.getResourceSchema(firstResource.apiVersion, firstResource.kind);
|
|
144
|
+
}), shareReplay(1));
|
|
145
|
+
/**
|
|
146
|
+
* 最终使用的 schema,优先使用手动提供的,否则使用自动获取的
|
|
147
|
+
*/
|
|
148
|
+
this.finalSchema$ = combineLatest([this.schema$, this.autoSchema$]).pipe(map(([manualSchema, autoSchema]) => manualSchema || autoSchema), distinctUntilChanged(), shareReplay(1));
|
|
82
149
|
this.yaml$ = combineLatest([
|
|
83
150
|
this.resource$,
|
|
84
151
|
this.concise$$,
|
|
85
152
|
this.reduce$$.pipe(distinctUntilChanged()),
|
|
86
153
|
]).pipe(map(([resource, concise, reduce]) => this.yamlUtil.generateFilteredYamlResource(resource, concise, reduce)));
|
|
87
|
-
this.editorOptions = yamlReadOptions;
|
|
88
154
|
this.viewActions = viewActions;
|
|
155
|
+
this.yamlSchemaService =
|
|
156
|
+
this.monacoLanguageService.getLanguageSchemaService(['yaml', 'yamlDefaults'], yamlDefaults);
|
|
157
|
+
// 启用 YAML 语法提示功能
|
|
158
|
+
setDiagnosticsOptions({
|
|
159
|
+
validate: true,
|
|
160
|
+
format: true,
|
|
161
|
+
completion: true,
|
|
162
|
+
hover: true,
|
|
163
|
+
});
|
|
164
|
+
// 自动设置 schema
|
|
165
|
+
combineLatest([this.resource$, this.finalSchema$])
|
|
166
|
+
.pipe(takeUntil(this.destroy$))
|
|
167
|
+
.subscribe(([resource, schema]) => {
|
|
168
|
+
if (resource && schema) {
|
|
169
|
+
const firstResource = Array.isArray(resource)
|
|
170
|
+
? resource[0]
|
|
171
|
+
: resource;
|
|
172
|
+
if (firstResource && !Array.isArray(firstResource)) {
|
|
173
|
+
this.setYamlSchema(firstResource, schema);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
this.finalSchema$.pipe(takeUntil(this.destroy$)).subscribe();
|
|
178
|
+
}
|
|
179
|
+
get editorOptions() {
|
|
180
|
+
return this.minimap ? yamlReadMinimapOptions : yamlReadOptions;
|
|
89
181
|
}
|
|
90
182
|
conciseChange(value) {
|
|
91
183
|
this.concise$$.next(value);
|
|
92
|
-
|
|
93
|
-
|
|
184
|
+
}
|
|
185
|
+
toggleSidebar() {
|
|
186
|
+
this.showSidebar$$.next(!this.showSidebar$$.value);
|
|
187
|
+
}
|
|
188
|
+
toggleDebugInfo() {
|
|
189
|
+
this.showDebugPanel$$.next(!this.showDebugPanel$$.value);
|
|
190
|
+
}
|
|
191
|
+
getCurrentResource() {
|
|
192
|
+
const resource = this.resource;
|
|
193
|
+
if (Array.isArray(resource)) {
|
|
194
|
+
return resource.length > 0 ? resource[0] : null;
|
|
195
|
+
}
|
|
196
|
+
return resource || null;
|
|
197
|
+
}
|
|
198
|
+
getCurrentSchema() {
|
|
199
|
+
return this.schema || null;
|
|
200
|
+
}
|
|
201
|
+
selfFoldManagedFields() {
|
|
202
|
+
if (this.hasFolded) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
this.hasFolded = true;
|
|
206
|
+
setTimeout(() => {
|
|
207
|
+
const editor = this.getEditorInstance();
|
|
208
|
+
if (editor) {
|
|
209
|
+
foldManagedFields(editor);
|
|
210
|
+
}
|
|
211
|
+
}, 50);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* 设置 YAML schema 以提供 hover 提示和自动完成
|
|
215
|
+
*/
|
|
216
|
+
setYamlSchema(resource, schema) {
|
|
217
|
+
if (!schema) {
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
// 使用 apiVersion + kind 组合作为标识
|
|
221
|
+
const apiVersion = resource?.apiVersion || 'unknown';
|
|
222
|
+
const kind = resource?.kind || 'unknown';
|
|
223
|
+
const schemaKey = `${apiVersion}/${kind}`;
|
|
224
|
+
this.modelUri = `${schemaKey}.yaml`;
|
|
225
|
+
this.selfFoldManagedFields();
|
|
226
|
+
// 检查是否已经注册过相同的 schema,避免重复注册
|
|
227
|
+
if (this.registeredSchemas.has(schemaKey)) {
|
|
228
|
+
return;
|
|
94
229
|
}
|
|
230
|
+
// 获取完整的 definitions 以支持 $ref 引用
|
|
231
|
+
const definitions = this.schemaService.definitions || {};
|
|
232
|
+
// 创建包含完整 definitions 的 schema 对象
|
|
233
|
+
const fullSchema = {
|
|
234
|
+
...schema,
|
|
235
|
+
definitions,
|
|
236
|
+
};
|
|
237
|
+
// 确保schema被正确注册,并启用自动完成功能
|
|
238
|
+
this.yamlSchemaService.addSchema({
|
|
239
|
+
uri: `k8s://${schemaKey}.schema.json`,
|
|
240
|
+
fileMatch: [this.modelUri],
|
|
241
|
+
schema: fullSchema,
|
|
242
|
+
});
|
|
243
|
+
this.registeredSchemas.add(schemaKey);
|
|
95
244
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
245
|
+
ngAfterViewInit() {
|
|
246
|
+
if (this.autoFoldManagedFields && this.schemaService.definitions) {
|
|
247
|
+
this.selfFoldManagedFields();
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* 获取 Monaco Editor 实例
|
|
252
|
+
*/
|
|
253
|
+
getEditorInstance() {
|
|
254
|
+
if (this.codeEditorRef && !this.monacoEditor) {
|
|
255
|
+
// 尝试从 ViewChild 获取编辑器实例
|
|
256
|
+
const editorComponent = this.codeEditorRef;
|
|
257
|
+
if (editorComponent.editor) {
|
|
258
|
+
this.monacoEditor = editorComponent.editor;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return this.monacoEditor;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* 自动折叠 managedFields 字段
|
|
265
|
+
*/
|
|
266
|
+
foldManagedFields() {
|
|
267
|
+
const editor = this.getEditorInstance();
|
|
268
|
+
if (editor) {
|
|
269
|
+
foldManagedFields(editor);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
ngOnDestroy() {
|
|
273
|
+
this.destroy$.next();
|
|
274
|
+
this.destroy$.complete();
|
|
275
|
+
this.monacoEditor = null;
|
|
276
|
+
}
|
|
277
|
+
static { this.ɵfac = function ResourceYamlDisplayComponent_Factory(t) { return new (t || ResourceYamlDisplayComponent)(i0.ɵɵdirectiveInject(i1.YamlUtilService), i0.ɵɵdirectiveInject(i2.KubernetesSchemaService), i0.ɵɵdirectiveInject(i3.MonacoLanguageService)); }; }
|
|
278
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ResourceYamlDisplayComponent, selectors: [["acl-resource-yaml-display"]], viewQuery: function ResourceYamlDisplayComponent_Query(rf, ctx) { if (rf & 1) {
|
|
279
|
+
i0.ɵɵviewQuery(_c0, 5);
|
|
280
|
+
} if (rf & 2) {
|
|
281
|
+
let _t;
|
|
282
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.codeEditorRef = _t.first);
|
|
283
|
+
} }, inputs: { hasWrapper: "hasWrapper", showDebugInfo: "showDebugInfo", conciseEnable: "conciseEnable", manageFieldActionEnable: "manageFieldActionEnable", sidebarEnable: "sidebarEnable", schemaEnable: "schemaEnable", exampleEnable: "exampleEnable", autoFoldManagedFields: "autoFoldManagedFields", schema: "schema", resource: "resource", minimap: "minimap" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 3, vars: 2, consts: [["content", ""], ["codeEditorRef", ""], [4, "ngIf", "ngIfElse"], [4, "ngTemplateOutlet"], [1, "yaml-display-container"], [1, "yaml-editor-section"], ["name", "yaml", 3, "ngModel", "options", "actionsConfig", "modelUri"], ["auiCodeEditorToolbarLeft", ""], ["class", "aui-code-editor-toolbar__control-button", 3, "ngModel", "ngModelChange", 4, "ngIf"], ["auiCodeEditorToolbarRightSide", ""], ["auiButton", "", "class", "aui-code-editor-toolbar__control-button", "size", "small", 3, "hidden", "type", "disabled", "auiTooltip", "click", 4, "ngIf"], ["class", "yaml-sidebar-section", 4, "ngIf"], [1, "aui-code-editor-toolbar__control-button", 3, "ngModelChange", "ngModel"], ["auiButton", "", "size", "small", 1, "aui-code-editor-toolbar__control-button", 3, "click", "hidden", "type", "disabled", "auiTooltip"], [3, "icon"], [1, "yaml-sidebar-section"], [3, "close", "resource", "schema", "schemaEnable", "exampleEnable"]], template: function ResourceYamlDisplayComponent_Template(rf, ctx) { if (rf & 1) {
|
|
284
|
+
i0.ɵɵtemplate(0, ResourceYamlDisplayComponent_aui_card_0_Template, 2, 1, "aui-card", 2)(1, ResourceYamlDisplayComponent_ng_template_1_Template, 12, 15, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
|
99
285
|
} if (rf & 2) {
|
|
100
286
|
const content_r1 = i0.ɵɵreference(2);
|
|
101
287
|
i0.ɵɵproperty("ngIf", ctx.hasWrapper)("ngIfElse", content_r1);
|
|
102
|
-
} }, dependencies: [
|
|
103
|
-
FormsModule,
|
|
104
|
-
|
|
288
|
+
} }, dependencies: [i4.CardComponent, NgIf,
|
|
289
|
+
FormsModule, i5.NgControlStatus, i5.NgModel, i4.CheckboxComponent, ButtonModule,
|
|
290
|
+
CodeEditorModule, i3.CodeEditorComponent, TranslateModule, i6.TranslatePipe, AsyncPipe,
|
|
291
|
+
NgTemplateOutlet,
|
|
292
|
+
ResourceYamlSidebarComponent,
|
|
293
|
+
IconModule, i4.IconComponent, TooltipModule, i4.TooltipDirective], styles: ["[_nghost-%COMP%]:not(.dialog-content){display:block;height:calc(100vh - (var(--acl-page-header-height) + 44px) - 147px)}[_nghost-%COMP%]:not(.dialog-content) .aui-code-editor{min-height:100%}[_nghost-%COMP%]:not(.dialog-content) > .aui-card[_ngcontent-%COMP%]{height:100%}[_nghost-%COMP%]:not(.dialog-content) > .aui-card[_ngcontent-%COMP%] .aui-card__content[_ngcontent-%COMP%], [_nghost-%COMP%]:not(.dialog-content) > .aui-card[_ngcontent-%COMP%] aui-code-editor[_ngcontent-%COMP%], [_nghost-%COMP%]:not(.dialog-content) > .aui-card[_ngcontent-%COMP%] .aui-code-editor[_ngcontent-%COMP%]{height:100%;min-height:100%}[_nghost-%COMP%]{display:block}[_nghost-%COMP%] aui-card, [_nghost-%COMP%] .aui-card, [_nghost-%COMP%] .aui-card__content{height:100%}[_nghost-%COMP%] .aui-checkbox{margin-right:0}[_nghost-%COMP%] aui-code-editor[_ngcontent-%COMP%]{height:100%}.yaml-display-container[_ngcontent-%COMP%]{display:flex;height:100%}.yaml-display-container.with-sidebar[_ngcontent-%COMP%] .yaml-editor-section[_ngcontent-%COMP%]{flex:1;min-width:0}.yaml-display-container.with-sidebar[_ngcontent-%COMP%] .yaml-sidebar-section[_ngcontent-%COMP%]{width:400px;flex-shrink:0}.yaml-display-container[_ngcontent-%COMP%]:not(.with-sidebar) .yaml-editor-section[_ngcontent-%COMP%]{flex:1}.yaml-editor-section[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%}.yaml-editor-section[_ngcontent-%COMP%] aui-code-editor[_ngcontent-%COMP%]{flex:1;height:100%}.yaml-sidebar-section[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%}.yaml-sidebar-section[_ngcontent-%COMP%] acl-resource-yaml-sidebar[_ngcontent-%COMP%]{flex:1;height:100%}.yaml-debug-section[_ngcontent-%COMP%]{position:absolute;top:0;right:0;width:350px;height:100%;background:var(--aui-color-bg-container);border-left:1px solid var(--aui-color-border-default);z-index:1000;overflow-y:auto}.debug-panel[_ngcontent-%COMP%]{padding:16px;font-size:12px}.debug-panel[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{margin:0 0 12px;font-size:14px;color:var(--aui-color-text-primary)}.debug-panel[_ngcontent-%COMP%] .debug-item[_ngcontent-%COMP%]{margin-bottom:16px}.debug-panel[_ngcontent-%COMP%] .debug-item[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{color:var(--aui-color-text-primary);display:block;margin-bottom:4px}.debug-panel[_ngcontent-%COMP%] .debug-item[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{margin:0;padding-left:16px}.debug-panel[_ngcontent-%COMP%] .debug-item[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{margin-bottom:2px;color:var(--aui-color-text-secondary)}.debug-panel[_ngcontent-%COMP%] .debug-actions[_ngcontent-%COMP%]{border-top:1px solid var(--aui-color-border-default);padding-top:12px;text-align:right}@media (max-width: 1200px){.yaml-display-container.with-sidebar[_ngcontent-%COMP%] .yaml-sidebar-section[_ngcontent-%COMP%]{width:350px}}@media (max-width: 992px){.yaml-display-container.with-sidebar[_ngcontent-%COMP%]{flex-direction:column}.yaml-display-container.with-sidebar[_ngcontent-%COMP%] .yaml-editor-section[_ngcontent-%COMP%]{flex:1;min-height:50%}.yaml-display-container.with-sidebar[_ngcontent-%COMP%] .yaml-sidebar-section[_ngcontent-%COMP%]{width:100%;height:50%;border-top:1px solid var(--aui-color-border, #e0e0e0);border-left:none}}"], changeDetection: 0 }); }
|
|
105
294
|
}
|
|
106
295
|
__decorate([
|
|
107
296
|
ObservableInput(),
|
|
108
297
|
__metadata("design:type", Observable)
|
|
109
298
|
], ResourceYamlDisplayComponent.prototype, "resource$", void 0);
|
|
299
|
+
__decorate([
|
|
300
|
+
ObservableInput(),
|
|
301
|
+
__metadata("design:type", Observable)
|
|
302
|
+
], ResourceYamlDisplayComponent.prototype, "schema$", void 0);
|
|
110
303
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ResourceYamlDisplayComponent, [{
|
|
111
304
|
type: Component,
|
|
112
305
|
args: [{ selector: 'acl-resource-yaml-display', preserveWhitespaces: false, standalone: true, imports: [
|
|
@@ -114,19 +307,40 @@ __decorate([
|
|
|
114
307
|
NgIf,
|
|
115
308
|
FormsModule,
|
|
116
309
|
CHECKBOX_MODULE,
|
|
310
|
+
ButtonModule,
|
|
117
311
|
CodeEditorModule,
|
|
118
312
|
TranslateModule,
|
|
119
313
|
AsyncPipe,
|
|
120
314
|
NgTemplateOutlet,
|
|
121
|
-
|
|
122
|
-
|
|
315
|
+
ResourceYamlSidebarComponent,
|
|
316
|
+
IconModule,
|
|
317
|
+
TooltipModule,
|
|
318
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<aui-card *ngIf=\"hasWrapper; else content\">\n <ng-container *ngTemplateOutlet=\"content\" />\n</aui-card>\n<ng-template #content>\n <div\n class=\"yaml-display-container\"\n [class.with-sidebar]=\"showSidebar$$ | async\"\n >\n <div class=\"yaml-editor-section\">\n <aui-code-editor\n #codeEditorRef\n name=\"yaml\"\n [ngModel]=\"yaml$ | async\"\n [options]=\"editorOptions\"\n [actionsConfig]=\"viewActions\"\n [modelUri]=\"modelUri\"\n >\n <ng-container auiCodeEditorToolbarLeft>\n <aui-checkbox\n *ngIf=\"conciseEnable\"\n class=\"aui-code-editor-toolbar__control-button\"\n [ngModel]=\"concise$$ | async\"\n (ngModelChange)=\"conciseChange($event)\"\n >\n {{ 'preview_concise_yaml' | translate }}\n </aui-checkbox>\n </ng-container>\n <ng-container auiCodeEditorToolbarRightSide>\n <!-- Schema \u6309\u94AE\uFF1A\u5F53\u542F\u7528\u4FA7\u8FB9\u680F\u65F6\u663E\u793A -->\n <button\n auiButton\n *ngIf=\"sidebarEnable\"\n [hidden]=\"!!codeEditorRef.fullscreenDialog\"\n class=\"aui-code-editor-toolbar__control-button\"\n [type]=\"(showSidebar$$ | async) ? 'primary' : 'text'\"\n [disabled]=\"!(finalSchema$ | async)\"\n size=\"small\"\n (click)=\"toggleSidebar()\"\n [auiTooltip]=\"\n ((showSidebar$$ | async) ? 'hide_sidebar' : 'view_sidebar')\n | translate\n \"\n >\n <aui-icon\n [icon]=\"\n (showSidebar$$ | async)\n ? 'prod:expand_sidebar'\n : 'prod:collapse_sidebar'\n \"\n ></aui-icon>\n </button>\n </ng-container>\n </aui-code-editor>\n </div>\n\n <div\n class=\"yaml-sidebar-section\"\n *ngIf=\"showSidebar$$ | async\"\n >\n <acl-resource-yaml-sidebar\n [resource]=\"getCurrentResource()\"\n [schema]=\"finalSchema$ | async\"\n (close)=\"toggleSidebar()\"\n [schemaEnable]=\"schemaEnable\"\n [exampleEnable]=\"false\"\n ></acl-resource-yaml-sidebar>\n </div>\n </div>\n</ng-template>\n", styles: [":host(:not(.dialog-content)){display:block;height:calc(100vh - (var(--acl-page-header-height) + 44px) - 147px)}:host(:not(.dialog-content)) ::ng-deep .aui-code-editor{min-height:100%}:host(:not(.dialog-content))>.aui-card{height:100%}:host(:not(.dialog-content))>.aui-card .aui-card__content,:host(:not(.dialog-content))>.aui-card aui-code-editor,:host(:not(.dialog-content))>.aui-card .aui-code-editor{height:100%;min-height:100%}:host{display:block}:host ::ng-deep aui-card,:host ::ng-deep .aui-card,:host ::ng-deep .aui-card__content{height:100%}:host ::ng-deep .aui-checkbox{margin-right:0}:host aui-code-editor{height:100%}.yaml-display-container{display:flex;height:100%}.yaml-display-container.with-sidebar .yaml-editor-section{flex:1;min-width:0}.yaml-display-container.with-sidebar .yaml-sidebar-section{width:400px;flex-shrink:0}.yaml-display-container:not(.with-sidebar) .yaml-editor-section{flex:1}.yaml-editor-section{display:flex;flex-direction:column;height:100%}.yaml-editor-section aui-code-editor{flex:1;height:100%}.yaml-sidebar-section{display:flex;flex-direction:column;height:100%}.yaml-sidebar-section acl-resource-yaml-sidebar{flex:1;height:100%}.yaml-debug-section{position:absolute;top:0;right:0;width:350px;height:100%;background:var(--aui-color-bg-container);border-left:1px solid var(--aui-color-border-default);z-index:1000;overflow-y:auto}.debug-panel{padding:16px;font-size:12px}.debug-panel h4{margin:0 0 12px;font-size:14px;color:var(--aui-color-text-primary)}.debug-panel .debug-item{margin-bottom:16px}.debug-panel .debug-item strong{color:var(--aui-color-text-primary);display:block;margin-bottom:4px}.debug-panel .debug-item ul{margin:0;padding-left:16px}.debug-panel .debug-item ul li{margin-bottom:2px;color:var(--aui-color-text-secondary)}.debug-panel .debug-actions{border-top:1px solid var(--aui-color-border-default);padding-top:12px;text-align:right}@media (max-width: 1200px){.yaml-display-container.with-sidebar .yaml-sidebar-section{width:350px}}@media (max-width: 992px){.yaml-display-container.with-sidebar{flex-direction:column}.yaml-display-container.with-sidebar .yaml-editor-section{flex:1;min-height:50%}.yaml-display-container.with-sidebar .yaml-sidebar-section{width:100%;height:50%;border-top:1px solid var(--aui-color-border, #e0e0e0);border-left:none}}\n"] }]
|
|
319
|
+
}], () => [{ type: i1.YamlUtilService }, { type: i2.KubernetesSchemaService }, { type: i3.MonacoLanguageService }], { codeEditorRef: [{
|
|
320
|
+
type: ViewChild,
|
|
321
|
+
args: ['codeEditorRef']
|
|
322
|
+
}], hasWrapper: [{
|
|
323
|
+
type: Input
|
|
324
|
+
}], showDebugInfo: [{
|
|
123
325
|
type: Input
|
|
124
326
|
}], conciseEnable: [{
|
|
125
327
|
type: Input
|
|
126
328
|
}], manageFieldActionEnable: [{
|
|
127
329
|
type: Input
|
|
330
|
+
}], sidebarEnable: [{
|
|
331
|
+
type: Input
|
|
332
|
+
}], schemaEnable: [{
|
|
333
|
+
type: Input
|
|
334
|
+
}], exampleEnable: [{
|
|
335
|
+
type: Input
|
|
336
|
+
}], autoFoldManagedFields: [{
|
|
337
|
+
type: Input
|
|
338
|
+
}], schema: [{
|
|
339
|
+
type: Input
|
|
128
340
|
}], resource: [{
|
|
129
341
|
type: Input
|
|
130
|
-
}], resource$: []
|
|
342
|
+
}], resource$: [], schema$: [], minimap: [{
|
|
343
|
+
type: Input
|
|
344
|
+
}] }); })();
|
|
131
345
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ResourceYamlDisplayComponent, { className: "ResourceYamlDisplayComponent" }); })();
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2NvZGUvcmVzb3VyY2UteWFtbC1kaXNwbGF5L2NvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9jb2RlL3Jlc291cmNlLXlhbWwtZGlzcGxheS90ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixVQUFVLEVBQ1YsR0FBRyxFQUNILG9CQUFvQixHQUNyQixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFFTCxlQUFlLEVBRWYsZUFBZSxHQUNoQixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztJQ25CcEUsd0JBQTRDOzs7SUFEOUMsZ0NBQTJDO0lBQ3pDLDBHQUE0QztJQUM5QyxpQkFBVzs7OztJQURNLGNBQXlCO0lBQXpCLDZDQUF5Qjs7OztJQVVwQyx1Q0FLQzs7SUFEQyw0T0FBaUIsNEJBQXFCLEtBQUM7SUFFdkMsWUFDRjs7SUFBQSxpQkFBZTs7O0lBSmIsZ0VBQTZCO0lBRzdCLGVBQ0Y7SUFERSw2RUFDRjs7OztJQUNBLHVDQU1DOzs7SUFEQyw0T0FBaUIsNEJBQXFCLEtBQUM7SUFFdkMsWUFDRjs7SUFBQSxpQkFBZTs7O0lBSmIsQUFGQSwrREFBNEIsa0RBRUE7SUFHNUIsZUFDRjtJQURFLGlGQUNGOzs7SUF2QkosMENBS0M7O0lBQ0MsZ0NBQXVDO0lBU3JDLEFBUkEsNkdBS0MsZ0dBU0E7O0lBSUwsaUJBQWtCOzs7SUFyQmhCLEFBREEsQUFEQSw0REFBeUIsaUNBQ0EscUNBQ0k7SUFJeEIsZUFBbUI7SUFBbkIsMkNBQW1CO0lBUW5CLGNBQTZCO0lBQTdCLHFEQUE2Qjs7QURvQnRDLE1BQU0sT0FBTyw0QkFBNEI7SUFvQnZDLFlBQTZCLFFBQXlCO1FBQXpCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBbkJ0RCxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkMsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBR3JDLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFHbEIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFHckIsNEJBQXVCLEdBQUcsSUFBSSxDQUFDO1FBVS9CLFVBQUssR0FBRyxhQUFhLENBQUM7WUFDcEIsSUFBSSxDQUFDLFNBQVM7WUFDZCxJQUFJLENBQUMsU0FBUztZQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDM0MsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLDRCQUE0QixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQ3RFLENBQ0YsQ0FBQztRQUVGLGtCQUFhLEdBQUcsZUFBZSxDQUFDO1FBQ2hDLGdCQUFXLEdBQUcsV0FBVyxDQUFDO0lBYitCLENBQUM7SUFlMUQsYUFBYSxDQUFDLEtBQWM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDOzZGQXhDVSw0QkFBNEI7b0VBQTVCLDRCQUE0QjtZQ3JDekMsQUFIQSx1RkFBMkMsaUhBR3JCOzs7WUFITyxBQUFsQixxQ0FBa0Isd0JBQVk7OENEOEJyQyxJQUFJO1lBQ0osV0FBVyx3REFFWCxnQkFBZ0IsMEJBQ2hCLGVBQWUsb0JBQ2YsU0FBUztZQUNULGdCQUFnQjs7QUFzQlQ7SUFEUixlQUFlLEVBQUU7OEJBQ0csVUFBVTsrREFBZTtpRkFsQm5DLDRCQUE0QjtjQWxCeEMsU0FBUzsyQkFDRSwyQkFBMkIsdUJBR2hCLEtBQUssY0FDZCxJQUFJLFdBQ1A7b0JBQ1AsV0FBVztvQkFDWCxJQUFJO29CQUNKLFdBQVc7b0JBQ1gsZUFBZTtvQkFDZixnQkFBZ0I7b0JBQ2hCLGVBQWU7b0JBQ2YsU0FBUztvQkFDVCxnQkFBZ0I7aUJBQ2pCLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNO2dEQVEvQyxVQUFVO2tCQURULEtBQUs7WUFJTixhQUFhO2tCQURaLEtBQUs7WUFJTix1QkFBdUI7a0JBRHRCLEtBQUs7WUFJTixRQUFRO2tCQURQLEtBQUs7WUFJRyxTQUFTO2tGQWxCUCw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2RlRWRpdG9yTW9kdWxlIH0gZnJvbSAnQGFsYXVkYS9jb2RlLWVkaXRvcic7XG5pbXBvcnQgeyBDQVJEX01PRFVMRSwgQ0hFQ0tCT1hfTU9EVUxFIH0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBPYnNlcnZhYmxlLFxuICBtYXAsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgS3ViZXJuZXRlc1Jlc291cmNlLFxuICBZYW1sVXRpbFNlcnZpY2UsXG4gIEFycmF5YWJsZSxcbiAgT2JzZXJ2YWJsZUlucHV0LFxufSBmcm9tICcuLi8uLi9jb3JlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnLi4vLi4vdHJhbnNsYXRlL3RyYW5zbGF0ZS5tb2R1bGUnO1xuaW1wb3J0IHsgdmlld0FjdGlvbnMsIHlhbWxSZWFkT3B0aW9ucyB9IGZyb20gJy4uL2NvZGUtZWRpdG9yLWNvbmZpZ3MnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtcmVzb3VyY2UteWFtbC1kaXNwbGF5JyxcbiAgdGVtcGxhdGVVcmw6ICd0ZW1wbGF0ZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3N0eWxlcy5zY3NzJ10sXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ0FSRF9NT0RVTEUsXG4gICAgTmdJZixcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBDSEVDS0JPWF9NT0RVTEUsXG4gICAgQ29kZUVkaXRvck1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZVlhbWxEaXNwbGF5Q29tcG9uZW50PFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+IHtcbiAgY29uY2lzZSQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcmVkdWNlJCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xuXG4gIEBJbnB1dCgpXG4gIGhhc1dyYXBwZXIgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGNvbmNpc2VFbmFibGUgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIG1hbmFnZUZpZWxkQWN0aW9uRW5hYmxlID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICByZXNvdXJjZTogQXJyYXlhYmxlPFQ+O1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICByZWFkb25seSByZXNvdXJjZSQhOiBPYnNlcnZhYmxlPEFycmF5YWJsZTxUPj47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB5YW1sVXRpbDogWWFtbFV0aWxTZXJ2aWNlKSB7fVxuXG4gIHlhbWwkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5yZXNvdXJjZSQsXG4gICAgdGhpcy5jb25jaXNlJCQsXG4gICAgdGhpcy5yZWR1Y2UkJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW3Jlc291cmNlLCBjb25jaXNlLCByZWR1Y2VdKSA9PlxuICAgICAgdGhpcy55YW1sVXRpbC5nZW5lcmF0ZUZpbHRlcmVkWWFtbFJlc291cmNlKHJlc291cmNlLCBjb25jaXNlLCByZWR1Y2UpLFxuICAgICksXG4gICk7XG5cbiAgZWRpdG9yT3B0aW9ucyA9IHlhbWxSZWFkT3B0aW9ucztcbiAgdmlld0FjdGlvbnMgPSB2aWV3QWN0aW9ucztcblxuICBjb25jaXNlQ2hhbmdlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5jb25jaXNlJCQubmV4dCh2YWx1ZSk7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnJlZHVjZSQkLm5leHQodHJ1ZSk7XG4gICAgfVxuICB9XG59XG4iLCI8YXVpLWNhcmQgKm5nSWY9XCJoYXNXcmFwcGVyOyBlbHNlIGNvbnRlbnRcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIiAvPlxuPC9hdWktY2FyZD5cbjxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgPGF1aS1jb2RlLWVkaXRvclxuICAgIG5hbWU9XCJ5YW1sXCJcbiAgICBbbmdNb2RlbF09XCJ5YW1sJCB8IGFzeW5jXCJcbiAgICBbb3B0aW9uc109XCJlZGl0b3JPcHRpb25zXCJcbiAgICBbYWN0aW9uc0NvbmZpZ109XCJ2aWV3QWN0aW9uc1wiXG4gID5cbiAgICA8bmctY29udGFpbmVyIGF1aUNvZGVFZGl0b3JUb29sYmFyTGVmdD5cbiAgICAgIDxhdWktY2hlY2tib3hcbiAgICAgICAgKm5nSWY9XCJjb25jaXNlRW5hYmxlXCJcbiAgICAgICAgY2xhc3M9XCJhdWktY29kZS1lZGl0b3ItdG9vbGJhcl9fY29udHJvbC1idXR0b25cIlxuICAgICAgICBbbmdNb2RlbF09XCJjb25jaXNlJCQgfCBhc3luY1wiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNvbmNpc2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdwcmV2aWV3X2NvbmNpc2VfeWFtbCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYXVpLWNoZWNrYm94PlxuICAgICAgPGF1aS1jaGVja2JveFxuICAgICAgICAqbmdJZj1cIm1hbmFnZUZpZWxkQWN0aW9uRW5hYmxlXCJcbiAgICAgICAgW2hpZGRlbl09XCJjb25jaXNlJCQgfCBhc3luY1wiXG4gICAgICAgIGNsYXNzPVwiYXVpLWNvZGUtZWRpdG9yLXRvb2xiYXJfX2NvbnRyb2wtYnV0dG9uXCJcbiAgICAgICAgW25nTW9kZWxdPVwicmVkdWNlJCQgfCBhc3luY1wiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInJlZHVjZSQkLm5leHQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdoaWRlX21hbmFnZV9maWVsZHNfZmllbGQnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2F1aS1jaGVja2JveD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9hdWktY29kZS1lZGl0b3I+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
346
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2NvZGUvcmVzb3VyY2UteWFtbC1kaXNwbGF5L2NvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9jb2RlL3Jlc291cmNlLXlhbWwtZGlzcGxheS90ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBRWhCLHFCQUFxQixHQUN0QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCxXQUFXLEVBQ1gsZUFBZSxFQUNmLFlBQVksRUFDWixVQUFVLEVBQ1YsYUFBYSxHQUNkLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUdMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixVQUFVLEVBQ1YsR0FBRyxFQUNILG9CQUFvQixFQUNwQixFQUFFLEVBQ0YsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsT0FBTyxHQUNSLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBSXhFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxF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QUFlLEVBQUU7OEJBQ0csVUFBVTsrREFBZTtBQUdyQztJQURSLGVBQWUsRUFBRTs4QkFDQyxVQUFVOzZEQUF3QjtpRkF0RDFDLDRCQUE0QjtjQXRCeEMsU0FBUzsyQkFDRSwyQkFBMkIsdUJBR2hCLEtBQUssY0FDZCxJQUFJLFdBQ1A7b0JBQ1AsV0FBVztvQkFDWCxJQUFJO29CQUNKLFdBQVc7b0JBQ1gsZUFBZTtvQkFDZixZQUFZO29CQUNaLGdCQUFnQjtvQkFDaEIsZUFBZTtvQkFDZixTQUFTO29CQUNULGdCQUFnQjtvQkFDaEIsNEJBQTRCO29CQUM1QixVQUFVO29CQUNWLGFBQWE7aUJBQ2QsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07MEhBb0IvQyxhQUFhO2tCQURaLFNBQVM7bUJBQUMsZUFBZTtZQUkxQixVQUFVO2tCQURULEtBQUs7WUFJTixhQUFhO2tCQURaLEtBQUs7WUFJTixhQUFhO2tCQURaLEtBQUs7WUFJTix1QkFBdUI7a0JBRHRCLEtBQUs7WUFJTixhQUFhO2tCQURaLEtBQUs7WUFJTixZQUFZO2tCQURYLEtBQUs7WUFJTixhQUFhO2tCQURaLEtBQUs7WUFJTixxQkFBcUI7a0JBRHBCLEtBQUs7WUFJTixNQUFNO2tCQURMLEtBQUs7WUFJTixRQUFRO2tCQURQLEtBQUs7WUFJRyxTQUFTLE1BR1QsT0FBTyxNQUdoQixPQUFPO2tCQUROLEtBQUs7O2tGQXhESyw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb2RlRWRpdG9yTW9kdWxlLFxuICBMYW5ndWFnZVNjaGVtYVNlcnZpY2UsXG4gIE1vbmFjb0xhbmd1YWdlU2VydmljZSxcbn0gZnJvbSAnQGFsYXVkYS9jb2RlLWVkaXRvcic7XG5pbXBvcnQge1xuICBDQVJEX01PRFVMRSxcbiAgQ0hFQ0tCT1hfTU9EVUxFLFxuICBCdXR0b25Nb2R1bGUsXG4gIEljb25Nb2R1bGUsXG4gIFRvb2x0aXBNb2R1bGUsXG59IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIEFmdGVyVmlld0luaXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGVkaXRvciB9IGZyb20gJ21vbmFjby1lZGl0b3IvZXNtL3ZzL2VkaXRvci9lZGl0b3IuYXBpJztcbmltcG9ydCB7IHlhbWxEZWZhdWx0cywgc2V0RGlhZ25vc3RpY3NPcHRpb25zIH0gZnJvbSAnbW9uYWNvLXlhbWwnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBPYnNlcnZhYmxlLFxuICBtYXAsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBvZixcbiAgc3dpdGNoTWFwLFxuICBzaGFyZVJlcGxheSxcbiAgdGFrZVVudGlsLFxuICBTdWJqZWN0LFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgS3ViZXJuZXRlc1NjaGVtYVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2t1YmVybmV0ZXMtc2NoZW1hLnNlcnZpY2UnO1xuaW1wb3J0IHsgWWFtbFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy95YW1sLXV0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBBcnJheWFibGUgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL2hlbHBlcnMnO1xuaW1wb3J0IHsgS3ViZXJuZXRlc1Jlc291cmNlIH0gZnJvbSAnLi4vLi4vY29yZS90eXBlcy9rOHMvY29yZSc7XG5pbXBvcnQgeyBPcGVuQVBJVjNTY2hlbWFPYmplY3QgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL3NjaGVtYSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlSW5wdXQgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnLi4vLi4vdHJhbnNsYXRlL3RyYW5zbGF0ZS5tb2R1bGUnO1xuaW1wb3J0IHtcbiAgdmlld0FjdGlvbnMsXG4gIHlhbWxSZWFkTWluaW1hcE9wdGlvbnMsXG4gIHlhbWxSZWFkT3B0aW9ucyxcbn0gZnJvbSAnLi4vY29kZS1lZGl0b3ItY29uZmlncyc7XG5pbXBvcnQge1xuICBmb2xkTWFuYWdlZEZpZWxkcyxcbiAgRWRpdG9ySW5zdGFuY2VQcm92aWRlcixcbn0gZnJvbSAnLi4vbWFuYWdlZC1maWVsZHMtZm9sZGVyLnV0aWwnO1xuaW1wb3J0IHsgUmVzb3VyY2VZYW1sU2lkZWJhckNvbXBvbmVudCB9IGZyb20gJy4uL3lhbWwtc2lkZWJhci9jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtcmVzb3VyY2UteWFtbC1kaXNwbGF5JyxcbiAgdGVtcGxhdGVVcmw6ICd0ZW1wbGF0ZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3N0eWxlcy5zY3NzJ10sXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ0FSRF9NT0RVTEUsXG4gICAgTmdJZixcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBDSEVDS0JPWF9NT0RVTEUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIENvZGVFZGl0b3JNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIFJlc291cmNlWWFtbFNpZGViYXJDb21wb25lbnQsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VZYW1sRGlzcGxheUNvbXBvbmVudDxUIGV4dGVuZHMgS3ViZXJuZXRlc1Jlc291cmNlPlxuICBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgRWRpdG9ySW5zdGFuY2VQcm92aWRlclxue1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgY29uY2lzZSQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcmVkdWNlJCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBzaG93U2lkZWJhciQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgc2hvd0RlYnVnUGFuZWwkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIG1vZGVsVXJpOiBzdHJpbmc7XG4gIHByaXZhdGUgeWFtbFNjaGVtYVNlcnZpY2U6IExhbmd1YWdlU2NoZW1hU2VydmljZTtcbiAgcHJpdmF0ZSBtb25hY29FZGl0b3I6IGVkaXRvci5JU3RhbmRhbG9uZUNvZGVFZGl0b3IgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSByZWdpc3RlcmVkU2NoZW1hcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvZGVFZGl0b3JSZWYnKVxuICBjb2RlRWRpdG9yUmVmITogeyBlZGl0b3I6IGVkaXRvci5JU3RhbmRhbG9uZUNvZGVFZGl0b3IgfTtcblxuICBASW5wdXQoKVxuICBoYXNXcmFwcGVyID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBzaG93RGVidWdJbmZvID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgY29uY2lzZUVuYWJsZSA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgbWFuYWdlRmllbGRBY3Rpb25FbmFibGUgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHNpZGViYXJFbmFibGUgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHNjaGVtYUVuYWJsZSA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgZXhhbXBsZUVuYWJsZSA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgYXV0b0ZvbGRNYW5hZ2VkRmllbGRzID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBzY2hlbWE6IE9wZW5BUElWM1NjaGVtYU9iamVjdDtcblxuICBASW5wdXQoKVxuICByZXNvdXJjZTogQXJyYXlhYmxlPFQ+O1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICByZWFkb25seSByZXNvdXJjZSQhOiBPYnNlcnZhYmxlPEFycmF5YWJsZTxUPj47XG5cbiAgQE9ic2VydmFibGVJbnB1dCgpXG4gIHJlYWRvbmx5IHNjaGVtYSQhOiBPYnNlcnZhYmxlPE9wZW5BUElWM1NjaGVtYU9iamVjdD47XG5cbiAgQElucHV0KClcbiAgbWluaW1hcCA9IHRydWU7XG5cbiAgeWFtbFJlYWRNaW5pbWFwT3B0aW9ucyA9IHlhbWxSZWFkTWluaW1hcE9wdGlvbnM7XG4gIHlhbWxSZWFkT3B0aW9ucyA9IHlhbWxSZWFkT3B0aW9ucztcblxuICBoYXNGb2xkZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICog6Ieq5Yqo6I635Y+W55qEIHNjaGVtYe+8jOW9k+ayoeacieaJi+WKqOaPkOS+myBzY2hlbWEg5pe25L2/55SoXG4gICAqL1xuICBhdXRvU2NoZW1hJCA9IHRoaXMucmVzb3VyY2UkLnBpcGUoXG4gICAgc3dpdGNoTWFwKHJlc291cmNlID0+IHtcbiAgICAgIGlmICghcmVzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmaXJzdFJlc291cmNlID0gKFxuICAgICAgICBBcnJheS5pc0FycmF5KHJlc291cmNlKSA/IHJlc291cmNlWzBdIDogcmVzb3VyY2VcbiAgICAgICkgYXMgVDtcbiAgICAgIGlmICghZmlyc3RSZXNvdXJjZT8uYXBpVmVyc2lvbiB8fCAhZmlyc3RSZXNvdXJjZT8ua2luZCkge1xuICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnNjaGVtYVNlcnZpY2UuZ2V0UmVzb3VyY2VTY2hlbWEoXG4gICAgICAgIGZpcnN0UmVzb3VyY2UuYXBpVmVyc2lvbixcbiAgICAgICAgZmlyc3RSZXNvdXJjZS5raW5kLFxuICAgICAgKTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgKTtcblxuICAvKipcbiAgICog5pyA57uI5L2/55So55qEIHNjaGVtYe+8jOS8mOWFiOS9v+eUqOaJi+WKqOaPkOS+m+eahO+8jOWQpuWImeS9v+eUqOiHquWKqOiOt+WPlueahFxuICAgKi9cbiAgZmluYWxTY2hlbWEkID0gY29tYmluZUxhdGVzdChbdGhpcy5zY2hlbWEkLCB0aGlzLmF1dG9TY2hlbWEkXSkucGlwZShcbiAgICBtYXAoKFttYW51YWxTY2hlbWEsIGF1dG9TY2hlbWFdKSA9PiBtYW51YWxTY2hlbWEgfHwgYXV0b1NjaGVtYSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgeWFtbFV0aWw6IFlhbWxVdGlsU2VydmljZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2NoZW1hU2VydmljZTogS3ViZXJuZXRlc1NjaGVtYVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtb25hY29MYW5ndWFnZVNlcnZpY2U6IE1vbmFjb0xhbmd1YWdlU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy55YW1sU2NoZW1hU2VydmljZSA9XG4gICAgICB0aGlzLm1vbmFjb0xhbmd1YWdlU2VydmljZS5nZXRMYW5ndWFnZVNjaGVtYVNlcnZpY2UoXG4gICAgICAgIFsneWFtbCcsICd5YW1sRGVmYXVsdHMnXSxcbiAgICAgICAgeWFtbERlZmF1bHRzLFxuICAgICAgKTtcblxuICAgIC8vIOWQr+eUqCBZQU1MIOivreazleaPkOekuuWKn+iDvVxuICAgIHNldERpYWdub3N0aWNzT3B0aW9ucyh7XG4gICAgICB2YWxpZGF0ZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogdHJ1ZSxcbiAgICAgIGNvbXBsZXRpb246IHRydWUsXG4gICAgICBob3ZlcjogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIOiHquWKqOiuvue9riBzY2hlbWFcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnJlc291cmNlJCwgdGhpcy5maW5hbFNjaGVtYSRdKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoW3Jlc291cmNlLCBzY2hlbWFdKSA9PiB7XG4gICAgICAgIGlmIChyZXNvdXJjZSAmJiBzY2hlbWEpIHtcbiAgICAgICAgICBjb25zdCBmaXJzdFJlc291cmNlID0gQXJyYXkuaXNBcnJheShyZXNvdXJjZSlcbiAgICAgICAgICAgID8gcmVzb3VyY2VbMF1cbiAgICAgICAgICAgIDogcmVzb3VyY2U7XG4gICAgICAgICAgaWYgKGZpcnN0UmVzb3VyY2UgJiYgIUFycmF5LmlzQXJyYXkoZmlyc3RSZXNvdXJjZSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0WWFtbFNjaGVtYShmaXJzdFJlc291cmNlIGFzIFQsIHNjaGVtYSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuZmluYWxTY2hlbWEkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHlhbWwkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5yZXNvdXJjZSQsXG4gICAgdGhpcy5jb25jaXNlJCQsXG4gICAgdGhpcy5yZWR1Y2UkJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW3Jlc291cmNlLCBjb25jaXNlLCByZWR1Y2VdKSA9PlxuICAgICAgdGhpcy55YW1sVXRpbC5nZW5lcmF0ZUZpbHRlcmVkWWFtbFJlc291cmNlKHJlc291cmNlLCBjb25jaXNlLCByZWR1Y2UpLFxuICAgICksXG4gICk7XG5cbiAgZ2V0IGVkaXRvck9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWluaW1hcCA/IHlhbWxSZWFkTWluaW1hcE9wdGlvbnMgOiB5YW1sUmVhZE9wdGlvbnM7XG4gIH1cblxuICB2aWV3QWN0aW9ucyA9IHZpZXdBY3Rpb25zO1xuXG4gIGNvbmNpc2VDaGFuZ2UodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNvbmNpc2UkJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHRvZ2dsZVNpZGViYXIoKSB7XG4gICAgdGhpcy5zaG93U2lkZWJhciQkLm5leHQoIXRoaXMuc2hvd1NpZGViYXIkJC52YWx1ZSk7XG4gIH1cblxuICB0b2dnbGVEZWJ1Z0luZm8oKSB7XG4gICAgdGhpcy5zaG93RGVidWdQYW5lbCQkLm5leHQoIXRoaXMuc2hvd0RlYnVnUGFuZWwkJC52YWx1ZSk7XG4gIH1cblxuICBnZXRDdXJyZW50UmVzb3VyY2UoKTogVCB8IG51bGwge1xuICAgIGNvbnN0IHJlc291cmNlID0gdGhpcy5yZXNvdXJjZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZXNvdXJjZSkpIHtcbiAgICAgIHJldHVybiByZXNvdXJjZS5sZW5ndGggPiAwID8gcmVzb3VyY2VbMF0gOiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gKHJlc291cmNlIGFzIFQpIHx8IG51bGw7XG4gIH1cblxuICBnZXRDdXJyZW50U2NoZW1hKCk6IE9wZW5BUElWM1NjaGVtYU9iamVjdCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnNjaGVtYSB8fCBudWxsO1xuICB9XG5cbiAgc2VsZkZvbGRNYW5hZ2VkRmllbGRzKCkge1xuICAgIGlmICh0aGlzLmhhc0ZvbGRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmhhc0ZvbGRlZCA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmdldEVkaXRvckluc3RhbmNlKCk7XG4gICAgICBpZiAoZWRpdG9yKSB7XG4gICAgICAgIGZvbGRNYW5hZ2VkRmllbGRzKGVkaXRvcik7XG4gICAgICB9XG4gICAgfSwgNTApO1xuICB9XG5cbiAgLyoqXG4gICAqIOiuvue9riBZQU1MIHNjaGVtYSDku6Xmj5DkvpsgaG92ZXIg5o+Q56S65ZKM6Ieq5Yqo5a6M5oiQXG4gICAqL1xuICBzZXRZYW1sU2NoZW1hKHJlc291cmNlOiBULCBzY2hlbWE6IE9wZW5BUElWM1NjaGVtYU9iamVjdCkge1xuICAgIGlmICghc2NoZW1hKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8g5L2/55SoIGFwaVZlcnNpb24gKyBraW5kIOe7hOWQiOS9nOS4uuagh+ivhlxuICAgIGNvbnN0IGFwaVZlcnNpb24gPSByZXNvdXJjZT8uYXBpVmVyc2lvbiB8fCAndW5rbm93bic7XG4gICAgY29uc3Qga2luZCA9IHJlc291cmNlPy5raW5kIHx8ICd1bmtub3duJztcbiAgICBjb25zdCBzY2hlbWFLZXkgPSBgJHthcGlWZXJzaW9ufS8ke2tpbmR9YDtcblxuICAgIHRoaXMubW9kZWxVcmkgPSBgJHtzY2hlbWFLZXl9LnlhbWxgO1xuXG4gICAgdGhpcy5zZWxmRm9sZE1hbmFnZWRGaWVsZHMoKTtcblxuICAgIC8vIOajgOafpeaYr+WQpuW3sue7j+azqOWGjOi/h+ebuOWQjOeahCBzY2hlbWHvvIzpgb/lhY3ph43lpI3ms6jlhoxcbiAgICBpZiAodGhpcy5yZWdpc3RlcmVkU2NoZW1hcy5oYXMoc2NoZW1hS2V5KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIOiOt+WPluWujOaVtOeahCBkZWZpbml0aW9ucyDku6XmlK/mjIEgJHJlZiDlvJXnlKhcbiAgICBjb25zdCBkZWZpbml0aW9ucyA9IHRoaXMuc2NoZW1hU2VydmljZS5kZWZpbml0aW9ucyB8fCB7fTtcblxuICAgIC8vIOWIm+W7uuWMheWQq+WujOaVtCBkZWZpbml0aW9ucyDnmoQgc2NoZW1hIOWvueixoVxuICAgIGNvbnN0IGZ1bGxTY2hlbWEgPSB7XG4gICAgICAuLi5zY2hlbWEsXG4gICAgICBkZWZpbml0aW9ucyxcbiAgICB9O1xuXG4gICAgLy8g56Gu5L+dc2NoZW1h6KKr5q2j56Gu5rOo5YaM77yM5bm25ZCv55So6Ieq5Yqo5a6M5oiQ5Yqf6IO9XG4gICAgdGhpcy55YW1sU2NoZW1hU2VydmljZS5hZGRTY2hlbWEoe1xuICAgICAgdXJpOiBgazhzOi8vJHtzY2hlbWFLZXl9LnNjaGVtYS5qc29uYCxcbiAgICAgIGZpbGVNYXRjaDogW3RoaXMubW9kZWxVcmldLFxuICAgICAgc2NoZW1hOiBmdWxsU2NoZW1hLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yZWdpc3RlcmVkU2NoZW1hcy5hZGQoc2NoZW1hS2V5KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5hdXRvRm9sZE1hbmFnZWRGaWVsZHMgJiYgdGhpcy5zY2hlbWFTZXJ2aWNlLmRlZmluaXRpb25zKSB7XG4gICAgICB0aGlzLnNlbGZGb2xkTWFuYWdlZEZpZWxkcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5YgTW9uYWNvIEVkaXRvciDlrp7kvotcbiAgICovXG4gIGdldEVkaXRvckluc3RhbmNlKCk6IGVkaXRvci5JU3RhbmRhbG9uZUNvZGVFZGl0b3IgfCBudWxsIHtcbiAgICBpZiAodGhpcy5jb2RlRWRpdG9yUmVmICYmICF0aGlzLm1vbmFjb0VkaXRvcikge1xuICAgICAgLy8g5bCd6K+V5LuOIFZpZXdDaGlsZCDojrflj5bnvJbovpHlmajlrp7kvotcbiAgICAgIGNvbnN0IGVkaXRvckNvbXBvbmVudCA9IHRoaXMuY29kZUVkaXRvclJlZjtcbiAgICAgIGlmIChlZGl0b3JDb21wb25lbnQuZWRpdG9yKSB7XG4gICAgICAgIHRoaXMubW9uYWNvRWRpdG9yID0gZWRpdG9yQ29tcG9uZW50LmVkaXRvcjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubW9uYWNvRWRpdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIOiHquWKqOaKmOWPoCBtYW5hZ2VkRmllbGRzIOWtl+autVxuICAgKi9cbiAgZm9sZE1hbmFnZWRGaWVsZHMoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5nZXRFZGl0b3JJbnN0YW5jZSgpO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIGZvbGRNYW5hZ2VkRmllbGRzKGVkaXRvcik7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIHRoaXMubW9uYWNvRWRpdG9yID0gbnVsbDtcbiAgfVxufVxuIiwiPGF1aS1jYXJkICpuZ0lmPVwiaGFzV3JhcHBlcjsgZWxzZSBjb250ZW50XCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCIgLz5cbjwvYXVpLWNhcmQ+XG48bmctdGVtcGxhdGUgI2NvbnRlbnQ+XG4gIDxkaXZcbiAgICBjbGFzcz1cInlhbWwtZGlzcGxheS1jb250YWluZXJcIlxuICAgIFtjbGFzcy53aXRoLXNpZGViYXJdPVwic2hvd1NpZGViYXIkJCB8IGFzeW5jXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJ5YW1sLWVkaXRvci1zZWN0aW9uXCI+XG4gICAgICA8YXVpLWNvZGUtZWRpdG9yXG4gICAgICAgICNjb2RlRWRpdG9yUmVmXG4gICAgICAgIG5hbWU9XCJ5YW1sXCJcbiAgICAgICAgW25nTW9kZWxdPVwieWFtbCQgfCBhc3luY1wiXG4gICAgICAgIFtvcHRpb25zXT1cImVkaXRvck9wdGlvbnNcIlxuICAgICAgICBbYWN0aW9uc0NvbmZpZ109XCJ2aWV3QWN0aW9uc1wiXG4gICAgICAgIFttb2RlbFVyaV09XCJtb2RlbFVyaVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgYXVpQ29kZUVkaXRvclRvb2xiYXJMZWZ0PlxuICAgICAgICAgIDxhdWktY2hlY2tib3hcbiAgICAgICAgICAgICpuZ0lmPVwiY29uY2lzZUVuYWJsZVwiXG4gICAgICAgICAgICBjbGFzcz1cImF1aS1jb2RlLWVkaXRvci10b29sYmFyX19jb250cm9sLWJ1dHRvblwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJjb25jaXNlJCQgfCBhc3luY1wiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjb25jaXNlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdwcmV2aWV3X2NvbmNpc2VfeWFtbCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2F1aS1jaGVja2JveD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgYXVpQ29kZUVkaXRvclRvb2xiYXJSaWdodFNpZGU+XG4gICAgICAgICAgPCEtLSBTY2hlbWEg5oyJ6ZKu77ya5b2T5ZCv55So5L6n6L655qCP5pe25pi+56S6IC0tPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGF1aUJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJzaWRlYmFyRW5hYmxlXCJcbiAgICAgICAgICAgIFtoaWRkZW5dPVwiISFjb2RlRWRpdG9yUmVmLmZ1bGxzY3JlZW5EaWFsb2dcIlxuICAgICAgICAgICAgY2xhc3M9XCJhdWktY29kZS1lZGl0b3ItdG9vbGJhcl9fY29udHJvbC1idXR0b25cIlxuICAgICAgICAgICAgW3R5cGVdPVwiKHNob3dTaWRlYmFyJCQgfCBhc3luYykgPyAncHJpbWFyeScgOiAndGV4dCdcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEoZmluYWxTY2hlbWEkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2lkZWJhcigpXCJcbiAgICAgICAgICAgIFthdWlUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAoKHNob3dTaWRlYmFyJCQgfCBhc3luYykgPyAnaGlkZV9zaWRlYmFyJyA6ICd2aWV3X3NpZGViYXInKVxuICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhdWktaWNvblxuICAgICAgICAgICAgICBbaWNvbl09XCJcbiAgICAgICAgICAgICAgICAoc2hvd1NpZGViYXIkJCB8IGFzeW5jKVxuICAgICAgICAgICAgICAgICAgPyAncHJvZDpleHBhbmRfc2lkZWJhcidcbiAgICAgICAgICAgICAgICAgIDogJ3Byb2Q6Y29sbGFwc2Vfc2lkZWJhcidcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L2F1aS1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYXVpLWNvZGUtZWRpdG9yPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ5YW1sLXNpZGViYXItc2VjdGlvblwiXG4gICAgICAqbmdJZj1cInNob3dTaWRlYmFyJCQgfCBhc3luY1wiXG4gICAgPlxuICAgICAgPGFjbC1yZXNvdXJjZS15YW1sLXNpZGViYXJcbiAgICAgICAgW3Jlc291cmNlXT1cImdldEN1cnJlbnRSZXNvdXJjZSgpXCJcbiAgICAgICAgW3NjaGVtYV09XCJmaW5hbFNjaGVtYSQgfCBhc3luY1wiXG4gICAgICAgIChjbG9zZSk9XCJ0b2dnbGVTaWRlYmFyKClcIlxuICAgICAgICBbc2NoZW1hRW5hYmxlXT1cInNjaGVtYUVuYWJsZVwiXG4gICAgICAgIFtleGFtcGxlRW5hYmxlXT1cImZhbHNlXCJcbiAgICAgID48L2FjbC1yZXNvdXJjZS15YW1sLXNpZGViYXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|