@kepler.gl/reducers 3.3.0-alpha.17 → 3.3.0-alpha.19

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.
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
5
6
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
6
7
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -8,13 +9,125 @@ var _constants = require("@kepler.gl/constants");
8
9
  var _actions = require("@kepler.gl/actions");
9
10
  var _table = require("@kepler.gl/table");
10
11
  var _schemas = _interopRequireDefault(require("@kepler.gl/schemas"));
12
+ var _processors = require("@kepler.gl/processors");
13
+ var _utils = require("@kepler.gl/utils");
14
+ var arrow = _interopRequireWildcard(require("apache-arrow"));
11
15
  var _tasks = require("@kepler.gl/tasks");
12
16
  var _visState = _interopRequireDefault(require("./vis-state"));
13
17
  var _visStateUpdaters = require("./vis-state-updaters");
18
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
14
19
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15
20
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // SPDX-License-Identifier: MIT
16
21
  // Copyright contributors to the kepler.gl project
17
22
  var reduceVisState = _visState["default"];
23
+ function arrowCities() {
24
+ var source = new arrow.Table({
25
+ lat: arrow.vectorFromArray([37, null], new arrow.Float64()),
26
+ lng: arrow.vectorFromArray([-122, -123], new arrow.Float64()),
27
+ population: arrow.vectorFromArray([1000, null], new arrow.Int32())
28
+ });
29
+ var data = (0, _processors.processArrowBatches)(source.batches);
30
+ if (!data) throw new Error('Expected Arrow data');
31
+ return reduceVisState(withTables(makeTable('cities', data)), _actions.VisStateActions.addLayer({
32
+ id: 'cities-layer',
33
+ type: 'point',
34
+ config: {
35
+ dataId: 'cities',
36
+ columns: {
37
+ lat: 'lat',
38
+ lng: 'lng'
39
+ },
40
+ colorField: {
41
+ name: 'population',
42
+ type: _constants.ALL_FIELD_TYPES.integer
43
+ }
44
+ }
45
+ }));
46
+ }
47
+ describe('Arrow column order through edits and saved maps', function () {
48
+ test.each(['0', '2020', '4294967294', '00', '02020', '-1', '1.0', '1e3', '4294967295'])('rename to %s preserves descriptor/vector order', function (name) {
49
+ var _layer$config$colorFi;
50
+ var initial = arrowCities();
51
+ var original = initial.datasets.cities.dataContainer;
52
+ var next = reduceVisState(initial, _actions.VisStateActions.renameTableColumn('cities', 'population', name));
53
+ var table = next.datasets.cities;
54
+ var dc = table.dataContainer;
55
+ expect(table.fields.map(function (f) {
56
+ return f.name;
57
+ })).toEqual(['lat', 'lng', name]);
58
+ expect(dc.getTable().schema.fields.map(function (f) {
59
+ return f.name;
60
+ })).toEqual(['lat', 'lng', name]);
61
+ expect(dc.flattenData()).toEqual([[37, -122, 1000], [null, -123, null]]);
62
+ expect(table.fields.map(function (f) {
63
+ return f.valueAccessor({
64
+ index: 0
65
+ });
66
+ })).toEqual([37, -122, 1000]);
67
+ table.fields.forEach(function (_, i) {
68
+ expect(dc.getColumn(i).data[0].values.buffer).toBe(original.getColumn(i).data[0].values.buffer);
69
+ });
70
+ expect(initial.datasets.cities.fields[2].name).toBe('population');
71
+ expect(original.getTable().schema.fields[2].name).toBe('population');
72
+ expect(original.rowAsArray(0)).toEqual([37, -122, 1000]);
73
+ var layer = next.layers[0];
74
+ expect(layer.getPositionAccessor(dc)({
75
+ index: 0
76
+ })).toEqual([-122, 37, 0]);
77
+ layer.formatLayerData(next.datasets);
78
+ expect(Array.from(layer.geoArrowVector.get(0))).toEqual([-122, 37, 0]);
79
+ expect((_layer$config$colorFi = layer.config.colorField) === null || _layer$config$colorFi === void 0 ? void 0 : _layer$config$colorFi.name).toBe(name);
80
+ });
81
+ test('JSON, HTML and native IPC reload retain the renamed values and positions', function () {
82
+ var _ipc$getChild;
83
+ var next = reduceVisState(arrowCities(), _actions.VisStateActions.renameTableColumn('cities', 'population', '2020'));
84
+ var saved = (0, _utils.getMapJSON)({
85
+ visState: next,
86
+ mapState: {},
87
+ mapStyle: {},
88
+ uiState: {}
89
+ }, {
90
+ hasData: true
91
+ });
92
+ var json = JSON.parse((0, _utils.exportToJsonString)(saved));
93
+ var html = (0, _utils.exportMapToHTML)(_objectSpread(_objectSpread({}, saved), {}, {
94
+ mode: 'READ'
95
+ }));
96
+ var datasetsMatch = html.match(/const datasets = (.+);/);
97
+ var configMatch = html.match(/const config = (.+);/);
98
+ if (!datasetsMatch || !configMatch) throw new Error('Expected embedded map data');
99
+ var htmlData = JSON.parse(datasetsMatch[1]);
100
+ var htmlConfig = JSON.parse(configMatch[1]);
101
+ for (var _i = 0, _arr = [json, {
102
+ datasets: htmlData,
103
+ config: htmlConfig
104
+ }]; _i < _arr.length; _i++) {
105
+ var _loaded$datasets;
106
+ var document = _arr[_i];
107
+ var loaded = _schemas["default"].load(document);
108
+ var dataset = (_loaded$datasets = loaded.datasets) === null || _loaded$datasets === void 0 ? void 0 : _loaded$datasets[0];
109
+ if (!dataset) throw new Error('Expected reloaded dataset');
110
+ var table = makeTable('cities', dataset.data);
111
+ expect(table.fields.map(function (f) {
112
+ return f.name;
113
+ })).toEqual(['lat', 'lng', '2020']);
114
+ expect(table.dataContainer.rowAsArray(0)).toEqual([37, -122, 1000]);
115
+ expect(next.layers[0].getPositionAccessor(table.dataContainer)({
116
+ index: 0
117
+ })).toEqual([-122, 37, 0]);
118
+ }
119
+ var dc = next.datasets.cities.dataContainer;
120
+ var ipc = arrow.tableFromIPC(arrow.tableToIPC(dc.getTable()));
121
+ var processed = (0, _processors.processArrowBatches)(ipc.batches);
122
+ if (!processed) throw new Error('Expected IPC data');
123
+ var restored = makeTable('cities', processed);
124
+ expect(restored.dataContainer.rowAsArray(0)).toEqual([37, -122, 1000]);
125
+ expect(ipc.schema.fields.map(function (f) {
126
+ return f.name;
127
+ })).toEqual(['lat', 'lng', '2020']);
128
+ expect((_ipc$getChild = ipc.getChild('2020')) === null || _ipc$getChild === void 0 ? void 0 : _ipc$getChild.get(0)).toBe(1000);
129
+ });
130
+ });
18
131
  function makeTable(id, data) {
19
132
  var table = new _table.KeplerTable({
20
133
  info: {
@@ -155,7 +268,7 @@ describe('column edits', function () {
155
268
  (0, _tasks.drainTasksForTesting)();
156
269
  });
157
270
  test('rename changes the field identity stored in layers, filters, and saved maps', function () {
158
- var _layer$config$colorFi, _layer$config$textLab, _state$charts$0$xAxis, _state$charts$0$yAxis, _state$charts$0$cross, _savedVisState$layers, _savedVisState$layers2, _savedVisState$layers3, _savedVisState$charts;
271
+ var _layer$config$colorFi2, _layer$config$textLab, _state$charts$0$xAxis, _state$charts$0$yAxis, _state$charts$0$cross, _savedVisState$layers, _savedVisState$layers2, _savedVisState$layers3, _savedVisState$charts;
159
272
  var state = withCities();
160
273
  state.datasets.cities.hiddenColumns = ['region', 'pop'];
161
274
  expect(state.layers).toHaveLength(1);
@@ -174,7 +287,7 @@ describe('column edits', function () {
174
287
  var layer = state.layers[0];
175
288
  expect(layer.config.columns.lat.value).toBe('lat');
176
289
  expect(layer.config.columns.lng.value).toBe('lng');
177
- expect((_layer$config$colorFi = layer.config.colorField) === null || _layer$config$colorFi === void 0 ? void 0 : _layer$config$colorFi.name).toBe('area');
290
+ expect((_layer$config$colorFi2 = layer.config.colorField) === null || _layer$config$colorFi2 === void 0 ? void 0 : _layer$config$colorFi2.name).toBe('area');
178
291
  expect((_layer$config$textLab = layer.config.textLabel[0].field) === null || _layer$config$textLab === void 0 ? void 0 : _layer$config$textLab.name).toBe('area');
179
292
  expect(state.filters[0].name).toEqual(['area']);
180
293
  expect((_state$charts$0$xAxis = state.charts[0].xAxis) === null || _state$charts$0$xAxis === void 0 || (_state$charts$0$xAxis = _state$charts$0$xAxis.field) === null || _state$charts$0$xAxis === void 0 ? void 0 : _state$charts$0$xAxis.name).toBe('area');
@@ -837,4 +950,4 @@ describe('column edits', function () {
837
950
  expect(state.datasets.remote.fields[0].displayName).toBe('Region');
838
951
  });
839
952
  });
840
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl9hY3Rpb25zIiwiX3RhYmxlIiwiX3NjaGVtYXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3Rhc2tzIiwiX3Zpc1N0YXRlIiwiX3Zpc1N0YXRlVXBkYXRlcnMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsInJlZHVjZVZpc1N0YXRlIiwidmlzU3RhdGVSZWR1Y2VyIiwibWFrZVRhYmxlIiwiaWQiLCJkYXRhIiwidGFibGUiLCJLZXBsZXJUYWJsZSIsImluZm8iLCJsYWJlbCIsInR5cGUiLCJjb2xvciIsInVwZGF0ZVNjaGVtYSIsIndpdGhUYWJsZXMiLCJfbGVuIiwidGFibGVzIiwiQXJyYXkiLCJfa2V5IiwiSU5JVElBTF9WSVNfU1RBVEUiLCJkYXRhc2V0cyIsImZyb21FbnRyaWVzIiwibWFwIiwid2l0aEZpbHRlciIsInN0YXRlIiwiZGF0YUlkIiwiY29sdW1uIiwiVmlzU3RhdGVBY3Rpb25zIiwiY3JlYXRlT3JVcGRhdGVGaWx0ZXIiLCJ1bmRlZmluZWQiLCJ3aXRoU3luY2VkRmlsdGVyIiwicHJpbWFyeSIsInNlY29uZGFyeSIsInNldEZpbHRlciIsImNoYW5nZVR5cGUiLCJjaGFuZ2VUYWJsZUNvbHVtblR5cGUiLCJtYWtlQ2l0aWVzIiwiZmllbGRzIiwibmFtZSIsIkFMTF9GSUVMRF9UWVBFUyIsInJlYWwiLCJzdHJpbmciLCJpbnRlZ2VyIiwicm93cyIsIndpdGhDaXRpZXMiLCJjaXRpZXMiLCJpbnRlcmFjdGlvbkNvbmZpZyIsInRvb2x0aXAiLCJjb25maWciLCJmaWVsZHNUb1Nob3ciLCJmb3JtYXQiLCJhZGRMYXllciIsImNvbHVtbnMiLCJsYXQiLCJsbmciLCJjb2xvckZpZWxkIiwidGV4dExhYmVsIiwiZmllbGQiLCJhZGRDaGFydCIsInRpdGxlIiwiYXBwbHlGaWx0ZXJzIiwiZGlzcGxheSIsImNoYXJ0RGlzcGxheSIsInhBeGlzIiwiYWdncmVnYXRpb24iLCJ5QXhpcyIsImNyb3NzRmlsdGVyIiwiZW5hYmxlZCIsImZpbHRlcklkIiwiZmllbGROYW1lcyIsInZhbHVlIiwiZGVzY3JpYmUiLCJiZWZvcmVFYWNoIiwiZHJhaW5UYXNrc0ZvclRlc3RpbmciLCJ0ZXN0IiwiX2xheWVyJGNvbmZpZyRjb2xvckZpIiwiX2xheWVyJGNvbmZpZyR0ZXh0TGFiIiwiX3N0YXRlJGNoYXJ0cyQwJHhBeGlzIiwiX3N0YXRlJGNoYXJ0cyQwJHlBeGlzIiwiX3N0YXRlJGNoYXJ0cyQwJGNyb3NzIiwiX3NhdmVkVmlzU3RhdGUkbGF5ZXJzIiwiX3NhdmVkVmlzU3RhdGUkbGF5ZXJzMiIsIl9zYXZlZFZpc1N0YXRlJGxheWVyczMiLCJfc2F2ZWRWaXNTdGF0ZSRjaGFydHMiLCJoaWRkZW5Db2x1bW5zIiwiZXhwZWN0IiwibGF5ZXJzIiwidG9IYXZlTGVuZ3RoIiwiZmlsdGVycyIsInRvRXF1YWwiLCJyZW5hbWVUYWJsZUNvbHVtbiIsInJlZ2lvbiIsImZpbmQiLCJ0b0JlIiwiZGlzcGxheU5hbWUiLCJkYXRhQ29udGFpbmVyIiwicm93QXNBcnJheSIsImxheWVyIiwiY2hhcnRzIiwic2F2ZWQiLCJTY2hlbWFNYW5hZ2VyIiwic2F2ZSIsInZpc1N0YXRlIiwibWFwU3RhdGUiLCJtYXBTdHlsZSIsInVpU3RhdGUiLCJzYXZlZFZpc1N0YXRlIiwidmlzdWFsQ2hhbm5lbHMiLCJKU09OIiwic3RyaW5naWZ5IiwidG9Db250YWluIiwibm90IiwiX3N0YXRlJGNoYXJ0cyQwJHlBeGlzMiIsImRlbGV0ZVRhYmxlQ29sdW1uIiwidG9CZU51bGwiLCJvbmx5Iiwic2luZ2xlIiwia2VwdCIsImhpc3RvZ3JhbUNvdW50IiwiX2JpbnMiLCJiaW5zIiwicmVkdWNlIiwic3VtIiwiYmluIiwiY291bnQiLCJmaWx0ZXJlZEluZGV4IiwiX3N0YXRlJGxheWVycyRmaW5kIiwiX3N0YXRlJGxheWVycyRmaW5kMiIsIl9zdGF0ZSRjaGFydHMkMCR5QXhpczMiLCJ3ZWlnaHRGaWVsZCIsInBvcCIsInRvTWF0Y2hPYmplY3QiLCJhbmFseXplclR5cGUiLCJfc3RhdGUkZGF0YXNldHMkY2l0aWUiLCJfc3RhdGUkZGF0YXNldHMkY2l0aWUyIiwicG9seWdvbkZpbHRlciIsImZpeGVkRG9tYWluIiwidmlldyIsImlzQW5pbWF0aW5nIiwic3BlZWQiLCJGSUxURVJfVFlQRVMiLCJwb2x5Z29uIiwiZmllbGRJZHgiLCJkb21haW4iLCJwcm9wZXJ0aWVzIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsInBsb3RUeXBlIiwiUExPVF9UWVBFUyIsImhpc3RvZ3JhbSIsImxheWVySWQiLCJncHUiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwidG9CZVVuZGVmaW5lZCIsImZpbHRlclJlY29yZCIsInRvQ29udGFpbkVxdWFsIiwib2JqZWN0Q29udGFpbmluZyIsImNwdSIsInNvcnRUYWJsZUNvbHVtbiIsIlNPUlRfT1JERVIiLCJBU0NFTkRJTkciLCJzb3J0Q29sdW1uIiwic29ydE9yZGVyIiwiZXZlbnRzIiwidGltZXN0YW1wIiwic3luY2VkV2l0aExheWVyVGltZWxpbmUiLCJzeW5jVGltZWxpbmVNb2RlIiwiYW5pbWF0aW9uV2luZG93IiwiQU5JTUFUSU9OX1dJTkRPVyIsImludGVydmFsIiwidGltZUJpbnMiLCJkYXkiLCJsaW5lQ2hhcnQiLCJzZXJpZXMiLCJ5RG9tYWluIiwieERvbWFpbiIsInRpbWV6b25lIiwiaW52ZXJ0VHJlbmRDb2xvciIsInNob3dUaW1lRGlzcGxheSIsInRvSGF2ZVByb3BlcnR5IiwiZnJlZSIsIl9zdGF0ZSRkYXRhc2V0cyRzZWNvbiIsImR5bmFtaWNEb21haW4iLCJtYWtlRXZlbnRzIiwic2V0RmlsdGVyUGxvdCIsInRvQmVEZWZpbmVkIiwiX3N0YXRlJGZpbHRlcnMkMCRsaW5lIiwiX3N0YXRlJGZpbHRlcnMkMCRsaW5lMiIsIl9zdGF0ZSRmaWx0ZXJzJDAkbGluZTMiLCJncm91cEJ5IiwiZmllbGROYW1lIiwibnVtR3JvdXBzIiwiZ3JvdXBPdGhlcnMiLCJzZXJpZXNCZWZvcmUiLCJTZXQiLCJuYW1lcyIsIm5hbWVzQWZ0ZXIiLCJfc3RhdGUkZmlsdGVycyQwJHlBeGkiLCJfdGltZUZpbHRlciR0aW1lQmlucyIsIl90aW1lRmlsdGVyJHRpbWVCaW5zMiIsIl9zdGF0ZSRjaGFydHMkMCR4QXhpczIiLCJlbmROYW1lIiwidGltZUZpbHRlciIsImludGVydmFsQmlucyIsInRvQmVHcmVhdGVyVGhhbiIsImVuZEZpZWxkSWR4IiwiX25leHQkZGF0YXNldHMkY2l0aWVzIiwibmV4dCIsInRhc2tzIiwibm90aWZpY2F0aW9uIiwic3VjY2VlZFRhc2tJblRlc3QiLCJwYXlsb2FkIiwibWVzc2FnZSIsIl9zdGF0ZSRkYXRhc2V0cyRjaXRpZTMiLCJsb2FkQ29sdW1uU3RhdHMiLCJyZXF1ZXN0UmV2aXNpb24iLCJkYXRhUmV2aXNpb24iLCJfZHJhaW5UYXNrc0ZvclRlc3RpbmciLCJfZHJhaW5UYXNrc0ZvclRlc3RpbmcyIiwiX3NsaWNlZFRvQXJyYXkyIiwidGFzayIsInJlc3VsdCIsIm1lYW4iLCJzdGFsZVN1Y2Nlc3MiLCJmaWx0ZXJQcm9wcyIsInJhbmdlIiwiZmllbGRUeXBlIiwiY2hhbmdlZFN0YXRlIiwiY2hhbmdlZEZpZWxkIiwiY29sdW1uU3RhdHMiLCJlYWNoIiwidXBkYXRlIiwidHlwZXMiLCJfZHJhaW5UYXNrc0ZvclRlc3RpbmczIiwiX2RyYWluVGFza3NGb3JUZXN0aW5nNCIsInBpblRhYmxlQ29sdW1uIiwicm93IiwicmVmcmVzaERhdGFzZXRTdWNjZXNzIiwibm90TW9kaWZpZWQiLCJhZGRUb0RhdGFzZXQiLCJzdWNjZXNzU3RhdGUiLCJsb2dFcnJvciIsImplc3QiLCJzcHlPbiIsImNvbnNvbGUiLCJtb2NrSW1wbGVtZW50YXRpb24iLCJlcnJvclN0YXRlIiwiZXJyb3JUYXNrSW5UZXN0IiwiRXJyb3IiLCJtb2NrUmVzdG9yZSIsImlzTG9hZGluZ1N0YXRzIiwiZHVwbGljYXRlIiwidGlsZXMiLCJ0aWxlZCIsInVuY2hhbmdlZCIsInJlbW90ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb2x1bW4tZWRpdC11cGRhdGVycy5zcGVjLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7XG4gIEFMTF9GSUVMRF9UWVBFUyxcbiAgQU5JTUFUSU9OX1dJTkRPVyxcbiAgRklMVEVSX1RZUEVTLFxuICBQTE9UX1RZUEVTLFxuICBTT1JUX09SREVSXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7VmlzU3RhdGVBY3Rpb25zfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtLZXBsZXJUYWJsZX0gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQgU2NoZW1hTWFuYWdlciwge1Zpc1N0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3NjaGVtYXMnO1xuaW1wb3J0IHtkcmFpblRhc2tzRm9yVGVzdGluZywgZXJyb3JUYXNrSW5UZXN0LCBzdWNjZWVkVGFza0luVGVzdH0gZnJvbSAnQGtlcGxlci5nbC90YXNrcyc7XG5pbXBvcnQgdHlwZSB7UG9seWdvbkZpbHRlciwgUmFuZ2VGaWx0ZXIsIFRpbWVSYW5nZUZpbHRlcn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB2aXNTdGF0ZVJlZHVjZXIgZnJvbSAnLi92aXMtc3RhdGUnO1xuaW1wb3J0IHtJTklUSUFMX1ZJU19TVEFURX0gZnJvbSAnLi92aXMtc3RhdGUtdXBkYXRlcnMnO1xuXG5jb25zdCByZWR1Y2VWaXNTdGF0ZSA9IHZpc1N0YXRlUmVkdWNlciBhcyAoc3RhdGU6IFZpc1N0YXRlLCBhY3Rpb246IHVua25vd24pID0+IFZpc1N0YXRlO1xuXG5mdW5jdGlvbiBtYWtlVGFibGUoaWQ6IHN0cmluZywgZGF0YTogUGFyYW1ldGVyczxLZXBsZXJUYWJsZVsndXBkYXRlU2NoZW1hJ10+WzBdKSB7XG4gIGNvbnN0IHRhYmxlID0gbmV3IEtlcGxlclRhYmxlKHtcbiAgICBpbmZvOiB7aWQsIGxhYmVsOiBpZCwgdHlwZTogJ2xvY2FsJ30sXG4gICAgY29sb3I6IFswLCAwLCAwXVxuICB9KTtcbiAgcmV0dXJuIHRhYmxlLnVwZGF0ZVNjaGVtYShkYXRhKTtcbn1cblxuZnVuY3Rpb24gd2l0aFRhYmxlcyguLi50YWJsZXM6IEtlcGxlclRhYmxlW10pOiBWaXNTdGF0ZSB7XG4gIHJldHVybiB7XG4gICAgLi4uSU5JVElBTF9WSVNfU1RBVEUsXG4gICAgZGF0YXNldHM6IE9iamVjdC5mcm9tRW50cmllcyh0YWJsZXMubWFwKHRhYmxlID0+IFt0YWJsZS5pZCwgdGFibGVdKSlcbiAgfTtcbn1cblxuZnVuY3Rpb24gd2l0aEZpbHRlcihzdGF0ZTogVmlzU3RhdGUsIGRhdGFJZDogc3RyaW5nLCBjb2x1bW46IHN0cmluZyk6IFZpc1N0YXRlIHtcbiAgcmV0dXJuIHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuY3JlYXRlT3JVcGRhdGVGaWx0ZXIodW5kZWZpbmVkLCBkYXRhSWQsIGNvbHVtbikpO1xufVxuXG5mdW5jdGlvbiB3aXRoU3luY2VkRmlsdGVyKHByaW1hcnk6IEtlcGxlclRhYmxlLCBzZWNvbmRhcnk6IEtlcGxlclRhYmxlLCBjb2x1bW46IHN0cmluZyk6IFZpc1N0YXRlIHtcbiAgcmV0dXJuIHJlZHVjZVZpc1N0YXRlKFxuICAgIHdpdGhGaWx0ZXIod2l0aFRhYmxlcyhwcmltYXJ5LCBzZWNvbmRhcnkpLCBwcmltYXJ5LmlkLCBjb2x1bW4pLFxuICAgIFZpc1N0YXRlQWN0aW9ucy5zZXRGaWx0ZXIoMCwgWydkYXRhSWQnLCAnbmFtZSddLCBbc2Vjb25kYXJ5LmlkLCBjb2x1bW5dLCAxKVxuICApO1xufVxuXG5mdW5jdGlvbiBjaGFuZ2VUeXBlKHN0YXRlOiBWaXNTdGF0ZSwgZGF0YUlkOiBzdHJpbmcsIGNvbHVtbjogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBWaXNTdGF0ZSB7XG4gIHJldHVybiByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLmNoYW5nZVRhYmxlQ29sdW1uVHlwZShkYXRhSWQsIGNvbHVtbiwgdHlwZSkpO1xufVxuXG5mdW5jdGlvbiBtYWtlQ2l0aWVzKCkge1xuICBjb25zdCB0YWJsZSA9IG5ldyBLZXBsZXJUYWJsZSh7XG4gICAgaW5mbzoge2lkOiAnY2l0aWVzJywgbGFiZWw6ICdjaXRpZXMnLCB0eXBlOiAnbG9jYWwnfSxcbiAgICBjb2xvcjogWzAsIDAsIDBdXG4gIH0pO1xuICB0YWJsZS51cGRhdGVTY2hlbWEoe1xuICAgIGZpZWxkczogW1xuICAgICAge25hbWU6ICdsYXQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMucmVhbH0sXG4gICAgICB7bmFtZTogJ2xuZycsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5yZWFsfSxcbiAgICAgIHtuYW1lOiAncmVnaW9uJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ30sXG4gICAgICB7bmFtZTogJ3BvcCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyfVxuICAgIF0sXG4gICAgcm93czogW1xuICAgICAgWzM3LjcsIC0xMjIuNCwgJ3dlc3QnLCAxMF0sXG4gICAgICBbNDAuNywgLTc0LjAsICdlYXN0JywgNDBdXG4gICAgXVxuICB9KTtcbiAgcmV0dXJuIHRhYmxlO1xufVxuXG5mdW5jdGlvbiB3aXRoQ2l0aWVzKCk6IFZpc1N0YXRlIHtcbiAgY29uc3QgY2l0aWVzID0gbWFrZUNpdGllcygpO1xuICBsZXQgc3RhdGU6IFZpc1N0YXRlID0ge1xuICAgIC4uLklOSVRJQUxfVklTX1NUQVRFLFxuICAgIGRhdGFzZXRzOiB7Y2l0aWVzfSxcbiAgICBpbnRlcmFjdGlvbkNvbmZpZzoge1xuICAgICAgLi4uSU5JVElBTF9WSVNfU1RBVEUuaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICB0b29sdGlwOiB7XG4gICAgICAgIC4uLklOSVRJQUxfVklTX1NUQVRFLmludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAsXG4gICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgIC4uLklOSVRJQUxfVklTX1NUQVRFLmludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAuY29uZmlnLFxuICAgICAgICAgIGZpZWxkc1RvU2hvdzoge1xuICAgICAgICAgICAgY2l0aWVzOiBbe25hbWU6ICdyZWdpb24nLCBmb3JtYXQ6IG51bGx9XVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgIHN0YXRlLFxuICAgIFZpc1N0YXRlQWN0aW9ucy5hZGRMYXllcih7XG4gICAgICBpZDogJ2NpdGllcy1sYXllcicsXG4gICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIGRhdGFJZDogJ2NpdGllcycsXG4gICAgICAgIGxhYmVsOiAnY2l0aWVzJyxcbiAgICAgICAgY29sb3I6IFsyNTUsIDAsIDBdLFxuICAgICAgICBjb2x1bW5zOiB7bGF0OiAnbGF0JywgbG5nOiAnbG5nJ30sXG4gICAgICAgIGNvbG9yRmllbGQ6IHtuYW1lOiAncmVnaW9uJywgdHlwZTogJ3N0cmluZyd9LFxuICAgICAgICB0ZXh0TGFiZWw6IFt7ZmllbGQ6IHtuYW1lOiAncmVnaW9uJywgdHlwZTogJ3N0cmluZyd9fV1cbiAgICAgIH1cbiAgICB9KVxuICApO1xuICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgIHN0YXRlLFxuICAgIFZpc1N0YXRlQWN0aW9ucy5jcmVhdGVPclVwZGF0ZUZpbHRlcih1bmRlZmluZWQsICdjaXRpZXMnLCAncmVnaW9uJylcbiAgKTtcbiAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICBzdGF0ZSxcbiAgICBWaXNTdGF0ZUFjdGlvbnMuYWRkQ2hhcnQoe1xuICAgICAgaWQ6ICdyZWdpb24tY2hhcnQnLFxuICAgICAgdGl0bGU6ICdSZWdpb25zJyxcbiAgICAgIHR5cGU6ICdiYXJDaGFydCcsXG4gICAgICBkYXRhSWQ6ICdjaXRpZXMnLFxuICAgICAgYXBwbHlGaWx0ZXJzOiB0cnVlLFxuICAgICAgZGlzcGxheToge30sXG4gICAgICBjaGFydERpc3BsYXk6IHt9LFxuICAgICAgeEF4aXM6IHtmaWVsZDoge25hbWU6ICdyZWdpb24nLCB0eXBlOiAnc3RyaW5nJ30sIGFnZ3JlZ2F0aW9uOiBudWxsLCB0aXRsZTogJ3JlZ2lvbid9LFxuICAgICAgeUF4aXM6IHtmaWVsZDoge25hbWU6ICdwb3AnLCB0eXBlOiAnaW50ZWdlcid9LCBhZ2dyZWdhdGlvbjogJ3N1bScsIHRpdGxlOiAnUG9wdWxhdGlvbid9LFxuICAgICAgY3Jvc3NGaWx0ZXI6IHtcbiAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgIGZpbHRlcklkOiAncmVnaW9uLWNoYXJ0LWZpbHRlcicsXG4gICAgICAgIGZpZWxkTmFtZXM6IHt4QXhpczogJ3JlZ2lvbid9LFxuICAgICAgICB2YWx1ZToge31cbiAgICAgIH1cbiAgICB9KVxuICApO1xuICByZXR1cm4gc3RhdGU7XG59XG5cbmRlc2NyaWJlKCdjb2x1bW4gZWRpdHMnLCAoKSA9PiB7XG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGRyYWluVGFza3NGb3JUZXN0aW5nKCk7XG4gIH0pO1xuXG4gIHRlc3QoJ3JlbmFtZSBjaGFuZ2VzIHRoZSBmaWVsZCBpZGVudGl0eSBzdG9yZWQgaW4gbGF5ZXJzLCBmaWx0ZXJzLCBhbmQgc2F2ZWQgbWFwcycsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgc3RhdGUuZGF0YXNldHMuY2l0aWVzLmhpZGRlbkNvbHVtbnMgPSBbJ3JlZ2lvbicsICdwb3AnXTtcbiAgICBleHBlY3Qoc3RhdGUubGF5ZXJzKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ubmFtZSkudG9FcXVhbChbJ3JlZ2lvbiddKTtcblxuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5yZW5hbWVUYWJsZUNvbHVtbignY2l0aWVzJywgJ3JlZ2lvbicsICdhcmVhJykpO1xuXG4gICAgY29uc3QgcmVnaW9uID0gc3RhdGUuZGF0YXNldHMuY2l0aWVzLmZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLm5hbWUgPT09ICdhcmVhJyk7XG4gICAgZXhwZWN0KHJlZ2lvbj8ubmFtZSkudG9CZSgnYXJlYScpO1xuICAgIGV4cGVjdChyZWdpb24/LmlkKS50b0JlKCdhcmVhJyk7XG4gICAgZXhwZWN0KHJlZ2lvbj8uZGlzcGxheU5hbWUpLnRvQmUoJ2FyZWEnKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGQubmFtZSkpLnRvRXF1YWwoW1xuICAgICAgJ2xhdCcsXG4gICAgICAnbG5nJyxcbiAgICAgICdhcmVhJyxcbiAgICAgICdwb3AnXG4gICAgXSk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmNpdGllcy5kYXRhQ29udGFpbmVyLnJvd0FzQXJyYXkoMClbMl0pLnRvQmUoJ3dlc3QnKTtcblxuICAgIGNvbnN0IGxheWVyID0gc3RhdGUubGF5ZXJzWzBdO1xuICAgIGV4cGVjdChsYXllci5jb25maWcuY29sdW1ucy5sYXQudmFsdWUpLnRvQmUoJ2xhdCcpO1xuICAgIGV4cGVjdChsYXllci5jb25maWcuY29sdW1ucy5sbmcudmFsdWUpLnRvQmUoJ2xuZycpO1xuICAgIGV4cGVjdChsYXllci5jb25maWcuY29sb3JGaWVsZD8ubmFtZSkudG9CZSgnYXJlYScpO1xuICAgIGV4cGVjdChsYXllci5jb25maWcudGV4dExhYmVsWzBdLmZpZWxkPy5uYW1lKS50b0JlKCdhcmVhJyk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ubmFtZSkudG9FcXVhbChbJ2FyZWEnXSk7XG4gICAgZXhwZWN0KHN0YXRlLmNoYXJ0c1swXS54QXhpcz8uZmllbGQ/Lm5hbWUpLnRvQmUoJ2FyZWEnKTtcbiAgICBleHBlY3Qoc3RhdGUuY2hhcnRzWzBdLnlBeGlzPy5maWVsZD8ubmFtZSkudG9CZSgncG9wJyk7XG4gICAgZXhwZWN0KHN0YXRlLmNoYXJ0c1swXS5jcm9zc0ZpbHRlcj8uZmllbGROYW1lcykudG9FcXVhbCh7eEF4aXM6ICdhcmVhJ30pO1xuICAgIGV4cGVjdChzdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwLmNvbmZpZy5maWVsZHNUb1Nob3cuY2l0aWVzWzBdLm5hbWUpLnRvQmUoJ2FyZWEnKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmhpZGRlbkNvbHVtbnMpLnRvRXF1YWwoWydhcmVhJywgJ3BvcCddKTtcblxuICAgIGNvbnN0IHNhdmVkID0gU2NoZW1hTWFuYWdlci5zYXZlKHtcbiAgICAgIHZpc1N0YXRlOiBzdGF0ZSxcbiAgICAgIG1hcFN0YXRlOiB7fSxcbiAgICAgIG1hcFN0eWxlOiB7fSxcbiAgICAgIHVpU3RhdGU6IHt9XG4gICAgfSk7XG4gICAgY29uc3Qgc2F2ZWRWaXNTdGF0ZSA9IHNhdmVkLmNvbmZpZy5jb25maWcudmlzU3RhdGU7XG4gICAgZXhwZWN0KHNhdmVkVmlzU3RhdGUubGF5ZXJzPy5bMF0udmlzdWFsQ2hhbm5lbHM/LmNvbG9yRmllbGQpLnRvRXF1YWwoe1xuICAgICAgbmFtZTogJ2FyZWEnLFxuICAgICAgdHlwZTogJ3N0cmluZydcbiAgICB9KTtcbiAgICBleHBlY3Qoc2F2ZWRWaXNTdGF0ZS5sYXllcnM/LlswXS5jb25maWcuY29sdW1ucy5sYXQpLnRvQmUoJ2xhdCcpO1xuICAgIGV4cGVjdChzYXZlZFZpc1N0YXRlLmxheWVycz8uWzBdLmNvbmZpZy50ZXh0TGFiZWw/LlswXS5maWVsZD8ubmFtZSkudG9CZSgnYXJlYScpO1xuICAgIGV4cGVjdChKU09OLnN0cmluZ2lmeShzYXZlZFZpc1N0YXRlLmZpbHRlcnMpKS50b0NvbnRhaW4oJ2FyZWEnKTtcbiAgICBleHBlY3QoSlNPTi5zdHJpbmdpZnkoc2F2ZWRWaXNTdGF0ZS5maWx0ZXJzKSkubm90LnRvQ29udGFpbigncmVnaW9uJyk7XG4gICAgZXhwZWN0KHNhdmVkVmlzU3RhdGUuY2hhcnRzPy5bMF0ueEF4aXM/LmZpZWxkPy5uYW1lKS50b0JlKCdhcmVhJyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2RlbGV0ZSBkcm9wcyByZWZlcmVuY2VzIGFuZCByZWZ1c2VzIHRoZSBsYXN0IGNvbHVtbicsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgc3RhdGUuZGF0YXNldHMuY2l0aWVzLmhpZGRlbkNvbHVtbnMgPSBbJ3JlZ2lvbicsICdwb3AnXTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuZGVsZXRlVGFibGVDb2x1bW4oJ2NpdGllcycsICdwb3AnKSk7XG5cbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGQubmFtZSkpLnRvRXF1YWwoWydsYXQnLCAnbG5nJywgJ3JlZ2lvbiddKTtcbiAgICBleHBlY3Qoc3RhdGUubGF5ZXJzKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnMpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgICBleHBlY3Qoc3RhdGUuY2hhcnRzWzBdLnlBeGlzPy5maWVsZCkudG9CZU51bGwoKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmhpZGRlbkNvbHVtbnMpLnRvRXF1YWwoWydyZWdpb24nXSk7XG5cbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuZGVsZXRlVGFibGVDb2x1bW4oJ2NpdGllcycsICdsYXQnKSk7XG4gICAgZXhwZWN0KHN0YXRlLmxheWVycykudG9IYXZlTGVuZ3RoKDApO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC5uYW1lKSkudG9FcXVhbChbJ2xuZycsICdyZWdpb24nXSk7XG5cbiAgICBjb25zdCBvbmx5ID0gbmV3IEtlcGxlclRhYmxlKHtcbiAgICAgIGluZm86IHtpZDogJ29ubHknLCBsYWJlbDogJ29ubHknLCB0eXBlOiAnbG9jYWwnfSxcbiAgICAgIGNvbG9yOiBbMCwgMCwgMF1cbiAgICB9KTtcbiAgICBvbmx5LnVwZGF0ZVNjaGVtYSh7XG4gICAgICBmaWVsZHM6IFt7bmFtZTogJ3JlZ2lvbicsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmd9XSxcbiAgICAgIHJvd3M6IFtbJ3dlc3QnXV1cbiAgICB9KTtcbiAgICBjb25zdCBzaW5nbGU6IFZpc1N0YXRlID0gey4uLklOSVRJQUxfVklTX1NUQVRFLCBkYXRhc2V0czoge29ubHl9fTtcbiAgICBjb25zdCBrZXB0ID0gcmVkdWNlVmlzU3RhdGUoc2luZ2xlLCBWaXNTdGF0ZUFjdGlvbnMuZGVsZXRlVGFibGVDb2x1bW4oJ29ubHknLCAncmVnaW9uJykpO1xuICAgIGV4cGVjdChrZXB0LmRhdGFzZXRzLm9ubHkuZmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC5uYW1lKSkudG9FcXVhbChbJ3JlZ2lvbiddKTtcbiAgfSk7XG5cbiAgdGVzdCgnZGVsZXRpbmcgYW4gdW5yZWxhdGVkIGNvbHVtbiBwcmVzZXJ2ZXMgYW4gaW52ZXJ0ZWQgbnVtZXJpYyBoaXN0b2dyYW0nLCAoKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBtYWtlVGFibGUoJ2RhdGEnLCB7XG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAge25hbWU6ICd1bnVzZWQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuc3RyaW5nfSxcbiAgICAgICAge25hbWU6ICd2YWx1ZScsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyfSxcbiAgICAgICAge25hbWU6ICdjYXRlZ29yeScsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmd9XG4gICAgICBdLFxuICAgICAgcm93czogW1xuICAgICAgICBbJ3gnLCAxLCAnQSddLFxuICAgICAgICBbJ3gnLCAyLCAnQiddLFxuICAgICAgICBbJ3gnLCAzLCAnQSddXG4gICAgICBdXG4gICAgfSk7XG4gICAgbGV0IHN0YXRlID0gd2l0aEZpbHRlcih3aXRoVGFibGVzKHRhYmxlKSwgJ2RhdGEnLCAnY2F0ZWdvcnknKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuc2V0RmlsdGVyKDAsICd2YWx1ZScsIFsnQSddKSk7XG4gICAgc3RhdGUgPSB3aXRoRmlsdGVyKHN0YXRlLCAnZGF0YScsICd2YWx1ZScpO1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5zZXRGaWx0ZXIoMSwgJ3ZhbHVlJywgWzIsIDJdKSk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLnNldEZpbHRlcigxLCAnaW52ZXJ0ZWQnLCB0cnVlKSk7XG4gICAgY29uc3QgaGlzdG9ncmFtQ291bnQgPSAoKSA9PlxuICAgICAgKHN0YXRlLmZpbHRlcnNbMV0gYXMgUmFuZ2VGaWx0ZXIpLmJpbnM/LmRhdGE/LnJlZHVjZSgoc3VtLCBiaW4pID0+IHN1bSArIGJpbi5jb3VudCwgMCk7XG4gICAgZXhwZWN0KGhpc3RvZ3JhbUNvdW50KCkpLnRvQmUoMik7XG5cbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuZGVsZXRlVGFibGVDb2x1bW4oJ2RhdGEnLCAndW51c2VkJykpO1xuXG4gICAgZXhwZWN0KGhpc3RvZ3JhbUNvdW50KCkpLnRvQmUoMik7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmRhdGEuZmlsdGVyZWRJbmRleCkudG9FcXVhbChbMCwgMl0pO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5kYXRhLmZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGQudHlwZSkpLnRvRXF1YWwoW1xuICAgICAgQUxMX0ZJRUxEX1RZUEVTLmludGVnZXIsXG4gICAgICBBTExfRklFTERfVFlQRVMuc3RyaW5nXG4gICAgXSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3R5cGUgY2hhbmdlIGNvbnZlcnRzIHZhbHVlcyBhbmQgcmVjb25jaWxlcyBpbmNvbXBhdGlibGUgcmVmZXJlbmNlcycsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLmFkZExheWVyKHtcbiAgICAgICAgaWQ6ICdjaXRpZXMtaGVhdG1hcCcsXG4gICAgICAgIHR5cGU6ICdoZWF0bWFwJyxcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgZGF0YUlkOiAnY2l0aWVzJyxcbiAgICAgICAgICBsYWJlbDogJ2NpdGllcyBoZWF0bWFwJyxcbiAgICAgICAgICBjb2xvcjogWzI1NSwgMCwgMF0sXG4gICAgICAgICAgY29sdW1uczoge2xhdDogJ2xhdCcsIGxuZzogJ2xuZyd9LFxuICAgICAgICAgIHdlaWdodEZpZWxkOiB7bmFtZTogJ3BvcCcsIHR5cGU6ICdpbnRlZ2VyJ30sXG4gICAgICAgICAgdGV4dExhYmVsOiBbe2ZpZWxkOiB7bmFtZTogJ3BvcCcsIHR5cGU6ICdpbnRlZ2VyJ319XVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgc3RhdGUgPSBjaGFuZ2VUeXBlKHN0YXRlLCAnY2l0aWVzJywgJ3BvcCcsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuXG4gICAgY29uc3QgcG9wID0gc3RhdGUuZGF0YXNldHMuY2l0aWVzLmZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLm5hbWUgPT09ICdwb3AnKTtcbiAgICBleHBlY3QocG9wKS50b01hdGNoT2JqZWN0KHt0eXBlOiBBTExfRklFTERfVFlQRVMuc3RyaW5nLCBhbmFseXplclR5cGU6ICdTVFJJTkcnLCBmb3JtYXQ6ICcnfSk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmNpdGllcy5kYXRhQ29udGFpbmVyLnJvd0FzQXJyYXkoMClbM10pLnRvQmUoJzEwJyk7XG4gICAgZXhwZWN0KHN0YXRlLmxheWVycykudG9IYXZlTGVuZ3RoKDIpO1xuICAgIGV4cGVjdChcbiAgICAgIChzdGF0ZS5sYXllcnMuZmluZChsYXllciA9PiBsYXllci5pZCA9PT0gJ2NpdGllcy1oZWF0bWFwJyk/LmNvbmZpZyBhcyB7d2VpZ2h0RmllbGQ/OiB1bmtub3dufSlcbiAgICAgICAgLndlaWdodEZpZWxkXG4gICAgKS50b0JlTnVsbCgpO1xuICAgIGV4cGVjdChcbiAgICAgIHN0YXRlLmxheWVycy5maW5kKGxheWVyID0+IGxheWVyLmlkID09PSAnY2l0aWVzLWhlYXRtYXAnKT8uY29uZmlnLnRleHRMYWJlbFswXS5maWVsZFxuICAgICkudG9NYXRjaE9iamVjdCh7bmFtZTogJ3BvcCcsIHR5cGU6ICdzdHJpbmcnfSk7XG4gICAgZXhwZWN0KHN0YXRlLmNoYXJ0c1swXS55QXhpcz8uZmllbGQpLnRvRXF1YWwoe25hbWU6ICdwb3AnLCB0eXBlOiAnc3RyaW5nJ30pO1xuICB9KTtcblxuICB0ZXN0KCd0eXBlIGNoYW5nZSBwcmVzZXJ2ZXMgcG9seWdvbiBmaWx0ZXJzIHRhcmdldGluZyB0aGUgZGF0YXNldCcsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgY29uc3QgcG9seWdvbkZpbHRlcjogUG9seWdvbkZpbHRlciA9IHtcbiAgICAgIGlkOiAncG9seWdvbi1maWx0ZXInLFxuICAgICAgZGF0YUlkOiBbJ2NpdGllcyddLFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIGZpeGVkRG9tYWluOiB0cnVlLFxuICAgICAgdmlldzogJ3NpZGUnLFxuICAgICAgaXNBbmltYXRpbmc6IGZhbHNlLFxuICAgICAgc3BlZWQ6IDEsXG4gICAgICBuYW1lOiBbXSxcbiAgICAgIHR5cGU6IEZJTFRFUl9UWVBFUy5wb2x5Z29uLFxuICAgICAgZmllbGRJZHg6IFtdLFxuICAgICAgZG9tYWluOiBudWxsLFxuICAgICAgdmFsdWU6IHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBpZDogJ3BvbHlnb24tc2VsZWN0aW9uJyxcbiAgICAgICAgcHJvcGVydGllczoge2ZpbHRlcklkOiAncG9seWdvbi1maWx0ZXInfSxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgWy0xMjMsIDM3XSxcbiAgICAgICAgICAgICAgWy0xMjIsIDM3XSxcbiAgICAgICAgICAgICAgWy0xMjIsIDM4XSxcbiAgICAgICAgICAgICAgWy0xMjMsIDM3XVxuICAgICAgICAgICAgXVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHBsb3RUeXBlOiB7dHlwZTogUExPVF9UWVBFUy5oaXN0b2dyYW19LFxuICAgICAgeUF4aXM6IG51bGwsXG4gICAgICBsYXllcklkOiBbJ2NpdGllcy1sYXllciddLFxuICAgICAgZ3B1OiBmYWxzZVxuICAgIH07XG5cbiAgICBzdGF0ZSA9IHsuLi5zdGF0ZSwgZmlsdGVyczogWy4uLnN0YXRlLmZpbHRlcnMsIHBvbHlnb25GaWx0ZXJdfTtcbiAgICBzdGF0ZSA9IGNoYW5nZVR5cGUoc3RhdGUsICdjaXRpZXMnLCAncG9wJywgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZyk7XG5cbiAgICBleHBlY3Qoc3RhdGUuZmlsdGVycy5maW5kKGZpbHRlciA9PiBmaWx0ZXIuaWQgPT09IHBvbHlnb25GaWx0ZXIuaWQpKS50b0JlKHBvbHlnb25GaWx0ZXIpO1xuXG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLmRlbGV0ZVRhYmxlQ29sdW1uKCdjaXRpZXMnLCAnbGF0JykpO1xuXG4gICAgZXhwZWN0KHN0YXRlLmxheWVycykudG9IYXZlTGVuZ3RoKDApO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzLmZpbmQoZmlsdGVyID0+IGZpbHRlci5pZCA9PT0gcG9seWdvbkZpbHRlci5pZCkpLnRvQmVVbmRlZmluZWQoKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmZpbHRlclJlY29yZD8uZ3B1KS5ub3QudG9Db250YWluRXF1YWwoXG4gICAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7aWQ6IHBvbHlnb25GaWx0ZXIuaWR9KVxuICAgICk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmNpdGllcy5maWx0ZXJSZWNvcmQ/LmNwdSkubm90LnRvQ29udGFpbkVxdWFsKFxuICAgICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe2lkOiBwb2x5Z29uRmlsdGVyLmlkfSlcbiAgICApO1xuICB9KTtcblxuICB0ZXN0KCd0eXBlIGNoYW5nZSBwcmVzZXJ2ZXMgYW4gZXhpc3Rpbmcgc29ydCBvbiBhbm90aGVyIGNvbHVtbicsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLnNvcnRUYWJsZUNvbHVtbignY2l0aWVzJywgJ3JlZ2lvbicsIFNPUlRfT1JERVIuQVNDRU5ESU5HKVxuICAgICk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmNpdGllcy5zb3J0Q29sdW1uKS50b0VxdWFsKHtyZWdpb246IFNPUlRfT1JERVIuQVNDRU5ESU5HfSk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmNpdGllcy5zb3J0T3JkZXIpLnRvRXF1YWwoWzEsIDBdKTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ2NpdGllcycsICdwb3AnLCBBTExfRklFTERfVFlQRVMuc3RyaW5nKTtcblxuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuc29ydENvbHVtbikudG9FcXVhbCh7cmVnaW9uOiBTT1JUX09SREVSLkFTQ0VORElOR30pO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuc29ydE9yZGVyKS50b0VxdWFsKFsxLCAwXSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3R5cGUgY2hhbmdlIGNsZWFycyB0aW1lbGluZSBzdGF0ZSB3aGVuIGEgdGltZSBmaWx0ZXIgYmVjb21lcyBub24tdGltZScsICgpID0+IHtcbiAgICBjb25zdCBldmVudHMgPSBtYWtlVGFibGUoJ2V2ZW50cycsIHtcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7bmFtZTogJ3N0YXJ0JywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcCwgYW5hbHl6ZXJUeXBlOiAnREFURVRJTUUnfSxcbiAgICAgICAge25hbWU6ICdhbW91bnQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1cbiAgICAgIF0sXG4gICAgICByb3dzOiBbXG4gICAgICAgIFsnMjAyNC0wMS0wMVQwMDowMDowMFonLCAxMF0sXG4gICAgICAgIFsnMjAyNC0wMS0wMlQwMDowMDowMFonLCAyMF1cbiAgICAgIF1cbiAgICB9KTtcbiAgICBsZXQgc3RhdGUgPSB3aXRoRmlsdGVyKHdpdGhUYWJsZXMoZXZlbnRzKSwgJ2V2ZW50cycsICdzdGFydCcpO1xuICAgIHN0YXRlID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBmaWx0ZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAuLi4oc3RhdGUuZmlsdGVyc1swXSBhcyBUaW1lUmFuZ2VGaWx0ZXIpLFxuICAgICAgICAgIHN5bmNlZFdpdGhMYXllclRpbWVsaW5lOiB0cnVlLFxuICAgICAgICAgIHN5bmNUaW1lbGluZU1vZGU6IDEgYXMgY29uc3QsXG4gICAgICAgICAgaXNBbmltYXRpbmc6IHRydWUsXG4gICAgICAgICAgYW5pbWF0aW9uV2luZG93OiBBTklNQVRJT05fV0lORE9XLmludGVydmFsLFxuICAgICAgICAgIHRpbWVCaW5zOiB7ZXZlbnRzOiB7ZGF5OiBbXX19LFxuICAgICAgICAgIGxpbmVDaGFydDoge1xuICAgICAgICAgICAgc2VyaWVzOiBbXSxcbiAgICAgICAgICAgIHlEb21haW46IFswLCAxXSxcbiAgICAgICAgICAgIHhEb21haW46IFswLCAxXSxcbiAgICAgICAgICAgIGFnZ3JlZ2F0aW9uOiAnc3VtJyxcbiAgICAgICAgICAgIGludGVydmFsOiAnZGF5JyxcbiAgICAgICAgICAgIHlBeGlzOiAnYW1vdW50J1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdGltZXpvbmU6ICdVVEMnLFxuICAgICAgICAgIGludmVydFRyZW5kQ29sb3I6IHRydWUsXG4gICAgICAgICAgc2hvd1RpbWVEaXNwbGF5OiB0cnVlLFxuICAgICAgICAgIHlBeGlzOiBzdGF0ZS5kYXRhc2V0cy5ldmVudHMuZmllbGRzWzFdLFxuICAgICAgICAgIHBsb3RUeXBlOiB7dHlwZTogUExPVF9UWVBFUy5saW5lQ2hhcnQsIGludGVydmFsOiAnZGF5JywgYWdncmVnYXRpb246ICdzdW0nfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ2V2ZW50cycsICdzdGFydCcsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuXG4gICAgY29uc3QgZmlsdGVyID0gc3RhdGUuZmlsdGVyc1swXTtcbiAgICBleHBlY3QoZmlsdGVyLnR5cGUpLnRvQmUoJ211bHRpU2VsZWN0Jyk7XG4gICAgZXhwZWN0KGZpbHRlcikubm90LnRvSGF2ZVByb3BlcnR5KCdzeW5jZWRXaXRoTGF5ZXJUaW1lbGluZScpO1xuICAgIGV4cGVjdChmaWx0ZXIpLm5vdC50b0hhdmVQcm9wZXJ0eSgnc3luY1RpbWVsaW5lTW9kZScpO1xuICAgIGV4cGVjdChmaWx0ZXIpLm5vdC50b0hhdmVQcm9wZXJ0eSgndGltZUJpbnMnKTtcbiAgICBleHBlY3QoZmlsdGVyKS5ub3QudG9IYXZlUHJvcGVydHkoJ2xpbmVDaGFydCcpO1xuICAgIGV4cGVjdChmaWx0ZXIpLm5vdC50b0hhdmVQcm9wZXJ0eSgndGltZXpvbmUnKTtcbiAgICBleHBlY3QoZmlsdGVyKS5ub3QudG9IYXZlUHJvcGVydHkoJ2ludmVydFRyZW5kQ29sb3InKTtcbiAgICBleHBlY3QoZmlsdGVyKS5ub3QudG9IYXZlUHJvcGVydHkoJ3Nob3dUaW1lRGlzcGxheScpO1xuICAgIGV4cGVjdChmaWx0ZXIpLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgZml4ZWREb21haW46IGZhbHNlLFxuICAgICAgaXNBbmltYXRpbmc6IGZhbHNlLFxuICAgICAgYW5pbWF0aW9uV2luZG93OiBBTklNQVRJT05fV0lORE9XLmZyZWUsXG4gICAgICB5QXhpczogbnVsbCxcbiAgICAgIHBsb3RUeXBlOiB7dHlwZTogUExPVF9UWVBFUy5oaXN0b2dyYW19XG4gICAgfSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3R5cGUgY2hhbmdlIGRldGFjaGVzIGFuIGluY29tcGF0aWJsZSBzeW5jZWQgZmlsdGVyIG1lbWJlciBhbmQgcmVmaWx0ZXJzIGl0cyBkYXRhc2V0JywgKCkgPT4ge1xuICAgIGNvbnN0IHByaW1hcnkgPSBtYWtlVGFibGUoJ3ByaW1hcnknLCB7XG4gICAgICBmaWVsZHM6IFt7bmFtZTogJ3ZhbHVlJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJ9XSxcbiAgICAgIHJvd3M6IFtbMV0sIFsyXV1cbiAgICB9KTtcbiAgICBjb25zdCBzZWNvbmRhcnkgPSBtYWtlVGFibGUoJ3NlY29uZGFyeScsIHtcbiAgICAgIGZpZWxkczogW3tuYW1lOiAndmFsdWUnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1dLFxuICAgICAgcm93czogW1sxXSwgWzNdXVxuICAgIH0pO1xuXG4gICAgbGV0IHN0YXRlID0gd2l0aFN5bmNlZEZpbHRlcihwcmltYXJ5LCBzZWNvbmRhcnksICd2YWx1ZScpO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmRhdGFJZCkudG9FcXVhbChbJ3ByaW1hcnknLCAnc2Vjb25kYXJ5J10pO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5zZWNvbmRhcnkuZmlsdGVyUmVjb3JkPy5ncHUpLnRvSGF2ZUxlbmd0aCgxKTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ3NlY29uZGFyeScsICd2YWx1ZScsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuXG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0uZGF0YUlkKS50b0VxdWFsKFsncHJpbWFyeSddKTtcbiAgICBleHBlY3Qoc3RhdGUuZmlsdGVyc1swXS5uYW1lKS50b0VxdWFsKFsndmFsdWUnXSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0udHlwZSkudG9CZSgncmFuZ2UnKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuc2Vjb25kYXJ5LmZpbHRlclJlY29yZCkudG9NYXRjaE9iamVjdCh7XG4gICAgICBkeW5hbWljRG9tYWluOiBbXSxcbiAgICAgIGZpeGVkRG9tYWluOiBbXSxcbiAgICAgIGNwdTogW10sXG4gICAgICBncHU6IFtdXG4gICAgfSk7XG4gIH0pO1xuXG4gIHRlc3QoJ2NoYW5naW5nIGEgc3luY2VkIHNlY29uZGFyeSBkYXRhc2V0IGRvZXMgbm90IHJlY29uY2lsZSB0aGUgcHJpbWFyeSBwbG90IGF4aXMnLCAoKSA9PiB7XG4gICAgY29uc3QgbWFrZUV2ZW50cyA9IChpZDogc3RyaW5nKSA9PlxuICAgICAgbWFrZVRhYmxlKGlkLCB7XG4gICAgICAgIGZpZWxkczogW1xuICAgICAgICAgIHtuYW1lOiAnc3RhcnQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMudGltZXN0YW1wLCBhbmFseXplclR5cGU6ICdUSU1FJywgZm9ybWF0OiAneCd9LFxuICAgICAgICAgIHtuYW1lOiAnYW1vdW50JywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJ9XG4gICAgICAgIF0sXG4gICAgICAgIHJvd3M6IFtcbiAgICAgICAgICBbMV83MDBfMDAwXzAwMCwgMTBdLFxuICAgICAgICAgIFsxXzcwMF8wMDBfMDIwLCAyMF1cbiAgICAgICAgXVxuICAgICAgfSk7XG4gICAgY29uc3QgcHJpbWFyeSA9IG1ha2VFdmVudHMoJ3ByaW1hcnknKTtcbiAgICBjb25zdCBzZWNvbmRhcnkgPSBtYWtlRXZlbnRzKCdzZWNvbmRhcnknKTtcbiAgICBsZXQgc3RhdGUgPSB3aXRoU3luY2VkRmlsdGVyKHByaW1hcnksIHNlY29uZGFyeSwgJ3N0YXJ0Jyk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLnNldEZpbHRlclBsb3QoMCwge3lBeGlzOiBzdGF0ZS5kYXRhc2V0cy5wcmltYXJ5LmZpZWxkc1sxXX0pXG4gICAgKTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ3NlY29uZGFyeScsICdhbW91bnQnLCBBTExfRklFTERfVFlQRVMuc3RyaW5nKTtcblxuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmRhdGFJZCkudG9FcXVhbChbJ3ByaW1hcnknLCAnc2Vjb25kYXJ5J10pO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLnlBeGlzKS50b01hdGNoT2JqZWN0KHtuYW1lOiAnYW1vdW50JywgdHlwZTogJ2ludGVnZXInfSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ucGxvdFR5cGUudHlwZSkudG9CZSgnbGluZUNoYXJ0Jyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2RldGFjaGluZyBhIHN5bmNlZCBwcmltYXJ5IGRhdGFzZXQgcmVidWlsZHMgdGhlIHBsb3QgZm9yIHRoZSBuZXcgcHJpbWFyeScsICgpID0+IHtcbiAgICBjb25zdCBwcmltYXJ5ID0gbWFrZVRhYmxlKCdwcmltYXJ5Jywge1xuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHtuYW1lOiAnc3RhcnQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMudGltZXN0YW1wLCBhbmFseXplclR5cGU6ICdUSU1FJywgZm9ybWF0OiAneCd9LFxuICAgICAgICB7bmFtZTogJ2Ftb3VudCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyfVxuICAgICAgXSxcbiAgICAgIHJvd3M6IFtcbiAgICAgICAgWzFfNzAwXzAwMF8wMDAsIDEwXSxcbiAgICAgICAgWzFfNzAwXzAwMF8wMjAsIDIwXVxuICAgICAgXVxuICAgIH0pO1xuICAgIGNvbnN0IHNlY29uZGFyeSA9IG1ha2VUYWJsZSgnc2Vjb25kYXJ5Jywge1xuICAgICAgZmllbGRzOiBbe25hbWU6ICdzdGFydCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXAsIGFuYWx5emVyVHlwZTogJ1RJTUUnLCBmb3JtYXQ6ICd4J31dLFxuICAgICAgcm93czogW1sxXzcwMF8wMDBfMDQwXSwgWzFfNzAwXzAwMF8wNjBdXVxuICAgIH0pO1xuICAgIGxldCBzdGF0ZSA9IHdpdGhTeW5jZWRGaWx0ZXIocHJpbWFyeSwgc2Vjb25kYXJ5LCAnc3RhcnQnKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgc3RhdGUsXG4gICAgICBWaXNTdGF0ZUFjdGlvbnMuc2V0RmlsdGVyUGxvdCgwLCB7eUF4aXM6IHN0YXRlLmRhdGFzZXRzLnByaW1hcnkuZmllbGRzWzFdfSlcbiAgICApO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmxpbmVDaGFydCkudG9CZURlZmluZWQoKTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ3ByaW1hcnknLCAnc3RhcnQnLCBBTExfRklFTERfVFlQRVMuc3RyaW5nKTtcblxuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmRhdGFJZCkudG9FcXVhbChbJ3NlY29uZGFyeSddKTtcbiAgICBleHBlY3Qoc3RhdGUuZmlsdGVyc1swXS5uYW1lKS50b0VxdWFsKFsnc3RhcnQnXSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0udHlwZSkudG9CZSgndGltZVJhbmdlJyk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ueUF4aXMpLnRvQmVOdWxsKCk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ucGxvdFR5cGUudHlwZSkudG9CZSgnaGlzdG9ncmFtJyk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ubGluZUNoYXJ0KS50b0JlVW5kZWZpbmVkKCk7XG4gIH0pO1xuXG4gIHRlc3QoJ2dyb3VwZWQgdGltZWxpbmUgc2VyaWVzIHN1cnZpdmUgYSByZW5hbWUgYW5kIHJlYnVpbGQgd2hlbiBncm91cCB2YWx1ZXMgY29sbGFwc2UnLCAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnRzID0gbWFrZVRhYmxlKCdldmVudHMnLCB7XG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAge25hbWU6ICdzdGFydCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXAsIGFuYWx5emVyVHlwZTogJ1RJTUUnLCBmb3JtYXQ6ICd4J30sXG4gICAgICAgIHtuYW1lOiAnZ3JvdXAnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuc3RyaW5nfSxcbiAgICAgICAge25hbWU6ICdhbW91bnQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1cbiAgICAgIF0sXG4gICAgICByb3dzOiBbXG4gICAgICAgIFsxXzcwMF8wMDBfMDAwLCAnMDEnLCAxMF0sXG4gICAgICAgIFsxXzcwMF8wMDBfMDIwLCAnMScsIDIwXVxuICAgICAgXVxuICAgIH0pO1xuICAgIGxldCBzdGF0ZSA9IHdpdGhGaWx0ZXIod2l0aFRhYmxlcyhldmVudHMpLCAnZXZlbnRzJywgJ3N0YXJ0Jyk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLnNldEZpbHRlclBsb3QoMCwge3lBeGlzOiBzdGF0ZS5kYXRhc2V0cy5ldmVudHMuZmllbGRzWzJdfSlcbiAgICApO1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoXG4gICAgICBzdGF0ZSxcbiAgICAgIFZpc1N0YXRlQWN0aW9ucy5zZXRGaWx0ZXJQbG90KDAsIHtcbiAgICAgICAgcGxvdFR5cGU6IHtncm91cEJ5OiB7ZmllbGROYW1lOiAnZ3JvdXAnLCBudW1Hcm91cHM6ICdBTEwnLCBncm91cE90aGVyczogZmFsc2V9fVxuICAgICAgfSlcbiAgICApO1xuICAgIGNvbnN0IHNlcmllc0JlZm9yZSA9IHN0YXRlLmZpbHRlcnNbMF0ubGluZUNoYXJ0Py5zZXJpZXMgYXMge25hbWVzPzogc3RyaW5nW119O1xuICAgIGV4cGVjdChuZXcgU2V0KHNlcmllc0JlZm9yZS5uYW1lcykpLnRvRXF1YWwobmV3IFNldChbJzAxJywgJzEnXSkpO1xuXG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLnJlbmFtZVRhYmxlQ29sdW1uKCdldmVudHMnLCAnZ3JvdXAnLCAnY2F0ZWdvcnknKSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ubGluZUNoYXJ0Py5zZXJpZXMpLnRvRXF1YWwoc2VyaWVzQmVmb3JlKTtcbiAgICBleHBlY3Qoc3RhdGUuZmlsdGVyc1swXS5wbG90VHlwZS5ncm91cEJ5LmZpZWxkTmFtZSkudG9CZSgnY2F0ZWdvcnknKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuZXZlbnRzLmZpZWxkc1sxXS50eXBlKS50b0JlKEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuXG4gICAgc3RhdGUgPSBjaGFuZ2VUeXBlKHN0YXRlLCAnZXZlbnRzJywgJ2NhdGVnb3J5JywgQUxMX0ZJRUxEX1RZUEVTLmludGVnZXIpO1xuXG4gICAgY29uc3QgbmFtZXNBZnRlciA9IChzdGF0ZS5maWx0ZXJzWzBdLmxpbmVDaGFydD8uc2VyaWVzIGFzIHtuYW1lcz86IHN0cmluZ1tdfSkubmFtZXM7XG4gICAgZXhwZWN0KG5ldyBTZXQobmFtZXNBZnRlcikpLnRvRXF1YWwobmV3IFNldChbJzEnXSkpO1xuICB9KTtcblxuICB0ZXN0KCd0eXBlIGNoYW5nZSBjbGVhcnMgYW4gaW50ZXJ2YWwgZW5kIGZpZWxkIHRoYXQgaXMgbm8gbG9uZ2VyIGEgdGltZXN0YW1wJywgKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50cyA9IG1ha2VUYWJsZSgnZXZlbnRzJywge1xuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHtuYW1lOiAnc3RhcnQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMudGltZXN0YW1wLCBhbmFseXplclR5cGU6ICdUSU1FJywgZm9ybWF0OiAneCd9LFxuICAgICAgICB7bmFtZTogJ2VuZCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXAsIGFuYWx5emVyVHlwZTogJ1RJTUUnLCBmb3JtYXQ6ICd4J30sXG4gICAgICAgIHtuYW1lOiAndmFsdWUnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1cbiAgICAgIF0sXG4gICAgICByb3dzOiBbXG4gICAgICAgIFsxXzcwMF8wMDBfMDAwLCAxXzcwMF8wODZfNDAwLCAxMF0sXG4gICAgICAgIFsxXzcwMF8wMDBfMDIwLCAxXzcwMF8xNzJfODAwLCAyMF1cbiAgICAgIF1cbiAgICB9KTtcbiAgICBsZXQgc3RhdGUgPSB3aXRoVGFibGVzKGV2ZW50cyk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLmFkZENoYXJ0KHtcbiAgICAgICAgaWQ6ICdldmVudHMtY2hhcnQnLFxuICAgICAgICB0aXRsZTogJ0V2ZW50cycsXG4gICAgICAgIHR5cGU6ICdiYXJDaGFydCcsXG4gICAgICAgIGRhdGFJZDogJ2V2ZW50cycsXG4gICAgICAgIGFwcGx5RmlsdGVyczogdHJ1ZSxcbiAgICAgICAgZGlzcGxheToge30sXG4gICAgICAgIGNoYXJ0RGlzcGxheToge30sXG4gICAgICAgIHhBeGlzOiB7XG4gICAgICAgICAgZmllbGQ6IHtuYW1lOiAnZW5kJywgdHlwZTogJ3RpbWVzdGFtcCd9LFxuICAgICAgICAgIGFnZ3JlZ2F0aW9uOiAndGltZUJpbicsXG4gICAgICAgICAgaW50ZXJ2YWw6ICdkYXknLFxuICAgICAgICAgIHRpdGxlOiAnZW5kJ1xuICAgICAgICB9LFxuICAgICAgICB5QXhpczoge2ZpZWxkOiB7bmFtZTogJ3ZhbHVlJywgdHlwZTogJ2ludGVnZXInfSwgYWdncmVnYXRpb246ICdzdW0nLCB0aXRsZTogJ3ZhbHVlJ31cbiAgICAgIH0pXG4gICAgKTtcbiAgICBzdGF0ZSA9IHdpdGhGaWx0ZXIoc3RhdGUsICdldmVudHMnLCAnc3RhcnQnKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuc2V0RmlsdGVyKDAsICdlbmROYW1lJywgJ2VuZCcsIDApKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgc3RhdGUsXG4gICAgICBWaXNTdGF0ZUFjdGlvbnMuc2V0RmlsdGVyUGxvdCgwLCB7eUF4aXM6IHN0YXRlLmRhdGFzZXRzLmV2ZW50cy5maWVsZHNbMl19KVxuICAgICk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0uZW5kTmFtZSkudG9FcXVhbChbJ2VuZCddKTtcbiAgICBleHBlY3Qoc3RhdGUuZmlsdGVyc1swXS55QXhpcz8ubmFtZSkudG9CZSgndmFsdWUnKTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ2V2ZW50cycsICd2YWx1ZScsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLnlBeGlzKS50b0JlTnVsbCgpO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLnBsb3RUeXBlLnR5cGUpLnRvQmUoJ2hpc3RvZ3JhbScpO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmVuZE5hbWUpLnRvRXF1YWwoWydlbmQnXSk7XG4gICAgZXhwZWN0KHN0YXRlLmNoYXJ0c1swXS55QXhpcykudG9NYXRjaE9iamVjdCh7XG4gICAgICBmaWVsZDoge25hbWU6ICd2YWx1ZScsIHR5cGU6ICdzdHJpbmcnfSxcbiAgICAgIGFnZ3JlZ2F0aW9uOiAnc3VtJ1xuICAgIH0pO1xuICAgIGxldCB0aW1lRmlsdGVyID0gc3RhdGUuZmlsdGVyc1swXSBhcyBUaW1lUmFuZ2VGaWx0ZXI7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSB0aW1lRmlsdGVyLnBsb3RUeXBlLmludGVydmFsO1xuICAgIGNvbnN0IGludGVydmFsQmlucyA9IHRpbWVGaWx0ZXIudGltZUJpbnM/LmV2ZW50cz8uW2ludGVydmFsXTtcbiAgICBleHBlY3QoaW50ZXJ2YWxCaW5zPy5yZWR1Y2UoKHN1bSwgYmluKSA9PiBzdW0gKyBiaW4uY291bnQsIDApKS50b0JlR3JlYXRlclRoYW4oMik7XG5cbiAgICBzdGF0ZSA9IGNoYW5nZVR5cGUoc3RhdGUsICdldmVudHMnLCAnZW5kJywgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZyk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0udHlwZSkudG9CZSgndGltZVJhbmdlJyk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0uZW5kTmFtZSkudG9CZVVuZGVmaW5lZCgpO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmVuZEZpZWxkSWR4KS50b0JlVW5kZWZpbmVkKCk7XG4gICAgdGltZUZpbHRlciA9IHN0YXRlLmZpbHRlcnNbMF0gYXMgVGltZVJhbmdlRmlsdGVyO1xuICAgIGNvbnN0IGJpbnMgPSB0aW1lRmlsdGVyLnRpbWVCaW5zPy5ldmVudHM/LltpbnRlcnZhbF07XG4gICAgZXhwZWN0KGJpbnM/LnJlZHVjZSgoc3VtLCBiaW4pID0+IHN1bSArIGJpbi5jb3VudCwgMCkpLnRvQmUoMik7XG4gICAgZXhwZWN0KHN0YXRlLmNoYXJ0c1swXS54QXhpcykudG9NYXRjaE9iamVjdCh7XG4gICAgICBmaWVsZDoge25hbWU6ICdlbmQnLCB0eXBlOiAnc3RyaW5nJ30sXG4gICAgICBhZ2dyZWdhdGlvbjogJ3VuaXF1ZUJpbidcbiAgICB9KTtcbiAgICBleHBlY3Qoc3RhdGUuY2hhcnRzWzBdLnhBeGlzPy5pbnRlcnZhbCkudG9CZVVuZGVmaW5lZCgpO1xuICB9KTtcblxuICB0ZXN0KCdpbnZhbGlkIHR5cGUgY2hhbmdlIGlzIGF0b21pYyBhbmQgc2NoZWR1bGVzIGEgcHJlY2lzZSBlcnJvcicsICgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHdpdGhDaXRpZXMoKTtcbiAgICBjb25zdCBuZXh0ID0gY2hhbmdlVHlwZShzdGF0ZSwgJ2NpdGllcycsICdyZWdpb24nLCBBTExfRklFTERfVFlQRVMuaW50ZWdlcik7XG5cbiAgICBleHBlY3QobmV4dC5kYXRhc2V0cy5jaXRpZXMpLnRvQmUoc3RhdGUuZGF0YXNldHMuY2l0aWVzKTtcbiAgICBleHBlY3QobmV4dC5kYXRhc2V0cy5jaXRpZXMuZmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQubmFtZSA9PT0gJ3JlZ2lvbicpPy50eXBlKS50b0JlKFxuICAgICAgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ1xuICAgICk7XG4gICAgZXhwZWN0KG5leHQuZGF0YXNldHMuY2l0aWVzLmRhdGFDb250YWluZXIucm93QXNBcnJheSgwKVsyXSkudG9CZSgnd2VzdCcpO1xuXG4gICAgY29uc3QgdGFza3MgPSBkcmFpblRhc2tzRm9yVGVzdGluZygpO1xuICAgIGV4cGVjdCh0YXNrcykudG9IYXZlTGVuZ3RoKDEpO1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbiA9IHN1Y2NlZWRUYXNrSW5UZXN0KHRhc2tzWzBdLCB1bmRlZmluZWQpO1xuICAgIGV4cGVjdChub3RpZmljYXRpb24ucGF5bG9hZC5tZXNzYWdlKS50b0NvbnRhaW4oXG4gICAgICAnQ2Fubm90IGNoYW5nZSDigJxyZWdpb27igJ0gdG8gaW50ZWdlcjogcm93IDEgdmFsdWUg4oCcd2VzdOKAnSBpcyBub3QgYSBzYWZlIGludGVnZXInXG4gICAgKTtcbiAgICBleHBlY3Qobm90aWZpY2F0aW9uLnBheWxvYWQubWVzc2FnZSkudG9Db250YWluKCdObyB2YWx1ZXMgd2VyZSBjaGFuZ2VkLicpO1xuICB9KTtcblxuICB0ZXN0KCdsYXRlIGNvbHVtbiBzdGF0aXN0aWNzIGNhbm5vdCBvdmVyd3JpdGUgYSBjaGFuZ2VkIGNvbHVtbicsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLmxvYWRDb2x1bW5TdGF0cygnY2l0aWVzJywgJ3BvcCcpKTtcbiAgICBjb25zdCByZXF1ZXN0UmV2aXNpb24gPSBzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZGF0YVJldmlzaW9uO1xuICAgIGNvbnN0IFt0YXNrXSA9IGRyYWluVGFza3NGb3JUZXN0aW5nKCk7XG4gICAgY29uc3QgcmVzdWx0ID0ge3R5cGU6ICdudW1lcmljJywgbWVhbjogMjV9O1xuICAgIGNvbnN0IHN0YWxlU3VjY2VzcyA9IHN1Y2NlZWRUYXNrSW5UZXN0KHRhc2ssIHtcbiAgICAgIHJlc3VsdCxcbiAgICAgIGZpbHRlclByb3BzOiB7dHlwZTogRklMVEVSX1RZUEVTLnJhbmdlfVxuICAgIH0pO1xuICAgIGV4cGVjdChzdGFsZVN1Y2Nlc3MpLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgZmllbGRUeXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlclxuICAgIH0pO1xuXG4gICAgc3RhdGUgPSBjaGFuZ2VUeXBlKHN0YXRlLCAnY2l0aWVzJywgJ3BvcCcsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZGF0YVJldmlzaW9uKS50b0JlKHJlcXVlc3RSZXZpc2lvbiArIDEpO1xuICAgIGNvbnN0IGNoYW5nZWRTdGF0ZSA9IHN0YXRlO1xuXG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgc3RhbGVTdWNjZXNzKTtcblxuICAgIGV4cGVjdChzdGF0ZSkudG9CZShjaGFuZ2VkU3RhdGUpO1xuICAgIGNvbnN0IGNoYW5nZWRGaWVsZCA9IHN0YXRlLmRhdGFzZXRzLmNpdGllcy5maWVsZHMuZmluZChmaWVsZCA9PiBmaWVsZC5uYW1lID09PSAncG9wJyk7XG4gICAgZXhwZWN0KGNoYW5nZWRGaWVsZCkudG9NYXRjaE9iamVjdCh7dHlwZTogQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ30pO1xuICAgIGV4cGVjdChjaGFuZ2VkRmllbGQpLm5vdC50b0hhdmVQcm9wZXJ0eSgnaXNMb2FkaW5nU3RhdHMnKTtcbiAgICBleHBlY3QoXG4gICAgICBzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQubmFtZSA9PT0gJ3BvcCcpPy5maWx0ZXJQcm9wcz8uY29sdW1uU3RhdHNcbiAgICApLm5vdC50b0JlKHJlc3VsdCk7XG4gIH0pO1xuXG4gIHRlc3QuZWFjaChbJ3JlZnJlc2gnLCAnYXBwZW5kJ10pKCdwZW5kaW5nIHN0YXRpc3RpY3MgY29tcGxldGUgYWZ0ZXIgYSBub3JtYWwgJXMnLCB1cGRhdGUgPT4ge1xuICAgIGxldCBzdGF0ZSA9IHdpdGhDaXRpZXMoKTtcbiAgICBjb25zdCB0eXBlcyA9IHN0YXRlLmRhdGFzZXRzLmNpdGllcy5maWVsZHMubWFwKGZpZWxkID0+IGZpZWxkLnR5cGUpO1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5sb2FkQ29sdW1uU3RhdHMoJ2NpdGllcycsICdwb3AnKSk7XG4gICAgY29uc3QgW3Rhc2tdID0gZHJhaW5UYXNrc0ZvclRlc3RpbmcoKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMucGluVGFibGVDb2x1bW4oJ2NpdGllcycsICdyZWdpb24nKSk7XG4gICAgY29uc3Qgcm93ID0gWzQxLCAtNzUsICdub3J0aCcsIDUwXTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgc3RhdGUsXG4gICAgICB1cGRhdGUgPT09ICdyZWZyZXNoJ1xuICAgICAgICA/IFZpc1N0YXRlQWN0aW9ucy5yZWZyZXNoRGF0YXNldFN1Y2Nlc3MoJ2NpdGllcycsIHtcbiAgICAgICAgICAgIG5vdE1vZGlmaWVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRhdGE6IHtmaWVsZHM6IHN0YXRlLmRhdGFzZXRzLmNpdGllcy5maWVsZHMsIHJvd3M6IFtyb3ddfVxuICAgICAgICAgIH0pXG4gICAgICAgIDogVmlzU3RhdGVBY3Rpb25zLmFkZFRvRGF0YXNldCgnY2l0aWVzJywgW3Jvd10pXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IHt0eXBlOiAnbnVtZXJpYycsIG1lYW46IDI1fTtcbiAgICBjb25zdCBzdWNjZXNzU3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgc3VjY2VlZFRhc2tJblRlc3QodGFzaywge3Jlc3VsdCwgZmlsdGVyUHJvcHM6IHt0eXBlOiBGSUxURVJfVFlQRVMucmFuZ2V9fSlcbiAgICApO1xuICAgIGNvbnN0IGxvZ0Vycm9yID0gamVzdC5zcHlPbihjb25zb2xlLCAnZXJyb3InKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gdW5kZWZpbmVkKTtcbiAgICBjb25zdCBlcnJvclN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIGVycm9yVGFza0luVGVzdCh0YXNrLCBuZXcgRXJyb3IoJ3N0YXRzIGZhaWxlZCcpKSk7XG4gICAgbG9nRXJyb3IubW9ja1Jlc3RvcmUoKTtcblxuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC50eXBlKSkudG9FcXVhbCh0eXBlcyk7XG4gICAgZXhwZWN0KHN1Y2Nlc3NTdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZmllbGRzWzNdKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIGlzTG9hZGluZ1N0YXRzOiBmYWxzZSxcbiAgICAgIGZpbHRlclByb3BzOiB7Y29sdW1uU3RhdHM6IHJlc3VsdH1cbiAgICB9KTtcbiAgICBleHBlY3QoZXJyb3JTdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZmllbGRzWzNdLmlzTG9hZGluZ1N0YXRzKS50b0JlKGZhbHNlKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmRhdGFDb250YWluZXIucm93QXNBcnJheSh1cGRhdGUgPT09ICdyZWZyZXNoJyA/IDAgOiAyKSkudG9FcXVhbChcbiAgICAgIHJvd1xuICAgICk7XG4gIH0pO1xuXG4gIHRlc3QoJ2R1cGxpY2F0ZSByZW5hbWUgYW5kIG5vbi10YWJ1bGFyIGRhdGFzZXRzIGFyZSBpZ25vcmVkJywgKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gd2l0aENpdGllcygpO1xuICAgIGNvbnN0IGR1cGxpY2F0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgc3RhdGUsXG4gICAgICBWaXNTdGF0ZUFjdGlvbnMucmVuYW1lVGFibGVDb2x1bW4oJ2NpdGllcycsICdyZWdpb24nLCAncG9wJylcbiAgICApO1xuICAgIGV4cGVjdChkdXBsaWNhdGUpLnRvQmUoc3RhdGUpO1xuXG4gICAgY29uc3QgdGlsZXMgPSBuZXcgS2VwbGVyVGFibGUoe1xuICAgICAgaW5mbzoge2lkOiAndGlsZXMnLCBsYWJlbDogJ3RpbGVzJywgdHlwZTogJ3ZlY3Rvci10aWxlJ30sXG4gICAgICBjb2xvcjogWzAsIDAsIDBdXG4gICAgfSk7XG4gICAgdGlsZXMudXBkYXRlU2NoZW1hKHtcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7bmFtZTogJ3JlZ2lvbicsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmd9LFxuICAgICAgICB7bmFtZTogJ3BvcCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyfVxuICAgICAgXSxcbiAgICAgIHJvd3M6IFtbJ3dlc3QnLCAxXV1cbiAgICB9KTtcbiAgICBjb25zdCB0aWxlZDogVmlzU3RhdGUgPSB7Li4uSU5JVElBTF9WSVNfU1RBVEUsIGRhdGFzZXRzOiB7dGlsZXN9fTtcbiAgICBjb25zdCB1bmNoYW5nZWQgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHRpbGVkLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLnJlbmFtZVRhYmxlQ29sdW1uKCd0aWxlcycsICdyZWdpb24nLCAnYXJlYScpXG4gICAgKTtcbiAgICBleHBlY3QodW5jaGFuZ2VkKS50b0JlKHRpbGVkKTtcbiAgICBleHBlY3QocmVkdWNlVmlzU3RhdGUodGlsZWQsIFZpc1N0YXRlQWN0aW9ucy5kZWxldGVUYWJsZUNvbHVtbigndGlsZXMnLCAncG9wJykpKS50b0JlKHRpbGVkKTtcbiAgICBleHBlY3QoY2hhbmdlVHlwZSh0aWxlZCwgJ3RpbGVzJywgJ3BvcCcsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpKS50b0JlKHRpbGVkKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXh0ZXJuYWxseSBob3N0ZWQgZGF0YXNldHMgaWdub3JlIHJlbmFtZSBhbmQgZGVsZXRlJywgKCkgPT4ge1xuICAgIGNvbnN0IHJlbW90ZSA9IG5ldyBLZXBsZXJUYWJsZSh7XG4gICAgICBpbmZvOiB7aWQ6ICdyZW1vdGUnLCBsYWJlbDogJ3JlbW90ZScsIHR5cGU6ICdleHRlcm5hbGx5LWhvc3RlZCd9LFxuICAgICAgY29sb3I6IFswLCAwLCAwXVxuICAgIH0pO1xuICAgIHJlbW90ZS51cGRhdGVTY2hlbWEoe1xuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHtuYW1lOiAncmVnaW9uJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnN0cmluZywgZGlzcGxheU5hbWU6ICdSZWdpb24nfSxcbiAgICAgICAge25hbWU6ICdwb3AnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1cbiAgICAgIF0sXG4gICAgICByb3dzOiBbWyd3ZXN0JywgMV1dXG4gICAgfSk7XG4gICAgY29uc3Qgc3RhdGU6IFZpc1N0YXRlID0gey4uLklOSVRJQUxfVklTX1NUQVRFLCBkYXRhc2V0czoge3JlbW90ZX19O1xuXG4gICAgZXhwZWN0KFxuICAgICAgcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5yZW5hbWVUYWJsZUNvbHVtbigncmVtb3RlJywgJ3JlZ2lvbicsICdhcmVhJykpXG4gICAgKS50b0JlKHN0YXRlKTtcbiAgICBleHBlY3QocmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5kZWxldGVUYWJsZUNvbHVtbigncmVtb3RlJywgJ3BvcCcpKSkudG9CZShzdGF0ZSk7XG4gICAgZXhwZWN0KGNoYW5nZVR5cGUoc3RhdGUsICdyZW1vdGUnLCAncG9wJywgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZykpLnRvQmUoc3RhdGUpO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5yZW1vdGUuZmllbGRzWzBdLmRpc3BsYXlOYW1lKS50b0JlKCdSZWdpb24nKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBR0EsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBT0EsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsUUFBQSxHQUFBQyxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBR0EsSUFBQU0sU0FBQSxHQUFBRixzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQU8saUJBQUEsR0FBQVAsT0FBQTtBQUF1RCxTQUFBUSxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9B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
953
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl9hY3Rpb25zIiwiX3RhYmxlIiwiX3NjaGVtYXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3Byb2Nlc3NvcnMiLCJfdXRpbHMiLCJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX3Rhc2tzIiwiX3Zpc1N0YXRlIiwiX3Zpc1N0YXRlVXBkYXRlcnMiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwicmVkdWNlVmlzU3RhdGUiLCJ2aXNTdGF0ZVJlZHVjZXIiLCJhcnJvd0NpdGllcyIsInNvdXJjZSIsIlRhYmxlIiwibGF0IiwidmVjdG9yRnJvbUFycmF5IiwiRmxvYXQ2NCIsImxuZyIsInBvcHVsYXRpb24iLCJJbnQzMiIsImRhdGEiLCJwcm9jZXNzQXJyb3dCYXRjaGVzIiwiYmF0Y2hlcyIsIkVycm9yIiwid2l0aFRhYmxlcyIsIm1ha2VUYWJsZSIsIlZpc1N0YXRlQWN0aW9ucyIsImFkZExheWVyIiwiaWQiLCJ0eXBlIiwiY29uZmlnIiwiZGF0YUlkIiwiY29sdW1ucyIsImNvbG9yRmllbGQiLCJuYW1lIiwiQUxMX0ZJRUxEX1RZUEVTIiwiaW50ZWdlciIsImRlc2NyaWJlIiwidGVzdCIsImVhY2giLCJfbGF5ZXIkY29uZmlnJGNvbG9yRmkiLCJpbml0aWFsIiwib3JpZ2luYWwiLCJkYXRhc2V0cyIsImNpdGllcyIsImRhdGFDb250YWluZXIiLCJuZXh0IiwicmVuYW1lVGFibGVDb2x1bW4iLCJ0YWJsZSIsImRjIiwiZXhwZWN0IiwiZmllbGRzIiwibWFwIiwidG9FcXVhbCIsImdldFRhYmxlIiwic2NoZW1hIiwiZmxhdHRlbkRhdGEiLCJ2YWx1ZUFjY2Vzc29yIiwiaW5kZXgiLCJfIiwiZ2V0Q29sdW1uIiwidmFsdWVzIiwiYnVmZmVyIiwidG9CZSIsInJvd0FzQXJyYXkiLCJsYXllciIsImxheWVycyIsImdldFBvc2l0aW9uQWNjZXNzb3IiLCJmb3JtYXRMYXllckRhdGEiLCJBcnJheSIsImZyb20iLCJnZW9BcnJvd1ZlY3RvciIsIl9pcGMkZ2V0Q2hpbGQiLCJzYXZlZCIsImdldE1hcEpTT04iLCJ2aXNTdGF0ZSIsIm1hcFN0YXRlIiwibWFwU3R5bGUiLCJ1aVN0YXRlIiwiaGFzRGF0YSIsImpzb24iLCJKU09OIiwicGFyc2UiLCJleHBvcnRUb0pzb25TdHJpbmciLCJodG1sIiwiZXhwb3J0TWFwVG9IVE1MIiwibW9kZSIsImRhdGFzZXRzTWF0Y2giLCJtYXRjaCIsImNvbmZpZ01hdGNoIiwiaHRtbERhdGEiLCJodG1sQ29uZmlnIiwiX2kiLCJfYXJyIiwiX2xvYWRlZCRkYXRhc2V0cyIsImRvY3VtZW50IiwibG9hZGVkIiwiU2NoZW1hTWFuYWdlciIsImxvYWQiLCJkYXRhc2V0IiwiaXBjIiwidGFibGVGcm9tSVBDIiwidGFibGVUb0lQQyIsInByb2Nlc3NlZCIsInJlc3RvcmVkIiwiZ2V0Q2hpbGQiLCJLZXBsZXJUYWJsZSIsImluZm8iLCJsYWJlbCIsImNvbG9yIiwidXBkYXRlU2NoZW1hIiwiX2xlbiIsInRhYmxlcyIsIl9rZXkiLCJJTklUSUFMX1ZJU19TVEFURSIsImZyb21FbnRyaWVzIiwid2l0aEZpbHRlciIsInN0YXRlIiwiY29sdW1uIiwiY3JlYXRlT3JVcGRhdGVGaWx0ZXIiLCJ1bmRlZmluZWQiLCJ3aXRoU3luY2VkRmlsdGVyIiwicHJpbWFyeSIsInNlY29uZGFyeSIsInNldEZpbHRlciIsImNoYW5nZVR5cGUiLCJjaGFuZ2VUYWJsZUNvbHVtblR5cGUiLCJtYWtlQ2l0aWVzIiwicmVhbCIsInN0cmluZyIsInJvd3MiLCJ3aXRoQ2l0aWVzIiwiaW50ZXJhY3Rpb25Db25maWciLCJ0b29sdGlwIiwiZmllbGRzVG9TaG93IiwiZm9ybWF0IiwidGV4dExhYmVsIiwiZmllbGQiLCJhZGRDaGFydCIsInRpdGxlIiwiYXBwbHlGaWx0ZXJzIiwiZGlzcGxheSIsImNoYXJ0RGlzcGxheSIsInhBeGlzIiwiYWdncmVnYXRpb24iLCJ5QXhpcyIsImNyb3NzRmlsdGVyIiwiZW5hYmxlZCIsImZpbHRlcklkIiwiZmllbGROYW1lcyIsInZhbHVlIiwiYmVmb3JlRWFjaCIsImRyYWluVGFza3NGb3JUZXN0aW5nIiwiX2xheWVyJGNvbmZpZyRjb2xvckZpMiIsIl9sYXllciRjb25maWckdGV4dExhYiIsIl9zdGF0ZSRjaGFydHMkMCR4QXhpcyIsIl9zdGF0ZSRjaGFydHMkMCR5QXhpcyIsIl9zdGF0ZSRjaGFydHMkMCRjcm9zcyIsIl9zYXZlZFZpc1N0YXRlJGxheWVycyIsIl9zYXZlZFZpc1N0YXRlJGxheWVyczIiLCJfc2F2ZWRWaXNTdGF0ZSRsYXllcnMzIiwiX3NhdmVkVmlzU3RhdGUkY2hhcnRzIiwiaGlkZGVuQ29sdW1ucyIsInRvSGF2ZUxlbmd0aCIsImZpbHRlcnMiLCJyZWdpb24iLCJmaW5kIiwiZGlzcGxheU5hbWUiLCJjaGFydHMiLCJzYXZlIiwic2F2ZWRWaXNTdGF0ZSIsInZpc3VhbENoYW5uZWxzIiwic3RyaW5naWZ5IiwidG9Db250YWluIiwibm90IiwiX3N0YXRlJGNoYXJ0cyQwJHlBeGlzMiIsImRlbGV0ZVRhYmxlQ29sdW1uIiwidG9CZU51bGwiLCJvbmx5Iiwic2luZ2xlIiwia2VwdCIsImhpc3RvZ3JhbUNvdW50IiwiX2JpbnMiLCJiaW5zIiwicmVkdWNlIiwic3VtIiwiYmluIiwiY291bnQiLCJmaWx0ZXJlZEluZGV4IiwiX3N0YXRlJGxheWVycyRmaW5kIiwiX3N0YXRlJGxheWVycyRmaW5kMiIsIl9zdGF0ZSRjaGFydHMkMCR5QXhpczMiLCJ3ZWlnaHRGaWVsZCIsInBvcCIsInRvTWF0Y2hPYmplY3QiLCJhbmFseXplclR5cGUiLCJfc3RhdGUkZGF0YXNldHMkY2l0aWUiLCJfc3RhdGUkZGF0YXNldHMkY2l0aWUyIiwicG9seWdvbkZpbHRlciIsImZpeGVkRG9tYWluIiwidmlldyIsImlzQW5pbWF0aW5nIiwic3BlZWQiLCJGSUxURVJfVFlQRVMiLCJwb2x5Z29uIiwiZmllbGRJZHgiLCJkb21haW4iLCJwcm9wZXJ0aWVzIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsInBsb3RUeXBlIiwiUExPVF9UWVBFUyIsImhpc3RvZ3JhbSIsImxheWVySWQiLCJncHUiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwidG9CZVVuZGVmaW5lZCIsImZpbHRlclJlY29yZCIsInRvQ29udGFpbkVxdWFsIiwib2JqZWN0Q29udGFpbmluZyIsImNwdSIsInNvcnRUYWJsZUNvbHVtbiIsIlNPUlRfT1JERVIiLCJBU0NFTkRJTkciLCJzb3J0Q29sdW1uIiwic29ydE9yZGVyIiwiZXZlbnRzIiwidGltZXN0YW1wIiwic3luY2VkV2l0aExheWVyVGltZWxpbmUiLCJzeW5jVGltZWxpbmVNb2RlIiwiYW5pbWF0aW9uV2luZG93IiwiQU5JTUFUSU9OX1dJTkRPVyIsImludGVydmFsIiwidGltZUJpbnMiLCJkYXkiLCJsaW5lQ2hhcnQiLCJzZXJpZXMiLCJ5RG9tYWluIiwieERvbWFpbiIsInRpbWV6b25lIiwiaW52ZXJ0VHJlbmRDb2xvciIsInNob3dUaW1lRGlzcGxheSIsInRvSGF2ZVByb3BlcnR5IiwiZnJlZSIsIl9zdGF0ZSRkYXRhc2V0cyRzZWNvbiIsImR5bmFtaWNEb21haW4iLCJtYWtlRXZlbnRzIiwic2V0RmlsdGVyUGxvdCIsInRvQmVEZWZpbmVkIiwiX3N0YXRlJGZpbHRlcnMkMCRsaW5lIiwiX3N0YXRlJGZpbHRlcnMkMCRsaW5lMiIsIl9zdGF0ZSRmaWx0ZXJzJDAkbGluZTMiLCJncm91cEJ5IiwiZmllbGROYW1lIiwibnVtR3JvdXBzIiwiZ3JvdXBPdGhlcnMiLCJzZXJpZXNCZWZvcmUiLCJTZXQiLCJuYW1lcyIsIm5hbWVzQWZ0ZXIiLCJfc3RhdGUkZmlsdGVycyQwJHlBeGkiLCJfdGltZUZpbHRlciR0aW1lQmlucyIsIl90aW1lRmlsdGVyJHRpbWVCaW5zMiIsIl9zdGF0ZSRjaGFydHMkMCR4QXhpczIiLCJlbmROYW1lIiwidGltZUZpbHRlciIsImludGVydmFsQmlucyIsInRvQmVHcmVhdGVyVGhhbiIsImVuZEZpZWxkSWR4IiwiX25leHQkZGF0YXNldHMkY2l0aWVzIiwidGFza3MiLCJub3RpZmljYXRpb24iLCJzdWNjZWVkVGFza0luVGVzdCIsInBheWxvYWQiLCJtZXNzYWdlIiwiX3N0YXRlJGRhdGFzZXRzJGNpdGllMyIsImxvYWRDb2x1bW5TdGF0cyIsInJlcXVlc3RSZXZpc2lvbiIsImRhdGFSZXZpc2lvbiIsIl9kcmFpblRhc2tzRm9yVGVzdGluZyIsIl9kcmFpblRhc2tzRm9yVGVzdGluZzIiLCJfc2xpY2VkVG9BcnJheTIiLCJ0YXNrIiwicmVzdWx0IiwibWVhbiIsInN0YWxlU3VjY2VzcyIsImZpbHRlclByb3BzIiwicmFuZ2UiLCJmaWVsZFR5cGUiLCJjaGFuZ2VkU3RhdGUiLCJjaGFuZ2VkRmllbGQiLCJjb2x1bW5TdGF0cyIsInVwZGF0ZSIsInR5cGVzIiwiX2RyYWluVGFza3NGb3JUZXN0aW5nMyIsIl9kcmFpblRhc2tzRm9yVGVzdGluZzQiLCJwaW5UYWJsZUNvbHVtbiIsInJvdyIsInJlZnJlc2hEYXRhc2V0U3VjY2VzcyIsIm5vdE1vZGlmaWVkIiwiYWRkVG9EYXRhc2V0Iiwic3VjY2Vzc1N0YXRlIiwibG9nRXJyb3IiLCJqZXN0Iiwic3B5T24iLCJjb25zb2xlIiwibW9ja0ltcGxlbWVudGF0aW9uIiwiZXJyb3JTdGF0ZSIsImVycm9yVGFza0luVGVzdCIsIm1vY2tSZXN0b3JlIiwiaXNMb2FkaW5nU3RhdHMiLCJkdXBsaWNhdGUiLCJ0aWxlcyIsInRpbGVkIiwidW5jaGFuZ2VkIiwicmVtb3RlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbHVtbi1lZGl0LXVwZGF0ZXJzLnNwZWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtcbiAgQUxMX0ZJRUxEX1RZUEVTLFxuICBBTklNQVRJT05fV0lORE9XLFxuICBGSUxURVJfVFlQRVMsXG4gIFBMT1RfVFlQRVMsXG4gIFNPUlRfT1JERVJcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtWaXNTdGF0ZUFjdGlvbnN9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge0tlcGxlclRhYmxlfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCBTY2hlbWFNYW5hZ2VyLCB7VmlzU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG5pbXBvcnQge3Byb2Nlc3NBcnJvd0JhdGNoZXN9IGZyb20gJ0BrZXBsZXIuZ2wvcHJvY2Vzc29ycyc7XG5pbXBvcnQge1xuICBleHBvcnRNYXBUb0hUTUwsXG4gIGV4cG9ydFRvSnNvblN0cmluZyxcbiAgZ2V0TWFwSlNPTixcbiAgQXJyb3dEYXRhQ29udGFpbmVyXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcbmltcG9ydCB7ZHJhaW5UYXNrc0ZvclRlc3RpbmcsIGVycm9yVGFza0luVGVzdCwgc3VjY2VlZFRhc2tJblRlc3R9IGZyb20gJ0BrZXBsZXIuZ2wvdGFza3MnO1xuaW1wb3J0IHR5cGUge1BvbHlnb25GaWx0ZXIsIFJhbmdlRmlsdGVyLCBUaW1lUmFuZ2VGaWx0ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQgdmlzU3RhdGVSZWR1Y2VyIGZyb20gJy4vdmlzLXN0YXRlJztcbmltcG9ydCB7SU5JVElBTF9WSVNfU1RBVEV9IGZyb20gJy4vdmlzLXN0YXRlLXVwZGF0ZXJzJztcblxuY29uc3QgcmVkdWNlVmlzU3RhdGUgPSB2aXNTdGF0ZVJlZHVjZXIgYXMgKHN0YXRlOiBWaXNTdGF0ZSwgYWN0aW9uOiB1bmtub3duKSA9PiBWaXNTdGF0ZTtcblxuZnVuY3Rpb24gYXJyb3dDaXRpZXMoKSB7XG4gIGNvbnN0IHNvdXJjZSA9IG5ldyBhcnJvdy5UYWJsZSh7XG4gICAgbGF0OiBhcnJvdy52ZWN0b3JGcm9tQXJyYXkoWzM3LCBudWxsXSwgbmV3IGFycm93LkZsb2F0NjQoKSksXG4gICAgbG5nOiBhcnJvdy52ZWN0b3JGcm9tQXJyYXkoWy0xMjIsIC0xMjNdLCBuZXcgYXJyb3cuRmxvYXQ2NCgpKSxcbiAgICBwb3B1bGF0aW9uOiBhcnJvdy52ZWN0b3JGcm9tQXJyYXkoWzEwMDAsIG51bGxdLCBuZXcgYXJyb3cuSW50MzIoKSlcbiAgfSk7XG4gIGNvbnN0IGRhdGEgPSBwcm9jZXNzQXJyb3dCYXRjaGVzKHNvdXJjZS5iYXRjaGVzKTtcbiAgaWYgKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIEFycm93IGRhdGEnKTtcbiAgcmV0dXJuIHJlZHVjZVZpc1N0YXRlKFxuICAgIHdpdGhUYWJsZXMobWFrZVRhYmxlKCdjaXRpZXMnLCBkYXRhKSksXG4gICAgVmlzU3RhdGVBY3Rpb25zLmFkZExheWVyKHtcbiAgICAgIGlkOiAnY2l0aWVzLWxheWVyJyxcbiAgICAgIHR5cGU6ICdwb2ludCcsXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgZGF0YUlkOiAnY2l0aWVzJyxcbiAgICAgICAgY29sdW1uczoge2xhdDogJ2xhdCcsIGxuZzogJ2xuZyd9LFxuICAgICAgICBjb2xvckZpZWxkOiB7bmFtZTogJ3BvcHVsYXRpb24nLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1cbiAgICAgIH1cbiAgICB9KVxuICApO1xufVxuXG5kZXNjcmliZSgnQXJyb3cgY29sdW1uIG9yZGVyIHRocm91Z2ggZWRpdHMgYW5kIHNhdmVkIG1hcHMnLCAoKSA9PiB7XG4gIHRlc3QuZWFjaChbJzAnLCAnMjAyMCcsICc0Mjk0OTY3Mjk0JywgJzAwJywgJzAyMDIwJywgJy0xJywgJzEuMCcsICcxZTMnLCAnNDI5NDk2NzI5NSddKShcbiAgICAncmVuYW1lIHRvICVzIHByZXNlcnZlcyBkZXNjcmlwdG9yL3ZlY3RvciBvcmRlcicsXG4gICAgbmFtZSA9PiB7XG4gICAgICBjb25zdCBpbml0aWFsID0gYXJyb3dDaXRpZXMoKTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsID0gaW5pdGlhbC5kYXRhc2V0cy5jaXRpZXMuZGF0YUNvbnRhaW5lciBhcyBBcnJvd0RhdGFDb250YWluZXI7XG4gICAgICBjb25zdCBuZXh0ID0gcmVkdWNlVmlzU3RhdGUoXG4gICAgICAgIGluaXRpYWwsXG4gICAgICAgIFZpc1N0YXRlQWN0aW9ucy5yZW5hbWVUYWJsZUNvbHVtbignY2l0aWVzJywgJ3BvcHVsYXRpb24nLCBuYW1lKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHRhYmxlID0gbmV4dC5kYXRhc2V0cy5jaXRpZXM7XG4gICAgICBjb25zdCBkYyA9IHRhYmxlLmRhdGFDb250YWluZXIgYXMgQXJyb3dEYXRhQ29udGFpbmVyO1xuICAgICAgZXhwZWN0KHRhYmxlLmZpZWxkcy5tYXAoZiA9PiBmLm5hbWUpKS50b0VxdWFsKFsnbGF0JywgJ2xuZycsIG5hbWVdKTtcbiAgICAgIGV4cGVjdChkYy5nZXRUYWJsZSgpLnNjaGVtYS5maWVsZHMubWFwKGYgPT4gZi5uYW1lKSkudG9FcXVhbChbJ2xhdCcsICdsbmcnLCBuYW1lXSk7XG4gICAgICBleHBlY3QoZGMuZmxhdHRlbkRhdGEoKSkudG9FcXVhbChbXG4gICAgICAgIFszNywgLTEyMiwgMTAwMF0sXG4gICAgICAgIFtudWxsLCAtMTIzLCBudWxsXVxuICAgICAgXSk7XG4gICAgICBleHBlY3QodGFibGUuZmllbGRzLm1hcChmID0+IGYudmFsdWVBY2Nlc3Nvcih7aW5kZXg6IDB9KSkpLnRvRXF1YWwoWzM3LCAtMTIyLCAxMDAwXSk7XG4gICAgICB0YWJsZS5maWVsZHMuZm9yRWFjaCgoXywgaSkgPT4ge1xuICAgICAgICBleHBlY3QoZGMuZ2V0Q29sdW1uKGkpLmRhdGFbMF0udmFsdWVzLmJ1ZmZlcikudG9CZShcbiAgICAgICAgICBvcmlnaW5hbC5nZXRDb2x1bW4oaSkuZGF0YVswXS52YWx1ZXMuYnVmZmVyXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICAgIGV4cGVjdChpbml0aWFsLmRhdGFzZXRzLmNpdGllcy5maWVsZHNbMl0ubmFtZSkudG9CZSgncG9wdWxhdGlvbicpO1xuICAgICAgZXhwZWN0KG9yaWdpbmFsLmdldFRhYmxlKCkuc2NoZW1hLmZpZWxkc1syXS5uYW1lKS50b0JlKCdwb3B1bGF0aW9uJyk7XG4gICAgICBleHBlY3Qob3JpZ2luYWwucm93QXNBcnJheSgwKSkudG9FcXVhbChbMzcsIC0xMjIsIDEwMDBdKTtcbiAgICAgIGNvbnN0IGxheWVyID0gbmV4dC5sYXllcnNbMF07XG4gICAgICBleHBlY3QobGF5ZXIuZ2V0UG9zaXRpb25BY2Nlc3NvcihkYykoe2luZGV4OiAwfSkpLnRvRXF1YWwoWy0xMjIsIDM3LCAwXSk7XG4gICAgICBsYXllci5mb3JtYXRMYXllckRhdGEobmV4dC5kYXRhc2V0cyk7XG4gICAgICBleHBlY3QoQXJyYXkuZnJvbSgobGF5ZXIgYXMgYW55KS5nZW9BcnJvd1ZlY3Rvci5nZXQoMCkpKS50b0VxdWFsKFstMTIyLCAzNywgMF0pO1xuICAgICAgZXhwZWN0KGxheWVyLmNvbmZpZy5jb2xvckZpZWxkPy5uYW1lKS50b0JlKG5hbWUpO1xuICAgIH1cbiAgKTtcblxuICB0ZXN0KCdKU09OLCBIVE1MIGFuZCBuYXRpdmUgSVBDIHJlbG9hZCByZXRhaW4gdGhlIHJlbmFtZWQgdmFsdWVzIGFuZCBwb3NpdGlvbnMnLCAoKSA9PiB7XG4gICAgY29uc3QgbmV4dCA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgYXJyb3dDaXRpZXMoKSxcbiAgICAgIFZpc1N0YXRlQWN0aW9ucy5yZW5hbWVUYWJsZUNvbHVtbignY2l0aWVzJywgJ3BvcHVsYXRpb24nLCAnMjAyMCcpXG4gICAgKTtcbiAgICBjb25zdCBzYXZlZCA9IGdldE1hcEpTT04oXG4gICAgICB7dmlzU3RhdGU6IG5leHQsIG1hcFN0YXRlOiB7fSwgbWFwU3R5bGU6IHt9LCB1aVN0YXRlOiB7fX0sXG4gICAgICB7aGFzRGF0YTogdHJ1ZX1cbiAgICApO1xuICAgIGNvbnN0IGpzb24gPSBKU09OLnBhcnNlKGV4cG9ydFRvSnNvblN0cmluZyhzYXZlZCkpO1xuICAgIGNvbnN0IGh0bWwgPSBleHBvcnRNYXBUb0hUTUwoey4uLnNhdmVkLCBtb2RlOiAnUkVBRCd9KTtcbiAgICBjb25zdCBkYXRhc2V0c01hdGNoID0gaHRtbC5tYXRjaCgvY29uc3QgZGF0YXNldHMgPSAoLispOy8pO1xuICAgIGNvbnN0IGNvbmZpZ01hdGNoID0gaHRtbC5tYXRjaCgvY29uc3QgY29uZmlnID0gKC4rKTsvKTtcbiAgICBpZiAoIWRhdGFzZXRzTWF0Y2ggfHwgIWNvbmZpZ01hdGNoKSB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGVtYmVkZGVkIG1hcCBkYXRhJyk7XG4gICAgY29uc3QgaHRtbERhdGEgPSBKU09OLnBhcnNlKGRhdGFzZXRzTWF0Y2hbMV0pO1xuICAgIGNvbnN0IGh0bWxDb25maWcgPSBKU09OLnBhcnNlKGNvbmZpZ01hdGNoWzFdKTtcbiAgICBmb3IgKGNvbnN0IGRvY3VtZW50IG9mIFtqc29uLCB7ZGF0YXNldHM6IGh0bWxEYXRhLCBjb25maWc6IGh0bWxDb25maWd9XSkge1xuICAgICAgY29uc3QgbG9hZGVkID0gU2NoZW1hTWFuYWdlci5sb2FkKGRvY3VtZW50KTtcbiAgICAgIGNvbnN0IGRhdGFzZXQgPSBsb2FkZWQuZGF0YXNldHM/LlswXTtcbiAgICAgIGlmICghZGF0YXNldCkgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCByZWxvYWRlZCBkYXRhc2V0Jyk7XG4gICAgICBjb25zdCB0YWJsZSA9IG1ha2VUYWJsZSgnY2l0aWVzJywgZGF0YXNldC5kYXRhKTtcbiAgICAgIGV4cGVjdCh0YWJsZS5maWVsZHMubWFwKGYgPT4gZi5uYW1lKSkudG9FcXVhbChbJ2xhdCcsICdsbmcnLCAnMjAyMCddKTtcbiAgICAgIGV4cGVjdCh0YWJsZS5kYXRhQ29udGFpbmVyLnJvd0FzQXJyYXkoMCkpLnRvRXF1YWwoWzM3LCAtMTIyLCAxMDAwXSk7XG4gICAgICBleHBlY3QobmV4dC5sYXllcnNbMF0uZ2V0UG9zaXRpb25BY2Nlc3Nvcih0YWJsZS5kYXRhQ29udGFpbmVyKSh7aW5kZXg6IDB9KSkudG9FcXVhbChbXG4gICAgICAgIC0xMjIsIDM3LCAwXG4gICAgICBdKTtcbiAgICB9XG4gICAgY29uc3QgZGMgPSBuZXh0LmRhdGFzZXRzLmNpdGllcy5kYXRhQ29udGFpbmVyIGFzIEFycm93RGF0YUNvbnRhaW5lcjtcbiAgICBjb25zdCBpcGMgPSBhcnJvdy50YWJsZUZyb21JUEMoYXJyb3cudGFibGVUb0lQQyhkYy5nZXRUYWJsZSgpKSk7XG4gICAgY29uc3QgcHJvY2Vzc2VkID0gcHJvY2Vzc0Fycm93QmF0Y2hlcyhpcGMuYmF0Y2hlcyk7XG4gICAgaWYgKCFwcm9jZXNzZWQpIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgSVBDIGRhdGEnKTtcbiAgICBjb25zdCByZXN0b3JlZCA9IG1ha2VUYWJsZSgnY2l0aWVzJywgcHJvY2Vzc2VkKTtcbiAgICBleHBlY3QocmVzdG9yZWQuZGF0YUNvbnRhaW5lci5yb3dBc0FycmF5KDApKS50b0VxdWFsKFszNywgLTEyMiwgMTAwMF0pO1xuICAgIGV4cGVjdChpcGMuc2NoZW1hLmZpZWxkcy5tYXAoZiA9PiBmLm5hbWUpKS50b0VxdWFsKFsnbGF0JywgJ2xuZycsICcyMDIwJ10pO1xuICAgIGV4cGVjdChpcGMuZ2V0Q2hpbGQoJzIwMjAnKT8uZ2V0KDApKS50b0JlKDEwMDApO1xuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiBtYWtlVGFibGUoaWQ6IHN0cmluZywgZGF0YTogUGFyYW1ldGVyczxLZXBsZXJUYWJsZVsndXBkYXRlU2NoZW1hJ10+WzBdKSB7XG4gIGNvbnN0IHRhYmxlID0gbmV3IEtlcGxlclRhYmxlKHtcbiAgICBpbmZvOiB7aWQsIGxhYmVsOiBpZCwgdHlwZTogJ2xvY2FsJ30sXG4gICAgY29sb3I6IFswLCAwLCAwXVxuICB9KTtcbiAgcmV0dXJuIHRhYmxlLnVwZGF0ZVNjaGVtYShkYXRhKTtcbn1cblxuZnVuY3Rpb24gd2l0aFRhYmxlcyguLi50YWJsZXM6IEtlcGxlclRhYmxlW10pOiBWaXNTdGF0ZSB7XG4gIHJldHVybiB7XG4gICAgLi4uSU5JVElBTF9WSVNfU1RBVEUsXG4gICAgZGF0YXNldHM6IE9iamVjdC5mcm9tRW50cmllcyh0YWJsZXMubWFwKHRhYmxlID0+IFt0YWJsZS5pZCwgdGFibGVdKSlcbiAgfTtcbn1cblxuZnVuY3Rpb24gd2l0aEZpbHRlcihzdGF0ZTogVmlzU3RhdGUsIGRhdGFJZDogc3RyaW5nLCBjb2x1bW46IHN0cmluZyk6IFZpc1N0YXRlIHtcbiAgcmV0dXJuIHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuY3JlYXRlT3JVcGRhdGVGaWx0ZXIodW5kZWZpbmVkLCBkYXRhSWQsIGNvbHVtbikpO1xufVxuXG5mdW5jdGlvbiB3aXRoU3luY2VkRmlsdGVyKHByaW1hcnk6IEtlcGxlclRhYmxlLCBzZWNvbmRhcnk6IEtlcGxlclRhYmxlLCBjb2x1bW46IHN0cmluZyk6IFZpc1N0YXRlIHtcbiAgcmV0dXJuIHJlZHVjZVZpc1N0YXRlKFxuICAgIHdpdGhGaWx0ZXIod2l0aFRhYmxlcyhwcmltYXJ5LCBzZWNvbmRhcnkpLCBwcmltYXJ5LmlkLCBjb2x1bW4pLFxuICAgIFZpc1N0YXRlQWN0aW9ucy5zZXRGaWx0ZXIoMCwgWydkYXRhSWQnLCAnbmFtZSddLCBbc2Vjb25kYXJ5LmlkLCBjb2x1bW5dLCAxKVxuICApO1xufVxuXG5mdW5jdGlvbiBjaGFuZ2VUeXBlKHN0YXRlOiBWaXNTdGF0ZSwgZGF0YUlkOiBzdHJpbmcsIGNvbHVtbjogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBWaXNTdGF0ZSB7XG4gIHJldHVybiByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLmNoYW5nZVRhYmxlQ29sdW1uVHlwZShkYXRhSWQsIGNvbHVtbiwgdHlwZSkpO1xufVxuXG5mdW5jdGlvbiBtYWtlQ2l0aWVzKCkge1xuICBjb25zdCB0YWJsZSA9IG5ldyBLZXBsZXJUYWJsZSh7XG4gICAgaW5mbzoge2lkOiAnY2l0aWVzJywgbGFiZWw6ICdjaXRpZXMnLCB0eXBlOiAnbG9jYWwnfSxcbiAgICBjb2xvcjogWzAsIDAsIDBdXG4gIH0pO1xuICB0YWJsZS51cGRhdGVTY2hlbWEoe1xuICAgIGZpZWxkczogW1xuICAgICAge25hbWU6ICdsYXQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMucmVhbH0sXG4gICAgICB7bmFtZTogJ2xuZycsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5yZWFsfSxcbiAgICAgIHtuYW1lOiAncmVnaW9uJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ30sXG4gICAgICB7bmFtZTogJ3BvcCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyfVxuICAgIF0sXG4gICAgcm93czogW1xuICAgICAgWzM3LjcsIC0xMjIuNCwgJ3dlc3QnLCAxMF0sXG4gICAgICBbNDAuNywgLTc0LjAsICdlYXN0JywgNDBdXG4gICAgXVxuICB9KTtcbiAgcmV0dXJuIHRhYmxlO1xufVxuXG5mdW5jdGlvbiB3aXRoQ2l0aWVzKCk6IFZpc1N0YXRlIHtcbiAgY29uc3QgY2l0aWVzID0gbWFrZUNpdGllcygpO1xuICBsZXQgc3RhdGU6IFZpc1N0YXRlID0ge1xuICAgIC4uLklOSVRJQUxfVklTX1NUQVRFLFxuICAgIGRhdGFzZXRzOiB7Y2l0aWVzfSxcbiAgICBpbnRlcmFjdGlvbkNvbmZpZzoge1xuICAgICAgLi4uSU5JVElBTF9WSVNfU1RBVEUuaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICB0b29sdGlwOiB7XG4gICAgICAgIC4uLklOSVRJQUxfVklTX1NUQVRFLmludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAsXG4gICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgIC4uLklOSVRJQUxfVklTX1NUQVRFLmludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAuY29uZmlnLFxuICAgICAgICAgIGZpZWxkc1RvU2hvdzoge1xuICAgICAgICAgICAgY2l0aWVzOiBbe25hbWU6ICdyZWdpb24nLCBmb3JtYXQ6IG51bGx9XVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgIHN0YXRlLFxuICAgIFZpc1N0YXRlQWN0aW9ucy5hZGRMYXllcih7XG4gICAgICBpZDogJ2NpdGllcy1sYXllcicsXG4gICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIGRhdGFJZDogJ2NpdGllcycsXG4gICAgICAgIGxhYmVsOiAnY2l0aWVzJyxcbiAgICAgICAgY29sb3I6IFsyNTUsIDAsIDBdLFxuICAgICAgICBjb2x1bW5zOiB7bGF0OiAnbGF0JywgbG5nOiAnbG5nJ30sXG4gICAgICAgIGNvbG9yRmllbGQ6IHtuYW1lOiAncmVnaW9uJywgdHlwZTogJ3N0cmluZyd9LFxuICAgICAgICB0ZXh0TGFiZWw6IFt7ZmllbGQ6IHtuYW1lOiAncmVnaW9uJywgdHlwZTogJ3N0cmluZyd9fV1cbiAgICAgIH1cbiAgICB9KVxuICApO1xuICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgIHN0YXRlLFxuICAgIFZpc1N0YXRlQWN0aW9ucy5jcmVhdGVPclVwZGF0ZUZpbHRlcih1bmRlZmluZWQsICdjaXRpZXMnLCAncmVnaW9uJylcbiAgKTtcbiAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICBzdGF0ZSxcbiAgICBWaXNTdGF0ZUFjdGlvbnMuYWRkQ2hhcnQoe1xuICAgICAgaWQ6ICdyZWdpb24tY2hhcnQnLFxuICAgICAgdGl0bGU6ICdSZWdpb25zJyxcbiAgICAgIHR5cGU6ICdiYXJDaGFydCcsXG4gICAgICBkYXRhSWQ6ICdjaXRpZXMnLFxuICAgICAgYXBwbHlGaWx0ZXJzOiB0cnVlLFxuICAgICAgZGlzcGxheToge30sXG4gICAgICBjaGFydERpc3BsYXk6IHt9LFxuICAgICAgeEF4aXM6IHtmaWVsZDoge25hbWU6ICdyZWdpb24nLCB0eXBlOiAnc3RyaW5nJ30sIGFnZ3JlZ2F0aW9uOiBudWxsLCB0aXRsZTogJ3JlZ2lvbid9LFxuICAgICAgeUF4aXM6IHtmaWVsZDoge25hbWU6ICdwb3AnLCB0eXBlOiAnaW50ZWdlcid9LCBhZ2dyZWdhdGlvbjogJ3N1bScsIHRpdGxlOiAnUG9wdWxhdGlvbid9LFxuICAgICAgY3Jvc3NGaWx0ZXI6IHtcbiAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgIGZpbHRlcklkOiAncmVnaW9uLWNoYXJ0LWZpbHRlcicsXG4gICAgICAgIGZpZWxkTmFtZXM6IHt4QXhpczogJ3JlZ2lvbid9LFxuICAgICAgICB2YWx1ZToge31cbiAgICAgIH1cbiAgICB9KVxuICApO1xuICByZXR1cm4gc3RhdGU7XG59XG5cbmRlc2NyaWJlKCdjb2x1bW4gZWRpdHMnLCAoKSA9PiB7XG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGRyYWluVGFza3NGb3JUZXN0aW5nKCk7XG4gIH0pO1xuXG4gIHRlc3QoJ3JlbmFtZSBjaGFuZ2VzIHRoZSBmaWVsZCBpZGVudGl0eSBzdG9yZWQgaW4gbGF5ZXJzLCBmaWx0ZXJzLCBhbmQgc2F2ZWQgbWFwcycsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgc3RhdGUuZGF0YXNldHMuY2l0aWVzLmhpZGRlbkNvbHVtbnMgPSBbJ3JlZ2lvbicsICdwb3AnXTtcbiAgICBleHBlY3Qoc3RhdGUubGF5ZXJzKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ubmFtZSkudG9FcXVhbChbJ3JlZ2lvbiddKTtcblxuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5yZW5hbWVUYWJsZUNvbHVtbignY2l0aWVzJywgJ3JlZ2lvbicsICdhcmVhJykpO1xuXG4gICAgY29uc3QgcmVnaW9uID0gc3RhdGUuZGF0YXNldHMuY2l0aWVzLmZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLm5hbWUgPT09ICdhcmVhJyk7XG4gICAgZXhwZWN0KHJlZ2lvbj8ubmFtZSkudG9CZSgnYXJlYScpO1xuICAgIGV4cGVjdChyZWdpb24/LmlkKS50b0JlKCdhcmVhJyk7XG4gICAgZXhwZWN0KHJlZ2lvbj8uZGlzcGxheU5hbWUpLnRvQmUoJ2FyZWEnKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGQubmFtZSkpLnRvRXF1YWwoW1xuICAgICAgJ2xhdCcsXG4gICAgICAnbG5nJyxcbiAgICAgICdhcmVhJyxcbiAgICAgICdwb3AnXG4gICAgXSk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmNpdGllcy5kYXRhQ29udGFpbmVyLnJvd0FzQXJyYXkoMClbMl0pLnRvQmUoJ3dlc3QnKTtcblxuICAgIGNvbnN0IGxheWVyID0gc3RhdGUubGF5ZXJzWzBdO1xuICAgIGV4cGVjdChsYXllci5jb25maWcuY29sdW1ucy5sYXQudmFsdWUpLnRvQmUoJ2xhdCcpO1xuICAgIGV4cGVjdChsYXllci5jb25maWcuY29sdW1ucy5sbmcudmFsdWUpLnRvQmUoJ2xuZycpO1xuICAgIGV4cGVjdChsYXllci5jb25maWcuY29sb3JGaWVsZD8ubmFtZSkudG9CZSgnYXJlYScpO1xuICAgIGV4cGVjdChsYXllci5jb25maWcudGV4dExhYmVsWzBdLmZpZWxkPy5uYW1lKS50b0JlKCdhcmVhJyk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ubmFtZSkudG9FcXVhbChbJ2FyZWEnXSk7XG4gICAgZXhwZWN0KHN0YXRlLmNoYXJ0c1swXS54QXhpcz8uZmllbGQ/Lm5hbWUpLnRvQmUoJ2FyZWEnKTtcbiAgICBleHBlY3Qoc3RhdGUuY2hhcnRzWzBdLnlBeGlzPy5maWVsZD8ubmFtZSkudG9CZSgncG9wJyk7XG4gICAgZXhwZWN0KHN0YXRlLmNoYXJ0c1swXS5jcm9zc0ZpbHRlcj8uZmllbGROYW1lcykudG9FcXVhbCh7eEF4aXM6ICdhcmVhJ30pO1xuICAgIGV4cGVjdChzdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwLmNvbmZpZy5maWVsZHNUb1Nob3cuY2l0aWVzWzBdLm5hbWUpLnRvQmUoJ2FyZWEnKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmhpZGRlbkNvbHVtbnMpLnRvRXF1YWwoWydhcmVhJywgJ3BvcCddKTtcblxuICAgIGNvbnN0IHNhdmVkID0gU2NoZW1hTWFuYWdlci5zYXZlKHtcbiAgICAgIHZpc1N0YXRlOiBzdGF0ZSxcbiAgICAgIG1hcFN0YXRlOiB7fSxcbiAgICAgIG1hcFN0eWxlOiB7fSxcbiAgICAgIHVpU3RhdGU6IHt9XG4gICAgfSk7XG4gICAgY29uc3Qgc2F2ZWRWaXNTdGF0ZSA9IHNhdmVkLmNvbmZpZy5jb25maWcudmlzU3RhdGU7XG4gICAgZXhwZWN0KHNhdmVkVmlzU3RhdGUubGF5ZXJzPy5bMF0udmlzdWFsQ2hhbm5lbHM/LmNvbG9yRmllbGQpLnRvRXF1YWwoe1xuICAgICAgbmFtZTogJ2FyZWEnLFxuICAgICAgdHlwZTogJ3N0cmluZydcbiAgICB9KTtcbiAgICBleHBlY3Qoc2F2ZWRWaXNTdGF0ZS5sYXllcnM/LlswXS5jb25maWcuY29sdW1ucy5sYXQpLnRvQmUoJ2xhdCcpO1xuICAgIGV4cGVjdChzYXZlZFZpc1N0YXRlLmxheWVycz8uWzBdLmNvbmZpZy50ZXh0TGFiZWw/LlswXS5maWVsZD8ubmFtZSkudG9CZSgnYXJlYScpO1xuICAgIGV4cGVjdChKU09OLnN0cmluZ2lmeShzYXZlZFZpc1N0YXRlLmZpbHRlcnMpKS50b0NvbnRhaW4oJ2FyZWEnKTtcbiAgICBleHBlY3QoSlNPTi5zdHJpbmdpZnkoc2F2ZWRWaXNTdGF0ZS5maWx0ZXJzKSkubm90LnRvQ29udGFpbigncmVnaW9uJyk7XG4gICAgZXhwZWN0KHNhdmVkVmlzU3RhdGUuY2hhcnRzPy5bMF0ueEF4aXM/LmZpZWxkPy5uYW1lKS50b0JlKCdhcmVhJyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2RlbGV0ZSBkcm9wcyByZWZlcmVuY2VzIGFuZCByZWZ1c2VzIHRoZSBsYXN0IGNvbHVtbicsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgc3RhdGUuZGF0YXNldHMuY2l0aWVzLmhpZGRlbkNvbHVtbnMgPSBbJ3JlZ2lvbicsICdwb3AnXTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuZGVsZXRlVGFibGVDb2x1bW4oJ2NpdGllcycsICdwb3AnKSk7XG5cbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGQubmFtZSkpLnRvRXF1YWwoWydsYXQnLCAnbG5nJywgJ3JlZ2lvbiddKTtcbiAgICBleHBlY3Qoc3RhdGUubGF5ZXJzKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnMpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgICBleHBlY3Qoc3RhdGUuY2hhcnRzWzBdLnlBeGlzPy5maWVsZCkudG9CZU51bGwoKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmhpZGRlbkNvbHVtbnMpLnRvRXF1YWwoWydyZWdpb24nXSk7XG5cbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuZGVsZXRlVGFibGVDb2x1bW4oJ2NpdGllcycsICdsYXQnKSk7XG4gICAgZXhwZWN0KHN0YXRlLmxheWVycykudG9IYXZlTGVuZ3RoKDApO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC5uYW1lKSkudG9FcXVhbChbJ2xuZycsICdyZWdpb24nXSk7XG5cbiAgICBjb25zdCBvbmx5ID0gbmV3IEtlcGxlclRhYmxlKHtcbiAgICAgIGluZm86IHtpZDogJ29ubHknLCBsYWJlbDogJ29ubHknLCB0eXBlOiAnbG9jYWwnfSxcbiAgICAgIGNvbG9yOiBbMCwgMCwgMF1cbiAgICB9KTtcbiAgICBvbmx5LnVwZGF0ZVNjaGVtYSh7XG4gICAgICBmaWVsZHM6IFt7bmFtZTogJ3JlZ2lvbicsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmd9XSxcbiAgICAgIHJvd3M6IFtbJ3dlc3QnXV1cbiAgICB9KTtcbiAgICBjb25zdCBzaW5nbGU6IFZpc1N0YXRlID0gey4uLklOSVRJQUxfVklTX1NUQVRFLCBkYXRhc2V0czoge29ubHl9fTtcbiAgICBjb25zdCBrZXB0ID0gcmVkdWNlVmlzU3RhdGUoc2luZ2xlLCBWaXNTdGF0ZUFjdGlvbnMuZGVsZXRlVGFibGVDb2x1bW4oJ29ubHknLCAncmVnaW9uJykpO1xuICAgIGV4cGVjdChrZXB0LmRhdGFzZXRzLm9ubHkuZmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC5uYW1lKSkudG9FcXVhbChbJ3JlZ2lvbiddKTtcbiAgfSk7XG5cbiAgdGVzdCgnZGVsZXRpbmcgYW4gdW5yZWxhdGVkIGNvbHVtbiBwcmVzZXJ2ZXMgYW4gaW52ZXJ0ZWQgbnVtZXJpYyBoaXN0b2dyYW0nLCAoKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBtYWtlVGFibGUoJ2RhdGEnLCB7XG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAge25hbWU6ICd1bnVzZWQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuc3RyaW5nfSxcbiAgICAgICAge25hbWU6ICd2YWx1ZScsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyfSxcbiAgICAgICAge25hbWU6ICdjYXRlZ29yeScsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmd9XG4gICAgICBdLFxuICAgICAgcm93czogW1xuICAgICAgICBbJ3gnLCAxLCAnQSddLFxuICAgICAgICBbJ3gnLCAyLCAnQiddLFxuICAgICAgICBbJ3gnLCAzLCAnQSddXG4gICAgICBdXG4gICAgfSk7XG4gICAgbGV0IHN0YXRlID0gd2l0aEZpbHRlcih3aXRoVGFibGVzKHRhYmxlKSwgJ2RhdGEnLCAnY2F0ZWdvcnknKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuc2V0RmlsdGVyKDAsICd2YWx1ZScsIFsnQSddKSk7XG4gICAgc3RhdGUgPSB3aXRoRmlsdGVyKHN0YXRlLCAnZGF0YScsICd2YWx1ZScpO1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5zZXRGaWx0ZXIoMSwgJ3ZhbHVlJywgWzIsIDJdKSk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLnNldEZpbHRlcigxLCAnaW52ZXJ0ZWQnLCB0cnVlKSk7XG4gICAgY29uc3QgaGlzdG9ncmFtQ291bnQgPSAoKSA9PlxuICAgICAgKHN0YXRlLmZpbHRlcnNbMV0gYXMgUmFuZ2VGaWx0ZXIpLmJpbnM/LmRhdGE/LnJlZHVjZSgoc3VtLCBiaW4pID0+IHN1bSArIGJpbi5jb3VudCwgMCk7XG4gICAgZXhwZWN0KGhpc3RvZ3JhbUNvdW50KCkpLnRvQmUoMik7XG5cbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuZGVsZXRlVGFibGVDb2x1bW4oJ2RhdGEnLCAndW51c2VkJykpO1xuXG4gICAgZXhwZWN0KGhpc3RvZ3JhbUNvdW50KCkpLnRvQmUoMik7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmRhdGEuZmlsdGVyZWRJbmRleCkudG9FcXVhbChbMCwgMl0pO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5kYXRhLmZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGQudHlwZSkpLnRvRXF1YWwoW1xuICAgICAgQUxMX0ZJRUxEX1RZUEVTLmludGVnZXIsXG4gICAgICBBTExfRklFTERfVFlQRVMuc3RyaW5nXG4gICAgXSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3R5cGUgY2hhbmdlIGNvbnZlcnRzIHZhbHVlcyBhbmQgcmVjb25jaWxlcyBpbmNvbXBhdGlibGUgcmVmZXJlbmNlcycsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLmFkZExheWVyKHtcbiAgICAgICAgaWQ6ICdjaXRpZXMtaGVhdG1hcCcsXG4gICAgICAgIHR5cGU6ICdoZWF0bWFwJyxcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgZGF0YUlkOiAnY2l0aWVzJyxcbiAgICAgICAgICBsYWJlbDogJ2NpdGllcyBoZWF0bWFwJyxcbiAgICAgICAgICBjb2xvcjogWzI1NSwgMCwgMF0sXG4gICAgICAgICAgY29sdW1uczoge2xhdDogJ2xhdCcsIGxuZzogJ2xuZyd9LFxuICAgICAgICAgIHdlaWdodEZpZWxkOiB7bmFtZTogJ3BvcCcsIHR5cGU6ICdpbnRlZ2VyJ30sXG4gICAgICAgICAgdGV4dExhYmVsOiBbe2ZpZWxkOiB7bmFtZTogJ3BvcCcsIHR5cGU6ICdpbnRlZ2VyJ319XVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgc3RhdGUgPSBjaGFuZ2VUeXBlKHN0YXRlLCAnY2l0aWVzJywgJ3BvcCcsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuXG4gICAgY29uc3QgcG9wID0gc3RhdGUuZGF0YXNldHMuY2l0aWVzLmZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLm5hbWUgPT09ICdwb3AnKTtcbiAgICBleHBlY3QocG9wKS50b01hdGNoT2JqZWN0KHt0eXBlOiBBTExfRklFTERfVFlQRVMuc3RyaW5nLCBhbmFseXplclR5cGU6ICdTVFJJTkcnLCBmb3JtYXQ6ICcnfSk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmNpdGllcy5kYXRhQ29udGFpbmVyLnJvd0FzQXJyYXkoMClbM10pLnRvQmUoJzEwJyk7XG4gICAgZXhwZWN0KHN0YXRlLmxheWVycykudG9IYXZlTGVuZ3RoKDIpO1xuICAgIGV4cGVjdChcbiAgICAgIChzdGF0ZS5sYXllcnMuZmluZChsYXllciA9PiBsYXllci5pZCA9PT0gJ2NpdGllcy1oZWF0bWFwJyk/LmNvbmZpZyBhcyB7d2VpZ2h0RmllbGQ/OiB1bmtub3dufSlcbiAgICAgICAgLndlaWdodEZpZWxkXG4gICAgKS50b0JlTnVsbCgpO1xuICAgIGV4cGVjdChcbiAgICAgIHN0YXRlLmxheWVycy5maW5kKGxheWVyID0+IGxheWVyLmlkID09PSAnY2l0aWVzLWhlYXRtYXAnKT8uY29uZmlnLnRleHRMYWJlbFswXS5maWVsZFxuICAgICkudG9NYXRjaE9iamVjdCh7bmFtZTogJ3BvcCcsIHR5cGU6ICdzdHJpbmcnfSk7XG4gICAgZXhwZWN0KHN0YXRlLmNoYXJ0c1swXS55QXhpcz8uZmllbGQpLnRvRXF1YWwoe25hbWU6ICdwb3AnLCB0eXBlOiAnc3RyaW5nJ30pO1xuICB9KTtcblxuICB0ZXN0KCd0eXBlIGNoYW5nZSBwcmVzZXJ2ZXMgcG9seWdvbiBmaWx0ZXJzIHRhcmdldGluZyB0aGUgZGF0YXNldCcsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgY29uc3QgcG9seWdvbkZpbHRlcjogUG9seWdvbkZpbHRlciA9IHtcbiAgICAgIGlkOiAncG9seWdvbi1maWx0ZXInLFxuICAgICAgZGF0YUlkOiBbJ2NpdGllcyddLFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIGZpeGVkRG9tYWluOiB0cnVlLFxuICAgICAgdmlldzogJ3NpZGUnLFxuICAgICAgaXNBbmltYXRpbmc6IGZhbHNlLFxuICAgICAgc3BlZWQ6IDEsXG4gICAgICBuYW1lOiBbXSxcbiAgICAgIHR5cGU6IEZJTFRFUl9UWVBFUy5wb2x5Z29uLFxuICAgICAgZmllbGRJZHg6IFtdLFxuICAgICAgZG9tYWluOiBudWxsLFxuICAgICAgdmFsdWU6IHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBpZDogJ3BvbHlnb24tc2VsZWN0aW9uJyxcbiAgICAgICAgcHJvcGVydGllczoge2ZpbHRlcklkOiAncG9seWdvbi1maWx0ZXInfSxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgWy0xMjMsIDM3XSxcbiAgICAgICAgICAgICAgWy0xMjIsIDM3XSxcbiAgICAgICAgICAgICAgWy0xMjIsIDM4XSxcbiAgICAgICAgICAgICAgWy0xMjMsIDM3XVxuICAgICAgICAgICAgXVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHBsb3RUeXBlOiB7dHlwZTogUExPVF9UWVBFUy5oaXN0b2dyYW19LFxuICAgICAgeUF4aXM6IG51bGwsXG4gICAgICBsYXllcklkOiBbJ2NpdGllcy1sYXllciddLFxuICAgICAgZ3B1OiBmYWxzZVxuICAgIH07XG5cbiAgICBzdGF0ZSA9IHsuLi5zdGF0ZSwgZmlsdGVyczogWy4uLnN0YXRlLmZpbHRlcnMsIHBvbHlnb25GaWx0ZXJdfTtcbiAgICBzdGF0ZSA9IGNoYW5nZVR5cGUoc3RhdGUsICdjaXRpZXMnLCAncG9wJywgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZyk7XG5cbiAgICBleHBlY3Qoc3RhdGUuZmlsdGVycy5maW5kKGZpbHRlciA9PiBmaWx0ZXIuaWQgPT09IHBvbHlnb25GaWx0ZXIuaWQpKS50b0JlKHBvbHlnb25GaWx0ZXIpO1xuXG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLmRlbGV0ZVRhYmxlQ29sdW1uKCdjaXRpZXMnLCAnbGF0JykpO1xuXG4gICAgZXhwZWN0KHN0YXRlLmxheWVycykudG9IYXZlTGVuZ3RoKDApO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzLmZpbmQoZmlsdGVyID0+IGZpbHRlci5pZCA9PT0gcG9seWdvbkZpbHRlci5pZCkpLnRvQmVVbmRlZmluZWQoKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmZpbHRlclJlY29yZD8uZ3B1KS5ub3QudG9Db250YWluRXF1YWwoXG4gICAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7aWQ6IHBvbHlnb25GaWx0ZXIuaWR9KVxuICAgICk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmNpdGllcy5maWx0ZXJSZWNvcmQ/LmNwdSkubm90LnRvQ29udGFpbkVxdWFsKFxuICAgICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe2lkOiBwb2x5Z29uRmlsdGVyLmlkfSlcbiAgICApO1xuICB9KTtcblxuICB0ZXN0KCd0eXBlIGNoYW5nZSBwcmVzZXJ2ZXMgYW4gZXhpc3Rpbmcgc29ydCBvbiBhbm90aGVyIGNvbHVtbicsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLnNvcnRUYWJsZUNvbHVtbignY2l0aWVzJywgJ3JlZ2lvbicsIFNPUlRfT1JERVIuQVNDRU5ESU5HKVxuICAgICk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmNpdGllcy5zb3J0Q29sdW1uKS50b0VxdWFsKHtyZWdpb246IFNPUlRfT1JERVIuQVNDRU5ESU5HfSk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmNpdGllcy5zb3J0T3JkZXIpLnRvRXF1YWwoWzEsIDBdKTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ2NpdGllcycsICdwb3AnLCBBTExfRklFTERfVFlQRVMuc3RyaW5nKTtcblxuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuc29ydENvbHVtbikudG9FcXVhbCh7cmVnaW9uOiBTT1JUX09SREVSLkFTQ0VORElOR30pO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuc29ydE9yZGVyKS50b0VxdWFsKFsxLCAwXSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3R5cGUgY2hhbmdlIGNsZWFycyB0aW1lbGluZSBzdGF0ZSB3aGVuIGEgdGltZSBmaWx0ZXIgYmVjb21lcyBub24tdGltZScsICgpID0+IHtcbiAgICBjb25zdCBldmVudHMgPSBtYWtlVGFibGUoJ2V2ZW50cycsIHtcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7bmFtZTogJ3N0YXJ0JywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcCwgYW5hbHl6ZXJUeXBlOiAnREFURVRJTUUnfSxcbiAgICAgICAge25hbWU6ICdhbW91bnQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1cbiAgICAgIF0sXG4gICAgICByb3dzOiBbXG4gICAgICAgIFsnMjAyNC0wMS0wMVQwMDowMDowMFonLCAxMF0sXG4gICAgICAgIFsnMjAyNC0wMS0wMlQwMDowMDowMFonLCAyMF1cbiAgICAgIF1cbiAgICB9KTtcbiAgICBsZXQgc3RhdGUgPSB3aXRoRmlsdGVyKHdpdGhUYWJsZXMoZXZlbnRzKSwgJ2V2ZW50cycsICdzdGFydCcpO1xuICAgIHN0YXRlID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBmaWx0ZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAuLi4oc3RhdGUuZmlsdGVyc1swXSBhcyBUaW1lUmFuZ2VGaWx0ZXIpLFxuICAgICAgICAgIHN5bmNlZFdpdGhMYXllclRpbWVsaW5lOiB0cnVlLFxuICAgICAgICAgIHN5bmNUaW1lbGluZU1vZGU6IDEgYXMgY29uc3QsXG4gICAgICAgICAgaXNBbmltYXRpbmc6IHRydWUsXG4gICAgICAgICAgYW5pbWF0aW9uV2luZG93OiBBTklNQVRJT05fV0lORE9XLmludGVydmFsLFxuICAgICAgICAgIHRpbWVCaW5zOiB7ZXZlbnRzOiB7ZGF5OiBbXX19LFxuICAgICAgICAgIGxpbmVDaGFydDoge1xuICAgICAgICAgICAgc2VyaWVzOiBbXSxcbiAgICAgICAgICAgIHlEb21haW46IFswLCAxXSxcbiAgICAgICAgICAgIHhEb21haW46IFswLCAxXSxcbiAgICAgICAgICAgIGFnZ3JlZ2F0aW9uOiAnc3VtJyxcbiAgICAgICAgICAgIGludGVydmFsOiAnZGF5JyxcbiAgICAgICAgICAgIHlBeGlzOiAnYW1vdW50J1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdGltZXpvbmU6ICdVVEMnLFxuICAgICAgICAgIGludmVydFRyZW5kQ29sb3I6IHRydWUsXG4gICAgICAgICAgc2hvd1RpbWVEaXNwbGF5OiB0cnVlLFxuICAgICAgICAgIHlBeGlzOiBzdGF0ZS5kYXRhc2V0cy5ldmVudHMuZmllbGRzWzFdLFxuICAgICAgICAgIHBsb3RUeXBlOiB7dHlwZTogUExPVF9UWVBFUy5saW5lQ2hhcnQsIGludGVydmFsOiAnZGF5JywgYWdncmVnYXRpb246ICdzdW0nfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ2V2ZW50cycsICdzdGFydCcsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuXG4gICAgY29uc3QgZmlsdGVyID0gc3RhdGUuZmlsdGVyc1swXTtcbiAgICBleHBlY3QoZmlsdGVyLnR5cGUpLnRvQmUoJ211bHRpU2VsZWN0Jyk7XG4gICAgZXhwZWN0KGZpbHRlcikubm90LnRvSGF2ZVByb3BlcnR5KCdzeW5jZWRXaXRoTGF5ZXJUaW1lbGluZScpO1xuICAgIGV4cGVjdChmaWx0ZXIpLm5vdC50b0hhdmVQcm9wZXJ0eSgnc3luY1RpbWVsaW5lTW9kZScpO1xuICAgIGV4cGVjdChmaWx0ZXIpLm5vdC50b0hhdmVQcm9wZXJ0eSgndGltZUJpbnMnKTtcbiAgICBleHBlY3QoZmlsdGVyKS5ub3QudG9IYXZlUHJvcGVydHkoJ2xpbmVDaGFydCcpO1xuICAgIGV4cGVjdChmaWx0ZXIpLm5vdC50b0hhdmVQcm9wZXJ0eSgndGltZXpvbmUnKTtcbiAgICBleHBlY3QoZmlsdGVyKS5ub3QudG9IYXZlUHJvcGVydHkoJ2ludmVydFRyZW5kQ29sb3InKTtcbiAgICBleHBlY3QoZmlsdGVyKS5ub3QudG9IYXZlUHJvcGVydHkoJ3Nob3dUaW1lRGlzcGxheScpO1xuICAgIGV4cGVjdChmaWx0ZXIpLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgZml4ZWREb21haW46IGZhbHNlLFxuICAgICAgaXNBbmltYXRpbmc6IGZhbHNlLFxuICAgICAgYW5pbWF0aW9uV2luZG93OiBBTklNQVRJT05fV0lORE9XLmZyZWUsXG4gICAgICB5QXhpczogbnVsbCxcbiAgICAgIHBsb3RUeXBlOiB7dHlwZTogUExPVF9UWVBFUy5oaXN0b2dyYW19XG4gICAgfSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3R5cGUgY2hhbmdlIGRldGFjaGVzIGFuIGluY29tcGF0aWJsZSBzeW5jZWQgZmlsdGVyIG1lbWJlciBhbmQgcmVmaWx0ZXJzIGl0cyBkYXRhc2V0JywgKCkgPT4ge1xuICAgIGNvbnN0IHByaW1hcnkgPSBtYWtlVGFibGUoJ3ByaW1hcnknLCB7XG4gICAgICBmaWVsZHM6IFt7bmFtZTogJ3ZhbHVlJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJ9XSxcbiAgICAgIHJvd3M6IFtbMV0sIFsyXV1cbiAgICB9KTtcbiAgICBjb25zdCBzZWNvbmRhcnkgPSBtYWtlVGFibGUoJ3NlY29uZGFyeScsIHtcbiAgICAgIGZpZWxkczogW3tuYW1lOiAndmFsdWUnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1dLFxuICAgICAgcm93czogW1sxXSwgWzNdXVxuICAgIH0pO1xuXG4gICAgbGV0IHN0YXRlID0gd2l0aFN5bmNlZEZpbHRlcihwcmltYXJ5LCBzZWNvbmRhcnksICd2YWx1ZScpO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmRhdGFJZCkudG9FcXVhbChbJ3ByaW1hcnknLCAnc2Vjb25kYXJ5J10pO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5zZWNvbmRhcnkuZmlsdGVyUmVjb3JkPy5ncHUpLnRvSGF2ZUxlbmd0aCgxKTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ3NlY29uZGFyeScsICd2YWx1ZScsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuXG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0uZGF0YUlkKS50b0VxdWFsKFsncHJpbWFyeSddKTtcbiAgICBleHBlY3Qoc3RhdGUuZmlsdGVyc1swXS5uYW1lKS50b0VxdWFsKFsndmFsdWUnXSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0udHlwZSkudG9CZSgncmFuZ2UnKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuc2Vjb25kYXJ5LmZpbHRlclJlY29yZCkudG9NYXRjaE9iamVjdCh7XG4gICAgICBkeW5hbWljRG9tYWluOiBbXSxcbiAgICAgIGZpeGVkRG9tYWluOiBbXSxcbiAgICAgIGNwdTogW10sXG4gICAgICBncHU6IFtdXG4gICAgfSk7XG4gIH0pO1xuXG4gIHRlc3QoJ2NoYW5naW5nIGEgc3luY2VkIHNlY29uZGFyeSBkYXRhc2V0IGRvZXMgbm90IHJlY29uY2lsZSB0aGUgcHJpbWFyeSBwbG90IGF4aXMnLCAoKSA9PiB7XG4gICAgY29uc3QgbWFrZUV2ZW50cyA9IChpZDogc3RyaW5nKSA9PlxuICAgICAgbWFrZVRhYmxlKGlkLCB7XG4gICAgICAgIGZpZWxkczogW1xuICAgICAgICAgIHtuYW1lOiAnc3RhcnQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMudGltZXN0YW1wLCBhbmFseXplclR5cGU6ICdUSU1FJywgZm9ybWF0OiAneCd9LFxuICAgICAgICAgIHtuYW1lOiAnYW1vdW50JywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJ9XG4gICAgICAgIF0sXG4gICAgICAgIHJvd3M6IFtcbiAgICAgICAgICBbMV83MDBfMDAwXzAwMCwgMTBdLFxuICAgICAgICAgIFsxXzcwMF8wMDBfMDIwLCAyMF1cbiAgICAgICAgXVxuICAgICAgfSk7XG4gICAgY29uc3QgcHJpbWFyeSA9IG1ha2VFdmVudHMoJ3ByaW1hcnknKTtcbiAgICBjb25zdCBzZWNvbmRhcnkgPSBtYWtlRXZlbnRzKCdzZWNvbmRhcnknKTtcbiAgICBsZXQgc3RhdGUgPSB3aXRoU3luY2VkRmlsdGVyKHByaW1hcnksIHNlY29uZGFyeSwgJ3N0YXJ0Jyk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLnNldEZpbHRlclBsb3QoMCwge3lBeGlzOiBzdGF0ZS5kYXRhc2V0cy5wcmltYXJ5LmZpZWxkc1sxXX0pXG4gICAgKTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ3NlY29uZGFyeScsICdhbW91bnQnLCBBTExfRklFTERfVFlQRVMuc3RyaW5nKTtcblxuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmRhdGFJZCkudG9FcXVhbChbJ3ByaW1hcnknLCAnc2Vjb25kYXJ5J10pO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLnlBeGlzKS50b01hdGNoT2JqZWN0KHtuYW1lOiAnYW1vdW50JywgdHlwZTogJ2ludGVnZXInfSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ucGxvdFR5cGUudHlwZSkudG9CZSgnbGluZUNoYXJ0Jyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2RldGFjaGluZyBhIHN5bmNlZCBwcmltYXJ5IGRhdGFzZXQgcmVidWlsZHMgdGhlIHBsb3QgZm9yIHRoZSBuZXcgcHJpbWFyeScsICgpID0+IHtcbiAgICBjb25zdCBwcmltYXJ5ID0gbWFrZVRhYmxlKCdwcmltYXJ5Jywge1xuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHtuYW1lOiAnc3RhcnQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMudGltZXN0YW1wLCBhbmFseXplclR5cGU6ICdUSU1FJywgZm9ybWF0OiAneCd9LFxuICAgICAgICB7bmFtZTogJ2Ftb3VudCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyfVxuICAgICAgXSxcbiAgICAgIHJvd3M6IFtcbiAgICAgICAgWzFfNzAwXzAwMF8wMDAsIDEwXSxcbiAgICAgICAgWzFfNzAwXzAwMF8wMjAsIDIwXVxuICAgICAgXVxuICAgIH0pO1xuICAgIGNvbnN0IHNlY29uZGFyeSA9IG1ha2VUYWJsZSgnc2Vjb25kYXJ5Jywge1xuICAgICAgZmllbGRzOiBbe25hbWU6ICdzdGFydCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXAsIGFuYWx5emVyVHlwZTogJ1RJTUUnLCBmb3JtYXQ6ICd4J31dLFxuICAgICAgcm93czogW1sxXzcwMF8wMDBfMDQwXSwgWzFfNzAwXzAwMF8wNjBdXVxuICAgIH0pO1xuICAgIGxldCBzdGF0ZSA9IHdpdGhTeW5jZWRGaWx0ZXIocHJpbWFyeSwgc2Vjb25kYXJ5LCAnc3RhcnQnKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgc3RhdGUsXG4gICAgICBWaXNTdGF0ZUFjdGlvbnMuc2V0RmlsdGVyUGxvdCgwLCB7eUF4aXM6IHN0YXRlLmRhdGFzZXRzLnByaW1hcnkuZmllbGRzWzFdfSlcbiAgICApO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmxpbmVDaGFydCkudG9CZURlZmluZWQoKTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ3ByaW1hcnknLCAnc3RhcnQnLCBBTExfRklFTERfVFlQRVMuc3RyaW5nKTtcblxuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmRhdGFJZCkudG9FcXVhbChbJ3NlY29uZGFyeSddKTtcbiAgICBleHBlY3Qoc3RhdGUuZmlsdGVyc1swXS5uYW1lKS50b0VxdWFsKFsnc3RhcnQnXSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0udHlwZSkudG9CZSgndGltZVJhbmdlJyk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ueUF4aXMpLnRvQmVOdWxsKCk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ucGxvdFR5cGUudHlwZSkudG9CZSgnaGlzdG9ncmFtJyk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ubGluZUNoYXJ0KS50b0JlVW5kZWZpbmVkKCk7XG4gIH0pO1xuXG4gIHRlc3QoJ2dyb3VwZWQgdGltZWxpbmUgc2VyaWVzIHN1cnZpdmUgYSByZW5hbWUgYW5kIHJlYnVpbGQgd2hlbiBncm91cCB2YWx1ZXMgY29sbGFwc2UnLCAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnRzID0gbWFrZVRhYmxlKCdldmVudHMnLCB7XG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAge25hbWU6ICdzdGFydCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXAsIGFuYWx5emVyVHlwZTogJ1RJTUUnLCBmb3JtYXQ6ICd4J30sXG4gICAgICAgIHtuYW1lOiAnZ3JvdXAnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuc3RyaW5nfSxcbiAgICAgICAge25hbWU6ICdhbW91bnQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1cbiAgICAgIF0sXG4gICAgICByb3dzOiBbXG4gICAgICAgIFsxXzcwMF8wMDBfMDAwLCAnMDEnLCAxMF0sXG4gICAgICAgIFsxXzcwMF8wMDBfMDIwLCAnMScsIDIwXVxuICAgICAgXVxuICAgIH0pO1xuICAgIGxldCBzdGF0ZSA9IHdpdGhGaWx0ZXIod2l0aFRhYmxlcyhldmVudHMpLCAnZXZlbnRzJywgJ3N0YXJ0Jyk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLnNldEZpbHRlclBsb3QoMCwge3lBeGlzOiBzdGF0ZS5kYXRhc2V0cy5ldmVudHMuZmllbGRzWzJdfSlcbiAgICApO1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoXG4gICAgICBzdGF0ZSxcbiAgICAgIFZpc1N0YXRlQWN0aW9ucy5zZXRGaWx0ZXJQbG90KDAsIHtcbiAgICAgICAgcGxvdFR5cGU6IHtncm91cEJ5OiB7ZmllbGROYW1lOiAnZ3JvdXAnLCBudW1Hcm91cHM6ICdBTEwnLCBncm91cE90aGVyczogZmFsc2V9fVxuICAgICAgfSlcbiAgICApO1xuICAgIGNvbnN0IHNlcmllc0JlZm9yZSA9IHN0YXRlLmZpbHRlcnNbMF0ubGluZUNoYXJ0Py5zZXJpZXMgYXMge25hbWVzPzogc3RyaW5nW119O1xuICAgIGV4cGVjdChuZXcgU2V0KHNlcmllc0JlZm9yZS5uYW1lcykpLnRvRXF1YWwobmV3IFNldChbJzAxJywgJzEnXSkpO1xuXG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLnJlbmFtZVRhYmxlQ29sdW1uKCdldmVudHMnLCAnZ3JvdXAnLCAnY2F0ZWdvcnknKSk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0ubGluZUNoYXJ0Py5zZXJpZXMpLnRvRXF1YWwoc2VyaWVzQmVmb3JlKTtcbiAgICBleHBlY3Qoc3RhdGUuZmlsdGVyc1swXS5wbG90VHlwZS5ncm91cEJ5LmZpZWxkTmFtZSkudG9CZSgnY2F0ZWdvcnknKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuZXZlbnRzLmZpZWxkc1sxXS50eXBlKS50b0JlKEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuXG4gICAgc3RhdGUgPSBjaGFuZ2VUeXBlKHN0YXRlLCAnZXZlbnRzJywgJ2NhdGVnb3J5JywgQUxMX0ZJRUxEX1RZUEVTLmludGVnZXIpO1xuXG4gICAgY29uc3QgbmFtZXNBZnRlciA9IChzdGF0ZS5maWx0ZXJzWzBdLmxpbmVDaGFydD8uc2VyaWVzIGFzIHtuYW1lcz86IHN0cmluZ1tdfSkubmFtZXM7XG4gICAgZXhwZWN0KG5ldyBTZXQobmFtZXNBZnRlcikpLnRvRXF1YWwobmV3IFNldChbJzEnXSkpO1xuICB9KTtcblxuICB0ZXN0KCd0eXBlIGNoYW5nZSBjbGVhcnMgYW4gaW50ZXJ2YWwgZW5kIGZpZWxkIHRoYXQgaXMgbm8gbG9uZ2VyIGEgdGltZXN0YW1wJywgKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50cyA9IG1ha2VUYWJsZSgnZXZlbnRzJywge1xuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHtuYW1lOiAnc3RhcnQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMudGltZXN0YW1wLCBhbmFseXplclR5cGU6ICdUSU1FJywgZm9ybWF0OiAneCd9LFxuICAgICAgICB7bmFtZTogJ2VuZCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXAsIGFuYWx5emVyVHlwZTogJ1RJTUUnLCBmb3JtYXQ6ICd4J30sXG4gICAgICAgIHtuYW1lOiAndmFsdWUnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1cbiAgICAgIF0sXG4gICAgICByb3dzOiBbXG4gICAgICAgIFsxXzcwMF8wMDBfMDAwLCAxXzcwMF8wODZfNDAwLCAxMF0sXG4gICAgICAgIFsxXzcwMF8wMDBfMDIwLCAxXzcwMF8xNzJfODAwLCAyMF1cbiAgICAgIF1cbiAgICB9KTtcbiAgICBsZXQgc3RhdGUgPSB3aXRoVGFibGVzKGV2ZW50cyk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLmFkZENoYXJ0KHtcbiAgICAgICAgaWQ6ICdldmVudHMtY2hhcnQnLFxuICAgICAgICB0aXRsZTogJ0V2ZW50cycsXG4gICAgICAgIHR5cGU6ICdiYXJDaGFydCcsXG4gICAgICAgIGRhdGFJZDogJ2V2ZW50cycsXG4gICAgICAgIGFwcGx5RmlsdGVyczogdHJ1ZSxcbiAgICAgICAgZGlzcGxheToge30sXG4gICAgICAgIGNoYXJ0RGlzcGxheToge30sXG4gICAgICAgIHhBeGlzOiB7XG4gICAgICAgICAgZmllbGQ6IHtuYW1lOiAnZW5kJywgdHlwZTogJ3RpbWVzdGFtcCd9LFxuICAgICAgICAgIGFnZ3JlZ2F0aW9uOiAndGltZUJpbicsXG4gICAgICAgICAgaW50ZXJ2YWw6ICdkYXknLFxuICAgICAgICAgIHRpdGxlOiAnZW5kJ1xuICAgICAgICB9LFxuICAgICAgICB5QXhpczoge2ZpZWxkOiB7bmFtZTogJ3ZhbHVlJywgdHlwZTogJ2ludGVnZXInfSwgYWdncmVnYXRpb246ICdzdW0nLCB0aXRsZTogJ3ZhbHVlJ31cbiAgICAgIH0pXG4gICAgKTtcbiAgICBzdGF0ZSA9IHdpdGhGaWx0ZXIoc3RhdGUsICdldmVudHMnLCAnc3RhcnQnKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuc2V0RmlsdGVyKDAsICdlbmROYW1lJywgJ2VuZCcsIDApKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgc3RhdGUsXG4gICAgICBWaXNTdGF0ZUFjdGlvbnMuc2V0RmlsdGVyUGxvdCgwLCB7eUF4aXM6IHN0YXRlLmRhdGFzZXRzLmV2ZW50cy5maWVsZHNbMl19KVxuICAgICk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0uZW5kTmFtZSkudG9FcXVhbChbJ2VuZCddKTtcbiAgICBleHBlY3Qoc3RhdGUuZmlsdGVyc1swXS55QXhpcz8ubmFtZSkudG9CZSgndmFsdWUnKTtcblxuICAgIHN0YXRlID0gY2hhbmdlVHlwZShzdGF0ZSwgJ2V2ZW50cycsICd2YWx1ZScsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLnlBeGlzKS50b0JlTnVsbCgpO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLnBsb3RUeXBlLnR5cGUpLnRvQmUoJ2hpc3RvZ3JhbScpO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmVuZE5hbWUpLnRvRXF1YWwoWydlbmQnXSk7XG4gICAgZXhwZWN0KHN0YXRlLmNoYXJ0c1swXS55QXhpcykudG9NYXRjaE9iamVjdCh7XG4gICAgICBmaWVsZDoge25hbWU6ICd2YWx1ZScsIHR5cGU6ICdzdHJpbmcnfSxcbiAgICAgIGFnZ3JlZ2F0aW9uOiAnc3VtJ1xuICAgIH0pO1xuICAgIGxldCB0aW1lRmlsdGVyID0gc3RhdGUuZmlsdGVyc1swXSBhcyBUaW1lUmFuZ2VGaWx0ZXI7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSB0aW1lRmlsdGVyLnBsb3RUeXBlLmludGVydmFsO1xuICAgIGNvbnN0IGludGVydmFsQmlucyA9IHRpbWVGaWx0ZXIudGltZUJpbnM/LmV2ZW50cz8uW2ludGVydmFsXTtcbiAgICBleHBlY3QoaW50ZXJ2YWxCaW5zPy5yZWR1Y2UoKHN1bSwgYmluKSA9PiBzdW0gKyBiaW4uY291bnQsIDApKS50b0JlR3JlYXRlclRoYW4oMik7XG5cbiAgICBzdGF0ZSA9IGNoYW5nZVR5cGUoc3RhdGUsICdldmVudHMnLCAnZW5kJywgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZyk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0udHlwZSkudG9CZSgndGltZVJhbmdlJyk7XG4gICAgZXhwZWN0KHN0YXRlLmZpbHRlcnNbMF0uZW5kTmFtZSkudG9CZVVuZGVmaW5lZCgpO1xuICAgIGV4cGVjdChzdGF0ZS5maWx0ZXJzWzBdLmVuZEZpZWxkSWR4KS50b0JlVW5kZWZpbmVkKCk7XG4gICAgdGltZUZpbHRlciA9IHN0YXRlLmZpbHRlcnNbMF0gYXMgVGltZVJhbmdlRmlsdGVyO1xuICAgIGNvbnN0IGJpbnMgPSB0aW1lRmlsdGVyLnRpbWVCaW5zPy5ldmVudHM/LltpbnRlcnZhbF07XG4gICAgZXhwZWN0KGJpbnM/LnJlZHVjZSgoc3VtLCBiaW4pID0+IHN1bSArIGJpbi5jb3VudCwgMCkpLnRvQmUoMik7XG4gICAgZXhwZWN0KHN0YXRlLmNoYXJ0c1swXS54QXhpcykudG9NYXRjaE9iamVjdCh7XG4gICAgICBmaWVsZDoge25hbWU6ICdlbmQnLCB0eXBlOiAnc3RyaW5nJ30sXG4gICAgICBhZ2dyZWdhdGlvbjogJ3VuaXF1ZUJpbidcbiAgICB9KTtcbiAgICBleHBlY3Qoc3RhdGUuY2hhcnRzWzBdLnhBeGlzPy5pbnRlcnZhbCkudG9CZVVuZGVmaW5lZCgpO1xuICB9KTtcblxuICB0ZXN0KCdpbnZhbGlkIHR5cGUgY2hhbmdlIGlzIGF0b21pYyBhbmQgc2NoZWR1bGVzIGEgcHJlY2lzZSBlcnJvcicsICgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHdpdGhDaXRpZXMoKTtcbiAgICBjb25zdCBuZXh0ID0gY2hhbmdlVHlwZShzdGF0ZSwgJ2NpdGllcycsICdyZWdpb24nLCBBTExfRklFTERfVFlQRVMuaW50ZWdlcik7XG5cbiAgICBleHBlY3QobmV4dC5kYXRhc2V0cy5jaXRpZXMpLnRvQmUoc3RhdGUuZGF0YXNldHMuY2l0aWVzKTtcbiAgICBleHBlY3QobmV4dC5kYXRhc2V0cy5jaXRpZXMuZmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQubmFtZSA9PT0gJ3JlZ2lvbicpPy50eXBlKS50b0JlKFxuICAgICAgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ1xuICAgICk7XG4gICAgZXhwZWN0KG5leHQuZGF0YXNldHMuY2l0aWVzLmRhdGFDb250YWluZXIucm93QXNBcnJheSgwKVsyXSkudG9CZSgnd2VzdCcpO1xuXG4gICAgY29uc3QgdGFza3MgPSBkcmFpblRhc2tzRm9yVGVzdGluZygpO1xuICAgIGV4cGVjdCh0YXNrcykudG9IYXZlTGVuZ3RoKDEpO1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbiA9IHN1Y2NlZWRUYXNrSW5UZXN0KHRhc2tzWzBdLCB1bmRlZmluZWQpO1xuICAgIGV4cGVjdChub3RpZmljYXRpb24ucGF5bG9hZC5tZXNzYWdlKS50b0NvbnRhaW4oXG4gICAgICAnQ2Fubm90IGNoYW5nZSDigJxyZWdpb27igJ0gdG8gaW50ZWdlcjogcm93IDEgdmFsdWUg4oCcd2VzdOKAnSBpcyBub3QgYSBzYWZlIGludGVnZXInXG4gICAgKTtcbiAgICBleHBlY3Qobm90aWZpY2F0aW9uLnBheWxvYWQubWVzc2FnZSkudG9Db250YWluKCdObyB2YWx1ZXMgd2VyZSBjaGFuZ2VkLicpO1xuICB9KTtcblxuICB0ZXN0KCdsYXRlIGNvbHVtbiBzdGF0aXN0aWNzIGNhbm5vdCBvdmVyd3JpdGUgYSBjaGFuZ2VkIGNvbHVtbicsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSB3aXRoQ2l0aWVzKCk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLmxvYWRDb2x1bW5TdGF0cygnY2l0aWVzJywgJ3BvcCcpKTtcbiAgICBjb25zdCByZXF1ZXN0UmV2aXNpb24gPSBzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZGF0YVJldmlzaW9uO1xuICAgIGNvbnN0IFt0YXNrXSA9IGRyYWluVGFza3NGb3JUZXN0aW5nKCk7XG4gICAgY29uc3QgcmVzdWx0ID0ge3R5cGU6ICdudW1lcmljJywgbWVhbjogMjV9O1xuICAgIGNvbnN0IHN0YWxlU3VjY2VzcyA9IHN1Y2NlZWRUYXNrSW5UZXN0KHRhc2ssIHtcbiAgICAgIHJlc3VsdCxcbiAgICAgIGZpbHRlclByb3BzOiB7dHlwZTogRklMVEVSX1RZUEVTLnJhbmdlfVxuICAgIH0pO1xuICAgIGV4cGVjdChzdGFsZVN1Y2Nlc3MpLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgZmllbGRUeXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlclxuICAgIH0pO1xuXG4gICAgc3RhdGUgPSBjaGFuZ2VUeXBlKHN0YXRlLCAnY2l0aWVzJywgJ3BvcCcsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZGF0YVJldmlzaW9uKS50b0JlKHJlcXVlc3RSZXZpc2lvbiArIDEpO1xuICAgIGNvbnN0IGNoYW5nZWRTdGF0ZSA9IHN0YXRlO1xuXG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgc3RhbGVTdWNjZXNzKTtcblxuICAgIGV4cGVjdChzdGF0ZSkudG9CZShjaGFuZ2VkU3RhdGUpO1xuICAgIGNvbnN0IGNoYW5nZWRGaWVsZCA9IHN0YXRlLmRhdGFzZXRzLmNpdGllcy5maWVsZHMuZmluZChmaWVsZCA9PiBmaWVsZC5uYW1lID09PSAncG9wJyk7XG4gICAgZXhwZWN0KGNoYW5nZWRGaWVsZCkudG9NYXRjaE9iamVjdCh7dHlwZTogQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ30pO1xuICAgIGV4cGVjdChjaGFuZ2VkRmllbGQpLm5vdC50b0hhdmVQcm9wZXJ0eSgnaXNMb2FkaW5nU3RhdHMnKTtcbiAgICBleHBlY3QoXG4gICAgICBzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQubmFtZSA9PT0gJ3BvcCcpPy5maWx0ZXJQcm9wcz8uY29sdW1uU3RhdHNcbiAgICApLm5vdC50b0JlKHJlc3VsdCk7XG4gIH0pO1xuXG4gIHRlc3QuZWFjaChbJ3JlZnJlc2gnLCAnYXBwZW5kJ10pKCdwZW5kaW5nIHN0YXRpc3RpY3MgY29tcGxldGUgYWZ0ZXIgYSBub3JtYWwgJXMnLCB1cGRhdGUgPT4ge1xuICAgIGxldCBzdGF0ZSA9IHdpdGhDaXRpZXMoKTtcbiAgICBjb25zdCB0eXBlcyA9IHN0YXRlLmRhdGFzZXRzLmNpdGllcy5maWVsZHMubWFwKGZpZWxkID0+IGZpZWxkLnR5cGUpO1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5sb2FkQ29sdW1uU3RhdHMoJ2NpdGllcycsICdwb3AnKSk7XG4gICAgY29uc3QgW3Rhc2tdID0gZHJhaW5UYXNrc0ZvclRlc3RpbmcoKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMucGluVGFibGVDb2x1bW4oJ2NpdGllcycsICdyZWdpb24nKSk7XG4gICAgY29uc3Qgcm93ID0gWzQxLCAtNzUsICdub3J0aCcsIDUwXTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgc3RhdGUsXG4gICAgICB1cGRhdGUgPT09ICdyZWZyZXNoJ1xuICAgICAgICA/IFZpc1N0YXRlQWN0aW9ucy5yZWZyZXNoRGF0YXNldFN1Y2Nlc3MoJ2NpdGllcycsIHtcbiAgICAgICAgICAgIG5vdE1vZGlmaWVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRhdGE6IHtmaWVsZHM6IHN0YXRlLmRhdGFzZXRzLmNpdGllcy5maWVsZHMsIHJvd3M6IFtyb3ddfVxuICAgICAgICAgIH0pXG4gICAgICAgIDogVmlzU3RhdGVBY3Rpb25zLmFkZFRvRGF0YXNldCgnY2l0aWVzJywgW3Jvd10pXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IHt0eXBlOiAnbnVtZXJpYycsIG1lYW46IDI1fTtcbiAgICBjb25zdCBzdWNjZXNzU3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgc3VjY2VlZFRhc2tJblRlc3QodGFzaywge3Jlc3VsdCwgZmlsdGVyUHJvcHM6IHt0eXBlOiBGSUxURVJfVFlQRVMucmFuZ2V9fSlcbiAgICApO1xuICAgIGNvbnN0IGxvZ0Vycm9yID0gamVzdC5zcHlPbihjb25zb2xlLCAnZXJyb3InKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gdW5kZWZpbmVkKTtcbiAgICBjb25zdCBlcnJvclN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIGVycm9yVGFza0luVGVzdCh0YXNrLCBuZXcgRXJyb3IoJ3N0YXRzIGZhaWxlZCcpKSk7XG4gICAgbG9nRXJyb3IubW9ja1Jlc3RvcmUoKTtcblxuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC50eXBlKSkudG9FcXVhbCh0eXBlcyk7XG4gICAgZXhwZWN0KHN1Y2Nlc3NTdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZmllbGRzWzNdKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIGlzTG9hZGluZ1N0YXRzOiBmYWxzZSxcbiAgICAgIGZpbHRlclByb3BzOiB7Y29sdW1uU3RhdHM6IHJlc3VsdH1cbiAgICB9KTtcbiAgICBleHBlY3QoZXJyb3JTdGF0ZS5kYXRhc2V0cy5jaXRpZXMuZmllbGRzWzNdLmlzTG9hZGluZ1N0YXRzKS50b0JlKGZhbHNlKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuY2l0aWVzLmRhdGFDb250YWluZXIucm93QXNBcnJheSh1cGRhdGUgPT09ICdyZWZyZXNoJyA/IDAgOiAyKSkudG9FcXVhbChcbiAgICAgIHJvd1xuICAgICk7XG4gIH0pO1xuXG4gIHRlc3QoJ2R1cGxpY2F0ZSByZW5hbWUgYW5kIG5vbi10YWJ1bGFyIGRhdGFzZXRzIGFyZSBpZ25vcmVkJywgKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gd2l0aENpdGllcygpO1xuICAgIGNvbnN0IGR1cGxpY2F0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgc3RhdGUsXG4gICAgICBWaXNTdGF0ZUFjdGlvbnMucmVuYW1lVGFibGVDb2x1bW4oJ2NpdGllcycsICdyZWdpb24nLCAncG9wJylcbiAgICApO1xuICAgIGV4cGVjdChkdXBsaWNhdGUpLnRvQmUoc3RhdGUpO1xuXG4gICAgY29uc3QgdGlsZXMgPSBuZXcgS2VwbGVyVGFibGUoe1xuICAgICAgaW5mbzoge2lkOiAndGlsZXMnLCBsYWJlbDogJ3RpbGVzJywgdHlwZTogJ3ZlY3Rvci10aWxlJ30sXG4gICAgICBjb2xvcjogWzAsIDAsIDBdXG4gICAgfSk7XG4gICAgdGlsZXMudXBkYXRlU2NoZW1hKHtcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7bmFtZTogJ3JlZ2lvbicsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmd9LFxuICAgICAgICB7bmFtZTogJ3BvcCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyfVxuICAgICAgXSxcbiAgICAgIHJvd3M6IFtbJ3dlc3QnLCAxXV1cbiAgICB9KTtcbiAgICBjb25zdCB0aWxlZDogVmlzU3RhdGUgPSB7Li4uSU5JVElBTF9WSVNfU1RBVEUsIGRhdGFzZXRzOiB7dGlsZXN9fTtcbiAgICBjb25zdCB1bmNoYW5nZWQgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHRpbGVkLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLnJlbmFtZVRhYmxlQ29sdW1uKCd0aWxlcycsICdyZWdpb24nLCAnYXJlYScpXG4gICAgKTtcbiAgICBleHBlY3QodW5jaGFuZ2VkKS50b0JlKHRpbGVkKTtcbiAgICBleHBlY3QocmVkdWNlVmlzU3RhdGUodGlsZWQsIFZpc1N0YXRlQWN0aW9ucy5kZWxldGVUYWJsZUNvbHVtbigndGlsZXMnLCAncG9wJykpKS50b0JlKHRpbGVkKTtcbiAgICBleHBlY3QoY2hhbmdlVHlwZSh0aWxlZCwgJ3RpbGVzJywgJ3BvcCcsIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpKS50b0JlKHRpbGVkKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXh0ZXJuYWxseSBob3N0ZWQgZGF0YXNldHMgaWdub3JlIHJlbmFtZSBhbmQgZGVsZXRlJywgKCkgPT4ge1xuICAgIGNvbnN0IHJlbW90ZSA9IG5ldyBLZXBsZXJUYWJsZSh7XG4gICAgICBpbmZvOiB7aWQ6ICdyZW1vdGUnLCBsYWJlbDogJ3JlbW90ZScsIHR5cGU6ICdleHRlcm5hbGx5LWhvc3RlZCd9LFxuICAgICAgY29sb3I6IFswLCAwLCAwXVxuICAgIH0pO1xuICAgIHJlbW90ZS51cGRhdGVTY2hlbWEoe1xuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHtuYW1lOiAncmVnaW9uJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnN0cmluZywgZGlzcGxheU5hbWU6ICdSZWdpb24nfSxcbiAgICAgICAge25hbWU6ICdwb3AnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1cbiAgICAgIF0sXG4gICAgICByb3dzOiBbWyd3ZXN0JywgMV1dXG4gICAgfSk7XG4gICAgY29uc3Qgc3RhdGU6IFZpc1N0YXRlID0gey4uLklOSVRJQUxfVklTX1NUQVRFLCBkYXRhc2V0czoge3JlbW90ZX19O1xuXG4gICAgZXhwZWN0KFxuICAgICAgcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5yZW5hbWVUYWJsZUNvbHVtbigncmVtb3RlJywgJ3JlZ2lvbicsICdhcmVhJykpXG4gICAgKS50b0JlKHN0YXRlKTtcbiAgICBleHBlY3QocmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5kZWxldGVUYWJsZUNvbHVtbigncmVtb3RlJywgJ3BvcCcpKSkudG9CZShzdGF0ZSk7XG4gICAgZXhwZWN0KGNoYW5nZVR5cGUoc3RhdGUsICdyZW1vdGUnLCAncG9wJywgQUxMX0ZJRUxEX1RZUEVTLnN0cmluZykpLnRvQmUoc3RhdGUpO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5yZW1vdGUuZmllbGRzWzBdLmRpc3BsYXlOYW1lKS50b0JlKCdSZWdpb24nKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQU9BLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLFdBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLE1BQUEsR0FBQU4sT0FBQTtBQU1BLElBQUFPLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQVIsT0FBQTtBQUNBLElBQUFTLE1BQUEsR0FBQVQsT0FBQTtBQUdBLElBQUFVLFNBQUEsR0FBQU4sc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFXLGlCQUFBLEdBQUFYLE9BQUE7QUFBdUQsU0FBQVEsd0JBQUFJLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFOLHVCQUFBLFlBQUFBLHdCQUFBSSxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsbUJBQUFULENB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