@payloadcms/db-postgres 0.2.3 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/find/buildFindManyArgs.d.ts.map +1 -1
- package/dist/find/buildFindManyArgs.js +12 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +7 -1
- package/dist/migrate.d.ts.map +1 -1
- package/dist/migrate.js +14 -5
- package/dist/migrateDown.d.ts.map +1 -1
- package/dist/migrateDown.js +13 -10
- package/dist/migrateFresh.d.ts.map +1 -1
- package/dist/migrateFresh.js +15 -12
- package/dist/migrateRefresh.d.ts.map +1 -1
- package/dist/migrateRefresh.js +17 -15
- package/dist/migrateReset.d.ts.map +1 -1
- package/dist/migrateReset.js +11 -9
- package/dist/queries/parseParams.d.ts.map +1 -1
- package/dist/queries/parseParams.js +29 -5
- package/dist/schema/build.d.ts +3 -1
- package/dist/schema/build.d.ts.map +1 -1
- package/dist/schema/build.js +58 -17
- package/dist/schema/getConfigIDType.d.ts +3 -0
- package/dist/schema/getConfigIDType.d.ts.map +1 -0
- package/dist/schema/getConfigIDType.js +25 -0
- package/dist/schema/traverseFields.d.ts +4 -1
- package/dist/schema/traverseFields.d.ts.map +1 -1
- package/dist/schema/traverseFields.js +48 -8
- package/dist/schema/validateExistingBlockIsIdentical.d.ts.map +1 -1
- package/dist/schema/validateExistingBlockIsIdentical.js +49 -7
- package/dist/transform/read/hasManyText.d.ts +10 -0
- package/dist/transform/read/hasManyText.d.ts.map +1 -0
- package/dist/transform/read/hasManyText.js +20 -0
- package/dist/transform/read/index.d.ts.map +1 -1
- package/dist/transform/read/index.js +7 -1
- package/dist/transform/read/traverseFields.d.ts +5 -1
- package/dist/transform/read/traverseFields.d.ts.map +1 -1
- package/dist/transform/read/traverseFields.js +53 -2
- package/dist/transform/write/array.d.ts +2 -1
- package/dist/transform/write/array.d.ts.map +1 -1
- package/dist/transform/write/array.js +3 -2
- package/dist/transform/write/blocks.d.ts +2 -1
- package/dist/transform/write/blocks.d.ts.map +1 -1
- package/dist/transform/write/blocks.js +3 -2
- package/dist/transform/write/index.d.ts.map +1 -1
- package/dist/transform/write/index.js +3 -1
- package/dist/transform/write/texts.d.ts +8 -0
- package/dist/transform/write/texts.d.ts.map +1 -0
- package/dist/transform/write/texts.js +21 -0
- package/dist/transform/write/traverseFields.d.ts +2 -1
- package/dist/transform/write/traverseFields.d.ts.map +1 -1
- package/dist/transform/write/traverseFields.js +41 -2
- package/dist/transform/write/types.d.ts +1 -0
- package/dist/transform/write/types.d.ts.map +1 -1
- package/dist/upsertRow/index.d.ts.map +1 -1
- package/dist/upsertRow/index.js +28 -1
- package/package.json +3 -3
@@ -16,12 +16,13 @@ const _blocks = require("./blocks");
|
|
16
16
|
const _numbers = require("./numbers");
|
17
17
|
const _relationships = require("./relationships");
|
18
18
|
const _selects = require("./selects");
|
19
|
+
const _texts = require("./texts");
|
19
20
|
function _interop_require_default(obj) {
|
20
21
|
return obj && obj.__esModule ? obj : {
|
21
22
|
default: obj
|
22
23
|
};
|
23
24
|
}
|
24
|
-
const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksToDelete, columnPrefix, data, existingLocales, fieldPrefix, fields, forcedLocale, locales, numbers, parentTableName, path, relationships, relationshipsToDelete, row, selects })=>{
|
25
|
+
const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksToDelete, columnPrefix, data, existingLocales, fieldPrefix, fields, forcedLocale, locales, texts, numbers, parentTableName, path, relationships, relationshipsToDelete, row, selects })=>{
|
25
26
|
fields.forEach((field)=>{
|
26
27
|
let columnName = '';
|
27
28
|
let fieldName = '';
|
@@ -47,6 +48,7 @@ const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksToDelete
|
|
47
48
|
data: localeData,
|
48
49
|
field,
|
49
50
|
locale: localeKey,
|
51
|
+
texts,
|
50
52
|
numbers,
|
51
53
|
path,
|
52
54
|
relationships,
|
@@ -66,6 +68,7 @@ const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksToDelete
|
|
66
68
|
blocksToDelete,
|
67
69
|
data: data[field.name],
|
68
70
|
field,
|
71
|
+
texts,
|
69
72
|
numbers,
|
70
73
|
path,
|
71
74
|
relationships,
|
@@ -92,6 +95,7 @@ const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksToDelete
|
|
92
95
|
data: localeData,
|
93
96
|
field,
|
94
97
|
locale: localeKey,
|
98
|
+
texts,
|
95
99
|
numbers,
|
96
100
|
path,
|
97
101
|
relationships,
|
@@ -109,6 +113,7 @@ const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksToDelete
|
|
109
113
|
blocksToDelete,
|
110
114
|
data: fieldData,
|
111
115
|
field,
|
116
|
+
texts,
|
112
117
|
numbers,
|
113
118
|
path,
|
114
119
|
relationships,
|
@@ -135,6 +140,7 @@ const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksToDelete
|
|
135
140
|
fields: field.fields,
|
136
141
|
forcedLocale: localeKey,
|
137
142
|
locales,
|
143
|
+
texts,
|
138
144
|
numbers,
|
139
145
|
parentTableName,
|
140
146
|
path: `${path || ''}${field.name}.`,
|
@@ -157,6 +163,7 @@ const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksToDelete
|
|
157
163
|
fieldPrefix: `${fieldName}_`,
|
158
164
|
fields: field.fields,
|
159
165
|
locales,
|
166
|
+
texts,
|
160
167
|
numbers,
|
161
168
|
parentTableName,
|
162
169
|
path: `${path || ''}${field.name}.`,
|
@@ -188,6 +195,7 @@ const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksToDelete
|
|
188
195
|
fields: tab.fields,
|
189
196
|
forcedLocale: localeKey,
|
190
197
|
locales,
|
198
|
+
texts,
|
191
199
|
numbers,
|
192
200
|
parentTableName,
|
193
201
|
path: `${path || ''}${tab.name}.`,
|
@@ -210,6 +218,7 @@ const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksToDelete
|
|
210
218
|
fieldPrefix: `${fieldPrefix || ''}${tab.name}_`,
|
211
219
|
fields: tab.fields,
|
212
220
|
locales,
|
221
|
+
texts,
|
213
222
|
numbers,
|
214
223
|
parentTableName,
|
215
224
|
path: `${path || ''}${tab.name}.`,
|
@@ -233,6 +242,7 @@ const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksToDelete
|
|
233
242
|
fieldPrefix,
|
234
243
|
fields: tab.fields,
|
235
244
|
locales,
|
245
|
+
texts,
|
236
246
|
numbers,
|
237
247
|
parentTableName,
|
238
248
|
path,
|
@@ -257,6 +267,7 @@ const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksToDelete
|
|
257
267
|
fieldPrefix,
|
258
268
|
fields: field.fields,
|
259
269
|
locales,
|
270
|
+
texts,
|
260
271
|
numbers,
|
261
272
|
parentTableName,
|
262
273
|
path,
|
@@ -307,6 +318,34 @@ const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksToDelete
|
|
307
318
|
}
|
308
319
|
return;
|
309
320
|
}
|
321
|
+
if (field.type === 'text' && field.hasMany) {
|
322
|
+
const textPath = `${path || ''}${field.name}`;
|
323
|
+
if (field.localized) {
|
324
|
+
if (typeof fieldData === 'object') {
|
325
|
+
Object.entries(fieldData).forEach(([localeKey, localeData])=>{
|
326
|
+
if (Array.isArray(localeData)) {
|
327
|
+
(0, _texts.transformTexts)({
|
328
|
+
baseRow: {
|
329
|
+
locale: localeKey,
|
330
|
+
path: textPath
|
331
|
+
},
|
332
|
+
data: localeData,
|
333
|
+
texts
|
334
|
+
});
|
335
|
+
}
|
336
|
+
});
|
337
|
+
}
|
338
|
+
} else if (Array.isArray(fieldData)) {
|
339
|
+
(0, _texts.transformTexts)({
|
340
|
+
baseRow: {
|
341
|
+
path: textPath
|
342
|
+
},
|
343
|
+
data: fieldData,
|
344
|
+
texts
|
345
|
+
});
|
346
|
+
}
|
347
|
+
return;
|
348
|
+
}
|
310
349
|
if (field.type === 'number' && field.hasMany) {
|
311
350
|
const numberPath = `${path || ''}${field.name}`;
|
312
351
|
if (field.localized) {
|
@@ -401,4 +440,4 @@ const traverseFields = ({ adapter, arrays, baseTableName, blocks, blocksToDelete
|
|
401
440
|
});
|
402
441
|
};
|
403
442
|
|
404
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm0vd3JpdGUvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhIH0gZnJvbSAncGF5bG9hZC90eXBlcydcbmltcG9ydCB0b1NuYWtlQ2FzZSBmcm9tICd0by1zbmFrZS1jYXNlJ1xuXG5pbXBvcnQgdHlwZSB7IFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBBcnJheVJvd1RvSW5zZXJ0LCBCbG9ja1Jvd1RvSW5zZXJ0LCBSZWxhdGlvbnNoaXBUb0RlbGV0ZSB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB7IGlzQXJyYXlPZlJvd3MgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvaXNBcnJheU9mUm93cydcbmltcG9ydCB7IHRyYW5zZm9ybUFycmF5IH0gZnJvbSAnLi9hcnJheSdcbmltcG9ydCB7IHRyYW5zZm9ybUJsb2NrcyB9IGZyb20gJy4vYmxvY2tzJ1xuaW1wb3J0IHsgdHJhbnNmb3JtTnVtYmVycyB9IGZyb20gJy4vbnVtYmVycydcbmltcG9ydCB7IHRyYW5zZm9ybVJlbGF0aW9uc2hpcCB9IGZyb20gJy4vcmVsYXRpb25zaGlwcydcbmltcG9ydCB7IHRyYW5zZm9ybVNlbGVjdHMgfSBmcm9tICcuL3NlbGVjdHMnXG5cbnR5cGUgQXJncyA9IHtcbiAgYWRhcHRlcjogUG9zdGdyZXNBZGFwdGVyXG4gIGFycmF5czoge1xuICAgIFt0YWJsZU5hbWU6IHN0cmluZ106IEFycmF5Um93VG9JbnNlcnRbXVxuICB9XG4gIC8qKlxuICAgKiBUaGlzIGlzIHRoZSBuYW1lIG9mIHRoZSBiYXNlIHRhYmxlXG4gICAqL1xuICBiYXNlVGFibGVOYW1lOiBzdHJpbmdcbiAgYmxvY2tzOiB7XG4gICAgW2Jsb2NrVHlwZTogc3RyaW5nXTogQmxvY2tSb3dUb0luc2VydFtdXG4gIH1cbiAgYmxvY2tzVG9EZWxldGU6IFNldDxzdHJpbmc+XG4gIC8qKlxuICAgKiBBIHNuYWtlLWNhc2UgZmllbGQgcHJlZml4LCByZXByZXNlbnRpbmcgcHJpb3IgZmllbGRzXG4gICAqIEV4OiBteV9ncm91cF9teV9uYW1lZF90YWJfXG4gICAqL1xuICBjb2x1bW5QcmVmaXg6IHN0cmluZ1xuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBleGlzdGluZ0xvY2FsZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdXG4gIC8qKlxuICAgKiBBIHByZWZpeCB0aGF0IHdpbGwgcmV0YWluIGNhbWVsLWNhc2UgZm9ybWF0dGluZywgcmVwcmVzZW50aW5nIHByaW9yIGZpZWxkc1xuICAgKiBFeDogbXlHcm91cF9teU5hbWVkVGFiX1xuICAgKi9cbiAgZmllbGRQcmVmaXg6IHN0cmluZ1xuICBmaWVsZHM6IEZpZWxkW11cbiAgZm9yY2VkTG9jYWxlPzogc3RyaW5nXG4gIGxvY2FsZXM6IHtcbiAgICBbbG9jYWxlOiBzdHJpbmddOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICB9XG4gIG51bWJlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIG5hbWUgb2YgdGhlIHBhcmVudCB0YWJsZVxuICAgKi9cbiAgcGFyZW50VGFibGVOYW1lOiBzdHJpbmdcbiAgcGF0aDogc3RyaW5nXG4gIHJlbGF0aW9uc2hpcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cbiAgcmVsYXRpb25zaGlwc1RvRGVsZXRlOiBSZWxhdGlvbnNoaXBUb0RlbGV0ZVtdXG4gIHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2VsZWN0czoge1xuICAgIFt0YWJsZU5hbWU6IHN0cmluZ106IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdHJhdmVyc2VGaWVsZHMgPSAoe1xuICBhZGFwdGVyLFxuICBhcnJheXMsXG4gIGJhc2VUYWJsZU5hbWUsXG4gIGJsb2NrcyxcbiAgYmxvY2tzVG9EZWxldGUsXG4gIGNvbHVtblByZWZpeCxcbiAgZGF0YSxcbiAgZXhpc3RpbmdMb2NhbGVzLFxuICBmaWVsZFByZWZpeCxcbiAgZmllbGRzLFxuICBmb3JjZWRMb2NhbGUsXG4gIGxvY2FsZXMsXG4gIG51bWJlcnMsXG4gIHBhcmVudFRhYmxlTmFtZSxcbiAgcGF0aCxcbiAgcmVsYXRpb25zaGlwcyxcbiAgcmVsYXRpb25zaGlwc1RvRGVsZXRlLFxuICByb3csXG4gIHNlbGVjdHMsXG59OiBBcmdzKSA9PiB7XG4gIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgIGxldCBjb2x1bW5OYW1lID0gJydcbiAgICBsZXQgZmllbGROYW1lID0gJydcbiAgICBsZXQgZmllbGREYXRhOiB1bmtub3duXG5cbiAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICAgIGNvbHVtbk5hbWUgPSBgJHtjb2x1bW5QcmVmaXggfHwgJyd9JHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1gXG4gICAgICBmaWVsZE5hbWUgPSBgJHtmaWVsZFByZWZpeCB8fCAnJ30ke2ZpZWxkLm5hbWV9YFxuICAgICAgZmllbGREYXRhID0gZGF0YVtmaWVsZC5uYW1lXVxuICAgIH1cblxuICAgIGlmIChmaWVsZC50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICBjb25zdCBhcnJheVRhYmxlTmFtZSA9IGAke3BhcmVudFRhYmxlTmFtZX1fJHtjb2x1bW5OYW1lfWBcblxuICAgICAgaWYgKCFhcnJheXNbYXJyYXlUYWJsZU5hbWVdKSBhcnJheXNbYXJyYXlUYWJsZU5hbWVdID0gW11cblxuICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICBpZiAodHlwZW9mIGRhdGFbZmllbGQubmFtZV0gPT09ICdvYmplY3QnICYmIGRhdGFbZmllbGQubmFtZV0gIT09IG51bGwpIHtcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhkYXRhW2ZpZWxkLm5hbWVdKS5mb3JFYWNoKChbbG9jYWxlS2V5LCBsb2NhbGVEYXRhXSkgPT4ge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobG9jYWxlRGF0YSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3Um93cyA9IHRyYW5zZm9ybUFycmF5KHtcbiAgICAgICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgICAgIGFycmF5VGFibGVOYW1lLFxuICAgICAgICAgICAgICAgIGJhc2VUYWJsZU5hbWUsXG4gICAgICAgICAgICAgICAgYmxvY2tzLFxuICAgICAgICAgICAgICAgIGJsb2Nrc1RvRGVsZXRlLFxuICAgICAgICAgICAgICAgIGRhdGE6IGxvY2FsZURhdGEsXG4gICAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgICAgbG9jYWxlOiBsb2NhbGVLZXksXG4gICAgICAgICAgICAgICAgbnVtYmVycyxcbiAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwc1RvRGVsZXRlLFxuICAgICAgICAgICAgICAgIHNlbGVjdHMsXG4gICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgYXJyYXlzW2FycmF5VGFibGVOYW1lXSA9IGFycmF5c1thcnJheVRhYmxlTmFtZV0uY29uY2F0KG5ld1Jvd3MpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbmV3Um93cyA9IHRyYW5zZm9ybUFycmF5KHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGFycmF5VGFibGVOYW1lLFxuICAgICAgICAgIGJhc2VUYWJsZU5hbWUsXG4gICAgICAgICAgYmxvY2tzLFxuICAgICAgICAgIGJsb2Nrc1RvRGVsZXRlLFxuICAgICAgICAgIGRhdGE6IGRhdGFbZmllbGQubmFtZV0sXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgbnVtYmVycyxcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgcmVsYXRpb25zaGlwc1RvRGVsZXRlLFxuICAgICAgICAgIHNlbGVjdHMsXG4gICAgICAgIH0pXG5cbiAgICAgICAgYXJyYXlzW2FycmF5VGFibGVOYW1lXSA9IGFycmF5c1thcnJheVRhYmxlTmFtZV0uY29uY2F0KG5ld1Jvd3MpXG4gICAgICB9XG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChmaWVsZC50eXBlID09PSAnYmxvY2tzJykge1xuICAgICAgZmllbGQuYmxvY2tzLmZvckVhY2goKHsgc2x1ZyB9KSA9PiB7XG4gICAgICAgIGJsb2Nrc1RvRGVsZXRlLmFkZCh0b1NuYWtlQ2FzZShzbHVnKSlcbiAgICAgIH0pXG5cbiAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhW2ZpZWxkLm5hbWVdID09PSAnb2JqZWN0JyAmJiBkYXRhW2ZpZWxkLm5hbWVdICE9PSBudWxsKSB7XG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMoZGF0YVtmaWVsZC5uYW1lXSkuZm9yRWFjaCgoW2xvY2FsZUtleSwgbG9jYWxlRGF0YV0pID0+IHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGxvY2FsZURhdGEpKSB7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybUJsb2Nrcyh7XG4gICAgICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgICAgICBiYXNlVGFibGVOYW1lLFxuICAgICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgICBibG9ja3NUb0RlbGV0ZSxcbiAgICAgICAgICAgICAgICBkYXRhOiBsb2NhbGVEYXRhLFxuICAgICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICAgIGxvY2FsZTogbG9jYWxlS2V5LFxuICAgICAgICAgICAgICAgIG51bWJlcnMsXG4gICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcHNUb0RlbGV0ZSxcbiAgICAgICAgICAgICAgICBzZWxlY3RzLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNBcnJheU9mUm93cyhmaWVsZERhdGEpKSB7XG4gICAgICAgIHRyYW5zZm9ybUJsb2Nrcyh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBiYXNlVGFibGVOYW1lLFxuICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICBibG9ja3NUb0RlbGV0ZSxcbiAgICAgICAgICBkYXRhOiBmaWVsZERhdGEsXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgbnVtYmVycyxcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgcmVsYXRpb25zaGlwc1RvRGVsZXRlLFxuICAgICAgICAgIHNlbGVjdHMsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChmaWVsZC50eXBlID09PSAnZ3JvdXAnKSB7XG4gICAgICBpZiAodHlwZW9mIGRhdGFbZmllbGQubmFtZV0gPT09ICdvYmplY3QnICYmIGRhdGFbZmllbGQubmFtZV0gIT09IG51bGwpIHtcbiAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGRhdGFbZmllbGQubmFtZV0pLmZvckVhY2goKFtsb2NhbGVLZXksIGxvY2FsZURhdGFdKSA9PiB7XG4gICAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgIGFycmF5cyxcbiAgICAgICAgICAgICAgYmFzZVRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgYmxvY2tzLFxuICAgICAgICAgICAgICBibG9ja3NUb0RlbGV0ZSxcbiAgICAgICAgICAgICAgY29sdW1uUHJlZml4OiBgJHtjb2x1bW5OYW1lfV9gLFxuICAgICAgICAgICAgICBkYXRhOiBsb2NhbGVEYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICAgICAgICBleGlzdGluZ0xvY2FsZXMsXG4gICAgICAgICAgICAgIGZpZWxkUHJlZml4OiBgJHtmaWVsZE5hbWV9X2AsXG4gICAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgICBmb3JjZWRMb2NhbGU6IGxvY2FsZUtleSxcbiAgICAgICAgICAgICAgbG9jYWxlcyxcbiAgICAgICAgICAgICAgbnVtYmVycyxcbiAgICAgICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgICAgICBwYXRoOiBgJHtwYXRoIHx8ICcnfSR7ZmllbGQubmFtZX0uYCxcbiAgICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgICAgcmVsYXRpb25zaGlwc1RvRGVsZXRlLFxuICAgICAgICAgICAgICByb3csXG4gICAgICAgICAgICAgIHNlbGVjdHMsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgIGFycmF5cyxcbiAgICAgICAgICAgIGJhc2VUYWJsZU5hbWUsXG4gICAgICAgICAgICBibG9ja3MsXG4gICAgICAgICAgICBibG9ja3NUb0RlbGV0ZSxcbiAgICAgICAgICAgIGNvbHVtblByZWZpeDogYCR7Y29sdW1uTmFtZX1fYCxcbiAgICAgICAgICAgIGRhdGE6IGRhdGFbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgICAgICBleGlzdGluZ0xvY2FsZXMsXG4gICAgICAgICAgICBmaWVsZFByZWZpeDogYCR7ZmllbGROYW1lfV9gLFxuICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICBsb2NhbGVzLFxuICAgICAgICAgICAgbnVtYmVycyxcbiAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHBhdGg6IGAke3BhdGggfHwgJyd9JHtmaWVsZC5uYW1lfS5gLFxuICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgIHJlbGF0aW9uc2hpcHNUb0RlbGV0ZSxcbiAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgIHNlbGVjdHMsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3RhYnMnKSB7XG4gICAgICBmaWVsZC50YWJzLmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgICBpZiAoJ25hbWUnIGluIHRhYikge1xuICAgICAgICAgIGlmICh0eXBlb2YgZGF0YVt0YWIubmFtZV0gPT09ICdvYmplY3QnICYmIGRhdGFbdGFiLm5hbWVdICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAodGFiLmxvY2FsaXplZCkge1xuICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhkYXRhW3RhYi5uYW1lXSkuZm9yRWFjaCgoW2xvY2FsZUtleSwgbG9jYWxlRGF0YV0pID0+IHtcbiAgICAgICAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgICAgICAgYXJyYXlzLFxuICAgICAgICAgICAgICAgICAgYmFzZVRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgICAgIGJsb2Nrc1RvRGVsZXRlLFxuICAgICAgICAgICAgICAgICAgY29sdW1uUHJlZml4OiBgJHtjb2x1bW5QcmVmaXggfHwgJyd9JHt0b1NuYWtlQ2FzZSh0YWIubmFtZSl9X2AsXG4gICAgICAgICAgICAgICAgICBkYXRhOiBsb2NhbGVEYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICAgICAgICAgICAgZXhpc3RpbmdMb2NhbGVzLFxuICAgICAgICAgICAgICAgICAgZmllbGRQcmVmaXg6IGAke2ZpZWxkUHJlZml4IHx8ICcnfSR7dGFiLm5hbWV9X2AsXG4gICAgICAgICAgICAgICAgICBmaWVsZHM6IHRhYi5maWVsZHMsXG4gICAgICAgICAgICAgICAgICBmb3JjZWRMb2NhbGU6IGxvY2FsZUtleSxcbiAgICAgICAgICAgICAgICAgIGxvY2FsZXMsXG4gICAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgICAgICAgICAgcGF0aDogYCR7cGF0aCB8fCAnJ30ke3RhYi5uYW1lfS5gLFxuICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcHNUb0RlbGV0ZSxcbiAgICAgICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgICAgICAgIHNlbGVjdHMsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgICAgIGFycmF5cyxcbiAgICAgICAgICAgICAgICBiYXNlVGFibGVOYW1lLFxuICAgICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgICBibG9ja3NUb0RlbGV0ZSxcbiAgICAgICAgICAgICAgICBjb2x1bW5QcmVmaXg6IGAke2NvbHVtblByZWZpeCB8fCAnJ30ke3RvU25ha2VDYXNlKHRhYi5uYW1lKX1fYCxcbiAgICAgICAgICAgICAgICBkYXRhOiBkYXRhW3RhYi5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgICAgICAgICBleGlzdGluZ0xvY2FsZXMsXG4gICAgICAgICAgICAgICAgZmllbGRQcmVmaXg6IGAke2ZpZWxkUHJlZml4IHx8ICcnfSR7dGFiLm5hbWV9X2AsXG4gICAgICAgICAgICAgICAgZmllbGRzOiB0YWIuZmllbGRzLFxuICAgICAgICAgICAgICAgIGxvY2FsZXMsXG4gICAgICAgICAgICAgICAgbnVtYmVycyxcbiAgICAgICAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgICAgICAgcGF0aDogYCR7cGF0aCB8fCAnJ30ke3RhYi5uYW1lfS5gLFxuICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwc1RvRGVsZXRlLFxuICAgICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgICAgICBzZWxlY3RzLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgYXJyYXlzLFxuICAgICAgICAgICAgYmFzZVRhYmxlTmFtZSxcbiAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgIGJsb2Nrc1RvRGVsZXRlLFxuICAgICAgICAgICAgY29sdW1uUHJlZml4LFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIGV4aXN0aW5nTG9jYWxlcyxcbiAgICAgICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICAgICAgZmllbGRzOiB0YWIuZmllbGRzLFxuICAgICAgICAgICAgbG9jYWxlcyxcbiAgICAgICAgICAgIG51bWJlcnMsXG4gICAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgIHJlbGF0aW9uc2hpcHNUb0RlbGV0ZSxcbiAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgIHNlbGVjdHMsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3JvdycgfHwgZmllbGQudHlwZSA9PT0gJ2NvbGxhcHNpYmxlJykge1xuICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBhZGFwdGVyLFxuICAgICAgICBhcnJheXMsXG4gICAgICAgIGJhc2VUYWJsZU5hbWUsXG4gICAgICAgIGJsb2NrcyxcbiAgICAgICAgYmxvY2tzVG9EZWxldGUsXG4gICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZXhpc3RpbmdMb2NhbGVzLFxuICAgICAgICBmaWVsZFByZWZpeCxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIGxvY2FsZXMsXG4gICAgICAgIG51bWJlcnMsXG4gICAgICAgIHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgcmVsYXRpb25zaGlwc1RvRGVsZXRlLFxuICAgICAgICByb3csXG4gICAgICAgIHNlbGVjdHMsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChmaWVsZC50eXBlID09PSAncmVsYXRpb25zaGlwJyB8fCBmaWVsZC50eXBlID09PSAndXBsb2FkJykge1xuICAgICAgY29uc3QgcmVsYXRpb25zaGlwUGF0aCA9IGAke3BhdGggfHwgJyd9JHtmaWVsZC5uYW1lfWBcblxuICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICBpZiAodHlwZW9mIGZpZWxkRGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhmaWVsZERhdGEpLmZvckVhY2goKFtsb2NhbGVLZXksIGxvY2FsZURhdGFdKSA9PiB7XG4gICAgICAgICAgICBpZiAobG9jYWxlRGF0YSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzVG9EZWxldGUucHVzaCh7XG4gICAgICAgICAgICAgICAgbG9jYWxlOiBsb2NhbGVLZXksXG4gICAgICAgICAgICAgICAgcGF0aDogcmVsYXRpb25zaGlwUGF0aCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyYW5zZm9ybVJlbGF0aW9uc2hpcCh7XG4gICAgICAgICAgICAgIGJhc2VSb3c6IHtcbiAgICAgICAgICAgICAgICBsb2NhbGU6IGxvY2FsZUtleSxcbiAgICAgICAgICAgICAgICBwYXRoOiByZWxhdGlvbnNoaXBQYXRoLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBkYXRhOiBsb2NhbGVEYXRhLFxuICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZpZWxkRGF0YSA9PT0gbnVsbCB8fCAoQXJyYXkuaXNBcnJheShmaWVsZERhdGEpICYmIGZpZWxkRGF0YS5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgcmVsYXRpb25zaGlwc1RvRGVsZXRlLnB1c2goeyBwYXRoOiByZWxhdGlvbnNoaXBQYXRoIH0pXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICB0cmFuc2Zvcm1SZWxhdGlvbnNoaXAoe1xuICAgICAgICAgIGJhc2VSb3c6IHtcbiAgICAgICAgICAgIHBhdGg6IHJlbGF0aW9uc2hpcFBhdGgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkYXRhOiBmaWVsZERhdGEsXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkLnR5cGUgPT09ICdudW1iZXInICYmIGZpZWxkLmhhc01hbnkpIHtcbiAgICAgIGNvbnN0IG51bWJlclBhdGggPSBgJHtwYXRoIHx8ICcnfSR7ZmllbGQubmFtZX1gXG5cbiAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBmaWVsZERhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMoZmllbGREYXRhKS5mb3JFYWNoKChbbG9jYWxlS2V5LCBsb2NhbGVEYXRhXSkgPT4ge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobG9jYWxlRGF0YSkpIHtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtTnVtYmVycyh7XG4gICAgICAgICAgICAgICAgYmFzZVJvdzoge1xuICAgICAgICAgICAgICAgICAgbG9jYWxlOiBsb2NhbGVLZXksXG4gICAgICAgICAgICAgICAgICBwYXRoOiBudW1iZXJQYXRoLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZGF0YTogbG9jYWxlRGF0YSxcbiAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShmaWVsZERhdGEpKSB7XG4gICAgICAgIHRyYW5zZm9ybU51bWJlcnMoe1xuICAgICAgICAgIGJhc2VSb3c6IHtcbiAgICAgICAgICAgIHBhdGg6IG51bWJlclBhdGgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkYXRhOiBmaWVsZERhdGEsXG4gICAgICAgICAgbnVtYmVycyxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkLnR5cGUgPT09ICdzZWxlY3QnICYmIGZpZWxkLmhhc01hbnkpIHtcbiAgICAgIGNvbnN0IHNlbGVjdFRhYmxlTmFtZSA9IGAke3BhcmVudFRhYmxlTmFtZX1fJHtjb2x1bW5OYW1lfWBcbiAgICAgIGlmICghc2VsZWN0c1tzZWxlY3RUYWJsZU5hbWVdKSBzZWxlY3RzW3NlbGVjdFRhYmxlTmFtZV0gPSBbXVxuXG4gICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0YVtmaWVsZC5uYW1lXSA9PT0gJ29iamVjdCcgJiYgZGF0YVtmaWVsZC5uYW1lXSAhPT0gbnVsbCkge1xuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGRhdGFbZmllbGQubmFtZV0pLmZvckVhY2goKFtsb2NhbGVLZXksIGxvY2FsZURhdGFdKSA9PiB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsb2NhbGVEYXRhKSkge1xuICAgICAgICAgICAgICBjb25zdCBuZXdSb3dzID0gdHJhbnNmb3JtU2VsZWN0cyh7XG4gICAgICAgICAgICAgICAgaWQ6IGRhdGEuX3V1aWQgfHwgZGF0YS5pZCxcbiAgICAgICAgICAgICAgICBkYXRhOiBsb2NhbGVEYXRhLFxuICAgICAgICAgICAgICAgIGxvY2FsZTogbG9jYWxlS2V5LFxuICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgIHNlbGVjdHNbc2VsZWN0VGFibGVOYW1lXSA9IHNlbGVjdHNbc2VsZWN0VGFibGVOYW1lXS5jb25jYXQobmV3Um93cylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZGF0YVtmaWVsZC5uYW1lXSkpIHtcbiAgICAgICAgY29uc3QgbmV3Um93cyA9IHRyYW5zZm9ybVNlbGVjdHMoe1xuICAgICAgICAgIGlkOiBkYXRhLl91dWlkIHx8IGRhdGEuaWQsXG4gICAgICAgICAgZGF0YTogZGF0YVtmaWVsZC5uYW1lXSxcbiAgICAgICAgfSlcblxuICAgICAgICBzZWxlY3RzW3NlbGVjdFRhYmxlTmFtZV0gPSBzZWxlY3RzW3NlbGVjdFRhYmxlTmFtZV0uY29uY2F0KG5ld1Jvd3MpXG4gICAgICB9XG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSkge1xuICAgICAgY29uc3QgdmFsdWVzVG9UcmFuc2Zvcm06IHsgbG9jYWxlS2V5Pzogc3RyaW5nOyByZWY6IHVua25vd247IHZhbHVlOiB1bmtub3duIH1bXSA9IFtdXG5cbiAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBmaWVsZERhdGEgPT09ICdvYmplY3QnICYmIGZpZWxkRGF0YSAhPT0gbnVsbCkge1xuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGZpZWxkRGF0YSkuZm9yRWFjaCgoW2xvY2FsZUtleSwgbG9jYWxlRGF0YV0pID0+IHtcbiAgICAgICAgICAgIGlmICghbG9jYWxlc1tsb2NhbGVLZXldKSBsb2NhbGVzW2xvY2FsZUtleV0gPSB7fVxuXG4gICAgICAgICAgICB2YWx1ZXNUb1RyYW5zZm9ybS5wdXNoKHtcbiAgICAgICAgICAgICAgbG9jYWxlS2V5LFxuICAgICAgICAgICAgICByZWY6IGxvY2FsZXMsXG4gICAgICAgICAgICAgIHZhbHVlOiBsb2NhbGVEYXRhLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcmVmID0gcm93XG5cbiAgICAgICAgaWYgKGZvcmNlZExvY2FsZSkge1xuICAgICAgICAgIGlmICghbG9jYWxlc1tmb3JjZWRMb2NhbGVdKSBsb2NhbGVzW2ZvcmNlZExvY2FsZV0gPSB7fVxuICAgICAgICAgIHJlZiA9IGxvY2FsZXNbZm9yY2VkTG9jYWxlXVxuICAgICAgICB9XG5cbiAgICAgICAgdmFsdWVzVG9UcmFuc2Zvcm0ucHVzaCh7IHJlZiwgdmFsdWU6IGZpZWxkRGF0YSB9KVxuICAgICAgfVxuXG4gICAgICB2YWx1ZXNUb1RyYW5zZm9ybS5mb3JFYWNoKCh7IGxvY2FsZUtleSwgcmVmLCB2YWx1ZSB9KSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gdmFsdWVcblxuICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSAnZGF0ZScgJiYgZmllbGQubmFtZSA9PT0gJ3VwZGF0ZWRBdCcpIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGxvY2FsZUtleSkge1xuICAgICAgICAgICAgcmVmW2xvY2FsZUtleV1bZmllbGROYW1lXSA9IGZvcm1hdHRlZFZhbHVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlZltmaWVsZE5hbWVdID0gZm9ybWF0dGVkVmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9KVxufVxuIl0sIm5hbWVzIjpbInRyYXZlcnNlRmllbGRzIiwiYWRhcHRlciIsImFycmF5cyIsImJhc2VUYWJsZU5hbWUiLCJibG9ja3MiLCJibG9ja3NUb0RlbGV0ZSIsImNvbHVtblByZWZpeCIsImRhdGEiLCJleGlzdGluZ0xvY2FsZXMiLCJmaWVsZFByZWZpeCIsImZpZWxkcyIsImZvcmNlZExvY2FsZSIsImxvY2FsZXMiLCJudW1iZXJzIiwicGFyZW50VGFibGVOYW1lIiwicGF0aCIsInJlbGF0aW9uc2hpcHMiLCJyZWxhdGlvbnNoaXBzVG9EZWxldGUiLCJyb3ciLCJzZWxlY3RzIiwiZm9yRWFjaCIsImZpZWxkIiwiY29sdW1uTmFtZSIsImZpZWxkTmFtZSIsImZpZWxkRGF0YSIsImZpZWxkQWZmZWN0c0RhdGEiLCJ0b1NuYWtlQ2FzZSIsIm5hbWUiLCJ0eXBlIiwiYXJyYXlUYWJsZU5hbWUiLCJsb2NhbGl6ZWQiLCJPYmplY3QiLCJlbnRyaWVzIiwibG9jYWxlS2V5IiwibG9jYWxlRGF0YSIsIkFycmF5IiwiaXNBcnJheSIsIm5ld1Jvd3MiLCJ0cmFuc2Zvcm1BcnJheSIsImxvY2FsZSIsImNvbmNhdCIsInNsdWciLCJhZGQiLCJ0cmFuc2Zvcm1CbG9ja3MiLCJpc0FycmF5T2ZSb3dzIiwidGFicyIsInRhYiIsInJlbGF0aW9uc2hpcFBhdGgiLCJwdXNoIiwidHJhbnNmb3JtUmVsYXRpb25zaGlwIiwiYmFzZVJvdyIsImxlbmd0aCIsImhhc01hbnkiLCJudW1iZXJQYXRoIiwidHJhbnNmb3JtTnVtYmVycyIsInNlbGVjdFRhYmxlTmFtZSIsInRyYW5zZm9ybVNlbGVjdHMiLCJpZCIsIl91dWlkIiwidmFsdWVzVG9UcmFuc2Zvcm0iLCJyZWYiLCJ2YWx1ZSIsImZvcm1hdHRlZFZhbHVlIiwiRGF0ZSIsInRvSVNPU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7Ozs7K0JBNER2QkE7OztlQUFBQTs7O3VCQXpEb0I7b0VBQ1Q7K0JBS007dUJBQ0M7d0JBQ0M7eUJBQ0M7K0JBQ0s7eUJBQ0w7Ozs7OztBQThDMUIsTUFBTUEsaUJBQWlCLENBQUMsRUFDN0JDLE9BQU8sRUFDUEMsTUFBTSxFQUNOQyxhQUFhLEVBQ2JDLE1BQU0sRUFDTkMsY0FBYyxFQUNkQyxZQUFZLEVBQ1pDLElBQUksRUFDSkMsZUFBZSxFQUNmQyxXQUFXLEVBQ1hDLE1BQU0sRUFDTkMsWUFBWSxFQUNaQyxPQUFPLEVBQ1BDLE9BQU8sRUFDUEMsZUFBZSxFQUNmQyxJQUFJLEVBQ0pDLGFBQWEsRUFDYkMscUJBQXFCLEVBQ3JCQyxHQUFHLEVBQ0hDLE9BQU8sRUFDRjtJQUNMVCxPQUFPVSxPQUFPLENBQUMsQ0FBQ0M7UUFDZCxJQUFJQyxhQUFhO1FBQ2pCLElBQUlDLFlBQVk7UUFDaEIsSUFBSUM7UUFFSixJQUFJQyxJQUFBQSx1QkFBZ0IsRUFBQ0osUUFBUTtZQUMzQkMsYUFBYSxDQUFDLEVBQUVoQixnQkFBZ0IsR0FBRyxFQUFFb0IsSUFBQUEs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
|
443
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm0vd3JpdGUvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhIH0gZnJvbSAncGF5bG9hZC90eXBlcydcbmltcG9ydCB0b1NuYWtlQ2FzZSBmcm9tICd0by1zbmFrZS1jYXNlJ1xuXG5pbXBvcnQgdHlwZSB7IFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBBcnJheVJvd1RvSW5zZXJ0LCBCbG9ja1Jvd1RvSW5zZXJ0LCBSZWxhdGlvbnNoaXBUb0RlbGV0ZSB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB7IGlzQXJyYXlPZlJvd3MgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvaXNBcnJheU9mUm93cydcbmltcG9ydCB7IHRyYW5zZm9ybUFycmF5IH0gZnJvbSAnLi9hcnJheSdcbmltcG9ydCB7IHRyYW5zZm9ybUJsb2NrcyB9IGZyb20gJy4vYmxvY2tzJ1xuaW1wb3J0IHsgdHJhbnNmb3JtTnVtYmVycyB9IGZyb20gJy4vbnVtYmVycydcbmltcG9ydCB7IHRyYW5zZm9ybVJlbGF0aW9uc2hpcCB9IGZyb20gJy4vcmVsYXRpb25zaGlwcydcbmltcG9ydCB7IHRyYW5zZm9ybVNlbGVjdHMgfSBmcm9tICcuL3NlbGVjdHMnXG5pbXBvcnQgeyB0cmFuc2Zvcm1UZXh0cyB9IGZyb20gJy4vdGV4dHMnXG5cbnR5cGUgQXJncyA9IHtcbiAgYWRhcHRlcjogUG9zdGdyZXNBZGFwdGVyXG4gIGFycmF5czoge1xuICAgIFt0YWJsZU5hbWU6IHN0cmluZ106IEFycmF5Um93VG9JbnNlcnRbXVxuICB9XG4gIC8qKlxuICAgKiBUaGlzIGlzIHRoZSBuYW1lIG9mIHRoZSBiYXNlIHRhYmxlXG4gICAqL1xuICBiYXNlVGFibGVOYW1lOiBzdHJpbmdcbiAgYmxvY2tzOiB7XG4gICAgW2Jsb2NrVHlwZTogc3RyaW5nXTogQmxvY2tSb3dUb0luc2VydFtdXG4gIH1cbiAgYmxvY2tzVG9EZWxldGU6IFNldDxzdHJpbmc+XG4gIC8qKlxuICAgKiBBIHNuYWtlLWNhc2UgZmllbGQgcHJlZml4LCByZXByZXNlbnRpbmcgcHJpb3IgZmllbGRzXG4gICAqIEV4OiBteV9ncm91cF9teV9uYW1lZF90YWJfXG4gICAqL1xuICBjb2x1bW5QcmVmaXg6IHN0cmluZ1xuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBleGlzdGluZ0xvY2FsZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdXG4gIC8qKlxuICAgKiBBIHByZWZpeCB0aGF0IHdpbGwgcmV0YWluIGNhbWVsLWNhc2UgZm9ybWF0dGluZywgcmVwcmVzZW50aW5nIHByaW9yIGZpZWxkc1xuICAgKiBFeDogbXlHcm91cF9teU5hbWVkVGFiX1xuICAgKi9cbiAgZmllbGRQcmVmaXg6IHN0cmluZ1xuICBmaWVsZHM6IEZpZWxkW11cbiAgZm9yY2VkTG9jYWxlPzogc3RyaW5nXG4gIGxvY2FsZXM6IHtcbiAgICBbbG9jYWxlOiBzdHJpbmddOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICB9XG4gIHRleHRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdXG4gIG51bWJlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIG5hbWUgb2YgdGhlIHBhcmVudCB0YWJsZVxuICAgKi9cbiAgcGFyZW50VGFibGVOYW1lOiBzdHJpbmdcbiAgcGF0aDogc3RyaW5nXG4gIHJlbGF0aW9uc2hpcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cbiAgcmVsYXRpb25zaGlwc1RvRGVsZXRlOiBSZWxhdGlvbnNoaXBUb0RlbGV0ZVtdXG4gIHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2VsZWN0czoge1xuICAgIFt0YWJsZU5hbWU6IHN0cmluZ106IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdHJhdmVyc2VGaWVsZHMgPSAoe1xuICBhZGFwdGVyLFxuICBhcnJheXMsXG4gIGJhc2VUYWJsZU5hbWUsXG4gIGJsb2NrcyxcbiAgYmxvY2tzVG9EZWxldGUsXG4gIGNvbHVtblByZWZpeCxcbiAgZGF0YSxcbiAgZXhpc3RpbmdMb2NhbGVzLFxuICBmaWVsZFByZWZpeCxcbiAgZmllbGRzLFxuICBmb3JjZWRMb2NhbGUsXG4gIGxvY2FsZXMsXG4gIHRleHRzLFxuICBudW1iZXJzLFxuICBwYXJlbnRUYWJsZU5hbWUsXG4gIHBhdGgsXG4gIHJlbGF0aW9uc2hpcHMsXG4gIHJlbGF0aW9uc2hpcHNUb0RlbGV0ZSxcbiAgcm93LFxuICBzZWxlY3RzLFxufTogQXJncykgPT4ge1xuICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICBsZXQgY29sdW1uTmFtZSA9ICcnXG4gICAgbGV0IGZpZWxkTmFtZSA9ICcnXG4gICAgbGV0IGZpZWxkRGF0YTogdW5rbm93blxuXG4gICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICBjb2x1bW5OYW1lID0gYCR7Y29sdW1uUHJlZml4IHx8ICcnfSR7dG9TbmFrZUNhc2UoZmllbGQubmFtZSl9YFxuICAgICAgZmllbGROYW1lID0gYCR7ZmllbGRQcmVmaXggfHwgJyd9JHtmaWVsZC5uYW1lfWBcbiAgICAgIGZpZWxkRGF0YSA9IGRhdGFbZmllbGQubmFtZV1cbiAgICB9XG5cbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgY29uc3QgYXJyYXlUYWJsZU5hbWUgPSBgJHtwYXJlbnRUYWJsZU5hbWV9XyR7Y29sdW1uTmFtZX1gXG5cbiAgICAgIGlmICghYXJyYXlzW2FycmF5VGFibGVOYW1lXSkgYXJyYXlzW2FycmF5VGFibGVOYW1lXSA9IFtdXG5cbiAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhW2ZpZWxkLm5hbWVdID09PSAnb2JqZWN0JyAmJiBkYXRhW2ZpZWxkLm5hbWVdICE9PSBudWxsKSB7XG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMoZGF0YVtmaWVsZC5uYW1lXSkuZm9yRWFjaCgoW2xvY2FsZUtleSwgbG9jYWxlRGF0YV0pID0+IHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGxvY2FsZURhdGEpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld1Jvd3MgPSB0cmFuc2Zvcm1BcnJheSh7XG4gICAgICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgICAgICBhcnJheVRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgICBiYXNlVGFibGVOYW1lLFxuICAgICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgICBibG9ja3NUb0RlbGV0ZSxcbiAgICAgICAgICAgICAgICBkYXRhOiBsb2NhbGVEYXRhLFxuICAgICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICAgIGxvY2FsZTogbG9jYWxlS2V5LFxuICAgICAgICAgICAgICAgIHRleHRzLFxuICAgICAgICAgICAgICAgIG51bWJlcnMsXG4gICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcHNUb0RlbGV0ZSxcbiAgICAgICAgICAgICAgICBzZWxlY3RzLFxuICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgIGFycmF5c1thcnJheVRhYmxlTmFtZV0gPSBhcnJheXNbYXJyYXlUYWJsZU5hbWVdLmNvbmNhdChuZXdSb3dzKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG5ld1Jvd3MgPSB0cmFuc2Zvcm1BcnJheSh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhcnJheVRhYmxlTmFtZSxcbiAgICAgICAgICBiYXNlVGFibGVOYW1lLFxuICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICBibG9ja3NUb0RlbGV0ZSxcbiAgICAgICAgICBkYXRhOiBkYXRhW2ZpZWxkLm5hbWVdLFxuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIHRleHRzLFxuICAgICAgICAgIG51bWJlcnMsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIHJlbGF0aW9uc2hpcHNUb0RlbGV0ZSxcbiAgICAgICAgICBzZWxlY3RzLFxuICAgICAgICB9KVxuXG4gICAgICAgIGFycmF5c1thcnJheVRhYmxlTmFtZV0gPSBhcnJheXNbYXJyYXlUYWJsZU5hbWVdLmNvbmNhdChuZXdSb3dzKVxuICAgICAgfVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2Jsb2NrcycpIHtcbiAgICAgIGZpZWxkLmJsb2Nrcy5mb3JFYWNoKCh7IHNsdWcgfSkgPT4ge1xuICAgICAgICBibG9ja3NUb0RlbGV0ZS5hZGQodG9TbmFrZUNhc2Uoc2x1ZykpXG4gICAgICB9KVxuXG4gICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0YVtmaWVsZC5uYW1lXSA9PT0gJ29iamVjdCcgJiYgZGF0YVtmaWVsZC5uYW1lXSAhPT0gbnVsbCkge1xuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGRhdGFbZmllbGQubmFtZV0pLmZvckVhY2goKFtsb2NhbGVLZXksIGxvY2FsZURhdGFdKSA9PiB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsb2NhbGVEYXRhKSkge1xuICAgICAgICAgICAgICB0cmFuc2Zvcm1CbG9ja3Moe1xuICAgICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgICAgYmFzZVRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgICBibG9ja3MsXG4gICAgICAgICAgICAgICAgYmxvY2tzVG9EZWxldGUsXG4gICAgICAgICAgICAgICAgZGF0YTogbG9jYWxlRGF0YSxcbiAgICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgICBsb2NhbGU6IGxvY2FsZUtleSxcbiAgICAgICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzVG9EZWxldGUsXG4gICAgICAgICAgICAgICAgc2VsZWN0cyxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzQXJyYXlPZlJvd3MoZmllbGREYXRhKSkge1xuICAgICAgICB0cmFuc2Zvcm1CbG9ja3Moe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYmFzZVRhYmxlTmFtZSxcbiAgICAgICAgICBibG9ja3MsXG4gICAgICAgICAgYmxvY2tzVG9EZWxldGUsXG4gICAgICAgICAgZGF0YTogZmllbGREYXRhLFxuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIHRleHRzLFxuICAgICAgICAgIG51bWJlcnMsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIHJlbGF0aW9uc2hpcHNUb0RlbGV0ZSxcbiAgICAgICAgICBzZWxlY3RzLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgaWYgKHR5cGVvZiBkYXRhW2ZpZWxkLm5hbWVdID09PSAnb2JqZWN0JyAmJiBkYXRhW2ZpZWxkLm5hbWVdICE9PSBudWxsKSB7XG4gICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhkYXRhW2ZpZWxkLm5hbWVdKS5mb3JFYWNoKChbbG9jYWxlS2V5LCBsb2NhbGVEYXRhXSkgPT4ge1xuICAgICAgICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgICBhcnJheXMsXG4gICAgICAgICAgICAgIGJhc2VUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgYmxvY2tzVG9EZWxldGUsXG4gICAgICAgICAgICAgIGNvbHVtblByZWZpeDogYCR7Y29sdW1uTmFtZX1fYCxcbiAgICAgICAgICAgICAgZGF0YTogbG9jYWxlRGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgICAgICAgZXhpc3RpbmdMb2NhbGVzLFxuICAgICAgICAgICAgICBmaWVsZFByZWZpeDogYCR7ZmllbGROYW1lfV9gLFxuICAgICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgZm9yY2VkTG9jYWxlOiBsb2NhbGVLZXksXG4gICAgICAgICAgICAgIGxvY2FsZXMsXG4gICAgICAgICAgICAgIHRleHRzLFxuICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHBhdGg6IGAke3BhdGggfHwgJyd9JHtmaWVsZC5uYW1lfS5gLFxuICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzVG9EZWxldGUsXG4gICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgICAgc2VsZWN0cyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgYXJyYXlzLFxuICAgICAgICAgICAgYmFzZVRhYmxlTmFtZSxcbiAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgIGJsb2Nrc1RvRGVsZXRlLFxuICAgICAgICAgICAgY29sdW1uUHJlZml4OiBgJHtjb2x1bW5OYW1lfV9gLFxuICAgICAgICAgICAgZGF0YTogZGF0YVtmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgICAgIGV4aXN0aW5nTG9jYWxlcyxcbiAgICAgICAgICAgIGZpZWxkUHJlZml4OiBgJHtmaWVsZE5hbWV9X2AsXG4gICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgIGxvY2FsZXMsXG4gICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgIG51bWJlcnMsXG4gICAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgICBwYXRoOiBgJHtwYXRoIHx8ICcnfSR7ZmllbGQubmFtZX0uYCxcbiAgICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgICByZWxhdGlvbnNoaXBzVG9EZWxldGUsXG4gICAgICAgICAgICByb3csXG4gICAgICAgICAgICBzZWxlY3RzLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkLnR5cGUgPT09ICd0YWJzJykge1xuICAgICAgZmllbGQudGFicy5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgICAgaWYgKCduYW1lJyBpbiB0YWIpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGRhdGFbdGFiLm5hbWVdID09PSAnb2JqZWN0JyAmJiBkYXRhW3RhYi5uYW1lXSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHRhYi5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoZGF0YVt0YWIubmFtZV0pLmZvckVhY2goKFtsb2NhbGVLZXksIGxvY2FsZURhdGFdKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgICAgICAgIGFycmF5cyxcbiAgICAgICAgICAgICAgICAgIGJhc2VUYWJsZU5hbWUsXG4gICAgICAgICAgICAgICAgICBibG9ja3MsXG4gICAgICAgICAgICAgICAgICBibG9ja3NUb0RlbGV0ZSxcbiAgICAgICAgICAgICAgICAgIGNvbHVtblByZWZpeDogYCR7Y29sdW1uUHJlZml4IHx8ICcnfSR7dG9TbmFrZUNhc2UodGFiLm5hbWUpfV9gLFxuICAgICAgICAgICAgICAgICAgZGF0YTogbG9jYWxlRGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgICAgICAgICAgIGV4aXN0aW5nTG9jYWxlcyxcbiAgICAgICAgICAgICAgICAgIGZpZWxkUHJlZml4OiBgJHtmaWVsZFByZWZpeCB8fCAnJ30ke3RhYi5uYW1lfV9gLFxuICAgICAgICAgICAgICAgICAgZmllbGRzOiB0YWIuZmllbGRzLFxuICAgICAgICAgICAgICAgICAgZm9yY2VkTG9jYWxlOiBsb2NhbGVLZXksXG4gICAgICAgICAgICAgICAgICBsb2NhbGVzLFxuICAgICAgICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgICAgICAgICAgcGF0aDogYCR7cGF0aCB8fCAnJ30ke3RhYi5uYW1lfS5gLFxuICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcHNUb0RlbGV0ZSxcbiAgICAgICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgICAgICAgIHNlbGVjdHMsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgICAgIGFycmF5cyxcbiAgICAgICAgICAgICAgICBiYXNlVGFibGVOYW1lLFxuICAgICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgICBibG9ja3NUb0RlbGV0ZSxcbiAgICAgICAgICAgICAgICBjb2x1bW5QcmVmaXg6IGAke2NvbHVtblByZWZpeCB8fCAnJ30ke3RvU25ha2VDYXNlKHRhYi5uYW1lKX1fYCxcbiAgICAgICAgICAgICAgICBkYXRhOiBkYXRhW3RhYi5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgICAgICAgICBleGlzdGluZ0xvY2FsZXMsXG4gICAgICAgICAgICAgICAgZmllbGRQcmVmaXg6IGAke2ZpZWxkUHJlZml4IHx8ICcnfSR7dGFiLm5hbWV9X2AsXG4gICAgICAgICAgICAgICAgZmllbGRzOiB0YWIuZmllbGRzLFxuICAgICAgICAgICAgICAgIGxvY2FsZXMsXG4gICAgICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICAgICAgbnVtYmVycyxcbiAgICAgICAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgICAgICAgcGF0aDogYCR7cGF0aCB8fCAnJ30ke3RhYi5uYW1lfS5gLFxuICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwc1RvRGVsZXRlLFxuICAgICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgICAgICBzZWxlY3RzLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgYXJyYXlzLFxuICAgICAgICAgICAgYmFzZVRhYmxlTmFtZSxcbiAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgIGJsb2Nrc1RvRGVsZXRlLFxuICAgICAgICAgICAgY29sdW1uUHJlZml4LFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIGV4aXN0aW5nTG9jYWxlcyxcbiAgICAgICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICAgICAgZmllbGRzOiB0YWIuZmllbGRzLFxuICAgICAgICAgICAgbG9jYWxlcyxcbiAgICAgICAgICAgIHRleHRzLFxuICAgICAgICAgICAgbnVtYmVycyxcbiAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgcmVsYXRpb25zaGlwc1RvRGVsZXRlLFxuICAgICAgICAgICAgcm93LFxuICAgICAgICAgICAgc2VsZWN0cyxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChmaWVsZC50eXBlID09PSAncm93JyB8fCBmaWVsZC50eXBlID09PSAnY29sbGFwc2libGUnKSB7XG4gICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGFkYXB0ZXIsXG4gICAgICAgIGFycmF5cyxcbiAgICAgICAgYmFzZVRhYmxlTmFtZSxcbiAgICAgICAgYmxvY2tzLFxuICAgICAgICBibG9ja3NUb0RlbGV0ZSxcbiAgICAgICAgY29sdW1uUHJlZml4LFxuICAgICAgICBkYXRhLFxuICAgICAgICBleGlzdGluZ0xvY2FsZXMsXG4gICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgbG9jYWxlcyxcbiAgICAgICAgdGV4dHMsXG4gICAgICAgIG51bWJlcnMsXG4gICAgICAgIHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgcmVsYXRpb25zaGlwc1RvRGVsZXRlLFxuICAgICAgICByb3csXG4gICAgICAgIHNlbGVjdHMsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChmaWVsZC50eXBlID09PSAncmVsYXRpb25zaGlwJyB8fCBmaWVsZC50eXBlID09PSAndXBsb2FkJykge1xuICAgICAgY29uc3QgcmVsYXRpb25zaGlwUGF0aCA9IGAke3BhdGggfHwgJyd9JHtmaWVsZC5uYW1lfWBcblxuICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICBpZiAodHlwZW9mIGZpZWxkRGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhmaWVsZERhdGEpLmZvckVhY2goKFtsb2NhbGVLZXksIGxvY2FsZURhdGFdKSA9PiB7XG4gICAgICAgICAgICBpZiAobG9jYWxlRGF0YSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzVG9EZWxldGUucHVzaCh7XG4gICAgICAgICAgICAgICAgbG9jYWxlOiBsb2NhbGVLZXksXG4gICAgICAgICAgICAgICAgcGF0aDogcmVsYXRpb25zaGlwUGF0aCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyYW5zZm9ybVJlbGF0aW9uc2hpcCh7XG4gICAgICAgICAgICAgIGJhc2VSb3c6IHtcbiAgICAgICAgICAgICAgICBsb2NhbGU6IGxvY2FsZUtleSxcbiAgICAgICAgICAgICAgICBwYXRoOiByZWxhdGlvbnNoaXBQYXRoLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBkYXRhOiBsb2NhbGVEYXRhLFxuICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZpZWxkRGF0YSA9PT0gbnVsbCB8fCAoQXJyYXkuaXNBcnJheShmaWVsZERhdGEpICYmIGZpZWxkRGF0YS5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgcmVsYXRpb25zaGlwc1RvRGVsZXRlLnB1c2goeyBwYXRoOiByZWxhdGlvbnNoaXBQYXRoIH0pXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICB0cmFuc2Zvcm1SZWxhdGlvbnNoaXAoe1xuICAgICAgICAgIGJhc2VSb3c6IHtcbiAgICAgICAgICAgIHBhdGg6IHJlbGF0aW9uc2hpcFBhdGgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkYXRhOiBmaWVsZERhdGEsXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkLnR5cGUgPT09ICd0ZXh0JyAmJiBmaWVsZC5oYXNNYW55KSB7XG4gICAgICBjb25zdCB0ZXh0UGF0aCA9IGAke3BhdGggfHwgJyd9JHtmaWVsZC5uYW1lfWBcblxuICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICBpZiAodHlwZW9mIGZpZWxkRGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhmaWVsZERhdGEpLmZvckVhY2goKFtsb2NhbGVLZXksIGxvY2FsZURhdGFdKSA9PiB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsb2NhbGVEYXRhKSkge1xuICAgICAgICAgICAgICB0cmFuc2Zvcm1UZXh0cyh7XG4gICAgICAgICAgICAgICAgYmFzZVJvdzoge1xuICAgICAgICAgICAgICAgICAgbG9jYWxlOiBsb2NhbGVLZXksXG4gICAgICAgICAgICAgICAgICBwYXRoOiB0ZXh0UGF0aCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGRhdGE6IGxvY2FsZURhdGEsXG4gICAgICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGZpZWxkRGF0YSkpIHtcbiAgICAgICAgdHJhbnNmb3JtVGV4dHMoe1xuICAgICAgICAgIGJhc2VSb3c6IHtcbiAgICAgICAgICAgIHBhdGg6IHRleHRQYXRoLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZGF0YTogZmllbGREYXRhLFxuICAgICAgICAgIHRleHRzLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ251bWJlcicgJiYgZmllbGQuaGFzTWFueSkge1xuICAgICAgY29uc3QgbnVtYmVyUGF0aCA9IGAke3BhdGggfHwgJyd9JHtmaWVsZC5uYW1lfWBcblxuICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICBpZiAodHlwZW9mIGZpZWxkRGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhmaWVsZERhdGEpLmZvckVhY2goKFtsb2NhbGVLZXksIGxvY2FsZURhdGFdKSA9PiB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsb2NhbGVEYXRhKSkge1xuICAgICAgICAgICAgICB0cmFuc2Zvcm1OdW1iZXJzKHtcbiAgICAgICAgICAgICAgICBiYXNlUm93OiB7XG4gICAgICAgICAgICAgICAgICBsb2NhbGU6IGxvY2FsZUtleSxcbiAgICAgICAgICAgICAgICAgIHBhdGg6IG51bWJlclBhdGgsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBkYXRhOiBsb2NhbGVEYXRhLFxuICAgICAgICAgICAgICAgIG51bWJlcnMsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGZpZWxkRGF0YSkpIHtcbiAgICAgICAgdHJhbnNmb3JtTnVtYmVycyh7XG4gICAgICAgICAgYmFzZVJvdzoge1xuICAgICAgICAgICAgcGF0aDogbnVtYmVyUGF0aCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRhdGE6IGZpZWxkRGF0YSxcbiAgICAgICAgICBudW1iZXJzLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3NlbGVjdCcgJiYgZmllbGQuaGFzTWFueSkge1xuICAgICAgY29uc3Qgc2VsZWN0VGFibGVOYW1lID0gYCR7cGFyZW50VGFibGVOYW1lfV8ke2NvbHVtbk5hbWV9YFxuICAgICAgaWYgKCFzZWxlY3RzW3NlbGVjdFRhYmxlTmFtZV0pIHNlbGVjdHNbc2VsZWN0VGFibGVOYW1lXSA9IFtdXG5cbiAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhW2ZpZWxkLm5hbWVdID09PSAnb2JqZWN0JyAmJiBkYXRhW2ZpZWxkLm5hbWVdICE9PSBudWxsKSB7XG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMoZGF0YVtmaWVsZC5uYW1lXSkuZm9yRWFjaCgoW2xvY2FsZUtleSwgbG9jYWxlRGF0YV0pID0+IHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGxvY2FsZURhdGEpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld1Jvd3MgPSB0cmFuc2Zvcm1TZWxlY3RzKHtcbiAgICAgICAgICAgICAgICBpZDogZGF0YS5fdXVpZCB8fCBkYXRhLmlkLFxuICAgICAgICAgICAgICAgIGRhdGE6IGxvY2FsZURhdGEsXG4gICAgICAgICAgICAgICAgbG9jYWxlOiBsb2NhbGVLZXksXG4gICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgc2VsZWN0c1tzZWxlY3RUYWJsZU5hbWVdID0gc2VsZWN0c1tzZWxlY3RUYWJsZU5hbWVdLmNvbmNhdChuZXdSb3dzKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShkYXRhW2ZpZWxkLm5hbWVdKSkge1xuICAgICAgICBjb25zdCBuZXdSb3dzID0gdHJhbnNmb3JtU2VsZWN0cyh7XG4gICAgICAgICAgaWQ6IGRhdGEuX3V1aWQgfHwgZGF0YS5pZCxcbiAgICAgICAgICBkYXRhOiBkYXRhW2ZpZWxkLm5hbWVdLFxuICAgICAgICB9KVxuXG4gICAgICAgIHNlbGVjdHNbc2VsZWN0VGFibGVOYW1lXSA9IHNlbGVjdHNbc2VsZWN0VGFibGVOYW1lXS5jb25jYXQobmV3Um93cylcbiAgICAgIH1cblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICBjb25zdCB2YWx1ZXNUb1RyYW5zZm9ybTogeyBsb2NhbGVLZXk/OiBzdHJpbmc7IHJlZjogdW5rbm93bjsgdmFsdWU6IHVua25vd24gfVtdID0gW11cblxuICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICBpZiAodHlwZW9mIGZpZWxkRGF0YSA9PT0gJ29iamVjdCcgJiYgZmllbGREYXRhICE9PSBudWxsKSB7XG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMoZmllbGREYXRhKS5mb3JFYWNoKChbbG9jYWxlS2V5LCBsb2NhbGVEYXRhXSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFsb2NhbGVzW2xvY2FsZUtleV0pIGxvY2FsZXNbbG9jYWxlS2V5XSA9IHt9XG5cbiAgICAgICAgICAgIHZhbHVlc1RvVHJhbnNmb3JtLnB1c2goe1xuICAgICAgICAgICAgICBsb2NhbGVLZXksXG4gICAgICAgICAgICAgIHJlZjogbG9jYWxlcyxcbiAgICAgICAgICAgICAgdmFsdWU6IGxvY2FsZURhdGEsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCByZWYgPSByb3dcblxuICAgICAgICBpZiAoZm9yY2VkTG9jYWxlKSB7XG4gICAgICAgICAgaWYgKCFsb2NhbGVzW2ZvcmNlZExvY2FsZV0pIGxvY2FsZXNbZm9yY2VkTG9jYWxlXSA9IHt9XG4gICAgICAgICAgcmVmID0gbG9jYWxlc1tmb3JjZWRMb2NhbGVdXG4gICAgICAgIH1cblxuICAgICAgICB2YWx1ZXNUb1RyYW5zZm9ybS5wdXNoKHsgcmVmLCB2YWx1ZTogZmllbGREYXRhIH0pXG4gICAgICB9XG5cbiAgICAgIHZhbHVlc1RvVHJhbnNmb3JtLmZvckVhY2goKHsgbG9jYWxlS2V5LCByZWYsIHZhbHVlIH0pID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSB2YWx1ZVxuXG4gICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdkYXRlJyAmJiBmaWVsZC5uYW1lID09PSAndXBkYXRlZEF0Jykge1xuICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobG9jYWxlS2V5KSB7XG4gICAgICAgICAgICByZWZbbG9jYWxlS2V5XVtmaWVsZE5hbWVdID0gZm9ybWF0dGVkVmFsdWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVmW2ZpZWxkTmFtZV0gPSBmb3JtYXR0ZWRWYWx1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH0pXG59XG4iXSwibmFtZXMiOlsidHJhdmVyc2VGaWVsZHMiLCJhZGFwdGVyIiwiYXJyYXlzIiwiYmFzZVRhYmxlTmFtZSIsImJsb2NrcyIsImJsb2Nrc1RvRGVsZXRlIiwiY29sdW1uUHJlZml4IiwiZGF0YSIsImV4aXN0aW5nTG9jYWxlcyIsImZpZWxkUHJlZml4IiwiZmllbGRzIiwiZm9yY2VkTG9jYWxlIiwibG9jYWxlcyIsInRleHRzIiwibnVtYmVycyIsInBhcmVudFRhYmxlTmFtZSIsInBhdGgiLCJyZWxhdGlvbnNoaXBzIiwicmVsYXRpb25zaGlwc1RvRGVsZXRlIiwicm93Iiwic2VsZWN0cyIsImZvckVhY2giLCJmaWVsZCIsImNvbHVtbk5hbWUiLCJmaWVsZE5hbWUiLCJmaWVsZERhdGEiLCJmaWVsZEFmZmVjdHNEYXRhIiwidG9TbmFrZUNhc2UiLCJuYW1lIiwidHlwZSIsImFycmF5VGFibGVOYW1lIiwibG9jYWxpemVkIiwiT2JqZWN0IiwiZW50cmllcyIsImxvY2FsZUtleSIsImxvY2FsZURhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJuZXdSb3dzIiwidHJhbnNmb3JtQXJyYXkiLCJsb2NhbGUiLCJjb25jYXQiLCJzbHVnIiwiYWRkIiwidHJhbnNmb3JtQmxvY2tzIiwiaXNBcnJheU9mUm93cyIsInRhYnMiLCJ0YWIiLCJyZWxhdGlvbnNoaXBQYXRoIiwicHVzaCIsInRyYW5zZm9ybVJlbGF0aW9uc2hpcCIsImJhc2VSb3ciLCJsZW5ndGgiLCJoYXNNYW55IiwidGV4dFBhdGgiLCJ0cmFuc2Zvcm1UZXh0cyIsIm51bWJlclBhdGgiLCJ0cmFuc2Zvcm1OdW1iZXJzIiwic2VsZWN0VGFibGVOYW1lIiwidHJhbnNmb3JtU2VsZWN0cyIsImlkIiwiX3V1aWQiLCJ2YWx1ZXNUb1RyYW5zZm9ybSIsInJlZiIsInZhbHVlIiwiZm9ybWF0dGVkVmFsdWUiLCJEYXRlIiwidG9JU09TdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkE4RHZCQTs7O2VBQUFBOzs7dUJBM0RvQjtvRUFDVDsrQkFLTTt1QkFDQzt3QkFDQzt5QkFDQzsrQkFDSzt5QkFDTDt1QkFDRjs7Ozs7O0FBK0N4QixNQUFNQSxpQkFBaUIsQ0FBQyxFQUM3QkMsT0FBTyxFQUNQQyxNQUFNLEVBQ05DLGFBQWEsRUFDYkMsTUFBTSxFQUNOQyxjQUFjLEVBQ2RDLFlBQVksRUFDWkMsSUFBSSxFQUNKQyxlQUFlLEVBQ2ZDLFdBQVcsRUFDWEMsTUFBTSxFQUNOQyxZQUFZLEVBQ1pDLE9BQU8sRUFDUEMsS0FBSyxFQUNMQyxPQUFPLEVBQ1BDLGVBQWUsRUFDZkMsSUFBSSxFQUNKQyxhQUFhLEVBQ2JDLHFCQUFxQixFQUNyQkMsR0FBRyxFQUNIQyxPQUFPLEVBQ0Y7SUFDTFYsT0FBT1csT0FBTyxDQUFDLENBQUNDO1FBQ2QsSUFBSUMsYUFBYTtRQUNqQixJQUFJQyxZQUFZO1FBQ2hCLElBQUlDO1FBRUosSUFBSUMsSUFBQUEsdUJBQWdCLEVBQUNKLFFBQVE7WUFDM0JDLGFBQWEsQ0FBQyxFQUFFakIsZ0JBQWdCLEdBQUcsRUFBRXFCLElBQUFBLG9CQUFXLEVBQUNMLE1BQU1NLElBQUksRUFBRSxDQUFDO1lBQzlESixZQUFZLENBQUMsRUFBRWYsZUFBZSxHQUFHLEVBQUVhLE1BQU1NLElBQUksQ0FBQyxDQUFDO1lBQy9DSCxZQUFZbEIsSUFBSSxDQUFDZSxNQUFNTSxJQUFJLENBQUM7UUFDOUI7UUFFQSxJQUFJTixNQUFNTyxJQUFJLEtBQUssU0FBUztZQUMxQixNQUFNQyxpQkFBaUIsQ0FBQyxFQUFFZixnQkFBZ0IsQ0FBQyxFQUFFUSxXQUFXLENBQUM7WUFFekQsSUFBSSxDQUFDckIsTUFBTSxDQUFDNEIsZUFBZSxFQUFFNUIsTUFBTSxDQUFDNEIsZUFBZSxHQUFHLEVBQUU7WUFFeEQsSUFBSVIsTUFBTVMsU0FBUyxFQUFFO2dCQUNuQixJQUFJLE9BQU94QixJQUFJLENBQUNlLE1BQU1NLElBQUksQ0FBQyxLQUFLLFlBQVlyQixJQUFJLENBQUNlLE1BQU1NLElBQUksQ0FBQyxLQUFLLE1BQU07b0JBQ3JFSSxPQUFPQyxPQUFPLENBQUMxQixJQUFJLENBQUNlLE1BQU1NLElBQUksQ0FBQyxFQUFFUCxPQUFPLENBQUMsQ0FBQyxDQUFDYSxXQUFXQyxXQUFXO3dCQUMvRCxJQUFJQyxNQUFNQyxPQUFPLENBQUNGLGFBQWE7NEJBQzdCLE1BQU1HLFVBQVVDLElBQUFBLHFCQUFjLEVBQUM7Z0NBQzdCdEM7Z0NBQ0E2QjtnQ0FDQTNCO2dDQUNBQztnQ0FDQUM7Z0NBQ0FFLE1BQU00QjtnQ0FDTmI7Z0NBQ0FrQixRQUFRTjtnQ0FDUnJCO2dDQUNBQztnQ0FDQUU7Z0NBQ0FDO2dDQUNBQztnQ0FDQUU7NEJBQ0Y7NEJBRUFsQixNQUFNLENBQUM0QixlQUFlLEdBQUc1QixNQUFNLENBQUM0QixlQUFlLENBQUNXLE1BQU0sQ0FBQ0g7d0JBQ3pEO29CQUNGO2dCQUNGO1lBQ0YsT0FBTztnQkFDTCxNQUFNQSxVQUFVQyxJQUFBQSxxQkFBYyxFQUFDO29CQUM3QnRDO29CQUNBNkI7b0JBQ0EzQjtvQkFDQUM7b0JBQ0FDO29CQUNBRSxNQUFNQSxJQUFJLENBQUNlLE1BQU1NLElBQUksQ0FBQztvQkFDdEJOO29CQUNBVDtvQkFDQUM7b0JBQ0FFO29CQUNBQztvQkFDQUM7b0JBQ0FFO2dCQUNGO2dCQUVBbEIsTUFBTSxDQUFDNEIsZUFBZSxHQUFHNUIsTUFBTSxDQUFDNEIsZUFBZSxDQUFDVyxNQUFNLENBQUNIO1lBQ3pEO1lBRUE7UUFDRjtRQUVBLElBQUloQixNQUFNTyxJQUFJLEtBQUssVUFBVTtZQUMzQlAsTUFBTWxCLE1BQU0sQ0FBQ2lCLE9BQU8sQ0FBQyxDQUFDLEVBQUVxQixJQUFJLEVBQUU7Z0JBQzVCckMsZUFBZXNDLEdBQUcsQ0FBQ2hCLElBQUFBLG9CQUFXLEVBQUNlO1lBQ2pDO1lBRUEsSUFBSXBCLE1BQU1TLFNBQVMsRUFBRTtnQkFDbkIsSUFBSSxPQUFPeEIsSUFBSSxDQUFDZSxNQUFNTSxJQUFJLENBQUMsS0FBSyxZQUFZckIsSUFBSSxDQUFDZSxNQUFNTSxJQUFJLENBQUMsS0FBSyxNQUFNO29CQUNyRUksT0FBT0MsT0FBTyxDQUFDMUIsSUFBSSxDQUFDZSxNQUFNTSxJQUFJLENBQUMsRUFBRVAsT0FBTyxDQUFDLENBQUMsQ0FBQ2EsV0FBV0MsV0FBVzt3QkFDL0QsSUFBSUMsTUFBTUMsT0FBTyxDQUFDRixhQUFhOzRCQUM3QlMsSUFBQUEsdUJBQWUsRUFBQztnQ0FDZDNDO2dDQUNBRTtnQ0FDQUM7Z0NBQ0FDO2dDQUNBRSxNQUFNNEI7Z0NBQ05iO2dDQUNBa0IsUUFBUU47Z0NBQ1JyQjtnQ0FDQUM7Z0NBQ0FFO2dDQUNBQztnQ0FDQUM7Z0NBQ0FFOzRCQUNGO3dCQUNGO29CQUNGO2dCQUNGO1lBQ0YsT0FBTyxJQUFJeUIsSUFBQUEsNEJBQWEsRUFBQ3BCLFlBQVk7Z0JBQ25DbUIsSUFBQUEsdUJBQWUsRUFBQztvQkFDZDNDO29CQUNBRTtvQkFDQUM7b0JBQ0FDO29CQUNBRSxNQUFNa0I7b0JBQ05IO29CQUNBVDtvQkFDQUM7b0JBQ0FFO29CQUNBQztvQkFDQUM7b0JBQ0FFO2dCQUNGO1lBQ0Y7WUFFQTtRQUNGO1FBRUEsSUFBSUUsTUFBTU8sSUFBSSxLQUFLLFNBQVM7WUFDMUIsSUFBSSxPQUFPdEIsSUFBSSxDQUFDZSxNQUFNTSxJQUFJLENBQUMsS0FBSyxZQUFZckIsSUFBSSxDQUFDZSxNQUFNTSxJQUFJLENBQUMsS0FBSyxNQUFNO2dCQUNyRSxJQUFJTixNQUFNUyxTQUFTLEVBQUU7b0JBQ25CQyxPQUFPQyxPQUFPLENBQUMxQixJQUFJLENBQUNlLE1BQU1NLElBQUksQ0FBQyxFQUFFUCxPQUFPLENBQUMsQ0FBQyxDQUFDYSxXQUFXQyxXQUFXO3dCQUMvRG5DLGVBQWU7NEJBQ2JDOzRCQUNBQzs0QkFDQUM7NEJBQ0FDOzRCQUNBQzs0QkFDQUMsY0FBYyxDQUFDLEVBQUVpQixXQUFXLENBQUMsQ0FBQzs0QkFDOUJoQixNQUFNNEI7NEJBQ04zQjs0QkFDQUMsYUFBYSxDQUFDLEVBQUVlLFVBQVUsQ0FBQyxDQUFDOzRCQUM1QmQsUUFBUVksTUFBTVosTUFBTTs0QkFDcEJDLGNBQWN1Qjs0QkFDZHRCOzRCQUNBQzs0QkFDQUM7NEJBQ0FDOzRCQUNBQyxNQUFNLENBQUMsRUFBRUEsUUFBUSxHQUFHLEVBQUVNLE1BQU1NLElBQUksQ0FBQyxDQUFDLENBQUM7NEJBQ25DWDs0QkFDQUM7NEJBQ0FDOzRCQUNBQzt3QkFDRjtvQkFDRjtnQkFDRixPQUFPO29CQUNMcEIsZUFBZTt3QkFDYkM7d0JBQ0FDO3dCQUNBQzt3QkFDQUM7d0JBQ0FDO3dCQUNBQyxjQUFjLENBQUMsRUFBRWlCLFdBQVcsQ0FBQyxDQUFDO3dCQUM5QmhCLE1BQU1BLElBQUksQ0FBQ2UsTUFBTU0sSUFBSSxDQUFDO3dCQUN0QnBCO3dCQUNBQyxhQUFhLENBQUMsRUFBRWUsVUFBVSxDQUFDLENBQUM7d0JBQzVCZCxRQUFRWSxNQUFNWixNQUFNO3dCQUNwQkU7d0JBQ0FDO3dCQUNBQzt3QkFDQUM7d0JBQ0FDLE1BQU0sQ0FBQyxFQUFFQSxRQUFRLEdBQUcsRUFBRU0sTUFBTU0sSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDbkNYO3dCQUNBQzt3QkFDQUM7d0JBQ0FDO29CQUNGO2dCQUNGO1lBQ0Y7WUFFQTtRQUNGO1FBRUEsSUFBSUUsTUFBTU8sSUFBSSxLQUFLLFFBQVE7WUFDekJQLE1BQU13QixJQUFJLENBQUN6QixPQUFPLENBQUMsQ0FBQzBCO2dCQUNsQixJQUFJLFVBQVVBLEtBQUs7b0JBQ2pCLElBQUksT0FBT3hDLElBQUksQ0FBQ3dDLElBQUluQixJQUFJLENBQUMsS0FBSyxZQUFZckIsSUFBSSxDQUFDd0MsSUFBSW5CLElBQUksQ0FBQyxLQUFLLE1BQU07d0JBQ2pFLElBQUltQixJQUFJaEIsU0FBUyxFQUFFOzRCQUNqQkMsT0FBT0MsT0FBTyxDQUFDMUIsSUFBSSxDQUFDd0MsSUFBSW5CLElBQUksQ0FBQyxFQUFFUCxPQUFPLENBQUMsQ0FBQyxDQUFDYSxXQUFXQyxXQUFXO2dDQUM3RG5DLGVBQWU7b0NBQ2JDO29DQUNBQztvQ0FDQUM7b0NBQ0FDO29DQUNBQztvQ0FDQUMsY0FBYyxDQUFDLEVBQUVBLGdCQUFnQixHQUFHLEVBQUVxQixJQUFBQSxvQkFBVyxFQUFDb0IsSUFBSW5CLElBQUksRUFBRSxDQUFDLENBQUM7b0NBQzlEckIsTUFBTTRCO29DQUNOM0I7b0NBQ0FDLGFBQWEsQ0FBQyxFQUFFQSxlQUFlLEdBQUcsRUFBRXNDLElBQUluQixJQUFJLENBQUMsQ0FBQyxDQUFDO29DQUMvQ2xCLFFBQVFxQyxJQUFJckMsTUFBTTtvQ0FDbEJDLGNBQWN1QjtvQ0FDZHRCO29DQUNBQztvQ0FDQUM7b0NBQ0FDO29DQUNBQyxNQUFNLENBQUMsRUFBRUEsUUFBUSxHQUFHLEVBQUUrQixJQUFJbkIsSUFBSSxDQUFDLENBQUMsQ0FBQztvQ0FDakNYO29DQUNBQztvQ0FDQUM7b0NBQ0FDO2dDQUNGOzRCQUNGO3dCQUNGLE9BQU87NEJBQ0xwQixlQUFlO2dDQUNiQztnQ0FDQUM7Z0NBQ0FDO2dDQUNBQztnQ0FDQUM7Z0NBQ0FDLGNBQWMsQ0FBQyxFQUFFQSxnQkFBZ0IsR0FBRyxFQUFFcUIsSUFBQUEsb0JBQVcsRUFBQ29CLElBQUluQixJQUFJLEVBQUUsQ0FBQyxDQUFDO2dDQUM5RHJCLE1BQU1BLElBQUksQ0FBQ3dDLElBQUluQixJQUFJLENBQUM7Z0NBQ3BCcEI7Z0NBQ0FDLGFBQWEsQ0FBQyxFQUFFQSxlQUFlLEdBQUcsRUFBRXNDLElBQUluQixJQUFJLENBQUMsQ0FBQyxDQUFDO2dDQUMvQ2xCLFFBQVFxQyxJQUFJckMsTUFBTTtnQ0FDbEJFO2dDQUNBQztnQ0FDQUM7Z0NBQ0FDO2dDQUNBQyxNQUFNLENBQUMsRUFBRUEsUUFBUSxHQUFHLEVBQUUrQixJQUFJbkIsSUFBSSxDQUFDLENBQUMsQ0FBQztnQ0FDakNYO2dDQUNBQztnQ0FDQUM7Z0NBQ0FDOzRCQUNGO3dCQUNGO29CQUNGO2dCQUNGLE9BQU87b0JBQ0xwQixlQUFlO3dCQUNiQzt3QkFDQUM7d0JBQ0FDO3dCQUNBQzt3QkFDQUM7d0JBQ0FDO3dCQUNBQzt3QkFDQUM7d0JBQ0FDO3dCQUNBQyxRQUFRcUMsSUFBSXJDLE1BQU07d0JBQ2xCRTt3QkFDQUM7d0JBQ0FDO3dCQUNBQzt3QkFDQUM7d0JBQ0FDO3dCQUNBQzt3QkFDQUM7d0JBQ0FDO29CQUNGO2dCQUNGO1lBQ0Y7UUFDRjtRQUVBLElBQUlFLE1BQU1PLElBQUksS0FBSyxTQUFTUCxNQUFNTyxJQUFJLEtBQUssZUFBZTtZQUN4RDdCLGVBQWU7Z0JBQ2JDO2dCQUNBQztnQkFDQUM7Z0JBQ0FDO2dCQUNBQztnQkFDQUM7Z0JBQ0FDO2dCQUNBQztnQkFDQUM7Z0JBQ0FDLFFBQVFZLE1BQU1aLE1BQU07Z0JBQ3BCRTtnQkFDQUM7Z0JBQ0FDO2dCQUNBQztnQkFDQUM7Z0JBQ0FDO2dCQUNBQztnQkFDQUM7Z0JBQ0FDO1lBQ0Y7UUFDRjtRQUVBLElBQUlFLE1BQU1PLElBQUksS0FBSyxrQkFBa0JQLE1BQU1PLElBQUksS0FBSyxVQUFVO1lBQzVELE1BQU1tQixtQkFBbUIsQ0FBQyxFQUFFaEMsUUFBUSxHQUFHLEVBQUVNLE1BQU1NLElBQUksQ0FBQyxDQUFDO1lBRXJELElBQUlOLE1BQU1TLFNBQVMsRUFBRTtnQkFDbkIsSUFBSSxPQUFPTixjQUFjLFVBQVU7b0JBQ2pDTyxPQUFPQyxPQUFPLENBQUNSLFdBQVdKLE9BQU8sQ0FBQyxDQUFDLENBQUNhLFdBQVdDLFdBQVc7d0JBQ3hELElBQUlBLGVBQWUsTUFBTTs0QkFDdkJqQixzQkFBc0IrQixJQUFJLENBQUM7Z0NBQ3pCVCxRQUFRTjtnQ0FDUmxCLE1BQU1nQzs0QkFDUjs0QkFDQTt3QkFDRjt3QkFFQUUsSUFBQUEsb0NBQXFCLEVBQUM7NEJBQ3BCQyxTQUFTO2dDQUNQWCxRQUFRTjtnQ0FDUmxCLE1BQU1nQzs0QkFDUjs0QkFDQXpDLE1BQU00Qjs0QkFDTmI7NEJBQ0FMO3dCQUNGO29CQUNGO2dCQUNGO1lBQ0YsT0FBTztnQkFDTCxJQUFJUSxjQUFjLFFBQVNXLE1BQU1DLE9BQU8sQ0FBQ1osY0FBY0EsVUFBVTJCLE1BQU0sS0FBSyxHQUFJO29CQUM5RWxDLHNCQUFzQitCLElBQUksQ0FBQzt3QkFBRWpDLE1BQU1nQztvQkFBaUI7b0JBQ3BEO2dCQUNGO2dCQUVBRSxJQUFBQSxvQ0FBcUIsRUFBQztvQkFDcEJDLFNBQVM7d0JBQ1BuQyxNQUFNZ0M7b0JBQ1I7b0JBQ0F6QyxNQUFNa0I7b0JBQ05IO29CQUNBTDtnQkFDRjtZQUNGO1lBRUE7UUFDRjtRQUVBLElBQUlLLE1BQU1PLElBQUksS0FBSyxVQUFVUCxNQUFNK0IsT0FBTyxFQUFFO1lBQzFDLE1BQU1DLFdBQVcsQ0FBQyxFQUFFdEMsUUFBUSxHQUFHLEVBQUVNLE1BQU1NLElBQUksQ0FBQyxDQUFDO1lBRTdDLElBQUlOLE1BQU1TLFNBQVMsRUFBRTtnQkFDbkIsSUFBSSxPQUFPTixjQUFjLFVBQVU7b0JBQ2pDTyxPQUFPQyxPQUFPLENBQUNSLFdBQVdKLE9BQU8sQ0FBQyxDQUFDLENBQUNhLFdBQVdDLFdBQVc7d0JBQ3hELElBQUlDLE1BQU1DLE9BQU8sQ0FBQ0YsYUFBYTs0QkFDN0JvQixJQUFBQSxxQkFBYyxFQUFDO2dDQUNiSixTQUFTO29DQUNQWCxRQUFRTjtvQ0FDUmxCLE1BQU1zQztnQ0FDUjtnQ0FDQS9DLE1BQU00QjtnQ0FDTnRCOzRCQUNGO3dCQUNGO29CQUNGO2dCQUNGO1lBQ0YsT0FBTyxJQUFJdUIsTUFBTUMsT0FBTyxDQUFDWixZQUFZO2dCQUNuQzhCLElBQUFBLHFCQUFjLEVBQUM7b0JBQ2JKLFNBQVM7d0JBQ1BuQyxNQUFNc0M7b0JBQ1I7b0JBQ0EvQyxNQUFNa0I7b0JBQ05aO2dCQUNGO1lBQ0Y7WUFFQTtRQUNGO1FBRUEsSUFBSVMsTUFBTU8sSUFBSSxLQUFLLFlBQVlQLE1BQU0rQixPQUFPLEVBQUU7WUFDNUMsTUFBTUcsYUFBYSxDQUFDLEVBQUV4QyxRQUFRLEdBQUcsRUFBRU0sTUFBTU0sSUFBSSxDQUFDLENBQUM7WUFFL0MsSUFBSU4sTUFBTVMsU0FBUyxFQUFFO2dCQUNuQixJQUFJLE9BQU9OLGNBQWMsVUFBVTtvQkFDakNPLE9BQU9DLE9BQU8sQ0FBQ1IsV0FBV0osT0FBTyxDQUFDLENBQUMsQ0FBQ2EsV0FBV0MsV0FBVzt3QkFDeEQsSUFBSUMsTUFBTUMsT0FBTyxDQUFDRixhQUFhOzRCQUM3QnNCLElBQUFBLHlCQUFnQixFQUFDO2dDQUNmTixTQUFTO29DQUNQWCxRQUFRTjtvQ0FDUmxCLE1BQU13QztnQ0FDUjtnQ0FDQWpELE1BQU00QjtnQ0FDTnJCOzRCQUNGO3dCQUNGO29CQUNGO2dCQUNGO1lBQ0YsT0FBTyxJQUFJc0IsTUFBTUMsT0FBTyxDQUFDWixZQUFZO2dCQUNuQ2dDLElBQUFBLHlCQUFnQixFQUFDO29CQUNmTixTQUFTO3dCQUNQbkMsTUFBTXdDO29CQUNSO29CQUNBakQsTUFBTWtCO29CQUNOWDtnQkFDRjtZQUNGO1lBRUE7UUFDRjtRQUVBLElBQUlRLE1BQU1PLElBQUksS0FBSyxZQUFZUCxNQUFNK0IsT0FBTyxFQUFFO1lBQzVDLE1BQU1LLGtCQUFrQixDQUFDLEVBQUUzQyxnQkFBZ0IsQ0FBQyxFQUFFUSxXQUFXLENBQUM7WUFDMUQsSUFBSSxDQUFDSCxPQUFPLENBQUNzQyxnQkFBZ0IsRUFBRXRDLE9BQU8sQ0FBQ3NDLGdCQUFnQixHQUFHLEVBQUU7WUFFNUQsSUFBSXBDLE1BQU1TLFNBQVMsRUFBRTtnQkFDbkIsSUFBSSxPQUFPeEIsSUFBSSxDQUFDZSxNQUFNTSxJQUFJLENBQUMsS0FBSyxZQUFZckIsSUFBSSxDQUFDZSxNQUFNTSxJQUFJLENBQUMsS0FBSyxNQUFNO29CQUNyRUksT0FBT0MsT0FBTyxDQUFDMUIsSUFBSSxDQUFDZSxNQUFNTSxJQUFJLENBQUMsRUFBRVAsT0FBTyxDQUFDLENBQUMsQ0FBQ2EsV0FBV0MsV0FBVzt3QkFDL0QsSUFBSUMsTUFBTUMsT0FBTyxDQUFDRixhQUFhOzRCQUM3QixNQUFNRyxVQUFVcUIsSUFBQUEseUJBQWdCLEVBQUM7Z0NBQy9CQyxJQUFJckQsS0FBS3NELEtBQUssSUFBSXRELEtBQUtxRCxFQUFFO2dDQUN6QnJELE1BQU00QjtnQ0FDTkssUUFBUU47NEJBQ1Y7NEJBRUFkLE9BQU8sQ0FBQ3NDLGdCQUFnQixHQUFHdEMsT0FBTyxDQUFDc0MsZ0JBQWdCLENBQUNqQixNQUFNLENBQUNIO3dCQUM3RDtvQkFDRjtnQkFDRjtZQUNGLE9BQU8sSUFBSUYsTUFBTUMsT0FBTyxDQUFDOUIsSUFBSSxDQUFDZSxNQUFNTSxJQUFJLENBQUMsR0FBRztnQkFDMUMsTUFBTVUsVUFBVXFCLElBQUFBLHlCQUFnQixFQUFDO29CQUMvQkMsSUFBSXJELEtBQUtzRCxLQUFLLElBQUl0RCxLQUFLcUQsRUFBRTtvQkFDekJyRCxNQUFNQSxJQUFJLENBQUNlLE1BQU1NLElBQUksQ0FBQztnQkFDeEI7Z0JBRUFSLE9BQU8sQ0FBQ3NDLGdCQUFnQixHQUFHdEMsT0FBTyxDQUFDc0MsZ0JBQWdCLENBQUNqQixNQUFNLENBQUNIO1lBQzdEO1lBRUE7UUFDRjtRQUVBLElBQUlaLElBQUFBLHVCQUFnQixFQUFDSixRQUFRO1lBQzNCLE1BQU13QyxvQkFBNEUsRUFBRTtZQUVwRixJQUFJeEMsTUFBTVMsU0FBUyxFQUFFO2dCQUNuQixJQUFJLE9BQU9OLGNBQWMsWUFBWUEsY0FBYyxNQUFNO29CQUN2RE8sT0FBT0MsT0FBTyxDQUFDUixXQUFXSixPQUFPLENBQUMsQ0FBQyxDQUFDYSxXQUFXQyxXQUFXO3dCQUN4RCxJQUFJLENBQUN2QixPQUFPLENBQUNzQixVQUFVLEVBQUV0QixPQUFPLENBQUNzQixVQUFVLEdBQUcsQ0FBQzt3QkFFL0M0QixrQkFBa0JiLElBQUksQ0FBQzs0QkFDckJmOzRCQUNBNkIsS0FBS25EOzRCQUNMb0QsT0FBTzdCO3dCQUNUO29CQUNGO2dCQUNGO1lBQ0YsT0FBTztnQkFDTCxJQUFJNEIsTUFBTTVDO2dCQUVWLElBQUlSLGNBQWM7b0JBQ2hCLElBQUksQ0FBQ0MsT0FBTyxDQUFDRCxhQUFhLEVBQUVDLE9BQU8sQ0FBQ0QsYUFBYSxHQUFHLENBQUM7b0JBQ3JEb0QsTUFBTW5ELE9BQU8sQ0FBQ0QsYUFBYTtnQkFDN0I7Z0JBRUFtRCxrQkFBa0JiLElBQUksQ0FBQztvQkFBRWM7b0JBQUtDLE9BQU92QztnQkFBVTtZQUNqRDtZQUVBcUMsa0JBQWtCekMsT0FBTyxDQUFDLENBQUMsRUFBRWEsU0FBUyxFQUFFNkIsR0FBRyxFQUFFQyxLQUFLLEVBQUU7Z0JBQ2xELElBQUksT0FBT0EsVUFBVSxhQUFhO29CQUNoQyxJQUFJQyxpQkFBaUJEO29CQUVyQixJQUFJMUMsTUFBTU8sSUFBSSxLQUFLLFVBQVVQLE1BQU1NLElBQUksS0FBSyxhQUFhO3dCQUN2RHFDLGlCQUFpQixJQUFJQyxPQUFPQyxXQUFXO29CQUN6QztvQkFFQSxJQUFJakMsV0FBVzt3QkFDYjZCLEdBQUcsQ0FBQzdCLFVBQVUsQ0FBQ1YsVUFBVSxHQUFHeUM7b0JBQzlCLE9BQU87d0JBQ0xGLEdBQUcsQ0FBQ3ZDLFVBQVUsR0FBR3lDO29CQUNuQjtnQkFDRjtZQUNGO1FBQ0Y7SUFDRjtBQUNGIn0=
|
@@ -31,6 +31,7 @@ export type RowToInsert = {
|
|
31
31
|
locales: {
|
32
32
|
[locale: string]: Record<string, unknown>;
|
33
33
|
};
|
34
|
+
texts: Record<string, unknown>[];
|
34
35
|
numbers: Record<string, unknown>[];
|
35
36
|
relationships: Record<string, unknown>[];
|
36
37
|
relationshipsToDelete: RelationshipToDelete[];
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/transform/write/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,OAAO,EAAE;QACP,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC1C,CAAA;IACD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,OAAO,EAAE;QACP,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC1C,CAAA;IACD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,OAAO,EAAE;QACP,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC1C,CAAA;IACD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAClC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACxC,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,OAAO,EAAE;QACP,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KAC/C,CAAA;CACF,CAAA"}
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/transform/write/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,OAAO,EAAE;QACP,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC1C,CAAA;IACD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,OAAO,EAAE;QACP,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC1C,CAAA;IACD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,OAAO,EAAE;QACP,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC1C,CAAA;IACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAClC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACxC,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,OAAO,EAAE;QACP,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KAC/C,CAAA;CACF,CAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/upsertRow/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAO/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AASnC,eAAO,MAAM,SAAS,mHAYnB,IAAI,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/upsertRow/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAO/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AASnC,eAAO,MAAM,SAAS,mHAYnB,IAAI,eAkUN,CAAA"}
|
package/dist/upsertRow/index.js
CHANGED
@@ -50,6 +50,7 @@ const upsertRow = async ({ id, adapter, data, db, fields, operation, path = '',
|
|
50
50
|
}
|
51
51
|
const localesToInsert = [];
|
52
52
|
const relationsToInsert = [];
|
53
|
+
const textsToInsert = [];
|
53
54
|
const numbersToInsert = [];
|
54
55
|
const blocksToInsert = {};
|
55
56
|
const selectsToInsert = {};
|
@@ -68,6 +69,13 @@ const upsertRow = async ({ id, adapter, data, db, fields, operation, path = '',
|
|
68
69
|
relationsToInsert.push(relation);
|
69
70
|
});
|
70
71
|
}
|
72
|
+
// If there are texts, add parent to each
|
73
|
+
if (rowToInsert.texts.length > 0) {
|
74
|
+
rowToInsert.texts.forEach((textRow)=>{
|
75
|
+
textRow.parent = insertedRow.id;
|
76
|
+
textsToInsert.push(textRow);
|
77
|
+
});
|
78
|
+
}
|
71
79
|
// If there are numbers, add parent to each
|
72
80
|
if (rowToInsert.numbers.length > 0) {
|
73
81
|
rowToInsert.numbers.forEach((numberRow)=>{
|
@@ -133,6 +141,25 @@ const upsertRow = async ({ id, adapter, data, db, fields, operation, path = '',
|
|
133
141
|
await db.insert(adapter.tables[relationshipsTableName]).values(relationsToInsert);
|
134
142
|
}
|
135
143
|
// //////////////////////////////////
|
144
|
+
// INSERT hasMany TEXTS
|
145
|
+
// //////////////////////////////////
|
146
|
+
const textsTableName = `${tableName}_texts`;
|
147
|
+
if (operation === 'update') {
|
148
|
+
await (0, _deleteExistingRowsByPath.deleteExistingRowsByPath)({
|
149
|
+
adapter,
|
150
|
+
db,
|
151
|
+
localeColumnName: 'locale',
|
152
|
+
parentColumnName: 'parent',
|
153
|
+
parentID: insertedRow.id,
|
154
|
+
pathColumnName: 'path',
|
155
|
+
rows: textsToInsert,
|
156
|
+
tableName: textsTableName
|
157
|
+
});
|
158
|
+
}
|
159
|
+
if (textsToInsert.length > 0) {
|
160
|
+
await db.insert(adapter.tables[textsTableName]).values(textsToInsert).returning();
|
161
|
+
}
|
162
|
+
// //////////////////////////////////
|
136
163
|
// INSERT hasMany NUMBERS
|
137
164
|
// //////////////////////////////////
|
138
165
|
const numbersTableName = `${tableName}_numbers`;
|
@@ -257,4 +284,4 @@ const upsertRow = async ({ id, adapter, data, db, fields, operation, path = '',
|
|
257
284
|
return result;
|
258
285
|
};
|
259
286
|
|
260
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cHNlcnRSb3cvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgVHlwZVdpdGhJRCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IGVxIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdwYXlsb2FkL2Vycm9ycydcbmltcG9ydCB7IGkxOG5Jbml0IH0gZnJvbSAncGF5bG9hZC91dGlsaXRpZXMnXG5cbmltcG9ydCB0eXBlIHsgQmxvY2tSb3dUb0luc2VydCB9IGZyb20gJy4uL3RyYW5zZm9ybS93cml0ZS90eXBlcydcbmltcG9ydCB0eXBlIHsgQXJncyB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB7IGJ1aWxkRmluZE1hbnlBcmdzIH0gZnJvbSAnLi4vZmluZC9idWlsZEZpbmRNYW55QXJncydcbmltcG9ydCB7IHRyYW5zZm9ybSB9IGZyb20gJy4uL3RyYW5zZm9ybS9yZWFkJ1xuaW1wb3J0IHsgdHJhbnNmb3JtRm9yV3JpdGUgfSBmcm9tICcuLi90cmFuc2Zvcm0vd3JpdGUnXG5pbXBvcnQgeyBkZWxldGVFeGlzdGluZ0FycmF5Um93cyB9IGZyb20gJy4vZGVsZXRlRXhpc3RpbmdBcnJheVJvd3MnXG5pbXBvcnQgeyBkZWxldGVFeGlzdGluZ1Jvd3NCeVBhdGggfSBmcm9tICcuL2RlbGV0ZUV4aXN0aW5nUm93c0J5UGF0aCdcbmltcG9ydCB7IGluc2VydEFycmF5cyB9IGZyb20gJy4vaW5zZXJ0QXJyYXlzJ1xuXG5leHBvcnQgY29uc3QgdXBzZXJ0Um93ID0gYXN5bmMgPFQgZXh0ZW5kcyBUeXBlV2l0aElEPih7XG4gIGlkLFxuICBhZGFwdGVyLFxuICBkYXRhLFxuICBkYixcbiAgZmllbGRzLFxuICBvcGVyYXRpb24sXG4gIHBhdGggPSAnJyxcbiAgcmVxLFxuICB0YWJsZU5hbWUsXG4gIHVwc2VydFRhcmdldCxcbiAgd2hlcmUsXG59OiBBcmdzKTogUHJvbWlzZTxUPiA9PiB7XG4gIC8vIFNwbGl0IG91dCB0aGUgaW5jb21pbmcgZGF0YSBpbnRvIHRoZSBjb3JyZXNwb25kaW5nOlxuICAvLyBiYXNlIHJvdywgbG9jYWxlcywgcmVsYXRpb25zaGlwcywgYmxvY2tzLCBhbmQgYXJyYXlzXG4gIGNvbnN0IHJvd1RvSW5zZXJ0ID0gdHJhbnNmb3JtRm9yV3JpdGUoe1xuICAgIGFkYXB0ZXIsXG4gICAgZGF0YSxcbiAgICBmaWVsZHMsXG4gICAgcGF0aCxcbiAgICB0YWJsZU5hbWUsXG4gIH0pXG5cbiAgLy8gRmlyc3QsIHdlIGluc2VydCB0aGUgbWFpbiByb3dcbiAgbGV0IGluc2VydGVkUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuXG4gIHRyeSB7XG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IHVwc2VydFRhcmdldCB8fCBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkXG5cbiAgICAgIGlmIChpZCkge1xuICAgICAgICByb3dUb0luc2VydC5yb3cuaWQgPSBpZFxuICAgICAgICA7W2luc2VydGVkUm93XSA9IGF3YWl0IGRiXG4gICAgICAgICAgLmluc2VydChhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdKVxuICAgICAgICAgIC52YWx1ZXMocm93VG9JbnNlcnQucm93KVxuICAgICAgICAgIC5vbkNvbmZsaWN0RG9VcGRhdGUoeyBzZXQ6IHJvd1RvSW5zZXJ0LnJvdywgdGFyZ2V0IH0pXG4gICAgICAgICAgLnJldHVybmluZygpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICA7W2luc2VydGVkUm93XSA9IGF3YWl0IGRiXG4gICAgICAgICAgLmluc2VydChhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdKVxuICAgICAgICAgIC52YWx1ZXMocm93VG9JbnNlcnQucm93KVxuICAgICAgICAgIC5vbkNvbmZsaWN0RG9VcGRhdGUoeyBzZXQ6IHJvd1RvSW5zZXJ0LnJvdywgdGFyZ2V0LCB3aGVyZSB9KVxuICAgICAgICAgIC5yZXR1cm5pbmcoKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICA7W2luc2VydGVkUm93XSA9IGF3YWl0IGRiXG4gICAgICAgIC5pbnNlcnQoYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXSlcbiAgICAgICAgLnZhbHVlcyhyb3dUb0luc2VydC5yb3cpXG4gICAgICAgIC5yZXR1cm5pbmcoKVxuICAgIH1cblxuICAgIGNvbnN0IGxvY2FsZXNUb0luc2VydDogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdXG4gICAgY29uc3QgcmVsYXRpb25zVG9JbnNlcnQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10gPSBbXVxuICAgIGNvbnN0IG51bWJlcnNUb0luc2VydDogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdXG4gICAgY29uc3QgYmxvY2tzVG9JbnNlcnQ6IHsgW2Jsb2NrVHlwZTogc3RyaW5nXTogQmxvY2tSb3dUb0luc2VydFtdIH0gPSB7fVxuICAgIGNvbnN0IHNlbGVjdHNUb0luc2VydDogeyBbc2VsZWN0VGFibGVOYW1lOiBzdHJpbmddOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdIH0gPSB7fVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIGxvY2FsZSByb3dzIHdpdGggZGF0YSwgYWRkIHRoZSBwYXJlbnQgYW5kIGxvY2FsZSB0byBlYWNoXG4gICAgaWYgKE9iamVjdC5rZXlzKHJvd1RvSW5zZXJ0LmxvY2FsZXMpLmxlbmd0aCA+IDApIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJvd1RvSW5zZXJ0LmxvY2FsZXMpLmZvckVhY2goKFtsb2NhbGUsIGxvY2FsZVJvd10pID0+IHtcbiAgICAgICAgbG9jYWxlUm93Ll9wYXJlbnRJRCA9IGluc2VydGVkUm93LmlkXG4gICAgICAgIGxvY2FsZVJvdy5fbG9jYWxlID0gbG9jYWxlXG4gICAgICAgIGxvY2FsZXNUb0luc2VydC5wdXNoKGxvY2FsZVJvdylcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIHJlbGF0aW9uc2hpcHMsIGFkZCBwYXJlbnQgdG8gZWFjaFxuICAgIGlmIChyb3dUb0luc2VydC5yZWxhdGlvbnNoaXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJvd1RvSW5zZXJ0LnJlbGF0aW9uc2hpcHMuZm9yRWFjaCgocmVsYXRpb24pID0+IHtcbiAgICAgICAgcmVsYXRpb24ucGFyZW50ID0gaW5zZXJ0ZWRSb3cuaWRcbiAgICAgICAgcmVsYXRpb25zVG9JbnNlcnQucHVzaChyZWxhdGlvbilcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIG51bWJlcnMsIGFkZCBwYXJlbnQgdG8gZWFjaFxuICAgIGlmIChyb3dUb0luc2VydC5udW1iZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJvd1RvSW5zZXJ0Lm51bWJlcnMuZm9yRWFjaCgobnVtYmVyUm93KSA9PiB7XG4gICAgICAgIG51bWJlclJvdy5wYXJlbnQgPSBpbnNlcnRlZFJvdy5pZFxuICAgICAgICBudW1iZXJzVG9JbnNlcnQucHVzaChudW1iZXJSb3cpXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIElmIHRoZXJlIGFyZSBzZWxlY3RzLCBhZGQgcGFyZW50IHRvIGVhY2gsIGFuZCB0aGVuXG4gICAgLy8gc3RvcmUgYnkgdGFibGUgbmFtZSBhbmQgcm93c1xuICAgIGlmIChPYmplY3Qua2V5cyhyb3dUb0luc2VydC5zZWxlY3RzKS5sZW5ndGggPiAwKSB7XG4gICAgICBPYmplY3QuZW50cmllcyhyb3dUb0luc2VydC5zZWxlY3RzKS5mb3JFYWNoKChbc2VsZWN0VGFibGVOYW1lLCBzZWxlY3RSb3dzXSkgPT4ge1xuICAgICAgICBzZWxlY3RSb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2Ygcm93LnBhcmVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHJvdy5wYXJlbnQgPSBpbnNlcnRlZFJvdy5pZFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIXNlbGVjdHNUb0luc2VydFtzZWxlY3RUYWJsZU5hbWVdKSBzZWxlY3RzVG9JbnNlcnRbc2VsZWN0VGFibGVOYW1lXSA9IFtdXG4gICAgICAgICAgc2VsZWN0c1RvSW5zZXJ0W3NlbGVjdFRhYmxlTmFtZV0ucHVzaChyb3cpXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIElmIHRoZXJlIGFyZSBibG9ja3MsIGFkZCBwYXJlbnQgdG8gZWFjaCwgYW5kIHRoZW5cbiAgICAvLyBzdG9yZSBieSB0YWJsZSBuYW1lIGFuZCByb3dzXG4gICAgT2JqZWN0LmtleXMocm93VG9JbnNlcnQuYmxvY2tzKS5mb3JFYWNoKChibG9ja05hbWUpID0+IHtcbiAgICAgIHJvd1RvSW5zZXJ0LmJsb2Nrc1tibG9ja05hbWVdLmZvckVhY2goKGJsb2NrUm93KSA9PiB7XG4gICAgICAgIGJsb2NrUm93LnJvdy5fcGFyZW50SUQgPSBpbnNlcnRlZFJvdy5pZFxuICAgICAgICBpZiAoIWJsb2Nrc1RvSW5zZXJ0W2Jsb2NrTmFtZV0pIGJsb2Nrc1RvSW5zZXJ0W2Jsb2NrTmFtZV0gPSBbXVxuICAgICAgICBpZiAoYmxvY2tSb3cucm93LnV1aWQpIHtcbiAgICAgICAgICBkZWxldGUgYmxvY2tSb3cucm93LnV1aWRcbiAgICAgICAgfVxuICAgICAgICBibG9ja3NUb0luc2VydFtibG9ja05hbWVdLnB1c2goYmxvY2tSb3cpXG4gICAgICB9KVxuICAgIH0pXG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gSU5TRVJUIExPQ0FMRVNcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBpZiAobG9jYWxlc1RvSW5zZXJ0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGxvY2FsZVRhYmxlID0gYWRhcHRlci50YWJsZXNbYCR7dGFibGVOYW1lfV9sb2NhbGVzYF1cblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgICAgYXdhaXQgZGIuZGVsZXRlKGxvY2FsZVRhYmxlKS53aGVyZShlcShsb2NhbGVUYWJsZS5fcGFyZW50SUQsIGluc2VydGVkUm93LmlkKSlcbiAgICAgIH1cblxuICAgICAgYXdhaXQgZGIuaW5zZXJ0KGxvY2FsZVRhYmxlKS52YWx1ZXMobG9jYWxlc1RvSW5zZXJ0KVxuICAgIH1cblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBJTlNFUlQgUkVMQVRJT05TSElQU1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IHJlbGF0aW9uc2hpcHNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X3JlbHNgXG5cbiAgICBpZiAob3BlcmF0aW9uID09PSAndXBkYXRlJykge1xuICAgICAgYXdhaXQgZGVsZXRlRXhpc3RpbmdSb3dzQnlQYXRoKHtcbiAgICAgICAgYWRhcHRlcixcbiAgICAgICAgZGIsXG4gICAgICAgIGxvY2FsZUNvbHVtbk5hbWU6ICdsb2NhbGUnLFxuICAgICAgICBwYXJlbnRDb2x1bW5OYW1lOiAncGFyZW50JyxcbiAgICAgICAgcGFyZW50SUQ6IGluc2VydGVkUm93LmlkLFxuICAgICAgICBwYXRoQ29sdW1uTmFtZTogJ3BhdGgnLFxuICAgICAgICByb3dzOiBbLi4ucmVsYXRpb25zVG9JbnNlcnQsIC4uLnJvd1RvSW5zZXJ0LnJlbGF0aW9uc2hpcHNUb0RlbGV0ZV0sXG4gICAgICAgIHRhYmxlTmFtZTogcmVsYXRpb25zaGlwc1RhYmxlTmFtZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHJlbGF0aW9uc1RvSW5zZXJ0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGF3YWl0IGRiLmluc2VydChhZGFwdGVyLnRhYmxlc1tyZWxhdGlvbnNoaXBzVGFibGVOYW1lXSkudmFsdWVzKHJlbGF0aW9uc1RvSW5zZXJ0KVxuICAgIH1cblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBJTlNFUlQgaGFzTWFueSBOVU1CRVJTXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgY29uc3QgbnVtYmVyc1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fbnVtYmVyc2BcblxuICAgIGlmIChvcGVyYXRpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgICBhd2FpdCBkZWxldGVFeGlzdGluZ1Jvd3NCeVBhdGgoe1xuICAgICAgICBhZGFwdGVyLFxuICAgICAgICBkYixcbiAgICAgICAgbG9jYWxlQ29sdW1uTmFtZTogJ2xvY2FsZScsXG4gICAgICAgIHBhcmVudENvbHVtbk5hbWU6ICdwYXJlbnQnLFxuICAgICAgICBwYXJlbnRJRDogaW5zZXJ0ZWRSb3cuaWQsXG4gICAgICAgIHBhdGhDb2x1bW5OYW1lOiAncGF0aCcsXG4gICAgICAgIHJvd3M6IG51bWJlcnNUb0luc2VydCxcbiAgICAgICAgdGFibGVOYW1lOiBudW1iZXJzVGFibGVOYW1lLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAobnVtYmVyc1RvSW5zZXJ0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGF3YWl0IGRiLmluc2VydChhZGFwdGVyLnRhYmxlc1tudW1iZXJzVGFibGVOYW1lXSkudmFsdWVzKG51bWJlcnNUb0luc2VydCkucmV0dXJuaW5nKClcbiAgICB9XG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gSU5TRVJUIEJMT0NLU1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IGluc2VydGVkQmxvY2tSb3dzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPiA9IHt9XG5cbiAgICBpZiAob3BlcmF0aW9uID09PSAndXBkYXRlJykge1xuICAgICAgZm9yIChjb25zdCBibG9ja05hbWUgb2Ygcm93VG9JbnNlcnQuYmxvY2tzVG9EZWxldGUpIHtcbiAgICAgICAgY29uc3QgYmxvY2tUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X2Jsb2Nrc18ke2Jsb2NrTmFtZX1gXG4gICAgICAgIGNvbnN0IGJsb2NrVGFibGUgPSBhZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV1cbiAgICAgICAgYXdhaXQgZGIuZGVsZXRlKGJsb2NrVGFibGUpLndoZXJlKGVxKGJsb2NrVGFibGUuX3BhcmVudElELCBpbnNlcnRlZFJvdy5pZCkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbYmxvY2tOYW1lLCBibG9ja1Jvd3NdIG9mIE9iamVjdC5lbnRyaWVzKGJsb2Nrc1RvSW5zZXJ0KSkge1xuICAgICAgaW5zZXJ0ZWRCbG9ja1Jvd3NbYmxvY2tOYW1lXSA9IGF3YWl0IGRiXG4gICAgICAgIC5pbnNlcnQoYWRhcHRlci50YWJsZXNbYCR7dGFibGVOYW1lfV9ibG9ja3NfJHtibG9ja05hbWV9YF0pXG4gICAgICAgIC52YWx1ZXMoYmxvY2tSb3dzLm1hcCgoeyByb3cgfSkgPT4gcm93KSlcbiAgICAgICAgLnJldHVybmluZygpXG5cbiAgICAgIGluc2VydGVkQmxvY2tSb3dzW2Jsb2NrTmFtZV0uZm9yRWFjaCgocm93LCBpKSA9PiB7XG4gICAgICAgIGJsb2NrUm93c1tpXS5yb3cgPSByb3dcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IGJsb2NrTG9jYWxlSW5kZXhNYXA6IG51bWJlcltdID0gW11cblxuICAgICAgY29uc3QgYmxvY2tMb2NhbGVSb3dzVG9JbnNlcnQgPSBibG9ja1Jvd3MucmVkdWNlKChhY2MsIGJsb2NrUm93LCBpKSA9PiB7XG4gICAgICAgIGlmIChPYmplY3QuZW50cmllcyhibG9ja1Jvdy5sb2NhbGVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMoYmxvY2tSb3cubG9jYWxlcykuZm9yRWFjaCgoW2Jsb2NrTG9jYWxlLCBibG9ja0xvY2FsZURhdGFdKSA9PiB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoYmxvY2tMb2NhbGVEYXRhKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGJsb2NrTG9jYWxlRGF0YS5fcGFyZW50SUQgPSBibG9ja1Jvdy5yb3cuaWRcbiAgICAgICAgICAgICAgYmxvY2tMb2NhbGVEYXRhLl9sb2NhbGUgPSBibG9ja0xvY2FsZVxuICAgICAgICAgICAgICBhY2MucHVzaChibG9ja0xvY2FsZURhdGEpXG4gICAgICAgICAgICAgIGJsb2NrTG9jYWxlSW5kZXhNYXAucHVzaChpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjXG4gICAgICB9LCBbXSlcblxuICAgICAgaWYgKGJsb2NrTG9jYWxlUm93c1RvSW5zZXJ0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXdhaXQgZGJcbiAgICAgICAgICAuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW2Ake3RhYmxlTmFtZX1fYmxvY2tzXyR7YmxvY2tOYW1lfV9sb2NhbGVzYF0pXG4gICAgICAgICAgLnZhbHVlcyhibG9ja0xvY2FsZVJvd3NUb0luc2VydClcbiAgICAgICAgICAucmV0dXJuaW5nKClcbiAgICAgIH1cblxuICAgICAgYXdhaXQgaW5zZXJ0QXJyYXlzKHtcbiAgICAgICAgYWRhcHRlcixcbiAgICAgICAgYXJyYXlzOiBibG9ja1Jvd3MubWFwKCh7IGFycmF5cyB9KSA9PiBhcnJheXMpLFxuICAgICAgICBkYixcbiAgICAgICAgcGFyZW50Um93czogaW5zZXJ0ZWRCbG9ja1Jvd3NbYmxvY2tOYW1lXSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIElOU0VSVCBBUlJBWVMgUkVDVVJTSVZFTFlcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBpZiAob3BlcmF0aW9uID09PSAndXBkYXRlJykge1xuICAgICAgZm9yIChjb25zdCBhcnJheVRhYmxlTmFtZSBvZiBPYmplY3Qua2V5cyhyb3dUb0luc2VydC5hcnJheXMpKSB7XG4gICAgICAgIGF3YWl0IGRlbGV0ZUV4aXN0aW5nQXJyYXlSb3dzKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGRiLFxuICAgICAgICAgIHBhcmVudElEOiBpbnNlcnRlZFJvdy5pZCxcbiAgICAgICAgICB0YWJsZU5hbWU6IGFycmF5VGFibGVOYW1lLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIGF3YWl0IGluc2VydEFycmF5cyh7XG4gICAgICBhZGFwdGVyLFxuICAgICAgYXJyYXlzOiBbcm93VG9JbnNlcnQuYXJyYXlzXSxcbiAgICAgIGRiLFxuICAgICAgcGFyZW50Um93czogW2luc2VydGVkUm93XSxcbiAgICB9KVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIElOU0VSVCBoYXNNYW55IFNFTEVDVFNcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBmb3IgKGNvbnN0IFtzZWxlY3RUYWJsZU5hbWUsIHRhYmxlUm93c10gb2YgT2JqZWN0LmVudHJpZXMoc2VsZWN0c1RvSW5zZXJ0KSkge1xuICAgICAgY29uc3Qgc2VsZWN0VGFibGUgPSBhZGFwdGVyLnRhYmxlc1tzZWxlY3RUYWJsZU5hbWVdXG4gICAgICBpZiAob3BlcmF0aW9uID09PSAndXBkYXRlJykge1xuICAgICAgICBhd2FpdCBkYi5kZWxldGUoc2VsZWN0VGFibGUpLndoZXJlKGVxKHNlbGVjdFRhYmxlLnBhcmVudCwgaW5zZXJ0ZWRSb3cuaWQpKVxuICAgICAgfVxuICAgICAgYXdhaXQgZGIuaW5zZXJ0KHNlbGVjdFRhYmxlKS52YWx1ZXModGFibGVSb3dzKS5yZXR1cm5pbmcoKVxuICAgIH1cblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBFcnJvciBIYW5kbGluZ1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBlcnJvci5jb2RlID09PSAnMjM1MDUnXG4gICAgICA/IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmaWVsZDogYWRhcHRlci5maWVsZENvbnN0cmFpbnRzW3RhYmxlTmFtZV1bZXJyb3IuY29uc3RyYWludF0sXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHJlcS50KCdlcnJvcjp2YWx1ZU11c3RCZVVuaXF1ZScpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlcT8udCA/PyBpMThuSW5pdChyZXEucGF5bG9hZC5jb25maWcuaTE4bikudCxcbiAgICAgICAgKVxuICAgICAgOiBlcnJvclxuICB9XG5cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBSRVRSSUVWRSBORVdMWSBVUERBVEVEIFJPV1xuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgY29uc3QgZmluZE1hbnlBcmdzID0gYnVpbGRGaW5kTWFueUFyZ3Moe1xuICAgIGFkYXB0ZXIsXG4gICAgZGVwdGg6IDAsXG4gICAgZmllbGRzLFxuICAgIHRhYmxlTmFtZSxcbiAgfSlcblxuICBmaW5kTWFueUFyZ3Mud2hlcmUgPSBlcShhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLCBpbnNlcnRlZFJvdy5pZClcblxuICBjb25zdCBkb2MgPSBhd2FpdCBkYi5xdWVyeVt0YWJsZU5hbWVdLmZpbmRGaXJzdChmaW5kTWFueUFyZ3MpXG5cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBUUkFOU0ZPUk0gREFUQVxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgY29uc3QgcmVzdWx0ID0gdHJhbnNmb3JtPFQ+KHtcbiAgICBjb25maWc6IGFkYXB0ZXIucGF5bG9hZC5jb25maWcsXG4gICAgZGF0YTogZG9jLFxuICAgIGZpZWxkcyxcbiAgfSlcblxuICByZXR1cm4gcmVzdWx0XG59XG4iXSwibmFtZXMiOlsidXBzZXJ0Um93IiwiaWQiLCJhZGFwdGVyIiwiZGF0YSIsImRiIiwiZmllbGRzIiwib3BlcmF0aW9uIiwicGF0aCIsInJlcSIsInRhYmxlTmFtZSIsInVwc2VydFRhcmdldCIsIndoZXJlIiwicm93VG9JbnNlcnQiLCJ0cmFuc2Zvcm1Gb3JXcml0ZSIsImluc2VydGVkUm93IiwidGFyZ2V0IiwidGFibGVzIiwicm93IiwiaW5zZXJ0IiwidmFsdWVzIiwib25Db25mbGljdERvVXBkYXRlIiwic2V0IiwicmV0dXJuaW5nIiwibG9jYWxlc1RvSW5zZXJ0IiwicmVsYXRpb25zVG9JbnNlcnQiLCJudW1iZXJzVG9JbnNlcnQiLCJibG9ja3NUb0luc2VydCIsInNlbGVjdHNUb0luc2VydCIsIk9iamVjdCIsImtleXMiLCJsb2NhbGVzIiwibGVuZ3RoIiwiZW50cmllcyIsImZvckVhY2giLCJsb2NhbGUiLCJsb2NhbGVSb3ciLCJfcGFyZW50SUQiLCJfbG9jYWxlIiwicHVzaCIsInJlbGF0aW9uc2hpcHMiLCJyZWxhdGlvbiIsInBhcmVudCIsIm51bWJlcnMiLCJudW1iZXJSb3ciLCJzZWxlY3RzIiwic2VsZWN0VGFibGVOYW1lIiwic2VsZWN0Um93cyIsImJsb2NrcyIsImJsb2NrTmFtZSIsImJsb2NrUm93IiwidXVpZCIsImxvY2FsZVRhYmxlIiwiZGVsZXRlIiwiZXEiLCJyZWxhdGlvbnNoaXBzVGFibGVOYW1lIiwiZGVsZXRlRXhpc3RpbmdSb3dzQnlQYXRoIiwibG9jYWxlQ29sdW1uTmFtZSIsInBhcmVudENvbHVtbk5hbWUiLCJwYXJlbnRJRCIsInBhdGhDb2x1bW5OYW1lIiwicm93cyIsInJlbGF0aW9uc2hpcHNUb0RlbGV0ZSIsIm51bWJlcnNUYWJsZU5hbWUiLCJpbnNlcnRlZEJsb2NrUm93cyIsImJsb2Nrc1RvRGVsZXRlIiwiYmxvY2tUYWJsZU5hbWUiLCJibG9ja1RhYmxlIiwiYmxvY2tSb3dzIiwibWFwIiwiaSIsImJsb2NrTG9jYWxlSW5kZXhNYXAiLCJibG9ja0xvY2FsZVJvd3NUb0luc2VydCIsInJlZHVjZSIsImFjYyIsImJsb2NrTG9jYWxlIiwiYmxvY2tMb2NhbGVEYXRhIiwiaW5zZXJ0QXJyYXlzIiwiYXJyYXlzIiwicGFyZW50Um93cyIsImFycmF5VGFibGVOYW1lIiwiZGVsZXRlRXhpc3RpbmdBcnJheVJvd3MiLCJ0YWJsZVJvd3MiLCJzZWxlY3RUYWJsZSIsImVycm9yIiwiY29kZSIsIlZhbGlkYXRpb25FcnJvciIsImZpZWxkIiwiZmllbGRDb25zdHJhaW50cyIsImNvbnN0cmFpbnQiLCJtZXNzYWdlIiwidCIsImkxOG5Jbml0IiwicGF5bG9hZCIsImNvbmZpZyIsImkxOG4iLCJmaW5kTWFueUFyZ3MiLCJidWlsZEZpbmRNYW55QXJncyIsImRlcHRoIiwiZG9jIiwicXVlcnkiLCJmaW5kRmlyc3QiLCJyZXN1bHQiLCJ0cmFuc2Zvcm0iXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkFpQnZCQTs7O2VBQUFBOzs7NEJBZE07d0JBQ2E7MkJBQ1A7bUNBS1M7c0JBQ1I7dUJBQ1E7eUNBQ007MENBQ0M7OEJBQ1o7QUFFdEIsTUFBTUEsWUFBWSxPQUE2QixFQUNwREMsRUFBRSxFQUNGQyxPQUFPLEVBQ1BDLElBQUksRUFDSkMsRUFBRSxFQUNGQyxNQUFNLEVBQ05DLFNBQVMsRUFDVEMsT0FBTyxFQUFFLEVBQ1RDLEdBQUcsRUFDSEMsU0FBUyxFQUNUQyxZQUFZLEVBQ1pDLEtBQUssRUFDQTtJQUNMLHNEQUFzRDtJQUN0RCx1REFBdUQ7SUFDdkQsTUFBTUMsY0FBY0MsSUFBQUEsd0JBQWlCLEVBQUM7UUFDcENYO1FBQ0FDO1FBQ0FFO1FBQ0FFO1FB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
|
287
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cHNlcnRSb3cvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgVHlwZVdpdGhJRCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IGVxIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdwYXlsb2FkL2Vycm9ycydcbmltcG9ydCB7IGkxOG5Jbml0IH0gZnJvbSAncGF5bG9hZC91dGlsaXRpZXMnXG5cbmltcG9ydCB0eXBlIHsgQmxvY2tSb3dUb0luc2VydCB9IGZyb20gJy4uL3RyYW5zZm9ybS93cml0ZS90eXBlcydcbmltcG9ydCB0eXBlIHsgQXJncyB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB7IGJ1aWxkRmluZE1hbnlBcmdzIH0gZnJvbSAnLi4vZmluZC9idWlsZEZpbmRNYW55QXJncydcbmltcG9ydCB7IHRyYW5zZm9ybSB9IGZyb20gJy4uL3RyYW5zZm9ybS9yZWFkJ1xuaW1wb3J0IHsgdHJhbnNmb3JtRm9yV3JpdGUgfSBmcm9tICcuLi90cmFuc2Zvcm0vd3JpdGUnXG5pbXBvcnQgeyBkZWxldGVFeGlzdGluZ0FycmF5Um93cyB9IGZyb20gJy4vZGVsZXRlRXhpc3RpbmdBcnJheVJvd3MnXG5pbXBvcnQgeyBkZWxldGVFeGlzdGluZ1Jvd3NCeVBhdGggfSBmcm9tICcuL2RlbGV0ZUV4aXN0aW5nUm93c0J5UGF0aCdcbmltcG9ydCB7IGluc2VydEFycmF5cyB9IGZyb20gJy4vaW5zZXJ0QXJyYXlzJ1xuXG5leHBvcnQgY29uc3QgdXBzZXJ0Um93ID0gYXN5bmMgPFQgZXh0ZW5kcyBUeXBlV2l0aElEPih7XG4gIGlkLFxuICBhZGFwdGVyLFxuICBkYXRhLFxuICBkYixcbiAgZmllbGRzLFxuICBvcGVyYXRpb24sXG4gIHBhdGggPSAnJyxcbiAgcmVxLFxuICB0YWJsZU5hbWUsXG4gIHVwc2VydFRhcmdldCxcbiAgd2hlcmUsXG59OiBBcmdzKTogUHJvbWlzZTxUPiA9PiB7XG4gIC8vIFNwbGl0IG91dCB0aGUgaW5jb21pbmcgZGF0YSBpbnRvIHRoZSBjb3JyZXNwb25kaW5nOlxuICAvLyBiYXNlIHJvdywgbG9jYWxlcywgcmVsYXRpb25zaGlwcywgYmxvY2tzLCBhbmQgYXJyYXlzXG4gIGNvbnN0IHJvd1RvSW5zZXJ0ID0gdHJhbnNmb3JtRm9yV3JpdGUoe1xuICAgIGFkYXB0ZXIsXG4gICAgZGF0YSxcbiAgICBmaWVsZHMsXG4gICAgcGF0aCxcbiAgICB0YWJsZU5hbWUsXG4gIH0pXG5cbiAgLy8gRmlyc3QsIHdlIGluc2VydCB0aGUgbWFpbiByb3dcbiAgbGV0IGluc2VydGVkUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuXG4gIHRyeSB7XG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IHVwc2VydFRhcmdldCB8fCBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkXG5cbiAgICAgIGlmIChpZCkge1xuICAgICAgICByb3dUb0luc2VydC5yb3cuaWQgPSBpZFxuICAgICAgICA7W2luc2VydGVkUm93XSA9IGF3YWl0IGRiXG4gICAgICAgICAgLmluc2VydChhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdKVxuICAgICAgICAgIC52YWx1ZXMocm93VG9JbnNlcnQucm93KVxuICAgICAgICAgIC5vbkNvbmZsaWN0RG9VcGRhdGUoeyBzZXQ6IHJvd1RvSW5zZXJ0LnJvdywgdGFyZ2V0IH0pXG4gICAgICAgICAgLnJldHVybmluZygpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICA7W2luc2VydGVkUm93XSA9IGF3YWl0IGRiXG4gICAgICAgICAgLmluc2VydChhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdKVxuICAgICAgICAgIC52YWx1ZXMocm93VG9JbnNlcnQucm93KVxuICAgICAgICAgIC5vbkNvbmZsaWN0RG9VcGRhdGUoeyBzZXQ6IHJvd1RvSW5zZXJ0LnJvdywgdGFyZ2V0LCB3aGVyZSB9KVxuICAgICAgICAgIC5yZXR1cm5pbmcoKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICA7W2luc2VydGVkUm93XSA9IGF3YWl0IGRiXG4gICAgICAgIC5pbnNlcnQoYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXSlcbiAgICAgICAgLnZhbHVlcyhyb3dUb0luc2VydC5yb3cpXG4gICAgICAgIC5yZXR1cm5pbmcoKVxuICAgIH1cblxuICAgIGNvbnN0IGxvY2FsZXNUb0luc2VydDogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdXG4gICAgY29uc3QgcmVsYXRpb25zVG9JbnNlcnQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10gPSBbXVxuICAgIGNvbnN0IHRleHRzVG9JbnNlcnQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10gPSBbXVxuICAgIGNvbnN0IG51bWJlcnNUb0luc2VydDogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdXG4gICAgY29uc3QgYmxvY2tzVG9JbnNlcnQ6IHsgW2Jsb2NrVHlwZTogc3RyaW5nXTogQmxvY2tSb3dUb0luc2VydFtdIH0gPSB7fVxuICAgIGNvbnN0IHNlbGVjdHNUb0luc2VydDogeyBbc2VsZWN0VGFibGVOYW1lOiBzdHJpbmddOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdIH0gPSB7fVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIGxvY2FsZSByb3dzIHdpdGggZGF0YSwgYWRkIHRoZSBwYXJlbnQgYW5kIGxvY2FsZSB0byBlYWNoXG4gICAgaWYgKE9iamVjdC5rZXlzKHJvd1RvSW5zZXJ0LmxvY2FsZXMpLmxlbmd0aCA+IDApIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJvd1RvSW5zZXJ0LmxvY2FsZXMpLmZvckVhY2goKFtsb2NhbGUsIGxvY2FsZVJvd10pID0+IHtcbiAgICAgICAgbG9jYWxlUm93Ll9wYXJlbnRJRCA9IGluc2VydGVkUm93LmlkXG4gICAgICAgIGxvY2FsZVJvdy5fbG9jYWxlID0gbG9jYWxlXG4gICAgICAgIGxvY2FsZXNUb0luc2VydC5wdXNoKGxvY2FsZVJvdylcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIHJlbGF0aW9uc2hpcHMsIGFkZCBwYXJlbnQgdG8gZWFjaFxuICAgIGlmIChyb3dUb0luc2VydC5yZWxhdGlvbnNoaXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJvd1RvSW5zZXJ0LnJlbGF0aW9uc2hpcHMuZm9yRWFjaCgocmVsYXRpb24pID0+IHtcbiAgICAgICAgcmVsYXRpb24ucGFyZW50ID0gaW5zZXJ0ZWRSb3cuaWRcbiAgICAgICAgcmVsYXRpb25zVG9JbnNlcnQucHVzaChyZWxhdGlvbilcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIHRleHRzLCBhZGQgcGFyZW50IHRvIGVhY2hcbiAgICBpZiAocm93VG9JbnNlcnQudGV4dHMubGVuZ3RoID4gMCkge1xuICAgICAgcm93VG9JbnNlcnQudGV4dHMuZm9yRWFjaCgodGV4dFJvdykgPT4ge1xuICAgICAgICB0ZXh0Um93LnBhcmVudCA9IGluc2VydGVkUm93LmlkXG4gICAgICAgIHRleHRzVG9JbnNlcnQucHVzaCh0ZXh0Um93KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgbnVtYmVycywgYWRkIHBhcmVudCB0byBlYWNoXG4gICAgaWYgKHJvd1RvSW5zZXJ0Lm51bWJlcnMubGVuZ3RoID4gMCkge1xuICAgICAgcm93VG9JbnNlcnQubnVtYmVycy5mb3JFYWNoKChudW1iZXJSb3cpID0+IHtcbiAgICAgICAgbnVtYmVyUm93LnBhcmVudCA9IGluc2VydGVkUm93LmlkXG4gICAgICAgIG51bWJlcnNUb0luc2VydC5wdXNoKG51bWJlclJvdylcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIHNlbGVjdHMsIGFkZCBwYXJlbnQgdG8gZWFjaCwgYW5kIHRoZW5cbiAgICAvLyBzdG9yZSBieSB0YWJsZSBuYW1lIGFuZCByb3dzXG4gICAgaWYgKE9iamVjdC5rZXlzKHJvd1RvSW5zZXJ0LnNlbGVjdHMpLmxlbmd0aCA+IDApIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJvd1RvSW5zZXJ0LnNlbGVjdHMpLmZvckVhY2goKFtzZWxlY3RUYWJsZU5hbWUsIHNlbGVjdFJvd3NdKSA9PiB7XG4gICAgICAgIHNlbGVjdFJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiByb3cucGFyZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcm93LnBhcmVudCA9IGluc2VydGVkUm93LmlkXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghc2VsZWN0c1RvSW5zZXJ0W3NlbGVjdFRhYmxlTmFtZV0pIHNlbGVjdHNUb0luc2VydFtzZWxlY3RUYWJsZU5hbWVdID0gW11cbiAgICAgICAgICBzZWxlY3RzVG9JbnNlcnRbc2VsZWN0VGFibGVOYW1lXS5wdXNoKHJvdylcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIGJsb2NrcywgYWRkIHBhcmVudCB0byBlYWNoLCBhbmQgdGhlblxuICAgIC8vIHN0b3JlIGJ5IHRhYmxlIG5hbWUgYW5kIHJvd3NcbiAgICBPYmplY3Qua2V5cyhyb3dUb0luc2VydC5ibG9ja3MpLmZvckVhY2goKGJsb2NrTmFtZSkgPT4ge1xuICAgICAgcm93VG9JbnNlcnQuYmxvY2tzW2Jsb2NrTmFtZV0uZm9yRWFjaCgoYmxvY2tSb3cpID0+IHtcbiAgICAgICAgYmxvY2tSb3cucm93Ll9wYXJlbnRJRCA9IGluc2VydGVkUm93LmlkXG4gICAgICAgIGlmICghYmxvY2tzVG9JbnNlcnRbYmxvY2tOYW1lXSkgYmxvY2tzVG9JbnNlcnRbYmxvY2tOYW1lXSA9IFtdXG4gICAgICAgIGlmIChibG9ja1Jvdy5yb3cudXVpZCkge1xuICAgICAgICAgIGRlbGV0ZSBibG9ja1Jvdy5yb3cudXVpZFxuICAgICAgICB9XG4gICAgICAgIGJsb2Nrc1RvSW5zZXJ0W2Jsb2NrTmFtZV0ucHVzaChibG9ja1JvdylcbiAgICAgIH0pXG4gICAgfSlcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBJTlNFUlQgTE9DQUxFU1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGlmIChsb2NhbGVzVG9JbnNlcnQubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgbG9jYWxlVGFibGUgPSBhZGFwdGVyLnRhYmxlc1tgJHt0YWJsZU5hbWV9X2xvY2FsZXNgXVxuXG4gICAgICBpZiAob3BlcmF0aW9uID09PSAndXBkYXRlJykge1xuICAgICAgICBhd2FpdCBkYi5kZWxldGUobG9jYWxlVGFibGUpLndoZXJlKGVxKGxvY2FsZVRhYmxlLl9wYXJlbnRJRCwgaW5zZXJ0ZWRSb3cuaWQpKVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBkYi5pbnNlcnQobG9jYWxlVGFibGUpLnZhbHVlcyhsb2NhbGVzVG9JbnNlcnQpXG4gICAgfVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIElOU0VSVCBSRUxBVElPTlNISVBTXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgY29uc3QgcmVsYXRpb25zaGlwc1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fcmVsc2BcblxuICAgIGlmIChvcGVyYXRpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgICBhd2FpdCBkZWxldGVFeGlzdGluZ1Jvd3NCeVBhdGgoe1xuICAgICAgICBhZGFwdGVyLFxuICAgICAgICBkYixcbiAgICAgICAgbG9jYWxlQ29sdW1uTmFtZTogJ2xvY2FsZScsXG4gICAgICAgIHBhcmVudENvbHVtbk5hbWU6ICdwYXJlbnQnLFxuICAgICAgICBwYXJlbnRJRDogaW5zZXJ0ZWRSb3cuaWQsXG4gICAgICAgIHBhdGhDb2x1bW5OYW1lOiAncGF0aCcsXG4gICAgICAgIHJvd3M6IFsuLi5yZWxhdGlvbnNUb0luc2VydCwgLi4ucm93VG9JbnNlcnQucmVsYXRpb25zaGlwc1RvRGVsZXRlXSxcbiAgICAgICAgdGFibGVOYW1lOiByZWxhdGlvbnNoaXBzVGFibGVOYW1lLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAocmVsYXRpb25zVG9JbnNlcnQubGVuZ3RoID4gMCkge1xuICAgICAgYXdhaXQgZGIuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW3JlbGF0aW9uc2hpcHNUYWJsZU5hbWVdKS52YWx1ZXMocmVsYXRpb25zVG9JbnNlcnQpXG4gICAgfVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIElOU0VSVCBoYXNNYW55IFRFWFRTXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgY29uc3QgdGV4dHNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X3RleHRzYFxuXG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIGF3YWl0IGRlbGV0ZUV4aXN0aW5nUm93c0J5UGF0aCh7XG4gICAgICAgIGFkYXB0ZXIsXG4gICAgICAgIGRiLFxuICAgICAgICBsb2NhbGVDb2x1bW5OYW1lOiAnbG9jYWxlJyxcbiAgICAgICAgcGFyZW50Q29sdW1uTmFtZTogJ3BhcmVudCcsXG4gICAgICAgIHBhcmVudElEOiBpbnNlcnRlZFJvdy5pZCxcbiAgICAgICAgcGF0aENvbHVtbk5hbWU6ICdwYXRoJyxcbiAgICAgICAgcm93czogdGV4dHNUb0luc2VydCxcbiAgICAgICAgdGFibGVOYW1lOiB0ZXh0c1RhYmxlTmFtZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHRleHRzVG9JbnNlcnQubGVuZ3RoID4gMCkge1xuICAgICAgYXdhaXQgZGIuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW3RleHRzVGFibGVOYW1lXSkudmFsdWVzKHRleHRzVG9JbnNlcnQpLnJldHVybmluZygpXG4gICAgfVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIElOU0VSVCBoYXNNYW55IE5VTUJFUlNcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBjb25zdCBudW1iZXJzVGFibGVOYW1lID0gYCR7dGFibGVOYW1lfV9udW1iZXJzYFxuXG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIGF3YWl0IGRlbGV0ZUV4aXN0aW5nUm93c0J5UGF0aCh7XG4gICAgICAgIGFkYXB0ZXIsXG4gICAgICAgIGRiLFxuICAgICAgICBsb2NhbGVDb2x1bW5OYW1lOiAnbG9jYWxlJyxcbiAgICAgICAgcGFyZW50Q29sdW1uTmFtZTogJ3BhcmVudCcsXG4gICAgICAgIHBhcmVudElEOiBpbnNlcnRlZFJvdy5pZCxcbiAgICAgICAgcGF0aENvbHVtbk5hbWU6ICdwYXRoJyxcbiAgICAgICAgcm93czogbnVtYmVyc1RvSW5zZXJ0LFxuICAgICAgICB0YWJsZU5hbWU6IG51bWJlcnNUYWJsZU5hbWUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChudW1iZXJzVG9JbnNlcnQubGVuZ3RoID4gMCkge1xuICAgICAgYXdhaXQgZGIuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW251bWJlcnNUYWJsZU5hbWVdKS52YWx1ZXMobnVtYmVyc1RvSW5zZXJ0KS5yZXR1cm5pbmcoKVxuICAgIH1cblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBJTlNFUlQgQkxPQ0tTXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgY29uc3QgaW5zZXJ0ZWRCbG9ja1Jvd3M6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+ID0ge31cblxuICAgIGlmIChvcGVyYXRpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgICBmb3IgKGNvbnN0IGJsb2NrTmFtZSBvZiByb3dUb0luc2VydC5ibG9ja3NUb0RlbGV0ZSkge1xuICAgICAgICBjb25zdCBibG9ja1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fYmxvY2tzXyR7YmxvY2tOYW1lfWBcbiAgICAgICAgY29uc3QgYmxvY2tUYWJsZSA9IGFkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXVxuICAgICAgICBhd2FpdCBkYi5kZWxldGUoYmxvY2tUYWJsZSkud2hlcmUoZXEoYmxvY2tUYWJsZS5fcGFyZW50SUQsIGluc2VydGVkUm93LmlkKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtibG9ja05hbWUsIGJsb2NrUm93c10gb2YgT2JqZWN0LmVudHJpZXMoYmxvY2tzVG9JbnNlcnQpKSB7XG4gICAgICBpbnNlcnRlZEJsb2NrUm93c1tibG9ja05hbWVdID0gYXdhaXQgZGJcbiAgICAgICAgLmluc2VydChhZGFwdGVyLnRhYmxlc1tgJHt0YWJsZU5hbWV9X2Jsb2Nrc18ke2Jsb2NrTmFtZX1gXSlcbiAgICAgICAgLnZhbHVlcyhibG9ja1Jvd3MubWFwKCh7IHJvdyB9KSA9PiByb3cpKVxuICAgICAgICAucmV0dXJuaW5nKClcblxuICAgICAgaW5zZXJ0ZWRCbG9ja1Jvd3NbYmxvY2tOYW1lXS5mb3JFYWNoKChyb3csIGkpID0+IHtcbiAgICAgICAgYmxvY2tSb3dzW2ldLnJvdyA9IHJvd1xuICAgICAgfSlcblxuICAgICAgY29uc3QgYmxvY2tMb2NhbGVJbmRleE1hcDogbnVtYmVyW10gPSBbXVxuXG4gICAgICBjb25zdCBibG9ja0xvY2FsZVJvd3NUb0luc2VydCA9IGJsb2NrUm93cy5yZWR1Y2UoKGFjYywgYmxvY2tSb3csIGkpID0+IHtcbiAgICAgICAgaWYgKE9iamVjdC5lbnRyaWVzKGJsb2NrUm93LmxvY2FsZXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhibG9ja1Jvdy5sb2NhbGVzKS5mb3JFYWNoKChbYmxvY2tMb2NhbGUsIGJsb2NrTG9jYWxlRGF0YV0pID0+IHtcbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhibG9ja0xvY2FsZURhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgYmxvY2tMb2NhbGVEYXRhLl9wYXJlbnRJRCA9IGJsb2NrUm93LnJvdy5pZFxuICAgICAgICAgICAgICBibG9ja0xvY2FsZURhdGEuX2xvY2FsZSA9IGJsb2NrTG9jYWxlXG4gICAgICAgICAgICAgIGFjYy5wdXNoKGJsb2NrTG9jYWxlRGF0YSlcbiAgICAgICAgICAgICAgYmxvY2tMb2NhbGVJbmRleE1hcC5wdXNoKGkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2NcbiAgICAgIH0sIFtdKVxuXG4gICAgICBpZiAoYmxvY2tMb2NhbGVSb3dzVG9JbnNlcnQubGVuZ3RoID4gMCkge1xuICAgICAgICBhd2FpdCBkYlxuICAgICAgICAgIC5pbnNlcnQoYWRhcHRlci50YWJsZXNbYCR7dGFibGVOYW1lfV9ibG9ja3NfJHtibG9ja05hbWV9X2xvY2FsZXNgXSlcbiAgICAgICAgICAudmFsdWVzKGJsb2NrTG9jYWxlUm93c1RvSW5zZXJ0KVxuICAgICAgICAgIC5yZXR1cm5pbmcoKVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBpbnNlcnRBcnJheXMoe1xuICAgICAgICBhZGFwdGVyLFxuICAgICAgICBhcnJheXM6IGJsb2NrUm93cy5tYXAoKHsgYXJyYXlzIH0pID0+IGFycmF5cyksXG4gICAgICAgIGRiLFxuICAgICAgICBwYXJlbnRSb3dzOiBpbnNlcnRlZEJsb2NrUm93c1tibG9ja05hbWVdLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gSU5TRVJUIEFSUkFZUyBSRUNVUlNJVkVMWVxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGlmIChvcGVyYXRpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgICBmb3IgKGNvbnN0IGFycmF5VGFibGVOYW1lIG9mIE9iamVjdC5rZXlzKHJvd1RvSW5zZXJ0LmFycmF5cykpIHtcbiAgICAgICAgYXdhaXQgZGVsZXRlRXhpc3RpbmdBcnJheVJvd3Moe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgZGIsXG4gICAgICAgICAgcGFyZW50SUQ6IGluc2VydGVkUm93LmlkLFxuICAgICAgICAgIHRhYmxlTmFtZTogYXJyYXlUYWJsZU5hbWUsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgYXdhaXQgaW5zZXJ0QXJyYXlzKHtcbiAgICAgIGFkYXB0ZXIsXG4gICAgICBhcnJheXM6IFtyb3dUb0luc2VydC5hcnJheXNdLFxuICAgICAgZGIsXG4gICAgICBwYXJlbnRSb3dzOiBbaW5zZXJ0ZWRSb3ddLFxuICAgIH0pXG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gSU5TRVJUIGhhc01hbnkgU0VMRUNUU1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGZvciAoY29uc3QgW3NlbGVjdFRhYmxlTmFtZSwgdGFibGVSb3dzXSBvZiBPYmplY3QuZW50cmllcyhzZWxlY3RzVG9JbnNlcnQpKSB7XG4gICAgICBjb25zdCBzZWxlY3RUYWJsZSA9IGFkYXB0ZXIudGFibGVzW3NlbGVjdFRhYmxlTmFtZV1cbiAgICAgIGlmIChvcGVyYXRpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgICAgIGF3YWl0IGRiLmRlbGV0ZShzZWxlY3RUYWJsZSkud2hlcmUoZXEoc2VsZWN0VGFibGUucGFyZW50LCBpbnNlcnRlZFJvdy5pZCkpXG4gICAgICB9XG4gICAgICBhd2FpdCBkYi5pbnNlcnQoc2VsZWN0VGFibGUpLnZhbHVlcyh0YWJsZVJvd3MpLnJldHVybmluZygpXG4gICAgfVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIEVycm9yIEhhbmRsaW5nXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IGVycm9yLmNvZGUgPT09ICcyMzUwNSdcbiAgICAgID8gbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZpZWxkOiBhZGFwdGVyLmZpZWxkQ29uc3RyYWludHNbdGFibGVOYW1lXVtlcnJvci5jb25zdHJhaW50XSxcbiAgICAgICAgICAgICAgbWVzc2FnZTogcmVxLnQoJ2Vycm9yOnZhbHVlTXVzdEJlVW5pcXVlJyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVxPy50ID8/IGkxOG5Jbml0KHJlcS5wYXlsb2FkLmNvbmZpZy5pMThuKS50LFxuICAgICAgICApXG4gICAgICA6IGVycm9yXG4gIH1cblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIFJFVFJJRVZFIE5FV0xZIFVQREFURUQgUk9XXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICBjb25zdCBmaW5kTWFueUFyZ3MgPSBidWlsZEZpbmRNYW55QXJncyh7XG4gICAgYWRhcHRlcixcbiAgICBkZXB0aDogMCxcbiAgICBmaWVsZHMsXG4gICAgdGFibGVOYW1lLFxuICB9KVxuXG4gIGZpbmRNYW55QXJncy53aGVyZSA9IGVxKGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsIGluc2VydGVkUm93LmlkKVxuXG4gIGNvbnN0IGRvYyA9IGF3YWl0IGRiLnF1ZXJ5W3RhYmxlTmFtZV0uZmluZEZpcnN0KGZpbmRNYW55QXJncylcblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIFRSQU5TRk9STSBEQVRBXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICBjb25zdCByZXN1bHQgPSB0cmFuc2Zvcm08VD4oe1xuICAgIGNvbmZpZzogYWRhcHRlci5wYXlsb2FkLmNvbmZpZyxcbiAgICBkYXRhOiBkb2MsXG4gICAgZmllbGRzLFxuICB9KVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiJdLCJuYW1lcyI6WyJ1cHNlcnRSb3ciLCJpZCIsImFkYXB0ZXIiLCJkYXRhIiwiZGIiLCJmaWVsZHMiLCJvcGVyYXRpb24iLCJwYXRoIiwicmVxIiwidGFibGVOYW1lIiwidXBzZXJ0VGFyZ2V0Iiwid2hlcmUiLCJyb3dUb0luc2VydCIsInRyYW5zZm9ybUZvcldyaXRlIiwiaW5zZXJ0ZWRSb3ciLCJ0YXJnZXQiLCJ0YWJsZXMiLCJyb3ciLCJpbnNlcnQiLCJ2YWx1ZXMiLCJvbkNvbmZsaWN0RG9VcGRhdGUiLCJzZXQiLCJyZXR1cm5pbmciLCJsb2NhbGVzVG9JbnNlcnQiLCJyZWxhdGlvbnNUb0luc2VydCIsInRleHRzVG9JbnNlcnQiLCJudW1iZXJzVG9JbnNlcnQiLCJibG9ja3NUb0luc2VydCIsInNlbGVjdHNUb0luc2VydCIsIk9iamVjdCIsImtleXMiLCJsb2NhbGVzIiwibGVuZ3RoIiwiZW50cmllcyIsImZvckVhY2giLCJsb2NhbGUiLCJsb2NhbGVSb3ciLCJfcGFyZW50SUQiLCJfbG9jYWxlIiwicHVzaCIsInJlbGF0aW9uc2hpcHMiLCJyZWxhdGlvbiIsInBhcmVudCIsInRleHRzIiwidGV4dFJvdyIsIm51bWJlcnMiLCJudW1iZXJSb3ciLCJzZWxlY3RzIiwic2VsZWN0VGFibGVOYW1lIiwic2VsZWN0Um93cyIsImJsb2NrcyIsImJsb2NrTmFtZSIsImJsb2NrUm93IiwidXVpZCIsImxvY2FsZVRhYmxlIiwiZGVsZXRlIiwiZXEiLCJyZWxhdGlvbnNoaXBzVGFibGVOYW1lIiwiZGVsZXRlRXhpc3RpbmdSb3dzQnlQYXRoIiwibG9jYWxlQ29sdW1uTmFtZSIsInBhcmVudENvbHVtbk5hbWUiLCJwYXJlbnRJRCIsInBhdGhDb2x1bW5OYW1lIiwicm93cyIsInJlbGF0aW9uc2hpcHNUb0RlbGV0ZSIsInRleHRzVGFibGVOYW1lIiwibnVtYmVyc1RhYmxlTmFtZSIsImluc2VydGVkQmxvY2tSb3dzIiwiYmxvY2tzVG9EZWxldGUiLCJibG9ja1RhYmxlTmFtZSIsImJsb2NrVGFibGUiLCJibG9ja1Jvd3MiLCJtYXAiLCJpIiwiYmxvY2tMb2NhbGVJbmRleE1hcCIsImJsb2NrTG9jYWxlUm93c1RvSW5zZXJ0IiwicmVkdWNlIiwiYWNjIiwiYmxvY2tMb2NhbGUiLCJibG9ja0xvY2FsZURhdGEiLCJpbnNlcnRBcnJheXMiLCJhcnJheXMiLCJwYXJlbnRSb3dzIiwiYXJyYXlUYWJsZU5hbWUiLCJkZWxldGVFeGlzdGluZ0FycmF5Um93cyIsInRhYmxlUm93cyIsInNlbGVjdFRhYmxlIiwiZXJyb3IiLCJjb2RlIiwiVmFsaWRhdGlvbkVycm9yIiwiZmllbGQiLCJmaWVsZENvbnN0cmFpbnRzIiwiY29uc3RyYWludCIsIm1lc3NhZ2UiLCJ0IiwiaTE4bkluaXQiLCJwYXlsb2FkIiwiY29uZmlnIiwiaTE4biIsImZpbmRNYW55QXJncyIsImJ1aWxkRmluZE1hbnlBcmdzIiwiZGVwdGgiLCJkb2MiLCJxdWVyeSIsImZpbmRGaXJzdCIsInJlc3VsdCIsInRyYW5zZm9ybSJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQWlCdkJBOzs7ZUFBQUE7Ozs0QkFkTTt3QkFDYTsyQkFDUDttQ0FLUztzQkFDUjt1QkFDUTt5Q0FDTTswQ0FDQzs4QkFDWjtBQUV0QixNQUFNQSxZQUFZLE9BQTZCLEVBQ3BEQyxFQUFFLEVBQ0ZDLE9BQU8sRUFDUEMsSUFBSSxFQUNKQyxFQUFFLEVBQ0ZDLE1BQU0sRUFDTkMsU0FBUyxFQUNUQyxPQUFPLEVBQUUsRUFDVEMsR0FBRyxFQUNIQyxTQUFTLEVBQ1RDLFlBQVksRUFDWkMsS0FBSyxFQUNBO0lBQ0wsc0RBQXNE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
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@payloadcms/db-postgres",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.3.0",
|
4
4
|
"description": "The officially supported Postgres database adapter for Payload",
|
5
5
|
"repository": "https://github.com/payloadcms/payload",
|
6
6
|
"license": "MIT",
|
@@ -25,8 +25,8 @@
|
|
25
25
|
"devDependencies": {
|
26
26
|
"@types/pg": "8.10.2",
|
27
27
|
"@types/to-snake-case": "1.0.0",
|
28
|
-
"@payloadcms/eslint-config": "1.
|
29
|
-
"payload": "2.
|
28
|
+
"@payloadcms/eslint-config": "1.1.0",
|
29
|
+
"payload": "2.7.0"
|
30
30
|
},
|
31
31
|
"peerDependencies": {
|
32
32
|
"payload": "^2.0.0"
|