qms-angular 1.1.45 → 1.1.46

Sign up to get free protection for your applications and to get access to all the features.
@@ -428,7 +428,7 @@ export class QMSCKEditorImageMapComponent extends QMSCKEditorBaseComponent {
428
428
  data.moduleId = ModuleType.documentProcess;
429
429
  data.moduleName = this.LANG.QMSCKEDITOR.DOCUMENT_PROCESS;
430
430
  if (!isOnlyDocument) {
431
- const treeProcessData = yield this.treeService.getProcessAreaContents().toPromise();
431
+ const treeProcessData = yield this.treeService.getProcessAreaContents('', true, this.data.enabledInterconnected).toPromise();
432
432
  data.treeData1 = (treeProcessData === null || treeProcessData === void 0 ? void 0 : treeProcessData.areas.map((x) => {
433
433
  return {
434
434
  id: x.id,
@@ -697,4 +697,4 @@ QMSCKEditorImageMapComponent.propDecorators = {
697
697
  myImageRef: [{ type: ViewChild, args: ['myImage',] }],
698
698
  myStatusRef: [{ type: ViewChild, args: ['myStatus',] }]
699
699
  };
700
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWltYWdlbWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvcW1zLWNrZWRpdG9yLWNvbXBvbmVudHMvY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAvcW1zLWNrZWRpdG9yLWltYWdlbWFwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFvQixpQkFBaUIsRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFVLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hJLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRSxPQUFP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QUNWLEtBQUssUUFBUSxDQUFDLElBQUk7Z0JBQ2QsR0FBRyxHQUFHLGdCQUFnQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ2hDLE1BQU07WUFDVixLQUFLLFFBQVEsQ0FBQyxNQUFNO2dCQUNoQixHQUFHLEdBQUcsV0FBVyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzNCLE1BQU07WUFDVixLQUFLLFFBQVEsQ0FBQyxxQkFBcUI7Z0JBQy9CLEdBQUcsR0FBRywyQkFBMkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFBO1lBRXJEO2dCQUNJLE1BQU07U0FDYjtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQzs7O1lBcnRCSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIseWtWQUFxRDs7YUFFeEQ7OztZQXRFK0YsU0FBUztZQUE5RSxpQkFBaUI7WUFDbkMsU0FBUztZQUVULHVCQUF1QjtZQVl2QixzQkFBc0I7WUFkWCxZQUFZO1lBb0J2Qix3QkFBd0I7WUFoQnhCLG1CQUFtQix1QkFtSW5CLE1BQU0sU0FBQyxlQUFlO1lBN0h0QixlQUFlO1lBRGYsWUFBWTtZQWdCWixzQkFBc0I7WUFGdEIscUNBQXFDOzs7dUJBZ0R6QyxLQUFLO3lCQXlDTCxTQUFTLFNBQUMsU0FBUzswQkFHbkIsU0FBUyxTQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdDaGVja2VkLCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIE9uSW5pdCwgVmlld0NoaWxkLCBSZW5kZXJlcjIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZSc7XG5pbXBvcnQgeyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9xbXMtY2tlZGl0b3ItYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUU1TQ0tFZGl0b3JJbWFnZU1hcCB9IGZyb20gJy4uLy4uL21vZGVscy9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAubW9kZWwnO1xuaW1wb3J0IHsgTGlua1R5cGUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvbGluay10eXBlLmVudW0nO1xuaW1wb3J0IHsgUHJvdG9jb2xUeXBlTmFtZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy9wcm90b2NvbC10eXBlLmVudW0nO1xuaW1wb3J0IHsgVGFyZ2V0VHlwZU5hbWUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvdGFyZ2V0LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBJbWFnZU1vZGVOYW1lIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zL2ltYWdlLW1vZGUuZW51bSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE1hdEljb25SZWdpc3RyeSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgSWNvblN2ZyB9IGZyb20gJy4uLy4uL2NvbW1vbi9jb25zdGFudHMvaWNvblN2Zy5jb25zdGFudHMnO1xuaW1wb3J0IHsgUU1TQ0tFZGl0b3JJbWFnZU1hcExpYiB9IGZyb20gJy4vcW1zLWNrZWRpdG9yLWltYWdlbWFwLmxpYic7XG5pbXBvcnQgUU1TQ0tFZGl0b3JQYXJhbXRlciBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1wYXJhbWV0ZXIubW9kZWwnO1xuaW1wb3J0IHsgUU1TQ0tFZGl0b3JMaW5rU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1saW5rLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGlua0F0dGFjaG1lbnRDb21wb25lbnQgfSBmcm9tICcuLi9xbXMtY2tlZGl0b3ItbGluay9hdHRhY2htZW50cy9saW5rLWF0dGFjaG1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IFFNU0NLRWRpdG9yTGlua0FuY2hvckRvY3VtZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItbGluay1hbmNob3ItZG9jdW1lbnQubW9kZWwnO1xuaW1wb3J0IHsgTGlua0FuY2hvciB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy9saW5rLWFuY2hvci5lbnVtJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBpbnZhbGlkVVJMVmFsaWRhdG9yIH0gZnJvbSAnLi9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAudmFsaWRhdG9yJztcbmltcG9ydCB7IFFNU0NLRWRpdG9yQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1jb21tb24uc2VydmljZXMnO1xuaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZW51bS9kYXRhLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBUcmVlQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy90cmVlJztcbmltcG9ydCB7IFFNU1NlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2UsIFNlbGVjdFByb2Nlc3NEb2N1bWVudFBvcHVwQ29tcG9uZW50LCBTZWxlY3RQcm9jZXNzRG9jdW1lbnRQb3B1cERhdGEgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL3NlbGVjdC1wcm9jZXNzLWRvY3VtZW50JztcbmltcG9ydCB7IE1vZHVsZVR5cGUgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZW51bS9tb2R1bGUtdHlwZS5lbnVtJztcbmltcG9ydCB7IFFNU0NLRWRpdG9yVHJlZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItdHJlZS5zZXJ2aWNlJztcbmltcG9ydCBndWlkSGVscGVyIGZyb20gJy4uLy4uL2NvbW1vbi9oZWxwZXIvZ3VpZEhlbHBlcic7XG5pbXBvcnQgeyBEb2N1bWVudE5vZGVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2VudW0vZG9jdW1lbnQtbm9kZS10eXBlLmVudW0nO1xuaW1wb3J0IHsgZm9ya0pvaW4gfSBmcm9tICdyeGpzL2ludGVybmFsL29ic2VydmFibGUvZm9ya0pvaW4nO1xuaW1wb3J0IHsgSVJlbGF0ZWQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL3JlbGF0ZWQvbW9kZWwvcmVsYXRlZC1kYXRhLm1vZGVsJztcbmltcG9ydCB7IFByb2Nlc3NDbGFzc2lmaWNhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9lbnVtL3Byb2Nlc3MtY2xhc3NpZmljYXRpb24uZW51bSc7XG5pbXBvcnQgeyBHZXRTZWFyY2hQcm9jZXNzRG9jdW1lbnRPcHRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2V0LXNlYXJjaC1wcm9jZXNzLWRvY3VtZW50LW9wdGlvbic7XG5cbmludGVyZmFjZSBJTGlua1R5cGUge1xuICAgIGlkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSVRhcmdldCB7XG4gICAgaWQ6IFRhcmdldFR5cGVOYW1lO1xuICAgIG5hbWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElQcm90b2NvbCB7XG4gICAgaWQ6IFByb3RvY29sVHlwZU5hbWU7XG4gICAgbmFtZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSU1vZGUge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGljb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElab29tVHlwZSB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJQW5jaG9yIHtcbiAgICB2YWx1ZTogbnVtYmVyO1xuICAgIHZpZXdWYWx1ZTogc3RyaW5nO1xuICAgIGFuY2hvclZhbHVlOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLXFtc2NrLWltYWdlbWFwJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcW1zLWNrZWRpdG9yLWltYWdlbWFwLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBRTVNDS0VkaXRvckltYWdlTWFwQ29tcG9uZW50IGV4dGVuZHMgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkIHtcbiAgICBASW5wdXQoKSBja0VkaXRvcjogYW55O1xuICAgIExBTkc6IGFueTtcbiAgICBpbWFnZU1hcEZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICAgIGltYWdlTWFwRGF0YTogUU1TQ0tFZGl0b3JJbWFnZU1hcDtcbiAgICBsaW5rVHlwZXM6IElMaW5rVHlwZVtdID0gW107XG4gICAgdGFyZ2V0czogSVRhcmdldFtdID0gW107XG4gICAgcHJvdG9jb2xzOiBJUHJvdG9jb2xbXSA9IFtdO1xuICAgIG1vZGVzOiBJTW9kZVtdID0gW107XG4gICAgem9vbVR5cGVzOiBJWm9vbVR5cGVbXSA9IFtdO1xuICAgIHVybCA9ICcnO1xuICAgIHByb2Nlc3NlZFVybCA9ICcnO1xuICAgIHNlbGVjdGVkTW9kZTogSW1hZ2VNb2RlTmFtZSA9IEltYWdlTW9kZU5hbWUuUmVjdGFuZ2xlO1xuICAgIHNlbGVjdGVkTGlua1R5cGU6IExpbmtUeXBlID0gTGlua1R5cGUudXJsO1xuICAgIHNlbGVjdGVkVGFyZ2V0OiBUYXJnZXRUeXBlTmFtZSA9IFRhcmdldFR5cGVOYW1lLm5ldztcbiAgICBzZWxlY3RlZFByb3RvY29sOiBQcm90b2NvbFR5cGVOYW1lIHwgc3RyaW5nID0gUHJvdG9jb2xUeXBlTmFtZS5odHRwO1xuICAgIHNlbGVjdGVkWm9vbSA9IDEuMDtcblxuICAgIHByb3RvY29sUmVnZXg6IFJlZ0V4cCA9IC9eKGh0dHB8aHR0cHN8ZnRwfG5ld3MpOlxcL1xcLyg/PS4pL2k7XG4gICAgamF2YXNjcmlwdExpbmtSZWdleDogUmVnRXhwID0gL2phdmFzY3JpcHRcXDovaTtcblxuICAgIGRvY3VtZW50SWQgPSAwO1xuICAgIC8vYW5jaG9yVGl0bGUgPSAnJztcbiAgICBhbmNob3JUZXh0ID0gJyc7XG4gICAgLy9hbmNob3JCeU5hbWUgPSAnJztcbiAgICBhZHZpc29yeVRpdGxlID0gJyc7XG5cbiAgICBpc0ltYWdlTG9hZGluZyA9IGZhbHNlO1xuICAgIGlzVXJsUHJvY2Vzc2luZyA9IGZhbHNlO1xuICAgIG5hdHVyYWxJbWFnZVdpZHRoID0gMDtcbiAgICBuYXR1cmFsSW1hZ2VIZWlnaHQgPSAwO1xuICAgIGN1cnJlbnRBcmVhSWQgPSAtMTtcbiAgICBteUltYWdlTWFwOiBRTVNDS0VkaXRvckltYWdlTWFwTGliO1xuICAgIHNob3dJbWFnZU1hcEluZm9ybWF0aW9uID0gZmFsc2U7XG5cbiAgICBhbmNob3JEb2N1bWVudHM6IFFNU0NLRWRpdG9yTGlua0FuY2hvckRvY3VtZW50W10gPSBbXTtcbiAgICBhbmNob3JzOiBJQW5jaG9yW107XG4gICAgZWRpdG9yQW5jaG9yczogSUFuY2hvcltdO1xuICAgIC8vZG9jdW1lbnRBbmNob3JzOiBJQW5jaG9yW107XG5cbiAgICBpbWFnZUxpc3RlbmVyczogYW55W10gPSBbXTtcblxuICAgIEBWaWV3Q2hpbGQoJ215SW1hZ2UnKVxuICAgIG15SW1hZ2VSZWY6IEVsZW1lbnRSZWY8SFRNTEltYWdlRWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKCdteVN0YXR1cycpXG4gICAgbXlTdGF0dXNSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgcHJvY2Vzc0NvbmZpZzogVHJlZUNvbmZpZztcbiAgICBkb2N1bWVudENvbmZpZzogVHJlZUNvbmZpZztcbiAgICBkb2N1bWVudFR5cGVzID0gW1xuICAgICAgICBEb2N1bWVudE5vZGVUeXBlLkRvY3VtZW50LFxuICAgICAgICBEb2N1bWVudE5vZGVUeXBlLkZpbGVEb2N1bWVudCxcbiAgICAgICAgRG9jdW1lbnROb2RlVHlwZS5MaW5rRG9jdW1lbnQsXG4gICAgICAgIERvY3VtZW50Tm9kZVR5cGUuU2hvcnRjdXREb2N1bWVudFxuICAgIF07XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBsaW5rU2VydmljZTogUU1TQ0tFZGl0b3JMaW5rU2VydmljZSxcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFFNU0NLRWRpdG9ySW1hZ2VNYXBDb21wb25lbnQ+LFxuICAgICAgICBwcml2YXRlIGNvbW1vblNlcnZpY2U6IFFNU0NLRWRpdG9yQ29tbW9uU2VydmljZSxcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBRTVNDS0VkaXRvckltYWdlTWFwLFxuICAgICAgICBpY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSxcbiAgICAgICAgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByaXZhdGUgdHJlZVNlcnZpY2U6IFFNU0NLRWRpdG9yVHJlZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgc2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZTogUU1TU2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmltYWdlTWFwRGF0YSA9IGRhdGE7XG4gICAgICAgIHRoaXMubmF0dXJhbEltYWdlSGVpZ2h0ID0gdGhpcy5pbWFnZU1hcERhdGEuaW1hZ2VIZWlnaHQ7XG4gICAgICAgIHRoaXMubmF0dXJhbEltYWdlV2lkdGggPSB0aGlzLmltYWdlTWFwRGF0YS5pbWFnZVdpZHRoO1xuICAgICAgICB0aGlzLmluaXRGb3JtQ29udHJvbCgpO1xuICAgICAgICB0aGlzLmluaXRTdmdJY29ucyhpY29uUmVnaXN0cnksIHNhbml0aXplcik7XG4gICAgfVxuXG5cbiAgICBpbml0RGVmYXVsdFZhbHVlcygpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZExpbmtUeXBlID0gTGlua1R5cGUudXJsO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGFyZ2V0ID0gVGFyZ2V0VHlwZU5hbWUubmV3O1xuICAgICAgICB0aGlzLnNlbGVjdGVkUHJvdG9jb2wgPSBQcm90b2NvbFR5cGVOYW1lLmh0dHA7XG4gICAgICAgIHRoaXMudXJsID0gJyc7XG4gICAgICAgIHRoaXMucHJvY2Vzc2VkVXJsID0gJyc7XG4gICAgICAgIHRoaXMuYWR2aXNvcnlUaXRsZSA9ICcnO1xuICAgICAgICB0aGlzLmFuY2hvclRleHQgPSAnJztcbiAgICB9XG5cbiAgICBpbml0U3ZnSWNvbnMoaWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7XG4gICAgICAgIGljb25SZWdpc3RyeS5hZGRTdmdJY29uTGl0ZXJhbCgndmVjdG9yLXBvaW50ZXInLCBzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoSWNvblN2Zy5WRUNUT1JfUE9JTlRFUikpO1xuICAgICAgICBpY29uUmVnaXN0cnkuYWRkU3ZnSWNvbkxpdGVyYWwoJ3ZlY3Rvci1jaXJjbGUnLCBzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoSWNvblN2Zy5WRUNUT1JfQ0lSQ0xFKSk7XG4gICAgICAgIGljb25SZWdpc3RyeS5hZGRTdmdJY29uTGl0ZXJhbCgndmVjdG9yLXJlY3RhbmdsZScsIHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChJY29uU3ZnLlZFQ1RPUl9SRUNUQU5HTEUpKTtcbiAgICAgICAgaWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25MaXRlcmFsKCd2ZWN0b3ItcG9seWdvbicsIHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChJY29uU3ZnLlZFQ1RPUl9QT0xZR09OKSk7XG4gICAgICAgIGljb25SZWdpc3RyeS5hZGRTdmdJY29uTGl0ZXJhbCgndmVjdG9yLXJlbW92ZScsIHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChJY29uU3ZnLlZFQ1RPUl9SRU1PVkUpKTtcbiAgICB9XG5cbiAgICBpbml0Rm9ybUNvbnRyb2woKSB7XG4gICAgICAgIGNvbnN0IHZhbGlhdGlvbkNvbnRyb2xzID0ge1xuICAgICAgICAgICAgdGFyZ2V0TGlzdDogbmV3IEZvcm1Db250cm9sKCksXG4gICAgICAgICAgICBwcm90b2NvbExpc3Q6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgICAgICAgICAgYW5jaG9yVGV4dExpc3Q6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgICAgICAgICAgbW9kZUxpc3Q6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgICAgICAgICAgem9vbUxpc3Q6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgICAgICAgICAgbGlua1R5cGVMaXN0OiBuZXcgRm9ybUNvbnRyb2woKVxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5pbWFnZU1hcERhdGEubGlua0phdmFTY3JpcHRMaW5rc0FsbG93ZWQgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgdmFsaWF0aW9uQ29udHJvbHNbJ3VybCddID0gbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsaWF0aW9uQ29udHJvbHNbJ3VybCddID0gbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgaW52YWxpZFVSTFZhbGlkYXRvcih0aGlzLmphdmFzY3JpcHRMaW5rUmVnZXgpXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbWFnZU1hcEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAodmFsaWF0aW9uQ29udHJvbHMpO1xuICAgIH1cblxuICAgIGluaXRMaW5rVHlwZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubGlua1R5cGVzKSB7XG4gICAgICAgICAgICB0aGlzLmxpbmtUeXBlcy5wdXNoKHsgaWQ6IExpbmtUeXBlLnVybCwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkxJTktfVVJMIH0pO1xuICAgICAgICAgICAgdGhpcy5saW5rVHlwZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6IExpbmtUeXBlLmFuY2hvclRleHQsXG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkxJTktfQU5DSE9SX0lOX1RFWFRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdFRhcmdldCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0cykge1xuICAgICAgICAgICAgdGhpcy50YXJnZXRzLnB1c2goeyBpZDogVGFyZ2V0VHlwZU5hbWUubmV3LCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSVEdFVF9ORVcgfSk7XG4gICAgICAgICAgICB0aGlzLnRhcmdldHMucHVzaCh7IGlkOiBUYXJnZXRUeXBlTmFtZS5zYW1lLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSR0VUX1NBTUUgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0UHJvdG9jb2woKSB7XG4gICAgICAgIGlmICh0aGlzLnByb3RvY29scykge1xuICAgICAgICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7IGlkOiBQcm90b2NvbFR5cGVOYW1lLmh0dHAsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9IVFRQIH0pO1xuICAgICAgICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7IGlkOiBQcm90b2NvbFR5cGVOYW1lLmh0dHBzLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuUFJPVE9DT0xfSFRUUFMgfSk7XG4gICAgICAgICAgICB0aGlzLnByb3RvY29scy5wdXNoKHsgaWQ6IFByb3RvY29sVHlwZU5hbWUuZnRwLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuUFJPVE9DT0xfRlRQIH0pO1xuICAgICAgICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7IGlkOiBQcm90b2NvbFR5cGVOYW1lLm5ld3MsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9ORVcgfSk7XG4gICAgICAgICAgICB0aGlzLnByb3RvY29scy5wdXNoKHsgaWQ6IFByb3RvY29sVHlwZU5hbWUub3RoZXIsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9PVEhFUiB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXRNb2RlcygpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kZXMpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZXMucHVzaCh7IGlkOiBJbWFnZU1vZGVOYW1lLlBvaW50ZXIsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5JTUFHRV9NT0RFX1BPSU5URVIsIGljb246IFwidmVjdG9yLXBvaW50ZXJcIiB9KTtcbiAgICAgICAgICAgIHRoaXMubW9kZXMucHVzaCh7IGlkOiBJbWFnZU1vZGVOYW1lLlJlY3RhbmdsZSwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLklNQUdFX01PREVfUkVDVEFOR0xFLCBpY29uOiBcInZlY3Rvci1yZWN0YW5nbGVcIiB9KTtcbiAgICAgICAgICAgIHRoaXMubW9kZXMucHVzaCh7IGlkOiBJbWFnZU1vZGVOYW1lLkNpcmNsZSwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLklNQUdFX01PREVfQ0lSQ0xFLCBpY29uOiBcInZlY3Rvci1jaXJjbGVcIiB9KTtcbiAgICAgICAgICAgIHRoaXMubW9kZXMucHVzaCh7IGlkOiBJbWFnZU1vZGVOYW1lLlBvbHlnb24sIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5JTUFHRV9NT0RFX1BPTFlHT04sIGljb246IFwidmVjdG9yLXBvbHlnb25cIiB9KTtcbiAgICAgICAgICAgIHRoaXMubW9kZXMucHVzaCh7IGlkOiBJbWFnZU1vZGVOYW1lLlJlbW92ZSwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLklNQUdFX01PREVfUkVNT1ZFLCBpY29uOiBcInZlY3Rvci1yZW1vdmVcIiB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXRab29tVHlwZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLnpvb21UeXBlcykge1xuICAgICAgICAgICAgdGhpcy56b29tVHlwZXMucHVzaCh7IGlkOiAwLjI1LCBuYW1lOiBcIjI1JVwiIH0pO1xuICAgICAgICAgICAgdGhpcy56b29tVHlwZXMucHVzaCh7IGlkOiAwLjUsIG5hbWU6IFwiNTAlXCIgfSk7XG4gICAgICAgICAgICB0aGlzLnpvb21UeXBlcy5wdXNoKHsgaWQ6IDEuMCwgbmFtZTogXCIxMDAlXCIgfSk7XG4gICAgICAgICAgICB0aGlzLnpvb21UeXBlcy5wdXNoKHsgaWQ6IDIuMCwgbmFtZTogXCIyMDAlXCIgfSk7XG4gICAgICAgICAgICB0aGlzLnpvb21UeXBlcy5wdXNoKHsgaWQ6IDMuMCwgbmFtZTogXCIzMDAlXCIgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0QW5jaG9yKCkge1xuICAgICAgICB0aGlzLmFuY2hvcnMgPSBbXTtcbiAgICAgICAgdGhpcy5hbmNob3JzID0gW3sgdmFsdWU6IDAsIHZpZXdWYWx1ZTogJycsIGFuY2hvclZhbHVlOiBMaW5rQW5jaG9yLkJsYW5rIH1dO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLkxBTkcgPSB0aGlzLnRyYW5zbGF0ZS5nZXRPYmplY3RMYW5nKHJlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmluaXRMaW5rVHlwZSgpO1xuICAgICAgICB0aGlzLmluaXRUYXJnZXQoKTtcbiAgICAgICAgdGhpcy5pbml0UHJvdG9jb2woKTtcbiAgICAgICAgdGhpcy5pbml0TW9kZXMoKTtcbiAgICAgICAgdGhpcy5pbml0Wm9vbVR5cGVzKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIGlmICh0aGlzLmltYWdlTGlzdGVuZXJzICYmIHRoaXMuaW1hZ2VMaXN0ZW5lcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5pbWFnZUxpc3RlbmVycy5mb3JFYWNoKGxpc3RlbmVyID0+IHtcbiAgICAgICAgICAgICAgICBsaXN0ZW5lcigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkltYWdlTG9hZCgpIHtcbiAgICAgICAgdGhpcy5uYXR1cmFsSW1hZ2VIZWlnaHQgPSB0aGlzLm5hdHVyYWxJbWFnZUhlaWdodCAhPSAwID8gdGhpcy5uYXR1cmFsSW1hZ2VIZWlnaHQgOiB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudC5uYXR1cmFsSGVpZ2h0O1xuICAgICAgICB0aGlzLm5hdHVyYWxJbWFnZVdpZHRoID0gdGhpcy5uYXR1cmFsSW1hZ2VXaWR0aCAhPSAwID8gdGhpcy5uYXR1cmFsSW1hZ2VXaWR0aCA6IHRoaXMubXlJbWFnZVJlZi5uYXRpdmVFbGVtZW50Lm5hdHVyYWxXaWR0aDtcblxuICAgICAgICB0aGlzLnNldEltYWdlU2l6ZSgpO1xuXG4gICAgICAgIHRoaXMubXlJbWFnZU1hcC5zZXRNYXBKc29uKHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuaW1hZ2VNYXBEYXRhLm5hbWUsXG4gICAgICAgICAgICBhcmVhczogdGhpcy5pbWFnZU1hcERhdGEuYXJlYXNcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaW1hZ2VNYXBEYXRhLmFyZWFzICYmIHRoaXMuaW1hZ2VNYXBEYXRhLmFyZWFzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMubXlJbWFnZU1hcC5ibHVyQXJlYSh0aGlzLm15SW1hZ2VNYXAuY3VycmVudGlkKTtcbiAgICAgICAgICAgIHRoaXMubXlJbWFnZU1hcC5jdXJyZW50aWQgPSAwO1xuICAgICAgICAgICAgdGhpcy5teUltYWdlTWFwLnNlbGVjdGVkSWQgPSAwO1xuICAgICAgICAgICAgdGhpcy5vblNlbGVjdEFyZWEodGhpcy5teUltYWdlTWFwLmFyZWFzWzBdKTtcbiAgICAgICAgICAgIHRoaXMubXlJbWFnZU1hcC5oaWdobGlnaHRBcmVhKDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5teUltYWdlUmVmKSB7XG4gICAgICAgICAgICB0aGlzLmlzSW1hZ2VMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VMaXN0ZW5lcnMucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudCwgJ2xvYWQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkltYWdlTG9hZCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNJbWFnZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEF2b2lkIGRyYWcmZHJvcCBvZiB0aGUgaW1hZ2VcbiAgICAgICAgdGhpcy5teUltYWdlTWFwID0gbmV3IFFNU0NLRWRpdG9ySW1hZ2VNYXBMaWIoe1xuICAgICAgICAgICAgY3VzdG9tX2NhbGxiYWNrczoge1xuICAgICAgICAgICAgICAgIFwib25BZGRBcmVhXCI6IHRoaXMub25BZGRBcmVhLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgJ29uU2VsZWN0QXJlYSc6IHRoaXMub25TZWxlY3RBcmVhLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgJ29uUmVtb3ZlQXJlYSc6IHRoaXMub25SZW1vdmVBcmVhLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgJ29uU3RhdHVzTWVzc2FnZSc6IHRoaXMub25TdGF0dXNNZXNzYWdlLmJpbmQodGhpcylcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbWFnZUVsZW1lbnQ6IHRoaXMubXlJbWFnZVJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgYm91bmRpbmdfYm94OiBmYWxzZSxcbiAgICAgICAgICAgIENMX0RSQVdfU0hBUEU6ICcjRjAwJyxcbiAgICAgICAgICAgIENMX05PUk1fU0hBUEU6ICcjQUFBJyxcbiAgICAgICAgICAgIENMX0hJR0hMSUdIVF9TSEFQRTogJyNGMDAnLFxuICAgICAgICAgICAgc3RyaW5nczoge1xuICAgICAgICAgICAgICAgIFwiUE9MWUdPTl9EUkFXXCI6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QT0xZR09OX0RSQVcsXG4gICAgICAgICAgICAgICAgXCJSRUNUQU5HTEVfRFJBV1wiOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuUkVDVEFOR0xFX0RSQVcsXG4gICAgICAgICAgICAgICAgXCJTUVVBUkVfRFJBV1wiOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuU1FVQVJFX0RSQVcsXG4gICAgICAgICAgICAgICAgJ1JFQURZJzogJycsXG4gICAgICAgICAgICAgICAgJ1JFQ1RBTkdMRV9NT1ZFJzogJycsXG4gICAgICAgICAgICAgICAgJ1JFQ1RBTkdMRV9SRVNJWkVfVE9QJzogJycsXG4gICAgICAgICAgICAgICAgJ1JFQ1RBTkdMRV9SRVNJWkVfUklHSFQnOiAnJyxcbiAgICAgICAgICAgICAgICAnUkVDVEFOR0xFX1JFU0laRV9CT1RUT00nOiAnJyxcbiAgICAgICAgICAgICAgICAnUkVDVEFOR0xFX1JFU0laRV9MRUZUJzogJycsXG4gICAgICAgICAgICAgICAgJ1NRVUFSRV9NT1ZFJzogJycsXG4gICAgICAgICAgICAgICAgJ1NRVUFSRV9SRVNJWkVfVE9QJzogJycsXG4gICAgICAgICAgICAgICAgJ1NRVUFSRV9SRVNJWkVfUklHSFQnOiAnJyxcbiAgICAgICAgICAgICAgICAnU1FVQVJFX1JFU0laRV9CT1RUT00nOiAnJyxcbiAgICAgICAgICAgICAgICAnU1FVQVJFX1JFU0laRV9MRUZUJzogJycsXG4gICAgICAgICAgICAgICAgJ1BPTFlHT05fTU9WRSc6ICcnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHBhcnNlTGlua1VybCh1cmw6IHN0cmluZykge1xuICAgICAgICBjb25zdCBwcm90b2NvbCA9IHRoaXMucHJvdG9jb2xSZWdleC5leGVjKHVybCk7XG4gICAgICAgIGlmICghIXByb3RvY29sKSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NlZFVybCA9IHVybC5zdWJzdHIocHJvdG9jb2xbMF0ubGVuZ3RoKTtcbiAgICAgICAgICAgIHRoaXMudXJsID0gdGhpcy5wcm9jZXNzZWRVcmw7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvdG9jb2wgPSBwcm90b2NvbFswXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuamF2YXNjcmlwdExpbmtSZWdleC50ZXN0KHVybCkgJiYgIXRoaXMuaW1hZ2VNYXBEYXRhLmxpbmtKYXZhU2NyaXB0TGlua3NBbGxvd2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvdG9jb2wgPSBQcm90b2NvbFR5cGVOYW1lLmh0dHA7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NlZFVybCA9ICcnO1xuICAgICAgICAgICAgdGhpcy51cmwgPSB0aGlzLnByb2Nlc3NlZFVybDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc2VkVXJsID0gdXJsO1xuICAgICAgICAgICAgdGhpcy51cmwgPSB0aGlzLnByb2Nlc3NlZFVybDtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IFByb3RvY29sVHlwZU5hbWUub3RoZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblNlbGVjdEFyZWEoYXJlYSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRBcmVhSWQgPSBhcmVhLmFpZDtcbiAgICAgICAgdGhpcy5zaG93SW1hZ2VNYXBJbmZvcm1hdGlvbiA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRNb2RlID09IEltYWdlTW9kZU5hbWUuUmVtb3ZlKSB7XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VNYXAucmVtb3ZlQXJlYSh0aGlzLmN1cnJlbnRBcmVhSWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGFyZWEuYWhyZWYubWF0Y2goL14jKC4qKSQvKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYW5jaG9yVGV4dCA9IGFyZWEuYWhyZWYuc2xpY2UoMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExpbmtUeXBlID0gTGlua1R5cGUuYW5jaG9yVGV4dDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExpbmtUeXBlID0gTGlua1R5cGUudXJsO1xuICAgICAgICAgICAgICAgIHRoaXMucGFyc2VMaW5rVXJsKGFyZWEuYWhyZWYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhcmdldCA9IGFyZWEuYXRhcmdldDtcbiAgICAgICAgICAgIHRoaXMuYWR2aXNvcnlUaXRsZSA9IGFyZWEuYWFsdDtcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUmVtb3ZlQXJlYSgpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50QXJlYUlkID0gLTE7XG4gICAgICAgIHRoaXMuc2hvd0ltYWdlTWFwSW5mb3JtYXRpb24gPSBmYWxzZTtcbiAgICB9XG5cbiAgICByZW1vdmVNYXAoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEFyZWFJZCA9IC0xO1xuICAgICAgICB0aGlzLnNob3dJbWFnZU1hcEluZm9ybWF0aW9uID0gZmFsc2U7XG4gICAgICAgIHRoaXMubXlJbWFnZU1hcC5yZW1vdmVBbGxBcmVhcygpO1xuICAgIH1cblxuICAgIG9uU3RhdHVzTWVzc2FnZSh0ZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMubXlTdGF0dXNSZWYpIHtcbiAgICAgICAgICAgIHRoaXMubXlTdGF0dXNSZWYubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSB0ZXh0IHx8ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25VcmxLZXl1cCgpIHtcbiAgICAgICAgdGhpcy5pc1VybFByb2Nlc3NpbmcgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy51cmwgIT0gdGhpcy5wcm9jZXNzZWRVcmwpIHtcbiAgICAgICAgICAgIHRoaXMucGFyc2VMaW5rVXJsKHRoaXMudXJsKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQXJlYVZhbHVlcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc1VybFByb2Nlc3NpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvblVybENoYW5nZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVXJsUHJvY2Vzc2luZykge1xuICAgICAgICAgICAgdGhpcy5vblVybEtleXVwKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFuY2hvclRleHRDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlQXJlYVZhbHVlcygpO1xuICAgIH1cblxuICAgIG9uUHJvdG9jb2xDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlQXJlYVZhbHVlcygpO1xuICAgIH1cblxuICAgIG9uVGFyZ2V0Q2hhbmdlKCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUFyZWFWYWx1ZXMoKTtcbiAgICB9XG5cbiAgICBvbkFkZEFyZWEoaWQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLmN1cnJlbnRBcmVhSWQgPSBpZDtcbiAgICAgICAgdGhpcy5zaG93SW1hZ2VNYXBJbmZvcm1hdGlvbiA9IHRydWU7XG4gICAgICAgIHRoaXMuaW5pdERlZmF1bHRWYWx1ZXMoKTtcbiAgICAgICAgdGhpcy51cGRhdGVBcmVhVmFsdWVzKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlQXJlYVZhbHVlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEFyZWFJZCA+IC0xKSB7XG4gICAgICAgICAgICB2YXIgYWhyZWYgPSB0aGlzLmJ1aWxkVXJsV2l0aFByb3RvY29sKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZExpbmtUeXBlID09IExpbmtUeXBlLmFuY2hvclRleHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm15SW1hZ2VNYXAuYXJlYXNbdGhpcy5jdXJyZW50QXJlYUlkXS5hdGFyZ2V0ID0gVGFyZ2V0VHlwZU5hbWUuc2FtZTtcbiAgICAgICAgICAgICAgICB0aGlzLm15SW1hZ2VNYXAuYXJlYXNbdGhpcy5jdXJyZW50QXJlYUlkXS5hYWx0ID0gdGhpcy5hbmNob3JUZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5teUltYWdlTWFwLmFyZWFzW3RoaXMuY3VycmVudEFyZWFJZF0uYXRhcmdldCA9IHRoaXMuc2VsZWN0ZWRUYXJnZXQgfHwgVGFyZ2V0VHlwZU5hbWUubmV3O1xuICAgICAgICAgICAgICAgIHRoaXMubXlJbWFnZU1hcC5hcmVhc1t0aGlzLmN1cnJlbnRBcmVhSWRdLmFhbHQgPSB0aGlzLmFkdmlzb3J5VGl0bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VNYXAuYXJlYXNbdGhpcy5jdXJyZW50QXJlYUlkXS5haHJlZiA9IGFocmVmO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYnVpbGRVcmxXaXRoUHJvdG9jb2woKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTGlua1R5cGUgPT0gTGlua1R5cGUuYW5jaG9yVGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuICcjJyArICh0aGlzLmFuY2hvclRleHQgfHwgJycpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghIXRoaXMucHJvY2Vzc2VkVXJsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFByb3RvY29sICsgdGhpcy5wcm9jZXNzZWRVcmw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG9uQ2xvc2VEaWFsb2coKSB7XG4gICAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuY29tbW9uU2VydmljZS5nZXRTY3JvbGxUb3BDa2VkaXRvcih0aGlzLmNrRWRpdG9yKTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlLnNldFNjcm9sbFRvcEVkaXRvckNvbnRhaW5lcih0aGlzLmNrRWRpdG9yLCBzY3JvbGxUb3ApO1xuICAgIH1cblxuICAgIG9uTW9kZUNoYW5nZShlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1vZGUgPSBlLnZhbHVlO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE1vZGUgPT0gSW1hZ2VNb2RlTmFtZS5Qb2ludGVyIHx8IHRoaXMuc2VsZWN0ZWRNb2RlID09IEltYWdlTW9kZU5hbWUuUmVtb3ZlKSB7XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VNYXAuaXNfZHJhd2luZyA9IDA7XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VNYXAubmV4dFNoYXBlID0gJyc7XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5jdXJzb3IgPSAnZGVmYXVsdCc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VNYXAubmV4dFNoYXBlID0gdGhpcy5zZWxlY3RlZE1vZGU7XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5jdXJzb3IgPSAnY3Jvc3NoYWlyJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uWm9vbUNoYW5nZSgpIHtcbiAgICAgICAgdGhpcy5zZXRJbWFnZVNpemUoKTtcbiAgICAgICAgaWYgKHRoaXMubXlJbWFnZU1hcCkge1xuICAgICAgICAgICAgdGhpcy5teUltYWdlTWFwLnNjYWxlQWxsQXJlYXModGhpcy5zZWxlY3RlZFpvb20pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25MaW5rVHlwZUNoYW5nZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMaW5rVHlwZSA9PT0gTGlua1R5cGUuYW5jaG9yVGV4dCkge1xuICAgICAgICAgICAgdGhpcy5nZXRFZGl0b3JBbmNob3IoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUFyZWFWYWx1ZXMoKTtcbiAgICB9XG5cbiAgICBnZXRFZGl0b3JBbmNob3IoKSB7XG4gICAgICAgIHRoaXMuYW5jaG9yRG9jdW1lbnRzID0gW107XG4gICAgICAgIGlmICh0aGlzLmltYWdlTWFwRGF0YS5lZGl0b3JDb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmFuY2hvckRvY3VtZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogMCxcbiAgICAgICAgICAgICAgICBlbnRpdHlJZDogMCxcbiAgICAgICAgICAgICAgICBkb2N1bWVudElkOiAwLFxuICAgICAgICAgICAgICAgIGRvY3VtZW50VHlwZUlkOiAwLFxuICAgICAgICAgICAgICAgIHJpY2hUZXh0OiB0aGlzLmltYWdlTWFwRGF0YS5lZGl0b3JDb250ZW50XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEFuY2hvckRvY3VtZW50KHRoaXMuYW5jaG9yRG9jdW1lbnRzKTtcbiAgICAgICAgdGhpcy5lZGl0b3JBbmNob3JzID0gdGhpcy5hbmNob3JzO1xuICAgIH1cblxuICAgIHNldEltYWdlU2l6ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubXlJbWFnZVJlZikge1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLm5hdHVyYWxJbWFnZVdpZHRoICogdGhpcy5zZWxlY3RlZFpvb207XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLm5hdHVyYWxJbWFnZUhlaWdodCAqIHRoaXMuc2VsZWN0ZWRab29tO1xuICAgICAgICAgICAgdGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgYCR7d2lkdGh9cHg7YCk7XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgYCR7aGVpZ2h0fXB4O2ApO1xuICAgICAgICAgICAgdGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xuICAgICAgICAgICAgdGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuY3Vyc29yID0gdGhpcy5zZWxlY3RlZE1vZGUgPT0gSW1hZ2VNb2RlTmFtZS5Qb2ludGVyIHx8IHRoaXMuc2VsZWN0ZWRNb2RlID09IEltYWdlTW9kZU5hbWUuUmVtb3ZlID8gJ2RlZmF1bHQnIDogJ2Nyb3NzaGFpcic7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBlSGFuZGJvb2soaXNPbmx5RG9jdW1lbnQ6IGJvb2xlYW4sIGlzQW5jaG9yRG9jdW1lbnQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzQ29uZmlnID0ge1xuICAgICAgICAgICAgYWxsb3dTZWxlY3RGb2xkZXI6IHRydWUsXG4gICAgICAgICAgICBhcmVhT2ZDdXJyZW50UHJvY2VzczogJycsXG4gICAgICAgICAgICBzaG93Q2hlY2tCb3g6IGZhbHNlLFxuICAgICAgICAgICAgYWxsb3dNdWx0aXBsZUNoZWNrOiBmYWxzZSxcbiAgICAgICAgICAgIG9ubHlDaGVja0JveEZvckNoaWxkOiBmYWxzZSxcbiAgICAgICAgICAgIG1vZHVsZUlkOiBEYXRhVHlwZS5wcm9jZXNzLFxuICAgICAgICAgICAgb3Blbkljb25Db2xvcjogJyMxOTU0QTknLFxuICAgICAgICAgICAgY2xvc2VJY29uQ29sb3I6ICcjYTRiMGRlJyxcbiAgICAgICAgICAgIHNpbmdsZVNlbGVjdGVkTm9kZTogdHJ1ZSxcbiAgICAgICAgICAgIG9ubHlGb2xkZXI6IGZhbHNlLFxuICAgICAgICAgICAgc2VsZWN0T25lOiB0cnVlXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5kb2N1bWVudENvbmZpZyA9IHtcbiAgICAgICAgICAgIGFsbG93U2VsZWN0Rm9sZGVyOiAhaXNPbmx5RG9jdW1lbnQsXG4gICAgICAgICAgICBhcmVhT2ZDdXJyZW50UHJvY2VzczogJycsXG4gICAgICAgICAgICBzaG93Q2hlY2tCb3g6IGZhbHNlLFxuICAgICAgICAgICAgbW9kdWxlSWQ6IERhdGFUeXBlLmRvY3VtZW50LFxuICAgICAgICAgICAgYWxsb3dNdWx0aXBsZUNoZWNrOiBmYWxzZSxcbiAgICAgICAgICAgIG9ubHlDaGVja0JveEZvckNoaWxkOiBmYWxzZSxcbiAgICAgICAgICAgIG9wZW5JY29uQ29sb3I6ICcjMTk1NEE5JyxcbiAgICAgICAgICAgIGNsb3NlSWNvbkNvbG9yOiAnIzRhY2FmZicsXG4gICAgICAgICAgICBzaW5nbGVTZWxlY3RlZE5vZGU6IHRydWUsXG4gICAgICAgICAgICBvbmx5Rm9sZGVyOiBmYWxzZSxcbiAgICAgICAgICAgIHNlbGVjdE9uZTogdHJ1ZVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGRhdGE6IFNlbGVjdFByb2Nlc3NEb2N1bWVudFBvcHVwRGF0YSA9IG5ldyBTZWxlY3RQcm9jZXNzRG9jdW1lbnRQb3B1cERhdGEoKTtcbiAgICAgICAgZGF0YS5tb2R1bGVJZCA9IE1vZHVsZVR5cGUuZG9jdW1lbnRQcm9jZXNzO1xuICAgICAgICBkYXRhLm1vZHVsZU5hbWUgPSB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuRE9DVU1FTlRfUFJPQ0VTUztcbiAgICAgICAgaWYgKCFpc09ubHlEb2N1bWVudCkge1xuICAgICAgICAgICAgY29uc3QgdHJlZVByb2Nlc3NEYXRhID0gYXdhaXQgdGhpcy50cmVlU2VydmljZS5nZXRQcm9jZXNzQXJlYUNvbnRlbnRzKCkudG9Qcm9taXNlKCk7XG4gICAgICAgICAgICBkYXRhLnRyZWVEYXRhMSA9IHRyZWVQcm9jZXNzRGF0YT8uYXJlYXMubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHguaWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHgubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IHgucGFyZW50SWQgPT09IGd1aWRIZWxwZXIuZW1wdHkgPyAnJyA6IHgucGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1c0lkOiAwLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXNOYW1lOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheUlkOiAwLFxuICAgICAgICAgICAgICAgICAgICBleHBhbmRhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pIHx8IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdHJlZURvY3VtZW50RGF0YSA9IGF3YWl0IHRoaXMudHJlZVNlcnZpY2UuZ2V0Rm9sZGVyQ2hpbGRyZW5zKCkudG9Qcm9taXNlKCk7XG5cbiAgICAgICAgZGF0YS50cmVlRGF0YTIgPSB0cmVlRG9jdW1lbnREYXRhPy5tYXAoKHgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaWQ6IHguaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBuYW1lOiB4Lm5hbWUudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBwYXJlbnRJZDogIXgucGFyZW50SGFuZGJvb2tJZCA/ICcnIDogeC5wYXJlbnRIYW5kYm9va0lkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgc3RhdHVzSWQ6IDAsXG4gICAgICAgICAgICAgICAgc3RhdHVzTmFtZTogJycsXG4gICAgICAgICAgICAgICAgZGlzcGxheUlkOiAwLFxuICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHgudHlwZSA+IERvY3VtZW50Tm9kZVR5cGUuU2hvcnRjdXREb2N1bWVudCxcbiAgICAgICAgICAgICAgICBsZXZlbFR5cGU6IHgudHlwZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRhdGEudHJlZUNvbmZpZzEgPSB0aGlzLnByb2Nlc3NDb25maWc7XG4gICAgICAgIGRhdGEudHJlZUNvbmZpZzIgPSB0aGlzLmRvY3VtZW50Q29uZmlnO1xuICAgICAgICBkYXRhLnNwbGl0VmlldyA9IGZhbHNlO1xuICAgICAgICBkYXRhLmlzU2VsZWN0T25lID0gdHJ1ZTtcbiAgICAgICAgZGF0YS50b29sdGlwTG9jYXRpb25TZWFyY2hSZXN1bHQgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oU2VsZWN0UHJvY2Vzc0RvY3VtZW50UG9wdXBDb21wb25lbnQsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnNzY4cHgnLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiAnNjkwcHgnLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsncmVsYXRlZC1wcm9jZXNzX19wb3B1cCcsICdjdXN0b20tbWF0LWRpYWxvZy1jb250YWluZXInXSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLm9uU2VhcmNoLnN1YnNjcmliZShhc3luYyAoa2V5d29yZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWtleXdvcmQgfHwga2V5d29yZC50cmltKCkgPT09ICcnKVxuICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgbGV0IGdldFNlYXJjaE9wdGlvbiA9IG5ldyBHZXRTZWFyY2hQcm9jZXNzRG9jdW1lbnRPcHRpb24odHJ1ZSwgdHJ1ZSwgdGhpcy5kYXRhLmVuYWJsZWRJbnRlcmNvbm5lY3RlZCwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAoaXNPbmx5RG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICBnZXRTZWFyY2hPcHRpb24uaXNHZXRQcm9jZXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZ2V0U2VhcmNoT3B0aW9uLmlzR2V0SW50ZXJjb25uZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBnZXRTZWFyY2hPcHRpb24uaXNHZXRBcmVhID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNlYXJjaFJlc3VsdCA9IGF3YWl0IHRoaXMudHJlZVNlcnZpY2UuZ2V0U2VhcmNoUHJvY2Vzc0RvY3VtZW50KGtleXdvcmQudHJpbSgpLCBnZXRTZWFyY2hPcHRpb24pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RQcm9jZXNzRG9jdW1lbnRHbG9iYWxTZXJ2aWNlLnNldFNlYXJjaFJlbGF0ZWQoc2VhcmNoUmVzdWx0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLm9uRXhwYW5kUHJvY2Vzc0FyZWEuc3Vic2NyaWJlKChhcmVhKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRyZWVTZXJ2aWNlLmdldFByb2Nlc3NBcmVhQ29udGVudHMoYXJlYS5pZCwgdHJ1ZSwgdGhpcy5kYXRhLmVuYWJsZWRJbnRlcmNvbm5lY3RlZCkudG9Qcm9taXNlKCkudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJlYXMgPSByZXMuYXJlYXMubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB4LmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogeC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiB4LnBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzSWQ6IHguc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguc3RhdHVzTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5SWQ6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pIHx8IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NlcyA9IHJlcy5wcm9jZXNzZXMubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB4LmVudGl0eUlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogeC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiB4LnByb2Nlc3NBcmVhSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzSWQ6IHguc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguYXBwcm92YWxTdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUlkOiB4LnByb2Nlc3NOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVR5cGU6IHgucHJvY2Vzc0NsYXNzaWZpY2F0aW9uID09PSBQcm9jZXNzQ2xhc3NpZmljYXRpb24uSW50ZXJjb25uZWN0ZWRQcm9jZXNzID8gRGF0YVR5cGUucHJvY2Vzc0ludGVyY29ubmVjdGVkIDogRGF0YVR5cGUucHJvY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSkgfHwgW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZS5zZXRQcm9jZXNzQXJlYUNoaWxkcmVuKFsuLi5hcmVhcywgLi4ucHJvY2Vzc2VzXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5vbkV4cGFuZEZvbGRlci5zdWJzY3JpYmUoKGZvbGRlcikgPT4ge1xuICAgICAgICAgICAgdGhpcy50cmVlU2VydmljZVxuICAgICAgICAgICAgICAgIC5nZXRGb2xkZXJDaGlsZHJlbnMoZm9sZGVyLmlkKVxuICAgICAgICAgICAgICAgIC50b1Byb21pc2UoKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRzID0gcmVzLm1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB4LmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHgubmFtZS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogdGhpcy5nZXRQYXJlbnRJZCh4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzSWQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguYXBwcm92YWxTdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlJZDogeC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZTogIXRoaXMuZG9jdW1lbnRUeXBlcy5pbmNsdWRlcyh4LnR5cGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbFR5cGU6ICF0aGlzLmRvY3VtZW50VHlwZXMuaW5jbHVkZXMoeC50eXBlKSA/IHgudHlwZSA6IGZvbGRlci5sZXZlbFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2Uuc2V0Rm9sZGVyQ2hpbGRyZW4oY2hpbGRzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3VsdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0RGF0YSA9IHJlc3VsdFswXTtcbiAgICAgICAgICAgICAgICBpZiAoaXNBbmNob3JEb2N1bWVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50SWQgPSByZXN1bHREYXRhLmlkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFuY2hvckRvY3VtZW50KHJlc3VsdERhdGEuaWQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFyc2VMaW5rVXJsKHRoaXMuZ2V0TGlua1VSTChyZXN1bHREYXRhKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IFByb3RvY29sVHlwZU5hbWUub3RoZXI7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5hZHZpc29yeVRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkdmlzb3J5VGl0bGUgPSByZXN1bHREYXRhLml0ZW1OYW1lO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQXJlYVZhbHVlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRBbmNob3JEb2N1bWVudChkb2N1bWVudElkOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5saW5rU2VydmljZVxuICAgICAgICAgICAgLmdldEFuY2hvckRvY3VtZW50TGlzdChkb2N1bWVudElkKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmNob3JEb2N1bWVudHMgPSByZXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QW5jaG9yRG9jdW1lbnQodGhpcy5hbmNob3JEb2N1bWVudHMpO1xuICAgICAgICAgICAgICAgICAgICAvL3RoaXMuZG9jdW1lbnRBbmNob3JzID0gdGhpcy5hbmNob3JzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYW5jaG9yRG9jdW1lbnRzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QW5jaG9yRG9jdW1lbnQodGhpcy5hbmNob3JEb2N1bWVudHMpO1xuICAgICAgICAgICAgICAgICAgICAvL3RoaXMuZG9jdW1lbnRBbmNob3JzID0gdGhpcy5hbmNob3JzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldEFuY2hvckRvY3VtZW50KGFuY2hvckRvY3VtZW50OiBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudFtdKSB7XG4gICAgICAgIHRoaXMuaW5pdEFuY2hvcigpO1xuICAgICAgICBsZXQgaWQgPSAzO1xuICAgICAgICBpZiAoYW5jaG9yRG9jdW1lbnQpIHtcbiAgICAgICAgICAgIGFuY2hvckRvY3VtZW50LmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICBkaXYuaW5uZXJIVE1MID0gZS5yaWNoVGV4dDtcbiAgICAgICAgICAgICAgICBjb25zdCBkb21Db250ZW50ID0gZGl2O1xuICAgICAgICAgICAgICAgIGNvbnN0IGFUYWdzID0gZG9tQ29udGVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpO1xuICAgICAgICAgICAgICAgIGlmIChhVGFncykge1xuICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLWZvci1vZlxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFUYWdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YWcgPSBhVGFnc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YWcubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hbmNob3JzLmZpbmRJbmRleCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geC5hbmNob3JWYWx1ZSA9PT0gdGFnLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFuY2hvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3VmFsdWU6IHRhZy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yVmFsdWU6IHRhZy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoaXMuYW5jaG9ycy5wdXNoKHtcbiAgICAgICAgLy8gICAgIHZhbHVlOiAxLFxuICAgICAgICAvLyAgICAgdmlld1ZhbHVlOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuQU5DSE9SX0FUVEFDSE1FTlQsXG4gICAgICAgIC8vICAgICBhbmNob3JWYWx1ZTogTGlua0FuY2hvci5BdHRhY2htZW50XG4gICAgICAgIC8vIH0pO1xuICAgICAgICAvLyB0aGlzLmFuY2hvcnMucHVzaCh7XG4gICAgICAgIC8vICAgICB2YWx1ZTogMixcbiAgICAgICAgLy8gICAgIHZpZXdWYWx1ZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkFOQ0hPUl9SRUxBVEVEX0RPQ1VNRU5ULFxuICAgICAgICAvLyAgICAgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuUmVsYXRlZFxuICAgICAgICAvLyB9KTtcbiAgICB9XG5cblxuICAgIGF0dGFjaG1lbnQoKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JQYXJhbXRlcigpO1xuICAgICAgICBkYXRhLm1vZHVsZSA9IHRoaXMuaW1hZ2VNYXBEYXRhLm1vZHVsZTtcbiAgICAgICAgZGF0YS5lbnRpdHlJZCA9IHRoaXMuaW1hZ2VNYXBEYXRhLmVudGl0eUlkO1xuICAgICAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oTGlua0F0dGFjaG1lbnRDb21wb25lbnQsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnNjUwcHgnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnNjUwcHgnLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9nVGVtcGxhdGVcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcnNlTGlua1VybChyZXN1bHQudXJsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gUHJvdG9jb2xUeXBlTmFtZS5vdGhlcjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmFkdmlzb3J5VGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWR2aXNvcnlUaXRsZSA9IHJlc3VsdC50aXRsZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUFyZWFWYWx1ZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzYXZlKCkge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5teUltYWdlTWFwLmdldE1hcEpzb24oKTtcbiAgICAgICAgZGF0YS5pbWFnZUhlaWdodCA9IHRoaXMubmF0dXJhbEltYWdlSGVpZ2h0O1xuICAgICAgICBkYXRhLmltYWdlV2lkdGggPSB0aGlzLm5hdHVyYWxJbWFnZVdpZHRoO1xuICAgICAgICBjb25zdCBzY3JvbGxUb3AgPSB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0U2Nyb2xsVG9wQ2tlZGl0b3IodGhpcy5ja0VkaXRvcik7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGRhdGEpO1xuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2Uuc2V0U2Nyb2xsVG9wRWRpdG9yQ29udGFpbmVyKHRoaXMuY2tFZGl0b3IsIHNjcm9sbFRvcCk7XG4gICAgfVxuXG4gICAgY2FuY2VsKCkge1xuICAgICAgICAvL3RoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgIHRoaXMub25DbG9zZURpYWxvZygpO1xuICAgIH1cblxuICAgIGdldFBhcmVudElkKGl0ZW0pIHtcbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50VHlwZXMuaW5jbHVkZXMoaXRlbS50eXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuICFpdGVtLnBhcmVudEhhbmRib29rSWQgPyAnJyA6IGl0ZW0ucGFyZW50SGFuZGJvb2tJZC50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhaXRlbS5wYXJlbnRGb2xkZXJJZCA/ICcnIDogaXRlbS5wYXJlbnRGb2xkZXJJZC50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGdldExpbmtVUkwoZGF0YTogYW55KSB7XG4gICAgICAgIGxldCB1cmwgPSAnJztcbiAgICAgICAgc3dpdGNoIChkYXRhPy5pdGVtVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kb2N1bWVudDpcbiAgICAgICAgICAgICAgICB1cmwgPSBgL2RvY3VtZW50LyR7ZGF0YS5pZH1gO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5wcm9jZXNzOlxuICAgICAgICAgICAgICAgIHVybCA9IGAvcHJvY2Vzcy1kZXRhaWwvJHtkYXRhLmRpc3BsYXlJZH1gO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5hcmVhOlxuICAgICAgICAgICAgICAgIHVybCA9IGAvYXJlYS9kZXRhaWwvJHtkYXRhLmlkfWA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERhdGFUeXBlLmZvbGRlcjpcbiAgICAgICAgICAgICAgICB1cmwgPSBgL2ZvbGRlci8ke2RhdGEuaWR9YDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2Vzc0ludGVyY29ubmVjdGVkOlxuICAgICAgICAgICAgICAgIHVybCA9IGAvcHJvY2Vzcy1pbnRlcmNvbm5lY3RlZC8ke2RhdGEuZGlzcGxheUlkfWBcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgfVxufVxuIl19
700
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWltYWdlbWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvcW1zLWNrZWRpdG9yLWNvbXBvbmVudHMvY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAvcW1zLWNrZWRpdG9yLWltYWdlbWFwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFvQixpQkFBaUIsRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFVLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hJLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRSxPQUFP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RyxHQUFHLG1CQUFtQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzFDLE1BQU07WUFDVixLQUFLLFFBQVEsQ0FBQyxJQUFJO2dCQUNkLEdBQUcsR0FBRyxnQkFBZ0IsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNoQyxNQUFNO1lBQ1YsS0FBSyxRQUFRLENBQUMsTUFBTTtnQkFDaEIsR0FBRyxHQUFHLFdBQVcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUMzQixNQUFNO1lBQ1YsS0FBSyxRQUFRLENBQUMscUJBQXFCO2dCQUMvQixHQUFHLEdBQUcsMkJBQTJCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtZQUVyRDtnQkFDSSxNQUFNO1NBQ2I7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7OztZQXJ0QkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLHlrVkFBcUQ7O2FBRXhEOzs7WUF0RStGLFNBQVM7WUFBOUUsaUJBQWlCO1lBQ25DLFNBQVM7WUFFVCx1QkFBdUI7WUFZdkIsc0JBQXNCO1lBZFgsWUFBWTtZQW9CdkIsd0JBQXdCO1lBaEJ4QixtQkFBbUIsdUJBbUluQixNQUFNLFNBQUMsZUFBZTtZQTdIdEIsZUFBZTtZQURmLFlBQVk7WUFnQlosc0JBQXNCO1lBRnRCLHFDQUFxQzs7O3VCQWdEekMsS0FBSzt5QkF5Q0wsU0FBUyxTQUFDLFNBQVM7MEJBR25CLFNBQVMsU0FBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBPbkluaXQsIFZpZXdDaGlsZCwgUmVuZGVyZXIyLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcW1zLWNrZWRpdG9yLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFFNU0NLRWRpdG9ySW1hZ2VNYXAgfSBmcm9tICcuLi8uLi9tb2RlbHMvcW1zLWNrZWRpdG9yLWltYWdlbWFwLm1vZGVsJztcbmltcG9ydCB7IExpbmtUeXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zL2xpbmstdHlwZS5lbnVtJztcbmltcG9ydCB7IFByb3RvY29sVHlwZU5hbWUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvcHJvdG9jb2wtdHlwZS5lbnVtJztcbmltcG9ydCB7IFRhcmdldFR5cGVOYW1lIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zL3RhcmdldC10eXBlLmVudW0nO1xuaW1wb3J0IHsgSW1hZ2VNb2RlTmFtZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy9pbWFnZS1tb2RlLmVudW0nO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IEljb25TdmcgfSBmcm9tICcuLi8uLi9jb21tb24vY29uc3RhbnRzL2ljb25TdmcuY29uc3RhbnRzJztcbmltcG9ydCB7IFFNU0NLRWRpdG9ySW1hZ2VNYXBMaWIgfSBmcm9tICcuL3Ftcy1ja2VkaXRvci1pbWFnZW1hcC5saWInO1xuaW1wb3J0IFFNU0NLRWRpdG9yUGFyYW10ZXIgZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItcGFyYW1ldGVyLm1vZGVsJztcbmltcG9ydCB7IFFNU0NLRWRpdG9yTGlua1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItbGluay5zZXJ2aWNlJztcbmltcG9ydCB7IExpbmtBdHRhY2htZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vcW1zLWNrZWRpdG9yLWxpbmsvYXR0YWNobWVudHMvbGluay1hdHRhY2htZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudCB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWxpbmstYW5jaG9yLWRvY3VtZW50Lm1vZGVsJztcbmltcG9ydCB7IExpbmtBbmNob3IgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvbGluay1hbmNob3IuZW51bSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgaW52YWxpZFVSTFZhbGlkYXRvciB9IGZyb20gJy4vcW1zLWNrZWRpdG9yLWltYWdlbWFwLnZhbGlkYXRvcic7XG5pbXBvcnQgeyBRTVNDS0VkaXRvckNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItY29tbW9uLnNlcnZpY2VzJztcbmltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2VudW0vZGF0YS10eXBlLmVudW0nO1xuaW1wb3J0IHsgVHJlZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvdHJlZSc7XG5pbXBvcnQgeyBRTVNTZWxlY3RQcm9jZXNzRG9jdW1lbnRHbG9iYWxTZXJ2aWNlLCBTZWxlY3RQcm9jZXNzRG9jdW1lbnRQb3B1cENvbXBvbmVudCwgU2VsZWN0UHJvY2Vzc0RvY3VtZW50UG9wdXBEYXRhIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9zZWxlY3QtcHJvY2Vzcy1kb2N1bWVudCc7XG5pbXBvcnQgeyBNb2R1bGVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2VudW0vbW9kdWxlLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBRTVNDS0VkaXRvclRyZWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLXRyZWUuc2VydmljZSc7XG5pbXBvcnQgZ3VpZEhlbHBlciBmcm9tICcuLi8uLi9jb21tb24vaGVscGVyL2d1aWRIZWxwZXInO1xuaW1wb3J0IHsgRG9jdW1lbnROb2RlVHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9lbnVtL2RvY3VtZW50LW5vZGUtdHlwZS5lbnVtJztcbmltcG9ydCB7IGZvcmtKb2luIH0gZnJvbSAncnhqcy9pbnRlcm5hbC9vYnNlcnZhYmxlL2ZvcmtKb2luJztcbmltcG9ydCB7IElSZWxhdGVkIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9yZWxhdGVkL21vZGVsL3JlbGF0ZWQtZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBQcm9jZXNzQ2xhc3NpZmljYXRpb24gfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZW51bS9wcm9jZXNzLWNsYXNzaWZpY2F0aW9uLmVudW0nO1xuaW1wb3J0IHsgR2V0U2VhcmNoUHJvY2Vzc0RvY3VtZW50T3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dldC1zZWFyY2gtcHJvY2Vzcy1kb2N1bWVudC1vcHRpb24nO1xuXG5pbnRlcmZhY2UgSUxpbmtUeXBlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIG5hbWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElUYXJnZXQge1xuICAgIGlkOiBUYXJnZXRUeXBlTmFtZTtcbiAgICBuYW1lOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJUHJvdG9jb2wge1xuICAgIGlkOiBQcm90b2NvbFR5cGVOYW1lO1xuICAgIG5hbWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElNb2RlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpY29uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJWm9vbVR5cGUge1xuICAgIGlkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSUFuY2hvciB7XG4gICAgdmFsdWU6IG51bWJlcjtcbiAgICB2aWV3VmFsdWU6IHN0cmluZztcbiAgICBhbmNob3JWYWx1ZTogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1xbXNjay1pbWFnZW1hcCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Ftcy1ja2VkaXRvci1pbWFnZW1hcC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcW1zLWNrZWRpdG9yLWltYWdlbWFwLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JJbWFnZU1hcENvbXBvbmVudCBleHRlbmRzIFFNU0NLRWRpdG9yQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG4gICAgQElucHV0KCkgY2tFZGl0b3I6IGFueTtcbiAgICBMQU5HOiBhbnk7XG4gICAgaW1hZ2VNYXBGb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgICBpbWFnZU1hcERhdGE6IFFNU0NLRWRpdG9ySW1hZ2VNYXA7XG4gICAgbGlua1R5cGVzOiBJTGlua1R5cGVbXSA9IFtdO1xuICAgIHRhcmdldHM6IElUYXJnZXRbXSA9IFtdO1xuICAgIHByb3RvY29sczogSVByb3RvY29sW10gPSBbXTtcbiAgICBtb2RlczogSU1vZGVbXSA9IFtdO1xuICAgIHpvb21UeXBlczogSVpvb21UeXBlW10gPSBbXTtcbiAgICB1cmwgPSAnJztcbiAgICBwcm9jZXNzZWRVcmwgPSAnJztcbiAgICBzZWxlY3RlZE1vZGU6IEltYWdlTW9kZU5hbWUgPSBJbWFnZU1vZGVOYW1lLlJlY3RhbmdsZTtcbiAgICBzZWxlY3RlZExpbmtUeXBlOiBMaW5rVHlwZSA9IExpbmtUeXBlLnVybDtcbiAgICBzZWxlY3RlZFRhcmdldDogVGFyZ2V0VHlwZU5hbWUgPSBUYXJnZXRUeXBlTmFtZS5uZXc7XG4gICAgc2VsZWN0ZWRQcm90b2NvbDogUHJvdG9jb2xUeXBlTmFtZSB8IHN0cmluZyA9IFByb3RvY29sVHlwZU5hbWUuaHR0cDtcbiAgICBzZWxlY3RlZFpvb20gPSAxLjA7XG5cbiAgICBwcm90b2NvbFJlZ2V4OiBSZWdFeHAgPSAvXihodHRwfGh0dHBzfGZ0cHxuZXdzKTpcXC9cXC8oPz0uKS9pO1xuICAgIGphdmFzY3JpcHRMaW5rUmVnZXg6IFJlZ0V4cCA9IC9qYXZhc2NyaXB0XFw6L2k7XG5cbiAgICBkb2N1bWVudElkID0gMDtcbiAgICAvL2FuY2hvclRpdGxlID0gJyc7XG4gICAgYW5jaG9yVGV4dCA9ICcnO1xuICAgIC8vYW5jaG9yQnlOYW1lID0gJyc7XG4gICAgYWR2aXNvcnlUaXRsZSA9ICcnO1xuXG4gICAgaXNJbWFnZUxvYWRpbmcgPSBmYWxzZTtcbiAgICBpc1VybFByb2Nlc3NpbmcgPSBmYWxzZTtcbiAgICBuYXR1cmFsSW1hZ2VXaWR0aCA9IDA7XG4gICAgbmF0dXJhbEltYWdlSGVpZ2h0ID0gMDtcbiAgICBjdXJyZW50QXJlYUlkID0gLTE7XG4gICAgbXlJbWFnZU1hcDogUU1TQ0tFZGl0b3JJbWFnZU1hcExpYjtcbiAgICBzaG93SW1hZ2VNYXBJbmZvcm1hdGlvbiA9IGZhbHNlO1xuXG4gICAgYW5jaG9yRG9jdW1lbnRzOiBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudFtdID0gW107XG4gICAgYW5jaG9yczogSUFuY2hvcltdO1xuICAgIGVkaXRvckFuY2hvcnM6IElBbmNob3JbXTtcbiAgICAvL2RvY3VtZW50QW5jaG9yczogSUFuY2hvcltdO1xuXG4gICAgaW1hZ2VMaXN0ZW5lcnM6IGFueVtdID0gW107XG5cbiAgICBAVmlld0NoaWxkKCdteUltYWdlJylcbiAgICBteUltYWdlUmVmOiBFbGVtZW50UmVmPEhUTUxJbWFnZUVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZCgnbXlTdGF0dXMnKVxuICAgIG15U3RhdHVzUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIHByb2Nlc3NDb25maWc6IFRyZWVDb25maWc7XG4gICAgZG9jdW1lbnRDb25maWc6IFRyZWVDb25maWc7XG4gICAgZG9jdW1lbnRUeXBlcyA9IFtcbiAgICAgICAgRG9jdW1lbnROb2RlVHlwZS5Eb2N1bWVudCxcbiAgICAgICAgRG9jdW1lbnROb2RlVHlwZS5GaWxlRG9jdW1lbnQsXG4gICAgICAgIERvY3VtZW50Tm9kZVR5cGUuTGlua0RvY3VtZW50LFxuICAgICAgICBEb2N1bWVudE5vZGVUeXBlLlNob3J0Y3V0RG9jdW1lbnRcbiAgICBdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbGlua1NlcnZpY2U6IFFNU0NLRWRpdG9yTGlua1NlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxRTVNDS0VkaXRvckltYWdlTWFwQ29tcG9uZW50PixcbiAgICAgICAgcHJpdmF0ZSBjb21tb25TZXJ2aWNlOiBRTVNDS0VkaXRvckNvbW1vblNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogUU1TQ0tFZGl0b3JJbWFnZU1hcCxcbiAgICAgICAgaWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksXG4gICAgICAgIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICAgICBwcml2YXRlIHRyZWVTZXJ2aWNlOiBRTVNDS0VkaXRvclRyZWVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHNlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2U6IFFNU1NlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5pbWFnZU1hcERhdGEgPSBkYXRhO1xuICAgICAgICB0aGlzLm5hdHVyYWxJbWFnZUhlaWdodCA9IHRoaXMuaW1hZ2VNYXBEYXRhLmltYWdlSGVpZ2h0O1xuICAgICAgICB0aGlzLm5hdHVyYWxJbWFnZVdpZHRoID0gdGhpcy5pbWFnZU1hcERhdGEuaW1hZ2VXaWR0aDtcbiAgICAgICAgdGhpcy5pbml0Rm9ybUNvbnRyb2woKTtcbiAgICAgICAgdGhpcy5pbml0U3ZnSWNvbnMoaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xuICAgIH1cblxuXG4gICAgaW5pdERlZmF1bHRWYWx1ZXMoKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMaW5rVHlwZSA9IExpbmtUeXBlLnVybDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhcmdldCA9IFRhcmdldFR5cGVOYW1lLm5ldztcbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gUHJvdG9jb2xUeXBlTmFtZS5odHRwO1xuICAgICAgICB0aGlzLnVybCA9ICcnO1xuICAgICAgICB0aGlzLnByb2Nlc3NlZFVybCA9ICcnO1xuICAgICAgICB0aGlzLmFkdmlzb3J5VGl0bGUgPSAnJztcbiAgICAgICAgdGhpcy5hbmNob3JUZXh0ID0gJyc7XG4gICAgfVxuXG4gICAgaW5pdFN2Z0ljb25zKGljb25SZWdpc3RyeTogTWF0SWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikge1xuICAgICAgICBpY29uUmVnaXN0cnkuYWRkU3ZnSWNvbkxpdGVyYWwoJ3ZlY3Rvci1wb2ludGVyJywgc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKEljb25TdmcuVkVDVE9SX1BPSU5URVIpKTtcbiAgICAgICAgaWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25MaXRlcmFsKCd2ZWN0b3ItY2lyY2xlJywgc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKEljb25TdmcuVkVDVE9SX0NJUkNMRSkpO1xuICAgICAgICBpY29uUmVnaXN0cnkuYWRkU3ZnSWNvbkxpdGVyYWwoJ3ZlY3Rvci1yZWN0YW5nbGUnLCBzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoSWNvblN2Zy5WRUNUT1JfUkVDVEFOR0xFKSk7XG4gICAgICAgIGljb25SZWdpc3RyeS5hZGRTdmdJY29uTGl0ZXJhbCgndmVjdG9yLXBvbHlnb24nLCBzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoSWNvblN2Zy5WRUNUT1JfUE9MWUdPTikpO1xuICAgICAgICBpY29uUmVnaXN0cnkuYWRkU3ZnSWNvbkxpdGVyYWwoJ3ZlY3Rvci1yZW1vdmUnLCBzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoSWNvblN2Zy5WRUNUT1JfUkVNT1ZFKSk7XG4gICAgfVxuXG4gICAgaW5pdEZvcm1Db250cm9sKCkge1xuICAgICAgICBjb25zdCB2YWxpYXRpb25Db250cm9scyA9IHtcbiAgICAgICAgICAgIHRhcmdldExpc3Q6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgICAgICAgICAgcHJvdG9jb2xMaXN0OiBuZXcgRm9ybUNvbnRyb2woKSxcbiAgICAgICAgICAgIGFuY2hvclRleHRMaXN0OiBuZXcgRm9ybUNvbnRyb2woKSxcbiAgICAgICAgICAgIG1vZGVMaXN0OiBuZXcgRm9ybUNvbnRyb2woKSxcbiAgICAgICAgICAgIHpvb21MaXN0OiBuZXcgRm9ybUNvbnRyb2woKSxcbiAgICAgICAgICAgIGxpbmtUeXBlTGlzdDogbmV3IEZvcm1Db250cm9sKClcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuaW1hZ2VNYXBEYXRhLmxpbmtKYXZhU2NyaXB0TGlua3NBbGxvd2VkID09IHRydWUpIHtcbiAgICAgICAgICAgIHZhbGlhdGlvbkNvbnRyb2xzWyd1cmwnXSA9IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbGlhdGlvbkNvbnRyb2xzWyd1cmwnXSA9IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIGludmFsaWRVUkxWYWxpZGF0b3IodGhpcy5qYXZhc2NyaXB0TGlua1JlZ2V4KV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW1hZ2VNYXBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHZhbGlhdGlvbkNvbnRyb2xzKTtcbiAgICB9XG5cbiAgICBpbml0TGlua1R5cGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmxpbmtUeXBlcykge1xuICAgICAgICAgICAgdGhpcy5saW5rVHlwZXMucHVzaCh7IGlkOiBMaW5rVHlwZS51cmwsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5MSU5LX1VSTCB9KTtcbiAgICAgICAgICAgIHRoaXMubGlua1R5cGVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiBMaW5rVHlwZS5hbmNob3JUZXh0LFxuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5MSU5LX0FOQ0hPUl9JTl9URVhUXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXRUYXJnZXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRhcmdldHMpIHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0cy5wdXNoKHsgaWQ6IFRhcmdldFR5cGVOYW1lLm5ldywgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlRBUlRHRVRfTkVXIH0pO1xuICAgICAgICAgICAgdGhpcy50YXJnZXRzLnB1c2goeyBpZDogVGFyZ2V0VHlwZU5hbWUuc2FtZSwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlRBUkdFVF9TQU1FIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdFByb3RvY29sKCkge1xuICAgICAgICBpZiAodGhpcy5wcm90b2NvbHMpIHtcbiAgICAgICAgICAgIHRoaXMucHJvdG9jb2xzLnB1c2goeyBpZDogUHJvdG9jb2xUeXBlTmFtZS5odHRwLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuUFJPVE9DT0xfSFRUUCB9KTtcbiAgICAgICAgICAgIHRoaXMucHJvdG9jb2xzLnB1c2goeyBpZDogUHJvdG9jb2xUeXBlTmFtZS5odHRwcywgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlBST1RPQ09MX0hUVFBTIH0pO1xuICAgICAgICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7IGlkOiBQcm90b2NvbFR5cGVOYW1lLmZ0cCwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlBST1RPQ09MX0ZUUCB9KTtcbiAgICAgICAgICAgIHRoaXMucHJvdG9jb2xzLnB1c2goeyBpZDogUHJvdG9jb2xUeXBlTmFtZS5uZXdzLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuUFJPVE9DT0xfTkVXIH0pO1xuICAgICAgICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7IGlkOiBQcm90b2NvbFR5cGVOYW1lLm90aGVyLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuUFJPVE9DT0xfT1RIRVIgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0TW9kZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1vZGVzKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGVzLnB1c2goeyBpZDogSW1hZ2VNb2RlTmFtZS5Qb2ludGVyLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuSU1BR0VfTU9ERV9QT0lOVEVSLCBpY29uOiBcInZlY3Rvci1wb2ludGVyXCIgfSk7XG4gICAgICAgICAgICB0aGlzLm1vZGVzLnB1c2goeyBpZDogSW1hZ2VNb2RlTmFtZS5SZWN0YW5nbGUsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5JTUFHRV9NT0RFX1JFQ1RBTkdMRSwgaWNvbjogXCJ2ZWN0b3ItcmVjdGFuZ2xlXCIgfSk7XG4gICAgICAgICAgICB0aGlzLm1vZGVzLnB1c2goeyBpZDogSW1hZ2VNb2RlTmFtZS5DaXJjbGUsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5JTUFHRV9NT0RFX0NJUkNMRSwgaWNvbjogXCJ2ZWN0b3ItY2lyY2xlXCIgfSk7XG4gICAgICAgICAgICB0aGlzLm1vZGVzLnB1c2goeyBpZDogSW1hZ2VNb2RlTmFtZS5Qb2x5Z29uLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuSU1BR0VfTU9ERV9QT0xZR09OLCBpY29uOiBcInZlY3Rvci1wb2x5Z29uXCIgfSk7XG4gICAgICAgICAgICB0aGlzLm1vZGVzLnB1c2goeyBpZDogSW1hZ2VNb2RlTmFtZS5SZW1vdmUsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5JTUFHRV9NT0RFX1JFTU9WRSwgaWNvbjogXCJ2ZWN0b3ItcmVtb3ZlXCIgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0Wm9vbVR5cGVzKCkge1xuICAgICAgICBpZiAodGhpcy56b29tVHlwZXMpIHtcbiAgICAgICAgICAgIHRoaXMuem9vbVR5cGVzLnB1c2goeyBpZDogMC4yNSwgbmFtZTogXCIyNSVcIiB9KTtcbiAgICAgICAgICAgIHRoaXMuem9vbVR5cGVzLnB1c2goeyBpZDogMC41LCBuYW1lOiBcIjUwJVwiIH0pO1xuICAgICAgICAgICAgdGhpcy56b29tVHlwZXMucHVzaCh7IGlkOiAxLjAsIG5hbWU6IFwiMTAwJVwiIH0pO1xuICAgICAgICAgICAgdGhpcy56b29tVHlwZXMucHVzaCh7IGlkOiAyLjAsIG5hbWU6IFwiMjAwJVwiIH0pO1xuICAgICAgICAgICAgdGhpcy56b29tVHlwZXMucHVzaCh7IGlkOiAzLjAsIG5hbWU6IFwiMzAwJVwiIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdEFuY2hvcigpIHtcbiAgICAgICAgdGhpcy5hbmNob3JzID0gW107XG4gICAgICAgIHRoaXMuYW5jaG9ycyA9IFt7IHZhbHVlOiAwLCB2aWV3VmFsdWU6ICcnLCBhbmNob3JWYWx1ZTogTGlua0FuY2hvci5CbGFuayB9XTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuZ2V0TGFuZ3VhZ2VTdWJqZWN0JC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pbml0TGlua1R5cGUoKTtcbiAgICAgICAgdGhpcy5pbml0VGFyZ2V0KCk7XG4gICAgICAgIHRoaXMuaW5pdFByb3RvY29sKCk7XG4gICAgICAgIHRoaXMuaW5pdE1vZGVzKCk7XG4gICAgICAgIHRoaXMuaW5pdFpvb21UeXBlcygpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICBpZiAodGhpcy5pbWFnZUxpc3RlbmVycyAmJiB0aGlzLmltYWdlTGlzdGVuZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VMaXN0ZW5lcnMuZm9yRWFjaChsaXN0ZW5lciA9PiB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JbWFnZUxvYWQoKSB7XG4gICAgICAgIHRoaXMubmF0dXJhbEltYWdlSGVpZ2h0ID0gdGhpcy5uYXR1cmFsSW1hZ2VIZWlnaHQgIT0gMCA/IHRoaXMubmF0dXJhbEltYWdlSGVpZ2h0IDogdGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQubmF0dXJhbEhlaWdodDtcbiAgICAgICAgdGhpcy5uYXR1cmFsSW1hZ2VXaWR0aCA9IHRoaXMubmF0dXJhbEltYWdlV2lkdGggIT0gMCA/IHRoaXMubmF0dXJhbEltYWdlV2lkdGggOiB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudC5uYXR1cmFsV2lkdGg7XG5cbiAgICAgICAgdGhpcy5zZXRJbWFnZVNpemUoKTtcblxuICAgICAgICB0aGlzLm15SW1hZ2VNYXAuc2V0TWFwSnNvbih7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLmltYWdlTWFwRGF0YS5uYW1lLFxuICAgICAgICAgICAgYXJlYXM6IHRoaXMuaW1hZ2VNYXBEYXRhLmFyZWFzXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmltYWdlTWFwRGF0YS5hcmVhcyAmJiB0aGlzLmltYWdlTWFwRGF0YS5hcmVhcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VNYXAuYmx1ckFyZWEodGhpcy5teUltYWdlTWFwLmN1cnJlbnRpZCk7XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VNYXAuY3VycmVudGlkID0gMDtcbiAgICAgICAgICAgIHRoaXMubXlJbWFnZU1hcC5zZWxlY3RlZElkID0gMDtcbiAgICAgICAgICAgIHRoaXMub25TZWxlY3RBcmVhKHRoaXMubXlJbWFnZU1hcC5hcmVhc1swXSk7XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VNYXAuaGlnaGxpZ2h0QXJlYSgwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMubXlJbWFnZVJlZikge1xuICAgICAgICAgICAgdGhpcy5pc0ltYWdlTG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmltYWdlTGlzdGVuZXJzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQsICdsb2FkJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25JbWFnZUxvYWQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzSW1hZ2VMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBdm9pZCBkcmFnJmRyb3Agb2YgdGhlIGltYWdlXG4gICAgICAgIHRoaXMubXlJbWFnZU1hcCA9IG5ldyBRTVNDS0VkaXRvckltYWdlTWFwTGliKHtcbiAgICAgICAgICAgIGN1c3RvbV9jYWxsYmFja3M6IHtcbiAgICAgICAgICAgICAgICBcIm9uQWRkQXJlYVwiOiB0aGlzLm9uQWRkQXJlYS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgICdvblNlbGVjdEFyZWEnOiB0aGlzLm9uU2VsZWN0QXJlYS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgICdvblJlbW92ZUFyZWEnOiB0aGlzLm9uUmVtb3ZlQXJlYS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgICdvblN0YXR1c01lc3NhZ2UnOiB0aGlzLm9uU3RhdHVzTWVzc2FnZS5iaW5kKHRoaXMpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW1hZ2VFbGVtZW50OiB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIGJvdW5kaW5nX2JveDogZmFsc2UsXG4gICAgICAgICAgICBDTF9EUkFXX1NIQVBFOiAnI0YwMCcsXG4gICAgICAgICAgICBDTF9OT1JNX1NIQVBFOiAnI0FBQScsXG4gICAgICAgICAgICBDTF9ISUdITElHSFRfU0hBUEU6ICcjRjAwJyxcbiAgICAgICAgICAgIHN0cmluZ3M6IHtcbiAgICAgICAgICAgICAgICBcIlBPTFlHT05fRFJBV1wiOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuUE9MWUdPTl9EUkFXLFxuICAgICAgICAgICAgICAgIFwiUkVDVEFOR0xFX0RSQVdcIjogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlJFQ1RBTkdMRV9EUkFXLFxuICAgICAgICAgICAgICAgIFwiU1FVQVJFX0RSQVdcIjogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlNRVUFSRV9EUkFXLFxuICAgICAgICAgICAgICAgICdSRUFEWSc6ICcnLFxuICAgICAgICAgICAgICAgICdSRUNUQU5HTEVfTU9WRSc6ICcnLFxuICAgICAgICAgICAgICAgICdSRUNUQU5HTEVfUkVTSVpFX1RPUCc6ICcnLFxuICAgICAgICAgICAgICAgICdSRUNUQU5HTEVfUkVTSVpFX1JJR0hUJzogJycsXG4gICAgICAgICAgICAgICAgJ1JFQ1RBTkdMRV9SRVNJWkVfQk9UVE9NJzogJycsXG4gICAgICAgICAgICAgICAgJ1JFQ1RBTkdMRV9SRVNJWkVfTEVGVCc6ICcnLFxuICAgICAgICAgICAgICAgICdTUVVBUkVfTU9WRSc6ICcnLFxuICAgICAgICAgICAgICAgICdTUVVBUkVfUkVTSVpFX1RPUCc6ICcnLFxuICAgICAgICAgICAgICAgICdTUVVBUkVfUkVTSVpFX1JJR0hUJzogJycsXG4gICAgICAgICAgICAgICAgJ1NRVUFSRV9SRVNJWkVfQk9UVE9NJzogJycsXG4gICAgICAgICAgICAgICAgJ1NRVUFSRV9SRVNJWkVfTEVGVCc6ICcnLFxuICAgICAgICAgICAgICAgICdQT0xZR09OX01PVkUnOiAnJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwYXJzZUxpbmtVcmwodXJsOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcHJvdG9jb2wgPSB0aGlzLnByb3RvY29sUmVnZXguZXhlYyh1cmwpO1xuICAgICAgICBpZiAoISFwcm90b2NvbCkge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzZWRVcmwgPSB1cmwuc3Vic3RyKHByb3RvY29sWzBdLmxlbmd0aCk7XG4gICAgICAgICAgICB0aGlzLnVybCA9IHRoaXMucHJvY2Vzc2VkVXJsO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gcHJvdG9jb2xbMF0udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmphdmFzY3JpcHRMaW5rUmVnZXgudGVzdCh1cmwpICYmICF0aGlzLmltYWdlTWFwRGF0YS5saW5rSmF2YVNjcmlwdExpbmtzQWxsb3dlZCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gUHJvdG9jb2xUeXBlTmFtZS5odHRwO1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzZWRVcmwgPSAnJztcbiAgICAgICAgICAgIHRoaXMudXJsID0gdGhpcy5wcm9jZXNzZWRVcmw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NlZFVybCA9IHVybDtcbiAgICAgICAgICAgIHRoaXMudXJsID0gdGhpcy5wcm9jZXNzZWRVcmw7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvdG9jb2wgPSBQcm90b2NvbFR5cGVOYW1lLm90aGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TZWxlY3RBcmVhKGFyZWEpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50QXJlYUlkID0gYXJlYS5haWQ7XG4gICAgICAgIHRoaXMuc2hvd0ltYWdlTWFwSW5mb3JtYXRpb24gPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTW9kZSA9PSBJbWFnZU1vZGVOYW1lLlJlbW92ZSkge1xuICAgICAgICAgICAgdGhpcy5teUltYWdlTWFwLnJlbW92ZUFyZWEodGhpcy5jdXJyZW50QXJlYUlkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChhcmVhLmFocmVmLm1hdGNoKC9eIyguKikkLykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFuY2hvclRleHQgPSBhcmVhLmFocmVmLnNsaWNlKDEpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMaW5rVHlwZSA9IExpbmtUeXBlLmFuY2hvclRleHQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMaW5rVHlwZSA9IExpbmtUeXBlLnVybDtcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnNlTGlua1VybChhcmVhLmFocmVmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYXJnZXQgPSBhcmVhLmF0YXJnZXQ7XG4gICAgICAgICAgICB0aGlzLmFkdmlzb3J5VGl0bGUgPSBhcmVhLmFhbHQ7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblJlbW92ZUFyZWEoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEFyZWFJZCA9IC0xO1xuICAgICAgICB0aGlzLnNob3dJbWFnZU1hcEluZm9ybWF0aW9uID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmVtb3ZlTWFwKCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRBcmVhSWQgPSAtMTtcbiAgICAgICAgdGhpcy5zaG93SW1hZ2VNYXBJbmZvcm1hdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLm15SW1hZ2VNYXAucmVtb3ZlQWxsQXJlYXMoKTtcbiAgICB9XG5cbiAgICBvblN0YXR1c01lc3NhZ2UodGV4dDogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLm15U3RhdHVzUmVmKSB7XG4gICAgICAgICAgICB0aGlzLm15U3RhdHVzUmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGV4dCB8fCAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVXJsS2V5dXAoKSB7XG4gICAgICAgIHRoaXMuaXNVcmxQcm9jZXNzaW5nID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMudXJsICE9IHRoaXMucHJvY2Vzc2VkVXJsKSB7XG4gICAgICAgICAgICB0aGlzLnBhcnNlTGlua1VybCh0aGlzLnVybCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFyZWFWYWx1ZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNVcmxQcm9jZXNzaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25VcmxDaGFuZ2UoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1VybFByb2Nlc3NpbmcpIHtcbiAgICAgICAgICAgIHRoaXMub25VcmxLZXl1cCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BbmNob3JUZXh0Q2hhbmdlKCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUFyZWFWYWx1ZXMoKTtcbiAgICB9XG5cbiAgICBvblByb3RvY29sQ2hhbmdlKCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUFyZWFWYWx1ZXMoKTtcbiAgICB9XG5cbiAgICBvblRhcmdldENoYW5nZSgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVBcmVhVmFsdWVzKCk7XG4gICAgfVxuXG4gICAgb25BZGRBcmVhKGlkOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50QXJlYUlkID0gaWQ7XG4gICAgICAgIHRoaXMuc2hvd0ltYWdlTWFwSW5mb3JtYXRpb24gPSB0cnVlO1xuICAgICAgICB0aGlzLmluaXREZWZhdWx0VmFsdWVzKCk7XG4gICAgICAgIHRoaXMudXBkYXRlQXJlYVZhbHVlcygpO1xuICAgIH1cblxuICAgIHVwZGF0ZUFyZWFWYWx1ZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRBcmVhSWQgPiAtMSkge1xuICAgICAgICAgICAgdmFyIGFocmVmID0gdGhpcy5idWlsZFVybFdpdGhQcm90b2NvbCgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMaW5rVHlwZSA9PSBMaW5rVHlwZS5hbmNob3JUZXh0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5teUltYWdlTWFwLmFyZWFzW3RoaXMuY3VycmVudEFyZWFJZF0uYXRhcmdldCA9IFRhcmdldFR5cGVOYW1lLnNhbWU7XG4gICAgICAgICAgICAgICAgdGhpcy5teUltYWdlTWFwLmFyZWFzW3RoaXMuY3VycmVudEFyZWFJZF0uYWFsdCA9IHRoaXMuYW5jaG9yVGV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubXlJbWFnZU1hcC5hcmVhc1t0aGlzLmN1cnJlbnRBcmVhSWRdLmF0YXJnZXQgPSB0aGlzLnNlbGVjdGVkVGFyZ2V0IHx8IFRhcmdldFR5cGVOYW1lLm5ldztcbiAgICAgICAgICAgICAgICB0aGlzLm15SW1hZ2VNYXAuYXJlYXNbdGhpcy5jdXJyZW50QXJlYUlkXS5hYWx0ID0gdGhpcy5hZHZpc29yeVRpdGxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5teUltYWdlTWFwLmFyZWFzW3RoaXMuY3VycmVudEFyZWFJZF0uYWhyZWYgPSBhaHJlZjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJ1aWxkVXJsV2l0aFByb3RvY29sKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZExpbmtUeXBlID09IExpbmtUeXBlLmFuY2hvclRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiAnIycgKyAodGhpcy5hbmNob3JUZXh0IHx8ICcnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISF0aGlzLnByb2Nlc3NlZFVybCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCArIHRoaXMucHJvY2Vzc2VkVXJsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBvbkNsb3NlRGlhbG9nKCkge1xuICAgICAgICBjb25zdCBzY3JvbGxUb3AgPSB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0U2Nyb2xsVG9wQ2tlZGl0b3IodGhpcy5ja0VkaXRvcik7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZS5zZXRTY3JvbGxUb3BFZGl0b3JDb250YWluZXIodGhpcy5ja0VkaXRvciwgc2Nyb2xsVG9wKTtcbiAgICB9XG5cbiAgICBvbk1vZGVDaGFuZ2UoZTogYW55KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlID0gZS52YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRNb2RlID09IEltYWdlTW9kZU5hbWUuUG9pbnRlciB8fCB0aGlzLnNlbGVjdGVkTW9kZSA9PSBJbWFnZU1vZGVOYW1lLlJlbW92ZSkge1xuICAgICAgICAgICAgdGhpcy5teUltYWdlTWFwLmlzX2RyYXdpbmcgPSAwO1xuICAgICAgICAgICAgdGhpcy5teUltYWdlTWFwLm5leHRTaGFwZSA9ICcnO1xuICAgICAgICAgICAgdGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuY3Vyc29yID0gJ2RlZmF1bHQnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5teUltYWdlTWFwLm5leHRTaGFwZSA9IHRoaXMuc2VsZWN0ZWRNb2RlO1xuICAgICAgICAgICAgdGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuY3Vyc29yID0gJ2Nyb3NzaGFpcic7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblpvb21DaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMuc2V0SW1hZ2VTaXplKCk7XG4gICAgICAgIGlmICh0aGlzLm15SW1hZ2VNYXApIHtcbiAgICAgICAgICAgIHRoaXMubXlJbWFnZU1hcC5zY2FsZUFsbEFyZWFzKHRoaXMuc2VsZWN0ZWRab29tKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTGlua1R5cGVDaGFuZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTGlua1R5cGUgPT09IExpbmtUeXBlLmFuY2hvclRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0RWRpdG9yQW5jaG9yKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVBcmVhVmFsdWVzKCk7XG4gICAgfVxuXG4gICAgZ2V0RWRpdG9yQW5jaG9yKCkge1xuICAgICAgICB0aGlzLmFuY2hvckRvY3VtZW50cyA9IFtdO1xuICAgICAgICBpZiAodGhpcy5pbWFnZU1hcERhdGEuZWRpdG9yQ29udGVudCkge1xuICAgICAgICAgICAgdGhpcy5hbmNob3JEb2N1bWVudHMucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6IDAsXG4gICAgICAgICAgICAgICAgZW50aXR5SWQ6IDAsXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRJZDogMCxcbiAgICAgICAgICAgICAgICBkb2N1bWVudFR5cGVJZDogMCxcbiAgICAgICAgICAgICAgICByaWNoVGV4dDogdGhpcy5pbWFnZU1hcERhdGEuZWRpdG9yQ29udGVudFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRBbmNob3JEb2N1bWVudCh0aGlzLmFuY2hvckRvY3VtZW50cyk7XG4gICAgICAgIHRoaXMuZWRpdG9yQW5jaG9ycyA9IHRoaXMuYW5jaG9ycztcbiAgICB9XG5cbiAgICBzZXRJbWFnZVNpemUoKSB7XG4gICAgICAgIGlmICh0aGlzLm15SW1hZ2VSZWYpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5uYXR1cmFsSW1hZ2VXaWR0aCAqIHRoaXMuc2VsZWN0ZWRab29tO1xuICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5uYXR1cmFsSW1hZ2VIZWlnaHQgKiB0aGlzLnNlbGVjdGVkWm9vbTtcbiAgICAgICAgICAgIHRoaXMubXlJbWFnZVJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIGAke3dpZHRofXB4O2ApO1xuICAgICAgICAgICAgdGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIGAke2hlaWdodH1weDtgKTtcbiAgICAgICAgICAgIHRoaXMubXlJbWFnZVJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gYCR7d2lkdGh9cHhgO1xuICAgICAgICAgICAgdGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7aGVpZ2h0fXB4YDtcbiAgICAgICAgICAgIHRoaXMubXlJbWFnZVJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmN1cnNvciA9IHRoaXMuc2VsZWN0ZWRNb2RlID09IEltYWdlTW9kZU5hbWUuUG9pbnRlciB8fCB0aGlzLnNlbGVjdGVkTW9kZSA9PSBJbWFnZU1vZGVOYW1lLlJlbW92ZSA/ICdkZWZhdWx0JyA6ICdjcm9zc2hhaXInO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZUhhbmRib29rKGlzT25seURvY3VtZW50OiBib29sZWFuLCBpc0FuY2hvckRvY3VtZW50OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc0NvbmZpZyA9IHtcbiAgICAgICAgICAgIGFsbG93U2VsZWN0Rm9sZGVyOiB0cnVlLFxuICAgICAgICAgICAgYXJlYU9mQ3VycmVudFByb2Nlc3M6ICcnLFxuICAgICAgICAgICAgc2hvd0NoZWNrQm94OiBmYWxzZSxcbiAgICAgICAgICAgIGFsbG93TXVsdGlwbGVDaGVjazogZmFsc2UsXG4gICAgICAgICAgICBvbmx5Q2hlY2tCb3hGb3JDaGlsZDogZmFsc2UsXG4gICAgICAgICAgICBtb2R1bGVJZDogRGF0YVR5cGUucHJvY2VzcyxcbiAgICAgICAgICAgIG9wZW5JY29uQ29sb3I6ICcjMTk1NEE5JyxcbiAgICAgICAgICAgIGNsb3NlSWNvbkNvbG9yOiAnI2E0YjBkZScsXG4gICAgICAgICAgICBzaW5nbGVTZWxlY3RlZE5vZGU6IHRydWUsXG4gICAgICAgICAgICBvbmx5Rm9sZGVyOiBmYWxzZSxcbiAgICAgICAgICAgIHNlbGVjdE9uZTogdHJ1ZVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZG9jdW1lbnRDb25maWcgPSB7XG4gICAgICAgICAgICBhbGxvd1NlbGVjdEZvbGRlcjogIWlzT25seURvY3VtZW50LFxuICAgICAgICAgICAgYXJlYU9mQ3VycmVudFByb2Nlc3M6ICcnLFxuICAgICAgICAgICAgc2hvd0NoZWNrQm94OiBmYWxzZSxcbiAgICAgICAgICAgIG1vZHVsZUlkOiBEYXRhVHlwZS5kb2N1bWVudCxcbiAgICAgICAgICAgIGFsbG93TXVsdGlwbGVDaGVjazogZmFsc2UsXG4gICAgICAgICAgICBvbmx5Q2hlY2tCb3hGb3JDaGlsZDogZmFsc2UsXG4gICAgICAgICAgICBvcGVuSWNvbkNvbG9yOiAnIzE5NTRBOScsXG4gICAgICAgICAgICBjbG9zZUljb25Db2xvcjogJyM0YWNhZmYnLFxuICAgICAgICAgICAgc2luZ2xlU2VsZWN0ZWROb2RlOiB0cnVlLFxuICAgICAgICAgICAgb25seUZvbGRlcjogZmFsc2UsXG4gICAgICAgICAgICBzZWxlY3RPbmU6IHRydWVcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBkYXRhOiBTZWxlY3RQcm9jZXNzRG9jdW1lbnRQb3B1cERhdGEgPSBuZXcgU2VsZWN0UHJvY2Vzc0RvY3VtZW50UG9wdXBEYXRhKCk7XG4gICAgICAgIGRhdGEubW9kdWxlSWQgPSBNb2R1bGVUeXBlLmRvY3VtZW50UHJvY2VzcztcbiAgICAgICAgZGF0YS5tb2R1bGVOYW1lID0gdGhpcy5MQU5HLlFNU0NLRURJVE9SLkRPQ1VNRU5UX1BST0NFU1M7XG4gICAgICAgIGlmICghaXNPbmx5RG9jdW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHRyZWVQcm9jZXNzRGF0YSA9IGF3YWl0IHRoaXMudHJlZVNlcnZpY2UuZ2V0UHJvY2Vzc0FyZWFDb250ZW50cygnJywgdHJ1ZSwgdGhpcy5kYXRhLmVuYWJsZWRJbnRlcmNvbm5lY3RlZCkudG9Qcm9taXNlKCk7XG4gICAgICAgICAgICBkYXRhLnRyZWVEYXRhMSA9IHRyZWVQcm9jZXNzRGF0YT8uYXJlYXMubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHguaWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHgubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IHgucGFyZW50SWQgPT09IGd1aWRIZWxwZXIuZW1wdHkgPyAnJyA6IHgucGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1c0lkOiAwLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXNOYW1lOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheUlkOiAwLFxuICAgICAgICAgICAgICAgICAgICBleHBhbmRhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pIHx8IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdHJlZURvY3VtZW50RGF0YSA9IGF3YWl0IHRoaXMudHJlZVNlcnZpY2UuZ2V0Rm9sZGVyQ2hpbGRyZW5zKCkudG9Qcm9taXNlKCk7XG5cbiAgICAgICAgZGF0YS50cmVlRGF0YTIgPSB0cmVlRG9jdW1lbnREYXRhPy5tYXAoKHgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaWQ6IHguaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBuYW1lOiB4Lm5hbWUudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBwYXJlbnRJZDogIXgucGFyZW50SGFuZGJvb2tJZCA/ICcnIDogeC5wYXJlbnRIYW5kYm9va0lkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgc3RhdHVzSWQ6IDAsXG4gICAgICAgICAgICAgICAgc3RhdHVzTmFtZTogJycsXG4gICAgICAgICAgICAgICAgZGlzcGxheUlkOiAwLFxuICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHgudHlwZSA+IERvY3VtZW50Tm9kZVR5cGUuU2hvcnRjdXREb2N1bWVudCxcbiAgICAgICAgICAgICAgICBsZXZlbFR5cGU6IHgudHlwZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRhdGEudHJlZUNvbmZpZzEgPSB0aGlzLnByb2Nlc3NDb25maWc7XG4gICAgICAgIGRhdGEudHJlZUNvbmZpZzIgPSB0aGlzLmRvY3VtZW50Q29uZmlnO1xuICAgICAgICBkYXRhLnNwbGl0VmlldyA9IGZhbHNlO1xuICAgICAgICBkYXRhLmlzU2VsZWN0T25lID0gdHJ1ZTtcbiAgICAgICAgZGF0YS50b29sdGlwTG9jYXRpb25TZWFyY2hSZXN1bHQgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oU2VsZWN0UHJvY2Vzc0RvY3VtZW50UG9wdXBDb21wb25lbnQsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnNzY4cHgnLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiAnNjkwcHgnLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsncmVsYXRlZC1wcm9jZXNzX19wb3B1cCcsICdjdXN0b20tbWF0LWRpYWxvZy1jb250YWluZXInXSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLm9uU2VhcmNoLnN1YnNjcmliZShhc3luYyAoa2V5d29yZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWtleXdvcmQgfHwga2V5d29yZC50cmltKCkgPT09ICcnKVxuICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgbGV0IGdldFNlYXJjaE9wdGlvbiA9IG5ldyBHZXRTZWFyY2hQcm9jZXNzRG9jdW1lbnRPcHRpb24odHJ1ZSwgdHJ1ZSwgdGhpcy5kYXRhLmVuYWJsZWRJbnRlcmNvbm5lY3RlZCwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAoaXNPbmx5RG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICBnZXRTZWFyY2hPcHRpb24uaXNHZXRQcm9jZXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZ2V0U2VhcmNoT3B0aW9uLmlzR2V0SW50ZXJjb25uZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBnZXRTZWFyY2hPcHRpb24uaXNHZXRBcmVhID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNlYXJjaFJlc3VsdCA9IGF3YWl0IHRoaXMudHJlZVNlcnZpY2UuZ2V0U2VhcmNoUHJvY2Vzc0RvY3VtZW50KGtleXdvcmQudHJpbSgpLCBnZXRTZWFyY2hPcHRpb24pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RQcm9jZXNzRG9jdW1lbnRHbG9iYWxTZXJ2aWNlLnNldFNlYXJjaFJlbGF0ZWQoc2VhcmNoUmVzdWx0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLm9uRXhwYW5kUHJvY2Vzc0FyZWEuc3Vic2NyaWJlKChhcmVhKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRyZWVTZXJ2aWNlLmdldFByb2Nlc3NBcmVhQ29udGVudHMoYXJlYS5pZCwgdHJ1ZSwgdGhpcy5kYXRhLmVuYWJsZWRJbnRlcmNvbm5lY3RlZCkudG9Qcm9taXNlKCkudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJlYXMgPSByZXMuYXJlYXMubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB4LmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogeC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiB4LnBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzSWQ6IHguc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguc3RhdHVzTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5SWQ6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pIHx8IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NlcyA9IHJlcy5wcm9jZXNzZXMubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB4LmVudGl0eUlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogeC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiB4LnByb2Nlc3NBcmVhSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzSWQ6IHguc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguYXBwcm92YWxTdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUlkOiB4LnByb2Nlc3NOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVR5cGU6IHgucHJvY2Vzc0NsYXNzaWZpY2F0aW9uID09PSBQcm9jZXNzQ2xhc3NpZmljYXRpb24uSW50ZXJjb25uZWN0ZWRQcm9jZXNzID8gRGF0YVR5cGUucHJvY2Vzc0ludGVyY29ubmVjdGVkIDogRGF0YVR5cGUucHJvY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSkgfHwgW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZS5zZXRQcm9jZXNzQXJlYUNoaWxkcmVuKFsuLi5hcmVhcywgLi4ucHJvY2Vzc2VzXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5vbkV4cGFuZEZvbGRlci5zdWJzY3JpYmUoKGZvbGRlcikgPT4ge1xuICAgICAgICAgICAgdGhpcy50cmVlU2VydmljZVxuICAgICAgICAgICAgICAgIC5nZXRGb2xkZXJDaGlsZHJlbnMoZm9sZGVyLmlkKVxuICAgICAgICAgICAgICAgIC50b1Byb21pc2UoKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRzID0gcmVzLm1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB4LmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHgubmFtZS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogdGhpcy5nZXRQYXJlbnRJZCh4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzSWQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguYXBwcm92YWxTdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlJZDogeC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZTogIXRoaXMuZG9jdW1lbnRUeXBlcy5pbmNsdWRlcyh4LnR5cGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbFR5cGU6ICF0aGlzLmRvY3VtZW50VHlwZXMuaW5jbHVkZXMoeC50eXBlKSA/IHgudHlwZSA6IGZvbGRlci5sZXZlbFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2Uuc2V0Rm9sZGVyQ2hpbGRyZW4oY2hpbGRzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3VsdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0RGF0YSA9IHJlc3VsdFswXTtcbiAgICAgICAgICAgICAgICBpZiAoaXNBbmNob3JEb2N1bWVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50SWQgPSByZXN1bHREYXRhLmlkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFuY2hvckRvY3VtZW50KHJlc3VsdERhdGEuaWQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFyc2VMaW5rVXJsKHRoaXMuZ2V0TGlua1VSTChyZXN1bHREYXRhKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IFByb3RvY29sVHlwZU5hbWUub3RoZXI7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5hZHZpc29yeVRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkdmlzb3J5VGl0bGUgPSByZXN1bHREYXRhLml0ZW1OYW1lO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQXJlYVZhbHVlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRBbmNob3JEb2N1bWVudChkb2N1bWVudElkOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5saW5rU2VydmljZVxuICAgICAgICAgICAgLmdldEFuY2hvckRvY3VtZW50TGlzdChkb2N1bWVudElkKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmNob3JEb2N1bWVudHMgPSByZXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QW5jaG9yRG9jdW1lbnQodGhpcy5hbmNob3JEb2N1bWVudHMpO1xuICAgICAgICAgICAgICAgICAgICAvL3RoaXMuZG9jdW1lbnRBbmNob3JzID0gdGhpcy5hbmNob3JzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYW5jaG9yRG9jdW1lbnRzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QW5jaG9yRG9jdW1lbnQodGhpcy5hbmNob3JEb2N1bWVudHMpO1xuICAgICAgICAgICAgICAgICAgICAvL3RoaXMuZG9jdW1lbnRBbmNob3JzID0gdGhpcy5hbmNob3JzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldEFuY2hvckRvY3VtZW50KGFuY2hvckRvY3VtZW50OiBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudFtdKSB7XG4gICAgICAgIHRoaXMuaW5pdEFuY2hvcigpO1xuICAgICAgICBsZXQgaWQgPSAzO1xuICAgICAgICBpZiAoYW5jaG9yRG9jdW1lbnQpIHtcbiAgICAgICAgICAgIGFuY2hvckRvY3VtZW50LmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICBkaXYuaW5uZXJIVE1MID0gZS5yaWNoVGV4dDtcbiAgICAgICAgICAgICAgICBjb25zdCBkb21Db250ZW50ID0gZGl2O1xuICAgICAgICAgICAgICAgIGNvbnN0IGFUYWdzID0gZG9tQ29udGVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpO1xuICAgICAgICAgICAgICAgIGlmIChhVGFncykge1xuICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLWZvci1vZlxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFUYWdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YWcgPSBhVGFnc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YWcubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hbmNob3JzLmZpbmRJbmRleCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geC5hbmNob3JWYWx1ZSA9PT0gdGFnLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFuY2hvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3VmFsdWU6IHRhZy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yVmFsdWU6IHRhZy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoaXMuYW5jaG9ycy5wdXNoKHtcbiAgICAgICAgLy8gICAgIHZhbHVlOiAxLFxuICAgICAgICAvLyAgICAgdmlld1ZhbHVlOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuQU5DSE9SX0FUVEFDSE1FTlQsXG4gICAgICAgIC8vICAgICBhbmNob3JWYWx1ZTogTGlua0FuY2hvci5BdHRhY2htZW50XG4gICAgICAgIC8vIH0pO1xuICAgICAgICAvLyB0aGlzLmFuY2hvcnMucHVzaCh7XG4gICAgICAgIC8vICAgICB2YWx1ZTogMixcbiAgICAgICAgLy8gICAgIHZpZXdWYWx1ZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkFOQ0hPUl9SRUxBVEVEX0RPQ1VNRU5ULFxuICAgICAgICAvLyAgICAgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuUmVsYXRlZFxuICAgICAgICAvLyB9KTtcbiAgICB9XG5cblxuICAgIGF0dGFjaG1lbnQoKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JQYXJhbXRlcigpO1xuICAgICAgICBkYXRhLm1vZHVsZSA9IHRoaXMuaW1hZ2VNYXBEYXRhLm1vZHVsZTtcbiAgICAgICAgZGF0YS5lbnRpdHlJZCA9IHRoaXMuaW1hZ2VNYXBEYXRhLmVudGl0eUlkO1xuICAgICAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oTGlua0F0dGFjaG1lbnRDb21wb25lbnQsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnNjUwcHgnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnNjUwcHgnLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9nVGVtcGxhdGVcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcnNlTGlua1VybChyZXN1bHQudXJsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gUHJvdG9jb2xUeXBlTmFtZS5vdGhlcjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmFkdmlzb3J5VGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWR2aXNvcnlUaXRsZSA9IHJlc3VsdC50aXRsZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUFyZWFWYWx1ZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzYXZlKCkge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5teUltYWdlTWFwLmdldE1hcEpzb24oKTtcbiAgICAgICAgZGF0YS5pbWFnZUhlaWdodCA9IHRoaXMubmF0dXJhbEltYWdlSGVpZ2h0O1xuICAgICAgICBkYXRhLmltYWdlV2lkdGggPSB0aGlzLm5hdHVyYWxJbWFnZVdpZHRoO1xuICAgICAgICBjb25zdCBzY3JvbGxUb3AgPSB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0U2Nyb2xsVG9wQ2tlZGl0b3IodGhpcy5ja0VkaXRvcik7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGRhdGEpO1xuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2Uuc2V0U2Nyb2xsVG9wRWRpdG9yQ29udGFpbmVyKHRoaXMuY2tFZGl0b3IsIHNjcm9sbFRvcCk7XG4gICAgfVxuXG4gICAgY2FuY2VsKCkge1xuICAgICAgICAvL3RoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgIHRoaXMub25DbG9zZURpYWxvZygpO1xuICAgIH1cblxuICAgIGdldFBhcmVudElkKGl0ZW0pIHtcbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50VHlwZXMuaW5jbHVkZXMoaXRlbS50eXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuICFpdGVtLnBhcmVudEhhbmRib29rSWQgPyAnJyA6IGl0ZW0ucGFyZW50SGFuZGJvb2tJZC50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhaXRlbS5wYXJlbnRGb2xkZXJJZCA/ICcnIDogaXRlbS5wYXJlbnRGb2xkZXJJZC50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGdldExpbmtVUkwoZGF0YTogYW55KSB7XG4gICAgICAgIGxldCB1cmwgPSAnJztcbiAgICAgICAgc3dpdGNoIChkYXRhPy5pdGVtVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kb2N1bWVudDpcbiAgICAgICAgICAgICAgICB1cmwgPSBgL2RvY3VtZW50LyR7ZGF0YS5pZH1gO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5wcm9jZXNzOlxuICAgICAgICAgICAgICAgIHVybCA9IGAvcHJvY2Vzcy1kZXRhaWwvJHtkYXRhLmRpc3BsYXlJZH1gO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5hcmVhOlxuICAgICAgICAgICAgICAgIHVybCA9IGAvYXJlYS9kZXRhaWwvJHtkYXRhLmlkfWA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERhdGFUeXBlLmZvbGRlcjpcbiAgICAgICAgICAgICAgICB1cmwgPSBgL2ZvbGRlci8ke2RhdGEuaWR9YDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2Vzc0ludGVyY29ubmVjdGVkOlxuICAgICAgICAgICAgICAgIHVybCA9IGAvcHJvY2Vzcy1pbnRlcmNvbm5lY3RlZC8ke2RhdGEuZGlzcGxheUlkfWBcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgfVxufVxuIl19