qms-angular 1.0.90 → 1.0.91
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/qms-angular.umd.js +50 -34
- package/bundles/qms-angular.umd.js.map +1 -1
- package/esm2015/lib/components/banner/models/qms-banner.model.js +9 -1
- package/esm2015/lib/components/banner/qms-banner-confirm/qms-banner-confirm.component.js +4 -3
- package/esm2015/lib/components/banner/qms-banner-confirm/qms-banner-confirm.module.js +7 -4
- package/esm2015/lib/components/button/button-toggle.js +1 -1
- package/esm2015/lib/components/button/button.js +1 -1
- package/esm2015/lib/components/list/list.js +2 -2
- package/esm2015/lib/components/related/popup/related-popup.component.js +1 -1
- package/esm2015/lib/components/select-include-children/select-include-children.component.js +1 -1
- package/esm2015/lib/components/select-process-document/select-process-document.component.js +1 -1
- package/esm2015/lib/components/tree/tree.component.js +1 -1
- package/esm2015/lib/components/treeNew/tree.component.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/common/flowchart/service/kitchensink-service.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/common/helper/fileHelper.js +15 -0
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.js +5 -18
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-flowchart/qms-ckeditor-flowchart.component.js +9 -3
- package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.component.js +2 -2
- package/fesm2015/qms-angular.js +49 -33
- package/fesm2015/qms-angular.js.map +1 -1
- package/lib/components/banner/models/qms-banner.model.d.ts +7 -0
- package/lib/components/banner/qms-banner-confirm/qms-banner-confirm.component.d.ts +2 -1
- package/lib/qms-ckeditor-components/common/flowchart/service/kitchensink-service.d.ts +1 -1
- package/lib/qms-ckeditor-components/common/helper/fileHelper.d.ts +1 -0
- package/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.d.ts +0 -1
- package/lib/qms-ckeditor-components/components/qms-ckeditor-flowchart/qms-ckeditor-flowchart.component.d.ts +3 -1
- package/package.json +1 -1
- package/qms-angular.metadata.json +1 -1
- package/src/lib/components/button/button-icon.scss +1 -1
- package/src/lib/components/button/button-toggle.scss +3 -3
- package/src/lib/components/list/_list-expansion.scss +11 -7
- package/src/lib/components/related/popup/related-popup.component.scss +0 -1
- package/src/lib/components/select-include-children/select-include-children.component.scss +0 -1
- package/src/lib/components/select-process-document/select-process-document.component.scss +0 -1
- package/src/lib/components/tree/tree.component.scss +1 -1
- package/src/lib/components/treeNew/tree.component.scss +1 -1
- package/src/themes/core/_date-picker.scss +2 -2
- package/src/themes/core/_table.scss +1 -1
- package/src/themes/theme/_variable.scss +8 -8
@@ -26,7 +26,7 @@ import { QMSCKEditorDocumentType } from "../../common/enums/document-type.enum";
|
|
26
26
|
import { LinkAnchor } from "../../common/enums/link-anchor.enum";
|
27
27
|
import { CKEditorLinkConst } from '../../common/constants/ckeditorLink.constant';
|
28
28
|
import { QMSCKEditorUploadService } from "../../services/qms-ckeditor-upload.service";
|
29
|
-
import {
|
29
|
+
import { base64StringToFile } from "../../common/helper/fileHelper";
|
30
30
|
class ILink {
|
31
31
|
constructor() {
|
32
32
|
this.target = TargetTypeName.new;
|
@@ -201,19 +201,6 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
|
201
201
|
});
|
202
202
|
});
|
203
203
|
}
|
204
|
-
dataUrlToFile(dataUrl, filename) {
|
205
|
-
const arr = dataUrl.split(',');
|
206
|
-
if (arr.length < 2) {
|
207
|
-
return undefined;
|
208
|
-
}
|
209
|
-
const mimeArr = arr[0].match(/:(.*?);/);
|
210
|
-
if (!mimeArr || mimeArr.length < 2) {
|
211
|
-
return undefined;
|
212
|
-
}
|
213
|
-
const mime = mimeArr[1];
|
214
|
-
const buff = Buffer.from(arr[1], 'base64');
|
215
|
-
return new File([buff], filename, { type: mime });
|
216
|
-
}
|
217
204
|
getImageContent(paper) {
|
218
205
|
return __awaiter(this, void 0, void 0, function* () {
|
219
206
|
return new Promise((resolve) => {
|
@@ -232,10 +219,10 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
|
232
219
|
const graphObject = graph.toJSON();
|
233
220
|
const id = yield this.saveImageContent(graphObject);
|
234
221
|
const imageContent = 'data:image/png;base64,' + (yield this.getImageContent(paper));
|
235
|
-
const file =
|
236
|
-
const
|
222
|
+
const file = base64StringToFile(imageContent, `${CKEditorEventConst.QMSCK_BPMN}#${id}`);
|
223
|
+
const relativeUrl = yield this.uploadService.uploadImage(file).toPromise();
|
237
224
|
const imagemap = this.toImageMap(id, graphObject.cells, clientRect);
|
238
|
-
const result = { key: `${CKEditorEventConst.QMSCK_BPMN}#${id}`, values:
|
225
|
+
const result = { key: `${CKEditorEventConst.QMSCK_BPMN}#${id}`, values: relativeUrl, imagemap: imagemap };
|
239
226
|
this.dialogRef.close(result);
|
240
227
|
});
|
241
228
|
}
|
@@ -793,4 +780,4 @@ QMSCKEditorBpmnComponent.ctorParameters = () => [
|
|
793
780
|
QMSCKEditorBpmnComponent.propDecorators = {
|
794
781
|
onMessage: [{ type: HostListener, args: ['window:message', ['$event'],] }]
|
795
782
|
};
|
796
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWJwbW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1icG1uL3Ftcy1ja2VkaXRvci1icG1uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDaEYsT0FBTyxVQUFVLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN2RSxPQUFPLEVBQUUs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WSxTQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ0tFZGl0b3JFdmVudENvbnN0IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9jb25zdGFudHMvY2tlZGl0b3JFdmVudC5jb25zdGFudFwiO1xyXG5pbXBvcnQgeyBGbG93Q2hhcnRDb25zdCB9IGZyb20gXCIuLi8uLi9jb21tb24vY29uc3RhbnRzL2NrZWRpdG9yRmxvd2NoYXJ0LmNvbnN0XCI7XHJcbmltcG9ydCBndWlkSGVscGVyIGZyb20gXCIuLi8uLi9jb21tb24vaGVscGVyL2d1aWRIZWxwZXJcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCcG1uVGVtcGxhdGUgfSBmcm9tIFwiLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItYnBtbi10ZW1wbGF0ZS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckJwbW4gfSBmcm9tIFwiLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItYnBtbi5tb2RlbFwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckRpYWxvZ0RhdGEgfSBmcm9tIFwiLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItZGlhbG9nLm1vZGVsXCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yU2F2ZUFzVGVtcGxhdGUgfSBmcm9tIFwiLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3Itc2F2ZS1hcy10ZW1wbGF0ZS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckNvbmZpcm1Db21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tbW9uL21vZHVsZS9jb25maXJtL3Ftcy1ja2VkaXRvci1jb25maXJtLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vcW1zLWNrZWRpdG9yLWJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQnBtbkFwaVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLWJwbW4tYXBpLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQnBtblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLWJwbW4uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTYXZlVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tIFwiLi9zYXZlLXRlbXBsYXRlL3NhdmUtdGVtcGxhdGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFRhcmdldFR5cGVOYW1lIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zL3RhcmdldC10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zL3NoYXBlLWZsb3ctY2hhcnQtY29ubmVjdGlvbi10eXBlJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JSZWxhdGVkQ29tcG9uZW50IH0gZnJvbSAnLi4vcW1zLWNrZWRpdG9yLXJlbGF0aW9uL3Ftc2NrZWRpdG9yLXJlbGF0ZWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGlua0F0dGFjaG1lbnRDb21wb25lbnQgfSBmcm9tICcuLi9xbXMtY2tlZGl0b3ItbGluay9hdHRhY2htZW50cy9saW5rLWF0dGFjaG1lbnQuY29tcG9uZW50JztcclxuaW1wb3J0IFFNU0NLRWRpdG9yUGFyYW10ZXIgZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItcGFyYW1ldGVyLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JSZWxhdGlvbiB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLXJlbGF0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCcG1uRGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9xbXMtY2tlZGl0b3ItYnBtbi1kYXRhLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JMaW5rU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1saW5rLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckRvY3VtZW50VHlwZSB9IGZyb20gXCIuLi8uLi9jb21tb24vZW51bXMvZG9jdW1lbnQtdHlwZS5lbnVtXCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yTGlua0FuY2hvckRvY3VtZW50IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWxpbmstYW5jaG9yLWRvY3VtZW50Lm1vZGVsXCI7XHJcbmltcG9ydCB7IExpbmtBbmNob3IgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2VudW1zL2xpbmstYW5jaG9yLmVudW1cIjtcclxuaW1wb3J0IHsgQ0tFZGl0b3JMaW5rQ29uc3QgfSBmcm9tICcuLi8uLi9jb21tb24vY29uc3RhbnRzL2NrZWRpdG9yTGluay5jb25zdGFudCc7XHJcbmltcG9ydCB7IE1hdFRhYkNoYW5nZUV2ZW50IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3RhYnNcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JVcGxvYWRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci11cGxvYWQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xyXG5cclxuLy9UT0RPOiBtb3ZlIHRvIGNvbW1vbiBmb2xkZXJcclxuaW50ZXJmYWNlIElUYXJnZXQge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgSUNvbm5lY3Rpb25UeXBlIHtcclxuICBpZDogbnVtYmVyO1xyXG4gIG5hbWU6IHN0cmluZztcclxufVxyXG5cclxuLy9UT0RPOiBtb3ZlIHRvIGNvbW1vbiBmb2xkZXJcclxuaW50ZXJmYWNlIElBbmNob3Ige1xyXG4gIHZhbHVlOiBudW1iZXI7XHJcbiAgdmlld1ZhbHVlOiBzdHJpbmc7XHJcbiAgYW5jaG9yVmFsdWU6IHN0cmluZztcclxufVxyXG5cclxuY2xhc3MgSUxpbmsge1xyXG4gIHRhcmdldDogVGFyZ2V0VHlwZU5hbWU7XHJcbiAgdXJsOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBkb2N1bWVudFR5cGU6IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlO1xyXG4gIGljb246IHN0cmluZztcclxuICBjb250ZW50OiBzdHJpbmc7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLnRhcmdldCA9IFRhcmdldFR5cGVOYW1lLm5ldztcclxuICAgIHRoaXMuZG9jdW1lbnRUeXBlID0gUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUub3RoZXI7XHJcbiAgICB0aGlzLnVybCA9ICcnO1xyXG4gICAgdGhpcy50aXRsZSA9ICcnO1xyXG4gICAgdGhpcy5pY29uID0gJyc7XHJcbiAgICB0aGlzLmNvbnRlbnQgPSAnJztcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncW1zLWJwbW4nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9xbXMtY2tlZGl0b3ItYnBtbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcW1zLWNrZWRpdG9yLWJwbW4uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JCcG1uQ29tcG9uZW50IGV4dGVuZHMgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBMQU5HOiBhbnk7XHJcbiAganNvbkNvbnRlbnQ6IHN0cmluZztcclxuICBleHBhbmRlZFBhbmVsID0gdHJ1ZTtcclxuICBpZCA9ICcnO1xyXG4gIG1vZHVsZTogbnVtYmVyO1xyXG4gIGVudGl0eUlkID0gJyc7XHJcbiAgZWRpdG9yQ29udGVudCA9ICcnO1xyXG5cclxuICBicG1uOiBRTVNDS0VkaXRvckJwbW4gPSBuZXcgUU1TQ0tFZGl0b3JCcG1uKCk7XHJcbiAgYnBtblRlbWxhdGVzOiBRTVNDS0VkaXRvckJwbW5UZW1wbGF0ZVtdID0gW107XHJcblxyXG4gIGNvbm5lY3Rpb25UeXBlOiBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlO1xyXG4gIHNlbGVjdGVkQ29ubmVjdGlvblR5cGU6IFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGU7XHJcbiAgdGFyZ2V0czogSVRhcmdldFtdID0gW107XHJcbiAgY29ubmVjdGlvblR5cGVzOiBJQ29ubmVjdGlvblR5cGVbXSA9IFtdO1xyXG5cclxuICBzZWxlY3RlZFRhcmdldDogVGFyZ2V0VHlwZU5hbWUgPSBUYXJnZXRUeXBlTmFtZS5uZXc7XHJcbiAgbGlua1VybCA9ICcnO1xyXG4gIGxpbmtUaXRsZSA9ICcnO1xyXG4gIGFuY2hvckJ5TmFtZSA9ICcnO1xyXG4gIGxpbmtJY29uID0gJyc7XHJcbiAgbGlua0lkOiBzdHJpbmcgPSAnJztcclxuICBkb2N1bWVudFR5cGU6IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlID0gUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUub3RoZXI7XHJcbiAgZG9jdW1lbnRJY29uczogYW55O1xyXG5cclxuICBsaW5rOiBJTGluaztcclxuICBkb2N1bWVudEFuY2hvcnM6IElBbmNob3JbXTtcclxuICBpc0xvYWRpbmdEb2N1bWVudEFuY2hvcjogYm9vbGVhbjtcclxuICBzZWxlY3RlZENlbGxWaWV3OiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgYm1wblNlcnZpY2U6IEJwbW5TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBicG1uQXBpU2VydmljZTogUU1TQ0tFZGl0b3JCcG1uQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgbGlua1NlcnZpY2U6IFFNU0NLRWRpdG9yTGlua1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVwbG9hZFNlcnZpY2U6IFFNU0NLRWRpdG9yVXBsb2FkU2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxRTVNDS0VkaXRvckJwbW5Db21wb25lbnQ+LFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBRTVNDS0VkaXRvckJwbW5EYXRhXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5pZCA9IGRhdGEuaWQ7XHJcbiAgICB0aGlzLm1vZHVsZSA9IGRhdGEubW9kdWxlO1xyXG4gICAgdGhpcy5lbnRpdHlJZCA9IGRhdGEuZW50aXR5SWQ7XHJcbiAgICB0aGlzLmVkaXRvckNvbnRlbnQgPSBkYXRhLmVkaXRvckNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bWVzc2FnZScsIFsnJGV2ZW50J10pXHJcbiAgb25NZXNzYWdlKGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuZGF0YSA9PT0gRmxvd0NoYXJ0Q29uc3QuU0FWRV9BU19URU1QTEFURSkge1xyXG4gICAgICB0aGlzLm9uU2F2ZUFzVGVtcGxhdGUoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV2ZW50LmRhdGEgPT09IEZsb3dDaGFydENvbnN0LkRFTEVURV9URU1QTEFURSkge1xyXG4gICAgICB0aGlzLm9uRGVsZXRlVGVtcGxhdGUodGhpcy5MQU5HLkJQTU4uREVMRVRFX1RFTVBMQVRFLCB0aGlzLkxBTkcuUU1TQ0tFRElUT1JfTUVTU0FHRS5DT05GSVJNX0RFTEVURV9URU1QTEFURSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5kYXRhID09PSBGbG93Q2hhcnRDb25zdC5NVVNUX1NFTEVDVF9URU1QTEFURSkge1xyXG4gICAgICB0aGlzLnNob3dDb25maXJtRGlhbG9nKHRoaXMuTEFORy5CUE1OLlNFTEVDVF9URU1QTEFURSwgdGhpcy5MQU5HLkJQTU4uU0VMRUNUX1RFTVBMQVRFX0lORk9STUFUSU9OLCB0cnVlKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV2ZW50LmRhdGEgPT09IEZsb3dDaGFydENvbnN0LkNIQU5HSU5HX1RFTVBMQVRFKSB7XHJcbiAgICAgIHRoaXMub25TZWxlY3RlZFRlbXBsYXRlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5kYXRhID09PSBGbG93Q2hhcnRDb25zdC5SRVNFVF9URU1QTEFURSkge1xyXG4gICAgICB0aGlzLm9uUmVzZXRUZW1wbGF0ZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXZlbnQuZGF0YSA9PT0gRmxvd0NoYXJ0Q29uc3QuU0VMRUNURURfU0hBUEVfSUQpIHtcclxuICAgICAgdGhpcy5vblNlbGV0ZWRDZWxsVmlldygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMuTEFORyA9IHRoaXMudHJhbnNsYXRlLmdldE9iamVjdExhbmcocmVzKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmJwbW5UZW1sYXRlcyA9IGF3YWl0IHRoaXMuZ2V0VGVtcGxhdGVzKCk7XHJcbiAgICBpZiAodGhpcy5pZCkge1xyXG4gICAgICB0aGlzLmpzb25Db250ZW50ID0gYXdhaXQgdGhpcy5nZXRKc29uQ29udGVudCh0aGlzLmlkKTtcclxuICAgIH1cclxuICAgIHRoaXMuYm1wblNlcnZpY2UuYnVpbGREaWFncmFtKFxyXG4gICAgICB0aGlzLmJwbW5UZW1sYXRlcyxcclxuICAgICAgbnVsbCxcclxuICAgICAgQ0tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JQTU4sXHJcbiAgICAgIHRoaXMuanNvbkNvbnRlbnQsXHJcbiAgICAgIDEsXHJcbiAgICAgIHRoaXMuTEFOR1xyXG4gICAgKTtcclxuICAgIHRoaXMuaW5pdERvY3VtZW50SWNvbnMoKTtcclxuICAgIHRoaXMuaW5pdFRhcmdldCgpO1xyXG4gICAgdGhpcy5pbml0Q29ubmVjdGlvblR5cGUoKTtcclxuICAgIHRoaXMuaW5pdExpbmsoKTtcclxuICB9XHJcblxyXG4gIGluaXRUYXJnZXQoKSB7XHJcbiAgICBpZiAodGhpcy50YXJnZXRzKSB7XHJcbiAgICAgIHRoaXMudGFyZ2V0cy5wdXNoKHsgaWQ6IFRhcmdldFR5cGVOYW1lLm5ldywgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlRBUlRHRVRfTkVXIH0pO1xyXG4gICAgICB0aGlzLnRhcmdldHMucHVzaCh7IGlkOiBUYXJnZXRUeXBlTmFtZS5zYW1lLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSR0VUX1NBTUUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0Q29ubmVjdGlvblR5cGUoKSB7XHJcbiAgICBpZiAodGhpcy5jb25uZWN0aW9uVHlwZXMpIHtcclxuICAgICAgdGhpcy5jb25uZWN0aW9uVHlwZXMucHVzaCh7IGlkOiBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkRvY3VtZW50T3JQcm9jZXNzLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuRE9DVU1FTlRfUFJPQ0VTUyB9KTtcclxuICAgICAgdGhpcy5jb25uZWN0aW9uVHlwZXMucHVzaCh7IGlkOiBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkF0dGFjaG1lbnQsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5BVFRBQ0hNRU5UIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdERvY3VtZW50SWNvbnMoKSB7XHJcbiAgICB0aGlzLmRvY3VtZW50SWNvbnMgPSB7fTtcclxuICAgIHRoaXMuZG9jdW1lbnRJY29uc1tRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5kb2N1bWVudF0gPSAndGV4dF9zbmlwcGV0JztcclxuICAgIHRoaXMuZG9jdW1lbnRJY29uc1tRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5wcm9jZXNzXSA9ICdhY2NvdW50X3RyZWUnO1xyXG4gICAgdGhpcy5kb2N1bWVudEljb25zW1FNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmFyZWFdID0gJ2ZvbGRlcic7XHJcbiAgICB0aGlzLmRvY3VtZW50SWNvbnNbUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuZm9sZGVyXSA9ICdmb2xkZXInO1xyXG4gICAgdGhpcy5kb2N1bWVudEljb25zW1FNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLm90aGVyXSA9ICd0ZXh0X3NuaXBwZXQnO1xyXG4gIH1cclxuXHJcbiAgaW5pdExpbmsoKSB7XHJcbiAgICB0aGlzLmxpbmsgPSBudWxsO1xyXG4gICAgdGhpcy5saW5rSWQgPSAnJztcclxuICAgIHRoaXMuZG9jdW1lbnRUeXBlID0gUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUub3RoZXI7XHJcbiAgICB0aGlzLmxpbmtJY29uID0gdGhpcy5kb2N1bWVudEljb25zW1FNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLm90aGVyXVxyXG4gICAgdGhpcy5zZWxlY3RlZFRhcmdldCA9IFRhcmdldFR5cGVOYW1lLm5ldztcclxuICAgIHRoaXMuYW5jaG9yQnlOYW1lID0gJyc7XHJcbiAgICB0aGlzLmxpbmtUaXRsZSA9ICcnO1xyXG4gICAgdGhpcy5kb2N1bWVudEFuY2hvcnMgPSBbXTtcclxuICB9XHJcblxyXG4gIGV4cGFuZFBhbmVsKCkge1xyXG4gICAgdGhpcy5leHBhbmRlZFBhbmVsID0gIXRoaXMuZXhwYW5kZWRQYW5lbDtcclxuICAgIGNvbnN0IHBhbmVsU3RlbmNpbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYW5lbC1zdGVuY2lsLWNvbnRhaW5lcicpO1xyXG4gICAgY29uc3QgcGFwZXJDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFwZXJwYW5lbCcpO1xyXG4gICAgY29uc3Qgc3RlbmNpbENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGVuY2lscGFuZWwnKTtcclxuICAgIGlmIChwYW5lbFN0ZW5jaWwpIHtcclxuICAgICAgaWYgKCF0aGlzLmV4cGFuZGVkUGFuZWwpIHtcclxuICAgICAgICBzdGVuY2lsQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICc1MHB4JztcclxuICAgICAgICBwYW5lbFN0ZW5jaWwuc3R5bGUuaGVpZ2h0ID0gJzUwcHgnO1xyXG4gICAgICAgIHBhcGVyQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICc1MDBweCc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3RlbmNpbENvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSAnMTUwcHgnO1xyXG4gICAgICAgIHBhbmVsU3RlbmNpbC5zdHlsZS5oZWlnaHQgPSAnMTUwcHgnO1xyXG4gICAgICAgIHBhcGVyQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICc0MDBweCc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFRlbXBsYXRlcygpOiBQcm9taXNlPFFNU0NLRWRpdG9yQnBtblRlbXBsYXRlW10+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICB0aGlzLmJwbW5BcGlTZXJ2aWNlXHJcbiAgICAgICAgLmJwbW5HZXRUZW1wbGF0ZXMoKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRKc29uQ29udGVudChpZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICB0aGlzLmJwbW5BcGlTZXJ2aWNlXHJcbiAgICAgICAgLmdldEJwbW5CeUlkKGlkKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0Lmpzb25Db250ZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBzYXZlSW1hZ2VDb250ZW50KGdyYXBoT2JqZWN0KSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgY29uc3QganNvbkNvbnRlbnQgPSBKU09OLnN0cmluZ2lmeShncmFwaE9iamVjdCk7XHJcbiAgICAgIHRoaXMuYnBtbiA9IHtcclxuICAgICAgICBpZDogdGhpcy5pZCA/IHRoaXMuaWQgOiBndWlkSGVscGVyLmVtcHR5LFxyXG4gICAgICAgIGpzb25Db250ZW50OiBqc29uQ29udGVudCxcclxuICAgICAgICBpc1RlbXBsYXRlOiBmYWxzZSxcclxuICAgICAgICB0ZW1wbGF0ZU5hbWU6ICcnXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuYnBtbkFwaVNlcnZpY2VcclxuICAgICAgICAuYnBtbk1vZGlmeWluZyh0aGlzLmJwbW4pXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGRhdGFVcmxUb0ZpbGUoZGF0YVVybDogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nKTogRmlsZSB8IHVuZGVmaW5lZCB7XHJcbiAgICBjb25zdCBhcnIgPSBkYXRhVXJsLnNwbGl0KCcsJyk7XHJcbiAgICBpZiAoYXJyLmxlbmd0aCA8IDIpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxyXG4gICAgY29uc3QgbWltZUFyciA9IGFyclswXS5tYXRjaCgvOiguKj8pOy8pO1xyXG4gICAgaWYgKCFtaW1lQXJyIHx8IG1pbWVBcnIubGVuZ3RoIDwgMikgeyByZXR1cm4gdW5kZWZpbmVkOyB9XHJcbiAgICBjb25zdCBtaW1lID0gbWltZUFyclsxXTtcclxuICAgIGNvbnN0IGJ1ZmYgPSBCdWZmZXIuZnJvbShhcnJbMV0sICdiYXNlNjQnKTtcclxuICAgIHJldHVybiBuZXcgRmlsZShbYnVmZl0sIGZpbGVuYW1lLCB7IHR5cGU6IG1pbWUgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRJbWFnZUNvbnRlbnQocGFwZXI6IGFueSkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIHBhcGVyLnRvUE5HKChpbWFnZURhdGEpID0+IHtcclxuICAgICAgICBjb25zdCBhcnJTdHJpbmcgPSBpbWFnZURhdGEuc3BsaXQoJywnKTtcclxuICAgICAgICByZXNvbHZlKGFyclN0cmluZ1sxXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkluc2VydEltYWdlKCkge1xyXG4gICAgY29uc3QgZ3JhcGggPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuR1JBUEhdO1xyXG4gICAgY29uc3QgcGFwZXIgPSB3aW5kb3dbYHBhcGVyYF07XHJcbiAgICBjb25zdCBjbGllbnRSZWN0ID0gcGFwZXIucGFwZXJUb0xvY2FsUmVjdChwYXBlci5nZXRDb250ZW50QkJveCgpKTtcclxuICAgIGNvbnN0IGdyYXBoT2JqZWN0ID0gZ3JhcGgudG9KU09OKCk7XHJcbiAgICBjb25zdCBpZCA9IGF3YWl0IHRoaXMuc2F2ZUltYWdlQ29udGVudChncmFwaE9iamVjdCk7XHJcbiAgICBjb25zdCBpbWFnZUNvbnRlbnQgPSAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LCcgKyBhd2FpdCB0aGlzLmdldEltYWdlQ29udGVudChwYXBlcik7XHJcbiAgICBjb25zdCBmaWxlID0gdGhpcy5kYXRhVXJsVG9GaWxlKGltYWdlQ29udGVudCwgYCR7Q0tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JQTU59IyR7aWR9YCk7XHJcbiAgICBjb25zdCBpbWFnZVVybCA9IGF3YWl0IHRoaXMudXBsb2FkU2VydmljZS51cGxvYWRJbWFnZShmaWxlKS50b1Byb21pc2UoKTtcclxuICAgIGNvbnN0IGltYWdlbWFwID0gdGhpcy50b0ltYWdlTWFwKGlkLCBncmFwaE9iamVjdC5jZWxscywgY2xpZW50UmVjdCk7XHJcbiAgICBjb25zdCByZXN1bHQgPSB7IGtleTogYCR7Q0tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JQTU59IyR7aWR9YCwgdmFsdWVzOiBpbWFnZVVybCwgaW1hZ2VtYXA6IGltYWdlbWFwIH1cclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlc3VsdCk7XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlRGlhbG9nKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUxpbmsoKSB7XHJcbiAgICBsZXQgdGl0bGUgPSB0aGlzLkxBTkcuQlBNTi5ERUxFVEVfQVRUQUNITUVOVDtcclxuICAgIGxldCBjb250ZW50ID0gdGhpcy5MQU5HLkJQTU4uQ09ORklSTV9ERUxFVEVfQVRUQUNITUVOVDtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkQ29ubmVjdGlvblR5cGUgPT0gU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZS5Eb2N1bWVudE9yUHJvY2Vzcykge1xyXG4gICAgICB0aXRsZSA9IHRoaXMuTEFORy5CUE1OLkRFTEVURV9ET0NVTUVOVF9PUl9QUk9DRVNTO1xyXG4gICAgICBjb250ZW50ID0gdGhpcy5MQU5HLlFNU0NLRURJVE9SX01FU1NBR0UuQ09ORklSTV9ERUxFVEVfRE9DVU1FTlRfT1JfUFJPQ0VTUztcclxuICAgIH1cclxuICAgIHRoaXMuc2hvd0NvbmZpcm1EaWFsb2codGl0bGUsIGNvbnRlbnQsIGZhbHNlLCAodmFsdWUpID0+IHtcclxuICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09IHRydWUgfHwgKHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0JyAmJiB2YWx1ZS5pc0NvbmZpcm1lZCA9PSB0cnVlKSkge1xyXG4gICAgICAgICAgdGhpcy5saW5rID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvbkNvbm5lY3Rpb25UeXBlQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbm5lY3Rpb25UeXBlID0gdGhpcy5jb25uZWN0aW9uVHlwZTtcclxuICAgIGlmICh0aGlzLmxpbmspIHtcclxuICAgICAgdGhpcy5zaG93Q29uZmlybURpYWxvZyh0aGlzLkxBTkcuUU1TQ0tFRElUT1IuSU5GT1JNQVRJT04sIHRoaXMuTEFORy5RTVNDS0VESVRPUl9NRVNTQUdFLkNPTkZJUk1fREVMRVRFX0VYSVNUSU5HX0NPTk5FQ1RJT04sIHRydWUsICgpID0+IHtcclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb25UeXBlID0gMDtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHN3aXRjaCAodGhpcy5jb25uZWN0aW9uVHlwZSkge1xyXG4gICAgICBjYXNlIFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuRG9jdW1lbnRPclByb2Nlc3M6XHJcbiAgICAgICAgdGhpcy5vcGVuSGFuZGJvb2tEaWFsb2coZmFsc2UpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuQXR0YWNobWVudDpcclxuICAgICAgICB0aGlzLm9wZW5BdHRhY2htZW50RGlhbG9nKClcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQW5jaG9yQnlOYW1lQ2hhbmdlKCkge1xyXG4gICAgdGhpcy51cGRhdGVDZWxsVmlld1ZhbHVlcygpO1xyXG4gIH1cclxuXHJcbiAgb3BlbkhhbmRib29rRGlhbG9nKGlzT25seURvY3VtZW50OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yUmVsYXRpb24oKTtcclxuICAgIGRhdGEuaXNPbmx5RG9jdW1lbnQgPSBpc09ubHlEb2N1bWVudDtcclxuICAgIGRhdGEuaXNFbmFibGVGb2xkZXIgPSAhaXNPbmx5RG9jdW1lbnQ7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JSZWxhdGVkQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnNjUwcHgnLFxyXG4gICAgICBoZWlnaHQ6ICc2NTBweCcsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dUZW1wbGF0ZVxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLmRvY3VtZW50VHlwZSA9IHJlc3VsdC50eXBlO1xyXG4gICAgICAgICAgdGhpcy5saW5rSWQgPSB0aGlzLmdldExpbmtJZChyZXN1bHQudXJsLCByZXN1bHQudHlwZSk7XHJcbiAgICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuZG9jdW1lbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5saW5rVGl0bGUgPSBgJHtyZXN1bHQudGl0bGV9KCR7cmVzdWx0LmlkfSlgO1xyXG4gICAgICAgICAgICB0aGlzLmdldEFuY2hvckRvY3VtZW50KHJlc3VsdC5pZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5saW5rVXJsID0gcmVzdWx0LnVybDtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmxpbmtUaXRsZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMubGlua1RpdGxlID0gcmVzdWx0LnRpdGxlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFyZ2V0ID0gVGFyZ2V0VHlwZU5hbWUubmV3O1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVDZWxsVmlld1ZhbHVlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb25UeXBlID0gMDtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvcGVuQXR0YWNobWVudERpYWxvZygpIHtcclxuICAgIGNvbnN0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JQYXJhbXRlcigpO1xyXG4gICAgZGF0YS5tb2R1bGUgPSB0aGlzLm1vZHVsZTtcclxuICAgIGRhdGEuZW50aXR5SWQgPSB0aGlzLmVudGl0eUlkO1xyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKExpbmtBdHRhY2htZW50Q29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnNjUwcHgnLFxyXG4gICAgICBoZWlnaHQ6ICc2NTBweCcsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dUZW1wbGF0ZVxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLmRvY3VtZW50VHlwZSA9IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLm90aGVyO1xyXG4gICAgICAgICAgdGhpcy5saW5rVXJsID0gcmVzdWx0LnVybDtcclxuICAgICAgICAgIGlmICghdGhpcy5saW5rVGl0bGUpIHtcclxuICAgICAgICAgICAgdGhpcy5saW5rVGl0bGUgPSByZXN1bHQudGl0bGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFyZ2V0ID0gVGFyZ2V0VHlwZU5hbWUubmV3O1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVDZWxsVmlld1ZhbHVlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb25UeXBlID0gMDtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBbmNob3JEb2N1bWVudChkb2N1bWVudElkKSB7XHJcbiAgICB0aGlzLmlzTG9hZGluZ0RvY3VtZW50QW5jaG9yID0gdHJ1ZTtcclxuICAgIHRoaXMubGlua1NlcnZpY2VcclxuICAgICAgLmdldEFuY2hvckRvY3VtZW50TGlzdChkb2N1bWVudElkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChkb2N1bWVudHMpID0+IHtcclxuICAgICAgICB0aGlzLmRvY3VtZW50QW5jaG9ycyA9IHRoaXMuZXh0cmFjdERvY3VtZW50QW5jaG9ycyhkb2N1bWVudHMgfHwgW10pO1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nRG9jdW1lbnRBbmNob3IgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBleHRyYWN0RG9jdW1lbnRBbmNob3JzKGFuY2hvckRvY3VtZW50OiBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudFtdKSB7XHJcbiAgICBjb25zdCBhbmNob3JzOiBJQW5jaG9yW10gPSBbeyB2YWx1ZTogMCwgdmlld1ZhbHVlOiAnJywgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuQmxhbmsgfV07XHJcbiAgICBsZXQgaWQgPSAzO1xyXG4gICAgaWYgKGFuY2hvckRvY3VtZW50KSB7XHJcbiAgICAgIGFuY2hvckRvY3VtZW50LmZvckVhY2goKGUpID0+IHtcclxuICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICBkaXYuaW5uZXJIVE1MID0gZS5yaWNoVGV4dDtcclxuICAgICAgICBjb25zdCBkb21Db250ZW50ID0gZGl2O1xyXG4gICAgICAgIGNvbnN0IGFUYWdzID0gZG9tQ29udGVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpO1xyXG4gICAgICAgIGlmIChhVGFncykge1xyXG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci1mb3Itb2ZcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYVRhZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgdGFnID0gYVRhZ3NbaV07XHJcbiAgICAgICAgICAgIGlmICh0YWcubmFtZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gYW5jaG9ycy5maW5kSW5kZXgoKHgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB4LmFuY2hvclZhbHVlID09PSB0YWcubmFtZTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBpZiAoaW5kZXggPCAwKSB7XHJcbiAgICAgICAgICAgICAgICBhbmNob3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogaWQsXHJcbiAgICAgICAgICAgICAgICAgIHZpZXdWYWx1ZTogdGFnLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIGFuY2hvclZhbHVlOiB0YWcubmFtZVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBpZCArPSAxO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBhbmNob3JzLnB1c2goe1xyXG4gICAgICB2YWx1ZTogMSxcclxuICAgICAgdmlld1ZhbHVlOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuQU5DSE9SX0FUVEFDSE1FTlQsXHJcbiAgICAgIGFuY2hvclZhbHVlOiBMaW5rQW5jaG9yLkF0dGFjaG1lbnRcclxuICAgIH0pO1xyXG4gICAgYW5jaG9ycy5wdXNoKHtcclxuICAgICAgdmFsdWU6IDIsXHJcbiAgICAgIHZpZXdWYWx1ZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkFOQ0hPUl9SRUxBVEVEX0RPQ1VNRU5ULFxyXG4gICAgICBhbmNob3JWYWx1ZTogTGlua0FuY2hvci5SZWxhdGVkXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBhbmNob3JzO1xyXG4gIH1cclxuXHJcbiAgcmVsb2FkQW5jaG9ycygpIHtcclxuICAgIGlmICghIXRoaXMubGlua0lkICYmIHRoaXMuZG9jdW1lbnRUeXBlID09IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmRvY3VtZW50KSB7XHJcbiAgICAgIHRoaXMuZ2V0QW5jaG9yRG9jdW1lbnQodGhpcy5saW5rSWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYnVpbGRMaW5rKCkge1xyXG4gICAgY29uc3QgbGluayA9IG5ldyBJTGluaygpO1xyXG4gICAgbGluay50YXJnZXQgPSB0aGlzLnNlbGVjdGVkVGFyZ2V0O1xyXG4gICAgbGluay50aXRsZSA9IHRoaXMubGlua1RpdGxlO1xyXG4gICAgbGluay51cmwgPSB0aGlzLmxpbmtVcmw7XHJcbiAgICBsaW5rLmRvY3VtZW50VHlwZSA9IHRoaXMuZG9jdW1lbnRUeXBlIHx8IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLm90aGVyO1xyXG4gICAgbGluay5pY29uID0gdGhpcy5kb2N1bWVudEljb25zW2xpbmsuZG9jdW1lbnRUeXBlXTtcclxuICAgIGxpbmsuY29udGVudCA9ICcnO1xyXG4gICAgc3dpdGNoICh0aGlzLmRvY3VtZW50VHlwZSkge1xyXG4gICAgICBjYXNlIFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmRvY3VtZW50OlxyXG4gICAgICAgIGxpbmsudXJsID0gYCR7Q0tFZGl0b3JMaW5rQ29uc3QuRE9DVU1FTlRfUEFSVElBTF9VUkx9JHt0aGlzLmxpbmtJZH0jJHt0aGlzLmFuY2hvckJ5TmFtZX1gO1xyXG4gICAgICAgIGxpbmsuY29udGVudCA9IGAke3RoaXMuTEFORy5RTVNDS0VESVRPUi5JRH06ICR7dGhpcy5saW5rSWR9YDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5wcm9jZXNzOlxyXG4gICAgICAgIGxpbmsuY29udGVudCA9IGAke3RoaXMuTEFORy5RTVNDS0VESVRPUi5JRH06ICR7dGhpcy5saW5rSWR9YDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5hcmVhOlxyXG4gICAgICAgIGxpbmsuY29udGVudCA9IGAke3RoaXMuTEFORy5RTVNDS0VESVRPUi5JRH06ICR7dGhpcy5saW5rSWR9YDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5mb2xkZXI6XHJcbiAgICAgICAgbGluay5jb250ZW50ID0gYCR7dGhpcy5MQU5HLlFNU0NLRURJVE9SLklEfTogJHt0aGlzLmxpbmtJZH1gO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxpbms7XHJcbiAgfVxyXG5cclxuICBvblNhdmVBc1RlbXBsYXRlKCkge1xyXG4gICAgY29uc3QgZ3JhcGggPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuR1JBUEhdO1xyXG4gICAgY29uc3QganNvbkNvbnRlbnQgPSBKU09OLnN0cmluZ2lmeShncmFwaC50b0pTT04oKSk7XHJcbiAgICBsZXQgdGVtcGxhdGUgPSBuZXcgUU1TQ0tFZGl0b3JCcG1uKCk7XHJcbiAgICB0ZW1wbGF0ZSA9IHtcclxuICAgICAgaWQ6IGd1aWRIZWxwZXIuZW1wdHksXHJcbiAgICAgIGpzb25Db250ZW50OiBqc29uQ29udGVudCxcclxuICAgICAgaXNUZW1wbGF0ZTogdHJ1ZSxcclxuICAgICAgdGVtcGxhdGVOYW1lOiAnJ1xyXG4gICAgfVxyXG4gICAgbGV0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JTYXZlQXNUZW1wbGF0ZSgpO1xyXG4gICAgZGF0YS50ZW1wbGF0ZVR5cGUgPSBDS0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfQlBNTjtcclxuICAgIGRhdGEuYnBtbiA9IHRlbXBsYXRlO1xyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFNhdmVUZW1wbGF0ZUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzQ1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnMjIwcHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgLy8gVERPXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ZWRUZW1wbGF0ZSgpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkSnNvbkNvbnRlbnQgPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0VMRUNURURfSlNPTl9DT05URU5UXTtcclxuICAgIGlmIChzZWxlY3RlZEpzb25Db250ZW50KSB7XHJcbiAgICAgIGNvbnN0IGdyYXBoID0gd2luZG93W0Zsb3dDaGFydENvbnN0LkdSQVBIXTtcclxuICAgICAgaWYgKGdyYXBoKSB7XHJcbiAgICAgICAgZ3JhcGguZnJvbUpTT04oSlNPTi5wYXJzZShzZWxlY3RlZEpzb25Db250ZW50KSk7XHJcbiAgICAgIH1cclxuICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0Lk1ZX0NFTExfVklFV10gPSBudWxsO1xyXG4gICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0VMRUNURURfU0hBUEVfSURdID0gJyc7XHJcbiAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5TSEFQRV9UWVBFXSA9ICcnO1xyXG4gICAgICB0aGlzLm9uU2VsZXRlZENlbGxWaWV3KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkRlbGV0ZVRlbXBsYXRlKHRpdGxlOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgZGF0YTogUU1TQ0tFZGl0b3JEaWFsb2dEYXRhID0gbmV3IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSgpO1xyXG4gICAgZGF0YS50aXRsZSA9IHRpdGxlO1xyXG4gICAgZGF0YS5jb250ZW50ID0gY29udGVudDtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JDb25maXJtQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnNTAwcHgnLFxyXG4gICAgICBtaW5IZWlnaHQ6ICcxNzVweCcsXHJcbiAgICAgIGRhdGFcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU2VsZXRlZENlbGxWaWV3KCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENlbGxWaWV3ID0gd2luZG93W0Zsb3dDaGFydENvbnN0Lk1ZX0NFTExfVklFV107XHJcbiAgICB0aGlzLmluaXRMaW5rKCk7XHJcbiAgICBpZiAoISF0aGlzLnNlbGVjdGVkQ2VsbFZpZXcpIHtcclxuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHRoaXMuc2VsZWN0ZWRDZWxsVmlldy5tb2RlbC5hdHRyaWJ1dGVzO1xyXG4gICAgICBjb25zdCBleGNsdWRlZFR5cGVzID0gWydicG1uMi5GbG93JywgJ2JwbW4yLkhlYWRlcmVkUG9vbCcsICdicG1uMi5Db252ZXJzYXRpb25MaW5rJywgJ2JwbW4yLkFubm90YXRpb25MaW5rJywgJ2JwbW4yLkRhdGFBc3NvY2lhdGlvbiddO1xyXG4gICAgICBpZiAoIWF0dHJpYnV0ZXMudHlwZSB8fCBleGNsdWRlZFR5cGVzLmZpbmRJbmRleCh0eXBlID0+IHR5cGUudG9Mb3dlckNhc2UoKSA9PSBhdHRyaWJ1dGVzLnR5cGUudG9Mb3dlckNhc2UoKSkgPiAtMSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDZWxsVmlldyA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5saW5rVXJsID0gYXR0cmlidXRlcy5saW5rVXJsIHx8ICcnO1xyXG4gICAgICAgIGlmICghIXRoaXMubGlua1VybCkge1xyXG4gICAgICAgICAgdGhpcy5wYXJzZUxpbmtVcmwodGhpcy5saW5rVXJsKTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYXJnZXQgPSBhdHRyaWJ1dGVzLmxpbmtUYXJnZXQ7XHJcbiAgICAgICAgICB0aGlzLmxpbmtUaXRsZSA9IGF0dHJpYnV0ZXMubGlua1RpdGxlO1xyXG4gICAgICAgICAgdGhpcy5saW5rID0gdGhpcy5idWlsZExpbmsoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVGFiQ2hhbmdlKCRldmVudDogTWF0VGFiQ2hhbmdlRXZlbnQpIHtcclxuICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5UQUJfTkFNRV0gPSAkZXZlbnQudGFiLnRleHRMYWJlbDtcclxuICAgIGlmICgkZXZlbnQudGFiLnRleHRMYWJlbCA9PSB0aGlzLkxBTkcuQlBNTi5QUk9QRVJUSUVTKSB7XHJcbiAgICAgIHRoaXMuYm1wblNlcnZpY2Uub3BlblNoYXBlRnVuY3Rpb25hbGl0eSh0aGlzLkxBTkcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcGFyc2VMaW5rVXJsKHVybDogc3RyaW5nKSB7XHJcbiAgICBpZiAoISF1cmwpIHtcclxuICAgICAgY29uc3QgaGFzaEluZGV4ID0gdXJsLmluZGV4T2YoJyMnKTtcclxuICAgICAgdGhpcy5kb2N1bWVudFR5cGUgPSB0aGlzLmdldERvY3VtZW50VHlwZSh1cmwpO1xyXG4gICAgICB0aGlzLmxpbmtJY29uID0gdGhpcy5kb2N1bWVudEljb25zW3RoaXMuZG9jdW1lbnRUeXBlXTtcclxuICAgICAgdGhpcy5saW5rSWQgPSB0aGlzLmdldExpbmtJZCh1cmwsIHRoaXMuZG9jdW1lbnRUeXBlKTtcclxuICAgICAgaWYgKCEhdGhpcy5saW5rSWQgJiYgdGhpcy5kb2N1bWVudFR5cGUgPT0gUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuZG9jdW1lbnQgJiYgaGFzaEluZGV4ID4gLTEpIHtcclxuICAgICAgICB0aGlzLmFuY2hvckJ5TmFtZSA9IHVybC5zdWJzdHIoaGFzaEluZGV4ICsgMSwgdXJsLmxlbmd0aCAtIGhhc2hJbmRleCk7XHJcbiAgICAgICAgdGhpcy5nZXRBbmNob3JEb2N1bWVudCh0aGlzLmxpbmtJZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFBhcnRpYWxVcmwodHlwZTogUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmRvY3VtZW50OlxyXG4gICAgICAgIHJldHVybiBDS0VkaXRvckxpbmtDb25zdC5ET0NVTUVOVF9QQVJUSUFMX1VSTDtcclxuICAgICAgY2FzZSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5wcm9jZXNzOlxyXG4gICAgICAgIHJldHVybiBDS0VkaXRvckxpbmtDb25zdC5QUk9DRVNTX1BBUlRJQUxfVVJMO1xyXG4gICAgICBjYXNlIFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmFyZWE6XHJcbiAgICAgICAgcmV0dXJuIENLRWRpdG9yTGlua0NvbnN0LkFSRUFfUEFSVElBTF9VUkw7XHJcbiAgICAgIGNhc2UgUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuZm9sZGVyOlxyXG4gICAgICAgIHJldHVybiBDS0VkaXRvckxpbmtDb25zdC5GT0xERVJfUEFSVElBTF9VUkw7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0TGlua0lkKHVybDogc3RyaW5nLCB0eXBlOiBRTVNDS0VkaXRvckRvY3VtZW50VHlwZSkge1xyXG4gICAgbGV0IHBhcnRpYWxVcmxJbmRleCA9IDA7XHJcbiAgICBsZXQgcGFydGlhbFVybExlbmd0aCA9IDA7XHJcbiAgICBsZXQgaWQgPSAnJztcclxuICAgIGxldCBmcm9tID0gMDtcclxuICAgIGxldCB1cmxMb3dlckNhc2UgPSAhIXVybCA/IHVybC50b0xvd2VyQ2FzZSgpIDogJyc7XHJcblxyXG4gICAgY29uc3QgcGFydGlhbFVybCA9IHRoaXMuZ2V0UGFydGlhbFVybCh0eXBlKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgY29uc3QgaGFzaEluZGV4ID0gdXJsTG93ZXJDYXNlLmluZGV4T2YoJyMnKTtcclxuXHJcbiAgICBpZiAoISFwYXJ0aWFsVXJsKSB7XHJcbiAgICAgIHBhcnRpYWxVcmxJbmRleCA9IHVybExvd2VyQ2FzZS5pbmRleE9mKHBhcnRpYWxVcmwpO1xyXG5cclxuICAgICAgcGFydGlhbFVybExlbmd0aCA9IHBhcnRpYWxVcmwubGVuZ3RoO1xyXG4gICAgICBmcm9tID0gcGFydGlhbFVybEluZGV4ICsgcGFydGlhbFVybExlbmd0aDtcclxuXHJcbiAgICAgIGlmICh0eXBlID09IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmRvY3VtZW50ICYmIGhhc2hJbmRleCA+IC0xKSB7XHJcbiAgICAgICAgaWQgPSB1cmxMb3dlckNhc2Uuc3Vic3RyKGZyb20sIGhhc2hJbmRleCAtIGZyb20pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IHVybExvd2VyQ2FzZS5zdWJzdHIoZnJvbSkuaW5kZXhPZignLycpO1xyXG4gICAgICAgIGlmIChsZW5ndGggPCAwKSB7XHJcbiAgICAgICAgICBpZCA9IHVybExvd2VyQ2FzZS5zdWJzdHIoZnJvbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWQgPSB1cmxMb3dlckNhc2Uuc3Vic3RyKGZyb20sIGxlbmd0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGUgPT0gUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuZG9jdW1lbnQpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBwYXJzZUludChpZCwgMTApO1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIHtcclxuICAgICAgICBpZCA9ICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaWQ7XHJcbiAgfVxyXG5cclxuICBnZXREb2N1bWVudFR5cGUodXJsOiBzdHJpbmcpIHtcclxuICAgIGlmICh1cmwuaW5kZXhPZihDS0VkaXRvckxpbmtDb25zdC5ET0NVTUVOVF9QQVJUSUFMX1VSTCkgPiAtMSkge1xyXG4gICAgICByZXR1cm4gUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuZG9jdW1lbnQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh1cmwuaW5kZXhPZihDS0VkaXRvckxpbmtDb25zdC5QUk9DRVNTX1BBUlRJQUxfVVJMKSA+IC0xKSB7XHJcbiAgICAgIHJldHVybiBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5wcm9jZXNzO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodXJsLmluZGV4T2YoQ0tFZGl0b3JMaW5rQ29uc3QuQVJFQV9QQVJUSUFMX1VSTCkgPiAtMSkge1xyXG4gICAgICByZXR1cm4gUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuYXJlYTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHVybC5pbmRleE9mKENLRWRpdG9yTGlua0NvbnN0LkZPTERFUl9QQVJUSUFMX1VSTCkgPiAtMSkge1xyXG4gICAgICByZXR1cm4gUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuZm9sZGVyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLm90aGVyO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ2VsbFZpZXdWYWx1ZXMoKSB7XHJcbiAgICBpZiAoISF0aGlzLnNlbGVjdGVkQ2VsbFZpZXcpIHtcclxuICAgICAgdGhpcy5saW5rID0gdGhpcy5idWlsZExpbmsoKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZENlbGxWaWV3Lm1vZGVsLnByb3AoJ2xpbmtVcmwnLCB0aGlzLmxpbmsudXJsKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZENlbGxWaWV3Lm1vZGVsLnByb3AoJ2xpbmtUYXJnZXQnLCB0aGlzLmxpbmsudGFyZ2V0KTtcclxuICAgICAgdGhpcy5zZWxlY3RlZENlbGxWaWV3Lm1vZGVsLnByb3AoJ2xpbmtUaXRsZScsIHRoaXMubGluay50aXRsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblJlc2V0VGVtcGxhdGUoKSB7XHJcbiAgICBjb25zdCBvZ3JKc29uQ29udGVudCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5PUkdfSlNPTkNPTlRFTlRdO1xyXG4gICAgaWYgKG9nckpzb25Db250ZW50KSB7XHJcbiAgICAgIGNvbnN0IGdyYXBoID0gd2luZG93W0Zsb3dDaGFydENvbnN0LkdSQVBIXTtcclxuICAgICAgaWYgKGdyYXBoKSB7XHJcbiAgICAgICAgZ3JhcGguZnJvbUpTT04oSlNPTi5wYXJzZShvZ3JKc29uQ29udGVudCkpO1xyXG4gICAgICAgIHRoaXMuYm1wblNlcnZpY2Uuc2V0RGVmYXVsdFNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuSVNfU0VMRUNURURfVEVNUExBVEVdID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0Lk1ZX0NFTExfVklFV10gPSBudWxsO1xyXG4gICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0VMRUNURURfU0hBUEVfSURdID0gJyc7XHJcbiAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5TSEFQRV9UWVBFXSA9ICcnO1xyXG4gICAgICB0aGlzLm9uU2VsZXRlZENlbGxWaWV3KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93Q29uZmlybURpYWxvZyh0aXRsZTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIGlzTWVzc2FnZTogYm9vbGVhbiwgY2FsbGJhY2s/OiAocmVzdWx0PzogYW55KSA9PiB2b2lkKSB7XHJcbiAgICBjb25zdCBkYXRhOiBRTVNDS0VkaXRvckRpYWxvZ0RhdGEgPSBuZXcgUU1TQ0tFZGl0b3JEaWFsb2dEYXRhKCk7XHJcbiAgICBkYXRhLnRpdGxlID0gdGl0bGU7XHJcbiAgICBkYXRhLmNvbnRlbnQgPSBjb250ZW50O1xyXG4gICAgZGF0YS5pc01lc3NhZ2UgPSBpc01lc3NhZ2U7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yQ29uZmlybUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzUwMHB4JyxcclxuICAgICAgbWluSGVpZ2h0OiAnMTc1cHgnLFxyXG4gICAgICBkYXRhXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1JlZlxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAoY2FsbGJhY2spIHtcclxuICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHRvSW1hZ2VNYXAoaWQ6IGFueSwgY2VsbHM6IGFueVtdLCBjbGllbnRSZWN0OiBhbnkpIHtcclxuICAgIGNvbnN0IG1hcCA9IHsgbmFtZTogaWQsIGlkOiBpZCwgYXJlYXM6IFtdLCBpbWFnZUhlaWdodDogMCwgaW1hZ2VXaWR0aDogMCB9O1xyXG4gICAgbWFwLmltYWdlSGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQ7XHJcbiAgICBtYXAuaW1hZ2VXaWR0aCA9IGNsaWVudFJlY3Qud2lkdGg7XHJcbiAgICBpZiAoY2VsbHMgJiYgY2VsbHMubGVuZ3RoICE9IDApIHtcclxuICAgICAgdmFyIGlzVmVydGljYWxQb29sID0gZmFsc2U7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2VsbHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgc2hhcGUgPSBjZWxsc1tpXTtcclxuICAgICAgICBsZXQgc2l6ZSA9IHNoYXBlWydzaXplJ10gfHwgeyB3aWR0aDogMCwgaGVpZ2h0OiAwIH07XHJcbiAgICAgICAgbGV0IGJib3ggPSBzaGFwZVsnYmJveCddIHx8IHsgeDogMCwgeTogMCB9O1xyXG4gICAgICAgIGxldCBwb3NpdGlvbiA9IHNoYXBlWydwb3NpdGlvbiddIHx8IHsgeDogMCwgeTogMCB9O1xyXG4gICAgICAgIGJib3gueCA9IHBvc2l0aW9uLng7XHJcbiAgICAgICAgYmJveC55ID0gcG9zaXRpb24ueTtcclxuICAgICAgICBiYm94LndpZHRoID0gc2l6ZS53aWR0aDtcclxuICAgICAgICBiYm94LmhlaWdodCA9IHNpemUuaGVpZ2h0O1xyXG4gICAgICAgIHNoYXBlWydiYm94J10gPSBiYm94O1xyXG4gICAgICAgIHNoYXBlWydhZGRpdGlvbmFsV2lkdGgnXSA9IChiYm94LndpZHRoID4gc2l6ZS53aWR0aCkgPyAoYmJveC53aWR0aCAtIHNpemUud2lkdGgpIDogMDtcclxuICAgICAgfVxyXG4gICAgICB2YXIgb2Zmc2V0WCA9IHRoaXMuZ2V0TWluWE9mZnNldChjZWxscyk7XHJcbiAgICAgIHZhciBvZmZzZXRZID0gdGhpcy5nZXRNaW5ZT2Zmc2V0KGNlbGxzKTtcclxuXHJcbiAgICAgIHZhciBhZGRpdGlvbmFsT2Zmc2V0WSA9IDA7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2VsbHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgc2hhcGUgPSBjZWxsc1tpXTtcclxuICAgICAgICBsZXQgaHJlZiA9IHNoYXBlLmxpbmtVcmw7XHJcbiAgICAgICAgbGV0IHRhcmdldCA9IHNoYXBlLmxpbmtUYXJnZXQ7XHJcbiAgICAgICAgbGV0IGFsdCA9IHNoYXBlLmxpbmtUaXRsZTtcclxuXHJcbiAgICAgICAgaWYgKHNoYXBlLnR5cGUgPT0gJ2JwbW4yLlBvb2wnIHx8IHNoYXBlLnR5cGUgPT0gJ2JwbW4yLkhlYWRlcmVkUG9vbCcpIHtcclxuICAgICAgICAgIGFkZGl0aW9uYWxPZmZzZXRZID0gKHNoYXBlLmFkZGl0aW9uYWxXaWR0aCAvIDIpO1xyXG4gICAgICAgICAgaXNWZXJ0aWNhbFBvb2wgPSAoc2hhcGUudHlwZSA9PSAnYnBtbjIuUG9vbCcgfHwgc2hhcGUudHlwZSA9PSAnYnBtbjIuSGVhZGVyZWRQb29sJykgJiYgc2hhcGUuYW5nbGUgIT0gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCEhaHJlZiAmJiBocmVmLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHZhciBzaXplID0gc2hhcGVbJ3NpemUnXSB8fCB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfTtcclxuICAgICAgICAgIHZhciBiYm94ID0gc2hhcGVbJ2Jib3gnXSB8fCB7IHg6IDAsIHk6IDAgfTtcclxuICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHNoYXBlWydwb3NpdGlvbiddIHx8IHsgeDogMCwgeTogMCB9O1xyXG4gICAgICAgICAgYmJveC54ID0gcG9zaXRpb24ueDtcclxuICAgICAgICAgIGJib3gueSA9IHBvc2l0aW9uLnk7XHJcbiAgICAgICAgICBiYm94LndpZHRoID0gc2l6ZS53aWR0aDtcclxuICAgICAgICAgIGJib3guaGVpZ2h0ID0gc2l6ZS5oZWlnaHQ7XHJcbiAgICAgICAgICB2YXIgYWRkaXRpb25hbE9mZnNldFggPSAoc2hhcGUuYWRkaXRpb25hbFdpZHRoIC8gMik7XHJcblxyXG4gICAgICAgICAgdmFyIHgxLCB5MSwgeDIsIHkyO1xyXG5cclxuICAgICAgICAgIGlmIChzaGFwZS5pbmNsdWRlVGV4dEluQ2xpY2thYmxlQXJlYSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHgxID0gKGJib3gueCAtIG9mZnNldFggLSBhZGRpdGlvbmFsT2Zmc2V0WCk7XHJcbiAgICAgICAgICAgIHkxID0gKGJib3gueSAtIG9mZnNldFkpO1xyXG4gICAgICAgICAgICB4MiA9ICh4MSArIHNoYXBlLmJib3gud2lkdGggLSAxKTtcclxuICAgICAgICAgICAgeTIgPSAoeTEgKyBzaGFwZS5iYm94LmhlaWdodCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YXIgdHJhbnNmb3JtWCA9IG9mZnNldFgsIHRyYW5zZm9ybVkgPSBvZmZzZXRZO1xyXG4gICAgICAgICAgICBpZiAob2Zmc2V0WCA8IDAgJiYgaXNWZXJ0aWNhbFBvb2wpIHtcclxuICAgICAgICAgICAgICB0cmFuc2Zvcm1YID0gb2Zmc2V0WCArIHNpemUuaGVpZ2h0O1xyXG4gICAgICAgICAgICAgIHRyYW5zZm9ybVkgPSBvZmZzZXRZIC0gc2l6ZS5oZWlnaHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG9mZnNldFkgPCAwICYmIGlzVmVydGljYWxQb29sKSB7XHJcbiAgICAgICAgICAgICAgdHJhbnNmb3JtWSA9IG9mZnNldFkgKyBhZGRpdGlvbmFsT2Zmc2V0WTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB4MSA9IChiYm94LnggLSB0cmFuc2Zvcm1YKTtcclxuICAgICAgICAgICAgeTEgPSAoYmJveC55IC0gdHJhbnNmb3JtWSk7XHJcbiAgICAgICAgICAgIHgyID0gKHgxICsgc2l6ZS53aWR0aCAtIDEpO1xyXG4gICAgICAgICAgICB5MiA9ICh5MSArIHNpemUuaGVpZ2h0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBjb29yZHMgPSBgJHt4MX0sJHt5MX0sJHt4Mn0sJHt5Mn1gO1xyXG4gICAgICAgICAgc3dpdGNoIChzaGFwZS50eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ2JwbW4yLkFjdGl2aXR5JzpcclxuICAgICAgICAgICAgY2FzZSAnYnBtbjIuR2F0ZXdheSc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2JwbW4yLkV2ZW50JzpcclxuICAgICAgICAgICAgY2FzZSAnYnBtbjIuQ29udmVyc2F0aW9uJzpcclxuICAgICAgICAgICAgY2FzZSAnYnBtbjIuRGF0YU9iamVjdCc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2JwbW4yLkRhdGFTdG9yZSc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2JwbW4uQ2hvcmVvZ3JhcGh5JzpcclxuICAgICAgICAgICAgY2FzZSAnYnBtbi5NZXNzYWdlJzpcclxuICAgICAgICAgICAgICBtYXAuYXJlYXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBzaGFwZTogJ3JlY3QnLFxyXG4gICAgICAgICAgICAgICAgY29vcmRzOiBjb29yZHMsXHJcbiAgICAgICAgICAgICAgICBocmVmOiBocmVmLFxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiB0YXJnZXQsXHJcbiAgICAgICAgICAgICAgICBhbHQ6IGFsdFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgIG1hcC5hcmVhcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHNoYXBlOiAncmVjdCcsXHJcbiAgICAgICAgICAgICAgICBjb29yZHM6IGNvb3JkcyxcclxuICAgICAgICAgICAgICAgIGhyZWY6IGhyZWYsXHJcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHRhcmdldCxcclxuICAgICAgICAgICAgICAgIGFsdDogYWx0XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWFwO1xyXG4gIH1cclxuXHJcbiAgZ2V0TWluWE9mZnNldChzaGFwZXMpIHtcclxuICAgIHZhciBmaWx0ZXJTaGFwZXMgPSBzaGFwZXMuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XHJcbiAgICAgIHJldHVybiBzLnR5cGUgIT09ICdicG1uMi5GbG93J1xyXG4gICAgICAgICYmIHMudHlwZSAhPSAnYnBtbjIuQ29udmVyc2F0aW9uTGluaydcclxuICAgICAgICAmJiBzLnR5cGUgIT0gJ2JwbW4yLkRhdGFBc3NvY2lhdGlvbidcclxuICAgICAgICAmJiBzLnR5cGUgIT0gJ2JwbW4yLkFubm90YXRpb25MaW5rJ1xyXG4gICAgfSk7XHJcblxyXG4gICAgdmFyIG1pblZhbHVlO1xyXG4gICAgdmFyIG1pbk9iamVjdDtcclxuXHJcbiAgICBpZiAoIWZpbHRlclNoYXBlcyB8fCAhZmlsdGVyU2hhcGVzLmxlbmd0aCkge1xyXG4gICAgICBtaW5WYWx1ZSA9IHRoaXMuZ2V0WFBvc2l0aW9uKHNoYXBlc1swXSk7XHJcbiAgICAgIG1pbk9iamVjdCA9IHNoYXBlc1swXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG1pblZhbHVlID0gdGhpcy5nZXRYUG9zaXRpb24oZmlsdGVyU2hhcGVzWzBdKTtcclxuICAgICAgbWluT2JqZWN0ID0gZmlsdGVyU2hhcGVzWzBdO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgZmlsdGVyU2hhcGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHZhciB4UG9zaXRpb24gPSB0aGlzLmdldFhQb3NpdGlvbihmaWx0ZXJTaGFwZXNbaV0pO1xyXG4gICAgICBpZiAoeFBvc2l0aW9uIDwgbWluVmFsdWUpIHtcclxuICAgICAgICBtaW5WYWx1ZSA9IHhQb3NpdGlvbjtcclxuICAgICAgICBtaW5PYmplY3QgPSBmaWx0ZXJTaGFwZXNbaV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgcmV0dXJuIG1pblZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0WFBvc2l0aW9uKHNoYXBlKSB7XHJcbiAgICByZXR1cm4gc2hhcGUuYmJveC54IC0gKHNoYXBlLmFkZGl0aW9uYWxXaWR0aCAvIDIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0WVBvc2l0aW9uKHNoYXBlKSB7XHJcbiAgICByZXR1cm4gc2hhcGUuYmJveC55IC0gKHNoYXBlLmFkZGl0aW9uYWxXaWR0aCAvIDIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TWluWU9mZnNldChzaGFwZXMpIHtcclxuICAgIHZhciBmaWx0ZXJTaGFwZXMgPSBzaGFwZXMuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XHJcbiAgICAgIHJldHVybiBzLnR5cGUgIT09ICdicG1uMi5GbG93J1xyXG4gICAgICAgICYmIHMudHlwZSAhPSAnYnBtbjIuQ29udmVyc2F0aW9uTGluaydcclxuICAgICAgICAmJiBzLnR5cGUgIT0gJ2JwbW4yLkRhdGFBc3NvY2lhdGlvbidcclxuICAgICAgICAmJiBzLnR5cGUgIT0gJ2JwbW4yLkFubm90YXRpb25MaW5rJ1xyXG4gICAgfSk7XHJcbiAgICB2YXIgbWluVmFsdWU7XHJcbiAgICB2YXIgbWluT2JqZWN0O1xyXG5cclxuICAgIGlmICghZmlsdGVyU2hhcGVzIHx8ICFmaWx0ZXJTaGFwZXMubGVuZ3RoKSB7XHJcbiAgICAgIG1pblZhbHVlID0gc2hhcGVzWzBdLmJib3gueTtcclxuICAgICAgbWluT2JqZWN0ID0gc2hhcGVzWzBdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbWluVmFsdWUgPSBmaWx0ZXJTaGFwZXNbMF0uYmJveC55O1xyXG4gICAgICBtaW5PYmplY3QgPSBmaWx0ZXJTaGFwZXNbMF07XHJcbiAgICB9XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBmaWx0ZXJTaGFwZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdmFyIHlQb3NpdGlvbiA9IHRoaXMuZ2V0WVBvc2l0aW9uKGZpbHRlclNoYXBlc1tpXSk7XHJcbiAgICAgIGlmICh5UG9zaXRpb24gPCBtaW5WYWx1ZSkge1xyXG4gICAgICAgIG1pblZhbHVlID0geVBvc2l0aW9uO1xyXG4gICAgICAgIG1pbk9iamVjdCA9IGZpbHRlclNoYXBlc1tpXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1pblZhbHVlO1xyXG4gIH07XHJcbn1cclxuIl19
|
783
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWJwbW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1icG1uL3Ftcy1ja2VkaXRvci1icG1uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDaEYsT0FBTyxVQUFVLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN2RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDbkcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDckcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDckcsT0FBTyxtQkFBbUIsTUFBTSxrREFBa0QsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUVoRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFakYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFvQnBFLE1BQU0sS0FBSztJQU9UO1FBQ0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxDQUFDO1FBQ2xELElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNwQixDQUFDO0NBQ0Y7QUFPRCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsd0JBQXdCO0lBK0JwRSxZQUNVLE1BQWlCLEVBQ2pCLFNBQWtDLEVBQ2xDLFdBQXdCLEVBQ3hCLGNBQXlDLEVBQ3pDLFdBQW1DLEVBQ25DLGFBQXVDLEVBQ3hDLFNBQWlELEVBQ3hCLElBQXlCO1FBRXpELEtBQUssRUFBRSxDQUFDO1FBVEEsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUF5QjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBMkI7UUFDekMsZ0JBQVcsR0FBWCxXQUFXLENBQXdCO1FBQ25DLGtCQUFhLEdBQWIsYUFBYSxDQUEwQjtRQUN4QyxjQUFTLEdBQVQsU0FBUyxDQUF3QztRQUN4QixTQUFJLEdBQUosSUFBSSxDQUFxQjtRQXBDM0Qsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsT0FBRSxHQUFHLEVBQUUsQ0FBQztRQUVSLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUVuQixTQUFJLEdBQW9CLElBQUksZUFBZSxFQUFFLENBQUM7UUFDOUMsaUJBQVksR0FBOEIsRUFBRSxDQUFDO1FBSTdDLFlBQU8sR0FBYyxFQUFFLENBQUM7UUFDeEIsb0JBQWUsR0FBc0IsRUFBRSxDQUFDO1FBRXhDLG1CQUFjLEdBQW1CLGNBQWMsQ0FBQyxHQUFHLENBQUM7UUFDcEQsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsV0FBTSxHQUFXLEVBQUUsQ0FBQztRQUNwQixpQkFBWSxHQUE0Qix1QkFBdUIsQ0FBQyxLQUFLLENBQUM7UUFtQnBFLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUMxQyxDQUFDO0lBR0QsU0FBUyxDQUFDLEtBQUs7UUFDYixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLGdCQUFnQixFQUFFO1lBQ2xELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQ3pCO2FBQ0ksSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxlQUFlLEVBQUU7WUFDdEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHVCQUF1QixDQUFDLENBQUM7U0FDOUc7YUFDSSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLG9CQUFvQixFQUFFO1lBQzNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDMUc7YUFDSSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLGlCQUFpQixFQUFFO1lBQ3hELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQzNCO2FBQ0ksSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxjQUFjLEVBQUU7WUFDckQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO2FBQ0ksSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRTtZQUN4RCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFFSyxRQUFROztZQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDdEYsSUFBSSxHQUFHLEVBQUU7b0JBQ1AsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDL0M7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDOUMsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFO2dCQUNYLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN2RDtZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUMzQixJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLEVBQ0osa0JBQWtCLENBQUMsVUFBVSxFQUM3QixJQUFJLENBQUMsV0FBVyxFQUNoQixDQUFDLEVBQ0QsSUFBSSxDQUFDLElBQUksQ0FDVixDQUFDO1lBQ0YsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNsQixDQUFDO0tBQUE7SUFFRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLGNBQWMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDdkYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztTQUN6RjtJQUNILENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLDRCQUE0QixDQUFDLGlCQUFpQixFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDaEksSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsNEJBQTRCLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1NBQ3BIO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLEdBQUcsY0FBYyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLEdBQUcsY0FBYyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQzVELElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQzlELElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLEdBQUcsY0FBYyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFlBQVksR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2pFLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQztRQUN6QyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUN4RSxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdELE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNqRSxJQUFJLFlBQVksRUFBRTtZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDdkIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Z0JBQ3ZDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztnQkFDbkMsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO2dCQUN4QyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7Z0JBQ3BDLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQzthQUN2QztTQUNGO0lBQ0gsQ0FBQztJQUVLLFlBQVk7O1lBQ2hCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLGNBQWM7cUJBQ2hCLGdCQUFnQixFQUFFO3FCQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztxQkFDbEMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQ3BCLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbEIsQ0FBQyxDQUFDLENBQUE7WUFDTixDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7S0FBQTtJQUVLLGNBQWMsQ0FBQyxFQUFVOztZQUM3QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxjQUFjO3FCQUNoQixXQUFXLENBQUMsRUFBRSxDQUFDO3FCQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO3FCQUNsQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDcEIsSUFBSSxNQUFNLEVBQUU7d0JBQ1YsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztxQkFDN0I7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7S0FBQTtJQUVLLGdCQUFnQixDQUFDLFdBQVc7O1lBQ2hDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDN0IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLElBQUksR0FBRztvQkFDVixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUs7b0JBQ3hDLFdBQVcsRUFBRSxXQUFXO29CQUN4QixVQUFVLEVBQUUsS0FBSztvQkFDakIsWUFBWSxFQUFFLEVBQUU7aUJBQ2pCLENBQUE7Z0JBRUQsSUFBSSxDQUFDLGNBQWM7cUJBQ2hCLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO3FCQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztxQkFDbEMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQ3BCLElBQUksTUFBTSxFQUFFO3dCQUNWLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztxQkFDakI7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7S0FBQTtJQUVLLGVBQWUsQ0FBQyxLQUFVOztZQUM5QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQzdCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtvQkFDeEIsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDdkMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUFBO0lBRUssYUFBYTs7WUFDakIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQ2xFLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQyxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNwRCxNQUFNLFlBQVksR0FBRyx3QkFBd0IsSUFBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQztZQUNsRixNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN4RixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzNFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDcEUsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUE7WUFDekcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsQ0FBQztLQUFBO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUM3QyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztRQUN2RCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsSUFBSSw0QkFBNEIsQ0FBQyxpQkFBaUIsRUFBRTtZQUNqRixLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUM7WUFDbEQsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsa0NBQWtDLENBQUM7U0FDNUU7UUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN0RCxJQUFJLEtBQUssRUFBRTtnQkFDVCxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxRQUFRLElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsRUFBRTtvQkFDNUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7aUJBQ2xCO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDbEQsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtDQUFrQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7Z0JBQ3JJLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTztTQUNSO1FBQ0QsUUFBUSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQzNCLEtBQUssNEJBQTRCLENBQUMsaUJBQWlCO2dCQUNqRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9CLE1BQU07WUFDUixLQUFLLDRCQUE0QixDQUFDLFVBQVU7Z0JBQzFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFBO2dCQUMzQixNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxjQUF1QjtRQUN4QyxNQUFNLElBQUksR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLGNBQWMsQ0FBQztRQUN0QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRTtZQUNuRSxLQUFLLEVBQUUsT0FBTztZQUNkLE1BQU0sRUFBRSxPQUFPO1lBQ2YsSUFBSTtZQUNKLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztRQUNILGNBQWM7YUFDWCxXQUFXLEVBQUU7YUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNsQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNwQixJQUFJLE1BQU0sRUFBRTtnQkFDVixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLHVCQUF1QixDQUFDLFFBQVEsRUFBRTtvQkFDbkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDO29CQUNqRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUNuQztxQkFDSTtvQkFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7b0JBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO3dCQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7cUJBQy9CO2lCQUNGO2dCQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQztnQkFDekMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDN0I7WUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDOUIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUU7WUFDL0QsS0FBSyxFQUFFLE9BQU87WUFDZCxNQUFNLEVBQUUsT0FBTztZQUNmLElBQUk7WUFDSixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7UUFDSCxjQUFjO2FBQ1gsV0FBVyxFQUFFO2FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFlBQVksR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztpQkFDL0I7Z0JBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQzthQUM3QjtZQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGlCQUFpQixDQUFDLFVBQVU7UUFDMUIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVzthQUNiLHFCQUFxQixDQUFDLFVBQVUsQ0FBQzthQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNsQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxjQUErQztRQUNwRSxNQUFNLE9BQU8sR0FBYyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN4RixJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDWCxJQUFJLGNBQWMsRUFBRTtZQUNsQixjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQzNCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztnQkFDM0IsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDO2dCQUN2QixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ25ELElBQUksS0FBSyxFQUFFO29CQUNULHlDQUF5QztvQkFDekMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3JDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDckIsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFOzRCQUNaLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQ0FDcEMsT0FBTyxDQUFDLENBQUMsV0FBVyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUM7NEJBQ3BDLENBQUMsQ0FBQyxDQUFDOzRCQUNILElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtnQ0FDYixPQUFPLENBQUMsSUFBSSxDQUFDO29DQUNYLEtBQUssRUFBRSxFQUFFO29DQUNULFNBQVMsRUFBRSxHQUFHLENBQUMsSUFBSTtvQ0FDbkIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxJQUFJO2lDQUN0QixDQUFDLENBQUM7Z0NBQ0gsRUFBRSxJQUFJLENBQUMsQ0FBQzs2QkFDVDt5QkFDRjtxQkFDRjtpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ1gsS0FBSyxFQUFFLENBQUM7WUFDUixTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCO1lBQ2xELFdBQVcsRUFBRSxVQUFVLENBQUMsVUFBVTtTQUNuQyxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ1gsS0FBSyxFQUFFLENBQUM7WUFDUixTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsdUJBQXVCO1lBQ3hELFdBQVcsRUFBRSxVQUFVLENBQUMsT0FBTztTQUNoQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSx1QkFBdUIsQ0FBQyxRQUFRLEVBQUU7WUFDMUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNyQztJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsTUFBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksdUJBQXVCLENBQUMsS0FBSyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsUUFBUSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3pCLEtBQUssdUJBQXVCLENBQUMsUUFBUTtnQkFDbkMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUMxRixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDN0QsTUFBTTtZQUNSLEtBQUssdUJBQXVCLENBQUMsT0FBTztnQkFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzdELE1BQU07WUFDUixLQUFLLHVCQUF1QixDQUFDLElBQUk7Z0JBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM3RCxNQUFNO1lBQ1IsS0FBSyx1QkFBdUIsQ0FBQyxNQUFNO2dCQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDN0QsTUFBTTtTQUNUO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELElBQUksUUFBUSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDckMsUUFBUSxHQUFHO1lBQ1QsRUFBRSxFQUFFLFVBQVUsQ0FBQyxLQUFLO1lBQ3BCLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFlBQVksRUFBRSxFQUFFO1NBQ2pCLENBQUE7UUFDRCxJQUFJLElBQUksR0FBRyxJQUFJLHlCQUF5QixFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLENBQUM7UUFDbEQsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDckIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDN0QsS0FBSyxFQUFFLE9BQU87WUFDZCxNQUFNLEVBQUUsT0FBTztZQUNmLElBQUk7WUFDSixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7UUFDSCxjQUFjO2FBQ1gsV0FBVyxFQUFFO2FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsTUFBTTthQUNQO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pFLElBQUksbUJBQW1CLEVBQUU7WUFDdkIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQyxJQUFJLEtBQUssRUFBRTtnQkFDVCxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO2FBQ2pEO1lBQ0QsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDM0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM5QyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFhLEVBQUUsT0FBZTtRQUM3QyxNQUFNLElBQUksR0FBMEIsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDJCQUEyQixFQUFFO1lBQzlELEtBQUssRUFBRSxPQUFPO1lBQ2QsU0FBUyxFQUFFLE9BQU87WUFDbEIsSUFBSTtTQUNMLENBQUMsQ0FBQztRQUNILFNBQVM7YUFDTixXQUFXLEVBQUU7YUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNsQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNwQixJQUFJLE1BQU0sRUFBRTthQUVYO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUMzQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztZQUMxRCxNQUFNLGFBQWEsR0FBRyxDQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSxzQkFBc0IsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBQ3RJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNqSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2FBQzlCO2lCQUNJO2dCQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNoQyxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUM7b0JBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7aUJBQzlCO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsTUFBeUI7UUFDbkMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUN2RCxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNyRCxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsR0FBVztRQUN0QixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUU7WUFDVCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSx1QkFBdUIsQ0FBQyxRQUFRLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUM1RixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3JDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQTZCO1FBQ3pDLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyx1QkFBdUIsQ0FBQyxRQUFRO2dCQUNuQyxPQUFPLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDO1lBQ2hELEtBQUssdUJBQXVCLENBQUMsT0FBTztnQkFDbEMsT0FBTyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQztZQUMvQyxLQUFLLHVCQUF1QixDQUFDLElBQUk7Z0JBQy9CLE9BQU8saUJBQWlCLENBQUMsZ0JBQWdCLENBQUM7WUFDNUMsS0FBSyx1QkFBdUIsQ0FBQyxNQUFNO2dCQUNqQyxPQUFPLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDO1lBQzlDO2dCQUNFLE9BQU8sRUFBRSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVcsRUFBRSxJQUE2QjtRQUNsRCxJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDeEIsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1osSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFbEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxRCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRTtZQUNoQixlQUFlLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUVuRCxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ3JDLElBQUksR0FBRyxlQUFlLEdBQUcsZ0JBQWdCLENBQUM7WUFFMUMsSUFBSSxJQUFJLElBQUksdUJBQXVCLENBQUMsUUFBUSxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDOUQsRUFBRSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQzthQUNsRDtpQkFDSTtnQkFDSCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUNkLEVBQUUsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNoQztxQkFDSTtvQkFDSCxFQUFFLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7aUJBQ3hDO2FBQ0Y7U0FDRjtRQUVELElBQUksSUFBSSxJQUFJLHVCQUF1QixDQUFDLFFBQVEsRUFBRTtZQUM1QyxJQUFJO2dCQUNGLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7YUFDbEI7WUFDRCxXQUFNO2dCQUNKLEVBQUUsR0FBRyxFQUFFLENBQUM7YUFDVDtTQUNGO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQVc7UUFDekIsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDNUQsT0FBTyx1QkFBdUIsQ0FBQyxRQUFRLENBQUM7U0FDekM7YUFDSSxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUNoRSxPQUFPLHVCQUF1QixDQUFDLE9BQU8sQ0FBQztTQUN4QzthQUNJLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQzdELE9BQU8sdUJBQXVCLENBQUMsSUFBSSxDQUFDO1NBQ3JDO2FBQ0ksSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDL0QsT0FBTyx1QkFBdUIsQ0FBQyxNQUFNLENBQUM7U0FDdkM7UUFDRCxPQUFPLHVCQUF1QixDQUFDLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNoRTtJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5RCxJQUFJLGNBQWMsRUFBRTtZQUNsQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLElBQUksS0FBSyxFQUFFO2dCQUNULEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLHVCQUF1QixFQUFFLENBQUM7Z0JBQzNDLE1BQU0sQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsR0FBRyxLQUFLLENBQUM7YUFDckQ7WUFDRCxNQUFNLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQztZQUMzQyxNQUFNLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzlDLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWEsRUFBRSxPQUFlLEVBQUUsU0FBa0IsRUFBRSxRQUFpQztRQUNyRyxNQUFNLElBQUksR0FBMEIsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDJCQUEyQixFQUFFO1lBQzlELEtBQUssRUFBRSxPQUFPO1lBQ2QsU0FBUyxFQUFFLE9BQU87WUFDbEIsSUFBSTtTQUNMLENBQUMsQ0FBQztRQUNILFNBQVM7YUFDTixXQUFXLEVBQUU7YUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNsQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNwQixJQUFJLFFBQVEsRUFBRTtnQkFDWixRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDbEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxVQUFVLENBQUMsRUFBTyxFQUFFLEtBQVksRUFBRSxVQUFlO1FBQy9DLE1BQU0sR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDM0UsR0FBRyxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ3BDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUNsQyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUM5QixJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDM0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3JDLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckIsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BELElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixJQUFJLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUMxQixLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdEY7WUFDRCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFeEMsSUFBSSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7WUFDMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3JDLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckIsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztnQkFDekIsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztnQkFDOUIsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztnQkFFMUIsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLFlBQVksSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLG9CQUFvQixFQUFFO29CQUNwRSxpQkFBaUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ2hELGNBQWMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksWUFBWSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksb0JBQW9CLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7aUJBQ3hIO2dCQUNELElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDN0IsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQ3BELElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUMzQyxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDbkQsSUFBSSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO29CQUNwQixJQUFJLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztvQkFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO29CQUMxQixJQUFJLGlCQUFpQixHQUFHLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFFcEQsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7b0JBRW5CLElBQUksS0FBSyxDQUFDLDBCQUEwQixJQUFJLElBQUksRUFBRTt3QkFDNUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsaUJBQWlCLENBQUMsQ0FBQzt3QkFDNUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQzt3QkFDeEIsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO3dCQUNqQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztxQkFDL0I7eUJBQU07d0JBQ0wsSUFBSSxVQUFVLEdBQUcsT0FBTyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUM7d0JBQy9DLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxjQUFjLEVBQUU7NEJBQ2pDLFVBQVUsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQzs0QkFDbkMsVUFBVSxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO3lCQUNwQzt3QkFDRCxJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksY0FBYyxFQUFFOzRCQUNqQyxVQUFVLEdBQUcsT0FBTyxHQUFHLGlCQUFpQixDQUFDO3lCQUMxQzt3QkFDRCxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO3dCQUMzQixFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO3dCQUMzQixFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDM0IsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztxQkFDekI7b0JBQ0QsSUFBSSxNQUFNLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDdkMsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO3dCQUNsQixLQUFLLGdCQUFnQixDQUFDO3dCQUN0QixLQUFLLGVBQWUsQ0FBQzt3QkFDckIsS0FBSyxhQUFhLENBQUM7d0JBQ25CLEtBQUssb0JBQW9CLENBQUM7d0JBQzFCLEtBQUssa0JBQWtCLENBQUM7d0JBQ3hCLEtBQUssaUJBQWlCLENBQUM7d0JBQ3ZCLEtBQUssbUJBQW1CLENBQUM7d0JBQ3pCLEtBQUssY0FBYzs0QkFDakIsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0NBQ2IsS0FBSyxFQUFFLE1BQU07Z0NBQ2IsTUFBTSxFQUFFLE1BQU07Z0NBQ2QsSUFBSSxFQUFFLElBQUk7Z0NBQ1YsTUFBTSxFQUFFLE1BQU07Z0NBQ2QsR0FBRyxFQUFFLEdBQUc7NkJBQ1QsQ0FBQyxDQUFDOzRCQUNILE1BQU07d0JBQ1I7NEJBQ0UsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0NBQ2IsS0FBSyxFQUFFLE1BQU07Z0NBQ2IsTUFBTSxFQUFFLE1BQU07Z0NBQ2QsSUFBSSxFQUFFLElBQUk7Z0NBQ1YsTUFBTSxFQUFFLE1BQU07Z0NBQ2QsR0FBRyxFQUFFLEdBQUc7NkJBQ1QsQ0FBQyxDQUFDOzRCQUNILE1BQU07cUJBQ1Q7aUJBQ0Y7YUFDRjtTQUNGO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQU07UUFDbEIsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDMUMsT0FBTyxDQUFDLENBQUMsSUFBSSxLQUFLLFlBQVk7bUJBQ3pCLENBQUMsQ0FBQyxJQUFJLElBQUksd0JBQXdCO21CQUNsQyxDQUFDLENBQUMsSUFBSSxJQUFJLHVCQUF1QjttQkFDakMsQ0FBQyxDQUFDLElBQUksSUFBSSxzQkFBc0IsQ0FBQTtRQUN2QyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksUUFBUSxDQUFDO1FBQ2IsSUFBSSxTQUFTLENBQUM7UUFFZCxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUN6QyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QyxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCO2FBQU07WUFDTCxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QyxTQUFTLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdCO1FBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDNUMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRCxJQUFJLFNBQVMsR0FBRyxRQUFRLEVBQUU7Z0JBQ3hCLFFBQVEsR0FBRyxTQUFTLENBQUM7Z0JBQ3JCLFNBQVMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDN0I7U0FDRjtRQUdELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBSztRQUNoQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQUs7UUFDaEIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFNO1FBQ2xCLElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1lBQzFDLE9BQU8sQ0FBQyxDQUFDLElBQUksS0FBSyxZQUFZO21CQUN6QixDQUFDLENBQUMsSUFBSSxJQUFJLHdCQUF3QjttQkFDbEMsQ0FBQyxDQUFDLElBQUksSUFBSSx1QkFBdUI7bUJBQ2pDLENBQUMsQ0FBQyxJQUFJLElBQUksc0JBQXNCLENBQUE7UUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLFFBQVEsQ0FBQztRQUNiLElBQUksU0FBUyxDQUFDO1FBRWQsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDekMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzVCLFNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkI7YUFBTTtZQUNMLFFBQVEsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNsQyxTQUFTLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdCO1FBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDNUMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRCxJQUFJLFNBQVMsR0FBRyxRQUFRLEVBQUU7Z0JBQ3hCLFFBQVEsR0FBRyxTQUFTLENBQUM7Z0JBQ3JCLFNBQVMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDN0I7U0FDRjtRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFBQSxDQUFDOzs7WUF0eEJILFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsVUFBVTtnQkFDcEIsdXVQQUFpRDs7YUFFbEQ7OztZQXRFUSxTQUFTO1lBRVQsdUJBQXVCO1lBV3ZCLFdBQVc7WUFEWCx5QkFBeUI7WUFVekIsc0JBQXNCO1lBTXRCLHdCQUF3QjtZQTVCYixZQUFZO1lBcUJ2QixtQkFBbUIsdUJBeUZ2QixNQUFNLFNBQUMsZUFBZTs7O3dCQVN4QixZQUFZLFNBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDS0VkaXRvckV2ZW50Q29uc3QgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2NvbnN0YW50cy9ja2VkaXRvckV2ZW50LmNvbnN0YW50XCI7XHJcbmltcG9ydCB7IEZsb3dDaGFydENvbnN0IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9jb25zdGFudHMvY2tlZGl0b3JGbG93Y2hhcnQuY29uc3RcIjtcclxuaW1wb3J0IGd1aWRIZWxwZXIgZnJvbSBcIi4uLy4uL2NvbW1vbi9oZWxwZXIvZ3VpZEhlbHBlclwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckJwbW5UZW1wbGF0ZSB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1icG1uLXRlbXBsYXRlLm1vZGVsXCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQnBtbiB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1icG1uLm1vZGVsXCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1kaWFsb2cubW9kZWxcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JTYXZlQXNUZW1wbGF0ZSB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1zYXZlLWFzLXRlbXBsYXRlLm1vZGVsXCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQ29uZmlybUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kdWxlL2NvbmZpcm0vcW1zLWNrZWRpdG9yLWNvbmZpcm0uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQmFzZUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9xbXMtY2tlZGl0b3ItYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCcG1uQXBpU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItYnBtbi1hcGkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCcG1uU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItYnBtbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNhdmVUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gXCIuL3NhdmUtdGVtcGxhdGUvc2F2ZS10ZW1wbGF0ZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgVGFyZ2V0VHlwZU5hbWUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvdGFyZ2V0LXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvc2hhcGUtZmxvdy1jaGFydC1jb25uZWN0aW9uLXR5cGUnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclJlbGF0ZWRDb21wb25lbnQgfSBmcm9tICcuLi9xbXMtY2tlZGl0b3ItcmVsYXRpb24vcW1zY2tlZGl0b3ItcmVsYXRlZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMaW5rQXR0YWNobWVudENvbXBvbmVudCB9IGZyb20gJy4uL3Ftcy1ja2VkaXRvci1saW5rL2F0dGFjaG1lbnRzL2xpbmstYXR0YWNobWVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQgUU1TQ0tFZGl0b3JQYXJhbXRlciBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1wYXJhbWV0ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclJlbGF0aW9uIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItcmVsYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckJwbW5EYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Ftcy1ja2VkaXRvci1icG1uLWRhdGEubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckxpbmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLWxpbmsuc2VydmljZSc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9lbnVtcy9kb2N1bWVudC10eXBlLmVudW1cIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JMaW5rQW5jaG9yRG9jdW1lbnQgfSBmcm9tIFwiLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItbGluay1hbmNob3ItZG9jdW1lbnQubW9kZWxcIjtcclxuaW1wb3J0IHsgTGlua0FuY2hvciB9IGZyb20gXCIuLi8uLi9jb21tb24vZW51bXMvbGluay1hbmNob3IuZW51bVwiO1xyXG5pbXBvcnQgeyBDS0VkaXRvckxpbmtDb25zdCB9IGZyb20gJy4uLy4uL2NvbW1vbi9jb25zdGFudHMvY2tlZGl0b3JMaW5rLmNvbnN0YW50JztcclxuaW1wb3J0IHsgTWF0VGFiQ2hhbmdlRXZlbnQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdGFic1wiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclVwbG9hZFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLXVwbG9hZC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGJhc2U2NFN0cmluZ1RvRmlsZSB9IGZyb20gXCIuLi8uLi9jb21tb24vaGVscGVyL2ZpbGVIZWxwZXJcIjtcclxuXHJcbi8vVE9ETzogbW92ZSB0byBjb21tb24gZm9sZGVyXHJcbmludGVyZmFjZSBJVGFyZ2V0IHtcclxuICBpZDogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIElDb25uZWN0aW9uVHlwZSB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBuYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8vVE9ETzogbW92ZSB0byBjb21tb24gZm9sZGVyXHJcbmludGVyZmFjZSBJQW5jaG9yIHtcclxuICB2YWx1ZTogbnVtYmVyO1xyXG4gIHZpZXdWYWx1ZTogc3RyaW5nO1xyXG4gIGFuY2hvclZhbHVlOiBzdHJpbmc7XHJcbn1cclxuXHJcbmNsYXNzIElMaW5rIHtcclxuICB0YXJnZXQ6IFRhcmdldFR5cGVOYW1lO1xyXG4gIHVybDogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgZG9jdW1lbnRUeXBlOiBRTVNDS0VkaXRvckRvY3VtZW50VHlwZTtcclxuICBpY29uOiBzdHJpbmc7XHJcbiAgY29udGVudDogc3RyaW5nO1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy50YXJnZXQgPSBUYXJnZXRUeXBlTmFtZS5uZXc7XHJcbiAgICB0aGlzLmRvY3VtZW50VHlwZSA9IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLm90aGVyO1xyXG4gICAgdGhpcy51cmwgPSAnJztcclxuICAgIHRoaXMudGl0bGUgPSAnJztcclxuICAgIHRoaXMuaWNvbiA9ICcnO1xyXG4gICAgdGhpcy5jb250ZW50ID0gJyc7XHJcbiAgfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3Ftcy1icG1uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcW1zLWNrZWRpdG9yLWJwbW4uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Ftcy1ja2VkaXRvci1icG1uLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFFNU0NLRWRpdG9yQnBtbkNvbXBvbmVudCBleHRlbmRzIFFNU0NLRWRpdG9yQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgTEFORzogYW55O1xyXG4gIGpzb25Db250ZW50OiBzdHJpbmc7XHJcbiAgZXhwYW5kZWRQYW5lbCA9IHRydWU7XHJcbiAgaWQgPSAnJztcclxuICBtb2R1bGU6IG51bWJlcjtcclxuICBlbnRpdHlJZCA9ICcnO1xyXG4gIGVkaXRvckNvbnRlbnQgPSAnJztcclxuXHJcbiAgYnBtbjogUU1TQ0tFZGl0b3JCcG1uID0gbmV3IFFNU0NLRWRpdG9yQnBtbigpO1xyXG4gIGJwbW5UZW1sYXRlczogUU1TQ0tFZGl0b3JCcG1uVGVtcGxhdGVbXSA9IFtdO1xyXG5cclxuICBjb25uZWN0aW9uVHlwZTogU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZTtcclxuICBzZWxlY3RlZENvbm5lY3Rpb25UeXBlOiBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlO1xyXG4gIHRhcmdldHM6IElUYXJnZXRbXSA9IFtdO1xyXG4gIGNvbm5lY3Rpb25UeXBlczogSUNvbm5lY3Rpb25UeXBlW10gPSBbXTtcclxuXHJcbiAgc2VsZWN0ZWRUYXJnZXQ6IFRhcmdldFR5cGVOYW1lID0gVGFyZ2V0VHlwZU5hbWUubmV3O1xyXG4gIGxpbmtVcmwgPSAnJztcclxuICBsaW5rVGl0bGUgPSAnJztcclxuICBhbmNob3JCeU5hbWUgPSAnJztcclxuICBsaW5rSWNvbiA9ICcnO1xyXG4gIGxpbmtJZDogc3RyaW5nID0gJyc7XHJcbiAgZG9jdW1lbnRUeXBlOiBRTVNDS0VkaXRvckRvY3VtZW50VHlwZSA9IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLm90aGVyO1xyXG4gIGRvY3VtZW50SWNvbnM6IGFueTtcclxuXHJcbiAgbGluazogSUxpbms7XHJcbiAgZG9jdW1lbnRBbmNob3JzOiBJQW5jaG9yW107XHJcbiAgaXNMb2FkaW5nRG9jdW1lbnRBbmNob3I6IGJvb2xlYW47XHJcbiAgc2VsZWN0ZWRDZWxsVmlldzogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJtcG5TZXJ2aWNlOiBCcG1uU2VydmljZSxcclxuICAgIHByaXZhdGUgYnBtbkFwaVNlcnZpY2U6IFFNU0NLRWRpdG9yQnBtbkFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxpbmtTZXJ2aWNlOiBRTVNDS0VkaXRvckxpbmtTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1cGxvYWRTZXJ2aWNlOiBRTVNDS0VkaXRvclVwbG9hZFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8UU1TQ0tFZGl0b3JCcG1uQ29tcG9uZW50PixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogUU1TQ0tFZGl0b3JCcG1uRGF0YVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuaWQgPSBkYXRhLmlkO1xyXG4gICAgdGhpcy5tb2R1bGUgPSBkYXRhLm1vZHVsZTtcclxuICAgIHRoaXMuZW50aXR5SWQgPSBkYXRhLmVudGl0eUlkO1xyXG4gICAgdGhpcy5lZGl0b3JDb250ZW50ID0gZGF0YS5lZGl0b3JDb250ZW50O1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1lc3NhZ2UnLCBbJyRldmVudCddKVxyXG4gIG9uTWVzc2FnZShldmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmRhdGEgPT09IEZsb3dDaGFydENvbnN0LlNBVkVfQVNfVEVNUExBVEUpIHtcclxuICAgICAgdGhpcy5vblNhdmVBc1RlbXBsYXRlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5kYXRhID09PSBGbG93Q2hhcnRDb25zdC5ERUxFVEVfVEVNUExBVEUpIHtcclxuICAgICAgdGhpcy5vbkRlbGV0ZVRlbXBsYXRlKHRoaXMuTEFORy5CUE1OLkRFTEVURV9URU1QTEFURSwgdGhpcy5MQU5HLlFNU0NLRURJVE9SX01FU1NBR0UuQ09ORklSTV9ERUxFVEVfVEVNUExBVEUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXZlbnQuZGF0YSA9PT0gRmxvd0NoYXJ0Q29uc3QuTVVTVF9TRUxFQ1RfVEVNUExBVEUpIHtcclxuICAgICAgdGhpcy5zaG93Q29uZmlybURpYWxvZyh0aGlzLkxBTkcuQlBNTi5TRUxFQ1RfVEVNUExBVEUsIHRoaXMuTEFORy5CUE1OLlNFTEVDVF9URU1QTEFURV9JTkZPUk1BVElPTiwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5kYXRhID09PSBGbG93Q2hhcnRDb25zdC5DSEFOR0lOR19URU1QTEFURSkge1xyXG4gICAgICB0aGlzLm9uU2VsZWN0ZWRUZW1wbGF0ZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXZlbnQuZGF0YSA9PT0gRmxvd0NoYXJ0Q29uc3QuUkVTRVRfVEVNUExBVEUpIHtcclxuICAgICAgdGhpcy5vblJlc2V0VGVtcGxhdGUoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV2ZW50LmRhdGEgPT09IEZsb3dDaGFydENvbnN0LlNFTEVDVEVEX1NIQVBFX0lEKSB7XHJcbiAgICAgIHRoaXMub25TZWxldGVkQ2VsbFZpZXcoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGUuZ2V0TGFuZ3VhZ2VTdWJqZWN0JC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICB0aGlzLkxBTkcgPSB0aGlzLnRyYW5zbGF0ZS5nZXRPYmplY3RMYW5nKHJlcyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5icG1uVGVtbGF0ZXMgPSBhd2FpdCB0aGlzLmdldFRlbXBsYXRlcygpO1xyXG4gICAgaWYgKHRoaXMuaWQpIHtcclxuICAgICAgdGhpcy5qc29uQ29udGVudCA9IGF3YWl0IHRoaXMuZ2V0SnNvbkNvbnRlbnQodGhpcy5pZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmJtcG5TZXJ2aWNlLmJ1aWxkRGlhZ3JhbShcclxuICAgICAgdGhpcy5icG1uVGVtbGF0ZXMsXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIENLRWRpdG9yRXZlbnRDb25zdC5RTVNDS19CUE1OLFxyXG4gICAgICB0aGlzLmpzb25Db250ZW50LFxyXG4gICAgICAxLFxyXG4gICAgICB0aGlzLkxBTkdcclxuICAgICk7XHJcbiAgICB0aGlzLmluaXREb2N1bWVudEljb25zKCk7XHJcbiAgICB0aGlzLmluaXRUYXJnZXQoKTtcclxuICAgIHRoaXMuaW5pdENvbm5lY3Rpb25UeXBlKCk7XHJcbiAgICB0aGlzLmluaXRMaW5rKCk7XHJcbiAgfVxyXG5cclxuICBpbml0VGFyZ2V0KCkge1xyXG4gICAgaWYgKHRoaXMudGFyZ2V0cykge1xyXG4gICAgICB0aGlzLnRhcmdldHMucHVzaCh7IGlkOiBUYXJnZXRUeXBlTmFtZS5uZXcsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5UQVJUR0VUX05FVyB9KTtcclxuICAgICAgdGhpcy50YXJnZXRzLnB1c2goeyBpZDogVGFyZ2V0VHlwZU5hbWUuc2FtZSwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlRBUkdFVF9TQU1FIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdENvbm5lY3Rpb25UeXBlKCkge1xyXG4gICAgaWYgKHRoaXMuY29ubmVjdGlvblR5cGVzKSB7XHJcbiAgICAgIHRoaXMuY29ubmVjdGlvblR5cGVzLnB1c2goeyBpZDogU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZS5Eb2N1bWVudE9yUHJvY2VzcywgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkRPQ1VNRU5UX1BST0NFU1MgfSk7XHJcbiAgICAgIHRoaXMuY29ubmVjdGlvblR5cGVzLnB1c2goeyBpZDogU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZS5BdHRhY2htZW50LCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuQVRUQUNITUVOVCB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXREb2N1bWVudEljb25zKCkge1xyXG4gICAgdGhpcy5kb2N1bWVudEljb25zID0ge307XHJcbiAgICB0aGlzLmRvY3VtZW50SWNvbnNbUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuZG9jdW1lbnRdID0gJ3RleHRfc25pcHBldCc7XHJcbiAgICB0aGlzLmRvY3VtZW50SWNvbnNbUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUucHJvY2Vzc10gPSAnYWNjb3VudF90cmVlJztcclxuICAgIHRoaXMuZG9jdW1lbnRJY29uc1tRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5hcmVhXSA9ICdmb2xkZXInO1xyXG4gICAgdGhpcy5kb2N1bWVudEljb25zW1FNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmZvbGRlcl0gPSAnZm9sZGVyJztcclxuICAgIHRoaXMuZG9jdW1lbnRJY29uc1tRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5vdGhlcl0gPSAndGV4dF9zbmlwcGV0JztcclxuICB9XHJcblxyXG4gIGluaXRMaW5rKCkge1xyXG4gICAgdGhpcy5saW5rID0gbnVsbDtcclxuICAgIHRoaXMubGlua0lkID0gJyc7XHJcbiAgICB0aGlzLmRvY3VtZW50VHlwZSA9IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLm90aGVyO1xyXG4gICAgdGhpcy5saW5rSWNvbiA9IHRoaXMuZG9jdW1lbnRJY29uc1tRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5vdGhlcl1cclxuICAgIHRoaXMuc2VsZWN0ZWRUYXJnZXQgPSBUYXJnZXRUeXBlTmFtZS5uZXc7XHJcbiAgICB0aGlzLmFuY2hvckJ5TmFtZSA9ICcnO1xyXG4gICAgdGhpcy5saW5rVGl0bGUgPSAnJztcclxuICAgIHRoaXMuZG9jdW1lbnRBbmNob3JzID0gW107XHJcbiAgfVxyXG5cclxuICBleHBhbmRQYW5lbCgpIHtcclxuICAgIHRoaXMuZXhwYW5kZWRQYW5lbCA9ICF0aGlzLmV4cGFuZGVkUGFuZWw7XHJcbiAgICBjb25zdCBwYW5lbFN0ZW5jaWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFuZWwtc3RlbmNpbC1jb250YWluZXInKTtcclxuICAgIGNvbnN0IHBhcGVyQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcGVycGFuZWwnKTtcclxuICAgIGNvbnN0IHN0ZW5jaWxDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RlbmNpbHBhbmVsJyk7XHJcbiAgICBpZiAocGFuZWxTdGVuY2lsKSB7XHJcbiAgICAgIGlmICghdGhpcy5leHBhbmRlZFBhbmVsKSB7XHJcbiAgICAgICAgc3RlbmNpbENvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSAnNTBweCc7XHJcbiAgICAgICAgcGFuZWxTdGVuY2lsLnN0eWxlLmhlaWdodCA9ICc1MHB4JztcclxuICAgICAgICBwYXBlckNvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSAnNTAwcHgnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHN0ZW5jaWxDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gJzE1MHB4JztcclxuICAgICAgICBwYW5lbFN0ZW5jaWwuc3R5bGUuaGVpZ2h0ID0gJzE1MHB4JztcclxuICAgICAgICBwYXBlckNvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSAnNDAwcHgnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRUZW1wbGF0ZXMoKTogUHJvbWlzZTxRTVNDS0VkaXRvckJwbW5UZW1wbGF0ZVtdPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgdGhpcy5icG1uQXBpU2VydmljZVxyXG4gICAgICAgIC5icG1uR2V0VGVtcGxhdGVzKClcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0SnNvbkNvbnRlbnQoaWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgdGhpcy5icG1uQXBpU2VydmljZVxyXG4gICAgICAgIC5nZXRCcG1uQnlJZChpZClcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5qc29uQ29udGVudCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2F2ZUltYWdlQ29udGVudChncmFwaE9iamVjdCkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIGNvbnN0IGpzb25Db250ZW50ID0gSlNPTi5zdHJpbmdpZnkoZ3JhcGhPYmplY3QpO1xyXG4gICAgICB0aGlzLmJwbW4gPSB7XHJcbiAgICAgICAgaWQ6IHRoaXMuaWQgPyB0aGlzLmlkIDogZ3VpZEhlbHBlci5lbXB0eSxcclxuICAgICAgICBqc29uQ29udGVudDoganNvbkNvbnRlbnQsXHJcbiAgICAgICAgaXNUZW1wbGF0ZTogZmFsc2UsXHJcbiAgICAgICAgdGVtcGxhdGVOYW1lOiAnJ1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmJwbW5BcGlTZXJ2aWNlXHJcbiAgICAgICAgLmJwbW5Nb2RpZnlpbmcodGhpcy5icG1uKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRJbWFnZUNvbnRlbnQocGFwZXI6IGFueSkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIHBhcGVyLnRvUE5HKChpbWFnZURhdGEpID0+IHtcclxuICAgICAgICBjb25zdCBhcnJTdHJpbmcgPSBpbWFnZURhdGEuc3BsaXQoJywnKTtcclxuICAgICAgICByZXNvbHZlKGFyclN0cmluZ1sxXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkluc2VydEltYWdlKCkge1xyXG4gICAgY29uc3QgZ3JhcGggPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuR1JBUEhdO1xyXG4gICAgY29uc3QgcGFwZXIgPSB3aW5kb3dbYHBhcGVyYF07XHJcbiAgICBjb25zdCBjbGllbnRSZWN0ID0gcGFwZXIucGFwZXJUb0xvY2FsUmVjdChwYXBlci5nZXRDb250ZW50QkJveCgpKTtcclxuICAgIGNvbnN0IGdyYXBoT2JqZWN0ID0gZ3JhcGgudG9KU09OKCk7XHJcbiAgICBjb25zdCBpZCA9IGF3YWl0IHRoaXMuc2F2ZUltYWdlQ29udGVudChncmFwaE9iamVjdCk7XHJcbiAgICBjb25zdCBpbWFnZUNvbnRlbnQgPSAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LCcgKyBhd2FpdCB0aGlzLmdldEltYWdlQ29udGVudChwYXBlcik7XHJcbiAgICBjb25zdCBmaWxlID0gYmFzZTY0U3RyaW5nVG9GaWxlKGltYWdlQ29udGVudCwgYCR7Q0tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JQTU59IyR7aWR9YCk7XHJcbiAgICBjb25zdCByZWxhdGl2ZVVybCA9IGF3YWl0IHRoaXMudXBsb2FkU2VydmljZS51cGxvYWRJbWFnZShmaWxlKS50b1Byb21pc2UoKTtcclxuICAgIGNvbnN0IGltYWdlbWFwID0gdGhpcy50b0ltYWdlTWFwKGlkLCBncmFwaE9iamVjdC5jZWxscywgY2xpZW50UmVjdCk7XHJcbiAgICBjb25zdCByZXN1bHQgPSB7IGtleTogYCR7Q0tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JQTU59IyR7aWR9YCwgdmFsdWVzOiByZWxhdGl2ZVVybCwgaW1hZ2VtYXA6IGltYWdlbWFwIH1cclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlc3VsdCk7XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlRGlhbG9nKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUxpbmsoKSB7XHJcbiAgICBsZXQgdGl0bGUgPSB0aGlzLkxBTkcuQlBNTi5ERUxFVEVfQVRUQUNITUVOVDtcclxuICAgIGxldCBjb250ZW50ID0gdGhpcy5MQU5HLkJQTU4uQ09ORklSTV9ERUxFVEVfQVRUQUNITUVOVDtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkQ29ubmVjdGlvblR5cGUgPT0gU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZS5Eb2N1bWVudE9yUHJvY2Vzcykge1xyXG4gICAgICB0aXRsZSA9IHRoaXMuTEFORy5CUE1OLkRFTEVURV9ET0NVTUVOVF9PUl9QUk9DRVNTO1xyXG4gICAgICBjb250ZW50ID0gdGhpcy5MQU5HLlFNU0NLRURJVE9SX01FU1NBR0UuQ09ORklSTV9ERUxFVEVfRE9DVU1FTlRfT1JfUFJPQ0VTUztcclxuICAgIH1cclxuICAgIHRoaXMuc2hvd0NvbmZpcm1EaWFsb2codGl0bGUsIGNvbnRlbnQsIGZhbHNlLCAodmFsdWUpID0+IHtcclxuICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09IHRydWUgfHwgKHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0JyAmJiB2YWx1ZS5pc0NvbmZpcm1lZCA9PSB0cnVlKSkge1xyXG4gICAgICAgICAgdGhpcy5saW5rID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvbkNvbm5lY3Rpb25UeXBlQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbm5lY3Rpb25UeXBlID0gdGhpcy5jb25uZWN0aW9uVHlwZTtcclxuICAgIGlmICh0aGlzLmxpbmspIHtcclxuICAgICAgdGhpcy5zaG93Q29uZmlybURpYWxvZyh0aGlzLkxBTkcuUU1TQ0tFRElUT1IuSU5GT1JNQVRJT04sIHRoaXMuTEFORy5RTVNDS0VESVRPUl9NRVNTQUdFLkNPTkZJUk1fREVMRVRFX0VYSVNUSU5HX0NPTk5FQ1RJT04sIHRydWUsICgpID0+IHtcclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb25UeXBlID0gMDtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHN3aXRjaCAodGhpcy5jb25uZWN0aW9uVHlwZSkge1xyXG4gICAgICBjYXNlIFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuRG9jdW1lbnRPclByb2Nlc3M6XHJcbiAgICAgICAgdGhpcy5vcGVuSGFuZGJvb2tEaWFsb2coZmFsc2UpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuQXR0YWNobWVudDpcclxuICAgICAgICB0aGlzLm9wZW5BdHRhY2htZW50RGlhbG9nKClcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQW5jaG9yQnlOYW1lQ2hhbmdlKCkge1xyXG4gICAgdGhpcy51cGRhdGVDZWxsVmlld1ZhbHVlcygpO1xyXG4gIH1cclxuXHJcbiAgb3BlbkhhbmRib29rRGlhbG9nKGlzT25seURvY3VtZW50OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yUmVsYXRpb24oKTtcclxuICAgIGRhdGEuaXNPbmx5RG9jdW1lbnQgPSBpc09ubHlEb2N1bWVudDtcclxuICAgIGRhdGEuaXNFbmFibGVGb2xkZXIgPSAhaXNPbmx5RG9jdW1lbnQ7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JSZWxhdGVkQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnNjUwcHgnLFxyXG4gICAgICBoZWlnaHQ6ICc2NTBweCcsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dUZW1wbGF0ZVxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLmRvY3VtZW50VHlwZSA9IHJlc3VsdC50eXBlO1xyXG4gICAgICAgICAgdGhpcy5saW5rSWQgPSB0aGlzLmdldExpbmtJZChyZXN1bHQudXJsLCByZXN1bHQudHlwZSk7XHJcbiAgICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuZG9jdW1lbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5saW5rVGl0bGUgPSBgJHtyZXN1bHQudGl0bGV9KCR7cmVzdWx0LmlkfSlgO1xyXG4gICAgICAgICAgICB0aGlzLmdldEFuY2hvckRvY3VtZW50KHJlc3VsdC5pZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5saW5rVXJsID0gcmVzdWx0LnVybDtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmxpbmtUaXRsZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMubGlua1RpdGxlID0gcmVzdWx0LnRpdGxlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFyZ2V0ID0gVGFyZ2V0VHlwZU5hbWUubmV3O1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVDZWxsVmlld1ZhbHVlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb25UeXBlID0gMDtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvcGVuQXR0YWNobWVudERpYWxvZygpIHtcclxuICAgIGNvbnN0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JQYXJhbXRlcigpO1xyXG4gICAgZGF0YS5tb2R1bGUgPSB0aGlzLm1vZHVsZTtcclxuICAgIGRhdGEuZW50aXR5SWQgPSB0aGlzLmVudGl0eUlkO1xyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKExpbmtBdHRhY2htZW50Q29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnNjUwcHgnLFxyXG4gICAgICBoZWlnaHQ6ICc2NTBweCcsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dUZW1wbGF0ZVxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLmRvY3VtZW50VHlwZSA9IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLm90aGVyO1xyXG4gICAgICAgICAgdGhpcy5saW5rVXJsID0gcmVzdWx0LnVybDtcclxuICAgICAgICAgIGlmICghdGhpcy5saW5rVGl0bGUpIHtcclxuICAgICAgICAgICAgdGhpcy5saW5rVGl0bGUgPSByZXN1bHQudGl0bGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFyZ2V0ID0gVGFyZ2V0VHlwZU5hbWUubmV3O1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVDZWxsVmlld1ZhbHVlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb25UeXBlID0gMDtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBbmNob3JEb2N1bWVudChkb2N1bWVudElkKSB7XHJcbiAgICB0aGlzLmlzTG9hZGluZ0RvY3VtZW50QW5jaG9yID0gdHJ1ZTtcclxuICAgIHRoaXMubGlua1NlcnZpY2VcclxuICAgICAgLmdldEFuY2hvckRvY3VtZW50TGlzdChkb2N1bWVudElkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChkb2N1bWVudHMpID0+IHtcclxuICAgICAgICB0aGlzLmRvY3VtZW50QW5jaG9ycyA9IHRoaXMuZXh0cmFjdERvY3VtZW50QW5jaG9ycyhkb2N1bWVudHMgfHwgW10pO1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nRG9jdW1lbnRBbmNob3IgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBleHRyYWN0RG9jdW1lbnRBbmNob3JzKGFuY2hvckRvY3VtZW50OiBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudFtdKSB7XHJcbiAgICBjb25zdCBhbmNob3JzOiBJQW5jaG9yW10gPSBbeyB2YWx1ZTogMCwgdmlld1ZhbHVlOiAnJywgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuQmxhbmsgfV07XHJcbiAgICBsZXQgaWQgPSAzO1xyXG4gICAgaWYgKGFuY2hvckRvY3VtZW50KSB7XHJcbiAgICAgIGFuY2hvckRvY3VtZW50LmZvckVhY2goKGUpID0+IHtcclxuICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICBkaXYuaW5uZXJIVE1MID0gZS5yaWNoVGV4dDtcclxuICAgICAgICBjb25zdCBkb21Db250ZW50ID0gZGl2O1xyXG4gICAgICAgIGNvbnN0IGFUYWdzID0gZG9tQ29udGVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpO1xyXG4gICAgICAgIGlmIChhVGFncykge1xyXG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci1mb3Itb2ZcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYVRhZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgdGFnID0gYVRhZ3NbaV07XHJcbiAgICAgICAgICAgIGlmICh0YWcubmFtZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gYW5jaG9ycy5maW5kSW5kZXgoKHgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB4LmFuY2hvclZhbHVlID09PSB0YWcubmFtZTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBpZiAoaW5kZXggPCAwKSB7XHJcbiAgICAgICAgICAgICAgICBhbmNob3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogaWQsXHJcbiAgICAgICAgICAgICAgICAgIHZpZXdWYWx1ZTogdGFnLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIGFuY2hvclZhbHVlOiB0YWcubmFtZVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBpZCArPSAxO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBhbmNob3JzLnB1c2goe1xyXG4gICAgICB2YWx1ZTogMSxcclxuICAgICAgdmlld1ZhbHVlOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuQU5DSE9SX0FUVEFDSE1FTlQsXHJcbiAgICAgIGFuY2hvclZhbHVlOiBMaW5rQW5jaG9yLkF0dGFjaG1lbnRcclxuICAgIH0pO1xyXG4gICAgYW5jaG9ycy5wdXNoKHtcclxuICAgICAgdmFsdWU6IDIsXHJcbiAgICAgIHZpZXdWYWx1ZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkFOQ0hPUl9SRUxBVEVEX0RPQ1VNRU5ULFxyXG4gICAgICBhbmNob3JWYWx1ZTogTGlua0FuY2hvci5SZWxhdGVkXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBhbmNob3JzO1xyXG4gIH1cclxuXHJcbiAgcmVsb2FkQW5jaG9ycygpIHtcclxuICAgIGlmICghIXRoaXMubGlua0lkICYmIHRoaXMuZG9jdW1lbnRUeXBlID09IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmRvY3VtZW50KSB7XHJcbiAgICAgIHRoaXMuZ2V0QW5jaG9yRG9jdW1lbnQodGhpcy5saW5rSWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYnVpbGRMaW5rKCkge1xyXG4gICAgY29uc3QgbGluayA9IG5ldyBJTGluaygpO1xyXG4gICAgbGluay50YXJnZXQgPSB0aGlzLnNlbGVjdGVkVGFyZ2V0O1xyXG4gICAgbGluay50aXRsZSA9IHRoaXMubGlua1RpdGxlO1xyXG4gICAgbGluay51cmwgPSB0aGlzLmxpbmtVcmw7XHJcbiAgICBsaW5rLmRvY3VtZW50VHlwZSA9IHRoaXMuZG9jdW1lbnRUeXBlIHx8IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLm90aGVyO1xyXG4gICAgbGluay5pY29uID0gdGhpcy5kb2N1bWVudEljb25zW2xpbmsuZG9jdW1lbnRUeXBlXTtcclxuICAgIGxpbmsuY29udGVudCA9ICcnO1xyXG4gICAgc3dpdGNoICh0aGlzLmRvY3VtZW50VHlwZSkge1xyXG4gICAgICBjYXNlIFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmRvY3VtZW50OlxyXG4gICAgICAgIGxpbmsudXJsID0gYCR7Q0tFZGl0b3JMaW5rQ29uc3QuRE9DVU1FTlRfUEFSVElBTF9VUkx9JHt0aGlzLmxpbmtJZH0jJHt0aGlzLmFuY2hvckJ5TmFtZX1gO1xyXG4gICAgICAgIGxpbmsuY29udGVudCA9IGAke3RoaXMuTEFORy5RTVNDS0VESVRPUi5JRH06ICR7dGhpcy5saW5rSWR9YDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5wcm9jZXNzOlxyXG4gICAgICAgIGxpbmsuY29udGVudCA9IGAke3RoaXMuTEFORy5RTVNDS0VESVRPUi5JRH06ICR7dGhpcy5saW5rSWR9YDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5hcmVhOlxyXG4gICAgICAgIGxpbmsuY29udGVudCA9IGAke3RoaXMuTEFORy5RTVNDS0VESVRPUi5JRH06ICR7dGhpcy5saW5rSWR9YDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5mb2xkZXI6XHJcbiAgICAgICAgbGluay5jb250ZW50ID0gYCR7dGhpcy5MQU5HLlFNU0NLRURJVE9SLklEfTogJHt0aGlzLmxpbmtJZH1gO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxpbms7XHJcbiAgfVxyXG5cclxuICBvblNhdmVBc1RlbXBsYXRlKCkge1xyXG4gICAgY29uc3QgZ3JhcGggPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuR1JBUEhdO1xyXG4gICAgY29uc3QganNvbkNvbnRlbnQgPSBKU09OLnN0cmluZ2lmeShncmFwaC50b0pTT04oKSk7XHJcbiAgICBsZXQgdGVtcGxhdGUgPSBuZXcgUU1TQ0tFZGl0b3JCcG1uKCk7XHJcbiAgICB0ZW1wbGF0ZSA9IHtcclxuICAgICAgaWQ6IGd1aWRIZWxwZXIuZW1wdHksXHJcbiAgICAgIGpzb25Db250ZW50OiBqc29uQ29udGVudCxcclxuICAgICAgaXNUZW1wbGF0ZTogdHJ1ZSxcclxuICAgICAgdGVtcGxhdGVOYW1lOiAnJ1xyXG4gICAgfVxyXG4gICAgbGV0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JTYXZlQXNUZW1wbGF0ZSgpO1xyXG4gICAgZGF0YS50ZW1wbGF0ZVR5cGUgPSBDS0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfQlBNTjtcclxuICAgIGRhdGEuYnBtbiA9IHRlbXBsYXRlO1xyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFNhdmVUZW1wbGF0ZUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzQ1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnMjIwcHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgLy8gVERPXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ZWRUZW1wbGF0ZSgpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkSnNvbkNvbnRlbnQgPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0VMRUNURURfSlNPTl9DT05URU5UXTtcclxuICAgIGlmIChzZWxlY3RlZEpzb25Db250ZW50KSB7XHJcbiAgICAgIGNvbnN0IGdyYXBoID0gd2luZG93W0Zsb3dDaGFydENvbnN0LkdSQVBIXTtcclxuICAgICAgaWYgKGdyYXBoKSB7XHJcbiAgICAgICAgZ3JhcGguZnJvbUpTT04oSlNPTi5wYXJzZShzZWxlY3RlZEpzb25Db250ZW50KSk7XHJcbiAgICAgIH1cclxuICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0Lk1ZX0NFTExfVklFV10gPSBudWxsO1xyXG4gICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0VMRUNURURfU0hBUEVfSURdID0gJyc7XHJcbiAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5TSEFQRV9UWVBFXSA9ICcnO1xyXG4gICAgICB0aGlzLm9uU2VsZXRlZENlbGxWaWV3KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkRlbGV0ZVRlbXBsYXRlKHRpdGxlOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgZGF0YTogUU1TQ0tFZGl0b3JEaWFsb2dEYXRhID0gbmV3IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSgpO1xyXG4gICAgZGF0YS50aXRsZSA9IHRpdGxlO1xyXG4gICAgZGF0YS5jb250ZW50ID0gY29udGVudDtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JDb25maXJtQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnNTAwcHgnLFxyXG4gICAgICBtaW5IZWlnaHQ6ICcxNzVweCcsXHJcbiAgICAgIGRhdGFcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU2VsZXRlZENlbGxWaWV3KCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENlbGxWaWV3ID0gd2luZG93W0Zsb3dDaGFydENvbnN0Lk1ZX0NFTExfVklFV107XHJcbiAgICB0aGlzLmluaXRMaW5rKCk7XHJcbiAgICBpZiAoISF0aGlzLnNlbGVjdGVkQ2VsbFZpZXcpIHtcclxuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHRoaXMuc2VsZWN0ZWRDZWxsVmlldy5tb2RlbC5hdHRyaWJ1dGVzO1xyXG4gICAgICBjb25zdCBleGNsdWRlZFR5cGVzID0gWydicG1uMi5GbG93JywgJ2JwbW4yLkhlYWRlcmVkUG9vbCcsICdicG1uMi5Db252ZXJzYXRpb25MaW5rJywgJ2JwbW4yLkFubm90YXRpb25MaW5rJywgJ2JwbW4yLkRhdGFBc3NvY2lhdGlvbiddO1xyXG4gICAgICBpZiAoIWF0dHJpYnV0ZXMudHlwZSB8fCBleGNsdWRlZFR5cGVzLmZpbmRJbmRleCh0eXBlID0+IHR5cGUudG9Mb3dlckNhc2UoKSA9PSBhdHRyaWJ1dGVzLnR5cGUudG9Mb3dlckNhc2UoKSkgPiAtMSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDZWxsVmlldyA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5saW5rVXJsID0gYXR0cmlidXRlcy5saW5rVXJsIHx8ICcnO1xyXG4gICAgICAgIGlmICghIXRoaXMubGlua1VybCkge1xyXG4gICAgICAgICAgdGhpcy5wYXJzZUxpbmtVcmwodGhpcy5saW5rVXJsKTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYXJnZXQgPSBhdHRyaWJ1dGVzLmxpbmtUYXJnZXQ7XHJcbiAgICAgICAgICB0aGlzLmxpbmtUaXRsZSA9IGF0dHJpYnV0ZXMubGlua1RpdGxlO1xyXG4gICAgICAgICAgdGhpcy5saW5rID0gdGhpcy5idWlsZExpbmsoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVGFiQ2hhbmdlKCRldmVudDogTWF0VGFiQ2hhbmdlRXZlbnQpIHtcclxuICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5UQUJfTkFNRV0gPSAkZXZlbnQudGFiLnRleHRMYWJlbDtcclxuICAgIGlmICgkZXZlbnQudGFiLnRleHRMYWJlbCA9PSB0aGlzLkxBTkcuQlBNTi5QUk9QRVJUSUVTKSB7XHJcbiAgICAgIHRoaXMuYm1wblNlcnZpY2Uub3BlblNoYXBlRnVuY3Rpb25hbGl0eSh0aGlzLkxBTkcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcGFyc2VMaW5rVXJsKHVybDogc3RyaW5nKSB7XHJcbiAgICBpZiAoISF1cmwpIHtcclxuICAgICAgY29uc3QgaGFzaEluZGV4ID0gdXJsLmluZGV4T2YoJyMnKTtcclxuICAgICAgdGhpcy5kb2N1bWVudFR5cGUgPSB0aGlzLmdldERvY3VtZW50VHlwZSh1cmwpO1xyXG4gICAgICB0aGlzLmxpbmtJY29uID0gdGhpcy5kb2N1bWVudEljb25zW3RoaXMuZG9jdW1lbnRUeXBlXTtcclxuICAgICAgdGhpcy5saW5rSWQgPSB0aGlzLmdldExpbmtJZCh1cmwsIHRoaXMuZG9jdW1lbnRUeXBlKTtcclxuICAgICAgaWYgKCEhdGhpcy5saW5rSWQgJiYgdGhpcy5kb2N1bWVudFR5cGUgPT0gUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuZG9jdW1lbnQgJiYgaGFzaEluZGV4ID4gLTEpIHtcclxuICAgICAgICB0aGlzLmFuY2hvckJ5TmFtZSA9IHVybC5zdWJzdHIoaGFzaEluZGV4ICsgMSwgdXJsLmxlbmd0aCAtIGhhc2hJbmRleCk7XHJcbiAgICAgICAgdGhpcy5nZXRBbmNob3JEb2N1bWVudCh0aGlzLmxpbmtJZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFBhcnRpYWxVcmwodHlwZTogUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmRvY3VtZW50OlxyXG4gICAgICAgIHJldHVybiBDS0VkaXRvckxpbmtDb25zdC5ET0NVTUVOVF9QQVJUSUFMX1VSTDtcclxuICAgICAgY2FzZSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5wcm9jZXNzOlxyXG4gICAgICAgIHJldHVybiBDS0VkaXRvckxpbmtDb25zdC5QUk9DRVNTX1BBUlRJQUxfVVJMO1xyXG4gICAgICBjYXNlIFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmFyZWE6XHJcbiAgICAgICAgcmV0dXJuIENLRWRpdG9yTGlua0NvbnN0LkFSRUFfUEFSVElBTF9VUkw7XHJcbiAgICAgIGNhc2UgUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuZm9sZGVyOlxyXG4gICAgICAgIHJldHVybiBDS0VkaXRvckxpbmtDb25zdC5GT0xERVJfUEFSVElBTF9VUkw7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0TGlua0lkKHVybDogc3RyaW5nLCB0eXBlOiBRTVNDS0VkaXRvckRvY3VtZW50VHlwZSkge1xyXG4gICAgbGV0IHBhcnRpYWxVcmxJbmRleCA9IDA7XHJcbiAgICBsZXQgcGFydGlhbFVybExlbmd0aCA9IDA7XHJcbiAgICBsZXQgaWQgPSAnJztcclxuICAgIGxldCBmcm9tID0gMDtcclxuICAgIGxldCB1cmxMb3dlckNhc2UgPSAhIXVybCA/IHVybC50b0xvd2VyQ2FzZSgpIDogJyc7XHJcblxyXG4gICAgY29uc3QgcGFydGlhbFVybCA9IHRoaXMuZ2V0UGFydGlhbFVybCh0eXBlKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgY29uc3QgaGFzaEluZGV4ID0gdXJsTG93ZXJDYXNlLmluZGV4T2YoJyMnKTtcclxuXHJcbiAgICBpZiAoISFwYXJ0aWFsVXJsKSB7XHJcbiAgICAgIHBhcnRpYWxVcmxJbmRleCA9IHVybExvd2VyQ2FzZS5pbmRleE9mKHBhcnRpYWxVcmwpO1xyXG5cclxuICAgICAgcGFydGlhbFVybExlbmd0aCA9IHBhcnRpYWxVcmwubGVuZ3RoO1xyXG4gICAgICBmcm9tID0gcGFydGlhbFVybEluZGV4ICsgcGFydGlhbFVybExlbmd0aDtcclxuXHJcbiAgICAgIGlmICh0eXBlID09IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmRvY3VtZW50ICYmIGhhc2hJbmRleCA+IC0xKSB7XHJcbiAgICAgICAgaWQgPSB1cmxMb3dlckNhc2Uuc3Vic3RyKGZyb20sIGhhc2hJbmRleCAtIGZyb20pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IHVybExvd2VyQ2FzZS5zdWJzdHIoZnJvbSkuaW5kZXhPZignLycpO1xyXG4gICAgICAgIGlmIChsZW5ndGggPCAwKSB7XHJcbiAgICAgICAgICBpZCA9IHVybExvd2VyQ2FzZS5zdWJzdHIoZnJvbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWQgPSB1cmxMb3dlckNhc2Uuc3Vic3RyKGZyb20sIGxlbmd0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGUgPT0gUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuZG9jdW1lbnQpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBwYXJzZUludChpZCwgMTApO1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIHtcclxuICAgICAgICBpZCA9ICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaWQ7XHJcbiAgfVxyXG5cclxuICBnZXREb2N1bWVudFR5cGUodXJsOiBzdHJpbmcpIHtcclxuICAgIGlmICh1cmwuaW5kZXhPZihDS0VkaXRvckxpbmtDb25zdC5ET0NVTUVOVF9QQVJUSUFMX1VSTCkgPiAtMSkge1xyXG4gICAgICByZXR1cm4gUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuZG9jdW1lbnQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh1cmwuaW5kZXhPZihDS0VkaXRvckxpbmtDb25zdC5QUk9DRVNTX1BBUlRJQUxfVVJMKSA+IC0xKSB7XHJcbiAgICAgIHJldHVybiBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5wcm9jZXNzO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodXJsLmluZGV4T2YoQ0tFZGl0b3JMaW5rQ29uc3QuQVJFQV9QQVJUSUFMX1VSTCkgPiAtMSkge1xyXG4gICAgICByZXR1cm4gUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuYXJlYTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHVybC5pbmRleE9mKENLRWRpdG9yTGlua0NvbnN0LkZPTERFUl9QQVJUSUFMX1VSTCkgPiAtMSkge1xyXG4gICAgICByZXR1cm4gUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuZm9sZGVyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLm90aGVyO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ2VsbFZpZXdWYWx1ZXMoKSB7XHJcbiAgICBpZiAoISF0aGlzLnNlbGVjdGVkQ2VsbFZpZXcpIHtcclxuICAgICAgdGhpcy5saW5rID0gdGhpcy5idWlsZExpbmsoKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZENlbGxWaWV3Lm1vZGVsLnByb3AoJ2xpbmtVcmwnLCB0aGlzLmxpbmsudXJsKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZENlbGxWaWV3Lm1vZGVsLnByb3AoJ2xpbmtUYXJnZXQnLCB0aGlzLmxpbmsudGFyZ2V0KTtcclxuICAgICAgdGhpcy5zZWxlY3RlZENlbGxWaWV3Lm1vZGVsLnByb3AoJ2xpbmtUaXRsZScsIHRoaXMubGluay50aXRsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblJlc2V0VGVtcGxhdGUoKSB7XHJcbiAgICBjb25zdCBvZ3JKc29uQ29udGVudCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5PUkdfSlNPTkNPTlRFTlRdO1xyXG4gICAgaWYgKG9nckpzb25Db250ZW50KSB7XHJcbiAgICAgIGNvbnN0IGdyYXBoID0gd2luZG93W0Zsb3dDaGFydENvbnN0LkdSQVBIXTtcclxuICAgICAgaWYgKGdyYXBoKSB7XHJcbiAgICAgICAgZ3JhcGguZnJvbUpTT04oSlNPTi5wYXJzZShvZ3JKc29uQ29udGVudCkpO1xyXG4gICAgICAgIHRoaXMuYm1wblNlcnZpY2Uuc2V0RGVmYXVsdFNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuSVNfU0VMRUNURURfVEVNUExBVEVdID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0Lk1ZX0NFTExfVklFV10gPSBudWxsO1xyXG4gICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0VMRUNURURfU0hBUEVfSURdID0gJyc7XHJcbiAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5TSEFQRV9UWVBFXSA9ICcnO1xyXG4gICAgICB0aGlzLm9uU2VsZXRlZENlbGxWaWV3KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93Q29uZmlybURpYWxvZyh0aXRsZTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIGlzTWVzc2FnZTogYm9vbGVhbiwgY2FsbGJhY2s/OiAocmVzdWx0PzogYW55KSA9PiB2b2lkKSB7XHJcbiAgICBjb25zdCBkYXRhOiBRTVNDS0VkaXRvckRpYWxvZ0RhdGEgPSBuZXcgUU1TQ0tFZGl0b3JEaWFsb2dEYXRhKCk7XHJcbiAgICBkYXRhLnRpdGxlID0gdGl0bGU7XHJcbiAgICBkYXRhLmNvbnRlbnQgPSBjb250ZW50O1xyXG4gICAgZGF0YS5pc01lc3NhZ2UgPSBpc01lc3NhZ2U7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yQ29uZmlybUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzUwMHB4JyxcclxuICAgICAgbWluSGVpZ2h0OiAnMTc1cHgnLFxyXG4gICAgICBkYXRhXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1JlZlxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAoY2FsbGJhY2spIHtcclxuICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHRvSW1hZ2VNYXAoaWQ6IGFueSwgY2VsbHM6IGFueVtdLCBjbGllbnRSZWN0OiBhbnkpIHtcclxuICAgIGNvbnN0IG1hcCA9IHsgbmFtZTogaWQsIGlkOiBpZCwgYXJlYXM6IFtdLCBpbWFnZUhlaWdodDogMCwgaW1hZ2VXaWR0aDogMCB9O1xyXG4gICAgbWFwLmltYWdlSGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQ7XHJcbiAgICBtYXAuaW1hZ2VXaWR0aCA9IGNsaWVudFJlY3Qud2lkdGg7XHJcbiAgICBpZiAoY2VsbHMgJiYgY2VsbHMubGVuZ3RoICE9IDApIHtcclxuICAgICAgdmFyIGlzVmVydGljYWxQb29sID0gZmFsc2U7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2VsbHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgc2hhcGUgPSBjZWxsc1tpXTtcclxuICAgICAgICBsZXQgc2l6ZSA9IHNoYXBlWydzaXplJ10gfHwgeyB3aWR0aDogMCwgaGVpZ2h0OiAwIH07XHJcbiAgICAgICAgbGV0IGJib3ggPSBzaGFwZVsnYmJveCddIHx8IHsgeDogMCwgeTogMCB9O1xyXG4gICAgICAgIGxldCBwb3NpdGlvbiA9IHNoYXBlWydwb3NpdGlvbiddIHx8IHsgeDogMCwgeTogMCB9O1xyXG4gICAgICAgIGJib3gueCA9IHBvc2l0aW9uLng7XHJcbiAgICAgICAgYmJveC55ID0gcG9zaXRpb24ueTtcclxuICAgICAgICBiYm94LndpZHRoID0gc2l6ZS53aWR0aDtcclxuICAgICAgICBiYm94LmhlaWdodCA9IHNpemUuaGVpZ2h0O1xyXG4gICAgICAgIHNoYXBlWydiYm94J10gPSBiYm94O1xyXG4gICAgICAgIHNoYXBlWydhZGRpdGlvbmFsV2lkdGgnXSA9IChiYm94LndpZHRoID4gc2l6ZS53aWR0aCkgPyAoYmJveC53aWR0aCAtIHNpemUud2lkdGgpIDogMDtcclxuICAgICAgfVxyXG4gICAgICB2YXIgb2Zmc2V0WCA9IHRoaXMuZ2V0TWluWE9mZnNldChjZWxscyk7XHJcbiAgICAgIHZhciBvZmZzZXRZID0gdGhpcy5nZXRNaW5ZT2Zmc2V0KGNlbGxzKTtcclxuXHJcbiAgICAgIHZhciBhZGRpdGlvbmFsT2Zmc2V0WSA9IDA7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2VsbHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgc2hhcGUgPSBjZWxsc1tpXTtcclxuICAgICAgICBsZXQgaHJlZiA9IHNoYXBlLmxpbmtVcmw7XHJcbiAgICAgICAgbGV0IHRhcmdldCA9IHNoYXBlLmxpbmtUYXJnZXQ7XHJcbiAgICAgICAgbGV0IGFsdCA9IHNoYXBlLmxpbmtUaXRsZTtcclxuXHJcbiAgICAgICAgaWYgKHNoYXBlLnR5cGUgPT0gJ2JwbW4yLlBvb2wnIHx8IHNoYXBlLnR5cGUgPT0gJ2JwbW4yLkhlYWRlcmVkUG9vbCcpIHtcclxuICAgICAgICAgIGFkZGl0aW9uYWxPZmZzZXRZID0gKHNoYXBlLmFkZGl0aW9uYWxXaWR0aCAvIDIpO1xyXG4gICAgICAgICAgaXNWZXJ0aWNhbFBvb2wgPSAoc2hhcGUudHlwZSA9PSAnYnBtbjIuUG9vbCcgfHwgc2hhcGUudHlwZSA9PSAnYnBtbjIuSGVhZGVyZWRQb29sJykgJiYgc2hhcGUuYW5nbGUgIT0gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCEhaHJlZiAmJiBocmVmLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHZhciBzaXplID0gc2hhcGVbJ3NpemUnXSB8fCB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfTtcclxuICAgICAgICAgIHZhciBiYm94ID0gc2hhcGVbJ2Jib3gnXSB8fCB7IHg6IDAsIHk6IDAgfTtcclxuICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHNoYXBlWydwb3NpdGlvbiddIHx8IHsgeDogMCwgeTogMCB9O1xyXG4gICAgICAgICAgYmJveC54ID0gcG9zaXRpb24ueDtcclxuICAgICAgICAgIGJib3gueSA9IHBvc2l0aW9uLnk7XHJcbiAgICAgICAgICBiYm94LndpZHRoID0gc2l6ZS53aWR0aDtcclxuICAgICAgICAgIGJib3guaGVpZ2h0ID0gc2l6ZS5oZWlnaHQ7XHJcbiAgICAgICAgICB2YXIgYWRkaXRpb25hbE9mZnNldFggPSAoc2hhcGUuYWRkaXRpb25hbFdpZHRoIC8gMik7XHJcblxyXG4gICAgICAgICAgdmFyIHgxLCB5MSwgeDIsIHkyO1xyXG5cclxuICAgICAgICAgIGlmIChzaGFwZS5pbmNsdWRlVGV4dEluQ2xpY2thYmxlQXJlYSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHgxID0gKGJib3gueCAtIG9mZnNldFggLSBhZGRpdGlvbmFsT2Zmc2V0WCk7XHJcbiAgICAgICAgICAgIHkxID0gKGJib3gueSAtIG9mZnNldFkpO1xyXG4gICAgICAgICAgICB4MiA9ICh4MSArIHNoYXBlLmJib3gud2lkdGggLSAxKTtcclxuICAgICAgICAgICAgeTIgPSAoeTEgKyBzaGFwZS5iYm94LmhlaWdodCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YXIgdHJhbnNmb3JtWCA9IG9mZnNldFgsIHRyYW5zZm9ybVkgPSBvZmZzZXRZO1xyXG4gICAgICAgICAgICBpZiAob2Zmc2V0WCA8IDAgJiYgaXNWZXJ0aWNhbFBvb2wpIHtcclxuICAgICAgICAgICAgICB0cmFuc2Zvcm1YID0gb2Zmc2V0WCArIHNpemUuaGVpZ2h0O1xyXG4gICAgICAgICAgICAgIHRyYW5zZm9ybVkgPSBvZmZzZXRZIC0gc2l6ZS5oZWlnaHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG9mZnNldFkgPCAwICYmIGlzVmVydGljYWxQb29sKSB7XHJcbiAgICAgICAgICAgICAgdHJhbnNmb3JtWSA9IG9mZnNldFkgKyBhZGRpdGlvbmFsT2Zmc2V0WTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB4MSA9IChiYm94LnggLSB0cmFuc2Zvcm1YKTtcclxuICAgICAgICAgICAgeTEgPSAoYmJveC55IC0gdHJhbnNmb3JtWSk7XHJcbiAgICAgICAgICAgIHgyID0gKHgxICsgc2l6ZS53aWR0aCAtIDEpO1xyXG4gICAgICAgICAgICB5MiA9ICh5MSArIHNpemUuaGVpZ2h0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBjb29yZHMgPSBgJHt4MX0sJHt5MX0sJHt4Mn0sJHt5Mn1gO1xyXG4gICAgICAgICAgc3dpdGNoIChzaGFwZS50eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ2JwbW4yLkFjdGl2aXR5JzpcclxuICAgICAgICAgICAgY2FzZSAnYnBtbjIuR2F0ZXdheSc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2JwbW4yLkV2ZW50JzpcclxuICAgICAgICAgICAgY2FzZSAnYnBtbjIuQ29udmVyc2F0aW9uJzpcclxuICAgICAgICAgICAgY2FzZSAnYnBtbjIuRGF0YU9iamVjdCc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2JwbW4yLkRhdGFTdG9yZSc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2JwbW4uQ2hvcmVvZ3JhcGh5JzpcclxuICAgICAgICAgICAgY2FzZSAnYnBtbi5NZXNzYWdlJzpcclxuICAgICAgICAgICAgICBtYXAuYXJlYXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBzaGFwZTogJ3JlY3QnLFxyXG4gICAgICAgICAgICAgICAgY29vcmRzOiBjb29yZHMsXHJcbiAgICAgICAgICAgICAgICBocmVmOiBocmVmLFxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiB0YXJnZXQsXHJcbiAgICAgICAgICAgICAgICBhbHQ6IGFsdFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgIG1hcC5hcmVhcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHNoYXBlOiAncmVjdCcsXHJcbiAgICAgICAgICAgICAgICBjb29yZHM6IGNvb3JkcyxcclxuICAgICAgICAgICAgICAgIGhyZWY6IGhyZWYsXHJcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHRhcmdldCxcclxuICAgICAgICAgICAgICAgIGFsdDogYWx0XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWFwO1xyXG4gIH1cclxuXHJcbiAgZ2V0TWluWE9mZnNldChzaGFwZXMpIHtcclxuICAgIHZhciBmaWx0ZXJTaGFwZXMgPSBzaGFwZXMuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XHJcbiAgICAgIHJldHVybiBzLnR5cGUgIT09ICdicG1uMi5GbG93J1xyXG4gICAgICAgICYmIHMudHlwZSAhPSAnYnBtbjIuQ29udmVyc2F0aW9uTGluaydcclxuICAgICAgICAmJiBzLnR5cGUgIT0gJ2JwbW4yLkRhdGFBc3NvY2lhdGlvbidcclxuICAgICAgICAmJiBzLnR5cGUgIT0gJ2JwbW4yLkFubm90YXRpb25MaW5rJ1xyXG4gICAgfSk7XHJcblxyXG4gICAgdmFyIG1pblZhbHVlO1xyXG4gICAgdmFyIG1pbk9iamVjdDtcclxuXHJcbiAgICBpZiAoIWZpbHRlclNoYXBlcyB8fCAhZmlsdGVyU2hhcGVzLmxlbmd0aCkge1xyXG4gICAgICBtaW5WYWx1ZSA9IHRoaXMuZ2V0WFBvc2l0aW9uKHNoYXBlc1swXSk7XHJcbiAgICAgIG1pbk9iamVjdCA9IHNoYXBlc1swXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG1pblZhbHVlID0gdGhpcy5nZXRYUG9zaXRpb24oZmlsdGVyU2hhcGVzWzBdKTtcclxuICAgICAgbWluT2JqZWN0ID0gZmlsdGVyU2hhcGVzWzBdO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgZmlsdGVyU2hhcGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHZhciB4UG9zaXRpb24gPSB0aGlzLmdldFhQb3NpdGlvbihmaWx0ZXJTaGFwZXNbaV0pO1xyXG4gICAgICBpZiAoeFBvc2l0aW9uIDwgbWluVmFsdWUpIHtcclxuICAgICAgICBtaW5WYWx1ZSA9IHhQb3NpdGlvbjtcclxuICAgICAgICBtaW5PYmplY3QgPSBmaWx0ZXJTaGFwZXNbaV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgcmV0dXJuIG1pblZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0WFBvc2l0aW9uKHNoYXBlKSB7XHJcbiAgICByZXR1cm4gc2hhcGUuYmJveC54IC0gKHNoYXBlLmFkZGl0aW9uYWxXaWR0aCAvIDIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0WVBvc2l0aW9uKHNoYXBlKSB7XHJcbiAgICByZXR1cm4gc2hhcGUuYmJveC55IC0gKHNoYXBlLmFkZGl0aW9uYWxXaWR0aCAvIDIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TWluWU9mZnNldChzaGFwZXMpIHtcclxuICAgIHZhciBmaWx0ZXJTaGFwZXMgPSBzaGFwZXMuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XHJcbiAgICAgIHJldHVybiBzLnR5cGUgIT09ICdicG1uMi5GbG93J1xyXG4gICAgICAgICYmIHMudHlwZSAhPSAnYnBtbjIuQ29udmVyc2F0aW9uTGluaydcclxuICAgICAgICAmJiBzLnR5cGUgIT0gJ2JwbW4yLkRhdGFBc3NvY2lhdGlvbidcclxuICAgICAgICAmJiBzLnR5cGUgIT0gJ2JwbW4yLkFubm90YXRpb25MaW5rJ1xyXG4gICAgfSk7XHJcbiAgICB2YXIgbWluVmFsdWU7XHJcbiAgICB2YXIgbWluT2JqZWN0O1xyXG5cclxuICAgIGlmICghZmlsdGVyU2hhcGVzIHx8ICFmaWx0ZXJTaGFwZXMubGVuZ3RoKSB7XHJcbiAgICAgIG1pblZhbHVlID0gc2hhcGVzWzBdLmJib3gueTtcclxuICAgICAgbWluT2JqZWN0ID0gc2hhcGVzWzBdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbWluVmFsdWUgPSBmaWx0ZXJTaGFwZXNbMF0uYmJveC55O1xyXG4gICAgICBtaW5PYmplY3QgPSBmaWx0ZXJTaGFwZXNbMF07XHJcbiAgICB9XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBmaWx0ZXJTaGFwZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdmFyIHlQb3NpdGlvbiA9IHRoaXMuZ2V0WVBvc2l0aW9uKGZpbHRlclNoYXBlc1tpXSk7XHJcbiAgICAgIGlmICh5UG9zaXRpb24gPCBtaW5WYWx1ZSkge1xyXG4gICAgICAgIG1pblZhbHVlID0geVBvc2l0aW9uO1xyXG4gICAgICAgIG1pbk9iamVjdCA9IGZpbHRlclNoYXBlc1tpXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1pblZhbHVlO1xyXG4gIH07XHJcbn1cclxuIl19
|
@@ -8,6 +8,7 @@ import { FlowChartConst } from "../../common/constants/ckeditorFlowchart.const";
|
|
8
8
|
import { KeyboardService } from "../../common/flowchart/service/keyboard-service";
|
9
9
|
import RappidService from '../../common/flowchart/service/kitchensink-service';
|
10
10
|
import { ThemePicker } from "../../common/flowchart/themes/theme-picker";
|
11
|
+
import { base64StringToFile } from "../../common/helper/fileHelper";
|
11
12
|
import guidHelper from "../../common/helper/guidHelper";
|
12
13
|
import { QMSCKEditorDialogData } from "../../common/models/qms-ckeditor-dialog.model";
|
13
14
|
import { QMSCKEditorFlowchart } from "../../common/models/qms-ckeditor-flowchart.model";
|
@@ -16,14 +17,16 @@ import { QMSCKEditorConfirmComponent } from "../../common/module/confirm/qms-cke
|
|
16
17
|
import { QMSCKEditorToastService } from "../../common/toast/qms-ckeditor-toast.service";
|
17
18
|
import { QMSCKEditorBaseComponent } from "../../qms-ckeditor-base.component";
|
18
19
|
import { QMSCKEditorFlowchartService } from "../../services/qms-ckeditor-flowchart.service";
|
20
|
+
import { QMSCKEditorUploadService } from "../../services/qms-ckeditor-upload.service";
|
19
21
|
import { SaveTemplateComponent } from "../qms-ckeditor-bpmn/save-template/save-template.component";
|
20
22
|
export class QMSCKEditorFlowchartComponent extends QMSCKEditorBaseComponent {
|
21
|
-
constructor(dialog, element, translate, flowchartService, dialogRef, data) {
|
23
|
+
constructor(dialog, element, translate, flowchartService, uploadService, dialogRef, data) {
|
22
24
|
super();
|
23
25
|
this.dialog = dialog;
|
24
26
|
this.element = element;
|
25
27
|
this.translate = translate;
|
26
28
|
this.flowchartService = flowchartService;
|
29
|
+
this.uploadService = uploadService;
|
27
30
|
this.dialogRef = dialogRef;
|
28
31
|
this.data = data;
|
29
32
|
this.jsonContent = '';
|
@@ -190,7 +193,9 @@ export class QMSCKEditorFlowchartComponent extends QMSCKEditorBaseComponent {
|
|
190
193
|
return __awaiter(this, void 0, void 0, function* () {
|
191
194
|
const id = yield this.saveImageContent();
|
192
195
|
const imageContent = yield this.rappid.getImageContent();
|
193
|
-
const
|
196
|
+
const file = base64StringToFile(imageContent, `${CKEditorEventConst.QMSCK_FLOWCHART}#${id}`);
|
197
|
+
const relativeUrl = yield this.uploadService.uploadImage(file).toPromise();
|
198
|
+
const result = { key: `${CKEditorEventConst.QMSCK_FLOWCHART}#${id}`, values: relativeUrl };
|
194
199
|
this.dialogRef.close(result);
|
195
200
|
});
|
196
201
|
}
|
@@ -308,10 +313,11 @@ QMSCKEditorFlowchartComponent.ctorParameters = () => [
|
|
308
313
|
{ type: ElementRef },
|
309
314
|
{ type: TranslateLibraryService },
|
310
315
|
{ type: QMSCKEditorFlowchartService },
|
316
|
+
{ type: QMSCKEditorUploadService },
|
311
317
|
{ type: MatDialogRef },
|
312
318
|
{ type: String, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
|
313
319
|
];
|
314
320
|
QMSCKEditorFlowchartComponent.propDecorators = {
|
315
321
|
onMessage: [{ type: HostListener, args: ['window:message', ['$event'],] }]
|
316
322
|
};
|
317
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWZsb3djaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL3Ftcy1ja2VkaXRvci1jb21wb25lbnRzL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLWZsb3djaGFydC9xbXMtY2tlZGl0b3ItZmxvd2NoYXJ0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDbEYsT0FBTyxhQUFhLE1BQU0sb0RBQW9ELENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pFLE9BQU8sVUFBVSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXRGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FB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QztRQUNILFNBQVM7YUFDTixXQUFXLEVBQUU7YUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNsQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNwQixJQUFJLE1BQU0sRUFBRTtnQkFDVixNQUFNO2FBQ1A7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs7WUFsVEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6QiwyakVBQXNEOzthQUV2RDs7O1lBdkJRLFNBQVM7WUFEaUIsVUFBVTtZQUdwQyx1QkFBdUI7WUFjdkIsMkJBQTJCO1lBaEJoQixZQUFZO3lDQXdDM0IsTUFBTSxTQUFDLGVBQWU7Ozt3QkFLeEIsWUFBWSxTQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ0tFZGl0b3JFdmVudENvbnN0IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9jb25zdGFudHMvY2tlZGl0b3JFdmVudC5jb25zdGFudFwiO1xyXG5pbXBvcnQgeyBGbG93Q2hhcnRDb25zdCB9IGZyb20gXCIuLi8uLi9jb21tb24vY29uc3RhbnRzL2NrZWRpdG9yRmxvd2NoYXJ0LmNvbnN0XCI7XHJcbmltcG9ydCB7IEtleWJvYXJkU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb21tb24vZmxvd2NoYXJ0L3NlcnZpY2Uva2V5Ym9hcmQtc2VydmljZVwiO1xyXG5pbXBvcnQgUmFwcGlkU2VydmljZSBmcm9tICcuLi8uLi9jb21tb24vZmxvd2NoYXJ0L3NlcnZpY2Uva2l0Y2hlbnNpbmstc2VydmljZSc7XHJcbmltcG9ydCB7IFRoZW1lUGlja2VyIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9mbG93Y2hhcnQvdGhlbWVzL3RoZW1lLXBpY2tlclwiO1xyXG5pbXBvcnQgZ3VpZEhlbHBlciBmcm9tIFwiLi4vLi4vY29tbW9uL2hlbHBlci9ndWlkSGVscGVyXCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1kaWFsb2cubW9kZWxcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JGbG93Y2hhcnRUZW1wbGF0ZSB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1mbG93Y2hhcnQtdGVtcGxhdGUubW9kZWxcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JGbG93Y2hhcnQgfSBmcm9tIFwiLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItZmxvd2NoYXJ0Lm1vZGVsXCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yU2F2ZUFzVGVtcGxhdGUgfSBmcm9tIFwiLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3Itc2F2ZS1hcy10ZW1wbGF0ZS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckNvbmZpcm1Db21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tbW9uL21vZHVsZS9jb25maXJtL3Ftcy1ja2VkaXRvci1jb25maXJtLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclRvYXN0U2VydmljZSB9IGZyb20gXCIuLi8uLi9jb21tb24vdG9hc3QvcW1zLWNrZWRpdG9yLXRvYXN0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL3Ftcy1ja2VkaXRvci1iYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckZsb3djaGFydFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLWZsb3djaGFydC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNhdmVUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gXCIuLi9xbXMtY2tlZGl0b3ItYnBtbi9zYXZlLXRlbXBsYXRlL3NhdmUtdGVtcGxhdGUuY29tcG9uZW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3Ftcy1mbG93Y2hhcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9xbXMtY2tlZGl0b3ItZmxvd2NoYXJ0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9xbXMtY2tlZGl0b3ItZmxvd2NoYXJ0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBRTVNDS0VkaXRvckZsb3djaGFydENvbXBvbmVudCBleHRlbmRzIFFNU0NLRWRpdG9yQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgTEFORzogYW55O1xyXG4gIGpzb25Db250ZW50OiBzdHJpbmcgPSAnJztcclxuICByYXBwaWQ6IFJhcHBpZFNlcnZpY2U7XHJcbiAgaWQgPSAnJztcclxuICBmbG93Y2hhcnQ6IFFNU0NLRWRpdG9yRmxvd2NoYXJ0ID0gbmV3IFFNU0NLRWRpdG9yRmxvd2NoYXJ0KCk7XHJcbiAgZmxvd2NoYXJ0VGVtcGxhdGVzOiBRTVNDS0VkaXRvckZsb3djaGFydFRlbXBsYXRlW10gPSBbXTtcclxuICB0b29sYmFyQ29uZmlnOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgZmxvd2NoYXJ0U2VydmljZTogUU1TQ0tFZGl0b3JGbG93Y2hhcnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFFNU0NLRWRpdG9yRmxvd2NoYXJ0Q29tcG9uZW50PixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogc3RyaW5nKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5pZCA9IGRhdGE7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bWVzc2FnZScsIFsnJGV2ZW50J10pXHJcbiAgb25NZXNzYWdlKGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuZGF0YSA9PT0gRmxvd0NoYXJ0Q29uc3QuS1NfQ0hBTkdFX1RFTVBMQVRFKSB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2VUZW1wbGF0ZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXZlbnQuZGF0YSA9PT0gRmxvd0NoYXJ0Q29uc3QuS1NfREVMRVRFX1RFTVBMQVRFKSB7XHJcbiAgICAgIHRoaXMub25EZWxldGVUZW1wbGF0ZSh0aGlzLkxBTkcuQlBNTi5ERUxFVEVfVEVNUExBVEUsIHRoaXMuTEFORy5RTVNDS0VESVRPUl9NRVNTQUdFLkNPTkZJUk1fREVMRVRFX1RFTVBMQVRFKVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXZlbnQuZGF0YSA9PT0gRmxvd0NoYXJ0Q29uc3QuTVVTVF9TRUxFQ1RfVEVNUExBVEUpIHtcclxuICAgICAgdGhpcy5zaG93SW5mb01lc3NhZ2UodGhpcy5MQU5HLkJQTU4uU0VMRUNUX1RFTVBMQVRFLCB0aGlzLkxBTkcuQlBNTi5TRUxFQ1RfVEVNUExBVEVfSU5GT1JNQVRJT04pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXZlbnQuZGF0YSA9PT0gRmxvd0NoYXJ0Q29uc3QuS1NfU0FWRV9BU19URU1QTEFURSkge1xyXG4gICAgICB0aGlzLm9uU2F2ZUFzVGVtcGxhdGUoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV2ZW50LmRhdGEgPT09IEZsb3dDaGFydENvbnN0LktTX1JFU0VUX1RFTVBMQVRFKSB7XHJcbiAgICAgIHRoaXMub25SZXNldFRlbXBsYXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5pZCkge1xyXG4gICAgICB0aGlzLmpzb25Db250ZW50ID0gYXdhaXQgdGhpcy5nZXRKc29uQ29udGVudCh0aGlzLmlkKTtcclxuICAgIH1cclxuICAgIHRoaXMucmFwcGlkID0gbmV3IFJhcHBpZFNlcnZpY2UoXHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxyXG4gICAgICBuZXcgS2V5Ym9hcmRTZXJ2aWNlKCksXHJcbiAgICAgIHRoaXMuTEFOR1xyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnJhcHBpZC5zdGFydFJhcHBpZCgpO1xyXG5cclxuICAgIGNvbnN0IHRoZW1lUGlja2VyID0gbmV3IFRoZW1lUGlja2VyKHsgbWFpblZpZXc6IHRoaXMucmFwcGlkIH0pO1xyXG4gICAgdGhlbWVQaWNrZXIucmVuZGVyKCkuJGVsLmFwcGVuZFRvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGVtZXBpY2tlcicpKTtcclxuXHJcbiAgICBpZiAodGhpcy5qc29uQ29udGVudCkge1xyXG4gICAgICB0aGlzLnJhcHBpZC5ncmFwaC5mcm9tSlNPTihKU09OLnBhcnNlKHRoaXMuanNvbkNvbnRlbnQpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuZmxvd2NoYXJ0VGVtcGxhdGVzID0gYXdhaXQgdGhpcy5nZXRUZW1wbGF0ZXMoKTtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZVRlbXBsYXRlcyh0aGlzLmZsb3djaGFydFRlbXBsYXRlcyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgZ2V0SnNvbkNvbnRlbnQoaWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgdGhpcy5mbG93Y2hhcnRTZXJ2aWNlXHJcbiAgICAgICAgLmdldEZsb3djaGFydEJ5SWQoaWQpXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQuanNvbkNvbnRlbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFRlbXBsYXRlcygpOiBQcm9taXNlPFFNU0NLRWRpdG9yRmxvd2NoYXJ0VGVtcGxhdGVbXT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIHRoaXMuZmxvd2NoYXJ0U2VydmljZVxyXG4gICAgICAgIC5mbG93Y2hhcnRHZXRUZW1wbGF0ZXMoKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplVGVtcGxhdGVzKHRlbXBsYXRlczogUU1TQ0tFZGl0b3JGbG93Y2hhcnRUZW1wbGF0ZVtdKSB7XHJcbiAgICBpZiAodGVtcGxhdGVzKSB7XHJcbiAgICAgIHRoaXMudG9vbGJhckNvbmZpZyA9IHRoaXMucmFwcGlkLnRvb2xiYXI7XHJcbiAgICAgIGNvbnN0IGFyclNlbGVjdCA9IHRoaXMudG9vbGJhckNvbmZpZy50b29scy5maWx0ZXIoKGl0ZW0pID0+IHtcclxuICAgICAgICByZXR1cm4gaXRlbS50eXBlID09PSAnc2VsZWN0LWJveCc7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoYXJyU2VsZWN0ICYmIGFyclNlbGVjdFswXSkge1xyXG4gICAgICAgIHRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBvcHRpb24gPSB7XHJcbiAgICAgICAgICAgIGluZGV4OiBpdGVtLmluZGV4LFxyXG4gICAgICAgICAgICBjb250ZW50OiBpdGVtLnRlbXBsYXRlTmFtZSxcclxuICAgICAgICAgICAgZmxvd0NoYXJ0SWQ6IGl0ZW0uaWQsXHJcbiAgICAgICAgICAgIG5hbWU6IGl0ZW0udGVtcGxhdGVOYW1lLFxyXG4gICAgICAgICAgICBqc29uQ29udGVudDogaXRlbS5qc29uQ29udGVudCxcclxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgY29uc3QgaW5kZXggPSBhcnJTZWxlY3RbMF0ub3B0aW9ucy5maW5kSW5kZXgoKHgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHguaW5kZXggPT09IG9wdGlvbi5pbmRleDtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKGluZGV4IDwgMCkge1xyXG4gICAgICAgICAgICBhcnJTZWxlY3RbMF0ub3B0aW9ucy5wdXNoKG9wdGlvbik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZEl0ZW0yVGVtcGxhdGUodGVtcGxhdGU/OiBRTVNDS0VkaXRvckZsb3djaGFydFRlbXBsYXRlKSB7XHJcbiAgICB0aGlzLnRvb2xiYXJDb25maWcgPSB0aGlzLnJhcHBpZC50b29sYmFyO1xyXG4gICAgY29uc3QgYXJyU2VsZWN0ID0gdGhpcy50b29sYmFyQ29uZmlnLnRvb2xzLmZpbHRlcigoaXRlbSkgPT4ge1xyXG4gICAgICByZXR1cm4gaXRlbS50eXBlID09PSAnc2VsZWN0LWJveCc7XHJcbiAgICB9KTtcclxuICAgIGlmIChhcnJTZWxlY3QpIHtcclxuICAgICAgY29uc3Qgb3B0aW9uID0ge1xyXG4gICAgICAgIGluZGV4OiAxLFxyXG4gICAgICAgIGNvbnRlbnQ6IHRlbXBsYXRlLnRlbXBsYXRlTmFtZSxcclxuICAgICAgICBmbG93Q2hhcnRJZDogdGVtcGxhdGUuaWQsXHJcbiAgICAgICAgbmFtZTogdGVtcGxhdGUudGVtcGxhdGVOYW1lLFxyXG4gICAgICAgIGpzb25Db250ZW50OiB0ZW1wbGF0ZS5qc29uQ29udGVudCxcclxuICAgICAgICBzZWxlY3RlZDogZmFsc2VcclxuICAgICAgfTtcclxuICAgICAgYXJyU2VsZWN0WzBdLm9wdGlvbnMucHVzaChvcHRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlU2VsZWN0ZWRWYWx1ZShmbG93Q2hhcnRJZD86IHN0cmluZykge1xyXG4gICAgdGhpcy50b29sYmFyQ29uZmlnID0gdGhpcy5yYXBwaWQudG9vbGJhcjtcclxuICAgIGNvbnN0IGFyclNlbGVjdCA9IHRoaXMudG9vbGJhckNvbmZpZy50b29scy5maWx0ZXIoKGl0ZW0pID0+IHtcclxuICAgICAgcmV0dXJuIGl0ZW0udHlwZSA9PT0gJ3NlbGVjdC1ib3gnO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoYXJyU2VsZWN0KSB7XHJcbiAgICAgIGFyclNlbGVjdFswXS5vcHRpb25zLnNwbGljZShcclxuICAgICAgICBhcnJTZWxlY3RbMF0ub3B0aW9ucy5maW5kSW5kZXgoKGkpID0+IHtcclxuICAgICAgICAgIHJldHVybiBpLmZsb3dDaGFydElkID09PSBmbG93Q2hhcnRJZDtcclxuICAgICAgICB9KSxcclxuICAgICAgICAxXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0U2VsZWN0ZWRWYWx1ZSgpIHtcclxuICAgIHRoaXMudG9vbGJhckNvbmZpZyA9IHRoaXMucmFwcGlkLnRvb2xiYXI7XHJcbiAgICBjb25zdCBhcnJTZWxlY3QgPSB0aGlzLnRvb2xiYXJDb25maWcudG9vbHMuZmlsdGVyKChpdGVtKSA9PiB7XHJcbiAgICAgIHJldHVybiBpdGVtLnR5cGUgPT09ICdzZWxlY3QtYm94JztcclxuICAgIH0pO1xyXG4gICAgaWYgKGFyclNlbGVjdCkge1xyXG4gICAgICBhcnJTZWxlY3RbMF0ub3B0aW9uc1swXS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIGNvbnN0IGxpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGBzZWxlY3QtYm94LXNlbGVjdGlvbmApWzBdO1xyXG4gICAgICBsaXN0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYHNlbGVjdC1ib3gtb3B0aW9uLWNvbnRlbnRgKVswXS5pbm5lckhUTUwgPSBGbG93Q2hhcnRDb25zdC5TRUxFQ1RfVEVNUExBVEU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBzYXZlSW1hZ2VDb250ZW50KCkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIGNvbnN0IGpzb25Db250ZW50ID0gdGhpcy5yYXBwaWQuZ2V0SnNvbkNvbnRlbnQoKTtcclxuICAgICAgdGhpcy5mbG93Y2hhcnQgPSB7XHJcbiAgICAgICAgaWQ6IHRoaXMuaWQgPyB0aGlzLmlkIDogZ3VpZEhlbHBlci5lbXB0eSxcclxuICAgICAgICBqc29uQ29udGVudDoganNvbkNvbnRlbnQsXHJcbiAgICAgICAgaXNUZW1wbGF0ZTogZmFsc2UsXHJcbiAgICAgICAgdGVtcGxhdGVOYW1lOiAnJ1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmZsb3djaGFydFNlcnZpY2VcclxuICAgICAgICAuZmxvd2NoYXJ0TW9kaWZ5aW5nKHRoaXMuZmxvd2NoYXJ0KVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkluc2VydEltYWdlKCkge1xyXG4gICAgY29uc3QgaWQgPSBhd2FpdCB0aGlzLnNhdmVJbWFnZUNvbnRlbnQoKTtcclxuICAgIGNvbnN0IGltYWdlQ29udGVudCA9IGF3YWl0IHRoaXMucmFwcGlkLmdldEltYWdlQ29udGVudCgpO1xyXG4gICAgY29uc3QgcmVzdWx0ID0geyBrZXk6IGAke0NLRWRpdG9yRXZlbnRDb25zdC5RTVNDS19GTE9XQ0hBUlR9IyR7aWR9YCwgdmFsdWVzOiBpbWFnZUNvbnRlbnQgfVxyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UocmVzdWx0KTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlVGVtcGxhdGUoKSB7XHJcbiAgICBjb25zdCBqc29uVGVtcGxhdGUgPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuS1NfU0VMRUNURURfSlNPTkNPTlRFTlRdID8gd2luZG93W0Zsb3dDaGFydENvbnN0LktTX1NFTEVDVEVEX0pTT05DT05URU5UXSA6ICcnO1xyXG4gICAgaWYgKCF3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuS1NfSVNfU0VMRUNURURfVEVNUExBVEVdKSB7XHJcbiAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5LU19PUkdfSlNPTkNPTlRFTlRdID0gSlNPTi5zdHJpbmdpZnkodGhpcy5yYXBwaWQuZ3JhcGgudG9KU09OKCkpO1xyXG4gICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuS1NfSVNfU0VMRUNURURfVEVNUExBVEVdID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChqc29uVGVtcGxhdGUpIHtcclxuICAgICAgdGhpcy5yYXBwaWQuZ3JhcGguZnJvbUpTT04oSlNPTi5wYXJzZShqc29uVGVtcGxhdGUpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRGVsZXRlVGVtcGxhdGUodGl0bGU6IHN0cmluZywgY29udGVudDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkYXRhOiBRTVNDS0VkaXRvckRpYWxvZ0RhdGEgPSBuZXcgUU1TQ0tFZGl0b3JEaWFsb2dEYXRhKCk7XHJcbiAgICBkYXRhLnRpdGxlID0gdGl0bGU7XHJcbiAgICBkYXRhLmNvbnRlbnQgPSBjb250ZW50O1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvckNvbmZpcm1Db21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc1MDBweCcsXHJcbiAgICAgIG1pbkhlaWdodDogJzE3NXB4JyxcclxuICAgICAgZGF0YVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWZcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgaWQgPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuS1NfU0VMRUNURURfRkxPV0NIQVJUX0lEXTtcclxuICAgICAgICAgIHRoaXMuZmxvd2NoYXJ0U2VydmljZVxyXG4gICAgICAgICAgICAuZmxvd2NoYXJ0RGVsZXRlVGVtcGxhdGUoaWQpXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlU2VsZWN0ZWRWYWx1ZShpZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERlZmF1bHRTZWxlY3RlZFZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuS1NfSVNfU0VMRUNURURfVEVNUExBVEVdID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBRTVNDS0VkaXRvclRvYXN0U2VydmljZS5zdWNjZXNzKHRoaXMuTEFORy5RTVNDS0VESVRPUi5ERUxFVEVEKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBRTVNDS0VkaXRvclRvYXN0U2VydmljZS5lcnJvcih0aGlzLkxBTkcuUU1TQ0tFRElUT1IuREVMRVRFX0ZBSUxFRCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblNhdmVBc1RlbXBsYXRlKCkge1xyXG4gICAgY29uc3QganNvbkNvbnRlbnQgPSBKU09OLnN0cmluZ2lmeSh0aGlzLnJhcHBpZC5ncmFwaC50b0pTT04oKSk7XHJcbiAgICBsZXQgdGVtcGxhdGUgPSBuZXcgUU1TQ0tFZGl0b3JGbG93Y2hhcnQoKTtcclxuICAgIHRlbXBsYXRlID0ge1xyXG4gICAgICBpZDogZ3VpZEhlbHBlci5lbXB0eSxcclxuICAgICAganNvbkNvbnRlbnQ6IGpzb25Db250ZW50LFxyXG4gICAgICBpc1RlbXBsYXRlOiB0cnVlLFxyXG4gICAgICB0ZW1wbGF0ZU5hbWU6ICcnXHJcbiAgICB9XHJcbiAgICBsZXQgZGF0YSA9IG5ldyBRTVNDS0VkaXRvclNhdmVBc1RlbXBsYXRlKCk7XHJcbiAgICBkYXRhLnRlbXBsYXRlVHlwZSA9IENLRWRpdG9yRXZlbnRDb25zdC5RTVNDS19GTE9XQ0hBUlQ7XHJcbiAgICBkYXRhLmZsb3djaGFydCA9IHRlbXBsYXRlO1xyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFNhdmVUZW1wbGF0ZUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzQ1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnMjIwcHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5hZGRJdGVtMlRlbXBsYXRlKHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUmVzZXRUZW1wbGF0ZSgpIHtcclxuICAgIGlmICh3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuS1NfSVNfU0VMRUNURURfVEVNUExBVEVdKSB7XHJcbiAgICAgIGNvbnN0IG9yZ1RlbXBsYXRlID0gd2luZG93W0Zsb3dDaGFydENvbnN0LktTX09SR19KU09OQ09OVEVOVF0gPyB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuS1NfT1JHX0pTT05DT05URU5UXSA6ICcnO1xyXG4gICAgICBpZiAob3JnVGVtcGxhdGUpIHtcclxuICAgICAgICB0aGlzLnJhcHBpZC5ncmFwaC5mcm9tSlNPTihKU09OLnBhcnNlKG9yZ1RlbXBsYXRlKSk7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0U2VsZWN0ZWRWYWx1ZSgpO1xyXG4gICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5LU19JU19TRUxFQ1RFRF9URU1QTEFURV0gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd0luZm9NZXNzYWdlKHRpdGxlOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgZGF0YTogUU1TQ0tFZGl0b3JEaWFsb2dEYXRhID0gbmV3IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSgpO1xyXG4gICAgZGF0YS50aXRsZSA9IHRpdGxlO1xyXG4gICAgZGF0YS5jb250ZW50ID0gY29udGVudDtcclxuICAgIGRhdGEuaXNNZXNzYWdlID0gdHJ1ZTtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JDb25maXJtQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnNTAwcHgnLFxyXG4gICAgICBtaW5IZWlnaHQ6ICcxNzVweCcsXHJcbiAgICAgIGRhdGFcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIC8vVE9ET1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlRGlhbG9nKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcbn1cclxuIl19
|
323
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWZsb3djaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL3Ftcy1ja2VkaXRvci1jb21wb25lbnRzL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLWZsb3djaGFydC9xbXMtY2tlZGl0b3ItZmxvd2NoYXJ0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDbEYsT0FBTyxhQUFhLE1BQU0sb0RBQW9ELENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sVUFBVSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXRGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FB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LGVBQWUsQ0FBQyxLQUFhLEVBQUUsT0FBZTtRQUM1QyxNQUFNLElBQUksR0FBMEIsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDJCQUEyQixFQUFFO1lBQzlELEtBQUssRUFBRSxPQUFPO1lBQ2QsU0FBUyxFQUFFLE9BQU87WUFDbEIsSUFBSTtTQUNMLENBQUMsQ0FBQztRQUNILFNBQVM7YUFDTixXQUFXLEVBQUU7YUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNsQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNwQixJQUFJLE1BQU0sRUFBRTtnQkFDVixNQUFNO2FBQ1A7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs7WUFyVEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6QiwyakVBQXNEOzthQUV2RDs7O1lBekJRLFNBQVM7WUFEaUIsVUFBVTtZQUdwQyx1QkFBdUI7WUFldkIsMkJBQTJCO1lBQzNCLHdCQUF3QjtZQWxCYixZQUFZO3lDQTJDM0IsTUFBTSxTQUFDLGVBQWU7Ozt3QkFLeEIsWUFBWSxTQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ0tFZGl0b3JFdmVudENvbnN0IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9jb25zdGFudHMvY2tlZGl0b3JFdmVudC5jb25zdGFudFwiO1xyXG5pbXBvcnQgeyBGbG93Q2hhcnRDb25zdCB9IGZyb20gXCIuLi8uLi9jb21tb24vY29uc3RhbnRzL2NrZWRpdG9yRmxvd2NoYXJ0LmNvbnN0XCI7XHJcbmltcG9ydCB7IEtleWJvYXJkU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb21tb24vZmxvd2NoYXJ0L3NlcnZpY2Uva2V5Ym9hcmQtc2VydmljZVwiO1xyXG5pbXBvcnQgUmFwcGlkU2VydmljZSBmcm9tICcuLi8uLi9jb21tb24vZmxvd2NoYXJ0L3NlcnZpY2Uva2l0Y2hlbnNpbmstc2VydmljZSc7XHJcbmltcG9ydCB7IFRoZW1lUGlja2VyIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9mbG93Y2hhcnQvdGhlbWVzL3RoZW1lLXBpY2tlclwiO1xyXG5pbXBvcnQgeyBiYXNlNjRTdHJpbmdUb0ZpbGUgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2hlbHBlci9maWxlSGVscGVyXCI7XHJcbmltcG9ydCBndWlkSGVscGVyIGZyb20gXCIuLi8uLi9jb21tb24vaGVscGVyL2d1aWRIZWxwZXJcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JEaWFsb2dEYXRhIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWRpYWxvZy5tb2RlbFwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckZsb3djaGFydFRlbXBsYXRlIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWZsb3djaGFydC10ZW1wbGF0ZS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckZsb3djaGFydCB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1mbG93Y2hhcnQubW9kZWxcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JTYXZlQXNUZW1wbGF0ZSB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1zYXZlLWFzLXRlbXBsYXRlLm1vZGVsXCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQ29uZmlybUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kdWxlL2NvbmZpcm0vcW1zLWNrZWRpdG9yLWNvbmZpcm0uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yVG9hc3RTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi90b2FzdC9xbXMtY2tlZGl0b3ItdG9hc3Quc2VydmljZVwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vcW1zLWNrZWRpdG9yLWJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yRmxvd2NoYXJ0U2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItZmxvd2NoYXJ0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JVcGxvYWRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci11cGxvYWQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTYXZlVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tIFwiLi4vcW1zLWNrZWRpdG9yLWJwbW4vc2F2ZS10ZW1wbGF0ZS9zYXZlLXRlbXBsYXRlLmNvbXBvbmVudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdxbXMtZmxvd2NoYXJ0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcW1zLWNrZWRpdG9yLWZsb3djaGFydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcW1zLWNrZWRpdG9yLWZsb3djaGFydC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JGbG93Y2hhcnRDb21wb25lbnQgZXh0ZW5kcyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIExBTkc6IGFueTtcclxuICBqc29uQ29udGVudDogc3RyaW5nID0gJyc7XHJcbiAgcmFwcGlkOiBSYXBwaWRTZXJ2aWNlO1xyXG4gIGlkID0gJyc7XHJcbiAgZmxvd2NoYXJ0OiBRTVNDS0VkaXRvckZsb3djaGFydCA9IG5ldyBRTVNDS0VkaXRvckZsb3djaGFydCgpO1xyXG4gIGZsb3djaGFydFRlbXBsYXRlczogUU1TQ0tFZGl0b3JGbG93Y2hhcnRUZW1wbGF0ZVtdID0gW107XHJcbiAgdG9vbGJhckNvbmZpZzogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZsb3djaGFydFNlcnZpY2U6IFFNU0NLRWRpdG9yRmxvd2NoYXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgdXBsb2FkU2VydmljZTogUU1TQ0tFZGl0b3JVcGxvYWRTZXJ2aWNlLFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFFNU0NLRWRpdG9yRmxvd2NoYXJ0Q29tcG9uZW50PixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogc3RyaW5nKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5pZCA9IGRhdGE7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bWVzc2FnZScsIFsnJGV2ZW50J10pXHJcbiAgb25NZXNzYWdlKGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuZGF0YSA9PT0gRmxvd0NoYXJ0Q29uc3QuS1NfQ0hBTkdFX1RFTVBMQVRFKSB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2VUZW1wbGF0ZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXZlbnQuZGF0YSA9PT0gRmxvd0NoYXJ0Q29uc3QuS1NfREVMRVRFX1RFTVBMQVRFKSB7XHJcbiAgICAgIHRoaXMub25EZWxldGVUZW1wbGF0ZSh0aGlzLkxBTkcuQlBNTi5ERUxFVEVfVEVNUExBVEUsIHRoaXMuTEFORy5RTVNDS0VESVRPUl9NRVNTQUdFLkNPTkZJUk1fREVMRVRFX1RFTVBMQVRFKVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXZlbnQuZGF0YSA9PT0gRmxvd0NoYXJ0Q29uc3QuTVVTVF9TRUxFQ1RfVEVNUExBVEUpIHtcclxuICAgICAgdGhpcy5zaG93SW5mb01lc3NhZ2UodGhpcy5MQU5HLkJQTU4uU0VMRUNUX1RFTVBMQVRFLCB0aGlzLkxBTkcuQlBNTi5TRUxFQ1RfVEVNUExBVEVfSU5GT1JNQVRJT04pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXZlbnQuZGF0YSA9PT0gRmxvd0NoYXJ0Q29uc3QuS1NfU0FWRV9BU19URU1QTEFURSkge1xyXG4gICAgICB0aGlzLm9uU2F2ZUFzVGVtcGxhdGUoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV2ZW50LmRhdGEgPT09IEZsb3dDaGFydENvbnN0LktTX1JFU0VUX1RFTVBMQVRFKSB7XHJcbiAgICAgIHRoaXMub25SZXNldFRlbXBsYXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5pZCkge1xyXG4gICAgICB0aGlzLmpzb25Db250ZW50ID0gYXdhaXQgdGhpcy5nZXRKc29uQ29udGVudCh0aGlzLmlkKTtcclxuICAgIH1cclxuICAgIHRoaXMucmFwcGlkID0gbmV3IFJhcHBpZFNlcnZpY2UoXHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxyXG4gICAgICBuZXcgS2V5Ym9hcmRTZXJ2aWNlKCksXHJcbiAgICAgIHRoaXMuTEFOR1xyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnJhcHBpZC5zdGFydFJhcHBpZCgpO1xyXG5cclxuICAgIGNvbnN0IHRoZW1lUGlja2VyID0gbmV3IFRoZW1lUGlja2VyKHsgbWFpblZpZXc6IHRoaXMucmFwcGlkIH0pO1xyXG4gICAgdGhlbWVQaWNrZXIucmVuZGVyKCkuJGVsLmFwcGVuZFRvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGVtZXBpY2tlcicpKTtcclxuXHJcbiAgICBpZiAodGhpcy5qc29uQ29udGVudCkge1xyXG4gICAgICB0aGlzLnJhcHBpZC5ncmFwaC5mcm9tSlNPTihKU09OLnBhcnNlKHRoaXMuanNvbkNvbnRlbnQpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuZmxvd2NoYXJ0VGVtcGxhdGVzID0gYXdhaXQgdGhpcy5nZXRUZW1wbGF0ZXMoKTtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZVRlbXBsYXRlcyh0aGlzLmZsb3djaGFydFRlbXBsYXRlcyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgZ2V0SnNvbkNvbnRlbnQoaWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgdGhpcy5mbG93Y2hhcnRTZXJ2aWNlXHJcbiAgICAgICAgLmdldEZsb3djaGFydEJ5SWQoaWQpXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQuanNvbkNvbnRlbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFRlbXBsYXRlcygpOiBQcm9taXNlPFFNU0NLRWRpdG9yRmxvd2NoYXJ0VGVtcGxhdGVbXT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIHRoaXMuZmxvd2NoYXJ0U2VydmljZVxyXG4gICAgICAgIC5mbG93Y2hhcnRHZXRUZW1wbGF0ZXMoKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplVGVtcGxhdGVzKHRlbXBsYXRlczogUU1TQ0tFZGl0b3JGbG93Y2hhcnRUZW1wbGF0ZVtdKSB7XHJcbiAgICBpZiAodGVtcGxhdGVzKSB7XHJcbiAgICAgIHRoaXMudG9vbGJhckNvbmZpZyA9IHRoaXMucmFwcGlkLnRvb2xiYXI7XHJcbiAgICAgIGNvbnN0IGFyclNlbGVjdCA9IHRoaXMudG9vbGJhckNvbmZpZy50b29scy5maWx0ZXIoKGl0ZW0pID0+IHtcclxuICAgICAgICByZXR1cm4gaXRlbS50eXBlID09PSAnc2VsZWN0LWJveCc7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoYXJyU2VsZWN0ICYmIGFyclNlbGVjdFswXSkge1xyXG4gICAgICAgIHRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBvcHRpb24gPSB7XHJcbiAgICAgICAgICAgIGluZGV4OiBpdGVtLmluZGV4LFxyXG4gICAgICAgICAgICBjb250ZW50OiBpdGVtLnRlbXBsYXRlTmFtZSxcclxuICAgICAgICAgICAgZmxvd0NoYXJ0SWQ6IGl0ZW0uaWQsXHJcbiAgICAgICAgICAgIG5hbWU6IGl0ZW0udGVtcGxhdGVOYW1lLFxyXG4gICAgICAgICAgICBqc29uQ29udGVudDogaXRlbS5qc29uQ29udGVudCxcclxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgY29uc3QgaW5kZXggPSBhcnJTZWxlY3RbMF0ub3B0aW9ucy5maW5kSW5kZXgoKHgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHguaW5kZXggPT09IG9wdGlvbi5pbmRleDtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKGluZGV4IDwgMCkge1xyXG4gICAgICAgICAgICBhcnJTZWxlY3RbMF0ub3B0aW9ucy5wdXNoKG9wdGlvbik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZEl0ZW0yVGVtcGxhdGUodGVtcGxhdGU/OiBRTVNDS0VkaXRvckZsb3djaGFydFRlbXBsYXRlKSB7XHJcbiAgICB0aGlzLnRvb2xiYXJDb25maWcgPSB0aGlzLnJhcHBpZC50b29sYmFyO1xyXG4gICAgY29uc3QgYXJyU2VsZWN0ID0gdGhpcy50b29sYmFyQ29uZmlnLnRvb2xzLmZpbHRlcigoaXRlbSkgPT4ge1xyXG4gICAgICByZXR1cm4gaXRlbS50eXBlID09PSAnc2VsZWN0LWJveCc7XHJcbiAgICB9KTtcclxuICAgIGlmIChhcnJTZWxlY3QpIHtcclxuICAgICAgY29uc3Qgb3B0aW9uID0ge1xyXG4gICAgICAgIGluZGV4OiAxLFxyXG4gICAgICAgIGNvbnRlbnQ6IHRlbXBsYXRlLnRlbXBsYXRlTmFtZSxcclxuICAgICAgICBmbG93Q2hhcnRJZDogdGVtcGxhdGUuaWQsXHJcbiAgICAgICAgbmFtZTogdGVtcGxhdGUudGVtcGxhdGVOYW1lLFxyXG4gICAgICAgIGpzb25Db250ZW50OiB0ZW1wbGF0ZS5qc29uQ29udGVudCxcclxuICAgICAgICBzZWxlY3RlZDogZmFsc2VcclxuICAgICAgfTtcclxuICAgICAgYXJyU2VsZWN0WzBdLm9wdGlvbnMucHVzaChvcHRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlU2VsZWN0ZWRWYWx1ZShmbG93Q2hhcnRJZD86IHN0cmluZykge1xyXG4gICAgdGhpcy50b29sYmFyQ29uZmlnID0gdGhpcy5yYXBwaWQudG9vbGJhcjtcclxuICAgIGNvbnN0IGFyclNlbGVjdCA9IHRoaXMudG9vbGJhckNvbmZpZy50b29scy5maWx0ZXIoKGl0ZW0pID0+IHtcclxuICAgICAgcmV0dXJuIGl0ZW0udHlwZSA9PT0gJ3NlbGVjdC1ib3gnO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoYXJyU2VsZWN0KSB7XHJcbiAgICAgIGFyclNlbGVjdFswXS5vcHRpb25zLnNwbGljZShcclxuICAgICAgICBhcnJTZWxlY3RbMF0ub3B0aW9ucy5maW5kSW5kZXgoKGkpID0+IHtcclxuICAgICAgICAgIHJldHVybiBpLmZsb3dDaGFydElkID09PSBmbG93Q2hhcnRJZDtcclxuICAgICAgICB9KSxcclxuICAgICAgICAxXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0U2VsZWN0ZWRWYWx1ZSgpIHtcclxuICAgIHRoaXMudG9vbGJhckNvbmZpZyA9IHRoaXMucmFwcGlkLnRvb2xiYXI7XHJcbiAgICBjb25zdCBhcnJTZWxlY3QgPSB0aGlzLnRvb2xiYXJDb25maWcudG9vbHMuZmlsdGVyKChpdGVtKSA9PiB7XHJcbiAgICAgIHJldHVybiBpdGVtLnR5cGUgPT09ICdzZWxlY3QtYm94JztcclxuICAgIH0pO1xyXG4gICAgaWYgKGFyclNlbGVjdCkge1xyXG4gICAgICBhcnJTZWxlY3RbMF0ub3B0aW9uc1swXS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIGNvbnN0IGxpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGBzZWxlY3QtYm94LXNlbGVjdGlvbmApWzBdO1xyXG4gICAgICBsaXN0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYHNlbGVjdC1ib3gtb3B0aW9uLWNvbnRlbnRgKVswXS5pbm5lckhUTUwgPSBGbG93Q2hhcnRDb25zdC5TRUxFQ1RfVEVNUExBVEU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBzYXZlSW1hZ2VDb250ZW50KCkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIGNvbnN0IGpzb25Db250ZW50ID0gdGhpcy5yYXBwaWQuZ2V0SnNvbkNvbnRlbnQoKTtcclxuICAgICAgdGhpcy5mbG93Y2hhcnQgPSB7XHJcbiAgICAgICAgaWQ6IHRoaXMuaWQgPyB0aGlzLmlkIDogZ3VpZEhlbHBlci5lbXB0eSxcclxuICAgICAgICBqc29uQ29udGVudDoganNvbkNvbnRlbnQsXHJcbiAgICAgICAgaXNUZW1wbGF0ZTogZmFsc2UsXHJcbiAgICAgICAgdGVtcGxhdGVOYW1lOiAnJ1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmZsb3djaGFydFNlcnZpY2VcclxuICAgICAgICAuZmxvd2NoYXJ0TW9kaWZ5aW5nKHRoaXMuZmxvd2NoYXJ0KVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkluc2VydEltYWdlKCkge1xyXG4gICAgY29uc3QgaWQgPSBhd2FpdCB0aGlzLnNhdmVJbWFnZUNvbnRlbnQoKTtcclxuICAgIGNvbnN0IGltYWdlQ29udGVudCA9IGF3YWl0IHRoaXMucmFwcGlkLmdldEltYWdlQ29udGVudCgpO1xyXG4gICAgY29uc3QgZmlsZSA9IGJhc2U2NFN0cmluZ1RvRmlsZShpbWFnZUNvbnRlbnQsIGAke0NLRWRpdG9yRXZlbnRDb25zdC5RTVNDS19GTE9XQ0hBUlR9IyR7aWR9YCk7XHJcbiAgICBjb25zdCByZWxhdGl2ZVVybCA9IGF3YWl0IHRoaXMudXBsb2FkU2VydmljZS51cGxvYWRJbWFnZShmaWxlKS50b1Byb21pc2UoKTtcclxuICAgIGNvbnN0IHJlc3VsdCA9IHsga2V5OiBgJHtDS0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfRkxPV0NIQVJUfSMke2lkfWAsIHZhbHVlczogcmVsYXRpdmVVcmwgfVxyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UocmVzdWx0KTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlVGVtcGxhdGUoKSB7XHJcbiAgICBjb25zdCBqc29uVGVtcGxhdGUgPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuS1NfU0VMRUNURURfSlNPTkNPTlRFTlRdID8gd2luZG93W0Zsb3dDaGFydENvbnN0LktTX1NFTEVDVEVEX0pTT05DT05URU5UXSA6ICcnO1xyXG4gICAgaWYgKCF3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuS1NfSVNfU0VMRUNURURfVEVNUExBVEVdKSB7XHJcbiAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5LU19PUkdfSlNPTkNPTlRFTlRdID0gSlNPTi5zdHJpbmdpZnkodGhpcy5yYXBwaWQuZ3JhcGgudG9KU09OKCkpO1xyXG4gICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuS1NfSVNfU0VMRUNURURfVEVNUExBVEVdID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChqc29uVGVtcGxhdGUpIHtcclxuICAgICAgdGhpcy5yYXBwaWQuZ3JhcGguZnJvbUpTT04oSlNPTi5wYXJzZShqc29uVGVtcGxhdGUpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRGVsZXRlVGVtcGxhdGUodGl0bGU6IHN0cmluZywgY29udGVudDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkYXRhOiBRTVNDS0VkaXRvckRpYWxvZ0RhdGEgPSBuZXcgUU1TQ0tFZGl0b3JEaWFsb2dEYXRhKCk7XHJcbiAgICBkYXRhLnRpdGxlID0gdGl0bGU7XHJcbiAgICBkYXRhLmNvbnRlbnQgPSBjb250ZW50O1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvckNvbmZpcm1Db21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc1MDBweCcsXHJcbiAgICAgIG1pbkhlaWdodDogJzE3NXB4JyxcclxuICAgICAgZGF0YVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWZcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgaWQgPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuS1NfU0VMRUNURURfRkxPV0NIQVJUX0lEXTtcclxuICAgICAgICAgIHRoaXMuZmxvd2NoYXJ0U2VydmljZVxyXG4gICAgICAgICAgICAuZmxvd2NoYXJ0RGVsZXRlVGVtcGxhdGUoaWQpXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlU2VsZWN0ZWRWYWx1ZShpZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERlZmF1bHRTZWxlY3RlZFZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuS1NfSVNfU0VMRUNURURfVEVNUExBVEVdID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBRTVNDS0VkaXRvclRvYXN0U2VydmljZS5zdWNjZXNzKHRoaXMuTEFORy5RTVNDS0VESVRPUi5ERUxFVEVEKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBRTVNDS0VkaXRvclRvYXN0U2VydmljZS5lcnJvcih0aGlzLkxBTkcuUU1TQ0tFRElUT1IuREVMRVRFX0ZBSUxFRCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblNhdmVBc1RlbXBsYXRlKCkge1xyXG4gICAgY29uc3QganNvbkNvbnRlbnQgPSBKU09OLnN0cmluZ2lmeSh0aGlzLnJhcHBpZC5ncmFwaC50b0pTT04oKSk7XHJcbiAgICBsZXQgdGVtcGxhdGUgPSBuZXcgUU1TQ0tFZGl0b3JGbG93Y2hhcnQoKTtcclxuICAgIHRlbXBsYXRlID0ge1xyXG4gICAgICBpZDogZ3VpZEhlbHBlci5lbXB0eSxcclxuICAgICAganNvbkNvbnRlbnQ6IGpzb25Db250ZW50LFxyXG4gICAgICBpc1RlbXBsYXRlOiB0cnVlLFxyXG4gICAgICB0ZW1wbGF0ZU5hbWU6ICcnXHJcbiAgICB9XHJcbiAgICBsZXQgZGF0YSA9IG5ldyBRTVNDS0VkaXRvclNhdmVBc1RlbXBsYXRlKCk7XHJcbiAgICBkYXRhLnRlbXBsYXRlVHlwZSA9IENLRWRpdG9yRXZlbnRDb25zdC5RTVNDS19GTE9XQ0hBUlQ7XHJcbiAgICBkYXRhLmZsb3djaGFydCA9IHRlbXBsYXRlO1xyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFNhdmVUZW1wbGF0ZUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzQ1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnMjIwcHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5hZGRJdGVtMlRlbXBsYXRlKHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUmVzZXRUZW1wbGF0ZSgpIHtcclxuICAgIGlmICh3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuS1NfSVNfU0VMRUNURURfVEVNUExBVEVdKSB7XHJcbiAgICAgIGNvbnN0IG9yZ1RlbXBsYXRlID0gd2luZG93W0Zsb3dDaGFydENvbnN0LktTX09SR19KU09OQ09OVEVOVF0gPyB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuS1NfT1JHX0pTT05DT05URU5UXSA6ICcnO1xyXG4gICAgICBpZiAob3JnVGVtcGxhdGUpIHtcclxuICAgICAgICB0aGlzLnJhcHBpZC5ncmFwaC5mcm9tSlNPTihKU09OLnBhcnNlKG9yZ1RlbXBsYXRlKSk7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0U2VsZWN0ZWRWYWx1ZSgpO1xyXG4gICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5LU19JU19TRUxFQ1RFRF9URU1QTEFURV0gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd0luZm9NZXNzYWdlKHRpdGxlOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgZGF0YTogUU1TQ0tFZGl0b3JEaWFsb2dEYXRhID0gbmV3IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSgpO1xyXG4gICAgZGF0YS50aXRsZSA9IHRpdGxlO1xyXG4gICAgZGF0YS5jb250ZW50ID0gY29udGVudDtcclxuICAgIGRhdGEuaXNNZXNzYWdlID0gdHJ1ZTtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JDb25maXJtQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnNTAwcHgnLFxyXG4gICAgICBtaW5IZWlnaHQ6ICcxNzVweCcsXHJcbiAgICAgIGRhdGFcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIC8vVE9ET1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlRGlhbG9nKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcbn1cclxuIl19
|