@sumaris-net/ngx-components 18.0.2-alpha4 → 18.0.2-alpha6
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/esm2022/src/app/admin/services/person.service.mjs +6 -3
- package/esm2022/src/app/core/account/account.page.mjs +1 -1
- package/esm2022/src/app/core/form/properties/properties.form.mjs +14 -4
- package/esm2022/src/app/core/form/properties/properties.utils.mjs +74 -31
- package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +7 -13
- package/esm2022/src/app/core/graphql/graphql.service.mjs +1 -1
- package/esm2022/src/app/core/services/base-entity-service.class.mjs +1 -1
- package/esm2022/src/app/core/services/model/config.model.mjs +1 -1
- package/esm2022/src/app/core/services/model/entity.model.mjs +2 -2
- package/esm2022/src/app/core/services/model/settings.model.mjs +1 -1
- package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +1 -1
- package/esm2022/src/app/core/services/storage/entity-store.class.mjs +1 -1
- package/esm2022/src/app/core/settings/settings.page.mjs +4 -5
- package/esm2022/src/app/shared/form/field.component.mjs +3 -3
- package/esm2022/src/app/shared/services/entity-service.class.mjs +1 -1
- package/esm2022/src/app/shared/services.mjs +25 -17
- package/esm2022/src/app/shared/types.mjs +1 -1
- package/fesm2022/sumaris-net.ngx-components.mjs +2691 -2633
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +3 -2
- package/src/app/admin/services/person.service.d.ts +3 -6
- package/src/app/core/form/properties/properties.form.d.ts +6 -5
- package/src/app/core/form/properties/properties.utils.d.ts +11 -9
- package/src/app/core/form/properties/testing/properties-form.test.d.ts +2 -1
- package/src/app/core/graphql/graphql.service.d.ts +2 -2
- package/src/app/core/services/base-entity-service.class.d.ts +1 -1
- package/src/app/core/services/model/config.model.d.ts +2 -2
- package/src/app/core/services/model/entity.model.d.ts +2 -2
- package/src/app/core/services/model/settings.model.d.ts +2 -2
- package/src/app/core/services/storage/entities-storage.service.d.ts +4 -4
- package/src/app/core/services/storage/entity-store.class.d.ts +4 -4
- package/src/app/shared/services/entity-service.class.d.ts +2 -0
- package/src/app/shared/services.d.ts +6 -1
- package/src/app/shared/types.d.ts +10 -5
- package/src/assets/i18n/en-US.json +7 -2
- package/src/assets/i18n/en.json +6 -1
- package/src/assets/i18n/fr.json +3 -2
- package/src/assets/manifest.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getPropertyByPath, isNil, isNilOrBlank, isNotEmptyArray, isNotNilOrBlank, isPromise, toBoolean, toNumber } from '../../../shared/functions';
|
|
1
|
+
import { getPropertyByPath, isNil, isNilOrBlank, isNotEmptyArray, isNotNil, isNotNilOrBlank, isPromise, toBoolean, toNumber, } from '../../../shared/functions';
|
|
2
2
|
export class AppPropertiesUtils {
|
|
3
3
|
/**
|
|
4
4
|
* Converts an array of `Property` objects into a `PropertiesMap` object.
|
|
@@ -7,7 +7,7 @@ export class AppPropertiesUtils {
|
|
|
7
7
|
* @param {FormFieldDefinition[]} [definitions] - An optional array of form field definitions to help with the conversion.
|
|
8
8
|
* @param {Object} [opts] - Optional configurations.
|
|
9
9
|
* @param {boolean} [opts.omitNilOrBlank] - If true, properties with nil or blank values will be omitted. Defaults to true.
|
|
10
|
-
* @return {
|
|
10
|
+
* @return {PropertyMap} - The resulting `PropertiesMap` object.
|
|
11
11
|
*/
|
|
12
12
|
static arrayAsObject(sources, definitions, opts) {
|
|
13
13
|
return ((sources || [])
|
|
@@ -15,7 +15,7 @@ export class AppPropertiesUtils {
|
|
|
15
15
|
.map((source) => {
|
|
16
16
|
if (!source)
|
|
17
17
|
return undefined;
|
|
18
|
-
const key = AppPropertyUtils.
|
|
18
|
+
const key = AppPropertyUtils.getPropertyKey(source);
|
|
19
19
|
if (!key)
|
|
20
20
|
return undefined;
|
|
21
21
|
const def = definitions?.find((d) => d.key === key);
|
|
@@ -35,11 +35,13 @@ export class AppPropertiesUtils {
|
|
|
35
35
|
/**
|
|
36
36
|
* Generates an array of properties from the given object, optionally applying definitions to the properties.
|
|
37
37
|
*
|
|
38
|
-
* @param {
|
|
38
|
+
* @param {PropertyMap} [sources] - The source object from which properties are to be extracted.
|
|
39
39
|
* @param {FormFieldDefinition[]} [definitions] - An optional array of definitions to be applied to the extracted properties.
|
|
40
40
|
* @return {Property[] | Promise<Property[]>} An array of properties generated from the source object, or a promise resolving to that array.
|
|
41
41
|
*/
|
|
42
42
|
static arrayFromObject(sources, definitions) {
|
|
43
|
+
// DEBUG
|
|
44
|
+
//console.debug(`[properties-utils] Convert property map into array of Property...`);
|
|
43
45
|
const targets = Array.isArray(sources)
|
|
44
46
|
? sources.slice()
|
|
45
47
|
: Object.getOwnPropertyNames(sources || {}).map((key) => ({
|
|
@@ -62,14 +64,17 @@ export class AppPropertiesUtils {
|
|
|
62
64
|
}
|
|
63
65
|
}
|
|
64
66
|
}
|
|
65
|
-
// Return as promise,
|
|
67
|
+
// Return as promise, when need
|
|
66
68
|
if (jobs.length)
|
|
67
69
|
return Promise.all(jobs).then(() => targets);
|
|
68
70
|
return targets;
|
|
69
71
|
}
|
|
70
72
|
}
|
|
71
73
|
export class AppPropertyUtils {
|
|
72
|
-
static key(
|
|
74
|
+
static key(key) {
|
|
75
|
+
return key?.key ?? key;
|
|
76
|
+
}
|
|
77
|
+
static getPropertyKey(source) {
|
|
73
78
|
if (!source)
|
|
74
79
|
return undefined;
|
|
75
80
|
return source.key?.key ?? source.key;
|
|
@@ -87,16 +92,31 @@ export class AppPropertyUtils {
|
|
|
87
92
|
if (!source)
|
|
88
93
|
return undefined;
|
|
89
94
|
// Serialize key (WARNING: can be an object, when using autocomplete field to edit a key - see AppPropertiesForm)
|
|
90
|
-
const key = AppPropertyUtils.
|
|
95
|
+
const key = AppPropertyUtils.getPropertyKey(source);
|
|
91
96
|
// Prepare a deserialize function
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
(
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
97
|
+
let serializeFn = def?.serialize;
|
|
98
|
+
if (!serializeFn) {
|
|
99
|
+
switch (def?.type || 'other') {
|
|
100
|
+
case 'enum':
|
|
101
|
+
case 'enums':
|
|
102
|
+
serializeFn = AppPropertyUtils.key;
|
|
103
|
+
break;
|
|
104
|
+
case 'entity':
|
|
105
|
+
case 'entities':
|
|
106
|
+
const serializeAttribute = def?.serializeAttribute ?? opts?.defaultSerializeAttribute ?? 'id';
|
|
107
|
+
serializeFn =
|
|
108
|
+
def?.serialize ||
|
|
109
|
+
((value) => {
|
|
110
|
+
const serializeValue = getPropertyByPath(value, serializeAttribute, value /*default value*/);
|
|
111
|
+
if (isNil(serializeValue))
|
|
112
|
+
return serializeValue;
|
|
113
|
+
return serializeValue.toString();
|
|
114
|
+
});
|
|
115
|
+
break;
|
|
116
|
+
default:
|
|
117
|
+
serializeFn = AppPropertyUtils.toString;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
100
120
|
let valueStr;
|
|
101
121
|
// Value is an array
|
|
102
122
|
if (Array.isArray(source.value)) {
|
|
@@ -111,7 +131,7 @@ export class AppPropertyUtils {
|
|
|
111
131
|
static fromObject(source, def, opts) {
|
|
112
132
|
if (!source?.key || isNil(source.value) || !def)
|
|
113
133
|
return source; // Skip if no key
|
|
114
|
-
//
|
|
134
|
+
// Clone the source
|
|
115
135
|
const target = { key: source.key, value: source.value };
|
|
116
136
|
const jobs = [];
|
|
117
137
|
// Resolve value
|
|
@@ -123,16 +143,26 @@ export class AppPropertyUtils {
|
|
|
123
143
|
case 'double':
|
|
124
144
|
target.value = toNumber(source.value, toNumber(def.defaultValue));
|
|
125
145
|
break;
|
|
126
|
-
case '
|
|
127
|
-
const
|
|
128
|
-
if (
|
|
129
|
-
const
|
|
130
|
-
target.value =
|
|
146
|
+
case 'enum':
|
|
147
|
+
const valueKey = AppPropertyUtils.key(target.value);
|
|
148
|
+
if (isNotNilOrBlank(valueKey)) {
|
|
149
|
+
const enumValue = def.values?.find((defValue) => defValue && valueKey === (defValue['key'] || defValue)) ?? null;
|
|
150
|
+
target.value = enumValue?.['key'] ?? enumValue ?? null;
|
|
131
151
|
}
|
|
132
152
|
else {
|
|
133
153
|
target.value = null;
|
|
134
154
|
}
|
|
135
155
|
break;
|
|
156
|
+
case 'enums':
|
|
157
|
+
const valueKeys = Array.isArray(source.value)
|
|
158
|
+
? source.value.map(AppPropertyUtils.key) // Copy
|
|
159
|
+
: typeof source.value === 'string'
|
|
160
|
+
? source.value.trim().split(/,+/)
|
|
161
|
+
: [AppPropertyUtils.key(source.value)];
|
|
162
|
+
target.value = valueKeys
|
|
163
|
+
.filter(isNotNil)
|
|
164
|
+
.map((key) => def.values?.find((defValue) => defValue && key === (defValue['key'] || defValue)) || { key, value: '?' });
|
|
165
|
+
break;
|
|
136
166
|
case 'entity':
|
|
137
167
|
// Deserialize entity (e.g. load entity from the id)
|
|
138
168
|
const valueOrPromise = AppPropertyUtils.resolveEntity(target.value, def, opts);
|
|
@@ -189,6 +219,10 @@ export class AppPropertyUtils {
|
|
|
189
219
|
return this.resolveEntityBySuggest(value, def, opts);
|
|
190
220
|
}
|
|
191
221
|
static async resolveEntityBySuggest(value, def, opts) {
|
|
222
|
+
const serializeAttribute = def.serializeAttribute ?? opts?.defaultSerializeAttribute ?? 'id';
|
|
223
|
+
if (typeof value === 'object' && isNotNil(value[serializeAttribute])) {
|
|
224
|
+
return value; // Already resolve
|
|
225
|
+
}
|
|
192
226
|
const suggestFn = def.autocomplete?.suggestFn || opts?.defaultSuggestFn;
|
|
193
227
|
if (!suggestFn) {
|
|
194
228
|
console.warn(`Missing 'deserialize' or 'autocomplete.suggestFn' in the field definition '${def.key}'. Cannot deserialize value: ${JSON.stringify(value)}`);
|
|
@@ -196,35 +230,41 @@ export class AppPropertyUtils {
|
|
|
196
230
|
}
|
|
197
231
|
let searchValue = value;
|
|
198
232
|
const filter = { ...def.autocomplete?.filter }; // Cope filter
|
|
199
|
-
const serializeAttribute = def.serializeAttribute ?? opts.defaultSerializeAttribute ?? 'id';
|
|
200
233
|
if (serializeAttribute === 'id' || serializeAttribute === 'label') {
|
|
201
234
|
filter[serializeAttribute] = serializeAttribute === 'id' ? +value : value;
|
|
202
|
-
filter.offset = 0;
|
|
203
|
-
filter.size = 1;
|
|
204
235
|
searchValue = '*';
|
|
205
236
|
// DEBUG
|
|
206
|
-
console.debug(`[properties-utils] Resolving entity where id=${value}...`);
|
|
237
|
+
//console.debug(`[properties-utils] Resolving entity where id=${value}...`);
|
|
207
238
|
}
|
|
208
239
|
else {
|
|
209
240
|
filter.searchAttribute = serializeAttribute;
|
|
210
241
|
// DEBUG
|
|
211
|
-
console.debug(`[properties-utils] Resolving entity where ${serializeAttribute}=${searchValue}...`);
|
|
242
|
+
//console.debug(`[properties-utils] Resolving entity where ${serializeAttribute}=${searchValue}...`);
|
|
212
243
|
}
|
|
213
244
|
try {
|
|
214
245
|
// Fetch entity, using the suggest function
|
|
215
246
|
const res = await suggestFn(searchValue, filter, serializeAttribute, 'asc', {
|
|
216
247
|
withTotal: false,
|
|
248
|
+
offset: 0,
|
|
249
|
+
size: 1,
|
|
217
250
|
...opts?.defaultSuggestOptions,
|
|
218
251
|
});
|
|
219
252
|
// Get result array
|
|
220
253
|
const data = Array.isArray(res) ? res : res.data;
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
254
|
+
if (data?.length > 0) {
|
|
255
|
+
if (data?.length > 1) {
|
|
256
|
+
console.warn(`[properties-utils] More than one entity found, for option ${def.key}=${value}! Please check option's definition and the 'autocomplete.suggestFn' function`, data);
|
|
257
|
+
}
|
|
258
|
+
// DEBUG
|
|
259
|
+
//console.debug(`[properties-utils] ${data.length} entities found: `, data);
|
|
260
|
+
// Ok, we find it => stop here
|
|
224
261
|
return data[0];
|
|
262
|
+
}
|
|
263
|
+
// Warn, but continue
|
|
264
|
+
console.warn(`[properties-utils] Unable to resolve entity for option: ${def.key}=${value}. Please check option's definition and the 'autocomplete.suggestFn' function`);
|
|
225
265
|
}
|
|
226
266
|
catch (err) {
|
|
227
|
-
console.error(`Cannot
|
|
267
|
+
console.error(`[properties-utils] Cannot resolve entity for option: ${def.key}=${value}`, err);
|
|
228
268
|
// Continue
|
|
229
269
|
}
|
|
230
270
|
// Create the missing result
|
|
@@ -237,5 +277,8 @@ export class AppPropertyUtils {
|
|
|
237
277
|
});
|
|
238
278
|
return unresolvedEntity;
|
|
239
279
|
}
|
|
280
|
+
static toString(value) {
|
|
281
|
+
return value?.toString();
|
|
282
|
+
}
|
|
240
283
|
}
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL3Byb3BlcnRpZXMvcHJvcGVydGllcy51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJckosTUFBTSxPQUFPLGtCQUFrQjtJQUM3Qjs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBb0IsRUFBRSxXQUFtQyxFQUFFLElBQWtDO1FBQ2hILE9BQU8sQ0FDTCxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDYixzQkFBc0I7YUFDckIsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDZCxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPLFNBQVMsQ0FBQztZQUM5QixNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsT0FBTyxTQUFTLENBQUM7WUFDM0IsTUFBTSxHQUFHLEdBQUcsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNwRCxPQUFPLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDO1lBQ0YscUJBQXFCO2FBQ3BCLE1BQU0sQ0FDTCxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNaLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7Z0JBQUUsT0FBTyxHQUFHLENBQUM7WUFD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Z0JBQzFFLFNBQVMsRUFBRSxLQUFLO2dCQUNoQixHQUFHLElBQUksRUFBRSxxQkFBcUI7YUFDL0IsQ0FBQyxDQUFDO1lBRUgsbUJBQW1CO1lBQ25CLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUVqRCxPQUFPLENBQUMsS0FBSyxDQUFDLHNCQUFzQixJQUFJLENBQUMsTUFBTSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUUxRSw4QkFBOEI7WUFDOUIsSUFBSSxJQUFJLEVBQUUsTUFBTTtnQkFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEdBQUcsQ0FBQyxHQUFHLElBQUksS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDbkUsV0FBVztRQUNiLENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsTUFBTSxnQkFBZ0IsR0FBUTtZQUM1QixDQUFDLGtCQUFrQixDQUFDLEVBQUUsS0FBSztTQUM1QixDQUFDO1FBRUYsNEJBQTRCO1FBQzVCLEdBQUcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzVDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvcGVydGllc01hcCwgUHJvcGVydHkgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdHlwZXMnO1xuaW1wb3J0IHsgZ2V0UHJvcGVydHlCeVBhdGgsIGlzTmlsLCBpc05pbE9yQmxhbmssIGlzTm90RW1wdHlBcnJheSwgaXNOb3ROaWxPckJsYW5rLCBpc1Byb21pc2UsIHRvQm9vbGVhbiwgdG9OdW1iZXIgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IEZvcm1GaWVsZERlZmluaXRpb24gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybS9maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBFbnRpdGllc1NlcnZpY2VMb2FkT3B0aW9ucywgU3VnZ2VzdEZuIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcblxuZXhwb3J0IGNsYXNzIEFwcFByb3BlcnRpZXNVdGlscyB7XG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBgUHJvcGVydHlgIG9iamVjdHMgaW50byBhIGBQcm9wZXJ0aWVzTWFwYCBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvcGVydHlbXX0gW3NvdXJjZXNdIC0gQW4gb3B0aW9uYWwgYXJyYXkgb2YgcHJvcGVydGllcyB0byBiZSBjb252ZXJ0ZWQuXG4gICAqIEBwYXJhbSB7Rm9ybUZpZWxkRGVmaW5pdGlvbltdfSBbZGVmaW5pdGlvbnNdIC0gQW4gb3B0aW9uYWwgYXJyYXkgb2YgZm9ybSBmaWVsZCBkZWZpbml0aW9ucyB0byBoZWxwIHdpdGggdGhlIGNvbnZlcnNpb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBPcHRpb25hbCBjb25maWd1cmF0aW9ucy5cbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5vbWl0TmlsT3JCbGFua10gLSBJZiB0cnVlLCBwcm9wZXJ0aWVzIHdpdGggbmlsIG9yIGJsYW5rIHZhbHVlcyB3aWxsIGJlIG9taXR0ZWQuIERlZmF1bHRzIHRvIHRydWUuXG4gICAqIEByZXR1cm4ge1Byb3BlcnRpZXNNYXB9IC0gVGhlIHJlc3VsdGluZyBgUHJvcGVydGllc01hcGAgb2JqZWN0LlxuICAgKi9cbiAgc3RhdGljIGFycmF5QXNPYmplY3Qoc291cmNlcz86IFByb3BlcnR5W10sIGRlZmluaXRpb25zPzogRm9ybUZpZWxkRGVmaW5pdGlvbltdLCBvcHRzPzogeyBvbWl0TmlsT3JCbGFuazogYm9vbGVhbiB9KTogUHJvcGVydGllc01hcCB7XG4gICAgcmV0dXJuIChcbiAgICAgIChzb3VyY2VzIHx8IFtdKVxuICAgICAgICAvLyBTZXJpYWxpemUgZWFjaCBpdGVtXG4gICAgICAgIC5tYXAoKHNvdXJjZSkgPT4ge1xuICAgICAgICAgIGlmICghc291cmNlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgIGNvbnN0IGtleSA9IEFwcFByb3BlcnR5VXRpbHMua2V5KHNvdXJjZSk7XG4gICAgICAgICAgaWYgKCFrZXkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgY29uc3QgZGVmID0gZGVmaW5pdGlvbnM/LmZpbmQoKGQpID0+IGQua2V5ID09PSBrZXkpO1xuICAgICAgICAgIHJldHVybiBBcHBQcm9wZXJ0eVV0aWxzLmFzT2JqZWN0KHNvdXJjZSwgZGVmKTtcbiAgICAgICAgfSlcbiAgICAgICAgLy8gRmlsbCBhIEpTT04gb2JqZWN0XG4gICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgKHJlcywgaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzTmlsT3JCbGFuayhpdGVtPy5rZXkpKSByZXR1cm4gcmVzO1xuICAgICAgICAgICAgLy8gU2tpcCBpZiBuaWwgb3IgYmxhbmsgdmFsdWVcbiAgICAgICAgICAgIGlmIChvcHRzPy5vbWl0TmlsT3JCbGFuayAhPT0gZmFsc2UgJiYgaXNOaWxPckJsYW5rKGl0ZW0udmFsdWUpKSByZXR1cm4gcmVzO1xuICAgICAgICAgICAgcmVzW2l0ZW0ua2V5XSA9IGl0ZW0udmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgPFByb3BlcnRpZXNNYXA+e31cbiAgICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGFuIGFycmF5IG9mIHByb3BlcnRpZXMgZnJvbSB0aGUgZ2l2ZW4gb2JqZWN0LCBvcHRpb25hbGx5IGFwcGx5aW5nIGRlZmluaXRpb25zIHRvIHRoZSBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3BlcnRpZXNNYXB9IFtzb3VyY2VzXSAtIFRoZSBzb3VyY2Ugb2JqZWN0IGZyb20gd2hpY2ggcHJvcGVydGllcyBhcmUgdG8gYmUgZXh0cmFjdGVkLlxuICAgKiBAcGFyYW0ge0Zvcm1GaWVsZERlZmluaXRpb25bXX0gW2RlZmluaXRpb25zXSAtIEFuIG9wdGlvbmFsIGFycmF5IG9mIGRlZmluaXRpb25zIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGV4dHJhY3RlZCBwcm9wZXJ0aWVzLlxuICAgKiBAcmV0dXJuIHtQcm9wZXJ0eVtdIHwgUHJvbWlzZTxQcm9wZXJ0eVtdPn0gQW4gYXJyYXkgb2YgcHJvcGVydGllcyBnZW5lcmF0ZWQgZnJvbSB0aGUgc291cmNlIG9iamVjdCwgb3IgYSBwcm9taXNlIHJlc29sdmluZyB0byB0aGF0IGFycmF5LlxuICAgKi9cbiAgc3RhdGljIGFycmF5RnJvbU9iamVjdChzb3VyY2VzPzogUHJvcGVydGllc01hcCB8IFByb3BlcnR5W10sIGRlZmluaXRpb25zPzogRm9ybUZpZWxkRGVmaW5pdGlvbltdKTogUHJvcGVydHlbXSB8IFByb21pc2U8UHJvcGVydHlbXT4ge1xuICAgIGNvbnN0IHRhcmdldHMgPSBBcnJheS5pc0FycmF5KHNvdXJjZXMpXG4gICAgICA/IHNvdXJjZXMuc2xpY2UoKVxuICAgICAgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2VzIHx8IHt9KS5tYXAoKGtleSkgPT4gKHtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgdmFsdWU6IHNvdXJjZXNba2V5XSxcbiAgICAgICAgfSkpO1xuICAgIGNvbnN0IGpvYnMgPSBbXTtcbiAgICBpZiAoaXNOb3RFbXB0eUFycmF5KGRlZmluaXRpb25zKSkge1xuICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIHRhcmdldHMpIHtcbiAgICAgICAgLy8gRmluZCBkZWZpbml0aW9uXG4gICAgICAgIGNvbnN0IGRlZiA9IGRlZmluaXRpb25zLmZpbmQoKGRlZikgPT4gZGVmLmtleSA9PT0gdGFyZ2V0LmtleSk7XG5cbiAgICAgICAgLy8gRGVzZXJpYWxpemUgZnJvbSBzdHJpbmdcbiAgICAgICAgbGV0IHByb3BlcnR5T3JQcm9taXNlID0gQXBwUHJvcGVydHlVdGlscy5mcm9tT2JqZWN0KHRhcmdldCwgZGVmKTtcbiAgICAgICAgaWYgKGlzUHJvbWlzZShwcm9wZXJ0eU9yUHJvbWlzZSkpIHtcbiAgICAgICAgICBqb2JzLnB1c2gocHJvcGVydHlPclByb21pc2UudGhlbigocHJvcGVydHkpID0+ICh0YXJnZXQudmFsdWUgPSBwcm9wZXJ0eS52YWx1ZSkpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBVcGRhdGUgdGhlIHRhcmdldCB2YWx1ZVxuICAgICAgICAgIHRhcmdldC52YWx1ZSA9IHByb3BlcnR5T3JQcm9taXNlLnZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGFzIHByb21pc2UsIGlmIG5lZWRcbiAgICBpZiAoam9icy5sZW5ndGgpIHJldHVybiBQcm9taXNlLmFsbChqb2JzKS50aGVuKCgpID0+IHRhcmdldHMpO1xuXG4gICAgcmV0dXJuIHRhcmdldHM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcFByb3BlcnR5VXRpbHMge1xuICBzdGF0aWMga2V5KHNvdXJjZTogUHJvcGVydHkgfCBhbnkpOiBzdHJpbmcge1xuICAgIGlmICghc291cmNlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiAoc291cmNlLmtleSBhcyBhbnkpPy5rZXkgPz8gc291cmNlLmtleTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgZ2l2ZW4gc291cmNlIHRvIGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEga2V5LXZhbHVlIHBhaXIuXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvcGVydHk8YW55PiB8IGFueX0gc291cmNlIC0gVGhlIHNvdXJjZSBwcm9wZXJ0eSBvciBhbnkgdmFsdWUgdG8gYmUgY29udmVydGVkLlxuICAgKiBAcGFyYW0ge0Zvcm1GaWVsZERlZmluaXRpb259IFtkZWZdIC0gVGhlIGZvcm0gZmllbGQgZGVmaW5pdGlvbiB1c2VkIGZvciBzZXJpYWxpemF0aW9uLlxuICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gQWRkaXRpb25hbCBvcHRpb25zIGZvciBzZXJpYWxpemF0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZGVmYXVsdFNlcmlhbGl6ZUF0dHJpYnV0ZT0naWQnXSAtIFRoZSBhdHRyaWJ1dGUgdG8gYmUgdXNlZCBmb3IgZGVmYXVsdCBzZXJpYWxpemF0aW9uLlxuICAgKiBAcmV0dXJuIHt7IGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH0gfCB1bmRlZmluZWR9IEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBzZXJpYWxpemVkIGtleS12YWx1ZSBwYWlyLCBvciB1bmRlZmluZWQgaWYgdGhlIHNvdXJjZSBpcyBub3QgcHJvdmlkZWQuXG4gICAqL1xuICBzdGF0aWMgYXNPYmplY3QoXG4gICAgc291cmNlOiBQcm9wZXJ0eTxhbnk+IHwgYW55LFxuICAgIGRlZj86IEZvcm1GaWVsZERlZmluaXRpb24sXG4gICAgb3B0cz86IHtcbiAgICAgIGRlZmF1bHRTZXJpYWxpemVBdHRyaWJ1dGU/OiBzdHJpbmc7XG4gICAgfVxuICApOiB7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0gfCB1bmRlZmluZWQge1xuICAgIGlmICghc291cmNlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIC8vIFNlcmlhbGl6ZSBrZXkgKFdBUk5JTkc6IGNhbiBiZSBhbiBvYmplY3QsIHdoZW4gdXNpbmcgYXV0b2NvbXBsZXRlIGZpZWxkIHRvIGVkaXQgYSBrZXkgLSBzZWUgQXBwUHJvcGVydGllc0Zvcm0pXG4gICAgY29uc3Qga2V5ID0gQXBwUHJvcGVydHlVdGlscy5rZXkoc291cmNlKTtcblxuICAgIC8vIFByZXBhcmUgYSBkZXNlcmlhbGl6ZSBmdW5jdGlvblxuICAgIGNvbnN0IHNlcmlhbGl6ZUF0dHJpYnV0ZSA9IGRlZi5zZXJpYWxpemVBdHRyaWJ1dGUgPz8gb3B0cz8uZGVmYXVsdFNlcmlhbGl6ZUF0dHJpYnV0ZSA/PyAnaWQnO1xuICAgIGNvbnN0IHNlcmlhbGl6ZUZuID1cbiAgICAgIGRlZj8uc2VyaWFsaXplIHx8XG4gICAgICAoKHZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlcmlhbGl6ZVZhbHVlID0gZ2V0UHJvcGVydHlCeVBhdGgodmFsdWUsIHNlcmlhbGl6ZUF0dHJpYnV0ZSwgdmFsdWUgLypkZWZhdWx0IHZhbHVlKi8pO1xuICAgICAgICBpZiAoaXNOaWwoc2VyaWFsaXplVmFsdWUpKSByZXR1cm4gc2VyaWFsaXplVmFsdWU7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShzZXJpYWxpemVWYWx1ZSk7XG4gICAgICB9KTtcblxuICAgIGxldCB2YWx1ZVN0cjogc3RyaW5nO1xuXG4gICAgLy8gVmFsdWUgaXMgYW4gYXJyYXlcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UudmFsdWUpKSB7XG4gICAgICB2YWx1ZVN0ciA9IHNvdXJjZS52YWx1ZS5tYXAoc2VyaWFsaXplRm4pLmZpbHRlcihpc05vdE5pbE9yQmxhbmspLmpvaW4oJywnKTtcbiAgICB9XG4gICAgLy8gQW55IG90aGVyIGNhc2VcbiAgICBlbHNlIHtcbiAgICAgIHZhbHVlU3RyID0gc2VyaWFsaXplRm4oc291cmNlLnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHsga2V5LCB2YWx1ZTogdmFsdWVTdHIgfTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tT2JqZWN0KFxuICAgIHNvdXJjZTogUHJvcGVydHk8c3RyaW5nPixcbiAgICBkZWY6IEZvcm1GaWVsZERlZmluaXRpb24sXG4gICAgb3B0cz86IHtcbiAgICAgIGRlZmF1bHRTdWdnZXN0Rm46IFN1Z2dlc3RGbjxhbnksIGFueT47XG4gICAgICBkZWZhdWx0U3VnZ2VzdE9wdGlvbnM/OiBFbnRpdGllc1NlcnZpY2VMb2FkT3B0aW9ucztcbiAgICAgIGRlZmF1bHRTZXJpYWxpemVBdHRyaWJ1dGU/OiBzdHJpbmc7XG4gICAgfVxuICApOiBQcm9wZXJ0eTxhbnk+IHwgUHJvbWlzZTxQcm9wZXJ0eTxhbnk+PiB7XG4gICAgaWYgKCFzb3VyY2U/LmtleSB8fCBpc05pbChzb3VyY2UudmFsdWUpIHx8ICFkZWYpIHJldHVybiBzb3VyY2U7IC8vIFNraXAgaWYgbm8ga2V5XG5cbiAgICAvLyBDTG9uZSB0aGUgc291cmNlXG4gICAgY29uc3QgdGFyZ2V0OiBQcm9wZXJ0eTxhbnk+ID0geyBrZXk6IHNvdXJjZS5rZXksIHZhbHVlOiBzb3VyY2UudmFsdWUgfTtcblxuICAgIGNvbnN0IGpvYnM6IFByb21pc2U8YW55PltdID0gW107XG4gICAgLy8gUmVzb2x2ZSB2YWx1ZVxuICAgIHN3aXRjaCAoZGVmLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICB0YXJnZXQudmFsdWUgPSB0b0Jvb2xlYW4oc291cmNlLnZhbHVlLCB0b0Jvb2xlYW4oZGVmLmRlZmF1bHRWYWx1ZSkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgY2FzZSAnZG91YmxlJzpcbiAgICAgICAgdGFyZ2V0LnZhbHVlID0gdG9OdW1iZXIoc291cmNlLnZhbHVlLCB0b051bWJlcihkZWYuZGVmYXVsdFZhbHVlKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZW51bXMnOlxuICAgICAgICBjb25zdCBrZXlzID0gKHRhcmdldC52YWx1ZSB8fCAnJykudHJpbSgpLnNwbGl0KC9bfCxdKy8pO1xuICAgICAgICBpZiAoaXNOb3RFbXB0eUFycmF5KGtleXMpKSB7XG4gICAgICAgICAgY29uc3QgZW51bVZhbHVlcyA9IGtleXMubWFwKChrZXkpID0+XG4gICAgICAgICAgICAoZGVmLnZhbHVlcyBhcyAoc3RyaW5nIHwgUHJvcGVydHkpW10pPy5maW5kKChkZWZWYWx1ZSkgPT4gZGVmVmFsdWUgJiYga2V5ID09PSAoZGVmVmFsdWVbJ2tleSddIHx8IGRlZlZhbHVlKSlcbiAgICAgICAgICApO1xuICAgICAgICAgIHRhcmdldC52YWx1ZSA9IGVudW1WYWx1ZXMgfHwgbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXQudmFsdWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZW50aXR5JzpcbiAgICAgICAgLy8gRGVzZXJpYWxpemUgZW50aXR5IChlLmcuIGxvYWQgZW50aXR5IGZyb20gdGhlIGlkKVxuICAgICAgICBjb25zdCB2YWx1ZU9yUHJvbWlzZSA9IEFwcFByb3BlcnR5VXRpbHMucmVzb2x2ZUVudGl0eSh0YXJnZXQudmFsdWUsIGRlZiwgb3B0cyk7XG4gICAgICAgIGlmIChpc1Byb21pc2UodmFsdWVPclByb21pc2UpKSB7XG4gICAgICAgICAgam9icy5wdXNoKFxuICAgICAgICAgICAgdmFsdWVPclByb21pc2UudGhlbigodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgdGFyZ2V0LnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0LnZhbHVlID0gdmFsdWVPclByb21pc2UgYXMgYW55O1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZW50aXRpZXMnOlxuICAgICAgICAvLyBDb252ZXJ0IHZhbHVlIHRvIGFycmF5XG4gICAgICAgIHRhcmdldC52YWx1ZSA9IEFycmF5LmlzQXJyYXkoc291cmNlLnZhbHVlKVxuICAgICAgICAgID8gc291cmNlLnZhbHVlLnNsaWNlKCkgLy8gQ29weVxuICAgICAgICAgIDogdHlwZW9mIHNvdXJjZS52YWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgID8gc291cmNlLnZhbHVlXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAubWFwKCh2KSA9PiB2LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGlzTm90TmlsT3JCbGFuaylcbiAgICAgICAgICAgIDogW107XG5cbiAgICAgICAgLy8gRGVzZXJpYWxpemUgZWFjaCBzdWItdmFsdWVcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgZm9yIChsZXQgc3ViVmFsdWUgb2YgdGFyZ2V0LnZhbHVlKSB7XG4gICAgICAgICAgLy8gRGVzZXJpYWxpemUgc3ViLXZhbHVlXG4gICAgICAgICAgY29uc3Qgc3ViVmFsdWVPclByb21pc2UgPSBBcHBQcm9wZXJ0eVV0aWxzLnJlc29sdmVFbnRpdHkoc3ViVmFsdWUsIGRlZiwgb3B0cyk7XG5cbiAgICAgICAgICAvLyBBZGQgcHJvbWlzZSB0byBqb2JzXG4gICAgICAgICAgaWYgKGlzUHJvbWlzZShzdWJWYWx1ZU9yUHJvbWlzZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbmFsSW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgIGpvYnMucHVzaChcbiAgICAgICAgICAgICAgc3ViVmFsdWVPclByb21pc2UudGhlbigodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgc3ViIHZhbHVlXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnZhbHVlW2ZpbmFsSW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBVcGRhdGUgc3ViIHZhbHVlXG4gICAgICAgICAgICB0YXJnZXQudmFsdWVbaW5kZXhdID0gc3ViVmFsdWVPclByb21pc2UgYXMgYW55O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpbmRleCsrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gLyFcXCBSZXR1cm4gYXMgcHJvbWlzZSBvbmx5IGlmIG5lZWQgKGxldCBmdW5jdGlvbiBzeW5jIHdoZW4gcG9zc2libGUpXG4gICAgaWYgKGpvYnMubGVuZ3RoKSByZXR1cm4gUHJvbWlzZS5hbGwoam9icykudGhlbigoKSA9PiB0YXJnZXQpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHJlc29sdmVFbnRpdHkoXG4gICAgdmFsdWU6IGFueSxcbiAgICBkZWY6IEZvcm1GaWVsZERlZmluaXRpb24sXG4gICAgb3B0cz86IHtcbiAgICAgIGRlZmF1bHRTdWdnZXN0Rm46IFN1Z2dlc3RGbjxhbnksIGFueT47XG4gICAgICBkZWZhdWx0U3VnZ2VzdE9wdGlvbnM/OiBFbnRpdGllc1NlcnZpY2VMb2FkT3B0aW9ucztcbiAgICAgIGRlZmF1bHRTZXJpYWxpemVBdHRyaWJ1dGU/OiBzdHJpbmc7XG4gICAgfVxuICApOiBhbnkgfCBQcm9taXNlPGFueT4ge1xuICAgIC8vIFVzZSBkZXNlcmlhbGl6ZSBmdW5jdGlvbiwgaWYgYW55XG4gICAgaWYgKGRlZi5kZXNlcmlhbGl6ZSkge1xuICAgICAgcmV0dXJuIGRlZi5kZXNlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gT3IgdHJ5IHVzaW5nIHN1Z2dlc3QgZnVuY3Rpb25cbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlRW50aXR5QnlTdWdnZXN0KHZhbHVlLCBkZWYsIG9wdHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgcmVzb2x2ZUVudGl0eUJ5U3VnZ2VzdChcbiAgICB2YWx1ZTogYW55LFxuICAgIGRlZjogRm9ybUZpZWxkRGVmaW5pdGlvbixcbiAgICBvcHRzPzoge1xuICAgICAgZGVmYXVsdFN1Z2dlc3RGbjogU3VnZ2VzdEZuPGFueSwgYW55PjtcbiAgICAgIGRlZmF1bHRTdWdnZXN0T3B0aW9ucz86IEVudGl0aWVzU2VydmljZUxvYWRPcHRpb25zO1xuICAgICAgZGVmYXVsdFNlcmlhbGl6ZUF0dHJpYnV0ZT86IHN0cmluZztcbiAgICB9XG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3Qgc3VnZ2VzdEZuOiBTdWdnZXN0Rm48YW55LCBhbnk+ID0gZGVmLmF1dG9jb21wbGV0ZT8uc3VnZ2VzdEZuIHx8IG9wdHM/LmRlZmF1bHRTdWdnZXN0Rm47XG4gICAgaWYgKCFzdWdnZXN0Rm4pIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYE1pc3NpbmcgJ2Rlc2VyaWFsaXplJyBvciAnYXV0b2NvbXBsZXRlLnN1Z2dlc3RGbicgaW4gdGhlIGZpZWxkIGRlZmluaXRpb24gJyR7ZGVmLmtleX0nLiBDYW5ub3QgZGVzZXJpYWxpemUgdmFsdWU6ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gdmFsdWU7IC8vIFNraXBcbiAgICB9XG4gICAgbGV0IHNlYXJjaFZhbHVlID0gdmFsdWU7XG4gICAgY29uc3QgZmlsdGVyID0geyAuLi5kZWYuYXV0b2NvbXBsZXRlPy5maWx0ZXIgfTsgLy8gQ29wZSBmaWx0ZXJcbiAgICBjb25zdCBzZXJpYWxpemVBdHRyaWJ1dGUgPSBkZWYuc2VyaWFsaXplQXR0cmlidXRlID8/IG9wdHMuZGVmYXVsdFNlcmlhbGl6ZUF0dHJpYnV0ZSA/PyAnaWQnO1xuICAgIGlmIChzZXJpYWxpemVBdHRyaWJ1dGUgPT09ICdpZCcgfHwgc2VyaWFsaXplQXR0cmlidXRlID09PSAnbGFiZWwnKSB7XG4gICAgICBmaWx0ZXJbc2VyaWFsaXplQXR0cmlidXRlXSA9IHNlcmlhbGl6ZUF0dHJpYnV0ZSA9PT0gJ2lkJyA/ICt2YWx1ZSA6IHZhbHVlO1xuICAgICAgZmlsdGVyLm9mZnNldCA9IDA7XG4gICAgICBmaWx0ZXIuc2l6ZSA9IDE7XG4gICAgICBzZWFyY2hWYWx1ZSA9ICcqJztcbiAgICAgIC8vIERFQlVHXG4gICAgICBjb25zb2xlLmRlYnVnKGBbcHJvcGVydGllcy11dGlsc10gUmVzb2x2aW5nIGVudGl0eSB3aGVyZSBpZD0ke3ZhbHVlfS4uLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWx0ZXIuc2VhcmNoQXR0cmlidXRlID0gc2VyaWFsaXplQXR0cmlidXRlO1xuICAgICAgLy8gREVCVUdcbiAgICAgIGNvbnNvbGUuZGVidWcoYFtwcm9wZXJ0aWVzLXV0aWxzXSBSZXNvbHZpbmcgZW50aXR5IHdoZXJlICR7c2VyaWFsaXplQXR0cmlidXRlfT0ke3NlYXJjaFZhbHVlfS4uLmApO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvLyBGZXRjaCBlbnRpdHksIHVzaW5nIHRoZSBzdWdnZXN0IGZ1bmN0aW9uXG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBzdWdnZXN0Rm4oc2VhcmNoVmFsdWUsIGZpbHRlciwgc2VyaWFsaXplQXR0cmlidXRlLCAnYXNjJywge1xuICAgICAgICB3aXRoVG90YWw6IGZhbHNlLFxuICAgICAgICAuLi5vcHRzPy5kZWZhdWx0U3VnZ2VzdE9wdGlvbnMsXG4gICAgICB9KTtcblxuICAgICAgLy8gR2V0IHJlc3VsdCBhcnJheVxuICAgICAgY29uc3QgZGF0YSA9IEFycmF5LmlzQXJyYXkocmVzKSA/IHJlcyA6IHJlcy5kYXRhO1xuXG4gICAgICBjb25zb2xlLmRlYnVnKGBbcHJvcGVydGllcy11dGlsc10gJHtkYXRhLmxlbmd0aH0gZW50aXRpZXMgZm91bmQ6IGAsIGRhdGEpO1xuXG4gICAgICAvLyBPaywgd2UgZmluZCBpdCA9PiBzdG9wIGhlcmVcbiAgICAgIGlmIChkYXRhPy5sZW5ndGgpIHJldHVybiBkYXRhWzBdO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcihgQ2Fubm90IGZldGNoIGVudGl0eSBmcm9tICR7ZGVmLmtleX09JHt2YWx1ZX1gLCBlcnIpO1xuICAgICAgLy8gQ29udGludWVcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIG1pc3NpbmcgcmVzdWx0XG4gICAgY29uc3QgdW5yZXNvbHZlZEVudGl0eSA9IDxhbnk+e1xuICAgICAgW3NlcmlhbGl6ZUF0dHJpYnV0ZV06IHZhbHVlLFxuICAgIH07XG5cbiAgICAvLyBGaWxsIGF0dHJpYnV0ZXMgd2l0aCAnPz8nXG4gICAgZGVmLmF1dG9jb21wbGV0ZT8uYXR0cmlidXRlcz8uZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICB1bnJlc29sdmVkRW50aXR5W2tleV0gPSB1bnJlc29sdmVkRW50aXR5W2tleV0gPz8gJyc7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdW5yZXNvbHZlZEVudGl0eTtcbiAgfVxufVxuIl19
|
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL3Byb3BlcnRpZXMvcHJvcGVydGllcy51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLEtBQUssRUFDTCxZQUFZLEVBQ1osZUFBZSxFQUNmLFFBQVEsRUFDUixlQUFlLEVBQ2YsU0FBUyxFQUNULFNBQVMsRUFDVCxRQUFRLEdBQ1QsTUFBTSwyQkFBMkIsQ0FBQztBQUluQyxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCOzs7Ozs7OztPQVFHO0lBQ0gsTUFBTSxDQUFDLGFBQWEsQ0FBVSxPQUF1QixFQUFFLFdBQW1DLEVBQUUsSUFBa0M7UUFDNUgsT0FBTyxDQUNMLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUNiLHNCQUFzQjthQUNyQixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNkLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU8sU0FBUyxDQUFDO1lBQzlCLE1BQU0sR0FBRyxHQUFHLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsR0FBRztnQkFBRSxPQUFPLFNBQVMsQ0FBQztZQUMzQixNQUFNLEdBQUcsR0FBRyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ3BELE9BQU8sZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUM7WUFDRixxQkFBcUI7YUFDcEIsTUFBTSxDQUNMLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ1osSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQztnQkFBRSxPQUFPLEdB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QzVCLEdBQUcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzVDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBVztRQUNqQyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9wZXJ0eSwgUHJvcGVydHlNYXAgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdHlwZXMnO1xuaW1wb3J0IHtcbiAgZ2V0UHJvcGVydHlCeVBhdGgsXG4gIGlzTmlsLFxuICBpc05pbE9yQmxhbmssXG4gIGlzTm90RW1wdHlBcnJheSxcbiAgaXNOb3ROaWwsXG4gIGlzTm90TmlsT3JCbGFuayxcbiAgaXNQcm9taXNlLFxuICB0b0Jvb2xlYW4sXG4gIHRvTnVtYmVyLFxufSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IEZvcm1GaWVsZERlZmluaXRpb24gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybS9maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBFbnRpdGllc1NlcnZpY2VMb2FkT3B0aW9ucywgU3VnZ2VzdEZuIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcblxuZXhwb3J0IGNsYXNzIEFwcFByb3BlcnRpZXNVdGlscyB7XG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBgUHJvcGVydHlgIG9iamVjdHMgaW50byBhIGBQcm9wZXJ0aWVzTWFwYCBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvcGVydHlbXX0gW3NvdXJjZXNdIC0gQW4gb3B0aW9uYWwgYXJyYXkgb2YgcHJvcGVydGllcyB0byBiZSBjb252ZXJ0ZWQuXG4gICAqIEBwYXJhbSB7Rm9ybUZpZWxkRGVmaW5pdGlvbltdfSBbZGVmaW5pdGlvbnNdIC0gQW4gb3B0aW9uYWwgYXJyYXkgb2YgZm9ybSBmaWVsZCBkZWZpbml0aW9ucyB0byBoZWxwIHdpdGggdGhlIGNvbnZlcnNpb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBPcHRpb25hbCBjb25maWd1cmF0aW9ucy5cbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5vbWl0TmlsT3JCbGFua10gLSBJZiB0cnVlLCBwcm9wZXJ0aWVzIHdpdGggbmlsIG9yIGJsYW5rIHZhbHVlcyB3aWxsIGJlIG9taXR0ZWQuIERlZmF1bHRzIHRvIHRydWUuXG4gICAqIEByZXR1cm4ge1Byb3BlcnR5TWFwfSAtIFRoZSByZXN1bHRpbmcgYFByb3BlcnRpZXNNYXBgIG9iamVjdC5cbiAgICovXG4gIHN0YXRpYyBhcnJheUFzT2JqZWN0PFQgPSBhbnk+KHNvdXJjZXM/OiBQcm9wZXJ0eTxUPltdLCBkZWZpbml0aW9ucz86IEZvcm1GaWVsZERlZmluaXRpb25bXSwgb3B0cz86IHsgb21pdE5pbE9yQmxhbms6IGJvb2xlYW4gfSk6IFByb3BlcnR5TWFwIHtcbiAgICByZXR1cm4gKFxuICAgICAgKHNvdXJjZXMgfHwgW10pXG4gICAgICAgIC8vIFNlcmlhbGl6ZSBlYWNoIGl0ZW1cbiAgICAgICAgLm1hcCgoc291cmNlKSA9PiB7XG4gICAgICAgICAgaWYgKCFzb3VyY2UpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgY29uc3Qga2V5ID0gQXBwUHJvcGVydHlVdGlscy5nZXRQcm9wZXJ0eUtleShzb3VyY2UpO1xuICAgICAgICAgIGlmICgha2V5KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgIGNvbnN0IGRlZiA9IGRlZmluaXRpb25zPy5maW5kKChkKSA9PiBkLmtleSA9PT0ga2V5KTtcbiAgICAgICAgICByZXR1cm4gQXBwUHJvcGVydHlVdGlscy5hc09iamVjdChzb3VyY2UsIGRlZik7XG4gICAgICAgIH0pXG4gICAgICAgIC8vIEZpbGwgYSBKU09OIG9iamVjdFxuICAgICAgICAucmVkdWNlKFxuICAgICAgICAgIChyZXMsIGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpc05pbE9yQmxhbmsoaXRlbT8ua2V5KSkgcmV0dXJuIHJlcztcbiAgICAgICAgICAgIC8vIFNraXAgaWYgbmlsIG9yIGJsYW5rIHZhbHVlXG4gICAgICAgICAgICBpZiAob3B0cz8ub21pdE5pbE9yQmxhbmsgIT09IGZhbHNlICYmIGlzTmlsT3JCbGFuayhpdGVtLnZhbHVlKSkgcmV0dXJuIHJlcztcbiAgICAgICAgICAgIHJlc1tpdGVtLmtleV0gPSBpdGVtLnZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIDxQcm9wZXJ0eU1hcD57fVxuICAgICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYW4gYXJyYXkgb2YgcHJvcGVydGllcyBmcm9tIHRoZSBnaXZlbiBvYmplY3QsIG9wdGlvbmFsbHkgYXBwbHlpbmcgZGVmaW5pdGlvbnMgdG8gdGhlIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvcGVydHlNYXB9IFtzb3VyY2VzXSAtIFRoZSBzb3VyY2Ugb2JqZWN0IGZyb20gd2hpY2ggcHJvcGVydGllcyBhcmUgdG8gYmUgZXh0cmFjdGVkLlxuICAgKiBAcGFyYW0ge0Zvcm1GaWVsZERlZmluaXRpb25bXX0gW2RlZmluaXRpb25zXSAtIEFuIG9wdGlvbmFsIGFycmF5IG9mIGRlZmluaXRpb25zIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGV4dHJhY3RlZCBwcm9wZXJ0aWVzLlxuICAgKiBAcmV0dXJuIHtQcm9wZXJ0eVtdIHwgUHJvbWlzZTxQcm9wZXJ0eVtdPn0gQW4gYXJyYXkgb2YgcHJvcGVydGllcyBnZW5lcmF0ZWQgZnJvbSB0aGUgc291cmNlIG9iamVjdCwgb3IgYSBwcm9taXNlIHJlc29sdmluZyB0byB0aGF0IGFycmF5LlxuICAgKi9cbiAgc3RhdGljIGFycmF5RnJvbU9iamVjdDxUPihzb3VyY2VzPzogUHJvcGVydHlNYXAgfCBQcm9wZXJ0eTxUPltdLCBkZWZpbml0aW9ucz86IEZvcm1GaWVsZERlZmluaXRpb25bXSk6IFByb3BlcnR5PFQ+W10gfCBQcm9taXNlPFByb3BlcnR5PFQ+W10+IHtcbiAgICAvLyBERUJVR1xuICAgIC8vY29uc29sZS5kZWJ1ZyhgW3Byb3BlcnRpZXMtdXRpbHNdIENvbnZlcnQgcHJvcGVydHkgbWFwIGludG8gYXJyYXkgb2YgUHJvcGVydHkuLi5gKTtcblxuICAgIGNvbnN0IHRhcmdldHMgPSBBcnJheS5pc0FycmF5KHNvdXJjZXMpXG4gICAgICA/IHNvdXJjZXMuc2xpY2UoKVxuICAgICAgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2VzIHx8IHt9KS5tYXAoKGtleSkgPT4gKHtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgdmFsdWU6IHNvdXJjZXNba2V5XSxcbiAgICAgICAgfSkpO1xuICAgIGNvbnN0IGpvYnMgPSBbXTtcbiAgICBpZiAoaXNOb3RFbXB0eUFycmF5KGRlZmluaXRpb25zKSkge1xuICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIHRhcmdldHMpIHtcbiAgICAgICAgLy8gRmluZCBkZWZpbml0aW9uXG4gICAgICAgIGNvbnN0IGRlZiA9IGRlZmluaXRpb25zLmZpbmQoKGRlZikgPT4gZGVmLmtleSA9PT0gdGFyZ2V0LmtleSk7XG5cbiAgICAgICAgLy8gRGVzZXJpYWxpemUgZnJvbSBzdHJpbmdcbiAgICAgICAgbGV0IHByb3BlcnR5T3JQcm9taXNlID0gQXBwUHJvcGVydHlVdGlscy5mcm9tT2JqZWN0KHRhcmdldCwgZGVmKTtcbiAgICAgICAgaWYgKGlzUHJvbWlzZShwcm9wZXJ0eU9yUHJvbWlzZSkpIHtcbiAgICAgICAgICBqb2JzLnB1c2gocHJvcGVydHlPclByb21pc2UudGhlbigocHJvcGVydHkpID0+ICh0YXJnZXQudmFsdWUgPSBwcm9wZXJ0eS52YWx1ZSkpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBVcGRhdGUgdGhlIHRhcmdldCB2YWx1ZVxuICAgICAgICAgIHRhcmdldC52YWx1ZSA9IHByb3BlcnR5T3JQcm9taXNlLnZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGFzIHByb21pc2UsIHdoZW4gbmVlZFxuICAgIGlmIChqb2JzLmxlbmd0aCkgcmV0dXJuIFByb21pc2UuYWxsKGpvYnMpLnRoZW4oKCkgPT4gdGFyZ2V0cyBhcyBQcm9wZXJ0eTxUPltdKTtcblxuICAgIHJldHVybiB0YXJnZXRzIGFzIFByb3BlcnR5PFQ+W107XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcFByb3BlcnR5VXRpbHMge1xuICBzdGF0aWMga2V5KGtleTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4ga2V5Py5rZXkgPz8ga2V5O1xuICB9XG5cbiAgc3RhdGljIGdldFByb3BlcnR5S2V5KHNvdXJjZTogUHJvcGVydHkgfCBhbnkpOiBzdHJpbmcge1xuICAgIGlmICghc291cmNlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiAoc291cmNlLmtleSBhcyBhbnkpPy5rZXkgPz8gc291cmNlLmtleTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgZ2l2ZW4gc291cmNlIHRvIGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEga2V5LXZhbHVlIHBhaXIuXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvcGVydHk8YW55PiB8IGFueX0gc291cmNlIC0gVGhlIHNvdXJjZSBwcm9wZXJ0eSBvciBhbnkgdmFsdWUgdG8gYmUgY29udmVydGVkLlxuICAgKiBAcGFyYW0ge0Zvcm1GaWVsZERlZmluaXRpb259IFtkZWZdIC0gVGhlIGZvcm0gZmllbGQgZGVmaW5pdGlvbiB1c2VkIGZvciBzZXJpYWxpemF0aW9uLlxuICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gQWRkaXRpb25hbCBvcHRpb25zIGZvciBzZXJpYWxpemF0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZGVmYXVsdFNlcmlhbGl6ZUF0dHJpYnV0ZT0naWQnXSAtIFRoZSBhdHRyaWJ1dGUgdG8gYmUgdXNlZCBmb3IgZGVmYXVsdCBzZXJpYWxpemF0aW9uLlxuICAgKiBAcmV0dXJuIHt7IGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH0gfCB1bmRlZmluZWR9IEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBzZXJpYWxpemVkIGtleS12YWx1ZSBwYWlyLCBvciB1bmRlZmluZWQgaWYgdGhlIHNvdXJjZSBpcyBub3QgcHJvdmlkZWQuXG4gICAqL1xuICBzdGF0aWMgYXNPYmplY3QoXG4gICAgc291cmNlOiBQcm9wZXJ0eTxhbnk+IHwgYW55LFxuICAgIGRlZj86IEZvcm1GaWVsZERlZmluaXRpb24sXG4gICAgb3B0cz86IHtcbiAgICAgIGRlZmF1bHRTZXJpYWxpemVBdHRyaWJ1dGU/OiBzdHJpbmc7XG4gICAgfVxuICApOiB7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0gfCB1bmRlZmluZWQge1xuICAgIGlmICghc291cmNlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIC8vIFNlcmlhbGl6ZSBrZXkgKFdBUk5JTkc6IGNhbiBiZSBhbiBvYmplY3QsIHdoZW4gdXNpbmcgYXV0b2NvbXBsZXRlIGZpZWxkIHRvIGVkaXQgYSBrZXkgLSBzZWUgQXBwUHJvcGVydGllc0Zvcm0pXG4gICAgY29uc3Qga2V5ID0gQXBwUHJvcGVydHlVdGlscy5nZXRQcm9wZXJ0eUtleShzb3VyY2UpO1xuXG4gICAgLy8gUHJlcGFyZSBhIGRlc2VyaWFsaXplIGZ1bmN0aW9uXG4gICAgbGV0IHNlcmlhbGl6ZUZuID0gZGVmPy5zZXJpYWxpemU7XG4gICAgaWYgKCFzZXJpYWxpemVGbikge1xuICAgICAgc3dpdGNoIChkZWY/LnR5cGUgfHwgJ290aGVyJykge1xuICAgICAgICBjYXNlICdlbnVtJzpcbiAgICAgICAgY2FzZSAnZW51bXMnOlxuICAgICAgICAgIHNlcmlhbGl6ZUZuID0gQXBwUHJvcGVydHlVdGlscy5rZXk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2VudGl0eSc6XG4gICAgICAgIGNhc2UgJ2VudGl0aWVzJzpcbiAgICAgICAgICBjb25zdCBzZXJpYWxpemVBdHRyaWJ1dGUgPSBkZWY/LnNlcmlhbGl6ZUF0dHJpYnV0ZSA/PyBvcHRzPy5kZWZhdWx0U2VyaWFsaXplQXR0cmlidXRlID8/ICdpZCc7XG4gICAgICAgICAgc2VyaWFsaXplRm4gPVxuICAgICAgICAgICAgZGVmPy5zZXJpYWxpemUgfHxcbiAgICAgICAgICAgICgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc2VyaWFsaXplVmFsdWUgPSBnZXRQcm9wZXJ0eUJ5UGF0aCh2YWx1ZSwgc2VyaWFsaXplQXR0cmlidXRlLCB2YWx1ZSAvKmRlZmF1bHQgdmFsdWUqLyk7XG4gICAgICAgICAgICAgIGlmIChpc05pbChzZXJpYWxpemVWYWx1ZSkpIHJldHVybiBzZXJpYWxpemVWYWx1ZTtcbiAgICAgICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBzZXJpYWxpemVGbiA9IEFwcFByb3BlcnR5VXRpbHMudG9TdHJpbmc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHZhbHVlU3RyOiBzdHJpbmc7XG5cbiAgICAvLyBWYWx1ZSBpcyBhbiBhcnJheVxuICAgIGlmIChBcnJheS5pc0FycmF5KHNvdXJjZS52YWx1ZSkpIHtcbiAgICAgIHZhbHVlU3RyID0gc291cmNlLnZhbHVlLm1hcChzZXJpYWxpemVGbikuZmlsdGVyKGlzTm90TmlsT3JCbGFuaykuam9pbignLCcpO1xuICAgIH1cbiAgICAvLyBBbnkgb3RoZXIgY2FzZVxuICAgIGVsc2Uge1xuICAgICAgdmFsdWVTdHIgPSBzZXJpYWxpemVGbihzb3VyY2UudmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4geyBrZXksIHZhbHVlOiB2YWx1ZVN0ciB9O1xuICB9XG5cbiAgc3RhdGljIGZyb21PYmplY3Q8VCA9IHN0cmluZz4oXG4gICAgc291cmNlOiBQcm9wZXJ0eSB8IFByb3BlcnR5PFQ+LFxuICAgIGRlZjogRm9ybUZpZWxkRGVmaW5pdGlvbixcbiAgICBvcHRzPzoge1xuICAgICAgZGVmYXVsdFN1Z2dlc3RGbjogU3VnZ2VzdEZuPGFueSwgYW55PjtcbiAgICAgIGRlZmF1bHRTdWdnZXN0T3B0aW9ucz86IEVudGl0aWVzU2VydmljZUxvYWRPcHRpb25zO1xuICAgICAgZGVmYXVsdFNlcmlhbGl6ZUF0dHJpYnV0ZT86IHN0cmluZztcbiAgICB9XG4gICk6IFByb3BlcnR5PFQ+IHwgUHJvbWlzZTxQcm9wZXJ0eTxUPj4ge1xuICAgIGlmICghc291cmNlPy5rZXkgfHwgaXNOaWwoc291cmNlLnZhbHVlKSB8fCAhZGVmKSByZXR1cm4gc291cmNlIGFzIFByb3BlcnR5PFQ+OyAvLyBTa2lwIGlmIG5vIGtleVxuXG4gICAgLy8gQ2xvbmUgdGhlIHNvdXJjZVxuICAgIGNvbnN0IHRhcmdldDogUHJvcGVydHk8YW55PiA9IHsga2V5OiBzb3VyY2Uua2V5LCB2YWx1ZTogc291cmNlLnZhbHVlIH07XG5cbiAgICBjb25zdCBqb2JzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xuICAgIC8vIFJlc29sdmUgdmFsdWVcbiAgICBzd2l0Y2ggKGRlZi50eXBlKSB7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgdGFyZ2V0LnZhbHVlID0gdG9Cb29sZWFuKHNvdXJjZS52YWx1ZSBhcyBhbnksIHRvQm9vbGVhbihkZWYuZGVmYXVsdFZhbHVlKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdkb3VibGUnOlxuICAgICAgICB0YXJnZXQudmFsdWUgPSB0b051bWJlcihzb3VyY2UudmFsdWUgYXMgYW55LCB0b051bWJlcihkZWYuZGVmYXVsdFZhbHVlKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZW51bSc6XG4gICAgICAgIGNvbnN0IHZhbHVlS2V5ID0gQXBwUHJvcGVydHlVdGlscy5rZXkodGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgaWYgKGlzTm90TmlsT3JCbGFuayh2YWx1ZUtleSkpIHtcbiAgICAgICAgICBjb25zdCBlbnVtVmFsdWUgPSAoZGVmLnZhbHVlcyBhcyAoc3RyaW5nIHwgUHJvcGVydHkpW10pPy5maW5kKChkZWZWYWx1ZSkgPT4gZGVmVmFsdWUgJiYgdmFsdWVLZXkgPT09IChkZWZWYWx1ZVsna2V5J10gfHwgZGVmVmFsdWUpKSA/PyBudWxsO1xuICAgICAgICAgIHRhcmdldC52YWx1ZSA9IGVudW1WYWx1ZT8uWydrZXknXSA/PyBlbnVtVmFsdWUgPz8gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXQudmFsdWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZW51bXMnOlxuICAgICAgICBjb25zdCB2YWx1ZUtleXMgPSBBcnJheS5pc0FycmF5KHNvdXJjZS52YWx1ZSlcbiAgICAgICAgICA/IHNvdXJjZS52YWx1ZS5tYXAoQXBwUHJvcGVydHlVdGlscy5rZXkpIC8vIENvcHlcbiAgICAgICAgICA6IHR5cGVvZiBzb3VyY2UudmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICA/IHNvdXJjZS52YWx1ZS50cmltKCkuc3BsaXQoLywrLylcbiAgICAgICAgICAgIDogW0FwcFByb3BlcnR5VXRpbHMua2V5KHNvdXJjZS52YWx1ZSldO1xuICAgICAgICB0YXJnZXQudmFsdWUgPSB2YWx1ZUtleXNcbiAgICAgICAgICAuZmlsdGVyKGlzTm90TmlsKVxuICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAoa2V5OiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgIChkZWYudmFsdWVzIGFzIChzdHJpbmcgfCBQcm9wZXJ0eSlbXSk/LmZpbmQoKGRlZlZhbHVlKSA9PiBkZWZWYWx1ZSAmJiBrZXkgPT09IChkZWZWYWx1ZVsna2V5J10gfHwgZGVmVmFsdWUpKSB8fCB7IGtleSwgdmFsdWU6ICc/JyB9XG4gICAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlbnRpdHknOlxuICAgICAgICAvLyBEZXNlcmlhbGl6ZSBlbnRpdHkgKGUuZy4gbG9hZCBlbnRpdHkgZnJvbSB0aGUgaWQpXG4gICAgICAgIGNvbnN0IHZhbHVlT3JQcm9taXNlID0gQXBwUHJvcGVydHlVdGlscy5yZXNvbHZlRW50aXR5KHRhcmdldC52YWx1ZSwgZGVmLCBvcHRzKTtcbiAgICAgICAgaWYgKGlzUHJvbWlzZSh2YWx1ZU9yUHJvbWlzZSkpIHtcbiAgICAgICAgICBqb2JzLnB1c2goXG4gICAgICAgICAgICB2YWx1ZU9yUHJvbWlzZS50aGVuKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICB0YXJnZXQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXQudmFsdWUgPSB2YWx1ZU9yUHJvbWlzZSBhcyBhbnk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlbnRpdGllcyc6XG4gICAgICAgIC8vIENvbnZlcnQgdmFsdWUgdG8gYXJyYXlcbiAgICAgICAgdGFyZ2V0LnZhbHVlID0gQXJyYXkuaXNBcnJheShzb3VyY2UudmFsdWUpXG4gICAgICAgICAgPyBzb3VyY2UudmFsdWUuc2xpY2UoKSAvLyBDb3B5XG4gICAgICAgICAgOiB0eXBlb2Ygc291cmNlLnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgPyBzb3VyY2UudmFsdWVcbiAgICAgICAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgIC5tYXAoKHYpID0+IHYudHJpbSgpKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoaXNOb3ROaWxPckJsYW5rKVxuICAgICAgICAgICAgOiBbXTtcblxuICAgICAgICAvLyBEZXNlcmlhbGl6ZSBlYWNoIHN1Yi12YWx1ZVxuICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICBmb3IgKGxldCBzdWJWYWx1ZSBvZiB0YXJnZXQudmFsdWUpIHtcbiAgICAgICAgICAvLyBEZXNlcmlhbGl6ZSBzdWItdmFsdWVcbiAgICAgICAgICBjb25zdCBzdWJWYWx1ZU9yUHJvbWlzZSA9IEFwcFByb3BlcnR5VXRpbHMucmVzb2x2ZUVudGl0eShzdWJWYWx1ZSwgZGVmLCBvcHRzKTtcblxuICAgICAgICAgIC8vIEFkZCBwcm9taXNlIHRvIGpvYnNcbiAgICAgICAgICBpZiAoaXNQcm9taXNlKHN1YlZhbHVlT3JQcm9taXNlKSkge1xuICAgICAgICAgICAgY29uc3QgZmluYWxJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgam9icy5wdXNoKFxuICAgICAgICAgICAgICBzdWJWYWx1ZU9yUHJvbWlzZS50aGVuKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBzdWIgdmFsdWVcbiAgICAgICAgICAgICAgICB0YXJnZXQudmFsdWVbZmluYWxJbmRleF0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSBzdWIgdmFsdWVcbiAgICAgICAgICAgIHRhcmdldC52YWx1ZVtpbmRleF0gPSBzdWJWYWx1ZU9yUHJvbWlzZSBhcyBhbnk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAvIVxcIFJldHVybiBhcyBwcm9taXNlIG9ubHkgaWYgbmVlZCAobGV0IGZ1bmN0aW9uIHN5bmMgd2hlbiBwb3NzaWJsZSlcbiAgICBpZiAoam9icy5sZW5ndGgpIHJldHVybiBQcm9taXNlLmFsbChqb2JzKS50aGVuKCgpID0+IHRhcmdldCk7XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVzb2x2ZUVudGl0eShcbiAgICB2YWx1ZTogYW55LFxuICAgIGRlZjogRm9ybUZpZWxkRGVmaW5pdGlvbixcbiAgICBvcHRzPzoge1xuICAgICAgZGVmYXVsdFN1Z2dlc3RGbjogU3VnZ2VzdEZuPGFueSwgYW55PjtcbiAgICAgIGRlZmF1bHRTdWdnZXN0T3B0aW9ucz86IEVudGl0aWVzU2VydmljZUxvYWRPcHRpb25zO1xuICAgICAgZGVmYXVsdFNlcmlhbGl6ZUF0dHJpYnV0ZT86IHN0cmluZztcbiAgICB9XG4gICk6IGFueSB8IFByb21pc2U8YW55PiB7XG4gICAgLy8gVXNlIGRlc2VyaWFsaXplIGZ1bmN0aW9uLCBpZiBhbnlcbiAgICBpZiAoZGVmLmRlc2VyaWFsaXplKSB7XG4gICAgICByZXR1cm4gZGVmLmRlc2VyaWFsaXplKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBPciB0cnkgdXNpbmcgc3VnZ2VzdCBmdW5jdGlvblxuICAgIHJldHVybiB0aGlzLnJlc29sdmVFbnRpdHlCeVN1Z2dlc3QodmFsdWUsIGRlZiwgb3B0cyk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhc3luYyByZXNvbHZlRW50aXR5QnlTdWdnZXN0KFxuICAgIHZhbHVlOiBhbnksXG4gICAgZGVmOiBGb3JtRmllbGREZWZpbml0aW9uLFxuICAgIG9wdHM/OiB7XG4gICAgICBkZWZhdWx0U3VnZ2VzdEZuOiBTdWdnZXN0Rm48YW55LCBhbnk+O1xuICAgICAgZGVmYXVsdFN1Z2dlc3RPcHRpb25zPzogRW50aXRpZXNTZXJ2aWNlTG9hZE9wdGlvbnM7XG4gICAgICBkZWZhdWx0U2VyaWFsaXplQXR0cmlidXRlPzogc3RyaW5nO1xuICAgIH1cbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBzZXJpYWxpemVBdHRyaWJ1dGUgPSBkZWYuc2VyaWFsaXplQXR0cmlidXRlID8/IG9wdHM/LmRlZmF1bHRTZXJpYWxpemVBdHRyaWJ1dGUgPz8gJ2lkJztcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiBpc05vdE5pbCh2YWx1ZVtzZXJpYWxpemVBdHRyaWJ1dGVdKSkge1xuICAgICAgcmV0dXJuIHZhbHVlOyAvLyBBbHJlYWR5IHJlc29sdmVcbiAgICB9XG5cbiAgICBjb25zdCBzdWdnZXN0Rm46IFN1Z2dlc3RGbjxhbnksIGFueT4gPSBkZWYuYXV0b2NvbXBsZXRlPy5zdWdnZXN0Rm4gfHwgb3B0cz8uZGVmYXVsdFN1Z2dlc3RGbjtcbiAgICBpZiAoIXN1Z2dlc3RGbikge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgTWlzc2luZyAnZGVzZXJpYWxpemUnIG9yICdhdXRvY29tcGxldGUuc3VnZ2VzdEZuJyBpbiB0aGUgZmllbGQgZGVmaW5pdGlvbiAnJHtkZWYua2V5fScuIENhbm5vdCBkZXNlcmlhbGl6ZSB2YWx1ZTogJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YFxuICAgICAgKTtcbiAgICAgIHJldHVybiB2YWx1ZTsgLy8gU2tpcFxuICAgIH1cbiAgICBsZXQgc2VhcmNoVmFsdWUgPSB2YWx1ZTtcbiAgICBjb25zdCBmaWx0ZXIgPSB7IC4uLmRlZi5hdXRvY29tcGxldGU/LmZpbHRlciB9OyAvLyBDb3BlIGZpbHRlclxuICAgIGlmIChzZXJpYWxpemVBdHRyaWJ1dGUgPT09ICdpZCcgfHwgc2VyaWFsaXplQXR0cmlidXRlID09PSAnbGFiZWwnKSB7XG4gICAgICBmaWx0ZXJbc2VyaWFsaXplQXR0cmlidXRlXSA9IHNlcmlhbGl6ZUF0dHJpYnV0ZSA9PT0gJ2lkJyA/ICt2YWx1ZSA6IHZhbHVlO1xuICAgICAgc2VhcmNoVmFsdWUgPSAnKic7XG4gICAgICAvLyBERUJVR1xuICAgICAgLy9jb25zb2xlLmRlYnVnKGBbcHJvcGVydGllcy11dGlsc10gUmVzb2x2aW5nIGVudGl0eSB3aGVyZSBpZD0ke3ZhbHVlfS4uLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWx0ZXIuc2VhcmNoQXR0cmlidXRlID0gc2VyaWFsaXplQXR0cmlidXRlO1xuICAgICAgLy8gREVCVUdcbiAgICAgIC8vY29uc29sZS5kZWJ1ZyhgW3Byb3BlcnRpZXMtdXRpbHNdIFJlc29sdmluZyBlbnRpdHkgd2hlcmUgJHtzZXJpYWxpemVBdHRyaWJ1dGV9PSR7c2VhcmNoVmFsdWV9Li4uYCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEZldGNoIGVudGl0eSwgdXNpbmcgdGhlIHN1Z2dlc3QgZnVuY3Rpb25cbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHN1Z2dlc3RGbihzZWFyY2hWYWx1ZSwgZmlsdGVyLCBzZXJpYWxpemVBdHRyaWJ1dGUsICdhc2MnLCB7XG4gICAgICAgIHdpdGhUb3RhbDogZmFsc2UsXG4gICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgc2l6ZTogMSxcbiAgICAgICAgLi4ub3B0cz8uZGVmYXVsdFN1Z2dlc3RPcHRpb25zLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEdldCByZXN1bHQgYXJyYXlcbiAgICAgIGNvbnN0IGRhdGEgPSBBcnJheS5pc0FycmF5KHJlcykgPyByZXMgOiByZXMuZGF0YTtcblxuICAgICAgaWYgKGRhdGE/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKGRhdGE/Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgW3Byb3BlcnRpZXMtdXRpbHNdIE1vcmUgdGhhbiBvbmUgZW50aXR5IGZvdW5kLCBmb3Igb3B0aW9uICR7ZGVmLmtleX09JHt2YWx1ZX0hIFBsZWFzZSBjaGVjayBvcHRpb24ncyBkZWZpbml0aW9uIGFuZCB0aGUgJ2F1dG9jb21wbGV0ZS5zdWdnZXN0Rm4nIGZ1bmN0aW9uYCxcbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gREVCVUdcbiAgICAgICAgLy9jb25zb2xlLmRlYnVnKGBbcHJvcGVydGllcy11dGlsc10gJHtkYXRhLmxlbmd0aH0gZW50aXRpZXMgZm91bmQ6IGAsIGRhdGEpO1xuXG4gICAgICAgIC8vIE9rLCB3ZSBmaW5kIGl0ID0+IHN0b3AgaGVyZVxuICAgICAgICByZXR1cm4gZGF0YVswXTtcbiAgICAgIH1cblxuICAgICAgLy8gV2FybiwgYnV0IGNvbnRpbnVlXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBbcHJvcGVydGllcy11dGlsc10gVW5hYmxlIHRvIHJlc29sdmUgZW50aXR5IGZvciBvcHRpb246ICR7ZGVmLmtleX09JHt2YWx1ZX0uIFBsZWFzZSBjaGVjayBvcHRpb24ncyBkZWZpbml0aW9uIGFuZCB0aGUgJ2F1dG9jb21wbGV0ZS5zdWdnZXN0Rm4nIGZ1bmN0aW9uYFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFtwcm9wZXJ0aWVzLXV0aWxzXSBDYW5ub3QgcmVzb2x2ZSBlbnRpdHkgZm9yIG9wdGlvbjogJHtkZWYua2V5fT0ke3ZhbHVlfWAsIGVycik7XG4gICAgICAvLyBDb250aW51ZVxuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgbWlzc2luZyByZXN1bHRcbiAgICBjb25zdCB1bnJlc29sdmVkRW50aXR5ID0gPGFueT57XG4gICAgICBbc2VyaWFsaXplQXR0cmlidXRlXTogdmFsdWUsXG4gICAgfTtcblxuICAgIC8vIEZpbGwgYXR0cmlidXRlcyB3aXRoICc/PydcbiAgICBkZWYuYXV0b2NvbXBsZXRlPy5hdHRyaWJ1dGVzPy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIHVucmVzb2x2ZWRFbnRpdHlba2V5XSA9IHVucmVzb2x2ZWRFbnRpdHlba2V5XSA/PyAnJztcbiAgICB9KTtcblxuICAgIHJldHVybiB1bnJlc29sdmVkRW50aXR5O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgdG9TdHJpbmcodmFsdWU/OiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZT8udG9TdHJpbmcoKTtcbiAgfVxufVxuIl19
|
|
@@ -3,7 +3,6 @@ import { AppPropertiesForm } from '../properties.form';
|
|
|
3
3
|
import { StatusIds } from '../../../services/model/model.enum';
|
|
4
4
|
import { suggestFromArray } from '../../../../shared/services';
|
|
5
5
|
import { Validators } from '@angular/forms';
|
|
6
|
-
import { AppPropertiesUtils } from '../properties.utils';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
import * as i1 from "@angular/forms";
|
|
9
8
|
import * as i2 from "../property.validator";
|
|
@@ -65,13 +64,11 @@ export class PropertiesFormTestPage {
|
|
|
65
64
|
}),
|
|
66
65
|
]),
|
|
67
66
|
});
|
|
67
|
+
const suggestFn = (value, filter, sortBy, sortDirection, options) => this.suggestEntity(value, filter, sortBy, sortDirection, options);
|
|
68
68
|
this.propertyDefinitions = Object.values(TEST_PROPERTIES).map((def) => {
|
|
69
69
|
if (def.type === 'entity' || def.type === 'entities') {
|
|
70
|
-
def =
|
|
71
|
-
def.autocomplete =
|
|
72
|
-
suggestFn: (value, filter) => this.suggestEntity(value, filter),
|
|
73
|
-
...def.autocomplete,
|
|
74
|
-
};
|
|
70
|
+
def = { ...def }; // Copy
|
|
71
|
+
def.autocomplete.suggestFn = suggestFn;
|
|
75
72
|
}
|
|
76
73
|
return def;
|
|
77
74
|
});
|
|
@@ -88,13 +85,10 @@ export class PropertiesFormTestPage {
|
|
|
88
85
|
// Multiples entities
|
|
89
86
|
[TEST_PROPERTIES.ENTITIES.key]: [FAKE_ENTITIES[0], FAKE_ENTITIES[1]].map((entity) => entity.id).join(','),
|
|
90
87
|
};
|
|
91
|
-
|
|
92
|
-
const data = await AppPropertiesUtils.arrayFromObject(json, this.propertyDefinitions);
|
|
93
|
-
console.debug('[properties-form-test] Value to set: ', data);
|
|
94
|
-
this.propertiesForm.value = data;
|
|
88
|
+
await this.propertiesForm.setValue(json);
|
|
95
89
|
}
|
|
96
|
-
async suggestEntity(value, filter) {
|
|
97
|
-
return suggestFromArray(FAKE_ENTITIES, value, filter);
|
|
90
|
+
async suggestEntity(value, filter, sortBy, sortDirection, options) {
|
|
91
|
+
return suggestFromArray(FAKE_ENTITIES, value, filter, sortBy, sortDirection, options);
|
|
98
92
|
}
|
|
99
93
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: PropertiesFormTestPage, deps: [{ token: i1.FormBuilder }, { token: i2.PropertyValidator }], target: i0.ɵɵFactoryTarget.Component });
|
|
100
94
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: PropertiesFormTestPage, selector: "app-properties-form-test", viewQueries: [{ propertyName: "propertiesForm", first: true, predicate: ["propertiesForm"], descendants: true, read: AppPropertiesForm, static: true }], ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Properties form test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n <form [formGroup]=\"form\">\n <app-properties-form\n #propertiesForm\n formArrayName=\"properties\"\n [definitions]=\"propertyDefinitions\"\n [options]=\"{ allowEmptyArray: true }\"\n showHintKey=\"true\"\n ></app-properties-form>\n </form>\n</ion-content>\n", dependencies: [{ kind: "component", type: i3.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i3.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i3.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i3.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i3.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonBackButton, selector: "ion-back-button" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: i4.AppPropertiesForm, selector: "app-properties-form", inputs: ["formArrayName", "formArray", "options", "chipColor", "mobile", "appearance", "subscriptSizing", "showHintKey", "hintKeyPrefix", "showMoreButton", "showMoreButtonTitle", "showAddButton", "definitions"] }] });
|
|
@@ -106,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
106
100
|
type: ViewChild,
|
|
107
101
|
args: ['propertiesForm', { read: AppPropertiesForm, static: true }]
|
|
108
102
|
}] } });
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy1mb3JtLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvZm9ybS9wcm9wZXJ0aWVzL3Rlc3RpbmcvcHJvcGVydGllcy1mb3JtLnRlc3QudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvZm9ybS9wcm9wZXJ0aWVzL3Rlc3RpbmcvcHJvcGVydGllcy1mb3JtLnRlc3QuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRS9ELE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7OztBQUd6RCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3BDLFNBQVM7SUFDVCxNQUFNLEVBQXVCO1FBQzNCLEdBQUcsRUFBRSwyQkFBMkI7UUFDaEMsS0FBSyxFQUFFLG1CQUFtQjtRQUMxQixJQUFJLEVBQUUsUUFBUTtRQUNkLFlBQVksRUFBRTtZQUNaLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLE1BQU0sRUFBRTtnQkFDTixVQUFVLEVBQUUsZUFBZTtnQkFDM0IsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDO2FBQ2pEO1lBQ0QsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQztTQUM5QjtRQUNELFlBQVksRUFBRSxJQUFJO0tBQ25CO0lB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dCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1GaWVsZERlZmluaXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvZm9ybS9maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBBcHBQcm9wZXJ0aWVzRm9ybSB9IGZyb20gJy4uL3Byb3BlcnRpZXMuZm9ybSc7XG5pbXBvcnQgeyBTdGF0dXNJZHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2RlbC9tb2RlbC5lbnVtJztcbmltcG9ydCB7IHN1Z2dlc3RGcm9tQXJyYXkgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvc2VydmljZXMnO1xuaW1wb3J0IHsgTG9hZFJlc3VsdCB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUHJvcGVydHlWYWxpZGF0b3IgfSBmcm9tICcuLi9wcm9wZXJ0eS52YWxpZGF0b3InO1xuaW1wb3J0IHsgQXBwUHJvcGVydGllc1V0aWxzIH0gZnJvbSAnLi4vcHJvcGVydGllcy51dGlscyc7XG5pbXBvcnQgeyBQcm9wZXJ0aWVzTWFwIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3R5cGVzJztcblxuY29uc3QgVEVTVF9QUk9QRVJUSUVTID0gT2JqZWN0LmZyZWV6ZSh7XG4gIC8vIEVudGl0eVxuICBFTlRJVFk6IDxGb3JtRmllbGREZWZpbml0aW9uPntcbiAgICBrZXk6ICdzdW1hcmlzLnByb3BlcnRpZXMuZW50aXR5JyxcbiAgICBsYWJlbDogJ1NlbGVjdCBvbmUgZW50aXR5JyxcbiAgICB0eXBlOiAnZW50aXR5JyxcbiAgICBhdXRvY29tcGxldGU6IHtcbiAgICAgIHNob3dBbGxPbkZvY3VzOiB0cnVlLFxuICAgICAgZmlsdGVyOiB7XG4gICAgICAgIGVudGl0eU5hbWU6ICdMb2NhdGlvbkxldmVsJyxcbiAgICAgICAgc3RhdHVzSWRzOiBbU3RhdHVzSWRzLkRJU0FCTEUsIFN0YXR1c0lkcy5FTkFCTEVdLFxuICAgICAgfSxcbiAgICAgIGF0dHJpYnV0ZXM6IFsnbGFiZWwnLCAnbmFtZSddLFxuICAgIH0sXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICB9LFxuXG4gIC8vIEVudGl0aWVzXG4gIEVOVElUSUVTOiA8Rm9ybUZpZWxkRGVmaW5pdGlvbj57XG4gICAga2V5OiAnc3VtYXJpcy5wcm9wZXJ0aWVzLmVudGl0aWVzJyxcbiAgICBsYWJlbDogJ1NlbGVjdCBtYW55IGVudGl0aWVzJyxcbiAgICB0eXBlOiAnZW50aXRpZXMnLFxuICAgIGF1dG9jb21wbGV0ZToge1xuICAgICAgc2hvd0FsbE9uRm9jdXM6IHRydWUsXG4gICAgICBmaWx0ZXI6IHtcbiAgICAgICAgZW50aXR5TmFtZTogJ0xvY2F0aW9uTGV2ZWwnLFxuICAgICAgICBzdGF0dXNJZHM6IFtTdGF0dXNJZHMuRElTQUJMRSwgU3RhdHVzSWRzLkVOQUJMRV0sXG4gICAgICB9LFxuICAgICAgYXR0cmlidXRlczogWydsYWJlbCcsICduYW1lJ10sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gIH0sXG59KTtcblxuY29uc3QgRkFLRV9FTlRJVElFUyA9IFtcbiAgeyBpZDogMSwgbGFiZWw6ICdBQUEnLCBuYW1lOiAnSXRlbSBBJywgZGVzY3JpcHRpb246ICdWZXJ5IGxvbmcgZGVzY3JpcHRpb24gQScsIGNvbW1lbnRzOiAnVmVyeSB2ZXJ5IGxvbmcgY29tbWVudHMuLi4gYWdhaW4gZm9yIEEnIH0sXG4gIHsgaWQ6IDIsIGxhYmVsOiAnQkJCJywgbmFtZTogJ0l0ZW0gQicsIGRlc2NyaXB0aW9uOiAnVmVyeSBsb25nIGRlc2NyaXB0aW9uIEInLCBjb21tZW50czogJ1ZlcnkgdmVyeSBsb25nIGNvbW1lbnRzLi4uIGFnYWluIGZvciBCJyB9LFxuICB7IGlkOiAzLCBsYWJlbDogJ0NDQycsIG5hbWU6ICdJdGVtIEMnLCBkZXNjcmlwdGlvbjogJ1ZlcnkgbG9uZyBkZXNjcmlwdGlvbiBDJywgY29tbWVudHM6ICdWZXJ5IHZlcnkgbG9uZyBjb21tZW50cy4uLiBhZ2FpbiBmb3IgQycgfSxcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1wcm9wZXJ0aWVzLWZvcm0tdGVzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9wZXJ0aWVzLWZvcm0udGVzdC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgUHJvcGVydGllc0Zvcm1UZXN0UGFnZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByb3BlcnR5RGVmaW5pdGlvbnM6IEZvcm1GaWVsZERlZmluaXRpb25bXTtcbiAgaTE4bkZpZWxkUHJlZml4OiBzdHJpbmc7XG4gIGZvcm06IEZvcm1Hcm91cDtcblxuICBAVmlld0NoaWxkKCdwcm9wZXJ0aWVzRm9ybScsIHsgcmVhZDogQXBwUHJvcGVydGllc0Zvcm0sIHN0YXRpYzogdHJ1ZSB9KSBwcm9wZXJ0aWVzRm9ybTogQXBwUHJvcGVydGllc0Zvcm07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcm90ZWN0ZWQgcHY6IFByb3BlcnR5VmFsaWRhdG9yXG4gICkge1xuICAgIHRoaXMuaTE4bkZpZWxkUHJlZml4ID0gJyc7XG4gICAgdGhpcy5mb3JtID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgcHJvcGVydGllczogZm9ybUJ1aWxkZXIuYXJyYXkoW1xuICAgICAgICB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICBrZXk6IFtudWxsLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4KDUwKV0pXSxcbiAgICAgICAgICB2YWx1ZTogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICB9KSxcbiAgICAgIF0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wcm9wZXJ0eURlZmluaXRpb25zID0gT2JqZWN0LnZhbHVlcyhURVNUX1BST1BFUlRJRVMpLm1hcCgoZGVmKSA9PiB7XG4gICAgICBpZiAoZGVmLnR5cGUgPT09ICdlbnRpdHknIHx8IGRlZi50eXBlID09PSAnZW50aXRpZXMnKSB7XG4gICAgICAgIGRlZiA9IE9iamVjdC5hc3NpZ24oe30sIGRlZik7IC8vIENvcHlcbiAgICAgICAgZGVmLmF1dG9jb21wbGV0ZSA9IHtcbiAgICAgICAgICBzdWdnZXN0Rm46ICh2YWx1ZSwgZmlsdGVyKSA9PiB0aGlzLnN1Z2dlc3RFbnRpdHkodmFsdWUsIGZpbHRlciksXG4gICAgICAgICAgLi4uZGVmLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkZWY7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnByb3BlcnRpZXNGb3JtLm1hcmtBc1JlYWR5KCk7XG4gICAgdGhpcy5wcm9wZXJ0aWVzRm9ybS5lbmFibGUoKTtcbiAgfVxuXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAvLyBDcmVhdGUgdGhlIG1hcCwgYXMgaXQgY29tZXMgZnJvbSB0aGUgcG9kXG4gICAgY29uc3QganNvbiA9IDxQcm9wZXJ0aWVzTWFwPntcbiAgICAgIC8vIFNpbXBsZSBlbnRpdHlcbiAgICAgIFtURVNUX1BST1BFUlRJRVMuRU5USVRZLmtleV06IEZBS0VfRU5USVRJRVNbMF0uaWQudG9TdHJpbmcoKSxcblxuICAgICAgLy8gTXVsdGlwbGVzIGVudGl0aWVzXG4gICAgICBbVEVTVF9QUk9QRVJUSUVTLkVOVElUSUVTLmtleV06IFtGQUtFX0VOVElUSUVTWzBdLCBGQUtFX0VOVElUSUVTWzFdXS5tYXAoKGVudGl0eSkgPT4gZW50aXR5LmlkKS5qb2luKCcsJyksXG4gICAgfTtcblxuICAgIC8vIENvbnZlcnQgdG8gYW4gYXJyYXkgb2YgUHJvcGVydHlcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgQXBwUHJvcGVydGllc1V0aWxzLmFycmF5RnJvbU9iamVjdChqc29uLCB0aGlzLnByb3BlcnR5RGVmaW5pdGlvbnMpO1xuXG4gICAgY29uc29sZS5kZWJ1ZygnW3Byb3BlcnRpZXMtZm9ybS10ZXN0XSBWYWx1ZSB0byBzZXQ6ICcsIGRhdGEpO1xuICAgIHRoaXMucHJvcGVydGllc0Zvcm0udmFsdWUgPSBkYXRhO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHN1Z2dlc3RFbnRpdHkodmFsdWU6IGFueSwgZmlsdGVyOiBhbnkpOiBQcm9taXNlPExvYWRSZXN1bHQ8YW55Pj4ge1xuICAgIHJldHVybiBzdWdnZXN0RnJvbUFycmF5KEZBS0VfRU5USVRJRVMsIHZhbHVlLCBmaWx0ZXIpO1xuICB9XG59XG4iLCI8aW9uLWhlYWRlcj5cbiAgPGlvbi10b29sYmFyIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIj5cbiAgICAgIDxpb24tYmFjay1idXR0b24+PC9pb24tYmFjay1idXR0b24+XG4gICAgPC9pb24tYnV0dG9ucz5cblxuICAgIDxpb24tdGl0bGU+UHJvcGVydGllcyBmb3JtIHRlc3QgcGFnZTwvaW9uLXRpdGxlPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuXG48aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICA8YXBwLXByb3BlcnRpZXMtZm9ybVxuICAgICAgI3Byb3BlcnRpZXNGb3JtXG4gICAgICBmb3JtQXJyYXlOYW1lPVwicHJvcGVydGllc1wiXG4gICAgICBbZGVmaW5pdGlvbnNdPVwicHJvcGVydHlEZWZpbml0aW9uc1wiXG4gICAgICBbb3B0aW9uc109XCJ7IGFsbG93RW1wdHlBcnJheTogdHJ1ZSB9XCJcbiAgICAgIHNob3dIaW50S2V5PVwidHJ1ZVwiXG4gICAgPjwvYXBwLXByb3BlcnRpZXMtZm9ybT5cbiAgPC9mb3JtPlxuPC9pb24tY29udGVudD5cbiJdfQ==
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy1mb3JtLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvZm9ybS9wcm9wZXJ0aWVzL3Rlc3RpbmcvcHJvcGVydGllcy1mb3JtLnRlc3QudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvZm9ybS9wcm9wZXJ0aWVzL3Rlc3RpbmcvcHJvcGVydGllcy1mb3JtLnRlc3QuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRS9ELE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQUtwRSxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3BDLFNBQVM7SUFDVCxNQUFNLEVBQXVCO1FBQzNCLEdBQUcsRUFBRSwyQkFBMkI7UUFDaEMsS0FBSyxFQUFFLG1CQUFtQjtRQUMxQixJQUFJLEVBQUUsUUFBUTtRQUNkLFlBQVksRUFBRTtZQUNaLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLE1BQU0sRUFBRTtnQkFDTixVQUFVLEVBQUUsZUFBZTtnQkFDM0IsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDO2FBQ2pEO1lBQ0QsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQztTQUM5QjtRQUNELFlBQVksRUFBRSxJQUFJO0tBQ25CO0lBRUQsV0FBVztJQUNYLFFBQVEsRUFBdUI7UUFDN0IsR0FBRyxFQUFFLDZCQUE2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SyxDQUFDLGVBQWU7UUFDbkIsMkNBQTJDO1FBQzNDLE1BQU0sSUFBSSxHQUFnQjtZQUN4QixnQkFBZ0I7WUFDaEIsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFO1lBRTVELHFCQUFxQjtZQUNyQixDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUMxRyxDQUFDO1FBQ0YsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRVMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFVLEVBQUUsTUFBVyxFQUFFLE1BQW9CLEVBQUUsYUFBNEIsRUFBRSxPQUFZO1FBQ3JILE9BQU8sZ0JBQWdCLENBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RixDQUFDO3VHQXBEVSxzQkFBc0I7MkZBQXRCLHNCQUFzQiw2SkFLSSxpQkFBaUIsMkNDNUR4RCx3akJBcUJBOzsyRkRrQ2Esc0JBQXNCO2tCQUpsQyxTQUFTOytCQUNFLDBCQUEwQjtnSEFRb0MsY0FBYztzQkFBckYsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUZpZWxkRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9mb3JtL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7IEFwcFByb3BlcnRpZXNGb3JtIH0gZnJvbSAnLi4vcHJvcGVydGllcy5mb3JtJztcbmltcG9ydCB7IFN0YXR1c0lkcyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZGVsL21vZGVsLmVudW0nO1xuaW1wb3J0IHsgc3VnZ2VzdEZyb21BcnJheSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBMb2FkUmVzdWx0LCBTdWdnZXN0Rm4gfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFByb3BlcnR5VmFsaWRhdG9yIH0gZnJvbSAnLi4vcHJvcGVydHkudmFsaWRhdG9yJztcbmltcG9ydCB7IFByb3BlcnR5TWFwIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3R5cGVzJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcblxuY29uc3QgVEVTVF9QUk9QRVJUSUVTID0gT2JqZWN0LmZyZWV6ZSh7XG4gIC8vIEVudGl0eVxuICBFTlRJVFk6IDxGb3JtRmllbGREZWZpbml0aW9uPntcbiAgICBrZXk6ICdzdW1hcmlzLnByb3BlcnRpZXMuZW50aXR5JyxcbiAgICBsYWJlbDogJ1NlbGVjdCBvbmUgZW50aXR5JyxcbiAgICB0eXBlOiAnZW50aXR5JyxcbiAgICBhdXRvY29tcGxldGU6IHtcbiAgICAgIHNob3dBbGxPbkZvY3VzOiB0cnVlLFxuICAgICAgZmlsdGVyOiB7XG4gICAgICAgIGVudGl0eU5hbWU6ICdMb2NhdGlvbkxldmVsJyxcbiAgICAgICAgc3RhdHVzSWRzOiBbU3RhdHVzSWRzLkRJU0FCTEUsIFN0YXR1c0lkcy5FTkFCTEVdLFxuICAgICAgfSxcbiAgICAgIGF0dHJpYnV0ZXM6IFsnbGFiZWwnLCAnbmFtZSddLFxuICAgIH0sXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICB9LFxuXG4gIC8vIEVudGl0aWVzXG4gIEVOVElUSUVTOiA8Rm9ybUZpZWxkRGVmaW5pdGlvbj57XG4gICAga2V5OiAnc3VtYXJpcy5wcm9wZXJ0aWVzLmVudGl0aWVzJyxcbiAgICBsYWJlbDogJ1NlbGVjdCBtYW55IGVudGl0aWVzJyxcbiAgICB0eXBlOiAnZW50aXRpZXMnLFxuICAgIGF1dG9jb21wbGV0ZToge1xuICAgICAgc2hvd0FsbE9uRm9jdXM6IHRydWUsXG4gICAgICBmaWx0ZXI6IHtcbiAgICAgICAgZW50aXR5TmFtZTogJ0xvY2F0aW9uTGV2ZWwnLFxuICAgICAgICBzdGF0dXNJZHM6IFtTdGF0dXNJZHMuRElTQUJMRSwgU3RhdHVzSWRzLkVOQUJMRV0sXG4gICAgICB9LFxuICAgICAgYXR0cmlidXRlczogWydsYWJlbCcsICduYW1lJ10sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gIH0sXG59KTtcblxuY29uc3QgRkFLRV9FTlRJVElFUyA9IFtcbiAgeyBpZDogMSwgbGFiZWw6ICdBQUEnLCBuYW1lOiAnSXRlbSBBJywgZGVzY3JpcHRpb246ICdWZXJ5IGxvbmcgZGVzY3JpcHRpb24gQScsIGNvbW1lbnRzOiAnVmVyeSB2ZXJ5IGxvbmcgY29tbWVudHMuLi4gYWdhaW4gZm9yIEEnIH0sXG4gIHsgaWQ6IDIsIGxhYmVsOiAnQkJCJywgbmFtZTogJ0l0ZW0gQicsIGRlc2NyaXB0aW9uOiAnVmVyeSBsb25nIGRlc2NyaXB0aW9uIEInLCBjb21tZW50czogJ1ZlcnkgdmVyeSBsb25nIGNvbW1lbnRzLi4uIGFnYWluIGZvciBCJyB9LFxuICB7IGlkOiAzLCBsYWJlbDogJ0NDQycsIG5hbWU6ICdJdGVtIEMnLCBkZXNjcmlwdGlvbjogJ1ZlcnkgbG9uZyBkZXNjcmlwdGlvbiBDJywgY29tbWVudHM6ICdWZXJ5IHZlcnkgbG9uZyBjb21tZW50cy4uLiBhZ2FpbiBmb3IgQycgfSxcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1wcm9wZXJ0aWVzLWZvcm0tdGVzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9wZXJ0aWVzLWZvcm0udGVzdC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgUHJvcGVydGllc0Zvcm1UZXN0UGFnZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByb3BlcnR5RGVmaW5pdGlvbnM6IEZvcm1GaWVsZERlZmluaXRpb25bXTtcbiAgaTE4bkZpZWxkUHJlZml4OiBzdHJpbmc7XG4gIGZvcm06IEZvcm1Hcm91cDtcblxuICBAVmlld0NoaWxkKCdwcm9wZXJ0aWVzRm9ybScsIHsgcmVhZDogQXBwUHJvcGVydGllc0Zvcm0sIHN0YXRpYzogdHJ1ZSB9KSBwcm9wZXJ0aWVzRm9ybTogQXBwUHJvcGVydGllc0Zvcm07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcm90ZWN0ZWQgcHY6IFByb3BlcnR5VmFsaWRhdG9yXG4gICkge1xuICAgIHRoaXMuaTE4bkZpZWxkUHJlZml4ID0gJyc7XG4gICAgdGhpcy5mb3JtID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgcHJvcGVydGllczogZm9ybUJ1aWxkZXIuYXJyYXkoW1xuICAgICAgICB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICBrZXk6IFtudWxsLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4KDUwKV0pXSxcbiAgICAgICAgICB2YWx1ZTogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICB9KSxcbiAgICAgIF0pLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3VnZ2VzdEZuOiBTdWdnZXN0Rm48YW55LCBhbnk+ID0gKHZhbHVlLCBmaWx0ZXIsIHNvcnRCeSwgc29ydERpcmVjdGlvbiwgb3B0aW9ucykgPT5cbiAgICAgIHRoaXMuc3VnZ2VzdEVudGl0eSh2YWx1ZSwgZmlsdGVyLCBzb3J0QnksIHNvcnREaXJlY3Rpb24sIG9wdGlvbnMpO1xuXG4gICAgdGhpcy5wcm9wZXJ0eURlZmluaXRpb25zID0gT2JqZWN0LnZhbHVlcyhURVNUX1BST1BFUlRJRVMpLm1hcCgoZGVmKSA9PiB7XG4gICAgICBpZiAoZGVmLnR5cGUgPT09ICdlbnRpdHknIHx8IGRlZi50eXBlID09PSAnZW50aXRpZXMnKSB7XG4gICAgICAgIGRlZiA9IHsgLi4uZGVmIH07IC8vIENvcHlcbiAgICAgICAgZGVmLmF1dG9jb21wbGV0ZS5zdWdnZXN0Rm4gPSBzdWdnZXN0Rm47XG4gICAgICB9XG4gICAgICByZXR1cm4gZGVmO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wcm9wZXJ0aWVzRm9ybS5tYXJrQXNSZWFkeSgpO1xuICAgIHRoaXMucHJvcGVydGllc0Zvcm0uZW5hYmxlKCk7XG4gIH1cblxuICBhc3luYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gQ3JlYXRlIHRoZSBtYXAsIGFzIGl0IGNvbWVzIGZyb20gdGhlIHBvZFxuICAgIGNvbnN0IGpzb24gPSA8UHJvcGVydHlNYXA+e1xuICAgICAgLy8gU2ltcGxlIGVudGl0eVxuICAgICAgW1RFU1RfUFJPUEVSVElFUy5FTlRJVFkua2V5XTogRkFLRV9FTlRJVElFU1swXS5pZC50b1N0cmluZygpLFxuXG4gICAgICAvLyBNdWx0aXBsZXMgZW50aXRpZXNcbiAgICAgIFtURVNUX1BST1BFUlRJRVMuRU5USVRJRVMua2V5XTogW0ZBS0VfRU5USVRJRVNbMF0sIEZBS0VfRU5USVRJRVNbMV1dLm1hcCgoZW50aXR5KSA9PiBlbnRpdHkuaWQpLmpvaW4oJywnKSxcbiAgICB9O1xuICAgIGF3YWl0IHRoaXMucHJvcGVydGllc0Zvcm0uc2V0VmFsdWUoanNvbik7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgc3VnZ2VzdEVudGl0eSh2YWx1ZTogYW55LCBmaWx0ZXI6IGFueSwgc29ydEJ5OiBhbnkgfCBzdHJpbmcsIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb24sIG9wdGlvbnM6IGFueSk6IFByb21pc2U8TG9hZFJlc3VsdDxhbnk+PiB7XG4gICAgcmV0dXJuIHN1Z2dlc3RGcm9tQXJyYXkoRkFLRV9FTlRJVElFUywgdmFsdWUsIGZpbHRlciwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uLCBvcHRpb25zKTtcbiAgfVxufVxuIiwiPGlvbi1oZWFkZXI+XG4gIDxpb24tdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLWJhY2stYnV0dG9uPjwvaW9uLWJhY2stYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG5cbiAgICA8aW9uLXRpdGxlPlByb3BlcnRpZXMgZm9ybSB0ZXN0IHBhZ2U8L2lvbi10aXRsZT5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cblxuPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgPGFwcC1wcm9wZXJ0aWVzLWZvcm1cbiAgICAgICNwcm9wZXJ0aWVzRm9ybVxuICAgICAgZm9ybUFycmF5TmFtZT1cInByb3BlcnRpZXNcIlxuICAgICAgW2RlZmluaXRpb25zXT1cInByb3BlcnR5RGVmaW5pdGlvbnNcIlxuICAgICAgW29wdGlvbnNdPVwieyBhbGxvd0VtcHR5QXJyYXk6IHRydWUgfVwiXG4gICAgICBzaG93SGludEtleT1cInRydWVcIlxuICAgID48L2FwcC1wcm9wZXJ0aWVzLWZvcm0+XG4gIDwvZm9ybT5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
|