tuain-ng-forms-lib 0.12.22 → 0.12.23
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/bundles/tuain-ng-forms-lib.umd.js +12 -9
- package/bundles/tuain-ng-forms-lib.umd.js.map +1 -1
- package/esm2015/lib/classes/forms/field.js +13 -10
- package/fesm2015/tuain-ng-forms-lib.js +12 -9
- package/fesm2015/tuain-ng-forms-lib.js.map +1 -1
- package/lib/classes/forms/field.d.ts +1 -1
- package/package.json +1 -1
|
@@ -43,7 +43,7 @@ const FIELD_TYPES = {
|
|
|
43
43
|
phone: 'PHONE',
|
|
44
44
|
};
|
|
45
45
|
const FIELD_TYPES_FORMATS = {
|
|
46
|
-
EMAIL: '^\\w+([\\.-]?\\w+)@\\w+([\\.-]?\\w+)(\\.\\w{2,3})+$',
|
|
46
|
+
EMAIL: new RegExp('^\\w+([\\.-]?\\w+)@\\w+([\\.-]?\\w+)(\\.\\w{2,3})+$'),
|
|
47
47
|
};
|
|
48
48
|
const STD_MAX_LENGTH = 50;
|
|
49
49
|
const BIG_MAX_LENGTH = 500;
|
|
@@ -67,7 +67,12 @@ export class FieldDescriptor extends FormElement {
|
|
|
67
67
|
const defaultTypeAlignment = (tableFieldStyles[this.fieldType] != null) ? tableFieldStyles[this.fieldType]['text-align'] : 'left';
|
|
68
68
|
this.fieldAlignment = (fieldReceived.alignment != null) ? fieldReceived.alignment.toLowerCase() : defaultTypeAlignment;
|
|
69
69
|
this.fieldInfo = fieldReceived.info || '';
|
|
70
|
-
|
|
70
|
+
try {
|
|
71
|
+
this.fieldFormat = (fieldReceived.format) ? new RegExp(fieldReceived.format) : null;
|
|
72
|
+
}
|
|
73
|
+
catch (e) {
|
|
74
|
+
this.fieldFormat = null;
|
|
75
|
+
}
|
|
71
76
|
this.validateOnServer = (_c = fieldReceived === null || fieldReceived === void 0 ? void 0 : fieldReceived.serverAction) !== null && _c !== void 0 ? _c : false;
|
|
72
77
|
this.customAttributes = (_d = fieldReceived === null || fieldReceived === void 0 ? void 0 : fieldReceived.customAttributes) !== null && _d !== void 0 ? _d : null;
|
|
73
78
|
this.setVisibility(fieldReceived.visible);
|
|
@@ -110,15 +115,13 @@ export class FieldDescriptor extends FormElement {
|
|
|
110
115
|
this._editionPartial.next({ code: this.fieldCode, intrinsicValidation });
|
|
111
116
|
}
|
|
112
117
|
notifyEditionFinish() {
|
|
113
|
-
var _a, _b;
|
|
118
|
+
var _a, _b, _c, _d;
|
|
114
119
|
let intrinsicValidation = true;
|
|
115
|
-
const fieldDefaultFormat = (FIELD_TYPES_FORMATS === null || FIELD_TYPES_FORMATS === void 0 ? void 0 : FIELD_TYPES_FORMATS[this.fieldType])
|
|
116
|
-
? new RegExp(FIELD_TYPES_FORMATS === null || FIELD_TYPES_FORMATS === void 0 ? void 0 : FIELD_TYPES_FORMATS[this.fieldType]) : null;
|
|
117
|
-
const fieldFormat = (this.fieldFormat) ? new RegExp(this.fieldFormat) : null;
|
|
120
|
+
const fieldDefaultFormat = (_a = FIELD_TYPES_FORMATS === null || FIELD_TYPES_FORMATS === void 0 ? void 0 : FIELD_TYPES_FORMATS[this.fieldType]) !== null && _a !== void 0 ? _a : null;
|
|
118
121
|
const fieldValue = this.getValue();
|
|
119
|
-
if (fieldValue && (fieldDefaultFormat || fieldFormat)) {
|
|
120
|
-
intrinsicValidation = ((
|
|
121
|
-
&& ((
|
|
122
|
+
if (fieldValue && (fieldDefaultFormat || this.fieldFormat)) {
|
|
123
|
+
intrinsicValidation = ((_b = fieldDefaultFormat === null || fieldDefaultFormat === void 0 ? void 0 : fieldDefaultFormat.test(fieldValue)) !== null && _b !== void 0 ? _b : true)
|
|
124
|
+
&& ((_d = (_c = this.fieldFormat) === null || _c === void 0 ? void 0 : _c.test(fieldValue)) !== null && _d !== void 0 ? _d : true);
|
|
122
125
|
if (!intrinsicValidation) {
|
|
123
126
|
this.setError('99', this._intrinsicErrorMessage);
|
|
124
127
|
}
|
|
@@ -351,4 +354,4 @@ export class FieldDescriptor extends FormElement {
|
|
|
351
354
|
}
|
|
352
355
|
}
|
|
353
356
|
}
|
|
354
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2ZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTlDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQztBQUU5QixNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUM7QUFDakMsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDO0FBQ3JDLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQztBQUNqQyxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQztBQUN6QyxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUM7QUFDbkMsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUM7QUFDckMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ2hDLE1BQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFDO0FBQzNDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQztBQUNsQyxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUM7QUFDbkMsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDO0FBQ3JDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQztBQUNwQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUM7QUFDMUIsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDO0FBRWxDLE1BQU0sV0FBVyxHQUFHO0lBQ2xCLEtBQUssRUFBRSxPQUFPO0lBQ2QsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsTUFBTTtJQUNaLFNB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LENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUNuQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxRQUFRLEVBQUU7d0JBQ2xDLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7cUJBQ2hDO29CQUNELGFBQWEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNyQztxQkFBTTtvQkFDTCxhQUFhLEdBQUcsUUFBUSxDQUFDO2lCQUMxQjtnQkFDRCxNQUFNO1lBQ1IsS0FBSyxrQkFBa0IsQ0FBQyxhQUFhO2dCQUNuQyxhQUFhLEdBQUcsUUFBUSxDQUFDO2dCQUN6QixJQUFJLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLFlBQVksRUFBRTtvQkFDaEQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM5QyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQy9DLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztpQkFDL0M7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssa0JBQWtCLENBQUMsa0JBQWtCO2dCQUN4QyxhQUFhLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDakQsTUFBTTtZQUNSO2dCQUNFLGFBQWEsR0FBRyxRQUFRLENBQUM7Z0JBQ3pCLE1BQU07U0FDVDtRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxhQUFhLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxhQUFhLENBQUM7U0FDbEM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb21wb25lbnRDb25zdGFudHMsIHRhYmxlRmllbGRTdHlsZXMgfSBmcm9tICcuL2Zvcm0uY29uc3RhbnRzJztcbmltcG9ydCB7IEZvcm1FbGVtZW50IH0gZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCB7IGZvcm1hdEN1cnJlbmN5IH0gZnJvbSAnLi4vdXRpbGl0aWVzJztcblxuY29uc3QgVU5ERUZJTkVEID0gJ3VuZGVmaW5lZCc7XG5cbmNvbnN0IEZJRUxEX1ZBTFVFID0gJ2ZpZWxkVmFsdWUnO1xuY29uc3QgRklFTERfT1BUSU9OUyA9ICdmaWVsZE9wdGlvbnMnO1xuY29uc3QgRklFTERfVElUTEUgPSAnZmllbGRUaXRsZSc7XG5jb25zdCBGSUVMRF9DQVBUVVJFX1RZUEUgPSAnY2FwdHVyZVR5cGUnO1xuY29uc3QgRklFTERfVFlQRSA9ICdmaWVsZFR5cGVDb2RlJztcbmNvbnN0IEZJRUxEX01BWF9MRU5HVEggPSAnbWF4TGVuZ3RoJztcbmNvbnN0IEZJRUxEX1ZJU0lCTEUgPSAndmlzaWJsZSc7XG5jb25zdCBGSUVMRF9MQUJFTF9WSVNJQkxFID0gJ3Zpc2libGVMYWJlbCc7XG5jb25zdCBGSUVMRF9SRVFVSVJFRCA9ICdyZXF1aXJlZCc7XG5jb25zdCBGSUVMRF9FUlJfQ09ERSA9ICdlcnJvckNvZGUnO1xuY29uc3QgRklFTERfRVJSX01TRyA9ICdlcnJvck1lc3NhZ2UnO1xuY29uc3QgRklFTERfVE9PTFRJUCA9ICd0b29sdGlwVGV4dCc7XG5jb25zdCBGSUVMRF9JTkZPID0gJ2luZm8nO1xuY29uc3QgRklFTERfRURJVEFCTEUgPSAnZWRpdGFibGUnO1xuXG5jb25zdCBGSUVMRF9UWVBFUyA9IHtcbiAgYXJyYXk6ICdBUlJBWScsXG4gIGNoZWNrOiAnQ0hFQ0snLFxuICBkYXRlOiAnREFURScsXG4gIGRhdGVyYW5nZTogJ0RBVEVSQU5HRScsXG4gIHRpbWU6ICdUSU1FJyxcbiAgdGltZXJhbmdlOiAnVElNRVJBTkdFJyxcbiAgbWFwOiAnTUFQJyxcbiAgbnVtYmVyOiAnTlVNQkVSJyxcbiAgZGVjaW1hbDogJ0RFQ0lNQUwnLFxuICBjdXJyZW5jeTogJ0NVUlJFTkNZJyxcbiAgc2VsZWN0OiAnU0VMRUNUJyxcbiAgdHlwZWFoZWFkOiAnVFlQRUFIRUFEJyxcbiAgdGV4dDogJ1RFWFQnLFxuICBwYXNzd29yZDogJ1BBU1NXT1JEJyxcbiAgbGFiZWw6ICdMQUJFTCcsXG4gIGh0bWw6ICdIVE1MJyxcbiAgdGl0bGU6ICdUSVRMRScsXG4gIG1lc3NhZ2U6ICdNRVNTQUdFJyxcbiAgbGluazogJ0xJTksnLFxuICB3YXJuaW5nOiAnV0FSTklORycsXG4gIGF2YXRhcjogJ0FWQVRBUicsXG4gIGVtYWlsOiAnRU1BSUwnLFxuICBwaG9uZTogJ1BIT05FJyxcbn07XG5cbmNvbnN0IEZJRUxEX1RZUEVTX0ZPUk1BVFMgPSB7XG4gIEVNQUlMOiAnXlxcXFx3KyhbXFxcXC4tXT9cXFxcdyspQFxcXFx3KyhbXFxcXC4tXT9cXFxcdyspKFxcXFwuXFxcXHd7MiwzfSkrJCcsXG59O1xuXG5jb25zdCBTVERfTUFYX0xFTkdUSCA9IDUwO1xuY29uc3QgQklHX01BWF9MRU5HVEggPSA1MDA7XG5cbmV4cG9ydCBjbGFzcyBGaWVsZERlc2NyaXB0b3IgZXh0ZW5kcyBGb3JtRWxlbWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpb25GaW5pc2ggPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpb25QYXJ0aWFsID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXRhaWxSZXF1ZXN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIF9maWVsZFZhbHVlOiBhbnk7XG4gIGhhc0NoYW5nZWQ6IGJvb2xlYW47XG4gIG91dHB1dE9ubHk6IGJvb2xlYW47XG4gIF9taW5WYWx1ZTogYW55O1xuICBfbWF4VmFsdWU6IGFueTtcbiAgX21heExlbmd0aDogbnVtYmVyO1xuICBfb25WYWxpZGF0aW9uOiBib29sZWFuO1xuICBfaW50cmluc2ljRXJyb3JNZXNzYWdlOiBzdHJpbmc7XG5cbiAgZmllbGRDb2RlOiBzdHJpbmc7XG4gIGNhcHR1cmVUeXBlOiBzdHJpbmc7XG4gIGZpZWxkVGl0bGU6IHN0cmluZztcbiAgZmllbGRUeXBlOiBzdHJpbmc7XG4gIGZpZWxkQWxpZ25tZW50OiBzdHJpbmc7XG4gIGZpZWxkRm9ybWF0OiBzdHJpbmc7XG4gIGV4dGVybmFsVmFsdWU6IGFueTtcbiAgZmllbGRJbmZvOiBzdHJpbmc7XG4gIHRvb2x0aXBUZXh0OiBzdHJpbmc7XG4gIGRlZmF1bHRWYWx1ZTogc3RyaW5nO1xuICBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgZXJyb3JUeXBlOiBzdHJpbmc7XG4gIGVycm9yQ29kZTogc3RyaW5nO1xuICBjdXN0b21BdHRyaWJ1dGVzOiBhbnk7XG5cbiAgdmFsaWRhdGVPblNlcnZlcjogYm9vbGVhbjtcbiAgdmlzaWJsZUxhYmVsOiBib29sZWFuO1xuICBkZWZhdWx0RWRpdGFibGU6IGJvb2xlYW47XG4gIGZpZWxkUmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgZmllbGRPcHRpb25zOiB7XG4gICAgZmllbGRPcHRpb25WYWx1ZTogc3RyaW5nO1xuICAgIGZpZWxkT3B0aW9uSWQ6IHN0cmluZztcbiAgfVtdO1xuXG4gIGNvbnN0cnVjdG9yKGlucHV0RmllbGRSZWNlaXZlZCkge1xuICAgIHN1cGVyKGlucHV0RmllbGRSZWNlaXZlZCk7XG4gICAgdGhpcy50eXBlID0gY29tcG9uZW50Q29uc3RhbnRzLkVMRU1FTlRUWVBFX0ZJRUxEO1xuXG4gICAgY29uc3QgZmllbGRSZWNlaXZlZCA9IChpbnB1dEZpZWxkUmVjZWl2ZWQpID8gaW5wdXRGaWVsZFJlY2VpdmVkIDoge307XG4gICAgdGhpcy5zZXRFZGl0YWJsZShmaWVsZFJlY2VpdmVkPy5lZGl0YWJsZSA/PyB0cnVlKTtcbiAgICB0aGlzLmZpZWxkQ29kZSA9IGZpZWxkUmVjZWl2ZWQuZmllbGRDb2RlO1xuICAgIHRoaXMuZmllbGRUaXRsZSA9IGZpZWxkUmVjZWl2ZWQuZmllbGRUaXRsZSB8fCB0aGlzLmZpZWxkQ29kZTtcbiAgICB0aGlzLmNhcHR1cmVUeXBlID0gZmllbGRSZWNlaXZlZC5jYXB0dXJlVHlwZSB8fCAnSU5QVVQnO1xuICAgIHRoaXMuc2V0RmllbGRUeXBlKGZpZWxkUmVjZWl2ZWQuZmllbGRUeXBlQ29kZSk7XG4gICAgdGhpcy5kZWZhdWx0VmFsdWUgPSBmaWVsZFJlY2VpdmVkLmRlZmF1bHRWYWx1ZSB8fCBudWxsO1xuICAgIHRoaXMuX21heExlbmd0aCA9IGZpZWxkUmVjZWl2ZWQubWF4TGVuZ3RoID8/ICggdGhpcy5jYXB0dXJlVHlwZSA9PT0gJ1RFWFRBUkVBJyA/IEJJR19NQVhfTEVOR1RIIDogU1REX01BWF9MRU5HVEgpO1xuXG4gICAgdGhpcy5zZXRWYWx1ZShmaWVsZFJlY2VpdmVkLmZpZWxkVmFsdWUgfHwgdGhpcy5kZWZhdWx0VmFsdWUgfHwgJycpO1xuICAgIGNvbnN0IGRlZmF1bHRUeXBlQWxpZ25tZW50ID0gKHRhYmxlRmllbGRTdHlsZXNbdGhpcy5maWVsZFR5cGVdICE9IG51bGwpID8gdGFibGVGaWVsZFN0eWxlc1t0aGlzLmZpZWxkVHlwZV1bJ3RleHQtYWxpZ24nXSA6ICdsZWZ0JztcbiAgICB0aGlzLmZpZWxkQWxpZ25tZW50ID0gKGZpZWxkUmVjZWl2ZWQuYWxpZ25tZW50ICE9IG51bGwpID8gZmllbGRSZWNlaXZlZC5hbGlnbm1lbnQudG9Mb3dlckNhc2UoKSA6IGRlZmF1bHRUeXBlQWxpZ25tZW50O1xuICAgIHRoaXMuZmllbGRJbmZvID0gZmllbGRSZWNlaXZlZC5pbmZvIHx8ICcnO1xuICAgIHRoaXMuZmllbGRGb3JtYXQgPSBmaWVsZFJlY2VpdmVkLmZvcm1hdCB8fCBudWxsO1xuICAgIHRoaXMudmFsaWRhdGVPblNlcnZlciA9IGZpZWxkUmVjZWl2ZWQ/LnNlcnZlckFjdGlvbiA/PyBmYWxzZTtcbiAgICB0aGlzLmN1c3RvbUF0dHJpYnV0ZXMgPSBmaWVsZFJlY2VpdmVkPy5jdXN0b21BdHRyaWJ1dGVzID8/IG51bGw7XG5cbiAgICB0aGlzLnNldFZpc2liaWxpdHkoZmllbGRSZWNlaXZlZC52aXNpYmxlKTtcbiAgICB0aGlzLnZpc2libGVMYWJlbCA9IGZpZWxkUmVjZWl2ZWQ/LnZpc2libGVMYWJlbCA/PyB0cnVlO1xuICAgIHRoaXMudG9vbHRpcFRleHQgPSBmaWVsZFJlY2VpdmVkLnRvb2x0aXAgfHwgJyc7XG4gICAgdGhpcy5kZWZhdWx0RWRpdGFibGUgPSB0aGlzLmVuYWJsZWQ7XG4gICAgdGhpcy5maWVsZFJlcXVpcmVkID0gZmllbGRSZWNlaXZlZD8ucmVxdWlyZWQgPz8gZmFsc2U7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBmaWVsZFJlY2VpdmVkLmVycm9yTWVzc2FnZSB8fCAnJztcbiAgICB0aGlzLmVycm9yQ29kZSA9IGZpZWxkUmVjZWl2ZWQuZXJyb3JDb2RlID8/ICcwMCc7XG4gICAgdGhpcy5vdXRwdXRPbmx5ID0gZmllbGRSZWNlaXZlZD8ub3V0cHV0T25seSA/PyBmYWxzZTtcbiAgICB0aGlzLnNldEZpZWxkT3B0aW9ucyhmaWVsZFJlY2VpdmVkLmZpZWxkT3B0aW9ucyk7XG5cbiAgICB0aGlzLl9pbnRyaW5zaWNFcnJvck1lc3NhZ2UgPSAodGhpcy5maWVsZFR5cGUgPT09IEZJRUxEX1RZUEVTLmVtYWlsKVxuICAgICAgPyBgRWwgdmFsb3IgZGUgJHt0aGlzLmZpZWxkVGl0bGV9IG5vIGNvcnJlc3BvbmRlIGEgdW4gY29ycmVvIHbDoWxpZG9gXG4gICAgICA6IGBFbCB2YWxvciBkZSAke3RoaXMuZmllbGRUaXRsZX0gbm8gc2UgYWp1c3RhIGFsIGZvcm1hdG8gZXN0YWJsZWNpZG9gO1xuICB9XG5cbiAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLmZpZWxkQ29kZTsgfVxuICBnZXQgZWRpdGlvbkZpbmlzaCgpIHsgcmV0dXJuIHRoaXMuX2VkaXRpb25GaW5pc2g7IH1cbiAgZ2V0IGVkaXRpb25QYXJ0aWFsKCkgeyByZXR1cm4gdGhpcy5fZWRpdGlvblBhcnRpYWw7IH1cbiAgZ2V0IGRldGFpbFJlcXVlc3QoKSB7IHJldHVybiB0aGlzLl9kZXRhaWxSZXF1ZXN0OyB9XG5cbiAgZ2V0IHZhbGlkYXRpbmcoKSB7IHJldHVybiB0aGlzLl9vblZhbGlkYXRpb247IH1cbiAgc2V0IHZhbGlkYXRpbmcoaXNWYWxpZGF0aW5nOiBib29sZWFuKSB7IHRoaXMuX29uVmFsaWRhdGlvbiA9IGlzVmFsaWRhdGluZzsgfVxuXG4gIHNldEludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpIHsgdGhpcy5faW50cmluc2ljRXJyb3JNZXNzYWdlID0gbWVzc2FnZTsgfVxuICBzZXQgaW50cmluc2ljRXJyb3JNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZykgeyB0aGlzLnNldEludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlKTsgfVxuXG4gIGdldCBmaWVsZFZhbHVlKCkgeyByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpOyB9XG4gIGdldCByZXF1aXJlZCgpIHsgcmV0dXJuIHRoaXMuZmllbGRSZXF1aXJlZDsgfVxuICBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pIHsgdGhpcy5maWVsZFJlcXVpcmVkID0gcmVxdWlyZWQgPz8gZmFsc2U7IH1cbiAgZ2V0IG1heExlbmd0aCgpIHsgcmV0dXJuICh0aGlzLl9tYXhMZW5ndGggPiAwKSA/IHRoaXMuX21heExlbmd0aC50b1N0cmluZygpIDogJyc7IH1cbiAgc2V0IG1heExlbmd0aChyZXF1aXJlZE1heExlbmd0aDogYW55KSB7XG4gICAgaWYgKHR5cGVvZiByZXF1aXJlZE1heExlbmd0aCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuX21heExlbmd0aCA9IHBhcnNlSW50KHJlcXVpcmVkTWF4TGVuZ3RoLCAxMCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcmVxdWlyZWRNYXhMZW5ndGggPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLl9tYXhMZW5ndGggPSByZXF1aXJlZE1heExlbmd0aDtcbiAgICB9XG4gIH1cbiAgZ2V0IHZhbHVlKCkgeyByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpOyB9XG4gIHNldCB2YWx1ZShuZXdWYWx1ZSkgeyB0aGlzLnNldFZhbHVlKG5ld1ZhbHVlKTsgfVxuXG4gIG5vdGlmeUVkaXRpb25QYXJ0aWFsKCkge1xuICAgIGNvbnN0IGludHJpbnNpY1ZhbGlkYXRpb24gPSB0cnVlO1xuICAgIHRoaXMuX2VkaXRpb25QYXJ0aWFsLm5leHQoeyBjb2RlOiB0aGlzLmZpZWxkQ29kZSwgaW50cmluc2ljVmFsaWRhdGlvbiB9KTtcbiAgfVxuXG4gIG5vdGlmeUVkaXRpb25GaW5pc2goKSB7XG4gICAgbGV0IGludHJpbnNpY1ZhbGlkYXRpb24gPSB0cnVlO1xuICAgIGNvbnN0IGZpZWxkRGVmYXVsdEZvcm1hdCA9IEZJRUxEX1RZUEVTX0ZPUk1BVFM/Llt0aGlzLmZpZWxkVHlwZV1cbiAgICAgID8gbmV3IFJlZ0V4cChGSUVMRF9UWVBFU19GT1JNQVRTPy5bdGhpcy5maWVsZFR5cGVdKSA6IG51bGw7XG4gICAgY29uc3QgZmllbGRGb3JtYXQgPSAodGhpcy5maWVsZEZvcm1hdCkgPyBuZXcgUmVnRXhwKHRoaXMuZmllbGRGb3JtYXQpIDogbnVsbDtcbiAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIGlmIChmaWVsZFZhbHVlICYmIChmaWVsZERlZmF1bHRGb3JtYXQgfHwgZmllbGRGb3JtYXQpKSB7XG4gICAgICBpbnRyaW5zaWNWYWxpZGF0aW9uID0gKGZpZWxkRGVmYXVsdEZvcm1hdD8udGVzdChmaWVsZFZhbHVlKSA/PyB0cnVlKSBcbiAgICAgICAgJiYgKGZpZWxkRm9ybWF0Py50ZXN0KGZpZWxkVmFsdWUpID8/IHRydWUpO1xuICAgICAgaWYgKCFpbnRyaW5zaWNWYWxpZGF0aW9uKSB7XG4gICAgICAgIHRoaXMuc2V0RXJyb3IoJzk5JywgdGhpcy5faW50cmluc2ljRXJyb3JNZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fZWRpdGlvbkZpbmlzaC5uZXh0KHsgY29kZTogdGhpcy5maWVsZENvZGUsIGludHJpbnNpY1ZhbGlkYXRpb24gfSk7XG4gIH1cblxuICBub3RpZnlFZGl0aW9uRGV0YWlsUmVxdWVzdCgpIHtcbiAgICB0aGlzLl9kZXRhaWxSZXF1ZXN0Lm5leHQodGhpcy5maWVsZENvZGUpO1xuICB9XG5cbiAgc2hvd0xhYmVsKCkgeyB0aGlzLnZpc2libGVMYWJlbCA9IHRydWU7IH1cbiAgaGlkZUxhYmVsKCkgeyB0aGlzLnZpc2libGVMYWJlbCA9IGZhbHNlOyB9XG4gIGNoYW5nZWQoKSB7IHRoaXMuaGFzQ2hhbmdlZCA9IHRydWU7IH1cbiAgZ2V0UmF3VmFsdWUoKSB7IHJldHVybiB0aGlzLl9maWVsZFZhbHVlOyB9XG4gIHNldExhYmVsKGxhYmVsKSB7IHRoaXMuZmllbGRUaXRsZSA9IGxhYmVsOyB9XG4gIGNsZWFuKCkgeyB0aGlzLnNldFZhbHVlKHRoaXMuZGVmYXVsdFZhbHVlIHx8ICcnKTsgfVxuICBnZXQgYmFja2VuZCgpIHsgcmV0dXJuIHRoaXMudmFsaWRhdGVPblNlcnZlcjsgfVxuXG4gIHNldFZpc2libGVMYWJlbCh2aXNpYmxlTGFiZWw6IGJvb2xlYW4pIHsgdGhpcy52aXNpYmxlTGFiZWwgPSB2aXNpYmxlTGFiZWw7IH1cbiAgc2V0RWRpdGFibGUoZWRpdGFibGU6IGJvb2xlYW4gPSB0cnVlKSB7IChlZGl0YWJsZSkgPyB0aGlzLmVuYWJsZSgpIDogdGhpcy5kaXNhYmxlKCk7IH1cblxuICBzZXRFcnJvcihjb2RlLCBtZXNzYWdlLCB0eXBlID0gJ2Vycm9yJykge1xuICAgIHRoaXMuZXJyb3JUeXBlID0gKGNvZGUgPT09ICcwMCcpID8gJycgOiB0eXBlO1xuICAgIHRoaXMuZXJyb3JDb2RlID0gY29kZTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG1lc3NhZ2U7XG4gIH1cblxuICBnZXRFcnJvcigpIHsgcmV0dXJuIHsgdHlwZTogdGhpcy5lcnJvclR5cGUsIGNvZGU6IHRoaXMuZXJyb3JDb2RlLCBtZXNzYWdlOiB0aGlzLmVycm9yTWVzc2FnZSB9OyB9XG4gIGdldCBlcnJvcigpIHsgcmV0dXJuIHRoaXMuZ2V0RXJyb3IoKTsgfVxuICBzZXQgZXJyb3IoZXJyb3JPYmopIHsgdGhpcy5zZXRFcnJvcihlcnJvck9iai5jb2RlLCBlcnJvck9iai5tZXNzYWdlLCBlcnJvck9iai50eXBlKSB9XG5cbiAgZ2V0RXJyb3JDb2RlKCkgeyByZXR1cm4gdGhpcy5nZXRFcnJvcigpLmNvZGU7IH1cbiAgc2V0RXJyb3JDb2RlKGNvZGUpIHsgdGhpcy5zZXRFcnJvcihjb2RlLCB0aGlzLmVycm9yTWVzc2FnZSk7IH1cbiAgZ2V0RXJyb3JNZXNzYWdlKCkgeyByZXR1cm4gdGhpcy5nZXRFcnJvcigpLm1lc3NhZ2U7IH1cbiAgc2V0RXJyb3JNZXNzYWdlKG1zZykgeyB0aGlzLnNldEVycm9yKHRoaXMuZXJyb3JDb2RlLCBtc2cpOyB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICBjb25zdCBmaWVsZEN1cnJlbnRWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTtcbiAgICBpZiAoZmllbGRDdXJyZW50VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBmaWVsZEN1cnJlbnRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICgodGhpcy5maWVsZFR5cGUgPT09IEZJRUxEX1RZUEVTLmFycmF5IHx8IHRoaXMuZmllbGRUeXBlID09PSBGSUVMRF9UWVBFUy5waG9uZSlcbiAgICAgICYmIEFycmF5LmlzQXJyYXkoZmllbGRDdXJyZW50VmFsdWUpICYmIGZpZWxkQ3VycmVudFZhbHVlLmxlbmd0aCA9PT0gMCApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgcmV0dXJuIGZpZWxkQ3VycmVudFZhbHVlID09PSAnJzsgXG4gIH1cblxuICBnZXRWYWx1ZSgpIHtcbiAgICBzd2l0Y2ggKHRoaXMuZmllbGRUeXBlKSB7XG4gICAgICBjYXNlIGNvbXBvbmVudENvbnN0YW50cy5GSUVMRFRZUEVfQ0hFQ0s6XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZFZhbHVlID8/IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgY29tcG9uZW50Q29uc3RhbnRzLkZJRUxEVFlQRV9DVVJSRU5DWTpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsdWUucmVwbGFjZSgnLCcsICcnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRnJvbVNlcnZlcihmbGQpIHtcbiAgICBpZiAoRklFTERfVklTSUJMRSBpbiBmbGQpIHtcbiAgICAgIHRoaXMuc2V0VmlzaWJpbGl0eShmbGQudmlzaWJsZSk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9MQUJFTF9WSVNJQkxFIGluIGZsZCkge1xuICAgICAgdGhpcy5zZXRWaXNpYmxlTGFiZWwoZmxkLnZpc2libGVMYWJlbCk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9SRVFVSVJFRCBpbiBmbGQpIHtcbiAgICAgIHRoaXMuZmllbGRSZXF1aXJlZCA9IGZsZC5yZXF1aXJlZCA/PyBmYWxzZTtcbiAgICB9XG4gICAgaWYgKEZJRUxEX0VSUl9DT0RFIGluIGZsZCkge1xuICAgICAgKHRoaXMuZXJyb3JDb2RlID0gZmxkLmVycm9yQ29kZSk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9FUlJfTVNHIGluIGZsZCkge1xuICAgICAgKHRoaXMuZXJyb3JNZXNzYWdlID0gZmxkLmVycm9yTWVzc2FnZSk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9UT09MVElQIGluIGZsZCkge1xuICAgICAgKHRoaXMudG9vbHRpcFRleHQgPSBmbGQudG9vbHRpcCk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9JTkZPIGluIGZsZCkge1xuICAgICAgKHRoaXMuZmllbGRJbmZvID0gZmxkLmluZm8pO1xuICAgIH1cbiAgICBpZiAoRklFTERfRURJVEFCTEUgaW4gZmxkKSB7XG4gICAgICB0aGlzLnNldEVkaXRhYmxlKGZsZC5lZGl0YWJsZSk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9USVRMRSBpbiBmbGQpIHtcbiAgICAgIHRoaXMuc2V0TGFiZWwoZmxkLmZpZWxkVGl0bGUudG9TdHJpbmcoKSk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9WQUxVRSBpbiBmbGQpIHtcbiAgICAgIHRoaXMuaGFzQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5zZXRWYWx1ZShmbGQuZmllbGRWYWx1ZSk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9PUFRJT05TIGluIGZsZCkge1xuICAgICAgdGhpcy5zZXRGaWVsZE9wdGlvbnMoZmxkLmZpZWxkT3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9DQVBUVVJFX1RZUEUgaW4gZmxkKSB7XG4gICAgICB0aGlzLmNhcHR1cmVUeXBlID0gZmxkLmNhcHR1cmVUeXBlIHx8ICdJTlBVVCc7XG4gICAgfVxuICAgIGlmIChGSUVMRF9UWVBFIGluIGZsZCkge1xuICAgICAgdGhpcy5zZXRGaWVsZFR5cGUoZmxkLmZpZWxkVHlwZUNvZGUpO1xuICAgIH1cbiAgICBpZiAoRklFTERfTUFYX0xFTkdUSCBpbiBmbGQpIHtcbiAgICAgIHRoaXMubWF4TGVuZ3RoID0gZmxkLm1heExlbmd0aDtcbiAgICB9XG4gIH1cblxuICBzZXRGaWVsZFR5cGUoaW5wdXRGaWVsZFR5cGUpIHtcbiAgICB0aGlzLmZpZWxkVHlwZSA9IGlucHV0RmllbGRUeXBlO1xuICAgIC8qKlxuICAgICAqICBTZSBlbGltaW5hIGxhIHZhbGlkYWNpw7NuIGRlIHF1ZSBzZWEgdW4gdGlwbyBjb25vY2lkb1xuICAgICAqICB0aGlzLmZpZWxkVHlwZSA9IChpbnB1dEZpZWxkVHlwZSAmJiBGSUVMRFRZUEVTLmluY2x1ZGVzKGlucHV0RmllbGRUeXBlKSlcbiAgICAgKiAgID8gaW5wdXRGaWVsZFR5cGUgOiBjb21wb25lbnRDb25zdGFudHMuRklFTERUWVBFX1RFWFQ7XG4gICAgICovXG4gIH1cblxuICBmb3JtYXQoKSB7XG4gICAgaWYgKHRoaXMuZmllbGRUeXBlID09PSBjb21wb25lbnRDb25zdGFudHMuRklFTERUWVBFX0NVUlJFTkNZKSB7XG4gICAgICB0aGlzLl9maWVsZFZhbHVlID0gZm9ybWF0Q3VycmVuY3kodGhpcy5fZmllbGRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgc2V0TWluVmFsdWUobWluVmFsdWUpIHtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IGNvbXBvbmVudENvbnN0YW50cy5GSUVMRFRZUEVfREFURVxuICAgICAgJiYgdGhpcy53aWRnZXQ/LnNldE1pblZhbHVlKSB7XG4gICAgICB0aGlzLl9taW5WYWx1ZSA9IG1pblZhbHVlO1xuICAgICAgaWYgKCFtaW5WYWx1ZSkge1xuICAgICAgICB0aGlzLndpZGdldD8uc2V0TWluVmFsdWUoZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbWluRGF0ZSA9IG5ldyBEYXRlKG1pblZhbHVlKTtcbiAgICAgICAgdGhpcy53aWRnZXQ/LnNldE1pblZhbHVlKG1pbkRhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldE1heFZhbHVlKG1heFZhbHVlKSB7XG4gICAgaWYgKHRoaXMuZmllbGRUeXBlID09PSBjb21wb25lbnRDb25zdGFudHMuRklFTERUWVBFX0RBVEVcbiAgICAgICYmIHRoaXMud2lkZ2V0Py5zZXRNYXhWYWx1ZSkge1xuICAgICAgdGhpcy5fbWF4VmFsdWUgPSBtYXhWYWx1ZTtcbiAgICAgIGlmICghbWF4VmFsdWUpIHtcbiAgICAgICAgdGhpcy53aWRnZXQ/LnNldE1heFZhbHVlKGZhbHNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG1heERhdGUgPSBuZXcgRGF0ZShtYXhWYWx1ZSk7XG4gICAgICAgIHRoaXMud2lkZ2V0Py5zZXRNYXhWYWx1ZShtYXhEYXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRGaWVsZE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5maWVsZE9wdGlvbnMpKTtcbiAgfVxuXG4gIHNldEZpZWxkT3B0aW9ucyhuZXdPcHRpb25zKSB7XG4gICAgaWYgKCh0aGlzLmNhcHR1cmVUeXBlICE9PSAnTElTVCcgJiYgdGhpcy5jYXB0dXJlVHlwZSAhPT0gJ1JBRElPJylcbiAgICAgIHx8IHR5cGVvZiBuZXdPcHRpb25zID09PSBVTkRFRklORUQgfHwgIW5ld09wdGlvbnNcbiAgICAgIHx8ICFBcnJheS5pc0FycmF5KG5ld09wdGlvbnMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZpZWxkT3B0aW9ucyA9IG5ld09wdGlvbnMubWFwKG9wdGlvbiA9PiB7XG4gICAgICBpZiAob3B0aW9uLnRleHQgIT09IHVuZGVmaW5lZCAmJiBvcHRpb24udGV4dCAhPT0gbnVsbFxuICAgICAgICAmJiBvcHRpb24udmFsdWUgIT09IHVuZGVmaW5lZCAmJiBvcHRpb24udmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHsgZmllbGRPcHRpb25WYWx1ZTogb3B0aW9uLnRleHQsIGZpZWxkT3B0aW9uSWQ6IG9wdGlvbi52YWx1ZSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgLi4ub3B0aW9uIH07XG4gICAgfSk7XG4gICAgdGhpcy5maWVsZE9wdGlvbnMgPSAoZmllbGRPcHRpb25zICYmIEFycmF5LmlzQXJyYXkoZmllbGRPcHRpb25zKVxuICAgICAgJiYgZmllbGRPcHRpb25zLmxlbmd0aCA+IDApID8gZmllbGRPcHRpb25zIDogW107XG4gICAgaWYgKHRoaXMuZmllbGRUeXBlID09PSBjb21wb25lbnRDb25zdGFudHMuRklFTERUWVBFX0FSUkFZICYmIHRoaXMud2lkZ2V0KSB7XG4gICAgICByZXR1cm4gdGhpcy53aWRnZXQ/LnJlZmVyZXNoQ29udGVudCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZmllbGRWYWx1ZSkge1xuICAgICAgaWYgKHRoaXMuZmllbGRUeXBlID09PSBjb21wb25lbnRDb25zdGFudHMuRklFTERUWVBFX0FSUkFZICYmIEFycmF5LmlzQXJyYXkodGhpcy5fZmllbGRWYWx1ZSkpIHtcbiAgICAgICAgdGhpcy5fZmllbGRWYWx1ZSA9IHRoaXMuX2ZpZWxkVmFsdWU/LmZpbHRlcihpdGVtID0+XG4gICAgICAgICAgdGhpcy5maWVsZE9wdGlvbnMuZmluZChvcHQgPT4gb3B0LmZpZWxkT3B0aW9uSWQgPT09IGl0ZW0pXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB2YWxJbk9wdGlvbnMgPSB0aGlzLmZpZWxkT3B0aW9uc1xuICAgICAgICAgIC5maW5kKGl0ZW0gPT4gaXRlbS5maWVsZE9wdGlvbklkID09PSB0aGlzLl9maWVsZFZhbHVlKTtcbiAgICAgICAgaWYgKCF2YWxJbk9wdGlvbnMpIHtcbiAgICAgICAgICB0aGlzLnNldFZhbHVlKCcnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5maWVsZFJlcXVpcmVkICYmIHRoaXMuZmllbGRPcHRpb25zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5zZXRWYWx1ZSh0aGlzLmZpZWxkT3B0aW9uc1swXS5maWVsZE9wdGlvbklkKTtcbiAgICAgIGlmICh0aGlzLndpZGdldD8ub25DaGFuZ2VDb250ZW50KSB7XG4gICAgICAgIHRoaXMud2lkZ2V0Py5vbkNoYW5nZUNvbnRlbnQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRWYWx1ZShuZXdWYWx1ZSwgd2lkZ2V0VXBkYXRlID0gdHJ1ZSkge1xuICAgIGlmICh0eXBlb2YgbmV3VmFsdWUgPT09IFVOREVGSU5FRCB8fCBuZXdWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgbmV3RmluYWxWYWx1ZTtcbiAgICBzd2l0Y2ggKHRoaXMuZmllbGRUeXBlKSB7XG4gICAgICBjYXNlICdCT09MRUFOJzpcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9ICEhbmV3VmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBjb21wb25lbnRDb25zdGFudHMuRklFTERUWVBFX0NIRUNLOlxuICAgICAgICBuZXdGaW5hbFZhbHVlID0gISFuZXdWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGNvbXBvbmVudENvbnN0YW50cy5GSUVMRFRZUEVfQVJSQVk6XG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gbnVsbCB8fCBuZXdWYWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICBuZXdGaW5hbFZhbHVlID0gW107XG4gICAgICAgIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkobmV3VmFsdWUpKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiAobmV3VmFsdWUpICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBuZXdWYWx1ZS50b1N0cmluZygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBuZXdGaW5hbFZhbHVlID0gbmV3VmFsdWUuc3BsaXQoJywnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdGaW5hbFZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGNvbXBvbmVudENvbnN0YW50cy5GSUVMRFRZUEVfTUFQOlxuICAgICAgICBuZXdGaW5hbFZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIGlmIChuZXdGaW5hbFZhbHVlICYmIHRoaXMud2lkZ2V0ICYmIHdpZGdldFVwZGF0ZSkge1xuICAgICAgICAgIGNvbnN0IGxhdGl0dWRlID0gcGFyc2VGbG9hdChuZXdGaW5hbFZhbHVlWzBdKTtcbiAgICAgICAgICBjb25zdCBsb25naXR1ZGUgPSBwYXJzZUZsb2F0KG5ld0ZpbmFsVmFsdWVbMV0pO1xuICAgICAgICAgIHRoaXMud2lkZ2V0Py5zZXRMb2NhdGlvbihsYXRpdHVkZSwgbG9uZ2l0dWRlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgY29tcG9uZW50Q29uc3RhbnRzLkZJRUxEVFlQRV9DVVJSRU5DWTpcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9IGZvcm1hdEN1cnJlbmN5KHRoaXMuX2ZpZWxkVmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmICh0aGlzLl9maWVsZFZhbHVlICE9PSBuZXdGaW5hbFZhbHVlKSB7XG4gICAgICB0aGlzLmhhc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fZmllbGRWYWx1ZSA9IG5ld0ZpbmFsVmFsdWU7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
357
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2ZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTlDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQztBQUU5QixNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUM7QUFDakMsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDO0FBQ3JDLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQztBQUNqQyxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQztBQUN6QyxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUM7QUFDbkMsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUM7QUFDckMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ2hDLE1BQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFDO0FBQzNDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQztBQUNsQyxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUM7QUFDbkMsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDO0FBQ3JDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQztBQUNwQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUM7QUFDMUIsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDO0FBRWxDLE1BQU0sV0FBVyxHQUFHO0lBQ2xCLEtBQUssRUFBRSxPQUFPO0lBQ2QsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsTUFBTTtJQUNaLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLElBQUksRUFBRSxNQUFNO0lBQ1osU0FBUyxFQUFFLFdBQVc7SUFDdEIsR0FBRyxFQUFFLEtBQUs7SUFDVixNQUFNLEVBQUUsUUFBUTtJQUNoQixPQUFPLEVBQUUsU0FBUztJQUNsQixRQUFRLEVBQUUsVUFBVTtJQUNwQixNQUFNLEVBQUUsUUFBUTtJQUNoQixTQUFTLEVBQUUsV0FBVztJQUN0QixJQUFJLEVBQUUsTUFBTTtJQUNaLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLEtBQUssRUFBRSxPQUFPO0lBQ2QsSUFBSSxFQUFFLE1BQU07SUFDWixLQUFLLEVBQUUsT0FBTztJQUNkLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLElBQUksRUFBRSxNQUFNO0lBQ1osT0FBTyxFQUFFLFNBQVM7SUFDbEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsS0FBSyxFQUFFLE9BQU87SUFDZCxLQUFLLEVBQUUsT0FBTztDQUNmLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHO0lBQzFCLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxxREFBcUQsQ0FBQztDQUN6RSxDQUFDO0FBRUYsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBQzFCLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUUzQixNQUFNLE9BQU8sZUFBZ0IsU0FBUSxXQUFXO0lBdUM5QyxZQUFZLGtCQUFrQjs7UUFDNUIsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUF2Q1gsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDO1FBQ3BDLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUNyQyxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFzQ3RELElBQUksQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUMsaUJBQWlCLENBQUM7UUFFakQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBQSxhQUFhLGFBQWIsYUFBYSx1QkFBYixhQUFhLENBQUUsUUFBUSxtQ0FBSSxJQUFJLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUM7UUFDekMsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDN0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxhQUFhLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQztRQUN4RCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsWUFBWSxHQUFHLGFBQWEsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBQSxhQUFhLENBQUMsU0FBUyxtQ0FBSSxDQUFFLElBQUksQ0FBQyxXQUFXLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRWxILElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ2xJLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxhQUFhLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQztRQUN2SCxJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzFDLElBQUk7WUFDRixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUNyRjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7U0FDekI7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBQSxhQUFhLGFBQWIsYUFBYSx1QkFBYixhQUFhLENBQUUsWUFBWSxtQ0FBSSxLQUFLLENBQUM7UUFDN0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQUEsYUFBYSxhQUFiLGFBQWEsdUJBQWIsYUFBYSxDQUFFLGdCQUFnQixtQ0FBSSxJQUFJLENBQUM7UUFFaEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFBLGFBQWEsYUFBYixhQUFhLHVCQUFiLGFBQWEsQ0FBRSxZQUFZLG1DQUFJLElBQUksQ0FBQztRQUN4RCxJQUFJLENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQUEsYUFBYSxhQUFiLGFBQWEsdUJBQWIsYUFBYSxDQUFFLFFBQVEsbUNBQUksS0FBSyxDQUFDO1FBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsYUFBYSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFBLGFBQWEsQ0FBQyxTQUFTLG1DQUFJLElBQUksQ0FBQztRQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQUEsYUFBYSxhQUFiLGFBQWEsdUJBQWIsYUFBYSxDQUFFLFVBQVUsbUNBQUksS0FBSyxDQUFDO1FBQ3JELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNsRSxDQUFDLENBQUMsZUFBZSxJQUFJLENBQUMsVUFBVSxvQ0FBb0M7WUFDcEUsQ0FBQyxDQUFDLGVBQWUsSUFBSSxDQUFDLFVBQVUsc0NBQXNDLENBQUM7SUFDM0UsQ0FBQztJQUVELElBQUksSUFBSSxLQUFLLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDckMsSUFBSSxhQUFhLEtBQUssT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUNuRCxJQUFJLGNBQWMsS0FBSyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQ3JELElBQUksYUFBYSxLQUFLLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFFbkQsSUFBSSxVQUFVLEtBQUssT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUMvQyxJQUFJLFVBQVUsQ0FBQyxZQUFxQixJQUFJLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUU1RSx3QkFBd0IsQ0FBQyxPQUFlLElBQUksSUFBSSxDQUFDLHNCQUFzQixHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDcEYsSUFBSSxxQkFBcUIsQ0FBQyxPQUFlLElBQUksSUFBSSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV0RixJQUFJLFVBQVUsS0FBSyxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUMsSUFBSSxRQUFRLEtBQUssT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUM3QyxJQUFJLFFBQVEsQ0FBQyxRQUFpQixJQUFJLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxhQUFSLFFBQVEsY0FBUixRQUFRLEdBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMzRSxJQUFJLFNBQVMsS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRixJQUFJLFNBQVMsQ0FBQyxpQkFBc0I7UUFDbEMsSUFBSSxPQUFPLGlCQUFpQixLQUFLLFFBQVEsRUFBRTtZQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUNuRDthQUFNLElBQUksT0FBTyxpQkFBaUIsS0FBSyxRQUFRLEVBQUU7WUFDaEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQztTQUNyQztJQUNILENBQUM7SUFDRCxJQUFJLEtBQUssS0FBSyxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWhELG9CQUFvQjtRQUNsQixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsbUJBQW1COztRQUNqQixJQUFJLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUMvQixNQUFNLGtCQUFrQixHQUFHLE1BQUEsbUJBQW1CLGFBQW5CLG1CQUFtQix1QkFBbkIsbUJBQW1CLENBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQ0FBSSxJQUFJLENBQUM7UUFDekUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ25DLElBQUksVUFBVSxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQzFELG1CQUFtQixHQUFHLENBQUMsTUFBQSxrQkFBa0IsYUFBbEIsa0JBQWtCLHVCQUFsQixrQkFBa0IsQ0FBRSxJQUFJLENBQUMsVUFBVSxDQUFDLG1DQUFJLElBQUksQ0FBQzttQkFDL0QsQ0FBQyxNQUFBLE1BQUEsSUFBSSxDQUFDLFdBQVcsMENBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQ0FBSSxJQUFJLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsbUJBQW1CLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO2FBQ2xEO1NBQ0Y7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsMEJBQTBCO1FBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsU0FBUyxLQUFLLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6QyxTQUFTLEtBQUssSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFDLE9BQU8sS0FBSyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckMsV0FBVyxLQUFLLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDMUMsUUFBUSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUMsS0FBSyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsSUFBSSxPQUFPLEtBQUssT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBRS9DLGVBQWUsQ0FBQyxZQUFxQixJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUM1RSxXQUFXLENBQUMsV0FBb0IsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV0RixRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEdBQUcsT0FBTztRQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztJQUM5QixDQUFDO0lBRUQsUUFBUSxLQUFLLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRyxJQUFJLEtBQUssS0FBSyxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFFckYsWUFBWSxLQUFLLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDL0MsWUFBWSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlELGVBQWUsS0FBSyxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3JELGVBQWUsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU1RCxPQUFPO1FBQ0wsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUMsSUFBSSxpQkFBaUIsS0FBSyxTQUFTLElBQUksaUJBQWlCLEtBQUssSUFBSSxFQUFFO1lBQ2pFLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxXQUFXLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssV0FBVyxDQUFDLEtBQUssQ0FBQztlQUM3RSxLQUFLLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLElBQUksaUJBQWlCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRztZQUN4RSxPQUFPLElBQUksQ0FBQztTQUNiO1FBQUEsQ0FBQztRQUNGLE9BQU8saUJBQWlCLEtBQUssRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxRQUFROztRQUNOLFFBQVEsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN0QixLQUFLLGtCQUFrQixDQUFDLGVBQWU7Z0JBQ3JDLE9BQU8sTUFBQSxJQUFJLENBQUMsV0FBVyxtQ0FBSSxLQUFLLENBQUM7Z0JBQ2pDLE1BQU07WUFDUixLQUFLLGtCQUFrQixDQUFDLGtCQUFrQjtnQkFDeEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3pDLE1BQU07WUFDUjtnQkFDRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ3hCLE1BQU07U0FDVDtJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFHOztRQUNsQixJQUFJLGFBQWEsSUFBSSxHQUFHLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDakM7UUFDRCxJQUFJLG1CQUFtQixJQUFJLEdBQUcsRUFBRTtZQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN4QztRQUNELElBQUksY0FBYyxJQUFJLEdBQUcsRUFBRTtZQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQUEsR0FBRyxDQUFDLFFBQVEsbUNBQUksS0FBSyxDQUFDO1NBQzVDO1FBQ0QsSUFBSSxjQUFjLElBQUksR0FBRyxFQUFFO1lBQ3pCLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDbEM7UUFDRCxJQUFJLGFBQWEsSUFBSSxHQUFHLEVBQUU7WUFDeEIsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN4QztRQUNELElBQUksYUFBYSxJQUFJLEdBQUcsRUFBRTtZQUN4QixDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxVQUFVLElBQUksR0FBRyxFQUFFO1lBQ3JCLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDN0I7UUFDRCxJQUFJLGNBQWMsSUFBSSxHQUFHLEVBQUU7WUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDaEM7UUFDRCxJQUFJLFdBQVcsSUFBSSxHQUFHLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDMUM7UUFDRCxJQUFJLFdBQVcsSUFBSSxHQUFHLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDL0I7UUFDRCxJQUFJLGFBQWEsSUFBSSxHQUFHLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDeEM7UUFDRCxJQUFJLGtCQUFrQixJQUFJLEdBQUcsRUFBRTtZQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDO1NBQy9DO1FBQ0QsSUFBSSxVQUFVLElBQUksR0FBRyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3RDO1FBQ0QsSUFBSSxnQkFBZ0IsSUFBSSxHQUFHLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxjQUFjO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDO1FBQ2hDOzs7O1dBSUc7SUFDTCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxrQkFBa0IsQ0FBQyxrQkFBa0IsRUFBRTtZQUM1RCxJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDckQ7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQVE7O1FBQ2xCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxrQkFBa0IsQ0FBQyxjQUFjO2dCQUNuRCxNQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLFdBQVcsQ0FBQSxFQUFFO1lBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2IsTUFBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDakM7aUJBQU07Z0JBQ0wsTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ25DLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ25DO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQVE7O1FBQ2xCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxrQkFBa0IsQ0FBQyxjQUFjO2dCQUNuRCxNQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLFdBQVcsQ0FBQSxFQUFFO1lBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2IsTUFBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDakM7aUJBQU07Z0JBQ0wsTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ25DLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ25DO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxlQUFlLENBQUMsVUFBVTs7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssT0FBTyxDQUFDO2VBQzVELE9BQU8sVUFBVSxLQUFLLFNBQVMsSUFBSSxDQUFDLFVBQVU7ZUFDOUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQy9CLE9BQU87U0FDUjtRQUNELE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDM0MsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLElBQUk7bUJBQ2hELE1BQU0sQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO2dCQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3ZFO1lBQ0QseUJBQVksTUFBTSxFQUFHO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztlQUMzRCxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssa0JBQWtCLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDeEUsT0FBTyxNQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLGVBQWUsRUFBRSxDQUFDO1NBQ3ZDO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxrQkFBa0IsQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQzVGLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBQSxJQUFJLENBQUMsV0FBVywwQ0FBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQyxDQUMxRCxDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVk7cUJBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsWUFBWSxFQUFFO29CQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUNuQjthQUNGO1NBQ0Y7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3hELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNsRCxJQUFJLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsZUFBZSxFQUFFO2dCQUNoQyxNQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLGVBQWUsRUFBRSxDQUFDO2FBQ2hDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLFFBQVEsRUFBRSxZQUFZLEdBQUcsSUFBSTs7UUFDcEMsSUFBSSxPQUFPLFFBQVEsS0FBSyxTQUFTLElBQUksUUFBUSxLQUFLLElBQUksRUFBRTtZQUN0RCxPQUFPO1NBQ1I7UUFDRCxJQUFJLGFBQWEsQ0FBQztRQUNsQixRQUFRLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDdEIsS0FBSyxTQUFTO2dCQUNaLGFBQWEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDO2dCQUMzQixNQUFNO1lBQ1IsS0FBSyxrQkFBa0IsQ0FBQyxlQUFlO2dCQUNyQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztnQkFDM0IsTUFBTTtZQUNSLEtBQUssa0JBQWtCLENBQUMsZUFBZTtnQkFDckMsSUFBSSxRQUFRLEtBQUssSUFBSSxJQUFJLFFBQVEsS0FBSyxFQUFFLEVBQUU7b0JBQ3hDLGFBQWEsR0FBRyxFQUFFLENBQUM7aUJBQ3BCO3FCQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUNuQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxRQUFRLEVBQUU7d0JBQ2xDLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7cUJBQ2hDO29CQUNELGFBQWEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNyQztxQkFBTTtvQkFDTCxhQUFhLEdBQUcsUUFBUSxDQUFDO2lCQUMxQjtnQkFDRCxNQUFNO1lBQ1IsS0FBSyxrQkFBa0IsQ0FBQyxhQUFhO2dCQUNuQyxhQUFhLEdBQUcsUUFBUSxDQUFDO2dCQUN6QixJQUFJLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLFlBQVksRUFBRTtvQkFDaEQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM5QyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQy9DLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztpQkFDL0M7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssa0JBQWtCLENBQUMsa0JBQWtCO2dCQUN4QyxhQUFhLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDakQsTUFBTTtZQUNSO2dCQUNFLGFBQWEsR0FBRyxRQUFRLENBQUM7Z0JBQ3pCLE1BQU07U0FDVDtRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxhQUFhLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxhQUFhLENBQUM7U0FDbEM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb21wb25lbnRDb25zdGFudHMsIHRhYmxlRmllbGRTdHlsZXMgfSBmcm9tICcuL2Zvcm0uY29uc3RhbnRzJztcbmltcG9ydCB7IEZvcm1FbGVtZW50IH0gZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCB7IGZvcm1hdEN1cnJlbmN5IH0gZnJvbSAnLi4vdXRpbGl0aWVzJztcblxuY29uc3QgVU5ERUZJTkVEID0gJ3VuZGVmaW5lZCc7XG5cbmNvbnN0IEZJRUxEX1ZBTFVFID0gJ2ZpZWxkVmFsdWUnO1xuY29uc3QgRklFTERfT1BUSU9OUyA9ICdmaWVsZE9wdGlvbnMnO1xuY29uc3QgRklFTERfVElUTEUgPSAnZmllbGRUaXRsZSc7XG5jb25zdCBGSUVMRF9DQVBUVVJFX1RZUEUgPSAnY2FwdHVyZVR5cGUnO1xuY29uc3QgRklFTERfVFlQRSA9ICdmaWVsZFR5cGVDb2RlJztcbmNvbnN0IEZJRUxEX01BWF9MRU5HVEggPSAnbWF4TGVuZ3RoJztcbmNvbnN0IEZJRUxEX1ZJU0lCTEUgPSAndmlzaWJsZSc7XG5jb25zdCBGSUVMRF9MQUJFTF9WSVNJQkxFID0gJ3Zpc2libGVMYWJlbCc7XG5jb25zdCBGSUVMRF9SRVFVSVJFRCA9ICdyZXF1aXJlZCc7XG5jb25zdCBGSUVMRF9FUlJfQ09ERSA9ICdlcnJvckNvZGUnO1xuY29uc3QgRklFTERfRVJSX01TRyA9ICdlcnJvck1lc3NhZ2UnO1xuY29uc3QgRklFTERfVE9PTFRJUCA9ICd0b29sdGlwVGV4dCc7XG5jb25zdCBGSUVMRF9JTkZPID0gJ2luZm8nO1xuY29uc3QgRklFTERfRURJVEFCTEUgPSAnZWRpdGFibGUnO1xuXG5jb25zdCBGSUVMRF9UWVBFUyA9IHtcbiAgYXJyYXk6ICdBUlJBWScsXG4gIGNoZWNrOiAnQ0hFQ0snLFxuICBkYXRlOiAnREFURScsXG4gIGRhdGVyYW5nZTogJ0RBVEVSQU5HRScsXG4gIHRpbWU6ICdUSU1FJyxcbiAgdGltZXJhbmdlOiAnVElNRVJBTkdFJyxcbiAgbWFwOiAnTUFQJyxcbiAgbnVtYmVyOiAnTlVNQkVSJyxcbiAgZGVjaW1hbDogJ0RFQ0lNQUwnLFxuICBjdXJyZW5jeTogJ0NVUlJFTkNZJyxcbiAgc2VsZWN0OiAnU0VMRUNUJyxcbiAgdHlwZWFoZWFkOiAnVFlQRUFIRUFEJyxcbiAgdGV4dDogJ1RFWFQnLFxuICBwYXNzd29yZDogJ1BBU1NXT1JEJyxcbiAgbGFiZWw6ICdMQUJFTCcsXG4gIGh0bWw6ICdIVE1MJyxcbiAgdGl0bGU6ICdUSVRMRScsXG4gIG1lc3NhZ2U6ICdNRVNTQUdFJyxcbiAgbGluazogJ0xJTksnLFxuICB3YXJuaW5nOiAnV0FSTklORycsXG4gIGF2YXRhcjogJ0FWQVRBUicsXG4gIGVtYWlsOiAnRU1BSUwnLFxuICBwaG9uZTogJ1BIT05FJyxcbn07XG5cbmNvbnN0IEZJRUxEX1RZUEVTX0ZPUk1BVFMgPSB7XG4gIEVNQUlMOiBuZXcgUmVnRXhwKCdeXFxcXHcrKFtcXFxcLi1dP1xcXFx3KylAXFxcXHcrKFtcXFxcLi1dP1xcXFx3KykoXFxcXC5cXFxcd3syLDN9KSskJyksXG59O1xuXG5jb25zdCBTVERfTUFYX0xFTkdUSCA9IDUwO1xuY29uc3QgQklHX01BWF9MRU5HVEggPSA1MDA7XG5cbmV4cG9ydCBjbGFzcyBGaWVsZERlc2NyaXB0b3IgZXh0ZW5kcyBGb3JtRWxlbWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpb25GaW5pc2ggPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpb25QYXJ0aWFsID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXRhaWxSZXF1ZXN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIF9maWVsZFZhbHVlOiBhbnk7XG4gIGhhc0NoYW5nZWQ6IGJvb2xlYW47XG4gIG91dHB1dE9ubHk6IGJvb2xlYW47XG4gIF9taW5WYWx1ZTogYW55O1xuICBfbWF4VmFsdWU6IGFueTtcbiAgX21heExlbmd0aDogbnVtYmVyO1xuICBfb25WYWxpZGF0aW9uOiBib29sZWFuO1xuICBfaW50cmluc2ljRXJyb3JNZXNzYWdlOiBzdHJpbmc7XG5cbiAgZmllbGRDb2RlOiBzdHJpbmc7XG4gIGNhcHR1cmVUeXBlOiBzdHJpbmc7XG4gIGZpZWxkVGl0bGU6IHN0cmluZztcbiAgZmllbGRUeXBlOiBzdHJpbmc7XG4gIGZpZWxkQWxpZ25tZW50OiBzdHJpbmc7XG4gIGZpZWxkRm9ybWF0OiBSZWdFeHA7XG4gIGV4dGVybmFsVmFsdWU6IGFueTtcbiAgZmllbGRJbmZvOiBzdHJpbmc7XG4gIHRvb2x0aXBUZXh0OiBzdHJpbmc7XG4gIGRlZmF1bHRWYWx1ZTogc3RyaW5nO1xuICBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgZXJyb3JUeXBlOiBzdHJpbmc7XG4gIGVycm9yQ29kZTogc3RyaW5nO1xuICBjdXN0b21BdHRyaWJ1dGVzOiBhbnk7XG5cbiAgdmFsaWRhdGVPblNlcnZlcjogYm9vbGVhbjtcbiAgdmlzaWJsZUxhYmVsOiBib29sZWFuO1xuICBkZWZhdWx0RWRpdGFibGU6IGJvb2xlYW47XG4gIGZpZWxkUmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgZmllbGRPcHRpb25zOiB7XG4gICAgZmllbGRPcHRpb25WYWx1ZTogc3RyaW5nO1xuICAgIGZpZWxkT3B0aW9uSWQ6IHN0cmluZztcbiAgfVtdO1xuXG4gIGNvbnN0cnVjdG9yKGlucHV0RmllbGRSZWNlaXZlZCkge1xuICAgIHN1cGVyKGlucHV0RmllbGRSZWNlaXZlZCk7XG4gICAgdGhpcy50eXBlID0gY29tcG9uZW50Q29uc3RhbnRzLkVMRU1FTlRUWVBFX0ZJRUxEO1xuXG4gICAgY29uc3QgZmllbGRSZWNlaXZlZCA9IChpbnB1dEZpZWxkUmVjZWl2ZWQpID8gaW5wdXRGaWVsZFJlY2VpdmVkIDoge307XG4gICAgdGhpcy5zZXRFZGl0YWJsZShmaWVsZFJlY2VpdmVkPy5lZGl0YWJsZSA/PyB0cnVlKTtcbiAgICB0aGlzLmZpZWxkQ29kZSA9IGZpZWxkUmVjZWl2ZWQuZmllbGRDb2RlO1xuICAgIHRoaXMuZmllbGRUaXRsZSA9IGZpZWxkUmVjZWl2ZWQuZmllbGRUaXRsZSB8fCB0aGlzLmZpZWxkQ29kZTtcbiAgICB0aGlzLmNhcHR1cmVUeXBlID0gZmllbGRSZWNlaXZlZC5jYXB0dXJlVHlwZSB8fCAnSU5QVVQnO1xuICAgIHRoaXMuc2V0RmllbGRUeXBlKGZpZWxkUmVjZWl2ZWQuZmllbGRUeXBlQ29kZSk7XG4gICAgdGhpcy5kZWZhdWx0VmFsdWUgPSBmaWVsZFJlY2VpdmVkLmRlZmF1bHRWYWx1ZSB8fCBudWxsO1xuICAgIHRoaXMuX21heExlbmd0aCA9IGZpZWxkUmVjZWl2ZWQubWF4TGVuZ3RoID8/ICggdGhpcy5jYXB0dXJlVHlwZSA9PT0gJ1RFWFRBUkVBJyA/IEJJR19NQVhfTEVOR1RIIDogU1REX01BWF9MRU5HVEgpO1xuXG4gICAgdGhpcy5zZXRWYWx1ZShmaWVsZFJlY2VpdmVkLmZpZWxkVmFsdWUgfHwgdGhpcy5kZWZhdWx0VmFsdWUgfHwgJycpO1xuICAgIGNvbnN0IGRlZmF1bHRUeXBlQWxpZ25tZW50ID0gKHRhYmxlRmllbGRTdHlsZXNbdGhpcy5maWVsZFR5cGVdICE9IG51bGwpID8gdGFibGVGaWVsZFN0eWxlc1t0aGlzLmZpZWxkVHlwZV1bJ3RleHQtYWxpZ24nXSA6ICdsZWZ0JztcbiAgICB0aGlzLmZpZWxkQWxpZ25tZW50ID0gKGZpZWxkUmVjZWl2ZWQuYWxpZ25tZW50ICE9IG51bGwpID8gZmllbGRSZWNlaXZlZC5hbGlnbm1lbnQudG9Mb3dlckNhc2UoKSA6IGRlZmF1bHRUeXBlQWxpZ25tZW50O1xuICAgIHRoaXMuZmllbGRJbmZvID0gZmllbGRSZWNlaXZlZC5pbmZvIHx8ICcnO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZpZWxkRm9ybWF0ID0gKGZpZWxkUmVjZWl2ZWQuZm9ybWF0KSA/IG5ldyBSZWdFeHAoZmllbGRSZWNlaXZlZC5mb3JtYXQpIDogbnVsbDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmZpZWxkRm9ybWF0ID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLnZhbGlkYXRlT25TZXJ2ZXIgPSBmaWVsZFJlY2VpdmVkPy5zZXJ2ZXJBY3Rpb24gPz8gZmFsc2U7XG4gICAgdGhpcy5jdXN0b21BdHRyaWJ1dGVzID0gZmllbGRSZWNlaXZlZD8uY3VzdG9tQXR0cmlidXRlcyA/PyBudWxsO1xuXG4gICAgdGhpcy5zZXRWaXNpYmlsaXR5KGZpZWxkUmVjZWl2ZWQudmlzaWJsZSk7XG4gICAgdGhpcy52aXNpYmxlTGFiZWwgPSBmaWVsZFJlY2VpdmVkPy52aXNpYmxlTGFiZWwgPz8gdHJ1ZTtcbiAgICB0aGlzLnRvb2x0aXBUZXh0ID0gZmllbGRSZWNlaXZlZC50b29sdGlwIHx8ICcnO1xuICAgIHRoaXMuZGVmYXVsdEVkaXRhYmxlID0gdGhpcy5lbmFibGVkO1xuICAgIHRoaXMuZmllbGRSZXF1aXJlZCA9IGZpZWxkUmVjZWl2ZWQ/LnJlcXVpcmVkID8/IGZhbHNlO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZmllbGRSZWNlaXZlZC5lcnJvck1lc3NhZ2UgfHwgJyc7XG4gICAgdGhpcy5lcnJvckNvZGUgPSBmaWVsZFJlY2VpdmVkLmVycm9yQ29kZSA/PyAnMDAnO1xuICAgIHRoaXMub3V0cHV0T25seSA9IGZpZWxkUmVjZWl2ZWQ/Lm91dHB1dE9ubHkgPz8gZmFsc2U7XG4gICAgdGhpcy5zZXRGaWVsZE9wdGlvbnMoZmllbGRSZWNlaXZlZC5maWVsZE9wdGlvbnMpO1xuXG4gICAgdGhpcy5faW50cmluc2ljRXJyb3JNZXNzYWdlID0gKHRoaXMuZmllbGRUeXBlID09PSBGSUVMRF9UWVBFUy5lbWFpbClcbiAgICAgID8gYEVsIHZhbG9yIGRlICR7dGhpcy5maWVsZFRpdGxlfSBubyBjb3JyZXNwb25kZSBhIHVuIGNvcnJlbyB2w6FsaWRvYFxuICAgICAgOiBgRWwgdmFsb3IgZGUgJHt0aGlzLmZpZWxkVGl0bGV9IG5vIHNlIGFqdXN0YSBhbCBmb3JtYXRvIGVzdGFibGVjaWRvYDtcbiAgfVxuXG4gIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5maWVsZENvZGU7IH1cbiAgZ2V0IGVkaXRpb25GaW5pc2goKSB7IHJldHVybiB0aGlzLl9lZGl0aW9uRmluaXNoOyB9XG4gIGdldCBlZGl0aW9uUGFydGlhbCgpIHsgcmV0dXJuIHRoaXMuX2VkaXRpb25QYXJ0aWFsOyB9XG4gIGdldCBkZXRhaWxSZXF1ZXN0KCkgeyByZXR1cm4gdGhpcy5fZGV0YWlsUmVxdWVzdDsgfVxuXG4gIGdldCB2YWxpZGF0aW5nKCkgeyByZXR1cm4gdGhpcy5fb25WYWxpZGF0aW9uOyB9XG4gIHNldCB2YWxpZGF0aW5nKGlzVmFsaWRhdGluZzogYm9vbGVhbikgeyB0aGlzLl9vblZhbGlkYXRpb24gPSBpc1ZhbGlkYXRpbmc7IH1cblxuICBzZXRJbnRyaW5zaWNFcnJvck1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKSB7IHRoaXMuX2ludHJpbnNpY0Vycm9yTWVzc2FnZSA9IG1lc3NhZ2U7IH1cbiAgc2V0IGludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpIHsgdGhpcy5zZXRJbnRyaW5zaWNFcnJvck1lc3NhZ2UobWVzc2FnZSk7IH1cblxuICBnZXQgZmllbGRWYWx1ZSgpIHsgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKTsgfVxuICBnZXQgcmVxdWlyZWQoKSB7IHJldHVybiB0aGlzLmZpZWxkUmVxdWlyZWQ7IH1cbiAgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7IHRoaXMuZmllbGRSZXF1aXJlZCA9IHJlcXVpcmVkID8/IGZhbHNlOyB9XG4gIGdldCBtYXhMZW5ndGgoKSB7IHJldHVybiAodGhpcy5fbWF4TGVuZ3RoID4gMCkgPyB0aGlzLl9tYXhMZW5ndGgudG9TdHJpbmcoKSA6ICcnOyB9XG4gIHNldCBtYXhMZW5ndGgocmVxdWlyZWRNYXhMZW5ndGg6IGFueSkge1xuICAgIGlmICh0eXBlb2YgcmVxdWlyZWRNYXhMZW5ndGggPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLl9tYXhMZW5ndGggPSBwYXJzZUludChyZXF1aXJlZE1heExlbmd0aCwgMTApO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlcXVpcmVkTWF4TGVuZ3RoID09PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5fbWF4TGVuZ3RoID0gcmVxdWlyZWRNYXhMZW5ndGg7XG4gICAgfVxuICB9XG4gIGdldCB2YWx1ZSgpIHsgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKTsgfVxuICBzZXQgdmFsdWUobmV3VmFsdWUpIHsgdGhpcy5zZXRWYWx1ZShuZXdWYWx1ZSk7IH1cblxuICBub3RpZnlFZGl0aW9uUGFydGlhbCgpIHtcbiAgICBjb25zdCBpbnRyaW5zaWNWYWxpZGF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLl9lZGl0aW9uUGFydGlhbC5uZXh0KHsgY29kZTogdGhpcy5maWVsZENvZGUsIGludHJpbnNpY1ZhbGlkYXRpb24gfSk7XG4gIH1cblxuICBub3RpZnlFZGl0aW9uRmluaXNoKCkge1xuICAgIGxldCBpbnRyaW5zaWNWYWxpZGF0aW9uID0gdHJ1ZTtcbiAgICBjb25zdCBmaWVsZERlZmF1bHRGb3JtYXQgPSBGSUVMRF9UWVBFU19GT1JNQVRTPy5bdGhpcy5maWVsZFR5cGVdID8/IG51bGw7XG4gICAgY29uc3QgZmllbGRWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTtcbiAgICBpZiAoZmllbGRWYWx1ZSAmJiAoZmllbGREZWZhdWx0Rm9ybWF0IHx8IHRoaXMuZmllbGRGb3JtYXQpKSB7XG4gICAgICBpbnRyaW5zaWNWYWxpZGF0aW9uID0gKGZpZWxkRGVmYXVsdEZvcm1hdD8udGVzdChmaWVsZFZhbHVlKSA/PyB0cnVlKSBcbiAgICAgICAgJiYgKHRoaXMuZmllbGRGb3JtYXQ/LnRlc3QoZmllbGRWYWx1ZSkgPz8gdHJ1ZSk7XG4gICAgICBpZiAoIWludHJpbnNpY1ZhbGlkYXRpb24pIHtcbiAgICAgICAgdGhpcy5zZXRFcnJvcignOTknLCB0aGlzLl9pbnRyaW5zaWNFcnJvck1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9lZGl0aW9uRmluaXNoLm5leHQoeyBjb2RlOiB0aGlzLmZpZWxkQ29kZSwgaW50cmluc2ljVmFsaWRhdGlvbiB9KTtcbiAgfVxuXG4gIG5vdGlmeUVkaXRpb25EZXRhaWxSZXF1ZXN0KCkge1xuICAgIHRoaXMuX2RldGFpbFJlcXVlc3QubmV4dCh0aGlzLmZpZWxkQ29kZSk7XG4gIH1cblxuICBzaG93TGFiZWwoKSB7IHRoaXMudmlzaWJsZUxhYmVsID0gdHJ1ZTsgfVxuICBoaWRlTGFiZWwoKSB7IHRoaXMudmlzaWJsZUxhYmVsID0gZmFsc2U7IH1cbiAgY2hhbmdlZCgpIHsgdGhpcy5oYXNDaGFuZ2VkID0gdHJ1ZTsgfVxuICBnZXRSYXdWYWx1ZSgpIHsgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsdWU7IH1cbiAgc2V0TGFiZWwobGFiZWwpIHsgdGhpcy5maWVsZFRpdGxlID0gbGFiZWw7IH1cbiAgY2xlYW4oKSB7IHRoaXMuc2V0VmFsdWUodGhpcy5kZWZhdWx0VmFsdWUgfHwgJycpOyB9XG4gIGdldCBiYWNrZW5kKCkgeyByZXR1cm4gdGhpcy52YWxpZGF0ZU9uU2VydmVyOyB9XG5cbiAgc2V0VmlzaWJsZUxhYmVsKHZpc2libGVMYWJlbDogYm9vbGVhbikgeyB0aGlzLnZpc2libGVMYWJlbCA9IHZpc2libGVMYWJlbDsgfVxuICBzZXRFZGl0YWJsZShlZGl0YWJsZTogYm9vbGVhbiA9IHRydWUpIHsgKGVkaXRhYmxlKSA/IHRoaXMuZW5hYmxlKCkgOiB0aGlzLmRpc2FibGUoKTsgfVxuXG4gIHNldEVycm9yKGNvZGUsIG1lc3NhZ2UsIHR5cGUgPSAnZXJyb3InKSB7XG4gICAgdGhpcy5lcnJvclR5cGUgPSAoY29kZSA9PT0gJzAwJykgPyAnJyA6IHR5cGU7XG4gICAgdGhpcy5lcnJvckNvZGUgPSBjb2RlO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gbWVzc2FnZTtcbiAgfVxuXG4gIGdldEVycm9yKCkgeyByZXR1cm4geyB0eXBlOiB0aGlzLmVycm9yVHlwZSwgY29kZTogdGhpcy5lcnJvckNvZGUsIG1lc3NhZ2U6IHRoaXMuZXJyb3JNZXNzYWdlIH07IH1cbiAgZ2V0IGVycm9yKCkgeyByZXR1cm4gdGhpcy5nZXRFcnJvcigpOyB9XG4gIHNldCBlcnJvcihlcnJvck9iaikgeyB0aGlzLnNldEVycm9yKGVycm9yT2JqLmNvZGUsIGVycm9yT2JqLm1lc3NhZ2UsIGVycm9yT2JqLnR5cGUpIH1cblxuICBnZXRFcnJvckNvZGUoKSB7IHJldHVybiB0aGlzLmdldEVycm9yKCkuY29kZTsgfVxuICBzZXRFcnJvckNvZGUoY29kZSkgeyB0aGlzLnNldEVycm9yKGNvZGUsIHRoaXMuZXJyb3JNZXNzYWdlKTsgfVxuICBnZXRFcnJvck1lc3NhZ2UoKSB7IHJldHVybiB0aGlzLmdldEVycm9yKCkubWVzc2FnZTsgfVxuICBzZXRFcnJvck1lc3NhZ2UobXNnKSB7IHRoaXMuc2V0RXJyb3IodGhpcy5lcnJvckNvZGUsIG1zZyk7IH1cblxuICBpc0VtcHR5KCkge1xuICAgIGNvbnN0IGZpZWxkQ3VycmVudFZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIGlmIChmaWVsZEN1cnJlbnRWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGZpZWxkQ3VycmVudFZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCh0aGlzLmZpZWxkVHlwZSA9PT0gRklFTERfVFlQRVMuYXJyYXkgfHwgdGhpcy5maWVsZFR5cGUgPT09IEZJRUxEX1RZUEVTLnBob25lKVxuICAgICAgJiYgQXJyYXkuaXNBcnJheShmaWVsZEN1cnJlbnRWYWx1ZSkgJiYgZmllbGRDdXJyZW50VmFsdWUubGVuZ3RoID09PSAwICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICByZXR1cm4gZmllbGRDdXJyZW50VmFsdWUgPT09ICcnOyBcbiAgfVxuXG4gIGdldFZhbHVlKCkge1xuICAgIHN3aXRjaCAodGhpcy5maWVsZFR5cGUpIHtcbiAgICAgIGNhc2UgY29tcG9uZW50Q29uc3RhbnRzLkZJRUxEVFlQRV9DSEVDSzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsdWUgPz8gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBjb21wb25lbnRDb25zdGFudHMuRklFTERUWVBFX0NVUlJFTkNZOlxuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRWYWx1ZS5yZXBsYWNlKCcsJywgJycpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZFZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB1cGRhdGVGcm9tU2VydmVyKGZsZCkge1xuICAgIGlmIChGSUVMRF9WSVNJQkxFIGluIGZsZCkge1xuICAgICAgdGhpcy5zZXRWaXNpYmlsaXR5KGZsZC52aXNpYmxlKTtcbiAgICB9XG4gICAgaWYgKEZJRUxEX0xBQkVMX1ZJU0lCTEUgaW4gZmxkKSB7XG4gICAgICB0aGlzLnNldFZpc2libGVMYWJlbChmbGQudmlzaWJsZUxhYmVsKTtcbiAgICB9XG4gICAgaWYgKEZJRUxEX1JFUVVJUkVEIGluIGZsZCkge1xuICAgICAgdGhpcy5maWVsZFJlcXVpcmVkID0gZmxkLnJlcXVpcmVkID8/IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoRklFTERfRVJSX0NPREUgaW4gZmxkKSB7XG4gICAgICAodGhpcy5lcnJvckNvZGUgPSBmbGQuZXJyb3JDb2RlKTtcbiAgICB9XG4gICAgaWYgKEZJRUxEX0VSUl9NU0cgaW4gZmxkKSB7XG4gICAgICAodGhpcy5lcnJvck1lc3NhZ2UgPSBmbGQuZXJyb3JNZXNzYWdlKTtcbiAgICB9XG4gICAgaWYgKEZJRUxEX1RPT0xUSVAgaW4gZmxkKSB7XG4gICAgICAodGhpcy50b29sdGlwVGV4dCA9IGZsZC50b29sdGlwKTtcbiAgICB9XG4gICAgaWYgKEZJRUxEX0lORk8gaW4gZmxkKSB7XG4gICAgICAodGhpcy5maWVsZEluZm8gPSBmbGQuaW5mbyk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9FRElUQUJMRSBpbiBmbGQpIHtcbiAgICAgIHRoaXMuc2V0RWRpdGFibGUoZmxkLmVkaXRhYmxlKTtcbiAgICB9XG4gICAgaWYgKEZJRUxEX1RJVExFIGluIGZsZCkge1xuICAgICAgdGhpcy5zZXRMYWJlbChmbGQuZmllbGRUaXRsZS50b1N0cmluZygpKTtcbiAgICB9XG4gICAgaWYgKEZJRUxEX1ZBTFVFIGluIGZsZCkge1xuICAgICAgdGhpcy5oYXNDaGFuZ2VkID0gZmFsc2U7XG4gICAgICB0aGlzLnNldFZhbHVlKGZsZC5maWVsZFZhbHVlKTtcbiAgICB9XG4gICAgaWYgKEZJRUxEX09QVElPTlMgaW4gZmxkKSB7XG4gICAgICB0aGlzLnNldEZpZWxkT3B0aW9ucyhmbGQuZmllbGRPcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKEZJRUxEX0NBUFRVUkVfVFlQRSBpbiBmbGQpIHtcbiAgICAgIHRoaXMuY2FwdHVyZVR5cGUgPSBmbGQuY2FwdHVyZVR5cGUgfHwgJ0lOUFVUJztcbiAgICB9XG4gICAgaWYgKEZJRUxEX1RZUEUgaW4gZmxkKSB7XG4gICAgICB0aGlzLnNldEZpZWxkVHlwZShmbGQuZmllbGRUeXBlQ29kZSk7XG4gICAgfVxuICAgIGlmIChGSUVMRF9NQVhfTEVOR1RIIGluIGZsZCkge1xuICAgICAgdGhpcy5tYXhMZW5ndGggPSBmbGQubWF4TGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIHNldEZpZWxkVHlwZShpbnB1dEZpZWxkVHlwZSkge1xuICAgIHRoaXMuZmllbGRUeXBlID0gaW5wdXRGaWVsZFR5cGU7XG4gICAgLyoqXG4gICAgICogIFNlIGVsaW1pbmEgbGEgdmFsaWRhY2nDs24gZGUgcXVlIHNlYSB1biB0aXBvIGNvbm9jaWRvXG4gICAgICogIHRoaXMuZmllbGRUeXBlID0gKGlucHV0RmllbGRUeXBlICYmIEZJRUxEVFlQRVMuaW5jbHVkZXMoaW5wdXRGaWVsZFR5cGUpKVxuICAgICAqICAgPyBpbnB1dEZpZWxkVHlwZSA6IGNvbXBvbmVudENvbnN0YW50cy5GSUVMRFRZUEVfVEVYVDtcbiAgICAgKi9cbiAgfVxuXG4gIGZvcm1hdCgpIHtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IGNvbXBvbmVudENvbnN0YW50cy5GSUVMRFRZUEVfQ1VSUkVOQ1kpIHtcbiAgICAgIHRoaXMuX2ZpZWxkVmFsdWUgPSBmb3JtYXRDdXJyZW5jeSh0aGlzLl9maWVsZFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBzZXRNaW5WYWx1ZShtaW5WYWx1ZSkge1xuICAgIGlmICh0aGlzLmZpZWxkVHlwZSA9PT0gY29tcG9uZW50Q29uc3RhbnRzLkZJRUxEVFlQRV9EQVRFXG4gICAgICAmJiB0aGlzLndpZGdldD8uc2V0TWluVmFsdWUpIHtcbiAgICAgIHRoaXMuX21pblZhbHVlID0gbWluVmFsdWU7XG4gICAgICBpZiAoIW1pblZhbHVlKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0Py5zZXRNaW5WYWx1ZShmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtaW5EYXRlID0gbmV3IERhdGUobWluVmFsdWUpO1xuICAgICAgICB0aGlzLndpZGdldD8uc2V0TWluVmFsdWUobWluRGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0TWF4VmFsdWUobWF4VmFsdWUpIHtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IGNvbXBvbmVudENvbnN0YW50cy5GSUVMRFRZUEVfREFURVxuICAgICAgJiYgdGhpcy53aWRnZXQ/LnNldE1heFZhbHVlKSB7XG4gICAgICB0aGlzLl9tYXhWYWx1ZSA9IG1heFZhbHVlO1xuICAgICAgaWYgKCFtYXhWYWx1ZSkge1xuICAgICAgICB0aGlzLndpZGdldD8uc2V0TWF4VmFsdWUoZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbWF4RGF0ZSA9IG5ldyBEYXRlKG1heFZhbHVlKTtcbiAgICAgICAgdGhpcy53aWRnZXQ/LnNldE1heFZhbHVlKG1heERhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldEZpZWxkT3B0aW9ucygpIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmZpZWxkT3B0aW9ucykpO1xuICB9XG5cbiAgc2V0RmllbGRPcHRpb25zKG5ld09wdGlvbnMpIHtcbiAgICBpZiAoKHRoaXMuY2FwdHVyZVR5cGUgIT09ICdMSVNUJyAmJiB0aGlzLmNhcHR1cmVUeXBlICE9PSAnUkFESU8nKVxuICAgICAgfHwgdHlwZW9mIG5ld09wdGlvbnMgPT09IFVOREVGSU5FRCB8fCAhbmV3T3B0aW9uc1xuICAgICAgfHwgIUFycmF5LmlzQXJyYXkobmV3T3B0aW9ucykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmllbGRPcHRpb25zID0gbmV3T3B0aW9ucy5tYXAob3B0aW9uID0+IHtcbiAgICAgIGlmIChvcHRpb24udGV4dCAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi50ZXh0ICE9PSBudWxsXG4gICAgICAgICYmIG9wdGlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4geyBmaWVsZE9wdGlvblZhbHVlOiBvcHRpb24udGV4dCwgZmllbGRPcHRpb25JZDogb3B0aW9uLnZhbHVlIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyAuLi5vcHRpb24gfTtcbiAgICB9KTtcbiAgICB0aGlzLmZpZWxkT3B0aW9ucyA9IChmaWVsZE9wdGlvbnMgJiYgQXJyYXkuaXNBcnJheShmaWVsZE9wdGlvbnMpXG4gICAgICAmJiBmaWVsZE9wdGlvbnMubGVuZ3RoID4gMCkgPyBmaWVsZE9wdGlvbnMgOiBbXTtcbiAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IGNvbXBvbmVudENvbnN0YW50cy5GSUVMRFRZUEVfQVJSQVkgJiYgdGhpcy53aWRnZXQpIHtcbiAgICAgIHJldHVybiB0aGlzLndpZGdldD8ucmVmZXJlc2hDb250ZW50KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9maWVsZFZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09IGNvbXBvbmVudENvbnN0YW50cy5GSUVMRFRZUEVfQVJSQVkgJiYgQXJyYXkuaXNBcnJheSh0aGlzLl9maWVsZFZhbHVlKSkge1xuICAgICAgICB0aGlzLl9maWVsZFZhbHVlID0gdGhpcy5fZmllbGRWYWx1ZT8uZmlsdGVyKGl0ZW0gPT5cbiAgICAgICAgICB0aGlzLmZpZWxkT3B0aW9ucy5maW5kKG9wdCA9PiBvcHQuZmllbGRPcHRpb25JZCA9PT0gaXRlbSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbEluT3B0aW9ucyA9IHRoaXMuZmllbGRPcHRpb25zXG4gICAgICAgICAgLmZpbmQoaXRlbSA9PiBpdGVtLmZpZWxkT3B0aW9uSWQgPT09IHRoaXMuX2ZpZWxkVmFsdWUpO1xuICAgICAgICBpZiAoIXZhbEluT3B0aW9ucykge1xuICAgICAgICAgIHRoaXMuc2V0VmFsdWUoJycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmZpZWxkUmVxdWlyZWQgJiYgdGhpcy5maWVsZE9wdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLnNldFZhbHVlKHRoaXMuZmllbGRPcHRpb25zWzBdLmZpZWxkT3B0aW9uSWQpO1xuICAgICAgaWYgKHRoaXMud2lkZ2V0Py5vbkNoYW5nZUNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy53aWRnZXQ/Lm9uQ2hhbmdlQ29udGVudCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFZhbHVlKG5ld1ZhbHVlLCB3aWRnZXRVcGRhdGUgPSB0cnVlKSB7XG4gICAgaWYgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gVU5ERUZJTkVEIHx8IG5ld1ZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBuZXdGaW5hbFZhbHVlO1xuICAgIHN3aXRjaCAodGhpcy5maWVsZFR5cGUpIHtcbiAgICAgIGNhc2UgJ0JPT0xFQU4nOlxuICAgICAgICBuZXdGaW5hbFZhbHVlID0gISFuZXdWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGNvbXBvbmVudENvbnN0YW50cy5GSUVMRFRZUEVfQ0hFQ0s6XG4gICAgICAgIG5ld0ZpbmFsVmFsdWUgPSAhIW5ld1ZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgY29tcG9uZW50Q29uc3RhbnRzLkZJRUxEVFlQRV9BUlJBWTpcbiAgICAgICAgaWYgKG5ld1ZhbHVlID09PSBudWxsIHx8IG5ld1ZhbHVlID09PSAnJykge1xuICAgICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBbXTtcbiAgICAgICAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShuZXdWYWx1ZSkpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIChuZXdWYWx1ZSkgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IG5ld1ZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBuZXdWYWx1ZS5zcGxpdCgnLCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgY29tcG9uZW50Q29uc3RhbnRzLkZJRUxEVFlQRV9NQVA6XG4gICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgaWYgKG5ld0ZpbmFsVmFsdWUgJiYgdGhpcy53aWRnZXQgJiYgd2lkZ2V0VXBkYXRlKSB7XG4gICAgICAgICAgY29uc3QgbGF0aXR1ZGUgPSBwYXJzZUZsb2F0KG5ld0ZpbmFsVmFsdWVbMF0pO1xuICAgICAgICAgIGNvbnN0IGxvbmdpdHVkZSA9IHBhcnNlRmxvYXQobmV3RmluYWxWYWx1ZVsxXSk7XG4gICAgICAgICAgdGhpcy53aWRnZXQ/LnNldExvY2F0aW9uKGxhdGl0dWRlLCBsb25naXR1ZGUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBjb21wb25lbnRDb25zdGFudHMuRklFTERUWVBFX0NVUlJFTkNZOlxuICAgICAgICBuZXdGaW5hbFZhbHVlID0gZm9ybWF0Q3VycmVuY3kodGhpcy5fZmllbGRWYWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKHRoaXMuX2ZpZWxkVmFsdWUgIT09IG5ld0ZpbmFsVmFsdWUpIHtcbiAgICAgIHRoaXMuaGFzQ2hhbmdlZCA9IHRydWU7XG4gICAgICB0aGlzLl9maWVsZFZhbHVlID0gbmV3RmluYWxWYWx1ZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1375,7 +1375,7 @@ const FIELD_TYPES = {
|
|
|
1375
1375
|
phone: 'PHONE',
|
|
1376
1376
|
};
|
|
1377
1377
|
const FIELD_TYPES_FORMATS = {
|
|
1378
|
-
EMAIL: '^\\w+([\\.-]?\\w+)@\\w+([\\.-]?\\w+)(\\.\\w{2,3})+$',
|
|
1378
|
+
EMAIL: new RegExp('^\\w+([\\.-]?\\w+)@\\w+([\\.-]?\\w+)(\\.\\w{2,3})+$'),
|
|
1379
1379
|
};
|
|
1380
1380
|
const STD_MAX_LENGTH = 50;
|
|
1381
1381
|
const BIG_MAX_LENGTH = 500;
|
|
@@ -1399,7 +1399,12 @@ class FieldDescriptor extends FormElement {
|
|
|
1399
1399
|
const defaultTypeAlignment = (tableFieldStyles[this.fieldType] != null) ? tableFieldStyles[this.fieldType]['text-align'] : 'left';
|
|
1400
1400
|
this.fieldAlignment = (fieldReceived.alignment != null) ? fieldReceived.alignment.toLowerCase() : defaultTypeAlignment;
|
|
1401
1401
|
this.fieldInfo = fieldReceived.info || '';
|
|
1402
|
-
|
|
1402
|
+
try {
|
|
1403
|
+
this.fieldFormat = (fieldReceived.format) ? new RegExp(fieldReceived.format) : null;
|
|
1404
|
+
}
|
|
1405
|
+
catch (e) {
|
|
1406
|
+
this.fieldFormat = null;
|
|
1407
|
+
}
|
|
1403
1408
|
this.validateOnServer = (_c = fieldReceived === null || fieldReceived === void 0 ? void 0 : fieldReceived.serverAction) !== null && _c !== void 0 ? _c : false;
|
|
1404
1409
|
this.customAttributes = (_d = fieldReceived === null || fieldReceived === void 0 ? void 0 : fieldReceived.customAttributes) !== null && _d !== void 0 ? _d : null;
|
|
1405
1410
|
this.setVisibility(fieldReceived.visible);
|
|
@@ -1442,15 +1447,13 @@ class FieldDescriptor extends FormElement {
|
|
|
1442
1447
|
this._editionPartial.next({ code: this.fieldCode, intrinsicValidation });
|
|
1443
1448
|
}
|
|
1444
1449
|
notifyEditionFinish() {
|
|
1445
|
-
var _a, _b;
|
|
1450
|
+
var _a, _b, _c, _d;
|
|
1446
1451
|
let intrinsicValidation = true;
|
|
1447
|
-
const fieldDefaultFormat = (FIELD_TYPES_FORMATS === null || FIELD_TYPES_FORMATS === void 0 ? void 0 : FIELD_TYPES_FORMATS[this.fieldType])
|
|
1448
|
-
? new RegExp(FIELD_TYPES_FORMATS === null || FIELD_TYPES_FORMATS === void 0 ? void 0 : FIELD_TYPES_FORMATS[this.fieldType]) : null;
|
|
1449
|
-
const fieldFormat = (this.fieldFormat) ? new RegExp(this.fieldFormat) : null;
|
|
1452
|
+
const fieldDefaultFormat = (_a = FIELD_TYPES_FORMATS === null || FIELD_TYPES_FORMATS === void 0 ? void 0 : FIELD_TYPES_FORMATS[this.fieldType]) !== null && _a !== void 0 ? _a : null;
|
|
1450
1453
|
const fieldValue = this.getValue();
|
|
1451
|
-
if (fieldValue && (fieldDefaultFormat || fieldFormat)) {
|
|
1452
|
-
intrinsicValidation = ((
|
|
1453
|
-
&& ((
|
|
1454
|
+
if (fieldValue && (fieldDefaultFormat || this.fieldFormat)) {
|
|
1455
|
+
intrinsicValidation = ((_b = fieldDefaultFormat === null || fieldDefaultFormat === void 0 ? void 0 : fieldDefaultFormat.test(fieldValue)) !== null && _b !== void 0 ? _b : true)
|
|
1456
|
+
&& ((_d = (_c = this.fieldFormat) === null || _c === void 0 ? void 0 : _c.test(fieldValue)) !== null && _d !== void 0 ? _d : true);
|
|
1454
1457
|
if (!intrinsicValidation) {
|
|
1455
1458
|
this.setError('99', this._intrinsicErrorMessage);
|
|
1456
1459
|
}
|