@hestia-earth/ui-components 0.27.64 → 0.27.65

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.
@@ -446,7 +446,7 @@ export class ImpactAssessmentsGraphComponent {
446
446
  const indicators = [...(impactAssessment?.endpoints || []), ...(impactAssessment?.impacts || [])];
447
447
  this.subscription?.unsubscribe();
448
448
  this.subscription = of(impactAssessment)
449
- .pipe(tap(() => (this.loading = true)), mergeMap(node => (this.initialTerms ? of(node) : from(this.loadInitialTerms()).pipe(map(() => node)))), mergeMap(node => this.nodeService.getLog({
449
+ .pipe(tap(() => (this.loading = true)), mergeMap(node => (this.initialTerms ? of(node) : from(this.loadInitialTerms()).pipe(map(() => node)))), mergeMap(node => this.nodeService.getLog$({
450
450
  ...node,
451
451
  dataState: DataState.recalculated
452
452
  })), map(value => (value ? parseLines(value) : [])), mergeAll(), filter(({ data }) => data.logger === 'hestia_earth.models' && data.level === Level.debug), filter(({ data: { message } }) => !!message), map(({ data: { message } }) => parseMessage(message)), filter(message => 'node' in message), map(parseLog), filter(log => [
@@ -785,4 +785,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
785
785
  }], dataState: [{
786
786
  type: Input
787
787
  }] } });
788
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLWdyYXBoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbXBhY3QtYXNzZXNzbWVudHMvaW1wYWN0LWFzc2Vzc21lbnRzLWdyYXBoL2ltcGFjdC1hc3Nlc3NtZW50cy1ncmFwaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1ncmFwaC9pbXBhY3QtYXNzZXNzbWVudHMtZ3JhcGguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxNQUFNLEVBRU4sU0FBUyxFQUVULEtBQUssRUFJTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxJQUFJLFFBQVEsRUFBdUIsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xGLE9BQU8sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxTQUFTLElBQUksV0FBVyxFQUN4QixJQUFJLElBQUksTUFBTSxFQUlmLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxhQUFhLElBQUksZUFBZSxFQUFFLGNBQWMsSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMvRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUF3QyxR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O1NBQzVCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFM0csSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSTthQUNsQixJQUFJLENBQ0gsS0FBSyxFQUNMLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUMzRzthQUNBLElBQUksQ0FDSCxLQUFLLENBQUMsRUFBRSxDQUNOLEtBQUs7YUFDRixNQUFNLENBQUMsR0FBRyxDQUFDO2FBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUNoQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQzthQUNsQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsWUFBWSxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFDekcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQ2hCLElBQUksQ0FBQyxFQUFFO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxF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QUFDLENBQUM7UUFDSCxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQzsrR0FwaEJVLCtCQUErQjttR0FBL0IsK0JBQStCLGtYQzFoQjVDLG9uS0E2SUEsc3lERDJZWSxlQUFlLGlQQUFFLFdBQVcsMHZCQUFFLFVBQVU7OzRGQUV2QywrQkFBK0I7a0JBUDNDLFNBQVM7K0JBQ0UsNkJBQTZCLGNBRzNCLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDOzhCQXlCM0MsUUFBUTtzQkFEZixTQUFTO3VCQUFDLE9BQU87Z0JBSVYsZUFBZTtzQkFEdEIsU0FBUzt1QkFBQyxHQUFHO2dCQUlOLGlCQUFpQjtzQkFEeEIsS0FBSztnQkFHRSxTQUFTO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBOZ1pvbmUsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBBZnRlclZpZXdJbml0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpbHRlciwgZ3JvdXBCeSwgbWFwLCBtZXJnZUFsbCwgbWVyZ2VNYXAsIHRvQXJyYXksIGNhdGNoRXJyb3IsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGZyb20sIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGxpbmtIb3Jpem9udGFsIGFzIGQzTGlua0hvcml6b250YWwgfSBmcm9tICdkMy1zaGFwZSc7XG5pbXBvcnQgeyBzZWxlY3QgYXMgZDNTZWxlY3QsIFNlbGVjdGlvbiwgQmFzZVR5cGUsIHNlbGVjdEFsbCB9IGZyb20gJ2QzLXNlbGVjdGlvbic7XG5pbXBvcnQgJ2QzLXRyYW5zaXRpb24nO1xuaW1wb3J0IHtcbiAgaGllcmFyY2h5IGFzIGQzSGllcmFyY2h5LFxuICB0cmVlIGFzIGQzVHJlZSxcbiAgSGllcmFyY2h5Tm9kZSxcbiAgSGllcmFyY2h5UG9pbnROb2RlLFxuICBIaWVyYXJjaHlQb2ludExpbmtcbn0gZnJvbSAnZDMtaGllcmFyY2h5JztcbmltcG9ydCB7IGVhc2VFbGFzdGljSW4gYXMgZDNFYXNlRWxhc3RpY0luLCBlYXNlRWxhc3RpY091dCBhcyBkM0Vhc2VFbGFzdGljT3V0IH0gZnJvbSAnZDMtZWFzZSc7XG5pbXBvcnQgeyBEYXRhU3RhdGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5pbXBvcnQgeyBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgSVRlcm1KU09OTEQsIE5vZGVUeXBlLCBUZXJtVGVybVR5cGUsIFRlcm0gfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyBnZXREZWZhdWx0TW9kZWxJZCB9IGZyb20gJ0BoZXN0aWEtZWFydGgvZ2xvc3NhcnknO1xuaW1wb3J0IHsgdW5pcXVlLCB0b1ByZWNpc2lvbiB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuaW1wb3J0IHsgTmdiUG9wb3ZlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmFJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgZmFFeGNsYW1hdGlvblRyaWFuZ2xlLCBmYUV4dGVybmFsTGlua0FsdCwgZmFTcGlubmVyIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcblxuaW1wb3J0IHsgYmFzZVVybCwgc2NoZW1hQmFzZVVybCB9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlscyc7XG5pbXBvcnQgeyBkM3dyYXAgfSBmcm9tICcuLi8uLi9jb21tb24vZDMtdXRpbHMnO1xuaW1wb3J0IHsgTGV2ZWwsIHBhcnNlTGluZXMsIHBhcnNlTWVzc2FnZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9sb2dzLXV0aWxzJztcbmltcG9ydCB7IEhlRW5naW5lU2VydmljZSB9IGZyb20gJy4uLy4uL2VuZ2luZS9lbmdpbmUuc2VydmljZSc7XG5pbXBvcnQgeyBIZU5vZGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbm9kZS9ub2RlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVTZWFyY2hTZXJ2aWNlLCBJU2VhcmNoUmVzdWx0RXh0ZW5kZWQgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgbWF0Y2hUZXJtVHlwZSwgbWF0Y2hFeGFjdFF1ZXJ5LCBtYXRjaFR5cGUgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLm1vZGVsJztcblxuZW51bSBDaGFydE5vZGVUeXBlIHtcbiAgbWlkcG9pbnQgPSAnbWlkcG9pbnQnLFxuICBlbWlzc2lvbiA9ICdlbWlzc2lvbicsXG4gIGVuZHBvaW50ID0gJ2VuZHBvaW50JyxcbiAgaW5wdXQgPSAnaW5wdXQnLFxuICBvcGVyYXRpb24gPSAnb3BlcmF0aW9uJyxcbiAgcm9vdCA9ICdyb290J1xufVxuXG5pbnRlcmZhY2UgTm9kZURhdHVtIHtcbiAgaWQ6IHN0cmluZztcbiAgdGVybTogc3RyaW5nO1xuICBtb2RlbElkOiBzdHJpbmc7XG4gIG1vZGVsTmFtZT86IHN0cmluZztcbiAgbW9kZWxEb2NzPzogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB0eXBlOiBDaGFydE5vZGVUeXBlO1xuICB2YWx1ZTogbnVtYmVyIHwgbnVsbDtcbiAgd2VpZ2h0ZWRWYWx1ZTogbnVtYmVyIHwgbnVsbDtcbiAgZnJhY3Rpb24/OiBudW1iZXI7XG4gIGNoaWxkcmVuPzogTm9kZURhdHVtW107XG4gIGdyb3VwPzogYm9vbGVhbjtcbiAgc2hvd0Jhcj86IGJvb2xlYW47XG4gIHVuaXRzOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBDaGFydE5vZGUgZXh0ZW5kcyBIaWVyYXJjaHlQb2ludE5vZGU8Tm9kZURhdHVtPiB7XG4gIF9jaGlsZHJlbj86IENoYXJ0Tm9kZVtdOyAvLyBjaGlsZHJlbiBvZiBjb2xsYXBzZWQgbm9kZXNcbiAgX2dyb3VwQ2hpbGRyZW4/OiBDaGFydE5vZGVbXTsgLy8gYWxsIGNoaWxkcmVuIHdoZW4gZ3JvdXAgY2xvc2VkOyB1bmdyb3VwZWQgY2hpbGRyZW4gd2hlbiBncm91cCBvcGVuXG4gIF9vcGVuPzogYm9vbGVhbjtcbiAgX2dyZXllZD86IGJvb2xlYW47XG4gIF9ncm91cE9wZW4/OiBib29sZWFuO1xuICBfdGltZW91dD86IE5vZGVKUy5UaW1lb3V0O1xufVxuXG5pbnRlcmZhY2UgSE5vZGUgZXh0ZW5kcyBIaWVyYXJjaHlOb2RlPE5vZGVEYXR1bT4ge1xuICBfY2hpbGRyZW4/OiBITm9kZVtdO1xuICBfZ3JvdXBDaGlsZHJlbj86IEhOb2RlW107XG4gIF9ncm91cE9wZW4/OiBib29sZWFuO1xuICBfb3Blbj86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBMaW5rIGV4dGVuZHMgSGllcmFyY2h5UG9pbnRMaW5rPE5vZGVEYXR1bT4ge1xuICBzb3VyY2U6IENoYXJ0Tm9kZTtcbiAgdGFyZ2V0OiBDaGFydE5vZGU7XG59XG5cbnR5cGUgTm9kZVNlbGVjdGlvbiA9IFNlbGVjdGlvbjxTVkdHRWxlbWVudCB8IEJhc2VUeXBlLCBDaGFydE5vZGUsIFNWR0dFbGVtZW50LCB1bmtub3duPjtcbnR5cGUgTGlua1NlbGVjdGlvbiA9IFNlbGVjdGlvbjxTVkdQYXRoRWxlbWVudCB8IEJhc2VUeXBlLCBMaW5rLCBTVkdHRWxlbWVudCwgdW5rbm93bj47XG5cbmludGVyZmFjZSBJSW5wdXRMb2cge1xuICBsYWJlbDogc3RyaW5nO1xuICB1bml0czogc3RyaW5nO1xuICB3ZWlnaHRlZFZhbHVlOiBudW1iZXI7XG4gIHZhbHVlOiBudW1iZXI7XG4gIG9wZXJhdGlvbnM6IHtcbiAgICB3ZWlnaHRlZFZhbHVlOiBudW1iZXI7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICB1bml0czogc3RyaW5nO1xuICAgIHZhbHVlOiBudW1iZXI7XG4gIH1bXTtcbn1cbmludGVyZmFjZSBJTG9nIHtcbiAgaW5kaWNhdG9yOiBzdHJpbmc7XG4gIGNvbnRyaWJ1dG9yOiBzdHJpbmc7XG4gIGNvZWZmaWNpZW50OiBudW1iZXI7XG4gIHZhbHVlOiBudW1iZXI7XG4gIHdlaWdodGVkVmFsdWU6IG51bWJlcjtcbiAgbW9kZWxJZDogc3RyaW5nO1xuICBpbnB1dHM/OiBJSW5wdXRMb2dbXTtcbn1cblxuY29uc3QgcGFyc2VMb2cgPSAoZGF0YTogYW55KTogSUxvZyA9PiAoe1xuICBpbmRpY2F0b3I6IGRhdGFbJ2tleS90ZXJtJ10gfHwgZGF0YS50ZXJtIHx8IGRhdGEuaW5kaWNhdG9yLFxuICBjb250cmlidXRvcjogZGF0YS5ub2RlLFxuICBjb2VmZmljaWVudDogK2RhdGEuY29lZmZpY2llbnQsXG4gIG1vZGVsSWQ6IGRhdGEubW9kZWwgfHwgJ1Vua25vd24nLFxuICB3ZWlnaHRlZFZhbHVlOiArZGF0YS52YWx1ZSAqICtkYXRhLmNvZWZmaWNpZW50LFxuICB2YWx1ZTogK2RhdGEudmFsdWVcbn0pO1xuXG5jb25zdCBmaWx0ZXJUZXJtVHlwZXMgPSBbXG4gIFRlcm1UZXJtVHlwZS5yZXNvdXJjZVVzZSxcbiAgVGVybVRlcm1UeXBlLmVtaXNzaW9uLFxuICBUZXJtVGVybVR5cGUuY2hhcmFjdGVyaXNlZEluZGljYXRvcixcbiAgVGVybVRlcm1UeXBlLmVuZHBvaW50SW5kaWNhdG9yLFxuICBUZXJtVGVybVR5cGUubW9kZWxcbl07XG5jb25zdCBub2RlQ29sb3VycyA9IHtcbiAgW0NoYXJ0Tm9kZVR5cGUuZW5kcG9pbnRdOiAnYmx1ZScsXG4gIFtDaGFydE5vZGVUeXBlLm1pZHBvaW50XTogJ3JlZCcsXG4gIFtDaGFydE5vZGVUeXBlLmVtaXNzaW9uXTogJ3B1cnBsZScsXG4gIFtDaGFydE5vZGVUeXBlLmlucHV0XTogJ2dyZWVuJyxcbiAgW0NoYXJ0Tm9kZVR5cGUub3BlcmF0aW9uXTogJ29yYW5nZSdcbn07XG5jb25zdCB3aWR0aCA9IDgwMDtcbmNvbnN0IG1hcmdpbiA9IHsgdG9wOiAxMCwgcmlnaHQ6IDIwLCBib3R0b206IDEwLCBsZWZ0OiAyMCB9O1xuY29uc3QgZm9udFNpemUgPSBNYXRoLmZsb29yKHdpZHRoIC8gMTAwKTtcbmNvbnN0IG5vZGVQYWRkaW5nID0gZm9udFNpemUgLyAyO1xuY29uc3QgbGluZUhlaWdodCA9IGZvbnRTaXplICogMS4yO1xuY29uc3QgYmFySGVpZ2h0ID0gbGluZUhlaWdodDtcblxuY29uc3Qgbm9kZUhlaWdodCA9IG5vZGVQYWRkaW5nICogMiArIDIgKiBsaW5lSGVpZ2h0ICsgYmFySGVpZ2h0O1xuY29uc3Qgbm9kZVdpZHRoID0gbm9kZUhlaWdodCAqIDIgKiAxLjYxODtcbmNvbnN0IG5vZGVDb250ZW50V2lkdGggPSBub2RlV2lkdGggLSBub2RlUGFkZGluZyAqIDI7XG5jb25zdCBsYXllclNwYWNpbmcgPSAod2lkdGggLSBtYXJnaW4ubGVmdCAtIG1hcmdpbi5yaWdodCAtIG5vZGVXaWR0aCAqIDUpIC8gNDtcbmNvbnN0IG5vZGVNYXJnaW4gPSBub2RlUGFkZGluZyAqIDAuNzU7XG5jb25zdCBub2RlU3BhY2luZ0ZhY3RvciA9IChub2RlSGVpZ2h0ICsgbm9kZU1hcmdpbiAqIDIpIC8gbm9kZUhlaWdodDtcbmNvbnN0IG5vZGVEdXJhdGlvbiA9IDYwMDtcbmNvbnN0IGxpbmtEdXJhdGlvbiA9IDIwMDtcbmNvbnN0IGdyb3VwRGVsYXkgPSBub2RlRHVyYXRpb24gLSAxMDA7XG5jb25zdCBub25MQ0FJbmRpY2F0b3JzSWQgPSAnbm9uTENBSW5kaWNhdG9ycyc7XG5jb25zdCBncmV5ZWRPcGFjaXR5ID0gMC4yO1xuY29uc3QgZGVmYXVsdEluZGljYXRvcnNNb2RlbElkID0gJ2RlZmF1bHRJbmRpY2F0b3JzTW9kZWxJZCc7XG5jb25zdCBkZWZhdWx0SW5kaWNhdG9yc01vZGVsTmFtZSA9ICdEZWZhdWx0IEluZGljYXRvcnMgKG11bHRpLW1vZGVsKSc7XG5jb25zdCBncm91cE92ZXJsYXAgPSBsaW5lSGVpZ2h0IC0gbm9kZVBhZGRpbmcgLSBub2RlTWFyZ2luO1xuY29uc3QgZ3JvdXBOb2RlU3BhY2UgPSBub2RlSGVpZ2h0IC0gMiAqIGdyb3VwT3ZlcmxhcDtcblxuY29uc3QgY29sbGFwc2VDaGlsZHJlbiA9IChub2RlOiBDaGFydE5vZGUgfCBITm9kZSkgPT4ge1xuICBub2RlLl9jaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4gfHwgbm9kZS5fY2hpbGRyZW47XG4gIG5vZGUuY2hpbGRyZW4gPSBudWxsO1xuICByZXR1cm4gbm9kZTtcbn07XG5cbmNvbnN0IHJlc3RvcmVDaGlsZHJlbiA9IChub2RlOiBDaGFydE5vZGUgfCBITm9kZSkgPT4ge1xuICBub2RlLmNoaWxkcmVuID0gbm9kZS5fY2hpbGRyZW47XG4gIG5vZGUuX2NoaWxkcmVuID0gbnVsbDtcbiAgcmV0dXJuIG5vZGU7XG59O1xuXG5jb25zdCB3cmFwID0gKHNlbGVjdGlvbjogU2VsZWN0aW9uPFNWR1RleHRFbGVtZW50LCBDaGFydE5vZGUsIGFueSwgYW55PiwgbWF4V2lkdGggPSBub2RlQ29udGVudFdpZHRoKSA9PiB7XG4gIHNlbGVjdGlvbi5lYWNoKGZ1bmN0aW9uIChkKSB7XG4gICAgY29uc3QgdCA9IGQzU2VsZWN0PFNWR1RleHRFbGVtZW50LCBDaGFydE5vZGU+KHRoaXMpO1xuICAgIGQzd3JhcDxDaGFydE5vZGU+KHQsIHtcbiAgICAgIG1heFdpZHRoLFxuICAgICAgbWF4TGluZXM6IGQuZGF0YS5zaG93QmFyID8gMiA6IDMsXG4gICAgICB2Y2VudHJlOiAhZC5kYXRhLnNob3dCYXIsXG4gICAgICB3b3JkczogWy4uLmQuZGF0YS5sYWJlbC5zcGxpdCgvXFxzKy8pLCBkLmRhdGEudW5pdHNdLFxuICAgICAgb3duTGluZVdvcmQ6IGQuZGF0YS51bml0cyxcbiAgICAgIG5IZWlnaHQ6IG5vZGVIZWlnaHQsXG4gICAgICBsSGVpZ2h0OiBsaW5lSGVpZ2h0XG4gICAgfSk7XG4gIH0pO1xufTtcblxuY29uc3Qgc2V0Tm9kZVNpemUgPSBzZWxlY3Rpb24gPT4gc2VsZWN0aW9uLmF0dHIoJ3dpZHRoJywgbm9kZVdpZHRoKS5hdHRyKCdoZWlnaHQnLCBub2RlSGVpZ2h0KTtcblxuY29uc3QgZm9ybWF0QmFyID0gKHNlbGVjdGlvbjogTm9kZVNlbGVjdGlvbikgPT5cbiAgc2VsZWN0aW9uXG4gICAgLmF0dHIoJ2hlaWdodCcsIGJhckhlaWdodClcbiAgICAuYXR0cigncngnLCAnMScpXG4gICAgLmF0dHIoJ3J5JywgJzEnKVxuICAgIC5hdHRyKCd5Jywgbm9kZUhlaWdodCAtIG5vZGVQYWRkaW5nIC0gYmFySGVpZ2h0KVxuICAgIC5hdHRyKCd4Jywgbm9kZVBhZGRpbmcpO1xuXG5jb25zdCBpc1R5cGVXaXRob3V0VmFsdWUgPSBub2RlRGF0dW0gPT4gW0NoYXJ0Tm9kZVR5cGUuaW5wdXQsIENoYXJ0Tm9kZVR5cGUub3BlcmF0aW9uXS5pbmNsdWRlcyhub2RlRGF0dW0uZGF0YS50eXBlKTtcblxuY29uc3QgZ2V0V2VpZ2h0ZWRWYWx1ZVRleHQgPSBub2RlRGF0dW0gPT5cbiAgYCR7dG9QcmVjaXNpb24obm9kZURhdHVtLmRhdGEud2VpZ2h0ZWRWYWx1ZSwgMyl9JHtcbiAgICBub2RlRGF0dW0ucGFyZW50Py5kYXRhLnZhbHVlID09PSBudWxsXG4gICAgICA/ICcnXG4gICAgICA6IGAgb2YgJHt0b1ByZWNpc2lvbihub2RlRGF0dW0ucGFyZW50Py5kYXRhLnZhbHVlIHx8IG5vZGVEYXR1bS5wYXJlbnQ/LmRhdGEud2VpZ2h0ZWRWYWx1ZSwgMyl9YFxuICB9ICR7bm9kZURhdHVtLnBhcmVudD8uZGF0YS52YWx1ZSA/IG5vZGVEYXR1bS5wYXJlbnQ/LmRhdGEudW5pdHMgOiBub2RlRGF0dW0ucGFyZW50Py5wYXJlbnQ/LmRhdGEudW5pdHN9YDtcblxuY29uc3QgZ2VuZXJhdGVUaXBEYXRhID0gbm9kZURhdHVtID0+ICh7XG4gIGhhc1dlaWdodGVkVmFsdWU6IG5vZGVEYXR1bS5kYXRhLndlaWdodGVkVmFsdWUsXG4gIHdlaWdodGVkVmFsdWVUZXh0OiBnZXRXZWlnaHRlZFZhbHVlVGV4dChub2RlRGF0dW0pLFxuICB2YWx1ZUtleUhyZWY6IGAke3NjaGVtYUJhc2VVcmwoKX0vSW5kaWNhdG9yI3ZhbHVlYCxcbiAgbW9kZWxEb2NzSHJlZjogbm9kZURhdHVtLmRhdGEubW9kZWxEb2NzLFxuICB2YWx1ZVZhbHVlVGV4dDogbm9kZURhdHVtLmRhdGEudmFsdWVcbiAgICA/IGAke3RvUHJlY2lzaW9uKG5vZGVEYXR1bS5kYXRhLnZhbHVlLCAzKX0gJHtub2RlRGF0dW0uZGF0YS51bml0c30gLSBgXG4gICAgOiBpc1R5cGVXaXRob3V0VmFsdWUobm9kZURhdHVtKVxuICAgICAgPyAnbm8gZGF0YSAodW5kZXIgZGV2ZWxvcG1lbnQpJ1xuICAgICAgOiAnbm8gY29udHJpYnV0aW9uJyxcbiAgaGFzVmFsdWU6IG5vZGVEYXR1bS5kYXRhLnZhbHVlLFxuICBtb2RlbEtleUhyZWY6IGAke3NjaGVtYUJhc2VVcmwoKX0vSW5kaWNhdG9yI21ldGhvZE1vZGVsYCxcbiAgbW9kZWxWYWx1ZTogbm9kZURhdHVtLmRhdGEubW9kZWxOYW1lLFxuICBtb2RlbFZhbHVlSHJlZjogYCR7YmFzZVVybCgpfS9tb2RlbC8ke25vZGVEYXR1bS5kYXRhLm1vZGVsSWR9YCxcbiAgdGVybUtleUhyZWY6IGAke3NjaGVtYUJhc2VVcmwoKX0vSW5kaWNhdG9yI3Rlcm1gLFxuICB0ZXJtVmFsdWU6IG5vZGVEYXR1bS5kYXRhLnRlcm0sXG4gIHRlcm1WYWx1ZVRleHQ6IG5vZGVEYXR1bS5kYXRhLnRlcm0sXG4gIHRlcm1WYWx1ZUhyZWY6IGAke2Jhc2VVcmwoKX0vdGVybS8ke25vZGVEYXR1bS5kYXRhLmlkfWBcbn0pO1xuXG5jb25zdCBhZGRUb29sdGlwID0gKFxuICBzZWxlY3Rpb246IE5vZGVTZWxlY3Rpb24sXG4gIHsgdG9vbHRpcE9wZXJhdG9yLCB6b25lIH06IHsgdG9vbHRpcE9wZXJhdG9yOiBOZ2JQb3BvdmVyOyB6b25lOiBOZ1pvbmUgfVxuKSA9PiB7XG4gIGxldCBob3ZlcmluZ1RpcCA9IGZhbHNlO1xuICBsZXQgaG92ZXJpbmdOb2RlID0gZmFsc2U7XG4gIGxldCBsYXN0Tm9kZUlkOiBzdHJpbmc7XG5cbiAgY29uc3QgY2xvc2VUaXAgPSAoKSA9PiB7XG4gICAgem9uZS5ydW4oKCkgPT4gdG9vbHRpcE9wZXJhdG9yLmNsb3NlKGZhbHNlKSk7XG4gICAgc2VsZWN0QWxsKCcudGlwLXRhcmdldCcpLmNsYXNzZWQoJ3RpcC10YXJnZXQnLCBmYWxzZSk7XG4gICAgbGFzdE5vZGVJZCA9IG51bGw7XG4gIH07XG5cbiAgY29uc3Qgc3RhcnRDbG9zZVRpcCA9ICgpID0+IHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghaG92ZXJpbmdUaXAgJiYgIWhvdmVyaW5nTm9kZSkge1xuICAgICAgICBjbG9zZVRpcCgpO1xuICAgICAgfVxuICAgIH0sIDEwMCk7XG4gIH07XG5cbiAgc2VsZWN0aW9uXG4gICAgLm9uKCdjbGljaycsIGNsb3NlVGlwKVxuICAgIC5vbigncG9pbnRlcmVudGVyJywgKGV2ZW50LCBub2RlRGF0dW0pID0+IHtcbiAgICAgIGhvdmVyaW5nTm9kZSA9IHRydWU7XG4gICAgICBpZiAobGFzdE5vZGVJZCA9PT0gbm9kZURhdHVtLmRhdGEuaWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2xvc2VUaXAoKTtcbiAgICAgIGxhc3ROb2RlSWQgPSBub2RlRGF0dW0uZGF0YS5pZDtcbiAgICAgIGQzU2VsZWN0KGV2ZW50LnRhcmdldCkuY2xhc3NlZCgndGlwLXRhcmdldCcsIHRydWUpO1xuICAgICAgem9uZS5ydW4oKCkgPT4gdG9vbHRpcE9wZXJhdG9yLm9wZW4oeyB0aXBEYXRhOiBnZW5lcmF0ZVRpcERhdGEobm9kZURhdHVtKSB9KSk7XG5cbiAgICAgIGQzU2VsZWN0KCcuZHJpdmVyLWNoYXJ0LXRvb2x0aXAnKVxuICAgICAgICAub24oJ3BvaW50ZXJlbnRlcicsICgpID0+IHtcbiAgICAgICAgICBob3ZlcmluZ1RpcCA9IHRydWU7XG4gICAgICAgIH0pXG4gICAgICAgIC5vbigncG9pbnRlcmxlYXZlJywgKCkgPT4ge1xuICAgICAgICAgIGhvdmVyaW5nVGlwID0gZmFsc2U7XG4gICAgICAgICAgc3RhcnRDbG9zZVRpcCgpO1xuICAgICAgICB9KTtcbiAgICB9KVxuICAgIC5vbigncG9pbnRlcmxlYXZlJywgKCkgPT4ge1xuICAgICAgaG92ZXJpbmdOb2RlID0gZmFsc2U7XG4gICAgICBzdGFydENsb3NlVGlwKCk7XG4gICAgfSk7XG5cbiAgcmV0dXJuIHNlbGVjdGlvbjtcbn07XG5cbmNvbnN0IG1lcmdlZE5vZGVzID0gKHNlbGVjdGlvbjogTm9kZVNlbGVjdGlvbiwgeyB0b29sdGlwT3BlcmF0b3IsIHpvbmUgfSkgPT4ge1xuICBzZWxlY3Rpb25cbiAgICAuc2VsZWN0QWxsPFNWR1JlY3RFbGVtZW50LCBDaGFydE5vZGU+KCcubm9kZS1ib3gnKVxuICAgIC5jbGFzc2VkKCdub2RlLW9wZW5hYmxlJywgZCA9PiAhIWQuaGVpZ2h0KVxuICAgIC5jbGFzc2VkKCdub2RlLW9wZW4nLCBkID0+IGQuX29wZW4pXG4gICAgLmNhbGwoc2V0Tm9kZVNpemUpXG4gICAgLmF0dHIoJ3N0cm9rZScsICh7IGRhdGEgfSkgPT4gbm9kZUNvbG91cnNbZGF0YS50eXBlXSlcbiAgICAuYXR0cignZmlsbCcsIGQgPT4gbm9kZUNvbG91cnNbZC5kYXRhLnR5cGVdKVxuICAgIC5zdHlsZSgndXNlci1zZWxlY3QnLCB3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCA/ICdub25lJyA6IG51bGwpO1xuXG4gIHNlbGVjdGlvbi5maWx0ZXIoZCA9PiAhZC5kYXRhLmdyb3VwICYmIGQuZGF0YS5pZCAhPT0gbm9uTENBSW5kaWNhdG9yc0lkKS5jYWxsKGFkZFRvb2x0aXAsIHsgdG9vbHRpcE9wZXJhdG9yLCB6b25lIH0pO1xuXG4gIHNlbGVjdGlvblxuICAgIC5zZWxlY3RBbGw8U1ZHVGV4dEVsZW1lbnQsIENoYXJ0Tm9kZT4oJy5ub2RlLWxhYmVsJylcbiAgICAuYXR0cigneScsIGQgPT4gKGQuZGF0YS5zaG93QmFyID8gbGluZUhlaWdodCAvIDIgKyBub2RlUGFkZGluZyAvIDIgOiAwKSlcbiAgICAuYXR0cigneCcsIG5vZGVXaWR0aCAvIDIpO1xuXG4gIGNvbnN0IGdyb3VwcyA9IHNlbGVjdGlvbi5maWx0ZXIoZCA9PiBkLmRhdGEuZ3JvdXApO1xuXG4gIGdyb3Vwc1xuICAgIC5zZWxlY3RBbGw8U1ZHVGV4dEVsZW1lbnQsIENoYXJ0Tm9kZT4oJy5ncm91cC1ib3JkZXInKVxuICAgIC5hdHRyKCd3aWR0aCcsIG5vZGVXaWR0aCArIG5vZGVQYWRkaW5nICogMilcbiAgICAuYXR0cigneCcsIC1ub2RlUGFkZGluZylcbiAgICAuYXR0cigneScsIG5vZGVIZWlnaHQgLSAobGluZUhlaWdodCArIG5vZGVQYWRkaW5nICogMikpXG4gICAgLmF0dHIoJ29wYWNpdHknLCBkID0+IChkLl9ncmV5ZWQgJiYgZC5fZ3JvdXBPcGVuID8gZ3JleWVkT3BhY2l0eSA6IGQuX2dyb3VwT3BlbiA/IDEgOiAwKSlcbiAgICAuYXR0cihcbiAgICAgICdoZWlnaHQnLFxuICAgICAgZCA9PlxuICAgICAgICBNYXRoLmFicyhkLnBhcmVudC5fZ3JvdXBDaGlsZHJlbi5sZW5ndGggLSBkLnBhcmVudC5jaGlsZHJlbi5sZW5ndGgpICogKG5vZGVIZWlnaHQgKiBub2RlU3BhY2luZ0ZhY3RvcikgK1xuICAgICAgICBub2RlUGFkZGluZyArXG4gICAgICAgIChsaW5lSGVpZ2h0ICsgbm9kZVBhZGRpbmcgKiAyKSAvIDJcbiAgICApO1xuXG4gIGNvbnN0IGdyb3VwTGFiZWxzID0gZ3JvdXBzXG4gICAgLnNlbGVjdEFsbDxTVkdUZXh0RWxlbWVudCwgQ2hhcnROb2RlPignLmdyb3VwLWxhYmVsJylcbiAgICAuYXR0cigneScsIG5vZGVIZWlnaHQgLyAyKVxuICAgIC5hdHRyKCd4Jywgbm9kZVBhZGRpbmcpXG4gICAgLnRleHQoZCA9PiBkLmRhdGEubGFiZWwpXG4gICAgLmF0dHIoJ29wYWNpdHknLCBkID0+IChkLl9ncm91cE9wZW4gPyAwIDogZC5fZ3JleWVkID8gZ3JleWVkT3BhY2l0eSA6IDEpKTtcblxuICAvLyB1bm5lZWRlZCB3aXRoIGN1cnJlbnQgZGltZW5zaW9uc1xuICAvLyBncm91cExhYmVscy5lYWNoKGZ1bmN0aW9uKCkge1xuICAvLyAgIGNvbnN0IHRleHQgPSBkM1NlbGVjdDxTVkdUZXh0RWxlbWVudCwgQ2hhcnROb2RlPih0aGlzKTtcbiAgLy8gICBjb25zdCB0ZXh0V2lkdGggPSAodGV4dC5ub2RlKCkgYXMgU1ZHVGV4dEVsZW1lbnQpLmdldENvbXB1dGVkVGV4dExlbmd0aCgpO1xuICAvLyAgIGNvbnN0IGxpbmUgPSBkM1NlbGVjdDxTVkdMaW5lRWxlbWVudCwgQ2hhcnROb2RlPih0aGlzLm5leHRTaWJsaW5nIGFzIFNWR0xpbmVFbGVtZW50KTtcbiAgLy8gICBsaW5lXG4gIC8vICAgICAuY2xhc3NlZCgnZ3JvdXAtbGluZScsIHRydWUpXG4gIC8vICAgICAuYXR0cigneDEnLCB0ZXh0V2lkdGggKyBub2RlUGFkZGluZyAqIDIpXG4gIC8vICAgICAuYXR0cigneTEnLCBub2RlSGVpZ2h0IC8gMilcbiAgLy8gICAgIC5hdHRyKCd4MicsIChub2RlV2lkdGggKiA1KSAvIDcgLSBub2RlUGFkZGluZylcbiAgLy8gICAgIC5hdHRyKCd5MicsIG5vZGVIZWlnaHQgLyAyKVxuICAvLyAgICAgLmF0dHIoJ29wYWNpdHknLCAoZCkgPT4gKGQuX2dyb3VwT3BlbiA/IDAgOiBkLl9ncmV5ZWQgPyBncmV5ZWRPcGFjaXR5IDogMSkpO1xuICAvLyB9KTtcblxuICBjb25zdCBzZXRHcm91cEJ1dHRvblhZID0gc2VsID0+XG4gICAgc2VsXG4gICAgICAuYXR0cignd2lkdGgnLCAobm9kZVdpZHRoICogMikgLyA3KVxuICAgICAgLmF0dHIoJ2hlaWdodCcsIGQgPT4gKGQuX2dyb3VwT3BlbiA/IGxpbmVIZWlnaHQgKyBub2RlUGFkZGluZyAqIDIgOiBub2RlUGFkZGluZyAqIDIgKyBsaW5lSGVpZ2h0KSlcbiAgICAgIC5hdHRyKCd4JywgZCA9PiAoZC5fZ3JvdXBPcGVuID8gKG5vZGVXaWR0aCAqIDIuNSkgLyA3IDogKG5vZGVXaWR0aCAqIDUpIC8gNyAtIG5vZGVQYWRkaW5nKSlcbiAgICAgIC5hdHRyKCd5JywgZCA9PlxuICAgICAgICBkLl9ncm91cE9wZW5cbiAgICAgICAgICA/IGdyb3VwT3ZlcmxhcCArIChncm91cE5vZGVTcGFjZSAtIChsaW5lSGVpZ2h0ICsgbm9kZVBhZGRpbmcgKiAyKSkgLyAyXG4gICAgICAgICAgOiBub2RlUGFkZGluZyArIGxpbmVIZWlnaHQgLyAyXG4gICAgICApO1xuXG4gIGdyb3Vwc1xuICAgIC5zZWxlY3RBbGw8U1ZHUmVjdEVsZW1lbnQsIENoYXJ0Tm9kZT4oJy5ncm91cC1idXR0b24nKVxuICAgIC5jYWxsKHNldEdyb3VwQnV0dG9uWFkpXG4gICAgLnN0eWxlKCdwb2ludGVyLWV2ZW50cycsIGQgPT4gKGQuX2dyZXllZCA/ICdub25lJyA6ICdhdXRvJykpXG4gICAgLnN0eWxlKCdzdHJva2Utb3BhY2l0eScsIGQgPT4gKGQuX2dyZXllZCA/IGdyZXllZE9wYWNpdHkgOiAxKSk7XG5cbiAgZ3JvdXBzXG4gICAgLnNlbGVjdEFsbDxTVkdUZXh0RWxlbWVudCwgQ2hhcnROb2RlPignLmdyb3VwLWJ1dHRvbi10ZXh0JylcbiAgICAudGV4dChkID0+IChkLl9ncm91cE9wZW4gPyAnSGlkZScgOiAnU2hvdycpKVxuICAgIC5hdHRyKCd4JywgZCA9PiAoZC5fZ3JvdXBPcGVuID8gbm9kZVdpZHRoIC8gMiA6IChub2RlV2lkdGggKiA2KSAvIDcgLSBub2RlUGFkZGluZykpXG4gICAgLmF0dHIoJ3knLCBkID0+IChkLl9ncm91cE9wZW4gPyBub2RlTWFyZ2luICsgbGluZUhlaWdodCArIGxpbmVIZWlnaHQgLyAyIDogbm9kZUhlaWdodCAvIDIpKVxuICAgIC5hdHRyKCdmb250LXNpemUnLCAoKSA9PiBgJHtmb250U2l6ZSAqIDEuM31weGApO1xuXG4gIHNlbGVjdGlvbi5zZWxlY3RBbGwoJy5zaWJsaW5nLW1hc2snKS5yZW1vdmUoKTtcblxuICBzZWxlY3Rpb25cbiAgICAuZmlsdGVyKGQgPT4gZC5fZ3JleWVkICYmICFkLmRhdGEuZ3JvdXApXG4gICAgLmFwcGVuZCgncmVjdCcpXG4gICAgLmNsYXNzZWQoJ25vZGUtb3BlbmFibGUnLCBkID0+ICEhZC5oZWlnaHQpXG4gICAgLmNsYXNzZWQoJ3NpYmxpbmctbWFzayBtYXNrLW9wZW5hYmxlJywgdHJ1ZSlcbiAgICAuY2FsbChzZXROb2RlU2l6ZSk7XG5cbiAgc2VsZWN0aW9uXG4gICAgLmZpbHRlcihkID0+IGQuX2dyZXllZCAmJiBkLmRhdGEuZ3JvdXApXG4gICAgLmFwcGVuZCgncmVjdCcpXG4gICAgLmNsYXNzZWQoJ3NpYmxpbmctbWFzaycsIHRydWUpXG4gICAgLmNhbGwoc2V0R3JvdXBCdXR0b25YWSk7XG5cbiAgcmV0dXJuIHNlbGVjdGlvbjtcbn07XG5cbmNvbnN0IGVudGVyTm9kZXMgPSAoc2VsZWN0aW9uOiBOb2RlU2VsZWN0aW9uKSA9PiB7XG4gIGNvbnN0IG5vZGVzID0gc2VsZWN0aW9uLmZpbHRlcihkID0+IGQuZGF0YS50eXBlICE9PSBDaGFydE5vZGVUeXBlLnJvb3QgJiYgIWQuZGF0YS5ncm91cCk7XG5cbiAgbm9kZXMuYXBwZW5kKCdyZWN0JykuY2xhc3NlZCgnbm9kZS1ib3gnLCB0cnVlKTtcblxuICBub2Rlc1xuICAgIC5hcHBlbmQoJ3RleHQnKVxuICAgIC5jbGFzc2VkKCdub2RlLWxhYmVsJywgdHJ1ZSlcbiAgICAudGV4dCgoeyBkYXRhIH0pID0+IGRhdGEubGFiZWwgKyAnICcgKyBkYXRhLnVuaXRzKVxuICAgIC5hdHRyKCdvcGFjaXR5JywgMCk7XG5cbiAgLy8gVGV4dCBlbGVtZW50cyBtdXN0IGJlIHJlbmRlcmVkIGJlZm9yZSB3ZSBjYW4gY2FsY3VsYXRlIHdyYXBwaW5nXG4gIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGNvbnN0IGxhYmVscyA9IG5vZGVzLnNlbGVjdEFsbDxTVkdUZXh0RWxlbWVudCwgQ2hhcnROb2RlPignLm5vZGUtbGFiZWwnKS5jYWxsKHdyYXApO1xuICAgIGxhYmVscy5hdHRyKCdvcGFjaXR5JywgMSk7XG4gIH0pO1xuXG4gIGNvbnN0IGdyb3VwcyA9IHNlbGVjdGlvbi5maWx0ZXIoZCA9PiBkLmRhdGEuZ3JvdXApO1xuXG4gIGdyb3Vwcy5hcHBlbmQoJ3JlY3QnKS5hdHRyKCdjbGFzcycsICdncm91cC1ib3JkZXInKTtcbiAgZ3JvdXBzLmFwcGVuZCgndGV4dCcpLmF0dHIoJ2NsYXNzJywgJ2dyb3VwLWxhYmVsJyk7XG4gIC8vIGdyb3Vwcy5hcHBlbmQoJ2xpbmUnKS5hdHRyKCdjbGFzcycsICdncm91cC1saW5lJyk7XG4gIGdyb3Vwcy5hcHBlbmQoJ3JlY3QnKS5hdHRyKCdjbGFzcycsICdncm91cC1idXR0b24nKTtcbiAgZ3JvdXBzLmFwcGVuZCgndGV4dCcpLmF0dHIoJ2NsYXNzJywgJ2dyb3VwLWJ1dHRvbi10ZXh0Jyk7XG5cbiAgY29uc3Qgd2l0aEJhciA9IG5vZGVzLmZpbHRlcihkID0+IGQuZGF0YS5zaG93QmFyKTtcblxuICB3aXRoQmFyXG4gICAgLmZpbHRlcihkID0+IGQuZGF0YS5mcmFjdGlvbiA+IDApXG4gICAgLmFwcGVuZCgncmVjdCcpXG4gICAgLmNsYXNzZWQoJ2Jhci1iYWNrZ3JvdW5kJywgdHJ1ZSlcbiAgICAuYXR0cignd2lkdGgnLCBub2RlQ29udGVudFdpZHRoKVxuICAgIC5jYWxsKGZvcm1hdEJhcik7XG5cbiAgd2l0aEJhclxuICAgIC5hcHBlbmQoJ3JlY3QnKVxuICAgIC5jbGFzc2VkKCdiYXItZm9yZWdyb3VuZCcsIHRydWUpXG4gICAgLmNhbGwoZm9ybWF0QmFyKVxuICAgIC5hdHRyKCd3aWR0aCcsIGQgPT4gZC5kYXRhLmZyYWN0aW9uICogbm9kZUNvbnRlbnRXaWR0aClcbiAgICAuYXR0cignZmlsbCcsIGQgPT4gbm9kZUNvbG91cnNbZC5kYXRhLnR5cGVdKTtcblxuICB3aXRoQmFyXG4gICAgLmFwcGVuZCgndGV4dCcpXG4gICAgLmNsYXNzZWQoJ2Jhci1sYWJlbCcsIHRydWUpXG4gICAgLnRleHQoKHsgZGF0YSB9KSA9PlxuICAgICAgZGF0YS5mcmFjdGlvbiA9PT0gMFxuICAgICAgICA/ICdubyBjb250cmlidXRpb24nXG4gICAgICAgIDogYCR7TWF0aC5yb3VuZCgxMDAgKiBkYXRhLmZyYWN0aW9uKX0lICR7TWF0aC5yb3VuZCgxMDAgKiBkYXRhLmZyYWN0aW9uKSA9PT0gMCA/ICcgKHJvdW5kZWQpJyA6ICcnfWBcbiAgICApXG4gICAgLmF0dHIoJ3RleHQtYW5jaG9yJywgZCA9PiAoZC5kYXRhLmZyYWN0aW9uID09PSAwID8gJ21pZGRsZScgOiBkLmRhdGEuZnJhY3Rpb24gPiAwLjcgPyAnZW5kJyA6ICdzdGFydCcpKVxuICAgIC5hdHRyKCd4JywgZCA9PlxuICAgICAgZC5kYXRhLmZyYWN0aW9uID09PSAwXG4gICAgICAgID8gbm9kZVdpZHRoIC8gMlxuICAgICAgICA6IGQuZGF0YS5mcmFjdGlvbiAqIG5vZGVDb250ZW50V2lkdGggKyBub2RlUGFkZGluZyArIChkLmRhdGEuZnJhY3Rpb24gPiAwLjcgPyAtNCA6IDQpXG4gICAgKVxuICAgIC5hdHRyKCd5Jywgbm9kZUhlaWdodCAtIG5vZGVQYWRkaW5nIC0gYmFySGVpZ2h0IC8gMik7XG5cbiAgcmV0dXJuIHNlbGVjdGlvbjtcbn07XG5cbmNvbnN0IG1lcmdlZExpbmtzID0gKHNlbGVjdGlvbjogTGlua1NlbGVjdGlvbiwgeyB0b2dnbGluZ0dyb3VwLCBzd2l0Y2hpbmdTZWxlY3Rpb24gfSkgPT5cbiAgc2VsZWN0aW9uXG4gICAgLnN0eWxlKCdzdHJva2UnLCBkID0+IHtcbiAgICAgIGNvbnN0IGNvbG91cnMgPSB7XG4gICAgICAgIFtDaGFydE5vZGVUeXBlLm1pZHBvaW50XTogbm9kZUNvbG91cnNbQ2hhcnROb2RlVHlwZS5taWRwb2ludF0sXG4gICAgICAgIFtDaGFydE5vZGVUeXBlLmVuZHBvaW50XTogbm9kZUNvbG91cnNbQ2hhcnROb2RlVHlwZS5lbmRwb2ludF0sXG4gICAgICAgIFtDaGFydE5vZGVUeXBlLmVtaXNzaW9uXTogbm9kZUNvbG91cnNbQ2hhcnROb2RlVHlwZS5lbWlzc2lvbl1cbiAgICAgIH07XG4gICAgICByZXR1cm4gKGQudGFyZ2V0Ll9vcGVuICYmIGNvbG91cnNbZC5zb3VyY2UuZGF0YS50eXBlXSkgfHwgbnVsbDtcbiAgICB9KVxuICAgIC5hdHRyKCdzdHJva2UtZGFzaGFycmF5JywgZCA9PiAoZC50YXJnZXQuZGF0YS5ncm91cCA/ICcyLDUnIDogbnVsbCkpXG4gICAgLmF0dHIoJ3N0cm9rZS13aWR0aCcsIGQgPT4gKGQudGFyZ2V0Ll9vcGVuID8gMyA6IGQudGFyZ2V0Ll9ncm91cE9wZW4gPyAwIDogMikpXG4gICAgLmF0dHIoJ3N0cm9rZS1vcGFjaXR5JywgZCA9PiAoZC50YXJnZXQuX2dyZXllZCA/IDAuMSA6IDAuNikpXG4gICAgLnRyYW5zaXRpb24oKVxuICAgIC5kdXJhdGlvbihsaW5rRHVyYXRpb24pXG4gICAgLmRlbGF5KGQgPT4ge1xuICAgICAgY29uc3QgZ3JvdXBDbG9zaW5nID0gdG9nZ2xpbmdHcm91cCAmJiAhZC50YXJnZXQucGFyZW50Py5jaGlsZHJlbj8uZmluZChuID0+IG4uZGF0YS5ncm91cCk/Ll9ncm91cE9wZW47XG4gICAgICByZXR1cm4gZ3JvdXBDbG9zaW5nXG4gICAgICAgID8gZ3JvdXBEZWxheVxuICAgICAgICA6IChzd2l0Y2hpbmdTZWxlY3Rpb24gPyBub2RlRHVyYXRpb24gOiAwKSArIGQuc291cmNlLmNoaWxkcmVuPy5pbmRleE9mKGQudGFyZ2V0KSAqIDEwO1xuICAgIH0pXG4gICAgLmF0dHIoJ29wYWNpdHknLCAxKVxuICAgIC5hdHRyKCdkJywgZCA9PiB7XG4gICAgICBjb25zdCB0YXJnZXREeSA9IGQudGFyZ2V0Ll9ncm91cE9wZW4gPyBub2RlUGFkZGluZyArIGxpbmVIZWlnaHQgLyAyICsgbm9kZU1hcmdpbiAqIDIgOiBub2RlSGVpZ2h0IC8gMjtcbiAgICAgIHJldHVybiBkM0xpbmtIb3Jpem9udGFsKCkoe1xuICAgICAgICBzb3VyY2U6IFtkLnNvdXJjZS55ICsgbm9kZVdpZHRoLCBkLnNvdXJjZS54ICsgbm9kZUhlaWdodCAvIDJdLFxuICAgICAgICB0YXJnZXQ6IFtkLnRhcmdldC55LCBkLnRhcmdldC54ICsgdGFyZ2V0RHldXG4gICAgICB9KTtcbiAgICB9KTtcblxuY29uc3QgZ3JvdXBCeVBlcmNlbnRhZ2UgPSBub2RlID0+XG4gIFtDaGFydE5vZGVUeXBlLmVuZHBvaW50LCBDaGFydE5vZGVUeXBlLm1pZHBvaW50LCBDaGFydE5vZGVUeXBlLmVtaXNzaW9uXS5pbmNsdWRlcyhub2RlLmRhdGEudHlwZSk7XG5cbmNvbnN0IGdyb3VwUGVyY2VudGFnZSA9IChub2RlLCBwZXJjZW50YWdlID0gMC4wMikgPT4ge1xuICBjb25zdCBncm91cGVkID0gbm9kZS5fY2hpbGRyZW4/LmZpbHRlcihjaGlsZCA9PiBjaGlsZC5kYXRhLmZyYWN0aW9uIDwgcGVyY2VudGFnZSk7XG4gIGlmIChub2RlLl9jaGlsZHJlbj8ubGVuZ3RoID4gNiAmJiBncm91cGVkPy5sZW5ndGggPiAxKSB7XG4gICAgY29uc3QgdHlwZSA9IG5vZGUuX2NoaWxkcmVuWzBdLmRhdGEudHlwZTtcbiAgICBjb25zdCBncm91cE5vZGUgPSB7XG4gICAgICAuLi5kM0hpZXJhcmNoeSh7XG4gICAgICAgIGlkOiBgJHt0eXBlfS1ncm91cGAsXG4gICAgICAgIGxhYmVsOiBgJHtncm91cGVkLmxlbmd0aH0gbW9yZSB1bmRlciAke01hdGgucm91bmQocGVyY2VudGFnZSAqIDEwMCl9JS5gLFxuICAgICAgICB3ZWlnaHRlZFZhbHVlOiBudWxsLFxuICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgZ3JvdXA6IHRydWVcbiAgICAgIH0pLFxuICAgICAgZGVwdGg6IG5vZGUuZGVwdGggKyAxLFxuICAgICAgaGVpZ2h0OiAxLFxuICAgICAgcGFyZW50OiBub2RlXG4gICAgfTtcbiAgICBjb25zdCBub3RHcm91cGVkID0gbm9kZS5fY2hpbGRyZW4/LmZpbHRlcihjaGlsZCA9PiBjaGlsZC5kYXRhLmZyYWN0aW9uID49IHBlcmNlbnRhZ2UpO1xuICAgIG5vZGUuX2NoaWxkcmVuLnNwbGljZShub3RHcm91cGVkLmxlbmd0aCwgMCwgZ3JvdXBOb2RlKTtcbiAgICBub3RHcm91cGVkLnB1c2goZ3JvdXBOb2RlKTtcbiAgICBub2RlLl9ncm91cENoaWxkcmVuID0gbm9kZS5fY2hpbGRyZW47XG4gICAgbm9kZS5fY2hpbGRyZW4gPSBub3RHcm91cGVkO1xuICB9XG59O1xuXG5jb25zdCBzaG93QmFyID0gbm9kZSA9PlxuICBbXG4gICAgbm9kZS5wYXJlbnQ/LmRhdGEudHlwZSAhPT0gQ2hhcnROb2RlVHlwZS5yb290LFxuICAgIG5vZGUucGFyZW50Py5kYXRhLmlkICE9PSBub25MQ0FJbmRpY2F0b3JzSWQsXG4gICAgIW5vZGUuZGF0YS5ncm91cCxcbiAgICBub2RlLmRhdGEuZnJhY3Rpb24gPj0gMFxuICBdLmV2ZXJ5KEJvb2xlYW4pO1xuXG5jb25zdCBnZXRVbml0c0FuZExhYmVsID0gKHRlcm06IFBhcnRpYWw8SVRlcm1KU09OTEQgfCBUZXJtPiwgZmFsbGJhY2tMYWJlbCA9ICd1bmtub3duIHRlcm0nKSA9PiB7XG4gIGNvbnN0IGxhYmVsID0gdGVybT8ubmFtZSB8fCB0ZXJtPy5bJ0BpZCddIHx8IGZhbGxiYWNrTGFiZWw7XG4gIGNvbnN0IHVuaXRzID0gYCgke3Rlcm0/LnVuaXRzIHx8ICd1bmtub3duIHVuaXRzJ30pYDtcbiAgcmV0dXJuIHsgbGFiZWw6IGxhYmVsLnJlcGxhY2UodW5pdHMsICcnKS50cmltKCksIHRlcm06IGxhYmVsLCB1bml0cyB9O1xufTtcblxuY29uc3QgcXVlcnkgPSBzaG91bGQgPT4gKHtcbiAgZmllbGRzOiBbJ0B0eXBlJywgJ0BpZCcsICduYW1lJywgJ3VuaXRzJywgJ3Rlcm1UeXBlJ10sXG4gIGxpbWl0OiAxMDAwMCxcbiAgcXVlcnk6IHtcbiAgICBib29sOiB7XG4gICAgICBtdXN0OiBbbWF0Y2hUeXBlKE5vZGVUeXBlLlRlcm0pXSxcbiAgICAgIHNob3VsZCxcbiAgICAgIG1pbmltdW1fc2hvdWxkX21hdGNoOiAxXG4gICAgfVxuICB9XG59KTtcblxudHlwZSB0ZXJtID0gSVRlcm1KU09OTEQgJiBJU2VhcmNoUmVzdWx0RXh0ZW5kZWQgJiB7IGRvY3M/OiBzdHJpbmcgfTtcblxuY29uc3QgbGVnZW5kID0gW1xuICB7IHR5cGU6IENoYXJ0Tm9kZVR5cGUuZW5kcG9pbnQsIG1vYmlsZVRleHQ6ICdFbmRwb2ludCcsIHRleHQ6ICdFbmRwb2ludCBJbmRpY2F0b3InIH0sXG4gIHsgdHlwZTogQ2hhcnROb2RlVHlwZS5taWRwb2ludCwgdGV4dDogJ0NoYXJhY3RlcmlzZWQgSW5kaWNhdG9yJywgbW9iaWxlVGV4dDogJ0ltcGFjdCcgfSxcbiAgeyB0eXBlOiBDaGFydE5vZGVUeXBlLmVtaXNzaW9uLCBtb2JpbGVUZXh0OiAnRW1pc3Npb24nLCB0ZXh0OiAnRW1pc3Npb24gb3IgUmVzb3VyY2UgVXNlJyB9LFxuICB7IHR5cGU6IENoYXJ0Tm9kZVR5cGUuaW5wdXQsIHRleHQ6ICdJbnB1dCcsIG1vYmlsZVRleHQ6ICdJbnB1dCcgfSxcbiAgeyB0eXBlOiBDaGFydE5vZGVUeXBlLm9wZXJhdGlvbiwgdGV4dDogJ09wZXJhdGlvbicsIG1vYmlsZVRleHQ6ICdPcGVyYXRpb24nIH1cbl07XG5cbmNvbnN0IHdhcm5pbmdzID0gKGxvZ3M6IElMb2dbXSwgdGVybXM6IHsgW2lkOiBzdHJpbmddOiB0ZXJtIH0pID0+XG4gIFshbG9ncy5ldmVyeShsb2cgPT4gdGVybXNbbG9nLmluZGljYXRvcl0gJiYgdGVybXNbbG9nLmNvbnRyaWJ1dG9yXSkgJiYgJ21pc3NpbmctdGVybXMnXS5maWx0ZXIoQm9vbGVhbik7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWltcGFjdC1hc3Nlc3NtZW50cy1ncmFwaCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbXBhY3QtYXNzZXNzbWVudHMtZ3JhcGguY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbXBhY3QtYXNzZXNzbWVudHMtZ3JhcGguY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0ZhSWNvbkNvbXBvbmVudCwgRm9ybXNNb2R1bGUsIE5nYlBvcG92ZXJdXG59KVxuZXhwb3J0IGNsYXNzIEltcGFjdEFzc2Vzc21lbnRzR3JhcGhDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBpbml0aWFsVGVybXM6IHsgW2lkOiBzdHJpbmddOiB0ZXJtIH07XG4gIHByaXZhdGUgYWxsVGVybXM6IHsgW2lkOiBzdHJpbmddOiB0ZXJtIH07XG5cbiAgcHJpdmF0ZSByb290PzogSE5vZGU7XG4gIHByaXZhdGUgbm9kZTogTm9kZVNlbGVjdGlvbjtcbiAgcHJpdmF0ZSBsaW5rOiBMaW5rU2VsZWN0aW9uO1xuICBwcml2YXRlIHN2ZzogU2VsZWN0aW9uPFNWR1NWR0VsZW1lbnQsIGFueSwgSFRNTEVsZW1lbnQsIHVua25vd24+O1xuICBwcml2YXRlIHlNaW46IG51bWJlcjtcbiAgcHJpdmF0ZSB5VG90YWw6IG51bWJlcjtcbiAgcHJpdmF0ZSBsb2dzQWxsTW9kZWxzOiBJTG9nW107XG5cbiAgcHJpdmF0ZSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlID0gaW5qZWN0KEhlU2VhcmNoU2VydmljZSk7XG4gIHByaXZhdGUgbm9kZVNlcnZpY2UgPSBpbmplY3QoSGVOb2RlU2VydmljZSk7XG4gIHByaXZhdGUgZW5naW5lU2VydmljZSA9IGluamVjdChIZUVuZ2luZVNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmYVNwaW5uZXIgPSBmYVNwaW5uZXI7XG4gIHByb3RlY3RlZCByZWFkb25seSBmYUV4Y2xhbWF0aW9uVHJpYW5nbGUgPSBmYUV4Y2xhbWF0aW9uVHJpYW5nbGU7XG4gIHByb3RlY3RlZCByZWFkb25seSBmYUV4dGVybmFsTGlua0FsdCA9IGZhRXh0ZXJuYWxMaW5rQWx0O1xuXG4gIEBWaWV3Q2hpbGQoJ2NoYXJ0JylcbiAgcHJpdmF0ZSBjaGFydFJlZj86IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgndCcpXG4gIHByaXZhdGUgdG9vbHRpcE9wZXJhdG9yPzogTmdiUG9wb3ZlcjtcblxuICBASW5wdXQoKVxuICBwcml2YXRlIGltcGFjdEFzc2Vzc21lbnRzOiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRFtdID0gW107XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgZGF0YVN0YXRlID0gRGF0YVN0YXRlLnJlY2FsY3VsYXRlZDtcblxuICBwdWJsaWMgbG9hZGluZyA9IHRydWU7XG4gIHB1YmxpYyBub2RlQ29sb3VycyA9IG5vZGVDb2xvdXJzO1xuICBwdWJsaWMgbm9EYXRhID0gZmFsc2U7XG4gIHB1YmxpYyBlcnJvcj86IGFueTtcbiAgcHVibGljIHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgc2hvd1dhcm5pbmdzID0gZmFsc2U7XG4gIHB1YmxpYyBzZWxlY3RlZEltcGFjdEFzc2Vzc21lbnRJZDogc3RyaW5nO1xuICBwdWJsaWMgZmlsdGVyZWRJbXBhY3RBc3Nlc3NtZW50czogSUltcGFjdEFzc2Vzc21lbnRKU09OTERbXTtcbiAgcHVibGljIHNlbGVjdGVkTW9kZWxJZDogc3RyaW5nO1xuICBwdWJsaWMgbW9kZWxzOiBQYXJ0aWFsPElUZXJtSlNPTkxEPltdO1xuICBwdWJsaWMgbGVnZW5kID0gbGVnZW5kO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHJldHVybiB0aGlzLmluaXRJbXBhY3RBc3Nlc3NtZW50cygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVsb2FkQ2hhcnQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoJ2ltcGFjdEFzc2Vzc21lbnRzJyBpbiBjaGFuZ2VzKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEltcGFjdEFzc2Vzc21lbnRJZCA9IHRoaXMuc2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50SWQ7XG4gICAgICB0aGlzLmluaXRJbXBhY3RBc3Nlc3NtZW50cygpO1xuICAgICAgLy8gb25seSByZWxvYWQgdGhlIGNoYXJ0IGlmIHRoZSBzZWxlY3QgSUEgaGFzIGNoYW5nZWRcbiAgICAgIHNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudElkICE9PSB0aGlzLnNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudElkICYmIHRoaXMucmVsb2FkQ2hhcnQoKTtcbiAgICB9XG4gICAgaWYgKCdkYXRhU3RhdGUnIGluIGNoYW5nZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbG9hZENoYXJ0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0SW1wYWN0QXNzZXNzbWVudHMoKSB7XG4gICAgdGhpcy5maWx0ZXJlZEltcGFjdEFzc2Vzc21lbnRzID0gdGhpcy5pbXBhY3RBc3Nlc3NtZW50cy5maWx0ZXIoaWEgPT4gaWEuZW5kcG9pbnRzPy5sZW5ndGggfHwgaWEuaW1wYWN0cz8ubGVuZ3RoKTtcbiAgICB0aGlzLnNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudElkID0gdGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnRJZCB8fCB0aGlzLmZpbHRlcmVkSW1wYWN0QXNzZXNzbWVudHM/LlswXT8uWydAaWQnXTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZEluaXRpYWxUZXJtcygpIHtcbiAgICBjb25zdCB7IHJlc3VsdHM6IHRlcm1zIH0gPSBhd2FpdCB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoPElUZXJtSlNPTkxELCBOb2RlVHlwZS5UZXJtPihcbiAgICAgIHF1ZXJ5KGZpbHRlclRlcm1UeXBlcy5tYXAodGVybVR5cGUgPT4gbWF0Y2hUZXJtVHlwZSh0ZXJtVHlwZSkpKVxuICAgICk7XG4gICAgY29uc3QgYXVnbWVudGVkVGVybXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHRlcm1zLm1hcChhc3luYyAodDogdGVybSkgPT4ge1xuICAgICAgICBpZiAodC50ZXJtVHlwZSA9PT0gJ21vZGVsJykge1xuICAgICAgICAgIGNvbnN0IG1vZGVsID0gYXdhaXQgdGhpcy5lbmdpbmVTZXJ2aWNlLm1vZGVsKHsgbW9kZWw6IHRbJ0BpZCddIH0pO1xuICAgICAgICAgIHQuZG9jcyA9IG1vZGVsPy5hcGlEb2NzUGF0aCB8fCBtb2RlbD8uZG9jUGF0aCB8fCBtb2RlbD8ucGF0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmluaXRpYWxUZXJtcyA9IE9iamVjdC5mcm9tRW50cmllcyhhdWdtZW50ZWRUZXJtcy5tYXAodGVybSA9PiBbdGVybVsnQGlkJ10sIHRlcm1dKSk7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbFRlcm1zO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkTG9nVGVybXMobG9nczogSUxvZ1tdKSB7XG4gICAgY29uc3QgaW5wdXRJZHMgPSB1bmlxdWUoXG4gICAgICBsb2dzLmZsYXRNYXAobCA9PiBbbC5jb250cmlidXRvciwgbC5pbmRpY2F0b3JdKS5maWx0ZXIodGVybUlkID0+ICF0aGlzLmluaXRpYWxUZXJtc1t0ZXJtSWRdKVxuICAgICk7XG4gICAgY29uc3QgeyByZXN1bHRzOiBpbnB1dHMgfSA9IGF3YWl0IHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2g8SVRlcm1KU09OTEQsIE5vZGVUeXBlLlRlcm0+KFxuICAgICAgcXVlcnkoaW5wdXRJZHMubWFwKGlkID0+IG1hdGNoRXhhY3RRdWVyeSgnQGlkJywgaWQpKSlcbiAgICApO1xuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoaW5wdXRzLm1hcCh0ZXJtID0+IFt0ZXJtWydAaWQnXSwgdGVybV0pKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNSZWNhbGN1bGF0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVN0YXRlID09PSBEYXRhU3RhdGUucmVjYWxjdWxhdGVkO1xuICB9XG5cbiAgcHVibGljIHJlbG9hZENoYXJ0KCkge1xuICAgIGlmICghdGhpcy5pc1JlY2FsY3VsYXRlZCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW1wYWN0QXNzZXNzbWVudCA9XG4gICAgICB0aGlzLmZpbHRlcmVkSW1wYWN0QXNzZXNzbWVudHMuZmluZChpYSA9PiBpYVsnQGlkJ10gPT09IHRoaXMuc2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50SWQpIHx8XG4gICAgICB0aGlzLmZpbHRlcmVkSW1wYWN0QXNzZXNzbWVudHNbMF07XG4gICAgY29uc3QgaW5kaWNhdG9ycyA9IFsuLi4oaW1wYWN0QXNzZXNzbWVudD8uZW5kcG9pbnRzIHx8IFtdKSwgLi4uKGltcGFjdEFzc2Vzc21lbnQ/LmltcGFjdHMgfHwgW10pXTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gb2YoaW1wYWN0QXNzZXNzbWVudClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4gKHRoaXMubG9hZGluZyA9IHRydWUpKSxcbiAgICAgICAgbWVyZ2VNYXAobm9kZSA9PiAodGhpcy5pbml0aWFsVGVybXMgPyBvZihub2RlKSA6IGZyb20odGhpcy5sb2FkSW5pdGlhbFRlcm1zKCkpLnBpcGUobWFwKCgpID0+IG5vZGUpKSkpLFxuICAgICAgICBtZXJnZU1hcChub2RlID0+XG4gICAgICAgICAgdGhpcy5ub2RlU2VydmljZS5nZXRMb2coe1xuICAgICAgICAgICAgLi4ubm9kZSxcbiAgICAgICAgICAgIGRhdGFTdGF0ZTogRGF0YVN0YXRlLnJlY2FsY3VsYXRlZFxuICAgICAgICAgIH0pXG4gICAgICAgICksXG4gICAgICAgIG1hcCh2YWx1ZSA9PiAodmFsdWUgPyBwYXJzZUxpbmVzKHZhbHVlKSA6IFtdKSksXG4gICAgICAgIG1lcmdlQWxsKCksXG4gICAgICAgIGZpbHRlcigoeyBkYXRhIH0pID0+IGRhdGEubG9nZ2VyID09PSAnaGVzdGlhX2VhcnRoLm1vZGVscycgJiYgZGF0YS5sZXZlbCA9PT0gTGV2ZWwuZGVidWcpLFxuICAgICAgICBmaWx0ZXIoKHsgZGF0YTogeyBtZXNzYWdlIH0gfSkgPT4gISFtZXNzYWdlKSxcbiAgICAgICAgbWFwKCh7IGRhdGE6IHsgbWVzc2FnZSB9IH0pID0+IHBhcnNlTWVzc2FnZShtZXNzYWdlKSksXG4gICAgICAgIGZpbHRlcihtZXNzYWdlID0+ICdub2RlJyBpbiBtZXNzYWdlKSxcbiAgICAgICAgbWFwKHBhcnNlTG9nKSxcbiAgICAgICAgZmlsdGVyKGxvZyA9PlxuICAgICAgICAgIFtcbiAgICAgICAgICAgICEhbG9nLmluZGljYXRvcixcbiAgICAgICAgICAgICEhbG9nLmNvbnRyaWJ1dG9yLFxuICAgICAgICAgICAgIWlzTmFOKGxvZy53ZWlnaHRlZFZhbHVlKSxcbiAgICAgICAgICAgIGxvZy5jb2VmZmljaWVudCA+IDAsXG4gICAgICAgICAgICBpbmRpY2F0b3JzLnNvbWUoZXJ1ID0+IGVydS50ZXJtWydAaWQnXSA9PT0gbG9nLmluZGljYXRvcilcbiAgICAgICAgICBdLmV2ZXJ5KEJvb2xlYW4pXG4gICAgICAgICksXG4gICAgICAgIGdyb3VwQnkobG9nID0+IFtsb2cuaW5kaWNhdG9yLCBsb2cuY29udHJpYnV0b3IsIGxvZy5tb2RlbElkXS5qb2luKCcvJykpLFxuICAgICAgICBtZXJnZU1hcChncm91cCA9PiBncm91cC5waXBlKHRvQXJyYXkoKSkpLFxuICAgICAgICBtYXAoKHZhbHVlczogSUxvZ1tdKSA9PiB7XG4gICAgICAgICAgY29uc3QgbG9nID0gdmFsdWVzWzBdO1xuICAgICAgICAgIGNvbnN0IHsgd2VpZ2h0ZWRUb3RhbCwgdG90YWwgfSA9IHZhbHVlcy5yZWR1Y2UoXG4gICAgICAgICAgICAocHJldiwgY3VycikgPT4gKHtcbiAgICAgICAgICAgICAgd2VpZ2h0ZWRUb3RhbDogcHJldi53ZWlnaHRlZFRvdGFsICsgY3Vyci53ZWlnaHRlZFZhbHVlLFxuICAgICAgICAgICAgICB0b3RhbDogcHJldi50b3RhbCArIGN1cnIudmFsdWVcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgeyB3ZWlnaHRlZFRvdGFsOiAwLCB0b3RhbDogMCB9XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IGlucHV0c09iaiA9IChpbXBhY3RBc3Nlc3NtZW50LmVtaXNzaW9uc1Jlc291cmNlVXNlIHx8IFtdKVxuICAgICAgICAgICAgLmZpbHRlcihlcnUgPT4gZXJ1LnRlcm1bJ0BpZCddID09PSBsb2cuY29udHJpYnV0b3IgJiYgZXJ1LmlucHV0cz8ubGVuZ3RoKVxuICAgICAgICAgICAgLnJlZHVjZSgoYWNjLCBlcnUpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaW5wdXRJZCA9IGVydS5pbnB1dHMubWFwKGkgPT4gaVsnQGlkJ10pLmpvaW4oJzsnKTtcbiAgICAgICAgICAgICAgY29uc3QgY3VycmVudE9wZXJhdGlvbnMgPSBlcnUub3BlcmF0aW9uXG4gICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZDogZXJ1Lm9wZXJhdGlvblsnQGlkJ10sXG4gICAgICAgICAgICAgICAgICAgICAgLi4uZ2V0VW5pdHNBbmRMYWJlbChlcnUub3BlcmF0aW9uKSxcbiAgICAgICAgICAgICAgICAgICAgICBtb2RlbElkOiBsb2cubW9kZWxJZCxcbiAgICAgICAgICAgICAgICAgICAgICB3ZWlnaHRlZFZhbHVlOiBlcnUudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIDogW107XG5cbiAgICAgICAgICAgICAgYWNjW2lucHV0SWRdID0gYWNjW2lucHV0SWRdXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmFjY1tpbnB1dElkXSxcbiAgICAgICAgICAgICAgICAgICAgd2VpZ2h0ZWRWYWx1ZTogYWNjW2lucHV0SWRdLndlaWdodGVkVmFsdWUgKyBlcnUudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsSWQ6IGxvZy5tb2RlbElkLFxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zOiBbLi4uYWNjW2lucHV0SWRdLm9wZXJhdGlvbnMsIC4uLmN1cnJlbnRPcGVyYXRpb25zXVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICBpZDogaW5wdXRJZCxcbiAgICAgICAgICAgICAgICAgICAgLi4uZ2V0VW5pdHNBbmRMYWJlbChcbiAgICAgICAgICAgICAgICAgICAgICBlcnUuaW5wdXRzLmxlbmd0aCA9PT0gMSA/IGVydS5pbnB1dHNbMF0gOiB7IG5hbWU6ICdJbnB1dCBncm91cCAodW5kZXIgZGV2ZWxvcG1lbnQpJyB9XG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsSWQ6IGxvZy5tb2RlbElkLFxuICAgICAgICAgICAgICAgICAgICB3ZWlnaHRlZFZhbHVlOiBlcnUudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnM6IFsuLi5jdXJyZW50T3BlcmF0aW9uc11cbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCB7fSk7XG4gICAgICAgICAgY29uc3QgaW5wdXRzOiBJSW5wdXRMb2dbXSA9IE9iamVjdC52YWx1ZXMoaW5wdXRzT2JqKTtcbiAgICAgICAgICByZXR1cm4geyAuLi5sb2csIHdlaWdodGVkVmFsdWU6IHdlaWdodGVkVG90YWwsIHZhbHVlOiB0b3RhbCwgaW5wdXRzIH0gYXMgSUxvZztcbiAgICAgICAgfSksXG4gICAgICAgIHRvQXJyYXkoKSxcbiAgICAgICAgbWVyZ2VNYXAobG9ncyA9PlxuICAgICAgICAgIGZyb20odGhpcy5sb2FkTG9nVGVybXMobG9ncykpLnBpcGUoXG4gICAgICAgICAgICBtYXAobG9nVGVybXMgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmFsbFRlcm1zID0geyAuLi50aGlzLmluaXRpYWxUZXJtcywgLi4ubG9nVGVybXMgfTtcbiAgICAgICAgICAgICAgcmV0dXJuIGxvZ3M7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICB0aGlzLmVycm9yID0gZXJyO1xuICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKCkgPT4gKHRoaXMubG9hZGluZyA9IGZhbHNlKSksXG4gICAgICAgIHRhcChsb2dzID0+ICh0aGlzLm5vRGF0YSA9ICFsb2dzLmxlbmd0aCkpLFxuICAgICAgICB0YXAoKGxvZ3M6IElMb2dbXSkgPT4ge1xuICAgICAgICAgIHRoaXMud2FybmluZ3MgPSB3YXJuaW5ncyhsb2dzLCB0aGlzLmFsbFRlcm1zKTtcbiAgICAgICAgICB0aGlzLnNob3dXYXJuaW5ncyA9IHRoaXMud2FybmluZ3MubGVuZ3RoID4gMDtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGxvZ3M6IElMb2dbXSkgPT4ge1xuICAgICAgICB0aGlzLnJvb3QgPSBudWxsO1xuICAgICAgICB0aGlzLm5vZGUgPSBudWxsO1xuICAgICAgICB0aGlzLmxpbmsgPSBudWxsO1xuICAgICAgICBjb25zdCBoYXNEZWZhdWx0TW9kZWxMb2dzID0gbG9ncy5zb21lKGxvZyA9PiBsb2cubW9kZWxJZCA9PT0gZ2V0RGVmYXVsdE1vZGVsSWQobG9nLmluZGljYXRvcikpO1xuICAgICAgICB0aGlzLm1vZGVscyA9IFtcbiAgICAgICAgICAuLi4oaGFzRGVmYXVsdE1vZGVsTG9ncyA/IFt7ICdAaWQnOiBkZWZhdWx0SW5kaWNhdG9yc01vZGVsSWQsIG5hbWU6IGRlZmF1bHRJbmRpY2F0b3JzTW9kZWxOYW1lIH1dIDogW10pLFxuICAgICAgICAgIC4uLnVuaXF1ZShsb2dzLm1hcCgoeyBtb2RlbElkIH0pID0+IHRoaXMuYWxsVGVybXNbbW9kZWxJZF0gfHwgeyAnQGlkJzogbW9kZWxJZCB9KSlcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1vZGVsSWQgPSB0aGlzLm1vZGVscz8uWzBdPy5bJ0BpZCddO1xuICAgICAgICBpZiAobG9ncy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmxvZ3NBbGxNb2RlbHMgPSBsb2dzO1xuICAgICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5pdENoYXJ0KCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGluaXRDaGFydCgpIHtcbiAgICBjb25zdCBsb2dzID0gdGhpcy5sb2dzQWxsTW9kZWxzLmZpbHRlcihcbiAgICAgIGxvZyA9PlxuICAgICAgICBsb2cubW9kZWxJZCA9PT1cbiAgICAgICAgKHRoaXMuc2VsZWN0ZWRNb2RlbElkID09PSBkZWZhdWx0SW5kaWNhdG9yc01vZGVsSWQgPyBnZXREZWZhdWx0TW9kZWxJZChsb2cuaW5kaWNhdG9yKSA6IHRoaXMuc2VsZWN0ZWRNb2RlbElkKVxuICAgICk7XG4gICAgY29uc3QgdG90YWxzUGVySW5kaWNhdG9yID0gbG9ncy5yZWR1Y2UoKGFjYywgbG9nKSA9PiB7XG4gICAgICBhY2NbbG9nLmluZGljYXRvcl0gPSAoYWNjW2xvZy5pbmRpY2F0b3JdIHx8IDApICsgbG9nLndlaWdodGVkVmFsdWU7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcbiAgICBjb25zdCBpbmRpY2F0b3JzOiB7IFtpZDogc3RyaW5nXTogTm9kZURhdHVtIH0gPSBsb2dzLnJlZHVjZSgoYWNjLCBsb2cpID0+IHtcbiAgICAgIGNvbnN0IHR5cGVNYXBwaW5nID0ge1xuICAgICAgICBbVGVybVRlcm1UeXBlLmVuZHBvaW50SW5kaWNhdG9yXTogQ2hhcnROb2RlVHlwZS5lbmRwb2ludCxcbiAgICAgICAgW1Rlcm1UZXJtVHlwZS5jaGFyYWN0ZXJpc2VkSW5kaWNhdG9yXTogQ2hhcnROb2RlVHlwZS5taWRwb2ludCxcbiAgICAgICAgW1Rlcm1UZXJtVHlwZS5lbWlzc2lvbl06IENoYXJ0Tm9kZVR5cGUuZW1pc3Npb24sXG4gICAgICAgIFtUZXJtVGVybVR5cGUucmVzb3VyY2VVc2VdOiBDaGFydE5vZGVUeXBlLmVtaXNzaW9uLFxuICAgICAgICBbVGVybVRlcm1UeXBlLm9wZXJhdGlvbl06IENoYXJ0Tm9kZVR5cGUub3BlcmF0aW9uXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjb250cmlidXRvclR5cGUgPSB0eXBlTWFwcGluZ1t0aGlzLmFsbFRlcm1zW2xvZy5jb250cmlidXRvcl0/LnRlcm1UeXBlXSB8fCBDaGFydE5vZGVUeXBlLmlucHV0O1xuICAgICAgY29uc3QgaW5kaWNhdG9yVHlwZSA9IHR5cGVNYXBwaW5nW3RoaXMuYWxsVGVybXNbbG9nLmluZGljYXRvcl0/LnRlcm1UeXBlXTtcbiAgICAgIGNvbnN0IGNvbnRyaWJ1dG9yTm9kZSA9IHtcbiAgICAgICAgaWQ6IGxvZy5jb250cmlidXRvcixcbiAgICAgICAgLi4uZ2V0VW5pdHNBbmRMYWJlbCh0aGlzLmFsbFRlcm1zW2xvZy5jb250cmlidXRvcl0sIGxvZy5jb250cmlidXRvciksXG4gICAgICAgIHR5cGU6IGNvbnRyaWJ1dG9yVHlwZSxcbiAgICAgICAgdmFsdWU6IGxvZy52YWx1ZSxcbiAgICAgICAgd2VpZ2h0ZWRWYWx1ZTogbG9nLndlaWdodGVkVmFsdWUsXG4gICAgICAgIG1vZGVsSWQ6IGxvZy5tb2RlbElkLFxuICAgICAgICBmcmFjdGlvbjogbG9nLndlaWdodGVkVmFsdWUgLyB0b3RhbHNQZXJJbmRpY2F0b3JbbG9nLmluZGljYXRvcl0sXG4gICAgICAgIGNoaWxkcmVuOlxuICAgICAgICAgIGNvbnRyaWJ1dG9yVHlwZSA9PT0gQ2hhcnROb2RlVHlwZS5lbWlzc2lvblxuICAgICAgICAgICAgPyBsb2cuaW5wdXRzLm1hcChpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uaSxcbiAgICAgICAgICAgICAgICB0eXBlOiBDaGFydE5vZGVUeXBlLmlucHV0LFxuICAgICAgICAgICAgICAgIGZyYWN0aW9uOiBpLndlaWdodGVkVmFsdWUgLyBsb2cudmFsdWUsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IGkub3BlcmF0aW9ucy5tYXAobyA9PiAoe1xuICAgICAgICAgICAgICAgICAgLi4ubyxcbiAgICAgICAgICAgICAgICAgIHR5cGU6IENoYXJ0Tm9kZVR5cGUub3BlcmF0aW9uLFxuICAgICAgICAgICAgICAgICAgZnJhY3Rpb246IG8ud2VpZ2h0ZWRWYWx1ZSAvIGkud2VpZ2h0ZWRWYWx1ZVxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgIDogW11cbiAgICAgIH07XG5cbiAgICAgIGFjY1tsb2cuaW5kaWNhdG9yXVxuICAgICAgICA/IGFjY1tsb2cuaW5kaWNhdG9yXS5jaGlsZHJlbi5wdXNoKGNvbnRyaWJ1dG9yTm9kZSlcbiAgICAgICAgOiAoYWNjW2xvZy5pbmRpY2F0b3JdID0ge1xuICAgICAgICAgICAgaWQ6IGxvZy5pbmRpY2F0b3IsXG4gICAgICAgICAgICAuLi5nZXRVbml0c0FuZExhYmVsKHRoaXMuYWxsVGVybXNbbG9nLmluZGljYXRvcl0sIGxvZy5pbmRpY2F0b3IpLFxuICAgICAgICAgICAgbW9kZWxJZDogbG9nLm1vZGVsSWQsXG4gICAgICAgICAgICB0eXBlOiBpbmRpY2F0b3JUeXBlLFxuICAgICAgICAgICAgdmFsdWU6IHRvdGFsc1BlckluZGljYXRvcltsb2cuaW5kaWNhdG9yXSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbY29udHJpYnV0b3JOb2RlXVxuICAgICAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gICAgY29uc3QgaW5kaWNhdG9yQXJyYXkgPSBPYmplY3QudmFsdWVzKGluZGljYXRvcnMpO1xuICAgIGNvbnN0IGxpbmtlZEluZGljYXRvcnMgPSBpbmRpY2F0b3JBcnJheVxuICAgICAgLy8gbGluayBlbmRwb2ludHMgdG8gbWlkcG9pbnRzIGFuZCBtaWRwb2ludHMgdG8gYW55IGNoaWxkIG1pZHBvaW50c1xuICAgICAgLm1hcChpbmRpY2F0b3IgPT4gKHtcbiAgICAgICAgLi4uaW5kaWNhdG9yLFxuICAgICAgICBjaGlsZHJlbjogaW5kaWNhdG9yLmNoaWxkcmVuLm1hcChjaGlsZCA9PiB7XG4gICAgICAgICAgY29uc3QgcHJlZml4UmVtb3ZlZCA9IGluZGljYXRvci50eXBlID09PSBDaGFydE5vZGVUeXBlLmVuZHBvaW50ICYmIGNoaWxkLmxhYmVsLnNwbGl0KCcsICcpWzFdO1xuICAgICAgICAgIHJldHVybiBjaGlsZC50eXBlID09PSBDaGFydE5vZGVUeXBlLm1pZHBvaW50XG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICAgICAgICBsYWJlbDogcHJlZml4UmVtb3ZlZFxuICAgICAgICAgICAgICAgICAgPyAnWy4uLl0nICsgcHJlZml4UmVtb3ZlZC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHByZWZpeFJlbW92ZWQuc2xpY2UoMSlcbiAgICAgICAgICAgICAgICAgIDogY2hpbGQubGFiZWwsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IGluZGljYXRvcnNbY2hpbGQuaWRdPy5jaGlsZHJlblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IGNoaWxkO1xuICAgICAgICB9KVxuICAgICAgfSkpXG4gICAgICAvLyByZW1vdmUgZHVwbGljYXRlZCBpbmRpY2F0b3JzXG4gICAgICAuZmlsdGVyKGluZGljYXRvciA9PiAhaW5kaWNhdG9yQXJyYXkuc29tZShwYXJlbnQgPT4gcGFyZW50LmNoaWxkcmVuLnNvbWUoY2hpbGQgPT4gY2hpbGQuaWQgPT09IGluZGljYXRvci5pZCkpKTtcblxuICAgIGNvbnN0IGVuZHBvaW50cyA9IGxpbmtlZEluZGljYXRvcnMuZmlsdGVyKGluZGljYXRvciA9PiBpbmRpY2F0b3IudHlwZSA9PT0gQ2hhcnROb2RlVHlwZS5lbmRwb2ludCk7XG4gICAgY29uc3Qgbm9uTENBSW5kaWNhdG9ycyA9IGxpbmtlZEluZGljYXRvcnMuZmlsdGVyKGluZGljYXRvciA9PiBpbmRpY2F0b3IudHlwZSA9PT0gQ2hhcnROb2RlVHlwZS5taWRwb2ludCk7XG5cbiAgICBlbmRwb2ludHMubGVuZ3RoICYmXG4gICAgICBub25MQ0FJbmRpY2F0b3JzLmxlbmd0aCAmJlxuICAgICAgZW5kcG9pbnRzLnB1c2goe1xuICAgICAgICBpZDogbm9uTENBSW5kaWNhdG9yc0lkLFxuICAgICAgICBsYWJlbDogJ090aGVyIGluZGljYXRvcnMnLFxuICAgICAgICB0ZXJtOiAnbi9hJyxcbiAgICAgICAgbW9kZWxJZDogJ24vYScsXG4gICAgICAgIHVuaXRzOiAnJyxcbiAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgIHdlaWdodGVkVmFsdWU6IG51bGwsXG4gICAgICAgIHR5cGU6IENoYXJ0Tm9kZVR5cGUuZW5kcG9pbnQsXG4gICAgICAgIGZyYWN0aW9uOiBudWxsLFxuICAgICAgICBjaGlsZHJlbjogbm9uTENBSW5kaWNhdG9yc1xuICAgICAgfSk7XG5cbiAgICBjb25zdCByb290ID0gZDNIaWVyYXJjaHk8Tm9kZURhdHVtPih7XG4gICAgICBpZDogJ2R1bW15LXJvb3QnLFxuICAgICAgbGFiZWw6ICcnLFxuICAgICAgdGVybTogJycsXG4gICAgICBtb2RlbElkOiAnJyxcbiAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgd2VpZ2h0ZWRWYWx1ZTogbnVsbCxcbiAgICAgIHVuaXRzOiAnJyxcbiAgICAgIHR5cGU6IENoYXJ0Tm9kZVR5cGUucm9vdCxcbiAgICAgIGNoaWxkcmVuOiBlbmRwb2ludHMubGVuZ3RoID8gZW5kcG9pbnRzIDogbGlua2VkSW5kaWNhdG9yc1xuICAgIH0pO1xuXG4gICAgY29uc3QgaW5jbHVkZWRUeXBlcyA9IHVuaXF1ZShyb290LmRlc2NlbmRhbnRzKCkubWFwKG4gPT4gbi5kYXRhLnR5cGUpKTtcbiAgICB0aGlzLmxlZ2VuZCA9IGxlZ2VuZC5maWx0ZXIoKHsgdHlwZSB9KSA9PiBpbmNsdWRlZFR5cGVzLmluY2x1ZGVzKHR5cGUpKTtcblxuICAgIHRoaXMucm9vdCA9IHJvb3RcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBiLmRhdGEuZnJhY3Rpb24gLSBhLmRhdGEuZnJhY3Rpb24pXG4gICAgICAuZWFjaEFmdGVyKG5vZGUgPT4ge1xuICAgICAgICBpZiAobm9kZS5kYXRhLmZyYWN0aW9uID09PSAwKSB7XG4gICAgICAgICAgbm9kZS5jaGlsZHJlbiA9IG51bGw7XG4gICAgICAgICAgKG5vZGUuaGVpZ2h0IGFzIG51bWJlcikgPSAwO1xuICAgICAgICB9XG4gICAgICAgIG5vZGUuZGF0YS50eXBlICE9PSBDaGFydE5vZGVUeXBlLnJvb3QgJiYgY29sbGFwc2VDaGlsZHJlbihub2RlKTtcbiAgICAgICAgZ3JvdXBCeVBlcmNlbnRhZ2Uobm9kZSkgJiYgZ3JvdXBQZXJjZW50YWdlKG5vZGUpO1xuICAgICAgICBub2RlLmRhdGEuc2hvd0JhciA9IHNob3dCYXIobm9kZSk7XG4gICAgICAgIG5vZGUuZGF0YS5tb2RlbE5hbWUgPSB0aGlzLmFsbFRlcm1zW25vZGUuZGF0YS5tb2RlbElkXT8ubmFtZTtcbiAgICAgICAgbm9kZS5kYXRhLm1vZGVsRG9jcyA9IHRoaXMuYWxsVGVybXNbbm9kZS5kYXRhLm1vZGVsSWRdPy5kb2NzO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnJlbmRlckNoYXJ0KCk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlckNoYXJ0KCkge1xuICAgIHRoaXMuc3ZnID0gZDNTZWxlY3QodGhpcy5jaGFydFJlZj8ubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5zdmcuc2VsZWN0QWxsKCcqJykucmVtb3ZlKCk7XG4gICAgLy8gcm9vdCBub2RlIGlzIGFsd2F5cyBwb3NpdGlvbmVkIGF0IOKfqDAsIDDin6lcbiAgICBjb25zdCBpbm5lckhlaWdodCA9ICh0aGlzLnJvb3QuY2hpbGRyZW4ubGVuZ3RoIC0gMSkgKiBub2RlSGVpZ2h0ICogbm9kZVNwYWNpbmdGYWN0b3IgKyBub2RlSGVpZ2h0O1xuICAgIHRoaXMueU1pbiA9IChub2RlSGVpZ2h0IC0gaW5uZXJIZWlnaHQpIC8gMiAtIG1hcmdpbi50b3A7XG4gICAgdGhpcy55VG90YWwgPSBpbm5lckhlaWdodCArIG1hcmdpbi50b3AgKyBtYXJnaW4uYm90dG9tO1xuICAgIHRoaXMuc3ZnXG4gICAgICAuYXR0cigndmlld0JveCcsIFstbWFyZ2luLmxlZnQsIHRoaXMueU1pbiwgd2lkdGgsIHRoaXMueVRvdGFsXS5qb2luKCcgJykpXG4gICAgICAuYXR0cignZm9udC1zaXplJywgYCR7Zm9udFNpemV9cHhgKTtcblxuICAgIHRoaXMubm9kZSA9IHRoaXMuc3ZnLmFwcGVuZCgnZycpLnNlbGVjdEFsbCgnZycpO1xuICAgIHRoaXMubGluayA9IHRoaXMuc3ZnLmFwcGVuZCgnZycpLnNlbGVjdEFsbCgncGF0aCcpO1xuXG4gICAgdGhpcy5oYW5kbGVOb2RlQ2xpY2soXG4gICAgICBudWxsLFxuICAgICAgdGhpcy5yb290LmZpbmQobm9kZSA9PiBub2RlLmRlcHRoID09PSAxKVxuICAgICk7XG4gIH1cblxuICAvLyBmbGlwIHgveSB0byBnbyBsZWZ0LXJpZ2h0IGluc3RlYWQgb2YgdG9wLWJvdHRvbVxuICBwcml2YXRlIHVwZGF0ZUNoYXJ0KHsgdG9nZ2xpbmdHcm91cCA9IGZhbHNlLCBzd2l0Y2hpbmdTZWxlY3Rpb24gPSBmYWxzZSB9ID0ge30pIHtcbiAgICBjb25zdCByb290ID0gdGhpcy5yb290O1xuICAgIGNvbnN0IHRyZWVMYXlvdXQgPSBkM1RyZWU8Tm9kZURhdHVtPigpXG4gICAgICAubm9kZVNpemUoW25vZGVIZWlnaHQsIG5vZGVXaWR0aF0pXG4gICAgICAuc2VwYXJhdGlvbigoLi4ubmVpZ2hib3VyczogQ2hhcnROb2RlW10pID0+XG4gICAgICAgIG5laWdoYm91cnMuc29tZShuID0+IG4uZGF0YS5ncm91cCAmJiBuLl9ncm91cE9wZW4pID8gMSAtIGdyb3VwT3ZlcmxhcCAvIG5vZGVIZWlnaHQgOiBub2RlU3BhY2luZ0ZhY3RvclxuICAgICAgKTtcbiAgICBjb25zdCB0cmVlOiBDaGFydE5vZGUgPSB0cmVlTGF5b3V0KHJvb3QpO1xuICAgIGNvbnN0IGxpbmtzOiBMaW5rW10gPSB0cmVlLmxpbmtzKCkuZmlsdGVyKGQgPT4gZC5zb3VyY2UuZGF0YS50eXBlICE9PSBDaGFydE5vZGVUeXBlLnJvb3QpIHx8IFtdO1xuICAgIGNvbnN0IG5vZGVzID0gdHJlZS5kZXNjZW5kYW50cygpLnJldmVyc2UoKTtcblxuICAgIG5vZGVzLmZvckVhY2goZCA9PiB7XG4gICAgICBkLnkgPVxuICAgICAgICAoZC5kZXB0aCAtIDEgKyAoT2JqZWN0LmtleXMoQ2hhcnROb2RlVHlwZSkubGVuZ3RoIC0gMSAtIHRoaXMubGVnZW5kLmxlbmd0aCkgLyAyKSAqIChub2RlV2lkdGggKyBsYXllclNwYWNpbmcpO1xuICAgIH0pO1xuXG4gICAgLy8gQnkgZGVmYXVsdCB0aGUgdHJlZSBleHBhbmRzIHN5bW1ldHJpY2FsbHkgdXB3YXJkcyBhbmQgZG93bndhcmRzIGZyb20gdGhlIHNlbGVjdGVkIG5vZGUuXG4gICAgLy8gV2UgbW92ZSBjaGlsZHJlbiBkb3duIHRvIHByZXZlbnQgZXhwYW5zaW9uIHVwd2FyZHMgb3IgdXAgdG8gbWluaW1pc2UgZXhwYW5zaW9uIGRvd253YXJkc1xuICAgIGNvbnN0IG1pbmltaXNlSGVpZ2h0ID0gKHsgcHJldmlvdXNUYW5zbGF0ZVksIHByZXZpb3VzWVRvdGFsIH0sIGRlcHRoOiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IG1heFlUb3RhbCA9IE1hdGgubWF4KHByZXZpb3VzWVRvdGFsLCB0aGlzLnlUb3RhbCk7XG4gICAgICBjb25zdCBwYXJlbnQgPSB0cmVlLmZpbmQobm9kZSA9PiBub2RlLmRlcHRoID09PSBkZXB0aCAtIDEgJiYgbm9kZS5fb3Blbik7XG4gICAgICBwYXJlbnQ/LmNoaWxkcmVuPy5mb3JFYWNoKG5vZGUgPT4gKG5vZGUueCArPSBwcmV2aW91c1RhbnNsYXRlWSkpO1xuXG4gICAgICBjb25zdCB7IG1pbjogbWluWCwgbWF4OiBtYXhYIH0gPSAocGFyZW50Py5jaGlsZHJlbiB8fCBbXSkucmVkdWNlKFxuICAgICAgICAoeyBtaW4sIG1heCB9LCBuKSA9PiAoe1xuICAgICAgICAgIG1pbjogbi54IDwgbWluID8gbi54IDogbWluLFxuICAgICAgICAgIG1heDogbi54ID4gbWF4ID8gbi54IDogbWF4XG4gICAgICAgIH0pLFxuICAgICAgICB7IG1pbjogcGFyZW50Py54LCBtYXg6IHBhcmVudD8ueCB9XG4gICAgICApO1xuXG4gICAgICBjb25zdCB7IHlNaW4sIHlUb3RhbCB9ID0gcGFyZW50Py5jaGlsZHJlbj8ubGVuZ3RoXG4gICAgICAgID8geyB5TWluOiBtaW5YIC0gbWFyZ2luLnRvcCwgeVRvdGFsOiBtYXhYIC0gbWluWCArIG1hcmdpbi5ib3R0b20gKyBtYXJnaW4udG9wICsgbm9kZUhlaWdodCB9XG4gICAgICAgIDogeyB5TWluOiBudWxsLCB5VG90YWw6IG51bGwgfTtcblxuICAgICAgY29uc3Qgb3ZlcmZsb3dBYm92ZSA9IHRoaXMueU1pbiAtIHlNaW47IC8vIHBvc2l0aXZlIHdoZW4gb3ZlcmZsb3dzIGFib3ZlXG4gICAgICBjb25zdCBvdmVyZmxvd0JlbG93ID0geVRvdGFsICsgeU1pbiAtIChtYXhZVG90YWwgKyB0aGlzLnlNaW4pOyAvLyBwb3NpdGl2ZSB3aGVuIG92ZXJmbG93cyBiZWxvd1xuICAgICAgLy8gLSB0cmFuc2xhdGVZIHdoZW4gb3ZlcmZsb3dzIGFib3ZlOiBwb3NpdGl2ZVxuICAgICAgLy8gLSB0cmFuc2xhdGVZIHdoZW4gb3ZlcmZsb3dzIGJlbG93OiBuZWdhdGl2ZSBieSBzbWFsbGVzdCBvZiB1bmRlcmZsb3cgYWJvdmUgb3Igb3ZlcmZsb3cgYmVsb3dcbiAgICAgIC8vIC0gdHJhbnNsYXRlWSB3aGVuIG5vIG92ZXJmbG93OiAwXG4gICAgICBjb25zdCB0cmFuc2xhdGVZID1cbiAgICAgICAgb3ZlcmZsb3dBYm92ZSA+IDAgPyBvdmVyZmxvd0Fib3ZlIDogb3ZlcmZsb3dCZWxvdyA+IDAgPyBNYXRoLm1heCgtb3ZlcmZsb3dCZWxvdywgb3ZlcmZsb3dBYm92ZSkgOiAwO1xuXG4gICAgICBwYXJlbnQ/LmNoaWxkcmVuPy5mb3JFYWNoKG5vZGUgPT4gKG5vZGUueCArPSB0cmFuc2xhdGVZKSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByZXZpb3VzWVRvdGFsOiBNYXRoLm1heCh5VG90YWwsIHByZXZpb3VzWVRvdGFsKSxcbiAgICAgICAgcHJldmlvdXNUYW5zbGF0ZVk6IHRyYW5zbGF0ZVkgKyBwcmV2aW91c1RhbnNsYXRlWVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgeyBwcmV2aW91c1lUb3RhbDogbmV3SGVpZ2h0IH0gPSBbMiwgMywgNCwgNV0ucmVkdWNlKG1pbmltaXNlSGVpZ2h0LCB7XG4gICAgICBwcmV2aW91c1RhbnNsYXRlWTogMCxcbiAgICAgIHByZXZpb3VzWVRvdGFsOiB0aGlzLnlUb3RhbFxuICAgIH0pO1xuXG4gICAgdGhpcy5zdmcudHJhbnNpdGlvbigpLmR1cmF0aW9uKDMwMCkuYXR0cigndmlld0JveCcsIFstbWFyZ2luLmxlZnQsIHRoaXMueU1pbiwgd2lkdGgsIG5ld0hlaWdodF0uam9pbignICcpKTtcblxuICAgIHRoaXMubm9kZSA9IHRoaXMubm9kZVxuICAgICAgLmRhdGEoXG4gICAgICAgIG5vZGVzLFxuICAgICAgICBkID0+IGAke2QucGFyZW50Py5wYXJlbnQ/LnBhcmVudD8uZGF0YS5pZH0tJHtkLnBhcmVudD8ucGFyZW50Py5kYXRhLmlkfS0ke2QucGFyZW50Py5kYXRhLmlkfS0ke2QuZGF0YS5pZH1gXG4gICAgICApXG4gICAgICAuam9pbihcbiAgICAgICAgZW50ZXIgPT5cbiAgICAgICAgICBlbnRlclxuICAgICAgICAgICAgLmFwcGVuZCgnZycpXG4gICAgICAgICAgICAuY2FsbChlbnRlck5vZGVzKVxuICAgICAgICAgICAgLmF0dHIoJ29wYWNpdHknLCAwKVxuICAgICAgICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIGQgPT4gJ3RyYW5zbGF0ZSgnICsgKHRvZ2dsaW5nR3JvdXAgPyBkLnkgOiBkLnkgLSBub2RlV2lkdGggLyAyKSArICcsJyArIGQueCArICcpJyksXG4gICAgICAgIHVwZGF0ZSA9PiB1cGRhdGUsXG4gICAgICAgIGV4aXQgPT4ge1xuICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLnRvb2x0aXBPcGVyYXRvci5jbG9zZShmYWxzZSkpO1xuICAgICAgICAgIHJldHVybiBleGl0XG4gICAgICAgICAgICAuc3R5bGUoJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKVxuICAgICAgICAgICAgLnRyYW5zaXRpb24oKVxuICAgICAgICAgICAgLmR1cmF0aW9uKG5vZGVEdXJhdGlvbiAvIDIpXG4gICAgICAgICAgICAuZGVsYXkoZCA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gZC5wYXJlbnQ/LmNoaWxkcmVuIHx8IGQucGFyZW50Py5fY2hpbGRyZW47XG4gICAgICAgICAgICAgIHJldHVybiAoY2hpbGRyZW4/Lmxlbmd0aCAtIGNoaWxkcmVuPy5pbmRleE9mKGQpIC0gMSkgKiAxMDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuZWFzZShkM0Vhc2VFbGFzdGljSW4uYW1wbGl0dWRlKDAuNSkucGVyaW9kKDEpKVxuICAgICAgICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIGQgPT4gJ3RyYW5zbGF0ZSgnICsgKHRvZ2dsaW5nR3JvdXAgPyBkLnkgOiBkLnkgLSBub2RlV2lkdGggLyAyKSArICcsJyArIGQueCArICcpJylcbiAgICAgICAgICAgIC5hdHRyKCdvcGFjaXR5JywgMClcbiAgICAgICAgICAgIC5yZW1vdmUoKVxuICAgICAgICAgICAgLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgIC8vIGluIGNhc2UgYSB0b29sdGlwIHdhcyBvcGVuZWQgb24gYSB0cmFuc2l0aW9uaW5nIGVsZW1lbnRcbiAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMudG9vbHRpcE9wZXJhdG9yLmNsb3NlKGZhbHNlKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIHRoaXMubm9kZVxuICAgICAgLmNhbGwobWVyZ2VkTm9kZXMsIHsgdG9vbHRpcE9wZXJhdG9yOiB0aGlzLnRvb2x0aXBPcGVyYXRvciwgem9uZTogdGhpcy5uZ1pvbmUgfSlcbiAgICAgIC50cmFuc2l0aW9uKClcbiAgICAgIC5kZWxheShkID0+IHtcbiAgICAgICAgY29uc3QgZ3JvdXBDbG9zaW5nID0gdG9nZ2xpbmdHcm91cCAmJiAhZC5wYXJlbnQ/LmNoaWxkcmVuPy5maW5kKG4gPT4gbi5kYXRhLmdyb3VwKT8uX2dyb3VwT3BlbjtcbiAgICAgICAgcmV0dXJuIGdyb3VwQ2xvc2luZyA/IGdyb3VwRGVsYXkgOiAoc3dpdGNoaW5nU2VsZWN0aW9uID8gbm9kZUR1cmF0aW9uIDogMCkgKyBkLnBhcmVudD8uY2hpbGRyZW4uaW5kZXhPZihkKSAqIDEwO1xuICAgICAgfSlcbiAgICAgIC5kdXJhdGlvbihub2RlRHVyYXRpb24pXG4gICAgICAuZWFzZShkM0Vhc2VFbGFzdGljT3V0LmFtcGxpdHVkZSgwLjUpLnBlcmlvZCgxKSlcbiAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBkID0+IGB0cmFuc2xhdGUoJHtkLnl9LCR7ZC54fSlgKVxuICAgICAgLmF0dHIoJ29wYWNpdHknLCAxKTtcblxuICAgIHRoaXMubm9kZS5zZWxlY3RBbGwoJy5ub2RlLW9wZW5hYmxlJykub24oJ2NsaWNrJywgdGhpcy5oYW5kbGVOb2RlQ2xpY2suYmluZCh0aGlzKSk7XG4gICAgdGhpcy5ub2RlLnNlbGVjdEFsbCgnLmdyb3VwLWJ1dHRvbicpLm9uKCdjbGljaycsIHRoaXMuaGFuZGxlR3JvdXBCdXR0b25DbGljay5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMubGluayA9IHRoaXMubGlua1xuICAgICAgLmRhdGEoXG4gICAgICAgIGxpbmtzLFxuICAgICAgICBkID0+IGAke2Quc291cmNlLnBhcmVudD8ucGFyZW50Py5kYXRhLmlkfS0ke2Quc291cmNlLnBhcmVudD8uZGF0YS5pZH0tJHtkLnNvdXJjZS5kYXRhLmlkfS0ke2QudGFyZ2V0LmRhdGEuaWR9YFxuICAgICAgKVxuICAgICAgLmpvaW4oXG4gICAgICAgIGVudGVyID0+IGVudGVyLmFwcGVuZCgncGF0aCcpLmNsYXNzZWQoJ2xpbmstcGF0aCcsIHRydWUpLmF0dHIoJ29wYWNpdHknLCAwKSxcbiAgICAgICAgdXBkYXRlID0+IHVwZGF0ZSxcbiAgICAgICAgZXhpdCA9PlxuICAgICAgICAgIGV4aXRcbiAgICAgICAgICAgIC50cmFuc2l0aW9uKClcbiAgICAgICAgICAgIC5kdXJhdGlvbihsaW5rRHVyYXRpb24gLyAyKVxuICAgICAgICAgICAgLmRlbGF5KGQgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGQuc291cmNlLnBhcmVudD8uY2hpbGRyZW4gfHwgZC5zb3VyY2UucGFyZW50Py5fY2hpbGRyZW47XG4gICAgICAgICAgICAgIHJldHVybiAoY2hpbGRyZW4/Lmxlbmd0aCAtIGNoaWxkcmVuPy5pbmRleE9mKGQudGFyZ2V0KSAtIDEpICogMTA7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmF0dHIoJ29wYWNpdHknLCAwKVxuICAgICAgICAgICAgLnJlbW92ZSgpXG4gICAgICApXG4gICAgICAuY2FsbChtZXJnZWRMaW5rcywgeyB0b2dnbGluZ0dyb3VwLCBzd2l0Y2hpbmdTZWxlY3Rpb24gfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUdyb3VwQnV0dG9uQ2xpY2soX2V2ZW50OiBhbnksIGQ6IENoYXJ0Tm9kZSkge1xuICAgIGlmIChkLl9ncmV5ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZC5fZ3JvdXBPcGVuID0gIWQuX2dyb3VwT3BlbjtcbiAgICBjb25zdCBjaGlsZHJlbiA9IGQucGFyZW50Ll9ncm91cENoaWxkcmVuO1xuICAgIGQucGFyZW50Ll9ncm91cENoaWxkcmVuID0gZC5wYXJlbnQuY2hpbGRyZW47XG4gICAgZC5wYXJlbnQuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0KHsgdG9nZ2xpbmdHcm91cDogdHJ1ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTm9kZUNsaWNrKF9ldmVudDogYW55LCBkOiBDaGFydE5vZGUgfCBITm9kZSk6IHZvaWQge1xuICAgIGQuX29wZW4gPSAhZC5fb3BlbjtcbiAgICBjb25zdCBzd2l0Y2hpbmdTZWxlY3Rpb24gPSAnX2dyZXllZCcgaW4gZCAmJiBkLl9ncmV5ZWQ7XG4gICAgZC5wYXJlbnQuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XG4gICAgICBjaGlsZC5fZ3JleWVkID0gZmFsc2U7XG4gICAgICBpZiAoY2hpbGQgIT09IGQpIHtcbiAgICAgICAgY2hpbGQuX29wZW4gPSBmYWxzZTtcbiAgICAgICAgY29sbGFwc2VDaGlsZHJlbihjaGlsZCk7XG4gICAgICAgIGNoaWxkLl9ncmV5ZWQgPSBkLl9vcGVuO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGQuY2hpbGRyZW4gPyBjb2xsYXBzZUNoaWxkcmVuKGQpIDogcmVzdG9yZUNoaWxkcmVuKGQpO1xuICAgIHRoaXMudXBkYXRlQ2hhcnQoeyBzd2l0Y2hpbmdTZWxlY3Rpb24gfSk7XG4gIH1cbn1cbiIsIkBpZiAobG9hZGluZykge1xuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXIgaGFzLXRleHQtY2VudGVyIG15LTUgcHktNVwiPlxuICAgIDxmYS1pY29uIFtpY29uXT1cImZhU3Bpbm5lclwiIGFuaW1hdGlvbj1cInNwaW5cIiBzaXplPVwibGdcIj48L2ZhLWljb24+XG4gIDwvZGl2PlxufSBAZWxzZSB7XG4gIEBpZiAoaXNSZWNhbGN1bGF0ZWQpIHtcbiAgICBAaWYgKGZpbHRlcmVkSW1wYWN0QXNzZXNzbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnMgcHQtMiBweC0zIG1iLTBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1zdGF0aWMgaXMtc2Vjb25kYXJ5XCI+U2VsZWN0IGFuIEltcGFjdCBBc3Nlc3NtZW50PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2wgaXMtZXhwYW5kZWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLXNtYWxsIGlzLWZ1bGx3aWR0aCBpcy1zZWNvbmRhcnlcIj5cbiAgICAgICAgICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEltcGFjdEFzc2Vzc21lbnRJZFwiIChjaGFuZ2UpPVwicmVsb2FkQ2hhcnQoKVwiIFtkaXNhYmxlZF09XCJsb2FkaW5nXCI+XG4gICAgICAgICAgICAgIEBmb3IgKHZhbHVlIG9mIGZpbHRlcmVkSW1wYWN0QXNzZXNzbWVudHM7IHRyYWNrIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwidmFsdWVbJ0BpZCddXCI+XG4gICAgICAgICAgICAgICAgICB7eyB2YWx1ZS5uYW1lIHx8IHZhbHVlWydAaWQnXSB9fVxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGlmICghbm9EYXRhKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9ucyBweS0yIHB4LTNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1zdGF0aWMgaXMtc2Vjb25kYXJ5XCI+U2VsZWN0IGEgbW9kZWw8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgaXMtc21hbGwgaXMtZnVsbHdpZHRoIGlzLXNlY29uZGFyeVwiPlxuICAgICAgICAgICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTW9kZWxJZFwiIChjaGFuZ2UpPVwiaW5pdENoYXJ0KClcIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiPlxuICAgICAgICAgICAgICBAZm9yIChtb2RlbCBvZiBtb2RlbHM7IHRyYWNrIG1vZGVsKSB7XG4gICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwibW9kZWxbJ0BpZCddXCI+e3sgbW9kZWwubmFtZSB8fCBtb2RlbFsnQGlkJ10gfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoIW5vRGF0YSAmJiAhc2hvd1dhcm5pbmdzKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy1jZW50ZXJlZCBweS0yIGlzLXNpemUtNyBpcy1tb2JpbGUgaXMtbXVsdGlsaW5lXCI+XG4gICAgICAgIEBmb3IgKGxlZ2VuZEl0ZW0gb2YgbGVnZW5kOyB0cmFjayBsZWdlbmRJdGVtKSB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93IHB5LTAgaXMtZmxleC1tb2JpbGUgaXMtZmxleC1kaXJlY3Rpb24tY29sdW1uIGlzLWFsaWduLWl0ZW1zLWNlbnRlciBpcy1sZWdlbmQtaXRlbVwiPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJrZXktY29sb3VyIGlzLWlubGluZS1ibG9jay10YWJsZXQgaXMtYWxpZ24tbWlkZGxlXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJub2RlQ29sb3Vyc1tsZWdlbmRJdGVtLnR5cGVdXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImhhcy10ZXh0LWJsYWNrIGlzLWFsaWduLW1pZGRsZSBrZXktbGFiZWwgaXMtcGwtdGFibGV0LTJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpcy1oaWRkZW4tZGVza3RvcFwiPnt7IGxlZ2VuZEl0ZW0ubW9iaWxlVGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpcy1oaWRkZW4tdG91Y2hcIj57eyBsZWdlbmRJdGVtLnRleHQgfX08L3NwYW4+XG4gICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoZXJyb3IpIHtcbiAgICAgIDxwIGNsYXNzPVwiaGFzLXRleHQtZGFuZ2VyIHB5LTNcIj5cbiAgICAgICAgQHN3aXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBAY2FzZSAoJ25vdC1mb3VuZCcpIHtcbiAgICAgICAgICAgIDxwPkltcGFjdCBBc3Nlc3NtZW50IG5vdCBmb3VuZDwvcD5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHNwYW4+QW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cnJlZDo8L3NwYW4+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwibXQtMVwiPnt7IGVycm9yIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L3A+XG4gICAgfVxuICAgIEBpZiAoc2hvd1dhcm5pbmdzKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiaGFzLXRleHQtd2FybmluZyBweS0zIGhhcy10ZXh0LWNlbnRlcmVkXCI+XG4gICAgICAgIEBmb3IgKHdhcm5pbmcgb2Ygd2FybmluZ3M7IHRyYWNrIHdhcm5pbmcpIHtcbiAgICAgICAgICA8cCBjbGFzcz1cImlzLW1iLTJcIj5cbiAgICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwicHItMlwiIFtpY29uXT1cImZhRXhjbGFtYXRpb25UcmlhbmdsZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgIEBzd2l0Y2ggKHdhcm5pbmcpIHtcbiAgICAgICAgICAgICAgQGNhc2UgKCdtaXNzaW5nLXRlcm1zJykge1xuICAgICAgICAgICAgICAgIDxzcGFuPkNhbGN1bGF0aW9ucyBhcmUgbm90IHVwIHRvIGRhdGUuIFNvbWUgdGVybXMgbWF5IG5vdCBkaXNwbGF5IGNvcnJlY3RseS48L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3A+XG4gICAgICAgIH1cbiAgICAgICAgPHAgY2xhc3M9XCJpcy11bmRlcmxpbmVkIGlzLXNpemUtN1wiPjxhIChjbGljayk9XCJzaG93V2FybmluZ3MgPSBmYWxzZVwiPlZpZXcgY2hhcnQgYW55d2F5LjwvYT48L3A+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGlmIChub0RhdGEpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJweS0zXCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaGFzLXRleHQtY2VudGVyZWRcIj5ObyBjaGFydCBhdmFpbGFibGUuPC9wPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICA8cCBjbGFzcz1cImhhcy10ZXh0LWNlbnRlcmVkIHB5LTNcIj5cbiAgICAgIE5vIGNoYXJ0IGF2YWlsYWJsZS4gU3dpdGNoIHRvXG4gICAgICA8Y29kZT5yZWNhbGN1bGF0ZWQ8L2NvZGU+XG4gICAgICB2ZXJzaW9uLlxuICAgIDwvcD5cbiAgfVxufVxuXG48ZGl2XG4gIFtjbGFzcy5pcy1oaWRkZW5dPVwiIWlzUmVjYWxjdWxhdGVkIHx8IGxvYWRpbmcgfHwgZXJyb3IgfHwgbm9EYXRhIHx8IHNob3dXYXJuaW5nc1wiXG4gIGNsYXNzPVwiY2hhcnQtY29udGFpbmVyIGlzLXJlbGF0aXZlIHctMTAwXCI+XG4gIDxzdmcgY2xhc3M9XCJ3LTEwMCBoLTEwMFwiICNjaGFydD48L3N2Zz5cbiAgPHNwYW5cbiAgICBjbGFzcz1cImlzLWhpZGRlblwiXG4gICAgW25nYlBvcG92ZXJdPVwidGlwQ29udGVudFwiXG4gICAgdHJpZ2dlcnM9XCJtYW51YWxcIlxuICAgIHBsYWNlbWVudD1cInJpZ2h0IGxlZnQgYXV0b1wiXG4gICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgI3Q9XCJuZ2JQb3BvdmVyXCJcbiAgICBwb3NpdGlvblRhcmdldD1cIi50aXAtdGFyZ2V0XCJcbiAgICBwb3BvdmVyQ2xhc3M9XCJpcy1uYXJyb3cgZHJpdmVyLWNoYXJ0LXRvb2x0aXBcIlxuICAgIFthbmltYXRpb25dPVwidHJ1ZVwiPjwvc3Bhbj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3RpcENvbnRlbnQgbGV0LXRpcERhdGE9XCJ0aXBEYXRhXCI+XG4gIEBpZiAodGlwRGF0YS5oYXNXZWlnaHRlZFZhbHVlKSB7XG4gICAgPHA+Y29udHJpYnV0aW9uOiB7eyB0aXBEYXRhLndlaWdodGVkVmFsdWVUZXh0IH19PC9wPlxuICB9XG4gIDxwPlxuICAgIDxhIGNsYXNzPVwiaXMtZGFya1wiIHRhcmdldD1cIl9ibGFua1wiIFtocmVmXT1cInRpcERhdGEudmFsdWVLZXlIcmVmXCI+dmFsdWU8L2E+XG4gICAgOiB7eyB0aXBEYXRhLnZhbHVlVmFsdWVUZXh0IH19XG4gICAgQGlmICh0aXBEYXRhLmhhc1ZhbHVlKSB7XG4gICAgICA8YSBjbGFzcz1cImlzLWRhcmtcIiBbaHJlZl09XCJ0aXBEYXRhLm1vZGVsRG9jc0hyZWZcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAgPHNwYW4+RG9jczwvc3Bhbj5cbiAgICAgICAgPGZhLWljb24gY2xhc3M9XCJtbC0xXCIgW2ljb25dPVwiZmFFeHRlcm5hbExpbmtBbHRcIiBzaXplPVwic21cIj48L2ZhLWljb24+XG4gICAgICA8L2E+XG4gICAgfVxuICA8L3A+XG4gIDxwPlxuICAgIDxhIGNsYXNzPVwiaXMtZGFya1wiIHRhcmdldD1cIl9ibGFua1wiIFtocmVmXT1cInRpcERhdGEubW9kZWxLZXlIcmVmXCI+bWV0aG9kTW9kZWw8L2E+XG4gICAgOlxuICAgIDxhIGNsYXNzPVwiaXMtZGFya1wiIHRhcmdldD1cIl9ibGFua1wiIFtocmVmXT1cInRpcERhdGEubW9kZWxWYWx1ZUhyZWZcIj57eyB0aXBEYXRhLm1vZGVsVmFsdWUgfX08L2E+XG4gIDwvcD5cbiAgPHA+XG4gICAgPGEgY2xhc3M9XCJpcy1kYXJrXCIgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwidGlwRGF0YS50ZXJtS2V5SHJlZlwiPnRlcm08L2E+XG4gICAgOlxuICAgIDxhIGNsYXNzPVwiaXMtZGFya1wiIHRhcmdldD1cIl9ibGFua1wiIFtocmVmXT1cInRpcERhdGEudGVybVZhbHVlSHJlZlwiPnt7IHRpcERhdGEudGVybVZhbHVlIH19PC9hPlxuICA8L3A+XG48L25nLXRlbXBsYXRlPlxuIl19
788
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLWdyYXBoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbXBhY3QtYXNzZXNzbWVudHMvaW1wYWN0LWFzc2Vzc21lbnRzLWdyYXBoL2ltcGFjdC1hc3Nlc3NtZW50cy1ncmFwaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1ncmFwaC9pbXBhY3QtYXNzZXNzbWVudHMtZ3JhcGguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxNQUFNLEVBRU4sU0FBUyxFQUVULEtBQUssRUFJTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxJQUFJLFFBQVEsRUFBdUIsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xGLE9BQU8sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxTQUFTLElBQUksV0FBVyxFQUN4QixJQUFJLElBQUksTUFBTSxFQUlmLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxhQUFhLElBQUksZUFBZSxFQUFFLGNBQWMsSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMvRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUF3QyxR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O1NBQzVCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFM0csSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSTthQUNsQixJQUFJLENBQ0gsS0FBSyxFQUNMLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUMzRzthQUNBLElBQUksQ0FDSCxLQUFLLENBQUMsRUFBRSxDQUNOLEtBQUs7YUFDRixNQUFNLENBQUMsR0FBRyxDQUFDO2FBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUNoQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQzthQUNsQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsWUFBWSxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFDekcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQ2hCLElBQUksQ0FBQyxFQUFFO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxF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QUFDLENBQUM7UUFDSCxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQzsrR0FwaEJVLCtCQUErQjttR0FBL0IsK0JBQStCLGtYQzFoQjVDLG9uS0E2SUEsc3lERDJZWSxlQUFlLGlQQUFFLFdBQVcsMHZCQUFFLFVBQVU7OzRGQUV2QywrQkFBK0I7a0JBUDNDLFNBQVM7K0JBQ0UsNkJBQTZCLGNBRzNCLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDOzhCQXlCM0MsUUFBUTtzQkFEZixTQUFTO3VCQUFDLE9BQU87Z0JBSVYsZUFBZTtzQkFEdEIsU0FBUzt1QkFBQyxHQUFHO2dCQUlOLGlCQUFpQjtzQkFEeEIsS0FBSztnQkFHRSxTQUFTO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBOZ1pvbmUsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBBZnRlclZpZXdJbml0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpbHRlciwgZ3JvdXBCeSwgbWFwLCBtZXJnZUFsbCwgbWVyZ2VNYXAsIHRvQXJyYXksIGNhdGNoRXJyb3IsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGZyb20sIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGxpbmtIb3Jpem9udGFsIGFzIGQzTGlua0hvcml6b250YWwgfSBmcm9tICdkMy1zaGFwZSc7XG5pbXBvcnQgeyBzZWxlY3QgYXMgZDNTZWxlY3QsIFNlbGVjdGlvbiwgQmFzZVR5cGUsIHNlbGVjdEFsbCB9IGZyb20gJ2QzLXNlbGVjdGlvbic7XG5pbXBvcnQgJ2QzLXRyYW5zaXRpb24nO1xuaW1wb3J0IHtcbiAgaGllcmFyY2h5IGFzIGQzSGllcmFyY2h5LFxuICB0cmVlIGFzIGQzVHJlZSxcbiAgSGllcmFyY2h5Tm9kZSxcbiAgSGllcmFyY2h5UG9pbnROb2RlLFxuICBIaWVyYXJjaHlQb2ludExpbmtcbn0gZnJvbSAnZDMtaGllcmFyY2h5JztcbmltcG9ydCB7IGVhc2VFbGFzdGljSW4gYXMgZDNFYXNlRWxhc3RpY0luLCBlYXNlRWxhc3RpY091dCBhcyBkM0Vhc2VFbGFzdGljT3V0IH0gZnJvbSAnZDMtZWFzZSc7XG5pbXBvcnQgeyBEYXRhU3RhdGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5pbXBvcnQgeyBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgSVRlcm1KU09OTEQsIE5vZGVUeXBlLCBUZXJtVGVybVR5cGUsIFRlcm0gfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyBnZXREZWZhdWx0TW9kZWxJZCB9IGZyb20gJ0BoZXN0aWEtZWFydGgvZ2xvc3NhcnknO1xuaW1wb3J0IHsgdW5pcXVlLCB0b1ByZWNpc2lvbiB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuaW1wb3J0IHsgTmdiUG9wb3ZlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmFJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgZmFFeGNsYW1hdGlvblRyaWFuZ2xlLCBmYUV4dGVybmFsTGlua0FsdCwgZmFTcGlubmVyIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcblxuaW1wb3J0IHsgYmFzZVVybCwgc2NoZW1hQmFzZVVybCB9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlscyc7XG5pbXBvcnQgeyBkM3dyYXAgfSBmcm9tICcuLi8uLi9jb21tb24vZDMtdXRpbHMnO1xuaW1wb3J0IHsgTGV2ZWwsIHBhcnNlTGluZXMsIHBhcnNlTWVzc2FnZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9sb2dzLXV0aWxzJztcbmltcG9ydCB7IEhlRW5naW5lU2VydmljZSB9IGZyb20gJy4uLy4uL2VuZ2luZS9lbmdpbmUuc2VydmljZSc7XG5pbXBvcnQgeyBIZU5vZGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbm9kZS9ub2RlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVTZWFyY2hTZXJ2aWNlLCBJU2VhcmNoUmVzdWx0RXh0ZW5kZWQgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgbWF0Y2hUZXJtVHlwZSwgbWF0Y2hFeGFjdFF1ZXJ5LCBtYXRjaFR5cGUgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLm1vZGVsJztcblxuZW51bSBDaGFydE5vZGVUeXBlIHtcbiAgbWlkcG9pbnQgPSAnbWlkcG9pbnQnLFxuICBlbWlzc2lvbiA9ICdlbWlzc2lvbicsXG4gIGVuZHBvaW50ID0gJ2VuZHBvaW50JyxcbiAgaW5wdXQgPSAnaW5wdXQnLFxuICBvcGVyYXRpb24gPSAnb3BlcmF0aW9uJyxcbiAgcm9vdCA9ICdyb290J1xufVxuXG5pbnRlcmZhY2UgTm9kZURhdHVtIHtcbiAgaWQ6IHN0cmluZztcbiAgdGVybTogc3RyaW5nO1xuICBtb2RlbElkOiBzdHJpbmc7XG4gIG1vZGVsTmFtZT86IHN0cmluZztcbiAgbW9kZWxEb2NzPzogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB0eXBlOiBDaGFydE5vZGVUeXBlO1xuICB2YWx1ZTogbnVtYmVyIHwgbnVsbDtcbiAgd2VpZ2h0ZWRWYWx1ZTogbnVtYmVyIHwgbnVsbDtcbiAgZnJhY3Rpb24/OiBudW1iZXI7XG4gIGNoaWxkcmVuPzogTm9kZURhdHVtW107XG4gIGdyb3VwPzogYm9vbGVhbjtcbiAgc2hvd0Jhcj86IGJvb2xlYW47XG4gIHVuaXRzOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBDaGFydE5vZGUgZXh0ZW5kcyBIaWVyYXJjaHlQb2ludE5vZGU8Tm9kZURhdHVtPiB7XG4gIF9jaGlsZHJlbj86IENoYXJ0Tm9kZVtdOyAvLyBjaGlsZHJlbiBvZiBjb2xsYXBzZWQgbm9kZXNcbiAgX2dyb3VwQ2hpbGRyZW4/OiBDaGFydE5vZGVbXTsgLy8gYWxsIGNoaWxkcmVuIHdoZW4gZ3JvdXAgY2xvc2VkOyB1bmdyb3VwZWQgY2hpbGRyZW4gd2hlbiBncm91cCBvcGVuXG4gIF9vcGVuPzogYm9vbGVhbjtcbiAgX2dyZXllZD86IGJvb2xlYW47XG4gIF9ncm91cE9wZW4/OiBib29sZWFuO1xuICBfdGltZW91dD86IE5vZGVKUy5UaW1lb3V0O1xufVxuXG5pbnRlcmZhY2UgSE5vZGUgZXh0ZW5kcyBIaWVyYXJjaHlOb2RlPE5vZGVEYXR1bT4ge1xuICBfY2hpbGRyZW4/OiBITm9kZVtdO1xuICBfZ3JvdXBDaGlsZHJlbj86IEhOb2RlW107XG4gIF9ncm91cE9wZW4/OiBib29sZWFuO1xuICBfb3Blbj86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBMaW5rIGV4dGVuZHMgSGllcmFyY2h5UG9pbnRMaW5rPE5vZGVEYXR1bT4ge1xuICBzb3VyY2U6IENoYXJ0Tm9kZTtcbiAgdGFyZ2V0OiBDaGFydE5vZGU7XG59XG5cbnR5cGUgTm9kZVNlbGVjdGlvbiA9IFNlbGVjdGlvbjxTVkdHRWxlbWVudCB8IEJhc2VUeXBlLCBDaGFydE5vZGUsIFNWR0dFbGVtZW50LCB1bmtub3duPjtcbnR5cGUgTGlua1NlbGVjdGlvbiA9IFNlbGVjdGlvbjxTVkdQYXRoRWxlbWVudCB8IEJhc2VUeXBlLCBMaW5rLCBTVkdHRWxlbWVudCwgdW5rbm93bj47XG5cbmludGVyZmFjZSBJSW5wdXRMb2cge1xuICBsYWJlbDogc3RyaW5nO1xuICB1bml0czogc3RyaW5nO1xuICB3ZWlnaHRlZFZhbHVlOiBudW1iZXI7XG4gIHZhbHVlOiBudW1iZXI7XG4gIG9wZXJhdGlvbnM6IHtcbiAgICB3ZWlnaHRlZFZhbHVlOiBudW1iZXI7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICB1bml0czogc3RyaW5nO1xuICAgIHZhbHVlOiBudW1iZXI7XG4gIH1bXTtcbn1cbmludGVyZmFjZSBJTG9nIHtcbiAgaW5kaWNhdG9yOiBzdHJpbmc7XG4gIGNvbnRyaWJ1dG9yOiBzdHJpbmc7XG4gIGNvZWZmaWNpZW50OiBudW1iZXI7XG4gIHZhbHVlOiBudW1iZXI7XG4gIHdlaWdodGVkVmFsdWU6IG51bWJlcjtcbiAgbW9kZWxJZDogc3RyaW5nO1xuICBpbnB1dHM/OiBJSW5wdXRMb2dbXTtcbn1cblxuY29uc3QgcGFyc2VMb2cgPSAoZGF0YTogYW55KTogSUxvZyA9PiAoe1xuICBpbmRpY2F0b3I6IGRhdGFbJ2tleS90ZXJtJ10gfHwgZGF0YS50ZXJtIHx8IGRhdGEuaW5kaWNhdG9yLFxuICBjb250cmlidXRvcjogZGF0YS5ub2RlLFxuICBjb2VmZmljaWVudDogK2RhdGEuY29lZmZpY2llbnQsXG4gIG1vZGVsSWQ6IGRhdGEubW9kZWwgfHwgJ1Vua25vd24nLFxuICB3ZWlnaHRlZFZhbHVlOiArZGF0YS52YWx1ZSAqICtkYXRhLmNvZWZmaWNpZW50LFxuICB2YWx1ZTogK2RhdGEudmFsdWVcbn0pO1xuXG5jb25zdCBmaWx0ZXJUZXJtVHlwZXMgPSBbXG4gIFRlcm1UZXJtVHlwZS5yZXNvdXJjZVVzZSxcbiAgVGVybVRlcm1UeXBlLmVtaXNzaW9uLFxuICBUZXJtVGVybVR5cGUuY2hhcmFjdGVyaXNlZEluZGljYXRvcixcbiAgVGVybVRlcm1UeXBlLmVuZHBvaW50SW5kaWNhdG9yLFxuICBUZXJtVGVybVR5cGUubW9kZWxcbl07XG5jb25zdCBub2RlQ29sb3VycyA9IHtcbiAgW0NoYXJ0Tm9kZVR5cGUuZW5kcG9pbnRdOiAnYmx1ZScsXG4gIFtDaGFydE5vZGVUeXBlLm1pZHBvaW50XTogJ3JlZCcsXG4gIFtDaGFydE5vZGVUeXBlLmVtaXNzaW9uXTogJ3B1cnBsZScsXG4gIFtDaGFydE5vZGVUeXBlLmlucHV0XTogJ2dyZWVuJyxcbiAgW0NoYXJ0Tm9kZVR5cGUub3BlcmF0aW9uXTogJ29yYW5nZSdcbn07XG5jb25zdCB3aWR0aCA9IDgwMDtcbmNvbnN0IG1hcmdpbiA9IHsgdG9wOiAxMCwgcmlnaHQ6IDIwLCBib3R0b206IDEwLCBsZWZ0OiAyMCB9O1xuY29uc3QgZm9udFNpemUgPSBNYXRoLmZsb29yKHdpZHRoIC8gMTAwKTtcbmNvbnN0IG5vZGVQYWRkaW5nID0gZm9udFNpemUgLyAyO1xuY29uc3QgbGluZUhlaWdodCA9IGZvbnRTaXplICogMS4yO1xuY29uc3QgYmFySGVpZ2h0ID0gbGluZUhlaWdodDtcblxuY29uc3Qgbm9kZUhlaWdodCA9IG5vZGVQYWRkaW5nICogMiArIDIgKiBsaW5lSGVpZ2h0ICsgYmFySGVpZ2h0O1xuY29uc3Qgbm9kZVdpZHRoID0gbm9kZUhlaWdodCAqIDIgKiAxLjYxODtcbmNvbnN0IG5vZGVDb250ZW50V2lkdGggPSBub2RlV2lkdGggLSBub2RlUGFkZGluZyAqIDI7XG5jb25zdCBsYXllclNwYWNpbmcgPSAod2lkdGggLSBtYXJnaW4ubGVmdCAtIG1hcmdpbi5yaWdodCAtIG5vZGVXaWR0aCAqIDUpIC8gNDtcbmNvbnN0IG5vZGVNYXJnaW4gPSBub2RlUGFkZGluZyAqIDAuNzU7XG5jb25zdCBub2RlU3BhY2luZ0ZhY3RvciA9IChub2RlSGVpZ2h0ICsgbm9kZU1hcmdpbiAqIDIpIC8gbm9kZUhlaWdodDtcbmNvbnN0IG5vZGVEdXJhdGlvbiA9IDYwMDtcbmNvbnN0IGxpbmtEdXJhdGlvbiA9IDIwMDtcbmNvbnN0IGdyb3VwRGVsYXkgPSBub2RlRHVyYXRpb24gLSAxMDA7XG5jb25zdCBub25MQ0FJbmRpY2F0b3JzSWQgPSAnbm9uTENBSW5kaWNhdG9ycyc7XG5jb25zdCBncmV5ZWRPcGFjaXR5ID0gMC4yO1xuY29uc3QgZGVmYXVsdEluZGljYXRvcnNNb2RlbElkID0gJ2RlZmF1bHRJbmRpY2F0b3JzTW9kZWxJZCc7XG5jb25zdCBkZWZhdWx0SW5kaWNhdG9yc01vZGVsTmFtZSA9ICdEZWZhdWx0IEluZGljYXRvcnMgKG11bHRpLW1vZGVsKSc7XG5jb25zdCBncm91cE92ZXJsYXAgPSBsaW5lSGVpZ2h0IC0gbm9kZVBhZGRpbmcgLSBub2RlTWFyZ2luO1xuY29uc3QgZ3JvdXBOb2RlU3BhY2UgPSBub2RlSGVpZ2h0IC0gMiAqIGdyb3VwT3ZlcmxhcDtcblxuY29uc3QgY29sbGFwc2VDaGlsZHJlbiA9IChub2RlOiBDaGFydE5vZGUgfCBITm9kZSkgPT4ge1xuICBub2RlLl9jaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4gfHwgbm9kZS5fY2hpbGRyZW47XG4gIG5vZGUuY2hpbGRyZW4gPSBudWxsO1xuICByZXR1cm4gbm9kZTtcbn07XG5cbmNvbnN0IHJlc3RvcmVDaGlsZHJlbiA9IChub2RlOiBDaGFydE5vZGUgfCBITm9kZSkgPT4ge1xuICBub2RlLmNoaWxkcmVuID0gbm9kZS5fY2hpbGRyZW47XG4gIG5vZGUuX2NoaWxkcmVuID0gbnVsbDtcbiAgcmV0dXJuIG5vZGU7XG59O1xuXG5jb25zdCB3cmFwID0gKHNlbGVjdGlvbjogU2VsZWN0aW9uPFNWR1RleHRFbGVtZW50LCBDaGFydE5vZGUsIGFueSwgYW55PiwgbWF4V2lkdGggPSBub2RlQ29udGVudFdpZHRoKSA9PiB7XG4gIHNlbGVjdGlvbi5lYWNoKGZ1bmN0aW9uIChkKSB7XG4gICAgY29uc3QgdCA9IGQzU2VsZWN0PFNWR1RleHRFbGVtZW50LCBDaGFydE5vZGU+KHRoaXMpO1xuICAgIGQzd3JhcDxDaGFydE5vZGU+KHQsIHtcbiAgICAgIG1heFdpZHRoLFxuICAgICAgbWF4TGluZXM6IGQuZGF0YS5zaG93QmFyID8gMiA6IDMsXG4gICAgICB2Y2VudHJlOiAhZC5kYXRhLnNob3dCYXIsXG4gICAgICB3b3JkczogWy4uLmQuZGF0YS5sYWJlbC5zcGxpdCgvXFxzKy8pLCBkLmRhdGEudW5pdHNdLFxuICAgICAgb3duTGluZVdvcmQ6IGQuZGF0YS51bml0cyxcbiAgICAgIG5IZWlnaHQ6IG5vZGVIZWlnaHQsXG4gICAgICBsSGVpZ2h0OiBsaW5lSGVpZ2h0XG4gICAgfSk7XG4gIH0pO1xufTtcblxuY29uc3Qgc2V0Tm9kZVNpemUgPSBzZWxlY3Rpb24gPT4gc2VsZWN0aW9uLmF0dHIoJ3dpZHRoJywgbm9kZVdpZHRoKS5hdHRyKCdoZWlnaHQnLCBub2RlSGVpZ2h0KTtcblxuY29uc3QgZm9ybWF0QmFyID0gKHNlbGVjdGlvbjogTm9kZVNlbGVjdGlvbikgPT5cbiAgc2VsZWN0aW9uXG4gICAgLmF0dHIoJ2hlaWdodCcsIGJhckhlaWdodClcbiAgICAuYXR0cigncngnLCAnMScpXG4gICAgLmF0dHIoJ3J5JywgJzEnKVxuICAgIC5hdHRyKCd5Jywgbm9kZUhlaWdodCAtIG5vZGVQYWRkaW5nIC0gYmFySGVpZ2h0KVxuICAgIC5hdHRyKCd4Jywgbm9kZVBhZGRpbmcpO1xuXG5jb25zdCBpc1R5cGVXaXRob3V0VmFsdWUgPSBub2RlRGF0dW0gPT4gW0NoYXJ0Tm9kZVR5cGUuaW5wdXQsIENoYXJ0Tm9kZVR5cGUub3BlcmF0aW9uXS5pbmNsdWRlcyhub2RlRGF0dW0uZGF0YS50eXBlKTtcblxuY29uc3QgZ2V0V2VpZ2h0ZWRWYWx1ZVRleHQgPSBub2RlRGF0dW0gPT5cbiAgYCR7dG9QcmVjaXNpb24obm9kZURhdHVtLmRhdGEud2VpZ2h0ZWRWYWx1ZSwgMyl9JHtcbiAgICBub2RlRGF0dW0ucGFyZW50Py5kYXRhLnZhbHVlID09PSBudWxsXG4gICAgICA/ICcnXG4gICAgICA6IGAgb2YgJHt0b1ByZWNpc2lvbihub2RlRGF0dW0ucGFyZW50Py5kYXRhLnZhbHVlIHx8IG5vZGVEYXR1bS5wYXJlbnQ/LmRhdGEud2VpZ2h0ZWRWYWx1ZSwgMyl9YFxuICB9ICR7bm9kZURhdHVtLnBhcmVudD8uZGF0YS52YWx1ZSA/IG5vZGVEYXR1bS5wYXJlbnQ/LmRhdGEudW5pdHMgOiBub2RlRGF0dW0ucGFyZW50Py5wYXJlbnQ/LmRhdGEudW5pdHN9YDtcblxuY29uc3QgZ2VuZXJhdGVUaXBEYXRhID0gbm9kZURhdHVtID0+ICh7XG4gIGhhc1dlaWdodGVkVmFsdWU6IG5vZGVEYXR1bS5kYXRhLndlaWdodGVkVmFsdWUsXG4gIHdlaWdodGVkVmFsdWVUZXh0OiBnZXRXZWlnaHRlZFZhbHVlVGV4dChub2RlRGF0dW0pLFxuICB2YWx1ZUtleUhyZWY6IGAke3NjaGVtYUJhc2VVcmwoKX0vSW5kaWNhdG9yI3ZhbHVlYCxcbiAgbW9kZWxEb2NzSHJlZjogbm9kZURhdHVtLmRhdGEubW9kZWxEb2NzLFxuICB2YWx1ZVZhbHVlVGV4dDogbm9kZURhdHVtLmRhdGEudmFsdWVcbiAgICA/IGAke3RvUHJlY2lzaW9uKG5vZGVEYXR1bS5kYXRhLnZhbHVlLCAzKX0gJHtub2RlRGF0dW0uZGF0YS51bml0c30gLSBgXG4gICAgOiBpc1R5cGVXaXRob3V0VmFsdWUobm9kZURhdHVtKVxuICAgICAgPyAnbm8gZGF0YSAodW5kZXIgZGV2ZWxvcG1lbnQpJ1xuICAgICAgOiAnbm8gY29udHJpYnV0aW9uJyxcbiAgaGFzVmFsdWU6IG5vZGVEYXR1bS5kYXRhLnZhbHVlLFxuICBtb2RlbEtleUhyZWY6IGAke3NjaGVtYUJhc2VVcmwoKX0vSW5kaWNhdG9yI21ldGhvZE1vZGVsYCxcbiAgbW9kZWxWYWx1ZTogbm9kZURhdHVtLmRhdGEubW9kZWxOYW1lLFxuICBtb2RlbFZhbHVlSHJlZjogYCR7YmFzZVVybCgpfS9tb2RlbC8ke25vZGVEYXR1bS5kYXRhLm1vZGVsSWR9YCxcbiAgdGVybUtleUhyZWY6IGAke3NjaGVtYUJhc2VVcmwoKX0vSW5kaWNhdG9yI3Rlcm1gLFxuICB0ZXJtVmFsdWU6IG5vZGVEYXR1bS5kYXRhLnRlcm0sXG4gIHRlcm1WYWx1ZVRleHQ6IG5vZGVEYXR1bS5kYXRhLnRlcm0sXG4gIHRlcm1WYWx1ZUhyZWY6IGAke2Jhc2VVcmwoKX0vdGVybS8ke25vZGVEYXR1bS5kYXRhLmlkfWBcbn0pO1xuXG5jb25zdCBhZGRUb29sdGlwID0gKFxuICBzZWxlY3Rpb246IE5vZGVTZWxlY3Rpb24sXG4gIHsgdG9vbHRpcE9wZXJhdG9yLCB6b25lIH06IHsgdG9vbHRpcE9wZXJhdG9yOiBOZ2JQb3BvdmVyOyB6b25lOiBOZ1pvbmUgfVxuKSA9PiB7XG4gIGxldCBob3ZlcmluZ1RpcCA9IGZhbHNlO1xuICBsZXQgaG92ZXJpbmdOb2RlID0gZmFsc2U7XG4gIGxldCBsYXN0Tm9kZUlkOiBzdHJpbmc7XG5cbiAgY29uc3QgY2xvc2VUaXAgPSAoKSA9PiB7XG4gICAgem9uZS5ydW4oKCkgPT4gdG9vbHRpcE9wZXJhdG9yLmNsb3NlKGZhbHNlKSk7XG4gICAgc2VsZWN0QWxsKCcudGlwLXRhcmdldCcpLmNsYXNzZWQoJ3RpcC10YXJnZXQnLCBmYWxzZSk7XG4gICAgbGFzdE5vZGVJZCA9IG51bGw7XG4gIH07XG5cbiAgY29uc3Qgc3RhcnRDbG9zZVRpcCA9ICgpID0+IHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghaG92ZXJpbmdUaXAgJiYgIWhvdmVyaW5nTm9kZSkge1xuICAgICAgICBjbG9zZVRpcCgpO1xuICAgICAgfVxuICAgIH0sIDEwMCk7XG4gIH07XG5cbiAgc2VsZWN0aW9uXG4gICAgLm9uKCdjbGljaycsIGNsb3NlVGlwKVxuICAgIC5vbigncG9pbnRlcmVudGVyJywgKGV2ZW50LCBub2RlRGF0dW0pID0+IHtcbiAgICAgIGhvdmVyaW5nTm9kZSA9IHRydWU7XG4gICAgICBpZiAobGFzdE5vZGVJZCA9PT0gbm9kZURhdHVtLmRhdGEuaWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2xvc2VUaXAoKTtcbiAgICAgIGxhc3ROb2RlSWQgPSBub2RlRGF0dW0uZGF0YS5pZDtcbiAgICAgIGQzU2VsZWN0KGV2ZW50LnRhcmdldCkuY2xhc3NlZCgndGlwLXRhcmdldCcsIHRydWUpO1xuICAgICAgem9uZS5ydW4oKCkgPT4gdG9vbHRpcE9wZXJhdG9yLm9wZW4oeyB0aXBEYXRhOiBnZW5lcmF0ZVRpcERhdGEobm9kZURhdHVtKSB9KSk7XG5cbiAgICAgIGQzU2VsZWN0KCcuZHJpdmVyLWNoYXJ0LXRvb2x0aXAnKVxuICAgICAgICAub24oJ3BvaW50ZXJlbnRlcicsICgpID0+IHtcbiAgICAgICAgICBob3ZlcmluZ1RpcCA9IHRydWU7XG4gICAgICAgIH0pXG4gICAgICAgIC5vbigncG9pbnRlcmxlYXZlJywgKCkgPT4ge1xuICAgICAgICAgIGhvdmVyaW5nVGlwID0gZmFsc2U7XG4gICAgICAgICAgc3RhcnRDbG9zZVRpcCgpO1xuICAgICAgICB9KTtcbiAgICB9KVxuICAgIC5vbigncG9pbnRlcmxlYXZlJywgKCkgPT4ge1xuICAgICAgaG92ZXJpbmdOb2RlID0gZmFsc2U7XG4gICAgICBzdGFydENsb3NlVGlwKCk7XG4gICAgfSk7XG5cbiAgcmV0dXJuIHNlbGVjdGlvbjtcbn07XG5cbmNvbnN0IG1lcmdlZE5vZGVzID0gKHNlbGVjdGlvbjogTm9kZVNlbGVjdGlvbiwgeyB0b29sdGlwT3BlcmF0b3IsIHpvbmUgfSkgPT4ge1xuICBzZWxlY3Rpb25cbiAgICAuc2VsZWN0QWxsPFNWR1JlY3RFbGVtZW50LCBDaGFydE5vZGU+KCcubm9kZS1ib3gnKVxuICAgIC5jbGFzc2VkKCdub2RlLW9wZW5hYmxlJywgZCA9PiAhIWQuaGVpZ2h0KVxuICAgIC5jbGFzc2VkKCdub2RlLW9wZW4nLCBkID0+IGQuX29wZW4pXG4gICAgLmNhbGwoc2V0Tm9kZVNpemUpXG4gICAgLmF0dHIoJ3N0cm9rZScsICh7IGRhdGEgfSkgPT4gbm9kZUNvbG91cnNbZGF0YS50eXBlXSlcbiAgICAuYXR0cignZmlsbCcsIGQgPT4gbm9kZUNvbG91cnNbZC5kYXRhLnR5cGVdKVxuICAgIC5zdHlsZSgndXNlci1zZWxlY3QnLCB3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCA/ICdub25lJyA6IG51bGwpO1xuXG4gIHNlbGVjdGlvbi5maWx0ZXIoZCA9PiAhZC5kYXRhLmdyb3VwICYmIGQuZGF0YS5pZCAhPT0gbm9uTENBSW5kaWNhdG9yc0lkKS5jYWxsKGFkZFRvb2x0aXAsIHsgdG9vbHRpcE9wZXJhdG9yLCB6b25lIH0pO1xuXG4gIHNlbGVjdGlvblxuICAgIC5zZWxlY3RBbGw8U1ZHVGV4dEVsZW1lbnQsIENoYXJ0Tm9kZT4oJy5ub2RlLWxhYmVsJylcbiAgICAuYXR0cigneScsIGQgPT4gKGQuZGF0YS5zaG93QmFyID8gbGluZUhlaWdodCAvIDIgKyBub2RlUGFkZGluZyAvIDIgOiAwKSlcbiAgICAuYXR0cigneCcsIG5vZGVXaWR0aCAvIDIpO1xuXG4gIGNvbnN0IGdyb3VwcyA9IHNlbGVjdGlvbi5maWx0ZXIoZCA9PiBkLmRhdGEuZ3JvdXApO1xuXG4gIGdyb3Vwc1xuICAgIC5zZWxlY3RBbGw8U1ZHVGV4dEVsZW1lbnQsIENoYXJ0Tm9kZT4oJy5ncm91cC1ib3JkZXInKVxuICAgIC5hdHRyKCd3aWR0aCcsIG5vZGVXaWR0aCArIG5vZGVQYWRkaW5nICogMilcbiAgICAuYXR0cigneCcsIC1ub2RlUGFkZGluZylcbiAgICAuYXR0cigneScsIG5vZGVIZWlnaHQgLSAobGluZUhlaWdodCArIG5vZGVQYWRkaW5nICogMikpXG4gICAgLmF0dHIoJ29wYWNpdHknLCBkID0+IChkLl9ncmV5ZWQgJiYgZC5fZ3JvdXBPcGVuID8gZ3JleWVkT3BhY2l0eSA6IGQuX2dyb3VwT3BlbiA/IDEgOiAwKSlcbiAgICAuYXR0cihcbiAgICAgICdoZWlnaHQnLFxuICAgICAgZCA9PlxuICAgICAgICBNYXRoLmFicyhkLnBhcmVudC5fZ3JvdXBDaGlsZHJlbi5sZW5ndGggLSBkLnBhcmVudC5jaGlsZHJlbi5sZW5ndGgpICogKG5vZGVIZWlnaHQgKiBub2RlU3BhY2luZ0ZhY3RvcikgK1xuICAgICAgICBub2RlUGFkZGluZyArXG4gICAgICAgIChsaW5lSGVpZ2h0ICsgbm9kZVBhZGRpbmcgKiAyKSAvIDJcbiAgICApO1xuXG4gIGNvbnN0IGdyb3VwTGFiZWxzID0gZ3JvdXBzXG4gICAgLnNlbGVjdEFsbDxTVkdUZXh0RWxlbWVudCwgQ2hhcnROb2RlPignLmdyb3VwLWxhYmVsJylcbiAgICAuYXR0cigneScsIG5vZGVIZWlnaHQgLyAyKVxuICAgIC5hdHRyKCd4Jywgbm9kZVBhZGRpbmcpXG4gICAgLnRleHQoZCA9PiBkLmRhdGEubGFiZWwpXG4gICAgLmF0dHIoJ29wYWNpdHknLCBkID0+IChkLl9ncm91cE9wZW4gPyAwIDogZC5fZ3JleWVkID8gZ3JleWVkT3BhY2l0eSA6IDEpKTtcblxuICAvLyB1bm5lZWRlZCB3aXRoIGN1cnJlbnQgZGltZW5zaW9uc1xuICAvLyBncm91cExhYmVscy5lYWNoKGZ1bmN0aW9uKCkge1xuICAvLyAgIGNvbnN0IHRleHQgPSBkM1NlbGVjdDxTVkdUZXh0RWxlbWVudCwgQ2hhcnROb2RlPih0aGlzKTtcbiAgLy8gICBjb25zdCB0ZXh0V2lkdGggPSAodGV4dC5ub2RlKCkgYXMgU1ZHVGV4dEVsZW1lbnQpLmdldENvbXB1dGVkVGV4dExlbmd0aCgpO1xuICAvLyAgIGNvbnN0IGxpbmUgPSBkM1NlbGVjdDxTVkdMaW5lRWxlbWVudCwgQ2hhcnROb2RlPih0aGlzLm5leHRTaWJsaW5nIGFzIFNWR0xpbmVFbGVtZW50KTtcbiAgLy8gICBsaW5lXG4gIC8vICAgICAuY2xhc3NlZCgnZ3JvdXAtbGluZScsIHRydWUpXG4gIC8vICAgICAuYXR0cigneDEnLCB0ZXh0V2lkdGggKyBub2RlUGFkZGluZyAqIDIpXG4gIC8vICAgICAuYXR0cigneTEnLCBub2RlSGVpZ2h0IC8gMilcbiAgLy8gICAgIC5hdHRyKCd4MicsIChub2RlV2lkdGggKiA1KSAvIDcgLSBub2RlUGFkZGluZylcbiAgLy8gICAgIC5hdHRyKCd5MicsIG5vZGVIZWlnaHQgLyAyKVxuICAvLyAgICAgLmF0dHIoJ29wYWNpdHknLCAoZCkgPT4gKGQuX2dyb3VwT3BlbiA/IDAgOiBkLl9ncmV5ZWQgPyBncmV5ZWRPcGFjaXR5IDogMSkpO1xuICAvLyB9KTtcblxuICBjb25zdCBzZXRHcm91cEJ1dHRvblhZID0gc2VsID0+XG4gICAgc2VsXG4gICAgICAuYXR0cignd2lkdGgnLCAobm9kZVdpZHRoICogMikgLyA3KVxuICAgICAgLmF0dHIoJ2hlaWdodCcsIGQgPT4gKGQuX2dyb3VwT3BlbiA/IGxpbmVIZWlnaHQgKyBub2RlUGFkZGluZyAqIDIgOiBub2RlUGFkZGluZyAqIDIgKyBsaW5lSGVpZ2h0KSlcbiAgICAgIC5hdHRyKCd4JywgZCA9PiAoZC5fZ3JvdXBPcGVuID8gKG5vZGVXaWR0aCAqIDIuNSkgLyA3IDogKG5vZGVXaWR0aCAqIDUpIC8gNyAtIG5vZGVQYWRkaW5nKSlcbiAgICAgIC5hdHRyKCd5JywgZCA9PlxuICAgICAgICBkLl9ncm91cE9wZW5cbiAgICAgICAgICA/IGdyb3VwT3ZlcmxhcCArIChncm91cE5vZGVTcGFjZSAtIChsaW5lSGVpZ2h0ICsgbm9kZVBhZGRpbmcgKiAyKSkgLyAyXG4gICAgICAgICAgOiBub2RlUGFkZGluZyArIGxpbmVIZWlnaHQgLyAyXG4gICAgICApO1xuXG4gIGdyb3Vwc1xuICAgIC5zZWxlY3RBbGw8U1ZHUmVjdEVsZW1lbnQsIENoYXJ0Tm9kZT4oJy5ncm91cC1idXR0b24nKVxuICAgIC5jYWxsKHNldEdyb3VwQnV0dG9uWFkpXG4gICAgLnN0eWxlKCdwb2ludGVyLWV2ZW50cycsIGQgPT4gKGQuX2dyZXllZCA/ICdub25lJyA6ICdhdXRvJykpXG4gICAgLnN0eWxlKCdzdHJva2Utb3BhY2l0eScsIGQgPT4gKGQuX2dyZXllZCA/IGdyZXllZE9wYWNpdHkgOiAxKSk7XG5cbiAgZ3JvdXBzXG4gICAgLnNlbGVjdEFsbDxTVkdUZXh0RWxlbWVudCwgQ2hhcnROb2RlPignLmdyb3VwLWJ1dHRvbi10ZXh0JylcbiAgICAudGV4dChkID0+IChkLl9ncm91cE9wZW4gPyAnSGlkZScgOiAnU2hvdycpKVxuICAgIC5hdHRyKCd4JywgZCA9PiAoZC5fZ3JvdXBPcGVuID8gbm9kZVdpZHRoIC8gMiA6IChub2RlV2lkdGggKiA2KSAvIDcgLSBub2RlUGFkZGluZykpXG4gICAgLmF0dHIoJ3knLCBkID0+IChkLl9ncm91cE9wZW4gPyBub2RlTWFyZ2luICsgbGluZUhlaWdodCArIGxpbmVIZWlnaHQgLyAyIDogbm9kZUhlaWdodCAvIDIpKVxuICAgIC5hdHRyKCdmb250LXNpemUnLCAoKSA9PiBgJHtmb250U2l6ZSAqIDEuM31weGApO1xuXG4gIHNlbGVjdGlvbi5zZWxlY3RBbGwoJy5zaWJsaW5nLW1hc2snKS5yZW1vdmUoKTtcblxuICBzZWxlY3Rpb25cbiAgICAuZmlsdGVyKGQgPT4gZC5fZ3JleWVkICYmICFkLmRhdGEuZ3JvdXApXG4gICAgLmFwcGVuZCgncmVjdCcpXG4gICAgLmNsYXNzZWQoJ25vZGUtb3BlbmFibGUnLCBkID0+ICEhZC5oZWlnaHQpXG4gICAgLmNsYXNzZWQoJ3NpYmxpbmctbWFzayBtYXNrLW9wZW5hYmxlJywgdHJ1ZSlcbiAgICAuY2FsbChzZXROb2RlU2l6ZSk7XG5cbiAgc2VsZWN0aW9uXG4gICAgLmZpbHRlcihkID0+IGQuX2dyZXllZCAmJiBkLmRhdGEuZ3JvdXApXG4gICAgLmFwcGVuZCgncmVjdCcpXG4gICAgLmNsYXNzZWQoJ3NpYmxpbmctbWFzaycsIHRydWUpXG4gICAgLmNhbGwoc2V0R3JvdXBCdXR0b25YWSk7XG5cbiAgcmV0dXJuIHNlbGVjdGlvbjtcbn07XG5cbmNvbnN0IGVudGVyTm9kZXMgPSAoc2VsZWN0aW9uOiBOb2RlU2VsZWN0aW9uKSA9PiB7XG4gIGNvbnN0IG5vZGVzID0gc2VsZWN0aW9uLmZpbHRlcihkID0+IGQuZGF0YS50eXBlICE9PSBDaGFydE5vZGVUeXBlLnJvb3QgJiYgIWQuZGF0YS5ncm91cCk7XG5cbiAgbm9kZXMuYXBwZW5kKCdyZWN0JykuY2xhc3NlZCgnbm9kZS1ib3gnLCB0cnVlKTtcblxuICBub2Rlc1xuICAgIC5hcHBlbmQoJ3RleHQnKVxuICAgIC5jbGFzc2VkKCdub2RlLWxhYmVsJywgdHJ1ZSlcbiAgICAudGV4dCgoeyBkYXRhIH0pID0+IGRhdGEubGFiZWwgKyAnICcgKyBkYXRhLnVuaXRzKVxuICAgIC5hdHRyKCdvcGFjaXR5JywgMCk7XG5cbiAgLy8gVGV4dCBlbGVtZW50cyBtdXN0IGJlIHJlbmRlcmVkIGJlZm9yZSB3ZSBjYW4gY2FsY3VsYXRlIHdyYXBwaW5nXG4gIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGNvbnN0IGxhYmVscyA9IG5vZGVzLnNlbGVjdEFsbDxTVkdUZXh0RWxlbWVudCwgQ2hhcnROb2RlPignLm5vZGUtbGFiZWwnKS5jYWxsKHdyYXApO1xuICAgIGxhYmVscy5hdHRyKCdvcGFjaXR5JywgMSk7XG4gIH0pO1xuXG4gIGNvbnN0IGdyb3VwcyA9IHNlbGVjdGlvbi5maWx0ZXIoZCA9PiBkLmRhdGEuZ3JvdXApO1xuXG4gIGdyb3Vwcy5hcHBlbmQoJ3JlY3QnKS5hdHRyKCdjbGFzcycsICdncm91cC1ib3JkZXInKTtcbiAgZ3JvdXBzLmFwcGVuZCgndGV4dCcpLmF0dHIoJ2NsYXNzJywgJ2dyb3VwLWxhYmVsJyk7XG4gIC8vIGdyb3Vwcy5hcHBlbmQoJ2xpbmUnKS5hdHRyKCdjbGFzcycsICdncm91cC1saW5lJyk7XG4gIGdyb3Vwcy5hcHBlbmQoJ3JlY3QnKS5hdHRyKCdjbGFzcycsICdncm91cC1idXR0b24nKTtcbiAgZ3JvdXBzLmFwcGVuZCgndGV4dCcpLmF0dHIoJ2NsYXNzJywgJ2dyb3VwLWJ1dHRvbi10ZXh0Jyk7XG5cbiAgY29uc3Qgd2l0aEJhciA9IG5vZGVzLmZpbHRlcihkID0+IGQuZGF0YS5zaG93QmFyKTtcblxuICB3aXRoQmFyXG4gICAgLmZpbHRlcihkID0+IGQuZGF0YS5mcmFjdGlvbiA+IDApXG4gICAgLmFwcGVuZCgncmVjdCcpXG4gICAgLmNsYXNzZWQoJ2Jhci1iYWNrZ3JvdW5kJywgdHJ1ZSlcbiAgICAuYXR0cignd2lkdGgnLCBub2RlQ29udGVudFdpZHRoKVxuICAgIC5jYWxsKGZvcm1hdEJhcik7XG5cbiAgd2l0aEJhclxuICAgIC5hcHBlbmQoJ3JlY3QnKVxuICAgIC5jbGFzc2VkKCdiYXItZm9yZWdyb3VuZCcsIHRydWUpXG4gICAgLmNhbGwoZm9ybWF0QmFyKVxuICAgIC5hdHRyKCd3aWR0aCcsIGQgPT4gZC5kYXRhLmZyYWN0aW9uICogbm9kZUNvbnRlbnRXaWR0aClcbiAgICAuYXR0cignZmlsbCcsIGQgPT4gbm9kZUNvbG91cnNbZC5kYXRhLnR5cGVdKTtcblxuICB3aXRoQmFyXG4gICAgLmFwcGVuZCgndGV4dCcpXG4gICAgLmNsYXNzZWQoJ2Jhci1sYWJlbCcsIHRydWUpXG4gICAgLnRleHQoKHsgZGF0YSB9KSA9PlxuICAgICAgZGF0YS5mcmFjdGlvbiA9PT0gMFxuICAgICAgICA/ICdubyBjb250cmlidXRpb24nXG4gICAgICAgIDogYCR7TWF0aC5yb3VuZCgxMDAgKiBkYXRhLmZyYWN0aW9uKX0lICR7TWF0aC5yb3VuZCgxMDAgKiBkYXRhLmZyYWN0aW9uKSA9PT0gMCA/ICcgKHJvdW5kZWQpJyA6ICcnfWBcbiAgICApXG4gICAgLmF0dHIoJ3RleHQtYW5jaG9yJywgZCA9PiAoZC5kYXRhLmZyYWN0aW9uID09PSAwID8gJ21pZGRsZScgOiBkLmRhdGEuZnJhY3Rpb24gPiAwLjcgPyAnZW5kJyA6ICdzdGFydCcpKVxuICAgIC5hdHRyKCd4JywgZCA9PlxuICAgICAgZC5kYXRhLmZyYWN0aW9uID09PSAwXG4gICAgICAgID8gbm9kZVdpZHRoIC8gMlxuICAgICAgICA6IGQuZGF0YS5mcmFjdGlvbiAqIG5vZGVDb250ZW50V2lkdGggKyBub2RlUGFkZGluZyArIChkLmRhdGEuZnJhY3Rpb24gPiAwLjcgPyAtNCA6IDQpXG4gICAgKVxuICAgIC5hdHRyKCd5Jywgbm9kZUhlaWdodCAtIG5vZGVQYWRkaW5nIC0gYmFySGVpZ2h0IC8gMik7XG5cbiAgcmV0dXJuIHNlbGVjdGlvbjtcbn07XG5cbmNvbnN0IG1lcmdlZExpbmtzID0gKHNlbGVjdGlvbjogTGlua1NlbGVjdGlvbiwgeyB0b2dnbGluZ0dyb3VwLCBzd2l0Y2hpbmdTZWxlY3Rpb24gfSkgPT5cbiAgc2VsZWN0aW9uXG4gICAgLnN0eWxlKCdzdHJva2UnLCBkID0+IHtcbiAgICAgIGNvbnN0IGNvbG91cnMgPSB7XG4gICAgICAgIFtDaGFydE5vZGVUeXBlLm1pZHBvaW50XTogbm9kZUNvbG91cnNbQ2hhcnROb2RlVHlwZS5taWRwb2ludF0sXG4gICAgICAgIFtDaGFydE5vZGVUeXBlLmVuZHBvaW50XTogbm9kZUNvbG91cnNbQ2hhcnROb2RlVHlwZS5lbmRwb2ludF0sXG4gICAgICAgIFtDaGFydE5vZGVUeXBlLmVtaXNzaW9uXTogbm9kZUNvbG91cnNbQ2hhcnROb2RlVHlwZS5lbWlzc2lvbl1cbiAgICAgIH07XG4gICAgICByZXR1cm4gKGQudGFyZ2V0Ll9vcGVuICYmIGNvbG91cnNbZC5zb3VyY2UuZGF0YS50eXBlXSkgfHwgbnVsbDtcbiAgICB9KVxuICAgIC5hdHRyKCdzdHJva2UtZGFzaGFycmF5JywgZCA9PiAoZC50YXJnZXQuZGF0YS5ncm91cCA/ICcyLDUnIDogbnVsbCkpXG4gICAgLmF0dHIoJ3N0cm9rZS13aWR0aCcsIGQgPT4gKGQudGFyZ2V0Ll9vcGVuID8gMyA6IGQudGFyZ2V0Ll9ncm91cE9wZW4gPyAwIDogMikpXG4gICAgLmF0dHIoJ3N0cm9rZS1vcGFjaXR5JywgZCA9PiAoZC50YXJnZXQuX2dyZXllZCA/IDAuMSA6IDAuNikpXG4gICAgLnRyYW5zaXRpb24oKVxuICAgIC5kdXJhdGlvbihsaW5rRHVyYXRpb24pXG4gICAgLmRlbGF5KGQgPT4ge1xuICAgICAgY29uc3QgZ3JvdXBDbG9zaW5nID0gdG9nZ2xpbmdHcm91cCAmJiAhZC50YXJnZXQucGFyZW50Py5jaGlsZHJlbj8uZmluZChuID0+IG4uZGF0YS5ncm91cCk/Ll9ncm91cE9wZW47XG4gICAgICByZXR1cm4gZ3JvdXBDbG9zaW5nXG4gICAgICAgID8gZ3JvdXBEZWxheVxuICAgICAgICA6IChzd2l0Y2hpbmdTZWxlY3Rpb24gPyBub2RlRHVyYXRpb24gOiAwKSArIGQuc291cmNlLmNoaWxkcmVuPy5pbmRleE9mKGQudGFyZ2V0KSAqIDEwO1xuICAgIH0pXG4gICAgLmF0dHIoJ29wYWNpdHknLCAxKVxuICAgIC5hdHRyKCdkJywgZCA9PiB7XG4gICAgICBjb25zdCB0YXJnZXREeSA9IGQudGFyZ2V0Ll9ncm91cE9wZW4gPyBub2RlUGFkZGluZyArIGxpbmVIZWlnaHQgLyAyICsgbm9kZU1hcmdpbiAqIDIgOiBub2RlSGVpZ2h0IC8gMjtcbiAgICAgIHJldHVybiBkM0xpbmtIb3Jpem9udGFsKCkoe1xuICAgICAgICBzb3VyY2U6IFtkLnNvdXJjZS55ICsgbm9kZVdpZHRoLCBkLnNvdXJjZS54ICsgbm9kZUhlaWdodCAvIDJdLFxuICAgICAgICB0YXJnZXQ6IFtkLnRhcmdldC55LCBkLnRhcmdldC54ICsgdGFyZ2V0RHldXG4gICAgICB9KTtcbiAgICB9KTtcblxuY29uc3QgZ3JvdXBCeVBlcmNlbnRhZ2UgPSBub2RlID0+XG4gIFtDaGFydE5vZGVUeXBlLmVuZHBvaW50LCBDaGFydE5vZGVUeXBlLm1pZHBvaW50LCBDaGFydE5vZGVUeXBlLmVtaXNzaW9uXS5pbmNsdWRlcyhub2RlLmRhdGEudHlwZSk7XG5cbmNvbnN0IGdyb3VwUGVyY2VudGFnZSA9IChub2RlLCBwZXJjZW50YWdlID0gMC4wMikgPT4ge1xuICBjb25zdCBncm91cGVkID0gbm9kZS5fY2hpbGRyZW4/LmZpbHRlcihjaGlsZCA9PiBjaGlsZC5kYXRhLmZyYWN0aW9uIDwgcGVyY2VudGFnZSk7XG4gIGlmIChub2RlLl9jaGlsZHJlbj8ubGVuZ3RoID4gNiAmJiBncm91cGVkPy5sZW5ndGggPiAxKSB7XG4gICAgY29uc3QgdHlwZSA9IG5vZGUuX2NoaWxkcmVuWzBdLmRhdGEudHlwZTtcbiAgICBjb25zdCBncm91cE5vZGUgPSB7XG4gICAgICAuLi5kM0hpZXJhcmNoeSh7XG4gICAgICAgIGlkOiBgJHt0eXBlfS1ncm91cGAsXG4gICAgICAgIGxhYmVsOiBgJHtncm91cGVkLmxlbmd0aH0gbW9yZSB1bmRlciAke01hdGgucm91bmQocGVyY2VudGFnZSAqIDEwMCl9JS5gLFxuICAgICAgICB3ZWlnaHRlZFZhbHVlOiBudWxsLFxuICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgZ3JvdXA6IHRydWVcbiAgICAgIH0pLFxuICAgICAgZGVwdGg6IG5vZGUuZGVwdGggKyAxLFxuICAgICAgaGVpZ2h0OiAxLFxuICAgICAgcGFyZW50OiBub2RlXG4gICAgfTtcbiAgICBjb25zdCBub3RHcm91cGVkID0gbm9kZS5fY2hpbGRyZW4/LmZpbHRlcihjaGlsZCA9PiBjaGlsZC5kYXRhLmZyYWN0aW9uID49IHBlcmNlbnRhZ2UpO1xuICAgIG5vZGUuX2NoaWxkcmVuLnNwbGljZShub3RHcm91cGVkLmxlbmd0aCwgMCwgZ3JvdXBOb2RlKTtcbiAgICBub3RHcm91cGVkLnB1c2goZ3JvdXBOb2RlKTtcbiAgICBub2RlLl9ncm91cENoaWxkcmVuID0gbm9kZS5fY2hpbGRyZW47XG4gICAgbm9kZS5fY2hpbGRyZW4gPSBub3RHcm91cGVkO1xuICB9XG59O1xuXG5jb25zdCBzaG93QmFyID0gbm9kZSA9PlxuICBbXG4gICAgbm9kZS5wYXJlbnQ/LmRhdGEudHlwZSAhPT0gQ2hhcnROb2RlVHlwZS5yb290LFxuICAgIG5vZGUucGFyZW50Py5kYXRhLmlkICE9PSBub25MQ0FJbmRpY2F0b3JzSWQsXG4gICAgIW5vZGUuZGF0YS5ncm91cCxcbiAgICBub2RlLmRhdGEuZnJhY3Rpb24gPj0gMFxuICBdLmV2ZXJ5KEJvb2xlYW4pO1xuXG5jb25zdCBnZXRVbml0c0FuZExhYmVsID0gKHRlcm06IFBhcnRpYWw8SVRlcm1KU09OTEQgfCBUZXJtPiwgZmFsbGJhY2tMYWJlbCA9ICd1bmtub3duIHRlcm0nKSA9PiB7XG4gIGNvbnN0IGxhYmVsID0gdGVybT8ubmFtZSB8fCB0ZXJtPy5bJ0BpZCddIHx8IGZhbGxiYWNrTGFiZWw7XG4gIGNvbnN0IHVuaXRzID0gYCgke3Rlcm0/LnVuaXRzIHx8ICd1bmtub3duIHVuaXRzJ30pYDtcbiAgcmV0dXJuIHsgbGFiZWw6IGxhYmVsLnJlcGxhY2UodW5pdHMsICcnKS50cmltKCksIHRlcm06IGxhYmVsLCB1bml0cyB9O1xufTtcblxuY29uc3QgcXVlcnkgPSBzaG91bGQgPT4gKHtcbiAgZmllbGRzOiBbJ0B0eXBlJywgJ0BpZCcsICduYW1lJywgJ3VuaXRzJywgJ3Rlcm1UeXBlJ10sXG4gIGxpbWl0OiAxMDAwMCxcbiAgcXVlcnk6IHtcbiAgICBib29sOiB7XG4gICAgICBtdXN0OiBbbWF0Y2hUeXBlKE5vZGVUeXBlLlRlcm0pXSxcbiAgICAgIHNob3VsZCxcbiAgICAgIG1pbmltdW1fc2hvdWxkX21hdGNoOiAxXG4gICAgfVxuICB9XG59KTtcblxudHlwZSB0ZXJtID0gSVRlcm1KU09OTEQgJiBJU2VhcmNoUmVzdWx0RXh0ZW5kZWQgJiB7IGRvY3M/OiBzdHJpbmcgfTtcblxuY29uc3QgbGVnZW5kID0gW1xuICB7IHR5cGU6IENoYXJ0Tm9kZVR5cGUuZW5kcG9pbnQsIG1vYmlsZVRleHQ6ICdFbmRwb2ludCcsIHRleHQ6ICdFbmRwb2ludCBJbmRpY2F0b3InIH0sXG4gIHsgdHlwZTogQ2hhcnROb2RlVHlwZS5taWRwb2ludCwgdGV4dDogJ0NoYXJhY3RlcmlzZWQgSW5kaWNhdG9yJywgbW9iaWxlVGV4dDogJ0ltcGFjdCcgfSxcbiAgeyB0eXBlOiBDaGFydE5vZGVUeXBlLmVtaXNzaW9uLCBtb2JpbGVUZXh0OiAnRW1pc3Npb24nLCB0ZXh0OiAnRW1pc3Npb24gb3IgUmVzb3VyY2UgVXNlJyB9LFxuICB7IHR5cGU6IENoYXJ0Tm9kZVR5cGUuaW5wdXQsIHRleHQ6ICdJbnB1dCcsIG1vYmlsZVRleHQ6ICdJbnB1dCcgfSxcbiAgeyB0eXBlOiBDaGFydE5vZGVUeXBlLm9wZXJhdGlvbiwgdGV4dDogJ09wZXJhdGlvbicsIG1vYmlsZVRleHQ6ICdPcGVyYXRpb24nIH1cbl07XG5cbmNvbnN0IHdhcm5pbmdzID0gKGxvZ3M6IElMb2dbXSwgdGVybXM6IHsgW2lkOiBzdHJpbmddOiB0ZXJtIH0pID0+XG4gIFshbG9ncy5ldmVyeShsb2cgPT4gdGVybXNbbG9nLmluZGljYXRvcl0gJiYgdGVybXNbbG9nLmNvbnRyaWJ1dG9yXSkgJiYgJ21pc3NpbmctdGVybXMnXS5maWx0ZXIoQm9vbGVhbik7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWltcGFjdC1hc3Nlc3NtZW50cy1ncmFwaCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbXBhY3QtYXNzZXNzbWVudHMtZ3JhcGguY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbXBhY3QtYXNzZXNzbWVudHMtZ3JhcGguY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0ZhSWNvbkNvbXBvbmVudCwgRm9ybXNNb2R1bGUsIE5nYlBvcG92ZXJdXG59KVxuZXhwb3J0IGNsYXNzIEltcGFjdEFzc2Vzc21lbnRzR3JhcGhDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBpbml0aWFsVGVybXM6IHsgW2lkOiBzdHJpbmddOiB0ZXJtIH07XG4gIHByaXZhdGUgYWxsVGVybXM6IHsgW2lkOiBzdHJpbmddOiB0ZXJtIH07XG5cbiAgcHJpdmF0ZSByb290PzogSE5vZGU7XG4gIHByaXZhdGUgbm9kZTogTm9kZVNlbGVjdGlvbjtcbiAgcHJpdmF0ZSBsaW5rOiBMaW5rU2VsZWN0aW9uO1xuICBwcml2YXRlIHN2ZzogU2VsZWN0aW9uPFNWR1NWR0VsZW1lbnQsIGFueSwgSFRNTEVsZW1lbnQsIHVua25vd24+O1xuICBwcml2YXRlIHlNaW46IG51bWJlcjtcbiAgcHJpdmF0ZSB5VG90YWw6IG51bWJlcjtcbiAgcHJpdmF0ZSBsb2dzQWxsTW9kZWxzOiBJTG9nW107XG5cbiAgcHJpdmF0ZSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlID0gaW5qZWN0KEhlU2VhcmNoU2VydmljZSk7XG4gIHByaXZhdGUgbm9kZVNlcnZpY2UgPSBpbmplY3QoSGVOb2RlU2VydmljZSk7XG4gIHByaXZhdGUgZW5naW5lU2VydmljZSA9IGluamVjdChIZUVuZ2luZVNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmYVNwaW5uZXIgPSBmYVNwaW5uZXI7XG4gIHByb3RlY3RlZCByZWFkb25seSBmYUV4Y2xhbWF0aW9uVHJpYW5nbGUgPSBmYUV4Y2xhbWF0aW9uVHJpYW5nbGU7XG4gIHByb3RlY3RlZCByZWFkb25seSBmYUV4dGVybmFsTGlua0FsdCA9IGZhRXh0ZXJuYWxMaW5rQWx0O1xuXG4gIEBWaWV3Q2hpbGQoJ2NoYXJ0JylcbiAgcHJpdmF0ZSBjaGFydFJlZj86IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgndCcpXG4gIHByaXZhdGUgdG9vbHRpcE9wZXJhdG9yPzogTmdiUG9wb3ZlcjtcblxuICBASW5wdXQoKVxuICBwcml2YXRlIGltcGFjdEFzc2Vzc21lbnRzOiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRFtdID0gW107XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgZGF0YVN0YXRlID0gRGF0YVN0YXRlLnJlY2FsY3VsYXRlZDtcblxuICBwdWJsaWMgbG9hZGluZyA9IHRydWU7XG4gIHB1YmxpYyBub2RlQ29sb3VycyA9IG5vZGVDb2xvdXJzO1xuICBwdWJsaWMgbm9EYXRhID0gZmFsc2U7XG4gIHB1YmxpYyBlcnJvcj86IGFueTtcbiAgcHVibGljIHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgc2hvd1dhcm5pbmdzID0gZmFsc2U7XG4gIHB1YmxpYyBzZWxlY3RlZEltcGFjdEFzc2Vzc21lbnRJZDogc3RyaW5nO1xuICBwdWJsaWMgZmlsdGVyZWRJbXBhY3RBc3Nlc3NtZW50czogSUltcGFjdEFzc2Vzc21lbnRKU09OTERbXTtcbiAgcHVibGljIHNlbGVjdGVkTW9kZWxJZDogc3RyaW5nO1xuICBwdWJsaWMgbW9kZWxzOiBQYXJ0aWFsPElUZXJtSlNPTkxEPltdO1xuICBwdWJsaWMgbGVnZW5kID0gbGVnZW5kO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHJldHVybiB0aGlzLmluaXRJbXBhY3RBc3Nlc3NtZW50cygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVsb2FkQ2hhcnQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoJ2ltcGFjdEFzc2Vzc21lbnRzJyBpbiBjaGFuZ2VzKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEltcGFjdEFzc2Vzc21lbnRJZCA9IHRoaXMuc2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50SWQ7XG4gICAgICB0aGlzLmluaXRJbXBhY3RBc3Nlc3NtZW50cygpO1xuICAgICAgLy8gb25seSByZWxvYWQgdGhlIGNoYXJ0IGlmIHRoZSBzZWxlY3QgSUEgaGFzIGNoYW5nZWRcbiAgICAgIHNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudElkICE9PSB0aGlzLnNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudElkICYmIHRoaXMucmVsb2FkQ2hhcnQoKTtcbiAgICB9XG4gICAgaWYgKCdkYXRhU3RhdGUnIGluIGNoYW5nZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbG9hZENoYXJ0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0SW1wYWN0QXNzZXNzbWVudHMoKSB7XG4gICAgdGhpcy5maWx0ZXJlZEltcGFjdEFzc2Vzc21lbnRzID0gdGhpcy5pbXBhY3RBc3Nlc3NtZW50cy5maWx0ZXIoaWEgPT4gaWEuZW5kcG9pbnRzPy5sZW5ndGggfHwgaWEuaW1wYWN0cz8ubGVuZ3RoKTtcbiAgICB0aGlzLnNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudElkID0gdGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnRJZCB8fCB0aGlzLmZpbHRlcmVkSW1wYWN0QXNzZXNzbWVudHM/LlswXT8uWydAaWQnXTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZEluaXRpYWxUZXJtcygpIHtcbiAgICBjb25zdCB7IHJlc3VsdHM6IHRlcm1zIH0gPSBhd2FpdCB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoPElUZXJtSlNPTkxELCBOb2RlVHlwZS5UZXJtPihcbiAgICAgIHF1ZXJ5KGZpbHRlclRlcm1UeXBlcy5tYXAodGVybVR5cGUgPT4gbWF0Y2hUZXJtVHlwZSh0ZXJtVHlwZSkpKVxuICAgICk7XG4gICAgY29uc3QgYXVnbWVudGVkVGVybXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHRlcm1zLm1hcChhc3luYyAodDogdGVybSkgPT4ge1xuICAgICAgICBpZiAodC50ZXJtVHlwZSA9PT0gJ21vZGVsJykge1xuICAgICAgICAgIGNvbnN0IG1vZGVsID0gYXdhaXQgdGhpcy5lbmdpbmVTZXJ2aWNlLm1vZGVsKHsgbW9kZWw6IHRbJ0BpZCddIH0pO1xuICAgICAgICAgIHQuZG9jcyA9IG1vZGVsPy5hcGlEb2NzUGF0aCB8fCBtb2RlbD8uZG9jUGF0aCB8fCBtb2RlbD8ucGF0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmluaXRpYWxUZXJtcyA9IE9iamVjdC5mcm9tRW50cmllcyhhdWdtZW50ZWRUZXJtcy5tYXAodGVybSA9PiBbdGVybVsnQGlkJ10sIHRlcm1dKSk7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbFRlcm1zO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkTG9nVGVybXMobG9nczogSUxvZ1tdKSB7XG4gICAgY29uc3QgaW5wdXRJZHMgPSB1bmlxdWUoXG4gICAgICBsb2dzLmZsYXRNYXAobCA9PiBbbC5jb250cmlidXRvciwgbC5pbmRpY2F0b3JdKS5maWx0ZXIodGVybUlkID0+ICF0aGlzLmluaXRpYWxUZXJtc1t0ZXJtSWRdKVxuICAgICk7XG4gICAgY29uc3QgeyByZXN1bHRzOiBpbnB1dHMgfSA9IGF3YWl0IHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2g8SVRlcm1KU09OTEQsIE5vZGVUeXBlLlRlcm0+KFxuICAgICAgcXVlcnkoaW5wdXRJZHMubWFwKGlkID0+IG1hdGNoRXhhY3RRdWVyeSgnQGlkJywgaWQpKSlcbiAgICApO1xuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoaW5wdXRzLm1hcCh0ZXJtID0+IFt0ZXJtWydAaWQnXSwgdGVybV0pKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNSZWNhbGN1bGF0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVN0YXRlID09PSBEYXRhU3RhdGUucmVjYWxjdWxhdGVkO1xuICB9XG5cbiAgcHVibGljIHJlbG9hZENoYXJ0KCkge1xuICAgIGlmICghdGhpcy5pc1JlY2FsY3VsYXRlZCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW1wYWN0QXNzZXNzbWVudCA9XG4gICAgICB0aGlzLmZpbHRlcmVkSW1wYWN0QXNzZXNzbWVudHMuZmluZChpYSA9PiBpYVsnQGlkJ10gPT09IHRoaXMuc2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50SWQpIHx8XG4gICAgICB0aGlzLmZpbHRlcmVkSW1wYWN0QXNzZXNzbWVudHNbMF07XG4gICAgY29uc3QgaW5kaWNhdG9ycyA9IFsuLi4oaW1wYWN0QXNzZXNzbWVudD8uZW5kcG9pbnRzIHx8IFtdKSwgLi4uKGltcGFjdEFzc2Vzc21lbnQ/LmltcGFjdHMgfHwgW10pXTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gb2YoaW1wYWN0QXNzZXNzbWVudClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4gKHRoaXMubG9hZGluZyA9IHRydWUpKSxcbiAgICAgICAgbWVyZ2VNYXAobm9kZSA9PiAodGhpcy5pbml0aWFsVGVybXMgPyBvZihub2RlKSA6IGZyb20odGhpcy5sb2FkSW5pdGlhbFRlcm1zKCkpLnBpcGUobWFwKCgpID0+IG5vZGUpKSkpLFxuICAgICAgICBtZXJnZU1hcChub2RlID0+XG4gICAgICAgICAgdGhpcy5ub2RlU2VydmljZS5nZXRMb2ckKHtcbiAgICAgICAgICAgIC4uLm5vZGUsXG4gICAgICAgICAgICBkYXRhU3RhdGU6IERhdGFTdGF0ZS5yZWNhbGN1bGF0ZWRcbiAgICAgICAgICB9KVxuICAgICAgICApLFxuICAgICAgICBtYXAodmFsdWUgPT4gKHZhbHVlID8gcGFyc2VMaW5lcyh2YWx1ZSkgOiBbXSkpLFxuICAgICAgICBtZXJnZUFsbCgpLFxuICAgICAgICBmaWx0ZXIoKHsgZGF0YSB9KSA9PiBkYXRhLmxvZ2dlciA9PT0gJ2hlc3RpYV9lYXJ0aC5tb2RlbHMnICYmIGRhdGEubGV2ZWwgPT09IExldmVsLmRlYnVnKSxcbiAgICAgICAgZmlsdGVyKCh7IGRhdGE6IHsgbWVzc2FnZSB9IH0pID0+ICEhbWVzc2FnZSksXG4gICAgICAgIG1hcCgoeyBkYXRhOiB7IG1lc3NhZ2UgfSB9KSA9PiBwYXJzZU1lc3NhZ2UobWVzc2FnZSkpLFxuICAgICAgICBmaWx0ZXIobWVzc2FnZSA9PiAnbm9kZScgaW4gbWVzc2FnZSksXG4gICAgICAgIG1hcChwYXJzZUxvZyksXG4gICAgICAgIGZpbHRlcihsb2cgPT5cbiAgICAgICAgICBbXG4gICAgICAgICAgICAhIWxvZy5pbmRpY2F0b3IsXG4gICAgICAgICAgICAhIWxvZy5jb250cmlidXRvcixcbiAgICAgICAgICAgICFpc05hTihsb2cud2VpZ2h0ZWRWYWx1ZSksXG4gICAgICAgICAgICBsb2cuY29lZmZpY2llbnQgPiAwLFxuICAgICAgICAgICAgaW5kaWNhdG9ycy5zb21lKGVydSA9PiBlcnUudGVybVsnQGlkJ10gPT09IGxvZy5pbmRpY2F0b3IpXG4gICAgICAgICAgXS5ldmVyeShCb29sZWFuKVxuICAgICAgICApLFxuICAgICAgICBncm91cEJ5KGxvZyA9PiBbbG9nLmluZGljYXRvciwgbG9nLmNvbnRyaWJ1dG9yLCBsb2cubW9kZWxJZF0uam9pbignLycpKSxcbiAgICAgICAgbWVyZ2VNYXAoZ3JvdXAgPT4gZ3JvdXAucGlwZSh0b0FycmF5KCkpKSxcbiAgICAgICAgbWFwKCh2YWx1ZXM6IElMb2dbXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGxvZyA9IHZhbHVlc1swXTtcbiAgICAgICAgICBjb25zdCB7IHdlaWdodGVkVG90YWwsIHRvdGFsIH0gPSB2YWx1ZXMucmVkdWNlKFxuICAgICAgICAgICAgKHByZXYsIGN1cnIpID0+ICh7XG4gICAgICAgICAgICAgIHdlaWdodGVkVG90YWw6IHByZXYud2VpZ2h0ZWRUb3RhbCArIGN1cnIud2VpZ2h0ZWRWYWx1ZSxcbiAgICAgICAgICAgICAgdG90YWw6IHByZXYudG90YWwgKyBjdXJyLnZhbHVlXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHsgd2VpZ2h0ZWRUb3RhbDogMCwgdG90YWw6IDAgfVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCBpbnB1dHNPYmogPSAoaW1wYWN0QXNzZXNzbWVudC5lbWlzc2lvbnNSZXNvdXJjZVVzZSB8fCBbXSlcbiAgICAgICAgICAgIC5maWx0ZXIoZXJ1ID0+IGVydS50ZXJtWydAaWQnXSA9PT0gbG9nLmNvbnRyaWJ1dG9yICYmIGVydS5pbnB1dHM/Lmxlbmd0aClcbiAgICAgICAgICAgIC5yZWR1Y2UoKGFjYywgZXJ1KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGlucHV0SWQgPSBlcnUuaW5wdXRzLm1hcChpID0+IGlbJ0BpZCddKS5qb2luKCc7Jyk7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRPcGVyYXRpb25zID0gZXJ1Lm9wZXJhdGlvblxuICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQ6IGVydS5vcGVyYXRpb25bJ0BpZCddLFxuICAgICAgICAgICAgICAgICAgICAgIC4uLmdldFVuaXRzQW5kTGFiZWwoZXJ1Lm9wZXJhdGlvbiksXG4gICAgICAgICAgICAgICAgICAgICAgbW9kZWxJZDogbG9nLm1vZGVsSWQsXG4gICAgICAgICAgICAgICAgICAgICAgd2VpZ2h0ZWRWYWx1ZTogZXJ1LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICA6IFtdO1xuXG4gICAgICAgICAgICAgIGFjY1tpbnB1dElkXSA9IGFjY1tpbnB1dElkXVxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAuLi5hY2NbaW5wdXRJZF0sXG4gICAgICAgICAgICAgICAgICAgIHdlaWdodGVkVmFsdWU6IGFjY1tpbnB1dElkXS53ZWlnaHRlZFZhbHVlICsgZXJ1LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBtb2RlbElkOiBsb2cubW9kZWxJZCxcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uczogWy4uLmFjY1tpbnB1dElkXS5vcGVyYXRpb25zLCAuLi5jdXJyZW50T3BlcmF0aW9uc11cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGlucHV0SWQsXG4gICAgICAgICAgICAgICAgICAgIC4uLmdldFVuaXRzQW5kTGFiZWwoXG4gICAgICAgICAgICAgICAgICAgICAgZXJ1LmlucHV0cy5sZW5ndGggPT09IDEgPyBlcnUuaW5wdXRzWzBdIDogeyBuYW1lOiAnSW5wdXQgZ3JvdXAgKHVuZGVyIGRldmVsb3BtZW50KScgfVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBtb2RlbElkOiBsb2cubW9kZWxJZCxcbiAgICAgICAgICAgICAgICAgICAgd2VpZ2h0ZWRWYWx1ZTogZXJ1LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zOiBbLi4uY3VycmVudE9wZXJhdGlvbnNdXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSwge30pO1xuICAgICAgICAgIGNvbnN0IGlucHV0czogSUlucHV0TG9nW10gPSBPYmplY3QudmFsdWVzKGlucHV0c09iaik7XG4gICAgICAgICAgcmV0dXJuIHsgLi4ubG9nLCB3ZWlnaHRlZFZhbHVlOiB3ZWlnaHRlZFRvdGFsLCB2YWx1ZTogdG90YWwsIGlucHV0cyB9IGFzIElMb2c7XG4gICAgICAgIH0pLFxuICAgICAgICB0b0FycmF5KCksXG4gICAgICAgIG1lcmdlTWFwKGxvZ3MgPT5cbiAgICAgICAgICBmcm9tKHRoaXMubG9hZExvZ1Rlcm1zKGxvZ3MpKS5waXBlKFxuICAgICAgICAgICAgbWFwKGxvZ1Rlcm1zID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5hbGxUZXJtcyA9IHsgLi4udGhpcy5pbml0aWFsVGVybXMsIC4uLmxvZ1Rlcm1zIH07XG4gICAgICAgICAgICAgIHJldHVybiBsb2dzO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgdGhpcy5lcnJvciA9IGVycjtcbiAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKCgpID0+ICh0aGlzLmxvYWRpbmcgPSBmYWxzZSkpLFxuICAgICAgICB0YXAobG9ncyA9PiAodGhpcy5ub0RhdGEgPSAhbG9ncy5sZW5ndGgpKSxcbiAgICAgICAgdGFwKChsb2dzOiBJTG9nW10pID0+IHtcbiAgICAgICAgICB0aGlzLndhcm5pbmdzID0gd2FybmluZ3MobG9ncywgdGhpcy5hbGxUZXJtcyk7XG4gICAgICAgICAgdGhpcy5zaG93V2FybmluZ3MgPSB0aGlzLndhcm5pbmdzLmxlbmd0aCA+IDA7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChsb2dzOiBJTG9nW10pID0+IHtcbiAgICAgICAgdGhpcy5yb290ID0gbnVsbDtcbiAgICAgICAgdGhpcy5ub2RlID0gbnVsbDtcbiAgICAgICAgdGhpcy5saW5rID0gbnVsbDtcbiAgICAgICAgY29uc3QgaGFzRGVmYXVsdE1vZGVsTG9ncyA9IGxvZ3Muc29tZShsb2cgPT4gbG9nLm1vZGVsSWQgPT09IGdldERlZmF1bHRNb2RlbElkKGxvZy5pbmRpY2F0b3IpKTtcbiAgICAgICAgdGhpcy5tb2RlbHMgPSBbXG4gICAgICAgICAgLi4uKGhhc0RlZmF1bHRNb2RlbExvZ3MgPyBbeyAnQGlkJzogZGVmYXVsdEluZGljYXRvcnNNb2RlbElkLCBuYW1lOiBkZWZhdWx0SW5kaWNhdG9yc01vZGVsTmFtZSB9XSA6IFtdKSxcbiAgICAgICAgICAuLi51bmlxdWUobG9ncy5tYXAoKHsgbW9kZWxJZCB9KSA9PiB0aGlzLmFsbFRlcm1zW21vZGVsSWRdIHx8IHsgJ0BpZCc6IG1vZGVsSWQgfSkpXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbElkID0gdGhpcy5tb2RlbHM/LlswXT8uWydAaWQnXTtcbiAgICAgICAgaWYgKGxvZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5sb2dzQWxsTW9kZWxzID0gbG9ncztcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluaXRDaGFydCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0Q2hhcnQoKSB7XG4gICAgY29uc3QgbG9ncyA9IHRoaXMubG9nc0FsbE1vZGVscy5maWx0ZXIoXG4gICAgICBsb2cgPT5cbiAgICAgICAgbG9nLm1vZGVsSWQgPT09XG4gICAgICAgICh0aGlzLnNlbGVjdGVkTW9kZWxJZCA9PT0gZGVmYXVsdEluZGljYXRvcnNNb2RlbElkID8gZ2V0RGVmYXVsdE1vZGVsSWQobG9nLmluZGljYXRvcikgOiB0aGlzLnNlbGVjdGVkTW9kZWxJZClcbiAgICApO1xuICAgIGNvbnN0IHRvdGFsc1BlckluZGljYXRvciA9IGxvZ3MucmVkdWNlKChhY2MsIGxvZykgPT4ge1xuICAgICAgYWNjW2xvZy5pbmRpY2F0b3JdID0gKGFjY1tsb2cuaW5kaWNhdG9yXSB8fCAwKSArIGxvZy53ZWlnaHRlZFZhbHVlO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gICAgY29uc3QgaW5kaWNhdG9yczogeyBbaWQ6IHN0cmluZ106IE5vZGVEYXR1bSB9ID0gbG9ncy5yZWR1Y2UoKGFjYywgbG9nKSA9PiB7XG4gICAgICBjb25zdCB0eXBlTWFwcGluZyA9IHtcbiAgICAgICAgW1Rlcm1UZXJtVHlwZS5lbmRwb2ludEluZGljYXRvcl06IENoYXJ0Tm9kZVR5cGUuZW5kcG9pbnQsXG4gICAgICAgIFtUZXJtVGVybVR5cGUuY2hhcmFjdGVyaXNlZEluZGljYXRvcl06IENoYXJ0Tm9kZVR5cGUubWlkcG9pbnQsXG4gICAgICAgIFtUZXJtVGVybVR5cGUuZW1pc3Npb25dOiBDaGFydE5vZGVUeXBlLmVtaXNzaW9uLFxuICAgICAgICBbVGVybVRlcm1UeXBlLnJlc291cmNlVXNlXTogQ2hhcnROb2RlVHlwZS5lbWlzc2lvbixcbiAgICAgICAgW1Rlcm1UZXJtVHlwZS5vcGVyYXRpb25dOiBDaGFydE5vZGVUeXBlLm9wZXJhdGlvblxuICAgICAgfTtcblxuICAgICAgY29uc3QgY29udHJpYnV0b3JUeXBlID0gdHlwZU1hcHBpbmdbdGhpcy5hbGxUZXJtc1tsb2cuY29udHJpYnV0b3JdPy50ZXJtVHlwZV0gfHwgQ2hhcnROb2RlVHlwZS5pbnB1dDtcbiAgICAgIGNvbnN0IGluZGljYXRvclR5cGUgPSB0eXBlTWFwcGluZ1t0aGlzLmFsbFRlcm1zW2xvZy5pbmRpY2F0b3JdPy50ZXJtVHlwZV07XG4gICAgICBjb25zdCBjb250cmlidXRvck5vZGUgPSB7XG4gICAgICAgIGlkOiBsb2cuY29udHJpYnV0b3IsXG4gICAgICAgIC4uLmdldFVuaXRzQW5kTGFiZWwodGhpcy5hbGxUZXJtc1tsb2cuY29udHJpYnV0b3JdLCBsb2cuY29udHJpYnV0b3IpLFxuICAgICAgICB0eXBlOiBjb250cmlidXRvclR5cGUsXG4gICAgICAgIHZhbHVlOiBsb2cudmFsdWUsXG4gICAgICAgIHdlaWdodGVkVmFsdWU6IGxvZy53ZWlnaHRlZFZhbHVlLFxuICAgICAgICBtb2RlbElkOiBsb2cubW9kZWxJZCxcbiAgICAgICAgZnJhY3Rpb246IGxvZy53ZWlnaHRlZFZhbHVlIC8gdG90YWxzUGVySW5kaWNhdG9yW2xvZy5pbmRpY2F0b3JdLFxuICAgICAgICBjaGlsZHJlbjpcbiAgICAgICAgICBjb250cmlidXRvclR5cGUgPT09IENoYXJ0Tm9kZVR5cGUuZW1pc3Npb25cbiAgICAgICAgICAgID8gbG9nLmlucHV0cy5tYXAoaSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLmksXG4gICAgICAgICAgICAgICAgdHlwZTogQ2hhcnROb2RlVHlwZS5pbnB1dCxcbiAgICAgICAgICAgICAgICBmcmFjdGlvbjogaS53ZWlnaHRlZFZhbHVlIC8gbG9nLnZhbHVlLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBpLm9wZXJhdGlvbnMubWFwKG8gPT4gKHtcbiAgICAgICAgICAgICAgICAgIC4uLm8sXG4gICAgICAgICAgICAgICAgICB0eXBlOiBDaGFydE5vZGVUeXBlLm9wZXJhdGlvbixcbiAgICAgICAgICAgICAgICAgIGZyYWN0aW9uOiBvLndlaWdodGVkVmFsdWUgLyBpLndlaWdodGVkVmFsdWVcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICA6IFtdXG4gICAgICB9O1xuXG4gICAgICBhY2NbbG9nLmluZGljYXRvcl1cbiAgICAgICAgPyBhY2NbbG9nLmluZGljYXRvcl0uY2hpbGRyZW4ucHVzaChjb250cmlidXRvck5vZGUpXG4gICAgICAgIDogKGFjY1tsb2cuaW5kaWNhdG9yXSA9IHtcbiAgICAgICAgICAgIGlkOiBsb2cuaW5kaWNhdG9yLFxuICAgICAgICAgICAgLi4uZ2V0VW5pdHNBbmRMYWJlbCh0aGlzLmFsbFRlcm1zW2xvZy5pbmRpY2F0b3JdLCBsb2cuaW5kaWNhdG9yKSxcbiAgICAgICAgICAgIG1vZGVsSWQ6IGxvZy5tb2RlbElkLFxuICAgICAgICAgICAgdHlwZTogaW5kaWNhdG9yVHlwZSxcbiAgICAgICAgICAgIHZhbHVlOiB0b3RhbHNQZXJJbmRpY2F0b3JbbG9nLmluZGljYXRvcl0sXG4gICAgICAgICAgICBjaGlsZHJlbjogW2NvbnRyaWJ1dG9yTm9kZV1cbiAgICAgICAgICB9KTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICAgIGNvbnN0IGluZGljYXRvckFycmF5ID0gT2JqZWN0LnZhbHVlcyhpbmRpY2F0b3JzKTtcbiAgICBjb25zdCBsaW5rZWRJbmRpY2F0b3JzID0gaW5kaWNhdG9yQXJyYXlcbiAgICAgIC8vIGxpbmsgZW5kcG9pbnRzIHRvIG1pZHBvaW50cyBhbmQgbWlkcG9pbnRzIHRvIGFueSBjaGlsZCBtaWRwb2ludHNcbiAgICAgIC5tYXAoaW5kaWNhdG9yID0+ICh7XG4gICAgICAgIC4uLmluZGljYXRvcixcbiAgICAgICAgY2hpbGRyZW46IGluZGljYXRvci5jaGlsZHJlbi5tYXAoY2hpbGQgPT4ge1xuICAgICAgICAgIGNvbnN0IHByZWZpeFJlbW92ZWQgPSBpbmRpY2F0b3IudHlwZSA9PT0gQ2hhcnROb2RlVHlwZS5lbmRwb2ludCAmJiBjaGlsZC5sYWJlbC5zcGxpdCgnLCAnKVsxXTtcbiAgICAgICAgICByZXR1cm4gY2hpbGQudHlwZSA9PT0gQ2hhcnROb2RlVHlwZS5taWRwb2ludFxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHByZWZpeFJlbW92ZWRcbiAgICAgICAgICAgICAgICAgID8gJ1suLi5dJyArIHByZWZpeFJlbW92ZWQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwcmVmaXhSZW1vdmVkLnNsaWNlKDEpXG4gICAgICAgICAgICAgICAgICA6IGNoaWxkLmxhYmVsLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBpbmRpY2F0b3JzW2NoaWxkLmlkXT8uY2hpbGRyZW5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBjaGlsZDtcbiAgICAgICAgfSlcbiAgICAgIH0pKVxuICAgICAgLy8gcmVtb3ZlIGR1cGxpY2F0ZWQgaW5kaWNhdG9yc1xuICAgICAgLmZpbHRlcihpbmRpY2F0b3IgPT4gIWluZGljYXRvckFycmF5LnNvbWUocGFyZW50ID0+IHBhcmVudC5jaGlsZHJlbi5zb21lKGNoaWxkID0+IGNoaWxkLmlkID09PSBpbmRpY2F0b3IuaWQpKSk7XG5cbiAgICBjb25zdCBlbmRwb2ludHMgPSBsaW5rZWRJbmRpY2F0b3JzLmZpbHRlcihpbmRpY2F0b3IgPT4gaW5kaWNhdG9yLnR5cGUgPT09IENoYXJ0Tm9kZVR5cGUuZW5kcG9pbnQpO1xuICAgIGNvbnN0IG5vbkxDQUluZGljYXRvcnMgPSBsaW5rZWRJbmRpY2F0b3JzLmZpbHRlcihpbmRpY2F0b3IgPT4gaW5kaWNhdG9yLnR5cGUgPT09IENoYXJ0Tm9kZVR5cGUubWlkcG9pbnQpO1xuXG4gICAgZW5kcG9pbnRzLmxlbmd0aCAmJlxuICAgICAgbm9uTENBSW5kaWNhdG9ycy5sZW5ndGggJiZcbiAgICAgIGVuZHBvaW50cy5wdXNoKHtcbiAgICAgICAgaWQ6IG5vbkxDQUluZGljYXRvcnNJZCxcbiAgICAgICAgbGFiZWw6ICdPdGhlciBpbmRpY2F0b3JzJyxcbiAgICAgICAgdGVybTogJ24vYScsXG4gICAgICAgIG1vZGVsSWQ6ICduL2EnLFxuICAgICAgICB1bml0czogJycsXG4gICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICB3ZWlnaHRlZFZhbHVlOiBudWxsLFxuICAgICAgICB0eXBlOiBDaGFydE5vZGVUeXBlLmVuZHBvaW50LFxuICAgICAgICBmcmFjdGlvbjogbnVsbCxcbiAgICAgICAgY2hpbGRyZW46IG5vbkxDQUluZGljYXRvcnNcbiAgICAgIH0pO1xuXG4gICAgY29uc3Qgcm9vdCA9IGQzSGllcmFyY2h5PE5vZGVEYXR1bT4oe1xuICAgICAgaWQ6ICdkdW1teS1yb290JyxcbiAgICAgIGxhYmVsOiAnJyxcbiAgICAgIHRlcm06ICcnLFxuICAgICAgbW9kZWxJZDogJycsXG4gICAgICB2YWx1ZTogbnVsbCxcbiAgICAgIHdlaWdodGVkVmFsdWU6IG51bGwsXG4gICAgICB1bml0czogJycsXG4gICAgICB0eXBlOiBDaGFydE5vZGVUeXBlLnJvb3QsXG4gICAgICBjaGlsZHJlbjogZW5kcG9pbnRzLmxlbmd0aCA/IGVuZHBvaW50cyA6IGxpbmtlZEluZGljYXRvcnNcbiAgICB9KTtcblxuICAgIGNvbnN0IGluY2x1ZGVkVHlwZXMgPSB1bmlxdWUocm9vdC5kZXNjZW5kYW50cygpLm1hcChuID0+IG4uZGF0YS50eXBlKSk7XG4gICAgdGhpcy5sZWdlbmQgPSBsZWdlbmQuZmlsdGVyKCh7IHR5cGUgfSkgPT4gaW5jbHVkZWRUeXBlcy5pbmNsdWRlcyh0eXBlKSk7XG5cbiAgICB0aGlzLnJvb3QgPSByb290XG4gICAgICAuc29ydCgoYSwgYikgPT4gYi5kYXRhLmZyYWN0aW9uIC0gYS5kYXRhLmZyYWN0aW9uKVxuICAgICAgLmVhY2hBZnRlcihub2RlID0+IHtcbiAgICAgICAgaWYgKG5vZGUuZGF0YS5mcmFjdGlvbiA9PT0gMCkge1xuICAgICAgICAgIG5vZGUuY2hpbGRyZW4gPSBudWxsO1xuICAgICAgICAgIChub2RlLmhlaWdodCBhcyBudW1iZXIpID0gMDtcbiAgICAgICAgfVxuICAgICAgICBub2RlLmRhdGEudHlwZSAhPT0gQ2hhcnROb2RlVHlwZS5yb290ICYmIGNvbGxhcHNlQ2hpbGRyZW4obm9kZSk7XG4gICAgICAgIGdyb3VwQnlQZXJjZW50YWdlKG5vZGUpICYmIGdyb3VwUGVyY2VudGFnZShub2RlKTtcbiAgICAgICAgbm9kZS5kYXRhLnNob3dCYXIgPSBzaG93QmFyKG5vZGUpO1xuICAgICAgICBub2RlLmRhdGEubW9kZWxOYW1lID0gdGhpcy5hbGxUZXJtc1tub2RlLmRhdGEubW9kZWxJZF0/Lm5hbWU7XG4gICAgICAgIG5vZGUuZGF0YS5tb2RlbERvY3MgPSB0aGlzLmFsbFRlcm1zW25vZGUuZGF0YS5tb2RlbElkXT8uZG9jcztcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5yZW5kZXJDaGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJDaGFydCgpIHtcbiAgICB0aGlzLnN2ZyA9IGQzU2VsZWN0KHRoaXMuY2hhcnRSZWY/Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuc3ZnLnNlbGVjdEFsbCgnKicpLnJlbW92ZSgpO1xuICAgIC8vIHJvb3Qgbm9kZSBpcyBhbHdheXMgcG9zaXRpb25lZCBhdCDin6gwLCAw4p+pXG4gICAgY29uc3QgaW5uZXJIZWlnaHQgPSAodGhpcy5yb290LmNoaWxkcmVuLmxlbmd0aCAtIDEpICogbm9kZUhlaWdodCAqIG5vZGVTcGFjaW5nRmFjdG9yICsgbm9kZUhlaWdodDtcbiAgICB0aGlzLnlNaW4gPSAobm9kZUhlaWdodCAtIGlubmVySGVpZ2h0KSAvIDIgLSBtYXJnaW4udG9wO1xuICAgIHRoaXMueVRvdGFsID0gaW5uZXJIZWlnaHQgKyBtYXJnaW4udG9wICsgbWFyZ2luLmJvdHRvbTtcbiAgICB0aGlzLnN2Z1xuICAgICAgLmF0dHIoJ3ZpZXdCb3gnLCBbLW1hcmdpbi5sZWZ0LCB0aGlzLnlNaW4sIHdpZHRoLCB0aGlzLnlUb3RhbF0uam9pbignICcpKVxuICAgICAgLmF0dHIoJ2ZvbnQtc2l6ZScsIGAke2ZvbnRTaXplfXB4YCk7XG5cbiAgICB0aGlzLm5vZGUgPSB0aGlzLnN2Zy5hcHBlbmQoJ2cnKS5zZWxlY3RBbGwoJ2cnKTtcbiAgICB0aGlzLmxpbmsgPSB0aGlzLnN2Zy5hcHBlbmQoJ2cnKS5zZWxlY3RBbGwoJ3BhdGgnKTtcblxuICAgIHRoaXMuaGFuZGxlTm9kZUNsaWNrKFxuICAgICAgbnVsbCxcbiAgICAgIHRoaXMucm9vdC5maW5kKG5vZGUgPT4gbm9kZS5kZXB0aCA9PT0gMSlcbiAgICApO1xuICB9XG5cbiAgLy8gZmxpcCB4L3kgdG8gZ28gbGVmdC1yaWdodCBpbnN0ZWFkIG9mIHRvcC1ib3R0b21cbiAgcHJpdmF0ZSB1cGRhdGVDaGFydCh7IHRvZ2dsaW5nR3JvdXAgPSBmYWxzZSwgc3dpdGNoaW5nU2VsZWN0aW9uID0gZmFsc2UgfSA9IHt9KSB7XG4gICAgY29uc3Qgcm9vdCA9IHRoaXMucm9vdDtcbiAgICBjb25zdCB0cmVlTGF5b3V0ID0gZDNUcmVlPE5vZGVEYXR1bT4oKVxuICAgICAgLm5vZGVTaXplKFtub2RlSGVpZ2h0LCBub2RlV2lkdGhdKVxuICAgICAgLnNlcGFyYXRpb24oKC4uLm5laWdoYm91cnM6IENoYXJ0Tm9kZVtdKSA9PlxuICAgICAgICBuZWlnaGJvdXJzLnNvbWUobiA9PiBuLmRhdGEuZ3JvdXAgJiYgbi5fZ3JvdXBPcGVuKSA/IDEgLSBncm91cE92ZXJsYXAgLyBub2RlSGVpZ2h0IDogbm9kZVNwYWNpbmdGYWN0b3JcbiAgICAgICk7XG4gICAgY29uc3QgdHJlZTogQ2hhcnROb2RlID0gdHJlZUxheW91dChyb290KTtcbiAgICBjb25zdCBsaW5rczogTGlua1tdID0gdHJlZS5saW5rcygpLmZpbHRlcihkID0+IGQuc291cmNlLmRhdGEudHlwZSAhPT0gQ2hhcnROb2RlVHlwZS5yb290KSB8fCBbXTtcbiAgICBjb25zdCBub2RlcyA9IHRyZWUuZGVzY2VuZGFudHMoKS5yZXZlcnNlKCk7XG5cbiAgICBub2Rlcy5mb3JFYWNoKGQgPT4ge1xuICAgICAgZC55ID1cbiAgICAgICAgKGQuZGVwdGggLSAxICsgKE9iamVjdC5rZXlzKENoYXJ0Tm9kZVR5cGUpLmxlbmd0aCAtIDEgLSB0aGlzLmxlZ2VuZC5sZW5ndGgpIC8gMikgKiAobm9kZVdpZHRoICsgbGF5ZXJTcGFjaW5nKTtcbiAgICB9KTtcblxuICAgIC8vIEJ5IGRlZmF1bHQgdGhlIHRyZWUgZXhwYW5kcyBzeW1tZXRyaWNhbGx5IHVwd2FyZHMgYW5kIGRvd253YXJkcyBmcm9tIHRoZSBzZWxlY3RlZCBub2RlLlxuICAgIC8vIFdlIG1vdmUgY2hpbGRyZW4gZG93biB0byBwcmV2ZW50IGV4cGFuc2lvbiB1cHdhcmRzIG9yIHVwIHRvIG1pbmltaXNlIGV4cGFuc2lvbiBkb3dud2FyZHNcbiAgICBjb25zdCBtaW5pbWlzZUhlaWdodCA9ICh7IHByZXZpb3VzVGFuc2xhdGVZLCBwcmV2aW91c1lUb3RhbCB9LCBkZXB0aDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBtYXhZVG90YWwgPSBNYXRoLm1heChwcmV2aW91c1lUb3RhbCwgdGhpcy55VG90YWwpO1xuICAgICAgY29uc3QgcGFyZW50ID0gdHJlZS5maW5kKG5vZGUgPT4gbm9kZS5kZXB0aCA9PT0gZGVwdGggLSAxICYmIG5vZGUuX29wZW4pO1xuICAgICAgcGFyZW50Py5jaGlsZHJlbj8uZm9yRWFjaChub2RlID0+IChub2RlLnggKz0gcHJldmlvdXNUYW5zbGF0ZVkpKTtcblxuICAgICAgY29uc3QgeyBtaW46IG1pblgsIG1heDogbWF4WCB9ID0gKHBhcmVudD8uY2hpbGRyZW4gfHwgW10pLnJlZHVjZShcbiAgICAgICAgKHsgbWluLCBtYXggfSwgbikgPT4gKHtcbiAgICAgICAgICBtaW46IG4ueCA8IG1pbiA/IG4ueCA6IG1pbixcbiAgICAgICAgICBtYXg6IG4ueCA+IG1heCA/IG4ueCA6IG1heFxuICAgICAgICB9KSxcbiAgICAgICAgeyBtaW46IHBhcmVudD8ueCwgbWF4OiBwYXJlbnQ/LnggfVxuICAgICAgKTtcblxuICAgICAgY29uc3QgeyB5TWluLCB5VG90YWwgfSA9IHBhcmVudD8uY2hpbGRyZW4/Lmxlbmd0aFxuICAgICAgICA/IHsgeU1pbjogbWluWCAtIG1hcmdpbi50b3AsIHlUb3RhbDogbWF4WCAtIG1pblggKyBtYXJnaW4uYm90dG9tICsgbWFyZ2luLnRvcCArIG5vZGVIZWlnaHQgfVxuICAgICAgICA6IHsgeU1pbjogbnVsbCwgeVRvdGFsOiBudWxsIH07XG5cbiAgICAgIGNvbnN0IG92ZXJmbG93QWJvdmUgPSB0aGlzLnlNaW4gLSB5TWluOyAvLyBwb3NpdGl2ZSB3aGVuIG92ZXJmbG93cyBhYm92ZVxuICAgICAgY29uc3Qgb3ZlcmZsb3dCZWxvdyA9IHlUb3RhbCArIHlNaW4gLSAobWF4WVRvdGFsICsgdGhpcy55TWluKTsgLy8gcG9zaXRpdmUgd2hlbiBvdmVyZmxvd3MgYmVsb3dcbiAgICAgIC8vIC0gdHJhbnNsYXRlWSB3aGVuIG92ZXJmbG93cyBhYm92ZTogcG9zaXRpdmVcbiAgICAgIC8vIC0gdHJhbnNsYXRlWSB3aGVuIG92ZXJmbG93cyBiZWxvdzogbmVnYXRpdmUgYnkgc21hbGxlc3Qgb2YgdW5kZXJmbG93IGFib3ZlIG9yIG92ZXJmbG93IGJlbG93XG4gICAgICAvLyAtIHRyYW5zbGF0ZVkgd2hlbiBubyBvdmVyZmxvdzogMFxuICAgICAgY29uc3QgdHJhbnNsYXRlWSA9XG4gICAgICAgIG92ZXJmbG93QWJvdmUgPiAwID8gb3ZlcmZsb3dBYm92ZSA6IG92ZXJmbG93QmVsb3cgPiAwID8gTWF0aC5tYXgoLW92ZXJmbG93QmVsb3csIG92ZXJmbG93QWJvdmUpIDogMDtcblxuICAgICAgcGFyZW50Py5jaGlsZHJlbj8uZm9yRWFjaChub2RlID0+IChub2RlLnggKz0gdHJhbnNsYXRlWSkpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcmV2aW91c1lUb3RhbDogTWF0aC5tYXgoeVRvdGFsLCBwcmV2aW91c1lUb3RhbCksXG4gICAgICAgIHByZXZpb3VzVGFuc2xhdGVZOiB0cmFuc2xhdGVZICsgcHJldmlvdXNUYW5zbGF0ZVlcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGNvbnN0IHsgcHJldmlvdXNZVG90YWw6IG5ld0hlaWdodCB9ID0gWzIsIDMsIDQsIDVdLnJlZHVjZShtaW5pbWlzZUhlaWdodCwge1xuICAgICAgcHJldmlvdXNUYW5zbGF0ZVk6IDAsXG4gICAgICBwcmV2aW91c1lUb3RhbDogdGhpcy55VG90YWxcbiAgICB9KTtcblxuICAgIHRoaXMuc3ZnLnRyYW5zaXRpb24oKS5kdXJhdGlvbigzMDApLmF0dHIoJ3ZpZXdCb3gnLCBbLW1hcmdpbi5sZWZ0LCB0aGlzLnlNaW4sIHdpZHRoLCBuZXdIZWlnaHRdLmpvaW4oJyAnKSk7XG5cbiAgICB0aGlzLm5vZGUgPSB0aGlzLm5vZGVcbiAgICAgIC5kYXRhKFxuICAgICAgICBub2RlcyxcbiAgICAgICAgZCA9PiBgJHtkLnBhcmVudD8ucGFyZW50Py5wYXJlbnQ/LmRhdGEuaWR9LSR7ZC5wYXJlbnQ/LnBhcmVudD8uZGF0YS5pZH0tJHtkLnBhcmVudD8uZGF0YS5pZH0tJHtkLmRhdGEuaWR9YFxuICAgICAgKVxuICAgICAgLmpvaW4oXG4gICAgICAgIGVudGVyID0+XG4gICAgICAgICAgZW50ZXJcbiAgICAgICAgICAgIC5hcHBlbmQoJ2cnKVxuICAgICAgICAgICAgLmNhbGwoZW50ZXJOb2RlcylcbiAgICAgICAgICAgIC5hdHRyKCdvcGFjaXR5JywgMClcbiAgICAgICAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBkID0+ICd0cmFuc2xhdGUoJyArICh0b2dnbGluZ0dyb3VwID8gZC55IDogZC55IC0gbm9kZVdpZHRoIC8gMikgKyAnLCcgKyBkLnggKyAnKScpLFxuICAgICAgICB1cGRhdGUgPT4gdXBkYXRlLFxuICAgICAgICBleGl0ID0+IHtcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy50b29sdGlwT3BlcmF0b3IuY2xvc2UoZmFsc2UpKTtcbiAgICAgICAgICByZXR1cm4gZXhpdFxuICAgICAgICAgICAgLnN0eWxlKCdwb2ludGVyLWV2ZW50cycsICdub25lJylcbiAgICAgICAgICAgIC50cmFuc2l0aW9uKClcbiAgICAgICAgICAgIC5kdXJhdGlvbihub2RlRHVyYXRpb24gLyAyKVxuICAgICAgICAgICAgLmRlbGF5KGQgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGQucGFyZW50Py5jaGlsZHJlbiB8fCBkLnBhcmVudD8uX2NoaWxkcmVuO1xuICAgICAgICAgICAgICByZXR1cm4gKGNoaWxkcmVuPy5sZW5ndGggLSBjaGlsZHJlbj8uaW5kZXhPZihkKSAtIDEpICogMTA7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmVhc2UoZDNFYXNlRWxhc3RpY0luLmFtcGxpdHVkZSgwLjUpLnBlcmlvZCgxKSlcbiAgICAgICAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBkID0+ICd0cmFuc2xhdGUoJyArICh0b2dnbGluZ0dyb3VwID8gZC55IDogZC55IC0gbm9kZVdpZHRoIC8gMikgKyAnLCcgKyBkLnggKyAnKScpXG4gICAgICAgICAgICAuYXR0cignb3BhY2l0eScsIDApXG4gICAgICAgICAgICAucmVtb3ZlKClcbiAgICAgICAgICAgIC5vbignZW5kJywgKCkgPT4ge1xuICAgICAgICAgICAgICAvLyBpbiBjYXNlIGEgdG9vbHRpcCB3YXMgb3BlbmVkIG9uIGEgdHJhbnNpdGlvbmluZyBlbGVtZW50XG4gICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLnRvb2x0aXBPcGVyYXRvci5jbG9zZShmYWxzZSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICB0aGlzLm5vZGVcbiAgICAgIC5jYWxsKG1lcmdlZE5vZGVzLCB7IHRvb2x0aXBPcGVyYXRvcjogdGhpcy50b29sdGlwT3BlcmF0b3IsIHpvbmU6IHRoaXMubmdab25lIH0pXG4gICAgICAudHJhbnNpdGlvbigpXG4gICAgICAuZGVsYXkoZCA9PiB7XG4gICAgICAgIGNvbnN0IGdyb3VwQ2xvc2luZyA9IHRvZ2dsaW5nR3JvdXAgJiYgIWQucGFyZW50Py5jaGlsZHJlbj8uZmluZChuID0+IG4uZGF0YS5ncm91cCk/Ll9ncm91cE9wZW47XG4gICAgICAgIHJldHVybiBncm91cENsb3NpbmcgPyBncm91cERlbGF5IDogKHN3aXRjaGluZ1NlbGVjdGlvbiA/IG5vZGVEdXJhdGlvbiA6IDApICsgZC5wYXJlbnQ/LmNoaWxkcmVuLmluZGV4T2YoZCkgKiAxMDtcbiAgICAgIH0pXG4gICAgICAuZHVyYXRpb24obm9kZUR1cmF0aW9uKVxuICAgICAgLmVhc2UoZDNFYXNlRWxhc3RpY091dC5hbXBsaXR1ZGUoMC41KS5wZXJpb2QoMSkpXG4gICAgICAuYXR0cigndHJhbnNmb3JtJywgZCA9PiBgdHJhbnNsYXRlKCR7ZC55fSwke2QueH0pYClcbiAgICAgIC5hdHRyKCdvcGFjaXR5JywgMSk7XG5cbiAgICB0aGlzLm5vZGUuc2VsZWN0QWxsKCcubm9kZS1vcGVuYWJsZScpLm9uKCdjbGljaycsIHRoaXMuaGFuZGxlTm9kZUNsaWNrLmJpbmQodGhpcykpO1xuICAgIHRoaXMubm9kZS5zZWxlY3RBbGwoJy5ncm91cC1idXR0b24nKS5vbignY2xpY2snLCB0aGlzLmhhbmRsZUdyb3VwQnV0dG9uQ2xpY2suYmluZCh0aGlzKSk7XG5cbiAgICB0aGlzLmxpbmsgPSB0aGlzLmxpbmtcbiAgICAgIC5kYXRhKFxuICAgICAgICBsaW5rcyxcbiAgICAgICAgZCA9PiBgJHtkLnNvdXJjZS5wYXJlbnQ/LnBhcmVudD8uZGF0YS5pZH0tJHtkLnNvdXJjZS5wYXJlbnQ/LmRhdGEuaWR9LSR7ZC5zb3VyY2UuZGF0YS5pZH0tJHtkLnRhcmdldC5kYXRhLmlkfWBcbiAgICAgIClcbiAgICAgIC5qb2luKFxuICAgICAgICBlbnRlciA9PiBlbnRlci5hcHBlbmQoJ3BhdGgnKS5jbGFzc2VkKCdsaW5rLXBhdGgnLCB0cnVlKS5hdHRyKCdvcGFjaXR5JywgMCksXG4gICAgICAgIHVwZGF0ZSA9PiB1cGRhdGUsXG4gICAgICAgIGV4aXQgPT5cbiAgICAgICAgICBleGl0XG4gICAgICAgICAgICAudHJhbnNpdGlvbigpXG4gICAgICAgICAgICAuZHVyYXRpb24obGlua0R1cmF0aW9uIC8gMilcbiAgICAgICAgICAgIC5kZWxheShkID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBkLnNvdXJjZS5wYXJlbnQ/LmNoaWxkcmVuIHx8IGQuc291cmNlLnBhcmVudD8uX2NoaWxkcmVuO1xuICAgICAgICAgICAgICByZXR1cm4gKGNoaWxkcmVuPy5sZW5ndGggLSBjaGlsZHJlbj8uaW5kZXhPZihkLnRhcmdldCkgLSAxKSAqIDEwO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hdHRyKCdvcGFjaXR5JywgMClcbiAgICAgICAgICAgIC5yZW1vdmUoKVxuICAgICAgKVxuICAgICAgLmNhbGwobWVyZ2VkTGlua3MsIHsgdG9nZ2xpbmdHcm91cCwgc3dpdGNoaW5nU2VsZWN0aW9uIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVHcm91cEJ1dHRvbkNsaWNrKF9ldmVudDogYW55LCBkOiBDaGFydE5vZGUpIHtcbiAgICBpZiAoZC5fZ3JleWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGQuX2dyb3VwT3BlbiA9ICFkLl9ncm91cE9wZW47XG4gICAgY29uc3QgY2hpbGRyZW4gPSBkLnBhcmVudC5fZ3JvdXBDaGlsZHJlbjtcbiAgICBkLnBhcmVudC5fZ3JvdXBDaGlsZHJlbiA9IGQucGFyZW50LmNoaWxkcmVuO1xuICAgIGQucGFyZW50LmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgdGhpcy51cGRhdGVDaGFydCh7IHRvZ2dsaW5nR3JvdXA6IHRydWUgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU5vZGVDbGljayhfZXZlbnQ6IGFueSwgZDogQ2hhcnROb2RlIHwgSE5vZGUpOiB2b2lkIHtcbiAgICBkLl9vcGVuID0gIWQuX29wZW47XG4gICAgY29uc3Qgc3dpdGNoaW5nU2VsZWN0aW9uID0gJ19ncmV5ZWQnIGluIGQgJiYgZC5fZ3JleWVkO1xuICAgIGQucGFyZW50LmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xuICAgICAgY2hpbGQuX2dyZXllZCA9IGZhbHNlO1xuICAgICAgaWYgKGNoaWxkICE9PSBkKSB7XG4gICAgICAgIGNoaWxkLl9vcGVuID0gZmFsc2U7XG4gICAgICAgIGNvbGxhcHNlQ2hpbGRyZW4oY2hpbGQpO1xuICAgICAgICBjaGlsZC5fZ3JleWVkID0gZC5fb3BlbjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBkLmNoaWxkcmVuID8gY29sbGFwc2VDaGlsZHJlbihkKSA6IHJlc3RvcmVDaGlsZHJlbihkKTtcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0KHsgc3dpdGNoaW5nU2VsZWN0aW9uIH0pO1xuICB9XG59XG4iLCJAaWYgKGxvYWRpbmcpIHtcbiAgPGRpdiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyIGhhcy10ZXh0LWNlbnRlciBteS01IHB5LTVcIj5cbiAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYVNwaW5uZXJcIiBhbmltYXRpb249XCJzcGluXCIgc2l6ZT1cImxnXCI+PC9mYS1pY29uPlxuICA8L2Rpdj5cbn0gQGVsc2Uge1xuICBAaWYgKGlzUmVjYWxjdWxhdGVkKSB7XG4gICAgQGlmIChmaWx0ZXJlZEltcGFjdEFzc2Vzc21lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zIHB0LTIgcHgtMyBtYi0wXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b24gaXMtc21hbGwgaXMtc3RhdGljIGlzLXNlY29uZGFyeVwiPlNlbGVjdCBhbiBJbXBhY3QgQXNzZXNzbWVudDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sIGlzLWV4cGFuZGVkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1zbWFsbCBpcy1mdWxsd2lkdGggaXMtc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwic2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50SWRcIiAoY2hhbmdlKT1cInJlbG9hZENoYXJ0KClcIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiPlxuICAgICAgICAgICAgICBAZm9yICh2YWx1ZSBvZiBmaWx0ZXJlZEltcGFjdEFzc2Vzc21lbnRzOyB0cmFjayB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cInZhbHVlWydAaWQnXVwiPlxuICAgICAgICAgICAgICAgICAge3sgdmFsdWUubmFtZSB8fCB2YWx1ZVsnQGlkJ10gfX1cbiAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoIW5vRGF0YSkge1xuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnMgcHktMiBweC0zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b24gaXMtc21hbGwgaXMtc3RhdGljIGlzLXNlY29uZGFyeVwiPlNlbGVjdCBhIG1vZGVsPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2wgaXMtZXhwYW5kZWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLXNtYWxsIGlzLWZ1bGx3aWR0aCBpcy1zZWNvbmRhcnlcIj5cbiAgICAgICAgICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJzZWxlY3RlZE1vZGVsSWRcIiAoY2hhbmdlKT1cImluaXRDaGFydCgpXCIgW2Rpc2FibGVkXT1cImxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgQGZvciAobW9kZWwgb2YgbW9kZWxzOyB0cmFjayBtb2RlbCkge1xuICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm1vZGVsWydAaWQnXVwiPnt7IG1vZGVsLm5hbWUgfHwgbW9kZWxbJ0BpZCddIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKCFub0RhdGEgJiYgIXNob3dXYXJuaW5ncykge1xuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtY2VudGVyZWQgcHktMiBpcy1zaXplLTcgaXMtbW9iaWxlIGlzLW11bHRpbGluZVwiPlxuICAgICAgICBAZm9yIChsZWdlbmRJdGVtIG9mIGxlZ2VuZDsgdHJhY2sgbGVnZW5kSXRlbSkge1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvdyBweS0wIGlzLWZsZXgtbW9iaWxlIGlzLWZsZXgtZGlyZWN0aW9uLWNvbHVtbiBpcy1hbGlnbi1pdGVtcy1jZW50ZXIgaXMtbGVnZW5kLWl0ZW1cIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwia2V5LWNvbG91ciBpcy1pbmxpbmUtYmxvY2stdGFibGV0IGlzLWFsaWduLW1pZGRsZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwibm9kZUNvbG91cnNbbGVnZW5kSXRlbS50eXBlXVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJoYXMtdGV4dC1ibGFjayBpcy1hbGlnbi1taWRkbGUga2V5LWxhYmVsIGlzLXBsLXRhYmxldC0yXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXMtaGlkZGVuLWRlc2t0b3BcIj57eyBsZWdlbmRJdGVtLm1vYmlsZVRleHQgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXMtaGlkZGVuLXRvdWNoXCI+e3sgbGVnZW5kSXRlbS50ZXh0IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKGVycm9yKSB7XG4gICAgICA8cCBjbGFzcz1cImhhcy10ZXh0LWRhbmdlciBweS0zXCI+XG4gICAgICAgIEBzd2l0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgQGNhc2UgKCdub3QtZm91bmQnKSB7XG4gICAgICAgICAgICA8cD5JbXBhY3QgQXNzZXNzbWVudCBub3QgZm91bmQ8L3A+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxzcGFuPkFuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWQ6PC9zcGFuPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm10LTFcIj57eyBlcnJvciB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9wPlxuICAgIH1cbiAgICBAaWYgKHNob3dXYXJuaW5ncykge1xuICAgICAgPGRpdiBjbGFzcz1cImhhcy10ZXh0LXdhcm5pbmcgcHktMyBoYXMtdGV4dC1jZW50ZXJlZFwiPlxuICAgICAgICBAZm9yICh3YXJuaW5nIG9mIHdhcm5pbmdzOyB0cmFjayB3YXJuaW5nKSB7XG4gICAgICAgICAgPHAgY2xhc3M9XCJpcy1tYi0yXCI+XG4gICAgICAgICAgICA8ZmEtaWNvbiBjbGFzcz1cInByLTJcIiBbaWNvbl09XCJmYUV4Y2xhbWF0aW9uVHJpYW5nbGVcIj48L2ZhLWljb24+XG4gICAgICAgICAgICBAc3dpdGNoICh3YXJuaW5nKSB7XG4gICAgICAgICAgICAgIEBjYXNlICgnbWlzc2luZy10ZXJtcycpIHtcbiAgICAgICAgICAgICAgICA8c3Bhbj5DYWxjdWxhdGlvbnMgYXJlIG5vdCB1cCB0byBkYXRlLiBTb21lIHRlcm1zIG1heSBub3QgZGlzcGxheSBjb3JyZWN0bHkuPC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9wPlxuICAgICAgICB9XG4gICAgICAgIDxwIGNsYXNzPVwiaXMtdW5kZXJsaW5lZCBpcy1zaXplLTdcIj48YSAoY2xpY2spPVwic2hvd1dhcm5pbmdzID0gZmFsc2VcIj5WaWV3IGNoYXJ0IGFueXdheS48L2E+PC9wPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAobm9EYXRhKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwicHktM1wiPlxuICAgICAgICA8cCBjbGFzcz1cImhhcy10ZXh0LWNlbnRlcmVkXCI+Tm8gY2hhcnQgYXZhaWxhYmxlLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgPHAgY2xhc3M9XCJoYXMtdGV4dC1jZW50ZXJlZCBweS0zXCI+XG4gICAgICBObyBjaGFydCBhdmFpbGFibGUuIFN3aXRjaCB0b1xuICAgICAgPGNvZGU+cmVjYWxjdWxhdGVkPC9jb2RlPlxuICAgICAgdmVyc2lvbi5cbiAgICA8L3A+XG4gIH1cbn1cblxuPGRpdlxuICBbY2xhc3MuaXMtaGlkZGVuXT1cIiFpc1JlY2FsY3VsYXRlZCB8fCBsb2FkaW5nIHx8IGVycm9yIHx8IG5vRGF0YSB8fCBzaG93V2FybmluZ3NcIlxuICBjbGFzcz1cImNoYXJ0LWNvbnRhaW5lciBpcy1yZWxhdGl2ZSB3LTEwMFwiPlxuICA8c3ZnIGNsYXNzPVwidy0xMDAgaC0xMDBcIiAjY2hhcnQ+PC9zdmc+XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJpcy1oaWRkZW5cIlxuICAgIFtuZ2JQb3BvdmVyXT1cInRpcENvbnRlbnRcIlxuICAgIHRyaWdnZXJzPVwibWFudWFsXCJcbiAgICBwbGFjZW1lbnQ9XCJyaWdodCBsZWZ0IGF1dG9cIlxuICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICN0PVwibmdiUG9wb3ZlclwiXG4gICAgcG9zaXRpb25UYXJnZXQ9XCIudGlwLXRhcmdldFwiXG4gICAgcG9wb3ZlckNsYXNzPVwiaXMtbmFycm93IGRyaXZlci1jaGFydC10b29sdGlwXCJcbiAgICBbYW5pbWF0aW9uXT1cInRydWVcIj48L3NwYW4+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0aXBDb250ZW50IGxldC10aXBEYXRhPVwidGlwRGF0YVwiPlxuICBAaWYgKHRpcERhdGEuaGFzV2VpZ2h0ZWRWYWx1ZSkge1xuICAgIDxwPmNvbnRyaWJ1dGlvbjoge3sgdGlwRGF0YS53ZWlnaHRlZFZhbHVlVGV4dCB9fTwvcD5cbiAgfVxuICA8cD5cbiAgICA8YSBjbGFzcz1cImlzLWRhcmtcIiB0YXJnZXQ9XCJfYmxhbmtcIiBbaHJlZl09XCJ0aXBEYXRhLnZhbHVlS2V5SHJlZlwiPnZhbHVlPC9hPlxuICAgIDoge3sgdGlwRGF0YS52YWx1ZVZhbHVlVGV4dCB9fVxuICAgIEBpZiAodGlwRGF0YS5oYXNWYWx1ZSkge1xuICAgICAgPGEgY2xhc3M9XCJpcy1kYXJrXCIgW2hyZWZdPVwidGlwRGF0YS5tb2RlbERvY3NIcmVmXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgIDxzcGFuPkRvY3M8L3NwYW4+XG4gICAgICAgIDxmYS1pY29uIGNsYXNzPVwibWwtMVwiIFtpY29uXT1cImZhRXh0ZXJuYWxMaW5rQWx0XCIgc2l6ZT1cInNtXCI+PC9mYS1pY29uPlxuICAgICAgPC9hPlxuICAgIH1cbiAgPC9wPlxuICA8cD5cbiAgICA8YSBjbGFzcz1cImlzLWRhcmtcIiB0YXJnZXQ9XCJfYmxhbmtcIiBbaHJlZl09XCJ0aXBEYXRhLm1vZGVsS2V5SHJlZlwiPm1ldGhvZE1vZGVsPC9hPlxuICAgIDpcbiAgICA8YSBjbGFzcz1cImlzLWRhcmtcIiB0YXJnZXQ9XCJfYmxhbmtcIiBbaHJlZl09XCJ0aXBEYXRhLm1vZGVsVmFsdWVIcmVmXCI+e3sgdGlwRGF0YS5tb2RlbFZhbHVlIH19PC9hPlxuICA8L3A+XG4gIDxwPlxuICAgIDxhIGNsYXNzPVwiaXMtZGFya1wiIHRhcmdldD1cIl9ibGFua1wiIFtocmVmXT1cInRpcERhdGEudGVybUtleUhyZWZcIj50ZXJtPC9hPlxuICAgIDpcbiAgICA8YSBjbGFzcz1cImlzLWRhcmtcIiB0YXJnZXQ9XCJfYmxhbmtcIiBbaHJlZl09XCJ0aXBEYXRhLnRlcm1WYWx1ZUhyZWZcIj57eyB0aXBEYXRhLnRlcm1WYWx1ZSB9fTwvYT5cbiAgPC9wPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==