@acorex/modules 18.0.14 → 18.0.16
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/application-management/index.d.ts +10 -0
- package/application-management/lib/application-management-mock-data.d.ts +75 -0
- package/application-management/lib/application-management.module.d.ts +11 -2
- package/application-management/lib/application-management.service.d.ts +23 -0
- package/application-management/lib/entities/application-module.entity.d.ts +3 -0
- package/application-management/lib/entities/applications.entity.d.ts +3 -0
- package/application-management/lib/entities/edition.entity.d.ts +3 -0
- package/application-management/lib/entities/entity.entity.d.ts +3 -0
- package/application-management/lib/entities/feature.entity.d.ts +3 -0
- package/application-management/lib/entities/modules.entity.d.ts +3 -0
- package/application-management/lib/entities/permission.entity.d.ts +3 -0
- package/application-management/lib/entities/property.entity.d.ts +3 -0
- package/application-management/lib/module-designer/module-designer.component.d.ts +18 -0
- package/application-management/lib/module-designer/module-designer.service.d.ts +34 -0
- package/auth/lib/error-handler.d.ts +1 -1
- package/backend/lib/data/api/comment.service.d.ts +15 -0
- package/backend/lib/data/api/module-designer.service.d.ts +43 -0
- package/backend/lib/data/index.d.ts +2 -1
- package/backend/lib/data/local/local-data-provider.d.ts +1 -2
- package/esm2022/application-management/index.mjs +11 -1
- package/esm2022/application-management/lib/application-management-mock-data.mjs +89 -0
- package/esm2022/application-management/lib/application-management.module.mjs +56 -7
- package/esm2022/application-management/lib/application-management.service.mjs +66 -0
- package/esm2022/application-management/lib/entities/application-module.entity.mjs +273 -0
- package/esm2022/application-management/lib/entities/applications.entity.mjs +311 -0
- package/esm2022/application-management/lib/entities/edition.entity.mjs +284 -0
- package/esm2022/application-management/lib/entities/entity.entity.mjs +284 -0
- package/esm2022/application-management/lib/entities/feature.entity.mjs +284 -0
- package/esm2022/application-management/lib/entities/modules.entity.mjs +324 -0
- package/esm2022/application-management/lib/entities/permission.entity.mjs +284 -0
- package/esm2022/application-management/lib/entities/property.entity.mjs +449 -0
- package/esm2022/application-management/lib/module-designer/module-designer.component.mjs +91 -0
- package/esm2022/application-management/lib/module-designer/module-designer.service.mjs +3 -0
- package/esm2022/auth/lib/account/account.module.mjs +1 -6
- package/esm2022/auth/lib/error-handler.mjs +6 -6
- package/esm2022/backend/lib/auth/oidc/oidc.strategy.mjs +2 -3
- package/esm2022/backend/lib/backend.module.mjs +23 -5
- package/esm2022/backend/lib/data/api/comment.service.mjs +48 -0
- package/esm2022/backend/lib/data/api/data-provider.mjs +6 -4
- package/esm2022/backend/lib/data/api/module-designer.service.mjs +95 -0
- package/esm2022/backend/lib/data/index.mjs +3 -2
- package/esm2022/backend/lib/data/local/local-data-provider.mjs +2 -2
- package/esm2022/form-management/acorex-modules-form-management.mjs +5 -0
- package/esm2022/form-management/index.mjs +2 -0
- package/esm2022/form-management/lib/designer/designer.page.mjs +24 -0
- package/esm2022/form-management/lib/form-management.module.mjs +29 -0
- package/fesm2022/acorex-modules-application-management-module-designer.component-KlwqCJCF.mjs +100 -0
- package/fesm2022/acorex-modules-application-management-module-designer.component-KlwqCJCF.mjs.map +1 -0
- package/fesm2022/acorex-modules-application-management.mjs +2693 -7
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-DDSvztIU.mjs → acorex-modules-auth-acorex-modules-auth-D09VaQPe.mjs} +12 -17
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-D09VaQPe.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-app-chooser.component-CQ87lFLo.mjs → acorex-modules-auth-app-chooser.component-DN1ZJiZs.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-app-chooser.component-CQ87lFLo.mjs.map → acorex-modules-auth-app-chooser.component-DN1ZJiZs.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-Ceocgnz0.mjs → acorex-modules-auth-login.module-CGA5aTg2.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-login.module-Ceocgnz0.mjs.map → acorex-modules-auth-login.module-CGA5aTg2.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-D30jFVFm.mjs → acorex-modules-auth-master.layout-ZJWzjLrb.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-D30jFVFm.mjs.map → acorex-modules-auth-master.layout-ZJWzjLrb.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-DvmIgK3z.mjs → acorex-modules-auth-password.component-C4yqf342.mjs} +3 -3
- package/fesm2022/{acorex-modules-auth-password.component-DvmIgK3z.mjs.map → acorex-modules-auth-password.component-C4yqf342.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-QQakXucW.mjs → acorex-modules-auth-password.component-MJhNk3UI.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-QQakXucW.mjs.map → acorex-modules-auth-password.component-MJhNk3UI.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-routes-Bu1uHALz.mjs → acorex-modules-auth-routes-DhORV1Js.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-Bu1uHALz.mjs.map → acorex-modules-auth-routes-DhORV1Js.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-CEcPMx4l.mjs → acorex-modules-auth-two-factor.module-BWKP0_jO.mjs} +3 -3
- package/fesm2022/{acorex-modules-auth-two-factor.module-CEcPMx4l.mjs.map → acorex-modules-auth-two-factor.module-BWKP0_jO.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +4 -4
- package/fesm2022/acorex-modules-backend.mjs +159 -141
- package/fesm2022/acorex-modules-backend.mjs.map +1 -1
- package/fesm2022/acorex-modules-form-management-designer.page-SoPH2V7i.mjs +27 -0
- package/fesm2022/acorex-modules-form-management-designer.page-SoPH2V7i.mjs.map +1 -0
- package/fesm2022/acorex-modules-form-management.mjs +36 -0
- package/fesm2022/acorex-modules-form-management.mjs.map +1 -0
- package/form-management/README.md +4 -0
- package/form-management/index.d.ts +1 -0
- package/form-management/lib/designer/designer.page.d.ts +5 -0
- package/form-management/lib/form-management.module.d.ts +7 -0
- package/package.json +6 -6
- package/backend/lib/data/local/data-Conditioner.d.ts +0 -6
- package/esm2022/backend/lib/data/local/data-Conditioner.mjs +0 -138
- package/esm2022/log-management/acorex-modules-log-management.mjs +0 -5
- package/esm2022/log-management/index.mjs +0 -3
- package/esm2022/log-management/lib/audit-logs.entity.mjs +0 -391
- package/esm2022/log-management/lib/log-management.module.mjs +0 -16
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-DDSvztIU.mjs.map +0 -1
- package/fesm2022/acorex-modules-log-management.mjs +0 -414
- package/fesm2022/acorex-modules-log-management.mjs.map +0 -1
- package/log-management/README.md +0 -4
- package/log-management/index.d.ts +0 -2
- package/log-management/lib/audit-logs.entity.d.ts +0 -3
- package/log-management/lib/log-management.module.d.ts +0 -6
@@ -0,0 +1,449 @@
|
|
1
|
+
import { AXPDataGenerator, AXPEntityCommandScope, AXPEntityQueryType } from '@acorex/platform/common';
|
2
|
+
import { applyFilterArray, applySortArray } from '@acorex/platform/core';
|
3
|
+
import { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';
|
4
|
+
import { AXPApplicationManagementService } from '../application-management.service';
|
5
|
+
export async function propertyEntityFactory(injector) {
|
6
|
+
const dataService = injector.get(AXPApplicationManagementService);
|
7
|
+
const entityDef = {
|
8
|
+
module: 'application-management',
|
9
|
+
name: 'property',
|
10
|
+
source: 'application-management.property',
|
11
|
+
title: 'Properties',
|
12
|
+
formats: {
|
13
|
+
individual: 'Property',
|
14
|
+
plural: 'Properties',
|
15
|
+
},
|
16
|
+
relatedEntities: [],
|
17
|
+
groups: [
|
18
|
+
{
|
19
|
+
id: 'property',
|
20
|
+
title: 'Property',
|
21
|
+
},
|
22
|
+
{
|
23
|
+
id: 'schema',
|
24
|
+
title: 'Schema',
|
25
|
+
},
|
26
|
+
{
|
27
|
+
id: 'interface',
|
28
|
+
title: 'Interface',
|
29
|
+
},
|
30
|
+
],
|
31
|
+
properties: [
|
32
|
+
{
|
33
|
+
name: 'name',
|
34
|
+
title: 'Name',
|
35
|
+
groupId: 'property',
|
36
|
+
schema: {
|
37
|
+
dataType: 'string',
|
38
|
+
interface: {
|
39
|
+
type: AXPWidgetsCatalog.text,
|
40
|
+
},
|
41
|
+
},
|
42
|
+
},
|
43
|
+
{
|
44
|
+
name: 'title',
|
45
|
+
title: 'Title',
|
46
|
+
groupId: 'property',
|
47
|
+
schema: {
|
48
|
+
dataType: 'string',
|
49
|
+
interface: {
|
50
|
+
type: AXPWidgetsCatalog.text,
|
51
|
+
},
|
52
|
+
},
|
53
|
+
},
|
54
|
+
{
|
55
|
+
name: 'groupId',
|
56
|
+
title: 'group Id',
|
57
|
+
groupId: 'property',
|
58
|
+
schema: {
|
59
|
+
dataType: 'string',
|
60
|
+
interface: {
|
61
|
+
type: AXPWidgetsCatalog.text,
|
62
|
+
},
|
63
|
+
},
|
64
|
+
},
|
65
|
+
{
|
66
|
+
name: 'schema.dataType',
|
67
|
+
title: 'Data Type',
|
68
|
+
groupId: 'schema',
|
69
|
+
schema: {
|
70
|
+
dataType: 'string',
|
71
|
+
interface: {
|
72
|
+
type: AXPWidgetsCatalog.text,
|
73
|
+
},
|
74
|
+
},
|
75
|
+
},
|
76
|
+
{
|
77
|
+
name: 'schema.defaultValue',
|
78
|
+
title: 'Default Value',
|
79
|
+
groupId: 'schema',
|
80
|
+
schema: {
|
81
|
+
dataType: 'string',
|
82
|
+
interface: {
|
83
|
+
type: AXPWidgetsCatalog.text,
|
84
|
+
},
|
85
|
+
},
|
86
|
+
},
|
87
|
+
{
|
88
|
+
name: 'schema.nullable',
|
89
|
+
title: 'Nullable',
|
90
|
+
groupId: 'schema',
|
91
|
+
schema: {
|
92
|
+
dataType: 'boolean',
|
93
|
+
interface: {
|
94
|
+
type: AXPWidgetsCatalog.toggle,
|
95
|
+
},
|
96
|
+
},
|
97
|
+
},
|
98
|
+
{
|
99
|
+
name: 'schema.interface.type',
|
100
|
+
title: 'Data Type',
|
101
|
+
groupId: 'interface',
|
102
|
+
schema: {
|
103
|
+
dataType: 'string',
|
104
|
+
interface: {
|
105
|
+
type: AXPWidgetsCatalog.select,
|
106
|
+
options: {
|
107
|
+
dataSource: Object.values(AXPWidgetsCatalog),
|
108
|
+
},
|
109
|
+
},
|
110
|
+
},
|
111
|
+
},
|
112
|
+
],
|
113
|
+
columns: [
|
114
|
+
{ name: 'name' },
|
115
|
+
{ name: 'title' },
|
116
|
+
{ name: 'groupId' },
|
117
|
+
{ name: 'schema.dataType' },
|
118
|
+
{ name: 'schema.defaultValue' },
|
119
|
+
{ name: 'schema.defaultValue' },
|
120
|
+
{ name: 'schema.nullable' },
|
121
|
+
{ name: 'schema.interface.type' },
|
122
|
+
],
|
123
|
+
commands: {
|
124
|
+
create: {
|
125
|
+
execute: async (data) => {
|
126
|
+
const entity = Object.assign(data, { id: AXPDataGenerator.uuid() });
|
127
|
+
dataService.propertyDataProvider.insertOne(entity);
|
128
|
+
return Promise.resolve(entity);
|
129
|
+
},
|
130
|
+
},
|
131
|
+
delete: {
|
132
|
+
execute: async (id) => {
|
133
|
+
await await dataService.propertyDataProvider.deleteOne(id);
|
134
|
+
return Promise.resolve();
|
135
|
+
},
|
136
|
+
},
|
137
|
+
update: {
|
138
|
+
execute: async (data) => {
|
139
|
+
return new Promise((resolve) => {
|
140
|
+
setTimeout(async () => {
|
141
|
+
await dataService.propertyDataProvider.updateOne(data.id, data);
|
142
|
+
resolve(data);
|
143
|
+
}, 1000);
|
144
|
+
});
|
145
|
+
},
|
146
|
+
},
|
147
|
+
},
|
148
|
+
queries: {
|
149
|
+
byKey: {
|
150
|
+
execute: async (id) => {
|
151
|
+
return new Promise((resolve) => {
|
152
|
+
setTimeout(async () => {
|
153
|
+
const entity = await dataService.propertyDataProvider.getOne(id);
|
154
|
+
resolve(entity);
|
155
|
+
}, 500);
|
156
|
+
});
|
157
|
+
},
|
158
|
+
type: AXPEntityQueryType.Single,
|
159
|
+
},
|
160
|
+
list: {
|
161
|
+
execute: async (e) => {
|
162
|
+
const list = await dataService.propertyDataProvider.getAll();
|
163
|
+
const sortedItems = applySortArray(list, e.sort);
|
164
|
+
const filteredItems = applyFilterArray(sortedItems, e.filter ? [e.filter] : []);
|
165
|
+
return Promise.resolve({
|
166
|
+
total: filteredItems.length,
|
167
|
+
items: filteredItems.slice(e.skip, (e.skip ?? 0) + (e.take ?? 0)),
|
168
|
+
});
|
169
|
+
},
|
170
|
+
type: AXPEntityQueryType.List,
|
171
|
+
},
|
172
|
+
},
|
173
|
+
interfaces: {
|
174
|
+
master: {
|
175
|
+
create: {
|
176
|
+
sections: [
|
177
|
+
{
|
178
|
+
id: 'property',
|
179
|
+
},
|
180
|
+
{
|
181
|
+
id: 'schema',
|
182
|
+
},
|
183
|
+
{
|
184
|
+
id: 'interface',
|
185
|
+
},
|
186
|
+
],
|
187
|
+
properties: [
|
188
|
+
{
|
189
|
+
name: 'name',
|
190
|
+
layout: {
|
191
|
+
positions: {
|
192
|
+
lg: {
|
193
|
+
colSpan: 6,
|
194
|
+
},
|
195
|
+
},
|
196
|
+
},
|
197
|
+
},
|
198
|
+
{
|
199
|
+
name: 'title',
|
200
|
+
layout: {
|
201
|
+
positions: {
|
202
|
+
lg: {
|
203
|
+
colSpan: 6,
|
204
|
+
},
|
205
|
+
},
|
206
|
+
},
|
207
|
+
},
|
208
|
+
{
|
209
|
+
name: 'groupId',
|
210
|
+
layout: {
|
211
|
+
positions: {
|
212
|
+
lg: {
|
213
|
+
colSpan: 12,
|
214
|
+
},
|
215
|
+
},
|
216
|
+
},
|
217
|
+
},
|
218
|
+
{
|
219
|
+
name: 'schema.defaultValue',
|
220
|
+
layout: {
|
221
|
+
positions: {
|
222
|
+
lg: {
|
223
|
+
colSpan: 6,
|
224
|
+
},
|
225
|
+
},
|
226
|
+
},
|
227
|
+
},
|
228
|
+
{
|
229
|
+
name: 'schema.nullable',
|
230
|
+
layout: {
|
231
|
+
positions: {
|
232
|
+
lg: {
|
233
|
+
colSpan: 6,
|
234
|
+
},
|
235
|
+
},
|
236
|
+
},
|
237
|
+
},
|
238
|
+
{
|
239
|
+
name: 'schema.interface.type',
|
240
|
+
layout: {
|
241
|
+
positions: {
|
242
|
+
lg: {
|
243
|
+
colSpan: 12,
|
244
|
+
},
|
245
|
+
},
|
246
|
+
},
|
247
|
+
},
|
248
|
+
],
|
249
|
+
},
|
250
|
+
update: {
|
251
|
+
sections: [
|
252
|
+
{
|
253
|
+
id: 'property',
|
254
|
+
},
|
255
|
+
{
|
256
|
+
id: 'schema',
|
257
|
+
},
|
258
|
+
{
|
259
|
+
id: 'interface',
|
260
|
+
},
|
261
|
+
],
|
262
|
+
properties: [
|
263
|
+
{
|
264
|
+
name: 'name',
|
265
|
+
layout: {
|
266
|
+
positions: {
|
267
|
+
lg: {
|
268
|
+
colSpan: 6,
|
269
|
+
},
|
270
|
+
},
|
271
|
+
},
|
272
|
+
},
|
273
|
+
{
|
274
|
+
name: 'title',
|
275
|
+
layout: {
|
276
|
+
positions: {
|
277
|
+
lg: {
|
278
|
+
colSpan: 6,
|
279
|
+
},
|
280
|
+
},
|
281
|
+
},
|
282
|
+
},
|
283
|
+
{
|
284
|
+
name: 'groupId',
|
285
|
+
layout: {
|
286
|
+
positions: {
|
287
|
+
lg: {
|
288
|
+
colSpan: 12,
|
289
|
+
},
|
290
|
+
},
|
291
|
+
},
|
292
|
+
},
|
293
|
+
{
|
294
|
+
name: 'schema.defaultValue',
|
295
|
+
layout: {
|
296
|
+
positions: {
|
297
|
+
lg: {
|
298
|
+
colSpan: 6,
|
299
|
+
},
|
300
|
+
},
|
301
|
+
},
|
302
|
+
},
|
303
|
+
{
|
304
|
+
name: 'schema.nullable',
|
305
|
+
layout: {
|
306
|
+
positions: {
|
307
|
+
lg: {
|
308
|
+
colSpan: 6,
|
309
|
+
},
|
310
|
+
},
|
311
|
+
},
|
312
|
+
},
|
313
|
+
{
|
314
|
+
name: 'schema.interface.type',
|
315
|
+
layout: {
|
316
|
+
positions: {
|
317
|
+
lg: {
|
318
|
+
colSpan: 6,
|
319
|
+
},
|
320
|
+
},
|
321
|
+
},
|
322
|
+
},
|
323
|
+
],
|
324
|
+
},
|
325
|
+
single: {
|
326
|
+
title: '{{title}}',
|
327
|
+
sections: [
|
328
|
+
{
|
329
|
+
id: 'property',
|
330
|
+
},
|
331
|
+
{
|
332
|
+
id: 'schema',
|
333
|
+
},
|
334
|
+
{
|
335
|
+
id: 'interface',
|
336
|
+
},
|
337
|
+
],
|
338
|
+
properties: [
|
339
|
+
{
|
340
|
+
name: 'name',
|
341
|
+
layout: {
|
342
|
+
positions: {
|
343
|
+
lg: {
|
344
|
+
colSpan: 6,
|
345
|
+
},
|
346
|
+
},
|
347
|
+
},
|
348
|
+
},
|
349
|
+
{
|
350
|
+
name: 'title',
|
351
|
+
layout: {
|
352
|
+
positions: {
|
353
|
+
lg: {
|
354
|
+
colSpan: 6,
|
355
|
+
},
|
356
|
+
},
|
357
|
+
},
|
358
|
+
},
|
359
|
+
{
|
360
|
+
name: 'groupId',
|
361
|
+
layout: {
|
362
|
+
positions: {
|
363
|
+
lg: {
|
364
|
+
colSpan: 12,
|
365
|
+
},
|
366
|
+
},
|
367
|
+
},
|
368
|
+
},
|
369
|
+
{
|
370
|
+
name: 'schema.defaultValue',
|
371
|
+
layout: {
|
372
|
+
positions: {
|
373
|
+
lg: {
|
374
|
+
colSpan: 6,
|
375
|
+
},
|
376
|
+
},
|
377
|
+
},
|
378
|
+
},
|
379
|
+
{
|
380
|
+
name: 'schema.nullable',
|
381
|
+
layout: {
|
382
|
+
positions: {
|
383
|
+
lg: {
|
384
|
+
colSpan: 6,
|
385
|
+
},
|
386
|
+
},
|
387
|
+
},
|
388
|
+
},
|
389
|
+
{
|
390
|
+
name: 'schema.interface.type',
|
391
|
+
layout: {
|
392
|
+
positions: {
|
393
|
+
lg: {
|
394
|
+
colSpan: 6,
|
395
|
+
},
|
396
|
+
},
|
397
|
+
},
|
398
|
+
},
|
399
|
+
],
|
400
|
+
actions: [],
|
401
|
+
},
|
402
|
+
list: {
|
403
|
+
actions: [
|
404
|
+
{
|
405
|
+
title: 'Create New',
|
406
|
+
command: 'create-entity',
|
407
|
+
priority: 'primary',
|
408
|
+
type: 'create',
|
409
|
+
scope: AXPEntityCommandScope.TypeLevel,
|
410
|
+
},
|
411
|
+
{
|
412
|
+
title: 'Delete Items',
|
413
|
+
command: 'delete-entity',
|
414
|
+
priority: 'primary',
|
415
|
+
type: 'delete',
|
416
|
+
scope: AXPEntityCommandScope.Selected,
|
417
|
+
},
|
418
|
+
{
|
419
|
+
title: 'Details',
|
420
|
+
command: 'open-entity',
|
421
|
+
priority: 'primary',
|
422
|
+
type: 'view',
|
423
|
+
scope: AXPEntityCommandScope.Individual,
|
424
|
+
},
|
425
|
+
{
|
426
|
+
title: 'Delete',
|
427
|
+
command: 'delete-entity',
|
428
|
+
priority: 'primary',
|
429
|
+
type: 'delete',
|
430
|
+
scope: AXPEntityCommandScope.Individual,
|
431
|
+
},
|
432
|
+
],
|
433
|
+
views: [
|
434
|
+
{
|
435
|
+
name: 'all',
|
436
|
+
title: 'All Items',
|
437
|
+
fixed: true,
|
438
|
+
columns: [],
|
439
|
+
conditions: [],
|
440
|
+
sorts: [],
|
441
|
+
},
|
442
|
+
],
|
443
|
+
},
|
444
|
+
},
|
445
|
+
},
|
446
|
+
};
|
447
|
+
return entityDef;
|
448
|
+
}
|
449
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHkuZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2FwcGxpY2F0aW9uLW1hbmFnZW1lbnQvc3JjL2xpYi9lbnRpdGllcy9wcm9wZXJ0eS5lbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFhLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXBGLE1BQU0sQ0FBQyxLQUFLLFVBQVUscUJBQXFCLENBQUMsUUFBa0I7SUFDNUQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBRWxFLE1BQU0sU0FBUyxHQUFjO1FBQzNCLE1BQU0sRUFBRSx3QkFBd0I7UUFDaEMsSUFBSSxFQUFFLFVBQVU7UUFDaEIsTUFBTSxFQUFFLGlDQUFpQztRQUN6QyxLQUFLLEVBQUUsWUFBWTtRQUNuQixPQUFPLEVBQUU7WUFDUCxVQUFVLEVBQUUsVUFBVTtZQUN0QixNQUFNLEVBQUUsWUFBWTtTQUNyQjtRQUNELGVBQWUsRUFBRSxFQUFFO1FBQ25CLE1BQU0sRUFBRTtZQUNOO2dCQUNFLEVBQUUsRUFBRSxVQUFVO2dCQUNkLEtBQUssRUFBRSxVQUFVO2FBQ2xCO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLFFBQVE7Z0JBQ1osS0FBSyxFQUFFLFFBQVE7YUFDaEI7WUFDRDtnQkFDRSxFQUFFLEVBQUUsV0FBVztnQkFDZixLQUFLLEVBQUUsV0FBVzthQUNuQjtTQUNGO1FBQ0QsVUFBVSxFQUFFO1lBQ1Y7Z0JBQ0UsSUFBSSxFQUFFLE1BQU07Z0JBQ1osS0FBSyxFQUFFLE1BQU07Z0JBQ2IsT0FBTyxFQUFFLFVBQVU7Z0JBQ25CLE1BQU0sRUFBRTtvQkFDTixRQUFRLEVBQUUsUUFBUTtvQkFDbEIsU0FBUyxFQUFFO3dCQUNULElBQUksRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO3FCQUM3QjtpQkFDRjthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsS0FBSyxFQUFFLE9BQU87Z0JBQ2QsT0FBTyxFQUFFLFVBQVU7Z0JBQ25CLE1BQU0sRUFBRTtvQkFDTixRQUFRLEVBQUUsUUFBUTtvQkFDbEIsU0FBUyxFQUFFO3dCQUNULElBQUksRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO3FCQUM3QjtpQkFDRjthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsS0FBSyxFQUFFLFVBQVU7Z0JBQ2pCLE9BQU8sRUFBRSxVQUFVO2dCQUNuQixNQUFNLEVBQUU7b0JBQ04sUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLFNBQVMsRUFBRTt3QkFDVCxJQUFJLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtxQkFDN0I7aUJBQ0Y7YUFDRjtZQUNEO2dCQUNFLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLEtBQUssRUFBRSxXQUFXO2dCQUNsQixPQUFPLEVBQUUsUUFBUTtnQkFDakIsTUFBTSxFQUFFO29CQUNOLFFBQVEsRUFBRSxRQUFRO29CQUNsQixTQUFTLEVBQUU7d0JBQ1QsSUFBSSxFQUFFLGlCQUFpQixDQUFDLElBQUk7cUJBQzdCO2lCQUNGO2FBQ0Y7WUFDRDtnQkFDRSxJQUFJLEVBQUUscUJBQXFCO2dCQUMzQixLQUFLLEVBQUUsZUFBZTtnQkFDdEIsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLE1BQU0sRUFBRTtvQkFDTixRQUFRLEVBQUUsUUFBUTtvQkFDbEIsU0FBUyxFQUFFO3dCQUNULElBQUksRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO3FCQUM3QjtpQkFDRjthQUNGO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsS0FBSyxFQUFFLFVBQVU7Z0JBQ2pCLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixNQUFNLEVBQUU7b0JBQ04sUUFBUSxFQUFFLFNBQVM7b0JBQ25CLFNBQVMsRUFBRTt3QkFDVCxJQUFJLEVBQUUsaUJBQWlCLENBQUMsTUFBTTtxQkFDL0I7aUJBQ0Y7YUFDRjtZQUNEO2dCQUNFLElBQUksRUFBRSx1QkFBdUI7Z0JBQzdCLEtBQUssRUFBRSxXQUFXO2dCQUNsQixPQUFPLEVBQUUsV0FBVztnQkFDcEIsTUFBTSxFQUFFO29CQUNOLFFBQVEsRUFBRSxRQUFRO29CQUNsQixTQUFTLEVBQUU7d0JBQ1QsSUFBSSxFQUFFLGlCQUFpQixDQUFDLE1BQU07d0JBQzlCLE9BQU8sRUFBRTs0QkFDUCxVQUFVLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQzt5QkFDN0M7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO1FBQ0QsT0FBTyxFQUFFO1lBQ1AsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ2hCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtZQUNqQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDbkIsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDM0IsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUU7WUFDL0IsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUU7WUFDL0IsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDM0IsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUU7U0FDbEM7UUFDRCxRQUFRLEVBQUU7WUFDUixNQUFNLEVBQUU7Z0JBQ04sT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFTLEVBQUUsRUFBRTtvQkFDM0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUVwRSxXQUFXLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNuRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2pDLENBQUM7YUFDRjtZQUNELE1BQU0sRUFBRTtnQkFDTixPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQU8sRUFBRSxFQUFFO29CQUN6QixNQUFNLE1BQU0sV0FBVyxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDM0QsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzNCLENBQUM7YUFDRjtZQUNELE1BQU0sRUFBRTtnQkFDTixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQVMsRUFBRSxFQUFFO29CQUMzQixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7d0JBQzdCLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRTs0QkFDcEIsTUFBTSxXQUFXLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7NEJBQ2hFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDaEIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUNYLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7YUFDRjtTQUNGO1FBQ0QsT0FBTyxFQUFFO1lBQ1AsS0FBSyxFQUFFO2dCQUNMLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBVSxFQUFFLEVBQUU7b0JBQzVCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTt3QkFDN0IsVUFBVSxDQUFDLEtBQUssSUFBSSxFQUFFOzRCQUNwQixNQUFNLE1BQU0sR0FBRyxNQUFNLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQ2pFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDbEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUNWLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsSUFBSSxFQUFFLGtCQUFrQixDQUFDLE1BQU07YUFDaEM7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFNLEVBQUUsRUFBRTtvQkFDeEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxXQUFXLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQzdELE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNqRCxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNoRixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7d0JBQ3JCLEtBQUssRUFBRSxhQUFhLENBQUMsTUFBTTt3QkFDM0IsS0FBSyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO3FCQUNsRSxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxJQUFJLEVBQUUsa0JBQWtCLENBQUMsSUFBSTthQUM5QjtTQUNGO1FBQ0QsVUFBVSxFQUFFO1lBQ1YsTUFBTSxFQUFFO2dCQUNOLE1BQU0sRUFBRTtvQkFDTixRQUFRLEVBQUU7d0JBQ1I7NEJBQ0UsRUFBRSxFQUFFLFVBQVU7eUJBQ2Y7d0JBQ0Q7NEJBQ0UsRUFBRSxFQUFFLFFBQVE7eUJBQ2I7d0JBQ0Q7NEJBQ0UsRUFBRSxFQUFFLFdBQVc7eUJBQ2hCO3FCQUNGO29CQUNELFVBQVUsRUFBRTt3QkFDVjs0QkFDRSxJQUFJLEVBQUUsTUFBTTs0QkFDWixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsQ0FBQztxQ0FDWDtpQ0FDRjs2QkFDRjt5QkFDRjt3QkFDRDs0QkFDRSxJQUFJLEVBQUUsT0FBTzs0QkFDYixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsQ0FBQztxQ0FDWDtpQ0FDRjs2QkFDRjt5QkFDRjt3QkFDRDs0QkFDRSxJQUFJLEVBQUUsU0FBUzs0QkFDZixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsRUFBRTtxQ0FDWjtpQ0FDRjs2QkFDRjt5QkFDRjt3QkFDRDs0QkFDRSxJQUFJLEVBQUUscUJBQXFCOzRCQUMzQixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsQ0FBQztxQ0FDWDtpQ0FDRjs2QkFDRjt5QkFDRjt3QkFDRDs0QkFDRSxJQUFJLEVBQUUsaUJBQWlCOzRCQUN2QixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsQ0FBQztxQ0FDWDtpQ0FDRjs2QkFDRjt5QkFDRjt3QkFDRDs0QkFDRSxJQUFJLEVBQUUsdUJBQXVCOzRCQUM3QixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsRUFBRTtxQ0FDWjtpQ0FDRjs2QkFDRjt5QkFDRjtxQkFDRjtpQkFDRjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sUUFBUSxFQUFFO3dCQUNSOzRCQUNFLEVBQUUsRUFBRSxVQUFVO3lCQUNmO3dCQUNEOzRCQUNFLEVBQUUsRUFBRSxRQUFRO3lCQUNiO3dCQUNEOzRCQUNFLEVBQUUsRUFBRSxXQUFXO3lCQUNoQjtxQkFDRjtvQkFDRCxVQUFVLEVBQUU7d0JBQ1Y7NEJBQ0UsSUFBSSxFQUFFLE1BQU07NEJBQ1osTUFBTSxFQUFFO2dDQUNOLFNBQVMsRUFBRTtvQ0FDVCxFQUFFLEVBQUU7d0NBQ0YsT0FBTyxFQUFFLENBQUM7cUNBQ1g7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLE9BQU87NEJBQ2IsTUFBTSxFQUFFO2dDQUNOLFNBQVMsRUFBRTtvQ0FDVCxFQUFFLEVBQUU7d0NBQ0YsT0FBTyxFQUFFLENBQUM7cUNBQ1g7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLFNBQVM7NEJBQ2YsTUFBTSxFQUFFO2dDQUNOLFNBQVMsRUFBRTtvQ0FDVCxFQUFFLEVBQUU7d0NBQ0YsT0FBTyxFQUFFLEVBQUU7cUNBQ1o7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLHFCQUFxQjs0QkFDM0IsTUFBTSxFQUFFO2dDQUNOLFNBQVMsRUFBRTtvQ0FDVCxFQUFFLEVBQUU7d0NBQ0YsT0FBTyxFQUFFLENBQUM7cUNBQ1g7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLGlCQUFpQjs0QkFDdkIsTUFBTSxFQUFFO2dDQUNOLFNBQVMsRUFBRTtvQ0FDVCxFQUFFLEVBQUU7d0NBQ0YsT0FBTyxFQUFFLENBQUM7cUNBQ1g7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLHVCQUF1Qjs0QkFDN0IsTUFBTSxFQUFFO2dDQUNOLFNBQVMsRUFBRTtvQ0FDVCxFQUFFLEVBQUU7d0NBQ0YsT0FBTyxFQUFFLENBQUM7cUNBQ1g7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOLEtBQUssRUFBRSxXQUFXO29CQUNsQixRQUFRLEVBQUU7d0JBQ1I7NEJBQ0UsRUFBRSxFQUFFLFVBQVU7eUJBQ2Y7d0JBQ0Q7NEJBQ0UsRUFBRSxFQUFFLFFBQVE7eUJBQ2I7d0JBQ0Q7NEJBQ0UsRUFBRSxFQUFFLFdBQVc7eUJBQ2hCO3FCQUNGO29CQUNELFVBQVUsRUFBRTt3QkFDVjs0QkFDRSxJQUFJLEVBQUUsTUFBTTs0QkFDWixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsQ0FBQztxQ0FDWDtpQ0FDRjs2QkFDRjt5QkFDRjt3QkFDRDs0QkFDRSxJQUFJLEVBQUUsT0FBTzs0QkFDYixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsQ0FBQztxQ0FDWDtpQ0FDRjs2QkFDRjt5QkFDRjt3QkFDRDs0QkFDRSxJQUFJLEVBQUUsU0FBUzs0QkFDZixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsRUFBRTtxQ0FDWjtpQ0FDRjs2QkFDRjt5QkFDRjt3QkFDRDs0QkFDRSxJQUFJLEVBQUUscUJBQXFCOzRCQUMzQixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsQ0FBQztxQ0FDWDtpQ0FDRjs2QkFDRjt5QkFDRjt3QkFDRDs0QkFDRSxJQUFJLEVBQUUsaUJBQWlCOzRCQUN2QixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsQ0FBQztxQ0FDWDtpQ0FDRjs2QkFDRjt5QkFDRjt3QkFDRDs0QkFDRSxJQUFJLEVBQUUsdUJBQXVCOzRCQUM3QixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsQ0FBQztxQ0FDWDtpQ0FDRjs2QkFDRjt5QkFDRjtxQkFDRjtvQkFDRCxPQUFPLEVBQUUsRUFBRTtpQkFDWjtnQkFDRCxJQUFJLEVBQUU7b0JBQ0osT0FBTyxFQUFFO3dCQUNQOzRCQUNFLEtBQUssRUFBRSxZQUFZOzRCQUNuQixPQUFPLEVBQUUsZUFBZTs0QkFDeEIsUUFBUSxFQUFFLFNBQVM7NEJBQ25CLElBQUksRUFBRSxRQUFROzRCQUNkLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxTQUFTO3lCQUN2Qzt3QkFDRDs0QkFDRSxLQUFLLEVBQUUsY0FBYzs0QkFDckIsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFFBQVEsRUFBRSxTQUFTOzRCQUNuQixJQUFJLEVBQUUsUUFBUTs0QkFDZCxLQUFLLEVBQUUscUJBQXFCLENBQUMsUUFBUTt5QkFDdEM7d0JBQ0Q7NEJBQ0UsS0FBSyxFQUFFLFNBQVM7NEJBQ2hCLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixRQUFRLEVBQUUsU0FBUzs0QkFDbkIsSUFBSSxFQUFFLE1BQU07NEJBQ1osS0FBSyxFQUFFLHFCQUFxQixDQUFDLFVBQVU7eUJBQ3hDO3dCQUNEOzRCQUNFLEtBQUssRUFBRSxRQUFROzRCQUNmLE9BQU8sRUFBRSxlQUFlOzRCQUN4QixRQUFRLEVBQUUsU0FBUzs0QkFDbkIsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsS0FBSyxFQUFFLHFCQUFxQixDQUFDLFVBQVU7eUJBQ3hDO3FCQUNGO29CQUNELEtBQUssRUFBRTt3QkFDTDs0QkFDRSxJQUFJLEVBQUUsS0FBSzs0QkFDWCxLQUFLLEVBQUUsV0FBVzs0QkFDbEIsS0FBSyxFQUFFLElBQUk7NEJBQ1gsT0FBTyxFQUFFLEVBQUU7NEJBQ1gsVUFBVSxFQUFFLEVBQUU7NEJBQ2QsS0FBSyxFQUFFLEVBQUU7eUJBQ1Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQztJQUVGLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBEYXRhR2VuZXJhdG9yLCBBWFBFbnRpdHksIEFYUEVudGl0eUNvbW1hbmRTY29wZSwgQVhQRW50aXR5UXVlcnlUeXBlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgYXBwbHlGaWx0ZXJBcnJheSwgYXBwbHlTb3J0QXJyYXkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0c0NhdGFsb2cgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBBcHBsaWNhdGlvbk1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24tbWFuYWdlbWVudC5zZXJ2aWNlJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb3BlcnR5RW50aXR5RmFjdG9yeShpbmplY3RvcjogSW5qZWN0b3IpOiBQcm9taXNlPEFYUEVudGl0eSB8IG51bGw+IHtcbiAgY29uc3QgZGF0YVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoQVhQQXBwbGljYXRpb25NYW5hZ2VtZW50U2VydmljZSk7XG5cbiAgY29uc3QgZW50aXR5RGVmOiBBWFBFbnRpdHkgPSB7XG4gICAgbW9kdWxlOiAnYXBwbGljYXRpb24tbWFuYWdlbWVudCcsXG4gICAgbmFtZTogJ3Byb3BlcnR5JyxcbiAgICBzb3VyY2U6ICdhcHBsaWNhdGlvbi1tYW5hZ2VtZW50LnByb3BlcnR5JyxcbiAgICB0aXRsZTogJ1Byb3BlcnRpZXMnLFxuICAgIGZvcm1hdHM6IHtcbiAgICAgIGluZGl2aWR1YWw6ICdQcm9wZXJ0eScsXG4gICAgICBwbHVyYWw6ICdQcm9wZXJ0aWVzJyxcbiAgICB9LFxuICAgIHJlbGF0ZWRFbnRpdGllczogW10sXG4gICAgZ3JvdXBzOiBbXG4gICAgICB7XG4gICAgICAgIGlkOiAncHJvcGVydHknLFxuICAgICAgICB0aXRsZTogJ1Byb3BlcnR5JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAnc2NoZW1hJyxcbiAgICAgICAgdGl0bGU6ICdTY2hlbWEnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdpbnRlcmZhY2UnLFxuICAgICAgICB0aXRsZTogJ0ludGVyZmFjZScsXG4gICAgICB9LFxuICAgIF0sXG4gICAgcHJvcGVydGllczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgIHRpdGxlOiAnTmFtZScsXG4gICAgICAgIGdyb3VwSWQ6ICdwcm9wZXJ0eScsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICd0aXRsZScsXG4gICAgICAgIHRpdGxlOiAnVGl0bGUnLFxuICAgICAgICBncm91cElkOiAncHJvcGVydHknLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50ZXh0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnZ3JvdXBJZCcsXG4gICAgICAgIHRpdGxlOiAnZ3JvdXAgSWQnLFxuICAgICAgICBncm91cElkOiAncHJvcGVydHknLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50ZXh0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2NoZW1hLmRhdGFUeXBlJyxcbiAgICAgICAgdGl0bGU6ICdEYXRhIFR5cGUnLFxuICAgICAgICBncm91cElkOiAnc2NoZW1hJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NjaGVtYS5kZWZhdWx0VmFsdWUnLFxuICAgICAgICB0aXRsZTogJ0RlZmF1bHQgVmFsdWUnLFxuICAgICAgICBncm91cElkOiAnc2NoZW1hJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NjaGVtYS5udWxsYWJsZScsXG4gICAgICAgIHRpdGxlOiAnTnVsbGFibGUnLFxuICAgICAgICBncm91cElkOiAnc2NoZW1hJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRvZ2dsZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NjaGVtYS5pbnRlcmZhY2UudHlwZScsXG4gICAgICAgIHRpdGxlOiAnRGF0YSBUeXBlJyxcbiAgICAgICAgZ3JvdXBJZDogJ2ludGVyZmFjZScsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnNlbGVjdCxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgZGF0YVNvdXJjZTogT2JqZWN0LnZhbHVlcyhBWFBXaWRnZXRzQ2F0YWxvZyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgY29sdW1uczogW1xuICAgICAgeyBuYW1lOiAnbmFtZScgfSxcbiAgICAgIHsgbmFtZTogJ3RpdGxlJyB9LFxuICAgICAgeyBuYW1lOiAnZ3JvdXBJZCcgfSxcbiAgICAgIHsgbmFtZTogJ3NjaGVtYS5kYXRhVHlwZScgfSxcbiAgICAgIHsgbmFtZTogJ3NjaGVtYS5kZWZhdWx0VmFsdWUnIH0sXG4gICAgICB7IG5hbWU6ICdzY2hlbWEuZGVmYXVsdFZhbHVlJyB9LFxuICAgICAgeyBuYW1lOiAnc2NoZW1hLm51bGxhYmxlJyB9LFxuICAgICAgeyBuYW1lOiAnc2NoZW1hLmludGVyZmFjZS50eXBlJyB9LFxuICAgIF0sXG4gICAgY29tbWFuZHM6IHtcbiAgICAgIGNyZWF0ZToge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgZW50aXR5ID0gT2JqZWN0LmFzc2lnbihkYXRhLCB7IGlkOiBBWFBEYXRhR2VuZXJhdG9yLnV1aWQoKSB9KTtcblxuICAgICAgICAgIGRhdGFTZXJ2aWNlLnByb3BlcnR5RGF0YVByb3ZpZGVyLmluc2VydE9uZShlbnRpdHkpO1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZW50aXR5KTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBkZWxldGU6IHtcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKGlkOiBhbnkpID0+IHtcbiAgICAgICAgICBhd2FpdCBhd2FpdCBkYXRhU2VydmljZS5wcm9wZXJ0eURhdGFQcm92aWRlci5kZWxldGVPbmUoaWQpO1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB1cGRhdGU6IHtcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgIGF3YWl0IGRhdGFTZXJ2aWNlLnByb3BlcnR5RGF0YVByb3ZpZGVyLnVwZGF0ZU9uZShkYXRhLmlkLCBkYXRhKTtcbiAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHF1ZXJpZXM6IHtcbiAgICAgIGJ5S2V5OiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZW50aXR5ID0gYXdhaXQgZGF0YVNlcnZpY2UucHJvcGVydHlEYXRhUHJvdmlkZXIuZ2V0T25lKGlkKTtcbiAgICAgICAgICAgICAgcmVzb2x2ZShlbnRpdHkpO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogQVhQRW50aXR5UXVlcnlUeXBlLlNpbmdsZSxcbiAgICAgIH0sXG4gICAgICBsaXN0OiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChlOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBsaXN0ID0gYXdhaXQgZGF0YVNlcnZpY2UucHJvcGVydHlEYXRhUHJvdmlkZXIuZ2V0QWxsKCk7XG4gICAgICAgICAgY29uc3Qgc29ydGVkSXRlbXMgPSBhcHBseVNvcnRBcnJheShsaXN0LCBlLnNvcnQpO1xuICAgICAgICAgIGNvbnN0IGZpbHRlcmVkSXRlbXMgPSBhcHBseUZpbHRlckFycmF5KHNvcnRlZEl0ZW1zLCBlLmZpbHRlciA/IFtlLmZpbHRlcl0gOiBbXSk7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICB0b3RhbDogZmlsdGVyZWRJdGVtcy5sZW5ndGgsXG4gICAgICAgICAgICBpdGVtczogZmlsdGVyZWRJdGVtcy5zbGljZShlLnNraXAsIChlLnNraXAgPz8gMCkgKyAoZS50YWtlID8/IDApKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogQVhQRW50aXR5UXVlcnlUeXBlLkxpc3QsXG4gICAgICB9LFxuICAgIH0sXG4gICAgaW50ZXJmYWNlczoge1xuICAgICAgbWFzdGVyOiB7XG4gICAgICAgIGNyZWF0ZToge1xuICAgICAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAncHJvcGVydHknLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdzY2hlbWEnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdpbnRlcmZhY2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnZ3JvdXBJZCcsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnc2NoZW1hLmRlZmF1bHRWYWx1ZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdzY2hlbWEubnVsbGFibGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnc2NoZW1hLmludGVyZmFjZS50eXBlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiAxMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlOiB7XG4gICAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdwcm9wZXJ0eScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ3NjaGVtYScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ2ludGVyZmFjZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcHJvcGVydGllczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdncm91cElkJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiAxMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdzY2hlbWEuZGVmYXVsdFZhbHVlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3NjaGVtYS5udWxsYWJsZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdzY2hlbWEuaW50ZXJmYWNlLnR5cGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHNpbmdsZToge1xuICAgICAgICAgIHRpdGxlOiAne3t0aXRsZX19JyxcbiAgICAgICAgICBzZWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ3Byb3BlcnR5JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnc2NoZW1hJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnaW50ZXJmYWNlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2dyb3VwSWQnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDEyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3NjaGVtYS5kZWZhdWx0VmFsdWUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnc2NoZW1hLm51bGxhYmxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3NjaGVtYS5pbnRlcmZhY2UudHlwZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBhY3Rpb25zOiBbXSxcbiAgICAgICAgfSxcbiAgICAgICAgbGlzdDoge1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6ICdDcmVhdGUgTmV3JyxcbiAgICAgICAgICAgICAgY29tbWFuZDogJ2NyZWF0ZS1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICB0eXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgICAgc2NvcGU6IEFYUEVudGl0eUNvbW1hbmRTY29wZS5UeXBlTGV2ZWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0aXRsZTogJ0RlbGV0ZSBJdGVtcycsXG4gICAgICAgICAgICAgIGNvbW1hbmQ6ICdkZWxldGUtZW50aXR5JyxcbiAgICAgICAgICAgICAgcHJpb3JpdHk6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICAgdHlwZTogJ2RlbGV0ZScsXG4gICAgICAgICAgICAgIHNjb3BlOiBBWFBFbnRpdHlDb21tYW5kU2NvcGUuU2VsZWN0ZWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0aXRsZTogJ0RldGFpbHMnLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnb3Blbi1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICB0eXBlOiAndmlldycsXG4gICAgICAgICAgICAgIHNjb3BlOiBBWFBFbnRpdHlDb21tYW5kU2NvcGUuSW5kaXZpZHVhbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiAnRGVsZXRlJyxcbiAgICAgICAgICAgICAgY29tbWFuZDogJ2RlbGV0ZS1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICB0eXBlOiAnZGVsZXRlJyxcbiAgICAgICAgICAgICAgc2NvcGU6IEFYUEVudGl0eUNvbW1hbmRTY29wZS5JbmRpdmlkdWFsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHZpZXdzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdhbGwnLFxuICAgICAgICAgICAgICB0aXRsZTogJ0FsbCBJdGVtcycsXG4gICAgICAgICAgICAgIGZpeGVkOiB0cnVlLFxuICAgICAgICAgICAgICBjb2x1bW5zOiBbXSxcbiAgICAgICAgICAgICAgY29uZGl0aW9uczogW10sXG4gICAgICAgICAgICAgIHNvcnRzOiBbXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gZW50aXR5RGVmO1xufVxuIl19
|
@@ -0,0 +1,91 @@
|
|
1
|
+
import { AXButtonModule } from '@acorex/components/button';
|
2
|
+
import { AXCollapseModule } from '@acorex/components/collapse';
|
3
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
4
|
+
import { AXDrawerModule } from '@acorex/components/drawer';
|
5
|
+
import { AXPopoverModule } from '@acorex/components/popover';
|
6
|
+
import { AXSelectionListModule } from '@acorex/components/selection-list';
|
7
|
+
import { AXSideMenuModule } from '@acorex/components/side-menu';
|
8
|
+
import { AXTranslationModule } from '@acorex/core/translation';
|
9
|
+
import { CommonModule } from '@angular/common';
|
10
|
+
import { Component, inject, signal, ViewEncapsulation } from '@angular/core';
|
11
|
+
import { AXPModuleDesignerService } from './module-designer.service';
|
12
|
+
import * as i0 from "@angular/core";
|
13
|
+
import * as i1 from "@angular/common";
|
14
|
+
import * as i2 from "@acorex/components/drawer";
|
15
|
+
import * as i3 from "@acorex/components/decorators";
|
16
|
+
import * as i4 from "@acorex/core/translation";
|
17
|
+
import * as i5 from "@acorex/components/collapse";
|
18
|
+
export class AXMModuleDesignerComponent {
|
19
|
+
constructor() {
|
20
|
+
this.dataProvider = inject(AXPModuleDesignerService);
|
21
|
+
this.modules = signal([]);
|
22
|
+
this.moduleDataCache = new Map();
|
23
|
+
}
|
24
|
+
ngOnInit() {
|
25
|
+
this.loadModules();
|
26
|
+
}
|
27
|
+
async loadModules() {
|
28
|
+
try {
|
29
|
+
const modules = await this.dataProvider.getModules();
|
30
|
+
this.modules.set(modules.items);
|
31
|
+
}
|
32
|
+
catch (error) {
|
33
|
+
console.error('Error loading modules:', error);
|
34
|
+
}
|
35
|
+
}
|
36
|
+
async loadModuleData(moduleId, e, dataType) {
|
37
|
+
const cacheKey = `${moduleId}-${dataType}`;
|
38
|
+
if (e.component.isCollapsed) {
|
39
|
+
e.handled = true;
|
40
|
+
e.component.isLoading = true;
|
41
|
+
let dataItems = this.moduleDataCache.get(cacheKey);
|
42
|
+
if (!dataItems) {
|
43
|
+
try {
|
44
|
+
const methodMap = {
|
45
|
+
entities: this.dataProvider.getEntities,
|
46
|
+
permissions: this.dataProvider.getPermissions,
|
47
|
+
features: this.dataProvider.getFeatures,
|
48
|
+
};
|
49
|
+
const data = await methodMap[dataType].call(this.dataProvider, moduleId);
|
50
|
+
dataItems = data.items;
|
51
|
+
this.moduleDataCache.set(cacheKey, dataItems);
|
52
|
+
}
|
53
|
+
catch (error) {
|
54
|
+
console.error(`Error loading ${dataType}:`, error);
|
55
|
+
}
|
56
|
+
}
|
57
|
+
e.component.toggle();
|
58
|
+
e.component.isLoading = false;
|
59
|
+
}
|
60
|
+
}
|
61
|
+
getEntities(moduleId) {
|
62
|
+
return this.moduleDataCache.get(`${moduleId}-entities`) || [];
|
63
|
+
}
|
64
|
+
getPermissions(moduleId) {
|
65
|
+
return this.moduleDataCache.get(`${moduleId}-permissions`) || [];
|
66
|
+
}
|
67
|
+
getFeatures(moduleId) {
|
68
|
+
return this.moduleDataCache.get(`${moduleId}-features`) || [];
|
69
|
+
}
|
70
|
+
onRightClick(e) {
|
71
|
+
e.preventDefault();
|
72
|
+
console.log(e);
|
73
|
+
}
|
74
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMModuleDesignerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
75
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXMModuleDesignerComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<ax-drawer-container class=\"ax-overflow-hidden\">\n <ax-drawer #drawer location=\"start\" [collapsed]=\"false\" [mode]=\"'push'\">\n <ax-content class=\"ax-w-80 ax-border-e ax-px-4 ax-py-2\">\n <div>\n <span class=\"ax-font-bold ax-text-xl\">{{ 'designer.modules' | translate | async }}</span>\n </div>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-mt-4\">\n <ax-collapse-group [accordion]=\"true\" look=\"blank\">\n @for(m of modules();track $index){\n <ax-collapse icon=\"fas fa-folder a ax-text-warning\" [isCollapsed]=\"true\" [caption]=\"m.title\" look=\"none\">\n <div class=\"ax-mx-3\">\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n <ax-collapse\n icon=\"fas fa-box ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"loadModuleData(m.id, $event, 'entities')\"\n [caption]=\"('designer.entities' | translate | async) ?? 'Entities'\"\n look=\"none\"\n >\n <ng-container\n [ngTemplateOutlet]=\"itemsTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: getEntities(m.id) }\"\n ></ng-container>\n </ax-collapse>\n\n <ax-collapse\n icon=\"fas fa-star ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"loadModuleData(m.id, $event, 'features')\"\n [caption]=\"('designer.features' | translate | async) ?? 'Features'\"\n look=\"none\"\n >\n <ng-container\n [ngTemplateOutlet]=\"itemsTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: getFeatures(m.id) }\"\n ></ng-container>\n </ax-collapse>\n\n <ax-collapse\n icon=\"fas fa-key ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"loadModuleData(m.id, $event, 'permissions')\"\n [caption]=\"('designer.permissions' | translate | async) ?? 'Permissions'\"\n look=\"none\"\n >\n <ng-container\n [ngTemplateOutlet]=\"itemsTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: getPermissions(m.id) }\"\n ></ng-container>\n </ax-collapse>\n </ax-collapse-group>\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n </div>\n </ax-content>\n\n <ng-template #itemsTemplate let-items>\n <div\n (contextmenu)=\"onRightClick($event)\"\n class=\"ax-flex ax-flex-col ax-cursor-pointer ax-select-none ax-border-s ax-ms-[6px] ax-ps-2\"\n >\n @for (item of items; track $index) {\n <div class=\"ax-px-2 ax-py-1 hover:ax-bg-neutral-100 hover:ax-rounded-md\">\n <span>{{ item.title }}</span>\n </div>\n }\n </div>\n </ng-template>\n </ax-drawer>\n <ax-content>\n <div class=\"ax-overflow-auto\">TEST</div>\n </ax-content>\n</ax-drawer-container>\n", styles: [".ax-collapse-header{padding:.25rem .5rem!important}.ax-collapse-header:hover{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-neutral-100),var(--tw-bg-opacity))}.ax-collapse-body-content{padding:.25rem!important;padding-inline-start:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i2.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "collapsed", "closeOthers"], outputs: ["locationChange", "modeChange", "collapsedChange"] }, { kind: "component", type: i2.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }, { kind: "ngmodule", type: AXSideMenuModule }, { kind: "ngmodule", type: AXCollapseModule }, { kind: "component", type: i5.AXCollapseComponent, selector: "ax-collapse", inputs: ["disabled", "look", "isCollapsed", "showHeader", "caption", "icon", "isLoading", "headerTemplate"], outputs: ["onClick", "isCollapsedChange"] }, { kind: "component", type: i5.AXCollapseGroupComponent, selector: "ax-collapse-group", inputs: ["look", "accordion", "activeIndex"], outputs: ["accordionChange", "activeIndexChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXSelectionListModule }], encapsulation: i0.ViewEncapsulation.None }); }
|
76
|
+
}
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMModuleDesignerComponent, decorators: [{
|
78
|
+
type: Component,
|
79
|
+
args: [{ encapsulation: ViewEncapsulation.None, standalone: true, imports: [
|
80
|
+
CommonModule,
|
81
|
+
AXDrawerModule,
|
82
|
+
AXButtonModule,
|
83
|
+
AXDecoratorModule,
|
84
|
+
AXTranslationModule,
|
85
|
+
AXSideMenuModule,
|
86
|
+
AXCollapseModule,
|
87
|
+
AXPopoverModule,
|
88
|
+
AXSelectionListModule,
|
89
|
+
], template: "<ax-drawer-container class=\"ax-overflow-hidden\">\n <ax-drawer #drawer location=\"start\" [collapsed]=\"false\" [mode]=\"'push'\">\n <ax-content class=\"ax-w-80 ax-border-e ax-px-4 ax-py-2\">\n <div>\n <span class=\"ax-font-bold ax-text-xl\">{{ 'designer.modules' | translate | async }}</span>\n </div>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-mt-4\">\n <ax-collapse-group [accordion]=\"true\" look=\"blank\">\n @for(m of modules();track $index){\n <ax-collapse icon=\"fas fa-folder a ax-text-warning\" [isCollapsed]=\"true\" [caption]=\"m.title\" look=\"none\">\n <div class=\"ax-mx-3\">\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n <ax-collapse\n icon=\"fas fa-box ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"loadModuleData(m.id, $event, 'entities')\"\n [caption]=\"('designer.entities' | translate | async) ?? 'Entities'\"\n look=\"none\"\n >\n <ng-container\n [ngTemplateOutlet]=\"itemsTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: getEntities(m.id) }\"\n ></ng-container>\n </ax-collapse>\n\n <ax-collapse\n icon=\"fas fa-star ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"loadModuleData(m.id, $event, 'features')\"\n [caption]=\"('designer.features' | translate | async) ?? 'Features'\"\n look=\"none\"\n >\n <ng-container\n [ngTemplateOutlet]=\"itemsTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: getFeatures(m.id) }\"\n ></ng-container>\n </ax-collapse>\n\n <ax-collapse\n icon=\"fas fa-key ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"loadModuleData(m.id, $event, 'permissions')\"\n [caption]=\"('designer.permissions' | translate | async) ?? 'Permissions'\"\n look=\"none\"\n >\n <ng-container\n [ngTemplateOutlet]=\"itemsTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: getPermissions(m.id) }\"\n ></ng-container>\n </ax-collapse>\n </ax-collapse-group>\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n </div>\n </ax-content>\n\n <ng-template #itemsTemplate let-items>\n <div\n (contextmenu)=\"onRightClick($event)\"\n class=\"ax-flex ax-flex-col ax-cursor-pointer ax-select-none ax-border-s ax-ms-[6px] ax-ps-2\"\n >\n @for (item of items; track $index) {\n <div class=\"ax-px-2 ax-py-1 hover:ax-bg-neutral-100 hover:ax-rounded-md\">\n <span>{{ item.title }}</span>\n </div>\n }\n </div>\n </ng-template>\n </ax-drawer>\n <ax-content>\n <div class=\"ax-overflow-auto\">TEST</div>\n </ax-content>\n</ax-drawer-container>\n", styles: [".ax-collapse-header{padding:.25rem .5rem!important}.ax-collapse-header:hover{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-neutral-100),var(--tw-bg-opacity))}.ax-collapse-body-content{padding:.25rem!important;padding-inline-start:0!important}\n"] }]
|
90
|
+
}] });
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWRlc2lnbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hcHBsaWNhdGlvbi1tYW5hZ2VtZW50L3NyYy9saWIvbW9kdWxlLWRlc2lnbmVyL21vZHVsZS1kZXNpZ25lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL21vZHVsZS1kZXNpZ25lci9tb2R1bGUtZGVzaWduZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBd0IsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7QUFtQnJFLE1BQU0sT0FBTywwQkFBMEI7SUFqQnZDO1FBa0JZLGlCQUFZLEdBQUcsTUFB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O2tHQUExQiwwQkFBMEIsd0VDN0J2QyxnckdBMkVBLDZVRHpESSxZQUFZLDBQQUNaLGNBQWMsNlVBQ2QsY0FBYyw4QkFDZCxpQkFBaUIsc1BBQ2pCLG1CQUFtQiw4RkFDbkIsZ0JBQWdCLDhCQUNoQixnQkFBZ0IsOGJBQ2hCLGVBQWUsOEJBQ2YscUJBQXFCOzsyRkFHWiwwQkFBMEI7a0JBakJ0QyxTQUFTO29DQUdPLGlCQUFpQixDQUFDLElBQUksY0FDekIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixxQkFBcUI7cUJBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYQ29sbGFwc2VDbGlja0V2ZW50LCBBWENvbGxhcHNlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbGxhcHNlJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcmF3ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJhd2VyJztcbmltcG9ydCB7IEFYUG9wb3Zlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3BvdmVyJztcbmltcG9ydCB7IEFYU2VsZWN0aW9uTGlzdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zZWxlY3Rpb24tbGlzdCc7XG5pbXBvcnQgeyBBWFNpZGVNZW51TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NpZGUtbWVudSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgT25Jbml0LCBzaWduYWwsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBNb2R1bGVEZXNpZ25lclNlcnZpY2UgfSBmcm9tICcuL21vZHVsZS1kZXNpZ25lci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9tb2R1bGUtZGVzaWduZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2R1bGUtZGVzaWduZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBWERyYXdlck1vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIEFYU2lkZU1lbnVNb2R1bGUsXG4gICAgQVhDb2xsYXBzZU1vZHVsZSxcbiAgICBBWFBvcG92ZXJNb2R1bGUsXG4gICAgQVhTZWxlY3Rpb25MaXN0TW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1Nb2R1bGVEZXNpZ25lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb3RlY3RlZCBkYXRhUHJvdmlkZXIgPSBpbmplY3QoQVhQTW9kdWxlRGVzaWduZXJTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIG1vZHVsZXMgPSBzaWduYWw8YW55W10+KFtdKTtcblxuICBwcm90ZWN0ZWQgbW9kdWxlRGF0YUNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIGFueVtdPigpO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9hZE1vZHVsZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBsb2FkTW9kdWxlcygpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbW9kdWxlcyA9IGF3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLmdldE1vZHVsZXMoKTtcbiAgICAgIHRoaXMubW9kdWxlcy5zZXQobW9kdWxlcy5pdGVtcyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgbW9kdWxlczonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGxvYWRNb2R1bGVEYXRhKFxuICAgIG1vZHVsZUlkOiBzdHJpbmcsXG4gICAgZTogQVhDb2xsYXBzZUNsaWNrRXZlbnQsXG4gICAgZGF0YVR5cGU6ICdlbnRpdGllcycgfCAncGVybWlzc2lvbnMnIHwgJ2ZlYXR1cmVzJ1xuICApIHtcbiAgICBjb25zdCBjYWNoZUtleSA9IGAke21vZHVsZUlkfS0ke2RhdGFUeXBlfWA7XG4gICAgaWYgKGUuY29tcG9uZW50LmlzQ29sbGFwc2VkKSB7XG4gICAgICBlLmhhbmRsZWQgPSB0cnVlO1xuICAgICAgZS5jb21wb25lbnQuaXNMb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgbGV0IGRhdGFJdGVtcyA9IHRoaXMubW9kdWxlRGF0YUNhY2hlLmdldChjYWNoZUtleSk7XG4gICAgICBpZiAoIWRhdGFJdGVtcykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IG1ldGhvZE1hcCA9IHtcbiAgICAgICAgICAgIGVudGl0aWVzOiB0aGlzLmRhdGFQcm92aWRlci5nZXRFbnRpdGllcyxcbiAgICAgICAgICAgIHBlcm1pc3Npb25zOiB0aGlzLmRhdGFQcm92aWRlci5nZXRQZXJtaXNzaW9ucyxcbiAgICAgICAgICAgIGZlYXR1cmVzOiB0aGlzLmRhdGFQcm92aWRlci5nZXRGZWF0dXJlcyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBtZXRob2RNYXBbZGF0YVR5cGVdLmNhbGwodGhpcy5kYXRhUHJvdmlkZXIsIG1vZHVsZUlkKTtcbiAgICAgICAgICBkYXRhSXRlbXMgPSBkYXRhLml0ZW1zIGFzIGFueVtdO1xuICAgICAgICAgIHRoaXMubW9kdWxlRGF0YUNhY2hlLnNldChjYWNoZUtleSwgZGF0YUl0ZW1zKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBsb2FkaW5nICR7ZGF0YVR5cGV9OmAsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZS5jb21wb25lbnQudG9nZ2xlKCk7XG4gICAgICBlLmNvbXBvbmVudC5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RW50aXRpZXMobW9kdWxlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm1vZHVsZURhdGFDYWNoZS5nZXQoYCR7bW9kdWxlSWR9LWVudGl0aWVzYCkgfHwgW107XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0UGVybWlzc2lvbnMobW9kdWxlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm1vZHVsZURhdGFDYWNoZS5nZXQoYCR7bW9kdWxlSWR9LXBlcm1pc3Npb25zYCkgfHwgW107XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RmVhdHVyZXMobW9kdWxlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm1vZHVsZURhdGFDYWNoZS5nZXQoYCR7bW9kdWxlSWR9LWZlYXR1cmVzYCkgfHwgW107XG4gIH1cblxuICBwcm90ZWN0ZWQgb25SaWdodENsaWNrKGU6IGFueSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zb2xlLmxvZyhlKTtcbiAgfVxufVxuIiwiPGF4LWRyYXdlci1jb250YWluZXIgY2xhc3M9XCJheC1vdmVyZmxvdy1oaWRkZW5cIj5cbiAgPGF4LWRyYXdlciAjZHJhd2VyIGxvY2F0aW9uPVwic3RhcnRcIiBbY29sbGFwc2VkXT1cImZhbHNlXCIgW21vZGVdPVwiJ3B1c2gnXCI+XG4gICAgPGF4LWNvbnRlbnQgY2xhc3M9XCJheC13LTgwIGF4LWJvcmRlci1lIGF4LXB4LTQgYXgtcHktMlwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1mb250LWJvbGQgYXgtdGV4dC14bFwiPnt7ICdkZXNpZ25lci5tb2R1bGVzJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMiBheC1tdC00XCI+XG4gICAgICAgIDxheC1jb2xsYXBzZS1ncm91cCBbYWNjb3JkaW9uXT1cInRydWVcIiBsb29rPVwiYmxhbmtcIj5cbiAgICAgICAgICBAZm9yKG0gb2YgbW9kdWxlcygpO3RyYWNrICRpbmRleCl7XG4gICAgICAgICAgPGF4LWNvbGxhcHNlIGljb249XCJmYXMgZmEtZm9sZGVyIGEgYXgtdGV4dC13YXJuaW5nXCIgW2lzQ29sbGFwc2VkXT1cInRydWVcIiBbY2FwdGlvbl09XCJtLnRpdGxlXCIgbG9vaz1cIm5vbmVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1teC0zXCI+XG4gICAgICAgICAgICAgIDxheC1jb2xsYXBzZS1ncm91cCBbYWNjb3JkaW9uXT1cImZhbHNlXCIgbG9vaz1cImJsYW5rXCI+XG4gICAgICAgICAgICAgICAgPGF4LWNvbGxhcHNlXG4gICAgICAgICAgICAgICAgICBpY29uPVwiZmFzIGZhLWJveCBheC10ZXh0LW5ldXRyYWwtNDAwXCJcbiAgICAgICAgICAgICAgICAgIFtpc0NvbGxhcHNlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImxvYWRNb2R1bGVEYXRhKG0uaWQsICRldmVudCwgJ2VudGl0aWVzJylcIlxuICAgICAgICAgICAgICAgICAgW2NhcHRpb25dPVwiKCdkZXNpZ25lci5lbnRpdGllcycgfCB0cmFuc2xhdGUgfCBhc3luYykgPz8gJ0VudGl0aWVzJ1wiXG4gICAgICAgICAgICAgICAgICBsb29rPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtc1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBnZXRFbnRpdGllcyhtLmlkKSB9XCJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2F4LWNvbGxhcHNlPlxuXG4gICAgICAgICAgICAgICAgPGF4LWNvbGxhcHNlXG4gICAgICAgICAgICAgICAgICBpY29uPVwiZmFzIGZhLXN0YXIgYXgtdGV4dC1uZXV0cmFsLTQwMFwiXG4gICAgICAgICAgICAgICAgICBbaXNDb2xsYXBzZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJsb2FkTW9kdWxlRGF0YShtLmlkLCAkZXZlbnQsICdmZWF0dXJlcycpXCJcbiAgICAgICAgICAgICAgICAgIFtjYXB0aW9uXT1cIignZGVzaWduZXIuZmVhdHVyZXMnIHwgdHJhbnNsYXRlIHwgYXN5bmMpID8/ICdGZWF0dXJlcydcIlxuICAgICAgICAgICAgICAgICAgbG9vaz1cIm5vbmVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbXNUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogZ2V0RmVhdHVyZXMobS5pZCkgfVwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9heC1jb2xsYXBzZT5cblxuICAgICAgICAgICAgICAgIDxheC1jb2xsYXBzZVxuICAgICAgICAgICAgICAgICAgaWNvbj1cImZhcyBmYS1rZXkgYXgtdGV4dC1uZXV0cmFsLTQwMFwiXG4gICAgICAgICAgICAgICAgICBbaXNDb2xsYXBzZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJsb2FkTW9kdWxlRGF0YShtLmlkLCAkZXZlbnQsICdwZXJtaXNzaW9ucycpXCJcbiAgICAgICAgICAgICAgICAgIFtjYXB0aW9uXT1cIignZGVzaWduZXIucGVybWlzc2lvbnMnIHwgdHJhbnNsYXRlIHwgYXN5bmMpID8/ICdQZXJtaXNzaW9ucydcIlxuICAgICAgICAgICAgICAgICAgbG9vaz1cIm5vbmVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbXNUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogZ2V0UGVybWlzc2lvbnMobS5pZCkgfVwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9heC1jb2xsYXBzZT5cbiAgICAgICAgICAgICAgPC9heC1jb2xsYXBzZS1ncm91cD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXgtY29sbGFwc2U+XG4gICAgICAgICAgfVxuICAgICAgICA8L2F4LWNvbGxhcHNlLWdyb3VwPlxuICAgICAgPC9kaXY+XG4gICAgPC9heC1jb250ZW50PlxuXG4gICAgPG5nLXRlbXBsYXRlICNpdGVtc1RlbXBsYXRlIGxldC1pdGVtcz5cbiAgICAgIDxkaXZcbiAgICAgICAgKGNvbnRleHRtZW51KT1cIm9uUmlnaHRDbGljaygkZXZlbnQpXCJcbiAgICAgICAgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWN1cnNvci1wb2ludGVyIGF4LXNlbGVjdC1ub25lIGF4LWJvcmRlci1zIGF4LW1zLVs2cHhdIGF4LXBzLTJcIlxuICAgICAgPlxuICAgICAgICBAZm9yIChpdGVtIG9mIGl0ZW1zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LXB4LTIgYXgtcHktMSBob3ZlcjpheC1iZy1uZXV0cmFsLTEwMCBob3ZlcjpheC1yb3VuZGVkLW1kXCI+XG4gICAgICAgICAgPHNwYW4+e3sgaXRlbS50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvYXgtZHJhd2VyPlxuICA8YXgtY29udGVudD5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtb3ZlcmZsb3ctYXV0b1wiPlRFU1Q8L2Rpdj5cbiAgPC9heC1jb250ZW50PlxuPC9heC1kcmF3ZXItY29udGFpbmVyPlxuIl19
|
@@ -0,0 +1,3 @@
|
|
1
|
+
export class AXPModuleDesignerService {
|
2
|
+
}
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWRlc2lnbmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL21vZHVsZS1kZXNpZ25lci9tb2R1bGUtZGVzaWduZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQWdCLHdCQUF3QjtDQTRCN0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQTW9kdWxlRGVzaWduZXJTZXJ2aWNlIHtcbiAgLy8gTW9kdWxlc1xuICBhYnN0cmFjdCBnZXRNb2R1bGVzKCk6IFByb21pc2U8eyB0b3RhbDogbnVtYmVyOyBpdGVtczogYW55W10gfT47XG4gIGFic3RyYWN0IGdldFNpbmdsZU1vZHVsZShtb2R1bGVJZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICBhYnN0cmFjdCBjcmVhdGVNb2R1bGUocGF5bG9hZDogYW55KTogUHJvbWlzZTxhbnk+O1xuICBhYnN0cmFjdCB1cGRhdGVNb2R1bGUobW9kdWxlSWQ6IHN0cmluZywgcGF5bG9hZDogYW55KTogUHJvbWlzZTxhbnk+O1xuICBhYnN0cmFjdCBkZWxldGVNb2R1bGUobW9kdWxlSWQ6IHN0cmluZyk6IFByb21pc2U8YW55PjtcblxuICAvLyBNb2R1bGUgRW50aXRpZXNcbiAgYWJzdHJhY3QgZ2V0RW50aXRpZXMobW9kdWxlSWQ6IHN0cmluZyk6IFByb21pc2U8eyB0b3RhbDogbnVtYmVyOyBpdGVtczogYW55W10gfT47XG4gIGFic3RyYWN0IGdldFNpbmdsZUVudGl0eShlbnRpdHlJZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICBhYnN0cmFjdCBjcmVhdGVFbnRpdHkocGF5bG9hZDogYW55KTogUHJvbWlzZTxhbnk+O1xuICBhYnN0cmFjdCB1cGRhdGVFbnRpdHkoZW50aXR5SWQ6IHN0cmluZywgcGF5bG9hZDogYW55KTogUHJvbWlzZTxhbnk+O1xuICBhYnN0cmFjdCBkZWxldGVFbnRpdHkoZW50aXR5SWQ6IHN0cmluZyk6IFByb21pc2U8YW55PjtcblxuICAvLyBNb2R1bGUgRmVhdHVyZXNcbiAgYWJzdHJhY3QgZ2V0RmVhdHVyZXMobW9kdWxlSWQ6IHN0cmluZyk6IFByb21pc2U8eyB0b3RhbDogbnVtYmVyOyBpdGVtczogYW55W10gfT47XG4gIGFic3RyYWN0IGdldFNpbmdsZUZlYXR1cmUoZmVhdHVyZUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG4gIGFic3RyYWN0IGNyZWF0ZUZlYXR1cmUocGF5bG9hZDogYW55KTogUHJvbWlzZTxhbnk+O1xuICBhYnN0cmFjdCB1cGRhdGVGZWF0dXJlKGZlYXR1cmVJZDogc3RyaW5nLCBwYXlsb2FkOiBhbnkpOiBQcm9taXNlPGFueT47XG4gIGFic3RyYWN0IGRlbGV0ZUZlYXR1cmUoZmVhdHVyZUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG5cbiAgLy8gTW9kdWxlIFBlcm1pc3Npb25zXG4gIGFic3RyYWN0IGdldFBlcm1pc3Npb25zKG1vZHVsZUlkOiBzdHJpbmcpOiBQcm9taXNlPHsgdG90YWw6IG51bWJlcjsgaXRlbXM6IGFueVtdIH0+O1xuICBhYnN0cmFjdCBnZXRTaW5nbGVQZXJtaXNzaW9uKHBlcm1pc3Npb25JZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xuICBhYnN0cmFjdCBjcmVhdGVQZXJtaXNzaW9uKHBheWxvYWQ6IGFueSk6IFByb21pc2U8YW55PjtcbiAgYWJzdHJhY3QgdXBkYXRlUGVybWlzc2lvbihwZXJtaXNzaW9uSWQ6IHN0cmluZywgcGF5bG9hZDogYW55KTogUHJvbWlzZTxhbnk+O1xuICBhYnN0cmFjdCBkZWxldGVQZXJtaXNzaW9uKHBlcm1pc3Npb25JZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xufVxuIl19
|