@annalib/anna-core 4.2.25 → 4.2.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +2 -3
- package/fesm2015/annalib-anna-core.mjs +1 -2
- package/fesm2015/annalib-anna-core.mjs.map +1 -1
- package/fesm2020/annalib-anna-core.mjs +1 -2
- package/fesm2020/annalib-anna-core.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -351,8 +351,7 @@ export class AnnaNonEditableGenericTableComponent {
|
|
|
351
351
|
if (header.filter == "CHECKBOX" && (uniq(values).filter(n => n != null).length > 1 || activeAndLastlyAppliedHeader)) {
|
|
352
352
|
enabledHeaders.push(item);
|
|
353
353
|
}
|
|
354
|
-
else if (header.filter != "CHECKBOX" &&
|
|
355
|
-
(uniq(values).filter(n => n != null && n != "-").length > 1 || activeAndLastlyAppliedHeader)) {
|
|
354
|
+
else if (header.filter != "CHECKBOX" && (uniq(values).filter(n => n != null && n != "-").length > 1 || activeAndLastlyAppliedHeader)) {
|
|
356
355
|
enabledHeaders.push(item);
|
|
357
356
|
}
|
|
358
357
|
}
|
|
@@ -1746,4 +1745,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
1746
1745
|
type: ViewChildren,
|
|
1747
1746
|
args: ['tableHeader']
|
|
1748
1747
|
}] } });
|
|
1749
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWdlbmVyaWMtdGFibGUtbGliL2NvbXBvbmVudHMvYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29yZS9zcmMvbGliL2FubmEtZ2VuZXJpYy10YWJsZS1saWIvY29tcG9uZW50cy9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlL2FubmEtbm9uLWVkaXRhYmxlLWdlbmVyaWMtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsNEJBQTRCO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBNEIsaUJBQWlCLEVBQWdDLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVNLGdDQUFnQztBQUNoQyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFLbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFlLE1BQU0sc0VBQXNFLENBQUM7QUFJOUgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUMvRixPQUFPLEVBQUUs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c0IscUJBQXFCO3NCQUFqRCxZQUFZO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuLy8gQW5ndWxhciBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZHJlbiwgUXVlcnlMaXN0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzLCBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8vIFRoaXJkIHBhcnR5IGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xyXG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXItc2xpZGVyL25neC1zbGlkZXInO1xyXG5pbXBvcnQgeyBjbG9uZURlZXAsIGlzRXF1YWwsIG1hcCwgdW5pcSwgc29ydEJ5IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xyXG5cclxuXHJcbi8vc3ViLWVudHJpZXMgb2YgYW5uYSBsaWIgaW1wb3J0IHN0YXRlbWVudFxyXG5pbXBvcnQgeyBJR3RHZW5lcmFsQ29uZmlnLCBJR3RUYWJsZUhlYWRlciwgSUhlYWRlckluZm8sIElUb3RhbFJvd0luZm8gfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS1ub24tZWRpdGFibGUtZ3QtbW9kZWxzJztcclxuaW1wb3J0IHsgQW5uYURhdGVUaW1lRm9ybWF0U2VydmljZSwgTmdiRGF0ZVR5cGUgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9zZXJ2aWNlcy9hbm5hLWRhdGUtdGltZS1mb3JtYXQuc2VydmljZSc7XHJcbmltcG9ydCB7IElXZWVrQ2FsZW5kYXIgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS1nbG9iYWwtZHJvcGRvd24tY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgR3RDb2x1bW5JY29uRW1pdHRlZERhdGEsIFJhdGluZ1NlbGxlckdyb3VwSGllcmFyY2h5LCAgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS1nZW5lcmljLWRhdGEtdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IFNvcnRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtc29ydC5tb2RlbCc7XHJcbmltcG9ydCB7IHJhZGlvQnV0dG9uTW9kZWwsIFRvb2x0aXBNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL21vZGVscy9hbm5hLXRvb2x0aXAubW9kZWwnO1xyXG5pbXBvcnQgeyBBbm5hU29ydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9zZXJ2aWNlcy9hbm5hLXNvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFubmFGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvc2VydmljZXMvYW5uYS1maWx0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFubmFHZW5lcmljVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvc2VydmljZXMvYW5uYS1nZW5lcmljLXRhYmxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FubmEtY29yZS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS1saWInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEFubmFOb25FZGl0YWJsZUdlbmVyaWNUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdDaGVja2VkIHtcclxuXHJcbiAgQElucHV0KCkgc2hvd1NrZWxldG9uTG9hZGluZzogYm9vbGVhbjtcclxuICBASW5wdXQoKSB0YWJsZUhlYWRlcnM6IElHdFRhYmxlSGVhZGVyW107XHJcbiAgQElucHV0KCkgdGFibGVEYXRhOiBhbnlbXTtcclxuICBASW5wdXQoKSBjbG9uZWRUYWJsZURhdGE6IGFueVtdO1xyXG4gIEBJbnB1dCgpIG51bWJlck9mU2tlbGV0b25Sb3dzOiBudW1iZXJbXTtcclxuICBASW5wdXQoKSBudW1iZXJPZlNrZWxldG9uQ29sdW1uczogbnVtYmVyW11bXTtcclxuICBASW5wdXQoKSBndEdlbmVyYWxDb25maWc6IElHdEdlbmVyYWxDb25maWc7XHJcbiAgQElucHV0KCkgdG90YWxSb3dJbmZvPzogSVRvdGFsUm93SW5mb1tdO1xyXG4gIEBJbnB1dCgpIGd0RGltZW5zaW9uOiB7IHJvd0hlaWdodDogbnVtYmVyLCB0YWJsZUhlaWdodDogc3RyaW5nLCBoZWFkZXJIZWlnaHQ6IG51bWJlciB9O1xyXG4gIEBJbnB1dCgpIHRhYmxlQ2xhc3M6IHN0cmluZztcclxuICBASW5wdXQoKSBtYXhpbXVtUm93c1doaWNoQ2FuQmVSZW5kZXJlZFdpdGhvdXRTY3JvbGw6IG51bWJlciA9IDU7XHJcbiAgQElucHV0KCkgbGltaXQ6IG51bWJlciA9IDMwOyBcclxuICBASW5wdXQoKSBpbmNsdWRlQm9yZGVySW5UYWJsZUhlaWdodDogYm9vbGVhbiA9IHRydWU7IFxyXG4gIEBJbnB1dCgpIGRvd25sb2FkSW5Qcm9ncmVzczogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwZXJjZW50RG9uZTogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHN0YXJyZWRJblByb2dyZXNzOiBib29sZWFuO1xyXG5cclxuICBAT3V0cHV0KCkgdG9nZ2xlQ2hlY2tib3ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHRvZ2dsZVJvd0NoZWNrYm94ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB0b2dnbGVIZWFkZXJDaGVja2JveCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdW5kb0ljb25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJBcHBsaWVkVG9UYWJsZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc29ydGluZ0FwcGxpZWRUb1RhYmxlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByYWRpb0J1dHRvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjb2x1bW5GaWx0ZXJPcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNvbHVtbkZpbHRlckNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZ3RJY29uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZ3RTVkdJY29uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZ3RUZXh0QWN0aW9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZ3RWaWV3RGV0YWlsQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZG93bmxvYWRTcG90RGV0YWlscyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcblxyXG4gIHRhYmxlRGF0YVdyYXBwZXI6IGFueVtdO1xyXG4gIHJvd0NoZWNrZWQ6IGJvb2xlYW47XHJcbiAgaXNBbGxSb3dzQ2hlY2tlZDogYm9vbGVhbjtcclxuICBub0RhdGFXaWR0aDogc3RyaW5nID0gXCI1NSVcIjtcclxuICBtYXJrZWRGb3JDcmVkaXRTdGF0dXM6IHN0cmluZztcclxuICBtYXJrZWRGb3JNR1N0YXR1czogc3RyaW5nO1xyXG5cclxuICAvL1NvcnQgYW5kIEZpbHRlclxyXG4gIHRvb2xUaXBkYXRhOiBhbnk7XHJcbiAgdGVtcFRvb2x0aXBEYXRhOiBhbnk7XHJcbiAgdG9vbHRpcFJhZGlvVGV4dE1hcDogTWFwPGFueSwgYW55PjtcclxuICBmaWx0ZXJUYWJPYmplY3RzOiBhbnlbXTtcclxuICB0b29sdGlwOiBhbnk7XHJcbiAgY2xvbmVkVG9vbHRpcERhdGE6IGFueTtcclxuICBjbG9uZWRUb29sdGlwU2VsZWN0ZWRNYXBEYXRhOiBhbnk7XHJcbiAgc2VhcmNoQmFyOiBzdHJpbmc7XHJcbiAgZGlzYWJsZUNsZWFyQWxsQnRuOiBib29sZWFuID0gdHJ1ZTtcclxuICBkaXNhYmxlQ29sdW1uQ2xlYXJBbGxCdG46IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGFsbFNlbGVjdGVkID0gMDtcclxuICBzaG93QWxsOiBib29sZWFuO1xyXG4gIGRpc2FibGVDaGVja2JveEFwcGx5OiBib29sZWFuO1xyXG4gIGRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbjogYm9vbGVhbjtcclxuICBkaXNhYmxlVGltZUFwcGx5QnV0dG9uOiBib29sZWFuO1xyXG5cclxuICAvLyBTbGlkZXIgRmlsdGVyXHJcbiAgc2xpZGVyTWluVmFsdWU6IG51bWJlcjtcclxuICBzbGlkZXJNYXhWYWx1ZTogbnVtYmVyO1xyXG4gIG9wdGlvbnM6IE9wdGlvbnMgPSB7XHJcbiAgICBmbG9vcjogMCxcclxuICAgIGNlaWw6IDAsXHJcbiAgICBzdGVwOiAwLjFcclxuICB9O1xyXG4gIHNsaWRlclZhbHVlOiB7IG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciB9O1xyXG4gIHNsaWRlckZpbHRlclRleHRCb3hTdGVwOiBzdHJpbmc7XHJcbiAgc2xpZGVyRW50ZXJlZE1pblZhbHVlOiBudW1iZXI7XHJcbiAgc2xpZGVyRW50ZXJlZE1heFZhbHVlOiBudW1iZXI7XHJcblxyXG4gIC8vIENhbGVuZGFyIEZpbHRlclxyXG4gIGNhbGVuZGFyTWluRW5hYmxlZERhdGU6IE5nYkRhdGVUeXBlO1xyXG4gIGNhbGVuZGFyTWF4RW5hYmxlZERhdGU6IE5nYkRhdGVUeXBlO1xyXG4gIHNlbGVjdGVkTWluRGF0ZTogTmdiRGF0ZVR5cGU7XHJcbiAgc2VsZWN0ZWRNYXhEYXRlOiBOZ2JEYXRlVHlwZTtcclxuXHJcbiAgLy9XZWVrIEZpbHRlclxyXG4gIG11bHRpV2Vla1BpY2tlckNvbmZpZzogSVdlZWtDYWxlbmRhcjtcclxuXHJcbiAgLy9UaW1lIEZpbHRlclxyXG4gIHNlbGVjdGVkRnJvbVRpbWU6IGFueVtdO1xyXG4gIHNlbGVjdGVkVG9UaW1lOiBhbnlbXTtcclxuICBjbG9uZWRTZWxlY3RlZEZyb21UaW1lOiBhbnk7XHJcbiAgY2xvbmVkU2VsZWN0ZWRUb1RpbWU6IGFueTtcclxuICBkaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuOiBib29sZWFuO1xyXG4gIHRhYmxlQ29sdW1uczogc3RyaW5nW10gPSBbXTtcclxuICB0b3RhbFJvd0NvbHVtbnM6IHN0cmluZ1tdID0gbnVsbDtcclxuICBzaG93TXVsdGlUaW1lQ2hlY2tib3g6IGJvb2xlYW47XHJcbiAgc2hvd1plcm9UaW1lQ2hlY2tib3g6IGJvb2xlYW47XHJcbiAgc2hvd0VudGVyVGltZUNoZWNrYm94OiBib29sZWFuO1xyXG4gIG11bHRpVGltZUNoZWNrYm94Q2hlY2tlZDogYm9vbGVhbjtcclxuICB6ZXJvVGltZUNoZWNrYm94Q2hlY2tlZDogYm9vbGVhbjtcclxuICBlbnRlclRpbWVDaGVja2JveENoZWNrZWQ6IGJvb2xlYW47XHJcbiAgYmluZFZhbHVlRnVuY0NhbGxlZDogYm9vbGVhbjtcclxuXHJcbiAgaGllcmFyY2h5VG9vbHRpcDogeyBvcGVuOiAoKSA9PiB2b2lkOyBjbG9zZTogKCkgPT4gdm9pZDsgfTtcclxuICBzZWxsZXJHcm91cEhpZXJhcmNoeTogUmF0aW5nU2VsbGVyR3JvdXBIaWVyYXJjaHlbXTtcclxuICBzaG93RmlsdGVyVG9vbHRpcFRhYnM6IGJvb2xlYW47IC8vQ2hhbmdlIHRoZSBOYW1lXHJcblxyXG4gIGlzU2Nyb2xsZWRMZWZ0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcm93Qm9yZGVyV2lkdGg6IG51bWJlciA9IDI7XHJcbiAgXHJcbiAgc2hvd1NvcnRDb21wb25lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93RmlsdGVyQ29tcG9uZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgdGVtcFNvcnRPcmRlcjogU29ydFR5cGUgPSBudWxsO1xyXG4gICAgXHJcbiAgdG9vbHRpcE9wdGlvbnM6IFRvb2x0aXBNb2RlbFtdO1xyXG4gIGNsb25lZFRvb2x0aXBPcHRpb25zOiBUb29sdGlwTW9kZWxbXTtcclxuICBkaXNhYmxlU2VsZWN0QWxsOiBib29sZWFuO1xyXG4gIGRpc2FibGVDbGVhckFsbDogYm9vbGVhbjtcclxuICBzZWFyY2hJdGVtOiBzdHJpbmc7XHJcblxyXG4gIGRpc2FibGVDYWxlbmRhckFwcGx5QnRuOiBib29sZWFuO1xyXG4gIGNhbGVuZGFyU2VsZWN0aW9uOiBhbnkgPSB7ZnJvbURhdGU6IG51bGwgLCB0b0RhdGU6IG51bGx9O1xyXG5cclxuICBzaG93U2xpZGVyTWluVmFsdWVFcnJvcjogYm9vbGVhbjtcclxuICBzaG93U2xpZGVyTWF4VmFsdWVFcnJvcjogYm9vbGVhbjtcclxuICBpc01pblRleHRCb3hFbXB0eTogYm9vbGVhbjtcclxuICBpc01heFRleHRCb3hFbXB0eTogYm9vbGVhbjtcclxuICBzZWxlY3RlZExhYmVsOiBzdHJpbmc7XHJcblxyXG4gIHN0YXJ0VGltZUhvdXJFcnI6IGJvb2xlYW47XHJcbiAgc3RhcnRUaW1lTWluRXJyOiBib29sZWFuO1xyXG4gIGVuZFRpbWVIb3VyRXJyOiBib29sZWFuO1xyXG4gIGVuZFRpbWVNaW5FcnI6IGJvb2xlYW47XHJcblxyXG4gIHNhbWVUb29sdGlwQ2xpY2tlZDogYm9vbGVhbjtcclxuICBtYXJnaW5Ub3A6IHN0cmluZyA9IFwiXCI7XHJcbiAgQFZpZXdDaGlsZHJlbigndGFibGVIZWFkZXInKSB2aWV3Q2hpbGRUYWJsZUhlYWRlcnM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcclxuXHJcbiAgc2VsZWN0ZWRDaGVja2JveE9wdGlvbnNDb3VudDogbnVtYmVyO1xyXG4gIGlzRmlsdGVyQ2hhbmdlZDogYm9vbGVhbjtcclxuICBpc1NvcnRDaGFuZ2VkOiBib29sZWFuO1xyXG4gIGlzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50OiBib29sZWFuO1xyXG4gIGluY29ycmVjdFNsaWRlcklucHV0OiBib29sZWFuO1xyXG4gIHN0YXJ0OiBudW1iZXIgPSAwO1xyXG4gIGVuZDogbnVtYmVyID0gdGhpcy5saW1pdCArIHRoaXMuc3RhcnQ7XHJcbiAgcmVuZGVyZWREYXRhOiBhbnlbXTsgXHJcbiAgc2VsZWN0ZWRJbnZlbnRvcnlJZEZvckRvd25sb2FkOiBudW1iZXI7XHJcbiAgc2VsZWN0ZWREZW1vZ3JhcGhpY0ZvckRvd25sb2FkOiBhbnk7XHJcbiAgc2VsZWN0ZWRSb3dUeXBlRm9yRG93bmxvYWQ6IHN0cmluZztcclxuICBoZWlnaHRPZkNoZWNrYm94VG9vbHRpcEZpbHRlcjogbnVtYmVyO1xyXG4gIGlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBzZWxlY3RlZFN0YXJyZWRPcmRlcklkOiBzdHJpbmc7XHJcbiAgXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgYW5uYVNvcnRTZXJ2aWNlOiBBbm5hU29ydFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZTogQW5uYURhdGVUaW1lRm9ybWF0U2VydmljZSxcclxuICAgIHB1YmxpYyBhbm5hRmlsdGVyU2VydmljZTogQW5uYUZpbHRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFubmFHZW5lcmljVGFibGVTZXJ2aWNlOiBBbm5hR2VuZXJpY1RhYmxlU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5zZXRUb29sdGlwUmFkaW9OYW1lcygpO1xyXG4gIH1cclxuICBcclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XHJcbiAgICBpZih0aGlzLmd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgJiYgdGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50LmluY2x1ZGVzKFwiT1JERVJfTElTVElOR1wiKSB8fCB0aGlzLmd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gXCJEUlJMSVNUSU5HXCIpe1xyXG4gICAgICB0aGlzLnNldE1hcmdpbkxlZnRGb3JGaWx0ZXJJY29uKCk7XHJcbiAgICB9ICAgIFxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAodGhpcy5zaG93U2tlbGV0b25Mb2FkaW5nKSB7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5udW1iZXJPZlNrZWxldG9uQ29sdW1ucztcclxuICAgICAgdGhpcy5yZW5kZXJlZERhdGEgPSB0aGlzLm51bWJlck9mU2tlbGV0b25Db2x1bW5zO1xyXG4gICAgICB0aGlzLmlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQubmV4dChmYWxzZSk7XHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwID0gbmV3IE1hcCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihjaGFuZ2VzW1wicGVyY2VudERvbmVcIl0gfHwgY2hhbmdlc1tcImRvd25sb2FkSW5Qcm9ncmVzc1wiXSB8fCAoIGNoYW5nZXNbXCJzdGFycmVkSW5Qcm9ncmVzc1wiXSAmJiBjaGFuZ2VzW1wic3RhcnJlZEluUHJvZ3Jlc3NcIl0uY3VycmVudFZhbHVlICE9IHVuZGVmaW5lZCApKXtcclxuICAgICAgY29uc29sZS5sb2coXCJkbyBub3RoaW5nXCIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0SW5pdGlhbFJvd3NGb3JUYWJsZSgpO1xyXG4gICAgICB0aGlzLmRpc2FibGVFbmFibGVFYWNoQ29sdW1uVG9vbHRpcEljb24oKTtcclxuICAgICAgdGhpcy50YWJsZUNvbHVtbnMgPSB0aGlzLnRhYmxlSGVhZGVycy5maWx0ZXIoeCA9PiB4LnZpc2libGUpLm1hcCh4ID0+IHguaGVhZGVySW5mb1swXS5vYmplY3RLZXkpO1xyXG4gICAgICBpZih0aGlzLnRhYmxlRGF0YSAmJiB0aGlzLnRhYmxlRGF0YS5sZW5ndGggPT0gMCl7XHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSBBcnJheSgyKS5maWxsKDApO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZWREYXRhID0gY2xvbmVEZWVwKHRoaXMudGFibGVEYXRhKTtcclxuICAgICAgICB0aGlzLm1hcmdpblRvcCA9ICgtIHRoaXMuZ3REaW1lbnNpb24ucm93SGVpZ2h0IC0gKHRoaXMuZ3REaW1lbnNpb24ucm93SGVpZ2h0LzIpKSArICdweCc7XHJcbiAgICAgICAgdGhpcy5pc05vRGF0YVRvRGlzcGxheVN1YmplY3QkLm5leHQodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICB0aGlzLmlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQubmV4dChmYWxzZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2hvd1NrZWxldG9uTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vc2V0dGluZyB0YWJsZSBjb2x1bW4gaGVyZSBhcyB3ZWxsIGJlY2F1c2Ugd2hpbGUgc2hvd2luZyBza2VsZXRvbiBsb2FkZXIsIHdlIHNob3VsZCBzaG93IHRhYmxlIGhlYWRlcnMuXHJcbiAgICBpZiAoY2hhbmdlc1sndGFibGVIZWFkZXJzJ10gJiYgIWlzRXF1YWwoY2hhbmdlc1sndGFibGVIZWFkZXJzJ10uY3VycmVudFZhbHVlLCBjaGFuZ2VzWyd0YWJsZUhlYWRlcnMnXS5wcmV2aW91c1ZhbHVlKSkge1xyXG4gICAgICB0aGlzLnRhYmxlQ29sdW1ucyA9IHRoaXMudGFibGVIZWFkZXJzLmZpbHRlcih4ID0+IHgudmlzaWJsZSkubWFwKHggPT4geC5oZWFkZXJJbmZvWzBdLm9iamVjdEtleSk7XHJcbiAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSA9IG5ldyBNYXAoKTtcclxuICAgICAgdGhpcy5zZXRDb2x1bW5Tb3J0U3RhdGVNYXAoKTtcclxuICAgICAgdGhpcy5zZXRBY3RpdmVTdGF0ZU9iamVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWyd0b3RhbFJvd0luZm8nXSAmJiBjaGFuZ2VzWyd0b3RhbFJvd0luZm8nXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy50b3RhbFJvd0NvbHVtbnMgPSB0aGlzLnRvdGFsUm93SW5mby5tYXAoeCA9PiB4LmNvbE5hbWUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcblxyXG4gIHNldFRvb2x0aXBSYWRpb05hbWVzKCkge1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwID0gbmV3IE1hcCgpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIlN0YXJ0VGltZUZvckZpbHRlclwiLCBcIlN0YXJ0IFRpbWVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiRW5kVGltZUZvckZpbHRlclwiLCBcIkVuZCBUaW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInN0YXJ0X3RpbWVfZm9yX2ZpbHRlclwiLCBcIlN0YXJ0IFRpbWVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZW5kX3RpbWVfZm9yX2ZpbHRlclwiLCBcIkVuZCBUaW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInByaW1hcnlBRU5hbWVcIiwgXCJQcmltYXJ5IEFFXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJlZ2lvblwiLCBcIlJlZ2lvblwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJhZ2VuY3lOYW1lXCIsIFwiQWdlbmN5XCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImxvY2F0aW9uXCIsIFwiTG9jYXRpb25cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYWR2ZXJ0aXNlck5hbWVcIiwgXCJBZHZlcnRpc2VyXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInByb2R1Y3RDb2RlXCIsIFwiUHJvZHVjdCBDYXRlZ29yeVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJmbGlnaHRTdGFydERhdGVcIiwgXCJTdGFydCBEYXRlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImZsaWdodEVuZERhdGVcIiwgXCJFbmQgRGF0ZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvcmRlcklkQW5kUmV2TnVtYmVyXCIsIFwiU1ROIE9yZGVyIy1SZXYjXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImFsdGVybmF0ZU9yZGVySWRcIiwgXCJBbHQvUmVwIE9yZGVyICNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZ3JwXCIsIFwiR1JQXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImNwcFwiLCBcIkNQUFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJpbXBzXCIsIFwiSU1QU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJjcG1cIiwgXCJDUE1cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib2ZmZXJlZE1Hc1wiLCBcIk9mZmVyZWQgTUdcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib3V0c3RhbmRpbmdQRVwiLCBcIk8vUyBQRVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvZmZlcmVkQURVc1wiLCBcIk9mZmVyZWQgQURVc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ1ZERlZmljaXRWYWx1ZVwiLCBcIk8vUyBBdWQgRGVsdGFcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwic3RhcnRFbmRUaW1lTXVsdGlcIiwgXCJUaW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFZhbHVlXCIsIFwiQm9va2VkXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFNwb3RzXCIsIFwiU3BvdHNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidXNlckNoYW5nZXNcIiwgXCJVc2VyIENoYW5nZXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYnV5ZXJDaGFuZ2VzXCIsIFwiQnV5ZXIgQ2hhbmdlc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ1c2VyTUdcIiwgXCJVc2VyIE1HXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInVzZXJBRFVzXCIsIFwiVXNlciBBRFVzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImludmVudG9yeUNvZGVcIiwgXCJJbnZlbnRvcnkgQ29kZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwcm9ncmFtXCIsIFwiUHJvZ3JhbVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJhZ2VuY3lcIiwgXCJBZ2VuY3lcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYWR2ZXJ0aXNlclwiLCBcIkFkdmVydGlzZXJcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwic3RhcnREYXRlXCIsIFwiU3RhcnQgRGF0ZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJlbmREYXRlXCIsIFwiRW5kIERhdGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmN2UHJlZW1wdFwiLCBcIiQgTWFkZWdvb2QgUEVzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9zUHJlZW1wdFwiLCBcIiQgTy9TIFBFc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyY3ZVbmRlckRseVwiLCBcIlJlY292ZXJlZCBVRFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvc1VuZGVyRGx5XCIsIFwiTy9zIFVuZGVyIERseVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwcmltYXJ5QWVcIiwgXCJQcmltYXJ5IEFFXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJlZ2lvblwiLCBcIlJlZ2lvblwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZXZDb2RlMVwiLCBcIlJldiBjb2RlIDFcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib3JkZXJOb1Jldk5vXCIsIFwiU1ROIE9yZGVyIy1SZXYjXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJldkNvZGUyXCIsIFwiUmV2IGNvZGUgMlwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZXZDb2RlM1wiLCBcIlJldiBjb2RlIDNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkXCIsIFwiJCBCb29rZWRcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwic3BvdHNcIiwgXCJTcG90c1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRBdWRQZXJjZW50XCIsIFwiUG9zdGVkICVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmV2aXNpb25cIiwgXCJSZXZpc2lvblwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJidXllck9yZGVySWRcIiwgXCJBTFQvUkVQIE9yZGVyI1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJkZW1vXCIsXCJEZW1vXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZEFkdVwiLFwiJCBQb3N0ZWQgQURVc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJzY2hlZHVsZWRBZHVcIixcIiQgU2NoZWR1bGVkIEFEVXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYXVkaWVuY2VEZWZpY2l0XCIsXCIkIE8vUyBBdWRpZW5jZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRBdWRQZXJjZW50XCIsXCJQb3N0ZWQgQXVkaWVuY2UgJVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3RlbnRpYWxVbml0c1ZhbHVlXCIsXCJQT1QgVW5pdHNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkVW5pdHNWYWx1ZVwiLFwiQm9va2VkIFVuaXRzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEFtb3VudFdpdGhaZXJvUmF0aW5nVmFsdWVcIixcIlRvdGFsICQgQm9va2VkXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEFtb3VudFBlcmNlbnRhZ2VXaXRoWmVyb1JhdGluZ1ZhbHVlXCIsXCIlIEFnYWluc3QgQWxsIERlbW9zXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEFtb3VudFdpdGhvdXRaZXJvUmF0aW5nVmFsdWVcIixcIiRCb29rZWQgV2l0aCBJbXBzKOKAmTAwMClcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkQW1vdW50UGVyY2VudGFnZVdpdGhvdXRaZXJvUmF0aW5nVmFsdWVcIiwgXCIlIEFnYWluc3QgQWxsIERlbW9zXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidG90YWxCb29rZWRBbW91bnRWYWx1ZVwiLFwiVG90YWwgJEJvb2tlZFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJhdmVyYWdlVW5pdFJhdGVWYWx1ZVwiLFwiQVVSXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInRvdGFsQm9va2VkQW1vdW50V2l0aFJhdGluZ1ZhbHVlXCIsIFwiJEJvb2tlZCBXaXRoIFJhdGluZ1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJhdmVyYWdlVW5pdFJhdGVXaXRoUmF0aW5nVmFsdWVcIiwgXCJBVVIgV2l0aCBSYXRpbmdcIik7XHJcbiAgICBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ0b3RhbEJvb2tlZEFtb3VudFdpdGhJbXByZXNzaW9uVmFsdWVcIiwgXCIkQm9va2VkIFdpdGggSU1QU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJhdmVyYWdlVW5pdFJhdGVXaXRoSW1wcmVzc2lvblZhbHVlXCIsIFwiQVVSIFdpdGggSU1QU1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFVuaXRzV2l0aFJhdGluZ1ZhbHVlXCIsIFwiQm9va2VkIFVuaXRzIFdpdGggUmF0aW5nXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZFVuaXRzV2l0aFJhdGluZ1ZhbHVlXCIsIFwiUG9zdGVkIFVuaXRzIFdpdGggUmF0aW5nXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkVW5pdHNXaXRoSW1wcmVzc2lvblZhbHVlXCIsIFwiQm9va2VkIFVuaXRzIFdpdGggSU1QU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRVbml0c1dpdGhJbXByZXNzaW9uVmFsdWVcIiwgXCJQb3N0ZWQgVW5pdHMgV2l0aCBJTVBTXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkUmF0aW5nc1wiLCBcIkJvb2tlZCBSYXRpbmdcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG9zdGVkUmF0aW5nc1wiLCBcIlBvc3RlZCBSYXRpbmdcIik7XHJcbiAgICBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRJbXByZXNzaW9uc1wiLCBcIkJvb2tlZCBJTVBTXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZEltcHJlc3Npb25zXCIsIFwiUG9zdGVkIElNUFNcIik7XHJcbiAgICBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRBdmVyYWdlUmF0aW5nXCIsIFwiQm9va2VkIEFWRyBSYXRpbmdcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG9zdGVkQXZlcmFnZVJhdGluZ1wiLCBcIlBvc3RlZCBBVkcgUmF0aW5nXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkQXZlcmFnZUltcHJlc3Npb25cIiwgXCJCb29rZWQgQVZHIElNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG9zdGVkQXZlcmFnZUltcHJlc3Npb25cIiwgXCJQb3N0ZWQgQVZHIElNUFNcIik7XHJcbiAgICBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRDcHBWYWx1ZVwiLCBcIkJvb2tlZCBDUFBcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkRWZmZWN0aXZlQ3BwVmFsdWVcIiwgXCJFZmZlY3RpdmUgQ1BQXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkQ3BtVmFsdWVcIiwgXCJCb29rZWQgQ1BNXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEVmZmVjdGl2ZUNwbVZhbHVlXCIsIFwiRWZmZWN0aXZlIENQTVwiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9yZGVyU291cmNlXCIsXCJPcmRlciBTb3VyY2VcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib3JkZXJDYXRlZ29yeVwiLFwiQ2F0ZWdvcnlcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiY2FzaE9yVHJhZGVcIixcIkMvVFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZXZpc2lvblN0YXJ0RGF0ZVwiLCBcIlJldmlzaW9uIFN0YXJ0IERhdGVcIik7XHJcbiAgICBcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlVGFibGVEYXRhV3JhcHBlcigpIHtcclxuICAgIHRoaXMuc2hvd1NrZWxldG9uTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnRhYmxlRGF0YVdyYXBwZXIgPSBbXTtcclxuICAgIGxldCByb3dPYmplY3Q6IGFueTtcclxuICAgIGxldCBjb2x1bW5OYW1lOiBzdHJpbmc7XHJcbiAgICBsZXQgY29sdW1uT2JqZWN0OiB7IFt4OiBzdHJpbmddOiBhbnk7IH07XHJcbiAgICBsZXQgY29sdW1uT2JqZWN0S2V5O1xyXG4gICAgbGV0IGtleXNVc2VkRm9yVGFibGVEaXNwbGF5OiBzdHJpbmdbXTtcclxuICAgIGxldCBrZXlzVXNlZEZvckNvbHVtbjogc3RyaW5nW107XHJcbiAgICBsZXQgYWRkaXRpb25hbEluZm9PYmplY3Q6IHsgW3g6IHN0cmluZ106IGFueTsgfTtcclxuICAgIGxldCBhZGRpdGlvbmFsS2V5cztcclxuICAgIHRoaXMudGFibGVEYXRhLmZvckVhY2goKG9iajogeyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiB7XHJcbiAgICAgIHJvd09iamVjdCA9IHt9O1xyXG4gICAgICBrZXlzVXNlZEZvclRhYmxlRGlzcGxheSA9IFtdO1xyXG4gICAgICBmb3IgKHZhciBjb2xOdW0gaW4gdGhpcy50YWJsZUhlYWRlcnMpIHtcclxuICAgICAgICBjb2x1bW5PYmplY3QgPSB7fTtcclxuICAgICAgICBpZiAoIXRoaXMudGFibGVIZWFkZXJzW2NvbE51bV0udmlzaWJsZSkge1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbHVtbk5hbWUgPSBcIlwiO1xyXG4gICAgICAgIGtleXNVc2VkRm9yQ29sdW1uID0gW107XHJcbiAgICAgICAgdGhpcy50YWJsZUhlYWRlcnNbY29sTnVtXS5oZWFkZXJJbmZvLmZvckVhY2goKGhlYWRlcikgPT4ge1xyXG4gICAgICAgICAgaWYgKGhlYWRlci50eXBlT2ZCb2R5RGF0YSA9PT0gXCJTVFJJTkdcIikge1xyXG4gICAgICAgICAgICBjb2x1bW5PYmplY3RLZXkgPSBoZWFkZXIub2JqZWN0S2V5O1xyXG4gICAgICAgICAgICBjb2x1bW5PYmplY3RbY29sdW1uT2JqZWN0S2V5XSA9IG9ialtjb2x1bW5PYmplY3RLZXldO1xyXG4gICAgICAgICAgICBrZXlzVXNlZEZvclRhYmxlRGlzcGxheS5wdXNoKGNvbHVtbk9iamVjdEtleSk7XHJcbiAgICAgICAgICAgIGtleXNVc2VkRm9yQ29sdW1uLnB1c2goY29sdW1uT2JqZWN0S2V5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGhlYWRlci50eXBlT2ZCb2R5RGF0YSA9PT0gXCJJQ09OXCIpIHtcclxuICAgICAgICAgICAgY29sdW1uT2JqZWN0S2V5ID0gaGVhZGVyLnR5cGVPZkJvZHlEYXRhO1xyXG4gICAgICAgICAgICBjb2x1bW5PYmplY3RbY29sdW1uT2JqZWN0S2V5XSA9IG9ialtoZWFkZXIub2JqZWN0S2V5XTtcclxuICAgICAgICAgICAga2V5c1VzZWRGb3JDb2x1bW4ucHVzaChoZWFkZXIub2JqZWN0S2V5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGhlYWRlci50eXBlT2ZCb2R5RGF0YSA9PT0gXCJDSEVDS0JPWFwiKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbk9iamVjdEtleSA9IGhlYWRlci50eXBlT2ZCb2R5RGF0YTtcclxuICAgICAgICAgICAgY29sdW1uT2JqZWN0W2NvbHVtbk9iamVjdEtleV0gPSBvYmpbaGVhZGVyLm9iamVjdEtleV07XHJcbiAgICAgICAgICAgIGtleXNVc2VkRm9yQ29sdW1uLnB1c2goaGVhZGVyLm9iamVjdEtleSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXNVc2VkRm9yQ29sdW1uLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBjb2x1bW5OYW1lICs9IGtleXNVc2VkRm9yQ29sdW1uW2ldO1xyXG4gICAgICAgICAgaWYgKGkgIT09IGtleXNVc2VkRm9yQ29sdW1uLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgY29sdW1uTmFtZSArPSAnLCc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvd09iamVjdFtjb2x1bW5OYW1lXSA9IGNvbHVtbk9iamVjdDtcclxuICAgICAgfVxyXG4gICAgICBhZGRpdGlvbmFsSW5mb09iamVjdCA9IHt9O1xyXG4gICAgICBhZGRpdGlvbmFsS2V5cyA9IE9iamVjdC5rZXlzKG9iaikuZmlsdGVyKGtleSA9PiAha2V5c1VzZWRGb3JUYWJsZURpc3BsYXkuaW5jbHVkZXMoa2V5KSk7XHJcbiAgICAgIGFkZGl0aW9uYWxLZXlzLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBhZGRpdGlvbmFsSW5mb09iamVjdFtrZXldID0gb2JqW2tleV07XHJcbiAgICAgIH0pXHJcbiAgICAgIHJvd09iamVjdC5BZGRpdGlvbmFsSW5mbyA9IGFkZGl0aW9uYWxJbmZvT2JqZWN0O1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YVdyYXBwZXIucHVzaChyb3dPYmplY3QpO1xyXG4gICAgfSlcclxuICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy50YWJsZURhdGFXcmFwcGVyO1xyXG4gICAgdGhpcy5zaG93U2tlbGV0b25Mb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2VsZWN0T3JVbnNlbGVjdENoZWNrYm94KHJvd0RhdGE6IGFueSwgY29sdW1uS2V5czogYW55LCBpc0NoZWNrYm94U2VsZWN0ZWQ6IGFueSkge1xyXG4gICAgdGhpcy50b2dnbGVDaGVja2JveC5lbWl0KHsgcm93RGF0YSwgY29sdW1uS2V5cywgaXNDaGVja2JveFNlbGVjdGVkIH0pO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0VW5zZWxlY3RBbGxSb3dzKCkge1xyXG4gICAgdGhpcy50b2dnbGVIZWFkZXJDaGVja2JveC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RVbnNlbGVjdFJvdyhyb3dEYXRhOiBhbnkpIHtcclxuICAgIHRoaXMudG9nZ2xlUm93Q2hlY2tib3guZW1pdChyb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIHVuZG9DcmVkaXRlZFNwb3QoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnVuZG9JY29uQ2xpY2tlZC5lbWl0KHsgZGF0YSwgbWdPckNyZWRpdDogXCJDcmVkaXRcIiB9KTtcclxuICB9XHJcblxyXG4gIHVuZG9NZ1Nwb3QoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnVuZG9JY29uQ2xpY2tlZC5lbWl0KHsgZGF0YSwgbWdPckNyZWRpdDogXCJNYWtlR29vZFwiIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9Tb3J0IGFuZCBGaWx0ZXIgTG9naWMgYmVnaW5zIVxyXG4gIGNsb3NlVG9vbHRpcCgpIHtcclxuICAgIGlmICh0aGlzLnRvb2x0aXAgJiYgdGhpcy50b29sdGlwLmlzT3BlbigpKSB7XHJcbiAgICAgIHRoaXMudG9vbHRpcC5jbG9zZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy50b29sdGlwID0gbnVsbDtcclxuICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSBmYWxzZTtcclxuICAgIGlmICghdGhpcy5iaW5kVmFsdWVGdW5jQ2FsbGVkKSB7XHJcbiAgICAgIHRoaXMuY29sdW1uRmlsdGVyQ2xvc2VkLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzVG9vbHRpcEFjdGl2ZShoZWFkZXI6IGFueVtdKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pc1Rvb2x0aXBBY3RpdmUoaGVhZGVyLHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBiaW5kVGhlVmFsdWVUb1Rvb2xUaXAodG9vbHRpcDogYW55LCBoZWFkZXI6IElIZWFkZXJJbmZvKSB7XHJcblxyXG4gICAgdGhpcy5iaW5kVmFsdWVGdW5jQ2FsbGVkID0gdHJ1ZTtcclxuICAgIGxldCBjb250YWluZXJUb1Njcm9sbDtcclxuICAgIGlmICh0aGlzLmd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT09IFwiU1BPVERFVEFJTFNcIiB8fCB0aGlzLmd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT09IFwiRFJSTElTVElOR1wiKSB7XHJcbiAgICAgIGNvbnRhaW5lclRvU2Nyb2xsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInNjcm9sbGFibGUtY29udGFpbmVyXCIpWzBdO1xyXG4gICAgICB2YXIgbWVkaWFRdWVyeSA9IHdpbmRvdy5tYXRjaE1lZGlhKFwiKG1heC13aWR0aDogMTM2NnB4KVwiKTtcclxuICAgICAgaWYgKG1lZGlhUXVlcnkubWF0Y2hlcykge1xyXG4gICAgICAgIGNvbnRhaW5lclRvU2Nyb2xsLnNjcm9sbCgwLCB0aGlzLmd0R2VuZXJhbENvbmZpZy52ZXJ0aWNhbFNjcm9sbE9mZnNldEZvckZpbHRlclRvb2x0aXApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIGlmIHNhbWUgdG9vbHRpcCBvcGVuZWQgY2xvc2UgaXRcclxuICAgIGlmICh0b29sdGlwID09IHRoaXMudG9vbHRpcCkge1xyXG4gICAgICB0aGlzLmJpbmRWYWx1ZUZ1bmNDYWxsZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgZW5hYmxlZEhlYWRlcnM6IGFueVtdID0gW107XHJcbiAgICAgIHRoaXMuY2hlY2tJZlVuaXF1ZVZhbHVlUHJlc2VudEZvclRoZUhlYWRlcihoZWFkZXIsZW5hYmxlZEhlYWRlcnMpO1xyXG4gICAgICB0aGlzLm9wZW5Ub29sdGlwKHRvb2x0aXAsIGVuYWJsZWRIZWFkZXJzLGhlYWRlcik7XHJcblxyXG4gICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCAxNTAwICYmIHdpbmRvdy5pbm5lckhlaWdodCA8IDc2OCAmJiAhdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zbGlkZXJTZXQuaGFzKGhlYWRlci5maWx0ZXJTb3J0T2JqZWN0S2V5c1swXSkpIHtcclxuICAgICAgICB0aGlzLmNvbHVtbkZpbHRlck9wZW5lZC5lbWl0KCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2hvd0ZpbHRlclRvb2x0aXBUYWJzID0gaGVhZGVyLmZpbHRlclNvcnRPYmplY3RLZXlzLmxlbmd0aCA+IDE7XHJcbiAgICAgIGxldCBhY3RpdmVUYWIgPSB0aGlzLmZpbHRlclRhYk9iamVjdHNbMF07XHJcbiAgICAgIHRoaXMucG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGFjdGl2ZVRhYik7XHJcbiAgICAgIHRoaXMuYmluZFZhbHVlRnVuY0NhbGxlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tJZlVuaXF1ZVZhbHVlUHJlc2VudEZvclRoZUhlYWRlcihoZWFkZXI6IElIZWFkZXJJbmZvLCBlbmFibGVkSGVhZGVyczogYW55W10pe1xyXG4gICAgaGVhZGVyLmZpbHRlclNvcnRPYmplY3RLZXlzLmZvckVhY2goKGl0ZW06IHN0cmluZyB8IG51bWJlcikgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyh1bmlxKHRoaXMudGFibGVEYXRhLm1hcCgodTp7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVbaXRlbV0pKSk7XHJcbiAgICAgIGlmKGl0ZW0gPT0gXCJwZXJpb2RcIil7XHJcbiAgICAgICAgICBsZXQgdW5pcVN0YXJ0RGF0ZSA9IHVuaXEodGhpcy50YWJsZURhdGEubWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVbXCJzdGFydERhdGVcIl0pKTtcclxuICAgICAgICAgIGxldCB1bmlxRW5kRGF0ZSA9IHVuaXEodGhpcy50YWJsZURhdGEubWFwKCh1OnsgW3g6IHN0cmluZ106IGFueTsgfSkgPT4gdVtcImVuZERhdGVcIl0pKTtcclxuICAgICAgICAgIGlmKHVuaXFTdGFydERhdGUubGVuZ3RoID4gMSB8fCB1bmlxRW5kRGF0ZS5sZW5ndGggPiAxIHx8IHRoaXMuaXNUb29sdGlwQWN0aXZlKFtpdGVtXSkpe1xyXG4gICAgICAgICAgICBlbmFibGVkSGVhZGVycy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgbGV0IHZhbHVlcyA9IHRoaXMudGFibGVEYXRhLm1hcCgodTogeyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiB1W2l0ZW1dKTtcclxuICAgICAgICAvLyBpZiBsYXN0IGFwcGxpZWQgZmlsdGVyIGlzIHRoaXMgaGVhZGVyLCBwdXNoIGl0IGFsb3MgYXMgZW5hYmxlZEhlYWRlclxyXG4gICAgICAgIGxldCBhY3RpdmVBbmRMYXN0bHlBcHBsaWVkSGVhZGVyID0gZmFsc2U7XHJcbiAgICAgICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5hcHBsaWVkRmlsdGVyc0FycmF5Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuYXBwbGllZEZpbHRlcnNBcnJheVt0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmFwcGxpZWRGaWx0ZXJzQXJyYXkubGVuZ3RoLTFdID09IGl0ZW0pe1xyXG4gICAgICAgICAgICBhY3RpdmVBbmRMYXN0bHlBcHBsaWVkSGVhZGVyID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICBpZihoZWFkZXIuZmlsdGVyID09IFwiQ0hFQ0tCT1hcIiAmJiAodW5pcSh2YWx1ZXMpLmZpbHRlcihuID0+IG4hPW51bGwpLmxlbmd0aCA+IDEgfHwgYWN0aXZlQW5kTGFzdGx5QXBwbGllZEhlYWRlcikpe1xyXG4gICAgICAgICAgZW5hYmxlZEhlYWRlcnMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihoZWFkZXIuZmlsdGVyICE9IFwiQ0hFQ0tCT1hcIiAmJiBcclxuICAgICAgICAgICAgKHVuaXEodmFsdWVzKS5maWx0ZXIobiA9PiBuIT1udWxsICYmIG4hPVwiLVwiKS5sZW5ndGggPiAxIHx8IGFjdGl2ZUFuZExhc3RseUFwcGxpZWRIZWFkZXIpKXtcclxuICAgICAgICAgIGVuYWJsZWRIZWFkZXJzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvcGVuVG9vbHRpcCh0b29sdGlwOiBhbnksaGVhZGVyOiBhbnksIGNvbHVtbkhlYWRlcjogSUhlYWRlckluZm8pIHtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcbiAgICB0aGlzLnRvb2x0aXAgPSB0b29sdGlwO1xyXG4gICAgdGhpcy50b29sdGlwLm9wZW4oKTtcclxuICAgIC8vY29udmVydCBrZXkgaW50byB0aGUgaGVhZGVyXHJcbiAgICB0aGlzLmZpbHRlclRhYk9iamVjdHMgPSBoZWFkZXIubWFwKChrZXk6IHN0cmluZyxpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGxldCB2YWx1ZSA9IHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5oYXMoa2V5KVxyXG4gICAgICAgID8gdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLmdldChrZXkpXHJcbiAgICAgICAgOiBrZXk7IC8vY2hhbmdlIHRvIGRpc3BsYXkgbmFtZVxyXG4gICAgICByZXR1cm4gbmV3IHJhZGlvQnV0dG9uTW9kZWwoa2V5LCB2YWx1ZSwgY29sdW1uSGVhZGVyLmlzU29ydFJlcXVpcmVkW2luZGV4XSwgY29sdW1uSGVhZGVyLmlzRmlsdGVyUmVxdWlyZWRbaW5kZXhdKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJDb2x1bW5GaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmNsZWFyQ29sdW1uRmlsdGVyKCk7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gICAgdGhpcy50YWJsZURhdGEgPSBjbG9uZURlZXAodGhpcy5hbm5hRmlsdGVyU2VydmljZS5maWx0ZXJEYXRhKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcIlwiKSk7XHJcbiAgICB0aGlzLmFubmFTb3J0U2VydmljZS5ub1NvcnRpbmdBcHBsaWVkRGF0YSA9IHRoaXMudGFibGVEYXRhO1xyXG4gICAgdGhpcy5jaGVja0lmU29ydGluZ0lzQXBwbGllZCgpO1xyXG4gICAgdGhpcy5maWx0ZXJBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgIHRoaXMuZGlzYWJsZUVuYWJsZUVhY2hDb2x1bW5Ub29sdGlwSWNvbigpO1xyXG4gICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS51cGRhdGVTdGF0ZU9mVGhlQ3VycmVudEZpbHRlclRhYih0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUpO1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8oYWN0aXZlVGFiOiByYWRpb0J1dHRvbk1vZGVsKSB7XHJcblxyXG4gICAgbGV0IGhlYWRlciA9IGFjdGl2ZVRhYi5rZXk7XHJcbiAgICB0aGlzLnNlbGVjdGVkTGFiZWwgPSBhY3RpdmVUYWIubGFiZWw7XHJcbiAgICB0aGlzLnNob3dTb3J0Q29tcG9uZW50ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VhcmNoSXRlbSA9IG51bGw7XHJcbiAgICBcclxuICAgIHRoaXMuc2hvd1NvcnRDb21wb25lbnQgPSBhY3RpdmVUYWIuaXNTb3J0UmVxdWlyZWQ7XHJcbiAgICB0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgPSBhY3RpdmVUYWIuaXNGaWx0ZXJSZXF1aXJlZDtcclxuICAgIHRoaXMudGVtcFNvcnRPcmRlciA9IG51bGw7XHJcbiAgICB0aGlzLmlzRmlsdGVyQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1NvcnRDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICBcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyA9IGhlYWRlcjtcclxuICAgIHRoaXMuZGlzYWJsZUFjdGl2ZUZpbHRlckNsZWFyQnV0dG9uKCk7XHJcbiAgICBcclxuICAgIHRoaXMuY3JlYXRlRmlsdGVyVG9vbHRpcERhdGEoaGVhZGVyKTtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgY3JlYXRlRmlsdGVyVG9vbHRpcERhdGEoaGVhZGVyOiBzdHJpbmcpe1xyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50KXtcclxuICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaXNhYmxlQ2FsZW5kYXJBcHBseUJ0biA9IHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0biA9IHRydWU7XHJcbiAgICAgIFxyXG4gICAgICBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS5jYWxlbmRhclNldC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICAgIHRoaXMuZ2V0Q2FsZW5kYXJEYXRhKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zbGlkZXJTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmdldFNsaWRlckRhdGEoaGVhZGVyKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRpbWVTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmdldFRpbWVGaWx0ZXJEYXRhKGhlYWRlcik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5nZXRDaGVja2JveERhdGEoaGVhZGVyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaXNhYmxlQ2FsZW5kYXJBcHBseUJ0biA9IHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0biA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlQWN0aXZlRmlsdGVyQ2xlYXJCdXR0b24oKXtcclxuICAgIGxldCBzZWxlY3RlZEZpbHRlclNldCA9IG5ldyBTZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5hcHBsaWVkRmlsdGVyc0FycmF5KTtcclxuICAgIGxldCBpc1NvcnRQcmVzZW50ID0gKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5zaXplID4gMCAmJiB0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykgIT0gXCJERUZBVUxUXCIpO1xyXG4gICAgdGhpcy5kaXNhYmxlQ29sdW1uQ2xlYXJBbGxCdG4gPSBzZWxlY3RlZEZpbHRlclNldC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSB8fCBpc1NvcnRQcmVzZW50ID8gZmFsc2UgOiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2xpZGVyRGF0YShoZWFkZXI6IHN0cmluZykge1xyXG4gICAgXHJcbiAgICB0aGlzLmNyZWF0ZU9wdGlvbnNGb3JTbGlkZXIoaGVhZGVyKTtcclxuICAgIHRoaXMuc2V0U2VsZWN0ZWRSYW5nZUZvclNsaWRlcihoZWFkZXIpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlT3B0aW9uc0ZvclNsaWRlcihoZWFkZXI6IHN0cmluZyl7XHJcblxyXG4gICAgbGV0IHRyYW5zbGF0ZUZ1bmM7XHJcbiAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSA9IHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gdGhpcy5pc01pblRleHRCb3hFbXB0eSA9IHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zbGlkZXJDdXJyZW5jeVNldC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICB0cmFuc2xhdGVGdW5jID0gXCJjdXJyZW5jeVwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihoZWFkZXIgPT0gXCJwb3N0ZWRBdWRQZXJjZW50XCIpe1xyXG4gICAgICB0cmFuc2xhdGVGdW5jID0gXCJwZXJjZW50XCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdHJhbnNsYXRlRnVuYyA9IFwibm9ybWFsXCI7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG9wdGlvbnNEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5nZXRGaWx0ZXJPcHRpb25zRGF0YSh0aGlzLnRhYmxlRGF0YSwgdGhpcy5jbG9uZWRUYWJsZURhdGEpO1xyXG4gICAgbGV0IG1pblZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NYXhBbmRNaW5WYWx1ZShvcHRpb25zRGF0YSwgaGVhZGVyLCB0cnVlKTtcclxuICAgIGxldCBtYXhWYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWF4QW5kTWluVmFsdWUob3B0aW9uc0RhdGEsIGhlYWRlciwgZmFsc2UpO1xyXG5cclxuICAgIGxldCBvYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNldE9wdGlvblZhbHVlcyhtaW5WYWx1ZSxtYXhWYWx1ZSk7XHJcblxyXG4gICAgaWYgKHRyYW5zbGF0ZUZ1bmMgPT09IFwibm9ybWFsXCIpIHtcclxuICAgICAgICBvYmoudHJhbnNsYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5ub3JtYWxUcmFuc2xhdGVGdW5jdGlvbjtcclxuICAgIH0gZWxzZSBpZiAodHJhbnNsYXRlRnVuYyA9PT0gXCJwZXJjZW50XCIpIHtcclxuICAgICAgICBvYmoudHJhbnNsYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5wZXJjZW50VHJhbnNsYXRlRnVuY3Rpb247XHJcbiAgICB9IGVsc2UgaWYgKHRyYW5zbGF0ZUZ1bmMgPT09IFwiY3VycmVuY3lcIikge1xyXG4gICAgICAgIG9iai50cmFuc2xhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmN1cnJlbmN5VHJhbnNsYXRlRnVuY3Rpb247XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vcHRpb25zID0gb2JqO1xyXG4gICAgdGhpcy5vcHRpb25zLnN0ZXAgPSAxO1xyXG4gICAgdGhpcy5zbGlkZXJGaWx0ZXJUZXh0Qm94U3RlcCA9IFwiMVwiO1xyXG4gICAgaWYgKGhlYWRlciAhPT0gXCJXZWVrTnVtYmVyXCIpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnN0ZXAgPSAwLjE7XHJcbiAgICAgIHRoaXMuc2xpZGVyRmlsdGVyVGV4dEJveFN0ZXAgPSBcIjAuMVwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0ZWRSYW5nZUZvclNsaWRlcihoZWFkZXI6IHN0cmluZyl7XHJcbiAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXMoaGVhZGVyKSl7XHJcbiAgICAgIGxldCBzZWxlY3RlZE9iaiA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpO1xyXG4gICAgICB0aGlzLnNsaWRlck1pblZhbHVlID0gc2VsZWN0ZWRPYmoubWluIDwgdGhpcy5vcHRpb25zLmZsb29yID8gdGhpcy5vcHRpb25zLmZsb29yIDogc2VsZWN0ZWRPYmoubWluO1xyXG4gICAgICB0aGlzLnNsaWRlck1heFZhbHVlID0gc2VsZWN0ZWRPYmoubWF4IDwgdGhpcy5vcHRpb25zLmNlaWwgPyBzZWxlY3RlZE9iai5tYXggOiB0aGlzLm9wdGlvbnMuY2VpbDtcclxuICAgICAgdGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPSB0aGlzLnNsaWRlck1pblZhbHVlO1xyXG4gICAgICB0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSA9IHRoaXMuc2xpZGVyTWF4VmFsdWU7ICAgXHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICAgIHRoaXMuc2xpZGVyTWluVmFsdWUgPSB0aGlzLm9wdGlvbnMuZmxvb3I7XHJcbiAgICAgICAgdGhpcy5zbGlkZXJNYXhWYWx1ZSA9IHRoaXMub3B0aW9ucy5jZWlsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPSB0aGlzLnNsaWRlck1pblZhbHVlO1xyXG4gICAgdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPSB0aGlzLnNsaWRlck1heFZhbHVlO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldENoZWNrYm94RGF0YShoZWFkZXI6IHN0cmluZykge1xyXG5cclxuICAgIGxldCB0b29sdGlwT3B0aW9ucyA9IHRoaXMuY3JlYXRlTGlzdEZvckNoZWNrYm94RmlsdGVyKGhlYWRlcik7ICAgIFxyXG4gICAgbGV0IHNlbGVjdGVkSXRlbXMgPSBzb3J0QnkodG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc1NlbGVjdGVkKSxcImxhYmVsXCIpO1xyXG4gICAgbGV0IHVuc2VsZWN0ZWRJdGVtcyA9IHNvcnRCeSh0b29sdGlwT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiAhaXRlbS5pc1NlbGVjdGVkKSxcImxhYmVsXCIpO1xyXG4gICAgICAgIFxyXG4gICAgdGhpcy5jbG9uZWRUb29sdGlwT3B0aW9ucyA9IFsuLi5zZWxlY3RlZEl0ZW1zLCAuLi51bnNlbGVjdGVkSXRlbXNdO1xyXG5cclxuICAgIHRoaXMudG9vbHRpcE9wdGlvbnMgPSBjbG9uZURlZXAodGhpcy5jbG9uZWRUb29sdGlwT3B0aW9ucyk7XHJcbiAgICBcclxuICAgIGxldCBtYXJnaW4gPSA1O1xyXG4gICAgbGV0IGRhdGFMZW5ndGggPSB0aGlzLnRvb2x0aXBPcHRpb25zLmxlbmd0aDtcclxuICAgIHRoaXMuaGVpZ2h0T2ZDaGVja2JveFRvb2x0aXBGaWx0ZXIgPSBkYXRhTGVuZ3RoID4gNiA/IDIwMCA6ICgoMjYuMDMgKiBkYXRhTGVuZ3RoKSArIChtYXJnaW4gKiBkYXRhTGVuZ3RoKSArIG1hcmdpbik7XHJcbiAgICBcclxuICAgIHRoaXMuZGlzYWJsZVNlbGVjdEFsbCA9IHVuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgIHRoaXMuc2VsZWN0ZWRDaGVja2JveE9wdGlvbnNDb3VudCA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlTGlzdEZvckNoZWNrYm94RmlsdGVyKGhlYWRlcjogc3RyaW5nKXtcclxuICAgIGxldCBvcHRpb25EYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5nZXRGaWx0ZXJPcHRpb25zRGF0YSh0aGlzLnRhYmxlRGF0YSwgdGhpcy5jbG9uZWRUYWJsZURhdGEpO1xyXG4gICAgbGV0IHVuaXFPcHRpb25EYXRhID0gdW5pcShvcHRpb25EYXRhLm1hcChpdGVtID0+IGl0ZW1baGVhZGVyXSkpO1xyXG4gICAgbGV0IHRvb2x0aXBPcHRpb25zID0gdW5pcU9wdGlvbkRhdGEubWFwKChpdGVtLGluZGV4KSA9PiBuZXcgVG9vbHRpcE1vZGVsKGl0ZW0saW5kZXgrMSkpO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0VW5zZWxlY3RMaXN0Q2hlY2tib3godG9vbHRpcE9wdGlvbnMsaGVhZGVyKTtcclxuICAgIGxldCBpbmRleCA9IHRvb2x0aXBPcHRpb25zLmZpbmRJbmRleChpdGVtID0+IGl0ZW0udmFsdWUgPT0gbnVsbCk7XHJcbiAgICBcclxuICAgIGlmKGluZGV4ICE9IC0xKXtcclxuICAgICAgdG9vbHRpcE9wdGlvbnNbaW5kZXhdLmxhYmVsID0gXCIoQmxhbmspXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRvb2x0aXBPcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0VW5zZWxlY3RMaXN0Q2hlY2tib3godG9vbHRpcE9wdGlvbnM6IFRvb2x0aXBNb2RlbFtdLGhlYWRlcjogc3RyaW5nKXtcclxuICAgIFxyXG4gICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKGhlYWRlcikpe1xyXG4gICAgICBsZXQgc2VsZWN0ZWRWYWx1ZVNldCA9IG5ldyBTZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KGhlYWRlcikpO1xyXG4gICAgICB0b29sdGlwT3B0aW9ucy5mb3JFYWNoKGl0ZW0gPT4gaXRlbS5pc1NlbGVjdGVkID0gc2VsZWN0ZWRWYWx1ZVNldC5oYXMoaXRlbS52YWx1ZSkgPyB0cnVlIDogZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgdG9vbHRpcE9wdGlvbnMuZm9yRWFjaChpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCA9IHRydWUpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGdldENhbGVuZGFyRGF0YSgpIHtcclxuICAgIGNvbnN0IHBhcnNpbmdGb3JtYXQgPSBcIk1NL0REL1lZWVlcIjtcclxuICAgIGxldCBtaW5NYXhEYXRlID0gdGhpcy5jcmVhdGVSYW5nZUZvclRoZURhdGVGaWx0ZXIoKTtcclxuICAgIHRoaXMuc2VsZWN0UmFuZ2VGb3JUaGVEYXRlRmlsdGVyKG1pbk1heERhdGUsIHBhcnNpbmdGb3JtYXQpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlUmFuZ2VGb3JUaGVEYXRlRmlsdGVyKCl7XHJcbiAgICBcclxuICAgIGxldCBvcHRpb25EYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5nZXRGaWx0ZXJPcHRpb25zRGF0YSh0aGlzLnRhYmxlRGF0YSwgdGhpcy5jbG9uZWRUYWJsZURhdGEpO1xyXG4gICAgXHJcbiAgICBsZXQgbWluTWF4RGF0ZTtcclxuICAgIC8vV2hlbiB5b3Ugd2FudCB0byB1c2Ugc3RhcnREYXRlIGFuZCBlbmREYXRlIGNvbWJpbmVkIGFzIHNpbmdsZSBjb2x1bW4gdGhlbiB1c2UgUGVyaW9kLlxyXG4gICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvID09IFwicGVyaW9kXCIpe1xyXG4gICAgICBtaW5NYXhEYXRlID0gdGhpcy5jcmVhdGVTdGFydEVuZERhdGVSYW5nZShvcHRpb25EYXRhKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIG1pbk1heERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1pbkFuZE1heERhdGUob3B0aW9uRGF0YSwgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTsgIFxyXG4gICAgfVxyXG4gICAgXHJcbiAgICByZXR1cm4gbWluTWF4RGF0ZTtcclxuXHJcbiAgfVxyXG5cclxuICBjcmVhdGVTdGFydEVuZERhdGVSYW5nZShvcHRpb25EYXRhOiBhbnlbXSl7XHJcbiAgICBsZXQgbWluU3RhcnREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NaW5BbmRNYXhEYXRlKG9wdGlvbkRhdGEsIFwic3RhcnREYXRlXCIpO1xyXG4gICAgbGV0IG1heEVuZERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1pbkFuZE1heERhdGUob3B0aW9uRGF0YSxcImVuZERhdGVcIik7XHJcbiAgICByZXR1cm4gW21pblN0YXJ0RGF0ZVswXSxtYXhFbmREYXRlWzFdXTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFJhbmdlRm9yVGhlRGF0ZUZpbHRlcihtaW5NYXhEYXRlOiBhbnlbXSwgcGFyc2luZ0Zvcm1hdDogc3RyaW5nKXtcclxuICAgIHRoaXMuY2FsZW5kYXJNaW5FbmFibGVkRGF0ZSA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG9OZ2JEYXRlKG1pbk1heERhdGVbMF0scGFyc2luZ0Zvcm1hdCk7XHJcbiAgICB0aGlzLmNhbGVuZGFyTWF4RW5hYmxlZERhdGUgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvTmdiRGF0ZShtaW5NYXhEYXRlWzFdLHBhcnNpbmdGb3JtYXQpO1xyXG4gICAgXHJcbiAgICBcclxuICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICBsZXQgc2VsZWN0ZWREYXRlT2JqID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYoc2VsZWN0ZWREYXRlT2JqLmZyb21EYXRlLmlzQWZ0ZXIobWluTWF4RGF0ZVswXSkpe1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWluRGF0ZSA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG9OZ2JEYXRlKHNlbGVjdGVkRGF0ZU9iai5mcm9tRGF0ZSxwYXJzaW5nRm9ybWF0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1pbkRhdGUgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvTmdiRGF0ZShtaW5NYXhEYXRlWzBdLHBhcnNpbmdGb3JtYXQpO1xyXG4gICAgICAgIH0gXHJcblxyXG4gICAgICAgIGlmKHNlbGVjdGVkRGF0ZU9iai50b0RhdGUuaXNBZnRlcihtaW5NYXhEYXRlWzFdKSl7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNYXhEYXRlID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb05nYkRhdGUobWluTWF4RGF0ZVsxXSxwYXJzaW5nRm9ybWF0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1heERhdGUgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvTmdiRGF0ZShzZWxlY3RlZERhdGVPYmoudG9EYXRlLHBhcnNpbmdGb3JtYXQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICAgdGhpcy5zZWxlY3RlZE1pbkRhdGUgPSBjbG9uZURlZXAodGhpcy5jYWxlbmRhck1pbkVuYWJsZWREYXRlKTtcclxuICAgICAgIHRoaXMuc2VsZWN0ZWRNYXhEYXRlID0gY2xvbmVEZWVwKHRoaXMuY2FsZW5kYXJNYXhFbmFibGVkRGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jYWxlbmRhclNlbGVjdGlvbi5mcm9tRGF0ZSA9IGNsb25lRGVlcCh0aGlzLnNlbGVjdGVkTWluRGF0ZSk7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VsZWN0aW9uLnRvRGF0ZSA9IGNsb25lRGVlcCh0aGlzLnNlbGVjdGVkTWF4RGF0ZSk7XHJcblxyXG4gICAgXHJcbiAgfVxyXG5cclxuICBnZXRUaW1lRmlsdGVyRGF0YShoZWFkZXI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgXHJcbiAgICB0aGlzLnN0YXJ0VGltZUhvdXJFcnIgPSB0aGlzLnN0YXJ0VGltZU1pbkVyciA9IHRoaXMuZW5kVGltZUhvdXJFcnIgPSB0aGlzLmVuZFRpbWVNaW5FcnIgPSBmYWxzZTsgICAgXHJcblxyXG4gICAgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyhoZWFkZXIpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpLmZyb21UaW1lO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KGhlYWRlcikudG9UaW1lO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRJbml0aWFsVmFsdWVNYXBGb3JUaW1lRmlsdGVyKGhlYWRlcik7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldChoZWFkZXIpLmZyb21UaW1lO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KGhlYWRlcikudG9UaW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSAhPSB1bmRlZmluZWQgfHwgdGhpcy5zZWxlY3RlZFRvVGltZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmZvcm1hdFRvVHdlbHZlSHJzKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSwgdHJ1ZSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWUgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuZm9ybWF0VG9Ud2VsdmVIcnModGhpcy5zZWxlY3RlZFRvVGltZSwgdHJ1ZSk7XHJcblxyXG4gICAgICB0aGlzLmNsb25lZFNlbGVjdGVkRnJvbVRpbWUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZEZyb21UaW1lKTtcclxuICAgICAgdGhpcy5jbG9uZWRTZWxlY3RlZFRvVGltZSA9IGNsb25lRGVlcCh0aGlzLnNlbGVjdGVkVG9UaW1lKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWUgPSBbXCItXCIsIFwiLVwiLCBcIi1cIl07XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWUgPSBbXCItXCIsIFwiLVwiLCBcIi1cIl07XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09PSBcIlNQT1RERVRBSUxTXCIgfHwgdGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09PSBcIkVYQ0xVREVJTlZFTlRPUllQT1BVUFwiKSB7XHJcbiAgICAgIHRoaXMuc2V0VGltZUZpbHRlckRhdGFGb3JDb21wb25lbnRzT3RoZXJUaGFuUmF0aW5nc1BhZ2UoaGVhZGVyKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09PSBcIlJBVElOR1wiKXtcclxuICAgICAgdGhpcy5zZXRUaW1lRmlsdGVyRGF0YUZvclJhdGluZ1BhZ2VDb21wb25lbnQoaGVhZGVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vTmVlZCB0byBjaGFuZ2UgdGhpcyBtZXRob2RcclxuICBzZXRUaW1lRmlsdGVyRGF0YUZvckNvbXBvbmVudHNPdGhlclRoYW5SYXRpbmdzUGFnZShoZWFkZXI6IHN0cmluZyl7XHJcbiAgICB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93RW50ZXJUaW1lQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xyXG5cclxuXHJcbiAgICBsZXQgb3B0aW9uc0RhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldEZpbHRlck9wdGlvbnNEYXRhKHRoaXMudGFibGVEYXRhLCB0aGlzLmNsb25lZFRhYmxlRGF0YSk7XHJcbiAgICBsZXQgc2VsZWN0ZWRPYmo7XHJcblxyXG4gICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKGhlYWRlcikpe1xyXG4gICAgICBzZWxlY3RlZE9iaiA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgc2VsZWN0ZWRPYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQoaGVhZGVyKTtcclxuICAgIH1cclxuXHJcbiAgICBpZihvcHRpb25zRGF0YS5maW5kSW5kZXgob2JqID0+IG9ialtoZWFkZXJdID09IFwiMFwiKSAhPSAtMSkge1xyXG4gICAgICB0aGlzLnNob3daZXJvVGltZUNoZWNrYm94ID0gdHJ1ZTtcclxuICAgICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9IHNlbGVjdGVkT2JqLmluY2x1ZGVaZXJvVGltZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICBpZihvcHRpb25zRGF0YS5maW5kSW5kZXgob2JqID0+IG9ialtoZWFkZXJdID09IFwiPG11bHRpPlwiKSAhPSAtMSkge1xyXG4gICAgICB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICAgIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkID0gc2VsZWN0ZWRPYmouaW5jbHVkZU11bHRpO1xyXG4gICAgfVxyXG4gICAgXHJcblxyXG4gICAgaWYodGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCB8fCB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCkge1xyXG4gICAgICB0aGlzLnNob3dFbnRlclRpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmKG9wdGlvbnNEYXRhLmZpbmRJbmRleChvYmogPT4gb2JqW2hlYWRlcl0gIT0gXCI8bXVsdGk+XCIgJiYgb2JqW2hlYWRlcl0gIT0gXCIwXCIpICE9IC0xKSB7XHJcbiAgICAgIHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkID0gc2VsZWN0ZWRPYmouaW5jbHVkZVRpbWVSYW5nZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFRpbWVGaWx0ZXJEYXRhRm9yUmF0aW5nUGFnZUNvbXBvbmVudChoZWFkZXI6IHN0cmluZyl7XHJcbiAgICAgIHRoaXMuc2hvd011bHRpVGltZUNoZWNrYm94ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgICAgdGhpcy5zaG93RW50ZXJUaW1lQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgICAgdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgbGV0IG9wdGlvbnNEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5nZXRGaWx0ZXJPcHRpb25zRGF0YSh0aGlzLnRhYmxlRGF0YSwgdGhpcy5jbG9uZWRUYWJsZURhdGEpO1xyXG4gICAgICBsZXQgc2VsZWN0ZWRPYmo7XHJcblxyXG4gICAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXMoaGVhZGVyKSl7XHJcbiAgICAgICAgc2VsZWN0ZWRPYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQoaGVhZGVyKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHNlbGVjdGVkT2JqID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KGhlYWRlcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKG9wdGlvbnNEYXRhLmZpbmRJbmRleChvYmogPT4gb2JqW2hlYWRlcl1bMF0gPT0gXCIwXCIpICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9IHNlbGVjdGVkT2JqLmluY2x1ZGVaZXJvVGltZTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgIGlmKG9wdGlvbnNEYXRhLmZpbmRJbmRleChvYmogPT4gb2JqW2hlYWRlcl1bMF0gPT0gXCI8bXVsdGk+XCIpICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5zaG93TXVsdGlUaW1lQ2hlY2tib3ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkID0gc2VsZWN0ZWRPYmouaW5jbHVkZU11bHRpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG5cclxuICAgICAgaWYodGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCB8fCB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCkge1xyXG4gICAgICAgIHRoaXMuc2hvd0VudGVyVGltZUNoZWNrYm94ID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgaWYob3B0aW9uc0RhdGEuZmluZEluZGV4KG9iaiA9PiBvYmpbaGVhZGVyXVswXSAhPSBcIjxtdWx0aT5cIiAmJiBvYmpbaGVhZGVyXVswXSAhPSBcIjBcIikgIT0gLTEpIHtcclxuICAgICAgICB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCA9IHNlbGVjdGVkT2JqLmluY2x1ZGVUaW1lUmFuZ2U7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdE9yVW5zZWxlY3RNdWx0aVRpbWVDaGVja2JveCgpIHtcclxuICAgIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkID0gIXRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkO1xyXG4gICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RPclVuc2VsZWN0WmVyb1RpbWVDaGVja2JveCgpIHtcclxuICAgIHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQgPSAhdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZDtcclxuICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0T3JVbnNlbGVjdEVudGVyVGltZUNoZWNrYm94KCkge1xyXG4gICAgdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWQgPSAhdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWQ7XHJcbiAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIFxyXG4gIHNlbGVjdFVuc2VsZWN0Q2hlY2tib3goZGF0YTogVG9vbHRpcE1vZGVsKSB7XHJcbiAgICBkYXRhLmlzU2VsZWN0ZWQgPSAhZGF0YS5pc1NlbGVjdGVkO1xyXG4gICAgbGV0IGluZGV4ID0gdGhpcy5jbG9uZWRUb29sdGlwT3B0aW9ucy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmlkID09IGRhdGEuaWQpO1xyXG4gICAgdGhpcy5jbG9uZWRUb29sdGlwT3B0aW9uc1tpbmRleF0uaXNTZWxlY3RlZCA9IGRhdGEuaXNTZWxlY3RlZDtcclxuICAgICAgICBcclxuICAgIGxldCBzZWxlY3RlZEl0ZW1zID0gdGhpcy50b29sdGlwT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlzU2VsZWN0ZWQpO1xyXG4gICAgbGV0IHVuc2VsZWN0ZWRJdGVtcyA9IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uaXNTZWxlY3RlZCk7XHJcblxyXG4gICAgdGhpcy5kaXNhYmxlQ2xlYXJBbGwgPSAgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgIHRoaXMuZGlzYWJsZVNlbGVjdEFsbCA9IHVuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgIHRoaXMuc2VsZWN0ZWRDaGVja2JveE9wdGlvbnNDb3VudCA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoO1xyXG4gICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gIH1cclxuXHJcbiAgbWluVmFsdWVDaGFuZ2VkKHZhbDogc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsIHx8IHZhbCA9PSAnMCcpIHtcclxuICAgICAgdGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPSBwYXJzZUludCh2YWwpO1xyXG4gICAgICB0aGlzLmlzTWluVGV4dEJveEVtcHR5ID0gZmFsc2U7XHJcbiAgICAgIGlmICh0aGlzLmlzTWF4VGV4dEJveEVtcHR5KSB7XHJcbiAgICAgICAgaWYgKCAodGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPiB0aGlzLm9wdGlvbnMuY2VpbCkgfHwgKHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlIDwgdGhpcy5vcHRpb25zLmZsb29yKSkge1xyXG4gICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPiB0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSkge1xyXG4gICAgICAgIGlmKHRoaXMuaXNWYWx1ZUluUmFuZ2UodGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUpKXtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICBpZih0aGlzLmlzVmFsdWVJblJhbmdlKHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlKSl7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgICAgIFxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlIDwgdGhpcy5vcHRpb25zLmZsb29yKSB7XHJcbiAgICAgICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc29sZS5sb2codGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5sb2coJ2luc2lkZSBlbHNlIGNvbmRpdGlvbicpO1xyXG4gICAgICB0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA9IHRoaXMub3B0aW9ucy5mbG9vcjtcclxuICAgICAgdGhpcy5pc01pblRleHRCb3hFbXB0eSA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dFcnJvckZvck1pbkFuZE1heFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBtYXhWYWx1ZUNoYW5nZWQodmFsOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWwgfHwgdmFsID09IFwiMFwiKSB7XHJcbiAgICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlID0gcGFyc2VJbnQodmFsKTtcclxuICAgICAgdGhpcy5pc01heFRleHRCb3hFbXB0eSA9IGZhbHNlO1xyXG4gICAgICBpZiAodGhpcy5pc01pblRleHRCb3hFbXB0eSkge1xyXG4gICAgICAgIGlmICggKHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlIDwgdGhpcy5vcHRpb25zLmZsb29yKSB8fCAodGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPiB0aGlzLm9wdGlvbnMuY2VpbCkpIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlIDwgdGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUpIHtcclxuICAgICAgICBpZih0aGlzLmlzVmFsdWVJblJhbmdlKHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlKSl7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgaWYodGhpcy5pc1ZhbHVlSW5SYW5nZSh0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSkpe1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgICAgIC8vIHRoaXMuc2hvd01heEVycm9yID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSA+IHRoaXMub3B0aW9ucy5jZWlsKSB7XHJcbiAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPSB0aGlzLm9wdGlvbnMuY2VpbDtcclxuICAgICAgdGhpcy5pc01heFRleHRCb3hFbXB0eSA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgY29uc29sZS5sb2codGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zaG93RXJyb3JGb3JNaW5BbmRNYXhWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0Vycm9yRm9yTWluQW5kTWF4VmFsdWUoKXtcclxuICAgICAgaWYodGhpcy5pc01pblRleHRCb3hFbXB0eSAmJiB0aGlzLmlzTWF4VGV4dEJveEVtcHR5KXtcclxuICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgfVxyXG4gICAgIGVsc2UgaWYodGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciB8fCB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yKXtcclxuICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgfVxyXG4gICAgIGVsc2V7XHJcbiAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSBmYWxzZTtcclxuICAgICB9XHJcbiAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdG4oKTtcclxuICB9XHJcblxyXG4gIGlzVmFsdWVJblJhbmdlKHZhbDogbnVtYmVyKXtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmxvb3IgPD0gdmFsICYmIHZhbCA8PSB0aGlzLm9wdGlvbnMuY2VpbDtcclxuICB9XHJcblxyXG4gIGRpc2FibGVTbGlkZXJBcHBseUJ0bigpe1xyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ICYmIHRoaXMuc2hvd1NvcnRDb21wb25lbnQpe1xyXG4gICAgICBsZXQgaXNGaWx0ZXJDaGFuZ2VkID0gdGhpcy5jaGVja0lmU2xpZGVyVG9vbHRpcElzRmlsdGVyZWQoKTtcclxuICAgICAgbGV0IGlzU29ydENoYW5nZWQgPSB0aGlzLmNoZWNrSWZTb3J0aW5nQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgXHJcbiAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCB8fCAoIWlzU29ydENoYW5nZWQgJiYgIWlzRmlsdGVyQ2hhbmdlZCApO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQpe1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCB8fCAhdGhpcy5jaGVja0lmU2xpZGVyVG9vbHRpcElzRmlsdGVyZWQoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5zaG93U29ydENvbXBvbmVudCl7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSAhdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNsaWRlclZhbHVlQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5zbGlkZXJWYWx1ZSA9IHsgbWluOiB0aGlzLnNsaWRlck1pblZhbHVlLCBtYXg6IHRoaXMuc2xpZGVyTWF4VmFsdWUgfTtcclxuICB9XHJcblxyXG4gIGNhbmNlbFNsaWRlckZpbHRlcigpIHtcclxuICAgIHRoaXMuc2xpZGVyVmFsdWUgPSBudWxsO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGFwcGx5RmlsdGVycygpIHtcclxuICAgIHRoaXMuYXBwbHlMaXN0RmlsdGVycygpO1xyXG4gICAgdGhpcy5hcHBseVNvcnRpbmdPbkZpbHRlcmVkRGF0YSgpO1xyXG4gICAgLy8gdGhpcy5lbWl0RGF0YSgpO1xyXG4gICAgdGhpcy5zZXRJbml0aWFsUm93c0ZvclRhYmxlKCk7XHJcbiAgICB0aGlzLmRpc2FibGVFbmFibGVFYWNoQ29sdW1uVG9vbHRpcEljb24oKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZlRoZUN1cnJlbnRGaWx0ZXJUYWIodGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICAgIHRoaXMuZW1pdERhdGEoKTtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcbiAgfVxyXG5cclxuICBhcHBseUxpc3RGaWx0ZXJzKCl7XHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICBsZXQgY3VycmVudFNlbGVjdGVkVmFsdWUgPSBbXTtcclxuICAgICAgXHJcbiAgICAgIGlmKHRoaXMudG9vbHRpcE9wdGlvbnMpe1xyXG5cclxuICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZFZhbHVlID0gc29ydEJ5KHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc1NlbGVjdGVkKS5tYXAoaXRlbSA9PiBpdGVtLnZhbHVlKSk7XHJcblxyXG4gICAgICAgICAgaWYoIXRoaXMuc2VhcmNoSXRlbSAmJiBjdXJyZW50U2VsZWN0ZWRWYWx1ZS5sZW5ndGggPT0gdGhpcy50b29sdGlwT3B0aW9ucy5sZW5ndGggJiYgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBibGFua0luZGV4ID0gY3VycmVudFNlbGVjdGVkVmFsdWUuZmluZEluZGV4KChpdGVtOiBzdHJpbmcpID0+IGl0ZW0gPT0gbnVsbCk7XHJcbiAgICAgIGlmKGJsYW5rSW5kZXggIT0gLTEpe1xyXG4gICAgICAgIGN1cnJlbnRTZWxlY3RlZFZhbHVlID0gc29ydEJ5KGN1cnJlbnRTZWxlY3RlZFZhbHVlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJlT3JkZXJBcHBsaWVkRmlsdGVyc1N0YXRlKHRoaXMuY2xvbmVkVGFibGVEYXRhLGN1cnJlbnRTZWxlY3RlZFZhbHVlKTtcclxuICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLCBjdXJyZW50U2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmZpbHRlckRhdGEodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwiXCIpO1xyXG4gICAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLm5vU29ydGluZ0FwcGxpZWREYXRhID0gY2xvbmVEZWVwKHRoaXMudGFibGVEYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFwcGx5U29ydGluZ09uRmlsdGVyZWREYXRhKCl7XHJcbiAgICBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgaWYodGhpcy5pc1NvcnRDaGFuZ2VkKXtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNvcnRNYXAoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmKHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKXtcclxuICAgICAgICB0aGlzLmNoZWNrSWZTb3J0aW5nSXNBcHBsaWVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICB0aGlzLmNoZWNrSWZTb3J0aW5nSXNBcHBsaWVkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbWl0RGF0YSgpe1xyXG4gICAgaWYodGhpcy5pc0ZpbHRlckNoYW5nZWQgJiYgdGhpcy5pc1NvcnRDaGFuZ2VkKXtcclxuICAgICAgdGhpcy5maWx0ZXJBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICB0aGlzLmZpbHRlckFwcGxpZWRUb1RhYmxlLmVtaXQodGhpcy50YWJsZURhdGEpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLmlzU29ydENoYW5nZWQpe1xyXG4gICAgICB0aGlzLnNvcnRpbmdBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFwcGx5U29ydGluZyhrZXk6IHN0cmluZyl7XHJcbiAgICBpZih0aGlzLnRlbXBTb3J0T3JkZXIgPT0gXCJBU0NcIil7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLnNvcnREYXRhRm9yQ29tcG9uZW50T3RoZXJUaGFuTHVyQW5kQ3NyUGFnZSh0cnVlLHRoaXMudGFibGVEYXRhLGtleSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnRlbXBTb3J0T3JkZXIgPT0gXCJERVNDXCIpe1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLnNvcnREYXRhRm9yQ29tcG9uZW50T3RoZXJUaGFuTHVyQW5kQ3NyUGFnZShmYWxzZSx0aGlzLnRhYmxlRGF0YSxrZXkpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy50ZW1wU29ydE9yZGVyID09IFwiREVGQVVMVFwiKXtcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IGNsb25lRGVlcCh0aGlzLmFubmFTb3J0U2VydmljZS5ub1NvcnRpbmdBcHBsaWVkRGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXZlcnQoKSB7XHJcbiAgICB0aGlzLnRlbXBUb29sdGlwRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRvb2xUaXBkYXRhKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcE1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLCB0aGlzLnRlbXBUb29sdGlwRGF0YSk7XHJcbiAgICB0aGlzLnRvb2xUaXBkYXRhID0gbnVsbDtcclxuICB9XHJcblxyXG4gIGNsb3NlQ2hlY2tib3hGaWx0ZXIoKSB7XHJcbiAgICBpZiAodGhpcy50b29sVGlwZGF0YSkge1xyXG4gICAgICB0aGlzLnJldmVydCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGFwcGx5U2xpZGVyRmlsdGVyKCkge1xyXG5cclxuICAgIHRoaXMuYXBwbHlTbGlkZXJGaWx0ZXJPbkRhdGEoKTtcclxuICAgIHRoaXMuYXBwbHlTb3J0aW5nT25GaWx0ZXJlZERhdGEoKTtcclxuICAgIHRoaXMuZW1pdERhdGEoKTtcclxuICAgIHRoaXMuc2V0SW5pdGlhbFJvd3NGb3JUYWJsZSgpO1xyXG4gICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS51cGRhdGVTdGF0ZU9mVGhlQ3VycmVudEZpbHRlclRhYih0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGFwcGx5U2xpZGVyRmlsdGVyT25EYXRhKCl7XHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICBsZXQgY3VycmVudFNsaWRlckRhdGE6IHttaW46YW55LCBtYXg6IGFueX0gPSB7bWluOiBudWxsICwgbWF4OiBudWxsfTtcclxuXHJcbiAgICAgIC8vIGlmKHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkpe1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWluID0gdGhpcy5vcHRpb25zLmZsb29yO1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWF4ID0gdGhpcy5zbGlkZXJNYXhWYWx1ZTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBlbHNlIGlmKHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkpe1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWF4ID0gdGhpcy5vcHRpb25zLmNlaWw7XHJcbiAgICAgIC8vICAgICBjdXJyZW50U2xpZGVyRGF0YS5taW4gPSB0aGlzLnNsaWRlck1pblZhbHVlO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGVsc2V7XHJcbiAgICAgICAgICBjdXJyZW50U2xpZGVyRGF0YS5tYXggPSB0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZTtcclxuICAgICAgICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1pbiA9IHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlO1xyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICBpZihjdXJyZW50U2xpZGVyRGF0YS5taW4gPT0gdGhpcy5vcHRpb25zLmZsb29yICYmIGN1cnJlbnRTbGlkZXJEYXRhLm1heCA9PSB0aGlzLm9wdGlvbnMuY2VpbCAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSApe1xyXG4gICAgICAgICAgY3VycmVudFNsaWRlckRhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZU9yZGVyQXBwbGllZEZpbHRlcnNTdGF0ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSxjdXJyZW50U2xpZGVyRGF0YSk7XHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sY3VycmVudFNsaWRlckRhdGEpO1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIik7XHJcbiAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLm5vU29ydGluZ0FwcGxpZWREYXRhID0gY2xvbmVEZWVwKHRoaXMudGFibGVEYXRhKTtcclxuICAgICAgdGhpcy5kaXNhYmxlRW5hYmxlRWFjaENvbHVtblRvb2x0aXBJY29uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5jZWxJbkRhdGVGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlU29ydE1hcCgpe1xyXG4gICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5lbnRyaWVzKCkpIHtcclxuICAgICAgdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlLnNldChrZXksIFwiREVGQVVMVFwiKTtcclxuICAgIH1cclxuICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLCB0aGlzLnRlbXBTb3J0T3JkZXIpO1xyXG4gICAgdGhpcy5hcHBseVNvcnRpbmcodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICB9XHJcblxyXG4gIGFwcGx5RGF0ZUZpbHRlcigpIHtcclxuICAgIHRoaXMuYXBwbHlEYXRlRmlsdGVyT25EYXRhKCk7XHJcbiAgICB0aGlzLmFwcGx5U29ydGluZ09uRmlsdGVyZWREYXRhKCk7XHJcbiAgICB0aGlzLmVtaXREYXRhKCk7XHJcbiAgICB0aGlzLnNldEluaXRpYWxSb3dzRm9yVGFibGUoKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZlRoZUN1cnJlbnRGaWx0ZXJUYWIodGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcbiAgICBcclxuICB9XHJcblxyXG4gIGFwcGx5RGF0ZUZpbHRlck9uRGF0YSgpe1xyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ICYmIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKXtcclxuICAgICAgbGV0IGN1cnJlbnRTZWxlY3RlZERhdGUgPSB0aGlzLmNhbGVuZGFyU2VsZWN0aW9uO1xyXG4gICAgICBcclxuICAgICAgbGV0IGZyb21EYXRlID0ge3llYXI6IGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUueWVhcixtb250aDogY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZS5tb250aCxkYXk6IGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUuZGF5fTtcclxuICAgICAgbGV0IHRvRGF0ZSA9IHt5ZWFyOiBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZS55ZWFyLG1vbnRoOiBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZS5tb250aCxkYXk6IGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlLmRheX07XHJcbiAgICAgICAgICBcclxuICAgICAgaWYoaXNFcXVhbCh0aGlzLmNhbGVuZGFyTWluRW5hYmxlZERhdGUsZnJvbURhdGUpICYmIGlzRXF1YWwodGhpcy5jYWxlbmRhck1heEVuYWJsZWREYXRlLHRvRGF0ZSkgJiYgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgY3VycmVudFNlbGVjdGVkRGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgICBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlID0gbW9tZW50KHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0TmdiRGF0ZVRvTW9tZW50KGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUpKTtcclxuICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlID0gbW9tZW50KHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0TmdiRGF0ZVRvTW9tZW50KGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlKSk7XHJcbiAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVPcmRlckFwcGxpZWRGaWx0ZXJzU3RhdGUodGhpcy5jbG9uZWRUYWJsZURhdGEsY3VycmVudFNlbGVjdGVkRGF0ZSk7XHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sY3VycmVudFNlbGVjdGVkRGF0ZSk7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5maWx0ZXJEYXRhKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcIlwiKTtcclxuICAgICAgdGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEgPSBjbG9uZURlZXAodGhpcy50YWJsZURhdGEpO1xyXG4gICAgICB0aGlzLmRpc2FibGVFbmFibGVFYWNoQ29sdW1uVG9vbHRpcEljb24oKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseVdlZWtGaWx0ZXIoZXZlbnQ6IGFueSkge1xyXG5cclxuICB9XHJcblxyXG4gIGluY3JlbWVudEhvdXIoYXJyOiBhbnlbXSkge1xyXG4gICAgaWYgKGFyclswXSA9PSBcIlwiKSB7XHJcbiAgICAgIGFyclswXSA9IDE7XHJcbiAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGFyclswXSkgPCAxMikge1xyXG4gICAgICBhcnJbMF0gPSBwYXJzZUludChhcnJbMF0pICsgMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFyclswXSA9IDE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZWNyZW1lbnRIb3VyKGFycjogYW55W10pIHtcclxuICAgIGlmIChhcnJbMF0gPT0gXCJcIikge1xyXG4gICAgICBhcnJbMF0gPSAxMjtcclxuICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoYXJyWzBdKSA+IDEpIHtcclxuICAgICAgYXJyWzBdID0gcGFyc2VJbnQoYXJyWzBdKSAtIDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhcnJbMF0gPSAxMjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluY3JlbWVudE1pbnV0ZShhcnI6IGFueVtdKSB7XHJcbiAgICBhcnJbMV0gPSBwYXJzZUludChhcnJbMV0pICsgMTU7XHJcbiAgICBpZiAocGFyc2VJbnQoYXJyWzFdKSA9PSA2MCkge1xyXG4gICAgICAgIGFyclsxXSA9IFwiMDBcIjtcclxuICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoYXJyWzFdKSA9PSAwKSB7XHJcbiAgICAgICAgYXJyWzFdID0gXCIwMFwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihwYXJzZUludChhcnJbMV0pID4gNjApe1xyXG4gICAgICAgIGxldCByZXMgPSBwYXJzZUludChhcnJbMV0pIC0gNjA7XHJcbiAgICAgICAgYXJyWzFdID0gcmVzIDwgMTAgPyBgMCR7cmVzfWAgOiByZXMudG9TdHJpbmcoKTsgICAgXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZWNyZW1lbnRNaW51dGUoYXJyOiBhbnkpIHtcclxuICAgIGFyclsxXSA9IHBhcnNlSW50KGFyclsxXSkgLSAxNTtcclxuICAgIGlmIChwYXJzZUludChhcnJbMV0pIDwgMCkge1xyXG4gICAgICAgIGxldCByZXMgPSA2MCArIHBhcnNlSW50KGFyclsxXSk7XHJcbiAgICAgICAgYXJyWzFdID0gcmVzO1xyXG4gICAgfSBlbHNlIGlmIChwYXJzZUludChhcnJbMV0pID09IDApIHtcclxuICAgICAgICBhcnJbMV0gPSBcIjAwXCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKGFyclsxXSA8IDEwKXtcclxuICAgICAgICBhcnJbMV09IGAwJHthcnJbMV19YDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVN0YXJ0VGltZUhvdXIoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICBpZiAoaW5jcmVtZW50KSB7XHJcbiAgICAgIHRoaXMuaW5jcmVtZW50SG91cih0aGlzLnNlbGVjdGVkRnJvbVRpbWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kZWNyZW1lbnRIb3VyKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXJ0VGltZUhvdXJDaGFuZ2UodGhpcy5zZWxlY3RlZEZyb21UaW1lWzBdLnRvU3RyaW5nKCkpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlRW5kVGltZUhvdXIoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICBpZiAoaW5jcmVtZW50KSB7XHJcbiAgICAgIHRoaXMuaW5jcmVtZW50SG91cih0aGlzLnNlbGVjdGVkVG9UaW1lKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGVjcmVtZW50SG91cih0aGlzLnNlbGVjdGVkVG9UaW1lKTtcclxuICAgIH1cclxuICAgIHRoaXMuZW5kVGltZUhvdXJDaGFuZ2UodGhpcy5zZWxlY3RlZFRvVGltZVswXS50b1N0cmluZygpKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZUVuZFRpbWVNaW51dGUoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICBpZiAoaW5jcmVtZW50KSB7XHJcbiAgICAgIHRoaXMuaW5jcmVtZW50TWludXRlKHRoaXMuc2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kZWNyZW1lbnRNaW51dGUodGhpcy5zZWxlY3RlZFRvVGltZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmVuZFRpbWVNaW5DaGFuZ2UodGhpcy5zZWxlY3RlZFRvVGltZVsxXS50b1N0cmluZygpKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVN0YXJ0VGltZU1pbnV0ZShpbmNyZW1lbnQ6IGJvb2xlYW4pIHtcclxuICAgIGlmIChpbmNyZW1lbnQpIHtcclxuICAgICAgdGhpcy5pbmNyZW1lbnRNaW51dGUodGhpcy5zZWxlY3RlZEZyb21UaW1lKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGVjcmVtZW50TWludXRlKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXJ0VGltZU1pbkNoYW5nZSh0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMV0udG9TdHJpbmcoKSk7XHJcbiAgfVxyXG5cclxuICBhcHBseVRpbWVGaWx0ZXJzKCkge1xyXG5cclxuICAgIHRoaXMuYXBwbHlUaW1lRmlsdGVyT25EYXRhKCk7XHJcbiAgICB0aGlzLmFwcGx5U29ydGluZ09uRmlsdGVyZWREYXRhKCk7XHJcbiAgICB0aGlzLmVtaXREYXRhKCk7XHJcbiAgICB0aGlzLnNldEluaXRpYWxSb3dzRm9yVGFibGUoKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZlRoZUN1cnJlbnRGaWx0ZXJUYWIodGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgYXBwbHlUaW1lRmlsdGVyT25EYXRhKCl7XHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICBsZXQgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlcjoge2Zyb21UaW1lOiBzdHJpbmcsIHRvVGltZTpzdHJpbmcsIGluY2x1ZGVNdWx0aTogYm9vbGVhbiwgaW5jbHVkZVplcm86IGJvb2xlYW4sIGluY2x1ZGVUaW1lUmFuZ2U6IGJvb2xlYW59ID0ge1xyXG4gICAgICAgIGZyb21UaW1lOiBudWxsLFxyXG4gICAgICAgIHRvVGltZTogbnVsbCxcclxuICAgICAgICBpbmNsdWRlTXVsdGk6IGZhbHNlLFxyXG4gICAgICAgIGluY2x1ZGVaZXJvOiBmYWxzZSxcclxuICAgICAgICBpbmNsdWRlVGltZVJhbmdlOiBmYWxzZSxcclxuICAgICAgfTtcclxuICBcclxuICAgICAgbGV0IGZyb21UaW1lMjRIckZvcm1hdEFyciA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG90d2VudHlGb3VySHJzRm9ybWF0KFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVswXSArIFwiOlwiICsgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzFdICsgXCIgXCIgKyB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMl0sXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgZnJvbVRpbWUyNEhyRm9ybWF0ID0gZnJvbVRpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyBmcm9tVGltZTI0SHJGb3JtYXRBcnJbMV0gKyBcIjowMFwiO1xyXG4gICAgICBcclxuICAgICAgbGV0IHRvVGltZTI0SHJGb3JtYXRBcnIgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lWzBdICsgXCI6XCIgKyB0aGlzLnNlbGVjdGVkVG9UaW1lWzFdICsgXCIgXCIgKyB0aGlzLnNlbGVjdGVkVG9UaW1lWzJdLFxyXG4gICAgICAgIHRydWVcclxuICAgICAgKTtcclxuICAgICAgbGV0IHRvVGltZTI0SHJGb3JtYXQgPSB0b1RpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyB0b1RpbWUyNEhyRm9ybWF0QXJyWzFdICsgXCI6MDBcIjtcclxuICBcclxuICAgICAgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlciA9IHsgZnJvbVRpbWU6IGZyb21UaW1lMjRIckZvcm1hdCwgdG9UaW1lOiB0b1RpbWUyNEhyRm9ybWF0LCBpbmNsdWRlTXVsdGk6IHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkLCBcclxuICAgICAgaW5jbHVkZVplcm86IHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQsIGluY2x1ZGVUaW1lUmFuZ2U6IHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkfTtcclxuICBcclxuICAgICAgbGV0IGlzRmlsdGVyZWQgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJlT3JkZXJBcHBsaWVkRmlsdGVyc1N0YXRlKHRoaXMuY2xvbmVkVGFibGVEYXRhLGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIpO1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIpO1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIik7XHJcbiAgICAgIFxyXG4gICAgICBpZighaXNGaWx0ZXJlZCl7XHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZGVsZXRlKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEgPSBjbG9uZURlZXAodGhpcy50YWJsZURhdGEpO1xyXG4gICAgICB0aGlzLmRpc2FibGVFbmFibGVFYWNoQ29sdW1uVG9vbHRpcEljb24oKTsgICAgICAgICAgICBcclxuIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VUaW1lRmlsdGVyKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkU2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkU2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKSB7XHJcblxyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ICYmIHRoaXMuc2hvd1NvcnRDb21wb25lbnQpe1xyXG4gICAgICBsZXQgaXNGaWx0ZXJDaGFuZ2VkID0gdGhpcy5jaGVja0lmVGltZVRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgIGxldCBpc1NvcnRDaGFuZ2VkID0gdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuID0gIXRoaXMudmFsaWRhdGVUaW1lRmlsdGVySW5wdXQoKSB8fCAoIWlzU29ydENoYW5nZWQgJiYgIWlzRmlsdGVyQ2hhbmdlZCApO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQpe1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0biA9ICF0aGlzLnZhbGlkYXRlVGltZUZpbHRlcklucHV0KCkgfHwgIXRoaXMuY2hlY2tJZlRpbWVUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gPSAhdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVRpbWVGaWx0ZXJJbnB1dCgpe1xyXG4gICAgaWYodGhpcy5zdGFydFRpbWVIb3VyRXJyIHx8IHRoaXMuc3RhcnRUaW1lTWluRXJyIHx8IHRoaXMuZW5kVGltZUhvdXJFcnIgfHwgdGhpcy5lbmRUaW1lTWluRXJyKXtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZCAmJiAhdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCAmJiAhdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHRpbWVGb3JtYXQgPSBcIkhIOm1tOnNzXCI7XHJcblxyXG4gICAgbGV0IHN0YXJ0VGltZTI0SHJGb3JtYXRBcnIgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMF0gKyBcIjpcIiArIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVsxXSArIFwiIFwiICsgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzJdLFxyXG4gICAgICAgIHRydWVcclxuICAgICk7XHJcbiAgICBsZXQgc3RhcnRUaW1lMjRIckZvcm1hdCA9IHN0YXJ0VGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIHN0YXJ0VGltZTI0SHJGb3JtYXRBcnJbMV0gKyBcIjowMFwiO1xyXG4gICAgbGV0IGVuZFRpbWUyNEhyRm9ybWF0QXJyID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb3R3ZW50eUZvdXJIcnNGb3JtYXQoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZVswXSArIFwiOlwiICsgdGhpcy5zZWxlY3RlZFRvVGltZVsxXSArIFwiIFwiICsgdGhpcy5zZWxlY3RlZFRvVGltZVsyXSxcclxuICAgICAgICB0cnVlXHJcbiAgICApO1xyXG4gICAgbGV0IGVuZFRpbWUyNEhyRm9ybWF0ID0gZW5kVGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIGVuZFRpbWUyNEhyRm9ybWF0QXJyWzFdICsgXCI6MDBcIjtcclxuXHJcbiAgICByZXR1cm4gIShtb21lbnQoc3RhcnRUaW1lMjRIckZvcm1hdCwgdGltZUZvcm1hdCkuaXNBZnRlcihtb21lbnQoZW5kVGltZTI0SHJGb3JtYXQsIHRpbWVGb3JtYXQpKSk7ICAgICAgICBcclxuICB9XHJcblxyXG4gIHNvcnRlZERhdGEoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50LnR5cGUgPT0gXCJub25lXCIpIHtcclxuICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmZpbHRlckRhdGEodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwiXCIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50YWJsZURhdGEgPSBldmVudC5kYXRhO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zb3J0aW5nQXBwbGllZFRvVGFibGUuZW1pdCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgfVxyXG5cclxuICBjaGVja0lmU29ydGluZ0lzQXBwbGllZCgpIHtcclxuICAgIGZvcihsZXQgW2tleSx2YWx1ZV0gb2YgdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlLmVudHJpZXMoKSl7XHJcbiAgICAgIGlmKHZhbHVlID09IFwiQVNDXCIpe1xyXG4gICAgICAgICAgdGhpcy50YWJsZURhdGEgPSBjbG9uZURlZXAodGhpcy5hbm5hU29ydFNlcnZpY2Uuc29ydERhdGFGb3JDb21wb25lbnRPdGhlclRoYW5MdXJBbmRDc3JQYWdlKHRydWUsdGhpcy50YWJsZURhdGEsa2V5KSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih2YWx1ZSA9PSBcIkRFU0NcIil7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IGNsb25lRGVlcCh0aGlzLmFubmFTb3J0U2VydmljZS5zb3J0RGF0YUZvckNvbXBvbmVudE90aGVyVGhhbkx1ckFuZENzclBhZ2UoZmFsc2UsdGhpcy50YWJsZURhdGEsa2V5KSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBkaXNhYmxlRW5hYmxlRWFjaENvbHVtblRvb2x0aXBJY29uKCkge1xyXG4gICAgdGhpcy50YWJsZUhlYWRlcnMuZm9yRWFjaChoZWFkZXIgPT4ge1xyXG4gICAgICBcclxuICAgICAgaGVhZGVyLmhlYWRlckluZm8uZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpZiAoaXRlbS5zaG93VG9vbHRpcEljb24pIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgbGV0IHZhbHVlcyA9IFtdO1xyXG4gICAgICAgICAgaXRlbS5kaXNhYmxlVG9vbHRpcEljb24gPSB0cnVlO1xyXG5cclxuICAgICAgICAgIGl0ZW0uZmlsdGVyU29ydE9iamVjdEtleXMuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICBpZihrZXkgPT0gXCJwZXJpb2RcIil7XHJcbiAgICAgICAgICAgICAgbGV0IHVuaXFTdGFydERhdGUgPSB1bmlxKHRoaXMudGFibGVEYXRhLm1hcCgodTogeyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiB1W1wic3RhcnREYXRlXCJdKSk7XHJcbiAgICAgICAgICAgICAgbGV0IHVuaXFFbmREYXRlID0gdW5pcSh0aGlzLnRhYmxlRGF0YS5tYXAoKHU6IHsgW3g6IHN0cmluZ106IGFueTsgfSkgPT4gdVtcImVuZERhdGVcIl0pKTtcclxuXHJcbiAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlVG9vbHRpcEljb24gPSAodW5pcVN0YXJ0RGF0ZS5sZW5ndGggPiAxIHx8IHVuaXFFbmREYXRlLmxlbmd0aCA+IDEpID8gZmFsc2UgOiB0cnVlOyBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgIHZhbHVlcyA9IHRoaXMudGFibGVEYXRhLm1hcCgodTogeyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiB1W2tleV0pO1xyXG4gICAgICAgICAgICAgIGlmKGl0ZW0uZmlsdGVyID09IFwiQ0hFQ0tCT1hcIiAmJiB1bmlxKHZhbHVlcykuZmlsdGVyKG4gPT4gbiE9bnVsbCkubGVuZ3RoID4gMSl7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGl0ZW0uZGlzYWJsZVRvb2x0aXBJY29uID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYoaXRlbS5maWx0ZXIgIT0gXCJDSEVDS0JPWFwiICYmIHVuaXEodmFsdWVzKS5maWx0ZXIobiA9PiBuIT1udWxsICYmIG4hPVwiLVwiKS5sZW5ndGggPiAxKXtcclxuICAgICAgICAgICAgICAgIGl0ZW0uZGlzYWJsZVRvb2x0aXBJY29uID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHNldE1hcmdpbkxlZnRGb3JGaWx0ZXJJY29uKCl7XHJcbiAgICBsZXQgZWxlbWVudEFyciA9IHRoaXMudmlld0NoaWxkVGFibGVIZWFkZXJzLnRvQXJyYXkoKTtcclxuICAgIGVsZW1lbnRBcnIuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBsZXQgY2hpbGREaXZFbGVtZW50cyA9IGl0ZW0ubmF0aXZlRWxlbWVudC5jaGlsZHJlbjtcclxuICAgICAgXHJcbiAgICAgIGlmIChjaGlsZERpdkVsZW1lbnRzLmxlbmd0aCA9PSAyKSB7XHJcbiAgICAgICAgbGV0IGZpcnN0UGFyYWdyYXBoV2lkdGggPSBjaGlsZERpdkVsZW1lbnRzWzBdLmNoaWxkcmVuWzBdO1xyXG4gICAgICAgIGxldCBzZWNvbmRQYXJhZ3JhcGhXaWR0aCA9IGNoaWxkRGl2RWxlbWVudHNbMV0uY2hpbGRyZW5bMF07XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYoZmlyc3RQYXJhZ3JhcGhXaWR0aC5vZmZzZXRXaWR0aCA+IHNlY29uZFBhcmFncmFwaFdpZHRoLm9mZnNldFdpZHRoKXtcclxuICAgICAgICAgIGxldCBkaWZmID0gZmlyc3RQYXJhZ3JhcGhXaWR0aC5vZmZzZXRXaWR0aCAtIHNlY29uZFBhcmFncmFwaFdpZHRoLm9mZnNldFdpZHRoO1xyXG4gICAgICAgICAgaWYoY2hpbGREaXZFbGVtZW50c1swXS5jaGlsZHJlbi5sZW5ndGggPT0gMil7XHJcbiAgICAgICAgICAgIGNoaWxkRGl2RWxlbWVudHNbMF0uY2hpbGRyZW5bMV0uc3R5bGUubWFyZ2luTGVmdCA9IDQgKyAncHgnO1xyXG4gICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgaWYoY2hpbGREaXZFbGVtZW50c1sxXS5jaGlsZHJlbi5sZW5ndGggPT0gMil7XHJcblxyXG4gICAgICAgICAgICBjaGlsZERpdkVsZW1lbnRzWzFdLmNoaWxkcmVuWzFdLnN0eWxlLm1hcmdpbkxlZnQgPSBkaWZmICsgNCArICdweCc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICBsZXQgZGlmZiA9IHNlY29uZFBhcmFncmFwaFdpZHRoLm9mZnNldFdpZHRoIC0gZmlyc3RQYXJhZ3JhcGhXaWR0aC5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgIGlmKGNoaWxkRGl2RWxlbWVudHNbMF0uY2hpbGRyZW4ubGVuZ3RoID09IDIpe1xyXG4gICAgICAgICAgICBjaGlsZERpdkVsZW1lbnRzWzBdLmNoaWxkcmVuWzFdLnN0eWxlLm1hcmdpbkxlZnQgPSBkaWZmICsgNCArICdweCc7XHJcbiAgICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgICBpZihjaGlsZERpdkVsZW1lbnRzWzFdLmNoaWxkcmVuLmxlbmd0aCA9PSAyKXtcclxuXHJcbiAgICAgICAgICAgIGNoaWxkRGl2RWxlbWVudHNbMV0uY2hpbGRyZW5bMV0uc3R5bGUubWFyZ2luTGVmdCA9IDQgKyAncHgnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkYXRhUm93Q2xpY2tlZChyb3dEYXRhOiBhbnkpIHtcclxuICAgIHRoaXMucm93Q2xpY2tlZC5lbWl0KHJvd0RhdGEpO1xyXG4gIH1cclxuXHJcbiAgcmFkaW9CdXR0b25DbGlja2VkKGRhdGE6IGFueSwgYWN0aW9uOiBzdHJpbmcsIGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIGlmICghaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnJhZGlvQnV0dG9uU2VsZWN0ZWQuZW1pdCh7IGRhdGEsIGFjdGlvbiB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJpbmRUaGVWYWx1ZVRvU2VsbGVyR3JvdXBUb29sdGlwKHNlbGxlckdyb3VwSGllcmFyY2h5OiBSYXRpbmdTZWxsZXJHcm91cEhpZXJhcmNoeVtdLCB0b29sdGlwOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhpZXJhcmNoeVRvb2x0aXAgJiYgdGhpcy5oaWVyYXJjaHlUb29sdGlwLm9wZW4pIHtcclxuICAgICAgdGhpcy5oaWVyYXJjaHlUb29sdGlwLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGxlckdyb3VwSGllcmFyY2h5ID0gc2VsbGVyR3JvdXBIaWVyYXJjaHk7XHJcbiAgICB0aGlzLmhpZXJhcmNoeVRvb2x0aXAgPSB0b29sdGlwO1xyXG4gICAgdGhpcy5oaWVyYXJjaHlUb29sdGlwLm9wZW4oKTtcclxuICB9XHJcblxyXG4gIGljb25DbGlja2VkKHJvd0RhdGE6IGFueSxpY29uQ2xhc3M6IHN0cmluZyl7XHJcbiAgICBcclxuICAgIGlmKFwib3JkZXJJZFwiIGluIHJvd0RhdGEgJiYgaWNvbkNsYXNzLmluY2x1ZGVzKFwibWRpLXN0YXJcIikgKXtcclxuICAgICAgdGhpcy5zZWxlY3RlZFN0YXJyZWRPcmRlcklkID0gcm93RGF0YS5vcmRlcklkO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ3RJY29uQ2xpY2tlZC5lbWl0KHtkYXRhOiByb3dEYXRhLGljb25DbGFzczogaWNvbkNsYXNzfSk7XHJcbiAgfVxyXG5cclxuICBzdmdJY29uQ2xpY2tlZChkYXRhOiBHdENvbHVtbkljb25FbWl0dGVkRGF0YSl7XHJcbiAgICB0aGlzLmd0U1ZHSWNvbkNsaWNrZWQuZW1pdChkYXRhKTtcclxuICB9XHJcblxyXG4gIHRleHRBY3Rpb25DbGlja2VkKHJvd0RhdGE6IGFueSxpZDogbnVtYmVyKXtcclxuICAgIHRoaXMuZ3RUZXh0QWN0aW9uQ2xpY2tlZC5lbWl0KHtkYXRhOnJvd0RhdGEsaWR9KTtcclxuICB9XHJcblxyXG4gIHZpZXdEZXRhaWxzQ2xpY2tlZChyb3dEYXRhOiBhbnkpe1xyXG4gICAgdGhpcy5ndFZpZXdEZXRhaWxDbGlja2VkLmVtaXQoe2RhdGE6cm93RGF0YX0pO1xyXG4gIH1cclxuXHJcbiAgc2V0Q29sdW1uU29ydFN0YXRlTWFwKCl7XHJcbiAgICB0aGlzLnRhYmxlSGVhZGVycy5mb3JFYWNoKGNvbHVtbiA9PiB7XHJcbiAgICAgICAgY29sdW1uLmhlYWRlckluZm8uZm9yRWFjaCggKGhlYWRlcikgPT4ge1xyXG4gICAgICAgICAgICBpZihoZWFkZXIuc2hvd1Rvb2x0aXBJY29uICYmIGhlYWRlci5pc1NvcnRSZXF1aXJlZCl7XHJcbiAgICAgICAgICAgICAgICBoZWFkZXIuaXNTb3J0UmVxdWlyZWQuZm9yRWFjaCggKGl0ZW0saW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYoaXRlbSl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlLnNldChoZWFkZXIuZmlsdGVyU29ydE9iamVjdEtleXNbaW5kZXhdLCBcIkRFRkFVTFRcIik7ICBcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0b3JlU29ydFR5cGVJblRlbXBWYXJpYWJsZShldmVudDogU29ydFR5cGUpe1xyXG4gICAgdGhpcy50ZW1wU29ydE9yZGVyID0gZXZlbnQ7XHJcbiAgICB0aGlzLmRpc2FibGVBcHBseUJ1dHRvbk9mU2VsZWN0ZWRGaWx0ZXIoKTtcclxuICB9XHJcblxyXG4gIHVuQ2hlY2tBbGxDaGVja2JveCgpe1xyXG4gICAgICB0aGlzLnRvb2x0aXBPcHRpb25zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5jbG9uZWRUb29sdGlwT3B0aW9ucy5maW5kSW5kZXgob3B0ID0+IG9wdC5pZCA9PSBpdGVtLmlkKTtcclxuICAgICAgICB0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zW2luZGV4XS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSAwO1xyXG4gICAgICB0aGlzLmRpc2FibGVTZWxlY3RBbGwgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNhYmxlQ2xlYXJBbGwgPSB0cnVlO1xyXG4gICAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHNlbGVjdEFsbENoZWNrYm94KCl7XHJcbiAgICAgIHRoaXMudG9vbHRpcE9wdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMuZmluZEluZGV4KG9wdCA9PiBvcHQuaWQgPT0gaXRlbS5pZCk7XHJcbiAgICAgICAgdGhpcy5jbG9uZWRUb29sdGlwT3B0aW9uc1tpbmRleF0uaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmxlbmd0aDtcclxuICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaXNhYmxlQ2xlYXJBbGwgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoRm9yVGhlSXRlbShzdHI6IHN0cmluZyl7XHJcbiAgICAgIGlmKHN0cil7XHJcbiAgICAgICAgICB0aGlzLnRvb2x0aXBPcHRpb25zID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5sYWJlbC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc3RyLnRvTG93ZXJDYXNlKCkpKSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMudG9vbHRpcE9wdGlvbnMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgZWxlbWVudC5sYWJlbCA9IHRoaXMuYm9sZFN0cmluZyhlbGVtZW50LmxhYmVsLHN0cik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYodGhpcy50b29sdGlwT3B0aW9ucy5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICBsZXQgdW5zZWxlY3RlZEl0ZW1zID0gdGhpcy50b29sdGlwT3B0aW9ucy5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmlzU2VsZWN0ZWQpO1xyXG4gICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW1zID0gdGhpcy50b29sdGlwT3B0aW9ucy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uaXNTZWxlY3RlZCk7ICBcclxuICAgICAgICAgICAgICB0aGlzLmRpc2FibGVTZWxlY3RBbGwgPSB1bnNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDA7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlQ2xlYXJBbGwgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2JveE9wdGlvbnNDb3VudCA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSAoc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMCB8fCAhdGhpcy5jaGVja0lmQ2hlY2tib3hUb29sdGlwSXNGaWx0ZXJlZCgpKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmRpc2FibGVTZWxlY3RBbGwgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgICB0aGlzLnRvb2x0aXBPcHRpb25zID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMpO1xyXG4gICAgICAgICAgbGV0IHVuc2VsZWN0ZWRJdGVtcyA9IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uaXNTZWxlY3RlZCk7XHJcbiAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtcyA9IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc1NlbGVjdGVkKTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2JveE9wdGlvbnNDb3VudCA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gdW5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlQ2xlYXJBbGwgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICBib2xkU3RyaW5nKHN0cjogc3RyaW5nLCBmaW5kOiBzdHJpbmcpIHtcclxuICAgIGxldCBpbmRleGVzID0gdGhpcy5nZXRJbmRpY2VzT2YoZmluZCwgc3RyLCBmYWxzZSk7XHJcbiAgICBcclxuICAgIGluZGV4ZXMuZm9yRWFjaCgoaXRlbSxpbmRleCkgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydEluZGV4ID0gaXRlbSArIChpbmRleCAqIDcpOyAvL011bHRpcGx5aW5nIGJ5IDcgYXMgdGhlcmUgYXJlIDdjaGFyOiA8Yj48L2I+XHJcbiAgICAgICAgbGV0IGVuZEluZGV4ID0gc3RhcnRJbmRleCArIGZpbmQubGVuZ3RoO1xyXG4gICAgICAgIGxldCBzdHJUb0JlUmVwbGFjZWQgPSBzdHIuc3Vic3RyaW5nKHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcclxuICAgICAgICBzdHIgPSBzdHIucmVwbGFjZShzdHJUb0JlUmVwbGFjZWQsIFwiPGI+XCIgKyBzdHJUb0JlUmVwbGFjZWQgKyBcIjwvYj5cIik7IFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc3RyO1xyXG59XHJcblxyXG5nZXRJbmRpY2VzT2Yoc2VhcmNoU3RyOiBzdHJpbmcsIHN0cjogc3RyaW5nLCBjYXNlU2Vuc2l0aXZlOiBib29sZWFuKSB7XHJcbiAgICB2YXIgc2VhcmNoU3RyTGVuID0gc2VhcmNoU3RyLmxlbmd0aDtcclxuICAgIGlmIChzZWFyY2hTdHJMZW4gPT0gMCkge1xyXG4gICAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIHZhciBzdGFydEluZGV4ID0gMCwgaW5kZXgsIGluZGljZXMgPSBbXTtcclxuICAgIGlmICghY2FzZVNlbnNpdGl2ZSkge1xyXG4gICAgICAgIHN0ciA9IHN0ci50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIHNlYXJjaFN0ciA9IHNlYXJjaFN0ci50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfVxyXG4gICAgd2hpbGUgKChpbmRleCA9IHN0ci5pbmRleE9mKHNlYXJjaFN0ciwgc3RhcnRJbmRleCkpID4gLTEpIHtcclxuICAgICAgICBpbmRpY2VzLnB1c2goaW5kZXgpO1xyXG4gICAgICAgIHN0YXJ0SW5kZXggPSBpbmRleCArIHNlYXJjaFN0ckxlbjtcclxuICAgIH1cclxuICAgIHJldHVybiBpbmRpY2VzO1xyXG59XHJcblxyXG5cclxuICByZW1vdmVCb2xkRWxlbWVudEZyb21TdHJpbmcob3JpZ2luYWxTdHJpbmc6IHN0cmluZyl7XHJcbiAgICAgIGxldCBmaXJzdFJlZ0V4cCA9IG5ldyBSZWdFeHAoJzxiPicsJ2cnKTtcclxuICAgICAgbGV0IHNlY29uZFJlZ0V4cCA9IG5ldyBSZWdFeHAoJzwvYj4nLCdnJyk7XHJcblxyXG4gICAgICBsZXQgcmV0ID0gb3JpZ2luYWxTdHJpbmcucmVwbGFjZShmaXJzdFJlZ0V4cCwnJyk7XHJcbiAgICAgIHJldHVybiByZXQucmVwbGFjZShzZWNvbmRSZWdFeHAsJycpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJTZWFyY2hlZEl0ZW0oKXtcclxuICAgICAgdGhpcy5zZWFyY2hJdGVtID0gXCJcIjtcclxuICAgICAgdGhpcy5zZWFyY2hGb3JUaGVJdGVtKFwiXCIpO1xyXG4gIH1cclxuXHJcbiAgY2FsZW5kYXJEYXRlQ2hhbmdlZChldmVudDogYW55KXtcclxuICAgIHRoaXMuY2FsZW5kYXJTZWxlY3Rpb24gPSBldmVudDtcclxuICAgIHRoaXMuZGlzYWJsZUNhbGVuZGFyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIGRpc2FibGVDYWxlbmRhckFwcGx5QnV0dG9uKCkge1xyXG5cclxuICAgIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCAmJiB0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgbGV0IGlzRmlsdGVyQ2hhbmdlZCA9IHRoaXMuY2hlY2tJZkRhdGVUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgICBsZXQgaXNTb3J0Q2hhbmdlZCA9IHRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICAgICAgICBcclxuICAgICAgdGhpcy5kaXNhYmxlQ2FsZW5kYXJBcHBseUJ0biA9ICEodGhpcy5jYWxlbmRhclNlbGVjdGlvbi5mcm9tRGF0ZSAmJiB0aGlzLmNhbGVuZGFyU2VsZWN0aW9uLnRvRGF0ZSkgfHwgKCFpc1NvcnRDaGFuZ2VkICYmICFpc0ZpbHRlckNoYW5nZWQgKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50KXtcclxuICAgICAgICB0aGlzLmRpc2FibGVDYWxlbmRhckFwcGx5QnRuID0gISh0aGlzLmNhbGVuZGFyU2VsZWN0aW9uLmZyb21EYXRlICYmIHRoaXMuY2FsZW5kYXJTZWxlY3Rpb24udG9EYXRlKSB8fCAhdGhpcy5jaGVja0lmRGF0ZVRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuc2hvd1NvcnRDb21wb25lbnQpe1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG4gPSAhdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBzZXRJbml0aWFsVmFsdWVNYXBGb3JUaW1lRmlsdGVyKGtleTogc3RyaW5nKSB7XHJcbiAgICBsZXQgZGF0YSA9IHRoaXMuY2xvbmVkVGFibGVEYXRhLmZpbHRlcihcclxuICAgICAgICAob2JqKSA9PiAhW1wiXCIsIFwiLVwiLCBudWxsLCBcIjBcIiwgXCI8bXVsdGk+XCJdLmluY2x1ZGVzKG9ialtrZXldKSk7XHJcblxyXG4gICAgbGV0IHRpbWVBcnIgPSBtYXAoZGF0YSwga2V5KTtcclxuICAgIHRpbWVBcnIuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2Uuc29ydEJ5VGltZUFzY2VuZGluZyhhLCBiKTtcclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICBsZXQgb2JqID0ge1xyXG4gICAgICAgIGZyb21UaW1lOiB0aW1lQXJyWzBdLFxyXG4gICAgICAgIHRvVGltZTogdGltZUFyclt0aW1lQXJyLmxlbmd0aCAtIDFdLFxyXG4gICAgICAgIGluY2x1ZGVNdWx0aTogZmFsc2UsXHJcbiAgICAgICAgaW5jbHVkZVplcm86IGZhbHNlLFxyXG4gICAgICAgIGluY2x1ZGVUaW1lUmFuZ2U6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09PSBcIlNQT1RERVRBSUxTXCIgfHxcclxuICAgICAgICB0aGlzLmd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT09IFwiRVhDTFVERUlOVkVOVE9SWVBPUFVQXCJcclxuICAgICkge1xyXG4gICAgICAgIGxldCBpbmNsdWRlTXVsdGkgPVxyXG4gICAgICAgICAgICB0aGlzLmNsb25lZFRhYmxlRGF0YS5maW5kSW5kZXgoKG9iaikgPT4gb2JqW2tleV0gPT0gXCI8bXVsdGk+XCIpICE9XHJcbiAgICAgICAgICAgIC0xO1xyXG4gICAgICAgIGxldCBpbmNsdWRlWmVybyA9XHJcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLmZpbmRJbmRleCgob2JqKSA9PiBvYmpba2V5XSA9PSBcIjBcIikgIT0gLTE7XHJcbiAgICAgICAgbGV0IGluY2x1ZGVUaW1lUmFuZ2UgPVxyXG4gICAgICAgICAgICB0aGlzLmNsb25lZFRhYmxlRGF0YS5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgICAgICAob2JqKSA9PiBvYmpba2V5XSAhPSBcIjBcIiAmJiBvYmpba2V5XSAhPSBcIjxtdWx0aT5cIlxyXG4gICAgICAgICAgICApICE9IC0xO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgICAgIGZyb21UaW1lOiB0aW1lQXJyWzBdLFxyXG4gICAgICAgICAgICB0b1RpbWU6IHRpbWVBcnJbdGltZUFyci5sZW5ndGggLSAxXSxcclxuICAgICAgICAgICAgaW5jbHVkZU11bHRpOiBpbmNsdWRlTXVsdGksXHJcbiAgICAgICAgICAgIGluY2x1ZGVaZXJvOiBpbmNsdWRlWmVybyxcclxuICAgICAgICAgICAgaW5jbHVkZVRpbWVSYW5nZTogaW5jbHVkZVRpbWVSYW5nZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldChrZXksIG9iaik7XHJcbiAgICB9IFxyXG4gICAgZWxzZSBpZiAodGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09PSBcIlJBVElOR1wiKSB7XHJcbiAgICAgICAgdGhpcy5zZXRJbml0aWFsVmFsdWVNYXBGb3JSYXRpbmdQYWdlVGltZUZpbHRlcihrZXkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5zZXQoa2V5LCBvYmopO1xyXG4gICAgfVxyXG59XHJcblxyXG5zZXRJbml0aWFsVmFsdWVNYXBGb3JSYXRpbmdQYWdlVGltZUZpbHRlcihrZXk6IHN0cmluZyl7XHJcbiAgbGV0IGluY2x1ZGVNdWx0aSA9XHJcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLmZpbmRJbmRleCgob2JqKSA9PiBvYmpba2V5XVswXSA9PSBcIjxtdWx0aT5cIikgIT1cclxuICAgICAgICAgICAgLTE7XHJcbiAgICAgICAgbGV0IGluY2x1ZGVaZXJvID1cclxuICAgICAgICAgICAgdGhpcy5jbG9uZWRUYWJsZURhdGEuZmluZEluZGV4KChvYmopID0+IG9ialtrZXldWzBdID09IFwiMFwiKSAhPSAtMTtcclxuICAgICAgICBsZXQgaW5jbHVkZVRpbWVSYW5nZSA9XHJcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLmZpbmRJbmRleChcclxuICAgICAgICAgICAgICAgIChvYmopID0+IG9ialtrZXldWzBdICE9IFwiMFwiICYmIG9ialtrZXldWzBdICE9IFwiPG11bHRpPlwiXHJcbiAgICAgICAgICAgICkgIT0gLTE7XHJcblxyXG4gICAgICAgIGxldCBzdGFydFRpbWVBcnIgPSBtYXAodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwic3RhcnRUaW1lXCIpO1xyXG4gICAgICAgIGxldCBlbmRUaW1lQXJyID0gbWFwKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcImVuZFRpbWVcIik7XHJcblxyXG4gICAgICAgIHN0YXJ0VGltZUFyci5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2Uuc29ydEJ5VGltZUFzY2VuZGluZyhhLCBiKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgZW5kVGltZUFyci5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2Uuc29ydEJ5VGltZURlc2NlbmRpbmcoYSwgYik7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgICAgIGZyb21UaW1lOiBzdGFydFRpbWVBcnJbMF0sXHJcbiAgICAgICAgICAgIHRvVGltZTogZW5kVGltZUFyclswXSxcclxuICAgICAgICAgICAgaW5jbHVkZU11bHRpOiBpbmNsdWRlTXVsdGksXHJcbiAgICAgICAgICAgIGluY2x1ZGVaZXJvOiBpbmNsdWRlWmVybyxcclxuICAgICAgICAgICAgaW5jbHVkZVRpbWVSYW5nZTogaW5jbHVkZVRpbWVSYW5nZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldChrZXksIG9iaik7IFxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0VGltZUhvdXJDaGFuZ2UodmFsOiBzdHJpbmcpe1xyXG4gICAgICAgIGlmKHZhbC5sZW5ndGggPT0gMCB8fCAxID4gcGFyc2VJbnQodmFsKSB8fCBwYXJzZUludCh2YWwpID4gMTIpe1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0VGltZUhvdXJFcnIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0VGltZUhvdXJFcnIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRUaW1lTWluQ2hhbmdlKHZhbDogc3RyaW5nKXtcclxuICAgICAgICBpZih2YWwubGVuZ3RoICE9IDIgIHx8IDAgPiBwYXJzZUludCh2YWwpIHx8IHBhcnNlSW50KHZhbCkgPiA1OSl7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lTWluRXJyID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVNaW5FcnIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZW5kVGltZUhvdXJDaGFuZ2UodmFsOiBzdHJpbmcpe1xyXG4gICAgICAgIGlmKHZhbC5sZW5ndGggPT0gMCB8fCAxID4gcGFyc2VJbnQodmFsKSB8fCBwYXJzZUludCh2YWwpID4gMTIpe1xyXG4gICAgICAgICAgICB0aGlzLmVuZFRpbWVIb3VyRXJyID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5lbmRUaW1lSG91ckVyciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgIH1cclxuXHJcbiAgICBlbmRUaW1lTWluQ2hhbmdlKHZhbDogc3RyaW5nKXtcclxuICAgICAgICBpZih2YWwubGVuZ3RoICE9IDIgIHx8IDAgPiBwYXJzZUludCh2YWwpIHx8IHBhcnNlSW50KHZhbCkgPiA1OSl7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kVGltZU1pbkVyciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kVGltZU1pbkVyciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lmQ2hlY2tib3hUb29sdGlwSXNGaWx0ZXJlZCgpe1xyXG4gICAgICAgIGxldCBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IFtdO1xyXG4gICAgICAgIGxldCBwcmV2aW91c1NlbGVjdGVkVmFsdWUgPSBbXTtcclxuXHJcbiAgICAgICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3RlZFZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmKCF0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICAgIGxldCBpbml0aWFsVmFsdWUgPSBzb3J0QnkodW5pcSh0aGlzLmNsb25lZFRhYmxlRGF0YS5tYXAoaXRlbSA9PiBpdGVtW3RoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpb10pKSk7XHJcbiAgICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8saW5pdGlhbFZhbHVlKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3RlZFZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGVkVmFsdWUgPSBzb3J0QnkodW5pcSh0aGlzLmNsb25lZFRhYmxlRGF0YS5tYXAoaXRlbSA9PiBpdGVtW3RoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpb10pKSk7XHJcbiAgICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLHByZXZpb3VzU2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZih0aGlzLnRvb2x0aXBPcHRpb25zKXtcclxuXHJcbiAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZFZhbHVlID0gc29ydEJ5KHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc1NlbGVjdGVkKS5tYXAoaXRlbSA9PiBpdGVtLnZhbHVlKSk7XHJcblxyXG4gICAgICAgICAgICBpZighdGhpcy5zZWFyY2hJdGVtICYmIGN1cnJlbnRTZWxlY3RlZFZhbHVlLmxlbmd0aCA9PSB0aGlzLnRvb2x0aXBPcHRpb25zLmxlbmd0aCAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGVkVmFsdWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBibGFua0luZGV4ID0gY3VycmVudFNlbGVjdGVkVmFsdWUuZmluZEluZGV4KChpdGVtOiBzdHJpbmcpID0+IGl0ZW0gPT0gbnVsbCk7XHJcbiAgICAgICAgaWYoYmxhbmtJbmRleCAhPSAtMSl7XHJcbiAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IHNvcnRCeShjdXJyZW50U2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmlzRmlsdGVyQ2hhbmdlZCA9ICFpc0VxdWFsKGN1cnJlbnRTZWxlY3RlZFZhbHVlLHByZXZpb3VzU2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrSWZUaW1lVG9vbHRpcElzRmlsdGVyZWQoKXtcclxuICAgICAgbGV0IGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXI6IHtmcm9tVGltZTogc3RyaW5nLCB0b1RpbWU6c3RyaW5nLCBpbmNsdWRlTXVsdGk6IGJvb2xlYW4sIGluY2x1ZGVaZXJvOiBib29sZWFuLCBpbmNsdWRlVGltZVJhbmdlOiBib29sZWFufSA9IHtcclxuICAgICAgICBmcm9tVGltZTogbnVsbCxcclxuICAgICAgICB0b1RpbWU6IG51bGwsXHJcbiAgICAgICAgaW5jbHVkZU11bHRpOiBmYWxzZSxcclxuICAgICAgICBpbmNsdWRlWmVybzogZmFsc2UsXHJcbiAgICAgICAgaW5jbHVkZVRpbWVSYW5nZTogZmFsc2UsXHJcbiAgICAgIH07XHJcbiAgXHJcbiAgICAgIGxldCBwcmV2aW91c1NlbGVjdGVkVGltZUZpbHRlcjtcclxuICBcclxuICAgICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgIHByZXZpb3VzU2VsZWN0ZWRUaW1lRmlsdGVyID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgcHJldmlvdXNTZWxlY3RlZFRpbWVGaWx0ZXIgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICBsZXQgZnJvbVRpbWUyNEhyRm9ybWF0QXJyID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb3R3ZW50eUZvdXJIcnNGb3JtYXQoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzBdICsgXCI6XCIgKyB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMV0gKyBcIiBcIiArIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVsyXSxcclxuICAgICAgICB0cnVlXHJcbiAgICAgICk7XHJcbiAgICAgIGxldCBmcm9tVGltZTI0SHJGb3JtYXQgPSBmcm9tVGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIGZyb21UaW1lMjRIckZvcm1hdEFyclsxXSArIFwiOjAwXCI7XHJcblxyXG4gICAgICBsZXQgdG9UaW1lMjRIckZvcm1hdEFyciA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG90d2VudHlGb3VySHJzRm9ybWF0KFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWVbMF0gKyBcIjpcIiArIHRoaXMuc2VsZWN0ZWRUb1RpbWVbMV0gKyBcIiBcIiArIHRoaXMuc2VsZWN0ZWRUb1RpbWVbMl0sXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgdG9UaW1lMjRIckZvcm1hdCA9IHRvVGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIHRvVGltZTI0SHJGb3JtYXRBcnJbMV0gKyBcIjowMFwiO1xyXG4gIFxyXG4gICAgICBjdXJyZW50U2VsZWN0ZWRUaW1lRmlsdGVyID0geyBmcm9tVGltZTogZnJvbVRpbWUyNEhyRm9ybWF0LCB0b1RpbWU6IHRvVGltZTI0SHJGb3JtYXQsIGluY2x1ZGVNdWx0aTogdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQsIFxyXG4gICAgICBpbmNsdWRlWmVybzogdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCwgaW5jbHVkZVRpbWVSYW5nZTogdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWR9O1xyXG4gICAgICBcclxuICAgICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSAhaXNFcXVhbChwcmV2aW91c1NlbGVjdGVkVGltZUZpbHRlciwgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlcik7XHJcbiAgICAgIHJldHVybiB0aGlzLmlzRmlsdGVyQ2hhbmdlZDsgIFxyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrSWZEYXRlVG9vbHRpcElzRmlsdGVyZWQoKXtcclxuICAgICAgbGV0IGN1cnJlbnRTZWxlY3RlZERhdGUgPSBjbG9uZURlZXAodGhpcy5jYWxlbmRhclNlbGVjdGlvbik7XHJcbiAgICAgIGxldCBwcmV2aW91c1NlbGVjdGVkRGF0ZToge2Zyb21EYXRlOiBhbnksIHRvRGF0ZTogYW55fSA9IHtmcm9tRGF0ZTogbnVsbCwgdG9EYXRlOiBudWxsfTtcclxuXHJcbiAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICBwcmV2aW91c1NlbGVjdGVkRGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmKCF0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlTWFwRm9yRGF0ZUZpbHRlcigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgcHJldmlvdXNTZWxlY3RlZERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlTWFwRm9yRGF0ZUZpbHRlcigpO1xyXG4gICAgICAgIHByZXZpb3VzU2VsZWN0ZWREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUgJiYgY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUpe1xyXG4gICAgICAgICAgbGV0IGZyb21EYXRlID0ge3llYXI6IGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUueWVhcixtb250aDogY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZS5tb250aCxkYXk6IGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUuZGF5fTtcclxuICAgICAgICAgIGxldCB0b0RhdGUgPSB7eWVhcjogY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUueWVhcixtb250aDogY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUubW9udGgsZGF5OiBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZS5kYXl9O1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZihpc0VxdWFsKHRoaXMuY2FsZW5kYXJNaW5FbmFibGVkRGF0ZSxmcm9tRGF0ZSkgJiYgaXNFcXVhbCh0aGlzLmNhbGVuZGFyTWF4RW5hYmxlZERhdGUsdG9EYXRlKSAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGVkRGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlID0gbW9tZW50KHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0TmdiRGF0ZVRvTW9tZW50KGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUpKTtcclxuICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZSA9IG1vbWVudCh0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydE5nYkRhdGVUb01vbWVudChjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSAhaXNFcXVhbChwcmV2aW91c1NlbGVjdGVkRGF0ZSxjdXJyZW50U2VsZWN0ZWREYXRlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5pc0ZpbHRlckNoYW5nZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SW5pdGlhbFZhbHVlTWFwRm9yRGF0ZUZpbHRlcigpe1xyXG4gICAgICAgIGxldCBtaW5NYXhEYXRlO1xyXG5cclxuICAgICAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPT0gXCJwZXJpb2RcIil7XHJcbiAgICAgICAgICBsZXQgbWluU3RhcnREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NaW5BbmRNYXhEYXRlKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcInN0YXJ0RGF0ZVwiKTtcclxuICAgICAgICAgIGxldCBtYXhFbmREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NaW5BbmRNYXhEYXRlKHRoaXMuY2xvbmVkVGFibGVEYXRhLFwiZW5kRGF0ZVwiKTtcclxuICAgICAgICAgIG1pbk1heERhdGUgPSBbbWluU3RhcnREYXRlWzBdLG1heEVuZERhdGVbMV1dO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgbWluTWF4RGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWluQW5kTWF4RGF0ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSx0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc2VsZWN0ZWREYXRlID0ge2Zyb21EYXRlOiBtaW5NYXhEYXRlWzBdLCB0b0RhdGU6IG1pbk1heERhdGVbMV19O1xyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sIHNlbGVjdGVkRGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tJZlNsaWRlclRvb2x0aXBJc0ZpbHRlcmVkKCl7XHJcbiAgICAgIGxldCBjdXJyZW50U2xpZGVyRGF0YToge21pbjphbnksIG1heDogYW55fSA9IHttaW46IG51bGwgLCBtYXg6IG51bGx9O1xyXG4gICAgICBsZXQgcHJldmlvdXNTbGlkZXJEYXRhOiB7bWluOmFueSwgbWF4OiBhbnl9ID0ge21pbjogXCJcIiwgbWF4OiBcIlwifTtcclxuXHJcbiAgICAgIC8vIGlmKHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkpe1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWluID0gdGhpcy5vcHRpb25zLmZsb29yO1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWF4ID0gdGhpcy5zbGlkZXJNYXhWYWx1ZTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBlbHNlIGlmKHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkpe1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWF4ID0gdGhpcy5vcHRpb25zLmNlaWw7XHJcbiAgICAgIC8vICAgICBjdXJyZW50U2xpZGVyRGF0YS5taW4gPSB0aGlzLnNsaWRlck1pblZhbHVlO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGVsc2V7XHJcbiAgICAgICAgICBjdXJyZW50U2xpZGVyRGF0YS5tYXggPSB0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZTtcclxuICAgICAgICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1pbiA9IHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlO1xyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgcHJldmlvdXNTbGlkZXJEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgaWYoIXRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlTWFwRm9yU2xpZGVyRmlsdGVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgIHByZXZpb3VzU2xpZGVyRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgdGhpcy5zZXRJbml0aWFsVmFsdWVNYXBGb3JTbGlkZXJGaWx0ZXIoKTtcclxuICAgICAgICBwcmV2aW91c1NsaWRlckRhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYoY3VycmVudFNsaWRlckRhdGEubWluID09IHRoaXMub3B0aW9ucy5mbG9vciAmJiBjdXJyZW50U2xpZGVyRGF0YS5tYXggPT0gdGhpcy5vcHRpb25zLmNlaWwgJiYgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykgKXtcclxuICAgICAgICAgIGN1cnJlbnRTbGlkZXJEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkID0gIWlzRXF1YWwocHJldmlvdXNTbGlkZXJEYXRhLGN1cnJlbnRTbGlkZXJEYXRhKTtcclxuICAgICAgcmV0dXJuIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEluaXRpYWxWYWx1ZU1hcEZvclNsaWRlckZpbHRlcigpe1xyXG4gICAgICBsZXQgbWluVmFsdWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1heEFuZE1pblZhbHVlKHRoaXMuY2xvbmVkVGFibGVEYXRhLCB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sIHRydWUpO1xyXG4gICAgICBsZXQgbWF4VmFsdWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1heEFuZE1pblZhbHVlKHRoaXMuY2xvbmVkVGFibGVEYXRhLCB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sIGZhbHNlKTtcclxuICAgICAgbGV0IHNsaWRlckRhdGEgPSB7IG1pbjogbWluVmFsdWUsIG1heDogbWF4VmFsdWUgfTtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbywgc2xpZGVyRGF0YSk7XHJcbiAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrSWZTb3J0aW5nQ2hhbmdlZCgpe1xyXG4gICAgICB0aGlzLmlzU29ydENoYW5nZWQgPSB0aGlzLnRlbXBTb3J0T3JkZXIgIT0gbnVsbCAmJiB0aGlzLnRlbXBTb3J0T3JkZXIgIT0gdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pOztcclxuICAgICAgY29uc29sZS5sb2codGhpcy5pc1NvcnRDaGFuZ2VkKTtcclxuICAgICAgcmV0dXJuIHRoaXMuaXNTb3J0Q2hhbmdlZDtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlQXBwbHlCdXR0b25PZlNlbGVjdGVkRmlsdGVyKCl7XHJcbiAgICAgIGxldCBoZWFkZXIgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW87XHJcblxyXG4gICAgICBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS5jYWxlbmRhclNldC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZUNhbGVuZGFyQXBwbHlCdXR0b24oKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNsaWRlclNldC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnRuKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS50aW1lU2V0LmhhcyhoZWFkZXIpKSB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZUNoZWNrYm94RmlsdGVyQXBwbHlCdXR0b24oKXtcclxuICAgICAgbGV0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgPyB0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCkgOiBbXTtcclxuICAgICAgICBcclxuICAgICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ICYmIHRoaXMuc2hvd1NvcnRDb21wb25lbnQpe1xyXG4gICAgICAgICAgbGV0IGlzRmlsdGVyQ2hhbmdlZCA9IHRoaXMuY2hlY2tJZkNoZWNrYm94VG9vbHRpcElzRmlsdGVyZWQoKTtcclxuICAgICAgICAgIGxldCBpc1NvcnRDaGFuZ2VkID0gdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwIHx8ICghaXNTb3J0Q2hhbmdlZCAmJiAhaXNGaWx0ZXJDaGFuZ2VkICk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQpe1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDAgfHwgIXRoaXMuY2hlY2tJZkNoZWNrYm94VG9vbHRpcElzRmlsdGVyZWQoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmKHRoaXMuc2hvd1NvcnRDb21wb25lbnQpe1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9ICF0aGlzLmNoZWNrSWZTb3J0aW5nQ2hhbmdlZCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdHJhY2tCeVRvb2x0aXBNb2RlbElkKGluZGV4OiBudW1iZXIgLCBpdGVtOiBUb29sdGlwTW9kZWwpe1xyXG4gICAgICByZXR1cm4gaXRlbS5pZDtcclxuICAgIH1cclxuXHJcbiAgICBzZXRBY3RpdmVTdGF0ZU9iamVjdCgpe1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSA9IHt9O1xyXG4gICAgICB0aGlzLnRhYmxlSGVhZGVycy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uaGVhZGVySW5mby5mb3JFYWNoKGhlYWRlciA9PiB7XHJcbiAgICAgICAgICAgIGlmKGhlYWRlci5zaG93VG9vbHRpcEljb24pe1xyXG4gICAgICAgICAgICAgIGxldCBrZXkgPSBoZWFkZXIuZmlsdGVyU29ydE9iamVjdEtleXMuam9pbignLCcpO1xyXG4gICAgICAgICAgICAgIGhlYWRlci5qb2luZWRGaWx0ZXJTb3J0T2JqZWN0S2V5cyA9IGtleTtcclxuICAgICAgICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZVtrZXldID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRJc0RpZmZlcmVuY2UodmFsdWU6IGJvb2xlYW4pe1xyXG4gICAgICB0aGlzLmlzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50ID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzZXRJbmRleCgpe1xyXG4gICAgICB0aGlzLnN0YXJ0ID0gMDtcclxuICAgICAgdGhpcy5lbmQgPSB0aGlzLmxpbWl0ICsgdGhpcy5zdGFydDtcclxuICAgIH1cclxuXHJcbiAgICBvblRhYmxlQ29udGFpbmVyU2Nyb2xsKGU6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHRhYmxlVmlld0hlaWdodCA9IGUudGFyZ2V0Lm9mZnNldEhlaWdodDsgLy8gdmlld3BvcnRcclxuICAgICAgICBjb25zdCB0YWJsZVNjcm9sbEhlaWdodCA9IGUudGFyZ2V0LnNjcm9sbEhlaWdodDsgLy8gbGVuZ3RoIG9mIGFsbCB0YWJsZVxyXG4gICAgICAgIGNvbnN0IHNjcm9sbExvY2F0aW9uID0gZS50YXJnZXQuc2Nyb2xsVG9wOyAvLyBob3cgZmFyIHVzZXIgc2Nyb2xsZWRcclxuXHJcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicmVtYXJrcy1pbmZvLXRvb2x0aXBcIik7XHJcbiAgICAgICAgd2hpbGUgKGVsZW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGVsZW1lbnRzWzBdLnJlbW92ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAvLyBJZiB0aGUgdXNlciBoYXMgc2Nyb2xsZWQgd2l0aGluIDE1MHB4IG9mIHRoZSBib3R0b20sIGFkZCBtb3JlIGRhdGFcclxuICAgICAgICBjb25zdCBidWZmZXIgPSAxNTA7XHJcbiAgICAgICAgY29uc3QgbGltaXQgPSB0YWJsZVNjcm9sbEhlaWdodCAtIHRhYmxlVmlld0hlaWdodCAtIGJ1ZmZlcjtcclxuICAgICAgICBpZiAoc2Nyb2xsTG9jYXRpb24gPiBsaW1pdCkge1xyXG4gICAgICAgICAgICBsZXQgZGF0YSA9IHRoaXMuZ2V0VGFibGVEYXRhKHRoaXMuc3RhcnQsIHRoaXMuZW5kKTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlZERhdGEgPSB0aGlzLnJlbmRlcmVkRGF0YS5jb25jYXQoZGF0YSk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSW5kZXgoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50YWJsZUNvbnRhaW5lclNjcm9sbGVkKGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFRhYmxlRGF0YShzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlRGF0YS5maWx0ZXIoKHZhbHVlLCBpbmRleCkgPT4gaW5kZXggPj0gc3RhcnQgJiYgaW5kZXggPCBlbmQpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUluZGV4KCkge1xyXG4gICAgICAgIHRoaXMuc3RhcnQgPSB0aGlzLmVuZDtcclxuICAgICAgICB0aGlzLmVuZCA9IHRoaXMubGltaXQgKyB0aGlzLnN0YXJ0O1xyXG4gICAgfVxyXG5cclxuICAgIHNldEluaXRpYWxSb3dzRm9yVGFibGUoKXtcclxuICAgICAgdGhpcy5yZXNldEluZGV4KCk7XHJcbiAgICAgIHRoaXMucmVuZGVyZWREYXRhID0gdGhpcy5nZXRUYWJsZURhdGEodGhpcy5zdGFydCx0aGlzLmVuZCk7XHJcbiAgICAgIHRoaXMudXBkYXRlSW5kZXgoKTtcclxuICAgIH1cclxuXHJcbiAgICBzcG90RGV0YWlsc0Rvd25sb2FkQ2xpY2tlZChwYXJlbnRDaGlsZE9yVG90YWxSb3c6IFwiREFUQVJPV1wiIHwgXCJUT1RBTFJPV1wiLCByb3dkYXRhPzogYW55ICkge1xyXG4gICAgICBpZihyb3dkYXRhKXtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSW52ZW50b3J5SWRGb3JEb3dubG9hZCA9IHJvd2RhdGEuaW52ZW50b3J5Q29kZUlkO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREZW1vZ3JhcGhpY0ZvckRvd25sb2FkID0gcm93ZGF0YS5kZW1vZ3JhcGhpYztcclxuICAgICAgfSBlbHNle1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbnZlbnRvcnlJZEZvckRvd25sb2FkID0gbnVsbDtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGVtb2dyYXBoaWNGb3JEb3dubG9hZCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd1R5cGVGb3JEb3dubG9hZCA9IHBhcmVudENoaWxkT3JUb3RhbFJvdztcclxuICAgICAgdGhpcy5kb3dubG9hZFNwb3REZXRhaWxzLmVtaXQoe1xyXG4gICAgICAgIHBhcmVudENoaWxkT3JUb3RhbFJvdzogcGFyZW50Q2hpbGRPclRvdGFsUm93LFxyXG4gICAgICAgIGludmVudG9yeUNvZGVJZDogdGhpcy5zZWxlY3RlZEludmVudG9yeUlkRm9yRG93bmxvYWQsXHJcbiAgICAgICAgZGVtb2dyYXBoaWM6IHRoaXMuc2VsZWN0ZWREZW1vZ3JhcGhpY0ZvckRvd25sb2FkfSlcclxuICB9XHJcblxyXG4gIHRhYmxlQ29udGFpbmVyU2Nyb2xsZWQoZXZlbnQ6IGFueSl7XHJcbiAgICAgIHRoaXMuaXNTY3JvbGxlZExlZnQgPSBldmVudC50YXJnZXQuc2Nyb2xsTGVmdCA+IDA7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lciB7e2d0R2VuZXJhbENvbmZpZz8udGFibGVPdXRlckNvbnRhaW5lck5hbWV9fVwiIFtuZ0NsYXNzXT1cInsgJ3Njcm9sbC1sZWZ0LXNoYWRvdy1lZmZlY3QnOiBpc1Njcm9sbGVkTGVmdCB9XCIgKHNjcm9sbCk9XCJvblRhYmxlQ29udGFpbmVyU2Nyb2xsKCRldmVudClcIj5cclxuICAgIDxkaXZcclxuICAgICAgICBbY2xhc3NdPVwiZ3RHZW5lcmFsQ29uZmlnLnRhYmxlQ29udGFpbmVyTmFtZVwiXHJcbiAgICAgICAgY2xhc3M9XCJob3Jpem9udGFsLXNjcm9sbC1mb3ItdGFibGUtY29udGFpbmVyXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgIGhlaWdodDpcclxuICAgICAgICAgICAgICAgIHRhYmxlRGF0YS5sZW5ndGggPCBtYXhpbXVtUm93c1doaWNoQ2FuQmVSZW5kZXJlZFdpdGhvdXRTY3JvbGxcclxuICAgICAgICAgICAgICAgICAgICA/ICdjYWxjKCcgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgKChndERpbWVuc2lvbi5yb3dIZWlnaHQgKyAoaW5jbHVkZUJvcmRlckluVGFibGVIZWlnaHQgPyByb3dCb3JkZXJXaWR0aCA6IDApKSAqIHRhYmxlRGF0YS5sZW5ndGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICghdGFibGVEYXRhLmxlbmd0aCB8fCAhZ3RHZW5lcmFsQ29uZmlnLnRvdGFsUm93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ3REaW1lbnNpb24uaGVhZGVySGVpZ2h0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ3REaW1lbnNpb24uaGVhZGVySGVpZ2h0ICsgZ3REaW1lbnNpb24ucm93SGVpZ2h0ICsgKCBpbmNsdWRlQm9yZGVySW5UYWJsZUhlaWdodCA/ICgyICogcm93Qm9yZGVyV2lkdGgpIDogMCkpKSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAncHgpJ1xyXG4gICAgICAgICAgICAgICAgICAgIDogZ3REaW1lbnNpb24udGFibGVIZWlnaHRcclxuICAgICAgICB9XCJcclxuICAgID5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJndFwiIFtuZ0NsYXNzXT1cInRhYmxlQ2xhc3NcIiBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwicmVuZGVyZWREYXRhXCI+XHJcbiAgICAgICAgICAgIDx0clxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItcm93XCJcclxuICAgICAgICAgICAgICAgIG1hdC1oZWFkZXItcm93XHJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyUm93RGVmPVwidGFibGVDb2x1bW5zOyBzdGlja3k6IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJndERpbWVuc2lvbi5oZWFkZXJIZWlnaHRcIlxyXG4gICAgICAgICAgICA+PC90cj5cclxuICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRvdGFsLXJvd1wiXHJcbiAgICAgICAgICAgICAgICBtYXQtaGVhZGVyLXJvd1xyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJndERpbWVuc2lvbi5yb3dIZWlnaHRcIlxyXG4gICAgICAgICAgICAgICAgKm1hdEhlYWRlclJvd0RlZj1cInRvdGFsUm93Q29sdW1uczsgc3RpY2t5OiB0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5oaWRkZW5dPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvd1NrZWxldG9uTG9hZGluZyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICghc2hvd1NrZWxldG9uTG9hZGluZyAmJiAhdGFibGVEYXRhLmxlbmd0aCApIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKGlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQgfCBhc3luYykgfHwgXHJcbiAgICAgICAgICAgICAgICAgICAgKCFzaG93U2tlbGV0b25Mb2FkaW5nICYmICFndEdlbmVyYWxDb25maWcudG90YWxSb3cpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+PC90cj5cclxuICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwicm93RGF0YS5ndENsYXNzXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbm8tYm9yZGVyLXRyJzogKGlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQgfCBhc3luYyl9XCJcclxuICAgICAgICAgICAgICAgIG1hdC1yb3dcclxuICAgICAgICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93RGF0YTsgY29sdW1uczogdGFibGVDb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiZ3REaW1lbnNpb24ucm93SGVpZ2h0XCIoY2xpY2spPVwiZGF0YVJvd0NsaWNrZWQocm93RGF0YSlcIlxyXG4gICAgICAgICAgICA+PC90cj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gVE9UQUwgUk9XIC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLmNvbE5hbWVcIiAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHRvdGFsUm93SW5mbzsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFthdHRyLmNvbHNwYW5dPVwiY29sdW1uLmNvbHNwYW5cIiBjbGFzcz1cInt7Y29sdW1uLmNsYXNzfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNvbHVtbi5kYXRhIH19PC9zdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5sb3dlckRhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLmNvbE5hbWUgPT0gJ3RvdGFsLXBvdGVudGlhbC1ib29rZWQtdW5pdCcgJiYgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgY29sdW1uTG93ZXJEYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2xpY2thYmxlLWRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNwb3REZXRhaWxzRG93bmxvYWRDbGlja2VkKCdUT1RBTFJPVycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Rpc2FibGVkLWNsaWNrYWJsZS1kYXRhJzogZG93bmxvYWRJblByb2dyZXNzIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGNvbHVtbi5sb3dlckRhdGEgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgc3BvdC1kZXRhaWxzLWRvd25sb2FkLWljb25zXCI+Z2V0X2FwcDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkb3dubG9hZEluUHJvZ3Jlc3MgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHNlbGVjdGVkUm93VHlwZUZvckRvd25sb2FkID09ICdUT1RBTFJPVycgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjaXJjdWxhclByb2dyZXNzQmFyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbHVtbkxvd2VyRGF0YT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbHVtbi5sb3dlckRhdGEgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnRvb2x0aXBNZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1pIG1kaS1pbmZvLW91dGxpbmUgaW5mby1sYWJlbFwiIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwiY29sdW1uLnRvb2x0aXBNZXNzYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cImd0LXRvdGFsLXJvdy10b29sdGlwXCIgcGxhY2VtZW50PVwiYm90dG9tXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8IS0tIE1BSU4gUk9XIC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uRGVmLmhlYWRlckluZm9bMF0ub2JqZWN0S2V5XCIgKm5nRm9yPVwibGV0IGNvbHVtbkRlZiBvZiB0YWJsZUhlYWRlcnM7ICB0cmFja0J5OiB0cmFja0J5Rm5cIj5cclxuICAgICAgICAgICAgICAgIDx0aCAjdGFibGVIZWFkZXIgbm93cmFwIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBbc3R5bGUud2lkdGhdPVwiY29sdW1uRGVmLndpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBteC0wXCIgKm5nRm9yPVwibGV0IGhlYWRlciBvZiBjb2x1bW5EZWYuaGVhZGVySW5mbzsgbGV0IGogPSBpbmRleDtcIj4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImhlYWRlci50eXBlT2ZIZWFkZXJEYXRhID09PSAnU1RSSU5HJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICd1cHBlci1sYWJlbCc6IGogPT09IDAsICdsb3dlci1sYWJlbCc6IGogPT09IDEgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGhlYWRlci5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhlYWRlci50b29sdGlwICYmIGhlYWRlci50b29sdGlwLm5hbWUgPT0gJ2ltcHNJbmZvVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cImltcHNJbmZvVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdzcG90c0NvbHVtbkVxdWl2YWxpemF0aW9uTWVzc2FnZVRvb2x0aXAnXCIgY2xhc3M9XCJ7e2hlYWRlclsndG9vbHRpcCddLmljb25DbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Zsb2F0JzogaGVhZGVyWyd0b29sdGlwJ10uaWNvblBvc2l0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJzcG90c0NvbHVtbkVxdWl2YWxpemF0aW9uTWVzc2FnZVRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBQb3NpdGlvbiB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcENsYXNzIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaGVhZGVyLnRvb2x0aXAgJiYgaGVhZGVyLnRvb2x0aXAubmFtZSA9PSAncmF0aW5nSW5mb1Rvb2x0aXAnXCIgY2xhc3M9XCJ7e2hlYWRlclsndG9vbHRpcCddLmljb25DbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Zsb2F0JzogaGVhZGVyWyd0b29sdGlwJ10uaWNvblBvc2l0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJyYXRpbmdJbmZvVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdyYXRlSW5mb1Rvb2x0aXAnXCIgY2xhc3M9XCJ7e2hlYWRlclsndG9vbHRpcCddLmljb25DbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Zsb2F0JzogaGVhZGVyWyd0b29sdGlwJ10uaWNvblBvc2l0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJyYXRlSW5mb1Rvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBQb3NpdGlvbiB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcENsYXNzIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaGVhZGVyLnRvb2x0aXAgJiYgaGVhZGVyLnRvb2x0aXAubmFtZSA9PSAnb25nb2luZ1JldkJvb2tlZENvbHVtblRvb2x0aXAnXCIgY2xhc3M9XCJ7e2hlYWRlclsndG9vbHRpcCddLmljb25DbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Zsb2F0JzogaGVhZGVyWyd0b29sdGlwJ10uaWNvblBvc2l0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJvbmdvaW5nUmV2Qm9va2VkQ29sdW1uVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdjb21wbGV0ZWRSZXZCb29rZWRDb2x1bW5Ub29sdGlwJ1wiIGNsYXNzPVwie3toZWFkZXJbJ3Rvb2x0aXAnXS5pY29uQ2xhc3N9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydmbG9hdCc6IGhlYWRlclsndG9vbHRpcCddLmljb25Qb3NpdGlvbn1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0PVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwiY29tcGxldGVkUmV2Qm9va2VkQ29sdW1uVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLnR5cGVPZkhlYWRlckRhdGEgPT09ICdDSEVDS0JPWCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJndEdlbmVyYWxDb25maWcuaXNIZWFkZXJDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFVuc2VsZWN0QWxsUm93cygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZ3RHZW5lcmFsQ29uZmlnLmlzSGVhZGVyQ2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZGlzYWJsZS1jaGVja2JveCc6IGd0R2VuZXJhbENvbmZpZy5kaXNhYmxlSGVhZGVyQ2hlY2tib3ggfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFVuc2VsZWN0QWxsUm93cygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJndEdlbmVyYWxDb25maWcuc2hvd0FsbENvbHVtbkZpbHRlclwiIGNsYXNzPVwic29ydC1maWx0ZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLnNob3dUb29sdGlwSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQWN0aXZlIHRvb2x0aXAgRnVuY3Rpb25hbGl0eSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZpbHRlciA9PT0gJ0NIRUNLQk9YJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZpbHRlci12YXJpYW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSAmJiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVbaGVhZGVyLmpvaW5lZEZpbHRlclNvcnRPYmplY3RLZXlzXSwgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGhlYWRlci5kaXNhYmxlVG9vbHRpcEljb24gJiYgIShhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmUgJiYgYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlW2hlYWRlci5qb2luZWRGaWx0ZXJTb3J0T2JqZWN0S2V5c10pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cImZpbHRlclRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnQtdG9wIGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJub24tZWRpdC1jaGVja2JveC10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0PVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmluZFRoZVZhbHVlVG9Ub29sVGlwKHQsIGhlYWRlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpZGRlbik9XCJjbG9zZVRvb2x0aXAoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZpbHRlciA9PT0gJ1NMSURFUidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1maWx0ZXItdmFyaWFudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmUgJiYgYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlW2hlYWRlci5qb2luZWRGaWx0ZXJTb3J0T2JqZWN0S2V5c10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGhlYWRlci5kaXNhYmxlVG9vbHRpcEljb24gJiYgIShhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmUgJiYgYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlW2hlYWRlci5qb2luZWRGaWx0ZXJTb3J0T2JqZWN0S2V5c10pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInNsaWRlclRvb2xUaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnQtdG9wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwibm9uLWVkaXQtc2xpZGVyLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3QxPVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmluZFRoZVZhbHVlVG9Ub29sVGlwKHQxLCBoZWFkZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5maWx0ZXIgPT09ICdEQVRFJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZpbHRlci12YXJpYW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSAmJiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVbaGVhZGVyLmpvaW5lZEZpbHRlclNvcnRPYmplY3RLZXlzXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaGVhZGVyLmRpc2FibGVUb29sdGlwSWNvbiAmJiAhKGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSAmJiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVbaGVhZGVyLmpvaW5lZEZpbHRlclNvcnRPYmplY3RLZXlzXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwiZGF0ZVBpY2tlclRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJub24tZWRpdC1kYXRlcGlja2VyLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3QyPVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmluZFRoZVZhbHVlVG9Ub29sVGlwKHQyLCBoZWFkZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5maWx0ZXIgPT09ICdXRUVLJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZpbHRlci12YXJpYW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSAmJiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVbaGVhZGVyLmpvaW5lZEZpbHRlclNvcnRPYmplY3RLZXlzXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaGVhZGVyLmRpc2FibGVUb29sdGlwSWNvbiAmJiAhKGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSAmJiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVbaGVhZGVyLmpvaW5lZEZpbHRlclNvcnRPYmplY3RLZXlzXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwid2Vla1BpY2tlclRvb2xUaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnQtdG9wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3QzPVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmluZFRoZVZhbHVlVG9Ub29sVGlwKHQzLCBoZWFkZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5maWx0ZXIgPT09ICdUSU1FJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZpbHRlci12YXJpYW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSAmJiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVbaGVhZGVyLmpvaW5lZEZpbHRlclNvcnRPYmplY3RLZXlzXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaGVhZGVyLmRpc2FibGVUb29sdGlwSWNvbiAmJiAhKGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSAmJiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVbaGVhZGVyLmpvaW5lZEZpbHRlclNvcnRPYmplY3RLZXlzXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwidGltZUZpbHRlclRvb2xUaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnQtdG9wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwibm9uLWVkaXQtdGltZS10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0ND1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJpbmRUaGVWYWx1ZVRvVG9vbFRpcCh0NCwgaGVhZGVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGlkZGVuKT1cImNsb3NlVG9vbHRpcCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxiciAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhlYWRlci5zaG93VG9vbHRpcEljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD1cIm5vLWZpbHRlci1zcGFjZVwiPjwvc3Bhbj48YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdsdXJWaW9sYXRpb25JbmZvVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cImx1clZpb2xhdGlvbkluZm9Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ0RSUidcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICptYXRDZWxsRGVmPVwibGV0IFJPV19EQVRBXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93U2tlbGV0b25Mb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5neC1za2VsZXRvbi1sb2FkZXIgY291bnQ9XCIxXCIgW3RoZW1lXT1cInsgaGVpZ2h0OiAnMTBweCcsIGRpc3BsYXk6ICdibG9jaycgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LXNrZWxldG9uLWxvYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93U2tlbGV0b25Mb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFST1dfREFUQVsnaGlkZScgKyBjb2x1bW5EZWYuaGVhZGVySW5mb1swXS5vYmplY3RLZXkgKyAnVGQnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5yb3dzcGFuXT1cIlJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvWzBdLm9iamVjdEtleSArICdSb3dzcGFuJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdWJsaW5lIG9mIGNvbHVtbkRlZi5oZWFkZXJJbmZvOyBsZXQgc3VibGluZUluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwic3VibGluZS50eXBlT2ZCb2R5RGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInSUNPTidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJST1dfREFUQS5pY29uQ2xhc3NcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidDSEVDS0JPWCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJST1dfREFUQVtzdWJsaW5lLm9iamVjdEtleV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Rpc2FibGUtY2hlY2tib3gnOiBST1dfREFUQVtzdWJsaW5lLmlzRGlzYWJsZWRLZXldIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC1jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RSb3coUk9XX0RBVEEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhUk9XX0RBVEFbc3VibGluZS5vYmplY3RLZXldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtdW5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlLWNoZWNrYm94JzogUk9XX0RBVEFbc3VibGluZS5pc0Rpc2FibGVkS2V5XSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RSb3coUk9XX0RBVEEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInUkFESU8nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWdyb3VwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJST1dfREFUQVsnUmFkaW9CdXR0b25Db25maWcnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiUk9XX0RBVEFbc3VibGluZS5vYmplY3RLZXldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ11bMF0uaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmFkaW9CdXR0b24gb2YgUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ107IGxldCBsYXN0ID0gbGFzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7eyByYWRpb0J1dHRvbi52YWx1ZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7IHJhZGlvQnV0dG9uLmNsYXNzIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpb0J1dHRvbkNsaWNrZWQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJPV19EQVRBLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpb0J1dHRvbi52YWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ11bMF0uaXNEaXNhYmxlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgcmFkaW9CdXR0b24ubGFiZWwgfX08L21hdC1yYWRpby1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxiciAqbmdJZj1cIiFsYXN0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBST1dfREFUQVtzdWJsaW5lLm9iamVjdEtleV0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmxpbmUub2JqZWN0S2V5ID09ICdTdGF0dXMnICYmIChST1dfREFUQVsnUmVtYXJrcyddICE9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtaSBtZGktaW5mby1vdXRsaW5lIHJlbWFya3MtdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cImNvbHVtbkluZm9Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInJlbWFya3MtaW5mby10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJndEdlbmVyYWxDb25maWcuY29tcG9uZW50ICE9ICdEUlInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IFJPV19EQVRBXCIgW3N0eWxlLmJhY2tncm91bmRdPVwiUk9XX0RBVEEuYmFja2dyb3VuZENvbG9yXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJST1dfREFUQS5ib3JkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie3tST1dfREFUQS5yb3dDbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyICpuZ0lmPVwic2hvd1NrZWxldG9uTG9hZGluZ1wiIGNvdW50PVwiMVwiIFt0aGVtZV09XCJ7IGhlaWdodDogJzEwcHgnLCBkaXNwbGF5OiAnYmxvY2snIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93U2tlbGV0b25Mb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGVEYXRhLmxlbmd0aCA+IDAgJiYgIShpc05vRGF0YVRvRGlzcGxheVN1YmplY3QkIHwgYXN5bmMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzaG93RWxsaXBzaXNUZXh0T25Ib3ZlciAqbmdGb3I9XCJsZXQgc3VibGluZSBvZiBjb2x1bW5EZWYuaGVhZGVySW5mbzsgbGV0IHN1YkxpbmVJbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS50eXBlT2ZCb2R5RGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0lDT04nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIhKHN0YXJyZWRJblByb2dyZXNzICYmIFJPV19EQVRBLm9yZGVySWQgPT0gc2VsZWN0ZWRTdGFycmVkT3JkZXJJZClcIiBbY2xhc3NdPVwiUk9XX0RBVEEuaWNvbkNsYXNzXCIgKGNsaWNrKT1cImljb25DbGlja2VkKFJPV19EQVRBLFJPV19EQVRBLmljb25DbGFzcylcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YXJyZWRJblByb2dyZXNzICYmIFJPV19EQVRBLm9yZGVySWQgPT0gc2VsZWN0ZWRTdGFycmVkT3JkZXJJZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1mb3ItYnV0dG9uLWRpcmVjdGl2ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2lyY3VsYXJQcm9ncmVzc0JhclwiPjwvbmctY29udGFpbmVyPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInU1ZHX0lDT04nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFubmEtY29yZS1hbm5hLWljb24tY29sdW1uIFtjb21wb25lbnROYW1lXT1cImd0R2VuZXJhbENvbmZpZy5jb21wb25lbnRcIiBbb2JqZWN0S2V5XT1cInN1YmxpbmUub2JqZWN0S2V5XCIgW2RhdGFPYmplY3RdPVwiUk9XX0RBVEFcIiAob25Db2x1bW5JY29uQ2xpY2tlZCk9XCJzdmdJY29uQ2xpY2tlZCgkZXZlbnQpXCI+PC9hbm5hLWNvcmUtYW5uYS1pY29uLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInVEVYVF9BQ1RJT05TJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nRm9yPVwibGV0IHRleHQgb2YgUk9XX0RBVEEudGV4dEFjdGlvbnNcIiAoY2xpY2spPVwidGV4dEFjdGlvbkNsaWNrZWQoUk9XX0RBVEEsdGV4dC5pZClcIiBbZGlzYWJsZWRdPVwidGV4dC5pc0Rpc2FibGVkXCIgY2xhc3M9XCJ7e3RleHQuY2xhc3N9fVwiPnt7dGV4dC5uYW1lfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInQ0hFQ0tCT1gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLm9iamVjdEtleV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzYWJsZS1jaGVja2JveCc6IFJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0uaXNEaXNhYmxlZEtleV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC1jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0T3JVbnNlbGVjdENoZWNrYm94KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJPV19EQVRBLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5vYmplY3RLZXldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXNhYmxlLWNoZWNrYm94JzogUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5pc0Rpc2FibGVkS2V5XVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0T3JVbnNlbGVjdENoZWNrYm94KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJPV19EQVRBLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidDTElDS0FCTEVfREFUQSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdWJsaW5lLm9iamVjdEtleSA9PSAnZGlzcGxheUJvb2tlZFVuaXRzJyAmJiBndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09ICdSQVRJTkcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjbGlja2FibGUtZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzcG90RGV0YWlsc0Rvd25sb2FkQ2xpY2tlZCgnREFUQVJPVycsIFJPV19EQVRBKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Rpc2FibGVkLWNsaWNrYWJsZS1kYXRhJzogZG93bmxvYWRJblByb2dyZXNzIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgUk9XX0RBVEEuZGlzcGxheUJvb2tlZFVuaXRzfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBzcG90LWRldGFpbHMtZG93bmxvYWQtaWNvbnNcIj5nZXRfYXBwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG93bmxvYWRJblByb2dyZXNzIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIFJPV19EQVRBLmludmVudG9yeUNvZGVJZCA9PSBzZWxlY3RlZEludmVudG9yeUlkRm9yRG93bmxvYWQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgUk9XX0RBVEEuZGVtb2dyYXBoaWMgPT0gc2VsZWN0ZWREZW1vZ3JhcGhpY0ZvckRvd25sb2FkIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjaXJjdWxhclByb2dyZXNzQmFyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgIT0gJ2Rlc2NyaXB0aW9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLm9iamVjdEtleV0gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN1YmxpbmUub2JqZWN0S2V5ID09ICdpbnZlbnRvcnlDb2RlJyAmJiBST1dfREFUQVsnaXNTZWxsZXJHcm91cCddICYmIGd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ1JBVElORycgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWkgbWRpLWluZm8tb3V0bGluZSBzZWxsZXItdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJzZWxsZXJIaWVyYXJjaHlUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbSBhdXRvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luZm89XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cImhpZXJhcmNoeS10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cImJpbmRUaGVWYWx1ZVRvU2VsbGVyR3JvdXBUb29sdGlwKFJPV19EQVRBLnNlbGxlckdyb3VwSGllcmFyY2h5LCBpbmZvKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cInN1YmxpbmUub2JqZWN0S2V5ID09ICdkaXNwbGF5Qm9va2VkQXZlcmFnZVJhdGluZycgJiYgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJyAmJiBST1dfREFUQVsnc2hvd1JhdGluZ0F2ZXJhZ2VJY29uJ10gXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWkgbWRpLWluZm8tb3V0bGluZSBzZWxsZXItdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20gYXV0b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJzZXRJc0RpZmZlcmVuY2UoUk9XX0RBVEEuaXNEaWZmZXJlbmNlTGVzc1RoYW4yNVBlcmNlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInBvc3RlZC1hdmctdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJwb3N0ZWRSYXRpbmdEaWZmZXJlbmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgPT0gJ2Rpc3BsYXlCb29rZWRBdmVyYWdlSW1wcmVzc2lvbicgJiYgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJyAmJiBST1dfREFUQVsnc2hvd0ltcHJlc3Npb25BdmVyYWdlSWNvbiddIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pIG1kaS1pbmZvLW91dGxpbmUgc2VsbGVyLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwic2V0SXNEaWZmZXJlbmNlKFJPV19EQVRBLmlzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJwb3N0ZWQtYXZnLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwicG9zdGVkSW1wRGlmZmVyZW5jZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgPT0gJ2Rlc2NyaXB0aW9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cIlJPV19EQVRBLmRlc2NyaXB0aW9uTWVzc2FnZSB8fCBST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsUmVmZXJlbmNlTnVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiUk9XX0RBVEEuZGVzY3JpcHRpb25NZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgUk9XX0RBVEEuZGVzY3JpcHRpb25NZXNzYWdlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsUmVmZXJlbmNlTnVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1haWwgUmVmOiB7eyBST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsUmVmZXJlbmNlTnVtIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cInt7IFJPV19EQVRBLmRlc2NyaXB0aW9uRGV0YWlsc1VybCB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJST1dfREFUQS5kZXNjcmlwdGlvbkRldGFpbHNVcmxUeXBlID09PSAnUERGJyB8fCBST1dfREFUQS5kZXNjcmlwdGlvbkRldGFpbHNVcmxUeXBlID09PSAnRVhDRUwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biB2aWV3RGV0YWlsc0FuZEVtYWlsQnRuXCI+RG93bmxvYWQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiUk9XX0RBVEEuYWN0aXZpdHluYW1lLnRvTG93ZXJDYXNlKCkgPT0gJ29yZGVyIG9uYm9hcmRlZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiUk9XX0RBVEEuZGVzY3JpcHRpb25EZXRhaWxzVXJsVHlwZSA9PT0gJ0xJTksnXCIgKGNsaWNrKT1cInZpZXdEZXRhaWxzQ2xpY2tlZChST1dfREFUQSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biB2aWV3RGV0YWlsc0FuZEVtYWlsQnRuIG9yZGVyLW9uYm9hcmRlZFwiPlZpZXcgZGV0YWlsczwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7eyBST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsVXJsIH19XCIgdGFyZ2V0PVwiX2JsYW5rXCIgKm5nSWY9XCJST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsVXJsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIHZpZXdEZXRhaWxzQW5kRW1haWxCdG5cIj5WaWV3IGVtYWlsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQgfCBhc3luYylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e251bGx9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGFubmEtY29yZS1uby1kYXRhLWxpYiBbd2lkdGhdPVwibm9EYXRhV2lkdGhcIiBbbWFyZ2luVG9wXT1cIm1hcmdpblRvcFwiICpuZ0lmPVwiKGlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQgfCBhc3luYylcIj4gPC9hbm5hLWNvcmUtbm8tZGF0YS1saWI+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBDaGVja2JveCB0ZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNmaWx0ZXJUb29sdGlwPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY29udGFpbmVyXCIgKm5nSWY9XCJzaG93RmlsdGVyVG9vbHRpcFRhYnNcIj5cclxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnZnVsbC13aWR0aCc6IGZpbHRlclRhYk9iamVjdHMubGVuZ3RoID09IDF9XCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmlsdGVyVGFiT2JqZWN0c1wiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImZpbHRlci10YWJcIiBbdGl0bGVdPVwiZGF0YS5sYWJlbFwiIChjbGljayk9XCJwb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8oZGF0YSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPT0gZGF0YS5rZXl9XCIgKm5nSWY9XCJmaWx0ZXJUYWJPYmplY3RzLmxlbmd0aCA+IDBcIj57eyBkYXRhLmxhYmVsIH19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1zb3J0XCIgKm5nSWY9XCJzaG93U29ydENvbXBvbmVudFwiPlxyXG4gICAgICAgIDxhbm5hLWNvcmUtc29ydC1saWIgIFtuZ0NsYXNzXT1cInsnbm8tYm90dG9tLWJvcmRlcic6ICFzaG93RmlsdGVyQ29tcG9uZW50fVwiXHJcbiAgICAgICAgKHNvcnRPcHRpb25DbGlja2VkKT1cInN0b3JlU29ydFR5cGVJblRlbXBWYXJpYWJsZSgkZXZlbnQpXCIgW3NvcnRPYmplY3RLZXldPVwiYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpb1wiPjwvYW5uYS1jb3JlLXNvcnQtbGliPlxyXG4gICAgPC9kaXY+XHJcbiAgICBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZpbHRlci10ZXh0LWJ0blwiIFtkaXNhYmxlZF09XCJkaXNhYmxlQ2xlYXJBbGxcIiAoY2xpY2spPVwidW5DaGVja0FsbENoZWNrYm94KClcIj5DbGVhciBhbGw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZpbHRlci10ZXh0LWJ0blwiIFtkaXNhYmxlZF09XCJkaXNhYmxlU2VsZWN0QWxsXCIgKGNsaWNrKT1cInNlbGVjdEFsbENoZWNrYm94KClcIj5TZWxlY3QgYWxsPC9idXR0b24+XHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIDxwIGNsYXNzPVwic2VhcmNoLWJveFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1pIG1kaS1zZWFyY2ggc2VhcmNoLWljb24gc2VhcmNoLWljb24tcG9zaXRpb25cIj48L2k+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDBweFwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaEl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VhcmNoRm9yVGhlSXRlbSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWNsb3NlIHNlYXJjaC1iYXItY2xvc2VcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGUtY2xvc2UtaWNvbic6ICghc2VhcmNoSXRlbSB8fCBzZWFyY2hJdGVtLmxlbmd0aCA9PSAwKSB9XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VhcmNoZWRJdGVtKClcIj48L2k+XHJcblxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246cmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgPCEtLSBUcmFjayBCeSBmdW5jIC0tPlxyXG4gICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IGl0ZW1TaXplPVwiMThcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodE9mQ2hlY2tib3hUb29sdGlwRmlsdGVyXCIgY2xhc3M9XCJkcm9wZG93bi1kYXRhLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPHAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgb3B0aW9uIG9mIHRvb2x0aXBPcHRpb25zXCIgY2xhc3M9XCJpbnB1dCBleGFtcGxlLWl0ZW1cIiAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RDaGVja2JveChvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvcHRpb24uaXNTZWxlY3RlZFwiIHJvbGU9XCJidXR0b25cIiBjbGFzcz1cIm1pIG1kaS1jaGVjay1ib3ggY2hlY2stYm94XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIW9wdGlvbi5pc1NlbGVjdGVkXCIgcm9sZT1cImJ1dHRvblwiIGNsYXNzPVwibWkgbWRpLWNoZWNrLWJveC1vdXRsaW5lLWJsYW5rIGNoZWNrLWJveCB1bmNoZWNrZWRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRhXCIgdGl0bGU9XCJ7eyBvcHRpb24udmFsdWUgfX1cIiBbaW5uZXJIVE1MXT1cIm9wdGlvbi5sYWJlbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBwb2ludGVyLWV2ZW50czpub25lXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlQ2hlY2tib3hGaWx0ZXIoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBkaXNhYmxlQ2hlY2tib3hBcHBseSB9XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5RmlsdGVycygpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVDaGVja2JveEFwcGx5XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIEFwcGx5XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd0ZpbHRlckNvbXBvbmVudFwiPih7eyBzZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID09IHRvb2x0aXBPcHRpb25zLmxlbmd0aCAmJiB0b29sdGlwT3B0aW9ucy5sZW5ndGggIT0gMCAmJiAhc2VhcmNoSXRlbT8gJ0FsbCc6IHNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgfX0pPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFNsaWRlciB0ZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNzbGlkZXJUb29sVGlwPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY29udGFpbmVyXCIgKm5nSWY9XCJzaG93RmlsdGVyVG9vbHRpcFRhYnNcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpbHRlclRhYk9iamVjdHNcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJmaWx0ZXItdGFiXCIgW3RpdGxlXT1cImRhdGEubGFiZWxcIiAoY2xpY2spPVwicG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGRhdGEpXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvID09IGRhdGEua2V5fVwiICpuZ0lmPVwiZmlsdGVyVGFiT2JqZWN0cy5sZW5ndGggPiAwXCI+e3sgZGF0YS5sYWJlbCB9fTwvcD4gICBcclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8YnV0dG9uIGNsYXNzPVwiY29sdW1uLWNsZWFyLWFsbCBhbGlnbi1jZW50ZXJcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5cclxuICAgICAgICBDbGVhciBmaWx0ZXJcclxuICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICBcclxuICAgIDxhbm5hLWNvcmUtc29ydC1saWIgKm5nSWY9XCJzaG93U29ydENvbXBvbmVudFwiIFtuZ0NsYXNzXT1cInsnbm8tYm90dG9tLWJvcmRlcic6ICFzaG93RmlsdGVyQ29tcG9uZW50fVwiXHJcbiAgICAoc29ydE9wdGlvbkNsaWNrZWQpPVwic3RvcmVTb3J0VHlwZUluVGVtcFZhcmlhYmxlKCRldmVudClcIiBbc29ydE9iamVjdEtleV09XCJhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXCI+PC9hbm5hLWNvcmUtc29ydC1saWI+XHJcbiAgICBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5DbGVhciBmaWx0ZXI8L2J1dHRvbj5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1pbi1tYXhDb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2xpZGVyLXRleHRcIlxyXG4gICAgICAgICAgICAgICAgc3RlcD1cInt7IHNsaWRlckZpbHRlclRleHRCb3hTdGVwIH19XCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2xpZGVyTWluVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibWluVmFsdWVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydyZWQtYm9yZGVyJzogc2hvd1NsaWRlck1pblZhbHVlRXJyb3J9XCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTWluXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPHNwYW4+VG88L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNsaWRlci10ZXh0XCJcclxuICAgICAgICAgICAgICAgIHN0ZXA9XCJ7eyBzbGlkZXJGaWx0ZXJUZXh0Qm94U3RlcCB9fVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNsaWRlck1heFZhbHVlXCJcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1heFZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncmVkLWJvcmRlcic6IHNob3dTbGlkZXJNYXhWYWx1ZUVycm9yfVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk1heFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlYmFyLXNsaWRlclwiPlxyXG4gICAgICAgICAgICA8bmd4LXNsaWRlclxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItc2xpZGVyXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzbGlkZXJNaW5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBbaGlnaFZhbHVlXT1cInNsaWRlck1heFZhbHVlXCJcclxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxyXG4gICAgICAgICAgICA+PC9uZ3gtc2xpZGVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsU2xpZGVyRmlsdGVyKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uIH1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlTbGlkZXJGaWx0ZXIoKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlU2xpZGVyQXBwbHlCdXR0b25cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgQXBwbHlcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBEYXRlIFBpY2tlciBUZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNkYXRlUGlja2VyVG9vbHRpcD5cclxuICAgIDxkaXYgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIiAqbmdJZj1cInNob3dGaWx0ZXJUb29sdGlwVGFic1wiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmlsdGVyVGFiT2JqZWN0c1wiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImZpbHRlci10YWJcIiBbdGl0bGVdPVwiZGF0YS5sYWJlbFwiIChjbGljayk9XCJwb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8oZGF0YSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPT0gZGF0YS5rZXl9XCIgKm5nSWY9XCJmaWx0ZXJUYWJPYmplY3RzLmxlbmd0aCA+IDBcIj57eyBkYXRhLmxhYmVsIH19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGFubmEtY29yZS1zb3J0LWxpYiAqbmdJZj1cInNob3dTb3J0Q29tcG9uZW50XCIgW25nQ2xhc3NdPVwieyduby1ib3R0b20tYm9yZGVyJzogIXNob3dGaWx0ZXJDb21wb25lbnR9XCJcclxuICAgIChzb3J0T3B0aW9uQ2xpY2tlZCk9XCJzdG9yZVNvcnRUeXBlSW5UZW1wVmFyaWFibGUoJGV2ZW50KVwiIFtzb3J0T2JqZWN0S2V5XT1cImFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW9cIj48L2FubmEtY29yZS1zb3J0LWxpYj5cclxuICAgIFxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWx0ZXJDb21wb25lbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5cclxuICAgICAgICAgICAgICAgIENsZWFyIGZpbHRlclxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGFubmEtY29yZS1jYWxlbmRhci1maWx0ZXItbGliXHJcbiAgICAgICAgICAgICAgICBbbWluRGF0ZV09XCJjYWxlbmRhck1pbkVuYWJsZWREYXRlXCJcclxuICAgICAgICAgICAgICAgIFttYXhEYXRlXT1cImNhbGVuZGFyTWF4RW5hYmxlZERhdGVcIlxyXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkRnJvbURhdGVdPVwic2VsZWN0ZWRNaW5EYXRlXCJcclxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZFRvRGF0ZV09XCJzZWxlY3RlZE1heERhdGVcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkRGF0ZSkgPSBcImNhbGVuZGFyRGF0ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2VsZWN0ZWRMYWJlbFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9hbm5hLWNvcmUtY2FsZW5kYXItZmlsdGVyLWxpYj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsSW5EYXRlRmlsdGVyKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFwcGx5RGF0ZUZpbHRlcigpXCIgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG4gfVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVDYWxlbmRhckFwcGx5QnRuXCI+QXBwbHk8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgXHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFdlZWsgUGlja2VyIFRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI3dlZWtQaWNrZXJUb29sVGlwPlxyXG4gICAgPGRpdiBjbGFzcz1cIndlZWtwaWNrZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGFubmEtY29yZS13ZWVrLWNhbGVuZGFyLWZpbHRlci1saWJcclxuICAgICAgICAgICAgW3dlZWstY2FsZW5kYXItY29uZmlnXT1cImd0R2VuZXJhbENvbmZpZy5tdWx0aVdlZWtQaWNrZXJDb25maWdcIlxyXG4gICAgICAgICAgICAoYXBwbHkpPVwiYXBwbHlXZWVrRmlsdGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICBbZnJvbS1kYXRlXT1cImNhbGVuZGFyTWluRW5hYmxlZERhdGVcIlxyXG4gICAgICAgICAgICBbdG8tZGF0ZV09XCJjYWxlbmRhck1heEVuYWJsZWREYXRlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9hbm5hLWNvcmUtd2Vlay1jYWxlbmRhci1maWx0ZXItbGliPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFRpbWUgRmlsdGVyIFRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI3RpbWVGaWx0ZXJUb29sVGlwPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY29udGFpbmVyXCIgKm5nSWY9XCJzaG93RmlsdGVyVG9vbHRpcFRhYnNcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpbHRlclRhYk9iamVjdHNcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJmaWx0ZXItdGFiXCIgW3RpdGxlXT1cImRhdGEubGFiZWxcIiAoY2xpY2spPVwicG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGRhdGEpXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvID09IGRhdGEua2V5fVwiICpuZ0lmPVwiZmlsdGVyVGFiT2JqZWN0cy5sZW5ndGggPiAwXCI+e3sgZGF0YS5sYWJlbCB9fTwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxhbm5hLWNvcmUtc29ydC1saWIgKm5nSWY9XCJzaG93U29ydENvbXBvbmVudFwiIFtuZ0NsYXNzXT1cInsnbm8tYm90dG9tLWJvcmRlcic6ICFzaG93RmlsdGVyQ29tcG9uZW50fVwiXHJcbiAgICAoc29ydE9wdGlvbkNsaWNrZWQpPVwic3RvcmVTb3J0VHlwZUluVGVtcFZhcmlhYmxlKCRldmVudClcIiBbc29ydE9iamVjdEtleV09XCJhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXCI+PC9hbm5hLWNvcmUtc29ydC1saWI+XHJcbiAgICBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5DbGVhciBmaWx0ZXI8L2J1dHRvbj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidGltZS1maWx0ZXItY2hlY2tib3hlc1wiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnU1BPVERFVEFJTFMnIHx8IGd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ0VYQ0xVREVJTlZFTlRPUllQT1BVUCcgfHwgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJ1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tIE11bHRpIHRpbWUgb3B0aW9uIGNoZWNrYm94IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwicGFkZGluZzogMC41cmVtIDAgMC41cmVtIDAuNXJlbVwiICpuZ0lmPVwic2hvd011bHRpVGltZUNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RNdWx0aVRpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhbXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtdW5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0T3JVbnNlbGVjdE11bHRpVGltZUNoZWNrYm94KClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAycHhcIj5JbmNsdWRlIE11bHRpPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBaZXJvIHRpbWUgb3B0aW9uIGNoZWNrYm94IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwicGFkZGluZzogMC41cmVtIDAgMC41cmVtIDAuNXJlbVwiICpuZ0lmPVwic2hvd1plcm9UaW1lQ2hlY2tib3hcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ6ZXJvVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0WmVyb1RpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhemVyb1RpbWVDaGVja2JveENoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC11bmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0WmVyb1RpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4XCI+SW5jbHVkZSBaZXJvPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBFbnRlciB0aW1lIHJhbmdlIG9wdGlvbiBjaGVja2JveCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cInBhZGRpbmc6IDAuNXJlbSAwIDAuNXJlbSAwLjVyZW1cIiAqbmdJZj1cInNob3dFbnRlclRpbWVDaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVudGVyVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0RW50ZXJUaW1lQ2hlY2tib3goKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tfYm94XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWVudGVyVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RFbnRlclRpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4XCI+RW50ZXIgdGltZSByYW5nZTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtbGFiZWwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD5Gcm9tPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIG51bWJlcklucHV0XCIgW25nQ2xhc3NdPVwieydlcnJvci1ib3JkZXInOiBzdGFydFRpbWVIb3VyRXJyfVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRGcm9tVGltZVswXVwiIHR5cGU9XCJ0ZXh0XCIgKG5nTW9kZWxDaGFuZ2UpPVwic3RhcnRUaW1lSG91ckNoYW5nZSgkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLXRyaWFuZ2xlIHVwd2FyZFwiIChjbGljayk9XCJjaGFuZ2VTdGFydFRpbWVIb3VyKHRydWUpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLXRyaWFuZ2xlIGRvd253YXJkXCIgKGNsaWNrKT1cImNoYW5nZVN0YXJ0VGltZUhvdXIoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj46PC9zcGFuPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbnVtYmVySW5wdXRcIiBbbmdDbGFzc109XCJ7J2Vycm9yLWJvcmRlcic6IHN0YXJ0VGltZU1pbkVycn1cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRnJvbVRpbWVbMV1cIiB0eXBlPVwidGV4dFwiIChuZ01vZGVsQ2hhbmdlKT1cInN0YXJ0VGltZU1pbkNoYW5nZSgkZXZlbnQpXCIvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktdHJpYW5nbGUgdXB3YXJkXCIgKGNsaWNrKT1cImNoYW5nZVN0YXJ0VGltZU1pbnV0ZSh0cnVlKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS10cmlhbmdsZSBkb3dud2FyZFwiIChjbGljayk9XCJjaGFuZ2VTdGFydFRpbWVNaW51dGUoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRnJvbVRpbWVbMl1cIiAobmdNb2RlbENoYW5nZSk9XCJkaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJBTVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BTTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cIlBNXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlBNPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtbGFiZWwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD5UbzwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBudW1iZXJJbnB1dFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUb1RpbWVbMF1cIiBbbmdDbGFzc109XCJ7J2Vycm9yLWJvcmRlcic6IGVuZFRpbWVIb3VyRXJyfVwiIChuZ01vZGVsQ2hhbmdlKT1cImVuZFRpbWVIb3VyQ2hhbmdlKCRldmVudClcIiB0eXBlPVwidGV4dFwiIC8+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcnJvdy1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS10cmlhbmdsZSB1cHdhcmRcIiAoY2xpY2spPVwiY2hhbmdlRW5kVGltZUhvdXIodHJ1ZSlcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktdHJpYW5nbGUgZG93bndhcmRcIiAoY2xpY2spPVwiY2hhbmdlRW5kVGltZUhvdXIoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj46PC9zcGFuPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbnVtYmVySW5wdXRcIiBbbmdDbGFzc109XCJ7J2Vycm9yLWJvcmRlcic6IGVuZFRpbWVNaW5FcnJ9XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRvVGltZVsxXVwiIChuZ01vZGVsQ2hhbmdlKT1cImVuZFRpbWVNaW5DaGFuZ2UoJGV2ZW50KVwiIHR5cGU9XCJ0ZXh0XCIgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLXRyaWFuZ2xlIHVwd2FyZFwiIChjbGljayk9XCJjaGFuZ2VFbmRUaW1lTWludXRlKHRydWUpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLXRyaWFuZ2xlIGRvd253YXJkXCIgKGNsaWNrKT1cImNoYW5nZUVuZFRpbWVNaW51dGUoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVG9UaW1lWzJdXCIgKG5nTW9kZWxDaGFuZ2UpPVwiZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiQU1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QU08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJQTVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5QTTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlVGltZUZpbHRlcigpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gfVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhcHBseVRpbWVGaWx0ZXJzKClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0blwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICBBcHBseVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbHVtbkluZm9Ub29sdGlwPlxyXG4gIDxwIHN0eWxlPVwicGFkZGluZzogMC41cmVtOyBjb2xvcjogYmxhY2s7d2hpdGUtc3BhY2U6IG5vd3JhcDtcIj5UaGlzIHByZWVtcHRpb24gaXMgcmVqZWN0ZWQgYW5kIG5vdCBtYXJrZWQgZm9yIGNyZWRpdC48L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3JhdGluZ0luZm9Ub29sdGlwPlxyXG4gICAgPHAgY2xhc3M9XCJmaXJzdC1yb3dcIj5TaG93cyAnQm9va2VkIFJhdGluZycgZm9yIFByZWVtcHRpb25zICYgTWFrZUdvb2QgT2ZmZXJlZCBzcG90KHMpLjwvcD5cclxuICAgIDxwIGNsYXNzPVwic2Vjb25kLXJvd1wiPlNob3dzICdQcm9qZWN0ZWQgUmF0aW5nJyBmb3IgQURVIE9mZmVyZWQgc3BvdChzKS48L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2ltcHNJbmZvVG9vbHRpcD5cclxuICAgIDxwIGNsYXNzID1cImZpcnN0LXJvd1wiID5TaG93cyAnQm9va2VkIElNUFMnIGZvciBQcmVlbXB0aW9ucyAmIE1ha2VHb29kIE9mZmVyZWQgc3BvdChzKS48L3A+XHJcbiAgICA8cCBjbGFzcz1cInNlY29uZC1yb3dcIiA+U2hvd3MgJ1Byb2plY3RlZCBJTVBTJyBmb3IgQURVIE9mZmVyZWQgc3BvdChzKS48L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Nwb3RzQ29sdW1uRXF1aXZhbGl6YXRpb25NZXNzYWdlVG9vbHRpcD5cclxuICAgIDxwIGNsYXNzPVwic3BvdC1jb2x1bW4tdG9vbHRpcC1tZXNzYWdlXCIgPlRoaXMgY29uc2lzdHMgb2YgZXF1aXZhbGl6ZWQgc3BvdHMgYW5kIHVuLWVxdWl2YWxpemVkIFBhaWQgUHJvZ3JhbXMgJiB1bi1lcXVpdmFsaXplZCBOb24tc3BvdHMuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNyYXRlSW5mb1Rvb2x0aXA+XHJcbiAgICA8cCBjbGFzcyA9XCJmaXJzdC1yb3dcIiA+U2hvd3MgJ0Jvb2tlZCBSYXRlJyBmb3IgUHJlZW1wdGlvbnMgJiBNYWtlR29vZCBPZmZlcmVkIHNwb3QocykuPC9wPlxyXG4gICAgPHAgY2xhc3M9XCJzZWNvbmQtcm93XCIgPlNob3dzICdQcm9qZWN0ZWQgJCBWYWx1ZScgZm9yIEFEVSBPZmZlcmVkIHNwb3QocykuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzZWxsZXJIaWVyYXJjaHlUb29sdGlwPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGxlckdyb3VwSGllcmFyY2h5Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcyA9IFwiaGllcmFyY2h5LXRhYmxlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInNlbGxlci1oaWVyYXJjaHktdGFibGVcIj5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aD4jPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+SW52ZW50b3J5IENvZGVzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+UHJvZ3JhbS9EZXNjcmlwdGlvbjwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygc2VsbGVyR3JvdXBIaWVyYXJjaHk7IGxldCB0b29sdGlwSW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD57eyB0b29sdGlwSW5kZXggKyAxIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGRhdGEuSW52ZW50b3J5Q29kZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZGF0YS5Qcm9ncmFtIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxsZXJHcm91cEhpZXJhcmNoeS5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwiY29sb3I6ICMwMDBcIj5TZWxsZXIgZ3JvdXAgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBpbnZlbnRvcnkgY29kZTwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNsdXJWaW9sYXRpb25JbmZvVG9vbHRpcD5cclxuICAgIDxwIGNsYXNzID1cImZpcnN0LXJvd1wiID5UaGUgdmFsdWVzIGFyZSBmb3IgdGhlIGVudGlyZSB3ZWVrLjwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcG9zdGVkUmF0aW5nRGlmZmVyZW5jZT5cclxuICAgIDxwIGNsYXNzPVwiZGlmZmVyZW5jZS10ZXh0XCI+VGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBwb3N0ZWQgYW5kIGJvb2tlZCBhdmVyYWdlIHJhdGluZyBpcyB7e2lzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50ID8gJ2xlc3MnIDogJ21vcmUnfX0gdGhhbiAyNSUuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNwb3N0ZWRJbXBEaWZmZXJlbmNlPlxyXG4gICAgPHAgY2xhc3M9XCJkaWZmZXJlbmNlLXRleHRcIj5UaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHBvc3RlZCBhbmQgYm9va2VkIGF2ZXJhZ2UgaW1wcmVzc2lvbiBpcyB7e2lzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50ID8gJ2xlc3MnIDogJ21vcmUnfX0gdGhhbiAyNSUuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNvbmdvaW5nUmV2Qm9va2VkQ29sdW1uVG9vbHRpcD5cclxuICAgIDxwPlRoZSBCb29rZWQgJCB2YWx1ZSwgU3BvdHMsIEdSUCwgQ1BQLCBJTVBTLCBDUE0gY29ycmVzcG9uZHMgb24gdGhlIGxhc3QgcGVybWFuZW50IHJldmlzaW9uIGdlbmVyYXRlZDwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29tcGxldGVkUmV2Qm9va2VkQ29sdW1uVG9vbHRpcD5cclxuICAgIDxwPlRoZSBCb29rZWQgJCB2YWx1ZSBjb3JyZXNwb25kcyBvbiB0aGUgbGFzdCBwZXJtYW5lbnQgcmV2aXNpb24gZ2VuZXJhdGVkPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjaXJjdWxhclByb2dyZXNzQmFyPlxyXG4gICAgPGNpcmNsZS1wcm9ncmVzc1xyXG4gICAgICAgIFtwZXJjZW50XT1cInBlcmNlbnREb25lXCJcclxuICAgICAgICBbcmFkaXVzXT1cIjVcIlxyXG4gICAgICAgIFtzaG93VGl0bGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtzaG93VW5pdHNdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtzaG93U3VidGl0bGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtvdXRlclN0cm9rZVdpZHRoXT1cIjNcIlxyXG4gICAgICAgIFtpbm5lclN0cm9rZVdpZHRoXT1cIjNcIlxyXG4gICAgICAgIFtzcGFjZV09XCItM1wiXHJcbiAgICAgICAgW291dGVyU3Ryb2tlQ29sb3JdPVwiJyMyNjhiZmYnXCJcclxuICAgICAgICBbaW5uZXJTdHJva2VDb2xvcl09XCInI2Q1ZDVkNSdcIlxyXG4gICAgICAgIFthbmltYXRpb25EdXJhdGlvbl09XCIxMFwiXHJcbiAgICA+PC9jaXJjbGUtcHJvZ3Jlc3M+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
1748
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWdlbmVyaWMtdGFibGUtbGliL2NvbXBvbmVudHMvYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FubmEtY29yZS9zcmMvbGliL2FubmEtZ2VuZXJpYy10YWJsZS1saWIvY29tcG9uZW50cy9hbm5hLW5vbi1lZGl0YWJsZS1nZW5lcmljLXRhYmxlL2FubmEtbm9uLWVkaXRhYmxlLWdlbmVyaWMtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsNEJBQTRCO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBNEIsaUJBQWlCLEVBQWdDLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVNLGdDQUFnQztBQUNoQyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFLbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFlLE1BQU0sc0VBQXNFLENBQUM7QUFJOUgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUMvRixPQUFPLEVBQUUs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LHFCQUFxQjtzQkFBakQsWUFBWTt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbi8vIEFuZ3VsYXIgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlcywgQ2hhbmdlRGV0ZWN0b3JSZWYsIEVsZW1lbnRSZWYsIEFmdGVyVmlld0NoZWNrZWQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vLyBUaGlyZCBwYXJ0eSBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuaW1wb3J0IHsgT3B0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyLXNsaWRlci9uZ3gtc2xpZGVyJztcclxuaW1wb3J0IHsgY2xvbmVEZWVwLCBpc0VxdWFsLCBtYXAsIHVuaXEsIHNvcnRCeSB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcclxuXHJcblxyXG4vL3N1Yi1lbnRyaWVzIG9mIGFubmEgbGliIGltcG9ydCBzdGF0ZW1lbnRcclxuaW1wb3J0IHsgSUd0R2VuZXJhbENvbmZpZywgSUd0VGFibGVIZWFkZXIsIElIZWFkZXJJbmZvLCBJVG90YWxSb3dJbmZvIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtbm9uLWVkaXRhYmxlLWd0LW1vZGVscyc7XHJcbmltcG9ydCB7IEFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UsIE5nYkRhdGVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvc2VydmljZXMvYW5uYS1kYXRlLXRpbWUtZm9ybWF0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJV2Vla0NhbGVuZGFyIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtZ2xvYmFsLWRyb3Bkb3duLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IEd0Q29sdW1uSWNvbkVtaXR0ZWREYXRhLCBSYXRpbmdTZWxsZXJHcm91cEhpZXJhcmNoeSwgIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvbW9kZWxzL2FubmEtZ2VuZXJpYy1kYXRhLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBTb3J0VHlwZSB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL21vZGVscy9hbm5hLXNvcnQubW9kZWwnO1xyXG5pbXBvcnQgeyByYWRpb0J1dHRvbk1vZGVsLCBUb29sdGlwTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9tb2RlbHMvYW5uYS10b29sdGlwLm1vZGVsJztcclxuaW1wb3J0IHsgQW5uYVNvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYW5uYS1jb3JlLXNoYXJlZC1saWIvc2VydmljZXMvYW5uYS1zb3J0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbm5hRmlsdGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtZmlsdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbm5hR2VuZXJpY1RhYmxlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FubmEtY29yZS1zaGFyZWQtbGliL3NlcnZpY2VzL2FubmEtZ2VuZXJpYy10YWJsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhbm5hLWNvcmUtbm9uLWVkaXRhYmxlLWdlbmVyaWMtdGFibGUtbGliJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYW5uYS1ub24tZWRpdGFibGUtZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbm5hTm9uRWRpdGFibGVHZW5lcmljVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcblxyXG4gIEBJbnB1dCgpIHNob3dTa2VsZXRvbkxvYWRpbmc6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgdGFibGVIZWFkZXJzOiBJR3RUYWJsZUhlYWRlcltdO1xyXG4gIEBJbnB1dCgpIHRhYmxlRGF0YTogYW55W107XHJcbiAgQElucHV0KCkgY2xvbmVkVGFibGVEYXRhOiBhbnlbXTtcclxuICBASW5wdXQoKSBudW1iZXJPZlNrZWxldG9uUm93czogbnVtYmVyW107XHJcbiAgQElucHV0KCkgbnVtYmVyT2ZTa2VsZXRvbkNvbHVtbnM6IG51bWJlcltdW107XHJcbiAgQElucHV0KCkgZ3RHZW5lcmFsQ29uZmlnOiBJR3RHZW5lcmFsQ29uZmlnO1xyXG4gIEBJbnB1dCgpIHRvdGFsUm93SW5mbz86IElUb3RhbFJvd0luZm9bXTtcclxuICBASW5wdXQoKSBndERpbWVuc2lvbjogeyByb3dIZWlnaHQ6IG51bWJlciwgdGFibGVIZWlnaHQ6IHN0cmluZywgaGVhZGVySGVpZ2h0OiBudW1iZXIgfTtcclxuICBASW5wdXQoKSB0YWJsZUNsYXNzOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbWF4aW11bVJvd3NXaGljaENhbkJlUmVuZGVyZWRXaXRob3V0U2Nyb2xsOiBudW1iZXIgPSA1O1xyXG4gIEBJbnB1dCgpIGxpbWl0OiBudW1iZXIgPSAzMDsgXHJcbiAgQElucHV0KCkgaW5jbHVkZUJvcmRlckluVGFibGVIZWlnaHQ6IGJvb2xlYW4gPSB0cnVlOyBcclxuICBASW5wdXQoKSBkb3dubG9hZEluUHJvZ3Jlc3M6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcGVyY2VudERvbmU6IG51bWJlcjtcclxuICBASW5wdXQoKSBzdGFycmVkSW5Qcm9ncmVzczogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpIHRvZ2dsZUNoZWNrYm94ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB0b2dnbGVSb3dDaGVja2JveCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdG9nZ2xlSGVhZGVyQ2hlY2tib3ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHVuZG9JY29uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyQXBwbGllZFRvVGFibGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNvcnRpbmdBcHBsaWVkVG9UYWJsZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93Q2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmFkaW9CdXR0b25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY29sdW1uRmlsdGVyT3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjb2x1bW5GaWx0ZXJDbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGd0SWNvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGd0U1ZHSWNvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGd0VGV4dEFjdGlvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGd0Vmlld0RldGFpbENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRvd25sb2FkU3BvdERldGFpbHMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG5cclxuICB0YWJsZURhdGFXcmFwcGVyOiBhbnlbXTtcclxuICByb3dDaGVja2VkOiBib29sZWFuO1xyXG4gIGlzQWxsUm93c0NoZWNrZWQ6IGJvb2xlYW47XHJcbiAgbm9EYXRhV2lkdGg6IHN0cmluZyA9IFwiNTUlXCI7XHJcbiAgbWFya2VkRm9yQ3JlZGl0U3RhdHVzOiBzdHJpbmc7XHJcbiAgbWFya2VkRm9yTUdTdGF0dXM6IHN0cmluZztcclxuXHJcbiAgLy9Tb3J0IGFuZCBGaWx0ZXJcclxuICB0b29sVGlwZGF0YTogYW55O1xyXG4gIHRlbXBUb29sdGlwRGF0YTogYW55O1xyXG4gIHRvb2x0aXBSYWRpb1RleHRNYXA6IE1hcDxhbnksIGFueT47XHJcbiAgZmlsdGVyVGFiT2JqZWN0czogYW55W107XHJcbiAgdG9vbHRpcDogYW55O1xyXG4gIGNsb25lZFRvb2x0aXBEYXRhOiBhbnk7XHJcbiAgY2xvbmVkVG9vbHRpcFNlbGVjdGVkTWFwRGF0YTogYW55O1xyXG4gIHNlYXJjaEJhcjogc3RyaW5nO1xyXG4gIGRpc2FibGVDbGVhckFsbEJ0bjogYm9vbGVhbiA9IHRydWU7XHJcbiAgZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuOiBib29sZWFuID0gdHJ1ZTtcclxuICBhbGxTZWxlY3RlZCA9IDA7XHJcbiAgc2hvd0FsbDogYm9vbGVhbjtcclxuICBkaXNhYmxlQ2hlY2tib3hBcHBseTogYm9vbGVhbjtcclxuICBkaXNhYmxlU2xpZGVyQXBwbHlCdXR0b246IGJvb2xlYW47XHJcbiAgZGlzYWJsZVRpbWVBcHBseUJ1dHRvbjogYm9vbGVhbjtcclxuXHJcbiAgLy8gU2xpZGVyIEZpbHRlclxyXG4gIHNsaWRlck1pblZhbHVlOiBudW1iZXI7XHJcbiAgc2xpZGVyTWF4VmFsdWU6IG51bWJlcjtcclxuICBvcHRpb25zOiBPcHRpb25zID0ge1xyXG4gICAgZmxvb3I6IDAsXHJcbiAgICBjZWlsOiAwLFxyXG4gICAgc3RlcDogMC4xXHJcbiAgfTtcclxuICBzbGlkZXJWYWx1ZTogeyBtaW46IG51bWJlciwgbWF4OiBudW1iZXIgfTtcclxuICBzbGlkZXJGaWx0ZXJUZXh0Qm94U3RlcDogc3RyaW5nO1xyXG4gIHNsaWRlckVudGVyZWRNaW5WYWx1ZTogbnVtYmVyO1xyXG4gIHNsaWRlckVudGVyZWRNYXhWYWx1ZTogbnVtYmVyO1xyXG5cclxuICAvLyBDYWxlbmRhciBGaWx0ZXJcclxuICBjYWxlbmRhck1pbkVuYWJsZWREYXRlOiBOZ2JEYXRlVHlwZTtcclxuICBjYWxlbmRhck1heEVuYWJsZWREYXRlOiBOZ2JEYXRlVHlwZTtcclxuICBzZWxlY3RlZE1pbkRhdGU6IE5nYkRhdGVUeXBlO1xyXG4gIHNlbGVjdGVkTWF4RGF0ZTogTmdiRGF0ZVR5cGU7XHJcblxyXG4gIC8vV2VlayBGaWx0ZXJcclxuICBtdWx0aVdlZWtQaWNrZXJDb25maWc6IElXZWVrQ2FsZW5kYXI7XHJcblxyXG4gIC8vVGltZSBGaWx0ZXJcclxuICBzZWxlY3RlZEZyb21UaW1lOiBhbnlbXTtcclxuICBzZWxlY3RlZFRvVGltZTogYW55W107XHJcbiAgY2xvbmVkU2VsZWN0ZWRGcm9tVGltZTogYW55O1xyXG4gIGNsb25lZFNlbGVjdGVkVG9UaW1lOiBhbnk7XHJcbiAgZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0bjogYm9vbGVhbjtcclxuICB0YWJsZUNvbHVtbnM6IHN0cmluZ1tdID0gW107XHJcbiAgdG90YWxSb3dDb2x1bW5zOiBzdHJpbmdbXSA9IG51bGw7XHJcbiAgc2hvd011bHRpVGltZUNoZWNrYm94OiBib29sZWFuO1xyXG4gIHNob3daZXJvVGltZUNoZWNrYm94OiBib29sZWFuO1xyXG4gIHNob3dFbnRlclRpbWVDaGVja2JveDogYm9vbGVhbjtcclxuICBtdWx0aVRpbWVDaGVja2JveENoZWNrZWQ6IGJvb2xlYW47XHJcbiAgemVyb1RpbWVDaGVja2JveENoZWNrZWQ6IGJvb2xlYW47XHJcbiAgZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkOiBib29sZWFuO1xyXG4gIGJpbmRWYWx1ZUZ1bmNDYWxsZWQ6IGJvb2xlYW47XHJcblxyXG4gIGhpZXJhcmNoeVRvb2x0aXA6IHsgb3BlbjogKCkgPT4gdm9pZDsgY2xvc2U6ICgpID0+IHZvaWQ7IH07XHJcbiAgc2VsbGVyR3JvdXBIaWVyYXJjaHk6IFJhdGluZ1NlbGxlckdyb3VwSGllcmFyY2h5W107XHJcbiAgc2hvd0ZpbHRlclRvb2x0aXBUYWJzOiBib29sZWFuOyAvL0NoYW5nZSB0aGUgTmFtZVxyXG5cclxuICBpc1Njcm9sbGVkTGVmdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHJvd0JvcmRlcldpZHRoOiBudW1iZXIgPSAyO1xyXG4gIFxyXG4gIHNob3dTb3J0Q29tcG9uZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd0ZpbHRlckNvbXBvbmVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRlbXBTb3J0T3JkZXI6IFNvcnRUeXBlID0gbnVsbDtcclxuICAgIFxyXG4gIHRvb2x0aXBPcHRpb25zOiBUb29sdGlwTW9kZWxbXTtcclxuICBjbG9uZWRUb29sdGlwT3B0aW9uczogVG9vbHRpcE1vZGVsW107XHJcbiAgZGlzYWJsZVNlbGVjdEFsbDogYm9vbGVhbjtcclxuICBkaXNhYmxlQ2xlYXJBbGw6IGJvb2xlYW47XHJcbiAgc2VhcmNoSXRlbTogc3RyaW5nO1xyXG5cclxuICBkaXNhYmxlQ2FsZW5kYXJBcHBseUJ0bjogYm9vbGVhbjtcclxuICBjYWxlbmRhclNlbGVjdGlvbjogYW55ID0ge2Zyb21EYXRlOiBudWxsICwgdG9EYXRlOiBudWxsfTtcclxuXHJcbiAgc2hvd1NsaWRlck1pblZhbHVlRXJyb3I6IGJvb2xlYW47XHJcbiAgc2hvd1NsaWRlck1heFZhbHVlRXJyb3I6IGJvb2xlYW47XHJcbiAgaXNNaW5UZXh0Qm94RW1wdHk6IGJvb2xlYW47XHJcbiAgaXNNYXhUZXh0Qm94RW1wdHk6IGJvb2xlYW47XHJcbiAgc2VsZWN0ZWRMYWJlbDogc3RyaW5nO1xyXG5cclxuICBzdGFydFRpbWVIb3VyRXJyOiBib29sZWFuO1xyXG4gIHN0YXJ0VGltZU1pbkVycjogYm9vbGVhbjtcclxuICBlbmRUaW1lSG91ckVycjogYm9vbGVhbjtcclxuICBlbmRUaW1lTWluRXJyOiBib29sZWFuO1xyXG5cclxuICBzYW1lVG9vbHRpcENsaWNrZWQ6IGJvb2xlYW47XHJcbiAgbWFyZ2luVG9wOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ3RhYmxlSGVhZGVyJykgdmlld0NoaWxkVGFibGVIZWFkZXJzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcblxyXG4gIHNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQ6IG51bWJlcjtcclxuICBpc0ZpbHRlckNoYW5nZWQ6IGJvb2xlYW47XHJcbiAgaXNTb3J0Q2hhbmdlZDogYm9vbGVhbjtcclxuICBpc0RpZmZlcmVuY2VMZXNzVGhhbjI1UGVyY2VudDogYm9vbGVhbjtcclxuICBpbmNvcnJlY3RTbGlkZXJJbnB1dDogYm9vbGVhbjtcclxuICBzdGFydDogbnVtYmVyID0gMDtcclxuICBlbmQ6IG51bWJlciA9IHRoaXMubGltaXQgKyB0aGlzLnN0YXJ0O1xyXG4gIHJlbmRlcmVkRGF0YTogYW55W107IFxyXG4gIHNlbGVjdGVkSW52ZW50b3J5SWRGb3JEb3dubG9hZDogbnVtYmVyO1xyXG4gIHNlbGVjdGVkRGVtb2dyYXBoaWNGb3JEb3dubG9hZDogYW55O1xyXG4gIHNlbGVjdGVkUm93VHlwZUZvckRvd25sb2FkOiBzdHJpbmc7XHJcbiAgaGVpZ2h0T2ZDaGVja2JveFRvb2x0aXBGaWx0ZXI6IG51bWJlcjtcclxuICBpc05vRGF0YVRvRGlzcGxheVN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgc2VsZWN0ZWRTdGFycmVkT3JkZXJJZDogc3RyaW5nO1xyXG4gIFxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGFubmFTb3J0U2VydmljZTogQW5uYVNvcnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIGFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2U6IEFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYW5uYUZpbHRlclNlcnZpY2U6IEFubmFGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbm5hR2VuZXJpY1RhYmxlU2VydmljZTogQW5uYUdlbmVyaWNUYWJsZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuc2V0VG9vbHRpcFJhZGlvTmFtZXMoKTtcclxuICB9XHJcbiAgXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ICYmIHRoaXMuZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudC5pbmNsdWRlcyhcIk9SREVSX0xJU1RJTkdcIikgfHwgdGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09IFwiRFJSTElTVElOR1wiKXtcclxuICAgICAgdGhpcy5zZXRNYXJnaW5MZWZ0Rm9yRmlsdGVySWNvbigpO1xyXG4gICAgfSAgICBcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKHRoaXMuc2hvd1NrZWxldG9uTG9hZGluZykge1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMubnVtYmVyT2ZTa2VsZXRvbkNvbHVtbnM7XHJcbiAgICAgIHRoaXMucmVuZGVyZWREYXRhID0gdGhpcy5udW1iZXJPZlNrZWxldG9uQ29sdW1ucztcclxuICAgICAgdGhpcy5pc05vRGF0YVRvRGlzcGxheVN1YmplY3QkLm5leHQoZmFsc2UpO1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcCA9IG5ldyBNYXAoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYoY2hhbmdlc1tcInBlcmNlbnREb25lXCJdIHx8IGNoYW5nZXNbXCJkb3dubG9hZEluUHJvZ3Jlc3NcIl0gfHwgKCBjaGFuZ2VzW1wic3RhcnJlZEluUHJvZ3Jlc3NcIl0gJiYgY2hhbmdlc1tcInN0YXJyZWRJblByb2dyZXNzXCJdLmN1cnJlbnRWYWx1ZSAhPSB1bmRlZmluZWQgKSl7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiZG8gbm90aGluZ1wiKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNldEluaXRpYWxSb3dzRm9yVGFibGUoKTtcclxuICAgICAgdGhpcy5kaXNhYmxlRW5hYmxlRWFjaENvbHVtblRvb2x0aXBJY29uKCk7XHJcbiAgICAgIHRoaXMudGFibGVDb2x1bW5zID0gdGhpcy50YWJsZUhlYWRlcnMuZmlsdGVyKHggPT4geC52aXNpYmxlKS5tYXAoeCA9PiB4LmhlYWRlckluZm9bMF0ub2JqZWN0S2V5KTtcclxuICAgICAgaWYodGhpcy50YWJsZURhdGEgJiYgdGhpcy50YWJsZURhdGEubGVuZ3RoID09IDApe1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gQXJyYXkoMikuZmlsbCgwKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVkRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgICAgICAgdGhpcy5tYXJnaW5Ub3AgPSAoLSB0aGlzLmd0RGltZW5zaW9uLnJvd0hlaWdodCAtICh0aGlzLmd0RGltZW5zaW9uLnJvd0hlaWdodC8yKSkgKyAncHgnO1xyXG4gICAgICAgIHRoaXMuaXNOb0RhdGFUb0Rpc3BsYXlTdWJqZWN0JC5uZXh0KHRydWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgdGhpcy5pc05vRGF0YVRvRGlzcGxheVN1YmplY3QkLm5leHQoZmFsc2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNob3dTa2VsZXRvbkxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvL3NldHRpbmcgdGFibGUgY29sdW1uIGhlcmUgYXMgd2VsbCBiZWNhdXNlIHdoaWxlIHNob3dpbmcgc2tlbGV0b24gbG9hZGVyLCB3ZSBzaG91bGQgc2hvdyB0YWJsZSBoZWFkZXJzLlxyXG4gICAgaWYgKGNoYW5nZXNbJ3RhYmxlSGVhZGVycyddICYmICFpc0VxdWFsKGNoYW5nZXNbJ3RhYmxlSGVhZGVycyddLmN1cnJlbnRWYWx1ZSwgY2hhbmdlc1sndGFibGVIZWFkZXJzJ10ucHJldmlvdXNWYWx1ZSkpIHtcclxuICAgICAgdGhpcy50YWJsZUNvbHVtbnMgPSB0aGlzLnRhYmxlSGVhZGVycy5maWx0ZXIoeCA9PiB4LnZpc2libGUpLm1hcCh4ID0+IHguaGVhZGVySW5mb1swXS5vYmplY3RLZXkpO1xyXG4gICAgICB0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUgPSBuZXcgTWFwKCk7XHJcbiAgICAgIHRoaXMuc2V0Q29sdW1uU29ydFN0YXRlTWFwKCk7XHJcbiAgICAgIHRoaXMuc2V0QWN0aXZlU3RhdGVPYmplY3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1sndG90YWxSb3dJbmZvJ10gJiYgY2hhbmdlc1sndG90YWxSb3dJbmZvJ10uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMudG90YWxSb3dDb2x1bW5zID0gdGhpcy50b3RhbFJvd0luZm8ubWFwKHggPT4geC5jb2xOYW1lKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIHRyYWNrQnlGbihpbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBzZXRUb29sdGlwUmFkaW9OYW1lcygpIHtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcCA9IG5ldyBNYXAoKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJTdGFydFRpbWVGb3JGaWx0ZXJcIiwgXCJTdGFydCBUaW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIkVuZFRpbWVGb3JGaWx0ZXJcIiwgXCJFbmQgVGltZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJzdGFydF90aW1lX2Zvcl9maWx0ZXJcIiwgXCJTdGFydCBUaW1lXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImVuZF90aW1lX2Zvcl9maWx0ZXJcIiwgXCJFbmQgVGltZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwcmltYXJ5QUVOYW1lXCIsIFwiUHJpbWFyeSBBRVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZWdpb25cIiwgXCJSZWdpb25cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYWdlbmN5TmFtZVwiLCBcIkFnZW5jeVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJsb2NhdGlvblwiLCBcIkxvY2F0aW9uXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImFkdmVydGlzZXJOYW1lXCIsIFwiQWR2ZXJ0aXNlclwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwcm9kdWN0Q29kZVwiLCBcIlByb2R1Y3QgQ2F0ZWdvcnlcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZmxpZ2h0U3RhcnREYXRlXCIsIFwiU3RhcnQgRGF0ZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJmbGlnaHRFbmREYXRlXCIsIFwiRW5kIERhdGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib3JkZXJJZEFuZFJldk51bWJlclwiLCBcIlNUTiBPcmRlciMtUmV2I1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJhbHRlcm5hdGVPcmRlcklkXCIsIFwiQWx0L1JlcCBPcmRlciAjXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImdycFwiLCBcIkdSUFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJjcHBcIiwgXCJDUFBcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiaW1wc1wiLCBcIklNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiY3BtXCIsIFwiQ1BNXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9mZmVyZWRNR3NcIiwgXCJPZmZlcmVkIE1HXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm91dHN0YW5kaW5nUEVcIiwgXCJPL1MgUEVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib2ZmZXJlZEFEVXNcIiwgXCJPZmZlcmVkIEFEVXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidWREZWZpY2l0VmFsdWVcIiwgXCJPL1MgQXVkIERlbHRhXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInN0YXJ0RW5kVGltZU11bHRpXCIsIFwiVGltZVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRWYWx1ZVwiLCBcIkJvb2tlZFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRTcG90c1wiLCBcIlNwb3RzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInVzZXJDaGFuZ2VzXCIsIFwiVXNlciBDaGFuZ2VzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJ1eWVyQ2hhbmdlc1wiLCBcIkJ1eWVyIENoYW5nZXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidXNlck1HXCIsIFwiVXNlciBNR1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ1c2VyQURVc1wiLCBcIlVzZXIgQURVc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJpbnZlbnRvcnlDb2RlXCIsIFwiSW52ZW50b3J5IENvZGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicHJvZ3JhbVwiLCBcIlByb2dyYW1cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYWdlbmN5XCIsIFwiQWdlbmN5XCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImFkdmVydGlzZXJcIiwgXCJBZHZlcnRpc2VyXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInN0YXJ0RGF0ZVwiLCBcIlN0YXJ0IERhdGVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZW5kRGF0ZVwiLCBcIkVuZCBEYXRlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJjdlByZWVtcHRcIiwgXCIkIE1hZGVnb29kIFBFc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvc1ByZWVtcHRcIiwgXCIkIE8vUyBQRXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmN2VW5kZXJEbHlcIiwgXCJSZWNvdmVyZWQgVURcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwib3NVbmRlckRseVwiLCBcIk8vcyBVbmRlciBEbHlcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicHJpbWFyeUFlXCIsIFwiUHJpbWFyeSBBRVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZWdpb25cIiwgXCJSZWdpb25cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmV2Q29kZTFcIiwgXCJSZXYgY29kZSAxXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9yZGVyTm9SZXZOb1wiLCBcIlNUTiBPcmRlciMtUmV2I1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJyZXZDb2RlMlwiLCBcIlJldiBjb2RlIDJcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmV2Q29kZTNcIiwgXCJSZXYgY29kZSAzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFwiLCBcIiQgQm9va2VkXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInNwb3RzXCIsIFwiU3BvdHNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG9zdGVkQXVkUGVyY2VudFwiLCBcIlBvc3RlZCAlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInJldmlzaW9uXCIsIFwiUmV2aXNpb25cIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYnV5ZXJPcmRlcklkXCIsIFwiQUxUL1JFUCBPcmRlciNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiZGVtb1wiLFwiRGVtb1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRBZHVcIixcIiQgUG9zdGVkIEFEVXNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwic2NoZWR1bGVkQWR1XCIsXCIkIFNjaGVkdWxlZCBBRFVzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImF1ZGllbmNlRGVmaWNpdFwiLFwiJCBPL1MgQXVkaWVuY2VcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG9zdGVkQXVkUGVyY2VudFwiLFwiUG9zdGVkIEF1ZGllbmNlICVcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG90ZW50aWFsVW5pdHNWYWx1ZVwiLFwiUE9UIFVuaXRzXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFVuaXRzVmFsdWVcIixcIkJvb2tlZCBVbml0c1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRBbW91bnRXaXRoWmVyb1JhdGluZ1ZhbHVlXCIsXCJUb3RhbCAkIEJvb2tlZFwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRBbW91bnRQZXJjZW50YWdlV2l0aFplcm9SYXRpbmdWYWx1ZVwiLFwiJSBBZ2FpbnN0IEFsbCBEZW1vc1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRBbW91bnRXaXRob3V0WmVyb1JhdGluZ1ZhbHVlXCIsXCIkQm9va2VkIFdpdGggSW1wcyjigJkwMDApXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEFtb3VudFBlcmNlbnRhZ2VXaXRob3V0WmVyb1JhdGluZ1ZhbHVlXCIsIFwiJSBBZ2FpbnN0IEFsbCBEZW1vc1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInRvdGFsQm9va2VkQW1vdW50VmFsdWVcIixcIlRvdGFsICRCb29rZWRcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYXZlcmFnZVVuaXRSYXRlVmFsdWVcIixcIkFVUlwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJ0b3RhbEJvb2tlZEFtb3VudFdpdGhSYXRpbmdWYWx1ZVwiLCBcIiRCb29rZWQgV2l0aCBSYXRpbmdcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYXZlcmFnZVVuaXRSYXRlV2l0aFJhdGluZ1ZhbHVlXCIsIFwiQVVSIFdpdGggUmF0aW5nXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwidG90YWxCb29rZWRBbW91bnRXaXRoSW1wcmVzc2lvblZhbHVlXCIsIFwiJEJvb2tlZCBXaXRoIElNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYXZlcmFnZVVuaXRSYXRlV2l0aEltcHJlc3Npb25WYWx1ZVwiLCBcIkFVUiBXaXRoIElNUFNcIik7XHJcbiAgICBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRVbml0c1dpdGhSYXRpbmdWYWx1ZVwiLCBcIkJvb2tlZCBVbml0cyBXaXRoIFJhdGluZ1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRVbml0c1dpdGhSYXRpbmdWYWx1ZVwiLCBcIlBvc3RlZCBVbml0cyBXaXRoIFJhdGluZ1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFVuaXRzV2l0aEltcHJlc3Npb25WYWx1ZVwiLCBcIkJvb2tlZCBVbml0cyBXaXRoIElNUFNcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicG9zdGVkVW5pdHNXaXRoSW1wcmVzc2lvblZhbHVlXCIsIFwiUG9zdGVkIFVuaXRzIFdpdGggSU1QU1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZFJhdGluZ3NcIiwgXCJCb29rZWQgUmF0aW5nXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZFJhdGluZ3NcIiwgXCJQb3N0ZWQgUmF0aW5nXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkSW1wcmVzc2lvbnNcIiwgXCJCb29rZWQgSU1QU1wiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJwb3N0ZWRJbXByZXNzaW9uc1wiLCBcIlBvc3RlZCBJTVBTXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkQXZlcmFnZVJhdGluZ1wiLCBcIkJvb2tlZCBBVkcgUmF0aW5nXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZEF2ZXJhZ2VSYXRpbmdcIiwgXCJQb3N0ZWQgQVZHIFJhdGluZ1wiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEF2ZXJhZ2VJbXByZXNzaW9uXCIsIFwiQm9va2VkIEFWRyBJTVBTXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcInBvc3RlZEF2ZXJhZ2VJbXByZXNzaW9uXCIsIFwiUG9zdGVkIEFWRyBJTVBTXCIpO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwiYm9va2VkQ3BwVmFsdWVcIiwgXCJCb29rZWQgQ1BQXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZEVmZmVjdGl2ZUNwcFZhbHVlXCIsIFwiRWZmZWN0aXZlIENQUFwiKTtcclxuICAgIFxyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImJvb2tlZENwbVZhbHVlXCIsIFwiQm9va2VkIENQTVwiKTtcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJib29rZWRFZmZlY3RpdmVDcG1WYWx1ZVwiLCBcIkVmZmVjdGl2ZSBDUE1cIik7XHJcbiAgICBcclxuICAgIHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5zZXQoXCJvcmRlclNvdXJjZVwiLFwiT3JkZXIgU291cmNlXCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcIm9yZGVyQ2F0ZWdvcnlcIixcIkNhdGVnb3J5XCIpO1xyXG4gICAgdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLnNldChcImNhc2hPclRyYWRlXCIsXCJDL1RcIik7XHJcbiAgICB0aGlzLnRvb2x0aXBSYWRpb1RleHRNYXAuc2V0KFwicmV2aXNpb25TdGFydERhdGVcIiwgXCJSZXZpc2lvbiBTdGFydCBEYXRlXCIpO1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZVRhYmxlRGF0YVdyYXBwZXIoKSB7XHJcbiAgICB0aGlzLnNob3dTa2VsZXRvbkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy50YWJsZURhdGFXcmFwcGVyID0gW107XHJcbiAgICBsZXQgcm93T2JqZWN0OiBhbnk7XHJcbiAgICBsZXQgY29sdW1uTmFtZTogc3RyaW5nO1xyXG4gICAgbGV0IGNvbHVtbk9iamVjdDogeyBbeDogc3RyaW5nXTogYW55OyB9O1xyXG4gICAgbGV0IGNvbHVtbk9iamVjdEtleTtcclxuICAgIGxldCBrZXlzVXNlZEZvclRhYmxlRGlzcGxheTogc3RyaW5nW107XHJcbiAgICBsZXQga2V5c1VzZWRGb3JDb2x1bW46IHN0cmluZ1tdO1xyXG4gICAgbGV0IGFkZGl0aW9uYWxJbmZvT2JqZWN0OiB7IFt4OiBzdHJpbmddOiBhbnk7IH07XHJcbiAgICBsZXQgYWRkaXRpb25hbEtleXM7XHJcbiAgICB0aGlzLnRhYmxlRGF0YS5mb3JFYWNoKChvYmo6IHsgW3g6IHN0cmluZ106IGFueTsgfSkgPT4ge1xyXG4gICAgICByb3dPYmplY3QgPSB7fTtcclxuICAgICAga2V5c1VzZWRGb3JUYWJsZURpc3BsYXkgPSBbXTtcclxuICAgICAgZm9yICh2YXIgY29sTnVtIGluIHRoaXMudGFibGVIZWFkZXJzKSB7XHJcbiAgICAgICAgY29sdW1uT2JqZWN0ID0ge307XHJcbiAgICAgICAgaWYgKCF0aGlzLnRhYmxlSGVhZGVyc1tjb2xOdW1dLnZpc2libGUpIHtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb2x1bW5OYW1lID0gXCJcIjtcclxuICAgICAgICBrZXlzVXNlZEZvckNvbHVtbiA9IFtdO1xyXG4gICAgICAgIHRoaXMudGFibGVIZWFkZXJzW2NvbE51bV0uaGVhZGVySW5mby5mb3JFYWNoKChoZWFkZXIpID0+IHtcclxuICAgICAgICAgIGlmIChoZWFkZXIudHlwZU9mQm9keURhdGEgPT09IFwiU1RSSU5HXCIpIHtcclxuICAgICAgICAgICAgY29sdW1uT2JqZWN0S2V5ID0gaGVhZGVyLm9iamVjdEtleTtcclxuICAgICAgICAgICAgY29sdW1uT2JqZWN0W2NvbHVtbk9iamVjdEtleV0gPSBvYmpbY29sdW1uT2JqZWN0S2V5XTtcclxuICAgICAgICAgICAga2V5c1VzZWRGb3JUYWJsZURpc3BsYXkucHVzaChjb2x1bW5PYmplY3RLZXkpO1xyXG4gICAgICAgICAgICBrZXlzVXNlZEZvckNvbHVtbi5wdXNoKGNvbHVtbk9iamVjdEtleSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChoZWFkZXIudHlwZU9mQm9keURhdGEgPT09IFwiSUNPTlwiKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbk9iamVjdEtleSA9IGhlYWRlci50eXBlT2ZCb2R5RGF0YTtcclxuICAgICAgICAgICAgY29sdW1uT2JqZWN0W2NvbHVtbk9iamVjdEtleV0gPSBvYmpbaGVhZGVyLm9iamVjdEtleV07XHJcbiAgICAgICAgICAgIGtleXNVc2VkRm9yQ29sdW1uLnB1c2goaGVhZGVyLm9iamVjdEtleSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChoZWFkZXIudHlwZU9mQm9keURhdGEgPT09IFwiQ0hFQ0tCT1hcIikge1xyXG4gICAgICAgICAgICBjb2x1bW5PYmplY3RLZXkgPSBoZWFkZXIudHlwZU9mQm9keURhdGE7XHJcbiAgICAgICAgICAgIGNvbHVtbk9iamVjdFtjb2x1bW5PYmplY3RLZXldID0gb2JqW2hlYWRlci5vYmplY3RLZXldO1xyXG4gICAgICAgICAgICBrZXlzVXNlZEZvckNvbHVtbi5wdXNoKGhlYWRlci5vYmplY3RLZXkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzVXNlZEZvckNvbHVtbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgY29sdW1uTmFtZSArPSBrZXlzVXNlZEZvckNvbHVtbltpXTtcclxuICAgICAgICAgIGlmIChpICE9PSBrZXlzVXNlZEZvckNvbHVtbi5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbk5hbWUgKz0gJywnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByb3dPYmplY3RbY29sdW1uTmFtZV0gPSBjb2x1bW5PYmplY3Q7XHJcbiAgICAgIH1cclxuICAgICAgYWRkaXRpb25hbEluZm9PYmplY3QgPSB7fTtcclxuICAgICAgYWRkaXRpb25hbEtleXMgPSBPYmplY3Qua2V5cyhvYmopLmZpbHRlcihrZXkgPT4gIWtleXNVc2VkRm9yVGFibGVEaXNwbGF5LmluY2x1ZGVzKGtleSkpO1xyXG4gICAgICBhZGRpdGlvbmFsS2V5cy5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgYWRkaXRpb25hbEluZm9PYmplY3Rba2V5XSA9IG9ialtrZXldO1xyXG4gICAgICB9KVxyXG4gICAgICByb3dPYmplY3QuQWRkaXRpb25hbEluZm8gPSBhZGRpdGlvbmFsSW5mb09iamVjdDtcclxuICAgICAgdGhpcy50YWJsZURhdGFXcmFwcGVyLnB1c2gocm93T2JqZWN0KTtcclxuICAgIH0pXHJcbiAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMudGFibGVEYXRhV3JhcHBlcjtcclxuICAgIHRoaXMuc2hvd1NrZWxldG9uTG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdE9yVW5zZWxlY3RDaGVja2JveChyb3dEYXRhOiBhbnksIGNvbHVtbktleXM6IGFueSwgaXNDaGVja2JveFNlbGVjdGVkOiBhbnkpIHtcclxuICAgIHRoaXMudG9nZ2xlQ2hlY2tib3guZW1pdCh7IHJvd0RhdGEsIGNvbHVtbktleXMsIGlzQ2hlY2tib3hTZWxlY3RlZCB9KTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFVuc2VsZWN0QWxsUm93cygpIHtcclxuICAgIHRoaXMudG9nZ2xlSGVhZGVyQ2hlY2tib3guZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0VW5zZWxlY3RSb3cocm93RGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnRvZ2dsZVJvd0NoZWNrYm94LmVtaXQocm93RGF0YSk7XHJcbiAgfVxyXG5cclxuICB1bmRvQ3JlZGl0ZWRTcG90KGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy51bmRvSWNvbkNsaWNrZWQuZW1pdCh7IGRhdGEsIG1nT3JDcmVkaXQ6IFwiQ3JlZGl0XCIgfSk7XHJcbiAgfVxyXG5cclxuICB1bmRvTWdTcG90KGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy51bmRvSWNvbkNsaWNrZWQuZW1pdCh7IGRhdGEsIG1nT3JDcmVkaXQ6IFwiTWFrZUdvb2RcIiB9KTtcclxuICB9XHJcblxyXG4gIC8vU29ydCBhbmQgRmlsdGVyIExvZ2ljIGJlZ2lucyFcclxuICBjbG9zZVRvb2x0aXAoKSB7XHJcbiAgICBpZiAodGhpcy50b29sdGlwICYmIHRoaXMudG9vbHRpcC5pc09wZW4oKSkge1xyXG4gICAgICB0aGlzLnRvb2x0aXAuY2xvc2UoKTtcclxuICAgIH1cclxuICAgIHRoaXMudG9vbHRpcCA9IG51bGw7XHJcbiAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gZmFsc2U7XHJcbiAgICBpZiAoIXRoaXMuYmluZFZhbHVlRnVuY0NhbGxlZCkge1xyXG4gICAgICB0aGlzLmNvbHVtbkZpbHRlckNsb3NlZC5lbWl0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc1Rvb2x0aXBBY3RpdmUoaGVhZGVyOiBhbnlbXSkge1xyXG4gICAgcmV0dXJuIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaXNUb29sdGlwQWN0aXZlKGhlYWRlcix0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgYmluZFRoZVZhbHVlVG9Ub29sVGlwKHRvb2x0aXA6IGFueSwgaGVhZGVyOiBJSGVhZGVySW5mbykge1xyXG5cclxuICAgIHRoaXMuYmluZFZhbHVlRnVuY0NhbGxlZCA9IHRydWU7XHJcbiAgICBsZXQgY29udGFpbmVyVG9TY3JvbGw7XHJcbiAgICBpZiAodGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09PSBcIlNQT1RERVRBSUxTXCIgfHwgdGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09PSBcIkRSUkxJU1RJTkdcIikge1xyXG4gICAgICBjb250YWluZXJUb1Njcm9sbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJzY3JvbGxhYmxlLWNvbnRhaW5lclwiKVswXTtcclxuICAgICAgdmFyIG1lZGlhUXVlcnkgPSB3aW5kb3cubWF0Y2hNZWRpYShcIihtYXgtd2lkdGg6IDEzNjZweClcIik7XHJcbiAgICAgIGlmIChtZWRpYVF1ZXJ5Lm1hdGNoZXMpIHtcclxuICAgICAgICBjb250YWluZXJUb1Njcm9sbC5zY3JvbGwoMCwgdGhpcy5ndEdlbmVyYWxDb25maWcudmVydGljYWxTY3JvbGxPZmZzZXRGb3JGaWx0ZXJUb29sdGlwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBpZiBzYW1lIHRvb2x0aXAgb3BlbmVkIGNsb3NlIGl0XHJcbiAgICBpZiAodG9vbHRpcCA9PSB0aGlzLnRvb2x0aXApIHtcclxuICAgICAgdGhpcy5iaW5kVmFsdWVGdW5jQ2FsbGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGVuYWJsZWRIZWFkZXJzOiBhbnlbXSA9IFtdO1xyXG4gICAgICB0aGlzLmNoZWNrSWZVbmlxdWVWYWx1ZVByZXNlbnRGb3JUaGVIZWFkZXIoaGVhZGVyLGVuYWJsZWRIZWFkZXJzKTtcclxuICAgICAgdGhpcy5vcGVuVG9vbHRpcCh0b29sdGlwLCBlbmFibGVkSGVhZGVycyxoZWFkZXIpO1xyXG5cclxuICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgMTUwMCAmJiB3aW5kb3cuaW5uZXJIZWlnaHQgPCA3NjggJiYgIXRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2xpZGVyU2V0LmhhcyhoZWFkZXIuZmlsdGVyU29ydE9iamVjdEtleXNbMF0pKSB7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5GaWx0ZXJPcGVuZWQuZW1pdCgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNob3dGaWx0ZXJUb29sdGlwVGFicyA9IGhlYWRlci5maWx0ZXJTb3J0T2JqZWN0S2V5cy5sZW5ndGggPiAxO1xyXG4gICAgICBsZXQgYWN0aXZlVGFiID0gdGhpcy5maWx0ZXJUYWJPYmplY3RzWzBdO1xyXG4gICAgICB0aGlzLnBvcHVsYXRlVG9vbHRpcERhdGFCYXNlZE9uU2VsZWN0ZWRSYWRpbyhhY3RpdmVUYWIpO1xyXG4gICAgICB0aGlzLmJpbmRWYWx1ZUZ1bmNDYWxsZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrSWZVbmlxdWVWYWx1ZVByZXNlbnRGb3JUaGVIZWFkZXIoaGVhZGVyOiBJSGVhZGVySW5mbywgZW5hYmxlZEhlYWRlcnM6IGFueVtdKXtcclxuICAgIGhlYWRlci5maWx0ZXJTb3J0T2JqZWN0S2V5cy5mb3JFYWNoKChpdGVtOiBzdHJpbmcgfCBudW1iZXIpID0+IHtcclxuICAgICAgY29uc29sZS5sb2codW5pcSh0aGlzLnRhYmxlRGF0YS5tYXAoKHU6eyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiB1W2l0ZW1dKSkpO1xyXG4gICAgICBpZihpdGVtID09IFwicGVyaW9kXCIpe1xyXG4gICAgICAgICAgbGV0IHVuaXFTdGFydERhdGUgPSB1bmlxKHRoaXMudGFibGVEYXRhLm1hcCgodTogeyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiB1W1wic3RhcnREYXRlXCJdKSk7XHJcbiAgICAgICAgICBsZXQgdW5pcUVuZERhdGUgPSB1bmlxKHRoaXMudGFibGVEYXRhLm1hcCgodTp7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVbXCJlbmREYXRlXCJdKSk7XHJcbiAgICAgICAgICBpZih1bmlxU3RhcnREYXRlLmxlbmd0aCA+IDEgfHwgdW5pcUVuZERhdGUubGVuZ3RoID4gMSB8fCB0aGlzLmlzVG9vbHRpcEFjdGl2ZShbaXRlbV0pKXtcclxuICAgICAgICAgICAgZW5hYmxlZEhlYWRlcnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgZWxzZXtcclxuICAgICAgICBsZXQgdmFsdWVzID0gdGhpcy50YWJsZURhdGEubWFwKCh1OiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IHVbaXRlbV0pO1xyXG4gICAgICAgIC8vIGlmIGxhc3QgYXBwbGllZCBmaWx0ZXIgaXMgdGhpcyBoZWFkZXIsIHB1c2ggaXQgYWxvcyBhcyBlbmFibGVkSGVhZGVyXHJcbiAgICAgICAgbGV0IGFjdGl2ZUFuZExhc3RseUFwcGxpZWRIZWFkZXIgPSBmYWxzZTtcclxuICAgICAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmFwcGxpZWRGaWx0ZXJzQXJyYXkubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5hcHBsaWVkRmlsdGVyc0FycmF5W3RoaXMuYW5uYUZpbHRlclNlcnZpY2UuYXBwbGllZEZpbHRlcnNBcnJheS5sZW5ndGgtMV0gPT0gaXRlbSl7XHJcbiAgICAgICAgICAgIGFjdGl2ZUFuZExhc3RseUFwcGxpZWRIZWFkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIGlmKGhlYWRlci5maWx0ZXIgPT0gXCJDSEVDS0JPWFwiICYmICh1bmlxKHZhbHVlcykuZmlsdGVyKG4gPT4gbiE9bnVsbCkubGVuZ3RoID4gMSB8fCBhY3RpdmVBbmRMYXN0bHlBcHBsaWVkSGVhZGVyKSl7XHJcbiAgICAgICAgICAgIGVuYWJsZWRIZWFkZXJzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYoaGVhZGVyLmZpbHRlciAhPSBcIkNIRUNLQk9YXCIgJiYgKHVuaXEodmFsdWVzKS5maWx0ZXIobiA9PiBuIT1udWxsICYmIG4hPVwiLVwiKS5sZW5ndGggPiAxIHx8IGFjdGl2ZUFuZExhc3RseUFwcGxpZWRIZWFkZXIpKXtcclxuICAgICAgICAgIGVuYWJsZWRIZWFkZXJzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvcGVuVG9vbHRpcCh0b29sdGlwOiBhbnksaGVhZGVyOiBhbnksIGNvbHVtbkhlYWRlcjogSUhlYWRlckluZm8pIHtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcbiAgICB0aGlzLnRvb2x0aXAgPSB0b29sdGlwO1xyXG4gICAgdGhpcy50b29sdGlwLm9wZW4oKTtcclxuICAgIC8vY29udmVydCBrZXkgaW50byB0aGUgaGVhZGVyXHJcbiAgICB0aGlzLmZpbHRlclRhYk9iamVjdHMgPSBoZWFkZXIubWFwKChrZXk6IHN0cmluZyxpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGxldCB2YWx1ZSA9IHRoaXMudG9vbHRpcFJhZGlvVGV4dE1hcC5oYXMoa2V5KVxyXG4gICAgICAgID8gdGhpcy50b29sdGlwUmFkaW9UZXh0TWFwLmdldChrZXkpXHJcbiAgICAgICAgOiBrZXk7IC8vY2hhbmdlIHRvIGRpc3BsYXkgbmFtZVxyXG4gICAgICByZXR1cm4gbmV3IHJhZGlvQnV0dG9uTW9kZWwoa2V5LCB2YWx1ZSwgY29sdW1uSGVhZGVyLmlzU29ydFJlcXVpcmVkW2luZGV4XSwgY29sdW1uSGVhZGVyLmlzRmlsdGVyUmVxdWlyZWRbaW5kZXhdKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJDb2x1bW5GaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmNsZWFyQ29sdW1uRmlsdGVyKCk7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gICAgdGhpcy50YWJsZURhdGEgPSBjbG9uZURlZXAodGhpcy5hbm5hRmlsdGVyU2VydmljZS5maWx0ZXJEYXRhKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcIlwiKSk7XHJcbiAgICB0aGlzLmFubmFTb3J0U2VydmljZS5ub1NvcnRpbmdBcHBsaWVkRGF0YSA9IHRoaXMudGFibGVEYXRhO1xyXG4gICAgdGhpcy5jaGVja0lmU29ydGluZ0lzQXBwbGllZCgpO1xyXG4gICAgdGhpcy5maWx0ZXJBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgIHRoaXMuZGlzYWJsZUVuYWJsZUVhY2hDb2x1bW5Ub29sdGlwSWNvbigpO1xyXG4gICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS51cGRhdGVTdGF0ZU9mVGhlQ3VycmVudEZpbHRlclRhYih0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUpO1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8oYWN0aXZlVGFiOiByYWRpb0J1dHRvbk1vZGVsKSB7XHJcblxyXG4gICAgbGV0IGhlYWRlciA9IGFjdGl2ZVRhYi5rZXk7XHJcbiAgICB0aGlzLnNlbGVjdGVkTGFiZWwgPSBhY3RpdmVUYWIubGFiZWw7XHJcbiAgICB0aGlzLnNob3dTb3J0Q29tcG9uZW50ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VhcmNoSXRlbSA9IG51bGw7XHJcbiAgICBcclxuICAgIHRoaXMuc2hvd1NvcnRDb21wb25lbnQgPSBhY3RpdmVUYWIuaXNTb3J0UmVxdWlyZWQ7XHJcbiAgICB0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgPSBhY3RpdmVUYWIuaXNGaWx0ZXJSZXF1aXJlZDtcclxuICAgIHRoaXMudGVtcFNvcnRPcmRlciA9IG51bGw7XHJcbiAgICB0aGlzLmlzRmlsdGVyQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1NvcnRDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICBcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyA9IGhlYWRlcjtcclxuICAgIHRoaXMuZGlzYWJsZUFjdGl2ZUZpbHRlckNsZWFyQnV0dG9uKCk7XHJcbiAgICBcclxuICAgIHRoaXMuY3JlYXRlRmlsdGVyVG9vbHRpcERhdGEoaGVhZGVyKTtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgY3JlYXRlRmlsdGVyVG9vbHRpcERhdGEoaGVhZGVyOiBzdHJpbmcpe1xyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50KXtcclxuICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaXNhYmxlQ2FsZW5kYXJBcHBseUJ0biA9IHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0biA9IHRydWU7XHJcbiAgICAgIFxyXG4gICAgICBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS5jYWxlbmRhclNldC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICAgIHRoaXMuZ2V0Q2FsZW5kYXJEYXRhKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zbGlkZXJTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmdldFNsaWRlckRhdGEoaGVhZGVyKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRpbWVTZXQuaGFzKGhlYWRlcikpIHtcclxuICAgICAgICB0aGlzLmdldFRpbWVGaWx0ZXJEYXRhKGhlYWRlcik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5nZXRDaGVja2JveERhdGEoaGVhZGVyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaXNhYmxlQ2FsZW5kYXJBcHBseUJ0biA9IHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0biA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlQWN0aXZlRmlsdGVyQ2xlYXJCdXR0b24oKXtcclxuICAgIGxldCBzZWxlY3RlZEZpbHRlclNldCA9IG5ldyBTZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5hcHBsaWVkRmlsdGVyc0FycmF5KTtcclxuICAgIGxldCBpc1NvcnRQcmVzZW50ID0gKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5zaXplID4gMCAmJiB0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykgIT0gXCJERUZBVUxUXCIpO1xyXG4gICAgdGhpcy5kaXNhYmxlQ29sdW1uQ2xlYXJBbGxCdG4gPSBzZWxlY3RlZEZpbHRlclNldC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSB8fCBpc1NvcnRQcmVzZW50ID8gZmFsc2UgOiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2xpZGVyRGF0YShoZWFkZXI6IHN0cmluZykge1xyXG4gICAgXHJcbiAgICB0aGlzLmNyZWF0ZU9wdGlvbnNGb3JTbGlkZXIoaGVhZGVyKTtcclxuICAgIHRoaXMuc2V0U2VsZWN0ZWRSYW5nZUZvclNsaWRlcihoZWFkZXIpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlT3B0aW9uc0ZvclNsaWRlcihoZWFkZXI6IHN0cmluZyl7XHJcblxyXG4gICAgbGV0IHRyYW5zbGF0ZUZ1bmM7XHJcbiAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSA9IHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gdGhpcy5pc01pblRleHRCb3hFbXB0eSA9IHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zbGlkZXJDdXJyZW5jeVNldC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICB0cmFuc2xhdGVGdW5jID0gXCJjdXJyZW5jeVwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihoZWFkZXIgPT0gXCJwb3N0ZWRBdWRQZXJjZW50XCIpe1xyXG4gICAgICB0cmFuc2xhdGVGdW5jID0gXCJwZXJjZW50XCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdHJhbnNsYXRlRnVuYyA9IFwibm9ybWFsXCI7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG9wdGlvbnNEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5nZXRGaWx0ZXJPcHRpb25zRGF0YSh0aGlzLnRhYmxlRGF0YSwgdGhpcy5jbG9uZWRUYWJsZURhdGEpO1xyXG4gICAgbGV0IG1pblZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NYXhBbmRNaW5WYWx1ZShvcHRpb25zRGF0YSwgaGVhZGVyLCB0cnVlKTtcclxuICAgIGxldCBtYXhWYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWF4QW5kTWluVmFsdWUob3B0aW9uc0RhdGEsIGhlYWRlciwgZmFsc2UpO1xyXG5cclxuICAgIGxldCBvYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNldE9wdGlvblZhbHVlcyhtaW5WYWx1ZSxtYXhWYWx1ZSk7XHJcblxyXG4gICAgaWYgKHRyYW5zbGF0ZUZ1bmMgPT09IFwibm9ybWFsXCIpIHtcclxuICAgICAgICBvYmoudHJhbnNsYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5ub3JtYWxUcmFuc2xhdGVGdW5jdGlvbjtcclxuICAgIH0gZWxzZSBpZiAodHJhbnNsYXRlRnVuYyA9PT0gXCJwZXJjZW50XCIpIHtcclxuICAgICAgICBvYmoudHJhbnNsYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5wZXJjZW50VHJhbnNsYXRlRnVuY3Rpb247XHJcbiAgICB9IGVsc2UgaWYgKHRyYW5zbGF0ZUZ1bmMgPT09IFwiY3VycmVuY3lcIikge1xyXG4gICAgICAgIG9iai50cmFuc2xhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmN1cnJlbmN5VHJhbnNsYXRlRnVuY3Rpb247XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vcHRpb25zID0gb2JqO1xyXG4gICAgdGhpcy5vcHRpb25zLnN0ZXAgPSAxO1xyXG4gICAgdGhpcy5zbGlkZXJGaWx0ZXJUZXh0Qm94U3RlcCA9IFwiMVwiO1xyXG4gICAgaWYgKGhlYWRlciAhPT0gXCJXZWVrTnVtYmVyXCIpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnN0ZXAgPSAwLjE7XHJcbiAgICAgIHRoaXMuc2xpZGVyRmlsdGVyVGV4dEJveFN0ZXAgPSBcIjAuMVwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0ZWRSYW5nZUZvclNsaWRlcihoZWFkZXI6IHN0cmluZyl7XHJcbiAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXMoaGVhZGVyKSl7XHJcbiAgICAgIGxldCBzZWxlY3RlZE9iaiA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpO1xyXG4gICAgICB0aGlzLnNsaWRlck1pblZhbHVlID0gc2VsZWN0ZWRPYmoubWluIDwgdGhpcy5vcHRpb25zLmZsb29yID8gdGhpcy5vcHRpb25zLmZsb29yIDogc2VsZWN0ZWRPYmoubWluO1xyXG4gICAgICB0aGlzLnNsaWRlck1heFZhbHVlID0gc2VsZWN0ZWRPYmoubWF4IDwgdGhpcy5vcHRpb25zLmNlaWwgPyBzZWxlY3RlZE9iai5tYXggOiB0aGlzLm9wdGlvbnMuY2VpbDtcclxuICAgICAgdGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPSB0aGlzLnNsaWRlck1pblZhbHVlO1xyXG4gICAgICB0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSA9IHRoaXMuc2xpZGVyTWF4VmFsdWU7ICAgXHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICAgIHRoaXMuc2xpZGVyTWluVmFsdWUgPSB0aGlzLm9wdGlvbnMuZmxvb3I7XHJcbiAgICAgICAgdGhpcy5zbGlkZXJNYXhWYWx1ZSA9IHRoaXMub3B0aW9ucy5jZWlsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPSB0aGlzLnNsaWRlck1pblZhbHVlO1xyXG4gICAgdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPSB0aGlzLnNsaWRlck1heFZhbHVlO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldENoZWNrYm94RGF0YShoZWFkZXI6IHN0cmluZykge1xyXG5cclxuICAgIGxldCB0b29sdGlwT3B0aW9ucyA9IHRoaXMuY3JlYXRlTGlzdEZvckNoZWNrYm94RmlsdGVyKGhlYWRlcik7ICAgIFxyXG4gICAgbGV0IHNlbGVjdGVkSXRlbXMgPSBzb3J0QnkodG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc1NlbGVjdGVkKSxcImxhYmVsXCIpO1xyXG4gICAgbGV0IHVuc2VsZWN0ZWRJdGVtcyA9IHNvcnRCeSh0b29sdGlwT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiAhaXRlbS5pc1NlbGVjdGVkKSxcImxhYmVsXCIpO1xyXG4gICAgICAgIFxyXG4gICAgdGhpcy5jbG9uZWRUb29sdGlwT3B0aW9ucyA9IFsuLi5zZWxlY3RlZEl0ZW1zLCAuLi51bnNlbGVjdGVkSXRlbXNdO1xyXG5cclxuICAgIHRoaXMudG9vbHRpcE9wdGlvbnMgPSBjbG9uZURlZXAodGhpcy5jbG9uZWRUb29sdGlwT3B0aW9ucyk7XHJcbiAgICBcclxuICAgIGxldCBtYXJnaW4gPSA1O1xyXG4gICAgbGV0IGRhdGFMZW5ndGggPSB0aGlzLnRvb2x0aXBPcHRpb25zLmxlbmd0aDtcclxuICAgIHRoaXMuaGVpZ2h0T2ZDaGVja2JveFRvb2x0aXBGaWx0ZXIgPSBkYXRhTGVuZ3RoID4gNiA/IDIwMCA6ICgoMjYuMDMgKiBkYXRhTGVuZ3RoKSArIChtYXJnaW4gKiBkYXRhTGVuZ3RoKSArIG1hcmdpbik7XHJcbiAgICBcclxuICAgIHRoaXMuZGlzYWJsZVNlbGVjdEFsbCA9IHVuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgIHRoaXMuc2VsZWN0ZWRDaGVja2JveE9wdGlvbnNDb3VudCA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlTGlzdEZvckNoZWNrYm94RmlsdGVyKGhlYWRlcjogc3RyaW5nKXtcclxuICAgIGxldCBvcHRpb25EYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5nZXRGaWx0ZXJPcHRpb25zRGF0YSh0aGlzLnRhYmxlRGF0YSwgdGhpcy5jbG9uZWRUYWJsZURhdGEpO1xyXG4gICAgbGV0IHVuaXFPcHRpb25EYXRhID0gdW5pcShvcHRpb25EYXRhLm1hcChpdGVtID0+IGl0ZW1baGVhZGVyXSkpO1xyXG4gICAgbGV0IHRvb2x0aXBPcHRpb25zID0gdW5pcU9wdGlvbkRhdGEubWFwKChpdGVtLGluZGV4KSA9PiBuZXcgVG9vbHRpcE1vZGVsKGl0ZW0saW5kZXgrMSkpO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0VW5zZWxlY3RMaXN0Q2hlY2tib3godG9vbHRpcE9wdGlvbnMsaGVhZGVyKTtcclxuICAgIGxldCBpbmRleCA9IHRvb2x0aXBPcHRpb25zLmZpbmRJbmRleChpdGVtID0+IGl0ZW0udmFsdWUgPT0gbnVsbCk7XHJcbiAgICBcclxuICAgIGlmKGluZGV4ICE9IC0xKXtcclxuICAgICAgdG9vbHRpcE9wdGlvbnNbaW5kZXhdLmxhYmVsID0gXCIoQmxhbmspXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRvb2x0aXBPcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0VW5zZWxlY3RMaXN0Q2hlY2tib3godG9vbHRpcE9wdGlvbnM6IFRvb2x0aXBNb2RlbFtdLGhlYWRlcjogc3RyaW5nKXtcclxuICAgIFxyXG4gICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKGhlYWRlcikpe1xyXG4gICAgICBsZXQgc2VsZWN0ZWRWYWx1ZVNldCA9IG5ldyBTZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KGhlYWRlcikpO1xyXG4gICAgICB0b29sdGlwT3B0aW9ucy5mb3JFYWNoKGl0ZW0gPT4gaXRlbS5pc1NlbGVjdGVkID0gc2VsZWN0ZWRWYWx1ZVNldC5oYXMoaXRlbS52YWx1ZSkgPyB0cnVlIDogZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgdG9vbHRpcE9wdGlvbnMuZm9yRWFjaChpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCA9IHRydWUpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGdldENhbGVuZGFyRGF0YSgpIHtcclxuICAgIGNvbnN0IHBhcnNpbmdGb3JtYXQgPSBcIk1NL0REL1lZWVlcIjtcclxuICAgIGxldCBtaW5NYXhEYXRlID0gdGhpcy5jcmVhdGVSYW5nZUZvclRoZURhdGVGaWx0ZXIoKTtcclxuICAgIHRoaXMuc2VsZWN0UmFuZ2VGb3JUaGVEYXRlRmlsdGVyKG1pbk1heERhdGUsIHBhcnNpbmdGb3JtYXQpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlUmFuZ2VGb3JUaGVEYXRlRmlsdGVyKCl7XHJcbiAgICBcclxuICAgIGxldCBvcHRpb25EYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5nZXRGaWx0ZXJPcHRpb25zRGF0YSh0aGlzLnRhYmxlRGF0YSwgdGhpcy5jbG9uZWRUYWJsZURhdGEpO1xyXG4gICAgXHJcbiAgICBsZXQgbWluTWF4RGF0ZTtcclxuICAgIC8vV2hlbiB5b3Ugd2FudCB0byB1c2Ugc3RhcnREYXRlIGFuZCBlbmREYXRlIGNvbWJpbmVkIGFzIHNpbmdsZSBjb2x1bW4gdGhlbiB1c2UgUGVyaW9kLlxyXG4gICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvID09IFwicGVyaW9kXCIpe1xyXG4gICAgICBtaW5NYXhEYXRlID0gdGhpcy5jcmVhdGVTdGFydEVuZERhdGVSYW5nZShvcHRpb25EYXRhKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIG1pbk1heERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1pbkFuZE1heERhdGUob3B0aW9uRGF0YSwgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTsgIFxyXG4gICAgfVxyXG4gICAgXHJcbiAgICByZXR1cm4gbWluTWF4RGF0ZTtcclxuXHJcbiAgfVxyXG5cclxuICBjcmVhdGVTdGFydEVuZERhdGVSYW5nZShvcHRpb25EYXRhOiBhbnlbXSl7XHJcbiAgICBsZXQgbWluU3RhcnREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NaW5BbmRNYXhEYXRlKG9wdGlvbkRhdGEsIFwic3RhcnREYXRlXCIpO1xyXG4gICAgbGV0IG1heEVuZERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1pbkFuZE1heERhdGUob3B0aW9uRGF0YSxcImVuZERhdGVcIik7XHJcbiAgICByZXR1cm4gW21pblN0YXJ0RGF0ZVswXSxtYXhFbmREYXRlWzFdXTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFJhbmdlRm9yVGhlRGF0ZUZpbHRlcihtaW5NYXhEYXRlOiBhbnlbXSwgcGFyc2luZ0Zvcm1hdDogc3RyaW5nKXtcclxuICAgIHRoaXMuY2FsZW5kYXJNaW5FbmFibGVkRGF0ZSA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG9OZ2JEYXRlKG1pbk1heERhdGVbMF0scGFyc2luZ0Zvcm1hdCk7XHJcbiAgICB0aGlzLmNhbGVuZGFyTWF4RW5hYmxlZERhdGUgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvTmdiRGF0ZShtaW5NYXhEYXRlWzFdLHBhcnNpbmdGb3JtYXQpO1xyXG4gICAgXHJcbiAgICBcclxuICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICBsZXQgc2VsZWN0ZWREYXRlT2JqID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYoc2VsZWN0ZWREYXRlT2JqLmZyb21EYXRlLmlzQWZ0ZXIobWluTWF4RGF0ZVswXSkpe1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWluRGF0ZSA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG9OZ2JEYXRlKHNlbGVjdGVkRGF0ZU9iai5mcm9tRGF0ZSxwYXJzaW5nRm9ybWF0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1pbkRhdGUgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvTmdiRGF0ZShtaW5NYXhEYXRlWzBdLHBhcnNpbmdGb3JtYXQpO1xyXG4gICAgICAgIH0gXHJcblxyXG4gICAgICAgIGlmKHNlbGVjdGVkRGF0ZU9iai50b0RhdGUuaXNBZnRlcihtaW5NYXhEYXRlWzFdKSl7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNYXhEYXRlID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb05nYkRhdGUobWluTWF4RGF0ZVsxXSxwYXJzaW5nRm9ybWF0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1heERhdGUgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvTmdiRGF0ZShzZWxlY3RlZERhdGVPYmoudG9EYXRlLHBhcnNpbmdGb3JtYXQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICAgdGhpcy5zZWxlY3RlZE1pbkRhdGUgPSBjbG9uZURlZXAodGhpcy5jYWxlbmRhck1pbkVuYWJsZWREYXRlKTtcclxuICAgICAgIHRoaXMuc2VsZWN0ZWRNYXhEYXRlID0gY2xvbmVEZWVwKHRoaXMuY2FsZW5kYXJNYXhFbmFibGVkRGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jYWxlbmRhclNlbGVjdGlvbi5mcm9tRGF0ZSA9IGNsb25lRGVlcCh0aGlzLnNlbGVjdGVkTWluRGF0ZSk7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VsZWN0aW9uLnRvRGF0ZSA9IGNsb25lRGVlcCh0aGlzLnNlbGVjdGVkTWF4RGF0ZSk7XHJcblxyXG4gICAgXHJcbiAgfVxyXG5cclxuICBnZXRUaW1lRmlsdGVyRGF0YShoZWFkZXI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgXHJcbiAgICB0aGlzLnN0YXJ0VGltZUhvdXJFcnIgPSB0aGlzLnN0YXJ0VGltZU1pbkVyciA9IHRoaXMuZW5kVGltZUhvdXJFcnIgPSB0aGlzLmVuZFRpbWVNaW5FcnIgPSBmYWxzZTsgICAgXHJcblxyXG4gICAgaWYgKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyhoZWFkZXIpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpLmZyb21UaW1lO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KGhlYWRlcikudG9UaW1lO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRJbml0aWFsVmFsdWVNYXBGb3JUaW1lRmlsdGVyKGhlYWRlcik7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldChoZWFkZXIpLmZyb21UaW1lO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KGhlYWRlcikudG9UaW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSAhPSB1bmRlZmluZWQgfHwgdGhpcy5zZWxlY3RlZFRvVGltZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmZvcm1hdFRvVHdlbHZlSHJzKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSwgdHJ1ZSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWUgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuZm9ybWF0VG9Ud2VsdmVIcnModGhpcy5zZWxlY3RlZFRvVGltZSwgdHJ1ZSk7XHJcblxyXG4gICAgICB0aGlzLmNsb25lZFNlbGVjdGVkRnJvbVRpbWUgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZEZyb21UaW1lKTtcclxuICAgICAgdGhpcy5jbG9uZWRTZWxlY3RlZFRvVGltZSA9IGNsb25lRGVlcCh0aGlzLnNlbGVjdGVkVG9UaW1lKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWUgPSBbXCItXCIsIFwiLVwiLCBcIi1cIl07XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWUgPSBbXCItXCIsIFwiLVwiLCBcIi1cIl07XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09PSBcIlNQT1RERVRBSUxTXCIgfHwgdGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09PSBcIkVYQ0xVREVJTlZFTlRPUllQT1BVUFwiKSB7XHJcbiAgICAgIHRoaXMuc2V0VGltZUZpbHRlckRhdGFGb3JDb21wb25lbnRzT3RoZXJUaGFuUmF0aW5nc1BhZ2UoaGVhZGVyKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09PSBcIlJBVElOR1wiKXtcclxuICAgICAgdGhpcy5zZXRUaW1lRmlsdGVyRGF0YUZvclJhdGluZ1BhZ2VDb21wb25lbnQoaGVhZGVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vTmVlZCB0byBjaGFuZ2UgdGhpcyBtZXRob2RcclxuICBzZXRUaW1lRmlsdGVyRGF0YUZvckNvbXBvbmVudHNPdGhlclRoYW5SYXRpbmdzUGFnZShoZWFkZXI6IHN0cmluZyl7XHJcbiAgICB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93RW50ZXJUaW1lQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLnplcm9UaW1lQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xyXG5cclxuXHJcbiAgICBsZXQgb3B0aW9uc0RhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmdldEZpbHRlck9wdGlvbnNEYXRhKHRoaXMudGFibGVEYXRhLCB0aGlzLmNsb25lZFRhYmxlRGF0YSk7XHJcbiAgICBsZXQgc2VsZWN0ZWRPYmo7XHJcblxyXG4gICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKGhlYWRlcikpe1xyXG4gICAgICBzZWxlY3RlZE9iaiA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldChoZWFkZXIpO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgc2VsZWN0ZWRPYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQoaGVhZGVyKTtcclxuICAgIH1cclxuXHJcbiAgICBpZihvcHRpb25zRGF0YS5maW5kSW5kZXgob2JqID0+IG9ialtoZWFkZXJdID09IFwiMFwiKSAhPSAtMSkge1xyXG4gICAgICB0aGlzLnNob3daZXJvVGltZUNoZWNrYm94ID0gdHJ1ZTtcclxuICAgICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9IHNlbGVjdGVkT2JqLmluY2x1ZGVaZXJvVGltZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICBpZihvcHRpb25zRGF0YS5maW5kSW5kZXgob2JqID0+IG9ialtoZWFkZXJdID09IFwiPG11bHRpPlwiKSAhPSAtMSkge1xyXG4gICAgICB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICAgIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkID0gc2VsZWN0ZWRPYmouaW5jbHVkZU11bHRpO1xyXG4gICAgfVxyXG4gICAgXHJcblxyXG4gICAgaWYodGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCB8fCB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCkge1xyXG4gICAgICB0aGlzLnNob3dFbnRlclRpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmKG9wdGlvbnNEYXRhLmZpbmRJbmRleChvYmogPT4gb2JqW2hlYWRlcl0gIT0gXCI8bXVsdGk+XCIgJiYgb2JqW2hlYWRlcl0gIT0gXCIwXCIpICE9IC0xKSB7XHJcbiAgICAgIHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkID0gc2VsZWN0ZWRPYmouaW5jbHVkZVRpbWVSYW5nZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFRpbWVGaWx0ZXJEYXRhRm9yUmF0aW5nUGFnZUNvbXBvbmVudChoZWFkZXI6IHN0cmluZyl7XHJcbiAgICAgIHRoaXMuc2hvd011bHRpVGltZUNoZWNrYm94ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd1plcm9UaW1lQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgICAgdGhpcy5zaG93RW50ZXJUaW1lQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgICAgdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgbGV0IG9wdGlvbnNEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5nZXRGaWx0ZXJPcHRpb25zRGF0YSh0aGlzLnRhYmxlRGF0YSwgdGhpcy5jbG9uZWRUYWJsZURhdGEpO1xyXG4gICAgICBsZXQgc2VsZWN0ZWRPYmo7XHJcblxyXG4gICAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXMoaGVhZGVyKSl7XHJcbiAgICAgICAgc2VsZWN0ZWRPYmogPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5nZXQoaGVhZGVyKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHNlbGVjdGVkT2JqID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KGhlYWRlcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKG9wdGlvbnNEYXRhLmZpbmRJbmRleChvYmogPT4gb2JqW2hlYWRlcl1bMF0gPT0gXCIwXCIpICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCA9IHNlbGVjdGVkT2JqLmluY2x1ZGVaZXJvVGltZTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgIGlmKG9wdGlvbnNEYXRhLmZpbmRJbmRleChvYmogPT4gb2JqW2hlYWRlcl1bMF0gPT0gXCI8bXVsdGk+XCIpICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5zaG93TXVsdGlUaW1lQ2hlY2tib3ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkID0gc2VsZWN0ZWRPYmouaW5jbHVkZU11bHRpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG5cclxuICAgICAgaWYodGhpcy5zaG93WmVyb1RpbWVDaGVja2JveCB8fCB0aGlzLnNob3dNdWx0aVRpbWVDaGVja2JveCkge1xyXG4gICAgICAgIHRoaXMuc2hvd0VudGVyVGltZUNoZWNrYm94ID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgaWYob3B0aW9uc0RhdGEuZmluZEluZGV4KG9iaiA9PiBvYmpbaGVhZGVyXVswXSAhPSBcIjxtdWx0aT5cIiAmJiBvYmpbaGVhZGVyXVswXSAhPSBcIjBcIikgIT0gLTEpIHtcclxuICAgICAgICB0aGlzLmVudGVyVGltZUNoZWNrYm94Q2hlY2tlZCA9IHNlbGVjdGVkT2JqLmluY2x1ZGVUaW1lUmFuZ2U7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdE9yVW5zZWxlY3RNdWx0aVRpbWVDaGVja2JveCgpIHtcclxuICAgIHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkID0gIXRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkO1xyXG4gICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RPclVuc2VsZWN0WmVyb1RpbWVDaGVja2JveCgpIHtcclxuICAgIHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQgPSAhdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZDtcclxuICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0T3JVbnNlbGVjdEVudGVyVGltZUNoZWNrYm94KCkge1xyXG4gICAgdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWQgPSAhdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWQ7XHJcbiAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIFxyXG4gIHNlbGVjdFVuc2VsZWN0Q2hlY2tib3goZGF0YTogVG9vbHRpcE1vZGVsKSB7XHJcbiAgICBkYXRhLmlzU2VsZWN0ZWQgPSAhZGF0YS5pc1NlbGVjdGVkO1xyXG4gICAgbGV0IGluZGV4ID0gdGhpcy5jbG9uZWRUb29sdGlwT3B0aW9ucy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmlkID09IGRhdGEuaWQpO1xyXG4gICAgdGhpcy5jbG9uZWRUb29sdGlwT3B0aW9uc1tpbmRleF0uaXNTZWxlY3RlZCA9IGRhdGEuaXNTZWxlY3RlZDtcclxuICAgICAgICBcclxuICAgIGxldCBzZWxlY3RlZEl0ZW1zID0gdGhpcy50b29sdGlwT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlzU2VsZWN0ZWQpO1xyXG4gICAgbGV0IHVuc2VsZWN0ZWRJdGVtcyA9IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uaXNTZWxlY3RlZCk7XHJcblxyXG4gICAgdGhpcy5kaXNhYmxlQ2xlYXJBbGwgPSAgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgIHRoaXMuZGlzYWJsZVNlbGVjdEFsbCA9IHVuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMDtcclxuICAgIHRoaXMuc2VsZWN0ZWRDaGVja2JveE9wdGlvbnNDb3VudCA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoO1xyXG4gICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gIH1cclxuXHJcbiAgbWluVmFsdWVDaGFuZ2VkKHZhbDogc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsIHx8IHZhbCA9PSAnMCcpIHtcclxuICAgICAgdGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPSBwYXJzZUludCh2YWwpO1xyXG4gICAgICB0aGlzLmlzTWluVGV4dEJveEVtcHR5ID0gZmFsc2U7XHJcbiAgICAgIGlmICh0aGlzLmlzTWF4VGV4dEJveEVtcHR5KSB7XHJcbiAgICAgICAgaWYgKCAodGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPiB0aGlzLm9wdGlvbnMuY2VpbCkgfHwgKHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlIDwgdGhpcy5vcHRpb25zLmZsb29yKSkge1xyXG4gICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUgPiB0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSkge1xyXG4gICAgICAgIGlmKHRoaXMuaXNWYWx1ZUluUmFuZ2UodGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUpKXtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICBpZih0aGlzLmlzVmFsdWVJblJhbmdlKHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlKSl7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgICAgIFxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlIDwgdGhpcy5vcHRpb25zLmZsb29yKSB7XHJcbiAgICAgICAgdGhpcy5zaG93U2xpZGVyTWluVmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc29sZS5sb2codGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5sb2coJ2luc2lkZSBlbHNlIGNvbmRpdGlvbicpO1xyXG4gICAgICB0aGlzLnNsaWRlckVudGVyZWRNaW5WYWx1ZSA9IHRoaXMub3B0aW9ucy5mbG9vcjtcclxuICAgICAgdGhpcy5pc01pblRleHRCb3hFbXB0eSA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dFcnJvckZvck1pbkFuZE1heFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBtYXhWYWx1ZUNoYW5nZWQodmFsOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWwgfHwgdmFsID09IFwiMFwiKSB7XHJcbiAgICAgIHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlID0gcGFyc2VJbnQodmFsKTtcclxuICAgICAgdGhpcy5pc01heFRleHRCb3hFbXB0eSA9IGZhbHNlO1xyXG4gICAgICBpZiAodGhpcy5pc01pblRleHRCb3hFbXB0eSkge1xyXG4gICAgICAgIGlmICggKHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlIDwgdGhpcy5vcHRpb25zLmZsb29yKSB8fCAodGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPiB0aGlzLm9wdGlvbnMuY2VpbCkpIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmluY29ycmVjdFNsaWRlcklucHV0ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2xpZGVyRW50ZXJlZE1heFZhbHVlIDwgdGhpcy5zbGlkZXJFbnRlcmVkTWluVmFsdWUpIHtcclxuICAgICAgICBpZih0aGlzLmlzVmFsdWVJblJhbmdlKHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlKSl7XHJcbiAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgIHRoaXMuc2hvd1NsaWRlck1pblZhbHVlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgaWYodGhpcy5pc1ZhbHVlSW5SYW5nZSh0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSkpe1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgICAgIC8vIHRoaXMuc2hvd01heEVycm9yID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZSA+IHRoaXMub3B0aW9ucy5jZWlsKSB7XHJcbiAgICAgICAgdGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUgPSB0aGlzLm9wdGlvbnMuY2VpbDtcclxuICAgICAgdGhpcy5pc01heFRleHRCb3hFbXB0eSA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2hvd1NsaWRlck1heFZhbHVlRXJyb3IgPSBmYWxzZTtcclxuICAgICAgY29uc29sZS5sb2codGhpcy5zbGlkZXJFbnRlcmVkTWF4VmFsdWUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zaG93RXJyb3JGb3JNaW5BbmRNYXhWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0Vycm9yRm9yTWluQW5kTWF4VmFsdWUoKXtcclxuICAgICAgaWYodGhpcy5pc01pblRleHRCb3hFbXB0eSAmJiB0aGlzLmlzTWF4VGV4dEJveEVtcHR5KXtcclxuICAgICAgICB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNob3dTbGlkZXJNYXhWYWx1ZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmRpc2FibGVTbGlkZXJBcHBseUJ1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgfVxyXG4gICAgIGVsc2UgaWYodGhpcy5zaG93U2xpZGVyTWF4VmFsdWVFcnJvciB8fCB0aGlzLnNob3dTbGlkZXJNaW5WYWx1ZUVycm9yKXtcclxuICAgICAgdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgfVxyXG4gICAgIGVsc2V7XHJcbiAgICAgIHRoaXMuaW5jb3JyZWN0U2xpZGVySW5wdXQgPSBmYWxzZTtcclxuICAgICB9XHJcbiAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdG4oKTtcclxuICB9XHJcblxyXG4gIGlzVmFsdWVJblJhbmdlKHZhbDogbnVtYmVyKXtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmxvb3IgPD0gdmFsICYmIHZhbCA8PSB0aGlzLm9wdGlvbnMuY2VpbDtcclxuICB9XHJcblxyXG4gIGRpc2FibGVTbGlkZXJBcHBseUJ0bigpe1xyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ICYmIHRoaXMuc2hvd1NvcnRDb21wb25lbnQpe1xyXG4gICAgICBsZXQgaXNGaWx0ZXJDaGFuZ2VkID0gdGhpcy5jaGVja0lmU2xpZGVyVG9vbHRpcElzRmlsdGVyZWQoKTtcclxuICAgICAgbGV0IGlzU29ydENoYW5nZWQgPSB0aGlzLmNoZWNrSWZTb3J0aW5nQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgXHJcbiAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCB8fCAoIWlzU29ydENoYW5nZWQgJiYgIWlzRmlsdGVyQ2hhbmdlZCApO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQpe1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uID0gdGhpcy5pbmNvcnJlY3RTbGlkZXJJbnB1dCB8fCAhdGhpcy5jaGVja0lmU2xpZGVyVG9vbHRpcElzRmlsdGVyZWQoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5zaG93U29ydENvbXBvbmVudCl7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2xpZGVyQXBwbHlCdXR0b24gPSAhdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNsaWRlclZhbHVlQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5zbGlkZXJWYWx1ZSA9IHsgbWluOiB0aGlzLnNsaWRlck1pblZhbHVlLCBtYXg6IHRoaXMuc2xpZGVyTWF4VmFsdWUgfTtcclxuICB9XHJcblxyXG4gIGNhbmNlbFNsaWRlckZpbHRlcigpIHtcclxuICAgIHRoaXMuc2xpZGVyVmFsdWUgPSBudWxsO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGFwcGx5RmlsdGVycygpIHtcclxuICAgIHRoaXMuYXBwbHlMaXN0RmlsdGVycygpO1xyXG4gICAgdGhpcy5hcHBseVNvcnRpbmdPbkZpbHRlcmVkRGF0YSgpO1xyXG4gICAgLy8gdGhpcy5lbWl0RGF0YSgpO1xyXG4gICAgdGhpcy5zZXRJbml0aWFsUm93c0ZvclRhYmxlKCk7XHJcbiAgICB0aGlzLmRpc2FibGVFbmFibGVFYWNoQ29sdW1uVG9vbHRpcEljb24oKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZlRoZUN1cnJlbnRGaWx0ZXJUYWIodGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICAgIHRoaXMuZW1pdERhdGEoKTtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcbiAgfVxyXG5cclxuICBhcHBseUxpc3RGaWx0ZXJzKCl7XHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICBsZXQgY3VycmVudFNlbGVjdGVkVmFsdWUgPSBbXTtcclxuICAgICAgXHJcbiAgICAgIGlmKHRoaXMudG9vbHRpcE9wdGlvbnMpe1xyXG5cclxuICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZFZhbHVlID0gc29ydEJ5KHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc1NlbGVjdGVkKS5tYXAoaXRlbSA9PiBpdGVtLnZhbHVlKSk7XHJcblxyXG4gICAgICAgICAgaWYoIXRoaXMuc2VhcmNoSXRlbSAmJiBjdXJyZW50U2VsZWN0ZWRWYWx1ZS5sZW5ndGggPT0gdGhpcy50b29sdGlwT3B0aW9ucy5sZW5ndGggJiYgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBibGFua0luZGV4ID0gY3VycmVudFNlbGVjdGVkVmFsdWUuZmluZEluZGV4KChpdGVtOiBzdHJpbmcpID0+IGl0ZW0gPT0gbnVsbCk7XHJcbiAgICAgIGlmKGJsYW5rSW5kZXggIT0gLTEpe1xyXG4gICAgICAgIGN1cnJlbnRTZWxlY3RlZFZhbHVlID0gc29ydEJ5KGN1cnJlbnRTZWxlY3RlZFZhbHVlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJlT3JkZXJBcHBsaWVkRmlsdGVyc1N0YXRlKHRoaXMuY2xvbmVkVGFibGVEYXRhLGN1cnJlbnRTZWxlY3RlZFZhbHVlKTtcclxuICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLCBjdXJyZW50U2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmZpbHRlckRhdGEodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwiXCIpO1xyXG4gICAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLm5vU29ydGluZ0FwcGxpZWREYXRhID0gY2xvbmVEZWVwKHRoaXMudGFibGVEYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFwcGx5U29ydGluZ09uRmlsdGVyZWREYXRhKCl7XHJcbiAgICBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgaWYodGhpcy5pc1NvcnRDaGFuZ2VkKXtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNvcnRNYXAoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmKHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKXtcclxuICAgICAgICB0aGlzLmNoZWNrSWZTb3J0aW5nSXNBcHBsaWVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICB0aGlzLmNoZWNrSWZTb3J0aW5nSXNBcHBsaWVkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbWl0RGF0YSgpe1xyXG4gICAgaWYodGhpcy5pc0ZpbHRlckNoYW5nZWQgJiYgdGhpcy5pc1NvcnRDaGFuZ2VkKXtcclxuICAgICAgdGhpcy5maWx0ZXJBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICB0aGlzLmZpbHRlckFwcGxpZWRUb1RhYmxlLmVtaXQodGhpcy50YWJsZURhdGEpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLmlzU29ydENoYW5nZWQpe1xyXG4gICAgICB0aGlzLnNvcnRpbmdBcHBsaWVkVG9UYWJsZS5lbWl0KHRoaXMudGFibGVEYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFwcGx5U29ydGluZyhrZXk6IHN0cmluZyl7XHJcbiAgICBpZih0aGlzLnRlbXBTb3J0T3JkZXIgPT0gXCJBU0NcIil7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLnNvcnREYXRhRm9yQ29tcG9uZW50T3RoZXJUaGFuTHVyQW5kQ3NyUGFnZSh0cnVlLHRoaXMudGFibGVEYXRhLGtleSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnRlbXBTb3J0T3JkZXIgPT0gXCJERVNDXCIpe1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gY2xvbmVEZWVwKHRoaXMuYW5uYVNvcnRTZXJ2aWNlLnNvcnREYXRhRm9yQ29tcG9uZW50T3RoZXJUaGFuTHVyQW5kQ3NyUGFnZShmYWxzZSx0aGlzLnRhYmxlRGF0YSxrZXkpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy50ZW1wU29ydE9yZGVyID09IFwiREVGQVVMVFwiKXtcclxuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IGNsb25lRGVlcCh0aGlzLmFubmFTb3J0U2VydmljZS5ub1NvcnRpbmdBcHBsaWVkRGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXZlcnQoKSB7XHJcbiAgICB0aGlzLnRlbXBUb29sdGlwRGF0YSA9IGNsb25lRGVlcCh0aGlzLnRvb2xUaXBkYXRhKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcE1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLCB0aGlzLnRlbXBUb29sdGlwRGF0YSk7XHJcbiAgICB0aGlzLnRvb2xUaXBkYXRhID0gbnVsbDtcclxuICB9XHJcblxyXG4gIGNsb3NlQ2hlY2tib3hGaWx0ZXIoKSB7XHJcbiAgICBpZiAodGhpcy50b29sVGlwZGF0YSkge1xyXG4gICAgICB0aGlzLnJldmVydCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGFwcGx5U2xpZGVyRmlsdGVyKCkge1xyXG5cclxuICAgIHRoaXMuYXBwbHlTbGlkZXJGaWx0ZXJPbkRhdGEoKTtcclxuICAgIHRoaXMuYXBwbHlTb3J0aW5nT25GaWx0ZXJlZERhdGEoKTtcclxuICAgIHRoaXMuZW1pdERhdGEoKTtcclxuICAgIHRoaXMuc2V0SW5pdGlhbFJvd3NGb3JUYWJsZSgpO1xyXG4gICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS51cGRhdGVTdGF0ZU9mVGhlQ3VycmVudEZpbHRlclRhYih0aGlzLmFubmFTb3J0U2VydmljZS5jb2x1bW5Tb3J0U3RhdGUpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGFwcGx5U2xpZGVyRmlsdGVyT25EYXRhKCl7XHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICBsZXQgY3VycmVudFNsaWRlckRhdGE6IHttaW46YW55LCBtYXg6IGFueX0gPSB7bWluOiBudWxsICwgbWF4OiBudWxsfTtcclxuXHJcbiAgICAgIC8vIGlmKHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkpe1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWluID0gdGhpcy5vcHRpb25zLmZsb29yO1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWF4ID0gdGhpcy5zbGlkZXJNYXhWYWx1ZTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBlbHNlIGlmKHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkpe1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWF4ID0gdGhpcy5vcHRpb25zLmNlaWw7XHJcbiAgICAgIC8vICAgICBjdXJyZW50U2xpZGVyRGF0YS5taW4gPSB0aGlzLnNsaWRlck1pblZhbHVlO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGVsc2V7XHJcbiAgICAgICAgICBjdXJyZW50U2xpZGVyRGF0YS5tYXggPSB0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZTtcclxuICAgICAgICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1pbiA9IHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlO1xyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICBpZihjdXJyZW50U2xpZGVyRGF0YS5taW4gPT0gdGhpcy5vcHRpb25zLmZsb29yICYmIGN1cnJlbnRTbGlkZXJEYXRhLm1heCA9PSB0aGlzLm9wdGlvbnMuY2VpbCAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSApe1xyXG4gICAgICAgICAgY3VycmVudFNsaWRlckRhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZU9yZGVyQXBwbGllZEZpbHRlcnNTdGF0ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSxjdXJyZW50U2xpZGVyRGF0YSk7XHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sY3VycmVudFNsaWRlckRhdGEpO1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIik7XHJcbiAgICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLm5vU29ydGluZ0FwcGxpZWREYXRhID0gY2xvbmVEZWVwKHRoaXMudGFibGVEYXRhKTtcclxuICAgICAgdGhpcy5kaXNhYmxlRW5hYmxlRWFjaENvbHVtblRvb2x0aXBJY29uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5jZWxJbkRhdGVGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcCgpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlU29ydE1hcCgpe1xyXG4gICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5lbnRyaWVzKCkpIHtcclxuICAgICAgdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlLnNldChrZXksIFwiREVGQVVMVFwiKTtcclxuICAgIH1cclxuICAgIHRoaXMuYW5uYVNvcnRTZXJ2aWNlLmNvbHVtblNvcnRTdGF0ZS5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLCB0aGlzLnRlbXBTb3J0T3JkZXIpO1xyXG4gICAgdGhpcy5hcHBseVNvcnRpbmcodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICB9XHJcblxyXG4gIGFwcGx5RGF0ZUZpbHRlcigpIHtcclxuICAgIHRoaXMuYXBwbHlEYXRlRmlsdGVyT25EYXRhKCk7XHJcbiAgICB0aGlzLmFwcGx5U29ydGluZ09uRmlsdGVyZWREYXRhKCk7XHJcbiAgICB0aGlzLmVtaXREYXRhKCk7XHJcbiAgICB0aGlzLnNldEluaXRpYWxSb3dzRm9yVGFibGUoKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZlRoZUN1cnJlbnRGaWx0ZXJUYWIodGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcbiAgICBcclxuICB9XHJcblxyXG4gIGFwcGx5RGF0ZUZpbHRlck9uRGF0YSgpe1xyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ICYmIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkKXtcclxuICAgICAgbGV0IGN1cnJlbnRTZWxlY3RlZERhdGUgPSB0aGlzLmNhbGVuZGFyU2VsZWN0aW9uO1xyXG4gICAgICBcclxuICAgICAgbGV0IGZyb21EYXRlID0ge3llYXI6IGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUueWVhcixtb250aDogY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZS5tb250aCxkYXk6IGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUuZGF5fTtcclxuICAgICAgbGV0IHRvRGF0ZSA9IHt5ZWFyOiBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZS55ZWFyLG1vbnRoOiBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZS5tb250aCxkYXk6IGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlLmRheX07XHJcbiAgICAgICAgICBcclxuICAgICAgaWYoaXNFcXVhbCh0aGlzLmNhbGVuZGFyTWluRW5hYmxlZERhdGUsZnJvbURhdGUpICYmIGlzRXF1YWwodGhpcy5jYWxlbmRhck1heEVuYWJsZWREYXRlLHRvRGF0ZSkgJiYgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgY3VycmVudFNlbGVjdGVkRGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgICBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlID0gbW9tZW50KHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0TmdiRGF0ZVRvTW9tZW50KGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUpKTtcclxuICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlID0gbW9tZW50KHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0TmdiRGF0ZVRvTW9tZW50KGN1cnJlbnRTZWxlY3RlZERhdGUudG9EYXRlKSk7XHJcbiAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmVPcmRlckFwcGxpZWRGaWx0ZXJzU3RhdGUodGhpcy5jbG9uZWRUYWJsZURhdGEsY3VycmVudFNlbGVjdGVkRGF0ZSk7XHJcbiAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sY3VycmVudFNlbGVjdGVkRGF0ZSk7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5maWx0ZXJEYXRhKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcIlwiKTtcclxuICAgICAgdGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEgPSBjbG9uZURlZXAodGhpcy50YWJsZURhdGEpO1xyXG4gICAgICB0aGlzLmRpc2FibGVFbmFibGVFYWNoQ29sdW1uVG9vbHRpcEljb24oKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseVdlZWtGaWx0ZXIoZXZlbnQ6IGFueSkge1xyXG5cclxuICB9XHJcblxyXG4gIGluY3JlbWVudEhvdXIoYXJyOiBhbnlbXSkge1xyXG4gICAgaWYgKGFyclswXSA9PSBcIlwiKSB7XHJcbiAgICAgIGFyclswXSA9IDE7XHJcbiAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGFyclswXSkgPCAxMikge1xyXG4gICAgICBhcnJbMF0gPSBwYXJzZUludChhcnJbMF0pICsgMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFyclswXSA9IDE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZWNyZW1lbnRIb3VyKGFycjogYW55W10pIHtcclxuICAgIGlmIChhcnJbMF0gPT0gXCJcIikge1xyXG4gICAgICBhcnJbMF0gPSAxMjtcclxuICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoYXJyWzBdKSA+IDEpIHtcclxuICAgICAgYXJyWzBdID0gcGFyc2VJbnQoYXJyWzBdKSAtIDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhcnJbMF0gPSAxMjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluY3JlbWVudE1pbnV0ZShhcnI6IGFueVtdKSB7XHJcbiAgICBhcnJbMV0gPSBwYXJzZUludChhcnJbMV0pICsgMTU7XHJcbiAgICBpZiAocGFyc2VJbnQoYXJyWzFdKSA9PSA2MCkge1xyXG4gICAgICAgIGFyclsxXSA9IFwiMDBcIjtcclxuICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoYXJyWzFdKSA9PSAwKSB7XHJcbiAgICAgICAgYXJyWzFdID0gXCIwMFwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihwYXJzZUludChhcnJbMV0pID4gNjApe1xyXG4gICAgICAgIGxldCByZXMgPSBwYXJzZUludChhcnJbMV0pIC0gNjA7XHJcbiAgICAgICAgYXJyWzFdID0gcmVzIDwgMTAgPyBgMCR7cmVzfWAgOiByZXMudG9TdHJpbmcoKTsgICAgXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZWNyZW1lbnRNaW51dGUoYXJyOiBhbnkpIHtcclxuICAgIGFyclsxXSA9IHBhcnNlSW50KGFyclsxXSkgLSAxNTtcclxuICAgIGlmIChwYXJzZUludChhcnJbMV0pIDwgMCkge1xyXG4gICAgICAgIGxldCByZXMgPSA2MCArIHBhcnNlSW50KGFyclsxXSk7XHJcbiAgICAgICAgYXJyWzFdID0gcmVzO1xyXG4gICAgfSBlbHNlIGlmIChwYXJzZUludChhcnJbMV0pID09IDApIHtcclxuICAgICAgICBhcnJbMV0gPSBcIjAwXCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKGFyclsxXSA8IDEwKXtcclxuICAgICAgICBhcnJbMV09IGAwJHthcnJbMV19YDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVN0YXJ0VGltZUhvdXIoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICBpZiAoaW5jcmVtZW50KSB7XHJcbiAgICAgIHRoaXMuaW5jcmVtZW50SG91cih0aGlzLnNlbGVjdGVkRnJvbVRpbWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kZWNyZW1lbnRIb3VyKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXJ0VGltZUhvdXJDaGFuZ2UodGhpcy5zZWxlY3RlZEZyb21UaW1lWzBdLnRvU3RyaW5nKCkpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlRW5kVGltZUhvdXIoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICBpZiAoaW5jcmVtZW50KSB7XHJcbiAgICAgIHRoaXMuaW5jcmVtZW50SG91cih0aGlzLnNlbGVjdGVkVG9UaW1lKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGVjcmVtZW50SG91cih0aGlzLnNlbGVjdGVkVG9UaW1lKTtcclxuICAgIH1cclxuICAgIHRoaXMuZW5kVGltZUhvdXJDaGFuZ2UodGhpcy5zZWxlY3RlZFRvVGltZVswXS50b1N0cmluZygpKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZUVuZFRpbWVNaW51dGUoaW5jcmVtZW50OiBib29sZWFuKSB7XHJcbiAgICBpZiAoaW5jcmVtZW50KSB7XHJcbiAgICAgIHRoaXMuaW5jcmVtZW50TWludXRlKHRoaXMuc2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kZWNyZW1lbnRNaW51dGUodGhpcy5zZWxlY3RlZFRvVGltZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmVuZFRpbWVNaW5DaGFuZ2UodGhpcy5zZWxlY3RlZFRvVGltZVsxXS50b1N0cmluZygpKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVN0YXJ0VGltZU1pbnV0ZShpbmNyZW1lbnQ6IGJvb2xlYW4pIHtcclxuICAgIGlmIChpbmNyZW1lbnQpIHtcclxuICAgICAgdGhpcy5pbmNyZW1lbnRNaW51dGUodGhpcy5zZWxlY3RlZEZyb21UaW1lKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGVjcmVtZW50TWludXRlKHRoaXMuc2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXJ0VGltZU1pbkNoYW5nZSh0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMV0udG9TdHJpbmcoKSk7XHJcbiAgfVxyXG5cclxuICBhcHBseVRpbWVGaWx0ZXJzKCkge1xyXG5cclxuICAgIHRoaXMuYXBwbHlUaW1lRmlsdGVyT25EYXRhKCk7XHJcbiAgICB0aGlzLmFwcGx5U29ydGluZ09uRmlsdGVyZWREYXRhKCk7XHJcbiAgICB0aGlzLmVtaXREYXRhKCk7XHJcbiAgICB0aGlzLnNldEluaXRpYWxSb3dzRm9yVGFibGUoKTtcclxuICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudXBkYXRlU3RhdGVPZlRoZUN1cnJlbnRGaWx0ZXJUYWIodGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlKTtcclxuICAgIHRoaXMuY2xvc2VUb29sdGlwKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgYXBwbHlUaW1lRmlsdGVyT25EYXRhKCl7XHJcbiAgICBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgJiYgdGhpcy5pc0ZpbHRlckNoYW5nZWQpe1xyXG4gICAgICBsZXQgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlcjoge2Zyb21UaW1lOiBzdHJpbmcsIHRvVGltZTpzdHJpbmcsIGluY2x1ZGVNdWx0aTogYm9vbGVhbiwgaW5jbHVkZVplcm86IGJvb2xlYW4sIGluY2x1ZGVUaW1lUmFuZ2U6IGJvb2xlYW59ID0ge1xyXG4gICAgICAgIGZyb21UaW1lOiBudWxsLFxyXG4gICAgICAgIHRvVGltZTogbnVsbCxcclxuICAgICAgICBpbmNsdWRlTXVsdGk6IGZhbHNlLFxyXG4gICAgICAgIGluY2x1ZGVaZXJvOiBmYWxzZSxcclxuICAgICAgICBpbmNsdWRlVGltZVJhbmdlOiBmYWxzZSxcclxuICAgICAgfTtcclxuICBcclxuICAgICAgbGV0IGZyb21UaW1lMjRIckZvcm1hdEFyciA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG90d2VudHlGb3VySHJzRm9ybWF0KFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVswXSArIFwiOlwiICsgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzFdICsgXCIgXCIgKyB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMl0sXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgZnJvbVRpbWUyNEhyRm9ybWF0ID0gZnJvbVRpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyBmcm9tVGltZTI0SHJGb3JtYXRBcnJbMV0gKyBcIjowMFwiO1xyXG4gICAgICBcclxuICAgICAgbGV0IHRvVGltZTI0SHJGb3JtYXRBcnIgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVG9UaW1lWzBdICsgXCI6XCIgKyB0aGlzLnNlbGVjdGVkVG9UaW1lWzFdICsgXCIgXCIgKyB0aGlzLnNlbGVjdGVkVG9UaW1lWzJdLFxyXG4gICAgICAgIHRydWVcclxuICAgICAgKTtcclxuICAgICAgbGV0IHRvVGltZTI0SHJGb3JtYXQgPSB0b1RpbWUyNEhyRm9ybWF0QXJyWzBdICsgXCI6XCIgKyB0b1RpbWUyNEhyRm9ybWF0QXJyWzFdICsgXCI6MDBcIjtcclxuICBcclxuICAgICAgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlciA9IHsgZnJvbVRpbWU6IGZyb21UaW1lMjRIckZvcm1hdCwgdG9UaW1lOiB0b1RpbWUyNEhyRm9ybWF0LCBpbmNsdWRlTXVsdGk6IHRoaXMubXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkLCBcclxuICAgICAgaW5jbHVkZVplcm86IHRoaXMuemVyb1RpbWVDaGVja2JveENoZWNrZWQsIGluY2x1ZGVUaW1lUmFuZ2U6IHRoaXMuZW50ZXJUaW1lQ2hlY2tib3hDaGVja2VkfTtcclxuICBcclxuICAgICAgbGV0IGlzRmlsdGVyZWQgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJlT3JkZXJBcHBsaWVkRmlsdGVyc1N0YXRlKHRoaXMuY2xvbmVkVGFibGVEYXRhLGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIpO1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXIpO1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuZmlsdGVyRGF0YSh0aGlzLmNsb25lZFRhYmxlRGF0YSwgXCJcIik7XHJcbiAgICAgIFxyXG4gICAgICBpZighaXNGaWx0ZXJlZCl7XHJcbiAgICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZGVsZXRlKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hbm5hU29ydFNlcnZpY2Uubm9Tb3J0aW5nQXBwbGllZERhdGEgPSBjbG9uZURlZXAodGhpcy50YWJsZURhdGEpO1xyXG4gICAgICB0aGlzLmRpc2FibGVFbmFibGVFYWNoQ29sdW1uVG9vbHRpcEljb24oKTsgICAgICAgICAgICBcclxuIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VUaW1lRmlsdGVyKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkU2VsZWN0ZWRGcm9tVGltZSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkVG9UaW1lID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkU2VsZWN0ZWRUb1RpbWUpO1xyXG4gICAgdGhpcy5jbG9zZVRvb2x0aXAoKTtcclxuICB9XHJcblxyXG4gIGRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKSB7XHJcblxyXG4gICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ICYmIHRoaXMuc2hvd1NvcnRDb21wb25lbnQpe1xyXG4gICAgICBsZXQgaXNGaWx0ZXJDaGFuZ2VkID0gdGhpcy5jaGVja0lmVGltZVRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICAgIGxldCBpc1NvcnRDaGFuZ2VkID0gdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnRuID0gIXRoaXMudmFsaWRhdGVUaW1lRmlsdGVySW5wdXQoKSB8fCAoIWlzU29ydENoYW5nZWQgJiYgIWlzRmlsdGVyQ2hhbmdlZCApO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQpe1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0biA9ICF0aGlzLnZhbGlkYXRlVGltZUZpbHRlcklucHV0KCkgfHwgIXRoaXMuY2hlY2tJZlRpbWVUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gPSAhdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVRpbWVGaWx0ZXJJbnB1dCgpe1xyXG4gICAgaWYodGhpcy5zdGFydFRpbWVIb3VyRXJyIHx8IHRoaXMuc3RhcnRUaW1lTWluRXJyIHx8IHRoaXMuZW5kVGltZUhvdXJFcnIgfHwgdGhpcy5lbmRUaW1lTWluRXJyKXtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLm11bHRpVGltZUNoZWNrYm94Q2hlY2tlZCAmJiAhdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCAmJiAhdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWQpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHRpbWVGb3JtYXQgPSBcIkhIOm1tOnNzXCI7XHJcblxyXG4gICAgbGV0IHN0YXJ0VGltZTI0SHJGb3JtYXRBcnIgPSB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydFRvdHdlbnR5Rm91ckhyc0Zvcm1hdChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMF0gKyBcIjpcIiArIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVsxXSArIFwiIFwiICsgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzJdLFxyXG4gICAgICAgIHRydWVcclxuICAgICk7XHJcbiAgICBsZXQgc3RhcnRUaW1lMjRIckZvcm1hdCA9IHN0YXJ0VGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIHN0YXJ0VGltZTI0SHJGb3JtYXRBcnJbMV0gKyBcIjowMFwiO1xyXG4gICAgbGV0IGVuZFRpbWUyNEhyRm9ybWF0QXJyID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb3R3ZW50eUZvdXJIcnNGb3JtYXQoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRvVGltZVswXSArIFwiOlwiICsgdGhpcy5zZWxlY3RlZFRvVGltZVsxXSArIFwiIFwiICsgdGhpcy5zZWxlY3RlZFRvVGltZVsyXSxcclxuICAgICAgICB0cnVlXHJcbiAgICApO1xyXG4gICAgbGV0IGVuZFRpbWUyNEhyRm9ybWF0ID0gZW5kVGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIGVuZFRpbWUyNEhyRm9ybWF0QXJyWzFdICsgXCI6MDBcIjtcclxuXHJcbiAgICByZXR1cm4gIShtb21lbnQoc3RhcnRUaW1lMjRIckZvcm1hdCwgdGltZUZvcm1hdCkuaXNBZnRlcihtb21lbnQoZW5kVGltZTI0SHJGb3JtYXQsIHRpbWVGb3JtYXQpKSk7ICAgICAgICBcclxuICB9XHJcblxyXG4gIHNvcnRlZERhdGEoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50LnR5cGUgPT0gXCJub25lXCIpIHtcclxuICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmZpbHRlckRhdGEodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwiXCIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50YWJsZURhdGEgPSBldmVudC5kYXRhO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zb3J0aW5nQXBwbGllZFRvVGFibGUuZW1pdCh0aGlzLnRhYmxlRGF0YSk7XHJcbiAgfVxyXG5cclxuICBjaGVja0lmU29ydGluZ0lzQXBwbGllZCgpIHtcclxuICAgIGZvcihsZXQgW2tleSx2YWx1ZV0gb2YgdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlLmVudHJpZXMoKSl7XHJcbiAgICAgIGlmKHZhbHVlID09IFwiQVNDXCIpe1xyXG4gICAgICAgICAgdGhpcy50YWJsZURhdGEgPSBjbG9uZURlZXAodGhpcy5hbm5hU29ydFNlcnZpY2Uuc29ydERhdGFGb3JDb21wb25lbnRPdGhlclRoYW5MdXJBbmRDc3JQYWdlKHRydWUsdGhpcy50YWJsZURhdGEsa2V5KSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih2YWx1ZSA9PSBcIkRFU0NcIil7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IGNsb25lRGVlcCh0aGlzLmFubmFTb3J0U2VydmljZS5zb3J0RGF0YUZvckNvbXBvbmVudE90aGVyVGhhbkx1ckFuZENzclBhZ2UoZmFsc2UsdGhpcy50YWJsZURhdGEsa2V5KSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBkaXNhYmxlRW5hYmxlRWFjaENvbHVtblRvb2x0aXBJY29uKCkge1xyXG4gICAgdGhpcy50YWJsZUhlYWRlcnMuZm9yRWFjaChoZWFkZXIgPT4ge1xyXG4gICAgICBcclxuICAgICAgaGVhZGVyLmhlYWRlckluZm8uZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpZiAoaXRlbS5zaG93VG9vbHRpcEljb24pIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgbGV0IHZhbHVlcyA9IFtdO1xyXG4gICAgICAgICAgaXRlbS5kaXNhYmxlVG9vbHRpcEljb24gPSB0cnVlO1xyXG5cclxuICAgICAgICAgIGl0ZW0uZmlsdGVyU29ydE9iamVjdEtleXMuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICBpZihrZXkgPT0gXCJwZXJpb2RcIil7XHJcbiAgICAgICAgICAgICAgbGV0IHVuaXFTdGFydERhdGUgPSB1bmlxKHRoaXMudGFibGVEYXRhLm1hcCgodTogeyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiB1W1wic3RhcnREYXRlXCJdKSk7XHJcbiAgICAgICAgICAgICAgbGV0IHVuaXFFbmREYXRlID0gdW5pcSh0aGlzLnRhYmxlRGF0YS5tYXAoKHU6IHsgW3g6IHN0cmluZ106IGFueTsgfSkgPT4gdVtcImVuZERhdGVcIl0pKTtcclxuXHJcbiAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlVG9vbHRpcEljb24gPSAodW5pcVN0YXJ0RGF0ZS5sZW5ndGggPiAxIHx8IHVuaXFFbmREYXRlLmxlbmd0aCA+IDEpID8gZmFsc2UgOiB0cnVlOyBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgIHZhbHVlcyA9IHRoaXMudGFibGVEYXRhLm1hcCgodTogeyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiB1W2tleV0pO1xyXG4gICAgICAgICAgICAgIGlmKGl0ZW0uZmlsdGVyID09IFwiQ0hFQ0tCT1hcIiAmJiB1bmlxKHZhbHVlcykuZmlsdGVyKG4gPT4gbiE9bnVsbCkubGVuZ3RoID4gMSl7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGl0ZW0uZGlzYWJsZVRvb2x0aXBJY29uID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYoaXRlbS5maWx0ZXIgIT0gXCJDSEVDS0JPWFwiICYmIHVuaXEodmFsdWVzKS5maWx0ZXIobiA9PiBuIT1udWxsICYmIG4hPVwiLVwiKS5sZW5ndGggPiAxKXtcclxuICAgICAgICAgICAgICAgIGl0ZW0uZGlzYWJsZVRvb2x0aXBJY29uID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHNldE1hcmdpbkxlZnRGb3JGaWx0ZXJJY29uKCl7XHJcbiAgICBsZXQgZWxlbWVudEFyciA9IHRoaXMudmlld0NoaWxkVGFibGVIZWFkZXJzLnRvQXJyYXkoKTtcclxuICAgIGVsZW1lbnRBcnIuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBsZXQgY2hpbGREaXZFbGVtZW50cyA9IGl0ZW0ubmF0aXZlRWxlbWVudC5jaGlsZHJlbjtcclxuICAgICAgXHJcbiAgICAgIGlmIChjaGlsZERpdkVsZW1lbnRzLmxlbmd0aCA9PSAyKSB7XHJcbiAgICAgICAgbGV0IGZpcnN0UGFyYWdyYXBoV2lkdGggPSBjaGlsZERpdkVsZW1lbnRzWzBdLmNoaWxkcmVuWzBdO1xyXG4gICAgICAgIGxldCBzZWNvbmRQYXJhZ3JhcGhXaWR0aCA9IGNoaWxkRGl2RWxlbWVudHNbMV0uY2hpbGRyZW5bMF07XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYoZmlyc3RQYXJhZ3JhcGhXaWR0aC5vZmZzZXRXaWR0aCA+IHNlY29uZFBhcmFncmFwaFdpZHRoLm9mZnNldFdpZHRoKXtcclxuICAgICAgICAgIGxldCBkaWZmID0gZmlyc3RQYXJhZ3JhcGhXaWR0aC5vZmZzZXRXaWR0aCAtIHNlY29uZFBhcmFncmFwaFdpZHRoLm9mZnNldFdpZHRoO1xyXG4gICAgICAgICAgaWYoY2hpbGREaXZFbGVtZW50c1swXS5jaGlsZHJlbi5sZW5ndGggPT0gMil7XHJcbiAgICAgICAgICAgIGNoaWxkRGl2RWxlbWVudHNbMF0uY2hpbGRyZW5bMV0uc3R5bGUubWFyZ2luTGVmdCA9IDQgKyAncHgnO1xyXG4gICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgaWYoY2hpbGREaXZFbGVtZW50c1sxXS5jaGlsZHJlbi5sZW5ndGggPT0gMil7XHJcblxyXG4gICAgICAgICAgICBjaGlsZERpdkVsZW1lbnRzWzFdLmNoaWxkcmVuWzFdLnN0eWxlLm1hcmdpbkxlZnQgPSBkaWZmICsgNCArICdweCc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICBsZXQgZGlmZiA9IHNlY29uZFBhcmFncmFwaFdpZHRoLm9mZnNldFdpZHRoIC0gZmlyc3RQYXJhZ3JhcGhXaWR0aC5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgIGlmKGNoaWxkRGl2RWxlbWVudHNbMF0uY2hpbGRyZW4ubGVuZ3RoID09IDIpe1xyXG4gICAgICAgICAgICBjaGlsZERpdkVsZW1lbnRzWzBdLmNoaWxkcmVuWzFdLnN0eWxlLm1hcmdpbkxlZnQgPSBkaWZmICsgNCArICdweCc7XHJcbiAgICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgICBpZihjaGlsZERpdkVsZW1lbnRzWzFdLmNoaWxkcmVuLmxlbmd0aCA9PSAyKXtcclxuXHJcbiAgICAgICAgICAgIGNoaWxkRGl2RWxlbWVudHNbMV0uY2hpbGRyZW5bMV0uc3R5bGUubWFyZ2luTGVmdCA9IDQgKyAncHgnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkYXRhUm93Q2xpY2tlZChyb3dEYXRhOiBhbnkpIHtcclxuICAgIHRoaXMucm93Q2xpY2tlZC5lbWl0KHJvd0RhdGEpO1xyXG4gIH1cclxuXHJcbiAgcmFkaW9CdXR0b25DbGlja2VkKGRhdGE6IGFueSwgYWN0aW9uOiBzdHJpbmcsIGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIGlmICghaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnJhZGlvQnV0dG9uU2VsZWN0ZWQuZW1pdCh7IGRhdGEsIGFjdGlvbiB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJpbmRUaGVWYWx1ZVRvU2VsbGVyR3JvdXBUb29sdGlwKHNlbGxlckdyb3VwSGllcmFyY2h5OiBSYXRpbmdTZWxsZXJHcm91cEhpZXJhcmNoeVtdLCB0b29sdGlwOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhpZXJhcmNoeVRvb2x0aXAgJiYgdGhpcy5oaWVyYXJjaHlUb29sdGlwLm9wZW4pIHtcclxuICAgICAgdGhpcy5oaWVyYXJjaHlUb29sdGlwLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGxlckdyb3VwSGllcmFyY2h5ID0gc2VsbGVyR3JvdXBIaWVyYXJjaHk7XHJcbiAgICB0aGlzLmhpZXJhcmNoeVRvb2x0aXAgPSB0b29sdGlwO1xyXG4gICAgdGhpcy5oaWVyYXJjaHlUb29sdGlwLm9wZW4oKTtcclxuICB9XHJcblxyXG4gIGljb25DbGlja2VkKHJvd0RhdGE6IGFueSxpY29uQ2xhc3M6IHN0cmluZyl7XHJcbiAgICBcclxuICAgIGlmKFwib3JkZXJJZFwiIGluIHJvd0RhdGEgJiYgaWNvbkNsYXNzLmluY2x1ZGVzKFwibWRpLXN0YXJcIikgKXtcclxuICAgICAgdGhpcy5zZWxlY3RlZFN0YXJyZWRPcmRlcklkID0gcm93RGF0YS5vcmRlcklkO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ3RJY29uQ2xpY2tlZC5lbWl0KHtkYXRhOiByb3dEYXRhLGljb25DbGFzczogaWNvbkNsYXNzfSk7XHJcbiAgfVxyXG5cclxuICBzdmdJY29uQ2xpY2tlZChkYXRhOiBHdENvbHVtbkljb25FbWl0dGVkRGF0YSl7XHJcbiAgICB0aGlzLmd0U1ZHSWNvbkNsaWNrZWQuZW1pdChkYXRhKTtcclxuICB9XHJcblxyXG4gIHRleHRBY3Rpb25DbGlja2VkKHJvd0RhdGE6IGFueSxpZDogbnVtYmVyKXtcclxuICAgIHRoaXMuZ3RUZXh0QWN0aW9uQ2xpY2tlZC5lbWl0KHtkYXRhOnJvd0RhdGEsaWR9KTtcclxuICB9XHJcblxyXG4gIHZpZXdEZXRhaWxzQ2xpY2tlZChyb3dEYXRhOiBhbnkpe1xyXG4gICAgdGhpcy5ndFZpZXdEZXRhaWxDbGlja2VkLmVtaXQoe2RhdGE6cm93RGF0YX0pO1xyXG4gIH1cclxuXHJcbiAgc2V0Q29sdW1uU29ydFN0YXRlTWFwKCl7XHJcbiAgICB0aGlzLnRhYmxlSGVhZGVycy5mb3JFYWNoKGNvbHVtbiA9PiB7XHJcbiAgICAgICAgY29sdW1uLmhlYWRlckluZm8uZm9yRWFjaCggKGhlYWRlcikgPT4ge1xyXG4gICAgICAgICAgICBpZihoZWFkZXIuc2hvd1Rvb2x0aXBJY29uICYmIGhlYWRlci5pc1NvcnRSZXF1aXJlZCl7XHJcbiAgICAgICAgICAgICAgICBoZWFkZXIuaXNTb3J0UmVxdWlyZWQuZm9yRWFjaCggKGl0ZW0saW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYoaXRlbSl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlLnNldChoZWFkZXIuZmlsdGVyU29ydE9iamVjdEtleXNbaW5kZXhdLCBcIkRFRkFVTFRcIik7ICBcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0b3JlU29ydFR5cGVJblRlbXBWYXJpYWJsZShldmVudDogU29ydFR5cGUpe1xyXG4gICAgdGhpcy50ZW1wU29ydE9yZGVyID0gZXZlbnQ7XHJcbiAgICB0aGlzLmRpc2FibGVBcHBseUJ1dHRvbk9mU2VsZWN0ZWRGaWx0ZXIoKTtcclxuICB9XHJcblxyXG4gIHVuQ2hlY2tBbGxDaGVja2JveCgpe1xyXG4gICAgICB0aGlzLnRvb2x0aXBPcHRpb25zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5jbG9uZWRUb29sdGlwT3B0aW9ucy5maW5kSW5kZXgob3B0ID0+IG9wdC5pZCA9PSBpdGVtLmlkKTtcclxuICAgICAgICB0aGlzLmNsb25lZFRvb2x0aXBPcHRpb25zW2luZGV4XS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSAwO1xyXG4gICAgICB0aGlzLmRpc2FibGVTZWxlY3RBbGwgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNhYmxlQ2xlYXJBbGwgPSB0cnVlO1xyXG4gICAgICB0aGlzLmRpc2FibGVDaGVja2JveEFwcGx5ID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHNlbGVjdEFsbENoZWNrYm94KCl7XHJcbiAgICAgIHRoaXMudG9vbHRpcE9wdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMuZmluZEluZGV4KG9wdCA9PiBvcHQuaWQgPT0gaXRlbS5pZCk7XHJcbiAgICAgICAgdGhpcy5jbG9uZWRUb29sdGlwT3B0aW9uc1tpbmRleF0uaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSB0aGlzLnRvb2x0aXBPcHRpb25zLmxlbmd0aDtcclxuICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaXNhYmxlQ2xlYXJBbGwgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoRm9yVGhlSXRlbShzdHI6IHN0cmluZyl7XHJcbiAgICAgIGlmKHN0cil7XHJcbiAgICAgICAgICB0aGlzLnRvb2x0aXBPcHRpb25zID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5sYWJlbC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc3RyLnRvTG93ZXJDYXNlKCkpKSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMudG9vbHRpcE9wdGlvbnMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgZWxlbWVudC5sYWJlbCA9IHRoaXMuYm9sZFN0cmluZyhlbGVtZW50LmxhYmVsLHN0cik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYodGhpcy50b29sdGlwT3B0aW9ucy5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICBsZXQgdW5zZWxlY3RlZEl0ZW1zID0gdGhpcy50b29sdGlwT3B0aW9ucy5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmlzU2VsZWN0ZWQpO1xyXG4gICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW1zID0gdGhpcy50b29sdGlwT3B0aW9ucy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uaXNTZWxlY3RlZCk7ICBcclxuICAgICAgICAgICAgICB0aGlzLmRpc2FibGVTZWxlY3RBbGwgPSB1bnNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDA7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlQ2xlYXJBbGwgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2JveE9wdGlvbnNDb3VudCA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSAoc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMCB8fCAhdGhpcy5jaGVja0lmQ2hlY2tib3hUb29sdGlwSXNGaWx0ZXJlZCgpKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgPSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUNsZWFyQWxsID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmRpc2FibGVTZWxlY3RBbGwgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgICB0aGlzLnRvb2x0aXBPcHRpb25zID0gY2xvbmVEZWVwKHRoaXMuY2xvbmVkVG9vbHRpcE9wdGlvbnMpO1xyXG4gICAgICAgICAgbGV0IHVuc2VsZWN0ZWRJdGVtcyA9IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uaXNTZWxlY3RlZCk7XHJcbiAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtcyA9IHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc1NlbGVjdGVkKTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2JveE9wdGlvbnNDb3VudCA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsID0gdW5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlQ2xlYXJBbGwgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICBib2xkU3RyaW5nKHN0cjogc3RyaW5nLCBmaW5kOiBzdHJpbmcpIHtcclxuICAgIGxldCBpbmRleGVzID0gdGhpcy5nZXRJbmRpY2VzT2YoZmluZCwgc3RyLCBmYWxzZSk7XHJcbiAgICBcclxuICAgIGluZGV4ZXMuZm9yRWFjaCgoaXRlbSxpbmRleCkgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydEluZGV4ID0gaXRlbSArIChpbmRleCAqIDcpOyAvL011bHRpcGx5aW5nIGJ5IDcgYXMgdGhlcmUgYXJlIDdjaGFyOiA8Yj48L2I+XHJcbiAgICAgICAgbGV0IGVuZEluZGV4ID0gc3RhcnRJbmRleCArIGZpbmQubGVuZ3RoO1xyXG4gICAgICAgIGxldCBzdHJUb0JlUmVwbGFjZWQgPSBzdHIuc3Vic3RyaW5nKHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcclxuICAgICAgICBzdHIgPSBzdHIucmVwbGFjZShzdHJUb0JlUmVwbGFjZWQsIFwiPGI+XCIgKyBzdHJUb0JlUmVwbGFjZWQgKyBcIjwvYj5cIik7IFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc3RyO1xyXG59XHJcblxyXG5nZXRJbmRpY2VzT2Yoc2VhcmNoU3RyOiBzdHJpbmcsIHN0cjogc3RyaW5nLCBjYXNlU2Vuc2l0aXZlOiBib29sZWFuKSB7XHJcbiAgICB2YXIgc2VhcmNoU3RyTGVuID0gc2VhcmNoU3RyLmxlbmd0aDtcclxuICAgIGlmIChzZWFyY2hTdHJMZW4gPT0gMCkge1xyXG4gICAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIHZhciBzdGFydEluZGV4ID0gMCwgaW5kZXgsIGluZGljZXMgPSBbXTtcclxuICAgIGlmICghY2FzZVNlbnNpdGl2ZSkge1xyXG4gICAgICAgIHN0ciA9IHN0ci50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIHNlYXJjaFN0ciA9IHNlYXJjaFN0ci50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfVxyXG4gICAgd2hpbGUgKChpbmRleCA9IHN0ci5pbmRleE9mKHNlYXJjaFN0ciwgc3RhcnRJbmRleCkpID4gLTEpIHtcclxuICAgICAgICBpbmRpY2VzLnB1c2goaW5kZXgpO1xyXG4gICAgICAgIHN0YXJ0SW5kZXggPSBpbmRleCArIHNlYXJjaFN0ckxlbjtcclxuICAgIH1cclxuICAgIHJldHVybiBpbmRpY2VzO1xyXG59XHJcblxyXG5cclxuICByZW1vdmVCb2xkRWxlbWVudEZyb21TdHJpbmcob3JpZ2luYWxTdHJpbmc6IHN0cmluZyl7XHJcbiAgICAgIGxldCBmaXJzdFJlZ0V4cCA9IG5ldyBSZWdFeHAoJzxiPicsJ2cnKTtcclxuICAgICAgbGV0IHNlY29uZFJlZ0V4cCA9IG5ldyBSZWdFeHAoJzwvYj4nLCdnJyk7XHJcblxyXG4gICAgICBsZXQgcmV0ID0gb3JpZ2luYWxTdHJpbmcucmVwbGFjZShmaXJzdFJlZ0V4cCwnJyk7XHJcbiAgICAgIHJldHVybiByZXQucmVwbGFjZShzZWNvbmRSZWdFeHAsJycpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJTZWFyY2hlZEl0ZW0oKXtcclxuICAgICAgdGhpcy5zZWFyY2hJdGVtID0gXCJcIjtcclxuICAgICAgdGhpcy5zZWFyY2hGb3JUaGVJdGVtKFwiXCIpO1xyXG4gIH1cclxuXHJcbiAgY2FsZW5kYXJEYXRlQ2hhbmdlZChldmVudDogYW55KXtcclxuICAgIHRoaXMuY2FsZW5kYXJTZWxlY3Rpb24gPSBldmVudDtcclxuICAgIHRoaXMuZGlzYWJsZUNhbGVuZGFyQXBwbHlCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIGRpc2FibGVDYWxlbmRhckFwcGx5QnV0dG9uKCkge1xyXG5cclxuICAgIGlmKHRoaXMuc2hvd0ZpbHRlckNvbXBvbmVudCAmJiB0aGlzLnNob3dTb3J0Q29tcG9uZW50KXtcclxuICAgICAgbGV0IGlzRmlsdGVyQ2hhbmdlZCA9IHRoaXMuY2hlY2tJZkRhdGVUb29sdGlwSXNGaWx0ZXJlZCgpO1xyXG4gICAgICBsZXQgaXNTb3J0Q2hhbmdlZCA9IHRoaXMuY2hlY2tJZlNvcnRpbmdDaGFuZ2VkKCk7XHJcbiAgICAgICAgICBcclxuICAgICAgdGhpcy5kaXNhYmxlQ2FsZW5kYXJBcHBseUJ0biA9ICEodGhpcy5jYWxlbmRhclNlbGVjdGlvbi5mcm9tRGF0ZSAmJiB0aGlzLmNhbGVuZGFyU2VsZWN0aW9uLnRvRGF0ZSkgfHwgKCFpc1NvcnRDaGFuZ2VkICYmICFpc0ZpbHRlckNoYW5nZWQgKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50KXtcclxuICAgICAgICB0aGlzLmRpc2FibGVDYWxlbmRhckFwcGx5QnRuID0gISh0aGlzLmNhbGVuZGFyU2VsZWN0aW9uLmZyb21EYXRlICYmIHRoaXMuY2FsZW5kYXJTZWxlY3Rpb24udG9EYXRlKSB8fCAhdGhpcy5jaGVja0lmRGF0ZVRvb2x0aXBJc0ZpbHRlcmVkKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuc2hvd1NvcnRDb21wb25lbnQpe1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG4gPSAhdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBzZXRJbml0aWFsVmFsdWVNYXBGb3JUaW1lRmlsdGVyKGtleTogc3RyaW5nKSB7XHJcbiAgICBsZXQgZGF0YSA9IHRoaXMuY2xvbmVkVGFibGVEYXRhLmZpbHRlcihcclxuICAgICAgICAob2JqKSA9PiAhW1wiXCIsIFwiLVwiLCBudWxsLCBcIjBcIiwgXCI8bXVsdGk+XCJdLmluY2x1ZGVzKG9ialtrZXldKSk7XHJcblxyXG4gICAgbGV0IHRpbWVBcnIgPSBtYXAoZGF0YSwga2V5KTtcclxuICAgIHRpbWVBcnIuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2Uuc29ydEJ5VGltZUFzY2VuZGluZyhhLCBiKTtcclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICBsZXQgb2JqID0ge1xyXG4gICAgICAgIGZyb21UaW1lOiB0aW1lQXJyWzBdLFxyXG4gICAgICAgIHRvVGltZTogdGltZUFyclt0aW1lQXJyLmxlbmd0aCAtIDFdLFxyXG4gICAgICAgIGluY2x1ZGVNdWx0aTogZmFsc2UsXHJcbiAgICAgICAgaW5jbHVkZVplcm86IGZhbHNlLFxyXG4gICAgICAgIGluY2x1ZGVUaW1lUmFuZ2U6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09PSBcIlNQT1RERVRBSUxTXCIgfHxcclxuICAgICAgICB0aGlzLmd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT09IFwiRVhDTFVERUlOVkVOVE9SWVBPUFVQXCJcclxuICAgICkge1xyXG4gICAgICAgIGxldCBpbmNsdWRlTXVsdGkgPVxyXG4gICAgICAgICAgICB0aGlzLmNsb25lZFRhYmxlRGF0YS5maW5kSW5kZXgoKG9iaikgPT4gb2JqW2tleV0gPT0gXCI8bXVsdGk+XCIpICE9XHJcbiAgICAgICAgICAgIC0xO1xyXG4gICAgICAgIGxldCBpbmNsdWRlWmVybyA9XHJcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLmZpbmRJbmRleCgob2JqKSA9PiBvYmpba2V5XSA9PSBcIjBcIikgIT0gLTE7XHJcbiAgICAgICAgbGV0IGluY2x1ZGVUaW1lUmFuZ2UgPVxyXG4gICAgICAgICAgICB0aGlzLmNsb25lZFRhYmxlRGF0YS5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgICAgICAob2JqKSA9PiBvYmpba2V5XSAhPSBcIjBcIiAmJiBvYmpba2V5XSAhPSBcIjxtdWx0aT5cIlxyXG4gICAgICAgICAgICApICE9IC0xO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgICAgIGZyb21UaW1lOiB0aW1lQXJyWzBdLFxyXG4gICAgICAgICAgICB0b1RpbWU6IHRpbWVBcnJbdGltZUFyci5sZW5ndGggLSAxXSxcclxuICAgICAgICAgICAgaW5jbHVkZU11bHRpOiBpbmNsdWRlTXVsdGksXHJcbiAgICAgICAgICAgIGluY2x1ZGVaZXJvOiBpbmNsdWRlWmVybyxcclxuICAgICAgICAgICAgaW5jbHVkZVRpbWVSYW5nZTogaW5jbHVkZVRpbWVSYW5nZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldChrZXksIG9iaik7XHJcbiAgICB9IFxyXG4gICAgZWxzZSBpZiAodGhpcy5ndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09PSBcIlJBVElOR1wiKSB7XHJcbiAgICAgICAgdGhpcy5zZXRJbml0aWFsVmFsdWVNYXBGb3JSYXRpbmdQYWdlVGltZUZpbHRlcihrZXkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5zZXQoa2V5LCBvYmopO1xyXG4gICAgfVxyXG59XHJcblxyXG5zZXRJbml0aWFsVmFsdWVNYXBGb3JSYXRpbmdQYWdlVGltZUZpbHRlcihrZXk6IHN0cmluZyl7XHJcbiAgbGV0IGluY2x1ZGVNdWx0aSA9XHJcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLmZpbmRJbmRleCgob2JqKSA9PiBvYmpba2V5XVswXSA9PSBcIjxtdWx0aT5cIikgIT1cclxuICAgICAgICAgICAgLTE7XHJcbiAgICAgICAgbGV0IGluY2x1ZGVaZXJvID1cclxuICAgICAgICAgICAgdGhpcy5jbG9uZWRUYWJsZURhdGEuZmluZEluZGV4KChvYmopID0+IG9ialtrZXldWzBdID09IFwiMFwiKSAhPSAtMTtcclxuICAgICAgICBsZXQgaW5jbHVkZVRpbWVSYW5nZSA9XHJcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkVGFibGVEYXRhLmZpbmRJbmRleChcclxuICAgICAgICAgICAgICAgIChvYmopID0+IG9ialtrZXldWzBdICE9IFwiMFwiICYmIG9ialtrZXldWzBdICE9IFwiPG11bHRpPlwiXHJcbiAgICAgICAgICAgICkgIT0gLTE7XHJcblxyXG4gICAgICAgIGxldCBzdGFydFRpbWVBcnIgPSBtYXAodGhpcy5jbG9uZWRUYWJsZURhdGEsIFwic3RhcnRUaW1lXCIpO1xyXG4gICAgICAgIGxldCBlbmRUaW1lQXJyID0gbWFwKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcImVuZFRpbWVcIik7XHJcblxyXG4gICAgICAgIHN0YXJ0VGltZUFyci5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2Uuc29ydEJ5VGltZUFzY2VuZGluZyhhLCBiKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgZW5kVGltZUFyci5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2Uuc29ydEJ5VGltZURlc2NlbmRpbmcoYSwgYik7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgICAgIGZyb21UaW1lOiBzdGFydFRpbWVBcnJbMF0sXHJcbiAgICAgICAgICAgIHRvVGltZTogZW5kVGltZUFyclswXSxcclxuICAgICAgICAgICAgaW5jbHVkZU11bHRpOiBpbmNsdWRlTXVsdGksXHJcbiAgICAgICAgICAgIGluY2x1ZGVaZXJvOiBpbmNsdWRlWmVybyxcclxuICAgICAgICAgICAgaW5jbHVkZVRpbWVSYW5nZTogaW5jbHVkZVRpbWVSYW5nZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldChrZXksIG9iaik7IFxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0VGltZUhvdXJDaGFuZ2UodmFsOiBzdHJpbmcpe1xyXG4gICAgICAgIGlmKHZhbC5sZW5ndGggPT0gMCB8fCAxID4gcGFyc2VJbnQodmFsKSB8fCBwYXJzZUludCh2YWwpID4gMTIpe1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0VGltZUhvdXJFcnIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0VGltZUhvdXJFcnIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRUaW1lTWluQ2hhbmdlKHZhbDogc3RyaW5nKXtcclxuICAgICAgICBpZih2YWwubGVuZ3RoICE9IDIgIHx8IDAgPiBwYXJzZUludCh2YWwpIHx8IHBhcnNlSW50KHZhbCkgPiA1OSl7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lTWluRXJyID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVNaW5FcnIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZW5kVGltZUhvdXJDaGFuZ2UodmFsOiBzdHJpbmcpe1xyXG4gICAgICAgIGlmKHZhbC5sZW5ndGggPT0gMCB8fCAxID4gcGFyc2VJbnQodmFsKSB8fCBwYXJzZUludCh2YWwpID4gMTIpe1xyXG4gICAgICAgICAgICB0aGlzLmVuZFRpbWVIb3VyRXJyID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5lbmRUaW1lSG91ckVyciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgIH1cclxuXHJcbiAgICBlbmRUaW1lTWluQ2hhbmdlKHZhbDogc3RyaW5nKXtcclxuICAgICAgICBpZih2YWwubGVuZ3RoICE9IDIgIHx8IDAgPiBwYXJzZUludCh2YWwpIHx8IHBhcnNlSW50KHZhbCkgPiA1OSl7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kVGltZU1pbkVyciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kVGltZU1pbkVyciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdXR0b24oKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0lmQ2hlY2tib3hUb29sdGlwSXNGaWx0ZXJlZCgpe1xyXG4gICAgICAgIGxldCBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IFtdO1xyXG4gICAgICAgIGxldCBwcmV2aW91c1NlbGVjdGVkVmFsdWUgPSBbXTtcclxuXHJcbiAgICAgICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3RlZFZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmKCF0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICAgIGxldCBpbml0aWFsVmFsdWUgPSBzb3J0QnkodW5pcSh0aGlzLmNsb25lZFRhYmxlRGF0YS5tYXAoaXRlbSA9PiBpdGVtW3RoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpb10pKSk7XHJcbiAgICAgICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8saW5pdGlhbFZhbHVlKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3RlZFZhbHVlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGVkVmFsdWUgPSBzb3J0QnkodW5pcSh0aGlzLmNsb25lZFRhYmxlRGF0YS5tYXAoaXRlbSA9PiBpdGVtW3RoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpb10pKSk7XHJcbiAgICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5zZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvLHByZXZpb3VzU2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZih0aGlzLnRvb2x0aXBPcHRpb25zKXtcclxuXHJcbiAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZFZhbHVlID0gc29ydEJ5KHRoaXMudG9vbHRpcE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc1NlbGVjdGVkKS5tYXAoaXRlbSA9PiBpdGVtLnZhbHVlKSk7XHJcblxyXG4gICAgICAgICAgICBpZighdGhpcy5zZWFyY2hJdGVtICYmIGN1cnJlbnRTZWxlY3RlZFZhbHVlLmxlbmd0aCA9PSB0aGlzLnRvb2x0aXBPcHRpb25zLmxlbmd0aCAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGVkVmFsdWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBibGFua0luZGV4ID0gY3VycmVudFNlbGVjdGVkVmFsdWUuZmluZEluZGV4KChpdGVtOiBzdHJpbmcpID0+IGl0ZW0gPT0gbnVsbCk7XHJcbiAgICAgICAgaWYoYmxhbmtJbmRleCAhPSAtMSl7XHJcbiAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRWYWx1ZSA9IHNvcnRCeShjdXJyZW50U2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmlzRmlsdGVyQ2hhbmdlZCA9ICFpc0VxdWFsKGN1cnJlbnRTZWxlY3RlZFZhbHVlLHByZXZpb3VzU2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrSWZUaW1lVG9vbHRpcElzRmlsdGVyZWQoKXtcclxuICAgICAgbGV0IGN1cnJlbnRTZWxlY3RlZFRpbWVGaWx0ZXI6IHtmcm9tVGltZTogc3RyaW5nLCB0b1RpbWU6c3RyaW5nLCBpbmNsdWRlTXVsdGk6IGJvb2xlYW4sIGluY2x1ZGVaZXJvOiBib29sZWFuLCBpbmNsdWRlVGltZVJhbmdlOiBib29sZWFufSA9IHtcclxuICAgICAgICBmcm9tVGltZTogbnVsbCxcclxuICAgICAgICB0b1RpbWU6IG51bGwsXHJcbiAgICAgICAgaW5jbHVkZU11bHRpOiBmYWxzZSxcclxuICAgICAgICBpbmNsdWRlWmVybzogZmFsc2UsXHJcbiAgICAgICAgaW5jbHVkZVRpbWVSYW5nZTogZmFsc2UsXHJcbiAgICAgIH07XHJcbiAgXHJcbiAgICAgIGxldCBwcmV2aW91c1NlbGVjdGVkVGltZUZpbHRlcjtcclxuICBcclxuICAgICAgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgIHByZXZpb3VzU2VsZWN0ZWRUaW1lRmlsdGVyID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgcHJldmlvdXNTZWxlY3RlZFRpbWVGaWx0ZXIgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICBsZXQgZnJvbVRpbWUyNEhyRm9ybWF0QXJyID0gdGhpcy5hbm5hRGF0ZVRpbWVGb3JtYXRTZXJ2aWNlLmNvbnZlcnRUb3R3ZW50eUZvdXJIcnNGb3JtYXQoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZyb21UaW1lWzBdICsgXCI6XCIgKyB0aGlzLnNlbGVjdGVkRnJvbVRpbWVbMV0gKyBcIiBcIiArIHRoaXMuc2VsZWN0ZWRGcm9tVGltZVsyXSxcclxuICAgICAgICB0cnVlXHJcbiAgICAgICk7XHJcbiAgICAgIGxldCBmcm9tVGltZTI0SHJGb3JtYXQgPSBmcm9tVGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIGZyb21UaW1lMjRIckZvcm1hdEFyclsxXSArIFwiOjAwXCI7XHJcblxyXG4gICAgICBsZXQgdG9UaW1lMjRIckZvcm1hdEFyciA9IHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0VG90d2VudHlGb3VySHJzRm9ybWF0KFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUb1RpbWVbMF0gKyBcIjpcIiArIHRoaXMuc2VsZWN0ZWRUb1RpbWVbMV0gKyBcIiBcIiArIHRoaXMuc2VsZWN0ZWRUb1RpbWVbMl0sXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgdG9UaW1lMjRIckZvcm1hdCA9IHRvVGltZTI0SHJGb3JtYXRBcnJbMF0gKyBcIjpcIiArIHRvVGltZTI0SHJGb3JtYXRBcnJbMV0gKyBcIjowMFwiO1xyXG4gIFxyXG4gICAgICBjdXJyZW50U2VsZWN0ZWRUaW1lRmlsdGVyID0geyBmcm9tVGltZTogZnJvbVRpbWUyNEhyRm9ybWF0LCB0b1RpbWU6IHRvVGltZTI0SHJGb3JtYXQsIGluY2x1ZGVNdWx0aTogdGhpcy5tdWx0aVRpbWVDaGVja2JveENoZWNrZWQsIFxyXG4gICAgICBpbmNsdWRlWmVybzogdGhpcy56ZXJvVGltZUNoZWNrYm94Q2hlY2tlZCwgaW5jbHVkZVRpbWVSYW5nZTogdGhpcy5lbnRlclRpbWVDaGVja2JveENoZWNrZWR9O1xyXG4gICAgICBcclxuICAgICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSAhaXNFcXVhbChwcmV2aW91c1NlbGVjdGVkVGltZUZpbHRlciwgY3VycmVudFNlbGVjdGVkVGltZUZpbHRlcik7XHJcbiAgICAgIHJldHVybiB0aGlzLmlzRmlsdGVyQ2hhbmdlZDsgIFxyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrSWZEYXRlVG9vbHRpcElzRmlsdGVyZWQoKXtcclxuICAgICAgbGV0IGN1cnJlbnRTZWxlY3RlZERhdGUgPSBjbG9uZURlZXAodGhpcy5jYWxlbmRhclNlbGVjdGlvbik7XHJcbiAgICAgIGxldCBwcmV2aW91c1NlbGVjdGVkRGF0ZToge2Zyb21EYXRlOiBhbnksIHRvRGF0ZTogYW55fSA9IHtmcm9tRGF0ZTogbnVsbCwgdG9EYXRlOiBudWxsfTtcclxuXHJcbiAgICAgIGlmKHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICBwcmV2aW91c1NlbGVjdGVkRGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UudG9vbHRpcFNlbGVjdGVkTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmKCF0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlTWFwRm9yRGF0ZUZpbHRlcigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgcHJldmlvdXNTZWxlY3RlZERhdGUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlTWFwRm9yRGF0ZUZpbHRlcigpO1xyXG4gICAgICAgIHByZXZpb3VzU2VsZWN0ZWREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUgJiYgY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUpe1xyXG4gICAgICAgICAgbGV0IGZyb21EYXRlID0ge3llYXI6IGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUueWVhcixtb250aDogY3VycmVudFNlbGVjdGVkRGF0ZS5mcm9tRGF0ZS5tb250aCxkYXk6IGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUuZGF5fTtcclxuICAgICAgICAgIGxldCB0b0RhdGUgPSB7eWVhcjogY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUueWVhcixtb250aDogY3VycmVudFNlbGVjdGVkRGF0ZS50b0RhdGUubW9udGgsZGF5OiBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZS5kYXl9O1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZihpc0VxdWFsKHRoaXMuY2FsZW5kYXJNaW5FbmFibGVkRGF0ZSxmcm9tRGF0ZSkgJiYgaXNFcXVhbCh0aGlzLmNhbGVuZGFyTWF4RW5hYmxlZERhdGUsdG9EYXRlKSAmJiB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGVkRGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWREYXRlLmZyb21EYXRlID0gbW9tZW50KHRoaXMuYW5uYURhdGVUaW1lRm9ybWF0U2VydmljZS5jb252ZXJ0TmdiRGF0ZVRvTW9tZW50KGN1cnJlbnRTZWxlY3RlZERhdGUuZnJvbURhdGUpKTtcclxuICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZSA9IG1vbWVudCh0aGlzLmFubmFEYXRlVGltZUZvcm1hdFNlcnZpY2UuY29udmVydE5nYkRhdGVUb01vbWVudChjdXJyZW50U2VsZWN0ZWREYXRlLnRvRGF0ZSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5pc0ZpbHRlckNoYW5nZWQgPSAhaXNFcXVhbChwcmV2aW91c1NlbGVjdGVkRGF0ZSxjdXJyZW50U2VsZWN0ZWREYXRlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5pc0ZpbHRlckNoYW5nZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SW5pdGlhbFZhbHVlTWFwRm9yRGF0ZUZpbHRlcigpe1xyXG4gICAgICAgIGxldCBtaW5NYXhEYXRlO1xyXG5cclxuICAgICAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPT0gXCJwZXJpb2RcIil7XHJcbiAgICAgICAgICBsZXQgbWluU3RhcnREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NaW5BbmRNYXhEYXRlKHRoaXMuY2xvbmVkVGFibGVEYXRhLCBcInN0YXJ0RGF0ZVwiKTtcclxuICAgICAgICAgIGxldCBtYXhFbmREYXRlID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5yZXR1cm5NaW5BbmRNYXhEYXRlKHRoaXMuY2xvbmVkVGFibGVEYXRhLFwiZW5kRGF0ZVwiKTtcclxuICAgICAgICAgIG1pbk1heERhdGUgPSBbbWluU3RhcnREYXRlWzBdLG1heEVuZERhdGVbMV1dO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgbWluTWF4RGF0ZSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UucmV0dXJuTWluQW5kTWF4RGF0ZSh0aGlzLmNsb25lZFRhYmxlRGF0YSx0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc2VsZWN0ZWREYXRlID0ge2Zyb21EYXRlOiBtaW5NYXhEYXRlWzBdLCB0b0RhdGU6IG1pbk1heERhdGVbMV19O1xyXG4gICAgICAgIHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLnNldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sIHNlbGVjdGVkRGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tJZlNsaWRlclRvb2x0aXBJc0ZpbHRlcmVkKCl7XHJcbiAgICAgIGxldCBjdXJyZW50U2xpZGVyRGF0YToge21pbjphbnksIG1heDogYW55fSA9IHttaW46IG51bGwgLCBtYXg6IG51bGx9O1xyXG4gICAgICBsZXQgcHJldmlvdXNTbGlkZXJEYXRhOiB7bWluOmFueSwgbWF4OiBhbnl9ID0ge21pbjogXCJcIiwgbWF4OiBcIlwifTtcclxuXHJcbiAgICAgIC8vIGlmKHRoaXMuaXNNaW5UZXh0Qm94RW1wdHkpe1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWluID0gdGhpcy5vcHRpb25zLmZsb29yO1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWF4ID0gdGhpcy5zbGlkZXJNYXhWYWx1ZTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBlbHNlIGlmKHRoaXMuaXNNYXhUZXh0Qm94RW1wdHkpe1xyXG4gICAgICAvLyAgICAgY3VycmVudFNsaWRlckRhdGEubWF4ID0gdGhpcy5vcHRpb25zLmNlaWw7XHJcbiAgICAgIC8vICAgICBjdXJyZW50U2xpZGVyRGF0YS5taW4gPSB0aGlzLnNsaWRlck1pblZhbHVlO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGVsc2V7XHJcbiAgICAgICAgICBjdXJyZW50U2xpZGVyRGF0YS5tYXggPSB0aGlzLnNsaWRlckVudGVyZWRNYXhWYWx1ZTtcclxuICAgICAgICAgIGN1cnJlbnRTbGlkZXJEYXRhLm1pbiA9IHRoaXMuc2xpZGVyRW50ZXJlZE1pblZhbHVlO1xyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICBpZih0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnRvb2x0aXBTZWxlY3RlZE1hcC5oYXModGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKSl7XHJcbiAgICAgICAgcHJldmlvdXNTbGlkZXJEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS50b29sdGlwU2VsZWN0ZWRNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgICAgaWYoIXRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmhhcyh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pKXtcclxuICAgICAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlTWFwRm9yU2xpZGVyRmlsdGVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykpe1xyXG4gICAgICAgIHByZXZpb3VzU2xpZGVyRGF0YSA9IHRoaXMuYW5uYUZpbHRlclNlcnZpY2UuaW5pdGlhbFZhbHVlTWFwLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgdGhpcy5zZXRJbml0aWFsVmFsdWVNYXBGb3JTbGlkZXJGaWx0ZXIoKTtcclxuICAgICAgICBwcmV2aW91c1NsaWRlckRhdGEgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmluaXRpYWxWYWx1ZU1hcC5nZXQodGhpcy5hbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYoY3VycmVudFNsaWRlckRhdGEubWluID09IHRoaXMub3B0aW9ucy5mbG9vciAmJiBjdXJyZW50U2xpZGVyRGF0YS5tYXggPT0gdGhpcy5vcHRpb25zLmNlaWwgJiYgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuaGFzKHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbykgKXtcclxuICAgICAgICAgIGN1cnJlbnRTbGlkZXJEYXRhID0gdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuZ2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkID0gIWlzRXF1YWwocHJldmlvdXNTbGlkZXJEYXRhLGN1cnJlbnRTbGlkZXJEYXRhKTtcclxuICAgICAgcmV0dXJuIHRoaXMuaXNGaWx0ZXJDaGFuZ2VkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEluaXRpYWxWYWx1ZU1hcEZvclNsaWRlckZpbHRlcigpe1xyXG4gICAgICBsZXQgbWluVmFsdWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1heEFuZE1pblZhbHVlKHRoaXMuY2xvbmVkVGFibGVEYXRhLCB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sIHRydWUpO1xyXG4gICAgICBsZXQgbWF4VmFsdWUgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnJldHVybk1heEFuZE1pblZhbHVlKHRoaXMuY2xvbmVkVGFibGVEYXRhLCB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8sIGZhbHNlKTtcclxuICAgICAgbGV0IHNsaWRlckRhdGEgPSB7IG1pbjogbWluVmFsdWUsIG1heDogbWF4VmFsdWUgfTtcclxuICAgICAgdGhpcy5hbm5hRmlsdGVyU2VydmljZS5pbml0aWFsVmFsdWVNYXAuc2V0KHRoaXMuYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpbywgc2xpZGVyRGF0YSk7XHJcbiAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrSWZTb3J0aW5nQ2hhbmdlZCgpe1xyXG4gICAgICB0aGlzLmlzU29ydENoYW5nZWQgPSB0aGlzLnRlbXBTb3J0T3JkZXIgIT0gbnVsbCAmJiB0aGlzLnRlbXBTb3J0T3JkZXIgIT0gdGhpcy5hbm5hU29ydFNlcnZpY2UuY29sdW1uU29ydFN0YXRlLmdldCh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8pOztcclxuICAgICAgY29uc29sZS5sb2codGhpcy5pc1NvcnRDaGFuZ2VkKTtcclxuICAgICAgcmV0dXJuIHRoaXMuaXNTb3J0Q2hhbmdlZDtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlQXBwbHlCdXR0b25PZlNlbGVjdGVkRmlsdGVyKCl7XHJcbiAgICAgIGxldCBoZWFkZXIgPSB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW87XHJcblxyXG4gICAgICBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS5jYWxlbmRhclNldC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZUNhbGVuZGFyQXBwbHlCdXR0b24oKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLnNsaWRlclNldC5oYXMoaGVhZGVyKSkge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNsaWRlckFwcGx5QnRuKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hbm5hRmlsdGVyU2VydmljZS50aW1lU2V0LmhhcyhoZWFkZXIpKSB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hGaWx0ZXJBcHBseUJ1dHRvbigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZUNoZWNrYm94RmlsdGVyQXBwbHlCdXR0b24oKXtcclxuICAgICAgbGV0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQgPyB0aGlzLnRvb2x0aXBPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNTZWxlY3RlZCkgOiBbXTtcclxuICAgICAgICBcclxuICAgICAgaWYodGhpcy5zaG93RmlsdGVyQ29tcG9uZW50ICYmIHRoaXMuc2hvd1NvcnRDb21wb25lbnQpe1xyXG4gICAgICAgICAgbGV0IGlzRmlsdGVyQ2hhbmdlZCA9IHRoaXMuY2hlY2tJZkNoZWNrYm94VG9vbHRpcElzRmlsdGVyZWQoKTtcclxuICAgICAgICAgIGxldCBpc1NvcnRDaGFuZ2VkID0gdGhpcy5jaGVja0lmU29ydGluZ0NoYW5nZWQoKTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUNoZWNrYm94QXBwbHkgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwIHx8ICghaXNTb3J0Q2hhbmdlZCAmJiAhaXNGaWx0ZXJDaGFuZ2VkICk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih0aGlzLnNob3dGaWx0ZXJDb21wb25lbnQpe1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDAgfHwgIXRoaXMuY2hlY2tJZkNoZWNrYm94VG9vbHRpcElzRmlsdGVyZWQoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmKHRoaXMuc2hvd1NvcnRDb21wb25lbnQpe1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlQ2hlY2tib3hBcHBseSA9ICF0aGlzLmNoZWNrSWZTb3J0aW5nQ2hhbmdlZCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdHJhY2tCeVRvb2x0aXBNb2RlbElkKGluZGV4OiBudW1iZXIgLCBpdGVtOiBUb29sdGlwTW9kZWwpe1xyXG4gICAgICByZXR1cm4gaXRlbS5pZDtcclxuICAgIH1cclxuXHJcbiAgICBzZXRBY3RpdmVTdGF0ZU9iamVjdCgpe1xyXG4gICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSA9IHt9O1xyXG4gICAgICB0aGlzLnRhYmxlSGVhZGVycy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uaGVhZGVySW5mby5mb3JFYWNoKGhlYWRlciA9PiB7XHJcbiAgICAgICAgICAgIGlmKGhlYWRlci5zaG93VG9vbHRpcEljb24pe1xyXG4gICAgICAgICAgICAgIGxldCBrZXkgPSBoZWFkZXIuZmlsdGVyU29ydE9iamVjdEtleXMuam9pbignLCcpO1xyXG4gICAgICAgICAgICAgIGhlYWRlci5qb2luZWRGaWx0ZXJTb3J0T2JqZWN0S2V5cyA9IGtleTtcclxuICAgICAgICAgICAgICB0aGlzLmFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZVtrZXldID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRJc0RpZmZlcmVuY2UodmFsdWU6IGJvb2xlYW4pe1xyXG4gICAgICB0aGlzLmlzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50ID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzZXRJbmRleCgpe1xyXG4gICAgICB0aGlzLnN0YXJ0ID0gMDtcclxuICAgICAgdGhpcy5lbmQgPSB0aGlzLmxpbWl0ICsgdGhpcy5zdGFydDtcclxuICAgIH1cclxuXHJcbiAgICBvblRhYmxlQ29udGFpbmVyU2Nyb2xsKGU6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHRhYmxlVmlld0hlaWdodCA9IGUudGFyZ2V0Lm9mZnNldEhlaWdodDsgLy8gdmlld3BvcnRcclxuICAgICAgICBjb25zdCB0YWJsZVNjcm9sbEhlaWdodCA9IGUudGFyZ2V0LnNjcm9sbEhlaWdodDsgLy8gbGVuZ3RoIG9mIGFsbCB0YWJsZVxyXG4gICAgICAgIGNvbnN0IHNjcm9sbExvY2F0aW9uID0gZS50YXJnZXQuc2Nyb2xsVG9wOyAvLyBob3cgZmFyIHVzZXIgc2Nyb2xsZWRcclxuXHJcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicmVtYXJrcy1pbmZvLXRvb2x0aXBcIik7XHJcbiAgICAgICAgd2hpbGUgKGVsZW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGVsZW1lbnRzWzBdLnJlbW92ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAvLyBJZiB0aGUgdXNlciBoYXMgc2Nyb2xsZWQgd2l0aGluIDE1MHB4IG9mIHRoZSBib3R0b20sIGFkZCBtb3JlIGRhdGFcclxuICAgICAgICBjb25zdCBidWZmZXIgPSAxNTA7XHJcbiAgICAgICAgY29uc3QgbGltaXQgPSB0YWJsZVNjcm9sbEhlaWdodCAtIHRhYmxlVmlld0hlaWdodCAtIGJ1ZmZlcjtcclxuICAgICAgICBpZiAoc2Nyb2xsTG9jYXRpb24gPiBsaW1pdCkge1xyXG4gICAgICAgICAgICBsZXQgZGF0YSA9IHRoaXMuZ2V0VGFibGVEYXRhKHRoaXMuc3RhcnQsIHRoaXMuZW5kKTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlZERhdGEgPSB0aGlzLnJlbmRlcmVkRGF0YS5jb25jYXQoZGF0YSk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSW5kZXgoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50YWJsZUNvbnRhaW5lclNjcm9sbGVkKGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFRhYmxlRGF0YShzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlRGF0YS5maWx0ZXIoKHZhbHVlLCBpbmRleCkgPT4gaW5kZXggPj0gc3RhcnQgJiYgaW5kZXggPCBlbmQpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUluZGV4KCkge1xyXG4gICAgICAgIHRoaXMuc3RhcnQgPSB0aGlzLmVuZDtcclxuICAgICAgICB0aGlzLmVuZCA9IHRoaXMubGltaXQgKyB0aGlzLnN0YXJ0O1xyXG4gICAgfVxyXG5cclxuICAgIHNldEluaXRpYWxSb3dzRm9yVGFibGUoKXtcclxuICAgICAgdGhpcy5yZXNldEluZGV4KCk7XHJcbiAgICAgIHRoaXMucmVuZGVyZWREYXRhID0gdGhpcy5nZXRUYWJsZURhdGEodGhpcy5zdGFydCx0aGlzLmVuZCk7XHJcbiAgICAgIHRoaXMudXBkYXRlSW5kZXgoKTtcclxuICAgIH1cclxuXHJcbiAgICBzcG90RGV0YWlsc0Rvd25sb2FkQ2xpY2tlZChwYXJlbnRDaGlsZE9yVG90YWxSb3c6IFwiREFUQVJPV1wiIHwgXCJUT1RBTFJPV1wiLCByb3dkYXRhPzogYW55ICkge1xyXG4gICAgICBpZihyb3dkYXRhKXtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSW52ZW50b3J5SWRGb3JEb3dubG9hZCA9IHJvd2RhdGEuaW52ZW50b3J5Q29kZUlkO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREZW1vZ3JhcGhpY0ZvckRvd25sb2FkID0gcm93ZGF0YS5kZW1vZ3JhcGhpYztcclxuICAgICAgfSBlbHNle1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbnZlbnRvcnlJZEZvckRvd25sb2FkID0gbnVsbDtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGVtb2dyYXBoaWNGb3JEb3dubG9hZCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd1R5cGVGb3JEb3dubG9hZCA9IHBhcmVudENoaWxkT3JUb3RhbFJvdztcclxuICAgICAgdGhpcy5kb3dubG9hZFNwb3REZXRhaWxzLmVtaXQoe1xyXG4gICAgICAgIHBhcmVudENoaWxkT3JUb3RhbFJvdzogcGFyZW50Q2hpbGRPclRvdGFsUm93LFxyXG4gICAgICAgIGludmVudG9yeUNvZGVJZDogdGhpcy5zZWxlY3RlZEludmVudG9yeUlkRm9yRG93bmxvYWQsXHJcbiAgICAgICAgZGVtb2dyYXBoaWM6IHRoaXMuc2VsZWN0ZWREZW1vZ3JhcGhpY0ZvckRvd25sb2FkfSlcclxuICB9XHJcblxyXG4gIHRhYmxlQ29udGFpbmVyU2Nyb2xsZWQoZXZlbnQ6IGFueSl7XHJcbiAgICAgIHRoaXMuaXNTY3JvbGxlZExlZnQgPSBldmVudC50YXJnZXQuc2Nyb2xsTGVmdCA+IDA7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lciB7e2d0R2VuZXJhbENvbmZpZz8udGFibGVPdXRlckNvbnRhaW5lck5hbWV9fVwiIFtuZ0NsYXNzXT1cInsgJ3Njcm9sbC1sZWZ0LXNoYWRvdy1lZmZlY3QnOiBpc1Njcm9sbGVkTGVmdCB9XCIgKHNjcm9sbCk9XCJvblRhYmxlQ29udGFpbmVyU2Nyb2xsKCRldmVudClcIj5cclxuICAgIDxkaXZcclxuICAgICAgICBbY2xhc3NdPVwiZ3RHZW5lcmFsQ29uZmlnLnRhYmxlQ29udGFpbmVyTmFtZVwiXHJcbiAgICAgICAgY2xhc3M9XCJob3Jpem9udGFsLXNjcm9sbC1mb3ItdGFibGUtY29udGFpbmVyXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgIGhlaWdodDpcclxuICAgICAgICAgICAgICAgIHRhYmxlRGF0YS5sZW5ndGggPCBtYXhpbXVtUm93c1doaWNoQ2FuQmVSZW5kZXJlZFdpdGhvdXRTY3JvbGxcclxuICAgICAgICAgICAgICAgICAgICA/ICdjYWxjKCcgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgKChndERpbWVuc2lvbi5yb3dIZWlnaHQgKyAoaW5jbHVkZUJvcmRlckluVGFibGVIZWlnaHQgPyByb3dCb3JkZXJXaWR0aCA6IDApKSAqIHRhYmxlRGF0YS5sZW5ndGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICghdGFibGVEYXRhLmxlbmd0aCB8fCAhZ3RHZW5lcmFsQ29uZmlnLnRvdGFsUm93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ3REaW1lbnNpb24uaGVhZGVySGVpZ2h0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ3REaW1lbnNpb24uaGVhZGVySGVpZ2h0ICsgZ3REaW1lbnNpb24ucm93SGVpZ2h0ICsgKCBpbmNsdWRlQm9yZGVySW5UYWJsZUhlaWdodCA/ICgyICogcm93Qm9yZGVyV2lkdGgpIDogMCkpKSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAncHgpJ1xyXG4gICAgICAgICAgICAgICAgICAgIDogZ3REaW1lbnNpb24udGFibGVIZWlnaHRcclxuICAgICAgICB9XCJcclxuICAgID5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJndFwiIFtuZ0NsYXNzXT1cInRhYmxlQ2xhc3NcIiBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwicmVuZGVyZWREYXRhXCI+XHJcbiAgICAgICAgICAgIDx0clxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItcm93XCJcclxuICAgICAgICAgICAgICAgIG1hdC1oZWFkZXItcm93XHJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyUm93RGVmPVwidGFibGVDb2x1bW5zOyBzdGlja3k6IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJndERpbWVuc2lvbi5oZWFkZXJIZWlnaHRcIlxyXG4gICAgICAgICAgICA+PC90cj5cclxuICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRvdGFsLXJvd1wiXHJcbiAgICAgICAgICAgICAgICBtYXQtaGVhZGVyLXJvd1xyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJndERpbWVuc2lvbi5yb3dIZWlnaHRcIlxyXG4gICAgICAgICAgICAgICAgKm1hdEhlYWRlclJvd0RlZj1cInRvdGFsUm93Q29sdW1uczsgc3RpY2t5OiB0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5oaWRkZW5dPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvd1NrZWxldG9uTG9hZGluZyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICghc2hvd1NrZWxldG9uTG9hZGluZyAmJiAhdGFibGVEYXRhLmxlbmd0aCApIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKGlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQgfCBhc3luYykgfHwgXHJcbiAgICAgICAgICAgICAgICAgICAgKCFzaG93U2tlbGV0b25Mb2FkaW5nICYmICFndEdlbmVyYWxDb25maWcudG90YWxSb3cpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+PC90cj5cclxuICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwicm93RGF0YS5ndENsYXNzXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbm8tYm9yZGVyLXRyJzogKGlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQgfCBhc3luYyl9XCJcclxuICAgICAgICAgICAgICAgIG1hdC1yb3dcclxuICAgICAgICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93RGF0YTsgY29sdW1uczogdGFibGVDb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiZ3REaW1lbnNpb24ucm93SGVpZ2h0XCIoY2xpY2spPVwiZGF0YVJvd0NsaWNrZWQocm93RGF0YSlcIlxyXG4gICAgICAgICAgICA+PC90cj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gVE9UQUwgUk9XIC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLmNvbE5hbWVcIiAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHRvdGFsUm93SW5mbzsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFthdHRyLmNvbHNwYW5dPVwiY29sdW1uLmNvbHNwYW5cIiBjbGFzcz1cInt7Y29sdW1uLmNsYXNzfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNvbHVtbi5kYXRhIH19PC9zdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5sb3dlckRhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLmNvbE5hbWUgPT0gJ3RvdGFsLXBvdGVudGlhbC1ib29rZWQtdW5pdCcgJiYgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgY29sdW1uTG93ZXJEYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2xpY2thYmxlLWRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNwb3REZXRhaWxzRG93bmxvYWRDbGlja2VkKCdUT1RBTFJPVycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Rpc2FibGVkLWNsaWNrYWJsZS1kYXRhJzogZG93bmxvYWRJblByb2dyZXNzIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGNvbHVtbi5sb3dlckRhdGEgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgc3BvdC1kZXRhaWxzLWRvd25sb2FkLWljb25zXCI+Z2V0X2FwcDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkb3dubG9hZEluUHJvZ3Jlc3MgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHNlbGVjdGVkUm93VHlwZUZvckRvd25sb2FkID09ICdUT1RBTFJPVycgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjaXJjdWxhclByb2dyZXNzQmFyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbHVtbkxvd2VyRGF0YT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbHVtbi5sb3dlckRhdGEgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnRvb2x0aXBNZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1pIG1kaS1pbmZvLW91dGxpbmUgaW5mby1sYWJlbFwiIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwiY29sdW1uLnRvb2x0aXBNZXNzYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cImd0LXRvdGFsLXJvdy10b29sdGlwXCIgcGxhY2VtZW50PVwiYm90dG9tXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8IS0tIE1BSU4gUk9XIC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uRGVmLmhlYWRlckluZm9bMF0ub2JqZWN0S2V5XCIgKm5nRm9yPVwibGV0IGNvbHVtbkRlZiBvZiB0YWJsZUhlYWRlcnM7ICB0cmFja0J5OiB0cmFja0J5Rm5cIj5cclxuICAgICAgICAgICAgICAgIDx0aCAjdGFibGVIZWFkZXIgbm93cmFwIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBbc3R5bGUud2lkdGhdPVwiY29sdW1uRGVmLndpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBteC0wXCIgKm5nRm9yPVwibGV0IGhlYWRlciBvZiBjb2x1bW5EZWYuaGVhZGVySW5mbzsgbGV0IGogPSBpbmRleDtcIj4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImhlYWRlci50eXBlT2ZIZWFkZXJEYXRhID09PSAnU1RSSU5HJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICd1cHBlci1sYWJlbCc6IGogPT09IDAsICdsb3dlci1sYWJlbCc6IGogPT09IDEgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGhlYWRlci5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhlYWRlci50b29sdGlwICYmIGhlYWRlci50b29sdGlwLm5hbWUgPT0gJ2ltcHNJbmZvVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cImltcHNJbmZvVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdzcG90c0NvbHVtbkVxdWl2YWxpemF0aW9uTWVzc2FnZVRvb2x0aXAnXCIgY2xhc3M9XCJ7e2hlYWRlclsndG9vbHRpcCddLmljb25DbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Zsb2F0JzogaGVhZGVyWyd0b29sdGlwJ10uaWNvblBvc2l0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJzcG90c0NvbHVtbkVxdWl2YWxpemF0aW9uTWVzc2FnZVRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBQb3NpdGlvbiB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcENsYXNzIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaGVhZGVyLnRvb2x0aXAgJiYgaGVhZGVyLnRvb2x0aXAubmFtZSA9PSAncmF0aW5nSW5mb1Rvb2x0aXAnXCIgY2xhc3M9XCJ7e2hlYWRlclsndG9vbHRpcCddLmljb25DbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Zsb2F0JzogaGVhZGVyWyd0b29sdGlwJ10uaWNvblBvc2l0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJyYXRpbmdJbmZvVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdyYXRlSW5mb1Rvb2x0aXAnXCIgY2xhc3M9XCJ7e2hlYWRlclsndG9vbHRpcCddLmljb25DbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Zsb2F0JzogaGVhZGVyWyd0b29sdGlwJ10uaWNvblBvc2l0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJyYXRlSW5mb1Rvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBQb3NpdGlvbiB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcENsYXNzIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaGVhZGVyLnRvb2x0aXAgJiYgaGVhZGVyLnRvb2x0aXAubmFtZSA9PSAnb25nb2luZ1JldkJvb2tlZENvbHVtblRvb2x0aXAnXCIgY2xhc3M9XCJ7e2hlYWRlclsndG9vbHRpcCddLmljb25DbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2Zsb2F0JzogaGVhZGVyWyd0b29sdGlwJ10uaWNvblBvc2l0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJvbmdvaW5nUmV2Qm9va2VkQ29sdW1uVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdjb21wbGV0ZWRSZXZCb29rZWRDb2x1bW5Ub29sdGlwJ1wiIGNsYXNzPVwie3toZWFkZXJbJ3Rvb2x0aXAnXS5pY29uQ2xhc3N9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydmbG9hdCc6IGhlYWRlclsndG9vbHRpcCddLmljb25Qb3NpdGlvbn1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0PVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwiY29tcGxldGVkUmV2Qm9va2VkQ29sdW1uVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwie3sgaGVhZGVyWyd0b29sdGlwJ10udG9vbHRpcFBvc2l0aW9uIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwQ2xhc3MgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLnR5cGVPZkhlYWRlckRhdGEgPT09ICdDSEVDS0JPWCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJndEdlbmVyYWxDb25maWcuaXNIZWFkZXJDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFVuc2VsZWN0QWxsUm93cygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZ3RHZW5lcmFsQ29uZmlnLmlzSGVhZGVyQ2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZGlzYWJsZS1jaGVja2JveCc6IGd0R2VuZXJhbENvbmZpZy5kaXNhYmxlSGVhZGVyQ2hlY2tib3ggfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFVuc2VsZWN0QWxsUm93cygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJndEdlbmVyYWxDb25maWcuc2hvd0FsbENvbHVtbkZpbHRlclwiIGNsYXNzPVwic29ydC1maWx0ZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLnNob3dUb29sdGlwSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQWN0aXZlIHRvb2x0aXAgRnVuY3Rpb25hbGl0eSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZpbHRlciA9PT0gJ0NIRUNLQk9YJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZpbHRlci12YXJpYW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSAmJiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVbaGVhZGVyLmpvaW5lZEZpbHRlclNvcnRPYmplY3RLZXlzXSwgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGhlYWRlci5kaXNhYmxlVG9vbHRpcEljb24gJiYgIShhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmUgJiYgYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlW2hlYWRlci5qb2luZWRGaWx0ZXJTb3J0T2JqZWN0S2V5c10pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cImZpbHRlclRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnQtdG9wIGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJub24tZWRpdC1jaGVja2JveC10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0PVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmluZFRoZVZhbHVlVG9Ub29sVGlwKHQsIGhlYWRlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpZGRlbik9XCJjbG9zZVRvb2x0aXAoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyLmZpbHRlciA9PT0gJ1NMSURFUidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1maWx0ZXItdmFyaWFudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmUgJiYgYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlW2hlYWRlci5qb2luZWRGaWx0ZXJTb3J0T2JqZWN0S2V5c10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGhlYWRlci5kaXNhYmxlVG9vbHRpcEljb24gJiYgIShhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmUgJiYgYW5uYUZpbHRlclNlcnZpY2UuaXNGaWx0ZXJTb3J0QWN0aXZlW2hlYWRlci5qb2luZWRGaWx0ZXJTb3J0T2JqZWN0S2V5c10pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInNsaWRlclRvb2xUaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnQtdG9wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwibm9uLWVkaXQtc2xpZGVyLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3QxPVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmluZFRoZVZhbHVlVG9Ub29sVGlwKHQxLCBoZWFkZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5maWx0ZXIgPT09ICdEQVRFJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZpbHRlci12YXJpYW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSAmJiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVbaGVhZGVyLmpvaW5lZEZpbHRlclNvcnRPYmplY3RLZXlzXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaGVhZGVyLmRpc2FibGVUb29sdGlwSWNvbiAmJiAhKGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSAmJiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVbaGVhZGVyLmpvaW5lZEZpbHRlclNvcnRPYmplY3RLZXlzXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwiZGF0ZVBpY2tlclRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJub24tZWRpdC1kYXRlcGlja2VyLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3QyPVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmluZFRoZVZhbHVlVG9Ub29sVGlwKHQyLCBoZWFkZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5maWx0ZXIgPT09ICdXRUVLJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZpbHRlci12YXJpYW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSAmJiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVbaGVhZGVyLmpvaW5lZEZpbHRlclNvcnRPYmplY3RLZXlzXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaGVhZGVyLmRpc2FibGVUb29sdGlwSWNvbiAmJiAhKGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSAmJiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVbaGVhZGVyLmpvaW5lZEZpbHRlclNvcnRPYmplY3RLZXlzXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwid2Vla1BpY2tlclRvb2xUaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnQtdG9wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3QzPVwibmdiVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmluZFRoZVZhbHVlVG9Ub29sVGlwKHQzLCBoZWFkZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlci5maWx0ZXIgPT09ICdUSU1FJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZpbHRlci12YXJpYW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSAmJiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVbaGVhZGVyLmpvaW5lZEZpbHRlclNvcnRPYmplY3RLZXlzXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogaGVhZGVyLmRpc2FibGVUb29sdGlwSWNvbiAmJiAhKGFubmFGaWx0ZXJTZXJ2aWNlLmlzRmlsdGVyU29ydEFjdGl2ZSAmJiBhbm5hRmlsdGVyU2VydmljZS5pc0ZpbHRlclNvcnRBY3RpdmVbaGVhZGVyLmpvaW5lZEZpbHRlclNvcnRPYmplY3RLZXlzXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwidGltZUZpbHRlclRvb2xUaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGxlZnQtdG9wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcENsYXNzPVwibm9uLWVkaXQtdGltZS10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0ND1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJpbmRUaGVWYWx1ZVRvVG9vbFRpcCh0NCwgaGVhZGVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGlkZGVuKT1cImNsb3NlVG9vbHRpcCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxiciAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhlYWRlci5zaG93VG9vbHRpcEljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD1cIm5vLWZpbHRlci1zcGFjZVwiPjwvc3Bhbj48YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJoZWFkZXIudG9vbHRpcCAmJiBoZWFkZXIudG9vbHRpcC5uYW1lID09ICdsdXJWaW9sYXRpb25JbmZvVG9vbHRpcCdcIiBjbGFzcz1cInt7aGVhZGVyWyd0b29sdGlwJ10uaWNvbkNsYXNzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnZmxvYXQnOiBoZWFkZXJbJ3Rvb2x0aXAnXS5pY29uUG9zaXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdD1cIm5nYlRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cImx1clZpb2xhdGlvbkluZm9Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ7eyBoZWFkZXJbJ3Rvb2x0aXAnXS50b29sdGlwUG9zaXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInt7IGhlYWRlclsndG9vbHRpcCddLnRvb2x0aXBDbGFzcyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ0RSUidcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICptYXRDZWxsRGVmPVwibGV0IFJPV19EQVRBXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93U2tlbGV0b25Mb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5neC1za2VsZXRvbi1sb2FkZXIgY291bnQ9XCIxXCIgW3RoZW1lXT1cInsgaGVpZ2h0OiAnMTBweCcsIGRpc3BsYXk6ICdibG9jaycgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LXNrZWxldG9uLWxvYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93U2tlbGV0b25Mb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFST1dfREFUQVsnaGlkZScgKyBjb2x1bW5EZWYuaGVhZGVySW5mb1swXS5vYmplY3RLZXkgKyAnVGQnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5yb3dzcGFuXT1cIlJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvWzBdLm9iamVjdEtleSArICdSb3dzcGFuJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzdWJsaW5lIG9mIGNvbHVtbkRlZi5oZWFkZXJJbmZvOyBsZXQgc3VibGluZUluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwic3VibGluZS50eXBlT2ZCb2R5RGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInSUNPTidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJST1dfREFUQS5pY29uQ2xhc3NcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidDSEVDS0JPWCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJST1dfREFUQVtzdWJsaW5lLm9iamVjdEtleV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Rpc2FibGUtY2hlY2tib3gnOiBST1dfREFUQVtzdWJsaW5lLmlzRGlzYWJsZWRLZXldIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC1jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RSb3coUk9XX0RBVEEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhUk9XX0RBVEFbc3VibGluZS5vYmplY3RLZXldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtdW5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlLWNoZWNrYm94JzogUk9XX0RBVEFbc3VibGluZS5pc0Rpc2FibGVkS2V5XSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RSb3coUk9XX0RBVEEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInUkFESU8nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWdyb3VwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJST1dfREFUQVsnUmFkaW9CdXR0b25Db25maWcnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiUk9XX0RBVEFbc3VibGluZS5vYmplY3RLZXldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ11bMF0uaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmFkaW9CdXR0b24gb2YgUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ107IGxldCBsYXN0ID0gbGFzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7eyByYWRpb0J1dHRvbi52YWx1ZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7IHJhZGlvQnV0dG9uLmNsYXNzIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpb0J1dHRvbkNsaWNrZWQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJPV19EQVRBLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpb0J1dHRvbi52YWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUk9XX0RBVEFbJ1JhZGlvQnV0dG9uQ29uZmlnJ11bMF0uaXNEaXNhYmxlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgcmFkaW9CdXR0b24ubGFiZWwgfX08L21hdC1yYWRpby1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxiciAqbmdJZj1cIiFsYXN0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBST1dfREFUQVtzdWJsaW5lLm9iamVjdEtleV0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmxpbmUub2JqZWN0S2V5ID09ICdTdGF0dXMnICYmIChST1dfREFUQVsnUmVtYXJrcyddICE9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtaSBtZGktaW5mby1vdXRsaW5lIHJlbWFya3MtdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cImNvbHVtbkluZm9Ub29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInJlbWFya3MtaW5mby10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Q9XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJndEdlbmVyYWxDb25maWcuY29tcG9uZW50ICE9ICdEUlInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IFJPV19EQVRBXCIgW3N0eWxlLmJhY2tncm91bmRdPVwiUk9XX0RBVEEuYmFja2dyb3VuZENvbG9yXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJST1dfREFUQS5ib3JkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie3tST1dfREFUQS5yb3dDbGFzc319XCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyICpuZ0lmPVwic2hvd1NrZWxldG9uTG9hZGluZ1wiIGNvdW50PVwiMVwiIFt0aGVtZV09XCJ7IGhlaWdodDogJzEwcHgnLCBkaXNwbGF5OiAnYmxvY2snIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93U2tlbGV0b25Mb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGVEYXRhLmxlbmd0aCA+IDAgJiYgIShpc05vRGF0YVRvRGlzcGxheVN1YmplY3QkIHwgYXN5bmMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzaG93RWxsaXBzaXNUZXh0T25Ib3ZlciAqbmdGb3I9XCJsZXQgc3VibGluZSBvZiBjb2x1bW5EZWYuaGVhZGVySW5mbzsgbGV0IHN1YkxpbmVJbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS50eXBlT2ZCb2R5RGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0lDT04nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIhKHN0YXJyZWRJblByb2dyZXNzICYmIFJPV19EQVRBLm9yZGVySWQgPT0gc2VsZWN0ZWRTdGFycmVkT3JkZXJJZClcIiBbY2xhc3NdPVwiUk9XX0RBVEEuaWNvbkNsYXNzXCIgKGNsaWNrKT1cImljb25DbGlja2VkKFJPV19EQVRBLFJPV19EQVRBLmljb25DbGFzcylcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YXJyZWRJblByb2dyZXNzICYmIFJPV19EQVRBLm9yZGVySWQgPT0gc2VsZWN0ZWRTdGFycmVkT3JkZXJJZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1mb3ItYnV0dG9uLWRpcmVjdGl2ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2lyY3VsYXJQcm9ncmVzc0JhclwiPjwvbmctY29udGFpbmVyPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInU1ZHX0lDT04nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFubmEtY29yZS1hbm5hLWljb24tY29sdW1uIFtjb21wb25lbnROYW1lXT1cImd0R2VuZXJhbENvbmZpZy5jb21wb25lbnRcIiBbb2JqZWN0S2V5XT1cInN1YmxpbmUub2JqZWN0S2V5XCIgW2RhdGFPYmplY3RdPVwiUk9XX0RBVEFcIiAob25Db2x1bW5JY29uQ2xpY2tlZCk9XCJzdmdJY29uQ2xpY2tlZCgkZXZlbnQpXCI+PC9hbm5hLWNvcmUtYW5uYS1pY29uLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInVEVYVF9BQ1RJT05TJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nRm9yPVwibGV0IHRleHQgb2YgUk9XX0RBVEEudGV4dEFjdGlvbnNcIiAoY2xpY2spPVwidGV4dEFjdGlvbkNsaWNrZWQoUk9XX0RBVEEsdGV4dC5pZClcIiBbZGlzYWJsZWRdPVwidGV4dC5pc0Rpc2FibGVkXCIgY2xhc3M9XCJ7e3RleHQuY2xhc3N9fVwiPnt7dGV4dC5uYW1lfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInQ0hFQ0tCT1gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLm9iamVjdEtleV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzYWJsZS1jaGVja2JveCc6IFJPV19EQVRBW2NvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0uaXNEaXNhYmxlZEtleV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC1jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0T3JVbnNlbGVjdENoZWNrYm94KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJPV19EQVRBLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5vYmplY3RLZXldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXNhYmxlLWNoZWNrYm94JzogUk9XX0RBVEFbY29sdW1uRGVmLmhlYWRlckluZm9bc3ViTGluZUluZGV4XS5pc0Rpc2FibGVkS2V5XVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0T3JVbnNlbGVjdENoZWNrYm94KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJPV19EQVRBLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkRlZi5oZWFkZXJJbmZvW3N1YkxpbmVJbmRleF0ub2JqZWN0S2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidDTElDS0FCTEVfREFUQSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdWJsaW5lLm9iamVjdEtleSA9PSAnZGlzcGxheUJvb2tlZFVuaXRzJyAmJiBndEdlbmVyYWxDb25maWcuY29tcG9uZW50ID09ICdSQVRJTkcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjbGlja2FibGUtZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzcG90RGV0YWlsc0Rvd25sb2FkQ2xpY2tlZCgnREFUQVJPVycsIFJPV19EQVRBKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Rpc2FibGVkLWNsaWNrYWJsZS1kYXRhJzogZG93bmxvYWRJblByb2dyZXNzIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgUk9XX0RBVEEuZGlzcGxheUJvb2tlZFVuaXRzfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBzcG90LWRldGFpbHMtZG93bmxvYWQtaWNvbnNcIj5nZXRfYXBwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG93bmxvYWRJblByb2dyZXNzIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIFJPV19EQVRBLmludmVudG9yeUNvZGVJZCA9PSBzZWxlY3RlZEludmVudG9yeUlkRm9yRG93bmxvYWQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgUk9XX0RBVEEuZGVtb2dyYXBoaWMgPT0gc2VsZWN0ZWREZW1vZ3JhcGhpY0ZvckRvd25sb2FkIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjaXJjdWxhclByb2dyZXNzQmFyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgIT0gJ2Rlc2NyaXB0aW9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBST1dfREFUQVtjb2x1bW5EZWYuaGVhZGVySW5mb1tzdWJMaW5lSW5kZXhdLm9iamVjdEtleV0gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN1YmxpbmUub2JqZWN0S2V5ID09ICdpbnZlbnRvcnlDb2RlJyAmJiBST1dfREFUQVsnaXNTZWxsZXJHcm91cCddICYmIGd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ1JBVElORycgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWkgbWRpLWluZm8tb3V0bGluZSBzZWxsZXItdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJzZWxsZXJIaWVyYXJjaHlUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbSBhdXRvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaWRkZW4pPVwiY2xvc2VUb29sdGlwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luZm89XCJuZ2JUb29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cImhpZXJhcmNoeS10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cImJpbmRUaGVWYWx1ZVRvU2VsbGVyR3JvdXBUb29sdGlwKFJPV19EQVRBLnNlbGxlckdyb3VwSGllcmFyY2h5LCBpbmZvKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cInN1YmxpbmUub2JqZWN0S2V5ID09ICdkaXNwbGF5Qm9va2VkQXZlcmFnZVJhdGluZycgJiYgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJyAmJiBST1dfREFUQVsnc2hvd1JhdGluZ0F2ZXJhZ2VJY29uJ10gXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWkgbWRpLWluZm8tb3V0bGluZSBzZWxsZXItdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20gYXV0b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJzZXRJc0RpZmZlcmVuY2UoUk9XX0RBVEEuaXNEaWZmZXJlbmNlTGVzc1RoYW4yNVBlcmNlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBDbGFzcz1cInBvc3RlZC1hdmctdG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJwb3N0ZWRSYXRpbmdEaWZmZXJlbmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgPT0gJ2Rpc3BsYXlCb29rZWRBdmVyYWdlSW1wcmVzc2lvbicgJiYgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJyAmJiBST1dfREFUQVsnc2hvd0ltcHJlc3Npb25BdmVyYWdlSWNvbiddIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pIG1kaS1pbmZvLW91dGxpbmUgc2VsbGVyLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tIGF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwic2V0SXNEaWZmZXJlbmNlKFJPV19EQVRBLmlzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQ2xhc3M9XCJwb3N0ZWQtYXZnLXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwicG9zdGVkSW1wRGlmZmVyZW5jZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3VibGluZS5vYmplY3RLZXkgPT0gJ2Rlc2NyaXB0aW9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cIlJPV19EQVRBLmRlc2NyaXB0aW9uTWVzc2FnZSB8fCBST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsUmVmZXJlbmNlTnVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiUk9XX0RBVEEuZGVzY3JpcHRpb25NZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgUk9XX0RBVEEuZGVzY3JpcHRpb25NZXNzYWdlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsUmVmZXJlbmNlTnVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1haWwgUmVmOiB7eyBST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsUmVmZXJlbmNlTnVtIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cInt7IFJPV19EQVRBLmRlc2NyaXB0aW9uRGV0YWlsc1VybCB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJST1dfREFUQS5kZXNjcmlwdGlvbkRldGFpbHNVcmxUeXBlID09PSAnUERGJyB8fCBST1dfREFUQS5kZXNjcmlwdGlvbkRldGFpbHNVcmxUeXBlID09PSAnRVhDRUwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biB2aWV3RGV0YWlsc0FuZEVtYWlsQnRuXCI+RG93bmxvYWQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiUk9XX0RBVEEuYWN0aXZpdHluYW1lLnRvTG93ZXJDYXNlKCkgPT0gJ29yZGVyIG9uYm9hcmRlZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiUk9XX0RBVEEuZGVzY3JpcHRpb25EZXRhaWxzVXJsVHlwZSA9PT0gJ0xJTksnXCIgKGNsaWNrKT1cInZpZXdEZXRhaWxzQ2xpY2tlZChST1dfREFUQSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biB2aWV3RGV0YWlsc0FuZEVtYWlsQnRuIG9yZGVyLW9uYm9hcmRlZFwiPlZpZXcgZGV0YWlsczwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7eyBST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsVXJsIH19XCIgdGFyZ2V0PVwiX2JsYW5rXCIgKm5nSWY9XCJST1dfREFUQS5kZXNjcmlwdGlvbkVtYWlsVXJsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIHZpZXdEZXRhaWxzQW5kRW1haWxCdG5cIj5WaWV3IGVtYWlsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQgfCBhc3luYylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e251bGx9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGFubmEtY29yZS1uby1kYXRhLWxpYiBbd2lkdGhdPVwibm9EYXRhV2lkdGhcIiBbbWFyZ2luVG9wXT1cIm1hcmdpblRvcFwiICpuZ0lmPVwiKGlzTm9EYXRhVG9EaXNwbGF5U3ViamVjdCQgfCBhc3luYylcIj4gPC9hbm5hLWNvcmUtbm8tZGF0YS1saWI+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBDaGVja2JveCB0ZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNmaWx0ZXJUb29sdGlwPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY29udGFpbmVyXCIgKm5nSWY9XCJzaG93RmlsdGVyVG9vbHRpcFRhYnNcIj5cclxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnZnVsbC13aWR0aCc6IGZpbHRlclRhYk9iamVjdHMubGVuZ3RoID09IDF9XCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmlsdGVyVGFiT2JqZWN0c1wiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImZpbHRlci10YWJcIiBbdGl0bGVdPVwiZGF0YS5sYWJlbFwiIChjbGljayk9XCJwb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8oZGF0YSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPT0gZGF0YS5rZXl9XCIgKm5nSWY9XCJmaWx0ZXJUYWJPYmplY3RzLmxlbmd0aCA+IDBcIj57eyBkYXRhLmxhYmVsIH19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1zb3J0XCIgKm5nSWY9XCJzaG93U29ydENvbXBvbmVudFwiPlxyXG4gICAgICAgIDxhbm5hLWNvcmUtc29ydC1saWIgIFtuZ0NsYXNzXT1cInsnbm8tYm90dG9tLWJvcmRlcic6ICFzaG93RmlsdGVyQ29tcG9uZW50fVwiXHJcbiAgICAgICAgKHNvcnRPcHRpb25DbGlja2VkKT1cInN0b3JlU29ydFR5cGVJblRlbXBWYXJpYWJsZSgkZXZlbnQpXCIgW3NvcnRPYmplY3RLZXldPVwiYW5uYUZpbHRlclNlcnZpY2Uuc2VsZWN0ZWRSYWRpb1wiPjwvYW5uYS1jb3JlLXNvcnQtbGliPlxyXG4gICAgPC9kaXY+XHJcbiAgICBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZpbHRlci10ZXh0LWJ0blwiIFtkaXNhYmxlZF09XCJkaXNhYmxlQ2xlYXJBbGxcIiAoY2xpY2spPVwidW5DaGVja0FsbENoZWNrYm94KClcIj5DbGVhciBhbGw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZpbHRlci10ZXh0LWJ0blwiIFtkaXNhYmxlZF09XCJkaXNhYmxlU2VsZWN0QWxsXCIgKGNsaWNrKT1cInNlbGVjdEFsbENoZWNrYm94KClcIj5TZWxlY3QgYWxsPC9idXR0b24+XHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIDxwIGNsYXNzPVwic2VhcmNoLWJveFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1pIG1kaS1zZWFyY2ggc2VhcmNoLWljb24gc2VhcmNoLWljb24tcG9zaXRpb25cIj48L2k+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDBweFwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaEl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VhcmNoRm9yVGhlSXRlbSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWNsb3NlIHNlYXJjaC1iYXItY2xvc2VcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGUtY2xvc2UtaWNvbic6ICghc2VhcmNoSXRlbSB8fCBzZWFyY2hJdGVtLmxlbmd0aCA9PSAwKSB9XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VhcmNoZWRJdGVtKClcIj48L2k+XHJcblxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246cmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgPCEtLSBUcmFjayBCeSBmdW5jIC0tPlxyXG4gICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IGl0ZW1TaXplPVwiMThcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodE9mQ2hlY2tib3hUb29sdGlwRmlsdGVyXCIgY2xhc3M9XCJkcm9wZG93bi1kYXRhLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPHAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgb3B0aW9uIG9mIHRvb2x0aXBPcHRpb25zXCIgY2xhc3M9XCJpbnB1dCBleGFtcGxlLWl0ZW1cIiAoY2xpY2spPVwic2VsZWN0VW5zZWxlY3RDaGVja2JveChvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvcHRpb24uaXNTZWxlY3RlZFwiIHJvbGU9XCJidXR0b25cIiBjbGFzcz1cIm1pIG1kaS1jaGVjay1ib3ggY2hlY2stYm94XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIW9wdGlvbi5pc1NlbGVjdGVkXCIgcm9sZT1cImJ1dHRvblwiIGNsYXNzPVwibWkgbWRpLWNoZWNrLWJveC1vdXRsaW5lLWJsYW5rIGNoZWNrLWJveCB1bmNoZWNrZWRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRhXCIgdGl0bGU9XCJ7eyBvcHRpb24udmFsdWUgfX1cIiBbaW5uZXJIVE1MXT1cIm9wdGlvbi5sYWJlbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBwb2ludGVyLWV2ZW50czpub25lXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlQ2hlY2tib3hGaWx0ZXIoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBkaXNhYmxlQ2hlY2tib3hBcHBseSB9XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5RmlsdGVycygpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVDaGVja2JveEFwcGx5XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIEFwcGx5XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd0ZpbHRlckNvbXBvbmVudFwiPih7eyBzZWxlY3RlZENoZWNrYm94T3B0aW9uc0NvdW50ID09IHRvb2x0aXBPcHRpb25zLmxlbmd0aCAmJiB0b29sdGlwT3B0aW9ucy5sZW5ndGggIT0gMCAmJiAhc2VhcmNoSXRlbT8gJ0FsbCc6IHNlbGVjdGVkQ2hlY2tib3hPcHRpb25zQ291bnQgfX0pPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFNsaWRlciB0ZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNzbGlkZXJUb29sVGlwPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY29udGFpbmVyXCIgKm5nSWY9XCJzaG93RmlsdGVyVG9vbHRpcFRhYnNcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpbHRlclRhYk9iamVjdHNcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJmaWx0ZXItdGFiXCIgW3RpdGxlXT1cImRhdGEubGFiZWxcIiAoY2xpY2spPVwicG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGRhdGEpXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvID09IGRhdGEua2V5fVwiICpuZ0lmPVwiZmlsdGVyVGFiT2JqZWN0cy5sZW5ndGggPiAwXCI+e3sgZGF0YS5sYWJlbCB9fTwvcD4gICBcclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8YnV0dG9uIGNsYXNzPVwiY29sdW1uLWNsZWFyLWFsbCBhbGlnbi1jZW50ZXJcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5cclxuICAgICAgICBDbGVhciBmaWx0ZXJcclxuICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICBcclxuICAgIDxhbm5hLWNvcmUtc29ydC1saWIgKm5nSWY9XCJzaG93U29ydENvbXBvbmVudFwiIFtuZ0NsYXNzXT1cInsnbm8tYm90dG9tLWJvcmRlcic6ICFzaG93RmlsdGVyQ29tcG9uZW50fVwiXHJcbiAgICAoc29ydE9wdGlvbkNsaWNrZWQpPVwic3RvcmVTb3J0VHlwZUluVGVtcFZhcmlhYmxlKCRldmVudClcIiBbc29ydE9iamVjdEtleV09XCJhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXCI+PC9hbm5hLWNvcmUtc29ydC1saWI+XHJcbiAgICBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5DbGVhciBmaWx0ZXI8L2J1dHRvbj5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1pbi1tYXhDb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2xpZGVyLXRleHRcIlxyXG4gICAgICAgICAgICAgICAgc3RlcD1cInt7IHNsaWRlckZpbHRlclRleHRCb3hTdGVwIH19XCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2xpZGVyTWluVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibWluVmFsdWVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydyZWQtYm9yZGVyJzogc2hvd1NsaWRlck1pblZhbHVlRXJyb3J9XCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTWluXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPHNwYW4+VG88L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNsaWRlci10ZXh0XCJcclxuICAgICAgICAgICAgICAgIHN0ZXA9XCJ7eyBzbGlkZXJGaWx0ZXJUZXh0Qm94U3RlcCB9fVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNsaWRlck1heFZhbHVlXCJcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1heFZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncmVkLWJvcmRlcic6IHNob3dTbGlkZXJNYXhWYWx1ZUVycm9yfVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk1heFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlYmFyLXNsaWRlclwiPlxyXG4gICAgICAgICAgICA8bmd4LXNsaWRlclxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItc2xpZGVyXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzbGlkZXJNaW5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBbaGlnaFZhbHVlXT1cInNsaWRlck1heFZhbHVlXCJcclxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxyXG4gICAgICAgICAgICA+PC9uZ3gtc2xpZGVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsU2xpZGVyRmlsdGVyKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZGlzYWJsZVNsaWRlckFwcGx5QnV0dG9uIH1cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlTbGlkZXJGaWx0ZXIoKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlU2xpZGVyQXBwbHlCdXR0b25cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgQXBwbHlcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBEYXRlIFBpY2tlciBUZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNkYXRlUGlja2VyVG9vbHRpcD5cclxuICAgIDxkaXYgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIiAqbmdJZj1cInNob3dGaWx0ZXJUb29sdGlwVGFic1wiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmlsdGVyVGFiT2JqZWN0c1wiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImZpbHRlci10YWJcIiBbdGl0bGVdPVwiZGF0YS5sYWJlbFwiIChjbGljayk9XCJwb3B1bGF0ZVRvb2x0aXBEYXRhQmFzZWRPblNlbGVjdGVkUmFkaW8oZGF0YSlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW8gPT0gZGF0YS5rZXl9XCIgKm5nSWY9XCJmaWx0ZXJUYWJPYmplY3RzLmxlbmd0aCA+IDBcIj57eyBkYXRhLmxhYmVsIH19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGFubmEtY29yZS1zb3J0LWxpYiAqbmdJZj1cInNob3dTb3J0Q29tcG9uZW50XCIgW25nQ2xhc3NdPVwieyduby1ib3R0b20tYm9yZGVyJzogIXNob3dGaWx0ZXJDb21wb25lbnR9XCJcclxuICAgIChzb3J0T3B0aW9uQ2xpY2tlZCk9XCJzdG9yZVNvcnRUeXBlSW5UZW1wVmFyaWFibGUoJGV2ZW50KVwiIFtzb3J0T2JqZWN0S2V5XT1cImFubmFGaWx0ZXJTZXJ2aWNlLnNlbGVjdGVkUmFkaW9cIj48L2FubmEtY29yZS1zb3J0LWxpYj5cclxuICAgIFxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWx0ZXJDb21wb25lbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5cclxuICAgICAgICAgICAgICAgIENsZWFyIGZpbHRlclxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGFubmEtY29yZS1jYWxlbmRhci1maWx0ZXItbGliXHJcbiAgICAgICAgICAgICAgICBbbWluRGF0ZV09XCJjYWxlbmRhck1pbkVuYWJsZWREYXRlXCJcclxuICAgICAgICAgICAgICAgIFttYXhEYXRlXT1cImNhbGVuZGFyTWF4RW5hYmxlZERhdGVcIlxyXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkRnJvbURhdGVdPVwic2VsZWN0ZWRNaW5EYXRlXCJcclxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZFRvRGF0ZV09XCJzZWxlY3RlZE1heERhdGVcIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkRGF0ZSkgPSBcImNhbGVuZGFyRGF0ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2VsZWN0ZWRMYWJlbFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9hbm5hLWNvcmUtY2FsZW5kYXItZmlsdGVyLWxpYj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsSW5EYXRlRmlsdGVyKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFwcGx5RGF0ZUZpbHRlcigpXCIgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZGlzYWJsZUNhbGVuZGFyQXBwbHlCdG4gfVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVDYWxlbmRhckFwcGx5QnRuXCI+QXBwbHk8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgXHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFdlZWsgUGlja2VyIFRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI3dlZWtQaWNrZXJUb29sVGlwPlxyXG4gICAgPGRpdiBjbGFzcz1cIndlZWtwaWNrZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGFubmEtY29yZS13ZWVrLWNhbGVuZGFyLWZpbHRlci1saWJcclxuICAgICAgICAgICAgW3dlZWstY2FsZW5kYXItY29uZmlnXT1cImd0R2VuZXJhbENvbmZpZy5tdWx0aVdlZWtQaWNrZXJDb25maWdcIlxyXG4gICAgICAgICAgICAoYXBwbHkpPVwiYXBwbHlXZWVrRmlsdGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICBbZnJvbS1kYXRlXT1cImNhbGVuZGFyTWluRW5hYmxlZERhdGVcIlxyXG4gICAgICAgICAgICBbdG8tZGF0ZV09XCJjYWxlbmRhck1heEVuYWJsZWREYXRlXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9hbm5hLWNvcmUtd2Vlay1jYWxlbmRhci1maWx0ZXItbGliPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFRpbWUgRmlsdGVyIFRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI3RpbWVGaWx0ZXJUb29sVGlwPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicmFkaW8tY29udGFpbmVyXCIgKm5nSWY9XCJzaG93RmlsdGVyVG9vbHRpcFRhYnNcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpbHRlclRhYk9iamVjdHNcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJmaWx0ZXItdGFiXCIgW3RpdGxlXT1cImRhdGEubGFiZWxcIiAoY2xpY2spPVwicG9wdWxhdGVUb29sdGlwRGF0YUJhc2VkT25TZWxlY3RlZFJhZGlvKGRhdGEpXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvID09IGRhdGEua2V5fVwiICpuZ0lmPVwiZmlsdGVyVGFiT2JqZWN0cy5sZW5ndGggPiAwXCI+e3sgZGF0YS5sYWJlbCB9fTwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxhbm5hLWNvcmUtc29ydC1saWIgKm5nSWY9XCJzaG93U29ydENvbXBvbmVudFwiIFtuZ0NsYXNzXT1cInsnbm8tYm90dG9tLWJvcmRlcic6ICFzaG93RmlsdGVyQ29tcG9uZW50fVwiXHJcbiAgICAoc29ydE9wdGlvbkNsaWNrZWQpPVwic3RvcmVTb3J0VHlwZUluVGVtcFZhcmlhYmxlKCRldmVudClcIiBbc29ydE9iamVjdEtleV09XCJhbm5hRmlsdGVyU2VydmljZS5zZWxlY3RlZFJhZGlvXCI+PC9hbm5hLWNvcmUtc29ydC1saWI+XHJcbiAgICBcclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmlsdGVyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbHVtbi1jbGVhci1hbGxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUNvbHVtbkNsZWFyQWxsQnRuXCIgKGNsaWNrKT1cImNsZWFyQ29sdW1uRmlsdGVyKClcIj5DbGVhciBmaWx0ZXI8L2J1dHRvbj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidGltZS1maWx0ZXItY2hlY2tib3hlc1wiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnU1BPVERFVEFJTFMnIHx8IGd0R2VuZXJhbENvbmZpZy5jb21wb25lbnQgPT0gJ0VYQ0xVREVJTlZFTlRPUllQT1BVUCcgfHwgZ3RHZW5lcmFsQ29uZmlnLmNvbXBvbmVudCA9PSAnUkFUSU5HJ1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8IS0tIE11bHRpIHRpbWUgb3B0aW9uIGNoZWNrYm94IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwicGFkZGluZzogMC41cmVtIDAgMC41cmVtIDAuNXJlbVwiICpuZ0lmPVwic2hvd011bHRpVGltZUNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RNdWx0aVRpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhbXVsdGlUaW1lQ2hlY2tib3hDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGN1c3RvbS1jb2x1bW4tY2hlY2tib3gtdW5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0T3JVbnNlbGVjdE11bHRpVGltZUNoZWNrYm94KClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrX2JveF9vdXRsaW5lX2JsYW5rXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAycHhcIj5JbmNsdWRlIE11bHRpPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBaZXJvIHRpbWUgb3B0aW9uIGNoZWNrYm94IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwicGFkZGluZzogMC41cmVtIDAgMC41cmVtIDAuNXJlbVwiICpuZ0lmPVwic2hvd1plcm9UaW1lQ2hlY2tib3hcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ6ZXJvVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0WmVyb1RpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhemVyb1RpbWVDaGVja2JveENoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgY3VzdG9tLWNvbHVtbi1jaGVja2JveC11bmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0WmVyb1RpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4XCI+SW5jbHVkZSBaZXJvPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBFbnRlciB0aW1lIHJhbmdlIG9wdGlvbiBjaGVja2JveCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cInBhZGRpbmc6IDAuNXJlbSAwIDAuNXJlbSAwLjVyZW1cIiAqbmdJZj1cInNob3dFbnRlclRpbWVDaGVja2JveFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVudGVyVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LWNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPclVuc2VsZWN0RW50ZXJUaW1lQ2hlY2tib3goKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tfYm94XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWVudGVyVGltZUNoZWNrYm94Q2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBjdXN0b20tY29sdW1uLWNoZWNrYm94LXVuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yVW5zZWxlY3RFbnRlclRpbWVDaGVja2JveCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBjaGVja19ib3hfb3V0bGluZV9ibGFua1xyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMnB4XCI+RW50ZXIgdGltZSByYW5nZTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtbGFiZWwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD5Gcm9tPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIG51bWJlcklucHV0XCIgW25nQ2xhc3NdPVwieydlcnJvci1ib3JkZXInOiBzdGFydFRpbWVIb3VyRXJyfVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRGcm9tVGltZVswXVwiIHR5cGU9XCJ0ZXh0XCIgKG5nTW9kZWxDaGFuZ2UpPVwic3RhcnRUaW1lSG91ckNoYW5nZSgkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLXRyaWFuZ2xlIHVwd2FyZFwiIChjbGljayk9XCJjaGFuZ2VTdGFydFRpbWVIb3VyKHRydWUpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLXRyaWFuZ2xlIGRvd253YXJkXCIgKGNsaWNrKT1cImNoYW5nZVN0YXJ0VGltZUhvdXIoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj46PC9zcGFuPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbnVtYmVySW5wdXRcIiBbbmdDbGFzc109XCJ7J2Vycm9yLWJvcmRlcic6IHN0YXJ0VGltZU1pbkVycn1cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRnJvbVRpbWVbMV1cIiB0eXBlPVwidGV4dFwiIChuZ01vZGVsQ2hhbmdlKT1cInN0YXJ0VGltZU1pbkNoYW5nZSgkZXZlbnQpXCIvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktdHJpYW5nbGUgdXB3YXJkXCIgKGNsaWNrKT1cImNoYW5nZVN0YXJ0VGltZU1pbnV0ZSh0cnVlKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS10cmlhbmdsZSBkb3dud2FyZFwiIChjbGljayk9XCJjaGFuZ2VTdGFydFRpbWVNaW51dGUoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRnJvbVRpbWVbMl1cIiAobmdNb2RlbENoYW5nZSk9XCJkaXNhYmxlVGltZUZpbHRlckFwcGx5QnV0dG9uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJBTVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BTTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cIlBNXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlBNPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtbGFiZWwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD5UbzwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBudW1iZXJJbnB1dFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUb1RpbWVbMF1cIiBbbmdDbGFzc109XCJ7J2Vycm9yLWJvcmRlcic6IGVuZFRpbWVIb3VyRXJyfVwiIChuZ01vZGVsQ2hhbmdlKT1cImVuZFRpbWVIb3VyQ2hhbmdlKCRldmVudClcIiB0eXBlPVwidGV4dFwiIC8+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcnJvdy1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS10cmlhbmdsZSB1cHdhcmRcIiAoY2xpY2spPVwiY2hhbmdlRW5kVGltZUhvdXIodHJ1ZSlcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktdHJpYW5nbGUgZG93bndhcmRcIiAoY2xpY2spPVwiY2hhbmdlRW5kVGltZUhvdXIoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj46PC9zcGFuPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbnVtYmVySW5wdXRcIiBbbmdDbGFzc109XCJ7J2Vycm9yLWJvcmRlcic6IGVuZFRpbWVNaW5FcnJ9XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRvVGltZVsxXVwiIChuZ01vZGVsQ2hhbmdlKT1cImVuZFRpbWVNaW5DaGFuZ2UoJGV2ZW50KVwiIHR5cGU9XCJ0ZXh0XCIgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLXRyaWFuZ2xlIHVwd2FyZFwiIChjbGljayk9XCJjaGFuZ2VFbmRUaW1lTWludXRlKHRydWUpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLXRyaWFuZ2xlIGRvd253YXJkXCIgKGNsaWNrKT1cImNoYW5nZUVuZFRpbWVNaW51dGUoZmFsc2UpXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVG9UaW1lWzJdXCIgKG5nTW9kZWxDaGFuZ2UpPVwiZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ1dHRvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwiQU1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QU08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJQTVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5QTTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlVGltZUZpbHRlcigpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGRpc2FibGVUaW1lRmlsdGVyQXBwbHlCdG4gfVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhcHBseVRpbWVGaWx0ZXJzKClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZVRpbWVGaWx0ZXJBcHBseUJ0blwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICBBcHBseVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbHVtbkluZm9Ub29sdGlwPlxyXG4gIDxwIHN0eWxlPVwicGFkZGluZzogMC41cmVtOyBjb2xvcjogYmxhY2s7d2hpdGUtc3BhY2U6IG5vd3JhcDtcIj5UaGlzIHByZWVtcHRpb24gaXMgcmVqZWN0ZWQgYW5kIG5vdCBtYXJrZWQgZm9yIGNyZWRpdC48L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3JhdGluZ0luZm9Ub29sdGlwPlxyXG4gICAgPHAgY2xhc3M9XCJmaXJzdC1yb3dcIj5TaG93cyAnQm9va2VkIFJhdGluZycgZm9yIFByZWVtcHRpb25zICYgTWFrZUdvb2QgT2ZmZXJlZCBzcG90KHMpLjwvcD5cclxuICAgIDxwIGNsYXNzPVwic2Vjb25kLXJvd1wiPlNob3dzICdQcm9qZWN0ZWQgUmF0aW5nJyBmb3IgQURVIE9mZmVyZWQgc3BvdChzKS48L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2ltcHNJbmZvVG9vbHRpcD5cclxuICAgIDxwIGNsYXNzID1cImZpcnN0LXJvd1wiID5TaG93cyAnQm9va2VkIElNUFMnIGZvciBQcmVlbXB0aW9ucyAmIE1ha2VHb29kIE9mZmVyZWQgc3BvdChzKS48L3A+XHJcbiAgICA8cCBjbGFzcz1cInNlY29uZC1yb3dcIiA+U2hvd3MgJ1Byb2plY3RlZCBJTVBTJyBmb3IgQURVIE9mZmVyZWQgc3BvdChzKS48L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Nwb3RzQ29sdW1uRXF1aXZhbGl6YXRpb25NZXNzYWdlVG9vbHRpcD5cclxuICAgIDxwIGNsYXNzPVwic3BvdC1jb2x1bW4tdG9vbHRpcC1tZXNzYWdlXCIgPlRoaXMgY29uc2lzdHMgb2YgZXF1aXZhbGl6ZWQgc3BvdHMgYW5kIHVuLWVxdWl2YWxpemVkIFBhaWQgUHJvZ3JhbXMgJiB1bi1lcXVpdmFsaXplZCBOb24tc3BvdHMuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNyYXRlSW5mb1Rvb2x0aXA+XHJcbiAgICA8cCBjbGFzcyA9XCJmaXJzdC1yb3dcIiA+U2hvd3MgJ0Jvb2tlZCBSYXRlJyBmb3IgUHJlZW1wdGlvbnMgJiBNYWtlR29vZCBPZmZlcmVkIHNwb3QocykuPC9wPlxyXG4gICAgPHAgY2xhc3M9XCJzZWNvbmQtcm93XCIgPlNob3dzICdQcm9qZWN0ZWQgJCBWYWx1ZScgZm9yIEFEVSBPZmZlcmVkIHNwb3QocykuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzZWxsZXJIaWVyYXJjaHlUb29sdGlwPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGxlckdyb3VwSGllcmFyY2h5Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcyA9IFwiaGllcmFyY2h5LXRhYmxlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInNlbGxlci1oaWVyYXJjaHktdGFibGVcIj5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aD4jPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+SW52ZW50b3J5IENvZGVzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+UHJvZ3JhbS9EZXNjcmlwdGlvbjwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygc2VsbGVyR3JvdXBIaWVyYXJjaHk7IGxldCB0b29sdGlwSW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD57eyB0b29sdGlwSW5kZXggKyAxIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGRhdGEuSW52ZW50b3J5Q29kZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZGF0YS5Qcm9ncmFtIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxsZXJHcm91cEhpZXJhcmNoeS5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwiY29sb3I6ICMwMDBcIj5TZWxsZXIgZ3JvdXAgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBpbnZlbnRvcnkgY29kZTwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNsdXJWaW9sYXRpb25JbmZvVG9vbHRpcD5cclxuICAgIDxwIGNsYXNzID1cImZpcnN0LXJvd1wiID5UaGUgdmFsdWVzIGFyZSBmb3IgdGhlIGVudGlyZSB3ZWVrLjwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcG9zdGVkUmF0aW5nRGlmZmVyZW5jZT5cclxuICAgIDxwIGNsYXNzPVwiZGlmZmVyZW5jZS10ZXh0XCI+VGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBwb3N0ZWQgYW5kIGJvb2tlZCBhdmVyYWdlIHJhdGluZyBpcyB7e2lzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50ID8gJ2xlc3MnIDogJ21vcmUnfX0gdGhhbiAyNSUuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNwb3N0ZWRJbXBEaWZmZXJlbmNlPlxyXG4gICAgPHAgY2xhc3M9XCJkaWZmZXJlbmNlLXRleHRcIj5UaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHBvc3RlZCBhbmQgYm9va2VkIGF2ZXJhZ2UgaW1wcmVzc2lvbiBpcyB7e2lzRGlmZmVyZW5jZUxlc3NUaGFuMjVQZXJjZW50ID8gJ2xlc3MnIDogJ21vcmUnfX0gdGhhbiAyNSUuPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNvbmdvaW5nUmV2Qm9va2VkQ29sdW1uVG9vbHRpcD5cclxuICAgIDxwPlRoZSBCb29rZWQgJCB2YWx1ZSwgU3BvdHMsIEdSUCwgQ1BQLCBJTVBTLCBDUE0gY29ycmVzcG9uZHMgb24gdGhlIGxhc3QgcGVybWFuZW50IHJldmlzaW9uIGdlbmVyYXRlZDwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29tcGxldGVkUmV2Qm9va2VkQ29sdW1uVG9vbHRpcD5cclxuICAgIDxwPlRoZSBCb29rZWQgJCB2YWx1ZSBjb3JyZXNwb25kcyBvbiB0aGUgbGFzdCBwZXJtYW5lbnQgcmV2aXNpb24gZ2VuZXJhdGVkPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjaXJjdWxhclByb2dyZXNzQmFyPlxyXG4gICAgPGNpcmNsZS1wcm9ncmVzc1xyXG4gICAgICAgIFtwZXJjZW50XT1cInBlcmNlbnREb25lXCJcclxuICAgICAgICBbcmFkaXVzXT1cIjVcIlxyXG4gICAgICAgIFtzaG93VGl0bGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtzaG93VW5pdHNdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtzaG93U3VidGl0bGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtvdXRlclN0cm9rZVdpZHRoXT1cIjNcIlxyXG4gICAgICAgIFtpbm5lclN0cm9rZVdpZHRoXT1cIjNcIlxyXG4gICAgICAgIFtzcGFjZV09XCItM1wiXHJcbiAgICAgICAgW291dGVyU3Ryb2tlQ29sb3JdPVwiJyMyNjhiZmYnXCJcclxuICAgICAgICBbaW5uZXJTdHJva2VDb2xvcl09XCInI2Q1ZDVkNSdcIlxyXG4gICAgICAgIFthbmltYXRpb25EdXJhdGlvbl09XCIxMFwiXHJcbiAgICA+PC9jaXJjbGUtcHJvZ3Jlc3M+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|