@acorex/modules 18.1.2 → 18.1.4
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/lib/layouts/index.d.ts +0 -1
- package/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.d.ts +1 -2
- package/application-management/lib/workflows/index.d.ts +0 -1
- package/backend/lib/data/api/comment.mock.service.d.ts +62 -0
- package/backend/lib/data/index.d.ts +1 -0
- package/esm2022/application-management/lib/application-management.module.mjs +2 -6
- package/esm2022/application-management/lib/entities/property.entity.mjs +10 -12
- package/esm2022/application-management/lib/layouts/index.mjs +1 -2
- package/esm2022/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.mjs +3 -17
- package/esm2022/application-management/lib/workflows/index.mjs +1 -2
- package/esm2022/auth/lib/account/profile/profile-slot.component.mjs +3 -11
- package/esm2022/backend/lib/backend.module.mjs +2 -2
- package/esm2022/backend/lib/data/api/comment.mock.service.mjs +142 -0
- package/esm2022/backend/lib/data/index.mjs +2 -1
- package/esm2022/notification-management/acorex-modules-notification-management.mjs +5 -0
- package/esm2022/notification-management/index.mjs +4 -0
- package/esm2022/notification-management/lib/entities/notification-channel.entity.mjs +329 -0
- package/esm2022/notification-management/lib/entities/notification-template.entity.mjs +298 -0
- package/esm2022/notification-management/lib/notification-management-mock-data.mjs +20 -0
- package/esm2022/notification-management/lib/notification-management.module.mjs +44 -0
- package/esm2022/notification-management/lib/notification-management.service.mjs +30 -0
- package/esm2022/template-management/acorex-modules-template-management.mjs +5 -0
- package/esm2022/template-management/index.mjs +4 -0
- package/esm2022/template-management/lib/entities/global-template.entity.mjs +298 -0
- package/esm2022/template-management/lib/entities/template-variable.entity.mjs +304 -0
- package/esm2022/template-management/lib/template-management-mock-data.mjs +11 -0
- package/esm2022/template-management/lib/template-management.module.mjs +45 -0
- package/esm2022/template-management/lib/template-management.service.mjs +24 -0
- package/fesm2022/{acorex-modules-application-management-module-designer.component-CRPUuYUe.mjs → acorex-modules-application-management-module-designer.component-C-lY0Apl.mjs} +1 -4
- package/fesm2022/{acorex-modules-application-management-module-designer.component-CRPUuYUe.mjs.map → acorex-modules-application-management-module-designer.component-C-lY0Apl.mjs.map} +1 -1
- package/fesm2022/acorex-modules-application-management.mjs +14 -145
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CS3UFdX0.mjs → acorex-modules-auth-acorex-modules-auth-4OzzidjS.mjs} +10 -18
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-4OzzidjS.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-app-chooser.component-BlJbIMKi.mjs → acorex-modules-auth-app-chooser.component-CHTEeWgx.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-app-chooser.component-BlJbIMKi.mjs.map → acorex-modules-auth-app-chooser.component-CHTEeWgx.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-DGBKGxI3.mjs → acorex-modules-auth-login.module-DMit4yw0.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-DGBKGxI3.mjs.map → acorex-modules-auth-login.module-DMit4yw0.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-B_8Sfw0M.mjs → acorex-modules-auth-master.layout-BCYIjTB0.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-B_8Sfw0M.mjs.map → acorex-modules-auth-master.layout-BCYIjTB0.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-BfDjRRN_.mjs → acorex-modules-auth-password.component-D16ms36y.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-BfDjRRN_.mjs.map → acorex-modules-auth-password.component-D16ms36y.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-DZJ1qwfa.mjs → acorex-modules-auth-password.component-WA-CA0Ln.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-DZJ1qwfa.mjs.map → acorex-modules-auth-password.component-WA-CA0Ln.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-routes-Bw7nXDvx.mjs → acorex-modules-auth-routes-C3ye31RS.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-Bw7nXDvx.mjs.map → acorex-modules-auth-routes-C3ye31RS.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-DKStBo1V.mjs → acorex-modules-auth-two-factor.module-CkZCBo0B.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-two-factor.module-DKStBo1V.mjs.map → acorex-modules-auth-two-factor.module-CkZCBo0B.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-backend.mjs +142 -3
- package/fesm2022/acorex-modules-backend.mjs.map +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +728 -0
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -0
- package/fesm2022/acorex-modules-template-management.mjs +690 -0
- package/fesm2022/acorex-modules-template-management.mjs.map +1 -0
- package/notification-management/README.md +3 -0
- package/notification-management/index.d.ts +3 -0
- package/notification-management/lib/entities/notification-channel.entity.d.ts +3 -0
- package/notification-management/lib/entities/notification-template.entity.d.ts +3 -0
- package/notification-management/lib/notification-management-mock-data.d.ts +13 -0
- package/notification-management/lib/notification-management.module.d.ts +12 -0
- package/notification-management/lib/notification-management.service.d.ts +11 -0
- package/package.json +13 -1
- package/template-management/README.md +3 -0
- package/template-management/index.d.ts +3 -0
- package/template-management/lib/entities/global-template.entity.d.ts +3 -0
- package/template-management/lib/entities/template-variable.entity.d.ts +3 -0
- package/template-management/lib/template-management-mock-data.d.ts +7 -0
- package/template-management/lib/template-management.module.d.ts +12 -0
- package/template-management/lib/template-management.service.d.ts +9 -0
- package/application-management/lib/layouts/property-detail-view/modify-property-interface.component.d.ts +0 -5
- package/application-management/lib/workflows/modify-property-interface.workflow.d.ts +0 -26
- package/esm2022/application-management/lib/layouts/property-detail-view/modify-property-interface.component.mjs +0 -55
- package/esm2022/application-management/lib/workflows/modify-property-interface.workflow.mjs +0 -79
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-CS3UFdX0.mjs.map +0 -1
@@ -0,0 +1,329 @@
|
|
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 { NotificationManagementService } from '../notification-management.service';
|
5
|
+
export async function notificationChannelEntityFactory(injector) {
|
6
|
+
const dataService = injector.get(NotificationManagementService);
|
7
|
+
const entityDef = {
|
8
|
+
module: 'notification-management',
|
9
|
+
name: 'notificationChannel',
|
10
|
+
source: 'notification-management.notificationChannel',
|
11
|
+
title: 'Notification Channel',
|
12
|
+
formats: {
|
13
|
+
individual: 'Channel',
|
14
|
+
plural: 'Channels',
|
15
|
+
},
|
16
|
+
relatedEntities: [],
|
17
|
+
groups: [
|
18
|
+
{
|
19
|
+
id: 'notificationChannel',
|
20
|
+
title: 'Notification Channel',
|
21
|
+
},
|
22
|
+
],
|
23
|
+
properties: [
|
24
|
+
{
|
25
|
+
name: 'title',
|
26
|
+
title: 'Title',
|
27
|
+
groupId: 'notificationChannel',
|
28
|
+
schema: {
|
29
|
+
dataType: 'string',
|
30
|
+
interface: {
|
31
|
+
type: AXPWidgetsCatalog.text,
|
32
|
+
},
|
33
|
+
},
|
34
|
+
validations: [
|
35
|
+
{
|
36
|
+
rule: 'required',
|
37
|
+
},
|
38
|
+
],
|
39
|
+
},
|
40
|
+
{
|
41
|
+
name: 'template',
|
42
|
+
title: 'Template',
|
43
|
+
groupId: 'notificationChannel',
|
44
|
+
schema: {
|
45
|
+
dataType: 'string',
|
46
|
+
interface: {
|
47
|
+
type: AXPWidgetsCatalog.lookup,
|
48
|
+
options: {
|
49
|
+
entity: 'template-management.globalTemplate',
|
50
|
+
expose: { source: 'content', target: 'body' },
|
51
|
+
},
|
52
|
+
},
|
53
|
+
},
|
54
|
+
},
|
55
|
+
{
|
56
|
+
name: 'body',
|
57
|
+
title: 'Body',
|
58
|
+
groupId: 'notificationChannel',
|
59
|
+
schema: {
|
60
|
+
dataType: 'string',
|
61
|
+
interface: {
|
62
|
+
type: AXPWidgetsCatalog.largeText,
|
63
|
+
},
|
64
|
+
},
|
65
|
+
validations: [
|
66
|
+
{
|
67
|
+
rule: 'required',
|
68
|
+
},
|
69
|
+
],
|
70
|
+
},
|
71
|
+
{
|
72
|
+
name: 'channel',
|
73
|
+
title: 'Channel',
|
74
|
+
groupId: 'notificationChannel',
|
75
|
+
schema: {
|
76
|
+
dataType: 'string',
|
77
|
+
interface: {
|
78
|
+
type: AXPWidgetsCatalog.select,
|
79
|
+
options: {
|
80
|
+
valueField: 'name',
|
81
|
+
textField: 'title',
|
82
|
+
dataSource: [
|
83
|
+
{ title: 'SMS', name: 'sms' },
|
84
|
+
{ title: 'Email', name: 'email' },
|
85
|
+
{ title: 'In App', name: 'inApp' },
|
86
|
+
],
|
87
|
+
direction: 'horizontal',
|
88
|
+
multiple: false,
|
89
|
+
},
|
90
|
+
},
|
91
|
+
},
|
92
|
+
validations: [
|
93
|
+
{
|
94
|
+
rule: 'required',
|
95
|
+
},
|
96
|
+
],
|
97
|
+
},
|
98
|
+
],
|
99
|
+
columns: [{ name: 'title' }, { name: 'body' }, { name: 'channel' }],
|
100
|
+
commands: {
|
101
|
+
create: {
|
102
|
+
execute: async (data) => {
|
103
|
+
const entity = Object.assign(data, { id: AXPDataGenerator.uuid() });
|
104
|
+
dataService.notificationChannelDataProvider.insertOne(entity);
|
105
|
+
return Promise.resolve(entity);
|
106
|
+
},
|
107
|
+
},
|
108
|
+
delete: {
|
109
|
+
execute: async (id) => {
|
110
|
+
await await dataService.notificationChannelDataProvider.deleteOne(id);
|
111
|
+
return Promise.resolve();
|
112
|
+
},
|
113
|
+
},
|
114
|
+
update: {
|
115
|
+
execute: async (data) => {
|
116
|
+
debugger;
|
117
|
+
return new Promise((resolve) => {
|
118
|
+
setTimeout(async () => {
|
119
|
+
await dataService.notificationChannelDataProvider.updateOne(data.id, data);
|
120
|
+
resolve(data);
|
121
|
+
}, 1000);
|
122
|
+
});
|
123
|
+
},
|
124
|
+
},
|
125
|
+
},
|
126
|
+
queries: {
|
127
|
+
byKey: {
|
128
|
+
execute: async (id) => {
|
129
|
+
return new Promise((resolve) => {
|
130
|
+
setTimeout(async () => {
|
131
|
+
const entity = await dataService.notificationChannelDataProvider.getOne(id);
|
132
|
+
resolve(entity);
|
133
|
+
}, 500);
|
134
|
+
});
|
135
|
+
},
|
136
|
+
type: AXPEntityQueryType.Single,
|
137
|
+
},
|
138
|
+
list: {
|
139
|
+
execute: async (e) => {
|
140
|
+
const list = await dataService.notificationChannelDataProvider.getAll();
|
141
|
+
const sortedItems = applySortArray(list, e.sort);
|
142
|
+
const filteredItems = applyFilterArray(sortedItems, e.filter ? [e.filter] : []);
|
143
|
+
return Promise.resolve({
|
144
|
+
total: filteredItems.length,
|
145
|
+
items: filteredItems.slice(e.skip, (e.skip ?? 0) + (e.take ?? 0)),
|
146
|
+
});
|
147
|
+
},
|
148
|
+
type: AXPEntityQueryType.List,
|
149
|
+
},
|
150
|
+
},
|
151
|
+
interfaces: {
|
152
|
+
master: {
|
153
|
+
create: {
|
154
|
+
sections: [
|
155
|
+
{
|
156
|
+
id: 'notificationChannel',
|
157
|
+
},
|
158
|
+
],
|
159
|
+
properties: [
|
160
|
+
{
|
161
|
+
name: 'title',
|
162
|
+
layout: {
|
163
|
+
positions: {
|
164
|
+
lg: {
|
165
|
+
colSpan: 12,
|
166
|
+
},
|
167
|
+
},
|
168
|
+
},
|
169
|
+
},
|
170
|
+
{
|
171
|
+
name: 'body',
|
172
|
+
layout: {
|
173
|
+
positions: {
|
174
|
+
lg: {
|
175
|
+
colSpan: 12,
|
176
|
+
},
|
177
|
+
},
|
178
|
+
},
|
179
|
+
},
|
180
|
+
{
|
181
|
+
name: 'template',
|
182
|
+
layout: {
|
183
|
+
positions: {
|
184
|
+
lg: {
|
185
|
+
colSpan: 12,
|
186
|
+
},
|
187
|
+
},
|
188
|
+
},
|
189
|
+
},
|
190
|
+
{
|
191
|
+
name: 'channel',
|
192
|
+
layout: {
|
193
|
+
positions: {
|
194
|
+
lg: {
|
195
|
+
colSpan: 12,
|
196
|
+
},
|
197
|
+
},
|
198
|
+
},
|
199
|
+
},
|
200
|
+
],
|
201
|
+
},
|
202
|
+
update: {
|
203
|
+
sections: [
|
204
|
+
{
|
205
|
+
id: 'notificationChannel',
|
206
|
+
},
|
207
|
+
],
|
208
|
+
properties: [
|
209
|
+
{
|
210
|
+
name: 'title',
|
211
|
+
layout: {
|
212
|
+
positions: {
|
213
|
+
lg: {
|
214
|
+
colSpan: 12,
|
215
|
+
},
|
216
|
+
},
|
217
|
+
},
|
218
|
+
},
|
219
|
+
{
|
220
|
+
name: 'body',
|
221
|
+
layout: {
|
222
|
+
positions: {
|
223
|
+
lg: {
|
224
|
+
colSpan: 12,
|
225
|
+
},
|
226
|
+
},
|
227
|
+
},
|
228
|
+
},
|
229
|
+
{
|
230
|
+
name: 'channel',
|
231
|
+
layout: {
|
232
|
+
positions: {
|
233
|
+
lg: {
|
234
|
+
colSpan: 12,
|
235
|
+
},
|
236
|
+
},
|
237
|
+
},
|
238
|
+
},
|
239
|
+
],
|
240
|
+
},
|
241
|
+
single: {
|
242
|
+
title: '{{title}}',
|
243
|
+
sections: [
|
244
|
+
{
|
245
|
+
id: 'notificationChannel',
|
246
|
+
},
|
247
|
+
],
|
248
|
+
properties: [
|
249
|
+
{
|
250
|
+
name: 'title',
|
251
|
+
layout: {
|
252
|
+
positions: {
|
253
|
+
lg: {
|
254
|
+
colSpan: 6,
|
255
|
+
},
|
256
|
+
},
|
257
|
+
},
|
258
|
+
},
|
259
|
+
{
|
260
|
+
name: 'body',
|
261
|
+
layout: {
|
262
|
+
positions: {
|
263
|
+
lg: {
|
264
|
+
colSpan: 6,
|
265
|
+
},
|
266
|
+
},
|
267
|
+
},
|
268
|
+
},
|
269
|
+
{
|
270
|
+
name: 'channel',
|
271
|
+
layout: {
|
272
|
+
positions: {
|
273
|
+
lg: {
|
274
|
+
colSpan: 12,
|
275
|
+
},
|
276
|
+
},
|
277
|
+
},
|
278
|
+
},
|
279
|
+
],
|
280
|
+
actions: [],
|
281
|
+
},
|
282
|
+
list: {
|
283
|
+
actions: [
|
284
|
+
{
|
285
|
+
title: 'Create New',
|
286
|
+
command: 'create-entity',
|
287
|
+
priority: 'primary',
|
288
|
+
type: 'create',
|
289
|
+
scope: AXPEntityCommandScope.TypeLevel,
|
290
|
+
},
|
291
|
+
{
|
292
|
+
title: 'Delete Items',
|
293
|
+
command: 'delete-entity',
|
294
|
+
priority: 'primary',
|
295
|
+
type: 'delete',
|
296
|
+
scope: AXPEntityCommandScope.Selected,
|
297
|
+
},
|
298
|
+
{
|
299
|
+
title: 'Details',
|
300
|
+
command: 'open-entity',
|
301
|
+
priority: 'primary',
|
302
|
+
type: 'view',
|
303
|
+
scope: AXPEntityCommandScope.Individual,
|
304
|
+
},
|
305
|
+
{
|
306
|
+
title: 'Delete',
|
307
|
+
command: 'delete-entity',
|
308
|
+
priority: 'primary',
|
309
|
+
type: 'delete',
|
310
|
+
scope: AXPEntityCommandScope.Individual,
|
311
|
+
},
|
312
|
+
],
|
313
|
+
views: [
|
314
|
+
{
|
315
|
+
name: 'all',
|
316
|
+
title: 'All Items',
|
317
|
+
fixed: true,
|
318
|
+
columns: [],
|
319
|
+
conditions: [],
|
320
|
+
sorts: [],
|
321
|
+
},
|
322
|
+
],
|
323
|
+
},
|
324
|
+
},
|
325
|
+
},
|
326
|
+
};
|
327
|
+
return entityDef;
|
328
|
+
}
|
329
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWNoYW5uZWwuZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL25vdGlmaWNhdGlvbi1tYW5hZ2VtZW50L3NyYy9saWIvZW50aXRpZXMvbm90aWZpY2F0aW9uLWNoYW5uZWwuZW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBYSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVuRixNQUFNLENBQUMsS0FBSyxVQUFVLGdDQUFnQyxDQUFDLFFBQWtCO0lBQ3ZFLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUVoRSxNQUFNLFNBQVMsR0FBYztRQUMzQixNQUFNLEVBQUUseUJBQXlCO1FBQ2pDLElBQUksRUFBRSxxQkFBcUI7UUFDM0IsTUFBTSxFQUFFLDZDQUE2QztRQUNyRCxLQUFLLEVBQUUsc0JBQXNCO1FBQzdCLE9BQU8sRUFBRTtZQUNQLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLE1BQU0sRUFBRSxVQUFVO1NBQ25CO1FBQ0QsZUFBZSxFQUFFLEVBQUU7UUFDbkIsTUFBTSxFQUFFO1lBQ047Z0JBQ0UsRUFBRSxFQUFFLHFCQUFxQjtnQkFDekIsS0FBSyxFQUFFLHNCQUFzQjthQUM5QjtTQUNGO1FBQ0QsVUFBVSxFQUFFO1lBQ1Y7Z0JBQ0UsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsS0FBSyxFQUFFLE9BQU87Z0JBQ2QsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsTUFBTSxF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LFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQRGF0YUdlbmVyYXRvciwgQVhQRW50aXR5LCBBWFBFbnRpdHlDb21tYW5kU2NvcGUsIEFYUEVudGl0eVF1ZXJ5VHlwZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IGFwcGx5RmlsdGVyQXJyYXksIGFwcGx5U29ydEFycmF5IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUFdpZGdldHNDYXRhbG9nIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uTWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi9ub3RpZmljYXRpb24tbWFuYWdlbWVudC5zZXJ2aWNlJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG5vdGlmaWNhdGlvbkNoYW5uZWxFbnRpdHlGYWN0b3J5KGluamVjdG9yOiBJbmplY3Rvcik6IFByb21pc2U8QVhQRW50aXR5IHwgbnVsbD4ge1xuICBjb25zdCBkYXRhU2VydmljZSA9IGluamVjdG9yLmdldChOb3RpZmljYXRpb25NYW5hZ2VtZW50U2VydmljZSk7XG5cbiAgY29uc3QgZW50aXR5RGVmOiBBWFBFbnRpdHkgPSB7XG4gICAgbW9kdWxlOiAnbm90aWZpY2F0aW9uLW1hbmFnZW1lbnQnLFxuICAgIG5hbWU6ICdub3RpZmljYXRpb25DaGFubmVsJyxcbiAgICBzb3VyY2U6ICdub3RpZmljYXRpb24tbWFuYWdlbWVudC5ub3RpZmljYXRpb25DaGFubmVsJyxcbiAgICB0aXRsZTogJ05vdGlmaWNhdGlvbiBDaGFubmVsJyxcbiAgICBmb3JtYXRzOiB7XG4gICAgICBpbmRpdmlkdWFsOiAnQ2hhbm5lbCcsXG4gICAgICBwbHVyYWw6ICdDaGFubmVscycsXG4gICAgfSxcbiAgICByZWxhdGVkRW50aXRpZXM6IFtdLFxuICAgIGdyb3VwczogW1xuICAgICAge1xuICAgICAgICBpZDogJ25vdGlmaWNhdGlvbkNoYW5uZWwnLFxuICAgICAgICB0aXRsZTogJ05vdGlmaWNhdGlvbiBDaGFubmVsJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICd0aXRsZScsXG4gICAgICAgIHRpdGxlOiAnVGl0bGUnLFxuICAgICAgICBncm91cElkOiAnbm90aWZpY2F0aW9uQ2hhbm5lbCcsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsaWRhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBydWxlOiAncmVxdWlyZWQnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAndGVtcGxhdGUnLFxuICAgICAgICB0aXRsZTogJ1RlbXBsYXRlJyxcbiAgICAgICAgZ3JvdXBJZDogJ25vdGlmaWNhdGlvbkNoYW5uZWwnLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5sb29rdXAsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIGVudGl0eTogJ3RlbXBsYXRlLW1hbmFnZW1lbnQuZ2xvYmFsVGVtcGxhdGUnLFxuICAgICAgICAgICAgICBleHBvc2U6IHsgc291cmNlOiAnY29udGVudCcsIHRhcmdldDogJ2JvZHknIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnYm9keScsXG4gICAgICAgIHRpdGxlOiAnQm9keScsXG4gICAgICAgIGdyb3VwSWQ6ICdub3RpZmljYXRpb25DaGFubmVsJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cubGFyZ2VUZXh0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHZhbGlkYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcnVsZTogJ3JlcXVpcmVkJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2NoYW5uZWwnLFxuICAgICAgICB0aXRsZTogJ0NoYW5uZWwnLFxuICAgICAgICBncm91cElkOiAnbm90aWZpY2F0aW9uQ2hhbm5lbCcsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnNlbGVjdCxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgdmFsdWVGaWVsZDogJ25hbWUnLFxuICAgICAgICAgICAgICB0ZXh0RmllbGQ6ICd0aXRsZScsXG4gICAgICAgICAgICAgIGRhdGFTb3VyY2U6IFtcbiAgICAgICAgICAgICAgICB7IHRpdGxlOiAnU01TJywgbmFtZTogJ3NtcycgfSxcbiAgICAgICAgICAgICAgICB7IHRpdGxlOiAnRW1haWwnLCBuYW1lOiAnZW1haWwnIH0sXG4gICAgICAgICAgICAgICAgeyB0aXRsZTogJ0luIEFwcCcsIG5hbWU6ICdpbkFwcCcgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgZGlyZWN0aW9uOiAnaG9yaXpvbnRhbCcsXG4gICAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsaWRhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBydWxlOiAncmVxdWlyZWQnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgY29sdW1uczogW3sgbmFtZTogJ3RpdGxlJyB9LCB7IG5hbWU6ICdib2R5JyB9LCB7IG5hbWU6ICdjaGFubmVsJyB9XSxcbiAgICBjb21tYW5kczoge1xuICAgICAgY3JlYXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBlbnRpdHkgPSBPYmplY3QuYXNzaWduKGRhdGEsIHsgaWQ6IEFYUERhdGFHZW5lcmF0b3IudXVpZCgpIH0pO1xuXG4gICAgICAgICAgZGF0YVNlcnZpY2Uubm90aWZpY2F0aW9uQ2hhbm5lbERhdGFQcm92aWRlci5pbnNlcnRPbmUoZW50aXR5KTtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGVudGl0eSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZGVsZXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChpZDogYW55KSA9PiB7XG4gICAgICAgICAgYXdhaXQgYXdhaXQgZGF0YVNlcnZpY2Uubm90aWZpY2F0aW9uQ2hhbm5lbERhdGFQcm92aWRlci5kZWxldGVPbmUoaWQpO1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB1cGRhdGU6IHtcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGRlYnVnZ2VyO1xuICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgIGF3YWl0IGRhdGFTZXJ2aWNlLm5vdGlmaWNhdGlvbkNoYW5uZWxEYXRhUHJvdmlkZXIudXBkYXRlT25lKGRhdGEuaWQsIGRhdGEpO1xuICAgICAgICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgcXVlcmllczoge1xuICAgICAgYnlLZXk6IHtcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKGlkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBlbnRpdHkgPSBhd2FpdCBkYXRhU2VydmljZS5ub3RpZmljYXRpb25DaGFubmVsRGF0YVByb3ZpZGVyLmdldE9uZShpZCk7XG4gICAgICAgICAgICAgIHJlc29sdmUoZW50aXR5KTtcbiAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IEFYUEVudGl0eVF1ZXJ5VHlwZS5TaW5nbGUsXG4gICAgICB9LFxuICAgICAgbGlzdDoge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoZTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgbGlzdCA9IGF3YWl0IGRhdGFTZXJ2aWNlLm5vdGlmaWNhdGlvbkNoYW5uZWxEYXRhUHJvdmlkZXIuZ2V0QWxsKCk7XG4gICAgICAgICAgY29uc3Qgc29ydGVkSXRlbXMgPSBhcHBseVNvcnRBcnJheShsaXN0LCBlLnNvcnQpO1xuICAgICAgICAgIGNvbnN0IGZpbHRlcmVkSXRlbXMgPSBhcHBseUZpbHRlckFycmF5KHNvcnRlZEl0ZW1zLCBlLmZpbHRlciA/IFtlLmZpbHRlcl0gOiBbXSk7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICB0b3RhbDogZmlsdGVyZWRJdGVtcy5sZW5ndGgsXG4gICAgICAgICAgICBpdGVtczogZmlsdGVyZWRJdGVtcy5zbGljZShlLnNraXAsIChlLnNraXAgPz8gMCkgKyAoZS50YWtlID8/IDApKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogQVhQRW50aXR5UXVlcnlUeXBlLkxpc3QsXG4gICAgICB9LFxuICAgIH0sXG4gICAgaW50ZXJmYWNlczoge1xuICAgICAgbWFzdGVyOiB7XG4gICAgICAgIGNyZWF0ZToge1xuICAgICAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnbm90aWZpY2F0aW9uQ2hhbm5lbCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcHJvcGVydGllczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDEyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2JvZHknLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDEyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RlbXBsYXRlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiAxMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdjaGFubmVsJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiAxMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlOiB7XG4gICAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdub3RpZmljYXRpb25DaGFubmVsJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnYm9keScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnY2hhbm5lbCcsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHNpbmdsZToge1xuICAgICAgICAgIHRpdGxlOiAne3t0aXRsZX19JyxcbiAgICAgICAgICBzZWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ25vdGlmaWNhdGlvbkNoYW5uZWwnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2JvZHknLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnY2hhbm5lbCcsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgYWN0aW9uczogW10sXG4gICAgICAgIH0sXG4gICAgICAgIGxpc3Q6IHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiAnQ3JlYXRlIE5ldycsXG4gICAgICAgICAgICAgIGNvbW1hbmQ6ICdjcmVhdGUtZW50aXR5JyxcbiAgICAgICAgICAgICAgcHJpb3JpdHk6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICAgdHlwZTogJ2NyZWF0ZScsXG4gICAgICAgICAgICAgIHNjb3BlOiBBWFBFbnRpdHlDb21tYW5kU2NvcGUuVHlwZUxldmVsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6ICdEZWxldGUgSXRlbXMnLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnZGVsZXRlLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAncHJpbWFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgICAgICAgICBzY29wZTogQVhQRW50aXR5Q29tbWFuZFNjb3BlLlNlbGVjdGVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6ICdEZXRhaWxzJyxcbiAgICAgICAgICAgICAgY29tbWFuZDogJ29wZW4tZW50aXR5JyxcbiAgICAgICAgICAgICAgcHJpb3JpdHk6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICAgdHlwZTogJ3ZpZXcnLFxuICAgICAgICAgICAgICBzY29wZTogQVhQRW50aXR5Q29tbWFuZFNjb3BlLkluZGl2aWR1YWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0aXRsZTogJ0RlbGV0ZScsXG4gICAgICAgICAgICAgIGNvbW1hbmQ6ICdkZWxldGUtZW50aXR5JyxcbiAgICAgICAgICAgICAgcHJpb3JpdHk6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICAgdHlwZTogJ2RlbGV0ZScsXG4gICAgICAgICAgICAgIHNjb3BlOiBBWFBFbnRpdHlDb21tYW5kU2NvcGUuSW5kaXZpZHVhbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICB2aWV3czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnYWxsJyxcbiAgICAgICAgICAgICAgdGl0bGU6ICdBbGwgSXRlbXMnLFxuICAgICAgICAgICAgICBmaXhlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgY29sdW1uczogW10sXG4gICAgICAgICAgICAgIGNvbmRpdGlvbnM6IFtdLFxuICAgICAgICAgICAgICBzb3J0czogW10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG5cbiAgcmV0dXJuIGVudGl0eURlZjtcbn1cbiJdfQ==
|