@ditojs/server 0.271.0 → 0.274.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/app/Application.js +68 -25
- package/lib/app/SessionStore.js +3 -1
- package/lib/app/Validator.js +16 -2
- package/lib/app/index.js +7 -1
- package/lib/cli/console.js +14 -4
- package/lib/cli/db/createMigration.js +16 -4
- package/lib/cli/db/index.js +7 -1
- package/lib/cli/db/listAssetConfig.js +4 -2
- package/lib/cli/db/migrate.js +3 -3
- package/lib/cli/db/reset.js +3 -3
- package/lib/cli/db/rollback.js +3 -3
- package/lib/cli/db/seed.js +14 -6
- package/lib/cli/db/unlock.js +3 -3
- package/lib/cli/index.js +9 -5
- package/lib/controllers/AdminController.js +18 -6
- package/lib/controllers/CollectionController.js +15 -1
- package/lib/controllers/Controller.js +28 -4
- package/lib/controllers/ControllerAction.js +18 -6
- package/lib/controllers/RelationController.js +9 -3
- package/lib/controllers/UserController.js +15 -1
- package/lib/controllers/index.js +7 -1
- package/lib/decorators/index.js +7 -1
- package/lib/decorators/parameters.js +4 -2
- package/lib/decorators/returns.js +4 -2
- package/lib/errors/DatabaseError.js +5 -19
- package/lib/errors/ResponseError.js +4 -14
- package/lib/errors/index.js +7 -1
- package/lib/graph/DitoGraphProcessor.js +5 -1
- package/lib/graph/expression.js +5 -1
- package/lib/graph/graph.js +18 -2
- package/lib/graph/index.js +7 -1
- package/lib/index.js +7 -1
- package/lib/lib/index.js +7 -1
- package/lib/middleware/findRoute.js +7 -1
- package/lib/middleware/index.js +7 -1
- package/lib/middleware/logRequests.js +4 -4
- package/lib/mixins/AssetMixin.js +4 -4
- package/lib/mixins/SessionMixin.js +4 -4
- package/lib/mixins/TimeStampedMixin.js +4 -4
- package/lib/mixins/UserMixin.js +10 -4
- package/lib/mixins/index.js +7 -1
- package/lib/models/Model.js +41 -22
- package/lib/models/definitions/filters.js +9 -1
- package/lib/models/definitions/properties.js +7 -1
- package/lib/models/definitions/scopes.js +9 -1
- package/lib/models/index.js +7 -1
- package/lib/query/QueryBuilder.js +11 -1
- package/lib/query/QueryFilters.js +11 -1
- package/lib/query/index.js +7 -1
- package/lib/schema/formats/index.js +7 -1
- package/lib/schema/index.js +10 -2
- package/lib/schema/keywords/index.js +7 -1
- package/lib/schema/properties.js +11 -1
- package/lib/schema/relations.js +18 -4
- package/lib/services/index.js +7 -1
- package/lib/storage/DiskStorage.js +7 -1
- package/lib/storage/Storage.js +5 -1
- package/lib/storage/index.js +7 -1
- package/lib/utils/emitter.js +5 -1
- package/lib/utils/index.js +15 -1
- package/lib/utils/json.js +9 -0
- package/lib/utils/object.js +9 -3
- package/package.json +31 -31
- package/src/app/Application.js +40 -11
- package/src/app/Validator.js +2 -1
- package/src/cli/console.js +3 -3
- package/src/cli/db/createMigration.js +3 -3
- package/src/cli/db/listAssetConfig.js +3 -1
- package/src/cli/db/migrate.js +4 -4
- package/src/cli/db/reset.js +4 -4
- package/src/cli/db/rollback.js +4 -4
- package/src/cli/db/seed.js +6 -6
- package/src/cli/db/unlock.js +2 -2
- package/src/cli/index.js +3 -3
- package/src/controllers/AdminController.js +3 -2
- package/src/controllers/Controller.js +8 -8
- package/src/controllers/ControllerAction.js +7 -5
- package/src/controllers/RelationController.js +2 -2
- package/src/decorators/parameters.js +2 -2
- package/src/decorators/returns.js +2 -2
- package/src/errors/DatabaseError.js +2 -23
- package/src/errors/ResponseError.js +1 -8
- package/src/middleware/logRequests.js +9 -9
- package/src/models/Model.js +13 -8
- package/src/utils/index.js +1 -0
- package/src/utils/json.js +3 -0
package/lib/cli/db/seed.js
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
require("core-js/modules/esnext.weak-map.delete-all.js");
|
|
4
|
+
|
|
5
|
+
require("core-js/modules/esnext.weak-map.emplace.js");
|
|
6
|
+
|
|
3
7
|
exports.__esModule = true;
|
|
4
8
|
exports.seed = seed;
|
|
5
9
|
|
|
6
|
-
require("core-js/modules/esnext.
|
|
10
|
+
require("core-js/modules/esnext.async-iterator.reduce.js");
|
|
11
|
+
|
|
12
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
|
13
|
+
|
|
14
|
+
require("core-js/modules/esnext.iterator.reduce.js");
|
|
7
15
|
|
|
8
16
|
var _path = _interopRequireDefault(require("path"));
|
|
9
17
|
|
|
10
18
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
11
19
|
|
|
12
|
-
var
|
|
20
|
+
var _picocolors = _interopRequireDefault(require("picocolors"));
|
|
13
21
|
|
|
14
22
|
var _util = _interopRequireDefault(require("util"));
|
|
15
23
|
|
|
@@ -81,16 +89,16 @@ async function handleSeed(app, base, seed, modelClass) {
|
|
|
81
89
|
}
|
|
82
90
|
|
|
83
91
|
if ((0, _utils.isArray)(res)) {
|
|
84
|
-
console.info(
|
|
92
|
+
console.info(_picocolors.default.green(`${base}:`), _picocolors.default.cyan(`${res.length} seed records created.`));
|
|
85
93
|
} else {
|
|
86
|
-
console.info(
|
|
94
|
+
console.info(_picocolors.default.red(`${base}:`), _picocolors.default.cyan('No seed records created.'));
|
|
87
95
|
}
|
|
88
96
|
} catch (err) {
|
|
89
|
-
console.error(
|
|
97
|
+
console.error(_picocolors.default.red(`${base}:`), _util.default.inspect(err, {
|
|
90
98
|
colors: true,
|
|
91
99
|
depth: null,
|
|
92
100
|
maxArrayLength: null
|
|
93
101
|
}));
|
|
94
102
|
}
|
|
95
103
|
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
104
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvZGIvc2VlZC5qcyJdLCJuYW1lcyI6WyJzZWVkIiwiYXBwIiwic2VlZERpciIsInBhdGgiLCJqb2luIiwicHJvY2VzcyIsImN3ZCIsImZpbGVzIiwiZnMiLCJyZWFkZGlyIiwic2VlZHMiLCJtb2RlbEluZGljZXMiLCJPYmplY3QiLCJrZXlzIiwibW9kZWxzIiwicmVkdWNlIiwiaW5kaWNlcyIsIm5hbWUiLCJpbmRleCIsImZpbGUiLCJleHQiLCJiYXNlIiwicGFyc2UiLCJzdGFydHNXaXRoIiwiaW5jbHVkZXMiLCJvYmplY3QiLCJyZXNvbHZlIiwiZGVmYXVsdCIsIm1vZGVsQ2xhc3MiLCJwbHVyYWxpemUiLCJzaW5ndWxhciIsIkluZmluaXR5IiwicHVzaCIsInNvcnQiLCJlbnRyeTEiLCJlbnRyeTIiLCJoYW5kbGVTZWVkIiwicmVzIiwidHJ1bmNhdGUiLCJjYXNjYWRlIiwiaW5zZXJ0R3JhcGgiLCJjb25zb2xlIiwiaW5mbyIsInBpY28iLCJncmVlbiIsImN5YW4iLCJsZW5ndGgiLCJyZWQiLCJlcnIiLCJlcnJvciIsInV0aWwiLCJpbnNwZWN0IiwiY29sb3JzIiwiZGVwdGgiLCJtYXhBcnJheUxlbmd0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBRU8sZUFBZUEsSUFBZixDQUFvQkMsR0FBcEIsRUFBeUI7QUFDOUIsUUFBTUMsT0FBTyxHQUFHQyxjQUFLQyxJQUFMLENBQVVDLE9BQU8sQ0FBQ0MsR0FBUixFQUFWLEVBQXlCLE9BQXpCLENBQWhCOztBQUNBLFFBQU1DLEtBQUssR0FBRyxNQUFNQyxpQkFBR0MsT0FBSCxDQUFXUCxPQUFYLENBQXBCO0FBQ0EsUUFBTVEsS0FBSyxHQUFHLEVBQWQ7QUFFQSxRQUFNQyxZQUFZLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZWixHQUFHLENBQUNhLE1BQWhCLEVBQXdCQyxNQUF4QixDQUNuQixDQUFDQyxPQUFELEVBQVVDLElBQVYsRUFBZ0JDLEtBQWhCLEtBQTBCO0FBQ3hCRixJQUFBQSxPQUFPLENBQUNDLElBQUQsQ0FBUCxHQUFnQkMsS0FBaEI7QUFDQSxXQUFPRixPQUFQO0FBQ0QsR0FKa0IsRUFLbkIsRUFMbUIsQ0FBckI7O0FBUUEsT0FBSyxNQUFNRyxJQUFYLElBQW1CWixLQUFuQixFQUEwQjtBQUN4QixVQUFNO0FBQUVVLE1BQUFBLElBQUY7QUFBUUcsTUFBQUEsR0FBUjtBQUFhQyxNQUFBQTtBQUFiLFFBQXNCbEIsY0FBS21CLEtBQUwsQ0FBV0gsSUFBWCxDQUE1Qjs7QUFDQSxRQUFJLENBQUNGLElBQUksQ0FBQ00sVUFBTCxDQUFnQixHQUFoQixDQUFELElBQXlCLENBQUMsS0FBRCxFQUFRLE9BQVIsRUFBaUJDLFFBQWpCLENBQTBCSixHQUExQixDQUE3QixFQUE2RDtBQUMzRCxZQUFNSyxNQUFNLEdBQUcseUJBQWF0QixjQUFLdUIsT0FBTCxDQUFheEIsT0FBYixFQUFzQmlCLElBQXRCLENBQWIsa0RBQWY7QUFDQSxZQUFNbkIsSUFBSSxHQUFHeUIsTUFBTSxDQUFDRSxPQUFQLElBQWtCRixNQUEvQjtBQUdBLFlBQU1HLFVBQVUsR0FDZDNCLEdBQUcsQ0FBQ2EsTUFBSixDQUFXRyxJQUFYLEtBQ0FoQixHQUFHLENBQUNhLE1BQUosQ0FBVyxxQkFBU2UsbUJBQVVDLFFBQVYsQ0FBbUJiLElBQW5CLENBQVQsRUFBbUMsSUFBbkMsQ0FBWCxDQUZGO0FBR0EsWUFBTUMsS0FBSyxHQUFHVSxVQUFVLEdBQUdqQixZQUFZLENBQUNpQixVQUFVLENBQUNYLElBQVosQ0FBZixHQUFtQ2MsUUFBM0Q7QUFDQXJCLE1BQUFBLEtBQUssQ0FBQ3NCLElBQU4sQ0FBVztBQUNUWCxRQUFBQSxJQURTO0FBRVRyQixRQUFBQSxJQUZTO0FBR1Q0QixRQUFBQSxVQUhTO0FBSVRWLFFBQUFBO0FBSlMsT0FBWDtBQU1EO0FBQ0Y7O0FBR0RSLEVBQUFBLEtBQUssQ0FBQ3VCLElBQU4sQ0FBVyxDQUFDQyxNQUFELEVBQVNDLE1BQVQsS0FBb0JELE1BQU0sQ0FBQ2hCLEtBQVAsR0FBZWlCLE1BQU0sQ0FBQ2pCLEtBQXJEOztBQUNBLE9BQUssTUFBTTtBQUFFRyxJQUFBQSxJQUFGO0FBQVFyQixJQUFBQSxJQUFSO0FBQWM0QixJQUFBQTtBQUFkLEdBQVgsSUFBeUNsQixLQUF6QyxFQUFnRDtBQUM5QyxVQUFNMEIsVUFBVSxDQUFDbkMsR0FBRCxFQUFNb0IsSUFBTixFQUFZckIsSUFBWixFQUFrQjRCLFVBQWxCLENBQWhCO0FBQ0Q7O0FBQ0QsU0FBTyxJQUFQO0FBQ0Q7O0FBRUQsZUFBZVEsVUFBZixDQUEwQm5DLEdBQTFCLEVBQStCb0IsSUFBL0IsRUFBcUNyQixJQUFyQyxFQUEyQzRCLFVBQTNDLEVBQXVEO0FBQ3JELE1BQUk7QUFDRixRQUFJUyxHQUFKOztBQUNBLFFBQUksdUJBQVdyQyxJQUFYLENBQUosRUFBc0I7QUFDcEJxQyxNQUFBQSxHQUFHLEdBQUcsTUFBTXJDLElBQUksQ0FBQ0MsR0FBRyxDQUFDYSxNQUFMLENBQWhCO0FBQ0QsS0FGRCxNQUVPLElBQUljLFVBQUosRUFBZ0I7QUFDckIsWUFBTUEsVUFBVSxDQUFDVSxRQUFYLENBQW9CO0FBQUVDLFFBQUFBLE9BQU8sRUFBRTtBQUFYLE9BQXBCLENBQU47QUFDQUYsTUFBQUEsR0FBRyxHQUFHLE1BQU1ULFVBQVUsQ0FBQ1ksV0FBWCxDQUF1QnhDLElBQXZCLENBQVo7QUFDRDs7QUFDRCxRQUFJLG9CQUFRcUMsR0FBUixDQUFKLEVBQWtCO0FBQ2hCSSxNQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FDRUMsb0JBQUtDLEtBQUwsQ0FBWSxHQUFFdkIsSUFBSyxHQUFuQixDQURGLEVBRUVzQixvQkFBS0UsSUFBTCxDQUFXLEdBQUVSLEdBQUcsQ0FBQ1MsTUFBTyx3QkFBeEIsQ0FGRjtBQUlELEtBTEQsTUFLTztBQUNMTCxNQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FDRUMsb0JBQUtJLEdBQUwsQ0FBVSxHQUFFMUIsSUFBSyxHQUFqQixDQURGLEVBRUVzQixvQkFBS0UsSUFBTCxDQUFVLDBCQUFWLENBRkY7QUFJRDtBQUNGLEdBbkJELENBbUJFLE9BQU9HLEdBQVAsRUFBWTtBQUNaUCxJQUFBQSxPQUFPLENBQUNRLEtBQVIsQ0FDRU4sb0JBQUtJLEdBQUwsQ0FBVSxHQUFFMUIsSUFBSyxHQUFqQixDQURGLEVBRUU2QixjQUFLQyxPQUFMLENBQWFILEdBQWIsRUFBa0I7QUFDaEJJLE1BQUFBLE1BQU0sRUFBRSxJQURRO0FBRWhCQyxNQUFBQSxLQUFLLEVBQUUsSUFGUztBQUdoQkMsTUFBQUEsY0FBYyxFQUFFO0FBSEEsS0FBbEIsQ0FGRjtBQVFEO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJ1xuaW1wb3J0IGZzIGZyb20gJ2ZzLWV4dHJhJ1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycydcbmltcG9ydCB1dGlsIGZyb20gJ3V0aWwnXG5pbXBvcnQgcGx1cmFsaXplIGZyb20gJ3BsdXJhbGl6ZSdcbmltcG9ydCB7IGlzRnVuY3Rpb24sIGlzQXJyYXksIGNhbWVsaXplIH0gZnJvbSAnQGRpdG9qcy91dGlscydcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlZWQoYXBwKSB7XG4gIGNvbnN0IHNlZWREaXIgPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJ3NlZWRzJylcbiAgY29uc3QgZmlsZXMgPSBhd2FpdCBmcy5yZWFkZGlyKHNlZWREaXIpXG4gIGNvbnN0IHNlZWRzID0gW11cbiAgLy8gQ3JlYXRlIGEgbG9va3VwIHRhYmxlIHdpdGggc29ydCBpbmRpY2VzIHBlciBtb2RlbCBuYW1lLlxuICBjb25zdCBtb2RlbEluZGljZXMgPSBPYmplY3Qua2V5cyhhcHAubW9kZWxzKS5yZWR1Y2UoXG4gICAgKGluZGljZXMsIG5hbWUsIGluZGV4KSA9PiB7XG4gICAgICBpbmRpY2VzW25hbWVdID0gaW5kZXhcbiAgICAgIHJldHVybiBpbmRpY2VzXG4gICAgfSxcbiAgICB7fVxuICApXG4gIC8vIENvbGxlY3QgYWxsIHNlZWQsIGFuZCBzZXBhcmF0ZSBiZXR3ZWVuIHNlZWQgZnVuY3Rpb25zIGFuZCBtb2RlbCBzZWUgZGF0YTpcbiAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgY29uc3QgeyBuYW1lLCBleHQsIGJhc2UgfSA9IHBhdGgucGFyc2UoZmlsZSlcbiAgICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnLicpICYmIFsnLmpzJywgJy5qc29uJ10uaW5jbHVkZXMoZXh0KSkge1xuICAgICAgY29uc3Qgb2JqZWN0ID0gYXdhaXQgaW1wb3J0KHBhdGgucmVzb2x2ZShzZWVkRGlyLCBmaWxlKSlcbiAgICAgIGNvbnN0IHNlZWQgPSBvYmplY3QuZGVmYXVsdCB8fCBvYmplY3RcbiAgICAgIC8vIFRyeSB0byBkZXRlcm1pbmUgdGhlIHJlbGF0ZWQgbW9kZWwgZnJvbSB0aGUgc2VlZCBuYW1lLCBhbmQgdXNlIGl0IGFsc29cbiAgICAgIC8vIHRvIGRldGVybWluZSBzZWVkIHNlcXVlbmNlIGJhc2VkIG9uIGl0cyBpbmRleCBpbiBgYXBwLm1vZGVsc2AuXG4gICAgICBjb25zdCBtb2RlbENsYXNzID1cbiAgICAgICAgYXBwLm1vZGVsc1tuYW1lXSB8fFxuICAgICAgICBhcHAubW9kZWxzW2NhbWVsaXplKHBsdXJhbGl6ZS5zaW5ndWxhcihuYW1lKSwgdHJ1ZSldXG4gICAgICBjb25zdCBpbmRleCA9IG1vZGVsQ2xhc3MgPyBtb2RlbEluZGljZXNbbW9kZWxDbGFzcy5uYW1lXSA6IEluZmluaXR5XG4gICAgICBzZWVkcy5wdXNoKHtcbiAgICAgICAgYmFzZSxcbiAgICAgICAgc2VlZCxcbiAgICAgICAgbW9kZWxDbGFzcyxcbiAgICAgICAgaW5kZXhcbiAgICAgIH0pXG4gICAgfVxuICB9XG4gIC8vIE5vdyBzb3J0IHRoZSBzZWVkIG1vZGVsIGRhdGEgYWNjb3JkaW5nIHRvIGBhcHAubW9kZWxzYCBzb3J0aW5nLFxuICAvLyBhcyBkZXRlcm1pbmVkIGJ5IGBBcHBsaWNhdGlvbi5zb3J0TW9kZWxzKClgOlxuICBzZWVkcy5zb3J0KChlbnRyeTEsIGVudHJ5MikgPT4gZW50cnkxLmluZGV4IC0gZW50cnkyLmluZGV4KVxuICBmb3IgKGNvbnN0IHsgYmFzZSwgc2VlZCwgbW9kZWxDbGFzcyB9IG9mIHNlZWRzKSB7XG4gICAgYXdhaXQgaGFuZGxlU2VlZChhcHAsIGJhc2UsIHNlZWQsIG1vZGVsQ2xhc3MpXG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlU2VlZChhcHAsIGJhc2UsIHNlZWQsIG1vZGVsQ2xhc3MpIHtcbiAgdHJ5IHtcbiAgICBsZXQgcmVzXG4gICAgaWYgKGlzRnVuY3Rpb24oc2VlZCkpIHtcbiAgICAgIHJlcyA9IGF3YWl0IHNlZWQoYXBwLm1vZGVscylcbiAgICB9IGVsc2UgaWYgKG1vZGVsQ2xhc3MpIHtcbiAgICAgIGF3YWl0IG1vZGVsQ2xhc3MudHJ1bmNhdGUoeyBjYXNjYWRlOiB0cnVlIH0pXG4gICAgICByZXMgPSBhd2FpdCBtb2RlbENsYXNzLmluc2VydEdyYXBoKHNlZWQpXG4gICAgfVxuICAgIGlmIChpc0FycmF5KHJlcykpIHtcbiAgICAgIGNvbnNvbGUuaW5mbyhcbiAgICAgICAgcGljby5ncmVlbihgJHtiYXNlfTpgKSxcbiAgICAgICAgcGljby5jeWFuKGAke3Jlcy5sZW5ndGh9IHNlZWQgcmVjb3JkcyBjcmVhdGVkLmApXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuaW5mbyhcbiAgICAgICAgcGljby5yZWQoYCR7YmFzZX06YCksXG4gICAgICAgIHBpY28uY3lhbignTm8gc2VlZCByZWNvcmRzIGNyZWF0ZWQuJylcbiAgICAgIClcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBwaWNvLnJlZChgJHtiYXNlfTpgKSxcbiAgICAgIHV0aWwuaW5zcGVjdChlcnIsIHtcbiAgICAgICAgY29sb3JzOiB0cnVlLFxuICAgICAgICBkZXB0aDogbnVsbCxcbiAgICAgICAgbWF4QXJyYXlMZW5ndGg6IG51bGxcbiAgICAgIH0pXG4gICAgKVxuICB9XG59XG4iXX0=
|
package/lib/cli/db/unlock.js
CHANGED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.unlock = unlock;
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _picocolors = _interopRequireDefault(require("picocolors"));
|
|
7
7
|
|
|
8
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
9
|
|
|
10
10
|
async function unlock(knex) {
|
|
11
11
|
await knex.migrate.forceFreeMigrationsLock();
|
|
12
|
-
console.info(
|
|
12
|
+
console.info(_picocolors.default.green(`Successfully unlocked the migrations lock table`));
|
|
13
13
|
return true;
|
|
14
14
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvZGIvdW5sb2NrLmpzIl0sIm5hbWVzIjpbInVubG9jayIsImtuZXgiLCJtaWdyYXRlIiwiZm9yY2VGcmVlTWlncmF0aW9uc0xvY2siLCJjb25zb2xlIiwiaW5mbyIsInBpY28iLCJncmVlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7OztBQUVPLGVBQWVBLE1BQWYsQ0FBc0JDLElBQXRCLEVBQTRCO0FBQ2pDLFFBQU1BLElBQUksQ0FBQ0MsT0FBTCxDQUFhQyx1QkFBYixFQUFOO0FBQ0FDLEVBQUFBLE9BQU8sQ0FBQ0MsSUFBUixDQUNFQyxvQkFBS0MsS0FBTCxDQUFZLGlEQUFaLENBREY7QUFHQSxTQUFPLElBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwaWNvIGZyb20gJ3BpY29jb2xvcnMnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1bmxvY2soa25leCkge1xuICBhd2FpdCBrbmV4Lm1pZ3JhdGUuZm9yY2VGcmVlTWlncmF0aW9uc0xvY2soKVxuICBjb25zb2xlLmluZm8oXG4gICAgcGljby5ncmVlbihgU3VjY2Vzc2Z1bGx5IHVubG9ja2VkIHRoZSBtaWdyYXRpb25zIGxvY2sgdGFibGVgKVxuICApXG4gIHJldHVybiB0cnVlXG59XG4iXX0=
|
package/lib/cli/index.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env babel-node
|
|
2
2
|
"use strict";
|
|
3
3
|
|
|
4
|
+
require("core-js/modules/esnext.weak-map.delete-all.js");
|
|
5
|
+
|
|
6
|
+
require("core-js/modules/esnext.weak-map.emplace.js");
|
|
7
|
+
|
|
4
8
|
exports.__esModule = true;
|
|
5
9
|
exports.default = void 0;
|
|
6
10
|
|
|
7
|
-
require("core-js/modules/
|
|
11
|
+
require("core-js/modules/es.error.cause.js");
|
|
8
12
|
|
|
9
13
|
var _path = _interopRequireDefault(require("path"));
|
|
10
14
|
|
|
11
|
-
var
|
|
15
|
+
var _picocolors = _interopRequireDefault(require("picocolors"));
|
|
12
16
|
|
|
13
17
|
var _knex = _interopRequireDefault(require("knex"));
|
|
14
18
|
|
|
@@ -68,9 +72,9 @@ async function execute() {
|
|
|
68
72
|
process.exit(res === true ? 0 : 1);
|
|
69
73
|
} catch (err) {
|
|
70
74
|
if (err instanceof Error) {
|
|
71
|
-
console.error(
|
|
75
|
+
console.error(_picocolors.default.red(`${err.detail ? `${err.detail}\n` : ''}${err.stack}`));
|
|
72
76
|
} else {
|
|
73
|
-
console.error(
|
|
77
|
+
console.error(_picocolors.default.red(err));
|
|
74
78
|
}
|
|
75
79
|
|
|
76
80
|
process.exit(1);
|
|
@@ -83,4 +87,4 @@ if (require.main === module) {
|
|
|
83
87
|
|
|
84
88
|
var _default = execute;
|
|
85
89
|
exports.default = _default;
|
|
86
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGkvaW5kZXguanMiXSwibmFtZXMiOlsiY29tbWFuZHMiLCJkYiIsImNvbnNvbGUiLCJzdGFydENvbnNvbGUiLCJnZXRDb21tYW5kIiwicGFydHMiLCJwYXJ0Iiwic2hpZnQiLCJzZXRTaWxlbnQiLCJzaWxlbnQiLCJvbGRWYWx1ZSIsInByb2Nlc3MiLCJlbnYiLCJESVRPX1NJTEVOVCIsImV4ZWN1dGUiLCJjb21tYW5kIiwiaW1wb3J0UGF0aCIsImFyZ3MiLCJhcmd2Iiwic3BsaXQiLCJFcnJvciIsImFyZyIsInBhdGgiLCJyZXNvbHZlIiwiZGVmYXVsdCIsImtuZXgiLCJyZXMiLCJleGl0IiwiZXJyIiwiZXJyb3IiLCJwaWNvIiwicmVkIiwiZGV0YWlsIiwic3RhY2siLCJyZXF1aXJlIiwibWFpbiIsIm1vZHVsZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVBLE1BQU1BLFFBQVEsR0FBRztBQUFFQyxFQUFBQSxFQUFGO0FBQU1DLEVBQUFBLE9BQU8sRUFBRUM7QUFBZixDQUFqQjs7QUFFQSxTQUFTQyxVQUFULENBQW9CSixRQUFwQixFQUE4QkssS0FBOUIsRUFBcUM7QUFDbkMsUUFBTUMsSUFBSSxHQUFHRCxLQUFLLENBQUNFLEtBQU4sRUFBYjtBQUNBLFNBQU9QLFFBQVEsSUFBSU0sSUFBWixHQUNIRixVQUFVLENBQUNKLFFBQVEsQ0FBQyxxQkFBU00sSUFBVCxDQUFELENBQVQsRUFBMkJELEtBQTNCLENBRFAsR0FFSEwsUUFGSjtBQUdEOztBQUVELFNBQVNRLFNBQVQsQ0FBbUJDLE1BQW5CLEVBQTJCO0FBQ3pCLFFBQU1DLFFBQVEsR0FBR0MsT0FBTyxDQUFDQyxHQUFSLENBQVlDLFdBQTdCO0FBQ0FGLEVBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxXQUFaLEdBQTBCSixNQUExQjtBQUNBLFNBQU9DLFFBQVA7QUFDRDs7QUFFRCxlQUFlSSxPQUFmLEdBQXlCO0FBQ3ZCLE1BQUk7QUFFRixVQUFNLElBQUlDLE9BQUosRUFBYUMsVUFBYixFQUF5QixHQUFHQyxJQUE1QixJQUFvQ04sT0FBTyxDQUFDTyxJQUFsRDtBQUNBLFVBQU1KLE9BQU8sR0FBR0MsT0FBTyxJQUFJWCxVQUFVLENBQUNKLFFBQUQsRUFBV2UsT0FBTyxDQUFDSSxLQUFSLENBQWMsR0FBZCxDQUFYLENBQXJDOztBQUNBLFFBQUksQ0FBQyx1QkFBV0wsT0FBWCxDQUFMLEVBQTBCO0FBQ3hCLFlBQU0sSUFBSU0sS0FBSixDQUFXLG9CQUFtQkwsT0FBUSxFQUF0QyxDQUFOO0FBQ0Q7O0FBQ0QsVUFBTU4sTUFBTSxHQUFHRCxTQUFTLENBQUMsSUFBRCxDQUF4QjtBQUNBLFFBQUlhLEdBQUo7O0FBQ0EsUUFBSTtBQUNGQSxNQUFBQSxHQUFHLEdBQUcsQ0FBQyx5QkFBYUMsY0FBS0MsT0FBTCxDQUFhUCxVQUFiLENBQWIsa0RBQUQsRUFBeUNRLE9BQS9DO0FBQ0QsS0FGRCxTQUVVO0FBQ1JoQixNQUFBQSxTQUFTLENBQUNDLE1BQUQsQ0FBVDtBQUNEOztBQUNELFFBQUksdUJBQVdZLEdBQVgsQ0FBSixFQUFxQjtBQUNuQkEsTUFBQUEsR0FBRyxHQUFHLE1BQU1BLEdBQUcsRUFBZjtBQUNELEtBRkQsTUFFTyxJQUFJLDBCQUFjQSxHQUFkLEtBQXNCQSxHQUFHLENBQUNJLElBQTlCLEVBQW9DO0FBQ3pDSixNQUFBQSxHQUFHLEdBQUcsbUJBQUtBLEdBQUcsQ0FBQ0ksSUFBVCxDQUFOO0FBQ0Q7O0FBQ0QsVUFBTUMsR0FBRyxHQUFHLE1BQU1aLE9BQU8sQ0FBQ08sR0FBRCxFQUFNLEdBQUdKLElBQVQsQ0FBekI7QUFDQU4sSUFBQUEsT0FBTyxDQUFDZ0IsSUFBUixDQUFhRCxHQUFHLEtBQUssSUFBUixHQUFlLENBQWYsR0FBbUIsQ0FBaEM7QUFDRCxHQXJCRCxDQXFCRSxPQUFPRSxHQUFQLEVBQVk7QUFDWixRQUFJQSxHQUFHLFlBQVlSLEtBQW5CLEVBQTBCO0FBQ3hCbEIsTUFBQUEsT0FBTyxDQUFDMkIsS0FBUixDQUNFQyxvQkFBS0MsR0FBTCxDQUFVLEdBQUVILEdBQUcsQ0FBQ0ksTUFBSixHQUFjLEdBQUVKLEdBQUcsQ0FBQ0ksTUFBTyxJQUEzQixHQUFpQyxFQUFHLEdBQUVKLEdBQUcsQ0FBQ0ssS0FBTSxFQUE1RCxDQURGO0FBR0QsS0FKRCxNQUlPO0FBQ0wvQixNQUFBQSxPQUFPLENBQUMyQixLQUFSLENBQWNDLG9CQUFLQyxHQUFMLENBQVNILEdBQVQsQ0FBZDtBQUNEOztBQUNEakIsSUFBQUEsT0FBTyxDQUFDZ0IsSUFBUixDQUFhLENBQWI7QUFDRDtBQUNGOztBQUdELElBQUlPLE9BQU8sQ0FBQ0MsSUFBUixLQUFpQkMsTUFBckIsRUFBNkI7QUFDM0J0QixFQUFBQSxPQUFPO0FBQ1I7O2VBRWNBLE8iLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBiYWJlbC1ub2RlXG5cbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJ1xuaW1wb3J0IEtuZXggZnJvbSAna25leCdcbmltcG9ydCB7IGlzUGxhaW5PYmplY3QsIGlzRnVuY3Rpb24sIGNhbWVsaXplIH0gZnJvbSAnQGRpdG9qcy91dGlscydcbmltcG9ydCAqIGFzIGRiIGZyb20gJy4vZGInXG5pbXBvcnQgc3RhcnRDb25zb2xlIGZyb20gJy4vY29uc29sZSdcblxuY29uc3QgY29tbWFuZHMgPSB7IGRiLCBjb25zb2xlOiBzdGFydENvbnNvbGUgfVxuXG5mdW5jdGlvbiBnZXRDb21tYW5kKGNvbW1hbmRzLCBwYXJ0cykge1xuICBjb25zdCBwYXJ0ID0gcGFydHMuc2hpZnQoKVxuICByZXR1cm4gY29tbWFuZHMgJiYgcGFydFxuICAgID8gZ2V0Q29tbWFuZChjb21tYW5kc1tjYW1lbGl6ZShwYXJ0KV0sIHBhcnRzKVxuICAgIDogY29tbWFuZHNcbn1cblxuZnVuY3Rpb24gc2V0U2lsZW50KHNpbGVudCkge1xuICBjb25zdCBvbGRWYWx1ZSA9IHByb2Nlc3MuZW52LkRJVE9fU0lMRU5UXG4gIHByb2Nlc3MuZW52LkRJVE9fU0lMRU5UID0gc2lsZW50XG4gIHJldHVybiBvbGRWYWx1ZVxufVxuXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlKCkge1xuICB0cnkge1xuICAgIC8vIER5bmFtaWNhbGx5IGxvYWQgYXBwIG9yIGNvbmZpZyBmcm9tIHRoZSBwYXRoIHByb3ZpZGVkIHBhY2thZ2UuanNvbiBzY3JpcHRcbiAgICBjb25zdCBbLCwgY29tbWFuZCwgaW1wb3J0UGF0aCwgLi4uYXJnc10gPSBwcm9jZXNzLmFyZ3ZcbiAgICBjb25zdCBleGVjdXRlID0gY29tbWFuZCAmJiBnZXRDb21tYW5kKGNvbW1hbmRzLCBjb21tYW5kLnNwbGl0KCc6JykpXG4gICAgaWYgKCFpc0Z1bmN0aW9uKGV4ZWN1dGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gY29tbWFuZDogJHtjb21tYW5kfWApXG4gICAgfVxuICAgIGNvbnN0IHNpbGVudCA9IHNldFNpbGVudCh0cnVlKVxuICAgIGxldCBhcmdcbiAgICB0cnkge1xuICAgICAgYXJnID0gKGF3YWl0IGltcG9ydChwYXRoLnJlc29sdmUoaW1wb3J0UGF0aCkpKS5kZWZhdWx0XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldFNpbGVudChzaWxlbnQpXG4gICAgfVxuICAgIGlmIChpc0Z1bmN0aW9uKGFyZykpIHtcbiAgICAgIGFyZyA9IGF3YWl0IGFyZygpXG4gICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KGFyZykgJiYgYXJnLmtuZXgpIHtcbiAgICAgIGFyZyA9IEtuZXgoYXJnLmtuZXgpXG4gICAgfVxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGV4ZWN1dGUoYXJnLCAuLi5hcmdzKVxuICAgIHByb2Nlc3MuZXhpdChyZXMgPT09IHRydWUgPyAwIDogMSlcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBwaWNvLnJlZChgJHtlcnIuZGV0YWlsID8gYCR7ZXJyLmRldGFpbH1cXG5gIDogJyd9JHtlcnIuc3RhY2t9YClcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcihwaWNvLnJlZChlcnIpKVxuICAgIH1cbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxufVxuXG4vLyBTdGFydCB0aGUgY29uc29sZSBpZiBgbm9kZSAuL2xpYi9jbGkvaW5kZXguanNgXG5pZiAocmVxdWlyZS5tYWluID09PSBtb2R1bGUpIHtcbiAgZXhlY3V0ZSgpXG59XG5cbmV4cG9ydCBkZWZhdWx0IGV4ZWN1dGVcbiJdfQ==
|
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.AdminController = void 0;
|
|
5
5
|
|
|
6
|
+
require("core-js/modules/esnext.async-iterator.some.js");
|
|
7
|
+
|
|
8
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
|
9
|
+
|
|
10
|
+
require("core-js/modules/esnext.iterator.some.js");
|
|
11
|
+
|
|
12
|
+
require("core-js/modules/esnext.async-iterator.map.js");
|
|
13
|
+
|
|
14
|
+
require("core-js/modules/esnext.iterator.map.js");
|
|
15
|
+
|
|
6
16
|
var _path = _interopRequireDefault(require("path"));
|
|
7
17
|
|
|
8
18
|
var _koa = _interopRequireDefault(require("koa"));
|
|
@@ -19,11 +29,13 @@ var _cliService = _interopRequireDefault(require("@vue/cli-service"));
|
|
|
19
29
|
|
|
20
30
|
var _htmlWebpackTagsPlugin = _interopRequireDefault(require("html-webpack-tags-plugin"));
|
|
21
31
|
|
|
32
|
+
var _Controller = require("./Controller");
|
|
33
|
+
|
|
22
34
|
var _errors = require("../errors");
|
|
23
35
|
|
|
24
|
-
var
|
|
36
|
+
var _utils = require("../utils");
|
|
25
37
|
|
|
26
|
-
var
|
|
38
|
+
var _utils2 = require("@ditojs/utils");
|
|
27
39
|
|
|
28
40
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
29
41
|
|
|
@@ -67,7 +79,7 @@ class AdminController extends _Controller.Controller {
|
|
|
67
79
|
|
|
68
80
|
sendDitoObject(ctx) {
|
|
69
81
|
ctx.type = 'text/javascript';
|
|
70
|
-
ctx.body = `window.dito = ${
|
|
82
|
+
ctx.body = `window.dito = ${(0, _utils.formatJson)(this.getDitoObject())}`;
|
|
71
83
|
}
|
|
72
84
|
|
|
73
85
|
middleware() {
|
|
@@ -212,9 +224,9 @@ class AdminController extends _Controller.Controller {
|
|
|
212
224
|
var _this$config$plugins;
|
|
213
225
|
|
|
214
226
|
return (_this$config$plugins = this.config.plugins) == null ? void 0 : _this$config$plugins.map(definition => {
|
|
215
|
-
const plugin = (0,
|
|
227
|
+
const plugin = (0, _utils2.isString)(definition) ? {
|
|
216
228
|
id: definition
|
|
217
|
-
} : (0,
|
|
229
|
+
} : (0, _utils2.isObject)(definition) ? definition : {};
|
|
218
230
|
const {
|
|
219
231
|
id,
|
|
220
232
|
apply = require(id)
|
|
@@ -243,4 +255,4 @@ class AdminController extends _Controller.Controller {
|
|
|
243
255
|
}
|
|
244
256
|
|
|
245
257
|
exports.AdminController = AdminController;
|
|
246
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cm9sbGVycy9BZG1pbkNvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiQWRtaW5Db250cm9sbGVyIiwiQ29udHJvbGxlciIsImNvbnN0cnVjdG9yIiwiYXBwIiwibmFtZXNwYWNlIiwiY29uZmlnIiwiYWRtaW4iLCJtb2RlIiwiZW52IiwiZ2V0UGF0aCIsIm5hbWUiLCJzdHIiLCJwYXRoIiwiQ29udHJvbGxlckVycm9yIiwicmVzb2x2ZSIsImdldERpdG9PYmplY3QiLCJhcGkiLCJzZXR0aW5ncyIsIm5vcm1hbGl6ZVBhdGhzIiwiYmFzZSIsInVybCIsInNlbmREaXRvT2JqZWN0IiwiY3R4IiwidHlwZSIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5IiwibWlkZGxld2FyZSIsImF1dGhvcml6YXRpb24iLCJwcm9jZXNzQXV0aG9yaXplIiwiYXV0aG9yaXplIiwibmV4dCIsInRlc3QiLCJoYW5kbGVBdXRob3JpemF0aW9uIiwiY29tcG9zZSIsImtvYSIsIktvYSIsInVzZSIsIm9uY2UiLCJzZXR1cEtvYVdlYnBhY2siLCJtYXRjaCIsInN0YXRzIiwiYWxsIiwiZXJyb3JzIiwiZXJyb3JEZXRhaWxzIiwiZ2V0V2VicGFja0NvbmZpZyIsImRldk1pZGRsZXdhcmUiLCJwdWJsaWNQYXRoIiwiaG90Q2xpZW50IiwiaG90UmVsb2FkIiwibG9nTGV2ZWwiLCJnZXRWdWVDb25maWciLCJkZXZlbG9wbWVudCIsImJ1aWxkIiwiZGV2dG9vbCIsInJ1bnRpbWVDb21waWxlciIsImNvbmZpZ3VyZVdlYnBhY2siLCJlbnRyeSIsImFsaWFzIiwicmVxdWlyZSIsIm91dHB1dCIsImZpbGVuYW1lIiwib3B0aW1pemF0aW9uIiwic3BsaXRDaHVua3MiLCJjYWNoZUdyb3VwcyIsImNvbW1vbiIsImNodW5rcyIsInZpZXdzIiwibW9kdWxlIiwicnVsZXMiLCJlbmZvcmNlIiwicGx1Z2lucyIsIkh0bWxXZWJwYWNrVGFnc1BsdWdpbiIsInNjcmlwdHMiLCJ1c2VIYXNoIiwiYWRkSGFzaCIsImhhc2giLCJyZXBsYWNlIiwiYXBwZW5kIiwid2FybmluZ3NGaWx0ZXIiLCJjaGFpbldlYnBhY2siLCJjb25mIiwidGVtcGxhdGUiLCJwbHVnaW4iLCJ0YXAiLCJhcmdzIiwiam9pbiIsImpzUnVsZSIsInJ1bGUiLCJoYXNCYWJlbCIsInRvQ29uZmlnIiwic29tZSIsImxvYWRlciIsIm9wdGlvbnMiLCJjb21wYWN0IiwiZGVsZXRlIiwiZ2V0VnVlUGx1Z2lucyIsIm1hcCIsImRlZmluaXRpb24iLCJpZCIsImFwcGx5Iiwic2VydmljZSIsIlZ1ZVNlcnZpY2UiLCJpbmxpbmVPcHRpb25zIiwiaW5pdCIsInJlc29sdmVXZWJwYWNrQ29uZmlnIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBRU8sTUFBTUEsZUFBTixTQUE4QkMsc0JBQTlCLENBQXlDO0FBRTlDQyxFQUFBQSxXQUFXLENBQUNDLEdBQUQsRUFBTUMsU0FBTixFQUFpQjtBQUMxQixVQUFNRCxHQUFOLEVBQVdDLFNBQVg7QUFHQSxTQUFLQyxNQUFMLEdBQWMsRUFDWixHQUFHLEtBQUtGLEdBQUwsQ0FBU0UsTUFBVCxDQUFnQkMsS0FEUDtBQUVaLFNBQUcsS0FBS0Q7QUFGSSxLQUFkO0FBT0EsU0FBS0UsSUFBTCxHQUFZLEtBQUtGLE1BQUwsQ0FBWUUsSUFBWixLQUNWLEtBQUtKLEdBQUwsQ0FBU0UsTUFBVCxDQUFnQkcsR0FBaEIsS0FBd0IsYUFBeEIsR0FBd0MsYUFBeEMsR0FBd0QsWUFEOUMsQ0FBWjtBQUdEOztBQUVEQyxFQUFBQSxPQUFPLENBQUNDLElBQUQsRUFBTztBQUFBOztBQUNaLFVBQU1DLEdBQUcsd0JBQUcsS0FBS04sTUFBTCxDQUFZSyxJQUFaLENBQUgscUJBQUcsa0JBQW1CRSxJQUEvQjs7QUFDQSxRQUFJLENBQUNELEdBQUwsRUFBVTtBQUNSLFlBQU0sSUFBSUUsdUJBQUosQ0FDSixJ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QSxLQUFLLEdBQUd6QyxPQUFPLENBQUN3QyxFQUFEO0FBRlgsVUFHRmhCLE1BSEo7O0FBSUEsVUFBSSxDQUFDZ0IsRUFBTCxFQUFTO0FBQ1AsY0FBTSxJQUFJdEYsdUJBQUosQ0FDSixJQURJLEVBRUgsOEJBQTZCcUYsVUFBVyxFQUZyQyxDQUFOO0FBSUQ7O0FBQ0QsYUFBTztBQUFFQyxRQUFBQSxFQUFGO0FBQU1DLFFBQUFBO0FBQU4sT0FBUDtBQUNELEtBakJNLENBQVA7QUFrQkQ7O0FBRUR2RCxFQUFBQSxnQkFBZ0IsR0FBRztBQUNqQixVQUFNd0QsT0FBTyxHQUFHLElBQUlDLG1CQUFKLENBQWUsS0FBSzdGLE9BQUwsQ0FBYSxPQUFiLENBQWYsRUFBc0M7QUFDcEQ4RixNQUFBQSxhQUFhLEVBQUUsS0FBS3BELFlBQUwsRUFEcUM7QUFFcERvQixNQUFBQSxPQUFPLEVBQUUsS0FBS3lCLGFBQUw7QUFGMkMsS0FBdEMsQ0FBaEI7QUFJQUssSUFBQUEsT0FBTyxDQUFDRyxJQUFSLENBQWEsS0FBS2pHLElBQWxCO0FBQ0EsV0FBTzhGLE9BQU8sQ0FBQ0ksb0JBQVIsRUFBUDtBQUNEOztBQXJQNkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJ1xuaW1wb3J0IEtvYSBmcm9tICdrb2EnXG5pbXBvcnQgbW91bnQgZnJvbSAna29hLW1vdW50J1xuaW1wb3J0IHNlcnZlIGZyb20gJ2tvYS1zdGF0aWMnXG5pbXBvcnQga29hV2VicGFjayBmcm9tICdrb2Etd2VicGFjaydcbmltcG9ydCBoaXN0b3J5QXBpRmFsbGJhY2sgZnJvbSAna29hLWNvbm5lY3QtaGlzdG9yeS1hcGktZmFsbGJhY2snXG5pbXBvcnQgVnVlU2VydmljZSBmcm9tICdAdnVlL2NsaS1zZXJ2aWNlJ1xuaW1wb3J0IEh0bWxXZWJwYWNrVGFnc1BsdWdpbiBmcm9tICdodG1sLXdlYnBhY2stdGFncy1wbHVnaW4nXG5pbXBvcnQgeyBDb250cm9sbGVyRXJyb3IgfSBmcm9tICdAL2Vycm9ycydcbmltcG9ydCB7IENvbnRyb2xsZXIgfSBmcm9tICcuL0NvbnRyb2xsZXInXG5pbXBvcnQgeyBpc1N0cmluZywgaXNPYmplY3QgfSBmcm9tICdAZGl0b2pzL3V0aWxzJ1xuXG5leHBvcnQgY2xhc3MgQWRtaW5Db250cm9sbGVyIGV4dGVuZHMgQ29udHJvbGxlciB7XG4gIC8vIEBvdmVycmlkZVxuICBjb25zdHJ1Y3RvcihhcHAsIG5hbWVzcGFjZSkge1xuICAgIHN1cGVyKGFwcCwgbmFtZXNwYWNlKVxuICAgIC8vIE1lcmdlIGB0aGlzLmFwcC5jb25maWcuYWRtaW5gIGludG8gY29uZmlnIGFzIGRlZmF1bHQsIGJ1dCBhbGxvdyBvdmVycmlkZXNcbiAgICAvLyBvbiB0aGUgY29udHJvbGxlciBpdHNlbGY6XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi50aGlzLmFwcC5jb25maWcuYWRtaW4sXG4gICAgICAuLi50aGlzLmNvbmZpZ1xuICAgIH1cbiAgICAvLyBJZiBubyBtb2RlIGlzIHNwZWNpZmllZCwgdXNlIGBwcm9kdWN0aW9uYCBzaW5jZSB0aGF0J3MganVzdCB0aGUgaG9zdGluZ1xuICAgIC8vIG9mIHRoZSBwcmUtYnVpbHQgYWRtaW4gZmlsZXMuIGBkZXZlbG9wbWVudGAgc2VydmVzIHRoZSBhZG1pbiBkaXJlY3RseVxuICAgIC8vIHNvdXJjZXMgd2l0aCBIUk0sIGFuZCB0aHVzIHNob3VsZCBiZSBleHBsaWNpdGVseSBhY3RpdmF0ZWQuXG4gICAgdGhpcy5tb2RlID0gdGhpcy5jb25maWcubW9kZSB8fCAoXG4gICAgICB0aGlzLmFwcC5jb25maWcuZW52ID09PSAnZGV2ZWxvcG1lbnQnID8gJ2RldmVsb3BtZW50JyA6ICdwcm9kdWN0aW9uJ1xuICAgIClcbiAgfVxuXG4gIGdldFBhdGgobmFtZSkge1xuICAgIGNvbnN0IHN0ciA9IHRoaXMuY29uZmlnW25hbWVdPy5wYXRoXG4gICAgaWYgKCFzdHIpIHtcbiAgICAgIHRocm93IG5ldyBDb250cm9sbGVyRXJyb3IoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGBNaXNzaW5nIGFkbWluLiR7bmFtZX0ucGF0aCBjb25maWd1cmF0aW9uLmBcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIHBhdGgucmVzb2x2ZShzdHIpXG4gIH1cblxuICBnZXREaXRvT2JqZWN0KCkge1xuICAgIC8vIEV4cG9zZSBhcGkgY29uZmlnIGFuZCBkZWZpbml0aW9ucyB0byBicm93c2VyIHNpZGU6XG4gICAgLy8gUGFzcyBvbiB0aGUgYGNvbmZpZy5hcHAubm9ybWFsaXplUGF0aHNgIHNldHRpbmcgdG8gRGl0by5qcyBBZG1pbjpcbiAgICBjb25zdCB7XG4gICAgICBhcGkgPSB7fSxcbiAgICAgIHNldHRpbmdzID0ge31cbiAgICB9ID0gdGhpcy5jb25maWdcbiAgICBpZiAoYXBpLm5vcm1hbGl6ZVBhdGhzID09IG51bGwpIHtcbiAgICAgIGFwaS5ub3JtYWxpemVQYXRocyA9IHRoaXMuYXBwLmNvbmZpZy5hcHAubm9ybWFsaXplUGF0aHNcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGJhc2U6IHRoaXMudXJsLFxuICAgICAgYXBpLFxuICAgICAgc2V0dGluZ3NcbiAgICB9XG4gIH1cblxuICBzZW5kRGl0b09iamVjdChjdHgpIHtcbiAgICAvLyBTZW5kIGJhY2sgdGhlIGdsb2JhbCBkaXRvIG9iamVjdCBhcyBKYXZhU2NyaXB0IGNvZGUuXG4gICAgY3R4LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0J1xuICAgIGN0eC5ib2R5ID0gYHdpbmRvdy5kaXRvID0gJHtKU09OLnN0cmluZ2lmeSh0aGlzLmdldERpdG9PYmplY3QoKSl9YFxuICB9XG5cbiAgbWlkZGxld2FyZSgpIHtcbiAgICAvLyBTaGllbGQgYWRtaW4gdmlld3MgYWdhaW5zdCB1bmF1dGhvcml6ZWQgYWNjZXNzLlxuICAgIGNvbnN0IGF1dGhvcml6YXRpb24gPSB0aGlzLnByb2Nlc3NBdXRob3JpemUodGhpcy5hdXRob3JpemUpXG4gICAgcmV0dXJuIGFzeW5jIChjdHgsIG5leHQpID0+IHtcbiAgICAgIGlmICgvXlxcL2RpdG9cXGIvLnRlc3QoY3R4LnVybCkpIHtcbiAgICAgICAgLy8gUmV0dXJuIHdpdGhvdXQgY2FsbGluZyBgbmV4dCgpYFxuICAgICAgICByZXR1cm4gdGhpcy5zZW5kRGl0b09iamVjdChjdHgpXG4gICAgICB9IGVsc2UgaWYgKC9cXC92aWV3c1xcYi8udGVzdChjdHgudXJsKSkge1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZUF1dGhvcml6YXRpb24oYXV0aG9yaXphdGlvbiwgY3R4KVxuICAgICAgfVxuICAgICAgYXdhaXQgbmV4dCgpXG4gICAgfVxuICB9XG5cbiAgY29tcG9zZSgpIHtcbiAgICB0aGlzLmtvYSA9IG5ldyBLb2EoKVxuICAgIHRoaXMua29hLnVzZSh0aGlzLm1pZGRsZXdhcmUoKSlcbiAgICBpZiAodGhpcy5tb2RlID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAvLyBDYWxsaW5nIGdldFBhdGgoKSB0aHJvd3MgZXhjZXB0aW9uIGlmIGFkbWluLmJ1aWxkLnBhdGggaXMgbm90IGRlZmluZWQ6XG4gICAgICBpZiAodGhpcy5nZXRQYXRoKCdidWlsZCcpKSB7XG4gICAgICAgIHRoaXMuYXBwLm9uY2UoJ2FmdGVyOnN0YXJ0JywgKCkgPT4gdGhpcy5zZXR1cEtvYVdlYnBhY2soKSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU3RhdGljYWxseSBzZXJ2ZSB0aGUgcHJlLWJ1aWx0IGFkbWluIFNQQS4gQnV0IGluIG9yZGVyIGZvciB2dWUtcm91dGVyXG4gICAgICAvLyByb3V0ZXMgaW5zaWRlIHRoZSBTUEEgdG8gd29yaywgdXNlIGEgdGlueSByZXdyaXRpbmcgbWlkZGxld2FyZTpcbiAgICAgIHRoaXMua29hLnVzZShhc3luYyAoY3R4LCBuZXh0KSA9PiB7XG4gICAgICAgIC8vIC8vIEV4Y2x1ZGUgYXNzZXQgcmVxdWVzdHMgKGNzcywganMsIGFwcClcbiAgICAgICAgaWYgKCFjdHgudXJsLm1hdGNoKC9eXFwvKGFwcFxcLnxjc3NcXC98anNcXC8pLykpIHtcbiAgICAgICAgICBjdHgudXJsID0gJy8nXG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgbmV4dCgpXG4gICAgICB9KVxuICAgICAgdGhpcy5rb2EudXNlKHNlcnZlKHRoaXMuZ2V0UGF0aCgnZGlzdCcpKSlcbiAgICB9XG4gICAgcmV0dXJuIG1vdW50KHRoaXMudXJsLCB0aGlzLmtvYSlcbiAgfVxuXG4gIGFzeW5jIHNldHVwS29hV2VicGFjaygpIHtcbiAgICAvLyBodHRwczovL3dlYnBhY2suanMub3JnL2NvbmZpZ3VyYXRpb24vc3RhdHMvI3N0YXRzXG4gICAgY29uc3Qgc3RhdHMgPSB7XG4gICAgICBhbGw6IGZhbHNlLFxuICAgICAgZXJyb3JzOiB0cnVlLFxuICAgICAgZXJyb3JEZXRhaWxzOiB0cnVlXG4gICAgfVxuXG4gICAgY29uc3QgbWlkZGxld2FyZSA9IGF3YWl0IGtvYVdlYnBhY2soe1xuICAgICAgY29uZmlnOiB0aGlzLmdldFdlYnBhY2tDb25maWcoKSxcbiAgICAgIGRldk1pZGRsZXdhcmU6IHtcbiAgICAgICAgcHVibGljUGF0aDogJy8nLFxuICAgICAgICBzdGF0c1xuICAgICAgfSxcbiAgICAgIGhvdENsaWVudDogdGhpcy5jb25maWcuaG90UmVsb2FkICE9PSBmYWxzZSAmJiB7XG4gICAgICAgIC8vIFRoZSBvbmx5IHdheSB0byBub3QgbG9nIGBGYWlsZWQgdG8gcGFyc2Ugc291cmNlIG1hcGAgd2FybmluZ3MgaXNcbiAgICAgICAgLy8gc2FkbHkgdG8gaWdub3JlIGFsbCB3YXJuaW5nczpcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2stY29udHJpYi93ZWJwYWNrLWhvdC1jbGllbnQvaXNzdWVzLzk0XG4gICAgICAgIGxvZ0xldmVsOiAnZXJyb3InLFxuICAgICAgICBzdGF0c1xuICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy5rb2EudXNlKGhpc3RvcnlBcGlGYWxsYmFjaygpKVxuICAgIHRoaXMua29hLnVzZShtaWRkbGV3YXJlKVxuICB9XG5cbiAgZ2V0VnVlQ29uZmlnKCkge1xuICAgIGNvbnN0IGRldmVsb3BtZW50ID0gdGhpcy5tb2RlID09PSAnZGV2ZWxvcG1lbnQnXG4gICAgY29uc3Qge1xuICAgICAgYnVpbGQgPSB7fSxcbiAgICAgIGRldnRvb2wgPSBkZXZlbG9wbWVudCA/ICdzb3VyY2UtbWFwJyA6IGZhbHNlXG4gICAgfSA9IHRoaXMuY29uZmlnXG4gICAgcmV0dXJuIHtcbiAgICAgIHJ1bnRpbWVDb21waWxlcjogdHJ1ZSxcbiAgICAgIHB1YmxpY1BhdGg6IGAke3RoaXMudXJsfS9gLFxuICAgICAgY29uZmlndXJlV2VicGFjazoge1xuICAgICAgICBkZXZ0b29sLFxuICAgICAgICAvLyBXZSBhbHdheXMgbmVlZCB0aGUgc291cmNlIGJ1aWxkIHBhdGggYXMgZW50cnksIGV2ZW4gZm9yIHByb2R1Y3Rpb24sXG4gICAgICAgIC8vIGZvciB0aGluZ3MgbGlrZSAuYmFiZWxyYyB0byB3b3JrIHdoZW4gYnVpbGRpbmcgZm9yIGRpc3Q6XG4gICAgICAgIGVudHJ5OiBbdGhpcy5nZXRQYXRoKCdidWlsZCcpXSxcbiAgICAgICAgcmVzb2x2ZToge1xuICAgICAgICAgIGFsaWFzOiB7XG4gICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2stY29udHJpYi93ZWJwYWNrLWhvdC1jbGllbnQvcHVsbC82MlxuICAgICAgICAgICAgJ3dlYnBhY2staG90LWNsaWVudC9jbGllbnQnOlxuICAgICAgICAgICAgICByZXF1aXJlLnJlc29sdmUoJ3dlYnBhY2staG90LWNsaWVudC9jbGllbnQnKVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0OiB7XG4gICAgICAgICAgZmlsZW5hbWU6ICdbbmFtZV0uW2hhc2hdLmpzJ1xuICAgICAgICB9LFxuICAgICAgICBvcHRpbWl6YXRpb246IHtcbiAgICAgICAgICBzcGxpdENodW5rczoge1xuICAgICAgICAgICAgLy8gU3BsaXQgZGVwZW5kZW5jaWVzIGludG8gdHdvIGNodW5rcywgb25lIGZvciBhbGwgY29tbW9uIGxpYnJhcmllcyxcbiAgICAgICAgICAgIC8vIGFuZCBvbmUgZm9yIGFsbCB2aWV3cywgc28gdGhleSBjYW4gYmUgbG9hZGVkIHNlcGFyYXRlbHksIGFuZCBvbmx5XG4gICAgICAgICAgICAvLyBvbmNlIGF1dGhlbnRpY2F0aW9uIHdhcyBzdWNjZXNzZnVsLlxuICAgICAgICAgICAgY2FjaGVHcm91cHM6IHtcbiAgICAgICAgICAgICAgY29tbW9uOiB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2NvbW1vbicsXG4gICAgICAgICAgICAgICAgdGVzdDogL1xcL25vZGVfbW9kdWxlc1xcLy8sXG4gICAgICAgICAgICAgICAgY2h1bmtzOiAnYWxsJ1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB2aWV3czoge1xuICAgICAgICAgICAgICAgIG5hbWU6ICd2aWV3cycsXG4gICAgICAgICAgICAgICAgdGVzdDogL1xcL3ZpZXdzXFwvLyxcbiAgICAgICAgICAgICAgICBjaHVua3M6ICdhbGwnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vZHVsZTogZGV2ZWxvcG1lbnRcbiAgICAgICAgICAvLyBQcmVzZXJ2ZSBzb3VyY2UtbWFwcyBpbiB0aGlyZCBwYXJ0eSBkZXBlbmRlbmNpZXMsIGJ1dCBkbyBub3QgbG9nXG4gICAgICAgICAgLy8gd2FybmluZ3MgYWJvdXQgZGVwZW5kZW5jaWVzIHRoYXQgZG9uJ3QgY29tZSB3aXRoIHNvdXJjZS1tYXBzLlxuICAgICAgICAgIC8vIGh0dHBzOi8vd2VicGFjay5qcy5vcmcvbG9hZGVycy9zb3VyY2UtbWFwLWxvYWRlci8jaWdub3Jpbmctd2FybmluZ3NcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgIHJ1bGVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXN0OiAvXFwuKGpzfGNzcykkLyxcbiAgICAgICAgICAgICAgICBlbmZvcmNlOiAncHJlJyxcbiAgICAgICAgICAgICAgICAvLyBVc2UgYHJlcXVpcmUucmVzb2x2ZSgpYCBoZXJlIHRvbywgdG8gYXZvaWQgaXNzdWVzIHNpbWlsYXIgdG9cbiAgICAgICAgICAgICAgICAvLyAnd2VicGFjay1ob3QtY2xpZW50L2NsaWVudCcgYWJvdmUuXG4gICAgICAgICAgICAgICAgdXNlOiBbcmVxdWlyZS5yZXNvbHZlKCdzb3VyY2UtbWFwLWxvYWRlcicpXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICAgIDoge30sXG4gICAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgICAvLyBVc2UgYEh0bWxXZWJwYWNrVGFnc1BsdWdpbmAgcGx1Z2luIHRvIGluamVjdCBhIHNjcmlwdCB0YWcgdGhhdFxuICAgICAgICAgIC8vIGxvYWQgdGhlIGRpdG8gb2JqZWN0IGZyb20gdGhlIGNvbnRyb2xsZXIsIGluY2x1ZGluZyBgZGl0by5zZXR0aW5nc2BcbiAgICAgICAgICBuZXcgSHRtbFdlYnBhY2tUYWdzUGx1Z2luKHtcbiAgICAgICAgICAgIHNjcmlwdHM6IFsnZGl0by5qcyddLFxuICAgICAgICAgICAgdXNlSGFzaDogdHJ1ZSxcbiAgICAgICAgICAgIGFkZEhhc2g6IChwYXRoLCBoYXNoKSA9PiBwYXRoLnJlcGxhY2UoL1xcLmpzJC8sIGAuJHtoYXNofS5qc2ApLFxuICAgICAgICAgICAgYXBwZW5kOiBmYWxzZVxuICAgICAgICAgIH0pXG4gICAgICAgIF0sXG4gICAgICAgIHN0YXRzOiB7XG4gICAgICAgICAgd2FybmluZ3NGaWx0ZXI6IC9GYWlsZWQgdG8gcGFyc2Ugc291cmNlIG1hcC9cbiAgICAgICAgfVxuICAgICAgfSxcblxuICAgICAgY2hhaW5XZWJwYWNrOiBjb25mID0+IHtcbiAgICAgICAgLy8gQ2hhbmdlIHRoZSBsb2NhdGlvbiBvZiB0aGUgSFRNTCB0ZW1wbGF0ZTpcbiAgICAgICAgY29uc3QgeyB0ZW1wbGF0ZSA9ICdpbmRleC5odG1sJyB9ID0gYnVpbGRcbiAgICAgICAgY29uZi5wbHVnaW4oJ2h0bWwnKS50YXAoYXJncyA9PiB7XG4gICAgICAgICAgYXJnc1swXS50ZW1wbGF0ZSA9IC9eWy4vXS8udGVzdCh0ZW1wbGF0ZSlcbiAgICAgICAgICAgID8gcGF0aC5yZXNvbHZlKHRlbXBsYXRlKVxuICAgICAgICAgICAgOiBwYXRoLmpvaW4odGhpcy5nZXRQYXRoKCdidWlsZCcpLCB0ZW1wbGF0ZSlcbiAgICAgICAgICByZXR1cm4gYXJnc1xuICAgICAgICB9KVxuICAgICAgICBpZiAoZGV2ZWxvcG1lbnQpIHtcbiAgICAgICAgICAvLyBEaXNhYmxlIHRoZSAnY29tcGFjdCcgb3B0aW9uIGluIGJhYmVsLWxvYWRlciBkdXJpbmcgZGV2ZWxvcG1lbnQgdG9cbiAgICAgICAgICAvLyBwcmV2ZW50IGNvbXBsYWludHMgd2hlbiB3b3JraW5nIHdpdGggdGhlIGB5YXJuIHdhdGNoYCB2ZXJzaW9ucyBvZlxuICAgICAgICAgIC8vIGRpdG8tYWRtaW4udW1kLm1pbi5qcyBhbmQgZGl0by11aS51bWQubWluLmpzXG4gICAgICAgICAgY29uc3QganNSdWxlID0gY29uZi5tb2R1bGUucnVsZSgnanMnKVxuICAgICAgICAgIGNvbnN0IGhhc0JhYmVsID0ganNSdWxlLnRvQ29uZmlnKCkudXNlPy5zb21lKFxuICAgICAgICAgICAgKHsgbG9hZGVyIH0pID0+IC9cXGJiYWJlbC1sb2FkZXJcXGIvLnRlc3QobG9hZGVyKVxuICAgICAgICAgIClcbiAgICAgICAgICBpZiAoaGFzQmFiZWwpIHtcbiAgICAgICAgICAgIGpzUnVsZS51c2UoJ2JhYmVsLWxvYWRlcicpLm9wdGlvbnMoeyBjb21wYWN0OiBmYWxzZSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBNYWtlIGBzdGF0cy53YXJuaW5nc0ZpbHRlcmAgd29yaywgc2VlOlxuICAgICAgICAgIC8vIGh0dHBzOi8vZm9ydW0udnVlanMub3JnL3Qvc3BwcmVzcy13YXJuaW5ncy1pbi12dWUtY2xpLTMvNDU5MDUvNFxuICAgICAgICAgIGNvbmYucGx1Z2lucy5kZWxldGUoJ2ZyaWVuZGx5LWVycm9ycycpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRWdWVQbHVnaW5zKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5wbHVnaW5zPy5tYXAoZGVmaW5pdGlvbiA9PiB7XG4gICAgICBjb25zdCBwbHVnaW4gPSBpc1N0cmluZyhkZWZpbml0aW9uKVxuICAgICAgICA/IHsgaWQ6IGRlZmluaXRpb24gfVxuICAgICAgICA6IGlzT2JqZWN0KGRlZmluaXRpb24pXG4gICAgICAgICAgPyBkZWZpbml0aW9uXG4gICAgICAgICAgOiB7fVxuICAgICAgY29uc3Qge1xuICAgICAgICBpZCxcbiAgICAgICAgYXBwbHkgPSByZXF1aXJlKGlkKVxuICAgICAgfSA9IHBsdWdpblxuICAgICAgaWYgKCFpZCkge1xuICAgICAgICB0aHJvdyBuZXcgQ29udHJvbGxlckVycm9yKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgYEludmFsaWQgcGx1Z2luIGRlZmluaXRpb246ICR7ZGVmaW5pdGlvbn1gXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGlkLCBhcHBseSB9XG4gICAgfSlcbiAgfVxuXG4gIGdldFdlYnBhY2tDb25maWcoKSB7XG4gICAgY29uc3Qgc2VydmljZSA9IG5ldyBWdWVTZXJ2aWNlKHRoaXMuZ2V0UGF0aCgnYnVpbGQnKSwge1xuICAgICAgaW5saW5lT3B0aW9uczogdGhpcy5nZXRWdWVDb25maWcoKSxcbiAgICAgIHBsdWdpbnM6IHRoaXMuZ2V0VnVlUGx1Z2lucygpXG4gICAgfSlcbiAgICBzZXJ2aWNlLmluaXQodGhpcy5tb2RlKVxuICAgIHJldHVybiBzZXJ2aWNlLnJlc29sdmVXZWJwYWNrQ29uZmlnKClcbiAgfVxufVxuIl19
|
|
258
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cm9sbGVycy9BZG1pbkNvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiQWRtaW5Db250cm9sbGVyIiwiQ29udHJvbGxlciIsImNvbnN0cnVjdG9yIiwiYXBwIiwibmFtZXNwYWNlIiwiY29uZmlnIiwiYWRtaW4iLCJtb2RlIiwiZW52IiwiZ2V0UGF0aCIsIm5hbWUiLCJzdHIiLCJwYXRoIiwiQ29udHJvbGxlckVycm9yIiwicmVzb2x2ZSIsImdldERpdG9PYmplY3QiLCJhcGkiLCJzZXR0aW5ncyIsIm5vcm1hbGl6ZVBhdGhzIiwiYmFzZSIsInVybCIsInNlbmREaXRvT2JqZWN0IiwiY3R4IiwidHlwZSIsImJvZHkiLCJtaWRkbGV3YXJlIiwiYXV0aG9yaXphdGlvbiIsInByb2Nlc3NBdXRob3JpemUiLCJhdXRob3JpemUiLCJuZXh0IiwidGVzdCIsImhhbmRsZUF1dGhvcml6YXRpb24iLCJjb21wb3NlIiwia29hIiwiS29hIiwidXNlIiwib25jZSIsInNldHVwS29hV2VicGFjayIsIm1hdGNoIiwic3RhdHMiLCJhbGwiLCJlcnJvcnMiLCJlcnJvckRldGFpbHMiLCJnZXRXZWJwYWNrQ29uZmlnIiwiZGV2TWlkZGxld2FyZSIsInB1YmxpY1BhdGgiLCJob3RDbGllbnQiLCJob3RSZWxvYWQiLCJsb2dMZXZlbCIsImdldFZ1ZUNvbmZpZyIsImRldmVsb3BtZW50IiwiYnVpbGQiLCJkZXZ0b29sIiwicnVudGltZUNvbXBpbGVyIiwiY29uZmlndXJlV2VicGFjayIsImVudHJ5IiwiYWxpYXMiLCJyZXF1aXJlIiwib3V0cHV0IiwiZmlsZW5hbWUiLCJvcHRpbWl6YXRpb24iLCJzcGxpdENodW5rcyIsImNhY2hlR3JvdXBzIiwiY29tbW9uIiwiY2h1bmtzIiwidmlld3MiLCJtb2R1bGUiLCJydWxlcyIsImVuZm9yY2UiLCJwbHVnaW5zIiwiSHRtbFdlYnBhY2tUYWdzUGx1Z2luIiwic2NyaXB0cyIsInVzZUhhc2giLCJhZGRIYXNoIiwiaGFzaCIsInJlcGxhY2UiLCJhcHBlbmQiLCJ3YXJuaW5nc0ZpbHRlciIsImNoYWluV2VicGFjayIsImNvbmYiLCJ0ZW1wbGF0ZSIsInBsdWdpbiIsInRhcCIsImFyZ3MiLCJqb2luIiwianNSdWxlIiwicnVsZSIsImhhc0JhYmVsIiwidG9Db25maWciLCJzb21lIiwibG9hZGVyIiwib3B0aW9ucyIsImNvbXBhY3QiLCJkZWxldGUiLCJnZXRWdWVQbHVnaW5zIiwibWFwIiwiZGVmaW5pdGlvbiIsImlkIiwiYXBwbHkiLCJzZXJ2aWNlIiwiVnVlU2VydmljZSIsImlubGluZU9wdGlvbnMiLCJpbml0IiwicmVzb2x2ZVdlYnBhY2tDb25maWciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBRU8sTUFBTUEsZUFBTixTQUE4QkMsc0JBQTlCLENBQXlDO0FBRTlDQyxFQUFBQSxXQUFXLENBQUNDLEdBQUQsRUFBTUMsU0FBTixFQUFpQjtBQUMxQixVQUFNRCxHQUFOLEVBQVdDLFNBQVg7QUFHQSxTQUFLQyxNQUFMLEdBQWMsRUFDWixHQUFHLEtBQUtGLEdBQUwsQ0FBU0UsTUFBVCxDQUFnQkMsS0FEUDtBQUVaLFNBQUcsS0FBS0Q7QUFGSSxLQUFkO0FBT0EsU0FBS0UsSUFBTCxHQUFZLEtBQUtGLE1BQUwsQ0FBWUUsSUFBWixLQUNWLEtBQUtKLEdBQUwsQ0FBU0UsTUFBVCxDQUFnQkcsR0FBaEIsS0FBd0IsYUFBeEIsR0FBd0MsYUFBeEMsR0FBd0QsWUFEOUMsQ0FBWjtBQUdEOztBQUVEQyxFQUFBQSxPQUFPLENBQUNDLElBQUQsRUFBTztBQUFBOztBQUNaLFVBQU1DLEdBQUcsd0JBQUcsS0FBS04sTUFBTCxDQUFZSyxJQUFaLENBQUgscUJBQUcsa0JBQW1CRSxJQUEvQjs7QUFDQSxRQUFJLENBQUNELEdBQUwsRUFBVTtBQUNSLFlBQU0sSUFBSUUsdUJBQUosQ0FDSixJQURJ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Q0FBQ3dDLEVBQUQ7QUFGWCxVQUdGaEIsTUFISjs7QUFJQSxVQUFJLENBQUNnQixFQUFMLEVBQVM7QUFDUCxjQUFNLElBQUlwRix1QkFBSixDQUNKLElBREksRUFFSCw4QkFBNkJtRixVQUFXLEVBRnJDLENBQU47QUFJRDs7QUFDRCxhQUFPO0FBQUVDLFFBQUFBLEVBQUY7QUFBTUMsUUFBQUE7QUFBTixPQUFQO0FBQ0QsS0FqQk0sQ0FBUDtBQWtCRDs7QUFFRHZELEVBQUFBLGdCQUFnQixHQUFHO0FBQ2pCLFVBQU13RCxPQUFPLEdBQUcsSUFBSUMsbUJBQUosQ0FBZSxLQUFLM0YsT0FBTCxDQUFhLE9BQWIsQ0FBZixFQUFzQztBQUNwRDRGLE1BQUFBLGFBQWEsRUFBRSxLQUFLcEQsWUFBTCxFQURxQztBQUVwRG9CLE1BQUFBLE9BQU8sRUFBRSxLQUFLeUIsYUFBTDtBQUYyQyxLQUF0QyxDQUFoQjtBQUlBSyxJQUFBQSxPQUFPLENBQUNHLElBQVIsQ0FBYSxLQUFLL0YsSUFBbEI7QUFDQSxXQUFPNEYsT0FBTyxDQUFDSSxvQkFBUixFQUFQO0FBQ0Q7O0FBclA2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgS29hIGZyb20gJ2tvYSdcbmltcG9ydCBtb3VudCBmcm9tICdrb2EtbW91bnQnXG5pbXBvcnQgc2VydmUgZnJvbSAna29hLXN0YXRpYydcbmltcG9ydCBrb2FXZWJwYWNrIGZyb20gJ2tvYS13ZWJwYWNrJ1xuaW1wb3J0IGhpc3RvcnlBcGlGYWxsYmFjayBmcm9tICdrb2EtY29ubmVjdC1oaXN0b3J5LWFwaS1mYWxsYmFjaydcbmltcG9ydCBWdWVTZXJ2aWNlIGZyb20gJ0B2dWUvY2xpLXNlcnZpY2UnXG5pbXBvcnQgSHRtbFdlYnBhY2tUYWdzUGx1Z2luIGZyb20gJ2h0bWwtd2VicGFjay10YWdzLXBsdWdpbidcbmltcG9ydCB7IENvbnRyb2xsZXIgfSBmcm9tICcuL0NvbnRyb2xsZXInXG5pbXBvcnQgeyBDb250cm9sbGVyRXJyb3IgfSBmcm9tICdAL2Vycm9ycydcbmltcG9ydCB7IGZvcm1hdEpzb24gfSBmcm9tICdAL3V0aWxzJ1xuaW1wb3J0IHsgaXNTdHJpbmcsIGlzT2JqZWN0IH0gZnJvbSAnQGRpdG9qcy91dGlscydcblxuZXhwb3J0IGNsYXNzIEFkbWluQ29udHJvbGxlciBleHRlbmRzIENvbnRyb2xsZXIge1xuICAvLyBAb3ZlcnJpZGVcbiAgY29uc3RydWN0b3IoYXBwLCBuYW1lc3BhY2UpIHtcbiAgICBzdXBlcihhcHAsIG5hbWVzcGFjZSlcbiAgICAvLyBNZXJnZSBgdGhpcy5hcHAuY29uZmlnLmFkbWluYCBpbnRvIGNvbmZpZyBhcyBkZWZhdWx0LCBidXQgYWxsb3cgb3ZlcnJpZGVzXG4gICAgLy8gb24gdGhlIGNvbnRyb2xsZXIgaXRzZWxmOlxuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4udGhpcy5hcHAuY29uZmlnLmFkbWluLFxuICAgICAgLi4udGhpcy5jb25maWdcbiAgICB9XG4gICAgLy8gSWYgbm8gbW9kZSBpcyBzcGVjaWZpZWQsIHVzZSBgcHJvZHVjdGlvbmAgc2luY2UgdGhhdCdzIGp1c3QgdGhlIGhvc3RpbmdcbiAgICAvLyBvZiB0aGUgcHJlLWJ1aWx0IGFkbWluIGZpbGVzLiBgZGV2ZWxvcG1lbnRgIHNlcnZlcyB0aGUgYWRtaW4gZGlyZWN0bHlcbiAgICAvLyBzb3VyY2VzIHdpdGggSFJNLCBhbmQgdGh1cyBzaG91bGQgYmUgZXhwbGljaXRlbHkgYWN0aXZhdGVkLlxuICAgIHRoaXMubW9kZSA9IHRoaXMuY29uZmlnLm1vZGUgfHwgKFxuICAgICAgdGhpcy5hcHAuY29uZmlnLmVudiA9PT0gJ2RldmVsb3BtZW50JyA/ICdkZXZlbG9wbWVudCcgOiAncHJvZHVjdGlvbidcbiAgICApXG4gIH1cblxuICBnZXRQYXRoKG5hbWUpIHtcbiAgICBjb25zdCBzdHIgPSB0aGlzLmNvbmZpZ1tuYW1lXT8ucGF0aFxuICAgIGlmICghc3RyKSB7XG4gICAgICB0aHJvdyBuZXcgQ29udHJvbGxlckVycm9yKFxuICAgICAgICB0aGlzLFxuICAgICAgICBgTWlzc2luZyBhZG1pbi4ke25hbWV9LnBhdGggY29uZmlndXJhdGlvbi5gXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiBwYXRoLnJlc29sdmUoc3RyKVxuICB9XG5cbiAgZ2V0RGl0b09iamVjdCgpIHtcbiAgICAvLyBFeHBvc2UgYXBpIGNvbmZpZyBhbmQgZGVmaW5pdGlvbnMgdG8gYnJvd3NlciBzaWRlOlxuICAgIC8vIFBhc3Mgb24gdGhlIGBjb25maWcuYXBwLm5vcm1hbGl6ZVBhdGhzYCBzZXR0aW5nIHRvIERpdG8uanMgQWRtaW46XG4gICAgY29uc3Qge1xuICAgICAgYXBpID0ge30sXG4gICAgICBzZXR0aW5ncyA9IHt9XG4gICAgfSA9IHRoaXMuY29uZmlnXG4gICAgaWYgKGFwaS5ub3JtYWxpemVQYXRocyA9PSBudWxsKSB7XG4gICAgICBhcGkubm9ybWFsaXplUGF0aHMgPSB0aGlzLmFwcC5jb25maWcuYXBwLm5vcm1hbGl6ZVBhdGhzXG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBiYXNlOiB0aGlzLnVybCxcbiAgICAgIGFwaSxcbiAgICAgIHNldHRpbmdzXG4gICAgfVxuICB9XG5cbiAgc2VuZERpdG9PYmplY3QoY3R4KSB7XG4gICAgLy8gU2VuZCBiYWNrIHRoZSBnbG9iYWwgZGl0byBvYmplY3QgYXMgSmF2YVNjcmlwdCBjb2RlLlxuICAgIGN0eC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCdcbiAgICBjdHguYm9keSA9IGB3aW5kb3cuZGl0byA9ICR7Zm9ybWF0SnNvbih0aGlzLmdldERpdG9PYmplY3QoKSl9YFxuICB9XG5cbiAgbWlkZGxld2FyZSgpIHtcbiAgICAvLyBTaGllbGQgYWRtaW4gdmlld3MgYWdhaW5zdCB1bmF1dGhvcml6ZWQgYWNjZXNzLlxuICAgIGNvbnN0IGF1dGhvcml6YXRpb24gPSB0aGlzLnByb2Nlc3NBdXRob3JpemUodGhpcy5hdXRob3JpemUpXG4gICAgcmV0dXJuIGFzeW5jIChjdHgsIG5leHQpID0+IHtcbiAgICAgIGlmICgvXlxcL2RpdG9cXGIvLnRlc3QoY3R4LnVybCkpIHtcbiAgICAgICAgLy8gUmV0dXJuIHdpdGhvdXQgY2FsbGluZyBgbmV4dCgpYFxuICAgICAgICByZXR1cm4gdGhpcy5zZW5kRGl0b09iamVjdChjdHgpXG4gICAgICB9IGVsc2UgaWYgKC9cXC92aWV3c1xcYi8udGVzdChjdHgudXJsKSkge1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZUF1dGhvcml6YXRpb24oYXV0aG9yaXphdGlvbiwgY3R4KVxuICAgICAgfVxuICAgICAgYXdhaXQgbmV4dCgpXG4gICAgfVxuICB9XG5cbiAgY29tcG9zZSgpIHtcbiAgICB0aGlzLmtvYSA9IG5ldyBLb2EoKVxuICAgIHRoaXMua29hLnVzZSh0aGlzLm1pZGRsZXdhcmUoKSlcbiAgICBpZiAodGhpcy5tb2RlID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAvLyBDYWxsaW5nIGdldFBhdGgoKSB0aHJvd3MgZXhjZXB0aW9uIGlmIGFkbWluLmJ1aWxkLnBhdGggaXMgbm90IGRlZmluZWQ6XG4gICAgICBpZiAodGhpcy5nZXRQYXRoKCdidWlsZCcpKSB7XG4gICAgICAgIHRoaXMuYXBwLm9uY2UoJ2FmdGVyOnN0YXJ0JywgKCkgPT4gdGhpcy5zZXR1cEtvYVdlYnBhY2soKSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU3RhdGljYWxseSBzZXJ2ZSB0aGUgcHJlLWJ1aWx0IGFkbWluIFNQQS4gQnV0IGluIG9yZGVyIGZvciB2dWUtcm91dGVyXG4gICAgICAvLyByb3V0ZXMgaW5zaWRlIHRoZSBTUEEgdG8gd29yaywgdXNlIGEgdGlueSByZXdyaXRpbmcgbWlkZGxld2FyZTpcbiAgICAgIHRoaXMua29hLnVzZShhc3luYyAoY3R4LCBuZXh0KSA9PiB7XG4gICAgICAgIC8vIC8vIEV4Y2x1ZGUgYXNzZXQgcmVxdWVzdHMgKGNzcywganMsIGFwcClcbiAgICAgICAgaWYgKCFjdHgudXJsLm1hdGNoKC9eXFwvKGFwcFxcLnxjc3NcXC98anNcXC8pLykpIHtcbiAgICAgICAgICBjdHgudXJsID0gJy8nXG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgbmV4dCgpXG4gICAgICB9KVxuICAgICAgdGhpcy5rb2EudXNlKHNlcnZlKHRoaXMuZ2V0UGF0aCgnZGlzdCcpKSlcbiAgICB9XG4gICAgcmV0dXJuIG1vdW50KHRoaXMudXJsLCB0aGlzLmtvYSlcbiAgfVxuXG4gIGFzeW5jIHNldHVwS29hV2VicGFjaygpIHtcbiAgICAvLyBodHRwczovL3dlYnBhY2suanMub3JnL2NvbmZpZ3VyYXRpb24vc3RhdHMvI3N0YXRzXG4gICAgY29uc3Qgc3RhdHMgPSB7XG4gICAgICBhbGw6IGZhbHNlLFxuICAgICAgZXJyb3JzOiB0cnVlLFxuICAgICAgZXJyb3JEZXRhaWxzOiB0cnVlXG4gICAgfVxuXG4gICAgY29uc3QgbWlkZGxld2FyZSA9IGF3YWl0IGtvYVdlYnBhY2soe1xuICAgICAgY29uZmlnOiB0aGlzLmdldFdlYnBhY2tDb25maWcoKSxcbiAgICAgIGRldk1pZGRsZXdhcmU6IHtcbiAgICAgICAgcHVibGljUGF0aDogJy8nLFxuICAgICAgICBzdGF0c1xuICAgICAgfSxcbiAgICAgIGhvdENsaWVudDogdGhpcy5jb25maWcuaG90UmVsb2FkICE9PSBmYWxzZSAmJiB7XG4gICAgICAgIC8vIFRoZSBvbmx5IHdheSB0byBub3QgbG9nIGBGYWlsZWQgdG8gcGFyc2Ugc291cmNlIG1hcGAgd2FybmluZ3MgaXNcbiAgICAgICAgLy8gc2FkbHkgdG8gaWdub3JlIGFsbCB3YXJuaW5nczpcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2stY29udHJpYi93ZWJwYWNrLWhvdC1jbGllbnQvaXNzdWVzLzk0XG4gICAgICAgIGxvZ0xldmVsOiAnZXJyb3InLFxuICAgICAgICBzdGF0c1xuICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy5rb2EudXNlKGhpc3RvcnlBcGlGYWxsYmFjaygpKVxuICAgIHRoaXMua29hLnVzZShtaWRkbGV3YXJlKVxuICB9XG5cbiAgZ2V0VnVlQ29uZmlnKCkge1xuICAgIGNvbnN0IGRldmVsb3BtZW50ID0gdGhpcy5tb2RlID09PSAnZGV2ZWxvcG1lbnQnXG4gICAgY29uc3Qge1xuICAgICAgYnVpbGQgPSB7fSxcbiAgICAgIGRldnRvb2wgPSBkZXZlbG9wbWVudCA/ICdzb3VyY2UtbWFwJyA6IGZhbHNlXG4gICAgfSA9IHRoaXMuY29uZmlnXG4gICAgcmV0dXJuIHtcbiAgICAgIHJ1bnRpbWVDb21waWxlcjogdHJ1ZSxcbiAgICAgIHB1YmxpY1BhdGg6IGAke3RoaXMudXJsfS9gLFxuICAgICAgY29uZmlndXJlV2VicGFjazoge1xuICAgICAgICBkZXZ0b29sLFxuICAgICAgICAvLyBXZSBhbHdheXMgbmVlZCB0aGUgc291cmNlIGJ1aWxkIHBhdGggYXMgZW50cnksIGV2ZW4gZm9yIHByb2R1Y3Rpb24sXG4gICAgICAgIC8vIGZvciB0aGluZ3MgbGlrZSAuYmFiZWxyYyB0byB3b3JrIHdoZW4gYnVpbGRpbmcgZm9yIGRpc3Q6XG4gICAgICAgIGVudHJ5OiBbdGhpcy5nZXRQYXRoKCdidWlsZCcpXSxcbiAgICAgICAgcmVzb2x2ZToge1xuICAgICAgICAgIGFsaWFzOiB7XG4gICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2stY29udHJpYi93ZWJwYWNrLWhvdC1jbGllbnQvcHVsbC82MlxuICAgICAgICAgICAgJ3dlYnBhY2staG90LWNsaWVudC9jbGllbnQnOlxuICAgICAgICAgICAgICByZXF1aXJlLnJlc29sdmUoJ3dlYnBhY2staG90LWNsaWVudC9jbGllbnQnKVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0OiB7XG4gICAgICAgICAgZmlsZW5hbWU6ICdbbmFtZV0uW2hhc2hdLmpzJ1xuICAgICAgICB9LFxuICAgICAgICBvcHRpbWl6YXRpb246IHtcbiAgICAgICAgICBzcGxpdENodW5rczoge1xuICAgICAgICAgICAgLy8gU3BsaXQgZGVwZW5kZW5jaWVzIGludG8gdHdvIGNodW5rcywgb25lIGZvciBhbGwgY29tbW9uIGxpYnJhcmllcyxcbiAgICAgICAgICAgIC8vIGFuZCBvbmUgZm9yIGFsbCB2aWV3cywgc28gdGhleSBjYW4gYmUgbG9hZGVkIHNlcGFyYXRlbHksIGFuZCBvbmx5XG4gICAgICAgICAgICAvLyBvbmNlIGF1dGhlbnRpY2F0aW9uIHdhcyBzdWNjZXNzZnVsLlxuICAgICAgICAgICAgY2FjaGVHcm91cHM6IHtcbiAgICAgICAgICAgICAgY29tbW9uOiB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2NvbW1vbicsXG4gICAgICAgICAgICAgICAgdGVzdDogL1xcL25vZGVfbW9kdWxlc1xcLy8sXG4gICAgICAgICAgICAgICAgY2h1bmtzOiAnYWxsJ1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB2aWV3czoge1xuICAgICAgICAgICAgICAgIG5hbWU6ICd2aWV3cycsXG4gICAgICAgICAgICAgICAgdGVzdDogL1xcL3ZpZXdzXFwvLyxcbiAgICAgICAgICAgICAgICBjaHVua3M6ICdhbGwnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1vZHVsZTogZGV2ZWxvcG1lbnRcbiAgICAgICAgICAvLyBQcmVzZXJ2ZSBzb3VyY2UtbWFwcyBpbiB0aGlyZCBwYXJ0eSBkZXBlbmRlbmNpZXMsIGJ1dCBkbyBub3QgbG9nXG4gICAgICAgICAgLy8gd2FybmluZ3MgYWJvdXQgZGVwZW5kZW5jaWVzIHRoYXQgZG9uJ3QgY29tZSB3aXRoIHNvdXJjZS1tYXBzLlxuICAgICAgICAgIC8vIGh0dHBzOi8vd2VicGFjay5qcy5vcmcvbG9hZGVycy9zb3VyY2UtbWFwLWxvYWRlci8jaWdub3Jpbmctd2FybmluZ3NcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgIHJ1bGVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXN0OiAvXFwuKGpzfGNzcykkLyxcbiAgICAgICAgICAgICAgICBlbmZvcmNlOiAncHJlJyxcbiAgICAgICAgICAgICAgICAvLyBVc2UgYHJlcXVpcmUucmVzb2x2ZSgpYCBoZXJlIHRvbywgdG8gYXZvaWQgaXNzdWVzIHNpbWlsYXIgdG9cbiAgICAgICAgICAgICAgICAvLyAnd2VicGFjay1ob3QtY2xpZW50L2NsaWVudCcgYWJvdmUuXG4gICAgICAgICAgICAgICAgdXNlOiBbcmVxdWlyZS5yZXNvbHZlKCdzb3VyY2UtbWFwLWxvYWRlcicpXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICAgIDoge30sXG4gICAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgICAvLyBVc2UgYEh0bWxXZWJwYWNrVGFnc1BsdWdpbmAgcGx1Z2luIHRvIGluamVjdCBhIHNjcmlwdCB0YWcgdGhhdFxuICAgICAgICAgIC8vIGxvYWQgdGhlIGRpdG8gb2JqZWN0IGZyb20gdGhlIGNvbnRyb2xsZXIsIGluY2x1ZGluZyBgZGl0by5zZXR0aW5nc2BcbiAgICAgICAgICBuZXcgSHRtbFdlYnBhY2tUYWdzUGx1Z2luKHtcbiAgICAgICAgICAgIHNjcmlwdHM6IFsnZGl0by5qcyddLFxuICAgICAgICAgICAgdXNlSGFzaDogdHJ1ZSxcbiAgICAgICAgICAgIGFkZEhhc2g6IChwYXRoLCBoYXNoKSA9PiBwYXRoLnJlcGxhY2UoL1xcLmpzJC8sIGAuJHtoYXNofS5qc2ApLFxuICAgICAgICAgICAgYXBwZW5kOiBmYWxzZVxuICAgICAgICAgIH0pXG4gICAgICAgIF0sXG4gICAgICAgIHN0YXRzOiB7XG4gICAgICAgICAgd2FybmluZ3NGaWx0ZXI6IC9GYWlsZWQgdG8gcGFyc2Ugc291cmNlIG1hcC9cbiAgICAgICAgfVxuICAgICAgfSxcblxuICAgICAgY2hhaW5XZWJwYWNrOiBjb25mID0+IHtcbiAgICAgICAgLy8gQ2hhbmdlIHRoZSBsb2NhdGlvbiBvZiB0aGUgSFRNTCB0ZW1wbGF0ZTpcbiAgICAgICAgY29uc3QgeyB0ZW1wbGF0ZSA9ICdpbmRleC5odG1sJyB9ID0gYnVpbGRcbiAgICAgICAgY29uZi5wbHVnaW4oJ2h0bWwnKS50YXAoYXJncyA9PiB7XG4gICAgICAgICAgYXJnc1swXS50ZW1wbGF0ZSA9IC9eWy4vXS8udGVzdCh0ZW1wbGF0ZSlcbiAgICAgICAgICAgID8gcGF0aC5yZXNvbHZlKHRlbXBsYXRlKVxuICAgICAgICAgICAgOiBwYXRoLmpvaW4odGhpcy5nZXRQYXRoKCdidWlsZCcpLCB0ZW1wbGF0ZSlcbiAgICAgICAgICByZXR1cm4gYXJnc1xuICAgICAgICB9KVxuICAgICAgICBpZiAoZGV2ZWxvcG1lbnQpIHtcbiAgICAgICAgICAvLyBEaXNhYmxlIHRoZSAnY29tcGFjdCcgb3B0aW9uIGluIGJhYmVsLWxvYWRlciBkdXJpbmcgZGV2ZWxvcG1lbnQgdG9cbiAgICAgICAgICAvLyBwcmV2ZW50IGNvbXBsYWludHMgd2hlbiB3b3JraW5nIHdpdGggdGhlIGB5YXJuIHdhdGNoYCB2ZXJzaW9ucyBvZlxuICAgICAgICAgIC8vIGRpdG8tYWRtaW4udW1kLm1pbi5qcyBhbmQgZGl0by11aS51bWQubWluLmpzXG4gICAgICAgICAgY29uc3QganNSdWxlID0gY29uZi5tb2R1bGUucnVsZSgnanMnKVxuICAgICAgICAgIGNvbnN0IGhhc0JhYmVsID0ganNSdWxlLnRvQ29uZmlnKCkudXNlPy5zb21lKFxuICAgICAgICAgICAgKHsgbG9hZGVyIH0pID0+IC9cXGJiYWJlbC1sb2FkZXJcXGIvLnRlc3QobG9hZGVyKVxuICAgICAgICAgIClcbiAgICAgICAgICBpZiAoaGFzQmFiZWwpIHtcbiAgICAgICAgICAgIGpzUnVsZS51c2UoJ2JhYmVsLWxvYWRlcicpLm9wdGlvbnMoeyBjb21wYWN0OiBmYWxzZSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBNYWtlIGBzdGF0cy53YXJuaW5nc0ZpbHRlcmAgd29yaywgc2VlOlxuICAgICAgICAgIC8vIGh0dHBzOi8vZm9ydW0udnVlanMub3JnL3Qvc3BwcmVzcy13YXJuaW5ncy1pbi12dWUtY2xpLTMvNDU5MDUvNFxuICAgICAgICAgIGNvbmYucGx1Z2lucy5kZWxldGUoJ2ZyaWVuZGx5LWVycm9ycycpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRWdWVQbHVnaW5zKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5wbHVnaW5zPy5tYXAoZGVmaW5pdGlvbiA9PiB7XG4gICAgICBjb25zdCBwbHVnaW4gPSBpc1N0cmluZyhkZWZpbml0aW9uKVxuICAgICAgICA/IHsgaWQ6IGRlZmluaXRpb24gfVxuICAgICAgICA6IGlzT2JqZWN0KGRlZmluaXRpb24pXG4gICAgICAgICAgPyBkZWZpbml0aW9uXG4gICAgICAgICAgOiB7fVxuICAgICAgY29uc3Qge1xuICAgICAgICBpZCxcbiAgICAgICAgYXBwbHkgPSByZXF1aXJlKGlkKVxuICAgICAgfSA9IHBsdWdpblxuICAgICAgaWYgKCFpZCkge1xuICAgICAgICB0aHJvdyBuZXcgQ29udHJvbGxlckVycm9yKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgYEludmFsaWQgcGx1Z2luIGRlZmluaXRpb246ICR7ZGVmaW5pdGlvbn1gXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGlkLCBhcHBseSB9XG4gICAgfSlcbiAgfVxuXG4gIGdldFdlYnBhY2tDb25maWcoKSB7XG4gICAgY29uc3Qgc2VydmljZSA9IG5ldyBWdWVTZXJ2aWNlKHRoaXMuZ2V0UGF0aCgnYnVpbGQnKSwge1xuICAgICAgaW5saW5lT3B0aW9uczogdGhpcy5nZXRWdWVDb25maWcoKSxcbiAgICAgIHBsdWdpbnM6IHRoaXMuZ2V0VnVlUGx1Z2lucygpXG4gICAgfSlcbiAgICBzZXJ2aWNlLmluaXQodGhpcy5tb2RlKVxuICAgIHJldHVybiBzZXJ2aWNlLnJlc29sdmVXZWJwYWNrQ29uZmlnKClcbiAgfVxufVxuIl19
|
|
@@ -3,6 +3,20 @@
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.CollectionController = void 0;
|
|
5
5
|
|
|
6
|
+
require("core-js/modules/esnext.async-iterator.find.js");
|
|
7
|
+
|
|
8
|
+
require("core-js/modules/esnext.iterator.constructor.js");
|
|
9
|
+
|
|
10
|
+
require("core-js/modules/esnext.iterator.find.js");
|
|
11
|
+
|
|
12
|
+
require("core-js/modules/esnext.async-iterator.reduce.js");
|
|
13
|
+
|
|
14
|
+
require("core-js/modules/esnext.iterator.reduce.js");
|
|
15
|
+
|
|
16
|
+
require("core-js/modules/esnext.async-iterator.map.js");
|
|
17
|
+
|
|
18
|
+
require("core-js/modules/esnext.iterator.map.js");
|
|
19
|
+
|
|
6
20
|
var _Controller = require("./Controller");
|
|
7
21
|
|
|
8
22
|
var _errors = require("../errors");
|
|
@@ -246,4 +260,4 @@ const actionToVerb = {
|
|
|
246
260
|
update: 'put',
|
|
247
261
|
patch: 'patch'
|
|
248
262
|
};
|
|
249
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cm9sbGVycy9Db2xsZWN0aW9uQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJDb2xsZWN0aW9uQ29udHJvbGxlciIsIkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImFwcCIsIm5hbWVzcGFjZSIsImNvbGxlY3Rpb24iLCJ0b0NvcmVBY3Rpb25zIiwiZmluZCIsImN0eCIsIm1vZGlmeSIsInJlc3VsdCIsImV4ZWN1dGUiLCJxdWVyeSIsInRyeCIsImFsbG93UGFyYW0iLCJnZXRNb2RpZnkiLCJpc09uZVRvT25lIiwiZmlyc3QiLCJkZWxldGUiLCJjb3VudCIsImlnbm9yZVNjb3BlIiwidGhyb3dJZk5vdEZvdW5kIiwidW5yZWxhdGUiLCJpbnNlcnQiLCJyZWxhdGUiLCJwYXRjaERpdG9HcmFwaEFuZEZldGNoIiwicmVxdWVzdCIsImJvZHkiLCJleGVjdXRlQW5kRmV0Y2giLCJzdGF0dXMiLCJzZXQiLCJnZXRVcmwiLCJpZCIsInVwZGF0ZSIsInBhdGNoIiwibWVtYmVyIiwiZmluZEJ5SWQiLCJtZW1iZXJJZCIsImV4ZWN1dGVBbmRGZXRjaEJ5SWQiLCJtb2RlbENsYXNzIiwic2V0dXAiLCJpc1Jvb3QiLCJpZFBhcmFtIiwibGV2ZWwiLCJncmFwaCIsInRyYW5zYWN0ZWQiLCJzY29wZSIsInNldHVwQWN0aW9ucyIsImlkVmFsaWRhdG9yIiwic2V0dXBBY3Rpb24iLCJ0eXBlIiwiYWN0aW9ucyIsIm5hbWUiLCJoYW5kbGVyIiwiYXV0aG9yaXplIiwidmVyYiIsInBhdGgiLCJhY3Rpb25Ub1ZlcmIiLCJzZXR1cEFzc2V0cyIsImFzc2V0cyIsImRlZmluaXRpb24iLCJnZXRQYXRoIiwiZXh0ZW5kQ29udGV4dCIsIm9iamVjdCIsIk9iamVjdCIsInNldFByb3RvdHlwZU9mIiwiZ2V0TWVtYmVySWQiLCJ2YWxpZGF0ZUlkIiwicGFyYW1zIiwiZ2V0Q29udGV4dFdpdGhNZW1iZXJJZCIsImdldENvbGxlY3Rpb25JZHMiLCJpZFByb3BlcnR5IiwiZ2V0SWRQcm9wZXJ0eSIsImdldElkIiwibW9kZWwiLCJyZWR1Y2UiLCJrZXkiLCJwdXNoIiwibWFwIiwiZ2V0SWRzIiwiYWN0aW9uIiwicmVmZXJlbmNlIiwiZ2V0UmVmZXJlbmNlIiwiJHZhbGlkYXRlIiwiY29lcmNlVHlwZXMiLCJ2YWx1ZXMiLCJsZW5ndGgiLCJnZXRNZW1iZXIiLCJiYXNlIiwiZm9yVXBkYXRlIiwiY2FsbCIsInNldHVwUXVlcnkiLCJDb250cm9sbGVyRXJyb3IiLCJhbGxvd1Njb3BlIiwiYWxsb3dGaWx0ZXIiLCJhc0FsbG93QXJyYXkiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsIndpdGhTY29wZSIsImNvcmUiLCIkY29yZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFHTyxNQUFNQSxvQkFBTixTQUFtQ0Msc0JBQW5DLENBQThDO0FBQ25EQyxFQUFBQSxXQUFXLENBQUNDLEdBQUQsRUFBTUMsU0FBTixFQUFpQjtBQUMxQixVQUFNRCxHQUFOLEVBQVdDLFNBQVg7QUFEMEIsU0FxTTVCQyxVQXJNNEIsR0FxTWYsS0FBS0MsYUFBTCxDQUFtQjtBQUM5QixZQUFNQyxJQUFOLENBQVdDLEdBQVgsRUFBZ0JDLE1BQWhCLEVBQXdCO0FBQ3RCLGNBQU1DLE1BQU0sR0FBRyxNQUFNLEtBQUtDLE9BQUwsQ0FBYUgsR0FBYixFQUFrQixDQUFDSSxLQUFELEVBQVFDLEdBQVIsS0FBZ0I7QUFDckRELFVBQUFBLEtBQUssQ0FBQ0wsSUFBTixDQUFXQyxHQUFHLENBQUNJLEtBQWYsRUFBc0IsS0FBS0UsVUFBM0IsRUFBdUNMLE1BQXZDLENBQThDTSxTQUFTLENBQUNOLE1BQUQsRUFBU0ksR0FBVCxDQUF2RDtBQUNBLGlCQUFPLEtBQUtHLFVBQUwsR0FBa0JKLEtBQUssQ0FBQ0ssS0FBTixFQUFsQixHQUFrQ0wsS0FBekM7QUFDRCxTQUhvQixDQUFyQjtBQU9BLGVBQU9GLE1BQU0sSUFBSSxJQUFqQjtBQUNELE9BVjZCOztBQVk5QixZQUFNUSxNQUFOLENBQWFWLEdBQWIs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MkIsRUFBRyxjQUF2RDtBQUNBLFdBQU8sS0FBS2pDLE9BQUwsQ0FBYUgsR0FBYixFQUFrQixDQUFDSSxLQUFELEVBQVFDLEdBQVIsS0FDdkJELEtBQUssQ0FBQ3dDLElBQUQsQ0FBTCxDQUFZNUMsR0FBRyxDQUFDNkIsUUFBaEIsRUFBMEJWLElBQTFCLEVBQ0dOLGVBREgsR0FFR1osTUFGSCxDQUVVTSxTQUFTLENBQUNOLE1BQUQsRUFBU0ksR0FBVCxDQUZuQixDQURLLENBQVA7QUFLRDs7QUFFRFAsRUFBQUEsYUFBYSxDQUFDNkMsT0FBRCxFQUFVO0FBR3JCLFNBQUssTUFBTTZCLE1BQVgsSUFBcUJoQixNQUFNLENBQUNxQixNQUFQLENBQWNsQyxPQUFkLENBQXJCLEVBQTZDO0FBRzNDNkIsTUFBQUEsTUFBTSxDQUFDbUIsSUFBUCxHQUFjLElBQWQ7QUFDRDs7QUFDRGhELElBQUFBLE9BQU8sQ0FBQ2lELEtBQVIsR0FBZ0IsSUFBaEI7QUFDQSxXQUFPakQsT0FBUDtBQUNEOztBQXBNa0Q7Ozs7QUFxUnJELFNBQVNwQyxTQUFULENBQW1CTixNQUFuQixFQUEyQkksR0FBM0IsRUFBZ0M7QUFDOUIsU0FBT0osTUFBTSxHQUNURyxLQUFLLElBQUlILE1BQU0sQ0FBQ0csS0FBRCxFQUFRQyxHQUFSLENBRE4sR0FFVCxJQUZKO0FBR0Q7O0FBRUQsTUFBTTRDLFlBQVksR0FBRztBQUNuQmxELEVBQUFBLElBQUksRUFBRSxLQURhO0FBRW5CVyxFQUFBQSxNQUFNLEVBQUUsUUFGVztBQUduQkssRUFBQUEsTUFBTSxFQUFFLE1BSFc7QUFJbkJVLEVBQUFBLE1BQU0sRUFBRSxLQUpXO0FBS25CQyxFQUFBQSxLQUFLLEVBQUU7QUFMWSxDQUFyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRyb2xsZXIgfSBmcm9tICcuL0NvbnRyb2xsZXInXG5pbXBvcnQgeyBDb250cm9sbGVyRXJyb3IgfSBmcm9tICdAL2Vycm9ycydcbmltcG9ydCB7IGlzT2JqZWN0LCBpc0FycmF5LCBhc0FycmF5IH0gZnJvbSAnQGRpdG9qcy91dGlscydcblxuLy8gQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgTW9kZWxDb250cm9sbGVyIGFuZCBSZWxhdGlvbkNvbnRyb2xsZXJcbmV4cG9ydCBjbGFzcyBDb2xsZWN0aW9uQ29udHJvbGxlciBleHRlbmRzIENvbnRyb2xsZXIge1xuICBjb25zdHJ1Y3RvcihhcHAsIG5hbWVzcGFjZSkge1xuICAgIHN1cGVyKGFwcCwgbmFtZXNwYWNlKVxuICAgIHRoaXMubW9kZWxDbGFzcyA9IG51bGwgLy8gVG8gYmUgZGVmaW5lZCBieSBzdWItY2xhc3Nlc1xuICAgIHRoaXMuaXNPbmVUb09uZSA9IGZhbHNlXG4gICAgdGhpcy5yZWxhdGUgPSBmYWxzZVxuICAgIHRoaXMudW5yZWxhdGUgPSBmYWxzZVxuICB9XG5cbiAgc2V0dXAoaXNSb290KSB7XG4gICAgc3VwZXIuc2V0dXAoaXNSb290LCBmYWxzZSlcbiAgICB0aGlzLmlkUGFyYW0gPSB0aGlzLmxldmVsID8gYGlkJHt0aGlzLmxldmVsfWAgOiAnaWQnXG4gICAgdGhpcy5ncmFwaCA9ICEhdGhpcy5ncmFwaFxuICAgIHRoaXMudHJhbnNhY3RlZCA9ICEhdGhpcy50cmFuc2FjdGVkXG4gICAgdGhpcy5zY29wZSA9IHRoaXMuc2NvcGUgfHwgbnVsbFxuICAgIHRoaXMuY29sbGVjdGlvbiA9IHRoaXMuc2V0dXBBY3Rpb25zKCdjb2xsZWN0aW9uJylcbiAgICB0aGlzLm1lbWJlciA9IHRoaXMuaXNPbmVUb09uZSA/IHt9IDogdGhpcy5zZXR1cEFjdGlvbnMoJ21lbWJlcicpXG4gICAgLy8gQ3JlYXRlIGEgZHVtbXkgbW9kZWwgaW5zdGFuY2UgdG8gdmFsaWRhdGUgdGhlIHJlcXVlc3RlZCBpZCBhZ2FpbnN0LlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuZXctY2FwXG4gICAgdGhpcy5pZFZhbGlkYXRvciA9IG5ldyB0aGlzLm1vZGVsQ2xhc3MoKVxuICB9XG5cbiAgLy8gQG92ZXJyaWRlXG4gIHNldHVwQWN0aW9uKHR5cGUsIGFjdGlvbnMsIG5hbWUsIGhhbmRsZXIsIGF1dGhvcml6ZSwgdmVyYiwgcGF0aCkge1xuICAgIC8vIFRoZXNlIGRlZmF1bHQgYWN0aW9ucyBoYXBwZW4gZGlyZWN0bHkgb24gdGhlIGNvbGxlY3Rpb24gLyBtZW1iZXIgcm91dGVcbiAgICAvLyBhbmQgYXJlIGRpc3Rpbmd1aXNoZWQgYnkgdGhlaXIgdmVyYnMsIG5vdCBieSBuZXN0ZWQgcGF0aHMuXG4gICAgaWYgKG5hbWUgaW4gYWN0aW9uVG9WZXJiKSB7XG4gICAgICB2ZXJiID0gYWN0aW9uVG9WZXJiW25hbWVdXG4gICAgICBwYXRoID0gJydcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLnNldHVwQWN0aW9uKFxuICAgICAgdHlwZSwgYWN0aW9ucywgbmFtZSwgaGFuZGxlciwgYXV0aG9yaXplLCB2ZXJiLCBwYXRoXG4gICAgKVxuICB9XG5cbiAgLy8gQG92ZXJyaWRlXG4gIHNldHVwQXNzZXRzKCkge1xuICAgIGNvbnN0IHsgbW9kZWxDbGFzcyB9ID0gdGhpc1xuICAgIGlmICh0aGlzLmFzc2V0cyA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5hc3NldHMgPSBtb2RlbENsYXNzLmRlZmluaXRpb24uYXNzZXRzIHx8IG51bGxcbiAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KHRoaXMuYXNzZXRzKSkge1xuICAgICAgLy8gTWVyZ2UgaW4gdGhlIGFzc2V0cyBkZWZpbml0aW9uIGZyb20gdGhlIG1vZGVsIGludG8gdGhlIGFzc2V0cyBjb25maWcuXG4gICAgICAvLyBUaGF0IHdheSwgd2UgY2FuIHN0aWxsIHVzZSBgYWxsb3dgIGFuZCBgYXV0aG9yaXplYCB0byBjb250cm9sbCB0aGVcbiAgICAgIC8vIHVwbG9hZCBhY2Nlc3MsIHdoaWxlIGtlZXBpbmcgdGhlIGFzc2V0cyBkZWZpbml0aW9ucyBpbiBvbmUgY2VudHJhbFxuICAgICAgLy8gbG9jYXRpb24gb24gdGhlIG1vZGVsLlxuICAgICAgdGhpcy5hc3NldHMgPSB7XG4gICAgICAgIC4uLm1vZGVsQ2xhc3MuZGVmaW5pdGlvbi5hc3NldHMsXG4gICAgICAgIC4uLnRoaXMuYXNzZXRzXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXNzZXRzID0gbnVsbFxuICAgIH1cbiAgICAvLyBOb3cgY2FsbCBgc3VwZXIuc2V0dXBBc3NldHMoKWAgd2hpY2ggcGVyZm9ybXMgdGhlIHVzdWFsIGluaGVyaXRhbmNlIC9cbiAgICAvLyBhbGxvdyAvIGF1dGhvcml6ZSB0cmlja3M6XG4gICAgcmV0dXJuIHN1cGVyLnNldHVwQXNzZXRzKClcbiAgfVxuXG4gIC8vIEBvdmVycmlkZVxuICBnZXRQYXRoKHR5cGUsIHBhdGgpIHtcbiAgICByZXR1cm4gdHlwZSA9PT0gJ21lbWJlcidcbiAgICAgID8gcGF0aCA/IGA6JHt0aGlzLmlkUGFyYW19LyR7cGF0aH1gIDogYDoke3RoaXMuaWRQYXJhbX1gXG4gICAgICA6IHBhdGhcbiAgfVxuXG4gIGV4dGVuZENvbnRleHQoY3R4LCBvYmplY3QpIHtcbiAgICAvLyBDcmVhdGUgYSBjb3B5IG9mIGBjdHhgIHRoYXQgaW5oZXJpdHMgZnJvbSB0aGUgcmVhbCBvbmUsIGJ1dCBvdmVycmlkZXNcbiAgICAvLyBzb21lIHByb3BlcnRpZXMgd2l0aCB0aGUgb25lcyBmcm9tIHRoZSBwYXNzZWQgYG9iamVjdGAuXG4gICAgcmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIGN0eClcbiAgfVxuXG4gIGdldE1lbWJlcklkKGN0eCkge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlSWQoY3R4LnBhcmFtc1t0aGlzLmlkUGFyYW1dKVxuICB9XG5cbiAgZ2V0Q29udGV4dFdpdGhNZW1iZXJJZChjdHgsIG1lbWJlcklkID0gdGhpcy5nZXRNZW1iZXJJZChjdHgpKSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5kQ29udGV4dChjdHgsIHsgbWVtYmVySWQgfSlcbiAgfVxuXG4gIGdldENvbGxlY3Rpb25JZHMoY3R4KSB7XG4gICAgY29uc3QgaWRQcm9wZXJ0eSA9IHRoaXMubW9kZWxDbGFzcy5nZXRJZFByb3BlcnR5KClcbiAgICAvLyBIYW5kbGUgYm90aCBjb21wb3NpdGUga2V5cyBhbmQgbm9ybWFsIG9uZXMuXG4gICAgY29uc3QgZ2V0SWQgPSBpc0FycmF5KGlkUHJvcGVydHkpXG4gICAgICA/IG1vZGVsID0+IGlkUHJvcGVydHkucmVkdWNlKFxuICAgICAgICAoaWQsIGtleSkgPT4ge1xuICAgICAgICAgIGlkLnB1c2gobW9kZWxba2V5XSlcbiAgICAgICAgICByZXR1cm4gaWRcbiAgICAgICAgfSwgW10pXG4gICAgICA6IG1vZGVsID0+IG1vZGVsW2lkUHJvcGVydHldXG4gICAgcmV0dXJuIGFzQXJyYXkoY3R4LnJlcXVlc3QuYm9keSkubWFwKG1vZGVsID0+IHRoaXMudmFsaWRhdGVJZChnZXRJZChtb2RlbCkpKVxuICB9XG5cbiAgZ2V0SWRzKGN0eCkge1xuICAgIC8vIFJldHVybnMgdGhlIG1vZGVsIGlkcyB0aGF0IHRoaXMgcmVxdWVzdCBjb25jZXJucywgcmVhZCBmcm9tIHRoZSBwYXJhbVxuICAgIC8vIGZvciBtZW1iZXIgaWRzLCBhbmQgZnJvbSB0aGUgcGF5bG9hZCBmb3IgY29sbGVjdGlvbiBpZHM6XG4gICAgY29uc3QgeyB0eXBlIH0gPSBjdHguYWN0aW9uXG4gICAgcmV0dXJuIHR5cGUgPT09ICdtZW1iZXInID8gW3RoaXMuZ2V0TWVtYmVySWQoY3R4KV1cbiAgICAgIDogdHlwZSA9PT0gJ2NvbGxlY3Rpb24nID8gdGhpcy5nZXRDb2xsZWN0aW9uSWRzKGN0eClcbiAgICAgIDogW11cbiAgfVxuXG4gIHZhbGlkYXRlSWQoaWQpIHtcbiAgICBjb25zdCByZWZlcmVuY2UgPSB0aGlzLm1vZGVsQ2xhc3MuZ2V0UmVmZXJlbmNlKGlkKVxuICAgIC8vIFRoaXMgdmFsaWRhdGVzIGFuZCBjb2VyY2VzIGF0IHRoZSBzYW1lIHRpbWUsIHNvIGV4dHJhY3QgdGhlIGNvZXJjZWQgaWRcbiAgICAvLyBmcm9tIGByZWZlcmVuY2VgIGFnYWluIGFmdGVyd2FyZHMuXG4gICAgdGhpcy5pZFZhbGlkYXRvci4kdmFsaWRhdGUocmVmZXJlbmNlLCB7XG4gICAgICBjb2VyY2VUeXBlczogdHJ1ZSxcbiAgICAgIHBhdGNoOiB0cnVlXG4gICAgfSlcbiAgICBjb25zdCB2YWx1ZXMgPSBPYmplY3QudmFsdWVzKHJlZmVyZW5jZSlcbiAgICByZXR1cm4gdmFsdWVzLmxlbmd0aCA+IDEgPyB2YWx1ZXMgOiB2YWx1ZXNbMF1cbiAgfVxuXG4gIGFzeW5jIGdldE1lbWJlcihcbiAgICBjdHgsXG4gICAgYmFzZSA9IHRoaXMsXG4gICAgeyBxdWVyeSA9IHt9LCBtb2RpZnkgPSBudWxsLCBmb3JVcGRhdGUgPSBmYWxzZSB9ID0ge31cbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMubWVtYmVyLmZpbmQuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAvLyBFeHRlbmQgYGN0eGAgd2l0aCBhIG5ldyBgcXVlcnlgIG9iamVjdCwgd2hpbGUgaW5oZXJpdGluZyB0aGUgcm91dGVcbiAgICAgIC8vIHBhcmFtcyBpbiBgY3R4LnBhcmFtc2AsIHNvIGZpbmluZyB0aGUgbWVtYmVyIGJ5IGlkIHN0aWxsIHdvcmtzLlxuICAgICAgdGhpcy5leHRlbmRDb250ZXh0KGN0eCwgeyBxdWVyeSB9KSxcbiAgICAgIChxdWVyeSwgdHJ4KSA9PiB7XG4gICAgICAgIHRoaXMuc2V0dXBRdWVyeShxdWVyeSwgYmFzZSlcbiAgICAgICAgcXVlcnkubW9kaWZ5KG1vZGlmeSlcbiAgICAgICAgaWYgKGZvclVwZGF0ZSkge1xuICAgICAgICAgIGlmICghdHJ4KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29udHJvbGxlckVycm9yKFxuICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICAnVXNpbmcgYGZvclVwZGF0ZSgpYCB3aXRob3V0IGEgdHJhbnNhY3Rpb24gaXMgaW52YWxpZCdcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgICAgcXVlcnkuZm9yVXBkYXRlKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIClcbiAgfVxuXG4gIHF1ZXJ5KHRyeCkge1xuICAgIHJldHVybiB0aGlzLnNldHVwUXVlcnkodGhpcy5tb2RlbENsYXNzLnF1ZXJ5KHRyeCkpXG4gIH1cblxuICBzZXR1cFF1ZXJ5KHF1ZXJ5LCBiYXNlID0gdGhpcykge1xuICAgIGNvbnN0IHsgc2NvcGUgfSA9IGJhc2VcbiAgICBjb25zdCB7IGFsbG93U2NvcGUsIGFsbG93RmlsdGVyIH0gPSB0aGlzXG5cbiAgICBjb25zdCBhc0FsbG93QXJyYXkgPSB2YWx1ZSA9PiB2YWx1ZSA9PT0gZmFsc2UgPyBbXSA6IGFzQXJyYXkodmFsdWUpXG5cbiAgICBpZiAoYWxsb3dTY29wZSAhPT0gdW5kZWZpbmVkICYmIGFsbG93U2NvcGUgIT09IHRydWUpIHtcbiAgICAgIHF1ZXJ5LmFsbG93U2NvcGUoXG4gICAgICAgIC4uLmFzQWxsb3dBcnJheShhbGxvd1Njb3BlKSxcbiAgICAgICAgLy8gQWxzbyBpbmNsdWRlIHRoZSBzY29wZXMgZGVmaW5lZCBieSBzY29wZSBzbyB0aGVzZSBjYW4gcGFzcyB0aHJvdWdoLlxuICAgICAgICAuLi5hc0FycmF5KHNjb3BlKVxuICAgICAgKVxuICAgIH1cbiAgICBpZiAoYWxsb3dGaWx0ZXIgIT09IHVuZGVmaW5lZCAmJiBhbGxvd0ZpbHRlciAhPT0gdHJ1ZSkge1xuICAgICAgcXVlcnkuYWxsb3dGaWx0ZXIoLi4uYXNBbGxvd0FycmF5KGFsbG93RmlsdGVyKSlcbiAgICB9XG4gICAgaWYgKHNjb3BlKSB7XG4gICAgICBxdWVyeS53aXRoU2NvcGUoLi4uYXNBcnJheShzY29wZSkpXG4gICAgfVxuICAgIHJldHVybiBxdWVyeVxuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZSgvKiBjdHgsIGV4ZWN1dGUocXVlcnksIHRyeCkge30gKi8pIHtcbiAgICAvLyBEb2VzIG5vdGhpbmcgaW4gYmFzZSBjbGFzcy5cbiAgICAvLyBPdmVycmlkZXMgYXJlIGluIE1vZGVsQ29udHJvbGxlciBhbmQgUmVsYXRpb25Db250cm9sbGVyLlxuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZUFuZEZldGNoKGFjdGlvbiwgY3R4LCBtb2RpZnksIGJvZHkgPSBjdHgucmVxdWVzdC5ib2R5KSB7XG4gICAgY29uc3QgbmFtZSA9IGAke2FjdGlvbn0ke3RoaXMuZ3JhcGggPyAnRGl0b0dyYXBoJyA6ICcnfUFuZEZldGNoYFxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGUoY3R4LCAocXVlcnksIHRyeCkgPT5cbiAgICAgIHF1ZXJ5W25hbWVdKGJvZHkpXG4gICAgICAgIC5tb2RpZnkoZ2V0TW9kaWZ5KG1vZGlmeSwgdHJ4KSlcbiAgICApXG4gIH1cblxuICBhc3luYyBleGVjdXRlQW5kRmV0Y2hCeUlkKGFjdGlvbiwgY3R4LCBtb2RpZnksIGJvZHkgPSBjdHgucmVxdWVzdC5ib2R5KSB7XG4gICAgY29uc3QgbmFtZSA9IGAke2FjdGlvbn0ke3RoaXMuZ3JhcGggPyAnRGl0b0dyYXBoJyA6ICcnfUFuZEZldGNoQnlJZGBcbiAgICByZXR1cm4gdGhpcy5leGVjdXRlKGN0eCwgKHF1ZXJ5LCB0cngpID0+XG4gICAgICBxdWVyeVtuYW1lXShjdHgubWVtYmVySWQsIGJvZHkpXG4gICAgICAgIC50aHJvd0lmTm90Rm91bmQoKVxuICAgICAgICAubW9kaWZ5KGdldE1vZGlmeShtb2RpZnksIHRyeCkpXG4gICAgKVxuICB9XG5cbiAgdG9Db3JlQWN0aW9ucyhhY3Rpb25zKSB7XG4gICAgLy8gTWFyayBhY3Rpb24gb2JqZWN0IGFuZCBtZXRob2RzIGFzIGNvcmUsIHNvIGBDb250cm9sbGVyLnByb2Nlc3NWYWx1ZXMoKWBcbiAgICAvLyBjYW4gZmlsdGVyIGNvcnJlY3RseS5cbiAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiBPYmplY3QudmFsdWVzKGFjdGlvbnMpKSB7XG4gICAgICAvLyBNYXJrIGFjdGlvbiBmdW5jdGlvbnMgYWxzbywgc28gQ29udHJvbGxlckFjdGlvbiBjYW4gdXNlIGl0IHRvIGRldGVybWluZVxuICAgICAgLy8gdmFsdWUgZm9yIGB0cmFuc2FjdGVkYC5cbiAgICAgIGFjdGlvbi5jb3JlID0gdHJ1ZVxuICAgIH1cbiAgICBhY3Rpb25zLiRjb3JlID0gdHJ1ZVxuICAgIHJldHVybiBhY3Rpb25zXG4gIH1cblxuICBjb2xsZWN0aW9uID0gdGhpcy50b0NvcmVBY3Rpb25zKHtcbiAgICBhc3luYyBmaW5kKGN0eCwgbW9kaWZ5KSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4ZWN1dGUoY3R4LCAocXVlcnksIHRyeCkgPT4ge1xuICAgICAgICBxdWVyeS5maW5kKGN0eC5xdWVyeSwgdGhpcy5hbGxvd1BhcmFtKS5tb2RpZnkoZ2V0TW9kaWZ5KG1vZGlmeSwgdHJ4KSlcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNPbmVUb09uZSA/IHF1ZXJ5LmZpcnN0KCkgOiBxdWVyeVxuICAgICAgfSlcbiAgICAgIC8vIFRoaXMgbWV0aG9kIGRvZXNuJ3QgYWx3YXlzIHJldHVybiBhbiBhcnJheTpcbiAgICAgIC8vIEZvciBSZWxhdGlvbkNvbnRyb2xsZXJzIHdoZXJlIGBpc09uZVRvT25lYCBpcyB0cnVlLCBpdCBjYW4gcmV0dXJuXG4gICAgICAvLyBgdW5kZWZpbmVkYC4gQ2FzdCB0byBgbnVsbGAgZm9yIHN1Y2ggY2FzZXM6XG4gICAgICByZXR1cm4gcmVzdWx0IHx8IG51bGxcbiAgICB9LFxuXG4gICAgYXN5bmMgZGVsZXRlKGN0eCwgbW9kaWZ5KSB7XG4gICAgICBjb25zdCBjb3VudCA9IGF3YWl0IHRoaXMuZXhlY3V0ZShjdHgsIChxdWVyeSwgdHJ4KSA9PiBxdWVyeVxuICAgICAgICAuaWdub3JlU2NvcGUoKVxuICAgICAgICAuZmluZChjdHgucXVlcnksIHRoaXMuYWxsb3dQYXJhbSlcbiAgICAgICAgLm1vZGlmeShxdWVyeSA9PiB0aGlzLmlzT25lVG9PbmUgJiYgcXVlcnkudGhyb3dJZk5vdEZvdW5kKCkpXG4gICAgICAgIC5tb2RpZnkoZ2V0TW9kaWZ5KG1vZGlmeSwgdHJ4KSlcbiAgICAgICAgLm1vZGlmeShxdWVyeSA9PiB0aGlzLnVucmVsYXRlID8gcXVlcnkudW5yZWxhdGUoKSA6IHF1ZXJ5LmRlbGV0ZSgpKVxuICAgICAgKVxuICAgICAgcmV0dXJuIHsgY291bnQgfVxuICAgIH0sXG5cbiAgICBhc3luYyBpbnNlcnQoY3R4LCBtb2RpZnkpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucmVsYXRlXG4gICAgICAgIC8vIFVzZSBwYXRjaERpdG9HcmFwaEFuZEZldGNoKCkgdG8gaGFuZGxlIHJlbGF0ZXMgZm9yIHVzLlxuICAgICAgICA/IGF3YWl0IHRoaXMuZXhlY3V0ZShjdHgsIChxdWVyeSwgdHJ4KSA9PiBxdWVyeVxuICAgICAgICAgIC5wYXRjaERpdG9HcmFwaEFuZEZldGNoKGN0eC5yZXF1ZXN0LmJvZHksIHsgcmVsYXRlOiB0cnVlIH0pXG4gICAgICAgICAgLm1vZGlmeShnZXRNb2RpZnkobW9kaWZ5LCB0cngpKVxuICAgICAgICApXG4gICAgICAgIDogYXdhaXQgdGhpcy5leGVjdXRlQW5kRmV0Y2goJ2luc2VydCcsIGN0eCwgbW9kaWZ5KVxuICAgICAgY3R4LnN0YXR1cyA9IDIwMVxuICAgICAgaWYgKGlzT2JqZWN0KHJlc3VsdCkpIHtcbiAgICAgICAgY3R4LnNldCgnTG9jYXRpb24nLCB0aGlzLmdldFVybCgnY29sbGVjdGlvbicsIHJlc3VsdC5pZCkpXG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfSxcblxuICAgIGFzeW5jIHVwZGF0ZShjdHgsIG1vZGlmeSkge1xuICAgICAgcmV0dXJuIHRoaXMuZXhlY3V0ZUFuZEZldGNoKCd1cGRhdGUnLCBjdHgsIG1vZGlmeSlcbiAgICB9LFxuXG4gICAgYXN5bmMgcGF0Y2goY3R4LCBtb2RpZnkpIHtcbiAgICAgIHJldHVybiB0aGlzLmV4ZWN1dGVBbmRGZXRjaCgncGF0Y2gnLCBjdHgsIG1vZGlmeSlcbiAgICB9XG4gIH0pXG5cbiAgbWVtYmVyID0gdGhpcy50b0NvcmVBY3Rpb25zKHtcbiAgICBhc3luYyBmaW5kKGN0eCwgbW9kaWZ5KSB7XG4gICAgICByZXR1cm4gdGhpcy5leGVjdXRlKGN0eCwgKHF1ZXJ5LCB0cngpID0+IHF1ZXJ5XG4gICAgICAgIC5maW5kQnlJZChjdHgubWVtYmVySWQpXG4gICAgICAgIC5maW5kKGN0eC5xdWVyeSwgdGhpcy5hbGxvd1BhcmFtKVxuICAgICAgICAudGhyb3dJZk5vdEZvdW5kKClcbiAgICAgICAgLm1vZGlmeShnZXRNb2RpZnkobW9kaWZ5LCB0cngpKVxuICAgICAgKVxuICAgIH0sXG5cbiAgICBhc3luYyBkZWxldGUoY3R4LCBtb2RpZnkpIHtcbiAgICAgIGNvbnN0IGNvdW50ID0gYXdhaXQgdGhpcy5leGVjdXRlKGN0eCwgKHF1ZXJ5LCB0cngpID0+IHF1ZXJ5XG4gICAgICAgIC5pZ25vcmVTY29wZSgpXG4gICAgICAgIC5maW5kQnlJZChjdHgubWVtYmVySWQpXG4gICAgICAgIC5maW5kKGN0eC5xdWVyeSwgdGhpcy5hbGxvd1BhcmFtKVxuICAgICAgICAudGhyb3dJZk5vdEZvdW5kKClcbiAgICAgICAgLm1vZGlmeShnZXRNb2RpZnkobW9kaWZ5LCB0cngpKVxuICAgICAgICAubW9kaWZ5KHF1ZXJ5ID0+IHRoaXMudW5yZWxhdGUgPyBxdWVyeS51bnJlbGF0ZSgpIDogcXVlcnkuZGVsZXRlKCkpXG4gICAgICApXG4gICAgICByZXR1cm4geyBjb3VudCB9XG4gICAgfSxcblxuICAgIGFzeW5jIHVwZGF0ZShjdHgsIG1vZGlmeSkge1xuICAgICAgcmV0dXJuIHRoaXMuZXhlY3V0ZUFuZEZldGNoQnlJZCgndXBkYXRlJywgY3R4LCBtb2RpZnkpXG4gICAgfSxcblxuICAgIGFzeW5jIHBhdGNoKGN0eCwgbW9kaWZ5KSB7XG4gICAgICByZXR1cm4gdGhpcy5leGVjdXRlQW5kRmV0Y2hCeUlkKCdwYXRjaCcsIGN0eCwgbW9kaWZ5KVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gZ2V0TW9kaWZ5KG1vZGlmeSwgdHJ4KSB7XG4gIHJldHVybiBtb2RpZnlcbiAgICA/IHF1ZXJ5ID0+IG1vZGlmeShxdWVyeSwgdHJ4KVxuICAgIDogbnVsbFxufVxuXG5jb25zdCBhY3Rpb25Ub1ZlcmIgPSB7XG4gIGZpbmQ6ICdnZXQnLFxuICBkZWxldGU6ICdkZWxldGUnLFxuICBpbnNlcnQ6ICdwb3N0JyxcbiAgdXBkYXRlOiAncHV0JyxcbiAgcGF0Y2g6ICdwYXRjaCdcbn1cbiJdfQ==
|
|
263
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cm9sbGVycy9Db2xsZWN0aW9uQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJDb2xsZWN0aW9uQ29udHJvbGxlciIsIkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImFwcCIsIm5hbWVzcGFjZSIsImNvbGxlY3Rpb24iLCJ0b0NvcmVBY3Rpb25zIiwiZmluZCIsImN0eCIsIm1vZGlmeSIsInJlc3VsdCIsImV4ZWN1dGUiLCJxdWVyeSIsInRyeCIsImFsbG93UGFyYW0iLCJnZXRNb2RpZnkiLCJpc09uZVRvT25lIiwiZmlyc3QiLCJkZWxldGUiLCJjb3VudCIsImlnbm9yZVNjb3BlIiwidGhyb3dJZk5vdEZvdW5kIiwidW5yZWxhdGUiLCJpbnNlcnQiLCJyZWxhdGUiLCJwYXRjaERpdG9HcmFwaEFuZEZldGNoIiwicmVxdWVzdCIsImJvZHkiLCJleGVjdXRlQW5kRmV0Y2giLCJzdGF0dXMiLCJzZXQiLCJnZXRVcmwiLCJpZCIsInVwZGF0ZSIsInBhdGNoIiwibWVtYmVyIiwiZmluZEJ5SWQiLCJtZW1iZXJJZCIsImV4ZWN1dGVBbmRGZXRjaEJ5SWQiLCJtb2RlbENsYXNzIiwic2V0dXAiLCJpc1Jvb3QiLCJpZFBhcmFtIiwibGV2ZWwiLCJncmFwaCIsInRyYW5zYWN0ZWQiLCJzY29wZSIsInNldHVwQWN0aW9ucyIsImlkVmFsaWRhdG9yIiwic2V0dXBBY3Rpb24iLCJ0eXBlIiwiYWN0aW9ucyIsIm5hbWUiLCJoYW5kbGVyIiwiYXV0aG9yaXplIiwidmVyYiIsInBhdGgiLCJhY3Rpb25Ub1ZlcmIiLCJzZXR1cEFzc2V0cyIsImFzc2V0cyIsImRlZmluaXRpb24iLCJnZXRQYXRoIiwiZXh0ZW5kQ29udGV4dCIsIm9iamVjdCIsIk9iamVjdCIsInNldFByb3RvdHlwZU9mIiwiZ2V0TWVtYmVySWQiLCJ2YWxpZGF0ZUlkIiwicGFyYW1zIiwiZ2V0Q29udGV4dFdpdGhNZW1iZXJJZCIsImdldENvbGxlY3Rpb25JZHMiLCJpZFByb3BlcnR5IiwiZ2V0SWRQcm9wZXJ0eSIsImdldElkIiwibW9kZWwiLCJyZWR1Y2UiLCJrZXkiLCJwdXNoIiwibWFwIiwiZ2V0SWRzIiwiYWN0aW9uIiwicmVmZXJlbmNlIiwiZ2V0UmVmZXJlbmNlIiwiJHZhbGlkYXRlIiwiY29lcmNlVHlwZXMiLCJ2YWx1ZXMiLCJsZW5ndGgiLCJnZXRNZW1iZXIiLCJiYXNlIiwiZm9yVXBkYXRlIiwiY2FsbCIsInNldHVwUXVlcnkiLCJDb250cm9sbGVyRXJyb3IiLCJhbGxvd1Njb3BlIiwiYWxsb3dGaWx0ZXIiLCJhc0FsbG93QXJyYXkiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsIndpdGhTY29wZSIsImNvcmUiLCIkY29yZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUdPLE1BQU1BLG9CQUFOLFNBQW1DQyxzQkFBbkMsQ0FBOEM7QUFDbkRDLEVBQUFBLFdBQVcsQ0FBQ0MsR0FBRCxFQUFNQyxTQUFOLEVBQWlCO0FBQzFCLFVBQU1ELEdBQU4sRUFBV0MsU0FBWDtBQUQwQixTQXFNNUJDLFVBck00QixHQXFNZixLQUFLQyxhQUFMLENBQW1CO0FBQzlCLFlBQU1DLElBQU4sQ0FBV0MsR0FBWCxFQUFnQkMsTUFBaEIsRUFBd0I7QUFDdEIsY0FBTUMsTUFBTSxHQUFHLE1BQU0sS0FBS0MsT0FBTCxDQUFhSCxHQUFiLEVBQWtCLENBQUNJLEtBQUQsRUFBUUMsR0FBUixLQUFnQjtBQUNyREQsVUFBQUEsS0FBSyxDQUFDTCxJQUFOLENBQVdDLEdBQUcsQ0FBQ0ksS0FBZixFQUFzQixLQUFLRSxVQUEzQixFQUF1Q0wsTUFBdkMsQ0FBOENNLFNBQVMsQ0FBQ04sTUFBRCxFQUFTSSxHQUFULENBQXZEO0FBQ0EsaUJBQU8sS0FBS0csVUFBTCxHQUFrQkosS0FBSyxDQUFDSyxLQUFOLEVBQWxCLEdBQWtDTCxLQUF6QztBQUNELFNBSG9CLENBQXJCO0FBT0EsZUFBT0YsTUFBTSxJQUFJLElBQWpCO0FBQ0QsT0FWNkI7O0FBWTlCLFlBQU1RLE1B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LEdBQWEsV0FBYixHQUEyQixFQUFHLGNBQXZEO0FBQ0EsV0FBTyxLQUFLakMsT0FBTCxDQUFhSCxHQUFiLEVBQWtCLENBQUNJLEtBQUQsRUFBUUMsR0FBUixLQUN2QkQsS0FBSyxDQUFDd0MsSUFBRCxDQUFMLENBQVk1QyxHQUFHLENBQUM2QixRQUFoQixFQUEwQlYsSUFBMUIsRUFDR04sZUFESCxHQUVHWixNQUZILENBRVVNLFNBQVMsQ0FBQ04sTUFBRCxFQUFTSSxHQUFULENBRm5CLENBREssQ0FBUDtBQUtEOztBQUVEUCxFQUFBQSxhQUFhLENBQUM2QyxPQUFELEVBQVU7QUFHckIsU0FBSyxNQUFNNkIsTUFBWCxJQUFxQmhCLE1BQU0sQ0FBQ3FCLE1BQVAsQ0FBY2xDLE9BQWQsQ0FBckIsRUFBNkM7QUFHM0M2QixNQUFBQSxNQUFNLENBQUNtQixJQUFQLEdBQWMsSUFBZDtBQUNEOztBQUNEaEQsSUFBQUEsT0FBTyxDQUFDaUQsS0FBUixHQUFnQixJQUFoQjtBQUNBLFdBQU9qRCxPQUFQO0FBQ0Q7O0FBcE1rRDs7OztBQXFSckQsU0FBU3BDLFNBQVQsQ0FBbUJOLE1BQW5CLEVBQTJCSSxHQUEzQixFQUFnQztBQUM5QixTQUFPSixNQUFNLEdBQ1RHLEtBQUssSUFBSUgsTUFBTSxDQUFDRyxLQUFELEVBQVFDLEdBQVIsQ0FETixHQUVULElBRko7QUFHRDs7QUFFRCxNQUFNNEMsWUFBWSxHQUFHO0FBQ25CbEQsRUFBQUEsSUFBSSxFQUFFLEtBRGE7QUFFbkJXLEVBQUFBLE1BQU0sRUFBRSxRQUZXO0FBR25CSyxFQUFBQSxNQUFNLEVBQUUsTUFIVztBQUluQlUsRUFBQUEsTUFBTSxFQUFFLEtBSlc7QUFLbkJDLEVBQUFBLEtBQUssRUFBRTtBQUxZLENBQXJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udHJvbGxlciB9IGZyb20gJy4vQ29udHJvbGxlcidcbmltcG9ydCB7IENvbnRyb2xsZXJFcnJvciB9IGZyb20gJ0AvZXJyb3JzJ1xuaW1wb3J0IHsgaXNPYmplY3QsIGlzQXJyYXksIGFzQXJyYXkgfSBmcm9tICdAZGl0b2pzL3V0aWxzJ1xuXG4vLyBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBNb2RlbENvbnRyb2xsZXIgYW5kIFJlbGF0aW9uQ29udHJvbGxlclxuZXhwb3J0IGNsYXNzIENvbGxlY3Rpb25Db250cm9sbGVyIGV4dGVuZHMgQ29udHJvbGxlciB7XG4gIGNvbnN0cnVjdG9yKGFwcCwgbmFtZXNwYWNlKSB7XG4gICAgc3VwZXIoYXBwLCBuYW1lc3BhY2UpXG4gICAgdGhpcy5tb2RlbENsYXNzID0gbnVsbCAvLyBUbyBiZSBkZWZpbmVkIGJ5IHN1Yi1jbGFzc2VzXG4gICAgdGhpcy5pc09uZVRvT25lID0gZmFsc2VcbiAgICB0aGlzLnJlbGF0ZSA9IGZhbHNlXG4gICAgdGhpcy51bnJlbGF0ZSA9IGZhbHNlXG4gIH1cblxuICBzZXR1cChpc1Jvb3QpIHtcbiAgICBzdXBlci5zZXR1cChpc1Jvb3QsIGZhbHNlKVxuICAgIHRoaXMuaWRQYXJhbSA9IHRoaXMubGV2ZWwgPyBgaWQke3RoaXMubGV2ZWx9YCA6ICdpZCdcbiAgICB0aGlzLmdyYXBoID0gISF0aGlzLmdyYXBoXG4gICAgdGhpcy50cmFuc2FjdGVkID0gISF0aGlzLnRyYW5zYWN0ZWRcbiAgICB0aGlzLnNjb3BlID0gdGhpcy5zY29wZSB8fCBudWxsXG4gICAgdGhpcy5jb2xsZWN0aW9uID0gdGhpcy5zZXR1cEFjdGlvbnMoJ2NvbGxlY3Rpb24nKVxuICAgIHRoaXMubWVtYmVyID0gdGhpcy5pc09uZVRvT25lID8ge30gOiB0aGlzLnNldHVwQWN0aW9ucygnbWVtYmVyJylcbiAgICAvLyBDcmVhdGUgYSBkdW1teSBtb2RlbCBpbnN0YW5jZSB0byB2YWxpZGF0ZSB0aGUgcmVxdWVzdGVkIGlkIGFnYWluc3QuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5ldy1jYXBcbiAgICB0aGlzLmlkVmFsaWRhdG9yID0gbmV3IHRoaXMubW9kZWxDbGFzcygpXG4gIH1cblxuICAvLyBAb3ZlcnJpZGVcbiAgc2V0dXBBY3Rpb24odHlwZSwgYWN0aW9ucywgbmFtZSwgaGFuZGxlciwgYXV0aG9yaXplLCB2ZXJiLCBwYXRoKSB7XG4gICAgLy8gVGhlc2UgZGVmYXVsdCBhY3Rpb25zIGhhcHBlbiBkaXJlY3RseSBvbiB0aGUgY29sbGVjdGlvbiAvIG1lbWJlciByb3V0ZVxuICAgIC8vIGFuZCBhcmUgZGlzdGluZ3Vpc2hlZCBieSB0aGVpciB2ZXJicywgbm90IGJ5IG5lc3RlZCBwYXRocy5cbiAgICBpZiAobmFtZSBpbiBhY3Rpb25Ub1ZlcmIpIHtcbiAgICAgIHZlcmIgPSBhY3Rpb25Ub1ZlcmJbbmFtZV1cbiAgICAgIHBhdGggPSAnJ1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuc2V0dXBBY3Rpb24oXG4gICAgICB0eXBlLCBhY3Rpb25zLCBuYW1lLCBoYW5kbGVyLCBhdXRob3JpemUsIHZlcmIsIHBhdGhcbiAgICApXG4gIH1cblxuICAvLyBAb3ZlcnJpZGVcbiAgc2V0dXBBc3NldHMoKSB7XG4gICAgY29uc3QgeyBtb2RlbENsYXNzIH0gPSB0aGlzXG4gICAgaWYgKHRoaXMuYXNzZXRzID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmFzc2V0cyA9IG1vZGVsQ2xhc3MuZGVmaW5pdGlvbi5hc3NldHMgfHwgbnVsbFxuICAgIH0gZWxzZSBpZiAoaXNPYmplY3QodGhpcy5hc3NldHMpKSB7XG4gICAgICAvLyBNZXJnZSBpbiB0aGUgYXNzZXRzIGRlZmluaXRpb24gZnJvbSB0aGUgbW9kZWwgaW50byB0aGUgYXNzZXRzIGNvbmZpZy5cbiAgICAgIC8vIFRoYXQgd2F5LCB3ZSBjYW4gc3RpbGwgdXNlIGBhbGxvd2AgYW5kIGBhdXRob3JpemVgIHRvIGNvbnRyb2xsIHRoZVxuICAgICAgLy8gdXBsb2FkIGFjY2Vzcywgd2hpbGUga2VlcGluZyB0aGUgYXNzZXRzIGRlZmluaXRpb25zIGluIG9uZSBjZW50cmFsXG4gICAgICAvLyBsb2NhdGlvbiBvbiB0aGUgbW9kZWwuXG4gICAgICB0aGlzLmFzc2V0cyA9IHtcbiAgICAgICAgLi4ubW9kZWxDbGFzcy5kZWZpbml0aW9uLmFzc2V0cyxcbiAgICAgICAgLi4udGhpcy5hc3NldHNcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hc3NldHMgPSBudWxsXG4gICAgfVxuICAgIC8vIE5vdyBjYWxsIGBzdXBlci5zZXR1cEFzc2V0cygpYCB3aGljaCBwZXJmb3JtcyB0aGUgdXN1YWwgaW5oZXJpdGFuY2UgL1xuICAgIC8vIGFsbG93IC8gYXV0aG9yaXplIHRyaWNrczpcbiAgICByZXR1cm4gc3VwZXIuc2V0dXBBc3NldHMoKVxuICB9XG5cbiAgLy8gQG92ZXJyaWRlXG4gIGdldFBhdGgodHlwZSwgcGF0aCkge1xuICAgIHJldHVybiB0eXBlID09PSAnbWVtYmVyJ1xuICAgICAgPyBwYXRoID8gYDoke3RoaXMuaWRQYXJhbX0vJHtwYXRofWAgOiBgOiR7dGhpcy5pZFBhcmFtfWBcbiAgICAgIDogcGF0aFxuICB9XG5cbiAgZXh0ZW5kQ29udGV4dChjdHgsIG9iamVjdCkge1xuICAgIC8vIENyZWF0ZSBhIGNvcHkgb2YgYGN0eGAgdGhhdCBpbmhlcml0cyBmcm9tIHRoZSByZWFsIG9uZSwgYnV0IG92ZXJyaWRlc1xuICAgIC8vIHNvbWUgcHJvcGVydGllcyB3aXRoIHRoZSBvbmVzIGZyb20gdGhlIHBhc3NlZCBgb2JqZWN0YC5cbiAgICByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgY3R4KVxuICB9XG5cbiAgZ2V0TWVtYmVySWQoY3R4KSB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGVJZChjdHgucGFyYW1zW3RoaXMuaWRQYXJhbV0pXG4gIH1cblxuICBnZXRDb250ZXh0V2l0aE1lbWJlcklkKGN0eCwgbWVtYmVySWQgPSB0aGlzLmdldE1lbWJlcklkKGN0eCkpIHtcbiAgICByZXR1cm4gdGhpcy5leHRlbmRDb250ZXh0KGN0eCwgeyBtZW1iZXJJZCB9KVxuICB9XG5cbiAgZ2V0Q29sbGVjdGlvbklkcyhjdHgpIHtcbiAgICBjb25zdCBpZFByb3BlcnR5ID0gdGhpcy5tb2RlbENsYXNzLmdldElkUHJvcGVydHkoKVxuICAgIC8vIEhhbmRsZSBib3RoIGNvbXBvc2l0ZSBrZXlzIGFuZCBub3JtYWwgb25lcy5cbiAgICBjb25zdCBnZXRJZCA9IGlzQXJyYXkoaWRQcm9wZXJ0eSlcbiAgICAgID8gbW9kZWwgPT4gaWRQcm9wZXJ0eS5yZWR1Y2UoXG4gICAgICAgIChpZCwga2V5KSA9PiB7XG4gICAgICAgICAgaWQucHVzaChtb2RlbFtrZXldKVxuICAgICAgICAgIHJldHVybiBpZFxuICAgICAgICB9LCBbXSlcbiAgICAgIDogbW9kZWwgPT4gbW9kZWxbaWRQcm9wZXJ0eV1cbiAgICByZXR1cm4gYXNBcnJheShjdHgucmVxdWVzdC5ib2R5KS5tYXAobW9kZWwgPT4gdGhpcy52YWxpZGF0ZUlkKGdldElkKG1vZGVsKSkpXG4gIH1cblxuICBnZXRJZHMoY3R4KSB7XG4gICAgLy8gUmV0dXJucyB0aGUgbW9kZWwgaWRzIHRoYXQgdGhpcyByZXF1ZXN0IGNvbmNlcm5zLCByZWFkIGZyb20gdGhlIHBhcmFtXG4gICAgLy8gZm9yIG1lbWJlciBpZHMsIGFuZCBmcm9tIHRoZSBwYXlsb2FkIGZvciBjb2xsZWN0aW9uIGlkczpcbiAgICBjb25zdCB7IHR5cGUgfSA9IGN0eC5hY3Rpb25cbiAgICByZXR1cm4gdHlwZSA9PT0gJ21lbWJlcicgPyBbdGhpcy5nZXRNZW1iZXJJZChjdHgpXVxuICAgICAgOiB0eXBlID09PSAnY29sbGVjdGlvbicgPyB0aGlzLmdldENvbGxlY3Rpb25JZHMoY3R4KVxuICAgICAgOiBbXVxuICB9XG5cbiAgdmFsaWRhdGVJZChpZCkge1xuICAgIGNvbnN0IHJlZmVyZW5jZSA9IHRoaXMubW9kZWxDbGFzcy5nZXRSZWZlcmVuY2UoaWQpXG4gICAgLy8gVGhpcyB2YWxpZGF0ZXMgYW5kIGNvZXJjZXMgYXQgdGhlIHNhbWUgdGltZSwgc28gZXh0cmFjdCB0aGUgY29lcmNlZCBpZFxuICAgIC8vIGZyb20gYHJlZmVyZW5jZWAgYWdhaW4gYWZ0ZXJ3YXJkcy5cbiAgICB0aGlzLmlkVmFsaWRhdG9yLiR2YWxpZGF0ZShyZWZlcmVuY2UsIHtcbiAgICAgIGNvZXJjZVR5cGVzOiB0cnVlLFxuICAgICAgcGF0Y2g6IHRydWVcbiAgICB9KVxuICAgIGNvbnN0IHZhbHVlcyA9IE9iamVjdC52YWx1ZXMocmVmZXJlbmNlKVxuICAgIHJldHVybiB2YWx1ZXMubGVuZ3RoID4gMSA/IHZhbHVlcyA6IHZhbHVlc1swXVxuICB9XG5cbiAgYXN5bmMgZ2V0TWVtYmVyKFxuICAgIGN0eCxcbiAgICBiYXNlID0gdGhpcyxcbiAgICB7IHF1ZXJ5ID0ge30sIG1vZGlmeSA9IG51bGwsIGZvclVwZGF0ZSA9IGZhbHNlIH0gPSB7fVxuICApIHtcbiAgICByZXR1cm4gdGhpcy5tZW1iZXIuZmluZC5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgIC8vIEV4dGVuZCBgY3R4YCB3aXRoIGEgbmV3IGBxdWVyeWAgb2JqZWN0LCB3aGlsZSBpbmhlcml0aW5nIHRoZSByb3V0ZVxuICAgICAgLy8gcGFyYW1zIGluIGBjdHgucGFyYW1zYCwgc28gZmluaW5nIHRoZSBtZW1iZXIgYnkgaWQgc3RpbGwgd29ya3MuXG4gICAgICB0aGlzLmV4dGVuZENvbnRleHQoY3R4LCB7IHF1ZXJ5IH0pLFxuICAgICAgKHF1ZXJ5LCB0cngpID0+IHtcbiAgICAgICAgdGhpcy5zZXR1cFF1ZXJ5KHF1ZXJ5LCBiYXNlKVxuICAgICAgICBxdWVyeS5tb2RpZnkobW9kaWZ5KVxuICAgICAgICBpZiAoZm9yVXBkYXRlKSB7XG4gICAgICAgICAgaWYgKCF0cngpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb250cm9sbGVyRXJyb3IoXG4gICAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAgICdVc2luZyBgZm9yVXBkYXRlKClgIHdpdGhvdXQgYSB0cmFuc2FjdGlvbiBpcyBpbnZhbGlkJ1xuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgICBxdWVyeS5mb3JVcGRhdGUoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgcXVlcnkodHJ4KSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dXBRdWVyeSh0aGlzLm1vZGVsQ2xhc3MucXVlcnkodHJ4KSlcbiAgfVxuXG4gIHNldHVwUXVlcnkocXVlcnksIGJhc2UgPSB0aGlzKSB7XG4gICAgY29uc3QgeyBzY29wZSB9ID0gYmFzZVxuICAgIGNvbnN0IHsgYWxsb3dTY29wZSwgYWxsb3dGaWx0ZXIgfSA9IHRoaXNcblxuICAgIGNvbnN0IGFzQWxsb3dBcnJheSA9IHZhbHVlID0+IHZhbHVlID09PSBmYWxzZSA/IFtdIDogYXNBcnJheSh2YWx1ZSlcblxuICAgIGlmIChhbGxvd1Njb3BlICE9PSB1bmRlZmluZWQgJiYgYWxsb3dTY29wZSAhPT0gdHJ1ZSkge1xuICAgICAgcXVlcnkuYWxsb3dTY29wZShcbiAgICAgICAgLi4uYXNBbGxvd0FycmF5KGFsbG93U2NvcGUpLFxuICAgICAgICAvLyBBbHNvIGluY2x1ZGUgdGhlIHNjb3BlcyBkZWZpbmVkIGJ5IHNjb3BlIHNvIHRoZXNlIGNhbiBwYXNzIHRocm91Z2guXG4gICAgICAgIC4uLmFzQXJyYXkoc2NvcGUpXG4gICAgICApXG4gICAgfVxuICAgIGlmIChhbGxvd0ZpbHRlciAhPT0gdW5kZWZpbmVkICYmIGFsbG93RmlsdGVyICE9PSB0cnVlKSB7XG4gICAgICBxdWVyeS5hbGxvd0ZpbHRlciguLi5hc0FsbG93QXJyYXkoYWxsb3dGaWx0ZXIpKVxuICAgIH1cbiAgICBpZiAoc2NvcGUpIHtcbiAgICAgIHF1ZXJ5LndpdGhTY29wZSguLi5hc0FycmF5KHNjb3BlKSlcbiAgICB9XG4gICAgcmV0dXJuIHF1ZXJ5XG4gIH1cblxuICBhc3luYyBleGVjdXRlKC8qIGN0eCwgZXhlY3V0ZShxdWVyeSwgdHJ4KSB7fSAqLykge1xuICAgIC8vIERvZXMgbm90aGluZyBpbiBiYXNlIGNsYXNzLlxuICAgIC8vIE92ZXJyaWRlcyBhcmUgaW4gTW9kZWxDb250cm9sbGVyIGFuZCBSZWxhdGlvbkNvbnRyb2xsZXIuXG4gIH1cblxuICBhc3luYyBleGVjdXRlQW5kRmV0Y2goYWN0aW9uLCBjdHgsIG1vZGlmeSwgYm9keSA9IGN0eC5yZXF1ZXN0LmJvZHkpIHtcbiAgICBjb25zdCBuYW1lID0gYCR7YWN0aW9ufSR7dGhpcy5ncmFwaCA/ICdEaXRvR3JhcGgnIDogJyd9QW5kRmV0Y2hgXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZShjdHgsIChxdWVyeSwgdHJ4KSA9PlxuICAgICAgcXVlcnlbbmFtZV0oYm9keSlcbiAgICAgICAgLm1vZGlmeShnZXRNb2RpZnkobW9kaWZ5LCB0cngpKVxuICAgIClcbiAgfVxuXG4gIGFzeW5jIGV4ZWN1dGVBbmRGZXRjaEJ5SWQoYWN0aW9uLCBjdHgsIG1vZGlmeSwgYm9keSA9IGN0eC5yZXF1ZXN0LmJvZHkpIHtcbiAgICBjb25zdCBuYW1lID0gYCR7YWN0aW9ufSR7dGhpcy5ncmFwaCA/ICdEaXRvR3JhcGgnIDogJyd9QW5kRmV0Y2hCeUlkYFxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGUoY3R4LCAocXVlcnksIHRyeCkgPT5cbiAgICAgIHF1ZXJ5W25hbWVdKGN0eC5tZW1iZXJJZCwgYm9keSlcbiAgICAgICAgLnRocm93SWZOb3RGb3VuZCgpXG4gICAgICAgIC5tb2RpZnkoZ2V0TW9kaWZ5KG1vZGlmeSwgdHJ4KSlcbiAgICApXG4gIH1cblxuICB0b0NvcmVBY3Rpb25zKGFjdGlvbnMpIHtcbiAgICAvLyBNYXJrIGFjdGlvbiBvYmplY3QgYW5kIG1ldGhvZHMgYXMgY29yZSwgc28gYENvbnRyb2xsZXIucHJvY2Vzc1ZhbHVlcygpYFxuICAgIC8vIGNhbiBmaWx0ZXIgY29ycmVjdGx5LlxuICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIE9iamVjdC52YWx1ZXMoYWN0aW9ucykpIHtcbiAgICAgIC8vIE1hcmsgYWN0aW9uIGZ1bmN0aW9ucyBhbHNvLCBzbyBDb250cm9sbGVyQWN0aW9uIGNhbiB1c2UgaXQgdG8gZGV0ZXJtaW5lXG4gICAgICAvLyB2YWx1ZSBmb3IgYHRyYW5zYWN0ZWRgLlxuICAgICAgYWN0aW9uLmNvcmUgPSB0cnVlXG4gICAgfVxuICAgIGFjdGlvbnMuJGNvcmUgPSB0cnVlXG4gICAgcmV0dXJuIGFjdGlvbnNcbiAgfVxuXG4gIGNvbGxlY3Rpb24gPSB0aGlzLnRvQ29yZUFjdGlvbnMoe1xuICAgIGFzeW5jIGZpbmQoY3R4LCBtb2RpZnkpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZXhlY3V0ZShjdHgsIChxdWVyeSwgdHJ4KSA9PiB7XG4gICAgICAgIHF1ZXJ5LmZpbmQoY3R4LnF1ZXJ5LCB0aGlzLmFsbG93UGFyYW0pLm1vZGlmeShnZXRNb2RpZnkobW9kaWZ5LCB0cngpKVxuICAgICAgICByZXR1cm4gdGhpcy5pc09uZVRvT25lID8gcXVlcnkuZmlyc3QoKSA6IHF1ZXJ5XG4gICAgICB9KVxuICAgICAgLy8gVGhpcyBtZXRob2QgZG9lc24ndCBhbHdheXMgcmV0dXJuIGFuIGFycmF5OlxuICAgICAgLy8gRm9yIFJlbGF0aW9uQ29udHJvbGxlcnMgd2hlcmUgYGlzT25lVG9PbmVgIGlzIHRydWUsIGl0IGNhbiByZXR1cm5cbiAgICAgIC8vIGB1bmRlZmluZWRgLiBDYXN0IHRvIGBudWxsYCBmb3Igc3VjaCBjYXNlczpcbiAgICAgIHJldHVybiByZXN1bHQgfHwgbnVsbFxuICAgIH0sXG5cbiAgICBhc3luYyBkZWxldGUoY3R4LCBtb2RpZnkpIHtcbiAgICAgIGNvbnN0IGNvdW50ID0gYXdhaXQgdGhpcy5leGVjdXRlKGN0eCwgKHF1ZXJ5LCB0cngpID0+IHF1ZXJ5XG4gICAgICAgIC5pZ25vcmVTY29wZSgpXG4gICAgICAgIC5maW5kKGN0eC5xdWVyeSwgdGhpcy5hbGxvd1BhcmFtKVxuICAgICAgICAubW9kaWZ5KHF1ZXJ5ID0+IHRoaXMuaXNPbmVUb09uZSAmJiBxdWVyeS50aHJvd0lmTm90Rm91bmQoKSlcbiAgICAgICAgLm1vZGlmeShnZXRNb2RpZnkobW9kaWZ5LCB0cngpKVxuICAgICAgICAubW9kaWZ5KHF1ZXJ5ID0+IHRoaXMudW5yZWxhdGUgPyBxdWVyeS51bnJlbGF0ZSgpIDogcXVlcnkuZGVsZXRlKCkpXG4gICAgICApXG4gICAgICByZXR1cm4geyBjb3VudCB9XG4gICAgfSxcblxuICAgIGFzeW5jIGluc2VydChjdHgsIG1vZGlmeSkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5yZWxhdGVcbiAgICAgICAgLy8gVXNlIHBhdGNoRGl0b0dyYXBoQW5kRmV0Y2goKSB0byBoYW5kbGUgcmVsYXRlcyBmb3IgdXMuXG4gICAgICAgID8gYXdhaXQgdGhpcy5leGVjdXRlKGN0eCwgKHF1ZXJ5LCB0cngpID0+IHF1ZXJ5XG4gICAgICAgICAgLnBhdGNoRGl0b0dyYXBoQW5kRmV0Y2goY3R4LnJlcXVlc3QuYm9keSwgeyByZWxhdGU6IHRydWUgfSlcbiAgICAgICAgICAubW9kaWZ5KGdldE1vZGlmeShtb2RpZnksIHRyeCkpXG4gICAgICAgIClcbiAgICAgICAgOiBhd2FpdCB0aGlzLmV4ZWN1dGVBbmRGZXRjaCgnaW5zZXJ0JywgY3R4LCBtb2RpZnkpXG4gICAgICBjdHguc3RhdHVzID0gMjAxXG4gICAgICBpZiAoaXNPYmplY3QocmVzdWx0KSkge1xuICAgICAgICBjdHguc2V0KCdMb2NhdGlvbicsIHRoaXMuZ2V0VXJsKCdjb2xsZWN0aW9uJywgcmVzdWx0LmlkKSlcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9LFxuXG4gICAgYXN5bmMgdXBkYXRlKGN0eCwgbW9kaWZ5KSB7XG4gICAgICByZXR1cm4gdGhpcy5leGVjdXRlQW5kRmV0Y2goJ3VwZGF0ZScsIGN0eCwgbW9kaWZ5KVxuICAgIH0sXG5cbiAgICBhc3luYyBwYXRjaChjdHgsIG1vZGlmeSkge1xuICAgICAgcmV0dXJuIHRoaXMuZXhlY3V0ZUFuZEZldGNoKCdwYXRjaCcsIGN0eCwgbW9kaWZ5KVxuICAgIH1cbiAgfSlcblxuICBtZW1iZXIgPSB0aGlzLnRvQ29yZUFjdGlvbnMoe1xuICAgIGFzeW5jIGZpbmQoY3R4LCBtb2RpZnkpIHtcbiAgICAgIHJldHVybiB0aGlzLmV4ZWN1dGUoY3R4LCAocXVlcnksIHRyeCkgPT4gcXVlcnlcbiAgICAgICAgLmZpbmRCeUlkKGN0eC5tZW1iZXJJZClcbiAgICAgICAgLmZpbmQoY3R4LnF1ZXJ5LCB0aGlzLmFsbG93UGFyYW0pXG4gICAgICAgIC50aHJvd0lmTm90Rm91bmQoKVxuICAgICAgICAubW9kaWZ5KGdldE1vZGlmeShtb2RpZnksIHRyeCkpXG4gICAgICApXG4gICAgfSxcblxuICAgIGFzeW5jIGRlbGV0ZShjdHgsIG1vZGlmeSkge1xuICAgICAgY29uc3QgY291bnQgPSBhd2FpdCB0aGlzLmV4ZWN1dGUoY3R4LCAocXVlcnksIHRyeCkgPT4gcXVlcnlcbiAgICAgICAgLmlnbm9yZVNjb3BlKClcbiAgICAgICAgLmZpbmRCeUlkKGN0eC5tZW1iZXJJZClcbiAgICAgICAgLmZpbmQoY3R4LnF1ZXJ5LCB0aGlzLmFsbG93UGFyYW0pXG4gICAgICAgIC50aHJvd0lmTm90Rm91bmQoKVxuICAgICAgICAubW9kaWZ5KGdldE1vZGlmeShtb2RpZnksIHRyeCkpXG4gICAgICAgIC5tb2RpZnkocXVlcnkgPT4gdGhpcy51bnJlbGF0ZSA/IHF1ZXJ5LnVucmVsYXRlKCkgOiBxdWVyeS5kZWxldGUoKSlcbiAgICAgIClcbiAgICAgIHJldHVybiB7IGNvdW50IH1cbiAgICB9LFxuXG4gICAgYXN5bmMgdXBkYXRlKGN0eCwgbW9kaWZ5KSB7XG4gICAgICByZXR1cm4gdGhpcy5leGVjdXRlQW5kRmV0Y2hCeUlkKCd1cGRhdGUnLCBjdHgsIG1vZGlmeSlcbiAgICB9LFxuXG4gICAgYXN5bmMgcGF0Y2goY3R4LCBtb2RpZnkpIHtcbiAgICAgIHJldHVybiB0aGlzLmV4ZWN1dGVBbmRGZXRjaEJ5SWQoJ3BhdGNoJywgY3R4LCBtb2RpZnkpXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiBnZXRNb2RpZnkobW9kaWZ5LCB0cngpIHtcbiAgcmV0dXJuIG1vZGlmeVxuICAgID8gcXVlcnkgPT4gbW9kaWZ5KHF1ZXJ5LCB0cngpXG4gICAgOiBudWxsXG59XG5cbmNvbnN0IGFjdGlvblRvVmVyYiA9IHtcbiAgZmluZDogJ2dldCcsXG4gIGRlbGV0ZTogJ2RlbGV0ZScsXG4gIGluc2VydDogJ3Bvc3QnLFxuICB1cGRhdGU6ICdwdXQnLFxuICBwYXRjaDogJ3BhdGNoJ1xufVxuIl19
|