vcomply-workflow-engine 0.1.8 → 0.2.1
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/vcomply-workflow-engine.umd.js +3 -3
- package/bundles/vcomply-workflow-engine.umd.js.map +1 -1
- package/esm2015/lib/log-an-issue/log-an-issue.component.js +1 -2
- package/esm2015/lib/workflow-risk/workflow-risk.component.js +2 -2
- package/esm2015/lib/workflow-services/log-issue.service.js +3 -2
- package/fesm2015/vcomply-workflow-engine.js +3 -3
- package/fesm2015/vcomply-workflow-engine.js.map +1 -1
- package/package.json +1 -1
|
@@ -685,7 +685,6 @@ export class LogAnIssueComponent {
|
|
|
685
685
|
// this.closeWorkFlow(this.issueData, false);
|
|
686
686
|
}
|
|
687
687
|
else if (evt === 'viewIssue') {
|
|
688
|
-
this.showSmiley = false;
|
|
689
688
|
this.viewIssue();
|
|
690
689
|
}
|
|
691
690
|
}
|
|
@@ -891,4 +890,4 @@ LogAnIssueComponent.propDecorators = {
|
|
|
891
890
|
disconnectRefresh: [{ type: Output }],
|
|
892
891
|
datePicker: [{ type: ViewChild, args: ['datePicker',] }]
|
|
893
892
|
};
|
|
894
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWFuLWlzc3VlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL2xvZy1hbi1pc3N1ZS9sb2ctYW4taXNzdWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUdwSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFTakMsTUFBTSxPQUFPLG1CQUFtQjtJQTRLOUIsWUFBb0IsVUFBMkIsRUFBVSxXQUF3QixFQUFVLFlBQTBCLEVBQVUsUUFBeUI7UUFBcEksZUFBVSxHQUFWLFVBQVUsQ0FBaUI7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUF6Sy9JLHNCQUFpQixHQUFHO1lBQzNCLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsa0JBQWtCLEVBQUUsRUFBRTtZQUN0QixJQUFJLEVBQUMsSUFBSTtZQUNULHNCQUFzQixFQUFFLEVBQUU7U0FDM0IsQ0FBQztRQUNPLGlCQUFZLEdBQUU7WUFDckIsV0FBVyxFQUFHLElBQUk7WUFDaEIsYUFBYSxFQUFHLEVBQUU7WUFDbEIsSUFBSSxFQUFFLElBQUk7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QUcsS0FBSyxDQUFDO1NBQzNDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyw4QkFBOEIsQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxnQkFBZ0I7UUFDZixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLElBQUksTUFBTSxFQUFFO1lBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixJQUFJLE1BQU0sRUFBRTtZQUNuRCxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztTQUM1QztRQUNELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsSUFBSSxNQUFNLEVBQUU7WUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7U0FDNUM7SUFDSCxDQUFDOzs7WUFoM0JBLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QiwrbjJDQUE0Qzs7YUFFN0M7OztZQWZRLGVBQWU7WUFEZixXQUFXO1lBTVgsWUFBWTtZQUNaLGVBQWU7Ozt5QkFXckIsS0FBSztzQkFDTCxLQUFLO2dDQUNMLEtBQUs7MkJBTUwsS0FBSzttQkFNTCxLQUFLO3FCQUNMLEtBQUs7bUNBQ0wsS0FBSzs0QkFDTCxNQUFNOzZCQUNOLE1BQU07NEJBQ04sTUFBTTt5QkFDTixNQUFNO2dDQUNOLE1BQU07eUJBRU4sU0FBUyxTQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2dJc3N1ZVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9sb2ctaXNzdWUuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVkaXRvckNvbmZpZyB9IGZyb20gJ3Zjb21wbHktZWRpdG9yJztcclxuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ25nMi1kYXRlLXBpY2tlcic7XHJcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IFVpS2l0U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3VpLWtpdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XHJcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBJc3N1ZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2lzc3VlLWRhdGEnO1xyXG5pbXBvcnQgeyBUSElTX0VYUFIgfSBmcm9tICdAYW5ndWxhci9jb21waWxlci9zcmMvb3V0cHV0L291dHB1dF9hc3QnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbG9nLWFuLWlzc3VlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbG9nLWFuLWlzc3VlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9sb2ctYW4taXNzdWUuY29tcG9uZW50Lmxlc3MnLCAnLi4vZm9ybXMubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2dBbklzc3VlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIG9wZW5lZEZyb20gITogYW55O1xyXG4gIEBJbnB1dCgpIGlzc3VlSWQgITogYW55O1xyXG4gIEBJbnB1dCgpIHJlcG9uc2liaWxpdHlEYXRhID0geyAvLyBvbmx5IHVzZWQgYnkgbG9nIGFuIGlzc3VlXHJcbiAgICByZXNwb25zaWJpbGl0eUlkOiBudWxsLFxyXG4gICAgcmVzcG9uc2liaWxpdHlOYW1lOiAnJyxcclxuICAgIHJjSWQ6bnVsbCxcclxuICAgIHJlc3BvbnNpYmlsaXR5T2JqZWN0SWQ6ICcnXHJcbiAgfTtcclxuICBASW5wdXQoKSBpc3N1ZURldGFpbHMgPXtcclxuICAgIGF1ZGl0UGxhbklkIDogbnVsbCxcclxuICAgICAgYXVkaXRQbGFuTmFtZSAgOicnLFxyXG4gICAgICByY0lkOiBudWxsLFxyXG4gICAgICBhdWRpdE9iaklkOm51bGxcclxuICB9XHJcbiAgQElucHV0KCkgbW9kZSA9ICdDUkVBVEUnO1xyXG4gIEBJbnB1dCgpIGNvbmZpZyAhOiBJc3N1ZUNvbmZpZ3VyYXRpb247XHJcbiAgQElucHV0KCkgcmVzcG9uc2liaWxpdGllc0RhdGE6IGFueTtcclxuICBAT3V0cHV0KCkgcGlja2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcG9wdWxhdGVPcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlV29ya2Zsb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG1vZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRpc2Nvbm5lY3RSZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGN1cnJlbnRVc2VyICE6IGFueTtcclxuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgZGF0ZVBpY2tlciE6IERhdGVQaWNrZXJDb21wb25lbnQ7XHJcbiAgc2Nyb2xsVG9Cb3R0b20gPSBmYWxzZTtcclxuICBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gIHNob3dEYXRlRXJyb3IgPSBmYWxzZTtcclxuICBzZWxlY3RlZERhdGU6IGFueTtcclxuICBzaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgbG9hZGVyID0gZmFsc2U7XHJcbiAgc21pbGV5TWVzc2FnZSA9IGBUaGUgaXNzdWUgaGFzIGJlZW4gcmVwb3J0ZWQuYDtcclxuICBpc3N1ZURhdGEgITogYW55O1xyXG4gIGlzUmlza0NvbnRyb2xMb2FkaW5nID0gZmFsc2U7XHJcbiAgYWN0aW9uQnV0dG9ucyA9IFtcclxuICAgIHsgYnV0dG9uVGV4dDogJ1JlcG9ydCBNb3JlIElzc3VlcycsIGNsYXNzOiAnd2hpdGUtYnRuJywgaWQ6ICdhZGRNb3JlJyB9LFxyXG4gICAgeyBidXR0b25UZXh0OiAnVmlldyBJc3N1ZScsIGNsYXNzOiAnYmx1ZS1idG4nLCBpZDogJ3ZpZXdJc3N1ZScgfSxcclxuICBdO1xyXG4gIGNyZWF0ZWREYXRhICE6IGFueTtcclxuICBkZXNjcmlwdGlvbjogRWRpdG9yQ29uZmlnID0ge1xyXG4gICAgLy8gbW9kZTogJ3ByaW1lJyxcclxuICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcclxuICAgIGxpbms6IHRydWUsXHJcbiAgICBwbGFjZWhvbGRlcjogJ0Rlc2NyaXB0aW9uJyxcclxuICB9O1xyXG5cclxuICBkYXRlQ29uZmlnID0ge1xyXG4gICAgZGlzYWJsZUtleXByZXNzOiB0cnVlLFxyXG4gICAgZm9ybWF0OiAnREQgTU1NIFlZWVknLFxyXG4gICAgdW5TZWxlY3RPbkNsaWNrOiB0cnVlLFxyXG4gICAgb3Blbk9uQ2xpY2s6ZmFsc2UsXHJcbiAgICBvcGVuT25Gb2N1czpmYWxzZSxcclxuICAgIG1pbjogbmV3IERhdGUoKS5nZXREYXRlKCkudG9TdHJpbmcoKSxcclxuICB9O1xyXG4gIGxpc3REYXRhOmFueSA9IHtcclxuICAgIGlzc3VlVHlwZUxpc3Q6IFtdLFxyXG4gICAgdXNlckxpc3Q6IFtdLFxyXG4gICAgY2F0ZWdvcnlMaXN0OiBbXSxcclxuICAgIHJjTGlzdDogW10sXHJcbiAgICBsaW5rYWdlTGlzdDpbXVxyXG4gIH07XHJcbiAgbG9nSXNzdWVGb3JtOiBhbnkgPSB7XHJcbiAgICBpc3N1ZU5hbWU6ICcnLFxyXG4gICAgZXZpZGVuY2VSZXF1aXJlZDogMCxcclxuICAgIGlzc3VlRGVzY3JpcHRpb246ICcnLFxyXG4gICAgaXNzdWVEZXNjcmlwdGlvbkF0dGFjaGVtZW50czogW10sXHJcbiAgICBpc3N1ZUNhdGVnb3J5OiBbXSxcclxuICAgIGlzc3VlQ3VzdG9tVGFnOiBbXSxcclxuICAgIGlzc3VlUkM6IFtdLFxyXG4gICAgaXNzdWVUeXBlOiBbXSxcclxuICAgIGlzQXNzaWduVG9NeXNlbGY6IGZhbHNlLFxyXG4gICAgZW50cnVzdFRvOiBbXSxcclxuICAgIGlzc3VlRHVlRGF0ZTogJycsXHJcbiAgICBpc3N1ZUR1ZVRpbWU6ICcxMTo1OSBwbScsXHJcbiAgICBleGNlcHRpb25UeXBlOiAxLFxyXG4gICAgaXNzdWVSaXNrUmF0aW5nOiAxLFxyXG4gICAgaXNzdWVQcmlvcml0eTogMSxcclxuICAgIGlzc3VlUmVjb21tZW5kYXRpb246ICcnLFxyXG4gICAgcmVjb21tZW5kZWRBY3Rpb25zQXR0YWNobWVudHM6W10sXHJcbiAgICBpc3N1ZUFzc29jaWF0ZWRSaXNrOiAnJyxcclxuICAgIGFzc29jaWF0ZWRSaXNrc0F0dGFjaG1lbnRzOltdLFxyXG4gICAgaXNzdWVDQ1VzZXJzOiBbXSxcclxuICAgIGZhaWx1cmVDQ1VzZXJzOiBbXSxcclxuICAgIGxpbmtlZENvbnRyb2xSaXNrOltdLFxyXG4gICAgbGlua2FnZVR5cGUgOiAnUklTSydcclxuXHJcbiAgfTtcclxuICBBdHRhY2htZW50VHJhY2s6IGFueSA9IFtbXSxbXSxbXV07XHJcbiAgYWRkaXRpb25hbE9wdGlvblN0YXR1czogYW55ID0ge1xyXG4gICAgRVhDRVBUSU9OX1RZUEU6IGZhbHNlLFxyXG4gICAgRVZJREVOQ0U6IGZhbHNlLFxyXG4gICAgUFJJT1JJVFk6IGZhbHNlLFxyXG4gICAgSVNTVUVfVFlQRTogZmFsc2UsXHJcbiAgICBBU1NPQ0lBVEVEX1JJU0tTOiBmYWxzZSxcclxuICAgIE9WRVJTSUdIVDogZmFsc2VcclxuICB9O1xyXG4gIHJpc2tDbGFzc2lmaWNhdGlvbiA9IFtcclxuICAgIHsgbmFtZTogJ0xPVycsIHZhbHVlOiAxLCBjbGFzczogJ2xvdycgfSxcclxuICAgIHsgbmFtZTogJ0xPVy1NZWRpdW0nLCB2YWx1ZTogMiwgY2xhc3M6ICdsb3ctbWVkJyB9LFxyXG4gICAgeyBuYW1lOiAnTWVkaXVtLUhpZ2gnLCB2YWx1ZTogMywgY2xhc3M6ICdtZWQtaGlnaCcgfSxcclxuICAgIHsgbmFtZTogJ0hpZ2gnLCB2YWx1ZTogNCwgY2xhc3M6ICdoaWdoJyB9XHJcbiAgXTtcclxuICByaXNrUHJvcml0eSA9IFtcclxuICAgIHsgbmFtZTogJ0xPVycsIHZhbHVlOiAxLCBjbGFzczogJ2xvdycgfSxcclxuICAgIHsgbmFtZTogJ01FRElVTScsIHZhbHVlOiAyLCBjbGFzczogJ2xvdy1tZWQnIH0sXHJcbiAgICB7IG5hbWU6ICdISUdIJywgdmFsdWU6IDMsIGNsYXNzOiAnaGlnaCcgfSxcclxuXHJcbiAgXTtcclxuXHJcbiAgc2lkZVNlbGVjdG9yRWxlbWVudHM6IGFueSA9IFsnSVNTVUVfQ0FURUdPUlknLCAnSVNTVUVfUkMnLCAnSVNTVUVfV0hPJywgJ0lTU1VFX1RZUEUnLCAnSVNTVUVfQ0MnLCAnSVNTVUVfRkNDJywnSVNTVUVfQ09OVFJPTF9SSVNLJ107XHJcbiAgc2VsZWN0b3JDb25maWcgPSB7XHJcbiAgICBJU1NVRV9DQVRHT1JZOiB7XHJcbiAgICAgIHBhbmVsVGl0bGU6ICdTZWxlY3QgSXNzdWUgQ2F0ZWdvcnknLFxyXG4gICAgICBmbG9hdGluZ1RleHRTaW5ndWxhcjogJ0NhdGVnb3J5IHNlbGVjdGVkJyxcclxuICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggSXNzdWUgQ2F0ZWdvcnknLFxyXG4gICAgICBzZWFyY2hFbmFibGVkOiB0cnVlLFxyXG4gICAgICBub0RhdGFUZXh0OiAnTm8gQ2F0ZWdvcmllcyBGb3VuZCdcclxuICAgIH0sXHJcbiAgICBJU1NVRV9SQzoge1xyXG4gICAgICBwYW5lbFRpdGxlOiAnU2VsZWN0IFJlc3BvbnNpYmlsaXR5IENlbnRlcicsXHJcbiAgICAgIGZsb2F0aW5nVGV4dFNpbmd1bGFyOiAnUmVzcG9uc2liaWx0eSBjZW50ZXIgc2VsZWN0ZWQnLFxyXG4gICAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1NlYXJjaCBSZXNwb25zaWJpbGl0eSBDZW50ZXInLFxyXG4gICAgICBzZWFyY2hFbmFibGVkOiB0cnVlLFxyXG4gICAgICBub0RhdGFUZXh0OiAnTm8gUmVzcG9uc2liaWxpdHkgQ2VudGVycyBGb3VuZCdcclxuICAgIH0sXHJcbiAgICBJU1NVRV9XSE86IHtcclxuICAgICAgcGFuZWxUaXRsZTogJ1NlbGVjdCBVc2VyJyxcclxuICAgICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdVc2VyIHNlbGVjdGVkJyxcclxuICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggVXNlcicsXHJcbiAgICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIG5vRGF0YVRleHQ6ICdObyBVc2VycyBGb3VuZCdcclxuICAgIH0sXHJcbiAgICBJU1NVRV9UWVBFOiB7XHJcbiAgICAgIHBhbmVsVGl0bGU6ICdTZWxlY3QgSXNzdWUgVHlwZScsXHJcbiAgICAgIGZsb2F0aW5nVGV4dFNpbmd1bGFyOiAnSXNzdWUgVHlwZSBzZWxlY3RlZCcsXHJcbiAgICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIElzc3VlIFR5cGUnLFxyXG4gICAgICBzZWFyY2hFbmFibGVkOiB0cnVlLFxyXG4gICAgICBub0RhdGFUZXh0OiAnTm8gSXNzdWUgVHlwZXMgRm91bmQnXHJcbiAgICB9LFxyXG4gICAgSVNTVUVfQ0M6IHtcclxuICAgICAgcGFuZWxUaXRsZTogJ1NlbGVjdCB1c2VyKHMpJyxcclxuICAgICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdVc2VyIHNlbGVjdGVkJyxcclxuICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggVXNlcicsXHJcbiAgICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIHNlbGVjdEFsbEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIG5vRGF0YVRleHQ6ICdObyBVc2VycyBGb3VuZCdcclxuICAgIH0sXHJcbiAgICBJU1NVRV9GQ0M6IHtcclxuICAgICAgcGFuZWxUaXRsZTogJ1NlbGVjdCB1c2VyKHMpJyxcclxuICAgICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdVc2VyIHNlbGVjdGVkJyxcclxuICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggVXNlcicsXHJcbiAgICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIHNlbGVjdEFsbEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIG5vRGF0YVRleHQ6ICdObyBVc2VycyBGb3VuZCdcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBmaWVsZHNXaXRoRXJyb3I6IGFueSA9IFtdO1xyXG4gIGhpZGRlbkxpc3Q6IGFueVtdID0gW107XHJcblxyXG4gIGFjdGl2ZUZpZWxkID0gJyc7XHJcbiAgYWN0aXZlU2VsZWN0b3IgPSAnJztcclxuICBsaXN0TG9hZGluZ1N0YXR1czogYW55ID0gW107XHJcbiAgY3VycmVudFRpbWUgPSAnJztcclxuICAgIC8qKlxyXG4gICAqIGlzUkNQcmVTZWxlY3RlZCxpc1JDVmlzaWJsZSBhcmUgdmFyaWFibGUgdXNlZCB0byBzZXQgdGhlIHZpc2liaWxpdHkgb2YgcmMgZmllbGQgYW5kIGVkaXQgYnV0dG9uIGluIGNlcnRhaW4gY29uZGl0aW9uc1xyXG4gICAqL1xyXG4gIGlzUkNQcmVTZWxlY3RlZCA9IGZhbHNlO1xyXG4gIGlzUkNWaXNpYmxlID0gdHJ1ZVxyXG4gIGlzUkNNYW5kYXRvcnkgPSBmYWxzZTtcclxuICBkYXRhRm9yRWRpdCAhOmFueTtcclxuICBpc1Jpc2tDb250cm9sVmlzaWJsZSA9IGZhbHNlO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9nU2VydmljZTogTG9nSXNzdWVTZXJ2aWNlLCBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcHJpdmF0ZSB1aUtpdFNlcnZpY2U6IFVpS2l0U2VydmljZSwgcHJpdmF0ZSBzbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlKSB7IH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFRpbWUgPSB0aGlzLmdldEN1cnJlbnRUaW1lKCk7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgICB0aGlzLnNldFVzZXJEZXRhaWxzKCk7XHJcbiAgICB0aGlzLmZldGNoSXNzdWVUeXBlcygpO1xyXG4gICAgdGhpcy5mZXRjaFVzZXJMaXN0KCk7XHJcbiAgICB0aGlzLmZldGNoQ2F0ZWdvcnlMaXN0KCk7XHJcbiAgICB0aGlzLmZldGNoUkNMaXN0KCk7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbkRldGFpbHMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmICghcmVzLmVuYWJsZV9yaXNrY2xhc3MpIHtcclxuICAgICAgICB0aGlzLmhpZGRlbkxpc3QucHVzaCgnUklTS19DTEFTU0lGSUNBVElPTicpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgIHRoaXMuZmV0Y2hDb250cm9sUmlza3MoKTtcclxuICAgICB0aGlzLmRlY2lkZVJDbWFuZGF0b3J5KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIHRoaXMuY3VycmVudFRpbWUgPSB0aGlzLmdldEN1cnJlbnRUaW1lKCk7XHJcbiAgfVxyXG5cclxuICBkZWNpZGVSQ21hbmRhdG9yeSgpe1xyXG4gICAgdGhpcy5pc1JDTWFuZGF0b3J5ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2V0Q3VycmVudFRpbWUoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRUaW1lID0gdGhpcy5nZXRDdXJyZW50VGltZSgpO1xyXG4gIH1cclxuICBnZXRDdXJyZW50VGltZSgpIHtcclxuICAgIGxldCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICBpZiAodG9kYXkuZ2V0RGF0ZSgpID09PSBuZXcgRGF0ZSh0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUR1ZURhdGUpLmdldERhdGUoKSkge1xyXG4gICAgICBpZiAodG9kYXkuZ2V0SG91cnMoKSA8IDEyICYmIHRvZGF5LmdldE1pbnV0ZXMoKSA8IDU5ICYmIHRvZGF5LmdldFNlY29uZHMoKSA8IDU5KSB7XHJcbiAgICAgICAgcmV0dXJuIGAkeyh0b2RheS5nZXRIb3VycygpIDwgMTApID8gJzAnICsgdG9kYXkuZ2V0SG91cnMoKSA6IHRvZGF5LmdldEhvdXJzKCl9OiR7KHRvZGF5LmdldE1pbnV0ZXMoKSA8IDEwKSA/ICcwJyArIHRvZGF5LmdldE1pbnV0ZXMoKSA6IHRvZGF5LmdldE1pbnV0ZXMoKX0gYW1gO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBgJHsoKHRvZGF5LmdldEhvdXJzKCkgLSAxMikgPCAxMCkgPyAnMCcgKyAodG9kYXkuZ2V0SG91cnMoKSAtIDEyKSA6ICh0b2RheS5nZXRIb3VycygpIC0gMTIpfTokeyh0b2RheS5nZXRNaW51dGVzKCkgPCAxMCkgPyAnMCcgKyB0b2RheS5nZXRNaW51dGVzKCkgOiB0b2RheS5nZXRNaW51dGVzKCl9IHBtYDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICcwMDowMCBhbSc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNldFVzZXJEZXRhaWxzKCkge1xyXG4gICAgdGhpcy5jdXJyZW50VXNlciA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckRldGFpbHMoKS51c2VyO1xyXG4gIH1cclxuICBmZXRjaElzc3VlVHlwZXMoKSB7XHJcbiAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzBdID0gZmFsc2U7XHJcbiAgICB0aGlzLmNoZWNrQWxsTGlzdExvYWRlZCgpO1xyXG4gICAgdGhpcy5sb2dTZXJ2aWNlLmdldElzc3VlVHlwZXMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbMF0gPSB0cnVlO1xyXG4gICAgICB0aGlzLmxpc3REYXRhLmlzc3VlVHlwZUxpc3QgPSByZXM7XHJcbiAgICAgIHRoaXMuY2hlY2tBbGxMaXN0TG9hZGVkKCk7XHJcbiAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzBdID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGVja0FsbExpc3RMb2FkZWQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBmZXRjaFVzZXJMaXN0KCkge1xyXG4gICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1sxXSA9IGZhbHNlO1xyXG4gICAgdGhpcy5sb2dTZXJ2aWNlLmdldE9yZ1Blb3BsZSgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1sxXSA9IHRydWU7XHJcbiAgICAgIHRoaXMubGlzdERhdGEudXNlckxpc3QgPSByZXM7XHJcbiAgICAgIHRoaXMuY2hlY2tBbGxMaXN0TG9hZGVkKCk7XHJcbiAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzFdID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGVja0FsbExpc3RMb2FkZWQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZmV0Y2hDYXRlZ29yeUxpc3QoKSB7XHJcbiAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzJdID0gZmFsc2U7XHJcbiAgICB0aGlzLmxvZ1NlcnZpY2UuZ2V0SXNzdWVDYXRlZ29yaWVzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzJdID0gdHJ1ZTtcclxuICAgICAgdGhpcy5saXN0RGF0YS5jYXRlZ29yeUxpc3QgPSByZXM/LmRhdGE7XHJcbiAgICAgIHRoaXMubGlzdERhdGEuY2F0ZWdvcnlMaXN0ID0gdGhpcy5saXN0RGF0YS5jYXRlZ29yeUxpc3QuZmlsdGVyKChlOmFueSk9PiBlPy5jYXRlZ29yeV9uYW1lICE9PSAnVW5jYXRlZ29yaXplZCcpXHJcbiAgICAgIHRoaXMuY2hlY2tBbGxMaXN0TG9hZGVkKCk7XHJcbiAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzJdID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGVja0FsbExpc3RMb2FkZWQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZmV0Y2hSQ0xpc3QoKSB7XHJcbiAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzNdID0gZmFsc2U7XHJcbiAgICB0aGlzLmxvZ1NlcnZpY2UuZ2V0UmVzcG9uc2liaWxpdHlDZW50ZXJMaXN0KCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzNdID0gdHJ1ZTtcclxuICAgICAgdGhpcy5saXN0RGF0YS5yY0xpc3QgPSByZXM7XHJcbiAgICAgIHRoaXMuY2hlY2tBbGxMaXN0TG9hZGVkKCk7XHJcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRSQygpO1xyXG4gICAgfSwgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1szXSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hlY2tBbGxMaXN0TG9hZGVkKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGVkUkMoKXtcclxuICAgIGlmKHRoaXMucmVwb25zaWJpbGl0eURhdGE/LnJjSWQgJiYgdGhpcy5vcGVuZWRGcm9tID09PSAnQ09NUExJQU5DRV9XT1JLUk9PTScpe1xyXG4gICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVJDID0gIHRoaXMucmVwb25zaWJpbGl0eURhdGEucmNJZCA/IHRoaXMubGlzdERhdGEucmNMaXN0LmZpbHRlcigoZTphbnkpID0+IGUucmNfaWQgPT09IHRoaXMucmVwb25zaWJpbGl0eURhdGEucmNJZCk6W107XHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSQyAgPT0+XCIsdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSQywgdGhpcy5saXN0RGF0YS5yY0xpc3QgLCAgdGhpcy5yZXBvbnNpYmlsaXR5RGF0YS5yY0lkLCB0aGlzLmxpc3REYXRhLnJjTGlzdC5maWx0ZXIoKGU6YW55KSA9PiBlLnJjX2lkID09PSB0aGlzLnJlcG9uc2liaWxpdHlEYXRhLnJjSWQpKVxyXG4gICAgfWVsc2UgaWYodGhpcy5pc3N1ZURldGFpbHM/LnJjSWQgJiYgWydBVURJVF9XT1JLUk9PTScsJ1ZJRVdfQVVESVRfRVhFQ1VUSU9OX1NVTU1BUlknLCdFWEVDVVRFX0FVRElUX1BMQU4nXS5pbmNsdWRlcyh0aGlzLm9wZW5lZEZyb20pKXtcclxuICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSQyA9IHRoaXMuaXNzdWVEZXRhaWxzPy5yY0lkID8gdGhpcy5saXN0RGF0YS5yY0xpc3QuZmlsdGVyKChlOmFueSkgPT4gZS5yY19pZCA9PT0gdGhpcy5pc3N1ZURldGFpbHM/LnJjSWQpOltdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMubG9nSXNzdWVGb3JtPy5pc3N1ZVJDPy5sZW5ndGgpe1xyXG4gICAgICB0aGlzLmlzUkNQcmVTZWxlY3RlZCA9IHRydWU7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5pc1JDUHJlU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKFwidGhpcy5yZXBvbnNpYmlsaXR5RGF0YXRoaXMucmVwb25zaWJpbGl0eURhdGF0aGlzLnJlcG9uc2liaWxpdHlEYXRhID09PT5cIiwgdGhpcy5yZXBvbnNpYmlsaXR5RGF0YSlcclxuICAgIGlmKCEodGhpcy5yZXBvbnNpYmlsaXR5RGF0YT8ucmNJZCB8fCB0aGlzLmlzc3VlRGV0YWlscz8ucmNJZCkgJiYgWydDT01QTElBTkNFX1dPUktST09NJywnQVVESVRfV09SS1JPT00nLCdWSUVXX0FVRElUX0VYRUNVVElPTl9TVU1NQVJZJywnRVhFQ1VURV9BVURJVF9QTEFOJ10uaW5jbHVkZXModGhpcy5vcGVuZWRGcm9tKSl7XHJcbiAgICB0aGlzLmlzUkNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5pc1JDVmlzaWJsZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZmV0Y2hDb250cm9sUmlza3MoKXtcclxuXHJcbiAgICAgIGlmKFsnVklFV19BVURJVF9FWEVDVVRJT05fU1VNTUFSWScsJ0VYRUNVVEVfQVVESVRfUExBTiddLmluY2x1ZGVzKHRoaXMub3BlbmVkRnJvbSkpe1xyXG5cclxuICAgICAgICB0aGlzLmdldExpbmthZ2UodGhpcy5pc3N1ZURldGFpbHM/LmF1ZGl0T2JqSWQsdGhpcy5sb2dJc3N1ZUZvcm0ubGlua2FnZVR5cGUpXHJcbiAgICAgIH1cclxuICB9XHJcblxyXG5cclxuICBnZXRMaW5rYWdlKGF1ZGl0SWQ6YW55LCB0eXBlOnN0cmluZyl7XHJcbiAgICB0aGlzLmlzUmlza0NvbnRyb2xMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMubG9nU2VydmljZS5nZXRDb250cm9sUmlzayhhdWRpdElkLHR5cGUpPy5zdWJzY3JpYmUoKGRhdGE6YW55KT0+e1xyXG4gICAgICB0aGlzLmxpc3REYXRhLmxpbmthZ2VMaXN0ID0gWy4uLnRoaXMubGlzdERhdGEubGlua2FnZUxpc3QsLi4uZGF0YV07XHJcbiAgICAgIHRoaXMubGlzdERhdGEubGlua2FnZUxpc3QgPSAgdGhpcy5saXN0RGF0YS5saW5rYWdlTGlzdC5maWx0ZXIoKHRoaW5nOmFueSwgaW5kZXg6YW55LCBzZWxmOmFueSkgPT5cclxuICBpbmRleCA9PT0gc2VsZi5maW5kSW5kZXgoKHQ6YW55KSA9PiAoXHJcbiAgICB0Lml0ZW1JZCA9PT0gdGhpbmcuaXRlbUlkICYmIHQuaXRlbVR5cGUgPT09IHRoaW5nLml0ZW1UeXBlXHJcbiAgKSlcclxuKVxyXG4gICAgICB0aGlzLmlzUmlza0NvbnRyb2xMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwibGlua2FnZVwiLHRoaXMubGlzdERhdGEpXHJcbiAgICAgfSwoZXJyb3I6YW55KT0+e1xyXG4gICAgICB0aGlzLmlzUmlza0NvbnRyb2xMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgfSlcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVGhpcyBmdW5jdGlvaiBjaGVjayB3ZWF0aGVyIGFsbCB0aGUgcmVxdWlyZWQgbGlzdHMgYXJlIGxvYWRlZFxyXG4gICAqIElmIGxvYWRlZCBoaWRlcyB0aGUgbG9hZGVyIG90aGVyd2lzZSBzaG93cyB0aGUgbG9hZGVyLlxyXG4gICAqL1xyXG4gIGNoZWNrQWxsTGlzdExvYWRlZCgpIHtcclxuICAgIGlmICh0aGlzLmxpc3RMb2FkaW5nU3RhdHVzLmluY2x1ZGVzKGZhbHNlKSkge1xyXG4gICAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIGlmKHRoaXMubW9kZT09PSdFRElUJyl7XHJcbiAgICAgICAgdGhpcy5mZXRjaElzc3VlRGV0YWlscygpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBSZW1vdmVzIGVycm9yIGZyb20gdGhlIGZpZWxzIHdpdGggZXJyb3IgdG8gcmVtb3ZlIHRoZSBlcnJvciBtZXNzYWcgZnJvbSB0aGUgVUlcclxuICAgKiBAcGFyYW0gZXJyb3JLZXkgZXJyb3IgSWRlbnRpZmllciB1c2VkIHRvIHNob3cgZXJyb3IgaW4gc3BlY2lmaWMgZmllbGRzLlxyXG4gICAqL1xyXG4gIHJlbW92ZUVycm9yKGVycm9yS2V5OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWVsZHNXaXRoRXJyb3IuaW5kZXhPZihlcnJvcktleSk7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB0aGlzLmZpZWxkc1dpdGhFcnJvci5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuICBvcGVuRGF0ZVBpY2tlcigpIHtcclxuICAgIHRoaXMuZGF0ZVBpY2tlci5hcGkub3BlbigpO1xyXG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IHRydWU7XHJcbiAgICB0aGlzLnNldEFjdGl2ZUZpZWxkU2VsZWN0b3IoJ0lTU1VFX0RBVEVfVElNRScsICdJU1NVRV9EQVRFX1RJTUUnKTtcclxuICB9XHJcbiAgY2xvc2VEYXRlUGlja2VyKGV2dDogYW55KSB7XHJcbiAgICBpZiAoIWV2dCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoZXZ0Py5kYXRlPy5fZCkge1xyXG4gICAgICBsZXQgbW9udGhBcnJheSA9IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddXHJcbiAgICAgIGNvbnN0IGRhdGVWYWx1ZSA9IG5ldyBEYXRlKGV2dD8uZGF0ZT8uX2QpLmdldERhdGUoKTtcclxuICAgICAgY29uc3QgbW9udGhWYWx1ZSA9IG1vbnRoQXJyYXlbbmV3IERhdGUoZXZ0Py5kYXRlPy5fZCkuZ2V0TW9udGgoKV07XHJcbiAgICAgIGNvbnN0IHllYXJWYWx1ZSA9IG5ldyBEYXRlKGV2dD8uZGF0ZT8uX2QpLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSBgJHtkYXRlVmFsdWV9ICR7bW9udGhWYWx1ZX0gJHt5ZWFyVmFsdWV9YDtcclxuICAgICAgaWYgKGV2dD8uZGF0ZT8uX2QgIT09IHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlRHVlRGF0ZT8uX2QpIHtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUR1ZVRpbWUgPSBcIjExOjU5IFBNXCI7XHJcbiAgICAgICAgdGhpcy5zZXRDdXJyZW50VGltZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZXZ0Py5kYXRlPy5fZCkge1xyXG4gICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUR1ZURhdGUgPSBldnQ/LmRhdGU/Ll9kO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRlUGlja2VyLmFwaS5jbG9zZSgpO1xyXG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZXRBY3RpdmVGaWVsZFNlbGVjdG9yKCcnLCAnJyk7XHJcbiAgfVxyXG5cclxuICBzZXRBY3RpdmVGaWVsZFNlbGVjdG9yKGFjdGl2ZUZpZWxkOiBzdHJpbmcsIGFjdGl2ZVNlbGVjdG9yPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmFjdGl2ZUZpZWxkID0gYWN0aXZlRmllbGQ7XHJcbiAgICAoYWN0aXZlU2VsZWN0b3IgPyB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gYWN0aXZlU2VsZWN0b3IgOiB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gJycpO1xyXG4gICAgY29uc3Qgc2xpZGVyVHlwZSA9IFsnSVNTVUVfUkMnLCAnSVNTVUVfQ0FURUdPUlknLCAnSVNTVUVfVFlQRScsICdJU1NVRV9DQycsICdJU1NVRV9GQ0MnLCAnSVNTVUVfV0hPJywnSVNTVUVfQ09OVFJPTF9SSVNLJ107XHJcbiAgICBpZiAoc2xpZGVyVHlwZS5pbmNsdWRlcyhhY3RpdmVGaWVsZCkpIHtcclxuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZmllbGREZXNlbGVjdG9yKHR5cGU6IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVTZWxlY3RvciA9ICcnO1xyXG4gICAgdGhpcy5hY3RpdmVGaWVsZCA9ICcnO1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0b3JBY3Rpb24oZXZ0OiBhbnksIHR5cGU6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coZXZ0LCB0eXBlKVxyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ0lTU1VFX0NBVEVHT1JZJzoge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGV2dCk7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVDYXRlZ29yeSA9IHRoaXMuaWRUb0FycmF5KGV2dCwgdGhpcy5saXN0RGF0YS5jYXRlZ29yeUxpc3QsICdjYXRlZ29yeV9pZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUNhdGVnb3J5KTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBpZiAoZXZ0Py5sZW5ndGggPiAwKSB7IHRoaXMucmVtb3ZlRXJyb3IoJ2lzc3VlQ2F0ZWdvcnknKSB9XHJcbiAgICAgICAgaWYodGhpcy5sb2dJc3N1ZUZvcm0/Lmlzc3VlQ2F0ZWdvcnlbMF0/LmN1c3RvbV90YWdzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgY29uc3QgdGFnOmFueSA9IFtdXHJcbiAgICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybT8uaXNzdWVDYXRlZ29yeVswXT8uY3VzdG9tX3RhZ3MuZm9yRWFjaCgoZWxlbWVudDphbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICB0YWcucHVzaCh7bmFtZTplbGVtZW50LCB2YWx1ZTonJ30pXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlQ3VzdG9tVGFnID0gdGFnO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVDdXN0b21UYWcgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgLy9bXCJpc3N1ZU5hbWVcIiwgXCJpc3N1ZUNhdGVnb3J5XCIsIFwiaXNzdWVSQ1wiLCBcImVudHJ1c3RUb1wiLCBcImlzc3VlRHVlRGF0ZVwiLCBcImlzc3VlUmVjb21tZW5kYXRpb25cIl1cclxuICAgICAgY2FzZSAnSVNTVUVfUkMnOiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXZ0LCB0eXBlKVxyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlUkMgPSB0aGlzLmlkVG9BcnJheShldnQsIHRoaXMubGlzdERhdGEucmNMaXN0LCAncmNfaWQnKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBpZiAoZXZ0Py5sZW5ndGggPiAwKSB7IHRoaXMucmVtb3ZlRXJyb3IoJ2lzc3VlUkMnKSB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnSVNTVUVfV0hPJzoge1xyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmVudHJ1c3RUbyA9IHRoaXMuaWRUb0FycmF5KGV2dCwgdGhpcy5saXN0RGF0YS51c2VyTGlzdCwgJ2VtcGxveWVlX2lkJyk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgaWYgKGV2dD8ubGVuZ3RoID4gMCkgeyB0aGlzLnJlbW92ZUVycm9yKCdlbnRydXN0VG8nKSB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnSVNTVUVfVFlQRSc6IHtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVR5cGUgPSB0aGlzLmlkVG9BcnJheShldnQsIHRoaXMubGlzdERhdGEuaXNzdWVUeXBlTGlzdCwgJ2lzc3VlX2lkJyk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnSVNTVUVfQ0MnOiB7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVDQ1VzZXJzID0gdGhpcy5pZFRvQXJyYXkoZXZ0LCB0aGlzLmxpc3REYXRhLnVzZXJMaXN0LCAnZW1wbG95ZWVfZW1haWwnKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9GQ0MnOiB7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uZmFpbHVyZUNDVXNlcnMgPSB0aGlzLmlkVG9BcnJheShldnQsIHRoaXMubGlzdERhdGEudXNlckxpc3QsICdlbXBsb3llZV9lbWFpbCcpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjYXNlICdJU1NVRV9DT05UUk9MX1JJU0snOlxyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmxpbmtlZENvbnRyb2xSaXNrID0gdGhpcy5pZFRvQXJyYXkoZXZ0LCB0aGlzLmxpc3REYXRhLmxpbmthZ2VMaXN0LCAnaXRlbUlkJyk7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0ubGlua2FnZVR5cGUgPSAgdGhpcy5sb2dJc3N1ZUZvcm0/LmxpbmtlZENvbnRyb2xSaXNrWzBdPy5pdGVtVHlwZTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUl0ZW0odHlwZTogYW55LCBlbGVtZW50OiBhbnkpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdJU1NVRV9DQVRFR09SWSc6IHtcclxuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUNhdGVnb3J5LmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLmNhdGVnb3J5X2lkID09PSBlbGVtZW50LmNhdGVnb3J5X2lkKTtcclxuICAgICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkgeyB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUNhdGVnb3J5LnNwbGljZShpdGVtSW5kZXgsIDEpOyB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnSVNTVUVfUkMnOiB7XHJcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSQy5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS5yY19pZCA9PT0gZWxlbWVudC5yY19pZCk7XHJcbiAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHsgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSQy5zcGxpY2UoaXRlbUluZGV4LCAxKTsgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0lTU1VFX1dITyc6IHtcclxuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5lbnRydXN0VG8uZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0uZW1wbG95ZWVfaWQgPT09IGVsZW1lbnQuZW1wbG95ZWVfaWQpO1xyXG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7IHRoaXMubG9nSXNzdWVGb3JtLmVudHJ1c3RUby5zcGxpY2UoaXRlbUluZGV4LCAxKTsgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0lTU1VFX1RZUEUnOiB7XHJcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVUeXBlLmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLmlzc3VlX2lkID09PSBlbGVtZW50Lmlzc3VlX2lkKTtcclxuICAgICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkgeyB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVR5cGUuc3BsaWNlKGl0ZW1JbmRleCwgMSk7IH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9DQyc6IHtcclxuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUNDVXNlcnMuZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0uZW1wbG95ZWVfZW1haWwgPT09IGVsZW1lbnQuZW1wbG95ZWVfZW1haWwpO1xyXG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7IHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlQ0NVc2Vycy5zcGxpY2UoaXRlbUluZGV4LCAxKTsgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0lTU1VFX0ZDQyc6IHtcclxuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5mYWlsdXJlQ0NVc2Vycy5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS5lbXBsb3llZV9lbWFpbCA9PT0gZWxlbWVudC5lbXBsb3llZV9lbWFpbCk7XHJcbiAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHsgdGhpcy5sb2dJc3N1ZUZvcm0uZmFpbHVyZUNDVXNlcnMuc3BsaWNlKGl0ZW1JbmRleCwgMSk7IH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9DT05UUk9MX1JJU0snOlxyXG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMubG9nSXNzdWVGb3JtLmxpbmtlZENvbnRyb2xSaXNrLmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLml0ZW1JZCA9PT0gZWxlbWVudC5pdGVtSWQpO1xyXG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7IHRoaXMubG9nSXNzdWVGb3JtLmxpbmtlZENvbnRyb2xSaXNrLnNwbGljZShpdGVtSW5kZXgsIDEpOyB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFzc2lnbk15c2VsZihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnJlbW92ZUVycm9yKCdlbnRydXN0VG8nKVxyXG4gICAgdGhpcy5sb2dJc3N1ZUZvcm0uZW50cnVzdFRvID0gW107XHJcblxyXG4gIH1cclxuICBzZXRFeGNlcHRpb24odHlwZTogYW55KSB7IHRoaXMubG9nSXNzdWVGb3JtLmV4Y2VwdGlvblR5cGUgPSB0eXBlOyB9XHJcbiAgc2V0RXZpZGVuY2UodHlwZTogYW55KSB7IHRoaXMubG9nSXNzdWVGb3JtLmV2aWRlbmNlUmVxdWlyZWQgPSB0eXBlOyB9XHJcblxyXG4gIGFkZE1vcmVJbmZvKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1c1tldmVudC5jb2RlXSA9IGV2ZW50LmNoZWNrZWQ7XHJcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gdHJ1ZTtcclxuICB9XHJcbiAgaWRUb0FycmF5KHNlbGVjdGVkSXRlbXM6IGFueSwgbGlzdEl0ZW1zOiBhbnksIGZpbHRlcmtleTogYW55KSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZCA9IHNlbGVjdGVkSXRlbXM7XHJcbiAgICBjb25zdCBsaXN0ID0gbGlzdEl0ZW1zO1xyXG4gICAgY29uc3Qga2V5ID0gZmlsdGVya2V5O1xyXG4gICAgY29uc3QgeCA9IGxpc3QuZmlsdGVyKChlbDogYW55KSA9PiBzZWxlY3RlZC5pbmNsdWRlcyhlbFtrZXldKSk7XHJcbiAgICByZXR1cm4geDtcclxuICB9XHJcbi8vL0NvZGUgYmV0d2VlbiA1MDMgdG8gNjA4IGNhbiBiZSBvcHRpbWl6ZWQgdG8gcmVtb3ZlIGR1cGxpY2F0aW9uXHJcbiBzZWxlY3RGaWxlKHR5cGU6c3RyaW5nLGZpbGVzOmFueSl7XHJcbiAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICBjYXNlICdJU1NVRV9ERVNDUklQVElPTic6IHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gZmlsZXMubGVuZ3RoIC0gMTsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IGZpbGVzW2ldLmZpbGUubmFtZSA/PyAnJztcclxuICAgICAgICB0aGlzLkF0dGFjaG1lbnRUcmFja1swXS5wdXNoKG5hbWUpO1xyXG4gICAgICAgIHRoaXMudXBsb2FkRmlsZShmaWxlc1tpXS5maWxlLHR5cGUpO1xyXG4gICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgIH1cclxuICAgIGNhc2UgJ1JFQ09NTUVOREVEX0FDVElPTlMnOntcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gZmlsZXMubGVuZ3RoIC0gMTsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IGZpbGVzW2ldLmZpbGUubmFtZSA/PyAnJztcclxuICAgICAgICB0aGlzLkF0dGFjaG1lbnRUcmFja1sxXS5wdXNoKG5hbWUpO1xyXG4gICAgICAgIHRoaXMudXBsb2FkRmlsZShmaWxlc1tpXS5maWxlLHR5cGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgY2FzZSAnQVNTT0NJQVRFRF9SSVNLUyc6e1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBmaWxlcy5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgICBjb25zdCBuYW1lID0gZmlsZXNbaV0uZmlsZS5uYW1lID8/ICcnO1xyXG4gICAgICAgIHRoaXMuQXR0YWNobWVudFRyYWNrWzJdLnB1c2gobmFtZSk7XHJcbiAgICAgICAgdGhpcy51cGxvYWRGaWxlKGZpbGVzW2ldLmZpbGUsdHlwZSk7XHJcbiAgICAgIH1cclxuICAgICBicmVhaztcclxuICAgIH1cclxuIH1cclxufVxyXG5cclxuXHJcbiAgdXBsb2FkRmlsZShmaWxlOiBhbnksdHlwZTpzdHJpbmcpIHtcclxuICAgIGxldCB0cmFja0luZGV4ID0gMCA7XHJcbiAgICBzd2l0Y2godHlwZSl7XHJcbiAgICAgIGNhc2UgJ0lTU1VFX0RFU0NSSVBUSU9OJzp7XHJcbiAgICAgICAgdHJhY2tJbmRleCA9IDA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnUkVDT01NRU5ERURfQUNUSU9OUyc6e1xyXG4gICAgICAgIHRyYWNrSW5kZXggPSAxO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0FTU09DSUFURURfUklTS1MnOntcclxuICAgICAgICB0cmFja0luZGV4ID0gMjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcclxuICAgIGNvbnN0IGRlc3RpbmF0aW9uU3RyaW5nID0gdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25JZCgpLnRvU3RyaW5nKCk7XHJcbiAgICB0aGlzLmxvZ1NlcnZpY2UudXBsb2FkRmlsZXMoZm9ybURhdGEsIGRlc3RpbmF0aW9uU3RyaW5nKycvJykuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuXHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLkF0dGFjaG1lbnRUcmFja1t0cmFja0luZGV4XS5pbmRleE9mKGZpbGU/Lm5hbWUpO1xyXG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgIHRoaXMuQXR0YWNobWVudFRyYWNrW3RyYWNrSW5kZXhdLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzd2l0Y2godHlwZSl7XHJcbiAgICAgICAgICBjYXNlICdJU1NVRV9ERVNDUklQVElPTic6e1xyXG4gICAgICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZURlc2NyaXB0aW9uQXR0YWNoZW1lbnRzLnB1c2gocmVzKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlICdSRUNPTU1FTkRFRF9BQ1RJT05TJzp7XHJcbiAgICAgICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLnJlY29tbWVuZGVkQWN0aW9uc0F0dGFjaG1lbnRzLnB1c2gocmVzKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlICdBU1NPQ0lBVEVEX1JJU0tTJzp7XHJcbiAgICAgICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmFzc29jaWF0ZWRSaXNrc0F0dGFjaG1lbnRzLnB1c2gocmVzKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zdCBpbmRleCA9ICB0aGlzLkF0dGFjaG1lbnRUcmFja1t0cmFja0luZGV4XS5pbmRleE9mKGZpbGUubmFtZSk7XHJcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICAgdGhpcy5BdHRhY2htZW50VHJhY2tbdHJhY2tJbmRleF0uc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlRmlsZShmaWxlOiBhbnksdHlwZTpzdHJpbmcpIHtcclxuICAgIGxldCBmaWxlSW5kZXggPSAtMTtcclxuICAgIHN3aXRjaCh0eXBlKXtcclxuICAgICAgY2FzZSAnSVNTVUVfREVTQ1JJUFRJT04nOntcclxuICAgICAgICBmaWxlSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZURlc2NyaXB0aW9uQXR0YWNoZW1lbnRzPy5maW5kSW5kZXgoKGN1cnJlbnRGaWxlczogYW55KSA9PiBjdXJyZW50RmlsZXMub3JnX2ZpbGUgPT09IGZpbGUub3JnX2ZpbGUpID8/IC0xO1xyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlRGVzY3JpcHRpb25BdHRhY2hlbWVudHM/LnNwbGljZShmaWxlSW5kZXgsIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ1JFQ09NTUVOREVEX0FDVElPTlMnOntcclxuICAgICAgICBmaWxlSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5yZWNvbW1lbmRlZEFjdGlvbnNBdHRhY2htZW50cz8uZmluZEluZGV4KChjdXJyZW50RmlsZXM6IGFueSkgPT4gY3VycmVudEZpbGVzLm9yZ19maWxlID09PSBmaWxlLm9yZ19maWxlKSA/PyAtMTtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5yZWNvbW1lbmRlZEFjdGlvbnNBdHRhY2htZW50cz8uc3BsaWNlKGZpbGVJbmRleCwgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnQVNTT0NJQVRFRF9SSVNLUyc6e1xyXG4gICAgICAgIGZpbGVJbmRleCA9IHRoaXMubG9nSXNzdWVGb3JtLmFzc29jaWF0ZWRSaXNrc0F0dGFjaG1lbnRzPy5maW5kSW5kZXgoKGN1cnJlbnRGaWxlczogYW55KSA9PiBjdXJyZW50RmlsZXMub3JnX2ZpbGUgPT09IGZpbGUub3JnX2ZpbGUpID8/IC0xO1xyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmFzc29jaWF0ZWRSaXNrc0F0dGFjaG1lbnRzPy5zcGxpY2UoZmlsZUluZGV4LCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuIGFkZElzc3VlKCl7XHJcbiAgIGNvbnN0IGZvcm0gPSBjbG9uZURlZXAodGhpcy5sb2dJc3N1ZUZvcm0pO1xyXG4gICBpZiAoZm9ybS5pc0Fzc2lnblRvTXlzZWxmKXtcclxuICAgICBmb3JtLmVudHJ1c3RUbyA9IHRoaXMubGlzdERhdGEudXNlckxpc3QuZmlsdGVyKChlbXBsaXN0OiBhbnkpID0+IGVtcGxpc3QubXlfbWVtYmVyX2lkID09PSB0aGlzLmN1cnJlbnRVc2VyLmlkKTtcclxuICAgfVxyXG5cclxuICAgdGhpcy5maWVsZHNXaXRoRXJyb3IgPSBbXTtcclxuICAgdGhpcy5maWVsZHNXaXRoRXJyb3IgPSB0aGlzLmxvZ1NlcnZpY2UudmFsaWRhdGUoZm9ybSwgdGhpcy5vcGVuZWRGcm9tLHRoaXMuaXNSQ01hbmRhdG9yeSk7XHJcbiAgIGlmICh0aGlzLmZpZWxkc1dpdGhFcnJvci5sZW5ndGggPiAwICl7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gICBjb25zdCBQQVlMT0FEID0gdGhpcy5sb2dTZXJ2aWNlLnBheWxvYWRCdWlsZGVyKGZvcm0sIHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1cyk7XHJcblxyXG4gICBpZih0aGlzLm1vZGUgPT09ICdDUkVBVEUnKXtcclxuICAgUEFZTE9BRC5saW5rYWdlX29iamVjdCA9IHsgc291cmNlIDogdGhpcy5vcGVuZWRGcm9tLCB0eXBlOicnLCB0eXBlX2lkOiAwLCBzb3VyY2VfaWQ6IDAsIHNvdXJjZV9vYmplY3RfaWQ6ICcnfTtcclxuICAgIGlmICh0aGlzLiBvcGVuZWRGcm9tID09PSAnQ09NUExJQU5DRV9XT1JLUk9PTScgJiYgdGhpcy5yZXBvbnNpYmlsaXR5RGF0YT8ucmVzcG9uc2liaWxpdHlJZCl7XHJcbiAgICAgIFBBWUxPQUQubGlua2FnZV9vYmplY3QgPSB7IHNvdXJjZV9pZDogIHRoaXMucmVwb25zaWJpbGl0eURhdGE/LnJlc3BvbnNpYmlsaXR5SWQsIHR5cGU6ICcnLCB0eXBlX2lkOiAwLCAgc291cmNlIDogdGhpcy5vcGVuZWRGcm9tLCBzb3VyY2Vfb2JqZWN0X2lkOiB0aGlzLnJlcG9uc2liaWxpdHlEYXRhPy5yZXNwb25zaWJpbGl0eU9iamVjdElkIH0gO1xyXG4gICB9XHJcbiAgIGlmKFsnVklFV19BVURJVF9FWEVDVVRJT05fU1VNTUFSWScsJ0VYRUNVVEVfQVVESVRfUExBTiddLmluY2x1ZGVzKHRoaXMub3BlbmVkRnJvbSkpe1xyXG4gICAgICAgICAgaWYodGhpcy5sb2dJc3N1ZUZvcm0/LmxpbmthZ2VUeXBlICYmIHRoaXMubG9nSXNzdWVGb3JtPy5saW5rZWRDb250cm9sUmlzay5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgaWYoWydSSVNLJywgJ1JFU1BPTlNJQklMSVRZJ10uaW5jbHVkZXModGhpcy5sb2dJc3N1ZUZvcm0/LmxpbmthZ2VUeXBlKSl7XHJcbiAgICAgICAgICAgICAgUEFZTE9BRC5saW5rYWdlX29iamVjdC5zb3VyY2VfaWQgPSB0aGlzLmxvZ0lzc3VlRm9ybT8ubGlua2VkQ29udHJvbFJpc2tbMF0/Lml0ZW1JZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICB9XHJcbiAgIGlmKFsnQVVESVRfV09SS1JPT00nLCdWSUVXX0FVRElUX0VYRUNVVElPTl9TVU1NQVJZJywnRVhFQ1VURV9BVURJVF9QTEFOJ10uaW5jbHVkZXModGhpcy5vcGVuZWRGcm9tKSl7XHJcbiAgICAgIGlmKHRoaXMuaXNzdWVEZXRhaWxzLmF1ZGl0UGxhbklkKXtcclxuICAgICAgICBQQVlMT0FELmxpbmthZ2Vfb2JqZWN0LnNvdXJjZV9pZCA9ICB0aGlzLmlzc3VlRGV0YWlscy5hdWRpdFBsYW5JZDtcclxuICAgICAgfVxyXG4gICB9XHJcbiAgfVxyXG5cclxuICBpZih0aGlzLm1vZGUgPT09ICdFRElUJyl7XHJcbiAgICBQQVlMT0FELklzc3VlTGlua2FnZSA9IHRoaXMuZGF0YUZvckVkaXQ/LmxpbmthZ2Vfb2JqZWN0O1xyXG4gIH1cclxuICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IHRydWVcclxuICBjb25zb2xlLmxvZygnUEFZTE9BRCA9PT0+JywgUEFZTE9BRClcclxuICAgaWYodGhpcy5tb2RlID09PSAnRURJVCcpe1xyXG4gICAgdGhpcy5sb2dTZXJ2aWNlLnVwZGF0ZUlzc3VlKFBBWUxPQUQsdGhpcy5pc3N1ZUlkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc21pbGV5TWVzc2FnZSA9IGBUaGUgaXNzdWUgaGFzIGJlZW4gdXBkYXRlZC5gO1xyXG4gICAgICB0aGlzLmlzc3VlRGF0YSA9IHJlcztcclxuICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcclxuICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2VcclxuICAgICAgdGhpcy5yZXNldElzc3VlRm9ybSgpO1xyXG4gICB9LCBlcnJvciA9PiB7XHJcbiAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG4gICAgIHRoaXMuc25hY2tCYXIuc2hvdygnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/Jyk7XHJcbiAgIH0pO1xyXG4gICB9ZWxzZSBpZih0aGlzLm1vZGUgPT09ICdDUkVBVEUnIHx8IHRoaXMubW9kZSA9PT0gJycgfHwgIXRoaXMubW9kZSl7XHJcbiAgICB0aGlzLmxvZ1NlcnZpY2UuY3JlYXRlSXNzdWUoUEFZTE9BRCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmlzc3VlRGF0YSA9IHJlcztcclxuICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcclxuICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVzZXRJc3N1ZUZvcm0oKTtcclxuICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycpO1xyXG4gICB9KTtcclxuICAgfVxyXG5cclxuIH1cclxuIGNsb3NlU21pbGV5KGV2dD86IGFueSl7XHJcbiAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xyXG4gIHRoaXMuY2xvc2VXb3JrRmxvdyh0aGlzLmlzc3VlRGF0YSxmYWxzZSk7XHJcbiB9XHJcbi8qKlxyXG4gKiBDbG9zZXMgd29ya2Zsb3cgZW5naW5lXHJcbiAqIEBwYXJhbSBldnRcclxuICogQHBhcmFtIGNvbmZpcm1cclxuICovXHJcbmNsb3NlV29ya0Zsb3coZXZ0OiBhbnksIGNvbmZpcm06YW55KXtcclxuICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoe2V2dCwgY29uZmlybX0pO1xyXG4gfVxyXG4gYWN0aW9uKGV2dDogYW55KXtcclxuICAgaWYgKGV2dCA9PT0gJ2FkZE1vcmUnKXtcclxuICAgIHRoaXMucmVzZXRJc3N1ZUZvcm0oKTtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xyXG4gICAgLy8gdGhpcy5jbG9zZVdvcmtGbG93KHRoaXMuaXNzdWVEYXRhLCBmYWxzZSk7XHJcbiAgfVxyXG4gIGVsc2UgaWYoZXZ0ID09PSAndmlld0lzc3VlJyl7XHJcbiAgICB0aGlzLnNob3dTbWlsZXkgPSBmYWxzZTtcclxuICAgIHRoaXMudmlld0lzc3VlKCk7XHJcbiAgfVxyXG5cclxuICAgfVxyXG5cclxuICAgdmlld0lzc3VlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcclxuICAgICAgIGxldCB1cmw6IHN0cmluZztcclxuICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xyXG4gICAgICAgICB1cmwgPSAnaHR0cDovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcclxuICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIHVybCA9ICdodHRwczovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcclxuICAgICAgIH1cclxuXHJcbiAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcclxuICAgICAgICAgdXJsICs9ICcvaXNzdWUvaXNzdWUtd29ya3Jvb20vJyArIHRoaXMuaXNzdWVEYXRhPy5faWQ7XHJcbiAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICB1cmwgKz0gJy9hdWRpdC9pc3N1ZS9pc3N1ZS13b3Jrcm9vbS8nICsgdGhpcy5pc3N1ZURhdGE/Ll9pZDtcclxuICAgICAgIH1cclxuICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xyXG4gICAgIH1cclxuXHJcbi8qKlxyXG4gKiBQb3B1bGF0ZSB0aGUgdGlja21hcmsgb2Ygb3B0aW9uYWwgZmllbGRzXHJcbiAqL1xyXG5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCl7XHJcbiAgY29uc3QgYWN0aXZhdGVkT3B0aW9ucyA9IFtdO1xyXG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1cykpe1xyXG4gICAgaWYgKHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1c1trZXldID09PSB0cnVlKXtcclxuICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKGtleSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChhY3RpdmF0ZWRPcHRpb25zKTtcclxufVxyXG4vKipcclxuICogRmV0Y2hzIGlzc3VlIGRldGFpbHMgd2hlbiBpbiBlZGl0IG1vZGUgYmFzZWQgb24gdGhlIGlucHV0IGlkIHBhc3NlZFxyXG4gKi9cclxuZmV0Y2hJc3N1ZURldGFpbHMoKXtcclxuICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSB0cnVlO1xyXG4gIHRoaXMubG9nU2VydmljZS5nZXRJc3N1ZURldGFpbHModGhpcy5pc3N1ZUlkKS5zdWJzY3JpYmUoKGRhdGE6YW55KT0+e1xyXG4gICAgY29uc29sZS5sb2coXCJpc3N1ZSBEYXRhXCIsZGF0YSlcclxuICAgIHRoaXMucG9wdWxhdGVGb3JtKGRhdGEpXHJcbiAgfSlcclxufVxyXG4vKipcclxuICogUG9wdWxhdGVzIHRoZSBpc3N1ZSBmb3JtIHdoZW4gaW4gZWRpdCBtb2RlXHJcbiAqIEBwYXJhbSBpc3N1ZURhdGEgaXNzdWUgZGF0YSBmZXRjaGVkIGZyb20gQVBJXHJcbiAqL1xyXG5hc3luYyBwb3B1bGF0ZUZvcm0oaXNzdWVEYXRhIDogYW55KXtcclxuICB0aGlzLmRhdGFGb3JFZGl0ID0gaXNzdWVEYXRhO1xyXG4gIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICBjb25zdCBpc3N1ZUR1ZURhdGUgPSBpc3N1ZURhdGEuZnJlcXVlbmN5X2RldGFpbHM/LmZyZXF1ZW5jeV9kYXRlLnNwbGl0KCctJyk7XHJcbiAgdGhpcy5sb2dJc3N1ZUZvcm0gPSB7XHJcbiAgICBpc3N1ZU5hbWUgOiBpc3N1ZURhdGEudGl0bGUgPz8gJycsXHJcbiAgICBldmlkZW5jZVJlcXVpcmVkOiBpc3N1ZURhdGE/LmV2aWRlbmNlPy5ldmlkZW5jZV9mbGFnPz8wLFxyXG4gICAgaXNzdWVEZXNjcmlwdGlvbjogaXNzdWVEYXRhPy5kZXNjcmlwdGlvbj8ubGVuZ3RoID8gaXNzdWVEYXRhPy5kZXNjcmlwdGlvblswXT8udGV4dCA6JycsXHJcbiAgICBpc3N1ZURlc2NyaXB0aW9uQXR0YWNoZW1lbnRzOiBpc3N1ZURhdGE/LmRlc2NyaXB0aW9uPy5sZW5ndGggPyBpc3N1ZURhdGE/LmRlc2NyaXB0aW9uWzBdPy5hdHRhY2htZW50cyA6W10sXHJcbiAgICBpc3N1ZUNhdGVnb3J5OiBpc3N1ZURhdGE/LmNhdGVnb3J5X2lkID8gdGhpcy5saXN0RGF0YS5jYXRlZ29yeUxpc3QuZmlsdGVyKChlOmFueSkgPT4gZS5jYXRlZ29yeV9pZCA9PT0gaXNzdWVEYXRhPy5jYXRlZ29yeV9pZCk6W10sXHJcbiAgICBpc3N1ZUN1c3RvbVRhZyA6IGlzc3VlRGF0YT8uY3VzdG9tX3RhZ3MgPz8gW10sXHJcbiAgICBpc3N1ZVJDOiBpc3N1ZURhdGE/LnJjX2lkID8gdGhpcy5saXN0RGF0YS5yY0xpc3QuZmlsdGVyKChlOmFueSkgPT4gZS5yY19pZCA9PT0gaXNzdWVEYXRhPy5yY19pZCk6W10sXHJcbiAgICBpc3N1ZVR5cGU6IFtdLFxyXG4gICAgcmVjb21tZW5kZWRBY3Rpb25zQXR0YWNobWVudHM6aXNzdWVEYXRhPy5yZWNvbW1lbmRhdGlvbj8ubGVuZ3RoID8gaXNzdWVEYXRhPy5yZWNvbW1lbmRhdGlvblswXT8uYXR0YWNobWVudHMgOltdLFxyXG4gICAgYXNzb2NpYXRlZFJpc2tzQXR0YWNobWVudHM6W10sXHJcbiAgICBpc0Fzc2lnblRvTXlzZWxmIDogIGlzc3VlRGF0YT8uYXNzaWduZWVfaWQgPT09IHRoaXMuY3VycmVudFVzZXIuaWQgID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgZW50cnVzdFRvOiBpc3N1ZURhdGE/LmFzc2lnbmVlX2lkID09PSB0aGlzLmN1cnJlbnRVc2VyLmlkID8gW106IHRoaXMubGlzdERhdGEudXNlckxpc3QuZmlsdGVyKChlOmFueSkgPT4gZS5teV9tZW1iZXJfaWQgPT09IGlzc3VlRGF0YT8uYXNzaWduZWVfaWQgKSxcclxuICAgIGlzc3VlRHVlRGF0ZTogaXNzdWVEYXRhPy5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5X2RhdGU/ICBtb21lbnQoYCR7aXNzdWVEdWVEYXRlWzBdfS0ke2lzc3VlRHVlRGF0ZVsxXX0tJHtpc3N1ZUR1ZURhdGVbMl19YCk6JycsXHJcbiAgICBpc3N1ZUR1ZVRpbWU6IHRoaXMubG9nU2VydmljZS5jb252ZXJ0RnJvbTI0VG8xMkZvcm1hdChpc3N1ZURhdGEuZnJlcXVlbmN5X2RldGFpbHMuZnJlcXVlbmN5X3RpbWUpLFxyXG4gICAgZXhjZXB0aW9uVHlwZTogaXNzdWVEYXRhLmV4Y2VwdGlvbl90eXBlID8/IDEsXHJcbiAgICBpc3N1ZVJpc2tSYXRpbmc6IGlzc3VlRGF0YS5yaXNrX2NsYXNzID8/IDEsXHJcbiAgICBpc3N1ZVByaW9yaXR5OiBpc3N1ZURhdGEucHJpb3JpdHkgPz8gMSxcclxuICAgIGlzc3VlUmVjb21tZW5kYXRpb246IGlzc3VlRGF0YT8ucmVjb21tZW5kYXRpb24/Lmxlbmd0aCA/IGlzc3VlRGF0YT8ucmVjb21tZW5kYXRpb25bMF0/LnRleHQgOicnLFxyXG4gICAgaXNzdWVBc3NvY2lhdGVkUmlzazogaXNzdWVEYXRhPy5hc3NvY2lhdGVkX3Jpc2s/Lmxlbmd0aCA/IGlzc3VlRGF0YT8uYXNzb2NpYXRlZF9yaXNrWzBdPy50ZXh0IDonJyxcclxuICAgIGlzc3VlQ0NVc2VyczogaXNzdWVEYXRhLm92ZXJzZWVyPy5jY19lbWFpbC5sZW5ndGggPyBhd2FpdCB0aGlzLmdlbmVyYXRlT3ZlcnNlZXJMaXN0KHRoaXMubGlzdERhdGEudXNlckxpc3QsaXNzdWVEYXRhLm92ZXJzZWVyPy5jY19lbWFpbCkgOltdLFxyXG4gICAgZmFpbHVyZUNDVXNlcnM6IGlzc3VlRGF0YS5vdmVyc2Vlcj8uZmFpbHVyZV9jY19lbWFpbC5sZW5ndGggPyBhd2FpdCB0aGlzLmdlbmVyYXRlT3ZlcnNlZXJMaXN0KHRoaXMubGlzdERhdGEudXNlckxpc3QsaXNzdWVEYXRhLm92ZXJzZWVyPy5mYWlsdXJlX2NjX2VtYWlsKSA6W10sXHJcbiAgICBsaW5rZWRDb250cm9sUmlzazpbXSxcclxuICAgIGxpbmthZ2VUeXBlIDogJ1JFU1BPTlNJQklMSVRZJ1xyXG4gIH07XHJcbiAgY29uc29sZS5sb2coXCJBZnRlciBJbml0XCIsdGhpcy5sb2dJc3N1ZUZvcm0pXHJcbiAgaWYodGhpcy5tb2RlID09PSAnRURJVCcpe1xyXG4gICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSQz8ubGVuZ3RoID4gMCA/IHRoaXMuaXNSQ1ByZVNlbGVjdGVkID0gdHJ1ZSA6IHRoaXMuaXNSQ1ByZVNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAvLyBpc3N1ZURhdGEubGlua2FnZV9vYmplY3Q/LnNvdXJjZSA9PT0gJ0dMT0JBTCc/IHRoaXMuaXNSQ01hbmRhdG9yeSA9IHRydWUgOiB0aGlzLmlzUkNNYW5kYXRvcnkgPSBmYWxzZTtcclxuICAgIChpc3N1ZURhdGEubGlua2FnZV9vYmplY3Q/LnNvdXJjZSA9PT0gJ0dMT0JBTCcgJiYgaXNzdWVEYXRhPy5yY19pZCkgPyB0aGlzLmlzUkNQcmVTZWxlY3RlZCA9IGZhbHNlIDogdGhpcy5pc1JDUHJlU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgLy8gaWYoaXNzdWVEYXRhLmxpbmthZ2Vfb2JqZWN0Py5jb21wbGlhbmNlPy5pZHM/Lmxlbmd0aCl7XHJcbiAgICAvLyAgIHRoaXMubG9nSXNzdWVGb3JtLmxpbmtlZENvbnRyb2xSaXNrID0gaXNzdWVEYXRhLmxpbmthZ2Vfb2JqZWN0Py5jb21wbGlhbmNlPy5pZHM/P1tdLFxyXG4gICAgLy8gICB0aGlzLmxvZ0lzc3VlRm9ybS5saW5rYWdlVHlwZSA9ICdSRVNQT05TSUJJTElUWSdcclxuICAgIC8vICAgdGhpcy5pc1Jpc2tDb250cm9sVmlzaWJsZSA9IHRydWU7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBpZihpc3N1ZURhdGEubGlua2FnZV9vYmplY3Q/LnJpc2s/Lmlkcz8ubGVuZ3RoKXtcclxuICAgIC8vICAgdGhpcy5sb2dJc3N1ZUZvcm0ubGlua2VkQ29udHJvbFJpc2sgPSBpc3N1ZURhdGEubGlua2FnZV9vYmplY3Q/LnJpc2s/Lmlkcz8/W10sXHJcbiAgICAvLyAgIHRoaXMubG9nSXNzdWVGb3JtLmxpbmthZ2VUeXBlID0gJ1JJU0snO1xyXG4gICAgLy8gICB0aGlzLmlzUmlza0NvbnRyb2xWaXNpYmxlID0gdHJ1ZTtcclxuICAgIC8vIH1cclxuICB9XHJcbiAgdGhpcy5zZXRPcHRpb25hbEZpZWxkKGlzc3VlRGF0YSk7XHJcbn1cclxuLyoqXHJcbiAqIFNldHMgdGhlIHZpc2liaWxpdHkgb2Ygb3B0aW9uYWwgZmllbGRzXHJcbiAqIEBwYXJhbSBpc3N1ZURhdGEgIGlzc3VlIGRhdGEgZmV0Y2hlZCBmcm9tIEFQSVxyXG4gKi9cclxuc2V0T3B0aW9uYWxGaWVsZChpc3N1ZURhdGE6YW55KXtcclxuICB0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXMgPSB7XHJcbiAgICBFWENFUFRJT05fVFlQRTogaXNzdWVEYXRhLmV4Y2VwdGlvbl90eXBlID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgRVZJREVOQ0U6IGlzc3VlRGF0YS5ldmlkZW5jZS5ldmlkZW5jZV9mbGFnID8gdHJ1ZSA6ZmFsc2UsXHJcbiAgICBQUklPUklUWTogIGlzc3VlRGF0YS5wcmlvcml0eSA/IHRydWUgOiBmYWxzZSxcclxuICAgIElTU1VFX1RZUEU6IGZhbHNlLFxyXG4gICAgQVNTT0NJQVRFRF9SSVNLUyA6IGlzc3VlRGF0YS5hc3NvY2lhdGVkX3Jpc2subGVuZ3RoID8gKGlzc3VlRGF0YS5hc3NvY2lhdGVkX3Jpc2tbMF0udGV4dC5sZW5ndGggPyB0cnVlIDogZmFsc2UpOmZhbHNlLFxyXG4gICAgT1ZFUlNJR0hUIDogKGlzc3VlRGF0YS5vdmVyc2Vlci5jY19lbWFpbC5sZW5ndGggPiAwIHx8IGlzc3VlRGF0YS5vdmVyc2Vlci5mYWlsdXJlX2NjX2VtYWlsLmxlbmd0aCA+IDApID8gdHJ1ZSA6IGZhbHNlXHJcbiAgfTtcclxuICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxufVxyXG4vKipcclxuICogR2VuZXJhdGVzIGxpc3Qgb2Ygc2VsZWN0ZWQgb3ZlcnNlZXJcclxuICogQHBhcmFtIGFsbFVzZXJMaXN0IGxpc3Qgb2YgYWxsIHVzZXJzIGluIHRoZSBvcmdhbnphdGlvblxyXG4gKiBAcGFyYW0gb3ZlcnNlZXJMaXN0ICBsaXQgb2YgdGhlIG92ZXJzZWVyIHRoYXQgbmVlZHMgdG8gYmUgZmlsdGVyZWRcclxuICogQHJldHVybnMgIGxpc3Qgb2YgYXJyYXkgY29udGFpbmluZyB0aGUgdXNlcnMgb2JqZWN0c1xyXG4gKi9cclxuZ2VuZXJhdGVPdmVyc2Vlckxpc3QoYWxsVXNlckxpc3Q6YW55LCBvdmVyc2Vlckxpc3Q6YW55ICl7XHJcbiByZXR1cm4gb3ZlcnNlZXJMaXN0Lm1hcCgodXNlcjphbnkpPT57XHJcbiAgICBjb25zdCBmb3VuZFVzZXIgPSBhbGxVc2VyTGlzdC5maW5kKChlbGVtZW50OmFueSkgPT4gZWxlbWVudC5teV9tZW1iZXJfaWQgPT09IHVzZXIubWVtYmVyX2lkKTtcclxuICAgIGlmKGZvdW5kVXNlcil7XHJcbiAgICAgIHJldHVybiBmb3VuZFVzZXI7XHJcbiAgICB9XHJcbiAgfSlcclxufVxyXG4vKipcclxuICogUmVzZXRzIGlzc3VlIGZvcm1cclxuICovXHJcbnJlc2V0SXNzdWVGb3JtKCl7XHJcbiAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20gPSBmYWxzZTtcclxuICB0aGlzLmxvZ0lzc3VlRm9ybSA9IHtcclxuICAgIGlzc3VlTmFtZSA6ICcnLFxyXG4gICAgZXZpZGVuY2VSZXF1aXJlZDogMCxcclxuICAgIGlzc3VlRGVzY3JpcHRpb246ICcnLFxyXG4gICAgaXNzdWVEZXNjcmlwdGlvbkF0dGFjaGVtZW50czogW10sXHJcbiAgICByZWNvbW1lbmRlZEFjdGlvbnNBdHRhY2htZW50czpbXSxcclxuICAgIGFzc29jaWF0ZWRSaXNrc0F0dGFjaG1lbnRzOltdLFxyXG4gICAgaXNzdWVDYXRlZ29yeTogW10sXHJcbiAgICBpc3N1ZUN1c3RvbVRhZyA6IFtdLFxyXG4gICAgaXNzdWVSQzogW10sXHJcbiAgICBpc3N1ZVR5cGU6IFtdLFxyXG4gICAgaXNBc3NpZ25Ub015c2VsZiA6IGZhbHNlLFxyXG4gICAgZW50cnVzdFRvOiBbXSxcclxuICAgIGlzc3VlRHVlRGF0ZTogJycsXHJcbiAgICBpc3N1ZUR1ZVRpbWU6ICcxMTo1OSBQTScsXHJcbiAgICBleGNlcHRpb25UeXBlOiAxLFxyXG4gICAgaXNzdWVSaXNrUmF0aW5nOiAxLFxyXG4gICAgaXNzdWVQcmlvcml0eTogMSxcclxuICAgIGlzc3VlUmVjb21tZW5kYXRpb246ICcnLFxyXG4gICAgaXNzdWVBc3NvY2lhdGVkUmlzazogJycsXHJcbiAgICBpc3N1ZUNDVXNlcnM6IFtdLFxyXG4gICAgZmFpbHVyZUNDVXNlcnM6IFtdXHJcbiAgfTtcclxuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXMpKXtcclxuICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXNba2V5XSA9IGZhbHNlO1xyXG4gIH1cclxuICB0aGlzLnNtaWxleU1lc3NhZ2UgPSBgVGhlIGlzc3VlIGhhcyBiZWVuIHJlcG9ydGVkLmA7XHJcbiAgdGhpcy5tb2RlID0gJ0NSRUFURSc7XHJcbiAgdGhpcy5tb2RlQ2hhbmdlLmVtaXQodGhpcy5tb2RlKTtcclxuICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICB0aGlzLnNldFNlbGVjdGVkUkMoKTtcclxuIH1cclxuIGNoZWNrRGVzY3JpcHRpb24oKSB7XHJcbiAgaWYgKHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlRGVzY3JpcHRpb24gPT0gJzxicj4nKSB7XHJcbiAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZURlc2NyaXB0aW9uID0gJyc7XHJcbiAgfVxyXG4gIGlmICh0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVJlY29tbWVuZGF0aW9uID09ICc8YnI+Jykge1xyXG4gICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSZWNvbW1lbmRhdGlvbiA9ICcnO1xyXG4gIH1cclxuICBpZiAodGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVBc3NvY2lhdGVkUmlzayA9PSAnPGJyPicpIHtcclxuICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlQXNzb2NpYXRlZFJpc2sgPSAnJztcclxuICB9XHJcbn1cclxufVxyXG4iXX0=
|
|
893
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWFuLWlzc3VlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL2xvZy1hbi1pc3N1ZS9sb2ctYW4taXNzdWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUdwSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFTakMsTUFBTSxPQUFPLG1CQUFtQjtJQTRLOUIsWUFBb0IsVUFBMkIsRUFBVSxXQUF3QixFQUFVLFlBQTBCLEVBQVUsUUFBeUI7UUFBcEksZUFBVSxHQUFWLFVBQVUsQ0FBaUI7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUF6Sy9JLHNCQUFpQixHQUFHO1lBQzNCLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsa0JBQWtCLEVBQUUsRUFBRTtZQUN0QixJQUFJLEVBQUMsSUFBSTtZQUNULHNCQUFzQixFQUFFLEVBQUU7U0FDM0IsQ0FBQztRQUNPLGlCQUFZLEdBQUU7WUFDckIsV0FBVyxFQUFHLElBQUk7WUFDaEIsYUFBYSxFQUFHLEVBQUU7WUFDbEIsSUFBSSxFQUFFLElBQUk7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QWEsR0FBRyw4QkFBOEIsQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxnQkFBZ0I7UUFDZixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLElBQUksTUFBTSxFQUFFO1lBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixJQUFJLE1BQU0sRUFBRTtZQUNuRCxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztTQUM1QztRQUNELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsSUFBSSxNQUFNLEVBQUU7WUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7U0FDNUM7SUFDSCxDQUFDOzs7WUEvMkJBLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QiwrbjJDQUE0Qzs7YUFFN0M7OztZQWZRLGVBQWU7WUFEZixXQUFXO1lBTVgsWUFBWTtZQUNaLGVBQWU7Ozt5QkFXckIsS0FBSztzQkFDTCxLQUFLO2dDQUNMLEtBQUs7MkJBTUwsS0FBSzttQkFNTCxLQUFLO3FCQUNMLEtBQUs7bUNBQ0wsS0FBSzs0QkFDTCxNQUFNOzZCQUNOLE1BQU07NEJBQ04sTUFBTTt5QkFDTixNQUFNO2dDQUNOLE1BQU07eUJBRU4sU0FBUyxTQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2dJc3N1ZVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9sb2ctaXNzdWUuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVkaXRvckNvbmZpZyB9IGZyb20gJ3Zjb21wbHktZWRpdG9yJztcclxuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ25nMi1kYXRlLXBpY2tlcic7XHJcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IFVpS2l0U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3VpLWtpdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XHJcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBJc3N1ZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2lzc3VlLWRhdGEnO1xyXG5pbXBvcnQgeyBUSElTX0VYUFIgfSBmcm9tICdAYW5ndWxhci9jb21waWxlci9zcmMvb3V0cHV0L291dHB1dF9hc3QnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbG9nLWFuLWlzc3VlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbG9nLWFuLWlzc3VlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9sb2ctYW4taXNzdWUuY29tcG9uZW50Lmxlc3MnLCAnLi4vZm9ybXMubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2dBbklzc3VlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIG9wZW5lZEZyb20gITogYW55O1xyXG4gIEBJbnB1dCgpIGlzc3VlSWQgITogYW55O1xyXG4gIEBJbnB1dCgpIHJlcG9uc2liaWxpdHlEYXRhID0geyAvLyBvbmx5IHVzZWQgYnkgbG9nIGFuIGlzc3VlXHJcbiAgICByZXNwb25zaWJpbGl0eUlkOiBudWxsLFxyXG4gICAgcmVzcG9uc2liaWxpdHlOYW1lOiAnJyxcclxuICAgIHJjSWQ6bnVsbCxcclxuICAgIHJlc3BvbnNpYmlsaXR5T2JqZWN0SWQ6ICcnXHJcbiAgfTtcclxuICBASW5wdXQoKSBpc3N1ZURldGFpbHMgPXtcclxuICAgIGF1ZGl0UGxhbklkIDogbnVsbCxcclxuICAgICAgYXVkaXRQbGFuTmFtZSAgOicnLFxyXG4gICAgICByY0lkOiBudWxsLFxyXG4gICAgICBhdWRpdE9iaklkOm51bGxcclxuICB9XHJcbiAgQElucHV0KCkgbW9kZSA9ICdDUkVBVEUnO1xyXG4gIEBJbnB1dCgpIGNvbmZpZyAhOiBJc3N1ZUNvbmZpZ3VyYXRpb247XHJcbiAgQElucHV0KCkgcmVzcG9uc2liaWxpdGllc0RhdGE6IGFueTtcclxuICBAT3V0cHV0KCkgcGlja2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcG9wdWxhdGVPcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlV29ya2Zsb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG1vZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRpc2Nvbm5lY3RSZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGN1cnJlbnRVc2VyICE6IGFueTtcclxuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgZGF0ZVBpY2tlciE6IERhdGVQaWNrZXJDb21wb25lbnQ7XHJcbiAgc2Nyb2xsVG9Cb3R0b20gPSBmYWxzZTtcclxuICBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gIHNob3dEYXRlRXJyb3IgPSBmYWxzZTtcclxuICBzZWxlY3RlZERhdGU6IGFueTtcclxuICBzaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgbG9hZGVyID0gZmFsc2U7XHJcbiAgc21pbGV5TWVzc2FnZSA9IGBUaGUgaXNzdWUgaGFzIGJlZW4gcmVwb3J0ZWQuYDtcclxuICBpc3N1ZURhdGEgITogYW55O1xyXG4gIGlzUmlza0NvbnRyb2xMb2FkaW5nID0gZmFsc2U7XHJcbiAgYWN0aW9uQnV0dG9ucyA9IFtcclxuICAgIHsgYnV0dG9uVGV4dDogJ1JlcG9ydCBNb3JlIElzc3VlcycsIGNsYXNzOiAnd2hpdGUtYnRuJywgaWQ6ICdhZGRNb3JlJyB9LFxyXG4gICAgeyBidXR0b25UZXh0OiAnVmlldyBJc3N1ZScsIGNsYXNzOiAnYmx1ZS1idG4nLCBpZDogJ3ZpZXdJc3N1ZScgfSxcclxuICBdO1xyXG4gIGNyZWF0ZWREYXRhICE6IGFueTtcclxuICBkZXNjcmlwdGlvbjogRWRpdG9yQ29uZmlnID0ge1xyXG4gICAgLy8gbW9kZTogJ3ByaW1lJyxcclxuICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcclxuICAgIGxpbms6IHRydWUsXHJcbiAgICBwbGFjZWhvbGRlcjogJ0Rlc2NyaXB0aW9uJyxcclxuICB9O1xyXG5cclxuICBkYXRlQ29uZmlnID0ge1xyXG4gICAgZGlzYWJsZUtleXByZXNzOiB0cnVlLFxyXG4gICAgZm9ybWF0OiAnREQgTU1NIFlZWVknLFxyXG4gICAgdW5TZWxlY3RPbkNsaWNrOiB0cnVlLFxyXG4gICAgb3Blbk9uQ2xpY2s6ZmFsc2UsXHJcbiAgICBvcGVuT25Gb2N1czpmYWxzZSxcclxuICAgIG1pbjogbmV3IERhdGUoKS5nZXREYXRlKCkudG9TdHJpbmcoKSxcclxuICB9O1xyXG4gIGxpc3REYXRhOmFueSA9IHtcclxuICAgIGlzc3VlVHlwZUxpc3Q6IFtdLFxyXG4gICAgdXNlckxpc3Q6IFtdLFxyXG4gICAgY2F0ZWdvcnlMaXN0OiBbXSxcclxuICAgIHJjTGlzdDogW10sXHJcbiAgICBsaW5rYWdlTGlzdDpbXVxyXG4gIH07XHJcbiAgbG9nSXNzdWVGb3JtOiBhbnkgPSB7XHJcbiAgICBpc3N1ZU5hbWU6ICcnLFxyXG4gICAgZXZpZGVuY2VSZXF1aXJlZDogMCxcclxuICAgIGlzc3VlRGVzY3JpcHRpb246ICcnLFxyXG4gICAgaXNzdWVEZXNjcmlwdGlvbkF0dGFjaGVtZW50czogW10sXHJcbiAgICBpc3N1ZUNhdGVnb3J5OiBbXSxcclxuICAgIGlzc3VlQ3VzdG9tVGFnOiBbXSxcclxuICAgIGlzc3VlUkM6IFtdLFxyXG4gICAgaXNzdWVUeXBlOiBbXSxcclxuICAgIGlzQXNzaWduVG9NeXNlbGY6IGZhbHNlLFxyXG4gICAgZW50cnVzdFRvOiBbXSxcclxuICAgIGlzc3VlRHVlRGF0ZTogJycsXHJcbiAgICBpc3N1ZUR1ZVRpbWU6ICcxMTo1OSBwbScsXHJcbiAgICBleGNlcHRpb25UeXBlOiAxLFxyXG4gICAgaXNzdWVSaXNrUmF0aW5nOiAxLFxyXG4gICAgaXNzdWVQcmlvcml0eTogMSxcclxuICAgIGlzc3VlUmVjb21tZW5kYXRpb246ICcnLFxyXG4gICAgcmVjb21tZW5kZWRBY3Rpb25zQXR0YWNobWVudHM6W10sXHJcbiAgICBpc3N1ZUFzc29jaWF0ZWRSaXNrOiAnJyxcclxuICAgIGFzc29jaWF0ZWRSaXNrc0F0dGFjaG1lbnRzOltdLFxyXG4gICAgaXNzdWVDQ1VzZXJzOiBbXSxcclxuICAgIGZhaWx1cmVDQ1VzZXJzOiBbXSxcclxuICAgIGxpbmtlZENvbnRyb2xSaXNrOltdLFxyXG4gICAgbGlua2FnZVR5cGUgOiAnUklTSydcclxuXHJcbiAgfTtcclxuICBBdHRhY2htZW50VHJhY2s6IGFueSA9IFtbXSxbXSxbXV07XHJcbiAgYWRkaXRpb25hbE9wdGlvblN0YXR1czogYW55ID0ge1xyXG4gICAgRVhDRVBUSU9OX1RZUEU6IGZhbHNlLFxyXG4gICAgRVZJREVOQ0U6IGZhbHNlLFxyXG4gICAgUFJJT1JJVFk6IGZhbHNlLFxyXG4gICAgSVNTVUVfVFlQRTogZmFsc2UsXHJcbiAgICBBU1NPQ0lBVEVEX1JJU0tTOiBmYWxzZSxcclxuICAgIE9WRVJTSUdIVDogZmFsc2VcclxuICB9O1xyXG4gIHJpc2tDbGFzc2lmaWNhdGlvbiA9IFtcclxuICAgIHsgbmFtZTogJ0xPVycsIHZhbHVlOiAxLCBjbGFzczogJ2xvdycgfSxcclxuICAgIHsgbmFtZTogJ0xPVy1NZWRpdW0nLCB2YWx1ZTogMiwgY2xhc3M6ICdsb3ctbWVkJyB9LFxyXG4gICAgeyBuYW1lOiAnTWVkaXVtLUhpZ2gnLCB2YWx1ZTogMywgY2xhc3M6ICdtZWQtaGlnaCcgfSxcclxuICAgIHsgbmFtZTogJ0hpZ2gnLCB2YWx1ZTogNCwgY2xhc3M6ICdoaWdoJyB9XHJcbiAgXTtcclxuICByaXNrUHJvcml0eSA9IFtcclxuICAgIHsgbmFtZTogJ0xPVycsIHZhbHVlOiAxLCBjbGFzczogJ2xvdycgfSxcclxuICAgIHsgbmFtZTogJ01FRElVTScsIHZhbHVlOiAyLCBjbGFzczogJ2xvdy1tZWQnIH0sXHJcbiAgICB7IG5hbWU6ICdISUdIJywgdmFsdWU6IDMsIGNsYXNzOiAnaGlnaCcgfSxcclxuXHJcbiAgXTtcclxuXHJcbiAgc2lkZVNlbGVjdG9yRWxlbWVudHM6IGFueSA9IFsnSVNTVUVfQ0FURUdPUlknLCAnSVNTVUVfUkMnLCAnSVNTVUVfV0hPJywgJ0lTU1VFX1RZUEUnLCAnSVNTVUVfQ0MnLCAnSVNTVUVfRkNDJywnSVNTVUVfQ09OVFJPTF9SSVNLJ107XHJcbiAgc2VsZWN0b3JDb25maWcgPSB7XHJcbiAgICBJU1NVRV9DQVRHT1JZOiB7XHJcbiAgICAgIHBhbmVsVGl0bGU6ICdTZWxlY3QgSXNzdWUgQ2F0ZWdvcnknLFxyXG4gICAgICBmbG9hdGluZ1RleHRTaW5ndWxhcjogJ0NhdGVnb3J5IHNlbGVjdGVkJyxcclxuICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggSXNzdWUgQ2F0ZWdvcnknLFxyXG4gICAgICBzZWFyY2hFbmFibGVkOiB0cnVlLFxyXG4gICAgICBub0RhdGFUZXh0OiAnTm8gQ2F0ZWdvcmllcyBGb3VuZCdcclxuICAgIH0sXHJcbiAgICBJU1NVRV9SQzoge1xyXG4gICAgICBwYW5lbFRpdGxlOiAnU2VsZWN0IFJlc3BvbnNpYmlsaXR5IENlbnRlcicsXHJcbiAgICAgIGZsb2F0aW5nVGV4dFNpbmd1bGFyOiAnUmVzcG9uc2liaWx0eSBjZW50ZXIgc2VsZWN0ZWQnLFxyXG4gICAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1NlYXJjaCBSZXNwb25zaWJpbGl0eSBDZW50ZXInLFxyXG4gICAgICBzZWFyY2hFbmFibGVkOiB0cnVlLFxyXG4gICAgICBub0RhdGFUZXh0OiAnTm8gUmVzcG9uc2liaWxpdHkgQ2VudGVycyBGb3VuZCdcclxuICAgIH0sXHJcbiAgICBJU1NVRV9XSE86IHtcclxuICAgICAgcGFuZWxUaXRsZTogJ1NlbGVjdCBVc2VyJyxcclxuICAgICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdVc2VyIHNlbGVjdGVkJyxcclxuICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggVXNlcicsXHJcbiAgICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIG5vRGF0YVRleHQ6ICdObyBVc2VycyBGb3VuZCdcclxuICAgIH0sXHJcbiAgICBJU1NVRV9UWVBFOiB7XHJcbiAgICAgIHBhbmVsVGl0bGU6ICdTZWxlY3QgSXNzdWUgVHlwZScsXHJcbiAgICAgIGZsb2F0aW5nVGV4dFNpbmd1bGFyOiAnSXNzdWUgVHlwZSBzZWxlY3RlZCcsXHJcbiAgICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIElzc3VlIFR5cGUnLFxyXG4gICAgICBzZWFyY2hFbmFibGVkOiB0cnVlLFxyXG4gICAgICBub0RhdGFUZXh0OiAnTm8gSXNzdWUgVHlwZXMgRm91bmQnXHJcbiAgICB9LFxyXG4gICAgSVNTVUVfQ0M6IHtcclxuICAgICAgcGFuZWxUaXRsZTogJ1NlbGVjdCB1c2VyKHMpJyxcclxuICAgICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdVc2VyIHNlbGVjdGVkJyxcclxuICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggVXNlcicsXHJcbiAgICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIHNlbGVjdEFsbEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIG5vRGF0YVRleHQ6ICdObyBVc2VycyBGb3VuZCdcclxuICAgIH0sXHJcbiAgICBJU1NVRV9GQ0M6IHtcclxuICAgICAgcGFuZWxUaXRsZTogJ1NlbGVjdCB1c2VyKHMpJyxcclxuICAgICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdVc2VyIHNlbGVjdGVkJyxcclxuICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggVXNlcicsXHJcbiAgICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIHNlbGVjdEFsbEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIG5vRGF0YVRleHQ6ICdObyBVc2VycyBGb3VuZCdcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBmaWVsZHNXaXRoRXJyb3I6IGFueSA9IFtdO1xyXG4gIGhpZGRlbkxpc3Q6IGFueVtdID0gW107XHJcblxyXG4gIGFjdGl2ZUZpZWxkID0gJyc7XHJcbiAgYWN0aXZlU2VsZWN0b3IgPSAnJztcclxuICBsaXN0TG9hZGluZ1N0YXR1czogYW55ID0gW107XHJcbiAgY3VycmVudFRpbWUgPSAnJztcclxuICAgIC8qKlxyXG4gICAqIGlzUkNQcmVTZWxlY3RlZCxpc1JDVmlzaWJsZSBhcmUgdmFyaWFibGUgdXNlZCB0byBzZXQgdGhlIHZpc2liaWxpdHkgb2YgcmMgZmllbGQgYW5kIGVkaXQgYnV0dG9uIGluIGNlcnRhaW4gY29uZGl0aW9uc1xyXG4gICAqL1xyXG4gIGlzUkNQcmVTZWxlY3RlZCA9IGZhbHNlO1xyXG4gIGlzUkNWaXNpYmxlID0gdHJ1ZVxyXG4gIGlzUkNNYW5kYXRvcnkgPSBmYWxzZTtcclxuICBkYXRhRm9yRWRpdCAhOmFueTtcclxuICBpc1Jpc2tDb250cm9sVmlzaWJsZSA9IGZhbHNlO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9nU2VydmljZTogTG9nSXNzdWVTZXJ2aWNlLCBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcHJpdmF0ZSB1aUtpdFNlcnZpY2U6IFVpS2l0U2VydmljZSwgcHJpdmF0ZSBzbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlKSB7IH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFRpbWUgPSB0aGlzLmdldEN1cnJlbnRUaW1lKCk7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgICB0aGlzLnNldFVzZXJEZXRhaWxzKCk7XHJcbiAgICB0aGlzLmZldGNoSXNzdWVUeXBlcygpO1xyXG4gICAgdGhpcy5mZXRjaFVzZXJMaXN0KCk7XHJcbiAgICB0aGlzLmZldGNoQ2F0ZWdvcnlMaXN0KCk7XHJcbiAgICB0aGlzLmZldGNoUkNMaXN0KCk7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbkRldGFpbHMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmICghcmVzLmVuYWJsZV9yaXNrY2xhc3MpIHtcclxuICAgICAgICB0aGlzLmhpZGRlbkxpc3QucHVzaCgnUklTS19DTEFTU0lGSUNBVElPTicpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgIHRoaXMuZmV0Y2hDb250cm9sUmlza3MoKTtcclxuICAgICB0aGlzLmRlY2lkZVJDbWFuZGF0b3J5KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIHRoaXMuY3VycmVudFRpbWUgPSB0aGlzLmdldEN1cnJlbnRUaW1lKCk7XHJcbiAgfVxyXG5cclxuICBkZWNpZGVSQ21hbmRhdG9yeSgpe1xyXG4gICAgdGhpcy5pc1JDTWFuZGF0b3J5ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2V0Q3VycmVudFRpbWUoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRUaW1lID0gdGhpcy5nZXRDdXJyZW50VGltZSgpO1xyXG4gIH1cclxuICBnZXRDdXJyZW50VGltZSgpIHtcclxuICAgIGxldCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICBpZiAodG9kYXkuZ2V0RGF0ZSgpID09PSBuZXcgRGF0ZSh0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUR1ZURhdGUpLmdldERhdGUoKSkge1xyXG4gICAgICBpZiAodG9kYXkuZ2V0SG91cnMoKSA8IDEyICYmIHRvZGF5LmdldE1pbnV0ZXMoKSA8IDU5ICYmIHRvZGF5LmdldFNlY29uZHMoKSA8IDU5KSB7XHJcbiAgICAgICAgcmV0dXJuIGAkeyh0b2RheS5nZXRIb3VycygpIDwgMTApID8gJzAnICsgdG9kYXkuZ2V0SG91cnMoKSA6IHRvZGF5LmdldEhvdXJzKCl9OiR7KHRvZGF5LmdldE1pbnV0ZXMoKSA8IDEwKSA/ICcwJyArIHRvZGF5LmdldE1pbnV0ZXMoKSA6IHRvZGF5LmdldE1pbnV0ZXMoKX0gYW1gO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBgJHsoKHRvZGF5LmdldEhvdXJzKCkgLSAxMikgPCAxMCkgPyAnMCcgKyAodG9kYXkuZ2V0SG91cnMoKSAtIDEyKSA6ICh0b2RheS5nZXRIb3VycygpIC0gMTIpfTokeyh0b2RheS5nZXRNaW51dGVzKCkgPCAxMCkgPyAnMCcgKyB0b2RheS5nZXRNaW51dGVzKCkgOiB0b2RheS5nZXRNaW51dGVzKCl9IHBtYDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICcwMDowMCBhbSc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNldFVzZXJEZXRhaWxzKCkge1xyXG4gICAgdGhpcy5jdXJyZW50VXNlciA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckRldGFpbHMoKS51c2VyO1xyXG4gIH1cclxuICBmZXRjaElzc3VlVHlwZXMoKSB7XHJcbiAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzBdID0gZmFsc2U7XHJcbiAgICB0aGlzLmNoZWNrQWxsTGlzdExvYWRlZCgpO1xyXG4gICAgdGhpcy5sb2dTZXJ2aWNlLmdldElzc3VlVHlwZXMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbMF0gPSB0cnVlO1xyXG4gICAgICB0aGlzLmxpc3REYXRhLmlzc3VlVHlwZUxpc3QgPSByZXM7XHJcbiAgICAgIHRoaXMuY2hlY2tBbGxMaXN0TG9hZGVkKCk7XHJcbiAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzBdID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGVja0FsbExpc3RMb2FkZWQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBmZXRjaFVzZXJMaXN0KCkge1xyXG4gICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1sxXSA9IGZhbHNlO1xyXG4gICAgdGhpcy5sb2dTZXJ2aWNlLmdldE9yZ1Blb3BsZSgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1sxXSA9IHRydWU7XHJcbiAgICAgIHRoaXMubGlzdERhdGEudXNlckxpc3QgPSByZXM7XHJcbiAgICAgIHRoaXMuY2hlY2tBbGxMaXN0TG9hZGVkKCk7XHJcbiAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzFdID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGVja0FsbExpc3RMb2FkZWQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZmV0Y2hDYXRlZ29yeUxpc3QoKSB7XHJcbiAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzJdID0gZmFsc2U7XHJcbiAgICB0aGlzLmxvZ1NlcnZpY2UuZ2V0SXNzdWVDYXRlZ29yaWVzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzJdID0gdHJ1ZTtcclxuICAgICAgdGhpcy5saXN0RGF0YS5jYXRlZ29yeUxpc3QgPSByZXM/LmRhdGE7XHJcbiAgICAgIHRoaXMubGlzdERhdGEuY2F0ZWdvcnlMaXN0ID0gdGhpcy5saXN0RGF0YS5jYXRlZ29yeUxpc3QuZmlsdGVyKChlOmFueSk9PiBlPy5jYXRlZ29yeV9uYW1lICE9PSAnVW5jYXRlZ29yaXplZCcpXHJcbiAgICAgIHRoaXMuY2hlY2tBbGxMaXN0TG9hZGVkKCk7XHJcbiAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzJdID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGVja0FsbExpc3RMb2FkZWQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZmV0Y2hSQ0xpc3QoKSB7XHJcbiAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzNdID0gZmFsc2U7XHJcbiAgICB0aGlzLmxvZ1NlcnZpY2UuZ2V0UmVzcG9uc2liaWxpdHlDZW50ZXJMaXN0KCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzNdID0gdHJ1ZTtcclxuICAgICAgdGhpcy5saXN0RGF0YS5yY0xpc3QgPSByZXM7XHJcbiAgICAgIHRoaXMuY2hlY2tBbGxMaXN0TG9hZGVkKCk7XHJcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRSQygpO1xyXG4gICAgfSwgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1szXSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hlY2tBbGxMaXN0TG9hZGVkKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGVkUkMoKXtcclxuICAgIGlmKHRoaXMucmVwb25zaWJpbGl0eURhdGE/LnJjSWQgJiYgdGhpcy5vcGVuZWRGcm9tID09PSAnQ09NUExJQU5DRV9XT1JLUk9PTScpe1xyXG4gICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVJDID0gIHRoaXMucmVwb25zaWJpbGl0eURhdGEucmNJZCA/IHRoaXMubGlzdERhdGEucmNMaXN0LmZpbHRlcigoZTphbnkpID0+IGUucmNfaWQgPT09IHRoaXMucmVwb25zaWJpbGl0eURhdGEucmNJZCk6W107XHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSQyAgPT0+XCIsdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSQywgdGhpcy5saXN0RGF0YS5yY0xpc3QgLCAgdGhpcy5yZXBvbnNpYmlsaXR5RGF0YS5yY0lkLCB0aGlzLmxpc3REYXRhLnJjTGlzdC5maWx0ZXIoKGU6YW55KSA9PiBlLnJjX2lkID09PSB0aGlzLnJlcG9uc2liaWxpdHlEYXRhLnJjSWQpKVxyXG4gICAgfWVsc2UgaWYodGhpcy5pc3N1ZURldGFpbHM/LnJjSWQgJiYgWydBVURJVF9XT1JLUk9PTScsJ1ZJRVdfQVVESVRfRVhFQ1VUSU9OX1NVTU1BUlknLCdFWEVDVVRFX0FVRElUX1BMQU4nXS5pbmNsdWRlcyh0aGlzLm9wZW5lZEZyb20pKXtcclxuICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSQyA9IHRoaXMuaXNzdWVEZXRhaWxzPy5yY0lkID8gdGhpcy5saXN0RGF0YS5yY0xpc3QuZmlsdGVyKChlOmFueSkgPT4gZS5yY19pZCA9PT0gdGhpcy5pc3N1ZURldGFpbHM/LnJjSWQpOltdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMubG9nSXNzdWVGb3JtPy5pc3N1ZVJDPy5sZW5ndGgpe1xyXG4gICAgICB0aGlzLmlzUkNQcmVTZWxlY3RlZCA9IHRydWU7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5pc1JDUHJlU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKFwidGhpcy5yZXBvbnNpYmlsaXR5RGF0YXRoaXMucmVwb25zaWJpbGl0eURhdGF0aGlzLnJlcG9uc2liaWxpdHlEYXRhID09PT5cIiwgdGhpcy5yZXBvbnNpYmlsaXR5RGF0YSlcclxuICAgIGlmKCEodGhpcy5yZXBvbnNpYmlsaXR5RGF0YT8ucmNJZCB8fCB0aGlzLmlzc3VlRGV0YWlscz8ucmNJZCkgJiYgWydDT01QTElBTkNFX1dPUktST09NJywnQVVESVRfV09SS1JPT00nLCdWSUVXX0FVRElUX0VYRUNVVElPTl9TVU1NQVJZJywnRVhFQ1VURV9BVURJVF9QTEFOJ10uaW5jbHVkZXModGhpcy5vcGVuZWRGcm9tKSl7XHJcbiAgICB0aGlzLmlzUkNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5pc1JDVmlzaWJsZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZmV0Y2hDb250cm9sUmlza3MoKXtcclxuXHJcbiAgICAgIGlmKFsnVklFV19BVURJVF9FWEVDVVRJT05fU1VNTUFSWScsJ0VYRUNVVEVfQVVESVRfUExBTiddLmluY2x1ZGVzKHRoaXMub3BlbmVkRnJvbSkpe1xyXG5cclxuICAgICAgICB0aGlzLmdldExpbmthZ2UodGhpcy5pc3N1ZURldGFpbHM/LmF1ZGl0T2JqSWQsdGhpcy5sb2dJc3N1ZUZvcm0ubGlua2FnZVR5cGUpXHJcbiAgICAgIH1cclxuICB9XHJcblxyXG5cclxuICBnZXRMaW5rYWdlKGF1ZGl0SWQ6YW55LCB0eXBlOnN0cmluZyl7XHJcbiAgICB0aGlzLmlzUmlza0NvbnRyb2xMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMubG9nU2VydmljZS5nZXRDb250cm9sUmlzayhhdWRpdElkLHR5cGUpPy5zdWJzY3JpYmUoKGRhdGE6YW55KT0+e1xyXG4gICAgICB0aGlzLmxpc3REYXRhLmxpbmthZ2VMaXN0ID0gWy4uLnRoaXMubGlzdERhdGEubGlua2FnZUxpc3QsLi4uZGF0YV07XHJcbiAgICAgIHRoaXMubGlzdERhdGEubGlua2FnZUxpc3QgPSAgdGhpcy5saXN0RGF0YS5saW5rYWdlTGlzdC5maWx0ZXIoKHRoaW5nOmFueSwgaW5kZXg6YW55LCBzZWxmOmFueSkgPT5cclxuICBpbmRleCA9PT0gc2VsZi5maW5kSW5kZXgoKHQ6YW55KSA9PiAoXHJcbiAgICB0Lml0ZW1JZCA9PT0gdGhpbmcuaXRlbUlkICYmIHQuaXRlbVR5cGUgPT09IHRoaW5nLml0ZW1UeXBlXHJcbiAgKSlcclxuKVxyXG4gICAgICB0aGlzLmlzUmlza0NvbnRyb2xMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwibGlua2FnZVwiLHRoaXMubGlzdERhdGEpXHJcbiAgICAgfSwoZXJyb3I6YW55KT0+e1xyXG4gICAgICB0aGlzLmlzUmlza0NvbnRyb2xMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgfSlcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVGhpcyBmdW5jdGlvaiBjaGVjayB3ZWF0aGVyIGFsbCB0aGUgcmVxdWlyZWQgbGlzdHMgYXJlIGxvYWRlZFxyXG4gICAqIElmIGxvYWRlZCBoaWRlcyB0aGUgbG9hZGVyIG90aGVyd2lzZSBzaG93cyB0aGUgbG9hZGVyLlxyXG4gICAqL1xyXG4gIGNoZWNrQWxsTGlzdExvYWRlZCgpIHtcclxuICAgIGlmICh0aGlzLmxpc3RMb2FkaW5nU3RhdHVzLmluY2x1ZGVzKGZhbHNlKSkge1xyXG4gICAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIGlmKHRoaXMubW9kZT09PSdFRElUJyl7XHJcbiAgICAgICAgdGhpcy5mZXRjaElzc3VlRGV0YWlscygpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBSZW1vdmVzIGVycm9yIGZyb20gdGhlIGZpZWxzIHdpdGggZXJyb3IgdG8gcmVtb3ZlIHRoZSBlcnJvciBtZXNzYWcgZnJvbSB0aGUgVUlcclxuICAgKiBAcGFyYW0gZXJyb3JLZXkgZXJyb3IgSWRlbnRpZmllciB1c2VkIHRvIHNob3cgZXJyb3IgaW4gc3BlY2lmaWMgZmllbGRzLlxyXG4gICAqL1xyXG4gIHJlbW92ZUVycm9yKGVycm9yS2V5OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWVsZHNXaXRoRXJyb3IuaW5kZXhPZihlcnJvcktleSk7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB0aGlzLmZpZWxkc1dpdGhFcnJvci5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuICBvcGVuRGF0ZVBpY2tlcigpIHtcclxuICAgIHRoaXMuZGF0ZVBpY2tlci5hcGkub3BlbigpO1xyXG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IHRydWU7XHJcbiAgICB0aGlzLnNldEFjdGl2ZUZpZWxkU2VsZWN0b3IoJ0lTU1VFX0RBVEVfVElNRScsICdJU1NVRV9EQVRFX1RJTUUnKTtcclxuICB9XHJcbiAgY2xvc2VEYXRlUGlja2VyKGV2dDogYW55KSB7XHJcbiAgICBpZiAoIWV2dCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoZXZ0Py5kYXRlPy5fZCkge1xyXG4gICAgICBsZXQgbW9udGhBcnJheSA9IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddXHJcbiAgICAgIGNvbnN0IGRhdGVWYWx1ZSA9IG5ldyBEYXRlKGV2dD8uZGF0ZT8uX2QpLmdldERhdGUoKTtcclxuICAgICAgY29uc3QgbW9udGhWYWx1ZSA9IG1vbnRoQXJyYXlbbmV3IERhdGUoZXZ0Py5kYXRlPy5fZCkuZ2V0TW9udGgoKV07XHJcbiAgICAgIGNvbnN0IHllYXJWYWx1ZSA9IG5ldyBEYXRlKGV2dD8uZGF0ZT8uX2QpLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSBgJHtkYXRlVmFsdWV9ICR7bW9udGhWYWx1ZX0gJHt5ZWFyVmFsdWV9YDtcclxuICAgICAgaWYgKGV2dD8uZGF0ZT8uX2QgIT09IHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlRHVlRGF0ZT8uX2QpIHtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUR1ZVRpbWUgPSBcIjExOjU5IFBNXCI7XHJcbiAgICAgICAgdGhpcy5zZXRDdXJyZW50VGltZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZXZ0Py5kYXRlPy5fZCkge1xyXG4gICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUR1ZURhdGUgPSBldnQ/LmRhdGU/Ll9kO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRlUGlja2VyLmFwaS5jbG9zZSgpO1xyXG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZXRBY3RpdmVGaWVsZFNlbGVjdG9yKCcnLCAnJyk7XHJcbiAgfVxyXG5cclxuICBzZXRBY3RpdmVGaWVsZFNlbGVjdG9yKGFjdGl2ZUZpZWxkOiBzdHJpbmcsIGFjdGl2ZVNlbGVjdG9yPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmFjdGl2ZUZpZWxkID0gYWN0aXZlRmllbGQ7XHJcbiAgICAoYWN0aXZlU2VsZWN0b3IgPyB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gYWN0aXZlU2VsZWN0b3IgOiB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gJycpO1xyXG4gICAgY29uc3Qgc2xpZGVyVHlwZSA9IFsnSVNTVUVfUkMnLCAnSVNTVUVfQ0FURUdPUlknLCAnSVNTVUVfVFlQRScsICdJU1NVRV9DQycsICdJU1NVRV9GQ0MnLCAnSVNTVUVfV0hPJywnSVNTVUVfQ09OVFJPTF9SSVNLJ107XHJcbiAgICBpZiAoc2xpZGVyVHlwZS5pbmNsdWRlcyhhY3RpdmVGaWVsZCkpIHtcclxuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZmllbGREZXNlbGVjdG9yKHR5cGU6IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVTZWxlY3RvciA9ICcnO1xyXG4gICAgdGhpcy5hY3RpdmVGaWVsZCA9ICcnO1xyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0b3JBY3Rpb24oZXZ0OiBhbnksIHR5cGU6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coZXZ0LCB0eXBlKVxyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ0lTU1VFX0NBVEVHT1JZJzoge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGV2dCk7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVDYXRlZ29yeSA9IHRoaXMuaWRUb0FycmF5KGV2dCwgdGhpcy5saXN0RGF0YS5jYXRlZ29yeUxpc3QsICdjYXRlZ29yeV9pZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUNhdGVnb3J5KTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBpZiAoZXZ0Py5sZW5ndGggPiAwKSB7IHRoaXMucmVtb3ZlRXJyb3IoJ2lzc3VlQ2F0ZWdvcnknKSB9XHJcbiAgICAgICAgaWYodGhpcy5sb2dJc3N1ZUZvcm0/Lmlzc3VlQ2F0ZWdvcnlbMF0/LmN1c3RvbV90YWdzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgY29uc3QgdGFnOmFueSA9IFtdXHJcbiAgICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybT8uaXNzdWVDYXRlZ29yeVswXT8uY3VzdG9tX3RhZ3MuZm9yRWFjaCgoZWxlbWVudDphbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICB0YWcucHVzaCh7bmFtZTplbGVtZW50LCB2YWx1ZTonJ30pXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlQ3VzdG9tVGFnID0gdGFnO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVDdXN0b21UYWcgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgLy9bXCJpc3N1ZU5hbWVcIiwgXCJpc3N1ZUNhdGVnb3J5XCIsIFwiaXNzdWVSQ1wiLCBcImVudHJ1c3RUb1wiLCBcImlzc3VlRHVlRGF0ZVwiLCBcImlzc3VlUmVjb21tZW5kYXRpb25cIl1cclxuICAgICAgY2FzZSAnSVNTVUVfUkMnOiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXZ0LCB0eXBlKVxyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlUkMgPSB0aGlzLmlkVG9BcnJheShldnQsIHRoaXMubGlzdERhdGEucmNMaXN0LCAncmNfaWQnKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBpZiAoZXZ0Py5sZW5ndGggPiAwKSB7IHRoaXMucmVtb3ZlRXJyb3IoJ2lzc3VlUkMnKSB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnSVNTVUVfV0hPJzoge1xyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmVudHJ1c3RUbyA9IHRoaXMuaWRUb0FycmF5KGV2dCwgdGhpcy5saXN0RGF0YS51c2VyTGlzdCwgJ2VtcGxveWVlX2lkJyk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgaWYgKGV2dD8ubGVuZ3RoID4gMCkgeyB0aGlzLnJlbW92ZUVycm9yKCdlbnRydXN0VG8nKSB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnSVNTVUVfVFlQRSc6IHtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVR5cGUgPSB0aGlzLmlkVG9BcnJheShldnQsIHRoaXMubGlzdERhdGEuaXNzdWVUeXBlTGlzdCwgJ2lzc3VlX2lkJyk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnSVNTVUVfQ0MnOiB7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVDQ1VzZXJzID0gdGhpcy5pZFRvQXJyYXkoZXZ0LCB0aGlzLmxpc3REYXRhLnVzZXJMaXN0LCAnZW1wbG95ZWVfZW1haWwnKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9GQ0MnOiB7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uZmFpbHVyZUNDVXNlcnMgPSB0aGlzLmlkVG9BcnJheShldnQsIHRoaXMubGlzdERhdGEudXNlckxpc3QsICdlbXBsb3llZV9lbWFpbCcpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjYXNlICdJU1NVRV9DT05UUk9MX1JJU0snOlxyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmxpbmtlZENvbnRyb2xSaXNrID0gdGhpcy5pZFRvQXJyYXkoZXZ0LCB0aGlzLmxpc3REYXRhLmxpbmthZ2VMaXN0LCAnaXRlbUlkJyk7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0ubGlua2FnZVR5cGUgPSAgdGhpcy5sb2dJc3N1ZUZvcm0/LmxpbmtlZENvbnRyb2xSaXNrWzBdPy5pdGVtVHlwZTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUl0ZW0odHlwZTogYW55LCBlbGVtZW50OiBhbnkpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdJU1NVRV9DQVRFR09SWSc6IHtcclxuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUNhdGVnb3J5LmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLmNhdGVnb3J5X2lkID09PSBlbGVtZW50LmNhdGVnb3J5X2lkKTtcclxuICAgICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkgeyB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUNhdGVnb3J5LnNwbGljZShpdGVtSW5kZXgsIDEpOyB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnSVNTVUVfUkMnOiB7XHJcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSQy5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS5yY19pZCA9PT0gZWxlbWVudC5yY19pZCk7XHJcbiAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHsgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSQy5zcGxpY2UoaXRlbUluZGV4LCAxKTsgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0lTU1VFX1dITyc6IHtcclxuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5lbnRydXN0VG8uZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0uZW1wbG95ZWVfaWQgPT09IGVsZW1lbnQuZW1wbG95ZWVfaWQpO1xyXG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7IHRoaXMubG9nSXNzdWVGb3JtLmVudHJ1c3RUby5zcGxpY2UoaXRlbUluZGV4LCAxKTsgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0lTU1VFX1RZUEUnOiB7XHJcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVUeXBlLmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLmlzc3VlX2lkID09PSBlbGVtZW50Lmlzc3VlX2lkKTtcclxuICAgICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkgeyB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVR5cGUuc3BsaWNlKGl0ZW1JbmRleCwgMSk7IH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9DQyc6IHtcclxuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUNDVXNlcnMuZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0uZW1wbG95ZWVfZW1haWwgPT09IGVsZW1lbnQuZW1wbG95ZWVfZW1haWwpO1xyXG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7IHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlQ0NVc2Vycy5zcGxpY2UoaXRlbUluZGV4LCAxKTsgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0lTU1VFX0ZDQyc6IHtcclxuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5mYWlsdXJlQ0NVc2Vycy5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS5lbXBsb3llZV9lbWFpbCA9PT0gZWxlbWVudC5lbXBsb3llZV9lbWFpbCk7XHJcbiAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHsgdGhpcy5sb2dJc3N1ZUZvcm0uZmFpbHVyZUNDVXNlcnMuc3BsaWNlKGl0ZW1JbmRleCwgMSk7IH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9DT05UUk9MX1JJU0snOlxyXG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMubG9nSXNzdWVGb3JtLmxpbmtlZENvbnRyb2xSaXNrLmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLml0ZW1JZCA9PT0gZWxlbWVudC5pdGVtSWQpO1xyXG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7IHRoaXMubG9nSXNzdWVGb3JtLmxpbmtlZENvbnRyb2xSaXNrLnNwbGljZShpdGVtSW5kZXgsIDEpOyB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFzc2lnbk15c2VsZihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnJlbW92ZUVycm9yKCdlbnRydXN0VG8nKVxyXG4gICAgdGhpcy5sb2dJc3N1ZUZvcm0uZW50cnVzdFRvID0gW107XHJcblxyXG4gIH1cclxuICBzZXRFeGNlcHRpb24odHlwZTogYW55KSB7IHRoaXMubG9nSXNzdWVGb3JtLmV4Y2VwdGlvblR5cGUgPSB0eXBlOyB9XHJcbiAgc2V0RXZpZGVuY2UodHlwZTogYW55KSB7IHRoaXMubG9nSXNzdWVGb3JtLmV2aWRlbmNlUmVxdWlyZWQgPSB0eXBlOyB9XHJcblxyXG4gIGFkZE1vcmVJbmZvKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1c1tldmVudC5jb2RlXSA9IGV2ZW50LmNoZWNrZWQ7XHJcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gdHJ1ZTtcclxuICB9XHJcbiAgaWRUb0FycmF5KHNlbGVjdGVkSXRlbXM6IGFueSwgbGlzdEl0ZW1zOiBhbnksIGZpbHRlcmtleTogYW55KSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZCA9IHNlbGVjdGVkSXRlbXM7XHJcbiAgICBjb25zdCBsaXN0ID0gbGlzdEl0ZW1zO1xyXG4gICAgY29uc3Qga2V5ID0gZmlsdGVya2V5O1xyXG4gICAgY29uc3QgeCA9IGxpc3QuZmlsdGVyKChlbDogYW55KSA9PiBzZWxlY3RlZC5pbmNsdWRlcyhlbFtrZXldKSk7XHJcbiAgICByZXR1cm4geDtcclxuICB9XHJcbi8vL0NvZGUgYmV0d2VlbiA1MDMgdG8gNjA4IGNhbiBiZSBvcHRpbWl6ZWQgdG8gcmVtb3ZlIGR1cGxpY2F0aW9uXHJcbiBzZWxlY3RGaWxlKHR5cGU6c3RyaW5nLGZpbGVzOmFueSl7XHJcbiAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICBjYXNlICdJU1NVRV9ERVNDUklQVElPTic6IHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gZmlsZXMubGVuZ3RoIC0gMTsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IGZpbGVzW2ldLmZpbGUubmFtZSA/PyAnJztcclxuICAgICAgICB0aGlzLkF0dGFjaG1lbnRUcmFja1swXS5wdXNoKG5hbWUpO1xyXG4gICAgICAgIHRoaXMudXBsb2FkRmlsZShmaWxlc1tpXS5maWxlLHR5cGUpO1xyXG4gICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgIH1cclxuICAgIGNhc2UgJ1JFQ09NTUVOREVEX0FDVElPTlMnOntcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gZmlsZXMubGVuZ3RoIC0gMTsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IGZpbGVzW2ldLmZpbGUubmFtZSA/PyAnJztcclxuICAgICAgICB0aGlzLkF0dGFjaG1lbnRUcmFja1sxXS5wdXNoKG5hbWUpO1xyXG4gICAgICAgIHRoaXMudXBsb2FkRmlsZShmaWxlc1tpXS5maWxlLHR5cGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgY2FzZSAnQVNTT0NJQVRFRF9SSVNLUyc6e1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBmaWxlcy5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgICBjb25zdCBuYW1lID0gZmlsZXNbaV0uZmlsZS5uYW1lID8/ICcnO1xyXG4gICAgICAgIHRoaXMuQXR0YWNobWVudFRyYWNrWzJdLnB1c2gobmFtZSk7XHJcbiAgICAgICAgdGhpcy51cGxvYWRGaWxlKGZpbGVzW2ldLmZpbGUsdHlwZSk7XHJcbiAgICAgIH1cclxuICAgICBicmVhaztcclxuICAgIH1cclxuIH1cclxufVxyXG5cclxuXHJcbiAgdXBsb2FkRmlsZShmaWxlOiBhbnksdHlwZTpzdHJpbmcpIHtcclxuICAgIGxldCB0cmFja0luZGV4ID0gMCA7XHJcbiAgICBzd2l0Y2godHlwZSl7XHJcbiAgICAgIGNhc2UgJ0lTU1VFX0RFU0NSSVBUSU9OJzp7XHJcbiAgICAgICAgdHJhY2tJbmRleCA9IDA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnUkVDT01NRU5ERURfQUNUSU9OUyc6e1xyXG4gICAgICAgIHRyYWNrSW5kZXggPSAxO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0FTU09DSUFURURfUklTS1MnOntcclxuICAgICAgICB0cmFja0luZGV4ID0gMjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcclxuICAgIGNvbnN0IGRlc3RpbmF0aW9uU3RyaW5nID0gdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25JZCgpLnRvU3RyaW5nKCk7XHJcbiAgICB0aGlzLmxvZ1NlcnZpY2UudXBsb2FkRmlsZXMoZm9ybURhdGEsIGRlc3RpbmF0aW9uU3RyaW5nKycvJykuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuXHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLkF0dGFjaG1lbnRUcmFja1t0cmFja0luZGV4XS5pbmRleE9mKGZpbGU/Lm5hbWUpO1xyXG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgIHRoaXMuQXR0YWNobWVudFRyYWNrW3RyYWNrSW5kZXhdLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzd2l0Y2godHlwZSl7XHJcbiAgICAgICAgICBjYXNlICdJU1NVRV9ERVNDUklQVElPTic6e1xyXG4gICAgICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZURlc2NyaXB0aW9uQXR0YWNoZW1lbnRzLnB1c2gocmVzKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlICdSRUNPTU1FTkRFRF9BQ1RJT05TJzp7XHJcbiAgICAgICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLnJlY29tbWVuZGVkQWN0aW9uc0F0dGFjaG1lbnRzLnB1c2gocmVzKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlICdBU1NPQ0lBVEVEX1JJU0tTJzp7XHJcbiAgICAgICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmFzc29jaWF0ZWRSaXNrc0F0dGFjaG1lbnRzLnB1c2gocmVzKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zdCBpbmRleCA9ICB0aGlzLkF0dGFjaG1lbnRUcmFja1t0cmFja0luZGV4XS5pbmRleE9mKGZpbGUubmFtZSk7XHJcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICAgdGhpcy5BdHRhY2htZW50VHJhY2tbdHJhY2tJbmRleF0uc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlRmlsZShmaWxlOiBhbnksdHlwZTpzdHJpbmcpIHtcclxuICAgIGxldCBmaWxlSW5kZXggPSAtMTtcclxuICAgIHN3aXRjaCh0eXBlKXtcclxuICAgICAgY2FzZSAnSVNTVUVfREVTQ1JJUFRJT04nOntcclxuICAgICAgICBmaWxlSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZURlc2NyaXB0aW9uQXR0YWNoZW1lbnRzPy5maW5kSW5kZXgoKGN1cnJlbnRGaWxlczogYW55KSA9PiBjdXJyZW50RmlsZXMub3JnX2ZpbGUgPT09IGZpbGUub3JnX2ZpbGUpID8/IC0xO1xyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlRGVzY3JpcHRpb25BdHRhY2hlbWVudHM/LnNwbGljZShmaWxlSW5kZXgsIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ1JFQ09NTUVOREVEX0FDVElPTlMnOntcclxuICAgICAgICBmaWxlSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5yZWNvbW1lbmRlZEFjdGlvbnNBdHRhY2htZW50cz8uZmluZEluZGV4KChjdXJyZW50RmlsZXM6IGFueSkgPT4gY3VycmVudEZpbGVzLm9yZ19maWxlID09PSBmaWxlLm9yZ19maWxlKSA/PyAtMTtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5yZWNvbW1lbmRlZEFjdGlvbnNBdHRhY2htZW50cz8uc3BsaWNlKGZpbGVJbmRleCwgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnQVNTT0NJQVRFRF9SSVNLUyc6e1xyXG4gICAgICAgIGZpbGVJbmRleCA9IHRoaXMubG9nSXNzdWVGb3JtLmFzc29jaWF0ZWRSaXNrc0F0dGFjaG1lbnRzPy5maW5kSW5kZXgoKGN1cnJlbnRGaWxlczogYW55KSA9PiBjdXJyZW50RmlsZXMub3JnX2ZpbGUgPT09IGZpbGUub3JnX2ZpbGUpID8/IC0xO1xyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmFzc29jaWF0ZWRSaXNrc0F0dGFjaG1lbnRzPy5zcGxpY2UoZmlsZUluZGV4LCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuIGFkZElzc3VlKCl7XHJcbiAgIGNvbnN0IGZvcm0gPSBjbG9uZURlZXAodGhpcy5sb2dJc3N1ZUZvcm0pO1xyXG4gICBpZiAoZm9ybS5pc0Fzc2lnblRvTXlzZWxmKXtcclxuICAgICBmb3JtLmVudHJ1c3RUbyA9IHRoaXMubGlzdERhdGEudXNlckxpc3QuZmlsdGVyKChlbXBsaXN0OiBhbnkpID0+IGVtcGxpc3QubXlfbWVtYmVyX2lkID09PSB0aGlzLmN1cnJlbnRVc2VyLmlkKTtcclxuICAgfVxyXG5cclxuICAgdGhpcy5maWVsZHNXaXRoRXJyb3IgPSBbXTtcclxuICAgdGhpcy5maWVsZHNXaXRoRXJyb3IgPSB0aGlzLmxvZ1NlcnZpY2UudmFsaWRhdGUoZm9ybSwgdGhpcy5vcGVuZWRGcm9tLHRoaXMuaXNSQ01hbmRhdG9yeSk7XHJcbiAgIGlmICh0aGlzLmZpZWxkc1dpdGhFcnJvci5sZW5ndGggPiAwICl7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gICBjb25zdCBQQVlMT0FEID0gdGhpcy5sb2dTZXJ2aWNlLnBheWxvYWRCdWlsZGVyKGZvcm0sIHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1cyk7XHJcblxyXG4gICBpZih0aGlzLm1vZGUgPT09ICdDUkVBVEUnKXtcclxuICAgUEFZTE9BRC5saW5rYWdlX29iamVjdCA9IHsgc291cmNlIDogdGhpcy5vcGVuZWRGcm9tLCB0eXBlOicnLCB0eXBlX2lkOiAwLCBzb3VyY2VfaWQ6IDAsIHNvdXJjZV9vYmplY3RfaWQ6ICcnfTtcclxuICAgIGlmICh0aGlzLiBvcGVuZWRGcm9tID09PSAnQ09NUExJQU5DRV9XT1JLUk9PTScgJiYgdGhpcy5yZXBvbnNpYmlsaXR5RGF0YT8ucmVzcG9uc2liaWxpdHlJZCl7XHJcbiAgICAgIFBBWUxPQUQubGlua2FnZV9vYmplY3QgPSB7IHNvdXJjZV9pZDogIHRoaXMucmVwb25zaWJpbGl0eURhdGE/LnJlc3BvbnNpYmlsaXR5SWQsIHR5cGU6ICcnLCB0eXBlX2lkOiAwLCAgc291cmNlIDogdGhpcy5vcGVuZWRGcm9tLCBzb3VyY2Vfb2JqZWN0X2lkOiB0aGlzLnJlcG9uc2liaWxpdHlEYXRhPy5yZXNwb25zaWJpbGl0eU9iamVjdElkIH0gO1xyXG4gICB9XHJcbiAgIGlmKFsnVklFV19BVURJVF9FWEVDVVRJT05fU1VNTUFSWScsJ0VYRUNVVEVfQVVESVRfUExBTiddLmluY2x1ZGVzKHRoaXMub3BlbmVkRnJvbSkpe1xyXG4gICAgICAgICAgaWYodGhpcy5sb2dJc3N1ZUZvcm0/LmxpbmthZ2VUeXBlICYmIHRoaXMubG9nSXNzdWVGb3JtPy5saW5rZWRDb250cm9sUmlzay5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgaWYoWydSSVNLJywgJ1JFU1BPTlNJQklMSVRZJ10uaW5jbHVkZXModGhpcy5sb2dJc3N1ZUZvcm0/LmxpbmthZ2VUeXBlKSl7XHJcbiAgICAgICAgICAgICAgUEFZTE9BRC5saW5rYWdlX29iamVjdC5zb3VyY2VfaWQgPSB0aGlzLmxvZ0lzc3VlRm9ybT8ubGlua2VkQ29udHJvbFJpc2tbMF0/Lml0ZW1JZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICB9XHJcbiAgIGlmKFsnQVVESVRfV09SS1JPT00nLCdWSUVXX0FVRElUX0VYRUNVVElPTl9TVU1NQVJZJywnRVhFQ1VURV9BVURJVF9QTEFOJ10uaW5jbHVkZXModGhpcy5vcGVuZWRGcm9tKSl7XHJcbiAgICAgIGlmKHRoaXMuaXNzdWVEZXRhaWxzLmF1ZGl0UGxhbklkKXtcclxuICAgICAgICBQQVlMT0FELmxpbmthZ2Vfb2JqZWN0LnNvdXJjZV9pZCA9ICB0aGlzLmlzc3VlRGV0YWlscy5hdWRpdFBsYW5JZDtcclxuICAgICAgfVxyXG4gICB9XHJcbiAgfVxyXG5cclxuICBpZih0aGlzLm1vZGUgPT09ICdFRElUJyl7XHJcbiAgICBQQVlMT0FELklzc3VlTGlua2FnZSA9IHRoaXMuZGF0YUZvckVkaXQ/LmxpbmthZ2Vfb2JqZWN0O1xyXG4gIH1cclxuICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IHRydWVcclxuICBjb25zb2xlLmxvZygnUEFZTE9BRCA9PT0+JywgUEFZTE9BRClcclxuICAgaWYodGhpcy5tb2RlID09PSAnRURJVCcpe1xyXG4gICAgdGhpcy5sb2dTZXJ2aWNlLnVwZGF0ZUlzc3VlKFBBWUxPQUQsdGhpcy5pc3N1ZUlkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc21pbGV5TWVzc2FnZSA9IGBUaGUgaXNzdWUgaGFzIGJlZW4gdXBkYXRlZC5gO1xyXG4gICAgICB0aGlzLmlzc3VlRGF0YSA9IHJlcztcclxuICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcclxuICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2VcclxuICAgICAgdGhpcy5yZXNldElzc3VlRm9ybSgpO1xyXG4gICB9LCBlcnJvciA9PiB7XHJcbiAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG4gICAgIHRoaXMuc25hY2tCYXIuc2hvdygnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/Jyk7XHJcbiAgIH0pO1xyXG4gICB9ZWxzZSBpZih0aGlzLm1vZGUgPT09ICdDUkVBVEUnIHx8IHRoaXMubW9kZSA9PT0gJycgfHwgIXRoaXMubW9kZSl7XHJcbiAgICB0aGlzLmxvZ1NlcnZpY2UuY3JlYXRlSXNzdWUoUEFZTE9BRCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmlzc3VlRGF0YSA9IHJlcztcclxuICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcclxuICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVzZXRJc3N1ZUZvcm0oKTtcclxuICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycpO1xyXG4gICB9KTtcclxuICAgfVxyXG5cclxuIH1cclxuIGNsb3NlU21pbGV5KGV2dD86IGFueSl7XHJcbiAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xyXG4gIHRoaXMuY2xvc2VXb3JrRmxvdyh0aGlzLmlzc3VlRGF0YSxmYWxzZSk7XHJcbiB9XHJcbi8qKlxyXG4gKiBDbG9zZXMgd29ya2Zsb3cgZW5naW5lXHJcbiAqIEBwYXJhbSBldnRcclxuICogQHBhcmFtIGNvbmZpcm1cclxuICovXHJcbmNsb3NlV29ya0Zsb3coZXZ0OiBhbnksIGNvbmZpcm06YW55KXtcclxuICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoe2V2dCwgY29uZmlybX0pO1xyXG4gfVxyXG4gYWN0aW9uKGV2dDogYW55KXtcclxuICAgaWYgKGV2dCA9PT0gJ2FkZE1vcmUnKXtcclxuICAgIHRoaXMucmVzZXRJc3N1ZUZvcm0oKTtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xyXG4gICAgLy8gdGhpcy5jbG9zZVdvcmtGbG93KHRoaXMuaXNzdWVEYXRhLCBmYWxzZSk7XHJcbiAgfVxyXG4gIGVsc2UgaWYoZXZ0ID09PSAndmlld0lzc3VlJyl7XHJcbiAgICB0aGlzLnZpZXdJc3N1ZSgpO1xyXG4gIH1cclxuXHJcbiAgIH1cclxuXHJcbiAgIHZpZXdJc3N1ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSk7XHJcbiAgICAgICBsZXQgdXJsOiBzdHJpbmc7XHJcbiAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcclxuICAgICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XHJcbiAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICB1cmwgPSAnaHR0cHM6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XHJcbiAgICAgICB9XHJcblxyXG4gICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0LnN0YXJ0c1dpdGgoJ2xvY2FsaG9zdCcpKSB7XHJcbiAgICAgICAgIHVybCArPSAnL2lzc3VlL2lzc3VlLXdvcmtyb29tLycgKyB0aGlzLmlzc3VlRGF0YT8uX2lkO1xyXG4gICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgdXJsICs9ICcvYXVkaXQvaXNzdWUvaXNzdWUtd29ya3Jvb20vJyArIHRoaXMuaXNzdWVEYXRhPy5faWQ7XHJcbiAgICAgICB9XHJcbiAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgICB9XHJcblxyXG4vKipcclxuICogUG9wdWxhdGUgdGhlIHRpY2ttYXJrIG9mIG9wdGlvbmFsIGZpZWxkc1xyXG4gKi9cclxucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpe1xyXG4gIGNvbnN0IGFjdGl2YXRlZE9wdGlvbnMgPSBbXTtcclxuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXMpKXtcclxuICAgIGlmICh0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXNba2V5XSA9PT0gdHJ1ZSl7XHJcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaChrZXkpO1xyXG4gICAgfVxyXG4gIH1cclxuICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoYWN0aXZhdGVkT3B0aW9ucyk7XHJcbn1cclxuLyoqXHJcbiAqIEZldGNocyBpc3N1ZSBkZXRhaWxzIHdoZW4gaW4gZWRpdCBtb2RlIGJhc2VkIG9uIHRoZSBpbnB1dCBpZCBwYXNzZWRcclxuICovXHJcbmZldGNoSXNzdWVEZXRhaWxzKCl7XHJcbiAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gdHJ1ZTtcclxuICB0aGlzLmxvZ1NlcnZpY2UuZ2V0SXNzdWVEZXRhaWxzKHRoaXMuaXNzdWVJZCkuc3Vic2NyaWJlKChkYXRhOmFueSk9PntcclxuICAgIGNvbnNvbGUubG9nKFwiaXNzdWUgRGF0YVwiLGRhdGEpXHJcbiAgICB0aGlzLnBvcHVsYXRlRm9ybShkYXRhKVxyXG4gIH0pXHJcbn1cclxuLyoqXHJcbiAqIFBvcHVsYXRlcyB0aGUgaXNzdWUgZm9ybSB3aGVuIGluIGVkaXQgbW9kZVxyXG4gKiBAcGFyYW0gaXNzdWVEYXRhIGlzc3VlIGRhdGEgZmV0Y2hlZCBmcm9tIEFQSVxyXG4gKi9cclxuYXN5bmMgcG9wdWxhdGVGb3JtKGlzc3VlRGF0YSA6IGFueSl7XHJcbiAgdGhpcy5kYXRhRm9yRWRpdCA9IGlzc3VlRGF0YTtcclxuICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgY29uc3QgaXNzdWVEdWVEYXRlID0gaXNzdWVEYXRhLmZyZXF1ZW5jeV9kZXRhaWxzPy5mcmVxdWVuY3lfZGF0ZS5zcGxpdCgnLScpO1xyXG4gIHRoaXMubG9nSXNzdWVGb3JtID0ge1xyXG4gICAgaXNzdWVOYW1lIDogaXNzdWVEYXRhLnRpdGxlID8/ICcnLFxyXG4gICAgZXZpZGVuY2VSZXF1aXJlZDogaXNzdWVEYXRhPy5ldmlkZW5jZT8uZXZpZGVuY2VfZmxhZz8/MCxcclxuICAgIGlzc3VlRGVzY3JpcHRpb246IGlzc3VlRGF0YT8uZGVzY3JpcHRpb24/Lmxlbmd0aCA/IGlzc3VlRGF0YT8uZGVzY3JpcHRpb25bMF0/LnRleHQgOicnLFxyXG4gICAgaXNzdWVEZXNjcmlwdGlvbkF0dGFjaGVtZW50czogaXNzdWVEYXRhPy5kZXNjcmlwdGlvbj8ubGVuZ3RoID8gaXNzdWVEYXRhPy5kZXNjcmlwdGlvblswXT8uYXR0YWNobWVudHMgOltdLFxyXG4gICAgaXNzdWVDYXRlZ29yeTogaXNzdWVEYXRhPy5jYXRlZ29yeV9pZCA/IHRoaXMubGlzdERhdGEuY2F0ZWdvcnlMaXN0LmZpbHRlcigoZTphbnkpID0+IGUuY2F0ZWdvcnlfaWQgPT09IGlzc3VlRGF0YT8uY2F0ZWdvcnlfaWQpOltdLFxyXG4gICAgaXNzdWVDdXN0b21UYWcgOiBpc3N1ZURhdGE/LmN1c3RvbV90YWdzID8/IFtdLFxyXG4gICAgaXNzdWVSQzogaXNzdWVEYXRhPy5yY19pZCA/IHRoaXMubGlzdERhdGEucmNMaXN0LmZpbHRlcigoZTphbnkpID0+IGUucmNfaWQgPT09IGlzc3VlRGF0YT8ucmNfaWQpOltdLFxyXG4gICAgaXNzdWVUeXBlOiBbXSxcclxuICAgIHJlY29tbWVuZGVkQWN0aW9uc0F0dGFjaG1lbnRzOmlzc3VlRGF0YT8ucmVjb21tZW5kYXRpb24/Lmxlbmd0aCA/IGlzc3VlRGF0YT8ucmVjb21tZW5kYXRpb25bMF0/LmF0dGFjaG1lbnRzIDpbXSxcclxuICAgIGFzc29jaWF0ZWRSaXNrc0F0dGFjaG1lbnRzOltdLFxyXG4gICAgaXNBc3NpZ25Ub015c2VsZiA6ICBpc3N1ZURhdGE/LmFzc2lnbmVlX2lkID09PSB0aGlzLmN1cnJlbnRVc2VyLmlkICA/IHRydWUgOiBmYWxzZSxcclxuICAgIGVudHJ1c3RUbzogaXNzdWVEYXRhPy5hc3NpZ25lZV9pZCA9PT0gdGhpcy5jdXJyZW50VXNlci5pZCA/IFtdOiB0aGlzLmxpc3REYXRhLnVzZXJMaXN0LmZpbHRlcigoZTphbnkpID0+IGUubXlfbWVtYmVyX2lkID09PSBpc3N1ZURhdGE/LmFzc2lnbmVlX2lkICksXHJcbiAgICBpc3N1ZUR1ZURhdGU6IGlzc3VlRGF0YT8uZnJlcXVlbmN5X2RldGFpbHM/LmZyZXF1ZW5jeV9kYXRlPyAgbW9tZW50KGAke2lzc3VlRHVlRGF0ZVswXX0tJHtpc3N1ZUR1ZURhdGVbMV19LSR7aXNzdWVEdWVEYXRlWzJdfWApOicnLFxyXG4gICAgaXNzdWVEdWVUaW1lOiB0aGlzLmxvZ1NlcnZpY2UuY29udmVydEZyb20yNFRvMTJGb3JtYXQoaXNzdWVEYXRhLmZyZXF1ZW5jeV9kZXRhaWxzLmZyZXF1ZW5jeV90aW1lKSxcclxuICAgIGV4Y2VwdGlvblR5cGU6IGlzc3VlRGF0YS5leGNlcHRpb25fdHlwZSA/PyAxLFxyXG4gICAgaXNzdWVSaXNrUmF0aW5nOiBpc3N1ZURhdGEucmlza19jbGFzcyA/PyAxLFxyXG4gICAgaXNzdWVQcmlvcml0eTogaXNzdWVEYXRhLnByaW9yaXR5ID8/IDEsXHJcbiAgICBpc3N1ZVJlY29tbWVuZGF0aW9uOiBpc3N1ZURhdGE/LnJlY29tbWVuZGF0aW9uPy5sZW5ndGggPyBpc3N1ZURhdGE/LnJlY29tbWVuZGF0aW9uWzBdPy50ZXh0IDonJyxcclxuICAgIGlzc3VlQXNzb2NpYXRlZFJpc2s6IGlzc3VlRGF0YT8uYXNzb2NpYXRlZF9yaXNrPy5sZW5ndGggPyBpc3N1ZURhdGE/LmFzc29jaWF0ZWRfcmlza1swXT8udGV4dCA6JycsXHJcbiAgICBpc3N1ZUNDVXNlcnM6IGlzc3VlRGF0YS5vdmVyc2Vlcj8uY2NfZW1haWwubGVuZ3RoID8gYXdhaXQgdGhpcy5nZW5lcmF0ZU92ZXJzZWVyTGlzdCh0aGlzLmxpc3REYXRhLnVzZXJMaXN0LGlzc3VlRGF0YS5vdmVyc2Vlcj8uY2NfZW1haWwpIDpbXSxcclxuICAgIGZhaWx1cmVDQ1VzZXJzOiBpc3N1ZURhdGEub3ZlcnNlZXI/LmZhaWx1cmVfY2NfZW1haWwubGVuZ3RoID8gYXdhaXQgdGhpcy5nZW5lcmF0ZU92ZXJzZWVyTGlzdCh0aGlzLmxpc3REYXRhLnVzZXJMaXN0LGlzc3VlRGF0YS5vdmVyc2Vlcj8uZmFpbHVyZV9jY19lbWFpbCkgOltdLFxyXG4gICAgbGlua2VkQ29udHJvbFJpc2s6W10sXHJcbiAgICBsaW5rYWdlVHlwZSA6ICdSRVNQT05TSUJJTElUWSdcclxuICB9O1xyXG4gIGNvbnNvbGUubG9nKFwiQWZ0ZXIgSW5pdFwiLHRoaXMubG9nSXNzdWVGb3JtKVxyXG4gIGlmKHRoaXMubW9kZSA9PT0gJ0VESVQnKXtcclxuICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlUkM/Lmxlbmd0aCA+IDAgPyB0aGlzLmlzUkNQcmVTZWxlY3RlZCA9IHRydWUgOiB0aGlzLmlzUkNQcmVTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgLy8gaXNzdWVEYXRhLmxpbmthZ2Vfb2JqZWN0Py5zb3VyY2UgPT09ICdHTE9CQUwnPyB0aGlzLmlzUkNNYW5kYXRvcnkgPSB0cnVlIDogdGhpcy5pc1JDTWFuZGF0b3J5ID0gZmFsc2U7XHJcbiAgICAoaXNzdWVEYXRhLmxpbmthZ2Vfb2JqZWN0Py5zb3VyY2UgPT09ICdHTE9CQUwnICYmIGlzc3VlRGF0YT8ucmNfaWQpID8gdGhpcy5pc1JDUHJlU2VsZWN0ZWQgPSBmYWxzZSA6IHRoaXMuaXNSQ1ByZVNlbGVjdGVkID0gdHJ1ZTtcclxuICAgIC8vIGlmKGlzc3VlRGF0YS5saW5rYWdlX29iamVjdD8uY29tcGxpYW5jZT8uaWRzPy5sZW5ndGgpe1xyXG4gICAgLy8gICB0aGlzLmxvZ0lzc3VlRm9ybS5saW5rZWRDb250cm9sUmlzayA9IGlzc3VlRGF0YS5saW5rYWdlX29iamVjdD8uY29tcGxpYW5jZT8uaWRzPz9bXSxcclxuICAgIC8vICAgdGhpcy5sb2dJc3N1ZUZvcm0ubGlua2FnZVR5cGUgPSAnUkVTUE9OU0lCSUxJVFknXHJcbiAgICAvLyAgIHRoaXMuaXNSaXNrQ29udHJvbFZpc2libGUgPSB0cnVlO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gaWYoaXNzdWVEYXRhLmxpbmthZ2Vfb2JqZWN0Py5yaXNrPy5pZHM/Lmxlbmd0aCl7XHJcbiAgICAvLyAgIHRoaXMubG9nSXNzdWVGb3JtLmxpbmtlZENvbnRyb2xSaXNrID0gaXNzdWVEYXRhLmxpbmthZ2Vfb2JqZWN0Py5yaXNrPy5pZHM/P1tdLFxyXG4gICAgLy8gICB0aGlzLmxvZ0lzc3VlRm9ybS5saW5rYWdlVHlwZSA9ICdSSVNLJztcclxuICAgIC8vICAgdGhpcy5pc1Jpc2tDb250cm9sVmlzaWJsZSA9IHRydWU7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIHRoaXMuc2V0T3B0aW9uYWxGaWVsZChpc3N1ZURhdGEpO1xyXG59XHJcbi8qKlxyXG4gKiBTZXRzIHRoZSB2aXNpYmlsaXR5IG9mIG9wdGlvbmFsIGZpZWxkc1xyXG4gKiBAcGFyYW0gaXNzdWVEYXRhICBpc3N1ZSBkYXRhIGZldGNoZWQgZnJvbSBBUElcclxuICovXHJcbnNldE9wdGlvbmFsRmllbGQoaXNzdWVEYXRhOmFueSl7XHJcbiAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzID0ge1xyXG4gICAgRVhDRVBUSU9OX1RZUEU6IGlzc3VlRGF0YS5leGNlcHRpb25fdHlwZSA/IHRydWUgOiBmYWxzZSxcclxuICAgIEVWSURFTkNFOiBpc3N1ZURhdGEuZXZpZGVuY2UuZXZpZGVuY2VfZmxhZyA/IHRydWUgOmZhbHNlLFxyXG4gICAgUFJJT1JJVFk6ICBpc3N1ZURhdGEucHJpb3JpdHkgPyB0cnVlIDogZmFsc2UsXHJcbiAgICBJU1NVRV9UWVBFOiBmYWxzZSxcclxuICAgIEFTU09DSUFURURfUklTS1MgOiBpc3N1ZURhdGEuYXNzb2NpYXRlZF9yaXNrLmxlbmd0aCA/IChpc3N1ZURhdGEuYXNzb2NpYXRlZF9yaXNrWzBdLnRleHQubGVuZ3RoID8gdHJ1ZSA6IGZhbHNlKTpmYWxzZSxcclxuICAgIE9WRVJTSUdIVCA6IChpc3N1ZURhdGEub3ZlcnNlZXIuY2NfZW1haWwubGVuZ3RoID4gMCB8fCBpc3N1ZURhdGEub3ZlcnNlZXIuZmFpbHVyZV9jY19lbWFpbC5sZW5ndGggPiAwKSA/IHRydWUgOiBmYWxzZVxyXG4gIH07XHJcbiAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcbn1cclxuLyoqXHJcbiAqIEdlbmVyYXRlcyBsaXN0IG9mIHNlbGVjdGVkIG92ZXJzZWVyXHJcbiAqIEBwYXJhbSBhbGxVc2VyTGlzdCBsaXN0IG9mIGFsbCB1c2VycyBpbiB0aGUgb3JnYW56YXRpb25cclxuICogQHBhcmFtIG92ZXJzZWVyTGlzdCAgbGl0IG9mIHRoZSBvdmVyc2VlciB0aGF0IG5lZWRzIHRvIGJlIGZpbHRlcmVkXHJcbiAqIEByZXR1cm5zICBsaXN0IG9mIGFycmF5IGNvbnRhaW5pbmcgdGhlIHVzZXJzIG9iamVjdHNcclxuICovXHJcbmdlbmVyYXRlT3ZlcnNlZXJMaXN0KGFsbFVzZXJMaXN0OmFueSwgb3ZlcnNlZXJMaXN0OmFueSApe1xyXG4gcmV0dXJuIG92ZXJzZWVyTGlzdC5tYXAoKHVzZXI6YW55KT0+e1xyXG4gICAgY29uc3QgZm91bmRVc2VyID0gYWxsVXNlckxpc3QuZmluZCgoZWxlbWVudDphbnkpID0+IGVsZW1lbnQubXlfbWVtYmVyX2lkID09PSB1c2VyLm1lbWJlcl9pZCk7XHJcbiAgICBpZihmb3VuZFVzZXIpe1xyXG4gICAgICByZXR1cm4gZm91bmRVc2VyO1xyXG4gICAgfVxyXG4gIH0pXHJcbn1cclxuLyoqXHJcbiAqIFJlc2V0cyBpc3N1ZSBmb3JtXHJcbiAqL1xyXG5yZXNldElzc3VlRm9ybSgpe1xyXG4gICB0aGlzLnNjcm9sbFRvQm90dG9tID0gZmFsc2U7XHJcbiAgdGhpcy5sb2dJc3N1ZUZvcm0gPSB7XHJcbiAgICBpc3N1ZU5hbWUgOiAnJyxcclxuICAgIGV2aWRlbmNlUmVxdWlyZWQ6IDAsXHJcbiAgICBpc3N1ZURlc2NyaXB0aW9uOiAnJyxcclxuICAgIGlzc3VlRGVzY3JpcHRpb25BdHRhY2hlbWVudHM6IFtdLFxyXG4gICAgcmVjb21tZW5kZWRBY3Rpb25zQXR0YWNobWVudHM6W10sXHJcbiAgICBhc3NvY2lhdGVkUmlza3NBdHRhY2htZW50czpbXSxcclxuICAgIGlzc3VlQ2F0ZWdvcnk6IFtdLFxyXG4gICAgaXNzdWVDdXN0b21UYWcgOiBbXSxcclxuICAgIGlzc3VlUkM6IFtdLFxyXG4gICAgaXNzdWVUeXBlOiBbXSxcclxuICAgIGlzQXNzaWduVG9NeXNlbGYgOiBmYWxzZSxcclxuICAgIGVudHJ1c3RUbzogW10sXHJcbiAgICBpc3N1ZUR1ZURhdGU6ICcnLFxyXG4gICAgaXNzdWVEdWVUaW1lOiAnMTE6NTkgUE0nLFxyXG4gICAgZXhjZXB0aW9uVHlwZTogMSxcclxuICAgIGlzc3VlUmlza1JhdGluZzogMSxcclxuICAgIGlzc3VlUHJpb3JpdHk6IDEsXHJcbiAgICBpc3N1ZVJlY29tbWVuZGF0aW9uOiAnJyxcclxuICAgIGlzc3VlQXNzb2NpYXRlZFJpc2s6ICcnLFxyXG4gICAgaXNzdWVDQ1VzZXJzOiBbXSxcclxuICAgIGZhaWx1cmVDQ1VzZXJzOiBbXVxyXG4gIH07XHJcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzKSl7XHJcbiAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzW2tleV0gPSBmYWxzZTtcclxuICB9XHJcbiAgdGhpcy5zbWlsZXlNZXNzYWdlID0gYFRoZSBpc3N1ZSBoYXMgYmVlbiByZXBvcnRlZC5gO1xyXG4gIHRoaXMubW9kZSA9ICdDUkVBVEUnO1xyXG4gIHRoaXMubW9kZUNoYW5nZS5lbWl0KHRoaXMubW9kZSk7XHJcbiAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcbiAgdGhpcy5zZXRTZWxlY3RlZFJDKCk7XHJcbiB9XHJcbiBjaGVja0Rlc2NyaXB0aW9uKCkge1xyXG4gIGlmICh0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZURlc2NyaXB0aW9uID09ICc8YnI+Jykge1xyXG4gICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVEZXNjcmlwdGlvbiA9ICcnO1xyXG4gIH1cclxuICBpZiAodGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSZWNvbW1lbmRhdGlvbiA9PSAnPGJyPicpIHtcclxuICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlUmVjb21tZW5kYXRpb24gPSAnJztcclxuICB9XHJcbiAgaWYgKHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlQXNzb2NpYXRlZFJpc2sgPT0gJzxicj4nKSB7XHJcbiAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUFzc29jaWF0ZWRSaXNrID0gJyc7XHJcbiAgfVxyXG59XHJcbn1cclxuIl19
|