@kepler.gl/reducers 3.3.0-alpha.16 → 3.3.0-alpha.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/column-edit-reconcile.js +100 -0
- package/dist/cjs/column-edit-updaters.spec.js +840 -0
- package/dist/cjs/combined-updaters.js +28 -9
- package/dist/cjs/dataset-ops-updaters.js +101 -15
- package/dist/cjs/dataset-ops-updaters.spec.js +129 -4
- package/dist/cjs/export-utils.js +118 -46
- package/dist/cjs/interaction-utils.js +11 -3
- package/dist/cjs/layer-utils.js +3 -2
- package/dist/cjs/ui-state-updaters.js +70 -26
- package/dist/cjs/ui-state.js +2 -2
- package/dist/cjs/vis-state-merger-text-label.spec.js +75 -0
- package/dist/cjs/vis-state-merger.js +65 -22
- package/dist/cjs/vis-state-updaters.js +811 -298
- package/dist/cjs/vis-state.js +2 -2
- package/dist/column-edit-reconcile.d.ts +4 -0
- package/dist/column-edit-updaters.spec.d.ts +1 -0
- package/dist/combined-updaters.d.ts +14 -4
- package/dist/composers.d.ts +13 -2
- package/dist/dataset-ops-updaters.d.ts +3 -0
- package/dist/esm/column-edit-reconcile.js +95 -0
- package/dist/esm/column-edit-updaters.spec.js +839 -0
- package/dist/esm/combined-updaters.js +29 -10
- package/dist/esm/dataset-ops-updaters.js +99 -16
- package/dist/esm/dataset-ops-updaters.spec.js +129 -4
- package/dist/esm/export-utils.js +117 -45
- package/dist/esm/interaction-utils.js +10 -3
- package/dist/esm/layer-utils.js +3 -2
- package/dist/esm/ui-state-updaters.js +69 -25
- package/dist/esm/ui-state.js +2 -2
- package/dist/esm/vis-state-merger-text-label.spec.js +74 -0
- package/dist/esm/vis-state-merger.js +66 -24
- package/dist/esm/vis-state-updaters.js +801 -306
- package/dist/esm/vis-state.js +2 -2
- package/dist/export-utils.d.ts +2 -2
- package/dist/interaction-utils.d.ts +4 -1
- package/dist/layer-utils.d.ts +1 -0
- package/dist/ui-state-updaters.d.ts +10 -0
- package/dist/vis-state-merger-text-label.spec.d.ts +1 -0
- package/dist/vis-state-merger.d.ts +10 -2
- package/dist/vis-state-updaters.d.ts +31 -9
- package/dist/vis-state.d.ts +4 -0
- package/package.json +17 -17
|
@@ -7,14 +7,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.addGroupByUpdater = addGroupByUpdater;
|
|
8
8
|
exports.addJoinUpdater = addJoinUpdater;
|
|
9
9
|
exports.addSpatialJoinUpdater = addSpatialJoinUpdater;
|
|
10
|
+
exports.addSuitabilityUpdater = addSuitabilityUpdater;
|
|
10
11
|
exports.executeGroupBy = executeGroupBy;
|
|
11
12
|
exports.executeJoin = executeJoin;
|
|
12
13
|
exports.executeSpatialJoin = executeSpatialJoin;
|
|
14
|
+
exports.executeSuitability = executeSuitability;
|
|
13
15
|
exports.removeDatasetOpUpdater = removeDatasetOpUpdater;
|
|
14
16
|
exports.removeOpsForDatasets = removeOpsForDatasets;
|
|
15
17
|
exports.setGroupByConfigUpdater = setGroupByConfigUpdater;
|
|
16
18
|
exports.setJoinConfigUpdater = setJoinConfigUpdater;
|
|
17
19
|
exports.setSpatialJoinConfigUpdater = setSpatialJoinConfigUpdater;
|
|
20
|
+
exports.setSuitabilityConfigUpdater = setSuitabilityConfigUpdater;
|
|
18
21
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
19
22
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
20
23
|
var _commonUtils = require("@kepler.gl/common-utils");
|
|
@@ -41,6 +44,9 @@ function defaultJoinLabel() {
|
|
|
41
44
|
function defaultSpatialJoinLabel(resultId) {
|
|
42
45
|
return "spatial-join-".concat(resultId);
|
|
43
46
|
}
|
|
47
|
+
function defaultSuitabilityLabel() {
|
|
48
|
+
return "suitability-".concat(randomTwoDigitSuffix());
|
|
49
|
+
}
|
|
44
50
|
function addGroupByUpdater(state, action) {
|
|
45
51
|
var dataset = state.datasets[action.dataId];
|
|
46
52
|
if (!(0, _table.isTabularDatasetForOps)(dataset)) {
|
|
@@ -60,7 +66,8 @@ function addGroupByUpdater(state, action) {
|
|
|
60
66
|
};
|
|
61
67
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
62
68
|
groupBys: [].concat((0, _toConsumableArray2["default"])(deactivateOps(state.groupBys)), [op]),
|
|
63
|
-
joins: deactivateOps(state.joins)
|
|
69
|
+
joins: deactivateOps(state.joins),
|
|
70
|
+
suitabilities: deactivateOps(state.suitabilities)
|
|
64
71
|
});
|
|
65
72
|
}
|
|
66
73
|
function setGroupByConfigUpdater(state, action) {
|
|
@@ -98,11 +105,8 @@ function executeGroupBy(state, action) {
|
|
|
98
105
|
});
|
|
99
106
|
return {
|
|
100
107
|
state: _objectSpread(_objectSpread({}, state), {}, {
|
|
101
|
-
groupBys: state.groupBys.
|
|
102
|
-
return item.id
|
|
103
|
-
isConfigActive: false,
|
|
104
|
-
error: null
|
|
105
|
-
}) : item;
|
|
108
|
+
groupBys: state.groupBys.filter(function (item) {
|
|
109
|
+
return item.id !== op.id;
|
|
106
110
|
})
|
|
107
111
|
}),
|
|
108
112
|
proto: proto
|
|
@@ -145,7 +149,8 @@ function addJoinUpdater(state, action) {
|
|
|
145
149
|
};
|
|
146
150
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
147
151
|
joins: [].concat((0, _toConsumableArray2["default"])(deactivateOps(state.joins)), [op]),
|
|
148
|
-
groupBys: deactivateOps(state.groupBys)
|
|
152
|
+
groupBys: deactivateOps(state.groupBys),
|
|
153
|
+
suitabilities: deactivateOps(state.suitabilities)
|
|
149
154
|
});
|
|
150
155
|
}
|
|
151
156
|
function setJoinConfigUpdater(state, action) {
|
|
@@ -187,11 +192,8 @@ function executeJoin(state, action) {
|
|
|
187
192
|
});
|
|
188
193
|
return {
|
|
189
194
|
state: _objectSpread(_objectSpread({}, state), {}, {
|
|
190
|
-
joins: state.joins.
|
|
191
|
-
return item.id
|
|
192
|
-
isConfigActive: false,
|
|
193
|
-
error: null
|
|
194
|
-
}) : item;
|
|
195
|
+
joins: state.joins.filter(function (item) {
|
|
196
|
+
return item.id !== op.id;
|
|
195
197
|
})
|
|
196
198
|
}),
|
|
197
199
|
proto: proto
|
|
@@ -245,7 +247,85 @@ function executeSpatialJoin(state, action) {
|
|
|
245
247
|
});
|
|
246
248
|
return {
|
|
247
249
|
state: _objectSpread(_objectSpread({}, state), {}, {
|
|
248
|
-
joins: state.joins.
|
|
250
|
+
joins: state.joins.filter(function (item) {
|
|
251
|
+
return item.id !== op.id;
|
|
252
|
+
})
|
|
253
|
+
}),
|
|
254
|
+
proto: proto
|
|
255
|
+
};
|
|
256
|
+
} catch (error) {
|
|
257
|
+
return {
|
|
258
|
+
state: setJoinConfigUpdater(state, {
|
|
259
|
+
id: action.id,
|
|
260
|
+
config: {
|
|
261
|
+
error: error instanceof Error ? error.message : String(error)
|
|
262
|
+
}
|
|
263
|
+
})
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
function addSuitabilityUpdater(state, action) {
|
|
268
|
+
var dataset = state.datasets[action.dataId];
|
|
269
|
+
if (!(0, _table.isTabularDatasetForOps)(dataset)) {
|
|
270
|
+
return state;
|
|
271
|
+
}
|
|
272
|
+
var op = {
|
|
273
|
+
id: (0, _commonUtils.generateHashId)(6),
|
|
274
|
+
dataId: action.dataId,
|
|
275
|
+
weights: (0, _table.defaultSuitabilityWeights)(dataset.fields),
|
|
276
|
+
weightStandardization: 'normalize',
|
|
277
|
+
dataStandardization: 'range',
|
|
278
|
+
outputFieldName: _table.DEFAULT_SUITABILITY_SCORE_FIELD,
|
|
279
|
+
resultId: (0, _commonUtils.generateHashId)(6),
|
|
280
|
+
resultLabel: defaultSuitabilityLabel(),
|
|
281
|
+
isConfigActive: true,
|
|
282
|
+
error: null
|
|
283
|
+
};
|
|
284
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
285
|
+
suitabilities: [].concat((0, _toConsumableArray2["default"])(deactivateOps(state.suitabilities)), [op]),
|
|
286
|
+
groupBys: deactivateOps(state.groupBys),
|
|
287
|
+
joins: deactivateOps(state.joins)
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
function setSuitabilityConfigUpdater(state, action) {
|
|
291
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
292
|
+
suitabilities: state.suitabilities.map(function (op) {
|
|
293
|
+
var _action$config$error3;
|
|
294
|
+
return op.id === action.id ? _objectSpread(_objectSpread(_objectSpread({}, op), action.config), {}, {
|
|
295
|
+
error: (_action$config$error3 = action.config.error) !== null && _action$config$error3 !== void 0 ? _action$config$error3 : null
|
|
296
|
+
}) : op;
|
|
297
|
+
})
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
function executeSuitability(state, action) {
|
|
301
|
+
var op = state.suitabilities.find(function (item) {
|
|
302
|
+
return item.id === action.id;
|
|
303
|
+
});
|
|
304
|
+
var dataset = op ? state.datasets[op.dataId] : undefined;
|
|
305
|
+
if (!op || !dataset || !Object.keys(op.weights).length) {
|
|
306
|
+
return {
|
|
307
|
+
state: setSuitabilityConfigUpdater(state, {
|
|
308
|
+
id: action.id,
|
|
309
|
+
config: {
|
|
310
|
+
error: 'Select at least one field to score'
|
|
311
|
+
}
|
|
312
|
+
})
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
try {
|
|
316
|
+
var proto = (0, _table.suitabilityDataset)(dataset, {
|
|
317
|
+
weights: op.weights,
|
|
318
|
+
weightStandardization: op.weightStandardization,
|
|
319
|
+
dataStandardization: op.dataStandardization,
|
|
320
|
+
outputFieldName: op.outputFieldName,
|
|
321
|
+
columns: op.columns,
|
|
322
|
+
label: op.resultLabel,
|
|
323
|
+
resultId: op.resultId,
|
|
324
|
+
operationId: op.id
|
|
325
|
+
});
|
|
326
|
+
return {
|
|
327
|
+
state: _objectSpread(_objectSpread({}, state), {}, {
|
|
328
|
+
suitabilities: state.suitabilities.map(function (item) {
|
|
249
329
|
return item.id === op.id ? _objectSpread(_objectSpread({}, item), {}, {
|
|
250
330
|
isConfigActive: false,
|
|
251
331
|
error: null
|
|
@@ -256,7 +336,7 @@ function executeSpatialJoin(state, action) {
|
|
|
256
336
|
};
|
|
257
337
|
} catch (error) {
|
|
258
338
|
return {
|
|
259
|
-
state:
|
|
339
|
+
state: setSuitabilityConfigUpdater(state, {
|
|
260
340
|
id: action.id,
|
|
261
341
|
config: {
|
|
262
342
|
error: error instanceof Error ? error.message : String(error)
|
|
@@ -272,6 +352,9 @@ function removeDatasetOpUpdater(state, action) {
|
|
|
272
352
|
}),
|
|
273
353
|
joins: state.joins.filter(function (op) {
|
|
274
354
|
return op.id !== action.id;
|
|
355
|
+
}),
|
|
356
|
+
suitabilities: state.suitabilities.filter(function (op) {
|
|
357
|
+
return op.id !== action.id;
|
|
275
358
|
})
|
|
276
359
|
});
|
|
277
360
|
}
|
|
@@ -283,7 +366,10 @@ function removeOpsForDatasets(state, dataIds) {
|
|
|
283
366
|
}),
|
|
284
367
|
joins: state.joins.filter(function (op) {
|
|
285
368
|
return !ids.has(op.leftDataId) && !(op.rightDataId && ids.has(op.rightDataId)) && !ids.has(op.resultId);
|
|
369
|
+
}),
|
|
370
|
+
suitabilities: state.suitabilities.filter(function (op) {
|
|
371
|
+
return !ids.has(op.dataId) && !ids.has(op.resultId);
|
|
286
372
|
})
|
|
287
373
|
});
|
|
288
374
|
}
|
|
289
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbW9uVXRpbHMiLCJyZXF1aXJlIiwiX3RhYmxlIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJkZWFjdGl2YXRlT3BzIiwib3BzIiwibWFwIiwib3AiLCJpc0NvbmZpZ0FjdGl2ZSIsInJhbmRvbVR3b0RpZ2l0U3VmZml4IiwiU3RyaW5nIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwicGFkU3RhcnQiLCJkZWZhdWx0R3JvdXBCeUxhYmVsIiwiY29uY2F0IiwiZGVmYXVsdEpvaW5MYWJlbCIsImRlZmF1bHRTcGF0aWFsSm9pbkxhYmVsIiwicmVzdWx0SWQiLCJhZGRHcm91cEJ5VXBkYXRlciIsInN0YXRlIiwiYWN0aW9uIiwiZGF0YXNldCIsImRhdGFzZXRzIiwiZGF0YUlkIiwiaXNUYWJ1bGFyRGF0YXNldEZvck9wcyIsImlkIiwiZ2VuZXJhdGVIYXNoSWQiLCJmaWVsZE5hbWUiLCJhZ2dyZWdhdGlvbnMiLCJkZWZhdWx0QWdncmVnYXRpb25zRm9yRmllbGRzIiwiZmllbGRzIiwicmVzdWx0TGFiZWwiLCJlcnJvciIsImdyb3VwQnlzIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImpvaW5zIiwic2V0R3JvdXBCeUNvbmZpZ1VwZGF0ZXIiLCJfYWN0aW9uJGNvbmZpZyRlcnJvciIsImNvbmZpZyIsImV4ZWN1dGVHcm91cEJ5IiwiZmluZCIsIml0ZW0iLCJ1bmRlZmluZWQiLCJwcm90byIsImdyb3VwQnlEYXRhc2V0IiwibGFiZWwiLCJvcGVyYXRpb25JZCIsIkVycm9yIiwibWVzc2FnZSIsImFkZEpvaW5VcGRhdGVyIiwiaW1wbGVtZW50YXRpb24iLCJsZWZ0RGF0YUlkIiwicmlnaHREYXRhSWQiLCJsZWZ0RmllbGQiLCJyaWdodEZpZWxkIiwidHlwZSIsImxlZnRHZW8iLCJzdWdnZXN0U3BhdGlhbEdlbyIsInJpZ2h0R2VvIiwicHJlZGljYXRlIiwic2V0Sm9pbkNvbmZpZ1VwZGF0ZXIiLCJfYWN0aW9uJGNvbmZpZyRlcnJvcjIiLCJleGVjdXRlSm9pbiIsImxlZnQiLCJyaWdodCIsImpvaW5EYXRhc2V0cyIsImxlZnRDb2x1bW5zIiwicmlnaHRDb2x1bW5zIiwiYWRkU3BhdGlhbEpvaW5VcGRhdGVyIiwic2V0U3BhdGlhbEpvaW5Db25maWdVcGRhdGVyIiwiZXhlY3V0ZVNwYXRpYWxKb2luIiwic3BhdGlhbEpvaW5EYXRhc2V0cyIsInJlbW92ZURhdGFzZXRPcFVwZGF0ZXIiLCJyZW1vdmVPcHNGb3JEYXRhc2V0cyIsImRhdGFJZHMiLCJpZHMiLCJTZXQiLCJoYXMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YXNldC1vcHMtdXBkYXRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtnZW5lcmF0ZUhhc2hJZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtcbiAgZGVmYXVsdEFnZ3JlZ2F0aW9uc0ZvckZpZWxkcyxcbiAgZ3JvdXBCeURhdGFzZXQsXG4gIGlzVGFidWxhckRhdGFzZXRGb3JPcHMsXG4gIGpvaW5EYXRhc2V0cyxcbiAgc3BhdGlhbEpvaW5EYXRhc2V0cyxcbiAgc3VnZ2VzdFNwYXRpYWxHZW8sXG4gIEdyb3VwQnlPcCxcbiAgSm9pbk9wXG59IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtQcm90b0RhdGFzZXR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtWaXNTdGF0ZUFjdGlvbnN9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge1Zpc1N0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3NjaGVtYXMnO1xuXG5leHBvcnQgdHlwZSBEZXJpdmVkRGF0YXNldE9wUmVzdWx0ID0ge1xuICBzdGF0ZTogVmlzU3RhdGU7XG4gIHByb3RvPzogUHJvdG9EYXRhc2V0O1xufTtcblxuZnVuY3Rpb24gZGVhY3RpdmF0ZU9wczxUIGV4dGVuZHMge2lzQ29uZmlnQWN0aXZlPzogYm9vbGVhbn0+KG9wczogVFtdKTogVFtdIHtcbiAgcmV0dXJuIG9wcy5tYXAob3AgPT4gKHsuLi5vcCwgaXNDb25maWdBY3RpdmU6IGZhbHNlfSkpO1xufVxuXG5mdW5jdGlvbiByYW5kb21Ud29EaWdpdFN1ZmZpeCgpOiBzdHJpbmcge1xuICByZXR1cm4gU3RyaW5nKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMCkpLnBhZFN0YXJ0KDIsICcwJyk7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRHcm91cEJ5TGFiZWwoKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBncm91cC1ieS0ke3JhbmRvbVR3b0RpZ2l0U3VmZml4KCl9YDtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdEpvaW5MYWJlbCgpOiBzdHJpbmcge1xuICByZXR1cm4gYGpvaW4tZGF0YXNldC0ke3JhbmRvbVR3b0RpZ2l0U3VmZml4KCl9YDtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFNwYXRpYWxKb2luTGFiZWwocmVzdWx0SWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgc3BhdGlhbC1qb2luLSR7cmVzdWx0SWR9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEdyb3VwQnlVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLkFkZEdyb3VwQnlVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSB7XG4gIGNvbnN0IGRhdGFzZXQgPSBzdGF0ZS5kYXRhc2V0c1thY3Rpb24uZGF0YUlkXTtcbiAgaWYgKCFpc1RhYnVsYXJEYXRhc2V0Rm9yT3BzKGRhdGFzZXQpKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIGNvbnN0IGlkID0gZ2VuZXJhdGVIYXNoSWQoNik7XG4gIGNvbnN0IHJlc3VsdElkID0gZ2VuZXJhdGVIYXNoSWQoNik7XG4gIGNvbnN0IG9wOiBHcm91cEJ5T3AgPSB7XG4gICAgaWQsXG4gICAgZGF0YUlkOiBhY3Rpb24uZGF0YUlkLFxuICAgIGZpZWxkTmFtZTogbnVsbCxcbiAgICBhZ2dyZWdhdGlvbnM6IGRlZmF1bHRBZ2dyZWdhdGlvbnNGb3JGaWVsZHMoZGF0YXNldC5maWVsZHMpLFxuICAgIHJlc3VsdElkLFxuICAgIHJlc3VsdExhYmVsOiBkZWZhdWx0R3JvdXBCeUxhYmVsKCksXG4gICAgaXNDb25maWdBY3RpdmU6IHRydWUsXG4gICAgZXJyb3I6IG51bGxcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBncm91cEJ5czogWy4uLmRlYWN0aXZhdGVPcHMoc3RhdGUuZ3JvdXBCeXMpLCBvcF0sXG4gICAgam9pbnM6IGRlYWN0aXZhdGVPcHMoc3RhdGUuam9pbnMpXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRHcm91cEJ5Q29uZmlnVXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5TZXRHcm91cEJ5Q29uZmlnVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGdyb3VwQnlzOiBzdGF0ZS5ncm91cEJ5cy5tYXAob3AgPT5cbiAgICAgIG9wLmlkID09PSBhY3Rpb24uaWQgPyB7Li4ub3AsIC4uLmFjdGlvbi5jb25maWcsIGVycm9yOiBhY3Rpb24uY29uZmlnLmVycm9yID8/IG51bGx9IDogb3BcbiAgICApXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGVjdXRlR3JvdXBCeShcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5SdW5Hcm91cEJ5VXBkYXRlckFjdGlvblxuKTogRGVyaXZlZERhdGFzZXRPcFJlc3VsdCB7XG4gIGNvbnN0IG9wID0gc3RhdGUuZ3JvdXBCeXMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGFjdGlvbi5pZCk7XG4gIGNvbnN0IGRhdGFzZXQgPSBvcCA/IHN0YXRlLmRhdGFzZXRzW29wLmRhdGFJZF0gOiB1bmRlZmluZWQ7XG4gIGlmICghb3AgfHwgIWRhdGFzZXQgfHwgIW9wLmZpZWxkTmFtZSkge1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZTogc2V0R3JvdXBCeUNvbmZpZ1VwZGF0ZXIoc3RhdGUsIHtcbiAgICAgICAgaWQ6IGFjdGlvbi5pZCxcbiAgICAgICAgY29uZmlnOiB7ZXJyb3I6ICdTZWxlY3QgYSBncm91cGluZyBmaWVsZCd9XG4gICAgICB9KVxuICAgIH07XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHByb3RvID0gZ3JvdXBCeURhdGFzZXQoZGF0YXNldCwge1xuICAgICAgZmllbGROYW1lOiBvcC5maWVsZE5hbWUsXG4gICAgICBhZ2dyZWdhdGlvbnM6IG9wLmFnZ3JlZ2F0aW9ucyxcbiAgICAgIGxhYmVsOiBvcC5yZXN1bHRMYWJlbCxcbiAgICAgIHJlc3VsdElkOiBvcC5yZXN1bHRJZCxcbiAgICAgIG9wZXJhdGlvbklkOiBvcC5pZFxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZToge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZ3JvdXBCeXM6IHN0YXRlLmdyb3VwQnlzLm1hcChpdGVtID0+XG4gICAgICAgICAgaXRlbS5pZCA9PT0gb3AuaWQgPyB7Li4uaXRlbSwgaXNDb25maWdBY3RpdmU6IGZhbHNlLCBlcnJvcjogbnVsbH0gOiBpdGVtXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBwcm90b1xuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlOiBzZXRHcm91cEJ5Q29uZmlnVXBkYXRlcihzdGF0ZSwge1xuICAgICAgICBpZDogYWN0aW9uLmlkLFxuICAgICAgICBjb25maWc6IHtlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfVxuICAgICAgfSlcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRKb2luVXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5BZGRKb2luVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICBjb25zdCBkYXRhc2V0ID0gc3RhdGUuZGF0YXNldHNbYWN0aW9uLmRhdGFJZF07XG4gIGlmICghaXNUYWJ1bGFyRGF0YXNldEZvck9wcyhkYXRhc2V0KSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBjb25zdCBpbXBsZW1lbnRhdGlvbiA9IGFjdGlvbi5pbXBsZW1lbnRhdGlvbiB8fCAnc2ltcGxlJztcbiAgY29uc3QgaWQgPSBnZW5lcmF0ZUhhc2hJZCg2KTtcbiAgY29uc3QgcmVzdWx0SWQgPSBnZW5lcmF0ZUhhc2hJZCg2KTtcbiAgY29uc3Qgb3A6IEpvaW5PcCA9IHtcbiAgICBpZCxcbiAgICBpbXBsZW1lbnRhdGlvbixcbiAgICBsZWZ0RGF0YUlkOiBhY3Rpb24uZGF0YUlkLFxuICAgIHJpZ2h0RGF0YUlkOiBudWxsLFxuICAgIGxlZnRGaWVsZDogbnVsbCxcbiAgICByaWdodEZpZWxkOiBudWxsLFxuICAgIHR5cGU6ICdMRUZUJyxcbiAgICBhZ2dyZWdhdGlvbnM6IHt9LFxuICAgIGxlZnRHZW86IGltcGxlbWVudGF0aW9uID09PSAnc3BhdGlhbCcgPyBzdWdnZXN0U3BhdGlhbEdlbyhkYXRhc2V0LmZpZWxkcykgOiBudWxsLFxuICAgIHJpZ2h0R2VvOiBudWxsLFxuICAgIHByZWRpY2F0ZTogaW1wbGVtZW50YXRpb24gPT09ICdzcGF0aWFsJyA/ICdpbnRlcnNlY3RzJyA6IHVuZGVmaW5lZCxcbiAgICByZXN1bHRJZCxcbiAgICByZXN1bHRMYWJlbDpcbiAgICAgIGltcGxlbWVudGF0aW9uID09PSAnc3BhdGlhbCcgPyBkZWZhdWx0U3BhdGlhbEpvaW5MYWJlbChyZXN1bHRJZCkgOiBkZWZhdWx0Sm9pbkxhYmVsKCksXG4gICAgaXNDb25maWdBY3RpdmU6IHRydWUsXG4gICAgZXJyb3I6IG51bGxcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBqb2luczogWy4uLmRlYWN0aXZhdGVPcHMoc3RhdGUuam9pbnMpLCBvcF0sXG4gICAgZ3JvdXBCeXM6IGRlYWN0aXZhdGVPcHMoc3RhdGUuZ3JvdXBCeXMpXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRKb2luQ29uZmlnVXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5TZXRKb2luQ29uZmlnVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGpvaW5zOiBzdGF0ZS5qb2lucy5tYXAob3AgPT5cbiAgICAgIG9wLmlkID09PSBhY3Rpb24uaWQgPyB7Li4ub3AsIC4uLmFjdGlvbi5jb25maWcsIGVycm9yOiBhY3Rpb24uY29uZmlnLmVycm9yID8/IG51bGx9IDogb3BcbiAgICApXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGVjdXRlSm9pbihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5SdW5Kb2luVXBkYXRlckFjdGlvblxuKTogRGVyaXZlZERhdGFzZXRPcFJlc3VsdCB7XG4gIGNvbnN0IG9wID0gc3RhdGUuam9pbnMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGFjdGlvbi5pZCAmJiBpdGVtLmltcGxlbWVudGF0aW9uICE9PSAnc3BhdGlhbCcpO1xuICBjb25zdCBsZWZ0ID0gb3AgPyBzdGF0ZS5kYXRhc2V0c1tvcC5sZWZ0RGF0YUlkXSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgcmlnaHQgPSBvcD8ucmlnaHREYXRhSWQgPyBzdGF0ZS5kYXRhc2V0c1tvcC5yaWdodERhdGFJZF0gOiB1bmRlZmluZWQ7XG4gIGlmICghb3AgfHwgIWxlZnQgfHwgIXJpZ2h0IHx8ICFvcC5sZWZ0RmllbGQgfHwgIW9wLnJpZ2h0RmllbGQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGU6IHNldEpvaW5Db25maWdVcGRhdGVyKHN0YXRlLCB7XG4gICAgICAgIGlkOiBhY3Rpb24uaWQsXG4gICAgICAgIGNvbmZpZzoge2Vycm9yOiAnU2VsZWN0IGRhdGFzZXRzIGFuZCBqb2luIGtleXMnfVxuICAgICAgfSlcbiAgICB9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBwcm90byA9IGpvaW5EYXRhc2V0cyhsZWZ0LCByaWdodCwge1xuICAgICAgbGVmdEZpZWxkOiBvcC5sZWZ0RmllbGQsXG4gICAgICByaWdodEZpZWxkOiBvcC5yaWdodEZpZWxkLFxuICAgICAgdHlwZTogb3AudHlwZSxcbiAgICAgIGxlZnRDb2x1bW5zOiBvcC5sZWZ0Q29sdW1ucyxcbiAgICAgIHJpZ2h0Q29sdW1uczogb3AucmlnaHRDb2x1bW5zLFxuICAgICAgbGFiZWw6IG9wLnJlc3VsdExhYmVsLFxuICAgICAgcmVzdWx0SWQ6IG9wLnJlc3VsdElkLFxuICAgICAgb3BlcmF0aW9uSWQ6IG9wLmlkXG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlOiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBqb2luczogc3RhdGUuam9pbnMubWFwKGl0ZW0gPT5cbiAgICAgICAgICBpdGVtLmlkID09PSBvcC5pZCA/IHsuLi5pdGVtLCBpc0NvbmZpZ0FjdGl2ZTogZmFsc2UsIGVycm9yOiBudWxsfSA6IGl0ZW1cbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHByb3RvXG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGU6IHNldEpvaW5Db25maWdVcGRhdGVyKHN0YXRlLCB7XG4gICAgICAgIGlkOiBhY3Rpb24uaWQsXG4gICAgICAgIGNvbmZpZzoge2Vycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9XG4gICAgICB9KVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFNwYXRpYWxKb2luVXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5BZGRTcGF0aWFsSm9pblVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlIHtcbiAgcmV0dXJuIGFkZEpvaW5VcGRhdGVyKHN0YXRlLCB7ZGF0YUlkOiBhY3Rpb24uZGF0YUlkLCBpbXBsZW1lbnRhdGlvbjogJ3NwYXRpYWwnfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRTcGF0aWFsSm9pbkNvbmZpZ1VwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuU2V0U3BhdGlhbEpvaW5Db25maWdVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSB7XG4gIHJldHVybiBzZXRKb2luQ29uZmlnVXBkYXRlcihzdGF0ZSwgYWN0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4ZWN1dGVTcGF0aWFsSm9pbihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5SdW5TcGF0aWFsSm9pblVwZGF0ZXJBY3Rpb25cbik6IERlcml2ZWREYXRhc2V0T3BSZXN1bHQge1xuICBjb25zdCBvcCA9IHN0YXRlLmpvaW5zLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBhY3Rpb24uaWQgJiYgaXRlbS5pbXBsZW1lbnRhdGlvbiA9PT0gJ3NwYXRpYWwnKTtcbiAgY29uc3QgbGVmdCA9IG9wID8gc3RhdGUuZGF0YXNldHNbb3AubGVmdERhdGFJZF0gOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHJpZ2h0ID0gb3A/LnJpZ2h0RGF0YUlkID8gc3RhdGUuZGF0YXNldHNbb3AucmlnaHREYXRhSWRdIDogdW5kZWZpbmVkO1xuICBpZiAoIW9wIHx8ICFsZWZ0IHx8ICFyaWdodCB8fCAhb3AubGVmdEdlbyB8fCAhb3AucmlnaHRHZW8pIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGU6IHNldEpvaW5Db25maWdVcGRhdGVyKHN0YXRlLCB7XG4gICAgICAgIGlkOiBhY3Rpb24uaWQsXG4gICAgICAgIGNvbmZpZzoge2Vycm9yOiAnU2VsZWN0IGRhdGFzZXRzIGFuZCBnZW9tZXRyeSBmaWVsZHMnfVxuICAgICAgfSlcbiAgICB9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBwcm90byA9IHNwYXRpYWxKb2luRGF0YXNldHMobGVmdCwgcmlnaHQsIHtcbiAgICAgIGxlZnRHZW86IG9wLmxlZnRHZW8sXG4gICAgICByaWdodEdlbzogb3AucmlnaHRHZW8sXG4gICAgICBhZ2dyZWdhdGlvbnM6IG9wLmFnZ3JlZ2F0aW9ucyxcbiAgICAgIGxlZnRDb2x1bW5zOiBvcC5sZWZ0Q29sdW1ucyxcbiAgICAgIHByZWRpY2F0ZTogb3AucHJlZGljYXRlIHx8ICdpbnRlcnNlY3RzJyxcbiAgICAgIGxhYmVsOiBvcC5yZXN1bHRMYWJlbCxcbiAgICAgIHJlc3VsdElkOiBvcC5yZXN1bHRJZCxcbiAgICAgIG9wZXJhdGlvbklkOiBvcC5pZFxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZToge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgam9pbnM6IHN0YXRlLmpvaW5zLm1hcChpdGVtID0+XG4gICAgICAgICAgaXRlbS5pZCA9PT0gb3AuaWQgPyB7Li4uaXRlbSwgaXNDb25maWdBY3RpdmU6IGZhbHNlLCBlcnJvcjogbnVsbH0gOiBpdGVtXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBwcm90b1xuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlOiBzZXRKb2luQ29uZmlnVXBkYXRlcihzdGF0ZSwge1xuICAgICAgICBpZDogYWN0aW9uLmlkLFxuICAgICAgICBjb25maWc6IHtlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfVxuICAgICAgfSlcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVEYXRhc2V0T3BVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLlJlbW92ZURhdGFzZXRPcFVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBncm91cEJ5czogc3RhdGUuZ3JvdXBCeXMuZmlsdGVyKG9wID0+IG9wLmlkICE9PSBhY3Rpb24uaWQpLFxuICAgIGpvaW5zOiBzdGF0ZS5qb2lucy5maWx0ZXIob3AgPT4gb3AuaWQgIT09IGFjdGlvbi5pZClcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU9wc0ZvckRhdGFzZXRzKHN0YXRlOiBWaXNTdGF0ZSwgZGF0YUlkczogc3RyaW5nW10pOiBWaXNTdGF0ZSB7XG4gIGNvbnN0IGlkcyA9IG5ldyBTZXQoZGF0YUlkcyk7XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgZ3JvdXBCeXM6IHN0YXRlLmdyb3VwQnlzLmZpbHRlcihvcCA9PiAhaWRzLmhhcyhvcC5kYXRhSWQpICYmICFpZHMuaGFzKG9wLnJlc3VsdElkKSksXG4gICAgam9pbnM6IHN0YXRlLmpvaW5zLmZpbHRlcihcbiAgICAgIG9wID0+XG4gICAgICAgICFpZHMuaGFzKG9wLmxlZnREYXRhSWQpICYmXG4gICAgICAgICEob3AucmlnaHREYXRhSWQgJiYgaWRzLmhhcyhvcC5yaWdodERhdGFJZCkpICYmXG4gICAgICAgICFpZHMuaGFzKG9wLnJlc3VsdElkKVxuICAgIClcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFlBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQVMwQixTQUFBRSxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFBSixDQUFBO0FBQUEsU0FBQVUsY0FBQVosQ0FBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEsVUFBQUMsQ0FBQSxXQUFBVyxTQUFBLENBQUFaLENBQUEsSUFBQVksU0FBQSxDQUFBWixDQUFBLFFBQUFBLENBQUEsT0FBQUYsT0FBQSxDQUFBSSxNQUFBLENBQUFELENBQUEsT0FBQWEsT0FBQSxXQUFBZCxDQUFBLFFBQUFlLGdCQUFBLGFBQUFoQixDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxDQUFBRCxDQUFBLFNBQUFFLE1BQUEsQ0FBQWMseUJBQUEsR0FBQWQsTUFBQSxDQUFBZSxnQkFBQSxDQUFBbEIsQ0FBQSxFQUFBRyxNQUFBLENBQUFjLHlCQUFBLENBQUFmLENBQUEsS0FBQUgsT0FBQSxDQUFBSSxNQUFBLENBQUFELENBQUEsR0FBQWEsT0FBQSxXQUFBZCxDQUFBLElBQUFFLE1BQUEsQ0FBQWdCLGNBQUEsQ0FBQW5CLENBQUEsRUFBQUMsQ0FBQSxFQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFOLENBQUEsRUFBQUQsQ0FBQSxpQkFBQUQsQ0FBQSxJQWIxQjtBQUNBO0FBc0JBLFNBQVNvQixhQUFhQSxDQUF1Q0MsR0FBUSxFQUFPO0VBQzFFLE9BQU9BLEdBQUcsQ0FBQ0MsR0FBRyxDQUFDLFVBQUFDLEVBQUU7SUFBQSxPQUFBWCxhQUFBLENBQUFBLGFBQUEsS0FBU1csRUFBRTtNQUFFQyxjQUFjLEVBQUU7SUFBSztFQUFBLENBQUUsQ0FBQztBQUN4RDtBQUVBLFNBQVNDLG9CQUFvQkEsQ0FBQSxFQUFXO0VBQ3RDLE9BQU9DLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDQyxLQUFLLENBQUNELElBQUksQ0FBQ0UsTUFBTSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztBQUNqRTtBQUVBLFNBQVNDLG1CQUFtQkEsQ0FBQSxFQUFXO0VBQ3JDLG1CQUFBQyxNQUFBLENBQW1CUCxvQkFBb0IsQ0FBQyxDQUFDO0FBQzNDO0FBRUEsU0FBU1EsZ0JBQWdCQSxDQUFBLEVBQVc7RUFDbEMsdUJBQUFELE1BQUEsQ0FBdUJQLG9CQUFvQixDQUFDLENBQUM7QUFDL0M7QUFFQSxTQUFTUyx1QkFBdUJBLENBQUNDLFFBQWdCLEVBQVU7RUFDekQsdUJBQUFILE1BQUEsQ0FBdUJHLFFBQVE7QUFDakM7QUFFTyxTQUFTQyxpQkFBaUJBLENBQy9CQyxLQUFlLEVBQ2ZDLE1BQStDLEVBQ3JDO0VBQ1YsSUFBTUMsT0FBTyxHQUFHRixLQUFLLENBQUNHLFFBQVEsQ0FBQ0YsTUFBTSxDQUFDRyxNQUFNLENBQUM7RUFDN0MsSUFBSSxDQUFDLElBQUFDLDZCQUFzQixFQUFDSCxPQUFPLENBQUMsRUFBRTtJQUNwQyxPQUFPRixLQUFLO0VBQ2Q7RUFDQSxJQUFNTSxFQUFFLEdBQUcsSUFBQUMsMkJBQWMsRUFBQyxDQUFDLENBQUM7RUFDNUIsSUFBTVQsUUFBUSxHQUFHLElBQUFTLDJCQUFjLEVBQUMsQ0FBQyxDQUFDO0VBQ2xDLElBQU1yQixFQUFhLEdBQUc7SUFDcEJvQixFQUFFLEVBQUZBLEVBQUU7SUFDRkYsTUFBTSxFQUFFSCxNQUFNLENBQUNHLE1BQU07SUFDckJJLFNBQVMsRUFBRSxJQUFJO0lBQ2ZDLFlBQVksRUFBRSxJQUFBQyxtQ0FBNEIsRUFBQ1IsT0FBTyxDQUFDUyxNQUFNLENBQUM7SUFDMURiLFFBQVEsRUFBUkEsUUFBUTtJQUNSYyxXQUFXLEVBQUVsQixtQkFBbUIsQ0FBQyxDQUFDO0lBQ2xDUCxjQUFjLEVBQUUsSUFBSTtJQUNwQjBCLEtBQUssRUFBRTtFQUNULENBQUM7RUFDRCxPQUFBdEMsYUFBQSxDQUFBQSxhQUFBLEtBQ0t5QixLQUFLO0lBQ1JjLFFBQVEsS0FBQW5CLE1BQUEsS0FBQW9CLG1CQUFBLGFBQU1oQyxhQUFhLENBQUNpQixLQUFLLENBQUNjLFFBQVEsQ0FBQyxJQUFFNUIsRUFBRSxFQUFDO0lBQ2hEOEIsS0FBSyxFQUFFakMsYUFBYSxDQUFDaUIsS0FBSyxDQUFDZ0IsS0FBSztFQUFDO0FBRXJDO0FBRU8sU0FBU0MsdUJBQXVCQSxDQUNyQ2pCLEtBQWUsRUFDZkMsTUFBcUQsRUFDM0M7RUFDVixPQUFBMUIsYUFBQSxDQUFBQSxhQUFBLEtBQ0t5QixLQUFLO0lBQ1JjLFFBQVEsRUFBRWQsS0FBSyxDQUFDYyxRQUFRLENBQUM3QixHQUFHLENBQUMsVUFBQUMsRUFBRTtNQUFBLElBQUFnQyxvQkFBQTtNQUFBLE9BQzdCaEMsRUFBRSxDQUFDb0IsRUFBRSxLQUFLTCxNQUFNLENBQUNLLEVBQUUsR0FBQS9CLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLEtBQU9XLEVBQUUsR0FBS2UsTUFBTSxDQUFDa0IsTUFBTTtRQUFFTixLQUFLLEdBQUFLLG9CQUFBLEdBQUVqQixNQUFNLENBQUNrQixNQUFNLENBQUNOLEtBQUssY0FBQUssb0JBQUEsY0FBQUEsb0JBQUEsR0FBSTtNQUFJLEtBQUloQyxFQUFFO0lBQUEsQ0FDMUY7RUFBQztBQUVMO0FBRU8sU0FBU2tDLGNBQWNBLENBQzVCcEIsS0FBZSxFQUNmQyxNQUErQyxFQUN2QjtFQUN4QixJQUFNZixFQUFFLEdBQUdjLEtBQUssQ0FBQ2MsUUFBUSxDQUFDTyxJQUFJLENBQUMsVUFBQUMsSUFBSTtJQUFBLE9BQUlBLElBQUksQ0FBQ2hCLEVBQUUsS0FBS0wsTUFBTSxDQUFDSyxFQUFFO0VBQUEsRUFBQztFQUM3RCxJQUFNSixPQUFPLEdBQUdoQixFQUFFLEdBQUdjLEtBQUssQ0FBQ0csUUFBUSxDQUFDakIsRUFBRSxDQUFDa0IsTUFBTSxDQUFDLEdBQUdtQixTQUFTO0VBQzFELElBQUksQ0FBQ3JDLEVBQUUsSUFBSSxDQUFDZ0IsT0FBTyxJQUFJLENBQUNoQixFQUFFLENBQUNzQixTQUFTLEVBQUU7SUFDcEMsT0FBTztNQUNMUixLQUFLLEVBQUVpQix1QkFBdUIsQ0FBQ2pCLEtBQUssRUFBRTtRQUNwQ00sRUFBRSxFQUFFTCxNQUFNLENBQUNLLEVBQUU7UUFDYmEsTUFBTSxFQUFFO1VBQUNOLEtBQUssRUFBRTtRQUF5QjtNQUMzQyxDQUFDO0lBQ0gsQ0FBQztFQUNIO0VBRUEsSUFBSTtJQUNGLElBQU1XLEtBQUssR0FBRyxJQUFBQyxxQkFBYyxFQUFDdkIsT0FBTyxFQUFFO01BQ3BDTSxTQUFTLEVBQUV0QixFQUFFLENBQUNzQixTQUFTO01BQ3ZCQyxZQUFZLEVBQUV2QixFQUFFLENBQUN1QixZQUFZO01BQzdCaUIsS0FBSyxFQUFFeEMsRUFBRSxDQUFDMEIsV0FBVztNQUNyQmQsUUFBUSxFQUFFWixFQUFFLENBQUNZLFFBQVE7TUFDckI2QixXQUFXLEVBQUV6QyxFQUFFLENBQUNvQjtJQUNsQixDQUFDLENBQUM7SUFDRixPQUFPO01BQ0xOLEtBQUssRUFBQXpCLGFBQUEsQ0FBQUEsYUFBQSxLQUNBeUIsS0FBSztRQUNSYyxRQUFRLEVBQUVkLEtBQUssQ0FBQ2MsUUFBUSxDQUFDN0IsR0FBRyxDQUFDLFVBQUFxQyxJQUFJO1VBQUEsT0FDL0JBLElBQUksQ0FBQ2hCLEVBQUUsS0FBS3BCLEVBQUUsQ0FBQ29CLEVBQUUsR0FBQS9CLGFBQUEsQ0FBQUEsYUFBQSxLQUFPK0MsSUFBSTtZQUFFbkMsY0FBYyxFQUFFLEtBQUs7WUFBRTBCLEtBQUssRUFBRTtVQUFJLEtBQUlTLElBQUk7UUFBQSxDQUMxRTtNQUFDLEVBQ0Y7TUFDREUsS0FBSyxFQUFMQTtJQUNGLENBQUM7RUFDSCxDQUFDLENBQUMsT0FBT1gsS0FBSyxFQUFFO0lBQ2QsT0FBTztNQUNMYixLQUFLLEVBQUVpQix1QkFBdUIsQ0FBQ2pCLEtBQUssRUFBRTtRQUNwQ00sRUFBRSxFQUFFTCxNQUFNLENBQUNLLEVBQUU7UUFDYmEsTUFBTSxFQUFFO1VBQUNOLEtBQUssRUFBRUEsS0FBSyxZQUFZZSxLQUFLLEdBQUdmLEtBQUssQ0FBQ2dCLE9BQU8sR0FBR3hDLE1BQU0sQ0FBQ3dCLEtBQUs7UUFBQztNQUN4RSxDQUFDO0lBQ0gsQ0FBQztFQUNIO0FBQ0Y7QUFFTyxTQUFTaUIsY0FBY0EsQ0FDNUI5QixLQUFlLEVBQ2ZDLE1BQTRDLEVBQ2xDO0VBQ1YsSUFBTUMsT0FBTyxHQUFHRixLQUFLLENBQUNHLFFBQVEsQ0FBQ0YsTUFBTSxDQUFDRyxNQUFNLENBQUM7RUFDN0MsSUFBSSxDQUFDLElBQUFDLDZCQUFzQixFQUFDSCxPQUFPLENBQUMsRUFBRTtJQUNwQyxPQUFPRixLQUFLO0VBQ2Q7RUFDQSxJQUFNK0IsY0FBYyxHQUFHOUIsTUFBTSxDQUFDOEIsY0FBYyxJQUFJLFFBQVE7RUFDeEQsSUFBTXpCLEVBQUUsR0FBRyxJQUFBQywyQkFBYyxFQUFDLENBQUMsQ0FBQztFQUM1QixJQUFNVCxRQUFRLEdBQUcsSUFBQVMsMkJBQWMsRUFBQyxDQUFDLENBQUM7RUFDbEMsSUFBTXJCLEVBQVUsR0FBRztJQUNqQm9CLEVBQUUsRUFBRkEsRUFBRTtJQUNGeUIsY0FBYyxFQUFkQSxjQUFjO0lBQ2RDLFVBQVUsRUFBRS9CLE1BQU0sQ0FBQ0csTUFBTTtJQUN6QjZCLFdBQVcsRUFBRSxJQUFJO0lBQ2pCQyxTQUFTLEVBQUUsSUFBSTtJQUNmQyxVQUFVLEVBQUUsSUFBSTtJQUNoQkMsSUFBSSxFQUFFLE1BQU07SUFDWjNCLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDaEI0QixPQUFPLEVBQUVOLGNBQWMsS0FBSyxTQUFTLEdBQUcsSUFBQU8sd0JBQWlCLEVBQUNwQyxPQUFPLENBQUNTLE1BQU0sQ0FBQyxHQUFHLElBQUk7SUFDaEY0QixRQUFRLEVBQUUsSUFBSTtJQUNkQyxTQUFTLEVBQUVULGNBQWMsS0FBSyxTQUFTLEdBQUcsWUFBWSxHQUFHUixTQUFTO0lBQ2xFekIsUUFBUSxFQUFSQSxRQUFRO0lBQ1JjLFdBQVcsRUFDVG1CLGNBQWMsS0FBSyxTQUFTLEdBQUdsQyx1QkFBdUIsQ0FBQ0MsUUFBUSxDQUFDLEdBQUdGLGdCQUFnQixDQUFDLENBQUM7SUFDdkZULGNBQWMsRUFBRSxJQUFJO0lBQ3BCMEIsS0FBSyxFQUFFO0VBQ1QsQ0FBQztFQUNELE9BQUF0QyxhQUFBLENBQUFBLGFBQUEsS0FDS3lCLEtBQUs7SUFDUmdCLEtBQUssS0FBQXJCLE1BQUEsS0FBQW9CLG1CQUFBLGFBQU1oQyxhQUFhLENBQUNpQixLQUFLLENBQUNnQixLQUFLLENBQUMsSUFBRTlCLEVBQUUsRUFBQztJQUMxQzRCLFFBQVEsRUFBRS9CLGFBQWEsQ0FBQ2lCLEtBQUssQ0FBQ2MsUUFBUTtFQUFDO0FBRTNDO0FBRU8sU0FBUzJCLG9CQUFvQkEsQ0FDbEN6QyxLQUFlLEVBQ2ZDLE1BQWtELEVBQ3hDO0VBQ1YsT0FBQTFCLGFBQUEsQ0FBQUEsYUFBQSxLQUNLeUIsS0FBSztJQUNSZ0IsS0FBSyxFQUFFaEIsS0FBSyxDQUFDZ0IsS0FBSyxDQUFDL0IsR0FBRyxDQUFDLFVBQUFDLEVBQUU7TUFBQSxJQUFBd0QscUJBQUE7TUFBQSxPQUN2QnhELEVBQUUsQ0FBQ29CLEVBQUUsS0FBS0wsTUFBTSxDQUFDSyxFQUFFLEdBQUEvQixhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxLQUFPVyxFQUFFLEdBQUtlLE1BQU0sQ0FBQ2tCLE1BQU07UUFBRU4sS0FBSyxHQUFBNkIscUJBQUEsR0FBRXpDLE1BQU0sQ0FBQ2tCLE1BQU0sQ0FBQ04sS0FBSyxjQUFBNkIscUJBQUEsY0FBQUEscUJBQUEsR0FBSTtNQUFJLEtBQUl4RCxFQUFFO0lBQUEsQ0FDMUY7RUFBQztBQUVMO0FBRU8sU0FBU3lELFdBQVdBLENBQ3pCM0MsS0FBZSxFQUNmQyxNQUE0QyxFQUNwQjtFQUN4QixJQUFNZixFQUFFLEdBQUdjLEtBQUssQ0FBQ2dCLEtBQUssQ0FBQ0ssSUFBSSxDQUFDLFVBQUFDLElBQUk7SUFBQSxPQUFJQSxJQUFJLENBQUNoQixFQUFFLEtBQUtMLE1BQU0sQ0FBQ0ssRUFBRSxJQUFJZ0IsSUFBSSxDQUFDUyxjQUFjLEtBQUssU0FBUztFQUFBLEVBQUM7RUFDL0YsSUFBTWEsSUFBSSxHQUFHMUQsRUFBRSxHQUFHYyxLQUFLLENBQUNHLFFBQVEsQ0FBQ2pCLEVBQUUsQ0FBQzhDLFVBQVUsQ0FBQyxHQUFHVCxTQUFTO0VBQzNELElBQU1zQixLQUFLLEdBQUczRCxFQUFFLGFBQUZBLEVBQUUsZUFBRkEsRUFBRSxDQUFFK0MsV0FBVyxHQUFHakMsS0FBSyxDQUFDRyxRQUFRLENBQUNqQixFQUFFLENBQUMrQyxXQUFXLENBQUMsR0FBR1YsU0FBUztFQUMxRSxJQUFJLENBQUNyQyxFQUFFLElBQUksQ0FBQzBELElBQUksSUFBSSxDQUFDQyxLQUFLLElBQUksQ0FBQzNELEVBQUUsQ0FBQ2dELFNBQVMsSUFBSSxDQUFDaEQsRUFBRSxDQUFDaUQsVUFBVSxFQUFFO0lBQzdELE9BQU87TUFDTG5DLEtBQUssRUFBRXlDLG9CQUFvQixDQUFDekMsS0FBSyxFQUFFO1FBQ2pDTSxFQUFFLEVBQUVMLE1BQU0sQ0FBQ0ssRUFBRTtRQUNiYSxNQUFNLEVBQUU7VUFBQ04sS0FBSyxFQUFFO1FBQStCO01BQ2pELENBQUM7SUFDSCxDQUFDO0VBQ0g7RUFFQSxJQUFJO0lBQ0YsSUFBTVcsS0FBSyxHQUFHLElBQUFzQixtQkFBWSxFQUFDRixJQUFJLEVBQUVDLEtBQUssRUFBRTtNQUN0Q1gsU0FBUyxFQUFFaEQsRUFBRSxDQUFDZ0QsU0FBUztNQUN2QkMsVUFBVSxFQUFFakQsRUFBRSxDQUFDaUQsVUFBVTtNQUN6QkMsSUFBSSxFQUFFbEQsRUFBRSxDQUFDa0QsSUFBSTtNQUNiVyxXQUFXLEVBQUU3RCxFQUFFLENBQUM2RCxXQUFXO01BQzNCQyxZQUFZLEVBQUU5RCxFQUFFLENBQUM4RCxZQUFZO01BQzdCdEIsS0FBSyxFQUFFeEMsRUFBRSxDQUFDMEIsV0FBVztNQUNyQmQsUUFBUSxFQUFFWixFQUFFLENBQUNZLFFBQVE7TUFDckI2QixXQUFXLEVBQUV6QyxFQUFFLENBQUNvQjtJQUNsQixDQUFDLENBQUM7SUFDRixPQUFPO01BQ0xOLEtBQUssRUFBQXpCLGFBQUEsQ0FBQUEsYUFBQSxLQUNBeUIsS0FBSztRQUNSZ0IsS0FBSyxFQUFFaEIsS0FBSyxDQUFDZ0IsS0FBSyxDQUFDL0IsR0FBRyxDQUFDLFVBQUFxQyxJQUFJO1VBQUEsT0FDekJBLElBQUksQ0FBQ2hCLEVBQUUsS0FBS3BCLEVBQUUsQ0FBQ29CLEVBQUUsR0FBQS9CLGFBQUEsQ0FBQUEsYUFBQSxLQUFPK0MsSUFBSTtZQUFFbkMsY0FBYyxFQUFFLEtBQUs7WUFBRTBCLEtBQUssRUFBRTtVQUFJLEtBQUlTLElBQUk7UUFBQSxDQUMxRTtNQUFDLEVBQ0Y7TUFDREUsS0FBSyxFQUFMQTtJQUNGLENBQUM7RUFDSCxDQUFDLENBQUMsT0FBT1gsS0FBSyxFQUFFO0lBQ2QsT0FBTztNQUNMYixLQUFLLEVBQUV5QyxvQkFBb0IsQ0FBQ3pDLEtBQUssRUFBRTtRQUNqQ00sRUFBRSxFQUFFTCxNQUFNLENBQUNLLEVBQUU7UUFDYmEsTUFBTSxFQUFFO1VBQUNOLEtBQUssRUFBRUEsS0FBSyxZQUFZZSxLQUFLLEdBQUdmLEtBQUssQ0FBQ2dCLE9BQU8sR0FBR3hDLE1BQU0sQ0FBQ3dCLEtBQUs7UUFBQztNQUN4RSxDQUFDO0lBQ0gsQ0FBQztFQUNIO0FBQ0Y7QUFFTyxTQUFTb0MscUJBQXFCQSxDQUNuQ2pELEtBQWUsRUFDZkMsTUFBbUQsRUFDekM7RUFDVixPQUFPNkIsY0FBYyxDQUFDOUIsS0FBSyxFQUFFO0lBQUNJLE1BQU0sRUFBRUgsTUFBTSxDQUFDRyxNQUFNO0lBQUUyQixjQUFjLEVBQUU7RUFBUyxDQUFDLENBQUM7QUFDbEY7QUFFTyxTQUFTbUIsMkJBQTJCQSxDQUN6Q2xELEtBQWUsRUFDZkMsTUFBeUQsRUFDL0M7RUFDVixPQUFPd0Msb0JBQW9CLENBQUN6QyxLQUFLLEVBQUVDLE1BQU0sQ0FBQztBQUM1QztBQUVPLFNBQVNrRCxrQkFBa0JBLENBQ2hDbkQsS0FBZSxFQUNmQyxNQUFtRCxFQUMzQjtFQUN4QixJQUFNZixFQUFFLEdBQUdjLEtBQUssQ0FBQ2dCLEtBQUssQ0FBQ0ssSUFBSSxDQUFDLFVBQUFDLElBQUk7SUFBQSxPQUFJQSxJQUFJLENBQUNoQixFQUFFLEtBQUtMLE1BQU0sQ0FBQ0ssRUFBRSxJQUFJZ0IsSUFBSSxDQUFDUyxjQUFjLEtBQUssU0FBUztFQUFBLEVBQUM7RUFDL0YsSUFBTWEsSUFBSSxHQUFHMUQsRUFBRSxHQUFHYyxLQUFLLENBQUNHLFFBQVEsQ0FBQ2pCLEVBQUUsQ0FBQzhDLFVBQVUsQ0FBQyxHQUFHVCxTQUFTO0VBQzNELElBQU1zQixLQUFLLEdBQUczRCxFQUFFLGFBQUZBLEVBQUUsZUFBRkEsRUFBRSxDQUFFK0MsV0FBVyxHQUFHakMsS0FBSyxDQUFDRyxRQUFRLENBQUNqQixFQUFFLENBQUMrQyxXQUFXLENBQUMsR0FBR1YsU0FBUztFQUMxRSxJQUFJLENBQUNyQyxFQUFFLElBQUksQ0FBQzBELElBQUksSUFBSSxDQUFDQyxLQUFLLElBQUksQ0FBQzNELEVBQUUsQ0FBQ21ELE9BQU8sSUFBSSxDQUFDbkQsRUFBRSxDQUFDcUQsUUFBUSxFQUFFO0lBQ3pELE9BQU87TUFDTHZDLEtBQUssRUFBRXlDLG9CQUFvQixDQUFDekMsS0FBSyxFQUFFO1FBQ2pDTSxFQUFFLEVBQUVMLE1BQU0sQ0FBQ0ssRUFBRTtRQUNiYSxNQUFNLEVBQUU7VUFBQ04sS0FBSyxFQUFFO1FBQXFDO01BQ3ZELENBQUM7SUFDSCxDQUFDO0VBQ0g7RUFFQSxJQUFJO0lBQ0YsSUFBTVcsS0FBSyxHQUFHLElBQUE0QiwwQkFBbUIsRUFBQ1IsSUFBSSxFQUFFQyxLQUFLLEVBQUU7TUFDN0NSLE9BQU8sRUFBRW5ELEVBQUUsQ0FBQ21ELE9BQU87TUFDbkJFLFFBQVEsRUFBRXJELEVBQUUsQ0FBQ3FELFFBQVE7TUFDckI5QixZQUFZLEVBQUV2QixFQUFFLENBQUN1QixZQUFZO01BQzdCc0MsV0FBVyxFQUFFN0QsRUFBRSxDQUFDNkQsV0FBVztNQUMzQlAsU0FBUyxFQUFFdEQsRUFBRSxDQUFDc0QsU0FBUyxJQUFJLFlBQVk7TUFDdkNkLEtBQUssRUFBRXhDLEVBQUUsQ0FBQzBCLFdBQVc7TUFDckJkLFFBQVEsRUFBRVosRUFBRSxDQUFDWSxRQUFRO01BQ3JCNkIsV0FBVyxFQUFFekMsRUFBRSxDQUFDb0I7SUFDbEIsQ0FBQyxDQUFDO0lBQ0YsT0FBTztNQUNMTixLQUFLLEVBQUF6QixhQUFBLENBQUFBLGFBQUEsS0FDQXlCLEtBQUs7UUFDUmdCLEtBQUssRUFBRWhCLEtBQUssQ0FBQ2dCLEtBQUssQ0FBQy9CLEdBQUcsQ0FBQyxVQUFBcUMsSUFBSTtVQUFBLE9BQ3pCQSxJQUFJLENBQUNoQixFQUFFLEtBQUtwQixFQUFFLENBQUNvQixFQUFFLEdBQUEvQixhQUFBLENBQUFBLGFBQUEsS0FBTytDLElBQUk7WUFBRW5DLGNBQWMsRUFBRSxLQUFLO1lBQUUwQixLQUFLLEVBQUU7VUFBSSxLQUFJUyxJQUFJO1FBQUEsQ0FDMUU7TUFBQyxFQUNGO01BQ0RFLEtBQUssRUFBTEE7SUFDRixDQUFDO0VBQ0gsQ0FBQyxDQUFDLE9BQU9YLEtBQUssRUFBRTtJQUNkLE9BQU87TUFDTGIsS0FBSyxFQUFFeUMsb0JBQW9CLENBQUN6QyxLQUFLLEVBQUU7UUFDakNNLEVBQUUsRUFBRUwsTUFBTSxDQUFDSyxFQUFFO1FBQ2JhLE1BQU0sRUFBRTtVQUFDTixLQUFLLEVBQUVBLEtBQUssWUFBWWUsS0FBSyxHQUFHZixLQUFLLENBQUNnQixPQUFPLEdBQUd4QyxNQUFNLENBQUN3QixLQUFLO1FBQUM7TUFDeEUsQ0FBQztJQUNILENBQUM7RUFDSDtBQUNGO0FBRU8sU0FBU3dDLHNCQUFzQkEsQ0FDcENyRCxLQUFlLEVBQ2ZDLE1BQW9ELEVBQzFDO0VBQ1YsT0FBQTFCLGFBQUEsQ0FBQUEsYUFBQSxLQUNLeUIsS0FBSztJQUNSYyxRQUFRLEVBQUVkLEtBQUssQ0FBQ2MsUUFBUSxDQUFDNUMsTUFBTSxDQUFDLFVBQUFnQixFQUFFO01BQUEsT0FBSUEsRUFBRSxDQUFDb0IsRUFBRSxLQUFLTCxNQUFNLENBQUNLLEVBQUU7SUFBQSxFQUFDO0lBQzFEVSxLQUFLLEVBQUVoQixLQUFLLENBQUNnQixLQUFLLENBQUM5QyxNQUFNLENBQUMsVUFBQWdCLEVBQUU7TUFBQSxPQUFJQSxFQUFFLENBQUNvQixFQUFFLEtBQUtMLE1BQU0sQ0FBQ0ssRUFBRTtJQUFBO0VBQUM7QUFFeEQ7QUFFTyxTQUFTZ0Qsb0JBQW9CQSxDQUFDdEQsS0FBZSxFQUFFdUQsT0FBaUIsRUFBWTtFQUNqRixJQUFNQyxHQUFHLEdBQUcsSUFBSUMsR0FBRyxDQUFDRixPQUFPLENBQUM7RUFDNUIsT0FBQWhGLGFBQUEsQ0FBQUEsYUFBQSxLQUNLeUIsS0FBSztJQUNSYyxRQUFRLEVBQUVkLEtBQUssQ0FBQ2MsUUFBUSxDQUFDNUMsTUFBTSxDQUFDLFVBQUFnQixFQUFFO01BQUEsT0FBSSxDQUFDc0UsR0FBRyxDQUFDRSxHQUFHLENBQUN4RSxFQUFFLENBQUNrQixNQUFNLENBQUMsSUFBSSxDQUFDb0QsR0FBRyxDQUFDRSxHQUFHLENBQUN4RSxFQUFFLENBQUNZLFFBQVEsQ0FBQztJQUFBLEVBQUM7SUFDbkZrQixLQUFLLEVBQUVoQixLQUFLLENBQUNnQixLQUFLLENBQUM5QyxNQUFNLENBQ3ZCLFVBQUFnQixFQUFFO01BQUEsT0FDQSxDQUFDc0UsR0FBRyxDQUFDRSxHQUFHLENBQUN4RSxFQUFFLENBQUM4QyxVQUFVLENBQUMsSUFDdkIsRUFBRTlDLEVBQUUsQ0FBQytDLFdBQVcsSUFBSXVCLEdBQUcsQ0FBQ0UsR0FBRyxDQUFDeEUsRUFBRSxDQUFDK0MsV0FBVyxDQUFDLENBQUMsSUFDNUMsQ0FBQ3VCLEdBQUcsQ0FBQ0UsR0FBRyxDQUFDeEUsRUFBRSxDQUFDWSxRQUFRLENBQUM7SUFBQSxDQUN6QjtFQUFDO0FBRUwiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
375
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbW9uVXRpbHMiLCJyZXF1aXJlIiwiX3RhYmxlIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJkZWFjdGl2YXRlT3BzIiwib3BzIiwibWFwIiwib3AiLCJpc0NvbmZpZ0FjdGl2ZSIsInJhbmRvbVR3b0RpZ2l0U3VmZml4IiwiU3RyaW5nIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwicGFkU3RhcnQiLCJkZWZhdWx0R3JvdXBCeUxhYmVsIiwiY29uY2F0IiwiZGVmYXVsdEpvaW5MYWJlbCIsImRlZmF1bHRTcGF0aWFsSm9pbkxhYmVsIiwicmVzdWx0SWQiLCJkZWZhdWx0U3VpdGFiaWxpdHlMYWJlbCIsImFkZEdyb3VwQnlVcGRhdGVyIiwic3RhdGUiLCJhY3Rpb24iLCJkYXRhc2V0IiwiZGF0YXNldHMiLCJkYXRhSWQiLCJpc1RhYnVsYXJEYXRhc2V0Rm9yT3BzIiwiaWQiLCJnZW5lcmF0ZUhhc2hJZCIsImZpZWxkTmFtZSIsImFnZ3JlZ2F0aW9ucyIsImRlZmF1bHRBZ2dyZWdhdGlvbnNGb3JGaWVsZHMiLCJmaWVsZHMiLCJyZXN1bHRMYWJlbCIsImVycm9yIiwiZ3JvdXBCeXMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiam9pbnMiLCJzdWl0YWJpbGl0aWVzIiwic2V0R3JvdXBCeUNvbmZpZ1VwZGF0ZXIiLCJfYWN0aW9uJGNvbmZpZyRlcnJvciIsImNvbmZpZyIsImV4ZWN1dGVHcm91cEJ5IiwiZmluZCIsIml0ZW0iLCJ1bmRlZmluZWQiLCJwcm90byIsImdyb3VwQnlEYXRhc2V0IiwibGFiZWwiLCJvcGVyYXRpb25JZCIsIkVycm9yIiwibWVzc2FnZSIsImFkZEpvaW5VcGRhdGVyIiwiaW1wbGVtZW50YXRpb24iLCJsZWZ0RGF0YUlkIiwicmlnaHREYXRhSWQiLCJsZWZ0RmllbGQiLCJyaWdodEZpZWxkIiwidHlwZSIsImxlZnRHZW8iLCJzdWdnZXN0U3BhdGlhbEdlbyIsInJpZ2h0R2VvIiwicHJlZGljYXRlIiwic2V0Sm9pbkNvbmZpZ1VwZGF0ZXIiLCJfYWN0aW9uJGNvbmZpZyRlcnJvcjIiLCJleGVjdXRlSm9pbiIsImxlZnQiLCJyaWdodCIsImpvaW5EYXRhc2V0cyIsImxlZnRDb2x1bW5zIiwicmlnaHRDb2x1bW5zIiwiYWRkU3BhdGlhbEpvaW5VcGRhdGVyIiwic2V0U3BhdGlhbEpvaW5Db25maWdVcGRhdGVyIiwiZXhlY3V0ZVNwYXRpYWxKb2luIiwic3BhdGlhbEpvaW5EYXRhc2V0cyIsImFkZFN1aXRhYmlsaXR5VXBkYXRlciIsIndlaWdodHMiLCJkZWZhdWx0U3VpdGFiaWxpdHlXZWlnaHRzIiwid2VpZ2h0U3RhbmRhcmRpemF0aW9uIiwiZGF0YVN0YW5kYXJkaXphdGlvbiIsIm91dHB1dEZpZWxkTmFtZSIsIkRFRkFVTFRfU1VJVEFCSUxJVFlfU0NPUkVfRklFTEQiLCJzZXRTdWl0YWJpbGl0eUNvbmZpZ1VwZGF0ZXIiLCJfYWN0aW9uJGNvbmZpZyRlcnJvcjMiLCJleGVjdXRlU3VpdGFiaWxpdHkiLCJzdWl0YWJpbGl0eURhdGFzZXQiLCJjb2x1bW5zIiwicmVtb3ZlRGF0YXNldE9wVXBkYXRlciIsInJlbW92ZU9wc0ZvckRhdGFzZXRzIiwiZGF0YUlkcyIsImlkcyIsIlNldCIsImhhcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhc2V0LW9wcy11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge2dlbmVyYXRlSGFzaElkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge1xuICBkZWZhdWx0QWdncmVnYXRpb25zRm9yRmllbGRzLFxuICBkZWZhdWx0U3VpdGFiaWxpdHlXZWlnaHRzLFxuICBncm91cEJ5RGF0YXNldCxcbiAgaXNUYWJ1bGFyRGF0YXNldEZvck9wcyxcbiAgam9pbkRhdGFzZXRzLFxuICBzcGF0aWFsSm9pbkRhdGFzZXRzLFxuICBzdWdnZXN0U3BhdGlhbEdlbyxcbiAgc3VpdGFiaWxpdHlEYXRhc2V0LFxuICBERUZBVUxUX1NVSVRBQklMSVRZX1NDT1JFX0ZJRUxELFxuICBHcm91cEJ5T3AsXG4gIEpvaW5PcCxcbiAgU3VpdGFiaWxpdHlPcFxufSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7UHJvdG9EYXRhc2V0fSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7VmlzU3RhdGVBY3Rpb25zfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtWaXNTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC9zY2hlbWFzJztcblxuZXhwb3J0IHR5cGUgRGVyaXZlZERhdGFzZXRPcFJlc3VsdCA9IHtcbiAgc3RhdGU6IFZpc1N0YXRlO1xuICBwcm90bz86IFByb3RvRGF0YXNldDtcbn07XG5cbmZ1bmN0aW9uIGRlYWN0aXZhdGVPcHM8VCBleHRlbmRzIHtpc0NvbmZpZ0FjdGl2ZT86IGJvb2xlYW59PihvcHM6IFRbXSk6IFRbXSB7XG4gIHJldHVybiBvcHMubWFwKG9wID0+ICh7Li4ub3AsIGlzQ29uZmlnQWN0aXZlOiBmYWxzZX0pKTtcbn1cblxuZnVuY3Rpb24gcmFuZG9tVHdvRGlnaXRTdWZmaXgoKTogc3RyaW5nIHtcbiAgcmV0dXJuIFN0cmluZyhNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDApKS5wYWRTdGFydCgyLCAnMCcpO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0R3JvdXBCeUxhYmVsKCk6IHN0cmluZyB7XG4gIHJldHVybiBgZ3JvdXAtYnktJHtyYW5kb21Ud29EaWdpdFN1ZmZpeCgpfWA7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRKb2luTGFiZWwoKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBqb2luLWRhdGFzZXQtJHtyYW5kb21Ud29EaWdpdFN1ZmZpeCgpfWA7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRTcGF0aWFsSm9pbkxhYmVsKHJlc3VsdElkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYHNwYXRpYWwtam9pbi0ke3Jlc3VsdElkfWA7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRTdWl0YWJpbGl0eUxhYmVsKCk6IHN0cmluZyB7XG4gIHJldHVybiBgc3VpdGFiaWxpdHktJHtyYW5kb21Ud29EaWdpdFN1ZmZpeCgpfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRHcm91cEJ5VXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5BZGRHcm91cEJ5VXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICBjb25zdCBkYXRhc2V0ID0gc3RhdGUuZGF0YXNldHNbYWN0aW9uLmRhdGFJZF07XG4gIGlmICghaXNUYWJ1bGFyRGF0YXNldEZvck9wcyhkYXRhc2V0KSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBjb25zdCBpZCA9IGdlbmVyYXRlSGFzaElkKDYpO1xuICBjb25zdCByZXN1bHRJZCA9IGdlbmVyYXRlSGFzaElkKDYpO1xuICBjb25zdCBvcDogR3JvdXBCeU9wID0ge1xuICAgIGlkLFxuICAgIGRhdGFJZDogYWN0aW9uLmRhdGFJZCxcbiAgICBmaWVsZE5hbWU6IG51bGwsXG4gICAgYWdncmVnYXRpb25zOiBkZWZhdWx0QWdncmVnYXRpb25zRm9yRmllbGRzKGRhdGFzZXQuZmllbGRzKSxcbiAgICByZXN1bHRJZCxcbiAgICByZXN1bHRMYWJlbDogZGVmYXVsdEdyb3VwQnlMYWJlbCgpLFxuICAgIGlzQ29uZmlnQWN0aXZlOiB0cnVlLFxuICAgIGVycm9yOiBudWxsXG4gIH07XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgZ3JvdXBCeXM6IFsuLi5kZWFjdGl2YXRlT3BzKHN0YXRlLmdyb3VwQnlzKSwgb3BdLFxuICAgIGpvaW5zOiBkZWFjdGl2YXRlT3BzKHN0YXRlLmpvaW5zKSxcbiAgICBzdWl0YWJpbGl0aWVzOiBkZWFjdGl2YXRlT3BzKHN0YXRlLnN1aXRhYmlsaXRpZXMpXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRHcm91cEJ5Q29uZmlnVXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5TZXRHcm91cEJ5Q29uZmlnVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGdyb3VwQnlzOiBzdGF0ZS5ncm91cEJ5cy5tYXAob3AgPT5cbiAgICAgIG9wLmlkID09PSBhY3Rpb24uaWQgPyB7Li4ub3AsIC4uLmFjdGlvbi5jb25maWcsIGVycm9yOiBhY3Rpb24uY29uZmlnLmVycm9yID8/IG51bGx9IDogb3BcbiAgICApXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGVjdXRlR3JvdXBCeShcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5SdW5Hcm91cEJ5VXBkYXRlckFjdGlvblxuKTogRGVyaXZlZERhdGFzZXRPcFJlc3VsdCB7XG4gIGNvbnN0IG9wID0gc3RhdGUuZ3JvdXBCeXMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGFjdGlvbi5pZCk7XG4gIGNvbnN0IGRhdGFzZXQgPSBvcCA/IHN0YXRlLmRhdGFzZXRzW29wLmRhdGFJZF0gOiB1bmRlZmluZWQ7XG4gIGlmICghb3AgfHwgIWRhdGFzZXQgfHwgIW9wLmZpZWxkTmFtZSkge1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZTogc2V0R3JvdXBCeUNvbmZpZ1VwZGF0ZXIoc3RhdGUsIHtcbiAgICAgICAgaWQ6IGFjdGlvbi5pZCxcbiAgICAgICAgY29uZmlnOiB7ZXJyb3I6ICdTZWxlY3QgYSBncm91cGluZyBmaWVsZCd9XG4gICAgICB9KVxuICAgIH07XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHByb3RvID0gZ3JvdXBCeURhdGFzZXQoZGF0YXNldCwge1xuICAgICAgZmllbGROYW1lOiBvcC5maWVsZE5hbWUsXG4gICAgICBhZ2dyZWdhdGlvbnM6IG9wLmFnZ3JlZ2F0aW9ucyxcbiAgICAgIGxhYmVsOiBvcC5yZXN1bHRMYWJlbCxcbiAgICAgIHJlc3VsdElkOiBvcC5yZXN1bHRJZCxcbiAgICAgIG9wZXJhdGlvbklkOiBvcC5pZFxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZToge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZ3JvdXBCeXM6IHN0YXRlLmdyb3VwQnlzLmZpbHRlcihpdGVtID0+IGl0ZW0uaWQgIT09IG9wLmlkKVxuICAgICAgfSxcbiAgICAgIHByb3RvXG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGU6IHNldEdyb3VwQnlDb25maWdVcGRhdGVyKHN0YXRlLCB7XG4gICAgICAgIGlkOiBhY3Rpb24uaWQsXG4gICAgICAgIGNvbmZpZzoge2Vycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9XG4gICAgICB9KVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEpvaW5VcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLkFkZEpvaW5VcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSB7XG4gIGNvbnN0IGRhdGFzZXQgPSBzdGF0ZS5kYXRhc2V0c1thY3Rpb24uZGF0YUlkXTtcbiAgaWYgKCFpc1RhYnVsYXJEYXRhc2V0Rm9yT3BzKGRhdGFzZXQpKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIGNvbnN0IGltcGxlbWVudGF0aW9uID0gYWN0aW9uLmltcGxlbWVudGF0aW9uIHx8ICdzaW1wbGUnO1xuICBjb25zdCBpZCA9IGdlbmVyYXRlSGFzaElkKDYpO1xuICBjb25zdCByZXN1bHRJZCA9IGdlbmVyYXRlSGFzaElkKDYpO1xuICBjb25zdCBvcDogSm9pbk9wID0ge1xuICAgIGlkLFxuICAgIGltcGxlbWVudGF0aW9uLFxuICAgIGxlZnREYXRhSWQ6IGFjdGlvbi5kYXRhSWQsXG4gICAgcmlnaHREYXRhSWQ6IG51bGwsXG4gICAgbGVmdEZpZWxkOiBudWxsLFxuICAgIHJpZ2h0RmllbGQ6IG51bGwsXG4gICAgdHlwZTogJ0xFRlQnLFxuICAgIGFnZ3JlZ2F0aW9uczoge30sXG4gICAgbGVmdEdlbzogaW1wbGVtZW50YXRpb24gPT09ICdzcGF0aWFsJyA/IHN1Z2dlc3RTcGF0aWFsR2VvKGRhdGFzZXQuZmllbGRzKSA6IG51bGwsXG4gICAgcmlnaHRHZW86IG51bGwsXG4gICAgcHJlZGljYXRlOiBpbXBsZW1lbnRhdGlvbiA9PT0gJ3NwYXRpYWwnID8gJ2ludGVyc2VjdHMnIDogdW5kZWZpbmVkLFxuICAgIHJlc3VsdElkLFxuICAgIHJlc3VsdExhYmVsOlxuICAgICAgaW1wbGVtZW50YXRpb24gPT09ICdzcGF0aWFsJyA/IGRlZmF1bHRTcGF0aWFsSm9pbkxhYmVsKHJlc3VsdElkKSA6IGRlZmF1bHRKb2luTGFiZWwoKSxcbiAgICBpc0NvbmZpZ0FjdGl2ZTogdHJ1ZSxcbiAgICBlcnJvcjogbnVsbFxuICB9O1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGpvaW5zOiBbLi4uZGVhY3RpdmF0ZU9wcyhzdGF0ZS5qb2lucyksIG9wXSxcbiAgICBncm91cEJ5czogZGVhY3RpdmF0ZU9wcyhzdGF0ZS5ncm91cEJ5cyksXG4gICAgc3VpdGFiaWxpdGllczogZGVhY3RpdmF0ZU9wcyhzdGF0ZS5zdWl0YWJpbGl0aWVzKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0Sm9pbkNvbmZpZ1VwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuU2V0Sm9pbkNvbmZpZ1VwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBqb2luczogc3RhdGUuam9pbnMubWFwKG9wID0+XG4gICAgICBvcC5pZCA9PT0gYWN0aW9uLmlkID8gey4uLm9wLCAuLi5hY3Rpb24uY29uZmlnLCBlcnJvcjogYWN0aW9uLmNvbmZpZy5lcnJvciA/PyBudWxsfSA6IG9wXG4gICAgKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhlY3V0ZUpvaW4oXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuUnVuSm9pblVwZGF0ZXJBY3Rpb25cbik6IERlcml2ZWREYXRhc2V0T3BSZXN1bHQge1xuICBjb25zdCBvcCA9IHN0YXRlLmpvaW5zLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBhY3Rpb24uaWQgJiYgaXRlbS5pbXBsZW1lbnRhdGlvbiAhPT0gJ3NwYXRpYWwnKTtcbiAgY29uc3QgbGVmdCA9IG9wID8gc3RhdGUuZGF0YXNldHNbb3AubGVmdERhdGFJZF0gOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHJpZ2h0ID0gb3A/LnJpZ2h0RGF0YUlkID8gc3RhdGUuZGF0YXNldHNbb3AucmlnaHREYXRhSWRdIDogdW5kZWZpbmVkO1xuICBpZiAoIW9wIHx8ICFsZWZ0IHx8ICFyaWdodCB8fCAhb3AubGVmdEZpZWxkIHx8ICFvcC5yaWdodEZpZWxkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlOiBzZXRKb2luQ29uZmlnVXBkYXRlcihzdGF0ZSwge1xuICAgICAgICBpZDogYWN0aW9uLmlkLFxuICAgICAgICBjb25maWc6IHtlcnJvcjogJ1NlbGVjdCBkYXRhc2V0cyBhbmQgam9pbiBrZXlzJ31cbiAgICAgIH0pXG4gICAgfTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcHJvdG8gPSBqb2luRGF0YXNldHMobGVmdCwgcmlnaHQsIHtcbiAgICAgIGxlZnRGaWVsZDogb3AubGVmdEZpZWxkLFxuICAgICAgcmlnaHRGaWVsZDogb3AucmlnaHRGaWVsZCxcbiAgICAgIHR5cGU6IG9wLnR5cGUsXG4gICAgICBsZWZ0Q29sdW1uczogb3AubGVmdENvbHVtbnMsXG4gICAgICByaWdodENvbHVtbnM6IG9wLnJpZ2h0Q29sdW1ucyxcbiAgICAgIGxhYmVsOiBvcC5yZXN1bHRMYWJlbCxcbiAgICAgIHJlc3VsdElkOiBvcC5yZXN1bHRJZCxcbiAgICAgIG9wZXJhdGlvbklkOiBvcC5pZFxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZToge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgam9pbnM6IHN0YXRlLmpvaW5zLmZpbHRlcihpdGVtID0+IGl0ZW0uaWQgIT09IG9wLmlkKVxuICAgICAgfSxcbiAgICAgIHByb3RvXG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGU6IHNldEpvaW5Db25maWdVcGRhdGVyKHN0YXRlLCB7XG4gICAgICAgIGlkOiBhY3Rpb24uaWQsXG4gICAgICAgIGNvbmZpZzoge2Vycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9XG4gICAgICB9KVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFNwYXRpYWxKb2luVXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5BZGRTcGF0aWFsSm9pblVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlIHtcbiAgcmV0dXJuIGFkZEpvaW5VcGRhdGVyKHN0YXRlLCB7ZGF0YUlkOiBhY3Rpb24uZGF0YUlkLCBpbXBsZW1lbnRhdGlvbjogJ3NwYXRpYWwnfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRTcGF0aWFsSm9pbkNvbmZpZ1VwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuU2V0U3BhdGlhbEpvaW5Db25maWdVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSB7XG4gIHJldHVybiBzZXRKb2luQ29uZmlnVXBkYXRlcihzdGF0ZSwgYWN0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4ZWN1dGVTcGF0aWFsSm9pbihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5SdW5TcGF0aWFsSm9pblVwZGF0ZXJBY3Rpb25cbik6IERlcml2ZWREYXRhc2V0T3BSZXN1bHQge1xuICBjb25zdCBvcCA9IHN0YXRlLmpvaW5zLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBhY3Rpb24uaWQgJiYgaXRlbS5pbXBsZW1lbnRhdGlvbiA9PT0gJ3NwYXRpYWwnKTtcbiAgY29uc3QgbGVmdCA9IG9wID8gc3RhdGUuZGF0YXNldHNbb3AubGVmdERhdGFJZF0gOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHJpZ2h0ID0gb3A/LnJpZ2h0RGF0YUlkID8gc3RhdGUuZGF0YXNldHNbb3AucmlnaHREYXRhSWRdIDogdW5kZWZpbmVkO1xuICBpZiAoIW9wIHx8ICFsZWZ0IHx8ICFyaWdodCB8fCAhb3AubGVmdEdlbyB8fCAhb3AucmlnaHRHZW8pIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGU6IHNldEpvaW5Db25maWdVcGRhdGVyKHN0YXRlLCB7XG4gICAgICAgIGlkOiBhY3Rpb24uaWQsXG4gICAgICAgIGNvbmZpZzoge2Vycm9yOiAnU2VsZWN0IGRhdGFzZXRzIGFuZCBnZW9tZXRyeSBmaWVsZHMnfVxuICAgICAgfSlcbiAgICB9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBwcm90byA9IHNwYXRpYWxKb2luRGF0YXNldHMobGVmdCwgcmlnaHQsIHtcbiAgICAgIGxlZnRHZW86IG9wLmxlZnRHZW8sXG4gICAgICByaWdodEdlbzogb3AucmlnaHRHZW8sXG4gICAgICBhZ2dyZWdhdGlvbnM6IG9wLmFnZ3JlZ2F0aW9ucyxcbiAgICAgIGxlZnRDb2x1bW5zOiBvcC5sZWZ0Q29sdW1ucyxcbiAgICAgIHByZWRpY2F0ZTogb3AucHJlZGljYXRlIHx8ICdpbnRlcnNlY3RzJyxcbiAgICAgIGxhYmVsOiBvcC5yZXN1bHRMYWJlbCxcbiAgICAgIHJlc3VsdElkOiBvcC5yZXN1bHRJZCxcbiAgICAgIG9wZXJhdGlvbklkOiBvcC5pZFxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZToge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgam9pbnM6IHN0YXRlLmpvaW5zLmZpbHRlcihpdGVtID0+IGl0ZW0uaWQgIT09IG9wLmlkKVxuICAgICAgfSxcbiAgICAgIHByb3RvXG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGU6IHNldEpvaW5Db25maWdVcGRhdGVyKHN0YXRlLCB7XG4gICAgICAgIGlkOiBhY3Rpb24uaWQsXG4gICAgICAgIGNvbmZpZzoge2Vycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9XG4gICAgICB9KVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFN1aXRhYmlsaXR5VXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5BZGRTdWl0YWJpbGl0eVVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlIHtcbiAgY29uc3QgZGF0YXNldCA9IHN0YXRlLmRhdGFzZXRzW2FjdGlvbi5kYXRhSWRdO1xuICBpZiAoIWlzVGFidWxhckRhdGFzZXRGb3JPcHMoZGF0YXNldCkpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgY29uc3Qgb3A6IFN1aXRhYmlsaXR5T3AgPSB7XG4gICAgaWQ6IGdlbmVyYXRlSGFzaElkKDYpLFxuICAgIGRhdGFJZDogYWN0aW9uLmRhdGFJZCxcbiAgICB3ZWlnaHRzOiBkZWZhdWx0U3VpdGFiaWxpdHlXZWlnaHRzKGRhdGFzZXQuZmllbGRzKSxcbiAgICB3ZWlnaHRTdGFuZGFyZGl6YXRpb246ICdub3JtYWxpemUnLFxuICAgIGRhdGFTdGFuZGFyZGl6YXRpb246ICdyYW5nZScsXG4gICAgb3V0cHV0RmllbGROYW1lOiBERUZBVUxUX1NVSVRBQklMSVRZX1NDT1JFX0ZJRUxELFxuICAgIHJlc3VsdElkOiBnZW5lcmF0ZUhhc2hJZCg2KSxcbiAgICByZXN1bHRMYWJlbDogZGVmYXVsdFN1aXRhYmlsaXR5TGFiZWwoKSxcbiAgICBpc0NvbmZpZ0FjdGl2ZTogdHJ1ZSxcbiAgICBlcnJvcjogbnVsbFxuICB9O1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHN1aXRhYmlsaXRpZXM6IFsuLi5kZWFjdGl2YXRlT3BzKHN0YXRlLnN1aXRhYmlsaXRpZXMpLCBvcF0sXG4gICAgZ3JvdXBCeXM6IGRlYWN0aXZhdGVPcHMoc3RhdGUuZ3JvdXBCeXMpLFxuICAgIGpvaW5zOiBkZWFjdGl2YXRlT3BzKHN0YXRlLmpvaW5zKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0U3VpdGFiaWxpdHlDb25maWdVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLlNldFN1aXRhYmlsaXR5Q29uZmlnVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHN1aXRhYmlsaXRpZXM6IHN0YXRlLnN1aXRhYmlsaXRpZXMubWFwKG9wID0+XG4gICAgICBvcC5pZCA9PT0gYWN0aW9uLmlkID8gey4uLm9wLCAuLi5hY3Rpb24uY29uZmlnLCBlcnJvcjogYWN0aW9uLmNvbmZpZy5lcnJvciA/PyBudWxsfSA6IG9wXG4gICAgKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhlY3V0ZVN1aXRhYmlsaXR5KFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLlJ1blN1aXRhYmlsaXR5VXBkYXRlckFjdGlvblxuKTogRGVyaXZlZERhdGFzZXRPcFJlc3VsdCB7XG4gIGNvbnN0IG9wID0gc3RhdGUuc3VpdGFiaWxpdGllcy5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gYWN0aW9uLmlkKTtcbiAgY29uc3QgZGF0YXNldCA9IG9wID8gc3RhdGUuZGF0YXNldHNbb3AuZGF0YUlkXSA6IHVuZGVmaW5lZDtcbiAgaWYgKCFvcCB8fCAhZGF0YXNldCB8fCAhT2JqZWN0LmtleXMob3Aud2VpZ2h0cykubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlOiBzZXRTdWl0YWJpbGl0eUNvbmZpZ1VwZGF0ZXIoc3RhdGUsIHtcbiAgICAgICAgaWQ6IGFjdGlvbi5pZCxcbiAgICAgICAgY29uZmlnOiB7ZXJyb3I6ICdTZWxlY3QgYXQgbGVhc3Qgb25lIGZpZWxkIHRvIHNjb3JlJ31cbiAgICAgIH0pXG4gICAgfTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcHJvdG8gPSBzdWl0YWJpbGl0eURhdGFzZXQoZGF0YXNldCwge1xuICAgICAgd2VpZ2h0czogb3Aud2VpZ2h0cyxcbiAgICAgIHdlaWdodFN0YW5kYXJkaXphdGlvbjogb3Aud2VpZ2h0U3RhbmRhcmRpemF0aW9uLFxuICAgICAgZGF0YVN0YW5kYXJkaXphdGlvbjogb3AuZGF0YVN0YW5kYXJkaXphdGlvbixcbiAgICAgIG91dHB1dEZpZWxkTmFtZTogb3Aub3V0cHV0RmllbGROYW1lLFxuICAgICAgY29sdW1uczogb3AuY29sdW1ucyxcbiAgICAgIGxhYmVsOiBvcC5yZXN1bHRMYWJlbCxcbiAgICAgIHJlc3VsdElkOiBvcC5yZXN1bHRJZCxcbiAgICAgIG9wZXJhdGlvbklkOiBvcC5pZFxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZToge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc3VpdGFiaWxpdGllczogc3RhdGUuc3VpdGFiaWxpdGllcy5tYXAoaXRlbSA9PlxuICAgICAgICAgIGl0ZW0uaWQgPT09IG9wLmlkID8gey4uLml0ZW0sIGlzQ29uZmlnQWN0aXZlOiBmYWxzZSwgZXJyb3I6IG51bGx9IDogaXRlbVxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgcHJvdG9cbiAgICB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZTogc2V0U3VpdGFiaWxpdHlDb25maWdVcGRhdGVyKHN0YXRlLCB7XG4gICAgICAgIGlkOiBhY3Rpb24uaWQsXG4gICAgICAgIGNvbmZpZzoge2Vycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9XG4gICAgICB9KVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZURhdGFzZXRPcFVwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuUmVtb3ZlRGF0YXNldE9wVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGdyb3VwQnlzOiBzdGF0ZS5ncm91cEJ5cy5maWx0ZXIob3AgPT4gb3AuaWQgIT09IGFjdGlvbi5pZCksXG4gICAgam9pbnM6IHN0YXRlLmpvaW5zLmZpbHRlcihvcCA9PiBvcC5pZCAhPT0gYWN0aW9uLmlkKSxcbiAgICBzdWl0YWJpbGl0aWVzOiBzdGF0ZS5zdWl0YWJpbGl0aWVzLmZpbHRlcihvcCA9PiBvcC5pZCAhPT0gYWN0aW9uLmlkKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlT3BzRm9yRGF0YXNldHMoc3RhdGU6IFZpc1N0YXRlLCBkYXRhSWRzOiBzdHJpbmdbXSk6IFZpc1N0YXRlIHtcbiAgY29uc3QgaWRzID0gbmV3IFNldChkYXRhSWRzKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBncm91cEJ5czogc3RhdGUuZ3JvdXBCeXMuZmlsdGVyKG9wID0+ICFpZHMuaGFzKG9wLmRhdGFJZCkgJiYgIWlkcy5oYXMob3AucmVzdWx0SWQpKSxcbiAgICBqb2luczogc3RhdGUuam9pbnMuZmlsdGVyKFxuICAgICAgb3AgPT5cbiAgICAgICAgIWlkcy5oYXMob3AubGVmdERhdGFJZCkgJiZcbiAgICAgICAgIShvcC5yaWdodERhdGFJZCAmJiBpZHMuaGFzKG9wLnJpZ2h0RGF0YUlkKSkgJiZcbiAgICAgICAgIWlkcy5oYXMob3AucmVzdWx0SWQpXG4gICAgKSxcbiAgICBzdWl0YWJpbGl0aWVzOiBzdGF0ZS5zdWl0YWJpbGl0aWVzLmZpbHRlcihvcCA9PiAhaWRzLmhhcyhvcC5kYXRhSWQpICYmICFpZHMuaGFzKG9wLnJlc3VsdElkKSlcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFlBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQWEwQixTQUFBRSxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFBSixDQUFBO0FBQUEsU0FBQVUsY0FBQVosQ0FBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEs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
|