payload 2.30.1 → 2.30.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/elements/DuplicateDocument/baseBeforeDuplicate.d.ts +6 -0
- package/dist/admin/components/elements/DuplicateDocument/baseBeforeDuplicate.d.ts.map +1 -0
- package/dist/admin/components/elements/DuplicateDocument/baseBeforeDuplicate.js +75 -0
- package/dist/admin/components/elements/DuplicateDocument/index.d.ts.map +1 -1
- package/dist/admin/components/elements/DuplicateDocument/index.js +7 -1
- package/dist/uploads/generateFileData.d.ts.map +1 -1
- package/dist/uploads/generateFileData.js +45 -16
- package/dist/uploads/imageResizer.d.ts.map +1 -1
- package/dist/uploads/imageResizer.js +19 -19
- package/dist/versions/drafts/appendVersionToQueryKey.d.ts +1 -1
- package/dist/versions/drafts/appendVersionToQueryKey.d.ts.map +1 -1
- package/dist/versions/drafts/appendVersionToQueryKey.js +2 -2
- package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
- package/dist/versions/getLatestCollectionVersion.js +5 -3
- package/package.json +1 -1
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type BeforeDuplicate } from '../../../../exports/types';
|
|
2
|
+
/**
|
|
3
|
+
* Creates new IDs for blocks / arrays items to avoid errors with relational databases.
|
|
4
|
+
*/
|
|
5
|
+
export declare const baseBeforeDuplicate: (args: Parameters<BeforeDuplicate>[0]) => any;
|
|
6
|
+
//# sourceMappingURL=baseBeforeDuplicate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseBeforeDuplicate.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/elements/DuplicateDocument/baseBeforeDuplicate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAA0B,MAAM,2BAA2B,CAAA;AAExF;;GAEG;AACH,eAAO,MAAM,mBAAmB,SAAU,WAAW,eAAe,CAAC,CAAC,CAAC,CAAC,QASvE,CAAA"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "baseBeforeDuplicate", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return baseBeforeDuplicate;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _bsonobjectid = /*#__PURE__*/ _interop_require_default(require("bson-objectid"));
|
|
12
|
+
const _types = require("../../../../exports/types");
|
|
13
|
+
function _interop_require_default(obj) {
|
|
14
|
+
return obj && obj.__esModule ? obj : {
|
|
15
|
+
default: obj
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
const baseBeforeDuplicate = (args)=>{
|
|
19
|
+
const { collection: { fields }, data } = args;
|
|
20
|
+
traverseFields(fields, data);
|
|
21
|
+
return data;
|
|
22
|
+
};
|
|
23
|
+
function traverseFields(fields, data) {
|
|
24
|
+
if (typeof data === 'undefined' || data === null) return;
|
|
25
|
+
fields.forEach((field)=>{
|
|
26
|
+
switch(field.type){
|
|
27
|
+
case 'array':
|
|
28
|
+
if (Array.isArray(data?.[field.name])) {
|
|
29
|
+
data[field.name].forEach((row)=>{
|
|
30
|
+
if (!row) return;
|
|
31
|
+
row.id = new _bsonobjectid.default().toHexString();
|
|
32
|
+
traverseFields(field.fields, row);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
break;
|
|
36
|
+
case 'blocks':
|
|
37
|
+
{
|
|
38
|
+
if (Array.isArray(data?.[field.name])) {
|
|
39
|
+
data[field.name].forEach((row)=>{
|
|
40
|
+
if (!row) return;
|
|
41
|
+
const configBlock = field.blocks.find((block)=>block.slug === row.blockType);
|
|
42
|
+
if (!configBlock) return;
|
|
43
|
+
row.id = new _bsonobjectid.default().toHexString();
|
|
44
|
+
traverseFields(configBlock.fields, row);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
case 'row':
|
|
50
|
+
case 'collapsible':
|
|
51
|
+
traverseFields(field.fields, data);
|
|
52
|
+
break;
|
|
53
|
+
case 'tabs':
|
|
54
|
+
field.tabs.forEach((tab)=>{
|
|
55
|
+
if (!(0, _types.tabHasName)(tab)) {
|
|
56
|
+
traverseFields(tab.fields, data);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (data && data[tab.name]) {
|
|
60
|
+
traverseFields(tab.fields, data[tab.name]);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
break;
|
|
64
|
+
case 'group':
|
|
65
|
+
if (data && data[field.name]) {
|
|
66
|
+
traverseFields(field.fields, data[field.name]);
|
|
67
|
+
}
|
|
68
|
+
break;
|
|
69
|
+
default:
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2VsZW1lbnRzL0R1cGxpY2F0ZURvY3VtZW50L2Jhc2VCZWZvcmVEdXBsaWNhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE9iamVjdElEIGZyb20gJ2Jzb24tb2JqZWN0aWQnXG5cbmltcG9ydCB7IHR5cGUgQmVmb3JlRHVwbGljYXRlLCB0eXBlIEZpZWxkLCB0YWJIYXNOYW1lIH0gZnJvbSAnLi4vLi4vLi4vLi4vZXhwb3J0cy90eXBlcydcblxuLyoqXG4gKiBDcmVhdGVzIG5ldyBJRHMgZm9yIGJsb2NrcyAvIGFycmF5cyBpdGVtcyB0byBhdm9pZCBlcnJvcnMgd2l0aCByZWxhdGlvbmFsIGRhdGFiYXNlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGJhc2VCZWZvcmVEdXBsaWNhdGUgPSAoYXJnczogUGFyYW1ldGVyczxCZWZvcmVEdXBsaWNhdGU+WzBdKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb2xsZWN0aW9uOiB7IGZpZWxkcyB9LFxuICAgIGRhdGEsXG4gIH0gPSBhcmdzXG5cbiAgdHJhdmVyc2VGaWVsZHMoZmllbGRzLCBkYXRhKVxuXG4gIHJldHVybiBkYXRhXG59XG5cbmZ1bmN0aW9uIHRyYXZlcnNlRmllbGRzKGZpZWxkczogRmllbGRbXSwgZGF0YTogdW5rbm93bikge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICd1bmRlZmluZWQnIHx8IGRhdGEgPT09IG51bGwpIHJldHVyblxuXG4gIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhPy5bZmllbGQubmFtZV0pKSB7XG4gICAgICAgICAgZGF0YVtmaWVsZC5uYW1lXS5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICAgIGlmICghcm93KSByZXR1cm5cbiAgICAgICAgICAgIHJvdy5pZCA9IG5ldyBPYmplY3RJRCgpLnRvSGV4U3RyaW5nKClcbiAgICAgICAgICAgIHRyYXZlcnNlRmllbGRzKGZpZWxkLmZpZWxkcywgcm93KVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YT8uW2ZpZWxkLm5hbWVdKSkge1xuICAgICAgICAgIGRhdGFbZmllbGQubmFtZV0uZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICBpZiAoIXJvdykgcmV0dXJuXG4gICAgICAgICAgICBjb25zdCBjb25maWdCbG9jayA9IGZpZWxkLmJsb2Nrcy5maW5kKChibG9jaykgPT4gYmxvY2suc2x1ZyA9PT0gcm93LmJsb2NrVHlwZSlcbiAgICAgICAgICAgIGlmICghY29uZmlnQmxvY2spIHJldHVyblxuICAgICAgICAgICAgcm93LmlkID0gbmV3IE9iamVjdElEKCkudG9IZXhTdHJpbmcoKVxuICAgICAgICAgICAgdHJhdmVyc2VGaWVsZHMoY29uZmlnQmxvY2suZmllbGRzLCByb3cpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAncm93JzpcbiAgICAgIGNhc2UgJ2NvbGxhcHNpYmxlJzpcbiAgICAgICAgdHJhdmVyc2VGaWVsZHMoZmllbGQuZmllbGRzLCBkYXRhKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAndGFicyc6XG4gICAgICAgIGZpZWxkLnRhYnMuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgICAgaWYgKCF0YWJIYXNOYW1lKHRhYikpIHtcbiAgICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHRhYi5maWVsZHMsIGRhdGEpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhW3RhYi5uYW1lXSkge1xuICAgICAgICAgICAgdHJhdmVyc2VGaWVsZHModGFiLmZpZWxkcywgZGF0YVt0YWIubmFtZV0pXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnZ3JvdXAnOlxuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhW2ZpZWxkLm5hbWVdKSB7XG4gICAgICAgICAgdHJhdmVyc2VGaWVsZHMoZmllbGQuZmllbGRzLCBkYXRhW2ZpZWxkLm5hbWVdKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVha1xuICAgIH1cbiAgfSlcbn1cbiJdLCJuYW1lcyI6WyJiYXNlQmVmb3JlRHVwbGljYXRlIiwiYXJncyIsImNvbGxlY3Rpb24iLCJmaWVsZHMiLCJkYXRhIiwidHJhdmVyc2VGaWVsZHMiLCJmb3JFYWNoIiwiZmllbGQiLCJ0eXBlIiwiQXJyYXkiLCJpc0FycmF5IiwibmFtZSIsInJvdyIsImlkIiwiT2JqZWN0SUQiLCJ0b0hleFN0cmluZyIsImNvbmZpZ0Jsb2NrIiwiYmxvY2tzIiwiZmluZCIsImJsb2NrIiwic2x1ZyIsImJsb2NrVHlwZSIsInRhYnMiLCJ0YWIiLCJ0YWJIYXNOYW1lIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6Ijs7OzsrQkFPYUE7OztlQUFBQTs7O3FFQVBRO3VCQUV3Qzs7Ozs7O0FBS3RELE1BQU1BLHNCQUFzQixDQUFDQztJQUNsQyxNQUFNLEVBQ0pDLFlBQVksRUFBRUMsTUFBTSxFQUFFLEVBQ3RCQyxJQUFJLEVBQ0wsR0FBR0g7SUFFSkksZUFBZUYsUUFBUUM7SUFFdkIsT0FBT0E7QUFDVDtBQUVBLFNBQVNDLGVBQWVGLE1BQWUsRUFBRUMsSUFBYTtJQUNwRCxJQUFJLE9BQU9BLFNBQVMsZUFBZUEsU0FBUyxNQUFNO0lBRWxERCxPQUFPRyxPQUFPLENBQUMsQ0FBQ0M7UUFDZCxPQUFRQSxNQUFNQyxJQUFJO1lBQ2hCLEtBQUs7Z0JBQ0gsSUFBSUMsTUFBTUMsT0FBTyxDQUFDTixNQUFNLENBQUNHLE1BQU1JLElBQUksQ0FBQyxHQUFHO29CQUNyQ1AsSUFBSSxDQUFDRyxNQUFNSSxJQUFJLENBQUMsQ0FBQ0wsT0FBTyxDQUFDLENBQUNNO3dCQUN4QixJQUFJLENBQUNBLEtBQUs7d0JBQ1ZBLElBQUlDLEVBQUUsR0FBRyxJQUFJQyxxQkFBUSxHQUFHQyxXQUFXO3dCQUNuQ1YsZUFBZUUsTUFBTUosTUFBTSxFQUFFUztvQkFDL0I7Z0JBQ0Y7Z0JBQ0E7WUFDRixLQUFLO2dCQUFVO29CQUNiLElBQUlILE1BQU1DLE9BQU8sQ0FBQ04sTUFBTSxDQUFDRyxNQUFNSSxJQUFJLENBQUMsR0FBRzt3QkFDckNQLElBQUksQ0FBQ0csTUFBTUksSUFBSSxDQUFDLENBQUNMLE9BQU8sQ0FBQyxDQUFDTTs0QkFDeEIsSUFBSSxDQUFDQSxLQUFLOzRCQUNWLE1BQU1JLGNBQWNULE1BQU1VLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUNDLFFBQVVBLE1BQU1DLElBQUksS0FBS1IsSUFBSVMsU0FBUzs0QkFDN0UsSUFBSSxDQUFDTCxhQUFhOzRCQUNsQkosSUFBSUMsRUFBRSxHQUFHLElBQUlDLHFCQUFRLEdBQUdDLFdBQVc7NEJBQ25DVixlQUFlVyxZQUFZYixNQUFNLEVBQUVTO3dCQUNyQztvQkFDRjtvQkFDQTtnQkFDRjtZQUNBLEtBQUs7WUFDTCxLQUFLO2dCQUNIUCxlQUFlRSxNQUFNSixNQUFNLEVBQUVDO2dCQUM3QjtZQUNGLEtBQUs7Z0JBQ0hHLE1BQU1lLElBQUksQ0FBQ2hCLE9BQU8sQ0FBQyxDQUFDaUI7b0JBQ2xCLElBQUksQ0FBQ0MsSUFBQUEsaUJBQVUsRUFBQ0QsTUFBTTt3QkFDcEJsQixlQUFla0IsSUFBSXBCLE1BQU0sRUFBRUM7d0JBQzNCO29CQUNGO29CQUVBLElBQUlBLFFBQVFBLElBQUksQ0FBQ21CLElBQUlaLElBQUksQ0FBQyxFQUFFO3dCQUMxQk4sZUFBZWtCLElBQUlwQixNQUFNLEVBQUVDLElBQUksQ0FBQ21CLElBQUlaLElBQUksQ0FBQztvQkFDM0M7Z0JBQ0Y7Z0JBQ0E7WUFDRixLQUFLO2dCQUNILElBQUlQLFFBQVFBLElBQUksQ0FBQ0csTUFBTUksSUFBSSxDQUFDLEVBQUU7b0JBQzVCTixlQUFlRSxNQUFNSixNQUFNLEVBQUVDLElBQUksQ0FBQ0csTUFBTUksSUFBSSxDQUFDO2dCQUMvQztnQkFDQTtZQUNGO2dCQUNFO1FBQ0o7SUFDRjtBQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/elements/DuplicateDocument/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAKpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/elements/DuplicateDocument/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAKpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAUpC,OAAO,cAAc,CAAA;AAIrB,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAiM9B,CAAA;AAED,eAAe,SAAS,CAAA"}
|
|
@@ -20,6 +20,7 @@ const _Minimal = /*#__PURE__*/ _interop_require_default(require("../../templates
|
|
|
20
20
|
const _Config = require("../../utilities/Config");
|
|
21
21
|
const _Button = /*#__PURE__*/ _interop_require_default(require("../Button"));
|
|
22
22
|
const _PopupButtonList = /*#__PURE__*/ _interop_require_wildcard(require("../Popup/PopupButtonList"));
|
|
23
|
+
const _baseBeforeDuplicate = require("./baseBeforeDuplicate");
|
|
23
24
|
require("./index.scss");
|
|
24
25
|
function _interop_require_default(obj) {
|
|
25
26
|
return obj && obj.__esModule ? obj : {
|
|
@@ -100,6 +101,11 @@ const Duplicate = ({ id, slug, collection })=>{
|
|
|
100
101
|
}
|
|
101
102
|
});
|
|
102
103
|
let data = await response.json();
|
|
104
|
+
data = (0, _baseBeforeDuplicate.baseBeforeDuplicate)({
|
|
105
|
+
collection,
|
|
106
|
+
data,
|
|
107
|
+
locale
|
|
108
|
+
});
|
|
103
109
|
if (typeof collection.admin.hooks?.beforeDuplicate === 'function') {
|
|
104
110
|
data = await collection.admin.hooks.beforeDuplicate({
|
|
105
111
|
collection,
|
|
@@ -222,4 +228,4 @@ const Duplicate = ({ id, slug, collection })=>{
|
|
|
222
228
|
};
|
|
223
229
|
const _default = Duplicate;
|
|
224
230
|
|
|
225
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2VsZW1lbnRzL0R1cGxpY2F0ZURvY3VtZW50L2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RhbCwgdXNlTW9kYWwgfSBmcm9tICdAZmFjZWxlc3MtdWkvbW9kYWwnXG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyB1c2VIaXN0b3J5IH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSdcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSAncmVhY3QtdG9hc3RpZnknXG5cbmltcG9ydCB0eXBlIHsgUHJvcHMgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBnZXRUcmFuc2xhdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdGllcy9nZXRUcmFuc2xhdGlvbidcbmltcG9ydCB7IHJlcXVlc3RzIH0gZnJvbSAnLi4vLi4vLi4vYXBpJ1xuaW1wb3J0IHsgdXNlRm9ybSwgdXNlRm9ybU1vZGlmaWVkIH0gZnJvbSAnLi4vLi4vZm9ybXMvRm9ybS9jb250ZXh0J1xuaW1wb3J0IE1pbmltYWxUZW1wbGF0ZSBmcm9tICcuLi8uLi90ZW1wbGF0ZXMvTWluaW1hbCdcbmltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9Db25maWcnXG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uL0J1dHRvbidcbmltcG9ydCAqIGFzIFBvcHVwTGlzdCBmcm9tICcuLi9Qb3B1cC9Qb3B1cEJ1dHRvbkxpc3QnXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcblxuY29uc3QgYmFzZUNsYXNzID0gJ2R1cGxpY2F0ZSdcblxuY29uc3QgRHVwbGljYXRlOiBSZWFjdC5GQzxQcm9wcz4gPSAoeyBpZCwgc2x1ZywgY29sbGVjdGlvbiB9KSA9PiB7XG4gIGNvbnN0IHsgcHVzaCB9ID0gdXNlSGlzdG9yeSgpXG4gIGNvbnN0IG1vZGlmaWVkID0gdXNlRm9ybU1vZGlmaWVkKClcbiAgY29uc3QgeyB0b2dnbGVNb2RhbCB9ID0gdXNlTW9kYWwoKVxuICBjb25zdCB7IHNldE1vZGlmaWVkIH0gPSB1c2VGb3JtKClcbiAgY29uc3Qge1xuICAgIGxvY2FsaXphdGlvbixcbiAgICByb3V0ZXM6IHsgYXBpIH0sXG4gICAgc2VydmVyVVJMLFxuICB9ID0gdXNlQ29uZmlnKClcbiAgY29uc3Qge1xuICAgIHJvdXRlczogeyBhZG1pbiB9LFxuICB9ID0gdXNlQ29uZmlnKClcbiAgY29uc3QgW2hhc0NsaWNrZWQsIHNldEhhc0NsaWNrZWRdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpXG4gIGNvbnN0IFtpc1N1Ym1pdHRpbmcsIHNldElzU3VibWl0dGluZ10gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSlcbiAgY29uc3QgeyBpMThuLCB0IH0gPSB1c2VUcmFuc2xhdGlvbignZ2VuZXJhbCcpXG5cbiAgY29uc3QgbW9kYWxTbHVnID0gYGR1cGxpY2F0ZS0ke2lkfWBcblxuICBjb25zdCBoYW5kbGVDbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChvdmVycmlkZSA9IGZhbHNlKSA9PiB7XG4gICAgICBpZiAoaXNTdWJtaXR0aW5nKSByZXR1cm5cbiAgICAgIHNldElzU3VibWl0dGluZyh0cnVlKVxuICAgICAgc2V0SGFzQ2xpY2tlZCh0cnVlKVxuXG4gICAgICBpZiAobW9kaWZpZWQgJiYgIW92ZXJyaWRlKSB7XG4gICAgICAgIHRvZ2dsZU1vZGFsKG1vZGFsU2x1ZylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNhdmVEb2N1bWVudCA9IGFzeW5jICh7XG4gICAgICAgIGlkLFxuICAgICAgICBkdXBsaWNhdGVJRCA9ICcnLFxuICAgICAgICBsb2NhbGUgPSAnJyxcbiAgICAgIH0pOiBQcm9taXNlPG51bGwgfCBzdHJpbmc+ID0+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0cy5nZXQoYCR7c2VydmVyVVJMfSR7YXBpfS8ke3NsdWd9LyR7aWR9YCwge1xuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiBpMThuLmxhbmd1YWdlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICBkZXB0aDogMCxcbiAgICAgICAgICAgIGRyYWZ0OiB0cnVlLFxuICAgICAgICAgICAgJ2ZhbGxiYWNrLWxvY2FsZSc6ICdub25lJyxcbiAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICBsZXQgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuXG4gICAgICAgIGlmICh0eXBlb2YgY29sbGVjdGlvbi5hZG1pbi5ob29rcz8uYmVmb3JlRHVwbGljYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgZGF0YSA9IGF3YWl0IGNvbGxlY3Rpb24uYWRtaW4uaG9va3MuYmVmb3JlRHVwbGljYXRlKHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWR1cGxpY2F0ZUlEKSB7XG4gICAgICAgICAgaWYgKCdjcmVhdGVkQXQnIGluIGRhdGEpIGRlbGV0ZSBkYXRhLmNyZWF0ZWRBdFxuICAgICAgICAgIGlmICgndXBkYXRlZEF0JyBpbiBkYXRhKSBkZWxldGUgZGF0YS51cGRhdGVkQXRcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcXVlc3RzW2R1cGxpY2F0ZUlEID8gJ3BhdGNoJyA6ICdwb3N0J10oXG4gICAgICAgICAgYCR7c2VydmVyVVJMfSR7YXBpfS8ke3NsdWd9LyR7ZHVwbGljYXRlSUR9P2xvY2FsZT0ke2xvY2FsZX0mZmFsbGJhY2stbG9jYWxlPW5vbmVgLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGRhdGEpLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBqc29uID0gYXdhaXQgcmVzdWx0Lmpzb24oKVxuXG4gICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSAyMDEgfHwgcmVzdWx0LnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgcmV0dXJuIGpzb24uZG9jLmlkXG4gICAgICAgIH1cblxuICAgICAgICAvLyBvbmx5IHNob3cgdGhlIGVycm9yIGlmIHRoaXMgaXMgdGhlIGluaXRpYWwgcmVxdWVzdCBmYWlsaW5nXG4gICAgICAgIGlmICghZHVwbGljYXRlSUQpIHtcbiAgICAgICAgICBqc29uLmVycm9ycy5mb3JFYWNoKChlcnJvcikgPT4gdG9hc3QuZXJyb3IoZXJyb3IubWVzc2FnZSkpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgbGV0IGR1cGxpY2F0ZUlEOiBzdHJpbmdcbiAgICAgIGxldCBhYm9ydCA9IGZhbHNlXG4gICAgICBjb25zdCBsb2NhbGVFcnJvcnMgPSBbXVxuXG4gICAgICBpZiAobG9jYWxpemF0aW9uKSB7XG4gICAgICAgIGF3YWl0IGxvY2FsaXphdGlvbi5sb2NhbGVDb2Rlcy5yZWR1Y2UoYXN5bmMgKHByaW9yTG9jYWxlUGF0Y2gsIGxvY2FsZSkgPT4ge1xuICAgICAgICAgIGF3YWl0IHByaW9yTG9jYWxlUGF0Y2hcbiAgICAgICAgICBpZiAoYWJvcnQpIHJldHVyblxuICAgICAgICAgIGNvbnN0IGxvY2FsZVJlc3VsdCA9IGF3YWl0IHNhdmVEb2N1bWVudCh7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIGR1cGxpY2F0ZUlELFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgZHVwbGljYXRlSUQgPSBsb2NhbGVSZXN1bHQgfHwgZHVwbGljYXRlSURcbiAgICAgICAgICBpZiAoZHVwbGljYXRlSUQgJiYgIWxvY2FsZVJlc3VsdCkge1xuICAgICAgICAgICAgbG9jYWxlRXJyb3JzLnB1c2gobG9jYWxlKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWR1cGxpY2F0ZUlEKSB7XG4gICAgICAgICAgICBhYm9ydCA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZHVwbGljYXRlSUQgPSBhd2FpdCBzYXZlRG9jdW1lbnQoeyBpZCB9KVxuICAgICAgfVxuXG4gICAgICBpZiAoIWR1cGxpY2F0ZUlEKSB7XG4gICAgICAgIC8vIGRvY3VtZW50IHdhcyBub3Qgc2F2ZWQsIGVycm9yIHRvYXN0IHdhcyBkaXNwbGF5ZWRcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHRvYXN0LnN1Y2Nlc3MoXG4gICAgICAgIHQoJ3N1Y2Nlc3NmdWxseUR1cGxpY2F0ZWQnLCB7IGxhYmVsOiBnZXRUcmFuc2xhdGlvbihjb2xsZWN0aW9uLmxhYmVscy5zaW5ndWxhciwgaTE4bikgfSksXG4gICAgICAgIHsgYXV0b0Nsb3NlOiAzMDAwIH0sXG4gICAgICApXG5cbiAgICAgIGlmIChsb2NhbGVFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0b2FzdC5lcnJvcihcbiAgICAgICAgICBgXG4gICAgICAgICAgJHt0KCdlcnJvcjpsb2NhbGVzTm90U2F2ZWRfb3RoZXInLCB7IGNvdW50OiBsb2NhbGVFcnJvcnMubGVuZ3RoIH0pfVxuICAgICAgICAgICR7bG9jYWxlRXJyb3JzLmpvaW4oJywgJyl9XG4gICAgICAgICAgYCxcbiAgICAgICAgICB7IGF1dG9DbG9zZTogNTAwMCB9LFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIHNldE1vZGlmaWVkKGZhbHNlKVxuICAgICAgc2V0SXNTdWJtaXR0aW5nKGZhbHNlKVxuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgcHVzaCh7XG4gICAgICAgICAgcGF0aG5hbWU6IGAke2FkbWlufS9jb2xsZWN0aW9ucy8ke3NsdWd9LyR7ZHVwbGljYXRlSUR9YCxcbiAgICAgICAgfSlcbiAgICAgIH0sIDEwKVxuICAgIH0sXG4gICAgW1xuICAgICAgbW9kaWZpZWQsXG4gICAgICBsb2NhbGl6YXRpb24sXG4gICAgICB0LFxuICAgICAgaTE4bixcbiAgICAgIGNvbGxlY3Rpb24sXG4gICAgICBzZXRNb2RpZmllZCxcbiAgICAgIHRvZ2dsZU1vZGFsLFxuICAgICAgbW9kYWxTbHVnLFxuICAgICAgc2VydmVyVVJMLFxuICAgICAgYXBpLFxuICAgICAgc2x1ZyxcbiAgICAgIGlkLFxuICAgICAgcHVzaCxcbiAgICAgIGFkbWluLFxuICAgIF0sXG4gIClcblxuICBjb25zdCBjb25maXJtID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGhhbmRsZUNsaWNrKHRydWUpXG4gICAgc2V0SGFzQ2xpY2tlZChmYWxzZSlcbiAgfSwgW2hhbmRsZUNsaWNrXSlcblxuICByZXR1cm4gKFxuICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgIDxQb3B1cExpc3QuQnV0dG9uXG4gICAgICAgIGRpc2FibGVkPXtpc1N1Ym1pdHRpbmd9XG4gICAgICAgIGlkPVwiYWN0aW9uLWR1cGxpY2F0ZVwiXG4gICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUNsaWNrKGZhbHNlKX1cbiAgICAgID5cbiAgICAgICAge3QoJ2R1cGxpY2F0ZScpfVxuICAgICAgPC9Qb3B1cExpc3QuQnV0dG9uPlxuICAgICAge21vZGlmaWVkICYmIGhhc0NsaWNrZWQgJiYgKFxuICAgICAgICA8TW9kYWwgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19tb2RhbGB9IHNsdWc9e21vZGFsU2x1Z30+XG4gICAgICAgICAgPE1pbmltYWxUZW1wbGF0ZSBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX21vZGFsLXRlbXBsYXRlYH0+XG4gICAgICAgICAgICA8aDE+e3QoJ2NvbmZpcm1EdXBsaWNhdGlvbicpfTwvaDE+XG4gICAgICAgICAgICA8cD57dCgndW5zYXZlZENoYW5nZXNEdXBsaWNhdGUnKX08L3A+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGJ1dHRvblN0eWxlPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgaWQ9XCJjb25maXJtLWNhbmNlbFwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRvZ2dsZU1vZGFsKG1vZGFsU2x1Zyl9XG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dCgnY2FuY2VsJyl9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDxCdXR0b24gaWQ9XCJjb25maXJtLWR1cGxpY2F0ZVwiIG9uQ2xpY2s9e2NvbmZpcm19PlxuICAgICAgICAgICAgICB7dCgnZHVwbGljYXRlV2l0aG91dFNhdmluZycpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9NaW5pbWFsVGVtcGxhdGU+XG4gICAgICAgIDwvTW9kYWw+XG4gICAgICApfVxuICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgRHVwbGljYXRlXG4iXSwibmFtZXMiOlsiYmFzZUNsYXNzIiwiRHVwbGljYXRlIiwiaWQiLCJzbHVnIiwiY29sbGVjdGlvbiIsInB1c2giLCJ1c2VIaXN0b3J5IiwibW9kaWZpZWQiLCJ1c2VGb3JtTW9kaWZpZWQiLCJ0b2dnbGVNb2RhbCIsInVzZU1vZGFsIiwic2V0TW9kaWZpZWQiLCJ1c2VGb3JtIiwibG9jYWxpemF0aW9uIiwicm91dGVzIiwiYXBpIiwic2VydmVyVVJMIiwidXNlQ29uZmlnIiwiYWRtaW4iLCJoYXNDbGlja2VkIiwic2V0SGFzQ2xpY2tlZCIsInVzZVN0YXRlIiwiaXNTdWJtaXR0aW5nIiwic2V0SXNTdWJtaXR0aW5nIiwiaTE4biIsInQiLCJ1c2VUcmFuc2xhdGlvbiIsIm1vZGFsU2x1ZyIsImhhbmRsZUNsaWNrIiwidXNlQ2FsbGJhY2siLCJvdmVycmlkZSIsInNhdmVEb2N1bWVudCIsImR1cGxpY2F0ZUlEIiwibG9jYWxlIiwicmVzcG9uc2UiLCJyZXF1ZXN0cyIsImdldCIsImhlYWRlcnMiLCJsYW5ndWFnZSIsInBhcmFtcyIsImRlcHRoIiwiZHJhZnQiLCJkYXRhIiwianNvbiIsImhvb2tzIiwiYmVmb3JlRHVwbGljYXRlIiwiY3JlYXRlZEF0IiwidXBkYXRlZEF0IiwicmVzdWx0IiwiYm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0dXMiLCJkb2MiLCJlcnJvcnMiLCJmb3JFYWNoIiwiZXJyb3IiLCJ0b2FzdCIsIm1lc3NhZ2UiLCJhYm9ydCIsImxvY2FsZUVycm9ycyIsImxvY2FsZUNvZGVzIiwicmVkdWNlIiwicHJpb3JMb2NhbGVQYXRjaCIsImxvY2FsZVJlc3VsdCIsIlByb21pc2UiLCJyZXNvbHZlIiwic3VjY2VzcyIsImxhYmVsIiwiZ2V0VHJhbnNsYXRpb24iLCJsYWJlbHMiLCJzaW5ndWxhciIsImF1dG9DbG9zZSIsImxlbmd0aCIsImNvdW50Iiwiam9pbiIsInNldFRpbWVvdXQiLCJwYXRobmFtZSIsImNvbmZpcm0iLCJSZWFjdCIsIkZyYWdtZW50IiwiUG9wdXBMaXN0IiwiQnV0dG9uIiwiZGlzYWJsZWQiLCJvbkNsaWNrIiwiTW9kYWwiLCJjbGFzc05hbWUiLCJNaW5pbWFsVGVtcGxhdGUiLCJoMSIsInAiLCJidXR0b25TdHlsZSIsInR5cGUiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2VsZW1lbnRzL0R1cGxpY2F0ZURvY3VtZW50L2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RhbCwgdXNlTW9kYWwgfSBmcm9tICdAZmFjZWxlc3MtdWkvbW9kYWwnXG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyB1c2VIaXN0b3J5IH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSdcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSAncmVhY3QtdG9hc3RpZnknXG5cbmltcG9ydCB0eXBlIHsgUHJvcHMgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBnZXRUcmFuc2xhdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdGllcy9nZXRUcmFuc2xhdGlvbidcbmltcG9ydCB7IHJlcXVlc3RzIH0gZnJvbSAnLi4vLi4vLi4vYXBpJ1xuaW1wb3J0IHsgdXNlRm9ybSwgdXNlRm9ybU1vZGlmaWVkIH0gZnJvbSAnLi4vLi4vZm9ybXMvRm9ybS9jb250ZXh0J1xuaW1wb3J0IE1pbmltYWxUZW1wbGF0ZSBmcm9tICcuLi8uLi90ZW1wbGF0ZXMvTWluaW1hbCdcbmltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9Db25maWcnXG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uL0J1dHRvbidcbmltcG9ydCAqIGFzIFBvcHVwTGlzdCBmcm9tICcuLi9Qb3B1cC9Qb3B1cEJ1dHRvbkxpc3QnXG5pbXBvcnQgeyBiYXNlQmVmb3JlRHVwbGljYXRlIH0gZnJvbSAnLi9iYXNlQmVmb3JlRHVwbGljYXRlJ1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5cbmNvbnN0IGJhc2VDbGFzcyA9ICdkdXBsaWNhdGUnXG5cbmNvbnN0IER1cGxpY2F0ZTogUmVhY3QuRkM8UHJvcHM+ID0gKHsgaWQsIHNsdWcsIGNvbGxlY3Rpb24gfSkgPT4ge1xuICBjb25zdCB7IHB1c2ggfSA9IHVzZUhpc3RvcnkoKVxuICBjb25zdCBtb2RpZmllZCA9IHVzZUZvcm1Nb2RpZmllZCgpXG4gIGNvbnN0IHsgdG9nZ2xlTW9kYWwgfSA9IHVzZU1vZGFsKClcbiAgY29uc3QgeyBzZXRNb2RpZmllZCB9ID0gdXNlRm9ybSgpXG4gIGNvbnN0IHtcbiAgICBsb2NhbGl6YXRpb24sXG4gICAgcm91dGVzOiB7IGFwaSB9LFxuICAgIHNlcnZlclVSTCxcbiAgfSA9IHVzZUNvbmZpZygpXG4gIGNvbnN0IHtcbiAgICByb3V0ZXM6IHsgYWRtaW4gfSxcbiAgfSA9IHVzZUNvbmZpZygpXG4gIGNvbnN0IFtoYXNDbGlja2VkLCBzZXRIYXNDbGlja2VkXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKVxuICBjb25zdCBbaXNTdWJtaXR0aW5nLCBzZXRJc1N1Ym1pdHRpbmddID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpXG4gIGNvbnN0IHsgaTE4biwgdCB9ID0gdXNlVHJhbnNsYXRpb24oJ2dlbmVyYWwnKVxuXG4gIGNvbnN0IG1vZGFsU2x1ZyA9IGBkdXBsaWNhdGUtJHtpZH1gXG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAob3ZlcnJpZGUgPSBmYWxzZSkgPT4ge1xuICAgICAgaWYgKGlzU3VibWl0dGluZykgcmV0dXJuXG4gICAgICBzZXRJc1N1Ym1pdHRpbmcodHJ1ZSlcbiAgICAgIHNldEhhc0NsaWNrZWQodHJ1ZSlcblxuICAgICAgaWYgKG1vZGlmaWVkICYmICFvdmVycmlkZSkge1xuICAgICAgICB0b2dnbGVNb2RhbChtb2RhbFNsdWcpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBzYXZlRG9jdW1lbnQgPSBhc3luYyAoe1xuICAgICAgICBpZCxcbiAgICAgICAgZHVwbGljYXRlSUQgPSAnJyxcbiAgICAgICAgbG9jYWxlID0gJycsXG4gICAgICB9KTogUHJvbWlzZTxudWxsIHwgc3RyaW5nPiA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdHMuZ2V0KGAke3NlcnZlclVSTH0ke2FwaX0vJHtzbHVnfS8ke2lkfWAsIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgZGVwdGg6IDAsXG4gICAgICAgICAgICBkcmFmdDogdHJ1ZSxcbiAgICAgICAgICAgICdmYWxsYmFjay1sb2NhbGUnOiAnbm9uZScsXG4gICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgbGV0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcblxuICAgICAgICBkYXRhID0gYmFzZUJlZm9yZUR1cGxpY2F0ZSh7IGNvbGxlY3Rpb24sIGRhdGEsIGxvY2FsZSB9KVxuXG4gICAgICAgIGlmICh0eXBlb2YgY29sbGVjdGlvbi5hZG1pbi5ob29rcz8uYmVmb3JlRHVwbGljYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgZGF0YSA9IGF3YWl0IGNvbGxlY3Rpb24uYWRtaW4uaG9va3MuYmVmb3JlRHVwbGljYXRlKHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWR1cGxpY2F0ZUlEKSB7XG4gICAgICAgICAgaWYgKCdjcmVhdGVkQXQnIGluIGRhdGEpIGRlbGV0ZSBkYXRhLmNyZWF0ZWRBdFxuICAgICAgICAgIGlmICgndXBkYXRlZEF0JyBpbiBkYXRhKSBkZWxldGUgZGF0YS51cGRhdGVkQXRcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcXVlc3RzW2R1cGxpY2F0ZUlEID8gJ3BhdGNoJyA6ICdwb3N0J10oXG4gICAgICAgICAgYCR7c2VydmVyVVJMfSR7YXBpfS8ke3NsdWd9LyR7ZHVwbGljYXRlSUR9P2xvY2FsZT0ke2xvY2FsZX0mZmFsbGJhY2stbG9jYWxlPW5vbmVgLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGRhdGEpLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBqc29uID0gYXdhaXQgcmVzdWx0Lmpzb24oKVxuXG4gICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSAyMDEgfHwgcmVzdWx0LnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgcmV0dXJuIGpzb24uZG9jLmlkXG4gICAgICAgIH1cblxuICAgICAgICAvLyBvbmx5IHNob3cgdGhlIGVycm9yIGlmIHRoaXMgaXMgdGhlIGluaXRpYWwgcmVxdWVzdCBmYWlsaW5nXG4gICAgICAgIGlmICghZHVwbGljYXRlSUQpIHtcbiAgICAgICAgICBqc29uLmVycm9ycy5mb3JFYWNoKChlcnJvcikgPT4gdG9hc3QuZXJyb3IoZXJyb3IubWVzc2FnZSkpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgbGV0IGR1cGxpY2F0ZUlEOiBzdHJpbmdcbiAgICAgIGxldCBhYm9ydCA9IGZhbHNlXG4gICAgICBjb25zdCBsb2NhbGVFcnJvcnMgPSBbXVxuXG4gICAgICBpZiAobG9jYWxpemF0aW9uKSB7XG4gICAgICAgIGF3YWl0IGxvY2FsaXphdGlvbi5sb2NhbGVDb2Rlcy5yZWR1Y2UoYXN5bmMgKHByaW9yTG9jYWxlUGF0Y2gsIGxvY2FsZSkgPT4ge1xuICAgICAgICAgIGF3YWl0IHByaW9yTG9jYWxlUGF0Y2hcbiAgICAgICAgICBpZiAoYWJvcnQpIHJldHVyblxuICAgICAgICAgIGNvbnN0IGxvY2FsZVJlc3VsdCA9IGF3YWl0IHNhdmVEb2N1bWVudCh7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIGR1cGxpY2F0ZUlELFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgZHVwbGljYXRlSUQgPSBsb2NhbGVSZXN1bHQgfHwgZHVwbGljYXRlSURcbiAgICAgICAgICBpZiAoZHVwbGljYXRlSUQgJiYgIWxvY2FsZVJlc3VsdCkge1xuICAgICAgICAgICAgbG9jYWxlRXJyb3JzLnB1c2gobG9jYWxlKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWR1cGxpY2F0ZUlEKSB7XG4gICAgICAgICAgICBhYm9ydCA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZHVwbGljYXRlSUQgPSBhd2FpdCBzYXZlRG9jdW1lbnQoeyBpZCB9KVxuICAgICAgfVxuXG4gICAgICBpZiAoIWR1cGxpY2F0ZUlEKSB7XG4gICAgICAgIC8vIGRvY3VtZW50IHdhcyBub3Qgc2F2ZWQsIGVycm9yIHRvYXN0IHdhcyBkaXNwbGF5ZWRcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHRvYXN0LnN1Y2Nlc3MoXG4gICAgICAgIHQoJ3N1Y2Nlc3NmdWxseUR1cGxpY2F0ZWQnLCB7IGxhYmVsOiBnZXRUcmFuc2xhdGlvbihjb2xsZWN0aW9uLmxhYmVscy5zaW5ndWxhciwgaTE4bikgfSksXG4gICAgICAgIHsgYXV0b0Nsb3NlOiAzMDAwIH0sXG4gICAgICApXG5cbiAgICAgIGlmIChsb2NhbGVFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0b2FzdC5lcnJvcihcbiAgICAgICAgICBgXG4gICAgICAgICAgJHt0KCdlcnJvcjpsb2NhbGVzTm90U2F2ZWRfb3RoZXInLCB7IGNvdW50OiBsb2NhbGVFcnJvcnMubGVuZ3RoIH0pfVxuICAgICAgICAgICR7bG9jYWxlRXJyb3JzLmpvaW4oJywgJyl9XG4gICAgICAgICAgYCxcbiAgICAgICAgICB7IGF1dG9DbG9zZTogNTAwMCB9LFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIHNldE1vZGlmaWVkKGZhbHNlKVxuICAgICAgc2V0SXNTdWJtaXR0aW5nKGZhbHNlKVxuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgcHVzaCh7XG4gICAgICAgICAgcGF0aG5hbWU6IGAke2FkbWlufS9jb2xsZWN0aW9ucy8ke3NsdWd9LyR7ZHVwbGljYXRlSUR9YCxcbiAgICAgICAgfSlcbiAgICAgIH0sIDEwKVxuICAgIH0sXG4gICAgW1xuICAgICAgbW9kaWZpZWQsXG4gICAgICBsb2NhbGl6YXRpb24sXG4gICAgICB0LFxuICAgICAgaTE4bixcbiAgICAgIGNvbGxlY3Rpb24sXG4gICAgICBzZXRNb2RpZmllZCxcbiAgICAgIHRvZ2dsZU1vZGFsLFxuICAgICAgbW9kYWxTbHVnLFxuICAgICAgc2VydmVyVVJMLFxuICAgICAgYXBpLFxuICAgICAgc2x1ZyxcbiAgICAgIGlkLFxuICAgICAgcHVzaCxcbiAgICAgIGFkbWluLFxuICAgIF0sXG4gIClcblxuICBjb25zdCBjb25maXJtID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGhhbmRsZUNsaWNrKHRydWUpXG4gICAgc2V0SGFzQ2xpY2tlZChmYWxzZSlcbiAgfSwgW2hhbmRsZUNsaWNrXSlcblxuICByZXR1cm4gKFxuICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgIDxQb3B1cExpc3QuQnV0dG9uXG4gICAgICAgIGRpc2FibGVkPXtpc1N1Ym1pdHRpbmd9XG4gICAgICAgIGlkPVwiYWN0aW9uLWR1cGxpY2F0ZVwiXG4gICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUNsaWNrKGZhbHNlKX1cbiAgICAgID5cbiAgICAgICAge3QoJ2R1cGxpY2F0ZScpfVxuICAgICAgPC9Qb3B1cExpc3QuQnV0dG9uPlxuICAgICAge21vZGlmaWVkICYmIGhhc0NsaWNrZWQgJiYgKFxuICAgICAgICA8TW9kYWwgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19tb2RhbGB9IHNsdWc9e21vZGFsU2x1Z30+XG4gICAgICAgICAgPE1pbmltYWxUZW1wbGF0ZSBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX21vZGFsLXRlbXBsYXRlYH0+XG4gICAgICAgICAgICA8aDE+e3QoJ2NvbmZpcm1EdXBsaWNhdGlvbicpfTwvaDE+XG4gICAgICAgICAgICA8cD57dCgndW5zYXZlZENoYW5nZXNEdXBsaWNhdGUnKX08L3A+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGJ1dHRvblN0eWxlPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgaWQ9XCJjb25maXJtLWNhbmNlbFwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRvZ2dsZU1vZGFsKG1vZGFsU2x1Zyl9XG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dCgnY2FuY2VsJyl9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDxCdXR0b24gaWQ9XCJjb25maXJtLWR1cGxpY2F0ZVwiIG9uQ2xpY2s9e2NvbmZpcm19PlxuICAgICAgICAgICAgICB7dCgnZHVwbGljYXRlV2l0aG91dFNhdmluZycpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9NaW5pbWFsVGVtcGxhdGU+XG4gICAgICAgIDwvTW9kYWw+XG4gICAgICApfVxuICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgRHVwbGljYXRlXG4iXSwibmFtZXMiOlsiYmFzZUNsYXNzIiwiRHVwbGljYXRlIiwiaWQiLCJzbHVnIiwiY29sbGVjdGlvbiIsInB1c2giLCJ1c2VIaXN0b3J5IiwibW9kaWZpZWQiLCJ1c2VGb3JtTW9kaWZpZWQiLCJ0b2dnbGVNb2RhbCIsInVzZU1vZGFsIiwic2V0TW9kaWZpZWQiLCJ1c2VGb3JtIiwibG9jYWxpemF0aW9uIiwicm91dGVzIiwiYXBpIiwic2VydmVyVVJMIiwidXNlQ29uZmlnIiwiYWRtaW4iLCJoYXNDbGlja2VkIiwic2V0SGFzQ2xpY2tlZCIsInVzZVN0YXRlIiwiaXNTdWJtaXR0aW5nIiwic2V0SXNTdWJtaXR0aW5nIiwiaTE4biIsInQiLCJ1c2VUcmFuc2xhdGlvbiIsIm1vZGFsU2x1ZyIsImhhbmRsZUNsaWNrIiwidXNlQ2FsbGJhY2siLCJvdmVycmlkZSIsInNhdmVEb2N1bWVudCIsImR1cGxpY2F0ZUlEIiwibG9jYWxlIiwicmVzcG9uc2UiLCJyZXF1ZXN0cyIsImdldCIsImhlYWRlcnMiLCJsYW5ndWFnZSIsInBhcmFtcyIsImRlcHRoIiwiZHJhZnQiLCJkYXRhIiwianNvbiIsImJhc2VCZWZvcmVEdXBsaWNhdGUiLCJob29rcyIsImJlZm9yZUR1cGxpY2F0ZSIsImNyZWF0ZWRBdCIsInVwZGF0ZWRBdCIsInJlc3VsdCIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhdHVzIiwiZG9jIiwiZXJyb3JzIiwiZm9yRWFjaCIsImVycm9yIiwidG9hc3QiLCJtZXNzYWdlIiwiYWJvcnQiLCJsb2NhbGVFcnJvcnMiLCJsb2NhbGVDb2RlcyIsInJlZHVjZSIsInByaW9yTG9jYWxlUGF0Y2giLCJsb2NhbGVSZXN1bHQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInN1Y2Nlc3MiLCJsYWJlbCIsImdldFRyYW5zbGF0aW9uIiwibGFiZWxzIiwic2luZ3VsYXIiLCJhdXRvQ2xvc2UiLCJsZW5ndGgiLCJjb3VudCIsImpvaW4iLCJzZXRUaW1lb3V0IiwicGF0aG5hbWUiLCJjb25maXJtIiwiUmVhY3QiLCJGcmFnbWVudCIsIlBvcHVwTGlzdCIsIkJ1dHRvbiIsImRpc2FibGVkIiwib25DbGljayIsIk1vZGFsIiwiY2xhc3NOYW1lIiwiTWluaW1hbFRlbXBsYXRlIiwiaDEiLCJwIiwiYnV0dG9uU3R5bGUiLCJ0eXBlIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6Ijs7OzsrQkF1TkE7OztlQUFBOzs7dUJBdk5nQzsrREFDYTs4QkFDZDtnQ0FDSjsrQkFDTDtnQ0FJUztxQkFDTjt5QkFDZ0I7Z0VBQ2I7d0JBQ0Y7K0RBQ1A7eUVBQ1E7cUNBQ1M7UUFDN0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRVAsTUFBTUEsWUFBWTtBQUVsQixNQUFNQyxZQUE2QixDQUFDLEVBQUVDLEVBQUUsRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUU7SUFDMUQsTUFBTSxFQUFFQyxJQUFJLEVBQUUsR0FBR0MsSUFBQUEsMEJBQVU7SUFDM0IsTUFBTUMsV0FBV0MsSUFBQUEsd0JBQWU7SUFDaEMsTUFBTSxFQUFFQyxXQUFXLEVBQUUsR0FBR0MsSUFBQUEsZUFBUTtJQUNoQyxNQUFNLEVBQUVDLFdBQVcsRUFBRSxHQUFHQyxJQUFBQSxnQkFBTztJQUMvQixNQUFNLEVBQ0pDLFlBQVksRUFDWkMsUUFBUSxFQUFFQyxHQUFHLEVBQUUsRUFDZkMsU0FBUyxFQUNWLEdBQUdDLElBQUFBLGlCQUFTO0lBQ2IsTUFBTSxFQUNKSCxRQUFRLEVBQUVJLEtBQUssRUFBRSxFQUNsQixHQUFHRCxJQUFBQSxpQkFBUztJ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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateFileData.d.ts","sourceRoot":"","sources":["../../src/uploads/generateFileData.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAY,UAAU,EAAgC,MAAM,SAAS,CAAA;AAcjF,KAAK,IAAI,CAAC,CAAC,IAAI;IACb,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,WAAW,CAAC,EAAE,CAAC,CAAA;IACf,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,CAAA;AAED,KAAK,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB,CAAC,CAAA;AAEF,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"generateFileData.d.ts","sourceRoot":"","sources":["../../src/uploads/generateFileData.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAY,UAAU,EAAgC,MAAM,SAAS,CAAA;AAcjF,KAAK,IAAI,CAAC,CAAC,IAAI;IACb,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,WAAW,CAAC,EAAE,CAAC,CAAA;IACf,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,CAAA;AAED,KAAK,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB,CAAC,CAAA;AAEF,eAAO,MAAM,gBAAgB,iKAiT5B,CAAA"}
|
|
@@ -180,22 +180,51 @@ const generateFileData = async ({ collection: { config: collectionConfig }, conf
|
|
|
180
180
|
widthInPixels: uploadEdits.widthInPixels,
|
|
181
181
|
withMetadata
|
|
182
182
|
});
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
183
|
+
// Apply resize after cropping to ensure it conforms to resizeOptions
|
|
184
|
+
if (resizeOptions) {
|
|
185
|
+
const resizedAfterCrop = await (0, _sharp.default)(croppedImage).resize({
|
|
186
|
+
fit: resizeOptions?.fit || 'cover',
|
|
187
|
+
height: resizeOptions?.height,
|
|
188
|
+
position: resizeOptions?.position || 'center',
|
|
189
|
+
width: resizeOptions?.width
|
|
190
|
+
}).toBuffer({
|
|
191
|
+
resolveWithObject: true
|
|
192
|
+
});
|
|
193
|
+
filesToSave.push({
|
|
194
|
+
buffer: resizedAfterCrop.data,
|
|
195
|
+
path: `${staticPath}/${fsSafeName}`
|
|
196
|
+
});
|
|
197
|
+
fileForResize = {
|
|
198
|
+
...fileForResize,
|
|
199
|
+
data: resizedAfterCrop.data,
|
|
200
|
+
size: resizedAfterCrop.info.size
|
|
201
|
+
};
|
|
202
|
+
fileData.width = resizedAfterCrop.info.width;
|
|
203
|
+
fileData.height = resizedAfterCrop.info.height;
|
|
204
|
+
if (fileIsAnimatedType) {
|
|
205
|
+
const metadata = await sharpFile.metadata();
|
|
206
|
+
fileData.height = metadata.pages ? resizedAfterCrop.info.height / metadata.pages : resizedAfterCrop.info.height;
|
|
207
|
+
}
|
|
208
|
+
fileData.filesize = resizedAfterCrop.info.size;
|
|
209
|
+
} else {
|
|
210
|
+
// If resizeOptions is not present, just save the cropped image
|
|
211
|
+
filesToSave.push({
|
|
212
|
+
buffer: croppedImage,
|
|
213
|
+
path: `${staticPath}/${fsSafeName}`
|
|
214
|
+
});
|
|
215
|
+
fileForResize = {
|
|
216
|
+
...file,
|
|
217
|
+
data: croppedImage,
|
|
218
|
+
size: info.size
|
|
219
|
+
};
|
|
220
|
+
fileData.width = info.width;
|
|
221
|
+
fileData.height = info.height;
|
|
222
|
+
if (fileIsAnimatedType) {
|
|
223
|
+
const metadata = await sharpFile.metadata();
|
|
224
|
+
fileData.height = metadata.pages ? info.height / metadata.pages : info.height;
|
|
225
|
+
}
|
|
226
|
+
fileData.filesize = info.size;
|
|
197
227
|
}
|
|
198
|
-
fileData.filesize = info.size;
|
|
199
228
|
if (file.tempFilePath) {
|
|
200
229
|
await _fs.default.promises.writeFile(file.tempFilePath, croppedImage) // write fileBuffer to the temp path
|
|
201
230
|
;
|
|
@@ -291,4 +320,4 @@ const generateFileData = async ({ collection: { config: collectionConfig }, conf
|
|
|
291
320
|
return uploadEdits;
|
|
292
321
|
}
|
|
293
322
|
|
|
294
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2dlbmVyYXRlRmlsZURhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBVcGxvYWRlZEZpbGUgfSBmcm9tICdleHByZXNzLWZpbGV1cGxvYWQnXG5pbXBvcnQgdHlwZSB7IE91dHB1dEluZm8sIFNoYXJwLCBTaGFycE9wdGlvbnMgfSBmcm9tICdzaGFycCdcblxuaW1wb3J0IHsgZnJvbUJ1ZmZlciB9IGZyb20gJ2ZpbGUtdHlwZSdcbmltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCBta2RpcnAgZnJvbSAnbWtkaXJwJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBzYW5pdGl6ZSBmcm9tICdzYW5pdGl6ZS1maWxlbmFtZSdcbmltcG9ydCBzaGFycCBmcm9tICdzaGFycCdcblxuaW1wb3J0IHR5cGUgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb25maWcgfSBmcm9tICcuLi9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgRmlsZURhdGEsIEZpbGVUb1NhdmUsIFByb2JlZEltYWdlU2l6ZSwgVXBsb2FkRWRpdHMgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBGaWxlVXBsb2FkRXJyb3IsIE1pc3NpbmdGaWxlIH0gZnJvbSAnLi4vZXJyb3JzJ1xuaW1wb3J0IEZpbGVSZXRyaWV2YWxFcnJvciBmcm9tICcuLi9lcnJvcnMvRmlsZVJldHJpZXZhbEVycm9yJ1xuaW1wb3J0IGNhblJlc2l6ZUltYWdlIGZyb20gJy4vY2FuUmVzaXplSW1hZ2UnXG5pbXBvcnQgeyBjcm9wSW1hZ2UgfSBmcm9tICcuL2Nyb3BJbWFnZSdcbmltcG9ydCB7IGdldEV4dGVybmFsRmlsZSB9IGZyb20gJy4vZ2V0RXh0ZXJuYWxGaWxlJ1xuaW1wb3J0IGdldEZpbGVCeVBhdGggZnJvbSAnLi9nZXRGaWxlQnlQYXRoJ1xuaW1wb3J0IGdldEltYWdlU2l6ZSBmcm9tICcuL2dldEltYWdlU2l6ZSdcbmltcG9ydCBnZXRTYWZlRmlsZU5hbWUgZnJvbSAnLi9nZXRTYWZlRmlsZW5hbWUnXG5pbXBvcnQgcmVzaXplQW5kVHJhbnNmb3JtSW1hZ2VTaXplcyBmcm9tICcuL2ltYWdlUmVzaXplcidcbmltcG9ydCBpc0ltYWdlIGZyb20gJy4vaXNJbWFnZSdcbmltcG9ydCB7IG9wdGlvbmFsbHlBcHBlbmRNZXRhZGF0YSB9IGZyb20gJy4vb3B0aW9uYWxseUFwcGVuZE1ldGFkYXRhJ1xuXG50eXBlIEFyZ3M8VD4gPSB7XG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb25cbiAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWdcbiAgZGF0YTogVFxuICBvcGVyYXRpb246ICdjcmVhdGUnIHwgJ3VwZGF0ZSdcbiAgb3JpZ2luYWxEb2M/OiBUXG4gIG92ZXJ3cml0ZUV4aXN0aW5nRmlsZXM/OiBib29sZWFuXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgdGhyb3dPbk1pc3NpbmdGaWxlPzogYm9vbGVhblxufVxuXG50eXBlIFJlc3VsdDxUPiA9IFByb21pc2U8e1xuICBkYXRhOiBUXG4gIGZpbGVzOiBGaWxlVG9TYXZlW11cbn0+XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUZpbGVEYXRhID0gYXN5bmMgPFQ+KHtcbiAgY29sbGVjdGlvbjogeyBjb25maWc6IGNvbGxlY3Rpb25Db25maWcgfSxcbiAgY29uZmlnLFxuICBkYXRhLFxuICBvcGVyYXRpb24sXG4gIG9yaWdpbmFsRG9jLFxuICBvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzLFxuICByZXEsXG4gIHRocm93T25NaXNzaW5nRmlsZSxcbn06IEFyZ3M8VD4pOiBSZXN1bHQ8VD4gPT4ge1xuICBpZiAoIWNvbGxlY3Rpb25Db25maWcudXBsb2FkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGEsXG4gICAgICBmaWxlczogW10sXG4gICAgfVxuICB9XG5cbiAgbGV0IGZpbGUgPSByZXEuZmlsZXM/LmZpbGUgfHwgdW5kZWZpbmVkXG5cbiAgY29uc3QgdXBsb2FkRWRpdHMgPSBwYXJzZVVwbG9hZEVkaXRzRnJvbVJlcU9ySW5jb21pbmdEYXRhKHtcbiAgICBkYXRhLFxuICAgIG9wZXJhdGlvbixcbiAgICBvcmlnaW5hbERvYyxcbiAgICByZXEsXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIGRpc2FibGVMb2NhbFN0b3JhZ2UsXG4gICAgZm9jYWxQb2ludDogZm9jYWxQb2ludEVuYWJsZWQsXG4gICAgZm9ybWF0T3B0aW9ucyxcbiAgICBpbWFnZVNpemVzLFxuICAgIHJlc2l6ZU9wdGlvbnMsXG4gICAgc3RhdGljRGlyLFxuICAgIHRyaW1PcHRpb25zLFxuICAgIHdpdGhNZXRhZGF0YSxcbiAgfSA9IGNvbGxlY3Rpb25Db25maWcudXBsb2FkXG5cbiAgbGV0IHN0YXRpY1BhdGggPSBzdGF0aWNEaXJcbiAgaWYgKHN0YXRpY0Rpci5pbmRleE9mKCcvJykgIT09IDApIHtcbiAgICBzdGF0aWNQYXRoID0gcGF0aC5yZXNvbHZlKGNvbmZpZy5wYXRocy5jb25maWdEaXIsIHN0YXRpY0RpcilcbiAgfVxuXG4gIGlmICghZmlsZSAmJiB1cGxvYWRFZGl0cyAmJiBkYXRhKSB7XG4gICAgY29uc3QgeyBmaWxlbmFtZSwgdXJsIH0gPSBkYXRhIGFzIEZpbGVEYXRhXG5cbiAgICB0cnkge1xuICAgICAgaWYgKHVybCAmJiB1cmwuc3RhcnRzV2l0aCgnLycpICYmICFkaXNhYmxlTG9jYWxTdG9yYWdlKSB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gYCR7c3RhdGljUGF0aH0vJHtmaWxlbmFtZX1gXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZ2V0RmlsZUJ5UGF0aChmaWxlUGF0aClcbiAgICAgICAgZmlsZSA9IHJlc3BvbnNlIGFzIFVwbG9hZGVkRmlsZVxuICAgICAgICBvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzID0gdHJ1ZVxuICAgICAgfSBlbHNlIGlmIChmaWxlbmFtZSAmJiB1cmwpIHtcbiAgICAgICAgZmlsZSA9IChhd2FpdCBnZXRFeHRlcm5hbEZpbGUoe1xuICAgICAgICAgIGRhdGE6IGRhdGEgYXMgRmlsZURhdGEsXG4gICAgICAgICAgcmVxLFxuICAgICAgICAgIHVwbG9hZENvbmZpZzogY29sbGVjdGlvbkNvbmZpZy51cGxvYWQsXG4gICAgICAgIH0pKSBhcyBVcGxvYWRlZEZpbGVcbiAgICAgICAgb3ZlcndyaXRlRXhpc3RpbmdGaWxlcyA9IHRydWVcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRmlsZVJldHJpZXZhbEVycm9yKHJlcS50LCBlcnIubWVzc2FnZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoIWZpbGUpIHtcbiAgICBpZiAodGhyb3dPbk1pc3NpbmdGaWxlKSB0aHJvdyBuZXcgTWlzc2luZ0ZpbGUocmVxLnQpXG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YSxcbiAgICAgIGZpbGVzOiBbXSxcbiAgICB9XG4gIH1cblxuICBpZiAoIWRpc2FibGVMb2NhbFN0b3JhZ2UpIHtcbiAgICBta2RpcnAuc3luYyhzdGF0aWNQYXRoKVxuICB9XG5cbiAgbGV0IG5ld0RhdGEgPSBkYXRhXG4gIGNvbnN0IGZpbGVzVG9TYXZlOiBGaWxlVG9TYXZlW10gPSBbXVxuICBjb25zdCBmaWxlRGF0YTogUGFydGlhbDxGaWxlRGF0YT4gPSB7fVxuICBjb25zdCBmaWxlSXNBbmltYXRlZFR5cGUgPSBbJ2ltYWdlL2F2aWYnLCAnaW1hZ2UvZ2lmJywgJ2ltYWdlL3dlYnAnXS5pbmNsdWRlcyhmaWxlLm1pbWV0eXBlKVxuICBjb25zdCBjcm9wRGF0YSA9XG4gICAgdHlwZW9mIHVwbG9hZEVkaXRzID09PSAnb2JqZWN0JyAmJiAnY3JvcCcgaW4gdXBsb2FkRWRpdHMgPyB1cGxvYWRFZGl0cy5jcm9wIDogdW5kZWZpbmVkXG5cbiAgdHJ5IHtcbiAgICBjb25zdCBmaWxlU3VwcG9ydHNSZXNpemUgPSBjYW5SZXNpemVJbWFnZShmaWxlLm1pbWV0eXBlKVxuICAgIGxldCBmc1NhZmVOYW1lOiBzdHJpbmdcbiAgICBsZXQgc2hhcnBGaWxlOiBTaGFycCB8IHVuZGVmaW5lZFxuICAgIGxldCBkaW1lbnNpb25zOiBQcm9iZWRJbWFnZVNpemUgfCB1bmRlZmluZWRcbiAgICBsZXQgZmlsZUJ1ZmZlcjogeyBkYXRhOiBCdWZmZXI7IGluZm86IE91dHB1dEluZm8gfVxuICAgIGxldCBleHRcbiAgICBsZXQgbWltZTogc3RyaW5nXG4gICAgY29uc3QgZmlsZUhhc0FkanVzdG1lbnRzID1cbiAgICAgIGZpbGVTdXBwb3J0c1Jlc2l6ZSAmJlxuICAgICAgQm9vbGVhbihyZXNpemVPcHRpb25zIHx8IGZvcm1hdE9wdGlvbnMgfHwgaW1hZ2VTaXplcyB8fCB0cmltT3B0aW9ucyB8fCBmaWxlLnRlbXBGaWxlUGF0aClcblxuICAgIGNvbnN0IHNoYXJwT3B0aW9uczogU2hhcnBPcHRpb25zID0ge31cblxuICAgIGlmIChmaWxlSXNBbmltYXRlZFR5cGUpIHNoYXJwT3B0aW9ucy5hbmltYXRlZCA9IHRydWVcblxuICAgIGlmIChzaGFycCAmJiAoZmlsZUlzQW5pbWF0ZWRUeXBlIHx8IGZpbGVIYXNBZGp1c3RtZW50cykpIHtcbiAgICAgIGlmIChmaWxlLnRlbXBGaWxlUGF0aCkge1xuICAgICAgICBzaGFycEZpbGUgPSBzaGFycChmaWxlLnRlbXBGaWxlUGF0aCwgc2hhcnBPcHRpb25zKS5yb3RhdGUoKSAvLyBwYXNzIHJvdGF0ZSgpIHRvIGF1dG8tcm90YXRlIGJhc2VkIG9uIEVYSUYgZGF0YS4gaHR0cHM6Ly9naXRodWIuY29tL3BheWxvYWRjbXMvcGF5bG9hZC9wdWxsLzMwODFcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwKGZpbGUuZGF0YSwgc2hhcnBPcHRpb25zKS5yb3RhdGUoKSAvLyBwYXNzIHJvdGF0ZSgpIHRvIGF1dG8tcm90YXRlIGJhc2VkIG9uIEVYSUYgZGF0YS4gaHR0cHM6Ly9naXRodWIuY29tL3BheWxvYWRjbXMvcGF5bG9hZC9wdWxsLzMwODFcbiAgICAgIH1cblxuICAgICAgaWYgKGZpbGVIYXNBZGp1c3RtZW50cykge1xuICAgICAgICBpZiAocmVzaXplT3B0aW9ucykge1xuICAgICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwRmlsZS5yZXNpemUocmVzaXplT3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgICBpZiAoZm9ybWF0T3B0aW9ucykge1xuICAgICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwRmlsZS50b0Zvcm1hdChmb3JtYXRPcHRpb25zLmZvcm1hdCwgZm9ybWF0T3B0aW9ucy5vcHRpb25zKVxuICAgICAgICB9XG4gICAgICAgIGlmICh0cmltT3B0aW9ucykge1xuICAgICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwRmlsZS50cmltKHRyaW1PcHRpb25zKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZpbGVTdXBwb3J0c1Jlc2l6ZSB8fCBpc0ltYWdlKGZpbGUubWltZXR5cGUpKSB7XG4gICAgICBkaW1lbnNpb25zID0gYXdhaXQgZ2V0SW1hZ2VTaXplKGZpbGUpXG4gICAgICBmaWxlRGF0YS53aWR0aCA9IGRpbWVuc2lvbnMud2lkdGhcbiAgICAgIGZpbGVEYXRhLmhlaWdodCA9IGRpbWVuc2lvbnMuaGVpZ2h0XG4gICAgfVxuXG4gICAgaWYgKHNoYXJwRmlsZSkge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSBhd2FpdCBzaGFycEZpbGUubWV0YWRhdGEoKVxuICAgICAgc2hhcnBGaWxlID0gYXdhaXQgb3B0aW9uYWxseUFwcGVuZE1ldGFkYXRhKHtcbiAgICAgICAgcmVxLFxuICAgICAgICBzaGFycEZpbGUsXG4gICAgICAgIHdpdGhNZXRhZGF0YSxcbiAgICAgIH0pXG4gICAgICBmaWxlQnVmZmVyID0gYXdhaXQgc2hhcnBGaWxlLnRvQnVmZmVyKHsgcmVzb2x2ZVdpdGhPYmplY3Q6IHRydWUgfSlcbiAgICAgIDsoeyBleHQsIG1pbWUgfSA9IGF3YWl0IGZyb21CdWZmZXIoZmlsZUJ1ZmZlci5kYXRhKSkgLy8gVGhpcyBpcyBnZXR0aW5nIGFuIGluY29ycmVjdCBnaWYgaGVpZ2h0IGJhY2suXG4gICAgICBmaWxlRGF0YS53aWR0aCA9IGZpbGVCdWZmZXIuaW5mby53aWR0aFxuICAgICAgZmlsZURhdGEuaGVpZ2h0ID0gZmlsZUJ1ZmZlci5pbmZvLmhlaWdodFxuICAgICAgZmlsZURhdGEuZmlsZXNpemUgPSBmaWxlQnVmZmVyLmluZm8uc2l6ZVxuXG4gICAgICAvLyBBbmltYXRlZCBHSUZzICsgV2ViUCBhZ2dyZWdhdGUgdGhlIGhlaWdodCBmcm9tIGV2ZXJ5IGZyYW1lLCBzbyB3ZSBuZWVkIHRvIHVzZSBkaXZpZGUgYnkgbnVtYmVyIG9mIHBhZ2VzXG4gICAgICBpZiAobWV0YWRhdGEucGFnZXMpIHtcbiAgICAgICAgZmlsZURhdGEuaGVpZ2h0ID0gZmlsZUJ1ZmZlci5pbmZvLmhlaWdodCAvIG1ldGFkYXRhLnBhZ2VzXG4gICAgICAgIGZpbGVEYXRhLmZpbGVzaXplID0gZmlsZUJ1ZmZlci5kYXRhLmxlbmd0aFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtaW1lID0gZmlsZS5taW1ldHlwZVxuICAgICAgZmlsZURhdGEuZmlsZXNpemUgPSBmaWxlLnNpemVcblxuICAgICAgaWYgKGZpbGUubmFtZS5pbmNsdWRlcygnLicpKSB7XG4gICAgICAgIGV4dCA9IGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpLnNwbGl0KCc/JylbMF1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4dCA9ICcnXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRqdXN0IFNWRyBtaW1lIHR5cGUuIGZyb21CdWZmZXIgbW9kaWZpZXMgaXQuXG4gICAgaWYgKG1pbWUgPT09ICdhcHBsaWNhdGlvbi94bWwnICYmIGV4dCA9PT0gJ3N2ZycpIG1pbWUgPSAnaW1hZ2Uvc3ZnK3htbCdcbiAgICBmaWxlRGF0YS5taW1lVHlwZSA9IG1pbWVcblxuICAgIGNvbnN0IGJhc2VGaWxlbmFtZSA9IHNhbml0aXplKGZpbGUubmFtZS5zdWJzdHJpbmcoMCwgZmlsZS5uYW1lLmxhc3RJbmRleE9mKCcuJykpIHx8IGZpbGUubmFtZSlcbiAgICBmc1NhZmVOYW1lID0gYCR7YmFzZUZpbGVuYW1lfSR7ZXh0ID8gYC4ke2V4dH1gIDogJyd9YFxuXG4gICAgaWYgKCFvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzKSB7XG4gICAgICBmc1NhZmVOYW1lID0gYXdhaXQgZ2V0U2FmZUZpbGVOYW1lKHtcbiAgICAgICAgY29sbGVjdGlvblNsdWc6IGNvbGxlY3Rpb25Db25maWcuc2x1ZyxcbiAgICAgICAgZGVzaXJlZEZpbGVuYW1lOiBmc1NhZmVOYW1lLFxuICAgICAgICByZXEsXG4gICAgICAgIHN0YXRpY1BhdGgsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGZpbGVEYXRhLmZpbGVuYW1lID0gZnNTYWZlTmFtZVxuICAgIGxldCBmaWxlRm9yUmVzaXplID0gZmlsZVxuXG4gICAgaWYgKGNyb3BEYXRhKSB7XG4gICAgICBjb25zdCB7IGRhdGE6IGNyb3BwZWRJbWFnZSwgaW5mbyB9ID0gYXdhaXQgY3JvcEltYWdlKHtcbiAgICAgICAgY3JvcERhdGEsXG4gICAgICAgIGRpbWVuc2lvbnMsXG4gICAgICAgIGZpbGUsXG4gICAgICAgIGhlaWdodEluUGl4ZWxzOiB1cGxvYWRFZGl0cy5oZWlnaHRJblBpeGVscyxcbiAgICAgICAgcmVxLFxuICAgICAgICB3aWR0aEluUGl4ZWxzOiB1cGxvYWRFZGl0cy53aWR0aEluUGl4ZWxzLFxuICAgICAgICB3aXRoTWV0YWRhdGEsXG4gICAgICB9KVxuXG4gICAgICBmaWxlc1RvU2F2ZS5wdXNoKHtcbiAgICAgICAgYnVmZmVyOiBjcm9wcGVkSW1hZ2UsXG4gICAgICAgIHBhdGg6IGAke3N0YXRpY1BhdGh9LyR7ZnNTYWZlTmFtZX1gLFxuICAgICAgfSlcblxuICAgICAgZmlsZUZvclJlc2l6ZSA9IHtcbiAgICAgICAgLi4uZmlsZSxcbiAgICAgICAgZGF0YTogY3JvcHBlZEltYWdlLFxuICAgICAgICBzaXplOiBpbmZvLnNpemUsXG4gICAgICB9XG4gICAgICBmaWxlRGF0YS53aWR0aCA9IGluZm8ud2lkdGhcbiAgICAgIGZpbGVEYXRhLmhlaWdodCA9IGluZm8uaGVpZ2h0XG4gICAgICBpZiAoZmlsZUlzQW5pbWF0ZWRUeXBlKSB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgc2hhcnBGaWxlLm1ldGFkYXRhKClcbiAgICAgICAgZmlsZURhdGEuaGVpZ2h0ID0gbWV0YWRhdGEucGFnZXMgPyBpbmZvLmhlaWdodCAvIG1ldGFkYXRhLnBhZ2VzIDogaW5mby5oZWlnaHRcbiAgICAgIH1cbiAgICAgIGZpbGVEYXRhLmZpbGVzaXplID0gaW5mby5zaXplXG5cbiAgICAgIGlmIChmaWxlLnRlbXBGaWxlUGF0aCkge1xuICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUoZmlsZS50ZW1wRmlsZVBhdGgsIGNyb3BwZWRJbWFnZSkgLy8gd3JpdGUgZmlsZUJ1ZmZlciB0byB0aGUgdGVtcCBwYXRoXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXEuZmlsZXMuZmlsZSA9IGZpbGVGb3JSZXNpemVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZmlsZXNUb1NhdmUucHVzaCh7XG4gICAgICAgIGJ1ZmZlcjogZmlsZUJ1ZmZlcj8uZGF0YSB8fCBmaWxlLmRhdGEsXG4gICAgICAgIHBhdGg6IGAke3N0YXRpY1BhdGh9LyR7ZnNTYWZlTmFtZX1gLFxuICAgICAgfSlcblxuICAgICAgLy8gSWYgdXNpbmcgdGVtcCBmaWxlcyBhbmQgdGhlIGltYWdlIGlzIGJlaW5nIHJlc2l6ZWQsIHdyaXRlIHRoZSBmaWxlIHRvIHRoZSB0ZW1wIHBhdGhcbiAgICAgIGlmIChmaWxlQnVmZmVyPy5kYXRhIHx8IGZpbGUuZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChmaWxlLnRlbXBGaWxlUGF0aCkge1xuICAgICAgICAgIGF3YWl0IGZzLnByb21pc2VzLndyaXRlRmlsZShmaWxlLnRlbXBGaWxlUGF0aCwgZmlsZUJ1ZmZlcj8uZGF0YSB8fCBmaWxlLmRhdGEpIC8vIHdyaXRlIGZpbGVCdWZmZXIgdG8gdGhlIHRlbXAgcGF0aFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEFzc2lnbiB0aGUgX3Bvc3NpYmx5IG1vZGlmaWVkXyBmaWxlIHRvIHRoZSByZXF1ZXN0IG9iamVjdFxuICAgICAgICAgIHJlcS5maWxlcy5maWxlID0ge1xuICAgICAgICAgICAgLi4uZmlsZSxcbiAgICAgICAgICAgIGRhdGE6IGZpbGVCdWZmZXI/LmRhdGEgfHwgZmlsZS5kYXRhLFxuICAgICAgICAgICAgc2l6ZTogZmlsZUJ1ZmZlcj8uaW5mby5zaXplLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmaWxlU3VwcG9ydHNSZXNpemUgJiYgKEFycmF5LmlzQXJyYXkoaW1hZ2VTaXplcykgfHwgZm9jYWxQb2ludEVuYWJsZWQgIT09IGZhbHNlKSkge1xuICAgICAgcmVxLnBheWxvYWRVcGxvYWRTaXplcyA9IHt9XG4gICAgICBjb25zdCB7IGZvY2FsUG9pbnQsIHNpemVEYXRhLCBzaXplc1RvU2F2ZSB9ID0gYXdhaXQgcmVzaXplQW5kVHJhbnNmb3JtSW1hZ2VTaXplcyh7XG4gICAgICAgIGNvbmZpZzogY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgICAgZGltZW5zaW9uczogIWNyb3BEYXRhXG4gICAgICAgICAgPyBkaW1lbnNpb25zXG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIC4uLmRpbWVuc2lvbnMsXG4gICAgICAgICAgICAgIGhlaWdodDogZmlsZURhdGEuaGVpZ2h0LFxuICAgICAgICAgICAgICB3aWR0aDogZmlsZURhdGEud2lkdGgsXG4gICAgICAgICAgICB9LFxuICAgICAgICBmaWxlOiBmaWxlRm9yUmVzaXplLFxuICAgICAgICBtaW1lVHlwZTogZmlsZURhdGEubWltZVR5cGUsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2F2ZWRGaWxlbmFtZTogZnNTYWZlTmFtZSB8fCBmaWxlLm5hbWUsXG4gICAgICAgIHN0YXRpY1BhdGgsXG4gICAgICAgIHVwbG9hZEVkaXRzLFxuICAgICAgICB3aXRoTWV0YWRhdGEsXG4gICAgICB9KVxuXG4gICAgICBmaWxlRGF0YS5zaXplcyA9IHNpemVEYXRhXG4gICAgICBmaWxlRGF0YS5mb2NhbFggPSBmb2NhbFBvaW50Py54XG4gICAgICBmaWxlRGF0YS5mb2NhbFkgPSBmb2NhbFBvaW50Py55XG4gICAgICBmaWxlc1RvU2F2ZS5wdXNoKC4uLnNpemVzVG9TYXZlKVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmVxLnBheWxvYWQubG9nZ2VyLmVycm9yKHsgZXJyLCBtc2c6ICdFcnJvciB1cGxvYWRpbmcgZmlsZScgfSlcbiAgICB0aHJvdyBuZXcgRmlsZVVwbG9hZEVycm9yKHJlcS50KVxuICB9XG5cbiAgbmV3RGF0YSA9IHtcbiAgICAuLi5uZXdEYXRhLFxuICAgIC4uLmZpbGVEYXRhLFxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkYXRhOiBuZXdEYXRhLFxuICAgIGZpbGVzOiBmaWxlc1RvU2F2ZSxcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlIHVwbG9hZCBlZGl0cyBmcm9tIHJlcSBvciBpbmNvbWluZyBkYXRhXG4gKi9cbmZ1bmN0aW9uIHBhcnNlVXBsb2FkRWRpdHNGcm9tUmVxT3JJbmNvbWluZ0RhdGEoYXJnczoge1xuICBkYXRhOiB1bmtub3duXG4gIG9wZXJhdGlvbjogJ2NyZWF0ZScgfCAndXBkYXRlJ1xuICBvcmlnaW5hbERvYzogdW5rbm93blxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG59KTogVXBsb2FkRWRpdHMge1xuICBjb25zdCB7IGRhdGEsIG9wZXJhdGlvbiwgb3JpZ2luYWxEb2MsIHJlcSB9ID0gYXJnc1xuXG4gIC8vIEdldCBpbnRlbmRlZCBmb2NhbCBwb2ludCBjaGFuZ2UgZnJvbSBxdWVyeSBzdHJpbmcgb3IgaW5jb21pbmcgZGF0YVxuICBjb25zdCB1cGxvYWRFZGl0cyA9XG4gICAgcmVxLnF1ZXJ5Py51cGxvYWRFZGl0cyAmJiB0eXBlb2YgcmVxLnF1ZXJ5LnVwbG9hZEVkaXRzID09PSAnb2JqZWN0J1xuICAgICAgPyAocmVxLnF1ZXJ5LnVwbG9hZEVkaXRzIGFzIFVwbG9hZEVkaXRzKVxuICAgICAgOiB7fVxuXG4gIGlmICh1cGxvYWRFZGl0cy5mb2NhbFBvaW50KSByZXR1cm4gdXBsb2FkRWRpdHNcblxuICBjb25zdCBpbmNvbWluZ0RhdGEgPSBkYXRhIGFzIEZpbGVEYXRhXG4gIGNvbnN0IG9yaWdEb2MgPSBvcmlnaW5hbERvYyBhcyBGaWxlRGF0YVxuXG4gIC8vIElmIG5vIGNoYW5nZSBpbiBmb2NhbCBwb2ludCwgcmV0dXJuIHVuZGVmaW5lZC5cbiAgLy8gVGhpcyBwcmV2ZW50cyBhIHJlZm9jYWwgb3BlcmF0aW9uIHRyaWdnZXJlZCBmcm9tIGFkbWluLCBiZWNhdXNlIGl0IGFsd2F5cyBzZW5kcyB0aGUgZm9jYWwgcG9pbnQuXG4gIGlmIChvcmlnRG9jICYmIGluY29taW5nRGF0YS5mb2NhbFggPT09IG9yaWdEb2MuZm9jYWxYICYmIGluY29taW5nRGF0YS5mb2NhbFkgPT09IG9yaWdEb2MuZm9jYWxZKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgaWYgKGluY29taW5nRGF0YS5mb2NhbFggJiYgaW5jb21pbmdEYXRhLmZvY2FsWSkge1xuICAgIHVwbG9hZEVkaXRzLmZvY2FsUG9pbnQgPSB7XG4gICAgICB4OiBpbmNvbWluZ0RhdGEuZm9jYWxYLFxuICAgICAgeTogaW5jb21pbmdEYXRhLmZvY2FsWSxcbiAgICB9XG4gICAgcmV0dXJuIHVwbG9hZEVkaXRzXG4gIH1cblxuICAvLyBJZiBubyBmb2NhbCBwb2ludCBpcyBzZXQsIGRlZmF1bHQgdG8gY2VudGVyXG4gIGlmIChvcGVyYXRpb24gPT09ICdjcmVhdGUnKSB7XG4gICAgdXBsb2FkRWRpdHMuZm9jYWxQb2ludCA9IHtcbiAgICAgIHg6IDUwLFxuICAgICAgeTogNTAsXG4gICAgfVxuICB9XG4gIHJldHVybiB1cGxvYWRFZGl0c1xufVxuIl0sIm5hbWVzIjpbImdlbmVyYXRlRmlsZURhdGEiLCJjb2xsZWN0aW9uIiwiY29uZmlnIiwiY29sbGVjdGlvbkNvbmZpZyIsImRhdGEiLCJvcGVyYXRpb24iLCJvcmlnaW5hbERvYyIsIm92ZXJ3cml0ZUV4aXN0aW5nRmlsZXMiLCJyZXEiLCJ0aHJvd09uTWlzc2luZ0ZpbGUiLCJ1cGxvYWQiLCJmaWxlcyIsImZpbGUiLCJ1bmRlZmluZWQiLCJ1cGxvYWRFZGl0cyIsInBhcnNlVXBsb2FkRWRpdHNGcm9tUmVxT3JJbmNvbWluZ0RhdGEiLCJkaXNhYmxlTG9jYWxTdG9yYWdlIiwiZm9jYWxQb2ludCIsImZvY2FsUG9pbnRFbmFibGVkIiwiZm9ybWF0T3B0aW9ucyIsImltYWdlU2l6ZXMiLCJyZXNpemVPcHRpb25zIiwic3RhdGljRGlyIiwidHJpbU9wdGlvbnMiLCJ3aXRoTWV0YWRhdGEiLCJzdGF0aWNQYXRoIiwiaW5kZXhPZiIsInBhdGgiLCJyZXNvbHZlIiwicGF0aHMiLCJjb25maWdEaXIiLCJmaWxlbmFtZSIsInVybCIsInN0YXJ0c1dpdGgiLCJmaWxlUGF0aCIsInJlc3BvbnNlIiwiZ2V0RmlsZUJ5UGF0aCIsImdldEV4dGVybmFsRmlsZSIsInVwbG9hZENvbmZpZyIsImVyciIsIkVycm9yIiwiRmlsZVJldHJpZXZhbEVycm9yIiwidCIsIm1lc3NhZ2UiLCJNaXNzaW5nRmlsZSIsIm1rZGlycCIsInN5bmMiLCJuZXdEYXRhIiwiZmlsZXNUb1NhdmUiLCJmaWxlRGF0YSIsImZpbGVJc0FuaW1hdGVkVHlwZSIsImluY2x1ZGVzIiwibWltZXR5cGUiLCJjcm9wRGF0YSIsImNyb3AiLCJmaWxlU3VwcG9ydHNSZXNpemUiLCJjYW5SZXNpemVJbWFnZSIsImZzU2FmZU5hbWUiLCJzaGFycEZpbGUiLCJkaW1lbnNpb25zIiwiZmlsZUJ1ZmZlciIsImV4dCIsIm1pbWUiLCJmaWxlSGFzQWRqdXN0bWVudHMiLCJCb29sZWFuIiwidGVtcEZpbGVQYXRoIiwic2hhcnBPcHRpb25zIiwiYW5pbWF0ZWQiLCJzaGFycCIsInJvdGF0ZSIsInJlc2l6ZSIsInRvRm9ybWF0IiwiZm9ybWF0Iiwib3B0aW9ucyIsInRyaW0iLCJpc0ltYWdlIiwiZ2V0SW1hZ2VTaXplIiwid2lkdGgiLCJoZWlnaHQiLCJtZXRhZGF0YSIsIm9wdGlvbmFsbHlBcHBlbmRNZXRhZGF0YSIsInRvQnVmZmVyIiwicmVzb2x2ZVdpdGhPYmplY3QiLCJmcm9tQnVmZmVyIiwiaW5mbyIsImZpbGVzaXplIiwic2l6ZSIsInBhZ2VzIiwibGVuZ3RoIiwibmFtZSIsInNwbGl0IiwicG9wIiwibWltZVR5cGUiLCJiYXNlRmlsZW5hbWUiLCJzYW5pdGl6ZSIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwiZ2V0U2FmZUZpbGVOYW1lIiwiY29sbGVjdGlvblNsdWciLCJzbHVnIiwiZGVzaXJlZEZpbGVuYW1lIiwiZmlsZUZvclJlc2l6ZSIsImNyb3BwZWRJbWFnZSIsImNyb3BJbWFnZSIsImhlaWdodEluUGl4ZWxzIiwid2lkdGhJblBpeGVscyIsInB1c2giLCJidWZmZXIiLCJmcyIsInByb21pc2VzIiwid3JpdGVGaWxlIiwiQXJyYXkiLCJpc0FycmF5IiwicGF5bG9hZFVwbG9hZFNpemVzIiwic2l6ZURhdGEiLCJzaXplc1RvU2F2ZSIsInJlc2l6ZUFuZFRyYW5zZm9ybUltYWdlU2l6ZXMiLCJzYXZlZEZpbGVuYW1lIiwic2l6ZXMiLCJmb2NhbFgiLCJ4IiwiZm9jYWxZIiwieSIsInBheWxvYWQiLCJsb2dnZXIiLCJlcnJvciIsIm1zZyIsIkZpbGVVcGxvYWRFcnJvciIsImFyZ3MiLCJxdWVyeSIsImluY29taW5nRGF0YSIsIm9yaWdEb2MiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7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
|
|
323
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2dlbmVyYXRlRmlsZURhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBVcGxvYWRlZEZpbGUgfSBmcm9tICdleHByZXNzLWZpbGV1cGxvYWQnXG5pbXBvcnQgdHlwZSB7IE91dHB1dEluZm8sIFNoYXJwLCBTaGFycE9wdGlvbnMgfSBmcm9tICdzaGFycCdcblxuaW1wb3J0IHsgZnJvbUJ1ZmZlciB9IGZyb20gJ2ZpbGUtdHlwZSdcbmltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCBta2RpcnAgZnJvbSAnbWtkaXJwJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBzYW5pdGl6ZSBmcm9tICdzYW5pdGl6ZS1maWxlbmFtZSdcbmltcG9ydCBzaGFycCBmcm9tICdzaGFycCdcblxuaW1wb3J0IHR5cGUgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb25maWcgfSBmcm9tICcuLi9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgRmlsZURhdGEsIEZpbGVUb1NhdmUsIFByb2JlZEltYWdlU2l6ZSwgVXBsb2FkRWRpdHMgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBGaWxlVXBsb2FkRXJyb3IsIE1pc3NpbmdGaWxlIH0gZnJvbSAnLi4vZXJyb3JzJ1xuaW1wb3J0IEZpbGVSZXRyaWV2YWxFcnJvciBmcm9tICcuLi9lcnJvcnMvRmlsZVJldHJpZXZhbEVycm9yJ1xuaW1wb3J0IGNhblJlc2l6ZUltYWdlIGZyb20gJy4vY2FuUmVzaXplSW1hZ2UnXG5pbXBvcnQgeyBjcm9wSW1hZ2UgfSBmcm9tICcuL2Nyb3BJbWFnZSdcbmltcG9ydCB7IGdldEV4dGVybmFsRmlsZSB9IGZyb20gJy4vZ2V0RXh0ZXJuYWxGaWxlJ1xuaW1wb3J0IGdldEZpbGVCeVBhdGggZnJvbSAnLi9nZXRGaWxlQnlQYXRoJ1xuaW1wb3J0IGdldEltYWdlU2l6ZSBmcm9tICcuL2dldEltYWdlU2l6ZSdcbmltcG9ydCBnZXRTYWZlRmlsZU5hbWUgZnJvbSAnLi9nZXRTYWZlRmlsZW5hbWUnXG5pbXBvcnQgcmVzaXplQW5kVHJhbnNmb3JtSW1hZ2VTaXplcyBmcm9tICcuL2ltYWdlUmVzaXplcidcbmltcG9ydCBpc0ltYWdlIGZyb20gJy4vaXNJbWFnZSdcbmltcG9ydCB7IG9wdGlvbmFsbHlBcHBlbmRNZXRhZGF0YSB9IGZyb20gJy4vb3B0aW9uYWxseUFwcGVuZE1ldGFkYXRhJ1xuXG50eXBlIEFyZ3M8VD4gPSB7XG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb25cbiAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWdcbiAgZGF0YTogVFxuICBvcGVyYXRpb246ICdjcmVhdGUnIHwgJ3VwZGF0ZSdcbiAgb3JpZ2luYWxEb2M/OiBUXG4gIG92ZXJ3cml0ZUV4aXN0aW5nRmlsZXM/OiBib29sZWFuXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgdGhyb3dPbk1pc3NpbmdGaWxlPzogYm9vbGVhblxufVxuXG50eXBlIFJlc3VsdDxUPiA9IFByb21pc2U8e1xuICBkYXRhOiBUXG4gIGZpbGVzOiBGaWxlVG9TYXZlW11cbn0+XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUZpbGVEYXRhID0gYXN5bmMgPFQ+KHtcbiAgY29sbGVjdGlvbjogeyBjb25maWc6IGNvbGxlY3Rpb25Db25maWcgfSxcbiAgY29uZmlnLFxuICBkYXRhLFxuICBvcGVyYXRpb24sXG4gIG9yaWdpbmFsRG9jLFxuICBvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzLFxuICByZXEsXG4gIHRocm93T25NaXNzaW5nRmlsZSxcbn06IEFyZ3M8VD4pOiBSZXN1bHQ8VD4gPT4ge1xuICBpZiAoIWNvbGxlY3Rpb25Db25maWcudXBsb2FkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGEsXG4gICAgICBmaWxlczogW10sXG4gICAgfVxuICB9XG5cbiAgbGV0IGZpbGUgPSByZXEuZmlsZXM/LmZpbGUgfHwgdW5kZWZpbmVkXG5cbiAgY29uc3QgdXBsb2FkRWRpdHMgPSBwYXJzZVVwbG9hZEVkaXRzRnJvbVJlcU9ySW5jb21pbmdEYXRhKHtcbiAgICBkYXRhLFxuICAgIG9wZXJhdGlvbixcbiAgICBvcmlnaW5hbERvYyxcbiAgICByZXEsXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIGRpc2FibGVMb2NhbFN0b3JhZ2UsXG4gICAgZm9jYWxQb2ludDogZm9jYWxQb2ludEVuYWJsZWQsXG4gICAgZm9ybWF0T3B0aW9ucyxcbiAgICBpbWFnZVNpemVzLFxuICAgIHJlc2l6ZU9wdGlvbnMsXG4gICAgc3RhdGljRGlyLFxuICAgIHRyaW1PcHRpb25zLFxuICAgIHdpdGhNZXRhZGF0YSxcbiAgfSA9IGNvbGxlY3Rpb25Db25maWcudXBsb2FkXG5cbiAgbGV0IHN0YXRpY1BhdGggPSBzdGF0aWNEaXJcbiAgaWYgKHN0YXRpY0Rpci5pbmRleE9mKCcvJykgIT09IDApIHtcbiAgICBzdGF0aWNQYXRoID0gcGF0aC5yZXNvbHZlKGNvbmZpZy5wYXRocy5jb25maWdEaXIsIHN0YXRpY0RpcilcbiAgfVxuXG4gIGlmICghZmlsZSAmJiB1cGxvYWRFZGl0cyAmJiBkYXRhKSB7XG4gICAgY29uc3QgeyBmaWxlbmFtZSwgdXJsIH0gPSBkYXRhIGFzIEZpbGVEYXRhXG5cbiAgICB0cnkge1xuICAgICAgaWYgKHVybCAmJiB1cmwuc3RhcnRzV2l0aCgnLycpICYmICFkaXNhYmxlTG9jYWxTdG9yYWdlKSB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gYCR7c3RhdGljUGF0aH0vJHtmaWxlbmFtZX1gXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZ2V0RmlsZUJ5UGF0aChmaWxlUGF0aClcbiAgICAgICAgZmlsZSA9IHJlc3BvbnNlIGFzIFVwbG9hZGVkRmlsZVxuICAgICAgICBvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzID0gdHJ1ZVxuICAgICAgfSBlbHNlIGlmIChmaWxlbmFtZSAmJiB1cmwpIHtcbiAgICAgICAgZmlsZSA9IChhd2FpdCBnZXRFeHRlcm5hbEZpbGUoe1xuICAgICAgICAgIGRhdGE6IGRhdGEgYXMgRmlsZURhdGEsXG4gICAgICAgICAgcmVxLFxuICAgICAgICAgIHVwbG9hZENvbmZpZzogY29sbGVjdGlvbkNvbmZpZy51cGxvYWQsXG4gICAgICAgIH0pKSBhcyBVcGxvYWRlZEZpbGVcbiAgICAgICAgb3ZlcndyaXRlRXhpc3RpbmdGaWxlcyA9IHRydWVcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRmlsZVJldHJpZXZhbEVycm9yKHJlcS50LCBlcnIubWVzc2FnZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoIWZpbGUpIHtcbiAgICBpZiAodGhyb3dPbk1pc3NpbmdGaWxlKSB0aHJvdyBuZXcgTWlzc2luZ0ZpbGUocmVxLnQpXG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YSxcbiAgICAgIGZpbGVzOiBbXSxcbiAgICB9XG4gIH1cblxuICBpZiAoIWRpc2FibGVMb2NhbFN0b3JhZ2UpIHtcbiAgICBta2RpcnAuc3luYyhzdGF0aWNQYXRoKVxuICB9XG5cbiAgbGV0IG5ld0RhdGEgPSBkYXRhXG4gIGNvbnN0IGZpbGVzVG9TYXZlOiBGaWxlVG9TYXZlW10gPSBbXVxuICBjb25zdCBmaWxlRGF0YTogUGFydGlhbDxGaWxlRGF0YT4gPSB7fVxuICBjb25zdCBmaWxlSXNBbmltYXRlZFR5cGUgPSBbJ2ltYWdlL2F2aWYnLCAnaW1hZ2UvZ2lmJywgJ2ltYWdlL3dlYnAnXS5pbmNsdWRlcyhmaWxlLm1pbWV0eXBlKVxuICBjb25zdCBjcm9wRGF0YSA9XG4gICAgdHlwZW9mIHVwbG9hZEVkaXRzID09PSAnb2JqZWN0JyAmJiAnY3JvcCcgaW4gdXBsb2FkRWRpdHMgPyB1cGxvYWRFZGl0cy5jcm9wIDogdW5kZWZpbmVkXG5cbiAgdHJ5IHtcbiAgICBjb25zdCBmaWxlU3VwcG9ydHNSZXNpemUgPSBjYW5SZXNpemVJbWFnZShmaWxlLm1pbWV0eXBlKVxuICAgIGxldCBmc1NhZmVOYW1lOiBzdHJpbmdcbiAgICBsZXQgc2hhcnBGaWxlOiBTaGFycCB8IHVuZGVmaW5lZFxuICAgIGxldCBkaW1lbnNpb25zOiBQcm9iZWRJbWFnZVNpemUgfCB1bmRlZmluZWRcbiAgICBsZXQgZmlsZUJ1ZmZlcjogeyBkYXRhOiBCdWZmZXI7IGluZm86IE91dHB1dEluZm8gfVxuICAgIGxldCBleHRcbiAgICBsZXQgbWltZTogc3RyaW5nXG4gICAgY29uc3QgZmlsZUhhc0FkanVzdG1lbnRzID1cbiAgICAgIGZpbGVTdXBwb3J0c1Jlc2l6ZSAmJlxuICAgICAgQm9vbGVhbihyZXNpemVPcHRpb25zIHx8IGZvcm1hdE9wdGlvbnMgfHwgaW1hZ2VTaXplcyB8fCB0cmltT3B0aW9ucyB8fCBmaWxlLnRlbXBGaWxlUGF0aClcblxuICAgIGNvbnN0IHNoYXJwT3B0aW9uczogU2hhcnBPcHRpb25zID0ge31cblxuICAgIGlmIChmaWxlSXNBbmltYXRlZFR5cGUpIHNoYXJwT3B0aW9ucy5hbmltYXRlZCA9IHRydWVcblxuICAgIGlmIChzaGFycCAmJiAoZmlsZUlzQW5pbWF0ZWRUeXBlIHx8IGZpbGVIYXNBZGp1c3RtZW50cykpIHtcbiAgICAgIGlmIChmaWxlLnRlbXBGaWxlUGF0aCkge1xuICAgICAgICBzaGFycEZpbGUgPSBzaGFycChmaWxlLnRlbXBGaWxlUGF0aCwgc2hhcnBPcHRpb25zKS5yb3RhdGUoKSAvLyBwYXNzIHJvdGF0ZSgpIHRvIGF1dG8tcm90YXRlIGJhc2VkIG9uIEVYSUYgZGF0YS4gaHR0cHM6Ly9naXRodWIuY29tL3BheWxvYWRjbXMvcGF5bG9hZC9wdWxsLzMwODFcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwKGZpbGUuZGF0YSwgc2hhcnBPcHRpb25zKS5yb3RhdGUoKSAvLyBwYXNzIHJvdGF0ZSgpIHRvIGF1dG8tcm90YXRlIGJhc2VkIG9uIEVYSUYgZGF0YS4gaHR0cHM6Ly9naXRodWIuY29tL3BheWxvYWRjbXMvcGF5bG9hZC9wdWxsLzMwODFcbiAgICAgIH1cblxuICAgICAgaWYgKGZpbGVIYXNBZGp1c3RtZW50cykge1xuICAgICAgICBpZiAocmVzaXplT3B0aW9ucykge1xuICAgICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwRmlsZS5yZXNpemUocmVzaXplT3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgICBpZiAoZm9ybWF0T3B0aW9ucykge1xuICAgICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwRmlsZS50b0Zvcm1hdChmb3JtYXRPcHRpb25zLmZvcm1hdCwgZm9ybWF0T3B0aW9ucy5vcHRpb25zKVxuICAgICAgICB9XG4gICAgICAgIGlmICh0cmltT3B0aW9ucykge1xuICAgICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwRmlsZS50cmltKHRyaW1PcHRpb25zKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZpbGVTdXBwb3J0c1Jlc2l6ZSB8fCBpc0ltYWdlKGZpbGUubWltZXR5cGUpKSB7XG4gICAgICBkaW1lbnNpb25zID0gYXdhaXQgZ2V0SW1hZ2VTaXplKGZpbGUpXG4gICAgICBmaWxlRGF0YS53aWR0aCA9IGRpbWVuc2lvbnMud2lkdGhcbiAgICAgIGZpbGVEYXRhLmhlaWdodCA9IGRpbWVuc2lvbnMuaGVpZ2h0XG4gICAgfVxuXG4gICAgaWYgKHNoYXJwRmlsZSkge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSBhd2FpdCBzaGFycEZpbGUubWV0YWRhdGEoKVxuICAgICAgc2hhcnBGaWxlID0gYXdhaXQgb3B0aW9uYWxseUFwcGVuZE1ldGFkYXRhKHtcbiAgICAgICAgcmVxLFxuICAgICAgICBzaGFycEZpbGUsXG4gICAgICAgIHdpdGhNZXRhZGF0YSxcbiAgICAgIH0pXG4gICAgICBmaWxlQnVmZmVyID0gYXdhaXQgc2hhcnBGaWxlLnRvQnVmZmVyKHsgcmVzb2x2ZVdpdGhPYmplY3Q6IHRydWUgfSlcbiAgICAgIDsoeyBleHQsIG1pbWUgfSA9IGF3YWl0IGZyb21CdWZmZXIoZmlsZUJ1ZmZlci5kYXRhKSkgLy8gVGhpcyBpcyBnZXR0aW5nIGFuIGluY29ycmVjdCBnaWYgaGVpZ2h0IGJhY2suXG4gICAgICBmaWxlRGF0YS53aWR0aCA9IGZpbGVCdWZmZXIuaW5mby53aWR0aFxuICAgICAgZmlsZURhdGEuaGVpZ2h0ID0gZmlsZUJ1ZmZlci5pbmZvLmhlaWdodFxuICAgICAgZmlsZURhdGEuZmlsZXNpemUgPSBmaWxlQnVmZmVyLmluZm8uc2l6ZVxuXG4gICAgICAvLyBBbmltYXRlZCBHSUZzICsgV2ViUCBhZ2dyZWdhdGUgdGhlIGhlaWdodCBmcm9tIGV2ZXJ5IGZyYW1lLCBzbyB3ZSBuZWVkIHRvIHVzZSBkaXZpZGUgYnkgbnVtYmVyIG9mIHBhZ2VzXG4gICAgICBpZiAobWV0YWRhdGEucGFnZXMpIHtcbiAgICAgICAgZmlsZURhdGEuaGVpZ2h0ID0gZmlsZUJ1ZmZlci5pbmZvLmhlaWdodCAvIG1ldGFkYXRhLnBhZ2VzXG4gICAgICAgIGZpbGVEYXRhLmZpbGVzaXplID0gZmlsZUJ1ZmZlci5kYXRhLmxlbmd0aFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtaW1lID0gZmlsZS5taW1ldHlwZVxuICAgICAgZmlsZURhdGEuZmlsZXNpemUgPSBmaWxlLnNpemVcblxuICAgICAgaWYgKGZpbGUubmFtZS5pbmNsdWRlcygnLicpKSB7XG4gICAgICAgIGV4dCA9IGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpLnNwbGl0KCc/JylbMF1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4dCA9ICcnXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRqdXN0IFNWRyBtaW1lIHR5cGUuIGZyb21CdWZmZXIgbW9kaWZpZXMgaXQuXG4gICAgaWYgKG1pbWUgPT09ICdhcHBsaWNhdGlvbi94bWwnICYmIGV4dCA9PT0gJ3N2ZycpIG1pbWUgPSAnaW1hZ2Uvc3ZnK3htbCdcbiAgICBmaWxlRGF0YS5taW1lVHlwZSA9IG1pbWVcblxuICAgIGNvbnN0IGJhc2VGaWxlbmFtZSA9IHNhbml0aXplKGZpbGUubmFtZS5zdWJzdHJpbmcoMCwgZmlsZS5uYW1lLmxhc3RJbmRleE9mKCcuJykpIHx8IGZpbGUubmFtZSlcbiAgICBmc1NhZmVOYW1lID0gYCR7YmFzZUZpbGVuYW1lfSR7ZXh0ID8gYC4ke2V4dH1gIDogJyd9YFxuXG4gICAgaWYgKCFvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzKSB7XG4gICAgICBmc1NhZmVOYW1lID0gYXdhaXQgZ2V0U2FmZUZpbGVOYW1lKHtcbiAgICAgICAgY29sbGVjdGlvblNsdWc6IGNvbGxlY3Rpb25Db25maWcuc2x1ZyxcbiAgICAgICAgZGVzaXJlZEZpbGVuYW1lOiBmc1NhZmVOYW1lLFxuICAgICAgICByZXEsXG4gICAgICAgIHN0YXRpY1BhdGgsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGZpbGVEYXRhLmZpbGVuYW1lID0gZnNTYWZlTmFtZVxuICAgIGxldCBmaWxlRm9yUmVzaXplID0gZmlsZVxuXG4gICAgaWYgKGNyb3BEYXRhKSB7XG4gICAgICBjb25zdCB7IGRhdGE6IGNyb3BwZWRJbWFnZSwgaW5mbyB9ID0gYXdhaXQgY3JvcEltYWdlKHtcbiAgICAgICAgY3JvcERhdGEsXG4gICAgICAgIGRpbWVuc2lvbnMsXG4gICAgICAgIGZpbGUsXG4gICAgICAgIGhlaWdodEluUGl4ZWxzOiB1cGxvYWRFZGl0cy5oZWlnaHRJblBpeGVscyxcbiAgICAgICAgcmVxLFxuICAgICAgICB3aWR0aEluUGl4ZWxzOiB1cGxvYWRFZGl0cy53aWR0aEluUGl4ZWxzLFxuICAgICAgICB3aXRoTWV0YWRhdGEsXG4gICAgICB9KVxuXG4gICAgICAvLyBBcHBseSByZXNpemUgYWZ0ZXIgY3JvcHBpbmcgdG8gZW5zdXJlIGl0IGNvbmZvcm1zIHRvIHJlc2l6ZU9wdGlvbnNcbiAgICAgIGlmIChyZXNpemVPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHJlc2l6ZWRBZnRlckNyb3AgPSBhd2FpdCBzaGFycChjcm9wcGVkSW1hZ2UpXG4gICAgICAgICAgLnJlc2l6ZSh7XG4gICAgICAgICAgICBmaXQ6IHJlc2l6ZU9wdGlvbnM/LmZpdCB8fCAnY292ZXInLFxuICAgICAgICAgICAgaGVpZ2h0OiByZXNpemVPcHRpb25zPy5oZWlnaHQsXG4gICAgICAgICAgICBwb3NpdGlvbjogcmVzaXplT3B0aW9ucz8ucG9zaXRpb24gfHwgJ2NlbnRlcicsXG4gICAgICAgICAgICB3aWR0aDogcmVzaXplT3B0aW9ucz8ud2lkdGgsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAudG9CdWZmZXIoeyByZXNvbHZlV2l0aE9iamVjdDogdHJ1ZSB9KVxuXG4gICAgICAgIGZpbGVzVG9TYXZlLnB1c2goe1xuICAgICAgICAgIGJ1ZmZlcjogcmVzaXplZEFmdGVyQ3JvcC5kYXRhLFxuICAgICAgICAgIHBhdGg6IGAke3N0YXRpY1BhdGh9LyR7ZnNTYWZlTmFtZX1gLFxuICAgICAgICB9KVxuXG4gICAgICAgIGZpbGVGb3JSZXNpemUgPSB7XG4gICAgICAgICAgLi4uZmlsZUZvclJlc2l6ZSxcbiAgICAgICAgICBkYXRhOiByZXNpemVkQWZ0ZXJDcm9wLmRhdGEsXG4gICAgICAgICAgc2l6ZTogcmVzaXplZEFmdGVyQ3JvcC5pbmZvLnNpemUsXG4gICAgICAgIH1cblxuICAgICAgICBmaWxlRGF0YS53aWR0aCA9IHJlc2l6ZWRBZnRlckNyb3AuaW5mby53aWR0aFxuICAgICAgICBmaWxlRGF0YS5oZWlnaHQgPSByZXNpemVkQWZ0ZXJDcm9wLmluZm8uaGVpZ2h0XG4gICAgICAgIGlmIChmaWxlSXNBbmltYXRlZFR5cGUpIHtcbiAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IGF3YWl0IHNoYXJwRmlsZS5tZXRhZGF0YSgpXG4gICAgICAgICAgZmlsZURhdGEuaGVpZ2h0ID0gbWV0YWRhdGEucGFnZXNcbiAgICAgICAgICAgID8gcmVzaXplZEFmdGVyQ3JvcC5pbmZvLmhlaWdodCAvIG1ldGFkYXRhLnBhZ2VzXG4gICAgICAgICAgICA6IHJlc2l6ZWRBZnRlckNyb3AuaW5mby5oZWlnaHRcbiAgICAgICAgfVxuICAgICAgICBmaWxlRGF0YS5maWxlc2l6ZSA9IHJlc2l6ZWRBZnRlckNyb3AuaW5mby5zaXplXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiByZXNpemVPcHRpb25zIGlzIG5vdCBwcmVzZW50LCBqdXN0IHNhdmUgdGhlIGNyb3BwZWQgaW1hZ2VcbiAgICAgICAgZmlsZXNUb1NhdmUucHVzaCh7XG4gICAgICAgICAgYnVmZmVyOiBjcm9wcGVkSW1hZ2UsXG4gICAgICAgICAgcGF0aDogYCR7c3RhdGljUGF0aH0vJHtmc1NhZmVOYW1lfWAsXG4gICAgICAgIH0pXG5cbiAgICAgICAgZmlsZUZvclJlc2l6ZSA9IHtcbiAgICAgICAgICAuLi5maWxlLFxuICAgICAgICAgIGRhdGE6IGNyb3BwZWRJbWFnZSxcbiAgICAgICAgICBzaXplOiBpbmZvLnNpemUsXG4gICAgICAgIH1cblxuICAgICAgICBmaWxlRGF0YS53aWR0aCA9IGluZm8ud2lkdGhcbiAgICAgICAgZmlsZURhdGEuaGVpZ2h0ID0gaW5mby5oZWlnaHRcbiAgICAgICAgaWYgKGZpbGVJc0FuaW1hdGVkVHlwZSkge1xuICAgICAgICAgIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgc2hhcnBGaWxlLm1ldGFkYXRhKClcbiAgICAgICAgICBmaWxlRGF0YS5oZWlnaHQgPSBtZXRhZGF0YS5wYWdlcyA/IGluZm8uaGVpZ2h0IC8gbWV0YWRhdGEucGFnZXMgOiBpbmZvLmhlaWdodFxuICAgICAgICB9XG4gICAgICAgIGZpbGVEYXRhLmZpbGVzaXplID0gaW5mby5zaXplXG4gICAgICB9XG5cbiAgICAgIGlmIChmaWxlLnRlbXBGaWxlUGF0aCkge1xuICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUoZmlsZS50ZW1wRmlsZVBhdGgsIGNyb3BwZWRJbWFnZSkgLy8gd3JpdGUgZmlsZUJ1ZmZlciB0byB0aGUgdGVtcCBwYXRoXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXEuZmlsZXMuZmlsZSA9IGZpbGVGb3JSZXNpemVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZmlsZXNUb1NhdmUucHVzaCh7XG4gICAgICAgIGJ1ZmZlcjogZmlsZUJ1ZmZlcj8uZGF0YSB8fCBmaWxlLmRhdGEsXG4gICAgICAgIHBhdGg6IGAke3N0YXRpY1BhdGh9LyR7ZnNTYWZlTmFtZX1gLFxuICAgICAgfSlcblxuICAgICAgLy8gSWYgdXNpbmcgdGVtcCBmaWxlcyBhbmQgdGhlIGltYWdlIGlzIGJlaW5nIHJlc2l6ZWQsIHdyaXRlIHRoZSBmaWxlIHRvIHRoZSB0ZW1wIHBhdGhcbiAgICAgIGlmIChmaWxlQnVmZmVyPy5kYXRhIHx8IGZpbGUuZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChmaWxlLnRlbXBGaWxlUGF0aCkge1xuICAgICAgICAgIGF3YWl0IGZzLnByb21pc2VzLndyaXRlRmlsZShmaWxlLnRlbXBGaWxlUGF0aCwgZmlsZUJ1ZmZlcj8uZGF0YSB8fCBmaWxlLmRhdGEpIC8vIHdyaXRlIGZpbGVCdWZmZXIgdG8gdGhlIHRlbXAgcGF0aFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEFzc2lnbiB0aGUgX3Bvc3NpYmx5IG1vZGlmaWVkXyBmaWxlIHRvIHRoZSByZXF1ZXN0IG9iamVjdFxuICAgICAgICAgIHJlcS5maWxlcy5maWxlID0ge1xuICAgICAgICAgICAgLi4uZmlsZSxcbiAgICAgICAgICAgIGRhdGE6IGZpbGVCdWZmZXI/LmRhdGEgfHwgZmlsZS5kYXRhLFxuICAgICAgICAgICAgc2l6ZTogZmlsZUJ1ZmZlcj8uaW5mby5zaXplLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmaWxlU3VwcG9ydHNSZXNpemUgJiYgKEFycmF5LmlzQXJyYXkoaW1hZ2VTaXplcykgfHwgZm9jYWxQb2ludEVuYWJsZWQgIT09IGZhbHNlKSkge1xuICAgICAgcmVxLnBheWxvYWRVcGxvYWRTaXplcyA9IHt9XG4gICAgICBjb25zdCB7IGZvY2FsUG9pbnQsIHNpemVEYXRhLCBzaXplc1RvU2F2ZSB9ID0gYXdhaXQgcmVzaXplQW5kVHJhbnNmb3JtSW1hZ2VTaXplcyh7XG4gICAgICAgIGNvbmZpZzogY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgICAgZGltZW5zaW9uczogIWNyb3BEYXRhXG4gICAgICAgICAgPyBkaW1lbnNpb25zXG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIC4uLmRpbWVuc2lvbnMsXG4gICAgICAgICAgICAgIGhlaWdodDogZmlsZURhdGEuaGVpZ2h0LFxuICAgICAgICAgICAgICB3aWR0aDogZmlsZURhdGEud2lkdGgsXG4gICAgICAgICAgICB9LFxuICAgICAgICBmaWxlOiBmaWxlRm9yUmVzaXplLFxuICAgICAgICBtaW1lVHlwZTogZmlsZURhdGEubWltZVR5cGUsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2F2ZWRGaWxlbmFtZTogZnNTYWZlTmFtZSB8fCBmaWxlLm5hbWUsXG4gICAgICAgIHN0YXRpY1BhdGgsXG4gICAgICAgIHVwbG9hZEVkaXRzLFxuICAgICAgICB3aXRoTWV0YWRhdGEsXG4gICAgICB9KVxuXG4gICAgICBmaWxlRGF0YS5zaXplcyA9IHNpemVEYXRhXG4gICAgICBmaWxlRGF0YS5mb2NhbFggPSBmb2NhbFBvaW50Py54XG4gICAgICBmaWxlRGF0YS5mb2NhbFkgPSBmb2NhbFBvaW50Py55XG4gICAgICBmaWxlc1RvU2F2ZS5wdXNoKC4uLnNpemVzVG9TYXZlKVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmVxLnBheWxvYWQubG9nZ2VyLmVycm9yKHsgZXJyLCBtc2c6ICdFcnJvciB1cGxvYWRpbmcgZmlsZScgfSlcbiAgICB0aHJvdyBuZXcgRmlsZVVwbG9hZEVycm9yKHJlcS50KVxuICB9XG5cbiAgbmV3RGF0YSA9IHtcbiAgICAuLi5uZXdEYXRhLFxuICAgIC4uLmZpbGVEYXRhLFxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkYXRhOiBuZXdEYXRhLFxuICAgIGZpbGVzOiBmaWxlc1RvU2F2ZSxcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlIHVwbG9hZCBlZGl0cyBmcm9tIHJlcSBvciBpbmNvbWluZyBkYXRhXG4gKi9cbmZ1bmN0aW9uIHBhcnNlVXBsb2FkRWRpdHNGcm9tUmVxT3JJbmNvbWluZ0RhdGEoYXJnczoge1xuICBkYXRhOiB1bmtub3duXG4gIG9wZXJhdGlvbjogJ2NyZWF0ZScgfCAndXBkYXRlJ1xuICBvcmlnaW5hbERvYzogdW5rbm93blxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG59KTogVXBsb2FkRWRpdHMge1xuICBjb25zdCB7IGRhdGEsIG9wZXJhdGlvbiwgb3JpZ2luYWxEb2MsIHJlcSB9ID0gYXJnc1xuXG4gIC8vIEdldCBpbnRlbmRlZCBmb2NhbCBwb2ludCBjaGFuZ2UgZnJvbSBxdWVyeSBzdHJpbmcgb3IgaW5jb21pbmcgZGF0YVxuICBjb25zdCB1cGxvYWRFZGl0cyA9XG4gICAgcmVxLnF1ZXJ5Py51cGxvYWRFZGl0cyAmJiB0eXBlb2YgcmVxLnF1ZXJ5LnVwbG9hZEVkaXRzID09PSAnb2JqZWN0J1xuICAgICAgPyAocmVxLnF1ZXJ5LnVwbG9hZEVkaXRzIGFzIFVwbG9hZEVkaXRzKVxuICAgICAgOiB7fVxuXG4gIGlmICh1cGxvYWRFZGl0cy5mb2NhbFBvaW50KSByZXR1cm4gdXBsb2FkRWRpdHNcblxuICBjb25zdCBpbmNvbWluZ0RhdGEgPSBkYXRhIGFzIEZpbGVEYXRhXG4gIGNvbnN0IG9yaWdEb2MgPSBvcmlnaW5hbERvYyBhcyBGaWxlRGF0YVxuXG4gIC8vIElmIG5vIGNoYW5nZSBpbiBmb2NhbCBwb2ludCwgcmV0dXJuIHVuZGVmaW5lZC5cbiAgLy8gVGhpcyBwcmV2ZW50cyBhIHJlZm9jYWwgb3BlcmF0aW9uIHRyaWdnZXJlZCBmcm9tIGFkbWluLCBiZWNhdXNlIGl0IGFsd2F5cyBzZW5kcyB0aGUgZm9jYWwgcG9pbnQuXG4gIGlmIChvcmlnRG9jICYmIGluY29taW5nRGF0YS5mb2NhbFggPT09IG9yaWdEb2MuZm9jYWxYICYmIGluY29taW5nRGF0YS5mb2NhbFkgPT09IG9yaWdEb2MuZm9jYWxZKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgaWYgKGluY29taW5nRGF0YS5mb2NhbFggJiYgaW5jb21pbmdEYXRhLmZvY2FsWSkge1xuICAgIHVwbG9hZEVkaXRzLmZvY2FsUG9pbnQgPSB7XG4gICAgICB4OiBpbmNvbWluZ0RhdGEuZm9jYWxYLFxuICAgICAgeTogaW5jb21pbmdEYXRhLmZvY2FsWSxcbiAgICB9XG4gICAgcmV0dXJuIHVwbG9hZEVkaXRzXG4gIH1cblxuICAvLyBJZiBubyBmb2NhbCBwb2ludCBpcyBzZXQsIGRlZmF1bHQgdG8gY2VudGVyXG4gIGlmIChvcGVyYXRpb24gPT09ICdjcmVhdGUnKSB7XG4gICAgdXBsb2FkRWRpdHMuZm9jYWxQb2ludCA9IHtcbiAgICAgIHg6IDUwLFxuICAgICAgeTogNTAsXG4gICAgfVxuICB9XG4gIHJldHVybiB1cGxvYWRFZGl0c1xufVxuIl0sIm5hbWVzIjpbImdlbmVyYXRlRmlsZURhdGEiLCJjb2xsZWN0aW9uIiwiY29uZmlnIiwiY29sbGVjdGlvbkNvbmZpZyIsImRhdGEiLCJvcGVyYXRpb24iLCJvcmlnaW5hbERvYyIsIm92ZXJ3cml0ZUV4aXN0aW5nRmlsZXMiLCJyZXEiLCJ0aHJvd09uTWlzc2luZ0ZpbGUiLCJ1cGxvYWQiLCJmaWxlcyIsImZpbGUiLCJ1bmRlZmluZWQiLCJ1cGxvYWRFZGl0cyIsInBhcnNlVXBsb2FkRWRpdHNGcm9tUmVxT3JJbmNvbWluZ0RhdGEiLCJkaXNhYmxlTG9jYWxTdG9yYWdlIiwiZm9jYWxQb2ludCIsImZvY2FsUG9pbnRFbmFibGVkIiwiZm9ybWF0T3B0aW9ucyIsImltYWdlU2l6ZXMiLCJyZXNpemVPcHRpb25zIiwic3RhdGljRGlyIiwidHJpbU9wdGlvbnMiLCJ3aXRoTWV0YWRhdGEiLCJzdGF0aWNQYXRoIiwiaW5kZXhPZiIsInBhdGgiLCJyZXNvbHZlIiwicGF0aHMiLCJjb25maWdEaXIiLCJmaWxlbmFtZSIsInVybCIsInN0YXJ0c1dpdGgiLCJmaWxlUGF0aCIsInJlc3BvbnNlIiwiZ2V0RmlsZUJ5UGF0aCIsImdldEV4dGVybmFsRmlsZSIsInVwbG9hZENvbmZpZyIsImVyciIsIkVycm9yIiwiRmlsZVJldHJpZXZhbEVycm9yIiwidCIsIm1lc3NhZ2UiLCJNaXNzaW5nRmlsZSIsIm1rZGlycCIsInN5bmMiLCJuZXdEYXRhIiwiZmlsZXNUb1NhdmUiLCJmaWxlRGF0YSIsImZpbGVJc0FuaW1hdGVkVHlwZSIsImluY2x1ZGVzIiwibWltZXR5cGUiLCJjcm9wRGF0YSIsImNyb3AiLCJmaWxlU3VwcG9ydHNSZXNpemUiLCJjYW5SZXNpemVJbWFnZSIsImZzU2FmZU5hbWUiLCJzaGFycEZpbGUiLCJkaW1lbnNpb25zIiwiZmlsZUJ1ZmZlciIsImV4dCIsIm1pbWUiLCJmaWxlSGFzQWRqdXN0bWVudHMiLCJCb29sZWFuIiwidGVtcEZpbGVQYXRoIiwic2hhcnBPcHRpb25zIiwiYW5pbWF0ZWQiLCJzaGFycCIsInJvdGF0ZSIsInJlc2l6ZSIsInRvRm9ybWF0IiwiZm9ybWF0Iiwib3B0aW9ucyIsInRyaW0iLCJpc0ltYWdlIiwiZ2V0SW1hZ2VTaXplIiwid2lkdGgiLCJoZWlnaHQiLCJtZXRhZGF0YSIsIm9wdGlvbmFsbHlBcHBlbmRNZXRhZGF0YSIsInRvQnVmZmVyIiwicmVzb2x2ZVdpdGhPYmplY3QiLCJmcm9tQnVmZmVyIiwiaW5mbyIsImZpbGVzaXplIiwic2l6ZSIsInBhZ2VzIiwibGVuZ3RoIiwibmFtZSIsInNwbGl0IiwicG9wIiwibWltZVR5cGUiLCJiYXNlRmlsZW5hbWUiLCJzYW5pdGl6ZSIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwiZ2V0U2FmZUZpbGVOYW1lIiwiY29sbGVjdGlvblNsdWciLCJzbHVnIiwiZGVzaXJlZEZpbGVuYW1lIiwiZmlsZUZvclJlc2l6ZSIsImNyb3BwZWRJbWFnZSIsImNyb3BJbWFnZSIsImhlaWdodEluUGl4ZWxzIiwid2lkdGhJblBpeGVscyIsInJlc2l6ZWRBZnRlckNyb3AiLCJmaXQiLCJwb3NpdGlvbiIsInB1c2giLCJidWZmZXIiLCJmcyIsInByb21pc2VzIiwid3JpdGVGaWxlIiwiQXJyYXkiLCJpc0FycmF5IiwicGF5bG9hZFVwbG9hZFNpemVzIiwic2l6ZURhdGEiLCJzaXplc1RvU2F2ZSIsInJlc2l6ZUFuZFRyYW5zZm9ybUltYWdlU2l6ZXMiLCJzYXZlZEZpbGVuYW1lIiwic2l6ZXMiLCJmb2NhbFgiLCJ4IiwiZm9jYWxZIiwieSIsInBheWxvYWQiLCJsb2dnZXIiLCJlcnJvciIsIm1zZyIsIkZpbGVVcGxvYWRFcnJvciIsImFyZ3MiLCJxdWVyeSIsImluY29taW5nRGF0YSIsIm9yaWdEb2MiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiI7Ozs7K0JBMkNhQTs7O2VBQUFBOzs7MEJBeENjOzJEQUNaOytEQUNJOzZEQUNGO3lFQUNJOzhEQUNIO3dCQU8yQjsyRUFDZDt1RUFDSjsyQkFDRDtpQ0FDTTtzRUFDTjtxRUFDRDt3RUFDRztxRUFDYTtnRUFDckI7MENBQ3FCOzs7Ozs7QUFrQmxDLE1BQU1BLG1CQUFtQixPQUFVLEVBQ3hD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageResizer.d.ts","sourceRoot":"","sources":["../../src/uploads/imageResizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAQtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAEV,SAAS,EACT,UAAU,EAEV,eAAe,EACf,WAAW,EACZ,MAAM,SAAS,CAAA;AAIhB,OAAO,EAAE,KAAK,YAAY,EAA4B,MAAM,4BAA4B,CAAA;AAExF,KAAK,UAAU,GAAG;IAChB,MAAM,EAAE,yBAAyB,CAAA;IACjC,UAAU,EAAE,eAAe,CAAA;IAC3B,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,cAAc,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,CAAA;AAED,sEAAsE;AACtE,KAAK,gBAAgB,GAAG;IACtB,UAAU,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAAA;IACtC,QAAQ,EAAE,SAAS,CAAA;IACnB,WAAW,EAAE,UAAU,EAAE,CAAA;CAC1B,CAAA;
|
|
1
|
+
{"version":3,"file":"imageResizer.d.ts","sourceRoot":"","sources":["../../src/uploads/imageResizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAQtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAEV,SAAS,EACT,UAAU,EAEV,eAAe,EACf,WAAW,EACZ,MAAM,SAAS,CAAA;AAIhB,OAAO,EAAE,KAAK,YAAY,EAA4B,MAAM,4BAA4B,CAAA;AAExF,KAAK,UAAU,GAAG;IAChB,MAAM,EAAE,yBAAyB,CAAA;IACjC,UAAU,EAAE,eAAe,CAAA;IAC3B,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,cAAc,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,CAAA;AAED,sEAAsE;AACtE,KAAK,gBAAgB,GAAG;IACtB,UAAU,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAAA;IACtC,QAAQ,EAAE,SAAS,CAAA;IACnB,WAAW,EAAE,UAAU,EAAE,CAAA;CAC1B,CAAA;AA0LD;;;;;;;;;;;;;GAaG;AACH,wBAA8B,4BAA4B,CAAC,EACzD,MAAM,EACN,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,GAAG,EACH,aAAa,EACb,UAAU,EACV,WAAW,EACX,YAAY,GACb,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA+NxC"}
|
|
@@ -112,23 +112,6 @@ const createImageName = ({ extension, height, outputImageName, width })=>{
|
|
|
112
112
|
if (withoutReduction && !originalImageIsSmallerXOrY) return 'resize';
|
|
113
113
|
return hasFocalPoint ? 'resizeWithFocalPoint' : 'resize';
|
|
114
114
|
};
|
|
115
|
-
/**
|
|
116
|
-
* Check if the image should be passed directly to sharp without payload adjusting properties.
|
|
117
|
-
*
|
|
118
|
-
* @param resizeConfig - object containing the requested dimensions and resize options
|
|
119
|
-
* @param original - the original image size
|
|
120
|
-
* @returns true if the image should passed directly to sharp
|
|
121
|
-
*/ const applyPayloadAdjustments = ({ fit, height, width, withoutEnlargement, withoutReduction }, original)=>{
|
|
122
|
-
if (fit === 'contain' || fit === 'inside') return false;
|
|
123
|
-
if (!(0, _isNumber.isNumber)(height) && !(0, _isNumber.isNumber)(width)) return false;
|
|
124
|
-
const targetAspectRatio = width / height;
|
|
125
|
-
const originalAspectRatio = original.width / original.height;
|
|
126
|
-
if (originalAspectRatio === targetAspectRatio) return false;
|
|
127
|
-
const skipEnlargement = withoutEnlargement && (original.height < height || original.width < width);
|
|
128
|
-
const skipReduction = withoutReduction && (original.height > height || original.width > width);
|
|
129
|
-
if (skipEnlargement || skipReduction) return false;
|
|
130
|
-
return true;
|
|
131
|
-
};
|
|
132
115
|
/**
|
|
133
116
|
* Sanitize the resize config. If the resize config has the `withoutReduction`
|
|
134
117
|
* property set to true, the `fit` and `position` properties will be set to `contain`
|
|
@@ -185,6 +168,23 @@ async function resizeAndTransformImageSizes({ config, dimensions, file, mimeType
|
|
|
185
168
|
const sharpBase = (0, _sharp.default)(file.tempFilePath || file.data, sharpOptions).rotate() // pass rotate() to auto-rotate based on EXIF data. https://github.com/payloadcms/payload/pull/3081
|
|
186
169
|
;
|
|
187
170
|
const originalImageMeta = await sharpBase.metadata();
|
|
171
|
+
let adjustedDimensions = {
|
|
172
|
+
...dimensions
|
|
173
|
+
};
|
|
174
|
+
// Images with an exif orientation of 5, 6, 7, or 8 are auto-rotated by sharp
|
|
175
|
+
// Need to adjust the dimensions to match the original image
|
|
176
|
+
if ([
|
|
177
|
+
5,
|
|
178
|
+
6,
|
|
179
|
+
7,
|
|
180
|
+
8
|
|
181
|
+
].includes(originalImageMeta.orientation)) {
|
|
182
|
+
adjustedDimensions = {
|
|
183
|
+
...dimensions,
|
|
184
|
+
height: dimensions.width,
|
|
185
|
+
width: dimensions.height
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
188
|
const resizeImageMeta = {
|
|
189
189
|
height: extractHeightFromImage(originalImageMeta),
|
|
190
190
|
width: originalImageMeta.width
|
|
@@ -203,7 +203,7 @@ async function resizeAndTransformImageSizes({ config, dimensions, file, mimeType
|
|
|
203
203
|
let resized = imageToResize;
|
|
204
204
|
if (resizeAction === 'resizeWithFocalPoint') {
|
|
205
205
|
let { height: resizeHeight, width: resizeWidth } = imageResizeConfig;
|
|
206
|
-
const originalAspectRatio =
|
|
206
|
+
const originalAspectRatio = adjustedDimensions.width / adjustedDimensions.height;
|
|
207
207
|
// Calculate resizeWidth based on original aspect ratio if it's undefined
|
|
208
208
|
if (resizeHeight && !resizeWidth) {
|
|
209
209
|
resizeWidth = Math.round(resizeHeight * originalAspectRatio);
|
|
@@ -338,4 +338,4 @@ async function resizeAndTransformImageSizes({ config, dimensions, file, mimeType
|
|
|
338
338
|
});
|
|
339
339
|
}
|
|
340
340
|
|
|
341
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2ltYWdlUmVzaXplci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFVwbG9hZGVkRmlsZSB9IGZyb20gJ2V4cHJlc3MtZmlsZXVwbG9hZCdcbmltcG9ydCB0eXBlIHsgU2hhcnAsIE1ldGFkYXRhIGFzIFNoYXJwTWV0YWRhdGEsIFNoYXJwT3B0aW9ucyB9IGZyb20gJ3NoYXJwJ1xuXG5pbXBvcnQgeyBmcm9tQnVmZmVyIH0gZnJvbSAnZmlsZS10eXBlJ1xuaW1wb3J0IGZzIGZyb20gJ2ZzJ1xuaW1wb3J0IHNhbml0aXplIGZyb20gJ3Nhbml0aXplLWZpbGVuYW1lJ1xuaW1wb3J0IHNoYXJwIGZyb20gJ3NoYXJwJ1xuXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfSBmcm9tICcuLi9jb2xsZWN0aW9ucy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHtcbiAgRmlsZVNpemUsXG4gIEZpbGVTaXplcyxcbiAgRmlsZVRvU2F2ZSxcbiAgSW1hZ2VTaXplLFxuICBQcm9iZWRJbWFnZVNpemUsXG4gIFVwbG9hZEVkaXRzLFxufSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4uL3V0aWxpdGllcy9pc051bWJlcidcbmltcG9ydCBmaWxlRXhpc3RzIGZyb20gJy4vZmlsZUV4aXN0cydcbmltcG9ydCB7IHR5cGUgV2l0aE1ldGFkYXRhLCBvcHRpb25hbGx5QXBwZW5kTWV0YWRhdGEgfSBmcm9tICcuL29wdGlvbmFsbHlBcHBlbmRNZXRhZGF0YSdcblxudHlwZSBSZXNpemVBcmdzID0ge1xuICBjb25maWc6IFNhbml0aXplZENvbGxlY3Rpb25Db25maWdcbiAgZGltZW5zaW9uczogUHJvYmVkSW1hZ2VTaXplXG4gIGZpbGU6IFVwbG9hZGVkRmlsZVxuICBtaW1lVHlwZTogc3RyaW5nXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgc2F2ZWRGaWxlbmFtZTogc3RyaW5nXG4gIHN0YXRpY1BhdGg6IHN0cmluZ1xuICB1cGxvYWRFZGl0cz86IFVwbG9hZEVkaXRzXG4gIHdpdGhNZXRhZGF0YT86IFdpdGhNZXRhZGF0YVxufVxuXG4vKiogUmVzdWx0IGZyb20gcmVzaXppbmcgYW5kIHRyYW5zZm9ybWluZyB0aGUgcmVxdWVzdGVkIGltYWdlIHNpemVzICovXG50eXBlIEltYWdlU2l6ZXNSZXN1bHQgPSB7XG4gIGZvY2FsUG9pbnQ/OiBVcGxvYWRFZGl0c1snZm9jYWxQb2ludCddXG4gIHNpemVEYXRhOiBGaWxlU2l6ZXNcbiAgc2l6ZXNUb1NhdmU6IEZpbGVUb1NhdmVbXVxufVxuXG50eXBlIFNhbml0aXplZEltYWdlRGF0YSA9IHtcbiAgZXh0OiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG59XG5cbi8qKlxuICogU2FuaXRpemUgdGhlIGltYWdlIG5hbWUgYW5kIGV4dHJhY3QgdGhlIGV4dGVuc2lvbiBmcm9tIHRoZSBzb3VyY2UgaW1hZ2VcbiAqXG4gKiBAcGFyYW0gc291cmNlSW1hZ2UgLSB0aGUgc291cmNlIGltYWdlXG4gKiBAcmV0dXJucyB0aGUgc2FuaXRpemVkIG5hbWUgYW5kIGV4dGVuc2lvblxuICovXG5jb25zdCBnZXRTYW5pdGl6ZWRJbWFnZURhdGEgPSAoc291cmNlSW1hZ2U6IHN0cmluZyk6IFNhbml0aXplZEltYWdlRGF0YSA9PiB7XG4gIGNvbnN0IGV4dGVuc2lvbiA9IHNvdXJjZUltYWdlLnNwbGl0KCcuJykucG9wKClcbiAgY29uc3QgbmFtZSA9IHNhbml0aXplKHNvdXJjZUltYWdlLnN1YnN0cmluZygwLCBzb3VyY2VJbWFnZS5sYXN0SW5kZXhPZignLicpKSB8fCBzb3VyY2VJbWFnZSlcbiAgcmV0dXJuIHsgbmFtZSwgZXh0OiBleHRlbnNpb24gfVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBpbWFnZSBuYW1lIGJhc2VkIG9uIHRoZSBvdXRwdXQgaW1hZ2UgbmFtZSwgdGhlIGRpbWVuc2lvbnMgYW5kXG4gKiB0aGUgZXh0ZW5zaW9uLlxuICpcbiAqIElnbm9yZSB0aGUgZmFjdCB0aGF0IGR1cGxpY2F0ZSBuYW1lcyBjb3VsZCBoYXBwZW4gaWYgdGhlIHRoZXJlIGlzIG9uZVxuICogc2l6ZSB3aXRoIGB3aWR0aCBBTkQgaGVpZ2h0YCBhbmQgb25lIHdpdGggb25seSBgaGVpZ2h0IE9SIHdpZHRoYC4gQmVjYXVzZVxuICogc3BhY2UgaXMgZXhwZW5zaXZlLCB3ZSB3aWxsIHJldXNlIHRoZSBzYW1lIGltYWdlIGZvciBib3RoIHNpemVzLlxuICpcbiAqIEBwYXJhbSBvdXRwdXRJbWFnZU5hbWUgLSB0aGUgc2FuaXRpemVkIGltYWdlIG5hbWVcbiAqIEBwYXJhbSBidWZmZXJJbmZvIC0gdGhlIGJ1ZmZlciBpbmZvXG4gKiBAcGFyYW0gZXh0ZW5zaW9uIC0gdGhlIGV4dGVuc2lvbiB0byB1c2VcbiAqIEByZXR1cm5zIHRoZSBuZXcgaW1hZ2UgbmFtZSB0aGF0IGlzIG5vdCB0YWtlblxuICovXG5cbnR5cGUgQ3JlYXRlSW1hZ2VOYW1lQXJncyA9IHtcbiAgZXh0ZW5zaW9uOiBzdHJpbmdcbiAgaGVpZ2h0OiBudW1iZXJcbiAgb3V0cHV0SW1hZ2VOYW1lOiBzdHJpbmdcbiAgd2lkdGg6IG51bWJlclxufVxuY29uc3QgY3JlYXRlSW1hZ2VOYW1lID0gKHtcbiAgZXh0ZW5zaW9uLFxuICBoZWlnaHQsXG4gIG91dHB1dEltYWdlTmFtZSxcbiAgd2lkdGgsXG59OiBDcmVhdGVJbWFnZU5hbWVBcmdzKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGAke291dHB1dEltYWdlTmFtZX0tJHt3aWR0aH14JHtoZWlnaHR9LiR7ZXh0ZW5zaW9ufWBcbn1cblxudHlwZSBDcmVhdGVSZXN1bHRBcmdzID0ge1xuICBmaWxlbmFtZT86IEZpbGVTaXplWydmaWxlbmFtZSddXG4gIGZpbGVzaXplPzogRmlsZVNpemVbJ2ZpbGVzaXplJ11cbiAgaGVpZ2h0PzogRmlsZVNpemVbJ2hlaWdodCddXG4gIG1pbWVUeXBlPzogRmlsZVNpemVbJ21pbWVUeXBlJ11cbiAgbmFtZTogc3RyaW5nXG4gIHNpemVzVG9TYXZlPzogRmlsZVRvU2F2ZVtdXG4gIHdpZHRoPzogRmlsZVNpemVbJ3dpZHRoJ11cbn1cblxuLyoqXG4gKiBDcmVhdGUgdGhlIHJlc3VsdCBvYmplY3QgZm9yIHRoZSBpbWFnZSByZXNpemUgb3BlcmF0aW9uIGJhc2VkIG9uIHRoZVxuICogcHJvdmlkZWQgcGFyYW1ldGVycy4gSWYgdGhlIG5hbWUgaXMgbm90IHByb3ZpZGVkLCBhbiBlbXB0eSByZXN1bHQgb2JqZWN0XG4gKiBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gbmFtZSAtIHRoZSBuYW1lIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIGZpbGVuYW1lIC0gdGhlIGZpbGVuYW1lIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIHdpZHRoIC0gdGhlIHdpZHRoIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIGhlaWdodCAtIHRoZSBoZWlnaHQgb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gZmlsZXNpemUgLSB0aGUgZmlsZXNpemUgb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gbWltZVR5cGUgLSB0aGUgbWltZSB0eXBlIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIHNpemVzVG9TYXZlIC0gdGhlIHNpemVzIHRvIHNhdmVcbiAqIEByZXR1cm5zIHRoZSByZXN1bHQgb2JqZWN0XG4gKi9cbmNvbnN0IGNyZWF0ZVJlc3VsdCA9ICh7XG4gIG5hbWUsXG4gIGZpbGVuYW1lID0gbnVsbCxcbiAgZmlsZXNpemUgPSBudWxsLFxuICBoZWlnaHQgPSBudWxsLFxuICBtaW1lVHlwZSA9IG51bGwsXG4gIHNpemVzVG9TYXZlID0gW10sXG4gIHdpZHRoID0gbnVsbCxcbn06IENyZWF0ZVJlc3VsdEFyZ3MpOiBJbWFnZVNpemVzUmVzdWx0ID0+IHtcbiAgcmV0dXJuIHtcbiAgICBzaXplRGF0YToge1xuICAgICAgW25hbWVdOiB7XG4gICAgICAgIGZpbGVuYW1lLFxuICAgICAgICBmaWxlc2l6ZSxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICBtaW1lVHlwZSxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9LFxuICAgIH0sXG4gICAgc2l6ZXNUb1NhdmUsXG4gIH1cbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgd2hldGhlciBvciBub3QgdG8gcmVzaXplIHRoZSBpbWFnZS5cbiAqIC0gcmVzaXplIHVzaW5nIGltYWdlIGNvbmZpZ1xuICogLSByZXNpemUgdXNpbmcgaW1hZ2UgY29uZmlnIHdpdGggZm9jYWwgYWRqdXN0bWVudHNcbiAqIC0gZG8gbm90IHJlc2l6ZSBhdCBhbGxcbiAqXG4gKiBgaW1hZ2VSZXNpemVDb25maWcud2l0aG91dEVubGFyZ2VtZW50YDpcbiAqIC0gdW5kZWZpbmVkIFtkZWZhdWx0XTogdXBsb2FkaW5nIGltYWdlcyB3aXRoIHNtYWxsZXIgd2lkdGggQU5EIGhlaWdodCB0aGFuIHRoZSBpbWFnZSBzaXplIHdpbGwgcmV0dXJuIG51bGxcbiAqIC0gZmFsc2U6IGFsd2F5cyBlbmxhcmdlIGltYWdlcyB0byB0aGUgaW1hZ2Ugc2l6ZVxuICogLSB0cnVlOiBpZiB0aGUgaW1hZ2UgaXMgc21hbGxlciB0aGFuIHRoZSBpbWFnZSBzaXplLCByZXR1cm4gdGhlIG9yaWdpbmFsIGltYWdlXG4gKlxuICogYGltYWdlUmVzaXplQ29uZmlnLndpdGhvdXRSZWR1Y3Rpb25gOlxuICogLSBmYWxzZSBbZGVmYXVsdF06IGFsd2F5cyBlbmxhcmdlIGltYWdlcyB0byB0aGUgaW1hZ2Ugc2l6ZVxuICogLSB0cnVlOiBpZiB0aGUgaW1hZ2UgaXMgc21hbGxlciB0aGFuIHRoZSBpbWFnZSBzaXplLCByZXR1cm4gdGhlIG9yaWdpbmFsIGltYWdlXG4gKlxuICogQHJldHVybiAnb21pdCcgfCAncmVzaXplJyB8ICdyZXNpemVXaXRoRm9jYWxQb2ludCdcbiAqL1xuY29uc3QgZ2V0SW1hZ2VSZXNpemVBY3Rpb24gPSAoe1xuICBkaW1lbnNpb25zOiBvcmlnaW5hbEltYWdlLFxuICBoYXNGb2NhbFBvaW50LFxuICBpbWFnZVJlc2l6ZUNvbmZpZyxcbn06IHtcbiAgZGltZW5zaW9uczogUHJvYmVkSW1hZ2VTaXplXG4gIGhhc0ZvY2FsUG9pbnQ/OiBib29sZWFuXG4gIGltYWdlUmVzaXplQ29uZmlnOiBJbWFnZVNpemVcbn0pOiAnb21pdCcgfCAncmVzaXplJyB8ICdyZXNpemVXaXRoRm9jYWxQb2ludCcgPT4ge1xuICBjb25zdCB7XG4gICAgZml0LFxuICAgIGhlaWdodDogdGFyZ2V0SGVpZ2h0LFxuICAgIHdpZHRoOiB0YXJnZXRXaWR0aCxcbiAgICB3aXRob3V0RW5sYXJnZW1lbnQsXG4gICAgd2l0aG91dFJlZHVjdGlvbixcbiAgfSA9IGltYWdlUmVzaXplQ29uZmlnXG5cbiAgLy8gcHJldmVudCB1cHNjYWxpbmcgYnkgZGVmYXVsdCB3aGVuIHggYW5kIHkgYXJlIGJvdGggc21hbGxlciB0aGFuIHRhcmdldCBpbWFnZSBzaXplXG4gIGlmICh0YXJnZXRIZWlnaHQgJiYgdGFyZ2V0V2lkdGgpIHtcbiAgICBjb25zdCBvcmlnaW5hbEltYWdlSXNTbWFsbGVyWEFuZFkgPVxuICAgICAgb3JpZ2luYWxJbWFnZS53aWR0aCA8IHRhcmdldFdpZHRoICYmIG9yaWdpbmFsSW1hZ2UuaGVpZ2h0IDwgdGFyZ2V0SGVpZ2h0XG4gICAgaWYgKHdpdGhvdXRFbmxhcmdlbWVudCA9PT0gdW5kZWZpbmVkICYmIG9yaWdpbmFsSW1hZ2VJc1NtYWxsZXJYQW5kWSkge1xuICAgICAgcmV0dXJuICdvbWl0JyAvLyBwcmV2ZW50IGltYWdlIHNpemUgZnJvbSBiZWluZyBlbmxhcmdlZFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9yaWdpbmFsSW1hZ2VJc1NtYWxsZXJYT3JZID1cbiAgICBvcmlnaW5hbEltYWdlLndpZHRoIDwgdGFyZ2V0V2lkdGggfHwgb3JpZ2luYWxJbWFnZS5oZWlnaHQgPCB0YXJnZXRIZWlnaHRcbiAgaWYgKGZpdCA9PT0gJ2NvbnRhaW4nIHx8IGZpdCA9PT0gJ2luc2lkZScpIHJldHVybiAncmVzaXplJ1xuICBpZiAoIWlzTnVtYmVyKHRhcmdldEhlaWdodCkgJiYgIWlzTnVtYmVyKHRhcmdldFdpZHRoKSkgcmV0dXJuICdyZXNpemUnXG5cbiAgY29uc3QgdGFyZ2V0QXNwZWN0UmF0aW8gPSB0YXJnZXRXaWR0aCAvIHRhcmdldEhlaWdodFxuICBjb25zdCBvcmlnaW5hbEFzcGVjdFJhdGlvID0gb3JpZ2luYWxJbWFnZS53aWR0aCAvIG9yaWdpbmFsSW1hZ2UuaGVpZ2h0XG4gIGlmIChvcmlnaW5hbEFzcGVjdFJhdGlvID09PSB0YXJnZXRBc3BlY3RSYXRpbykgcmV0dXJuICdyZXNpemUnXG5cbiAgaWYgKHdpdGhvdXRFbmxhcmdlbWVudCAmJiBvcmlnaW5hbEltYWdlSXNTbWFsbGVyWE9yWSkgcmV0dXJuICdyZXNpemUnXG4gIGlmICh3aXRob3V0UmVkdWN0aW9uICYmICFvcmlnaW5hbEltYWdlSXNTbWFsbGVyWE9yWSkgcmV0dXJuICdyZXNpemUnXG5cbiAgcmV0dXJuIGhhc0ZvY2FsUG9pbnQgPyAncmVzaXplV2l0aEZvY2FsUG9pbnQnIDogJ3Jlc2l6ZSdcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgaW1hZ2Ugc2hvdWxkIGJlIHBhc3NlZCBkaXJlY3RseSB0byBzaGFycCB3aXRob3V0IHBheWxvYWQgYWRqdXN0aW5nIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHJlc2l6ZUNvbmZpZyAtIG9iamVjdCBjb250YWluaW5nIHRoZSByZXF1ZXN0ZWQgZGltZW5zaW9ucyBhbmQgcmVzaXplIG9wdGlvbnNcbiAqIEBwYXJhbSBvcmlnaW5hbCAtIHRoZSBvcmlnaW5hbCBpbWFnZSBzaXplXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBpbWFnZSBzaG91bGQgcGFzc2VkIGRpcmVjdGx5IHRvIHNoYXJwXG4gKi9cbmNvbnN0IGFwcGx5UGF5bG9hZEFkanVzdG1lbnRzID0gKFxuICB7IGZpdCwgaGVpZ2h0LCB3aWR0aCwgd2l0aG91dEVubGFyZ2VtZW50LCB3aXRob3V0UmVkdWN0aW9uIH06IEltYWdlU2l6ZSxcbiAgb3JpZ2luYWw6IFByb2JlZEltYWdlU2l6ZSxcbikgPT4ge1xuICBpZiAoZml0ID09PSAnY29udGFpbicgfHwgZml0ID09PSAnaW5zaWRlJykgcmV0dXJuIGZhbHNlXG4gIGlmICghaXNOdW1iZXIoaGVpZ2h0KSAmJiAhaXNOdW1iZXIod2lkdGgpKSByZXR1cm4gZmFsc2VcblxuICBjb25zdCB0YXJnZXRBc3BlY3RSYXRpbyA9IHdpZHRoIC8gaGVpZ2h0XG4gIGNvbnN0IG9yaWdpbmFsQXNwZWN0UmF0aW8gPSBvcmlnaW5hbC53aWR0aCAvIG9yaWdpbmFsLmhlaWdodFxuICBpZiAob3JpZ2luYWxBc3BlY3RSYXRpbyA9PT0gdGFyZ2V0QXNwZWN0UmF0aW8pIHJldHVybiBmYWxzZVxuXG4gIGNvbnN0IHNraXBFbmxhcmdlbWVudCA9IHdpdGhvdXRFbmxhcmdlbWVudCAmJiAob3JpZ2luYWwuaGVpZ2h0IDwgaGVpZ2h0IHx8IG9yaWdpbmFsLndpZHRoIDwgd2lkdGgpXG4gIGNvbnN0IHNraXBSZWR1Y3Rpb24gPSB3aXRob3V0UmVkdWN0aW9uICYmIChvcmlnaW5hbC5oZWlnaHQgPiBoZWlnaHQgfHwgb3JpZ2luYWwud2lkdGggPiB3aWR0aClcbiAgaWYgKHNraXBFbmxhcmdlbWVudCB8fCBza2lwUmVkdWN0aW9uKSByZXR1cm4gZmFsc2VcblxuICByZXR1cm4gdHJ1ZVxufVxuXG4vKipcbiAqIFNhbml0aXplIHRoZSByZXNpemUgY29uZmlnLiBJZiB0aGUgcmVzaXplIGNvbmZpZyBoYXMgdGhlIGB3aXRob3V0UmVkdWN0aW9uYFxuICogcHJvcGVydHkgc2V0IHRvIHRydWUsIHRoZSBgZml0YCBhbmQgYHBvc2l0aW9uYCBwcm9wZXJ0aWVzIHdpbGwgYmUgc2V0IHRvIGBjb250YWluYFxuICogYW5kIGB0b3AgbGVmdGAgcmVzcGVjdGl2ZWx5LlxuICpcbiAqIEBwYXJhbSByZXNpemVDb25maWcgLSB0aGUgcmVzaXplIGNvbmZpZ1xuICogQHJldHVybnMgYSBzYW5pdGl6ZWQgcmVzaXplIGNvbmZpZ1xuICovXG5jb25zdCBzYW5pdGl6ZVJlc2l6ZUNvbmZpZyA9IChyZXNpemVDb25maWc6IEltYWdlU2l6ZSk6IEltYWdlU2l6ZSA9PiB7XG4gIGlmIChyZXNpemVDb25maWcud2l0aG91dFJlZHVjdGlvbikge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5yZXNpemVDb25maWcsXG4gICAgICAvLyBXaHkgZml0IGBjb250YWluYCBzaG91bGQgYWxzbyBiZSBzZXQgdG8gaHR0cHM6Ly9naXRodWIuY29tL2xvdmVsbC9zaGFycC9pc3N1ZXMvMzU5NVxuICAgICAgZml0OiByZXNpemVDb25maWc/LmZpdCB8fCAnY29udGFpbicsXG4gICAgICBwb3NpdGlvbjogcmVzaXplQ29uZmlnPy5wb3NpdGlvbiB8fCAnbGVmdCB0b3AnLFxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzaXplQ29uZmlnXG59XG5cbi8qKlxuICogVXNlZCB0byBleHRyYWN0IGhlaWdodCBmcm9tIGltYWdlcywgYW5pbWF0ZWQgb3Igbm90LlxuICpcbiAqIEBwYXJhbSBzaGFycE1ldGFkYXRhIC0gdGhlIHNoYXJwIG1ldGFkYXRhXG4gKiBAcmV0dXJucyB0aGUgaGVpZ2h0IG9mIHRoZSBpbWFnZVxuICovXG5mdW5jdGlvbiBleHRyYWN0SGVpZ2h0RnJvbUltYWdlKHNoYXJwTWV0YWRhdGE6IFNoYXJwTWV0YWRhdGEpOiBudW1iZXIge1xuICBpZiAoc2hhcnBNZXRhZGF0YT8ucGFnZXMpIHtcbiAgICByZXR1cm4gc2hhcnBNZXRhZGF0YS5oZWlnaHQgLyBzaGFycE1ldGFkYXRhLnBhZ2VzXG4gIH1cbiAgcmV0dXJuIHNoYXJwTWV0YWRhdGEuaGVpZ2h0XG59XG5cbi8qKlxuICogRm9yIHRoZSBwcm92aWRlZCBpbWFnZSBzaXplcywgaGFuZGxlIHRoZSByZXNpemluZyBhbmQgdGhlIHRyYW5zZm9ybXNcbiAqIChmb3JtYXQsIHRyaW0sIGV0Yy4pIG9mIGVhY2ggcmVxdWVzdGVkIGltYWdlIHNpemUgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9iamVjdC5cbiAqIFRoaXMgb25seSBoYW5kbGVzIHRoZSBpbWFnZSBzaXplcy4gVGhlIHRyYW5zZm9ybXMgb2YgdGhlIG9yaWdpbmFsIGltYWdlXG4gKiBhcmUgaGFuZGxlZCBpbiB7QGxpbmsgLi9nZW5lcmF0ZUZpbGVEYXRhLnRzfS5cbiAqXG4gKiBUaGUgaW1hZ2Ugd2lsbCBiZSByZXNpemVkIGFjY29yZGluZyB0byB0aGUgcHJvdmlkZWRcbiAqIHJlc2l6ZSBjb25maWcuIElmIG5vIGltYWdlIHNpemVzIGFyZSByZXF1ZXN0ZWQsIHRoZSByZXNvbHZlZCBkYXRhIHdpbGwgYmUgZW1wdHkuXG4gKiBGb3IgZXZlcnkgaW1hZ2UgdGhhdCBkb2VzIG5vdCBuZWVkIHRvIGJlIHJlc2l6ZWQsIGEgcmVzdWx0IG9iamVjdCB3aXRoIGBudWxsYFxuICogcGFyYW1ldGVycyB3aWxsIGJlIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSByZXNpemVDb25maWcgLSB0aGUgcmVzaXplIGNvbmZpZ1xuICogQHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgcmVzaXplIG9wZXJhdGlvbihzKVxuICovXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiByZXNpemVBbmRUcmFuc2Zvcm1JbWFnZVNpemVzKHtcbiAgY29uZmlnLFxuICBkaW1lbnNpb25zLFxuICBmaWxlLFxuICBtaW1lVHlwZSxcbiAgcmVxLFxuICBzYXZlZEZpbGVuYW1lLFxuICBzdGF0aWNQYXRoLFxuICB1cGxvYWRFZGl0cyxcbiAgd2l0aE1ldGFkYXRhLFxufTogUmVzaXplQXJncyk6IFByb21pc2U8SW1hZ2VTaXplc1Jlc3VsdD4ge1xuICBjb25zdCB7IGZvY2FsUG9pbnQ6IGZvY2FsUG9pbnRFbmFibGVkID0gdHJ1ZSwgaW1hZ2VTaXplcyB9ID0gY29uZmlnLnVwbG9hZFxuXG4gIC8vIEZvY2FsIHBvaW50IGFkanVzdG1lbnRzXG4gIGNvbnN0IGluY29taW5nRm9jYWxQb2ludCA9IHVwbG9hZEVkaXRzPy5mb2NhbFBvaW50XG4gICAgPyB7XG4gICAgICAgIHg6IGlzTnVtYmVyKHVwbG9hZEVkaXRzLmZvY2FsUG9pbnQueCkgPyBNYXRoLnJvdW5kKHVwbG9hZEVkaXRzLmZvY2FsUG9pbnQueCkgOiA1MCxcbiAgICAgICAgeTogaXNOdW1iZXIodXBsb2FkRWRpdHMuZm9jYWxQb2ludC55KSA/IE1hdGgucm91bmQodXBsb2FkRWRpdHMuZm9jYWxQb2ludC55KSA6IDUwLFxuICAgICAgfVxuICAgIDogdW5kZWZpbmVkXG5cbiAgY29uc3QgZGVmYXVsdFJlc3VsdDogSW1hZ2VTaXplc1Jlc3VsdCA9IHtcbiAgICAuLi4oZm9jYWxQb2ludEVuYWJsZWQgJiYgaW5jb21pbmdGb2NhbFBvaW50ICYmIHsgZm9jYWxQb2ludDogaW5jb21pbmdGb2NhbFBvaW50IH0pLFxuICAgIHNpemVEYXRhOiB7fSxcbiAgICBzaXplc1RvU2F2ZTogW10sXG4gIH1cblxuICAvLyBOb3RoaW5nIHRvIHJlc2l6ZSBoZXJlIHNvIHJldHVybiBhcyBlYXJseSBhcyBwb3NzaWJsZVxuICBpZiAoIWltYWdlU2l6ZXMpIHJldHVybiBkZWZhdWx0UmVzdWx0XG5cbiAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBmaWxlIGlzIGFuaW1hdGVkXG4gIGNvbnN0IGZpbGVJc0FuaW1hdGVkVHlwZSA9IFsnaW1hZ2UvYXZpZicsICdpbWFnZS9naWYnLCAnaW1hZ2Uvd2VicCddLmluY2x1ZGVzKGZpbGUubWltZXR5cGUpXG4gIGNvbnN0IHNoYXJwT3B0aW9uczogU2hhcnBPcHRpb25zID0ge31cblxuICBpZiAoZmlsZUlzQW5pbWF0ZWRUeXBlKSBzaGFycE9wdGlvbnMuYW5pbWF0ZWQgPSB0cnVlXG5cbiAgY29uc3Qgc2hhcnBCYXNlOiBTaGFycCB8IHVuZGVmaW5lZCA9IHNoYXJwKGZpbGUudGVtcEZpbGVQYXRoIHx8IGZpbGUuZGF0YSwgc2hhcnBPcHRpb25zKS5yb3RhdGUoKSAvLyBwYXNzIHJvdGF0ZSgpIHRvIGF1dG8tcm90YXRlIGJhc2VkIG9uIEVYSUYgZGF0YS4gaHR0cHM6Ly9naXRodWIuY29tL3BheWxvYWRjbXMvcGF5bG9hZC9wdWxsLzMwODFcbiAgY29uc3Qgb3JpZ2luYWxJbWFnZU1ldGEgPSBhd2FpdCBzaGFycEJhc2UubWV0YWRhdGEoKVxuXG4gIGNvbnN0IHJlc2l6ZUltYWdlTWV0YSA9IHtcbiAgICBoZWlnaHQ6IGV4dHJhY3RIZWlnaHRGcm9tSW1hZ2Uob3JpZ2luYWxJbWFnZU1ldGEpLFxuICAgIHdpZHRoOiBvcmlnaW5hbEltYWdlTWV0YS53aWR0aCxcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdHM6IEltYWdlU2l6ZXNSZXN1bHRbXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIGltYWdlU2l6ZXMubWFwKGFzeW5jIChpbWFnZVJlc2l6ZUNvbmZpZyk6IFByb21pc2U8SW1hZ2VTaXplc1Jlc3VsdD4gPT4ge1xuICAgICAgaW1hZ2VSZXNpemVDb25maWcgPSBzYW5pdGl6ZVJlc2l6ZUNvbmZpZyhpbWFnZVJlc2l6ZUNvbmZpZylcblxuICAgICAgY29uc3QgcmVzaXplQWN0aW9uID0gZ2V0SW1hZ2VSZXNpemVBY3Rpb24oe1xuICAgICAgICBkaW1lbnNpb25zLFxuICAgICAgICBoYXNGb2NhbFBvaW50OiBCb29sZWFuKGluY29taW5nRm9jYWxQb2ludCksXG4gICAgICAgIGltYWdlUmVzaXplQ29uZmlnLFxuICAgICAgfSlcbiAgICAgIGlmIChyZXNpemVBY3Rpb24gPT09ICdvbWl0JykgcmV0dXJuIGNyZWF0ZVJlc3VsdCh7IG5hbWU6IGltYWdlUmVzaXplQ29uZmlnLm5hbWUgfSlcblxuICAgICAgY29uc3QgaW1hZ2VUb1Jlc2l6ZSA9IHNoYXJwQmFzZS5jbG9uZSgpXG4gICAgICBsZXQgcmVzaXplZCA9IGltYWdlVG9SZXNpemVcblxuICAgICAgaWYgKHJlc2l6ZUFjdGlvbiA9PT0gJ3Jlc2l6ZVdpdGhGb2NhbFBvaW50Jykge1xuICAgICAgICBsZXQgeyBoZWlnaHQ6IHJlc2l6ZUhlaWdodCwgd2lkdGg6IHJlc2l6ZVdpZHRoIH0gPSBpbWFnZVJlc2l6ZUNvbmZpZ1xuXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsQXNwZWN0UmF0aW8gPSBkaW1lbnNpb25zLndpZHRoIC8gZGltZW5zaW9ucy5oZWlnaHRcblxuICAgICAgICAvLyBDYWxjdWxhdGUgcmVzaXplV2lkdGggYmFzZWQgb24gb3JpZ2luYWwgYXNwZWN0IHJhdGlvIGlmIGl0J3MgdW5kZWZpbmVkXG4gICAgICAgIGlmIChyZXNpemVIZWlnaHQgJiYgIXJlc2l6ZVdpZHRoKSB7XG4gICAgICAgICAgcmVzaXplV2lkdGggPSBNYXRoLnJvdW5kKHJlc2l6ZUhlaWdodCAqIG9yaWdpbmFsQXNwZWN0UmF0aW8pXG4gICAgICAgIH1cblxuICAgICAgICAvLyBDYWxjdWxhdGUgcmVzaXplSGVpZ2h0IGJhc2VkIG9uIG9yaWdpbmFsIGFzcGVjdCByYXRpbyBpZiBpdCdzIHVuZGVmaW5lZFxuICAgICAgICBpZiAocmVzaXplV2lkdGggJiYgIXJlc2l6ZUhlaWdodCkge1xuICAgICAgICAgIHJlc2l6ZUhlaWdodCA9IE1hdGgucm91bmQocmVzaXplV2lkdGggLyBvcmlnaW5hbEFzcGVjdFJhdGlvKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFyZXNpemVIZWlnaHQpIHJlc2l6ZUhlaWdodCA9IHJlc2l6ZUltYWdlTWV0YS5oZWlnaHRcbiAgICAgICAgaWYgKCFyZXNpemVXaWR0aCkgcmVzaXplV2lkdGggPSByZXNpemVJbWFnZU1ldGEud2lkdGhcblxuICAgICAgICBjb25zdCByZXNpemVBc3BlY3RSYXRpbyA9IHJlc2l6ZVdpZHRoIC8gcmVzaXplSGVpZ2h0XG4gICAgICAgIGNvbnN0IHByaW9yaXRpemVIZWlnaHQgPSByZXNpemVBc3BlY3RSYXRpbyA8IG9yaWdpbmFsQXNwZWN0UmF0aW9cbiAgICAgICAgLy8gU2NhbGVzIHRoZSBpbWFnZSBiZWZvcmUgZXh0cmFjdGluZyBmcm9tIGl0XG4gICAgICAgIHJlc2l6ZWQgPSBpbWFnZVRvUmVzaXplLnJlc2l6ZSh7XG4gICAgICAgICAgaGVpZ2h0OiBwcmlvcml0aXplSGVpZ2h0ID8gcmVzaXplSGVpZ2h0IDogdW5kZWZpbmVkLFxuICAgICAgICAgIHdpZHRoOiBwcmlvcml0aXplSGVpZ2h0ID8gdW5kZWZpbmVkIDogcmVzaXplV2lkdGgsXG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3QgbWV0YWRhdGFBcHBlbmRlZEZpbGUgPSBhd2FpdCBvcHRpb25hbGx5QXBwZW5kTWV0YWRhdGEoe1xuICAgICAgICAgIHJlcSxcbiAgICAgICAgICBzaGFycEZpbGU6IHJlc2l6ZWQsXG4gICAgICAgICAgd2l0aE1ldGFkYXRhLFxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIE11c3QgcmVhZCBmcm9tIGJ1ZmZlciwgcmVzaXplZC5tZXRhZGF0YSB3aWxsIHJldHVybiB0aGUgb3JpZ2luYWwgaW1hZ2UgbWV0YWRhdGFcbiAgICAgICAgY29uc3QgeyBpbmZvIH0gPSBhd2FpdCBtZXRhZGF0YUFwcGVuZGVkRmlsZS50b0J1ZmZlcih7IHJlc29sdmVXaXRoT2JqZWN0OiB0cnVlIH0pXG5cbiAgICAgICAgcmVzaXplSW1hZ2VNZXRhLmhlaWdodCA9IGV4dHJhY3RIZWlnaHRGcm9tSW1hZ2Uoe1xuICAgICAgICAgIC4uLm9yaWdpbmFsSW1hZ2VNZXRhLFxuICAgICAgICAgIGhlaWdodDogaW5mby5oZWlnaHQsXG4gICAgICAgIH0pXG4gICAgICAgIHJlc2l6ZUltYWdlTWV0YS53aWR0aCA9IGluZm8ud2lkdGhcblxuICAgICAgICBjb25zdCBoYWxmUmVzaXplWCA9IHJlc2l6ZVdpZHRoIC8gMlxuICAgICAgICBjb25zdCB4Rm9jYWxDZW50ZXIgPSByZXNpemVJbWFnZU1ldGEud2lkdGggKiAoaW5jb21pbmdGb2NhbFBvaW50LnggLyAxMDApXG4gICAgICAgIGNvbnN0IGNhbGN1bGF0ZWRSaWdodFBpeGVsQm91bmQgPSB4Rm9jYWxDZW50ZXIgKyBoYWxmUmVzaXplWFxuICAgICAgICBsZXQgbGVmdEJvdW5kID0geEZvY2FsQ2VudGVyIC0gaGFsZlJlc2l6ZVhcblxuICAgICAgICAvLyBpZiB0aGUgcmlnaHQgYm91bmQgaXMgZ3JlYXRlciB0aGFuIHRoZSBpbWFnZSB3aWR0aCwgYWRqdXN0IHRoZSBsZWZ0IGJvdW5kXG4gICAgICAgIC8vIGtlZXBpbmcgZm9jdXMgb24gdGhlIHJpZ2h0XG4gICAgICAgIGlmIChjYWxjdWxhdGVkUmlnaHRQaXhlbEJvdW5kID4gcmVzaXplSW1hZ2VNZXRhLndpZHRoKSB7XG4gICAgICAgICAgbGVmdEJvdW5kID0gcmVzaXplSW1hZ2VNZXRhLndpZHRoIC0gcmVzaXplV2lkdGhcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIHRoZSBsZWZ0IGJvdW5kIGlzIGxlc3MgdGhhbiAwLCBhZGp1c3QgdGhlIGxlZnQgYm91bmQgdG8gMFxuICAgICAgICAvLyBrZWVwaW5nIHRoZSBmb2N1cyBvbiB0aGUgbGVmdFxuICAgICAgICBpZiAobGVmdEJvdW5kIDwgMCkgbGVmdEJvdW5kID0gMFxuXG4gICAgICAgIGNvbnN0IGhhbGZSZXNpemVZID0gcmVzaXplSGVpZ2h0IC8gMlxuICAgICAgICBjb25zdCB5Rm9jYWxDZW50ZXIgPSByZXNpemVJbWFnZU1ldGEuaGVpZ2h0ICogKGluY29taW5nRm9jYWxQb2ludC55IC8gMTAwKVxuICAgICAgICBjb25zdCBjYWxjdWxhdGVkQm90dG9tUGl4ZWxCb3VuZCA9IHlGb2NhbENlbnRlciArIGhhbGZSZXNpemVZXG4gICAgICAgIGxldCB0b3BCb3VuZCA9IHlGb2NhbENlbnRlciAtIGhhbGZSZXNpemVZXG5cbiAgICAgICAgLy8gaWYgdGhlIGJvdHRvbSBib3VuZCBpcyBncmVhdGVyIHRoYW4gdGhlIGltYWdlIGhlaWdodCwgYWRqdXN0IHRoZSB0b3AgYm91bmRcbiAgICAgICAgLy8ga2VlcGluZyB0aGUgaW1hZ2UgYXMgZmFyIHJpZ2h0IGFzIHBvc3NpYmxlXG4gICAgICAgIGlmIChjYWxjdWxhdGVkQm90dG9tUGl4ZWxCb3VuZCA+IHJlc2l6ZUltYWdlTWV0YS5oZWlnaHQpIHtcbiAgICAgICAgICB0b3BCb3VuZCA9IHJlc2l6ZUltYWdlTWV0YS5oZWlnaHQgLSByZXNpemVIZWlnaHRcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIHRoZSB0b3AgYm91bmQgaXMgbGVzcyB0aGFuIDAsIGFkanVzdCB0aGUgdG9wIGJvdW5kIHRvIDBcbiAgICAgICAgLy8ga2VlcGluZyB0aGUgaW1hZ2UgZm9jdXMgbmVhciB0aGUgdG9wXG4gICAgICAgIGlmICh0b3BCb3VuZCA8IDApIHRvcEJvdW5kID0gMFxuXG4gICAgICAgIHJlc2l6ZWQgPSByZXNpemVkLmV4dHJhY3Qoe1xuICAgICAgICAgIGhlaWdodDogcmVzaXplSGVpZ2h0LFxuICAgICAgICAgIGxlZnQ6IE1hdGguZmxvb3IobGVmdEJvdW5kKSxcbiAgICAgICAgICB0b3A6IE1hdGguZmxvb3IodG9wQm91bmQpLFxuICAgICAgICAgIHdpZHRoOiByZXNpemVXaWR0aCxcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc2l6ZWQgPSBpbWFnZVRvUmVzaXplLnJlc2l6ZShpbWFnZVJlc2l6ZUNvbmZpZylcbiAgICAgIH1cblxuICAgICAgaWYgKGltYWdlUmVzaXplQ29uZmlnLmZvcm1hdE9wdGlvbnMpIHtcbiAgICAgICAgcmVzaXplZCA9IHJlc2l6ZWQudG9Gb3JtYXQoXG4gICAgICAgICAgaW1hZ2VSZXNpemVDb25maWcuZm9ybWF0T3B0aW9ucy5mb3JtYXQsXG4gICAgICAgICAgaW1hZ2VSZXNpemVDb25maWcuZm9ybWF0T3B0aW9ucy5vcHRpb25zLFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIGlmIChpbWFnZVJlc2l6ZUNvbmZpZy50cmltT3B0aW9ucykge1xuICAgICAgICByZXNpemVkID0gcmVzaXplZC50cmltKGltYWdlUmVzaXplQ29uZmlnLnRyaW1PcHRpb25zKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXRhZGF0YUFwcGVuZGVkRmlsZSA9IGF3YWl0IG9wdGlvbmFsbHlBcHBlbmRNZXRhZGF0YSh7XG4gICAgICAgIHJlcSxcbiAgICAgICAgc2hhcnBGaWxlOiByZXNpemVkLFxuICAgICAgICB3aXRoTWV0YWRhdGEsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCB7IGRhdGE6IGJ1ZmZlckRhdGEsIGluZm86IGJ1ZmZlckluZm8gfSA9IGF3YWl0IG1ldGFkYXRhQXBwZW5kZWRGaWxlLnRvQnVmZmVyKHtcbiAgICAgICAgcmVzb2x2ZVdpdGhPYmplY3Q6IHRydWUsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBzYW5pdGl6ZWRJbWFnZSA9IGdldFNhbml0aXplZEltYWdlRGF0YShzYXZlZEZpbGVuYW1lKVxuXG4gICAgICBpZiAocmVxLnBheWxvYWRVcGxvYWRTaXplcykge1xuICAgICAgICByZXEucGF5bG9hZFVwbG9hZFNpemVzW2ltYWdlUmVzaXplQ29uZmlnLm5hbWVdID0gYnVmZmVyRGF0YVxuICAgICAgfVxuXG4gICAgICBjb25zdCBtaW1lSW5mbyA9IGF3YWl0IGZyb21CdWZmZXIoYnVmZmVyRGF0YSlcblxuICAgICAgY29uc3QgaW1hZ2VOYW1lV2l0aERpbWVuc2lvbnMgPSBpbWFnZVJlc2l6ZUNvbmZpZy5nZW5lcmF0ZUltYWdlTmFtZVxuICAgICAgICA/IGltYWdlUmVzaXplQ29uZmlnLmdlbmVyYXRlSW1hZ2VOYW1lKHtcbiAgICAgICAgICAgIGV4dGVuc2lvbjogbWltZUluZm8/LmV4dCB8fCBzYW5pdGl6ZWRJbWFnZS5leHQsXG4gICAgICAgICAgICBoZWlnaHQ6IGV4dHJhY3RIZWlnaHRGcm9tSW1hZ2Uoe1xuICAgICAgICAgICAgICAuLi5vcmlnaW5hbEltYWdlTWV0YSxcbiAgICAgICAgICAgICAgaGVpZ2h0OiBidWZmZXJJbmZvLmhlaWdodCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgb3JpZ2luYWxOYW1lOiBzYW5pdGl6ZWRJbWFnZS5uYW1lLFxuICAgICAgICAgICAgc2l6ZU5hbWU6IGltYWdlUmVzaXplQ29uZmlnLm5hbWUsXG4gICAgICAgICAgICB3aWR0aDogYnVmZmVySW5mby53aWR0aCxcbiAgICAgICAgICB9KVxuICAgICAgICA6IGNyZWF0ZUltYWdlTmFtZSh7XG4gICAgICAgICAgICBleHRlbnNpb246IG1pbWVJbmZvPy5leHQgfHwgc2FuaXRpemVkSW1hZ2UuZXh0LFxuICAgICAgICAgICAgaGVpZ2h0OiBleHRyYWN0SGVpZ2h0RnJvbUltYWdlKHtcbiAgICAgICAgICAgICAgLi4ub3JpZ2luYWxJbWFnZU1ldGEsXG4gICAgICAgICAgICAgIGhlaWdodDogYnVmZmVySW5mby5oZWlnaHQsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG91dHB1dEltYWdlTmFtZTogc2FuaXRpemVkSW1hZ2UubmFtZSxcbiAgICAgICAgICAgIHdpZHRoOiBidWZmZXJJbmZvLndpZHRoLFxuICAgICAgICAgIH0pXG5cbiAgICAgIGNvbnN0IGltYWdlUGF0aCA9IGAke3N0YXRpY1BhdGh9LyR7aW1hZ2VOYW1lV2l0aERpbWVuc2lvbnN9YFxuXG4gICAgICBpZiAoYXdhaXQgZmlsZUV4aXN0cyhpbWFnZVBhdGgpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZnMudW5saW5rU3luYyhpbWFnZVBhdGgpXG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIElnbm9yZSB1bmxpbmsgZXJyb3JzXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBoZWlnaHQsIHNpemUsIHdpZHRoIH0gPSBidWZmZXJJbmZvXG4gICAgICByZXR1cm4gY3JlYXRlUmVzdWx0KHtcbiAgICAgICAgbmFtZTogaW1hZ2VSZXNpemVDb25maWcubmFtZSxcbiAgICAgICAgZmlsZW5hbWU6IGltYWdlTmFtZVdpdGhEaW1lbnNpb25zLFxuICAgICAgICBmaWxlc2l6ZTogc2l6ZSxcbiAgICAgICAgaGVpZ2h0OlxuICAgICAgICAgIGZpbGVJc0FuaW1hdGVkVHlwZSAmJiBvcmlnaW5hbEltYWdlTWV0YS5wYWdlcyA/IGhlaWdodCAvIG9yaWdpbmFsSW1hZ2VNZXRhLnBhZ2VzIDogaGVpZ2h0LFxuICAgICAgICBtaW1lVHlwZTogbWltZUluZm8/Lm1pbWUgfHwgbWltZVR5cGUsXG4gICAgICAgIHNpemVzVG9TYXZlOiBbeyBidWZmZXI6IGJ1ZmZlckRhdGEsIHBhdGg6IGltYWdlUGF0aCB9XSxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KVxuICAgIH0pLFxuICApXG5cbiAgcmV0dXJuIHJlc3VsdHMucmVkdWNlKFxuICAgIChhY2MsIHJlc3VsdCkgPT4ge1xuICAgICAgT2JqZWN0LmFzc2lnbihhY2Muc2l6ZURhdGEsIHJlc3VsdC5zaXplRGF0YSlcbiAgICAgIGFjYy5zaXplc1RvU2F2ZS5wdXNoKC4uLnJlc3VsdC5zaXplc1RvU2F2ZSlcbiAgICAgIHJldHVybiBhY2NcbiAgICB9LFxuICAgIHsgLi4uZGVmYXVsdFJlc3VsdCB9LFxuICApXG59XG4iXSwibmFtZXMiOlsicmVzaXplQW5kVHJhbnNmb3JtSW1hZ2VTaXplcyIsImdldFNhbml0aXplZEltYWdlRGF0YSIsInNvdXJjZUltYWdlIiwiZXh0ZW5zaW9uIiwic3BsaXQiLCJwb3AiLCJuYW1lIiwic2FuaXRpemUiLCJzdWJzdHJpbmciLCJsYXN0SW5kZXhPZiIsImV4dCIsImNyZWF0ZUltYWdlTmFtZSIsImhlaWdodCIsIm91dHB1dEltYWdlTmFtZSIsIndpZHRoIiwiY3JlYXRlUmVzdWx0IiwiZmlsZW5hbWUiLCJmaWxlc2l6ZSIsIm1pbWVUeXBlIiwic2l6ZXNUb1NhdmUiLCJzaXplRGF0YSIsImdldEltYWdlUmVzaXplQWN0aW9uIiwiZGltZW5zaW9ucyIsIm9yaWdpbmFsSW1hZ2UiLCJoYXNGb2NhbFBvaW50IiwiaW1hZ2VSZXNpemVDb25maWciLCJmaXQiLCJ0YXJnZXRIZWlnaHQiLCJ0YXJnZXRXaWR0aCIsIndpdGhvdXRFbmxhcmdlbWVudCIsIndpdGhvdXRSZWR1Y3Rpb24iLCJvcmlnaW5hbEltYWdlSXNTbWFsbGVyWEFuZFkiLCJ1bmRlZmluZWQiLCJvcmlnaW5hbEltYWdlSXNTbWFsbGVyWE9yWSIsImlzTnVtYmVyIiwidGFyZ2V0QXNwZWN0UmF0aW8iLCJvcmlnaW5hbEFzcGVjdFJhdGlvIiwiYXBwbHlQYXlsb2FkQWRqdXN0bWVudHMiLCJvcmlnaW5hbCIsInNraXBFbmxhcmdlbWVudCIsInNraXBSZWR1Y3Rpb24iLCJzYW5pdGl6ZVJlc2l6ZUNvbmZpZyIsInJlc2l6ZUNvbmZpZyIsInBvc2l0aW9uIiwiZXh0cmFjdEhlaWdodEZyb21JbWFnZSIsInNoYXJwTWV0YWRhdGEiLCJwYWdlcyIsImNvbmZpZyIsImZpbGUiLCJyZXEiLCJzYXZlZEZpbGVuYW1lIiwic3RhdGljUGF0aCIsInVwbG9hZEVkaXRzIiwid2l0aE1ldGFkYXRhIiwiZm9jYWxQb2ludCIsImZvY2FsUG9pbnRFbmFibGVkIiwiaW1hZ2VTaXplcyIsInVwbG9hZCIsImluY29taW5nRm9jYWxQb2ludCIsIngiLCJNYXRoIiwicm91bmQiLCJ5IiwiZGVmYXVsdFJlc3VsdCIsImZpbGVJc0FuaW1hdGVkVHlwZSIsImluY2x1ZGVzIiwibWltZXR5cGUiLCJzaGFycE9wdGlvbnMiLCJhbmltYXRlZCIsInNoYXJwQmFzZSIsInNoYXJwIiwidGVtcEZpbGVQYXRoIiwiZGF0YSIsInJvdGF0ZSIsIm9yaWdpbmFsSW1hZ2VNZXRhIiwibWV0YWRhdGEiLCJyZXNpemVJbWFnZU1ldGEiLCJyZXN1bHRzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsInJlc2l6ZUFjdGlvbiIsIkJvb2xlYW4iLCJpbWFnZVRvUmVzaXplIiwiY2xvbmUiLCJyZXNpemVkIiwicmVzaXplSGVpZ2h0IiwicmVzaXplV2lkdGgiLCJyZXNpemVBc3BlY3RSYXRpbyIsInByaW9yaXRpemVIZWlnaHQiLCJyZXNpemUiLCJtZXRhZGF0YUFwcGVuZGVkRmlsZSIsIm9wdGlvbmFsbHlBcHBlbmRNZXRhZGF0YSIsInNoYXJwRmlsZSIsImluZm8iLCJ0b0J1ZmZlciIsInJlc29sdmVXaXRoT2JqZWN0IiwiaGFsZlJlc2l6ZVgiLCJ4Rm9jYWxDZW50ZXIiLCJjYWxjdWxhdGVkUmlnaHRQaXhlbEJvdW5kIiwibGVmdEJvdW5kIiwiaGFsZlJlc2l6ZVkiLCJ5Rm9jYWxDZW50ZXIiLCJjYWxjdWxhdGVkQm90dG9tUGl4ZWxCb3VuZCIsInRvcEJvdW5kIiwiZXh0cmFjdCIsImxlZnQiLCJmbG9vciIsInRvcCIsImZvcm1hdE9wdGlvbnMiLCJ0b0Zvcm1hdCIsImZvcm1hdCIsIm9wdGlvbnMiLCJ0cmltT3B0aW9ucyIsInRyaW0iLCJidWZmZXJEYXRhIiwiYnVmZmVySW5mbyIsInNhbml0aXplZEltYWdlIiwicGF5bG9hZFVwbG9hZFNpemVzIiwibWltZUluZm8iLCJmcm9tQnVmZmVyIiwiaW1hZ2VOYW1lV2l0aERpbWVuc2lvbnMiLCJnZW5lcmF0ZUltYWdlTmFtZSIsIm9yaWdpbmFsTmFtZSIsInNpemVOYW1lIiwiaW1hZ2VQYXRoIiwiZmlsZUV4aXN0cyIsImZzIiwidW5saW5rU3luYyIsInNpemUiLCJtaW1lIiwiYnVmZmVyIiwicGF0aCIsInJlZHVjZSIsImFjYyIsInJlc3VsdCIsIk9iamVjdCIsImFzc2lnbiIsInB1c2giXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiI7Ozs7K0JBMlBBOzs7Ozs7Ozs7Ozs7O0NBYUMsR0FDRDs7O2VBQThCQTs7OzBCQXRRSDsyREFDWjt5RUFDTTs4REFDSDswQkFhTzttRUFDRjswQ0FDcUM7Ozs7OztBQTBCNUQ7Ozs7O0NBS0MsR0FDRCxNQUFNQyx3QkFBd0IsQ0FBQ0M7SUFDN0IsTUFBTUMsWUFBWUQsWUFBWUUsS0FBSyxDQUFDLEtBQUtDLEdBQUc7SUFDNUMsTUFBTUMsT0FBT0MsSUFBQUEseUJBQVEsRUFBQ0wsWUFBWU0sU0FBUyxDQUFDLEdBQUdOLFlBQVlPLFdBQVcsQ0FBQyxTQUFTUDtJQUNoRixPQUFPO1FBQUVJO1FBQU1JLEtBQUtQO0lBQVU7QUFDaEM7QUFzQkEsTUFBTVEsa0JBQWtCLENBQUMsRUFDdkJSLFNBQVMsRUFDVFMsTUFBTSxFQUNOQyxlQUFlLEVBQ2ZDLEtBQUssRUFDZTtJQUNwQixPQUFPLENBQUMsRUFBRUQsZ0JBQWdCLENBQUMsRUFBRUMsTUFBTSxDQUFDLEVBQUVGLE9BQU8sQ0FBQyxFQUFFVCxVQUFVLENBQUM7QUFDN0Q7QUFZQTs7Ozs7Ozs7Ozs7OztDQWFDLEdBQ0QsTUFBTVksZUFBZSxDQUFDLEVBQ3BCVCxJQUFJLEVBQ0pVLFdBQVcsSUFBSSxFQUNmQyxXQUFXLElBQUksRUFDZkwsU0FBUyxJQUFJLEVBQ2JNLFdBQVcsSUFBSSxFQUNmQyxjQUFjLEVBQUUsRUFDaEJMLFFBQVEsSUFBSSxFQUNLO0lBQ2pCLE9BQU87UUFDTE0sVUFBVTtZQUNSLENBQUNkLEtBQUssRUFBRTtnQkFDTlU7Z0JBQ0FDO2dCQUNBTDtnQkFDQU07Z0JBQ0FKO1lBQ0Y7UUFDRjtRQUNBSztJQUNGO0FBQ0Y7QUFFQTs7Ozs7Ozs7Ozs7Ozs7OztDQWdCQyxHQUNELE1BQU1FLHVCQUF1QixDQUFDLEVBQzVCQyxZQUFZQyxhQUFhLEVBQ3pCQyxhQUFhLEVBQ2JDLGlCQUFpQixFQUtsQjtJQUNDLE1BQU0sRUFDSkMsR0FBRyxFQUNIZCxRQUFRZSxZQUFZLEVBQ3BCYixPQUFPYyxXQUFXLEVBQ2xCQyxrQkFBa0IsRUFDbEJDLGdCQUFnQixFQUNqQixHQUFHTDtJQUVKLG9GQUFvRjtJQUNwRixJQUFJRSxnQkFBZ0JDLGFBQWE7UUFDL0IsTUFBTUcsOEJBQ0pSLGNBQWNULEtBQUssR0FBR2MsZUFBZUwsY0FBY1gsTUFBTSxHQUFHZTtRQUM5RCxJQUFJRSx1QkFBdUJHLGFBQWFELDZCQUE2QjtZQUNuRSxPQUFPLE9BQU8seUNBQXlDOztRQUN6RDtJQUNGO0lBRUEsTUFBTUUsNkJBQ0pWLGNBQWNULEtBQUssR0FBR2MsZUFBZUwsY0FBY1gsTUFBTSxHQUFHZTtJQUM5RCxJQUFJRCxRQUFRLGFBQWFBLFFBQVEsVUFBVSxPQUFPO0lBQ2xELElBQUksQ0FBQ1EsSUFBQUEsa0JBQVEsRUFBQ1AsaUJBQWlCLENBQUNPLElBQUFBLGtCQUFRLEVBQUNOLGNBQWMsT0FBTztJQUU5RCxNQUFNTyxvQkFBb0JQLGNBQWNEO0lBQ3hDLE1BQU1TLHNCQUFzQmIsY0FBY1QsS0FBSyxHQUFHUyxjQUFjWCxNQUFNO0lBQ3RFLElBQUl3Qix3QkFBd0JELG1CQUFtQixPQUFPO0lBRXRELElBQUlOLHNCQUFzQkksNEJBQTRCLE9BQU87SUFDN0QsSUFBSUgsb0JBQW9CLENBQUNHLDRCQUE0QixPQUFPO0lBRTVELE9BQU9ULGdCQUFnQix5QkFBeUI7QUFDbEQ7QUFFQTs7Ozs7O0NBTUMsR0FDRCxNQUFNYSwwQkFBMEIsQ0FDOUIsRUFBRVgsR0FBRyxFQUFFZCxNQUFNLEVBQUVFLEtBQUssRUFBRWUsa0JBQWtCLEVBQUVDLGdCQUFnQixFQUFhLEVBQ3ZFUTtJQUVBLElBQUlaLFFBQVEsYUFBYUEsUUFBUSxVQUFVLE9BQU87SUFDbEQsSUFBSSxDQUFDUSxJQUFBQSxrQkFBUSxFQUFDdEIsV0FBVyxDQUFDc0IsSUFBQUEsa0JBQVEsRUFBQ3BCLFFBQVEsT0FBTztJQUVsRCxNQUFNcUIsb0JBQW9CckIsUUFBUUY7SUFDbEMsTUFBTXdCLHNCQUFzQkUsU0FBU3hCLEtBQUssR0FBR3dCLFNBQVMxQixNQUFNO0lBQzVELElBQUl3Qix3QkFBd0JELG1CQUFtQixPQUFPO0lBRXRELE1BQU1JLGtCQUFrQlYsc0JBQXVCUyxDQUFBQSxTQUFTMUIsTUFBTSxHQUFHQSxVQUFVMEIsU0FBU3hCLEtBQUssR0FBR0EsS0FBSTtJQUNoRyxNQUFNMEIsZ0JBQWdCVixvQkFBcUJRLENBQUFBLFNBQVMxQixNQUFNLEdBQUdBLFVBQVUwQixTQUFTeEIsS0FBSyxHQUFHQSxLQUFJO0lBQzVGLElBQUl5QixtQkFBbUJDLGVBQWUsT0FBTztJQUU3QyxPQUFPO0FBQ1Q7QUFFQTs7Ozs7OztDQU9DLEdBQ0QsTUFBTUMsdUJBQXVCLENBQUNDO0lBQzVCLElBQUlBLGFBQWFaLGdCQUFnQixFQUFFO1FBQ2pDLE9BQU87WUFDTCxHQUFHWSxZQUFZO1lBQ2Ysc0ZBQXNGO1lBQ3RGaEIsS0FBS2dCLGNBQWNoQixPQUFPO1lBQzFCaUIsVUFBVUQsY0FBY0MsWUFBWTtRQUN0QztJQUNGO0lBQ0EsT0FBT0Q7QUFDVDtBQUVBOzs7OztDQUtDLEdBQ0QsU0FBU0UsdUJBQXVCQyxhQUE0QjtJQUMxRCxJQUFJQSxlQUFlQyxPQUFPO1FBQ3hCLE9BQU9ELGNBQWNqQyxNQUFNLEdBQUdpQyxjQUFjQyxLQUFLO0lBQ25EO0lBQ0EsT0FBT0QsY0FBY2pDLE1BQU07QUFDN0I7QUFnQmUsZUFBZVosNkJBQTZCLEVBQ3pEK0MsTUFBTSxFQUNOekIsVUFBVSxFQUNWMEIsSUFBSSxFQUNKOUIsUUFBUSxFQUNSK0IsR0FBRyxFQUNIQyxhQUFhLEVBQ2JDLFVBQVUsRUFDVkMsV0FBVyxFQUNYQyxZQUFZLEVBQ0Q7SUFDWCxNQUFNLEVBQUVDLFlBQVlDLG9CQUFvQixJQUFJLEVBQUVDLFVBQVUsRUFBRSxHQUFHVCxPQUFPVSxNQUFNO0lBRTFFLDBCQUEwQjtJQUMxQixNQUFNQyxxQkFBcUJOLGFBQWFFLGFBQ3BDO1FBQ0VLLEdBQUd6QixJQUFBQSxrQkFBUSxFQUFDa0IsWUFBWUUsVUFBVSxDQUFDSyxDQUFDLElBQUlDLEtBQUtDLEtBQUssQ0FBQ1QsWUFBWUUsVUFBVSxDQUFDSyxDQUFDLElBQUk7UUFDL0VHLEdBQUc1QixJQUFBQSxrQkFBUSxFQUFDa0IsWUFBWUUsVUFBVSxDQUFDUSxDQUFDLElBQUlGLEtBQUtDLEtBQUssQ0FBQ1QsWUFBWUUsVUFBVSxDQUFDUSxDQUFDLElBQUk7SUFDakYsSUFDQTlCO0lBRUosTUFBTStCLGdCQUFrQztRQUN0QyxHQUFJUixxQkFBcUJHLHNCQUFzQjtZQUFFSixZQUFZSTtRQUFtQixDQUFDO1FBQ2pGdEMsVUFBVSxDQUFDO1FBQ1hELGFBQWEsRUFBRTtJQUNqQjtJQUVBLHdEQUF3RDtJQUN4RCxJQUFJLENBQUNxQyxZQUFZLE9BQU9PO0lBRXhCLG9DQUFvQztJQUNwQyxNQUFNQyxxQkFBcUI7UUFBQztRQUFjO1FBQWE7S0FBYSxDQUFDQyxRQUFRLENBQUNqQixLQUFLa0IsUUFBUTtJQUMzRixNQUFNQyxlQUE2QixDQUFDO0lBRXBDLElBQUlILG9CQUFvQkcsYUFBYUMsUUFBUSxHQUFHO0lBRWhELE1BQU1DLFlBQStCQyxJQUFBQSxjQUFLLEVBQUN0QixLQUFLdUIsWUFBWSxJQUFJdkIsS0FBS3dCLElBQUksRUFBRUwsY0FBY00sTUFBTSxHQUFHLG1HQUFtRzs7SUFDck0sTUFBTUMsb0JBQW9CLE1BQU1MLFVBQVVNLFFBQVE7SUFFbEQsTUFBTUMsa0JBQWtCO1FBQ3RCaEUsUUFBUWdDLHVCQUF1QjhCO1FBQy9CNUQsT0FBTzRELGtCQUFrQjVELEtBQUs7SUFDaEM7SUFFQSxNQUFNK0QsVUFBOEIsTUFBTUMsUUFBUUMsR0FBRyxDQUNuRHZCLFdBQVd3QixHQUFHLENBQUMsT0FBT3ZEO1FBQ3BCQSxvQkFBb0JnQixxQkFBcUJoQjtRQUV6QyxNQUFNd0QsZUFBZTVELHFCQUFxQjtZQUN4Q0M7WUFDQUUsZUFBZTBELFFBQVF4QjtZQUN2QmpDO1FBQ0Y7UUFDQSxJQUFJd0QsaUJBQWlCLFFBQVEsT0FBT2xFLGFBQWE7WUFBRVQsTUFBTW1CLGtCQUFrQm5CLElBQUk7UUFBQztRQUVoRixNQUFNNkUsZ0JBQWdCZCxVQUFVZSxLQUFLO1FBQ3JDLElBQUlDLFVBQVVGO1FBRWQsSUFBSUYsaUJBQWlCLHdCQUF3QjtZQUMzQyxJQUFJLEVBQUVyRSxRQUFRMEUsWUFBWSxFQUFFeEUsT0FBT3lFLFdBQVcsRUFBRSxHQUFHOUQ7WUFFbkQsTUFBTVcsc0JBQXNCZCxXQUFXUixLQUFLLEdBQUdRLFdBQVdWLE1BQU07WUFFaEUseUVBQXlFO1lBQ3pFLElBQUkwRSxnQkFBZ0IsQ0FBQ0MsYUFBYTtnQkFDaENBLGNBQWMzQixLQUFLQyxLQUFLLENBQUN5QixlQUFlbEQ7WUFDMUM7WUFFQSwwRUFBMEU7WUFDMUUsSUFBSW1ELGVBQWUsQ0FBQ0QsY0FBYztnQkFDaENBLGVBQWUxQixLQUFLQyxLQUFLLENBQUMwQixjQUFjbkQ7WUFDMUM7WUFFQSxJQUFJLENBQUNrRCxjQUFjQSxlQUFlVixnQkFBZ0JoRSxNQUFNO1lBQ3hELElBQUksQ0FBQzJFLGFBQWFBLGNBQWNYLGdCQUFnQjlELEtBQUs7WUFFckQsTUFBTTBFLG9CQUFvQkQsY0FBY0Q7WUFDeEMsTUFBTUcsbUJBQW1CRCxvQkFBb0JwRDtZQUM3Qyw2Q0FBNkM7WUFDN0NpRCxVQUFVRixjQUFjTyxNQUFNLENBQUM7Z0JBQzdCOUUsUUFBUTZFLG1CQUFtQkgsZUFBZXREO2dCQUMxQ2xCLE9BQU8yRSxtQkFBbUJ6RCxZQUFZdUQ7WUFDeEM7WUFFQSxNQUFNSSx1QkFBdUIsTUFBTUMsSUFBQUEsa0RBQXdCLEVBQUM7Z0JBQzFEM0M7Z0JBQ0E0QyxXQUFXUjtnQkFDWGhDO1lBQ0Y7WUFFQSxrRkFBa0Y7WUFDbEYsTUFBTSxFQUFFeUMsSUFBSSxFQUFFLEdBQUcsTUFBTUgscUJBQXFCSSxRQUFRLENBQUM7Z0JBQUVDLG1CQUFtQjtZQUFLO1lBRS9FcEIsZ0JBQWdCaEUsTUFBTSxHQUFHZ0MsdUJBQXVCO2dCQUM5QyxHQUFHOEIsaUJBQWlCO2dCQUNwQjlELFFBQVFrRixLQUFLbEYsTUFBTTtZQUNyQjtZQUNBZ0UsZ0JBQWdCOUQsS0FBSyxHQUFHZ0YsS0FBS2hGLEtBQUs7WUFFbEMsTUFBTW1GLGNBQWNWLGNBQWM7WUFDbEMsTUFBTVcsZUFBZXRCLGdCQUFnQjlELEtBQUssR0FBSTRDLENBQUFBLG1CQUFtQkMsQ0FBQyxHQUFHLEdBQUU7WUFDdkUsTUFBTXdDLDRCQUE0QkQsZUFBZUQ7WUFDakQsSUFBSUcsWUFBWUYsZUFBZUQ7WUFFL0IsNEVBQTRFO1lBQzVFLDZCQUE2QjtZQUM3QixJQUFJRSw0QkFBNEJ2QixnQkFBZ0I5RCxLQUFLLEVBQUU7Z0JBQ3JEc0YsWUFBWXhCLGdCQUFnQjlELEtBQUssR0FBR3lFO1lBQ3RDO1lBRUEsK0RBQStEO1lBQy9ELGdDQUFnQztZQUNoQyxJQUFJYSxZQUFZLEdBQUdBLFlBQVk7WUFFL0IsTUFBTUMsY0FBY2YsZUFBZTtZQUNuQyxNQUFNZ0IsZUFBZTFCLGdCQUFnQmhFLE1BQU0sR0FBSThDLENBQUFBLG1CQUFtQkksQ0FBQyxHQUFHLEdBQUU7WUFDeEUsTUFBTXlDLDZCQUE2QkQsZUFBZUQ7WUFDbEQsSUFBSUcsV0FBV0YsZUFBZUQ7WUFFOUIsNkVBQTZFO1lBQzdFLDZDQUE2QztZQUM3QyxJQUFJRSw2QkFBNkIzQixnQkFBZ0JoRSxNQUFNLEVBQUU7Z0JBQ3ZENEYsV0FBVzVCLGdCQUFnQmhFLE1BQU0sR0FBRzBFO1lBQ3RDO1lBRUEsNkRBQTZEO1lBQzdELHVDQUF1QztZQUN2QyxJQUFJa0IsV0FBVyxHQUFHQSxXQUFXO1lBRTdCbkIsVUFBVUEsUUFBUW9CLE9BQU8sQ0FBQztnQkFDeEI3RixRQUFRMEU7Z0JBQ1JvQixNQUFNOUMsS0FBSytDLEtBQUssQ0FBQ1A7Z0JBQ2pCUSxLQUFLaEQsS0FBSytDLEtBQUssQ0FBQ0g7Z0JBQ2hCMUYsT0FBT3lFO1lBQ1Q7UUFDRixPQUFPO1lBQ0xGLFVBQVVGLGNBQWNPLE1BQU0sQ0FBQ2pFO1FBQ2pDO1FBRUEsSUFBSUEsa0JBQWtCb0YsYUFBYSxFQUFFO1lBQ25DeEIsVUFBVUEsUUFBUXlCLFFBQVEsQ0FDeEJyRixrQkFBa0JvRixhQUFhLENBQUNFLE1BQU0sRUFDdEN0RixrQkFBa0JvRixhQUFhLENBQUNHLE9BQU87UUFFM0M7UUFFQSxJQUFJdkYsa0JBQWtCd0YsV0FBVyxFQUFFO1lBQ2pDNUIsVUFBVUEsUUFBUTZCLElBQUksQ0FBQ3pGLGtCQUFrQndGLFdBQVc7UUFDdEQ7UUFFQSxNQUFNdEIsdUJBQXVCLE1BQU1DLElBQUFBLGtEQUF3QixFQUFDO1lBQzFEM0M7WUFDQTRDLFdBQVdSO1lBQ1hoQztRQUNGO1FBRUEsTUFBTSxFQUFFbUIsTUFBTTJDLFVBQVUsRUFBRXJCLE1BQU1zQixVQUFVLEVBQUUsR0FBRyxNQUFNekIscUJBQXFCSSxRQUFRLENBQUM7WUFDakZDLG1CQUFtQjtRQUNyQjtRQUVBLE1BQU1xQixpQkFBaUJwSCxzQkFBc0JpRDtRQUU3QyxJQUFJRCxJQUFJcUUsa0JBQWtCLEVBQUU7WUFDMUJyRSxJQUFJcUUsa0JBQWtCLENBQUM3RixrQkFBa0JuQixJQUFJLENBQUMsR0FBRzZHO1FBQ25EO1FBRUEsTUFBTUksV0FBVyxNQUFNQyxJQUFBQSxvQkFBVSxFQUFDTDtRQUVsQyxNQUFNTSwwQkFBMEJoRyxrQkFBa0JpRyxpQkFBaUIsR0FDL0RqRyxrQkFBa0JpRyxpQkFBaUIsQ0FBQztZQUNsQ3ZILFdBQVdvSCxVQUFVN0csT0FBTzJHLGVBQWUzRyxHQUFHO1lBQzlDRSxRQUFRZ0MsdUJBQXVCO2dCQUM3QixHQUFHOEIsaUJBQWlCO2dCQUNwQjlELFFBQVF3RyxXQUFXeEcsTUFBTTtZQUMzQjtZQUNBK0csY0FBY04sZUFBZS9HLElBQUk7WUFDakNzSCxVQUFVbkcsa0JBQWtCbkIsSUFBSTtZQUNoQ1EsT0FBT3NHLFdBQVd0RyxLQUFLO1FBQ3pCLEtBQ0FILGdCQUFnQjtZQUNkUixXQUFXb0gsVUFBVTdHLE9BQU8yRyxlQUFlM0csR0FBRztZQUM5Q0UsUUFBUWdDLHVCQUF1QjtnQkFDN0IsR0FBRzhCLGlCQUFpQjtnQkFDcEI5RCxRQUFRd0csV0FBV3hHLE1BQU07WUFDM0I7WUFDQUMsaUJBQWlCd0csZUFBZS9HLElBQUk7WUFDcENRLE9BQU9zRyxXQUFXdEcsS0FBSztRQUN6QjtRQUVKLE1BQU0rRyxZQUFZLENBQUMsRUFBRTFFLFdBQVcsQ0FBQyxFQUFFc0Usd0JBQXdCLENBQUM7UUFFNUQsSUFBSSxNQUFNSyxJQUFBQSxtQkFBVSxFQUFDRCxZQUFZO1lBQy9CLElBQUk7Z0JBQ0ZFLFdBQUUsQ0FBQ0MsVUFBVSxDQUFDSDtZQUNoQixFQUFFLE9BQU07WUFDTix1QkFBdUI7WUFDekI7UUFDRjtRQUVBLE1BQU0sRUFBRWpILE1BQU0sRUFBRXFILElBQUksRUFBRW5ILEtBQUssRUFBRSxHQUFHc0c7UUFDaEMsT0FBT3JHLGFBQWE7WUFDbEJULE1BQU1tQixrQkFBa0JuQixJQUFJO1lBQzVCVSxVQUFVeUc7WUFDVnhHLFVBQVVnSDtZQUNWckgsUUFDRW9ELHNCQUFzQlUsa0JBQWtCNUIsS0FBSyxHQUFHbEMsU0FBUzhELGtCQUFrQjVCLEtBQUssR0FBR2xDO1lBQ3JGTSxVQUFVcUcsVUFBVVcsUUFBUWhIO1lBQzVCQyxhQUFhO2dCQUFDO29CQUFFZ0gsUUFBUWhCO29CQUFZaUIsTUFBTVA7Z0JBQVU7YUFBRTtZQUN0RC9HO1FBQ0Y7SUFDRjtJQUdGLE9BQU8rRCxRQUFRd0QsTUFBTSxDQUNuQixDQUFDQyxLQUFLQztRQUNKQyxPQUFPQyxNQUFNLENBQUNILElBQUlsSCxRQUFRLEVBQUVtSCxPQUFPbkgsUUFBUTtRQUMzQ2tILElBQUluSCxXQUFXLENBQUN1SCxJQUFJLElBQUlILE9BQU9wSCxXQUFXO1FBQzFDLE9BQU9tSDtJQUNULEdBQ0E7UUFBRSxHQUFHdkUsYUFBYTtJQUFDO0FBRXZCIn0=
|
|
341
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2ltYWdlUmVzaXplci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFVwbG9hZGVkRmlsZSB9IGZyb20gJ2V4cHJlc3MtZmlsZXVwbG9hZCdcbmltcG9ydCB0eXBlIHsgU2hhcnAsIE1ldGFkYXRhIGFzIFNoYXJwTWV0YWRhdGEsIFNoYXJwT3B0aW9ucyB9IGZyb20gJ3NoYXJwJ1xuXG5pbXBvcnQgeyBmcm9tQnVmZmVyIH0gZnJvbSAnZmlsZS10eXBlJ1xuaW1wb3J0IGZzIGZyb20gJ2ZzJ1xuaW1wb3J0IHNhbml0aXplIGZyb20gJ3Nhbml0aXplLWZpbGVuYW1lJ1xuaW1wb3J0IHNoYXJwIGZyb20gJ3NoYXJwJ1xuXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfSBmcm9tICcuLi9jb2xsZWN0aW9ucy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHtcbiAgRmlsZVNpemUsXG4gIEZpbGVTaXplcyxcbiAgRmlsZVRvU2F2ZSxcbiAgSW1hZ2VTaXplLFxuICBQcm9iZWRJbWFnZVNpemUsXG4gIFVwbG9hZEVkaXRzLFxufSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4uL3V0aWxpdGllcy9pc051bWJlcidcbmltcG9ydCBmaWxlRXhpc3RzIGZyb20gJy4vZmlsZUV4aXN0cydcbmltcG9ydCB7IHR5cGUgV2l0aE1ldGFkYXRhLCBvcHRpb25hbGx5QXBwZW5kTWV0YWRhdGEgfSBmcm9tICcuL29wdGlvbmFsbHlBcHBlbmRNZXRhZGF0YSdcblxudHlwZSBSZXNpemVBcmdzID0ge1xuICBjb25maWc6IFNhbml0aXplZENvbGxlY3Rpb25Db25maWdcbiAgZGltZW5zaW9uczogUHJvYmVkSW1hZ2VTaXplXG4gIGZpbGU6IFVwbG9hZGVkRmlsZVxuICBtaW1lVHlwZTogc3RyaW5nXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgc2F2ZWRGaWxlbmFtZTogc3RyaW5nXG4gIHN0YXRpY1BhdGg6IHN0cmluZ1xuICB1cGxvYWRFZGl0cz86IFVwbG9hZEVkaXRzXG4gIHdpdGhNZXRhZGF0YT86IFdpdGhNZXRhZGF0YVxufVxuXG4vKiogUmVzdWx0IGZyb20gcmVzaXppbmcgYW5kIHRyYW5zZm9ybWluZyB0aGUgcmVxdWVzdGVkIGltYWdlIHNpemVzICovXG50eXBlIEltYWdlU2l6ZXNSZXN1bHQgPSB7XG4gIGZvY2FsUG9pbnQ/OiBVcGxvYWRFZGl0c1snZm9jYWxQb2ludCddXG4gIHNpemVEYXRhOiBGaWxlU2l6ZXNcbiAgc2l6ZXNUb1NhdmU6IEZpbGVUb1NhdmVbXVxufVxuXG50eXBlIFNhbml0aXplZEltYWdlRGF0YSA9IHtcbiAgZXh0OiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG59XG5cbi8qKlxuICogU2FuaXRpemUgdGhlIGltYWdlIG5hbWUgYW5kIGV4dHJhY3QgdGhlIGV4dGVuc2lvbiBmcm9tIHRoZSBzb3VyY2UgaW1hZ2VcbiAqXG4gKiBAcGFyYW0gc291cmNlSW1hZ2UgLSB0aGUgc291cmNlIGltYWdlXG4gKiBAcmV0dXJucyB0aGUgc2FuaXRpemVkIG5hbWUgYW5kIGV4dGVuc2lvblxuICovXG5jb25zdCBnZXRTYW5pdGl6ZWRJbWFnZURhdGEgPSAoc291cmNlSW1hZ2U6IHN0cmluZyk6IFNhbml0aXplZEltYWdlRGF0YSA9PiB7XG4gIGNvbnN0IGV4dGVuc2lvbiA9IHNvdXJjZUltYWdlLnNwbGl0KCcuJykucG9wKClcbiAgY29uc3QgbmFtZSA9IHNhbml0aXplKHNvdXJjZUltYWdlLnN1YnN0cmluZygwLCBzb3VyY2VJbWFnZS5sYXN0SW5kZXhPZignLicpKSB8fCBzb3VyY2VJbWFnZSlcbiAgcmV0dXJuIHsgbmFtZSwgZXh0OiBleHRlbnNpb24gfVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBpbWFnZSBuYW1lIGJhc2VkIG9uIHRoZSBvdXRwdXQgaW1hZ2UgbmFtZSwgdGhlIGRpbWVuc2lvbnMgYW5kXG4gKiB0aGUgZXh0ZW5zaW9uLlxuICpcbiAqIElnbm9yZSB0aGUgZmFjdCB0aGF0IGR1cGxpY2F0ZSBuYW1lcyBjb3VsZCBoYXBwZW4gaWYgdGhlIHRoZXJlIGlzIG9uZVxuICogc2l6ZSB3aXRoIGB3aWR0aCBBTkQgaGVpZ2h0YCBhbmQgb25lIHdpdGggb25seSBgaGVpZ2h0IE9SIHdpZHRoYC4gQmVjYXVzZVxuICogc3BhY2UgaXMgZXhwZW5zaXZlLCB3ZSB3aWxsIHJldXNlIHRoZSBzYW1lIGltYWdlIGZvciBib3RoIHNpemVzLlxuICpcbiAqIEBwYXJhbSBvdXRwdXRJbWFnZU5hbWUgLSB0aGUgc2FuaXRpemVkIGltYWdlIG5hbWVcbiAqIEBwYXJhbSBidWZmZXJJbmZvIC0gdGhlIGJ1ZmZlciBpbmZvXG4gKiBAcGFyYW0gZXh0ZW5zaW9uIC0gdGhlIGV4dGVuc2lvbiB0byB1c2VcbiAqIEByZXR1cm5zIHRoZSBuZXcgaW1hZ2UgbmFtZSB0aGF0IGlzIG5vdCB0YWtlblxuICovXG5cbnR5cGUgQ3JlYXRlSW1hZ2VOYW1lQXJncyA9IHtcbiAgZXh0ZW5zaW9uOiBzdHJpbmdcbiAgaGVpZ2h0OiBudW1iZXJcbiAgb3V0cHV0SW1hZ2VOYW1lOiBzdHJpbmdcbiAgd2lkdGg6IG51bWJlclxufVxuY29uc3QgY3JlYXRlSW1hZ2VOYW1lID0gKHtcbiAgZXh0ZW5zaW9uLFxuICBoZWlnaHQsXG4gIG91dHB1dEltYWdlTmFtZSxcbiAgd2lkdGgsXG59OiBDcmVhdGVJbWFnZU5hbWVBcmdzKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGAke291dHB1dEltYWdlTmFtZX0tJHt3aWR0aH14JHtoZWlnaHR9LiR7ZXh0ZW5zaW9ufWBcbn1cblxudHlwZSBDcmVhdGVSZXN1bHRBcmdzID0ge1xuICBmaWxlbmFtZT86IEZpbGVTaXplWydmaWxlbmFtZSddXG4gIGZpbGVzaXplPzogRmlsZVNpemVbJ2ZpbGVzaXplJ11cbiAgaGVpZ2h0PzogRmlsZVNpemVbJ2hlaWdodCddXG4gIG1pbWVUeXBlPzogRmlsZVNpemVbJ21pbWVUeXBlJ11cbiAgbmFtZTogc3RyaW5nXG4gIHNpemVzVG9TYXZlPzogRmlsZVRvU2F2ZVtdXG4gIHdpZHRoPzogRmlsZVNpemVbJ3dpZHRoJ11cbn1cblxuLyoqXG4gKiBDcmVhdGUgdGhlIHJlc3VsdCBvYmplY3QgZm9yIHRoZSBpbWFnZSByZXNpemUgb3BlcmF0aW9uIGJhc2VkIG9uIHRoZVxuICogcHJvdmlkZWQgcGFyYW1ldGVycy4gSWYgdGhlIG5hbWUgaXMgbm90IHByb3ZpZGVkLCBhbiBlbXB0eSByZXN1bHQgb2JqZWN0XG4gKiBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gbmFtZSAtIHRoZSBuYW1lIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIGZpbGVuYW1lIC0gdGhlIGZpbGVuYW1lIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIHdpZHRoIC0gdGhlIHdpZHRoIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIGhlaWdodCAtIHRoZSBoZWlnaHQgb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gZmlsZXNpemUgLSB0aGUgZmlsZXNpemUgb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gbWltZVR5cGUgLSB0aGUgbWltZSB0eXBlIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIHNpemVzVG9TYXZlIC0gdGhlIHNpemVzIHRvIHNhdmVcbiAqIEByZXR1cm5zIHRoZSByZXN1bHQgb2JqZWN0XG4gKi9cbmNvbnN0IGNyZWF0ZVJlc3VsdCA9ICh7XG4gIG5hbWUsXG4gIGZpbGVuYW1lID0gbnVsbCxcbiAgZmlsZXNpemUgPSBudWxsLFxuICBoZWlnaHQgPSBudWxsLFxuICBtaW1lVHlwZSA9IG51bGwsXG4gIHNpemVzVG9TYXZlID0gW10sXG4gIHdpZHRoID0gbnVsbCxcbn06IENyZWF0ZVJlc3VsdEFyZ3MpOiBJbWFnZVNpemVzUmVzdWx0ID0+IHtcbiAgcmV0dXJuIHtcbiAgICBzaXplRGF0YToge1xuICAgICAgW25hbWVdOiB7XG4gICAgICAgIGZpbGVuYW1lLFxuICAgICAgICBmaWxlc2l6ZSxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICBtaW1lVHlwZSxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9LFxuICAgIH0sXG4gICAgc2l6ZXNUb1NhdmUsXG4gIH1cbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgd2hldGhlciBvciBub3QgdG8gcmVzaXplIHRoZSBpbWFnZS5cbiAqIC0gcmVzaXplIHVzaW5nIGltYWdlIGNvbmZpZ1xuICogLSByZXNpemUgdXNpbmcgaW1hZ2UgY29uZmlnIHdpdGggZm9jYWwgYWRqdXN0bWVudHNcbiAqIC0gZG8gbm90IHJlc2l6ZSBhdCBhbGxcbiAqXG4gKiBgaW1hZ2VSZXNpemVDb25maWcud2l0aG91dEVubGFyZ2VtZW50YDpcbiAqIC0gdW5kZWZpbmVkIFtkZWZhdWx0XTogdXBsb2FkaW5nIGltYWdlcyB3aXRoIHNtYWxsZXIgd2lkdGggQU5EIGhlaWdodCB0aGFuIHRoZSBpbWFnZSBzaXplIHdpbGwgcmV0dXJuIG51bGxcbiAqIC0gZmFsc2U6IGFsd2F5cyBlbmxhcmdlIGltYWdlcyB0byB0aGUgaW1hZ2Ugc2l6ZVxuICogLSB0cnVlOiBpZiB0aGUgaW1hZ2UgaXMgc21hbGxlciB0aGFuIHRoZSBpbWFnZSBzaXplLCByZXR1cm4gdGhlIG9yaWdpbmFsIGltYWdlXG4gKlxuICogYGltYWdlUmVzaXplQ29uZmlnLndpdGhvdXRSZWR1Y3Rpb25gOlxuICogLSBmYWxzZSBbZGVmYXVsdF06IGFsd2F5cyBlbmxhcmdlIGltYWdlcyB0byB0aGUgaW1hZ2Ugc2l6ZVxuICogLSB0cnVlOiBpZiB0aGUgaW1hZ2UgaXMgc21hbGxlciB0aGFuIHRoZSBpbWFnZSBzaXplLCByZXR1cm4gdGhlIG9yaWdpbmFsIGltYWdlXG4gKlxuICogQHJldHVybiAnb21pdCcgfCAncmVzaXplJyB8ICdyZXNpemVXaXRoRm9jYWxQb2ludCdcbiAqL1xuY29uc3QgZ2V0SW1hZ2VSZXNpemVBY3Rpb24gPSAoe1xuICBkaW1lbnNpb25zOiBvcmlnaW5hbEltYWdlLFxuICBoYXNGb2NhbFBvaW50LFxuICBpbWFnZVJlc2l6ZUNvbmZpZyxcbn06IHtcbiAgZGltZW5zaW9uczogUHJvYmVkSW1hZ2VTaXplXG4gIGhhc0ZvY2FsUG9pbnQ/OiBib29sZWFuXG4gIGltYWdlUmVzaXplQ29uZmlnOiBJbWFnZVNpemVcbn0pOiAnb21pdCcgfCAncmVzaXplJyB8ICdyZXNpemVXaXRoRm9jYWxQb2ludCcgPT4ge1xuICBjb25zdCB7XG4gICAgZml0LFxuICAgIGhlaWdodDogdGFyZ2V0SGVpZ2h0LFxuICAgIHdpZHRoOiB0YXJnZXRXaWR0aCxcbiAgICB3aXRob3V0RW5sYXJnZW1lbnQsXG4gICAgd2l0aG91dFJlZHVjdGlvbixcbiAgfSA9IGltYWdlUmVzaXplQ29uZmlnXG5cbiAgLy8gcHJldmVudCB1cHNjYWxpbmcgYnkgZGVmYXVsdCB3aGVuIHggYW5kIHkgYXJlIGJvdGggc21hbGxlciB0aGFuIHRhcmdldCBpbWFnZSBzaXplXG4gIGlmICh0YXJnZXRIZWlnaHQgJiYgdGFyZ2V0V2lkdGgpIHtcbiAgICBjb25zdCBvcmlnaW5hbEltYWdlSXNTbWFsbGVyWEFuZFkgPVxuICAgICAgb3JpZ2luYWxJbWFnZS53aWR0aCA8IHRhcmdldFdpZHRoICYmIG9yaWdpbmFsSW1hZ2UuaGVpZ2h0IDwgdGFyZ2V0SGVpZ2h0XG4gICAgaWYgKHdpdGhvdXRFbmxhcmdlbWVudCA9PT0gdW5kZWZpbmVkICYmIG9yaWdpbmFsSW1hZ2VJc1NtYWxsZXJYQW5kWSkge1xuICAgICAgcmV0dXJuICdvbWl0JyAvLyBwcmV2ZW50IGltYWdlIHNpemUgZnJvbSBiZWluZyBlbmxhcmdlZFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9yaWdpbmFsSW1hZ2VJc1NtYWxsZXJYT3JZID1cbiAgICBvcmlnaW5hbEltYWdlLndpZHRoIDwgdGFyZ2V0V2lkdGggfHwgb3JpZ2luYWxJbWFnZS5oZWlnaHQgPCB0YXJnZXRIZWlnaHRcbiAgaWYgKGZpdCA9PT0gJ2NvbnRhaW4nIHx8IGZpdCA9PT0gJ2luc2lkZScpIHJldHVybiAncmVzaXplJ1xuICBpZiAoIWlzTnVtYmVyKHRhcmdldEhlaWdodCkgJiYgIWlzTnVtYmVyKHRhcmdldFdpZHRoKSkgcmV0dXJuICdyZXNpemUnXG5cbiAgY29uc3QgdGFyZ2V0QXNwZWN0UmF0aW8gPSB0YXJnZXRXaWR0aCAvIHRhcmdldEhlaWdodFxuICBjb25zdCBvcmlnaW5hbEFzcGVjdFJhdGlvID0gb3JpZ2luYWxJbWFnZS53aWR0aCAvIG9yaWdpbmFsSW1hZ2UuaGVpZ2h0XG4gIGlmIChvcmlnaW5hbEFzcGVjdFJhdGlvID09PSB0YXJnZXRBc3BlY3RSYXRpbykgcmV0dXJuICdyZXNpemUnXG5cbiAgaWYgKHdpdGhvdXRFbmxhcmdlbWVudCAmJiBvcmlnaW5hbEltYWdlSXNTbWFsbGVyWE9yWSkgcmV0dXJuICdyZXNpemUnXG4gIGlmICh3aXRob3V0UmVkdWN0aW9uICYmICFvcmlnaW5hbEltYWdlSXNTbWFsbGVyWE9yWSkgcmV0dXJuICdyZXNpemUnXG5cbiAgcmV0dXJuIGhhc0ZvY2FsUG9pbnQgPyAncmVzaXplV2l0aEZvY2FsUG9pbnQnIDogJ3Jlc2l6ZSdcbn1cblxuLyoqXG4gKiBTYW5pdGl6ZSB0aGUgcmVzaXplIGNvbmZpZy4gSWYgdGhlIHJlc2l6ZSBjb25maWcgaGFzIHRoZSBgd2l0aG91dFJlZHVjdGlvbmBcbiAqIHByb3BlcnR5IHNldCB0byB0cnVlLCB0aGUgYGZpdGAgYW5kIGBwb3NpdGlvbmAgcHJvcGVydGllcyB3aWxsIGJlIHNldCB0byBgY29udGFpbmBcbiAqIGFuZCBgdG9wIGxlZnRgIHJlc3BlY3RpdmVseS5cbiAqXG4gKiBAcGFyYW0gcmVzaXplQ29uZmlnIC0gdGhlIHJlc2l6ZSBjb25maWdcbiAqIEByZXR1cm5zIGEgc2FuaXRpemVkIHJlc2l6ZSBjb25maWdcbiAqL1xuY29uc3Qgc2FuaXRpemVSZXNpemVDb25maWcgPSAocmVzaXplQ29uZmlnOiBJbWFnZVNpemUpOiBJbWFnZVNpemUgPT4ge1xuICBpZiAocmVzaXplQ29uZmlnLndpdGhvdXRSZWR1Y3Rpb24pIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucmVzaXplQ29uZmlnLFxuICAgICAgLy8gV2h5IGZpdCBgY29udGFpbmAgc2hvdWxkIGFsc28gYmUgc2V0IHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9sb3ZlbGwvc2hhcnAvaXNzdWVzLzM1OTVcbiAgICAgIGZpdDogcmVzaXplQ29uZmlnPy5maXQgfHwgJ2NvbnRhaW4nLFxuICAgICAgcG9zaXRpb246IHJlc2l6ZUNvbmZpZz8ucG9zaXRpb24gfHwgJ2xlZnQgdG9wJyxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc2l6ZUNvbmZpZ1xufVxuXG4vKipcbiAqIFVzZWQgdG8gZXh0cmFjdCBoZWlnaHQgZnJvbSBpbWFnZXMsIGFuaW1hdGVkIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0gc2hhcnBNZXRhZGF0YSAtIHRoZSBzaGFycCBtZXRhZGF0YVxuICogQHJldHVybnMgdGhlIGhlaWdodCBvZiB0aGUgaW1hZ2VcbiAqL1xuZnVuY3Rpb24gZXh0cmFjdEhlaWdodEZyb21JbWFnZShzaGFycE1ldGFkYXRhOiBTaGFycE1ldGFkYXRhKTogbnVtYmVyIHtcbiAgaWYgKHNoYXJwTWV0YWRhdGE/LnBhZ2VzKSB7XG4gICAgcmV0dXJuIHNoYXJwTWV0YWRhdGEuaGVpZ2h0IC8gc2hhcnBNZXRhZGF0YS5wYWdlc1xuICB9XG4gIHJldHVybiBzaGFycE1ldGFkYXRhLmhlaWdodFxufVxuXG4vKipcbiAqIEZvciB0aGUgcHJvdmlkZWQgaW1hZ2Ugc2l6ZXMsIGhhbmRsZSB0aGUgcmVzaXppbmcgYW5kIHRoZSB0cmFuc2Zvcm1zXG4gKiAoZm9ybWF0LCB0cmltLCBldGMuKSBvZiBlYWNoIHJlcXVlc3RlZCBpbWFnZSBzaXplIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBvYmplY3QuXG4gKiBUaGlzIG9ubHkgaGFuZGxlcyB0aGUgaW1hZ2Ugc2l6ZXMuIFRoZSB0cmFuc2Zvcm1zIG9mIHRoZSBvcmlnaW5hbCBpbWFnZVxuICogYXJlIGhhbmRsZWQgaW4ge0BsaW5rIC4vZ2VuZXJhdGVGaWxlRGF0YS50c30uXG4gKlxuICogVGhlIGltYWdlIHdpbGwgYmUgcmVzaXplZCBhY2NvcmRpbmcgdG8gdGhlIHByb3ZpZGVkXG4gKiByZXNpemUgY29uZmlnLiBJZiBubyBpbWFnZSBzaXplcyBhcmUgcmVxdWVzdGVkLCB0aGUgcmVzb2x2ZWQgZGF0YSB3aWxsIGJlIGVtcHR5LlxuICogRm9yIGV2ZXJ5IGltYWdlIHRoYXQgZG9lcyBub3QgbmVlZCB0byBiZSByZXNpemVkLCBhIHJlc3VsdCBvYmplY3Qgd2l0aCBgbnVsbGBcbiAqIHBhcmFtZXRlcnMgd2lsbCBiZSByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gcmVzaXplQ29uZmlnIC0gdGhlIHJlc2l6ZSBjb25maWdcbiAqIEByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIHJlc2l6ZSBvcGVyYXRpb24ocylcbiAqL1xuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcmVzaXplQW5kVHJhbnNmb3JtSW1hZ2VTaXplcyh7XG4gIGNvbmZpZyxcbiAgZGltZW5zaW9ucyxcbiAgZmlsZSxcbiAgbWltZVR5cGUsXG4gIHJlcSxcbiAgc2F2ZWRGaWxlbmFtZSxcbiAgc3RhdGljUGF0aCxcbiAgdXBsb2FkRWRpdHMsXG4gIHdpdGhNZXRhZGF0YSxcbn06IFJlc2l6ZUFyZ3MpOiBQcm9taXNlPEltYWdlU2l6ZXNSZXN1bHQ+IHtcbiAgY29uc3QgeyBmb2NhbFBvaW50OiBmb2NhbFBvaW50RW5hYmxlZCA9IHRydWUsIGltYWdlU2l6ZXMgfSA9IGNvbmZpZy51cGxvYWRcblxuICAvLyBGb2NhbCBwb2ludCBhZGp1c3RtZW50c1xuICBjb25zdCBpbmNvbWluZ0ZvY2FsUG9pbnQgPSB1cGxvYWRFZGl0cz8uZm9jYWxQb2ludFxuICAgID8ge1xuICAgICAgICB4OiBpc051bWJlcih1cGxvYWRFZGl0cy5mb2NhbFBvaW50LngpID8gTWF0aC5yb3VuZCh1cGxvYWRFZGl0cy5mb2NhbFBvaW50LngpIDogNTAsXG4gICAgICAgIHk6IGlzTnVtYmVyKHVwbG9hZEVkaXRzLmZvY2FsUG9pbnQueSkgPyBNYXRoLnJvdW5kKHVwbG9hZEVkaXRzLmZvY2FsUG9pbnQueSkgOiA1MCxcbiAgICAgIH1cbiAgICA6IHVuZGVmaW5lZFxuXG4gIGNvbnN0IGRlZmF1bHRSZXN1bHQ6IEltYWdlU2l6ZXNSZXN1bHQgPSB7XG4gICAgLi4uKGZvY2FsUG9pbnRFbmFibGVkICYmIGluY29taW5nRm9jYWxQb2ludCAmJiB7IGZvY2FsUG9pbnQ6IGluY29taW5nRm9jYWxQb2ludCB9KSxcbiAgICBzaXplRGF0YToge30sXG4gICAgc2l6ZXNUb1NhdmU6IFtdLFxuICB9XG5cbiAgLy8gTm90aGluZyB0byByZXNpemUgaGVyZSBzbyByZXR1cm4gYXMgZWFybHkgYXMgcG9zc2libGVcbiAgaWYgKCFpbWFnZVNpemVzKSByZXR1cm4gZGVmYXVsdFJlc3VsdFxuXG4gIC8vIERldGVybWluZSBpZiB0aGUgZmlsZSBpcyBhbmltYXRlZFxuICBjb25zdCBmaWxlSXNBbmltYXRlZFR5cGUgPSBbJ2ltYWdlL2F2aWYnLCAnaW1hZ2UvZ2lmJywgJ2ltYWdlL3dlYnAnXS5pbmNsdWRlcyhmaWxlLm1pbWV0eXBlKVxuICBjb25zdCBzaGFycE9wdGlvbnM6IFNoYXJwT3B0aW9ucyA9IHt9XG5cbiAgaWYgKGZpbGVJc0FuaW1hdGVkVHlwZSkgc2hhcnBPcHRpb25zLmFuaW1hdGVkID0gdHJ1ZVxuXG4gIGNvbnN0IHNoYXJwQmFzZTogU2hhcnAgfCB1bmRlZmluZWQgPSBzaGFycChmaWxlLnRlbXBGaWxlUGF0aCB8fCBmaWxlLmRhdGEsIHNoYXJwT3B0aW9ucykucm90YXRlKCkgLy8gcGFzcyByb3RhdGUoKSB0byBhdXRvLXJvdGF0ZSBiYXNlZCBvbiBFWElGIGRhdGEuIGh0dHBzOi8vZ2l0aHViLmNvbS9wYXlsb2FkY21zL3BheWxvYWQvcHVsbC8zMDgxXG4gIGNvbnN0IG9yaWdpbmFsSW1hZ2VNZXRhID0gYXdhaXQgc2hhcnBCYXNlLm1ldGFkYXRhKClcblxuICBsZXQgYWRqdXN0ZWREaW1lbnNpb25zID0geyAuLi5kaW1lbnNpb25zIH1cblxuICAvLyBJbWFnZXMgd2l0aCBhbiBleGlmIG9yaWVudGF0aW9uIG9mIDUsIDYsIDcsIG9yIDggYXJlIGF1dG8tcm90YXRlZCBieSBzaGFycFxuICAvLyBOZWVkIHRvIGFkanVzdCB0aGUgZGltZW5zaW9ucyB0byBtYXRjaCB0aGUgb3JpZ2luYWwgaW1hZ2VcbiAgaWYgKFs1LCA2LCA3LCA4XS5pbmNsdWRlcyhvcmlnaW5hbEltYWdlTWV0YS5vcmllbnRhdGlvbikpIHtcbiAgICBhZGp1c3RlZERpbWVuc2lvbnMgPSB7XG4gICAgICAuLi5kaW1lbnNpb25zLFxuICAgICAgaGVpZ2h0OiBkaW1lbnNpb25zLndpZHRoLFxuICAgICAgd2lkdGg6IGRpbWVuc2lvbnMuaGVpZ2h0LFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlc2l6ZUltYWdlTWV0YSA9IHtcbiAgICBoZWlnaHQ6IGV4dHJhY3RIZWlnaHRGcm9tSW1hZ2Uob3JpZ2luYWxJbWFnZU1ldGEpLFxuICAgIHdpZHRoOiBvcmlnaW5hbEltYWdlTWV0YS53aWR0aCxcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdHM6IEltYWdlU2l6ZXNSZXN1bHRbXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIGltYWdlU2l6ZXMubWFwKGFzeW5jIChpbWFnZVJlc2l6ZUNvbmZpZyk6IFByb21pc2U8SW1hZ2VTaXplc1Jlc3VsdD4gPT4ge1xuICAgICAgaW1hZ2VSZXNpemVDb25maWcgPSBzYW5pdGl6ZVJlc2l6ZUNvbmZpZyhpbWFnZVJlc2l6ZUNvbmZpZylcblxuICAgICAgY29uc3QgcmVzaXplQWN0aW9uID0gZ2V0SW1hZ2VSZXNpemVBY3Rpb24oe1xuICAgICAgICBkaW1lbnNpb25zLFxuICAgICAgICBoYXNGb2NhbFBvaW50OiBCb29sZWFuKGluY29taW5nRm9jYWxQb2ludCksXG4gICAgICAgIGltYWdlUmVzaXplQ29uZmlnLFxuICAgICAgfSlcbiAgICAgIGlmIChyZXNpemVBY3Rpb24gPT09ICdvbWl0JykgcmV0dXJuIGNyZWF0ZVJlc3VsdCh7IG5hbWU6IGltYWdlUmVzaXplQ29uZmlnLm5hbWUgfSlcblxuICAgICAgY29uc3QgaW1hZ2VUb1Jlc2l6ZSA9IHNoYXJwQmFzZS5jbG9uZSgpXG4gICAgICBsZXQgcmVzaXplZCA9IGltYWdlVG9SZXNpemVcblxuICAgICAgaWYgKHJlc2l6ZUFjdGlvbiA9PT0gJ3Jlc2l6ZVdpdGhGb2NhbFBvaW50Jykge1xuICAgICAgICBsZXQgeyBoZWlnaHQ6IHJlc2l6ZUhlaWdodCwgd2lkdGg6IHJlc2l6ZVdpZHRoIH0gPSBpbWFnZVJlc2l6ZUNvbmZpZ1xuXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsQXNwZWN0UmF0aW8gPSBhZGp1c3RlZERpbWVuc2lvbnMud2lkdGggLyBhZGp1c3RlZERpbWVuc2lvbnMuaGVpZ2h0XG5cbiAgICAgICAgLy8gQ2FsY3VsYXRlIHJlc2l6ZVdpZHRoIGJhc2VkIG9uIG9yaWdpbmFsIGFzcGVjdCByYXRpbyBpZiBpdCdzIHVuZGVmaW5lZFxuICAgICAgICBpZiAocmVzaXplSGVpZ2h0ICYmICFyZXNpemVXaWR0aCkge1xuICAgICAgICAgIHJlc2l6ZVdpZHRoID0gTWF0aC5yb3VuZChyZXNpemVIZWlnaHQgKiBvcmlnaW5hbEFzcGVjdFJhdGlvKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2FsY3VsYXRlIHJlc2l6ZUhlaWdodCBiYXNlZCBvbiBvcmlnaW5hbCBhc3BlY3QgcmF0aW8gaWYgaXQncyB1bmRlZmluZWRcbiAgICAgICAgaWYgKHJlc2l6ZVdpZHRoICYmICFyZXNpemVIZWlnaHQpIHtcbiAgICAgICAgICByZXNpemVIZWlnaHQgPSBNYXRoLnJvdW5kKHJlc2l6ZVdpZHRoIC8gb3JpZ2luYWxBc3BlY3RSYXRpbylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcmVzaXplSGVpZ2h0KSByZXNpemVIZWlnaHQgPSByZXNpemVJbWFnZU1ldGEuaGVpZ2h0XG4gICAgICAgIGlmICghcmVzaXplV2lkdGgpIHJlc2l6ZVdpZHRoID0gcmVzaXplSW1hZ2VNZXRhLndpZHRoXG5cbiAgICAgICAgY29uc3QgcmVzaXplQXNwZWN0UmF0aW8gPSByZXNpemVXaWR0aCAvIHJlc2l6ZUhlaWdodFxuICAgICAgICBjb25zdCBwcmlvcml0aXplSGVpZ2h0ID0gcmVzaXplQXNwZWN0UmF0aW8gPCBvcmlnaW5hbEFzcGVjdFJhdGlvXG4gICAgICAgIC8vIFNjYWxlcyB0aGUgaW1hZ2UgYmVmb3JlIGV4dHJhY3RpbmcgZnJvbSBpdFxuICAgICAgICByZXNpemVkID0gaW1hZ2VUb1Jlc2l6ZS5yZXNpemUoe1xuICAgICAgICAgIGhlaWdodDogcHJpb3JpdGl6ZUhlaWdodCA/IHJlc2l6ZUhlaWdodCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICB3aWR0aDogcHJpb3JpdGl6ZUhlaWdodCA/IHVuZGVmaW5lZCA6IHJlc2l6ZVdpZHRoLFxuICAgICAgICB9KVxuXG4gICAgICAgIGNvbnN0IG1ldGFkYXRhQXBwZW5kZWRGaWxlID0gYXdhaXQgb3B0aW9uYWxseUFwcGVuZE1ldGFkYXRhKHtcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgc2hhcnBGaWxlOiByZXNpemVkLFxuICAgICAgICAgIHdpdGhNZXRhZGF0YSxcbiAgICAgICAgfSlcblxuICAgICAgICAvLyBNdXN0IHJlYWQgZnJvbSBidWZmZXIsIHJlc2l6ZWQubWV0YWRhdGEgd2lsbCByZXR1cm4gdGhlIG9yaWdpbmFsIGltYWdlIG1ldGFkYXRhXG4gICAgICAgIGNvbnN0IHsgaW5mbyB9ID0gYXdhaXQgbWV0YWRhdGFBcHBlbmRlZEZpbGUudG9CdWZmZXIoeyByZXNvbHZlV2l0aE9iamVjdDogdHJ1ZSB9KVxuXG4gICAgICAgIHJlc2l6ZUltYWdlTWV0YS5oZWlnaHQgPSBleHRyYWN0SGVpZ2h0RnJvbUltYWdlKHtcbiAgICAgICAgICAuLi5vcmlnaW5hbEltYWdlTWV0YSxcbiAgICAgICAgICBoZWlnaHQ6IGluZm8uaGVpZ2h0LFxuICAgICAgICB9KVxuICAgICAgICByZXNpemVJbWFnZU1ldGEud2lkdGggPSBpbmZvLndpZHRoXG5cbiAgICAgICAgY29uc3QgaGFsZlJlc2l6ZVggPSByZXNpemVXaWR0aCAvIDJcbiAgICAgICAgY29uc3QgeEZvY2FsQ2VudGVyID0gcmVzaXplSW1hZ2VNZXRhLndpZHRoICogKGluY29taW5nRm9jYWxQb2ludC54IC8gMTAwKVxuICAgICAgICBjb25zdCBjYWxjdWxhdGVkUmlnaHRQaXhlbEJvdW5kID0geEZvY2FsQ2VudGVyICsgaGFsZlJlc2l6ZVhcbiAgICAgICAgbGV0IGxlZnRCb3VuZCA9IHhGb2NhbENlbnRlciAtIGhhbGZSZXNpemVYXG5cbiAgICAgICAgLy8gaWYgdGhlIHJpZ2h0IGJvdW5kIGlzIGdyZWF0ZXIgdGhhbiB0aGUgaW1hZ2Ugd2lkdGgsIGFkanVzdCB0aGUgbGVmdCBib3VuZFxuICAgICAgICAvLyBrZWVwaW5nIGZvY3VzIG9uIHRoZSByaWdodFxuICAgICAgICBpZiAoY2FsY3VsYXRlZFJpZ2h0UGl4ZWxCb3VuZCA+IHJlc2l6ZUltYWdlTWV0YS53aWR0aCkge1xuICAgICAgICAgIGxlZnRCb3VuZCA9IHJlc2l6ZUltYWdlTWV0YS53aWR0aCAtIHJlc2l6ZVdpZHRoXG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiB0aGUgbGVmdCBib3VuZCBpcyBsZXNzIHRoYW4gMCwgYWRqdXN0IHRoZSBsZWZ0IGJvdW5kIHRvIDBcbiAgICAgICAgLy8ga2VlcGluZyB0aGUgZm9jdXMgb24gdGhlIGxlZnRcbiAgICAgICAgaWYgKGxlZnRCb3VuZCA8IDApIGxlZnRCb3VuZCA9IDBcblxuICAgICAgICBjb25zdCBoYWxmUmVzaXplWSA9IHJlc2l6ZUhlaWdodCAvIDJcbiAgICAgICAgY29uc3QgeUZvY2FsQ2VudGVyID0gcmVzaXplSW1hZ2VNZXRhLmhlaWdodCAqIChpbmNvbWluZ0ZvY2FsUG9pbnQueSAvIDEwMClcbiAgICAgICAgY29uc3QgY2FsY3VsYXRlZEJvdHRvbVBpeGVsQm91bmQgPSB5Rm9jYWxDZW50ZXIgKyBoYWxmUmVzaXplWVxuICAgICAgICBsZXQgdG9wQm91bmQgPSB5Rm9jYWxDZW50ZXIgLSBoYWxmUmVzaXplWVxuXG4gICAgICAgIC8vIGlmIHRoZSBib3R0b20gYm91bmQgaXMgZ3JlYXRlciB0aGFuIHRoZSBpbWFnZSBoZWlnaHQsIGFkanVzdCB0aGUgdG9wIGJvdW5kXG4gICAgICAgIC8vIGtlZXBpbmcgdGhlIGltYWdlIGFzIGZhciByaWdodCBhcyBwb3NzaWJsZVxuICAgICAgICBpZiAoY2FsY3VsYXRlZEJvdHRvbVBpeGVsQm91bmQgPiByZXNpemVJbWFnZU1ldGEuaGVpZ2h0KSB7XG4gICAgICAgICAgdG9wQm91bmQgPSByZXNpemVJbWFnZU1ldGEuaGVpZ2h0IC0gcmVzaXplSGVpZ2h0XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiB0aGUgdG9wIGJvdW5kIGlzIGxlc3MgdGhhbiAwLCBhZGp1c3QgdGhlIHRvcCBib3VuZCB0byAwXG4gICAgICAgIC8vIGtlZXBpbmcgdGhlIGltYWdlIGZvY3VzIG5lYXIgdGhlIHRvcFxuICAgICAgICBpZiAodG9wQm91bmQgPCAwKSB0b3BCb3VuZCA9IDBcblxuICAgICAgICByZXNpemVkID0gcmVzaXplZC5leHRyYWN0KHtcbiAgICAgICAgICBoZWlnaHQ6IHJlc2l6ZUhlaWdodCxcbiAgICAgICAgICBsZWZ0OiBNYXRoLmZsb29yKGxlZnRCb3VuZCksXG4gICAgICAgICAgdG9wOiBNYXRoLmZsb29yKHRvcEJvdW5kKSxcbiAgICAgICAgICB3aWR0aDogcmVzaXplV2lkdGgsXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNpemVkID0gaW1hZ2VUb1Jlc2l6ZS5yZXNpemUoaW1hZ2VSZXNpemVDb25maWcpXG4gICAgICB9XG5cbiAgICAgIGlmIChpbWFnZVJlc2l6ZUNvbmZpZy5mb3JtYXRPcHRpb25zKSB7XG4gICAgICAgIHJlc2l6ZWQgPSByZXNpemVkLnRvRm9ybWF0KFxuICAgICAgICAgIGltYWdlUmVzaXplQ29uZmlnLmZvcm1hdE9wdGlvbnMuZm9ybWF0LFxuICAgICAgICAgIGltYWdlUmVzaXplQ29uZmlnLmZvcm1hdE9wdGlvbnMub3B0aW9ucyxcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBpZiAoaW1hZ2VSZXNpemVDb25maWcudHJpbU9wdGlvbnMpIHtcbiAgICAgICAgcmVzaXplZCA9IHJlc2l6ZWQudHJpbShpbWFnZVJlc2l6ZUNvbmZpZy50cmltT3B0aW9ucylcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWV0YWRhdGFBcHBlbmRlZEZpbGUgPSBhd2FpdCBvcHRpb25hbGx5QXBwZW5kTWV0YWRhdGEoe1xuICAgICAgICByZXEsXG4gICAgICAgIHNoYXJwRmlsZTogcmVzaXplZCxcbiAgICAgICAgd2l0aE1ldGFkYXRhLFxuICAgICAgfSlcblxuICAgICAgY29uc3QgeyBkYXRhOiBidWZmZXJEYXRhLCBpbmZvOiBidWZmZXJJbmZvIH0gPSBhd2FpdCBtZXRhZGF0YUFwcGVuZGVkRmlsZS50b0J1ZmZlcih7XG4gICAgICAgIHJlc29sdmVXaXRoT2JqZWN0OiB0cnVlLFxuICAgICAgfSlcblxuICAgICAgY29uc3Qgc2FuaXRpemVkSW1hZ2UgPSBnZXRTYW5pdGl6ZWRJbWFnZURhdGEoc2F2ZWRGaWxlbmFtZSlcblxuICAgICAgaWYgKHJlcS5wYXlsb2FkVXBsb2FkU2l6ZXMpIHtcbiAgICAgICAgcmVxLnBheWxvYWRVcGxvYWRTaXplc1tpbWFnZVJlc2l6ZUNvbmZpZy5uYW1lXSA9IGJ1ZmZlckRhdGFcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWltZUluZm8gPSBhd2FpdCBmcm9tQnVmZmVyKGJ1ZmZlckRhdGEpXG5cbiAgICAgIGNvbnN0IGltYWdlTmFtZVdpdGhEaW1lbnNpb25zID0gaW1hZ2VSZXNpemVDb25maWcuZ2VuZXJhdGVJbWFnZU5hbWVcbiAgICAgICAgPyBpbWFnZVJlc2l6ZUNvbmZpZy5nZW5lcmF0ZUltYWdlTmFtZSh7XG4gICAgICAgICAgICBleHRlbnNpb246IG1pbWVJbmZvPy5leHQgfHwgc2FuaXRpemVkSW1hZ2UuZXh0LFxuICAgICAgICAgICAgaGVpZ2h0OiBleHRyYWN0SGVpZ2h0RnJvbUltYWdlKHtcbiAgICAgICAgICAgICAgLi4ub3JpZ2luYWxJbWFnZU1ldGEsXG4gICAgICAgICAgICAgIGhlaWdodDogYnVmZmVySW5mby5oZWlnaHQsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG9yaWdpbmFsTmFtZTogc2FuaXRpemVkSW1hZ2UubmFtZSxcbiAgICAgICAgICAgIHNpemVOYW1lOiBpbWFnZVJlc2l6ZUNvbmZpZy5uYW1lLFxuICAgICAgICAgICAgd2lkdGg6IGJ1ZmZlckluZm8ud2lkdGgsXG4gICAgICAgICAgfSlcbiAgICAgICAgOiBjcmVhdGVJbWFnZU5hbWUoe1xuICAgICAgICAgICAgZXh0ZW5zaW9uOiBtaW1lSW5mbz8uZXh0IHx8IHNhbml0aXplZEltYWdlLmV4dCxcbiAgICAgICAgICAgIGhlaWdodDogZXh0cmFjdEhlaWdodEZyb21JbWFnZSh7XG4gICAgICAgICAgICAgIC4uLm9yaWdpbmFsSW1hZ2VNZXRhLFxuICAgICAgICAgICAgICBoZWlnaHQ6IGJ1ZmZlckluZm8uaGVpZ2h0LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBvdXRwdXRJbWFnZU5hbWU6IHNhbml0aXplZEltYWdlLm5hbWUsXG4gICAgICAgICAgICB3aWR0aDogYnVmZmVySW5mby53aWR0aCxcbiAgICAgICAgICB9KVxuXG4gICAgICBjb25zdCBpbWFnZVBhdGggPSBgJHtzdGF0aWNQYXRofS8ke2ltYWdlTmFtZVdpdGhEaW1lbnNpb25zfWBcblxuICAgICAgaWYgKGF3YWl0IGZpbGVFeGlzdHMoaW1hZ2VQYXRoKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGZzLnVubGlua1N5bmMoaW1hZ2VQYXRoKVxuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBJZ25vcmUgdW5saW5rIGVycm9yc1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgaGVpZ2h0LCBzaXplLCB3aWR0aCB9ID0gYnVmZmVySW5mb1xuICAgICAgcmV0dXJuIGNyZWF0ZVJlc3VsdCh7XG4gICAgICAgIG5hbWU6IGltYWdlUmVzaXplQ29uZmlnLm5hbWUsXG4gICAgICAgIGZpbGVuYW1lOiBpbWFnZU5hbWVXaXRoRGltZW5zaW9ucyxcbiAgICAgICAgZmlsZXNpemU6IHNpemUsXG4gICAgICAgIGhlaWdodDpcbiAgICAgICAgICBmaWxlSXNBbmltYXRlZFR5cGUgJiYgb3JpZ2luYWxJbWFnZU1ldGEucGFnZXMgPyBoZWlnaHQgLyBvcmlnaW5hbEltYWdlTWV0YS5wYWdlcyA6IGhlaWdodCxcbiAgICAgICAgbWltZVR5cGU6IG1pbWVJbmZvPy5taW1lIHx8IG1pbWVUeXBlLFxuICAgICAgICBzaXplc1RvU2F2ZTogW3sgYnVmZmVyOiBidWZmZXJEYXRhLCBwYXRoOiBpbWFnZVBhdGggfV0sXG4gICAgICAgIHdpZHRoLFxuICAgICAgfSlcbiAgICB9KSxcbiAgKVxuXG4gIHJldHVybiByZXN1bHRzLnJlZHVjZShcbiAgICAoYWNjLCByZXN1bHQpID0+IHtcbiAgICAgIE9iamVjdC5hc3NpZ24oYWNjLnNpemVEYXRhLCByZXN1bHQuc2l6ZURhdGEpXG4gICAgICBhY2Muc2l6ZXNUb1NhdmUucHVzaCguLi5yZXN1bHQuc2l6ZXNUb1NhdmUpXG4gICAgICByZXR1cm4gYWNjXG4gICAgfSxcbiAgICB7IC4uLmRlZmF1bHRSZXN1bHQgfSxcbiAgKVxufVxuIl0sIm5hbWVzIjpbInJlc2l6ZUFuZFRyYW5zZm9ybUltYWdlU2l6ZXMiLCJnZXRTYW5pdGl6ZWRJbWFnZURhdGEiLCJzb3VyY2VJbWFnZSIsImV4dGVuc2lvbiIsInNwbGl0IiwicG9wIiwibmFtZSIsInNhbml0aXplIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJleHQiLCJjcmVhdGVJbWFnZU5hbWUiLCJoZWlnaHQiLCJvdXRwdXRJbWFnZU5hbWUiLCJ3aWR0aCIsImNyZWF0ZVJlc3VsdCIsImZpbGVuYW1lIiwiZmlsZXNpemUiLCJtaW1lVHlwZSIsInNpemVzVG9TYXZlIiwic2l6ZURhdGEiLCJnZXRJbWFnZVJlc2l6ZUFjdGlvbiIsImRpbWVuc2lvbnMiLCJvcmlnaW5hbEltYWdlIiwiaGFzRm9jYWxQb2ludCIsImltYWdlUmVzaXplQ29uZmlnIiwiZml0IiwidGFyZ2V0SGVpZ2h0IiwidGFyZ2V0V2lkdGgiLCJ3aXRob3V0RW5sYXJnZW1lbnQiLCJ3aXRob3V0UmVkdWN0aW9uIiwib3JpZ2luYWxJbWFnZUlzU21hbGxlclhBbmRZIiwidW5kZWZpbmVkIiwib3JpZ2luYWxJbWFnZUlzU21hbGxlclhPclkiLCJpc051bWJlciIsInRhcmdldEFzcGVjdFJhdGlvIiwib3JpZ2luYWxBc3BlY3RSYXRpbyIsInNhbml0aXplUmVzaXplQ29uZmlnIiwicmVzaXplQ29uZmlnIiwicG9zaXRpb24iLCJleHRyYWN0SGVpZ2h0RnJvbUltYWdlIiwic2hhcnBNZXRhZGF0YSIsInBhZ2VzIiwiY29uZmlnIiwiZmlsZSIsInJlcSIsInNhdmVkRmlsZW5hbWUiLCJzdGF0aWNQYXRoIiwidXBsb2FkRWRpdHMiLCJ3aXRoTWV0YWRhdGEiLCJmb2NhbFBvaW50IiwiZm9jYWxQb2ludEVuYWJsZWQiLCJpbWFnZVNpemVzIiwidXBsb2FkIiwiaW5jb21pbmdGb2NhbFBvaW50IiwieCIsIk1hdGgiLCJyb3VuZCIsInkiLCJkZWZhdWx0UmVzdWx0IiwiZmlsZUlzQW5pbWF0ZWRUeXBlIiwiaW5jbHVkZXMiLCJtaW1ldHlwZSIsInNoYXJwT3B0aW9ucyIsImFuaW1hdGVkIiwic2hhcnBCYXNlIiwic2hhcnAiLCJ0ZW1wRmlsZVBhdGgiLCJkYXRhIiwicm90YXRlIiwib3JpZ2luYWxJbWFnZU1ldGEiLCJtZXRhZGF0YSIsImFkanVzdGVkRGltZW5zaW9ucyIsIm9yaWVudGF0aW9uIiwicmVzaXplSW1hZ2VNZXRhIiwicmVzdWx0cyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJyZXNpemVBY3Rpb24iLCJCb29sZWFuIiwiaW1hZ2VUb1Jlc2l6ZSIsImNsb25lIiwicmVzaXplZCIsInJlc2l6ZUhlaWdodCIsInJlc2l6ZVdpZHRoIiwicmVzaXplQXNwZWN0UmF0aW8iLCJwcmlvcml0aXplSGVpZ2h0IiwicmVzaXplIiwibWV0YWRhdGFBcHBlbmRlZEZpbGUiLCJvcHRpb25hbGx5QXBwZW5kTWV0YWRhdGEiLCJzaGFycEZpbGUiLCJpbmZvIiwidG9CdWZmZXIiLCJyZXNvbHZlV2l0aE9iamVjdCIsImhhbGZSZXNpemVYIiwieEZvY2FsQ2VudGVyIiwiY2FsY3VsYXRlZFJpZ2h0UGl4ZWxCb3VuZCIsImxlZnRCb3VuZCIsImhhbGZSZXNpemVZIiwieUZvY2FsQ2VudGVyIiwiY2FsY3VsYXRlZEJvdHRvbVBpeGVsQm91bmQiLCJ0b3BCb3VuZCIsImV4dHJhY3QiLCJsZWZ0IiwiZmxvb3IiLCJ0b3AiLCJmb3JtYXRPcHRpb25zIiwidG9Gb3JtYXQiLCJmb3JtYXQiLCJvcHRpb25zIiwidHJpbU9wdGlvbnMiLCJ0cmltIiwiYnVmZmVyRGF0YSIsImJ1ZmZlckluZm8iLCJzYW5pdGl6ZWRJbWFnZSIsInBheWxvYWRVcGxvYWRTaXplcyIsIm1pbWVJbmZvIiwiZnJvbUJ1ZmZlciIsImltYWdlTmFtZVdpdGhEaW1lbnNpb25zIiwiZ2VuZXJhdGVJbWFnZU5hbWUiLCJvcmlnaW5hbE5hbWUiLCJzaXplTmFtZSIsImltYWdlUGF0aCIsImZpbGVFeGlzdHMiLCJmcyIsInVubGlua1N5bmMiLCJzaXplIiwibWltZSIsImJ1ZmZlciIsInBhdGgiLCJyZWR1Y2UiLCJhY2MiLCJyZXN1bHQiLCJPYmplY3QiLCJhc3NpZ24iLCJwdXNoIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appendVersionToQueryKey.d.ts","sourceRoot":"","sources":["../../../src/versions/drafts/appendVersionToQueryKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAExC,eAAO,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"appendVersionToQueryKey.d.ts","sourceRoot":"","sources":["../../../src/versions/drafts/appendVersionToQueryKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAExC,eAAO,MAAM,uBAAuB,WAAW,KAAK,KAAQ,KAqB3D,CAAA"}
|
|
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "appendVersionToQueryKey", {
|
|
|
8
8
|
return appendVersionToQueryKey;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const appendVersionToQueryKey = (query)=>{
|
|
11
|
+
const appendVersionToQueryKey = (query = {})=>{
|
|
12
12
|
return Object.entries(query).reduce((res, [key, val])=>{
|
|
13
13
|
if ([
|
|
14
14
|
'AND',
|
|
@@ -34,4 +34,4 @@ const appendVersionToQueryKey = (query)=>{
|
|
|
34
34
|
}, {});
|
|
35
35
|
};
|
|
36
36
|
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJzaW9ucy9kcmFmdHMvYXBwZW5kVmVyc2lvblRvUXVlcnlLZXkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBXaGVyZSB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgYXBwZW5kVmVyc2lvblRvUXVlcnlLZXkgPSAocXVlcnk6IFdoZXJlID0ge30pOiBXaGVyZSA9PiB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhxdWVyeSkucmVkdWNlKChyZXMsIFtrZXksIHZhbF0pID0+IHtcbiAgICBpZiAoWydBTkQnLCAnT1InLCAnYW5kJywgJ29yJ10uaW5jbHVkZXMoa2V5KSAmJiBBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnJlcyxcbiAgICAgICAgW2tleS50b0xvd2VyQ2FzZSgpXTogdmFsLm1hcCgoc3ViUXVlcnkpID0+IGFwcGVuZFZlcnNpb25Ub1F1ZXJ5S2V5KHN1YlF1ZXJ5KSksXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGtleSAhPT0gJ2lkJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucmVzLFxuICAgICAgICBbYHZlcnNpb24uJHtrZXl9YF06IHZhbCxcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucmVzLFxuICAgICAgcGFyZW50OiB2YWwsXG4gICAgfVxuICB9LCB7fSlcbn1cbiJdLCJuYW1lcyI6WyJhcHBlbmRWZXJzaW9uVG9RdWVyeUtleSIsInF1ZXJ5IiwiT2JqZWN0IiwiZW50cmllcyIsInJlZHVjZSIsInJlcyIsImtleSIsInZhbCIsImluY2x1ZGVzIiwiQXJyYXkiLCJpc0FycmF5IiwidG9Mb3dlckNhc2UiLCJtYXAiLCJzdWJRdWVyeSIsInBhcmVudCJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiOzs7OytCQUVhQTs7O2VBQUFBOzs7QUFBTixNQUFNQSwwQkFBMEIsQ0FBQ0MsUUFBZSxDQUFDLENBQUM7SUFDdkQsT0FBT0MsT0FBT0MsT0FBTyxDQUFDRixPQUFPRyxNQUFNLENBQUMsQ0FBQ0MsS0FBSyxDQUFDQyxLQUFLQyxJQUFJO1FBQ2xELElBQUk7WUFBQztZQUFPO1lBQU07WUFBTztTQUFLLENBQUNDLFFBQVEsQ0FBQ0YsUUFBUUcsTUFBTUMsT0FBTyxDQUFDSCxNQUFNO1lBQ2xFLE9BQU87Z0JBQ0wsR0FBR0YsR0FBRztnQkFDTixDQUFDQyxJQUFJSyxXQUFXLEdBQUcsRUFBRUosSUFBSUssR0FBRyxDQUFDLENBQUNDLFdBQWFiLHdCQUF3QmE7WUFDckU7UUFDRjtRQUVBLElBQUlQLFFBQVEsTUFBTTtZQUNoQixPQUFPO2dCQUNMLEdBQUdELEdBQUc7Z0JBQ04sQ0FBQyxDQUFDLFFBQVEsRUFBRUMsSUFBSSxDQUFDLENBQUMsRUFBRUM7WUFDdEI7UUFDRjtRQUVBLE9BQU87WUFDTCxHQUFHRixHQUFHO1lBQ05TLFFBQVFQO1FBQ1Y7SUFDRixHQUFHLENBQUM7QUFDTiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getLatestCollectionVersion.d.ts","sourceRoot":"","sources":["../../src/versions/getLatestCollectionVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"getLatestCollectionVersion.d.ts","sourceRoot":"","sources":["../../src/versions/getLatestCollectionVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAO9C,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,yBAAyB,CAAA;IACjC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,WAAW,CAAA;IAClB,GAAG,CAAC,EAAE,cAAc,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,0BAA0B,qEAMpC,IAAI,eAkCN,CAAA"}
|
|
@@ -8,7 +8,9 @@ Object.defineProperty(exports, "getLatestCollectionVersion", {
|
|
|
8
8
|
return getLatestCollectionVersion;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
+
const _combineQueries = require("../database/combineQueries");
|
|
11
12
|
const _types = require("../types");
|
|
13
|
+
const _appendVersionToQueryKey = require("./drafts/appendVersionToQueryKey");
|
|
12
14
|
const getLatestCollectionVersion = async ({ id, config, payload, query, req })=>{
|
|
13
15
|
let latestVersion;
|
|
14
16
|
const hasConfigDb = Object.keys(config?.db ? config?.db : {}).length > 0;
|
|
@@ -19,11 +21,11 @@ const getLatestCollectionVersion = async ({ id, config, payload, query, req })=>
|
|
|
19
21
|
pagination: false,
|
|
20
22
|
req,
|
|
21
23
|
sort: '-updatedAt',
|
|
22
|
-
where: {
|
|
24
|
+
where: (0, _combineQueries.combineQueries)((0, _appendVersionToQueryKey.appendVersionToQueryKey)(query.where), {
|
|
23
25
|
parent: {
|
|
24
26
|
equals: id
|
|
25
27
|
}
|
|
26
|
-
}
|
|
28
|
+
})
|
|
27
29
|
});
|
|
28
30
|
[latestVersion] = docs;
|
|
29
31
|
}
|
|
@@ -50,4 +52,4 @@ const getLatestCollectionVersion = async ({ id, config, payload, query, req })=>
|
|
|
50
52
|
};
|
|
51
53
|
};
|
|
52
54
|
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJzaW9ucy9nZXRMYXRlc3RDb2xsZWN0aW9uVmVyc2lvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcsIFR5cGVXaXRoSUQgfSBmcm9tICcuLi9jb2xsZWN0aW9ucy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpbmRPbmVBcmdzIH0gZnJvbSAnLi4vZGF0YWJhc2UvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWQgfSBmcm9tICcuLi9wYXlsb2FkJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBUeXBlV2l0aFZlcnNpb24gfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBjb21iaW5lUXVlcmllcyB9IGZyb20gJy4uL2RhdGFiYXNlL2NvbWJpbmVRdWVyaWVzJ1xuaW1wb3J0IHsgZG9jSGFzVGltZXN0YW1wcyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgYXBwZW5kVmVyc2lvblRvUXVlcnlLZXkgfSBmcm9tICcuL2RyYWZ0cy9hcHBlbmRWZXJzaW9uVG9RdWVyeUtleSdcblxudHlwZSBBcmdzID0ge1xuICBjb25maWc6IFNhbml0aXplZENvbGxlY3Rpb25Db25maWdcbiAgaWQ6IG51bWJlciB8IHN0cmluZ1xuICBwYXlsb2FkOiBQYXlsb2FkXG4gIHF1ZXJ5OiBGaW5kT25lQXJnc1xuICByZXE/OiBQYXlsb2FkUmVxdWVzdFxufVxuXG5leHBvcnQgY29uc3QgZ2V0TGF0ZXN0Q29sbGVjdGlvblZlcnNpb24gPSBhc3luYyA8VCBleHRlbmRzIFR5cGVXaXRoSUQgPSBhbnk+KHtcbiAgaWQsXG4gIGNvbmZpZyxcbiAgcGF5bG9hZCxcbiAgcXVlcnksXG4gIHJlcSxcbn06IEFyZ3MpOiBQcm9taXNlPFQ+ID0+IHtcbiAgbGV0IGxhdGVzdFZlcnNpb246IFR5cGVXaXRoVmVyc2lvbjxUPlxuXG4gIGNvbnN0IGhhc0NvbmZpZ0RiID0gT2JqZWN0LmtleXMoY29uZmlnPy5kYiA/IGNvbmZpZz8uZGIgOiB7fSkubGVuZ3RoID4gMFxuXG4gIGlmIChjb25maWcudmVyc2lvbnM/LmRyYWZ0cyAmJiAhaGFzQ29uZmlnRGIpIHtcbiAgICBjb25zdCB7IGRvY3MgfSA9IGF3YWl0IHBheWxvYWQuZGIuZmluZFZlcnNpb25zPFQ+KHtcbiAgICAgIGNvbGxlY3Rpb246IGNvbmZpZy5zbHVnLFxuICAgICAgbGltaXQ6IDEsXG4gICAgICBwYWdpbmF0aW9uOiBmYWxzZSxcbiAgICAgIHJlcSxcbiAgICAgIHNvcnQ6ICctdXBkYXRlZEF0JyxcbiAgICAgIHdoZXJlOiBjb21iaW5lUXVlcmllcyhhcHBlbmRWZXJzaW9uVG9RdWVyeUtleShxdWVyeS53aGVyZSksIHsgcGFyZW50OiB7IGVxdWFsczogaWQgfSB9KSxcbiAgICB9KVxuICAgIDtbbGF0ZXN0VmVyc2lvbl0gPSBkb2NzXG4gIH1cblxuICBsZXQgZG9jXG4gIGlmIChjb25maWc/LmRiPy5maW5kT25lKSB7XG4gICAgZG9jID0gYXdhaXQgY29uZmlnLmRiLmZpbmRPbmU8VD4oeyAuLi5xdWVyeSwgcmVxIH0pXG4gIH0gZWxzZSB7XG4gICAgZG9jID0gYXdhaXQgcGF5bG9hZC5kYi5maW5kT25lPFQ+KHsgLi4ucXVlcnksIHJlcSB9KVxuICB9XG5cbiAgaWYgKCFsYXRlc3RWZXJzaW9uIHx8IChkb2NIYXNUaW1lc3RhbXBzKGRvYykgJiYgbGF0ZXN0VmVyc2lvbi51cGRhdGVkQXQgPCBkb2MudXBkYXRlZEF0KSkge1xuICAgIHJldHVybiBkb2NcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4ubGF0ZXN0VmVyc2lvbi52ZXJzaW9uLFxuICAgIGlkLFxuICAgIGNyZWF0ZWRBdDogbGF0ZXN0VmVyc2lvbi5jcmVhdGVkQXQsXG4gICAgdXBkYXRlZEF0OiBsYXRlc3RWZXJzaW9uLnVwZGF0ZWRBdCxcbiAgfVxufVxuIl0sIm5hbWVzIjpbImdldExhdGVzdENvbGxlY3Rpb25WZXJzaW9uIiwiaWQiLCJjb25maWciLCJwYXlsb2FkIiwicXVlcnkiLCJyZXEiLCJsYXRlc3RWZXJzaW9uIiwiaGFzQ29uZmlnRGIiLCJPYmplY3QiLCJrZXlzIiwiZGIiLCJsZW5ndGgiLCJ2ZXJzaW9ucyIsImRyYWZ0cyIsImRvY3MiLCJmaW5kVmVyc2lvbnMiLCJjb2xsZWN0aW9uIiwic2x1ZyIsImxpbWl0IiwicGFnaW5hdGlvbiIsInNvcnQiLCJ3aGVyZSIsImNvbWJpbmVRdWVyaWVzIiwiYXBwZW5kVmVyc2lvblRvUXVlcnlLZXkiLCJwYXJlbnQiLCJlcXVhbHMiLCJkb2MiLCJmaW5kT25lIiwiZG9jSGFzVGltZXN0YW1wcyIsInVwZGF0ZWRBdCIsInZlcnNpb24iLCJjcmVhdGVkQXQiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6Ijs7OzsrQkFrQmFBOzs7ZUFBQUE7OztnQ0Faa0I7dUJBQ0U7eUNBQ087QUFVakMsTUFBTUEsNkJBQTZCLE9BQW1DLEVBQzNFQyxFQUFFLEVBQ0ZDLE1BQU0sRUFDTkMsT0FBTyxFQUNQQyxLQUFLLEVBQ0xDLEdBQUcsRUFDRTtJQUNMLElBQUlDO0lBRUosTUFBTUMsY0FBY0MsT0FBT0MsSUFBSSxDQUFDUCxRQUFRUSxLQUFLUixRQUFRUSxLQUFLLENBQUMsR0FBR0MsTUFBTSxHQUFHO0lBRXZFLElBQUlULE9BQU9VLFFBQVEsRUFBRUMsVUFBVSxDQUFDTixhQUFhO1FBQzNDLE1BQU0sRUFBRU8sSUFBSSxFQUFFLEdBQUcsTUFBTVgsUUFBUU8sRUFBRSxDQUFDSyxZQUFZLENBQUk7WUFDaERDLFlBQVlkLE9BQU9lLElBQUk7WUFDdkJDLE9BQU87WUFDUEMsWUFBWTtZQUNaZDtZQUNBZSxNQUFNO1lBQ05DLE9BQU9DLElBQUFBLDhCQUFjLEVBQUNDLElBQUFBLGdEQUF1QixFQUFDbkIsTUFBTWlCLEtBQUssR0FBRztnQkFBRUcsUUFBUTtvQkFBRUMsUUFBUXhCO2dCQUFHO1lBQUU7UUFDdkY7UUFDQyxDQUFDSyxjQUFjLEdBQUdRO0lBQ3JCO0lBRUEsSUFBSVk7SUFDSixJQUFJeEIsUUFBUVEsSUFBSWlCLFNBQVM7UUFDdkJELE1BQU0sTUFBTXhCLE9BQU9RLEVBQUUsQ0FBQ2lCLE9BQU8sQ0FBSTtZQUFFLEdBQUd2QixLQUFLO1lBQUVDO1FBQUk7SUFDbkQsT0FBTztRQUNMcUIsTUFBTSxNQUFNdkIsUUFBUU8sRUFBRSxDQUFDaUIsT0FBTyxDQUFJO1lBQUUsR0FBR3ZCLEtBQUs7WUFBRUM7UUFBSTtJQUNwRDtJQUVBLElBQUksQ0FBQ0MsaUJBQWtCc0IsSUFBQUEsdUJBQWdCLEVBQUNGLFFBQVFwQixjQUFjdUIsU0FBUyxHQUFHSCxJQUFJRyxTQUFTLEVBQUc7UUFDeEYsT0FBT0g7SUFDVDtJQUVBLE9BQU87UUFDTCxHQUFHcEIsY0FBY3dCLE9BQU87UUFDeEI3QjtRQUNBOEIsV0FBV3pCLGNBQWN5QixTQUFTO1FBQ2xDRixXQUFXdkIsY0FBY3VCLFNBQVM7SUFDcEM7QUFDRiJ9
|