@sd-angular/core 1.3.152 → 1.3.153
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/sd-angular-core-table.umd.js +1 -1
- package/bundles/sd-angular-core-table.umd.js.map +1 -1
- package/bundles/sd-angular-core-table.umd.min.js +1 -1
- package/bundles/sd-angular-core-table.umd.min.js.map +1 -1
- package/esm2015/table/src/lib/table.component.js +2 -2
- package/fesm2015/sd-angular-core-table.js +1 -1
- package/fesm2015/sd-angular-core-table.js.map +1 -1
- package/package.json +1 -1
- package/{sd-angular-core-1.3.152.tgz → sd-angular-core-1.3.153.tgz} +0 -0
|
@@ -754,7 +754,7 @@ export class SdTable {
|
|
|
754
754
|
const value = rowData === null || rowData === void 0 ? void 0 : rowData[field];
|
|
755
755
|
item.meta.display[field] = {
|
|
756
756
|
badge: undefined,
|
|
757
|
-
cellStyle: column.type === 'number'
|
|
757
|
+
cellStyle: column.type === 'number' ? { 'text-align': 'right!important' } : undefined,
|
|
758
758
|
data: value,
|
|
759
759
|
isHtml: false,
|
|
760
760
|
tooltip: typeof tooltip === 'function' ? tooltip(value, rowData) : undefined,
|
|
@@ -944,4 +944,4 @@ SdTable.propDecorators = {
|
|
|
944
944
|
sdFooterDefs: [{ type: ContentChildren, args: [SdMaterialFooterDefDirective,] }],
|
|
945
945
|
sdFilterDefs: [{ type: ContentChildren, args: [SdMaterialFilterDefDirective,] }]
|
|
946
946
|
};
|
|
947
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL3VzZXIvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdGFibGUvIiwic291cmNlcyI6WyJzcmMvbGliL3RhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFNBQVMsRUFFVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsU0FBUyxFQUdULFlBQVksRUFDWix1QkFBdUIsR0FDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRzdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQXlCLE1BQU0sb0NBQW9DLENBQUM7QUFDL0csT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFMUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNqRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztB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O3dCQThCTCxTQUFTLFNBQUMsWUFBWTttQkFtQnRCLFNBQVMsU0FBQyxPQUFPOytCQWtCakIsWUFBWSxTQUFDLG9DQUFvQzswQkFJakQsWUFBWSxTQUFDLCtCQUErQjt5QkFJNUMsZUFBZSxTQUFDLDBCQUEwQjsyQkFNMUMsZUFBZSxTQUFDLDRCQUE0QjsyQkFPNUMsZUFBZSxTQUFDLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIEluamVjdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgUXVlcnlMaXN0LFxyXG4gIE9uSW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgQ29udGVudENoaWxkLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBNYXRTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBTZFRhYmxlRmlsdGVyUmVnaXN0ZXIsIFNkVGFibGVGaWx0ZXJSZXF1ZXN0IH0gZnJvbSAnLi9zZXJ2aWNlcy90YWJsZS1maWx0ZXIvdGFibGUtZmlsdGVyLm1vZGVsJztcclxuaW1wb3J0IHsgU2RUYWJsZU9wdGlvbiB9IGZyb20gJy4vbW9kZWxzL3RhYmxlLW9wdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFRBQkxFX0NPTkZJRywgREVGQVVMVF9UQUJMRV9DT05GSUcsIElTZFRhYmxlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vbW9kZWxzL3RhYmxlLWNvbmZpZ3VyYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGlzT2JzZXJ2YWJsZSwgU3ViamVjdCwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTZE5vdGlmeVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL25vdGlmeSc7XHJcbmltcG9ydCB7IFNkRmlsdGVyT3BlcmF0b3IsIFNkVGFibGVDb2x1bW4gfSBmcm9tICcuL21vZGVscy90YWJsZS1jb2x1bW4ubW9kZWwnO1xyXG5pbXBvcnQgeyBTZE1hdGVyaWFsQ2VsbERlZkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zZC1tYXRlcmlhbC1jZWxsLWRlZi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNkVGFibGVGaWx0ZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtZmlsdGVyL3RhYmxlLWZpbHRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3NkLW1hdGVyaWFsLWZpbHRlci1kZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2RNYXRlcmlhbFN1YkluZm9ybWF0aW9uRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3NkLW1hdGVyaWFsLXN1Yi1pbmZvcm1hdGlvbi1kZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2RNYXRlcmlhbEZvb3RlckRlZkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zZC1tYXRlcmlhbC1mb290ZXItZGVmLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNkTWF0ZXJpYWxFbXB0eURhdGFEZWZEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2QtbWF0ZXJpYWwtZW1wdHktZGF0YS1kZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2RFeHBvcnRDb2x1bW4sIFNkRXhwb3J0U2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvZXhwb3J0JztcclxuaW1wb3J0IHsgU2RUYWJsZUNvbmZpZ3VyYXRpb25SZXN1bHQgfSBmcm9tICcuL21vZGVscy90YWJsZS1vcHRpb24tY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgU2RUYWJsZUNvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy90YWJsZS1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZFRhYmxlT3B0aW9uRXhwb3J0Q29sdW1uIH0gZnJvbSAnLi9tb2RlbHMvdGFibGUtb3B0aW9uLWV4cG9ydC5tb2RlbCc7XHJcbmltcG9ydCB7IFNkUXVpY2tBY3Rpb24gfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL3F1aWNrLWFjdGlvbic7XHJcbmltcG9ydCB7IE1hcFRvU2RUYWJsZUl0ZW0sIFNkVGFibGVJdGVtIH0gZnJvbSAnLi9tb2RlbHMvdGFibGUtaXRlbS5tb2RlbCc7XHJcbmltcG9ydCB7IFNkU2Nyb2xsRGlyZWN0aXZlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9jb21tb24nO1xyXG5pbXBvcnQgeyBTZFRhYmxlRmlsdGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGFibGUtZmlsdGVyL3RhYmxlLWZpbHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2RQb3B1cENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2NvbXBvbmVudHMvcG9wdXAtY29uZmlndXJhdGlvbi9wb3B1cC1jb25maWd1cmF0aW9uLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xyXG4gICAgICBzdGF0ZSgnY29sbGFwc2VkJywgc3R5bGUoeyBoZWlnaHQ6ICcwJywgbWluSGVpZ2h0OiAnMCcsIHZpc2liaWxpdHk6ICdoaWRkZW4nIH0pKSxcclxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJywgdmlzaWJpbGl0eTogJ3Zpc2libGUnIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPD0+IGNvbGxhcHNlZCcsIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpKSxcclxuICAgIF0pLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZFRhYmxlPFQgPSBhbnk+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoU2RQb3B1cENvbmZpZ3VyYXRpb24pIHBvcHVwQ29uZmlndXJhdGlvbjogU2RQb3B1cENvbmZpZ3VyYXRpb247XHJcbiAgI2dyaWRJZCA9IHV1aWQudjQoKTtcclxuICBAVmlld0NoaWxkKFNkU2Nyb2xsRGlyZWN0aXZlKSBzZFNjcm9sbDogU2RTY3JvbGxEaXJlY3RpdmU7XHJcbiAgZmlsdGVyUmVnaXN0ZXI6IFNkVGFibGVGaWx0ZXJSZWdpc3RlcjtcclxuICBrZXkgPSB1dWlkLnY0KCk7XHJcbiAgQFZpZXdDaGlsZChTZFF1aWNrQWN0aW9uKSBxdWlja0FjdGlvbjogU2RRdWlja0FjdGlvbjtcclxuICBAVmlld0NoaWxkKFNkVGFibGVGaWx0ZXIpIHRhYmxlRmlsdGVyOiBTZFRhYmxlRmlsdGVyO1xyXG4gIGdyaWRPcHRpb246IFNkVGFibGVPcHRpb248VD47XHJcbiAgY29uZmlndXJhdGlvbjogU2RUYWJsZUNvbmZpZ3VyYXRpb25SZXN1bHQ7XHJcbiAgQElucHV0KCkgc2V0IG9wdGlvbihvcHRpb246IFNkVGFibGVPcHRpb24pIHtcclxuICAgIGlmIChvcHRpb24pIHtcclxuICAgICAgb3B0aW9uID0gdGhpcy4jaW5pdENvbmZpZ3VyYXRpb24ob3B0aW9uKTtcclxuICAgICAgdGhpcy5ncmlkT3B0aW9uID0gb3B0aW9uO1xyXG4gICAgICB0aGlzLiNsb2FkQ29tcGxldGVkID0gZmFsc2U7XHJcbiAgICAgIGNvbnN0IHNldHRpbmcgPSB0aGlzLmdyaWRDb25maWd1cmF0aW9uU2VydmljZS5pbml0KHRoaXMuZ3JpZE9wdGlvbik7XHJcbiAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgICAgc2V0dGluZy5vYnNlcnZlci5waXBlKHN0YXJ0V2l0aChzZXR0aW5nLnN1YmplY3QuZ2V0VmFsdWUoKSkpLnN1YnNjcmliZShhc3luYyBjb25maWd1cmF0aW9uID0+IHtcclxuICAgICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25SZXN1bHQgPSB0aGlzLmdyaWRDb25maWd1cmF0aW9uU2VydmljZS5sb2FkQ29uZmlndXJhdGlvblJlc3VsdCh0aGlzLmdyaWRPcHRpb24sIGNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgICAgY29uc3QgZGlzcGxheUNvbHVtbnMgPSBjb25maWd1cmF0aW9uUmVzdWx0LmRpc3BsYXllZENvbHVtbnMgfHwgW107XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLiNsb2FkVmFsdWVzKHRoaXMuZ3JpZE9wdGlvbi5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gZGlzcGxheUNvbHVtbnMuaW5jbHVkZXMoY29sdW1uLmZpZWxkKSkpO1xyXG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvblJlc3VsdDtcclxuICAgICAgICAgIHRoaXMuI29wdGlvbkNoYW5nZXMubmV4dCh0aGlzLmdyaWRPcHRpb24pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gICNvcHRpb25DaGFuZ2VzID0gbmV3IFN1YmplY3Q8U2RUYWJsZU9wdGlvbj4oKTtcclxuXHJcbiAgI2xvY2FsSXRlbXM6IFNkVGFibGVJdGVtPFQ+W10gPSBbXTtcclxuICBpdGVtczogU2RUYWJsZUl0ZW08VD5bXSA9IFtdO1xyXG4gIHNlbGVjdGVkSXRlbXM6IFRbXSA9IFtdO1xyXG4gIHRvdGFsOiBudW1iZXI7XHJcblxyXG4gIC8vIExvYWRpbmdcclxuICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgLy8gUGFnaW5hdGVcclxuICBpc0hpZGRlblBhZ2luYXRvciA9IGZhbHNlO1xyXG4gICNwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvcikgc2V0IHBhZ2luYXRvcihwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcikge1xyXG4gICAgaWYgKHBhZ2luYXRvciAmJiB0aGlzLiNwYWdpbmF0b3IgIT09IHBhZ2luYXRvcikge1xyXG4gICAgICB0aGlzLiNwYWdpbmF0b3IgPSBwYWdpbmF0b3I7XHJcbiAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgICAgcGFnaW5hdG9yLnBhZ2VcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuI3JlbG9hZC5uZXh0KHtcclxuICAgICAgICAgICAgICAgIGZvcmNlOiBmYWxzZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU29ydGluZ1xyXG4gICNzb3J0OiBNYXRTb3J0O1xyXG4gIEBWaWV3Q2hpbGQoTWF0U29ydCkgc2V0IHNvcnQoc29ydDogTWF0U29ydCkge1xyXG4gICAgaWYgKHNvcnQgJiYgdGhpcy4jc29ydCAhPT0gc29ydCkge1xyXG4gICAgICB0aGlzLiNzb3J0ID0gc29ydDtcclxuICAgICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgICBzb3J0LnNvcnRDaGFuZ2VcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuI3JlbG9hZC5uZXh0KHtcclxuICAgICAgICAgICAgICAgIGZvcmNlOiBmYWxzZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU3ViIEluZm9ybWF0aW9uXHJcbiAgQENvbnRlbnRDaGlsZChTZE1hdGVyaWFsU3ViSW5mb3JtYXRpb25EZWZEaXJlY3RpdmUpXHJcbiAgc2RTdWJJbmZvcm1hdGlvbjogU2RNYXRlcmlhbFN1YkluZm9ybWF0aW9uRGVmRGlyZWN0aXZlO1xyXG5cclxuICAvLyBFbXB0eSBEYXRhXHJcbiAgQENvbnRlbnRDaGlsZChTZE1hdGVyaWFsRW1wdHlEYXRhRGVmRGlyZWN0aXZlKVxyXG4gIHNkRW1wdHlEYXRhOiBTZE1hdGVyaWFsRW1wdHlEYXRhRGVmRGlyZWN0aXZlO1xyXG5cclxuICAvLyBDZWxsIERlZlxyXG4gIEBDb250ZW50Q2hpbGRyZW4oU2RNYXRlcmlhbENlbGxEZWZEaXJlY3RpdmUpIHNkQ2VsbERlZnMgPSBuZXcgUXVlcnlMaXN0PFNkTWF0ZXJpYWxDZWxsRGVmRGlyZWN0aXZlPigpO1xyXG4gIGNlbGxEZWY6IHtcclxuICAgIFtjb2x1bW46IHN0cmluZ106IFNkTWF0ZXJpYWxDZWxsRGVmRGlyZWN0aXZlO1xyXG4gIH0gPSB7fTtcclxuXHJcbiAgLy8gRm9vdGVyIERlZlxyXG4gIEBDb250ZW50Q2hpbGRyZW4oU2RNYXRlcmlhbEZvb3RlckRlZkRpcmVjdGl2ZSkgc2RGb290ZXJEZWZzID0gbmV3IFF1ZXJ5TGlzdDxTZE1hdGVyaWFsRm9vdGVyRGVmRGlyZWN0aXZlPigpO1xyXG4gIGZvb3RlckRlZjoge1xyXG4gICAgW2NvbHVtbjogc3RyaW5nXTogU2RNYXRlcmlhbEZvb3RlckRlZkRpcmVjdGl2ZTtcclxuICB9ID0ge307XHJcbiAgaGFzRm9vdGVyID0gZmFsc2U7XHJcblxyXG4gIC8vIEZpbHRlciBEZWZcclxuICBAQ29udGVudENoaWxkcmVuKFNkTWF0ZXJpYWxGaWx0ZXJEZWZEaXJlY3RpdmUpIHNkRmlsdGVyRGVmcyA9IG5ldyBRdWVyeUxpc3Q8U2RNYXRlcmlhbEZpbHRlckRlZkRpcmVjdGl2ZT4oKTtcclxuICBmaWx0ZXJEZWZzOiBTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlW10gPSBbXTtcclxuXHJcbiAgLy8gRmlsdGVyXHJcbiAgY29sdW1uT3BlcmF0b3I6IFJlY29yZDxzdHJpbmcsIFNkRmlsdGVyT3BlcmF0b3I+ID0ge307XHJcbiAgY29sdW1uRmlsdGVyOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgLy8gU3ViY3JpcHRpb25cclxuICAjc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gICNyZWxvYWQgPSBuZXcgU3ViamVjdDx7XHJcbiAgICBmb3JjZTogYm9vbGVhbjtcclxuICB9PigpO1xyXG4gIGlzRXhwb3J0aW5nID0gZmFsc2U7XHJcbiAgaXNTZWxlY3RBbGwgPSBmYWxzZTtcclxuICBleHBvcnRUaXRsZSA9ICdFeHBvcnQnO1xyXG4gICNsb2FkQ29tcGxldGVkID0gZmFsc2U7XHJcbiAgY2FjaGVWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IHt9O1xyXG4gICNjYWNoZU9ialZhbHVlczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7fTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBJbmplY3QoVEFCTEVfQ09ORklHKVxyXG4gICAgQE9wdGlvbmFsKClcclxuICAgIHB1YmxpYyB0YWJsZUNvbmZpZ3VyYXRpb246IElTZFRhYmxlQ29uZmlndXJhdGlvbixcclxuICAgIHByaXZhdGUgZ3JpZENvbmZpZ3VyYXRpb25TZXJ2aWNlOiBTZFRhYmxlQ29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGV4cG9ydFNlcnZpY2U6IFNkRXhwb3J0U2VydmljZSxcclxuICAgIHByaXZhdGUgbm90aWZ5U2VydmljZTogU2ROb3RpZnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBncmlkRmlsdGVyU2VydmljZTogU2RUYWJsZUZpbHRlclNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuI2luaXRDZWxsRGVmKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLiNyZWxvYWRcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICAgICAgc3dpdGNoTWFwKGFzeW5jIGRhdGEgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJJbmZvID0gdGhpcy4jZ2V0RmlsdGVyKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuI2xvYWQoZmlsdGVySW5mbywgIXRoaXMuI2xvYWRDb21wbGV0ZWQgfHwgZGF0YS5mb3JjZSk7XHJcbiAgICAgICAgICAgIHRoaXMuI2xvYWRDb21wbGV0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSh0aGlzLiNyZW5kZXIpXHJcbiAgICApO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnNkQ2VsbERlZnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChbXSkpLnN1YnNjcmliZSh0aGlzLiNpbml0Q2VsbERlZikpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnNkRm9vdGVyRGVmcy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKFtdKSkuc3Vic2NyaWJlKHRoaXMuI2luaXRGb290ZXJEZWYpKTtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5zZEZpbHRlckRlZnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChbXSkpLnN1YnNjcmliZSh0aGlzLiNpbml0RmlsdGVyRGVmKSk7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICBjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgICB0aGlzLiNvcHRpb25DaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZ3JpZE9wdGlvbikpLFxyXG4gICAgICAgIHRoaXMuc2RGaWx0ZXJEZWZzLmNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5maWx0ZXJEZWZzKSksXHJcbiAgICAgIF0pLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy4jbG9hZEZpbHRlclJlZ2lzdGVyKCk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy4jb3B0aW9uQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmZpbHRlclJlZ2lzdGVyKSB7XHJcbiAgICAgICAgICB0aGlzLiNyZWxvYWQubmV4dCh7XHJcbiAgICAgICAgICAgIGZvcmNlOiB0cnVlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAjaW5pdENlbGxEZWYgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNlbGxEZWYgPSB7fTtcclxuICAgIGZvciAoY29uc3QgY2VsbERlZiBvZiB0aGlzLnNkQ2VsbERlZnMpIHtcclxuICAgICAgaWYgKGNlbGxEZWYuc2RNYXRlcmlhbENlbGxEZWYpIHtcclxuICAgICAgICB0aGlzLmNlbGxEZWZbY2VsbERlZi5zZE1hdGVyaWFsQ2VsbERlZl0gPSBjZWxsRGVmO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgI2luaXRGaWx0ZXJEZWYgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZpbHRlckRlZnMgPSBbXTtcclxuICAgIGZvciAoY29uc3QgZmlsdGVyRGVmIG9mIHRoaXMuc2RGaWx0ZXJEZWZzKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyRGVmcy5wdXNoKGZpbHRlckRlZik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgI2luaXRGb290ZXJEZWYgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZvb3RlckRlZiA9IHt9O1xyXG4gICAgdGhpcy5oYXNGb290ZXIgPSBmYWxzZTtcclxuICAgIGZvciAoY29uc3QgZm9vdGVyRGVmIG9mIHRoaXMuc2RGb290ZXJEZWZzKSB7XHJcbiAgICAgIGlmIChmb290ZXJEZWYuc2RNYXRlcmlhbEZvb3RlckRlZikge1xyXG4gICAgICAgIHRoaXMuaGFzRm9vdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmZvb3RlckRlZltmb290ZXJEZWYuc2RNYXRlcmlhbEZvb3RlckRlZl0gPSBmb290ZXJEZWY7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICAjZmlsdGVyRXhwb3J0SW5mbyA9IChwYWdlTnVtYmVyOiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIpOiBTZFRhYmxlRmlsdGVyUmVxdWVzdCA9PiB7XHJcbiAgICBjb25zdCB7IGNvbHVtbk9wZXJhdG9yLCBjb2x1bW5GaWx0ZXIsIGV4dGVybmFsRmlsdGVyLCBmaWx0ZXJEZWYgfSA9IHRoaXMuZmlsdGVyUmVnaXN0ZXIudmFsdWUuZ2V0KCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBjb2x1bW5PcGVyYXRvcjogY29sdW1uT3BlcmF0b3IgfHwge30sXHJcbiAgICAgIHJhd0NvbHVtbkZpbHRlcjogY29sdW1uRmlsdGVyIHx8IHt9LFxyXG4gICAgICByYXdFeHRlcm5hbEZpbHRlcjogZXh0ZXJuYWxGaWx0ZXIgfHwge30sXHJcbiAgICAgIHJhd0ZpbHRlckRlZjogZmlsdGVyRGVmIHx8IHt9LFxyXG4gICAgICBvcmRlckJ5OiB0aGlzLiNzb3J0Py5hY3RpdmUgfHwgJycsXHJcbiAgICAgIG9yZGVyRGlyZWN0aW9uOiB0aGlzLiNzb3J0Py5kaXJlY3Rpb24gfHwgJycsXHJcbiAgICAgIHBhZ2VOdW1iZXIsXHJcbiAgICAgIHBhZ2VTaXplLFxyXG4gICAgICBpc0V4cG9ydGVkOiB0cnVlLFxyXG4gICAgfTtcclxuICB9O1xyXG5cclxuICAjaW5pdENvbmZpZ3VyYXRpb24gPSAob3B0aW9uOiBTZFRhYmxlT3B0aW9uKSA9PiB7XHJcbiAgICAvLyBJbml0IHBhZ2luYXRpb25cclxuICAgIG9wdGlvbi5wYWdpbmF0ZSA9IHtcclxuICAgICAgaGlkZGVuOiBvcHRpb24/LnBhZ2luYXRlPy5oaWRkZW4sXHJcbiAgICAgIHBhZ2VTaXplOiBvcHRpb24/LnBhZ2luYXRlPy5wYWdlU2l6ZSA/PyB0aGlzLnRhYmxlQ29uZmlndXJhdGlvbj8ucGFnaW5hdGU/LnBhZ2VTaXplID8/IERFRkFVTFRfVEFCTEVfQ09ORklHLnBhZ2luYXRlPy5wYWdlU2l6ZSxcclxuICAgICAgcGFnZXM6IG9wdGlvbj8ucGFnaW5hdGU/LnBhZ2VzID8/IHRoaXMudGFibGVDb25maWd1cmF0aW9uPy5wYWdpbmF0ZT8ucGFnZXMgPz8gREVGQVVMVF9UQUJMRV9DT05GSUcucGFnaW5hdGU/LnBhZ2VzLFxyXG4gICAgICBzaG93Rmlyc3RMYXN0QnV0dG9uczogb3B0aW9uPy5wYWdpbmF0ZT8uc2hvd0ZpcnN0TGFzdEJ1dHRvbnMgPz8gZmFsc2UsXHJcbiAgICB9O1xyXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2Ygb3B0aW9uLmNvbHVtbnMgfHwgW10pIHtcclxuICAgICAgaWYgKGNvbHVtbi5maWx0ZXI/Lm9wZXJhdG9yPy5lbmFibGUgJiYgIWNvbHVtbi5maWx0ZXI/Lm9wZXJhdG9yPy5saXN0Py5sZW5ndGgpIHtcclxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICBjb2x1bW4uZmlsdGVyLm9wZXJhdG9yLmxpc3QgPSB0aGlzLnRhYmxlQ29uZmlndXJhdGlvbj8uZmlsdGVyPy5vcGVyYXRvcj8uZGVmYXVsdExpc3RTdHJpbmcgfHwgW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgIGNvbHVtbi5maWx0ZXIub3BlcmF0b3IubGlzdCA9IHRoaXMudGFibGVDb25maWd1cmF0aW9uPy5maWx0ZXI/Lm9wZXJhdG9yPy5kZWZhdWx0TGlzdE51bWJlciB8fCBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAndmFsdWVzJyB8fCBjb2x1bW4udHlwZSA9PT0gJ2xhenktdmFsdWVzJykge1xyXG4gICAgICAgICAgY29sdW1uLmZpbHRlci5vcGVyYXRvci5saXN0ID0gdGhpcy50YWJsZUNvbmZpZ3VyYXRpb24/LmZpbHRlcj8ub3BlcmF0b3I/LmRlZmF1bHRMaXN0VmFsdWVzIHx8IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkYXRlJyB8fCBjb2x1bW4udHlwZSA9PT0gJ2RhdGV0aW1lJykge1xyXG4gICAgICAgICAgY29sdW1uLmZpbHRlci5vcGVyYXRvci5saXN0ID0gdGhpcy50YWJsZUNvbmZpZ3VyYXRpb24/LmZpbHRlcj8ub3BlcmF0b3I/LmRlZmF1bHRMaXN0RGF0ZSB8fCBbXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBvcHRpb247XHJcbiAgfTtcclxuXHJcbiAgI2xvYWRGaWx0ZXJSZWdpc3RlciA9ICgpID0+IHtcclxuICAgIC8vIEluaXQgZmlsdGVyXHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9uKSB7XHJcbiAgICAgIGlmICghdGhpcy5maWx0ZXJSZWdpc3Rlcikge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyUmVnaXN0ZXIgPSB0aGlzLmdyaWRGaWx0ZXJTZXJ2aWNlLnJlZ2lzdGVyKHRoaXMuZ3JpZE9wdGlvbj8uZmlsdGVyLCB7XHJcbiAgICAgICAgICBpZDogdGhpcy4jZ3JpZElkLFxyXG4gICAgICAgICAgY29sdW1uczogdGhpcy5ncmlkT3B0aW9uPy5jb2x1bW5zLFxyXG4gICAgICAgICAgZXh0ZXJuYWxGaWx0ZXJzOiB0aGlzLmdyaWRPcHRpb24/LmZpbHRlcj8uZXh0ZXJuYWxGaWx0ZXJzLFxyXG4gICAgICAgICAgZmlsdGVyRGVmczogdGhpcy5maWx0ZXJEZWZzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgICAgICB0aGlzLmZpbHRlclJlZ2lzdGVyLnZhbHVlLm9ic2VydmVyXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MDApLFxyXG4gICAgICAgICAgICAgIG1hcChmaWx0ZXJWYWx1ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IGNvbHVtbk9wZXJhdG9yLCBjb2x1bW5GaWx0ZXIsIG5vdFJlbG9hZCB9ID0gZmlsdGVyVmFsdWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbk9wZXJhdG9yID0gY29sdW1uT3BlcmF0b3IgfHwge307XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkZpbHRlciA9IGNvbHVtbkZpbHRlcjtcclxuICAgICAgICAgICAgICAgIGlmICghbm90UmVsb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuI3BhZ2luYXRvci5wYWdlSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLiNyZWxvYWQubmV4dCh7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yY2U6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICAjZmlsdGVyTG9jYWwgPSAobG9jYWxJdGVtczogU2RUYWJsZUl0ZW08VD5bXSwgZmlsdGVySW5mbzogU2RUYWJsZUZpbHRlclJlcXVlc3QpID0+IHtcclxuICAgIGNvbnN0IHsgY29sdW1ucyB9ID0gdGhpcy5ncmlkT3B0aW9uO1xyXG4gICAgY29uc3QgeyByYXdDb2x1bW5GaWx0ZXIsIG9yZGVyQnksIG9yZGVyRGlyZWN0aW9uLCBwYWdlU2l6ZSwgcGFnZU51bWJlciB9ID0gZmlsdGVySW5mbztcclxuICAgIGNvbnN0IGl0ZW1zID0gbG9jYWxJdGVtcy5maWx0ZXIodGFibGVJdGVtID0+IHtcclxuICAgICAgY29uc3QgaXRlbSA9IHRhYmxlSXRlbS5kYXRhO1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgY29uc3QgeyBmaWVsZCwgdHlwZSB9ID0gY29sdW1uO1xyXG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlOiBzdHJpbmcgPSAocmF3Q29sdW1uRmlsdGVyW2ZpZWxkXSB8fCAnJykudG9TdHJpbmcoKS50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBjb25zdCBjb2x1bW5WYWx1ZTogc3RyaW5nID0gKGl0ZW1bZmllbGRdIHx8ICcnKS50b1N0cmluZygpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIGlmIChmaWx0ZXJWYWx1ZSkge1xyXG4gICAgICAgICAgaWYgKCFjb2x1bW5WYWx1ZSAmJiB0eXBlICE9PSAnZGF0ZXRpbWUnICYmIHR5cGUgIT09ICdkYXRlJyAmJiB0eXBlICE9PSAndGltZScpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW5WYWx1ZS5pbmRleE9mKGZpbHRlclZhbHVlKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3ZhbHVlcycgfHwgdHlwZSA9PT0gJ2xhenktdmFsdWVzJykge1xyXG4gICAgICAgICAgICBpZiAoY29sdW1uVmFsdWUgIT09IGZpbHRlclZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZWYWx1ZSA9ICtmaWx0ZXJWYWx1ZS5yZXBsYWNlKCc+PScsICcnKS5yZXBsYWNlKCc8PScsICcnKS5yZXBsYWNlKCc+JywgJycpLnJlcGxhY2UoJzwnLCAnJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNWYWx1ZSA9ICtjb2x1bW5WYWx1ZTtcclxuICAgICAgICAgICAgaWYgKGZWYWx1ZSB8fCBmVmFsdWUgPT09IDApIHtcclxuICAgICAgICAgICAgICBpZiAoIWNWYWx1ZSAmJiBjVmFsdWUgIT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJz49JykgPiAtMSAmJiBjVmFsdWUgPCBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJzw9JykgPiAtMSAmJiBjVmFsdWUgPiBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJzwnKSA+IC0xICYmIGNWYWx1ZSA+PSBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJz4nKSA+IC0xICYmIGNWYWx1ZSA8PSBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNWYWx1ZSAhPT0gZlZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdib29sJykge1xyXG4gICAgICAgICAgICBpZiAoZmlsdGVyVmFsdWUgPT09ICcxJyAmJiBjb2x1bW5WYWx1ZSAhPT0gJzEnICYmIGNvbHVtblZhbHVlICE9PSAndHJ1ZScpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyVmFsdWUgPT09ICcwJyAmJiBjb2x1bW5WYWx1ZSAhPT0gJzAnICYmIGNvbHVtblZhbHVlICE9PSAnZmFsc2UnKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRldGltZScgfHwgdHlwZSA9PT0gJ2RhdGUnIHx8IHR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgICAgICBjb25zdCBmcm9tID0gcmF3Q29sdW1uRmlsdGVyW2ZpZWxkXT8uZnJvbSA/PyByYXdDb2x1bW5GaWx0ZXJbZmllbGRdO1xyXG4gICAgICAgICAgICBjb25zdCB0byA9IHJhd0NvbHVtbkZpbHRlcltmaWVsZF0/LnRvID8/IHJhd0NvbHVtbkZpbHRlcltmaWVsZF07XHJcbiAgICAgICAgICAgIGNvbnN0IGZyb21EYXRlID0gRGF0ZS5iZWdpbihmcm9tKTtcclxuICAgICAgICAgICAgY29uc3QgdG9EYXRlID0gRGF0ZS5lbmQodG8pO1xyXG4gICAgICAgICAgICBpZiAoZnJvbURhdGUgfHwgdG9EYXRlKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFjb2x1bW5WYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgY29uc3QgY29sdW1uVGltZSA9IG5ldyBEYXRlKGNvbHVtblZhbHVlKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgZnJvbURhdGVUaW1lID0gZnJvbURhdGU/LmdldFRpbWUoKSB8fCBudWxsO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHRvRGF0ZVRpbWUgPSB0b0RhdGU/LmdldFRpbWUoKSB8fCBudWxsO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoZnJvbURhdGVUaW1lICYmIGZyb21EYXRlVGltZSA+IGNvbHVtblRpbWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHRvRGF0ZVRpbWUgJiYgY29sdW1uVGltZSA+IHRvRGF0ZVRpbWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9KTtcclxuICAgIC8vIFNvcnRcclxuICAgIGlmIChvcmRlckJ5ICYmIG9yZGVyRGlyZWN0aW9uKSB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnMuZmluZChlID0+IGUuZmllbGQgPT09IG9yZGVyQnkpO1xyXG4gICAgICBpZiAoY29sdW1uKSB7XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCBmaWVsZCB9ID0gY29sdW1uO1xyXG4gICAgICAgIGl0ZW1zLnNvcnQoKHRhYmxlSXRlbUN1cnJlbnQsIHRhYmxlSXRlbU5leHQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGRhdGEgPSB0YWJsZUl0ZW1DdXJyZW50LmRhdGE7XHJcbiAgICAgICAgICBjb25zdCBuZXh0ID0gdGFibGVJdGVtTmV4dC5kYXRhO1xyXG4gICAgICAgICAgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoZGF0YVtmaWVsZF0gfHwgMCkgLSAobmV4dFtmaWVsZF0gfHwgMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodHlwZSA9PT0gJ2RhdGUnIHx8IHR5cGUgPT09ICdkYXRldGltZScgfHwgdHlwZSA9PT0gJ3RpbWUnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGQxID0gbmV3IERhdGUoZGF0YVtmaWVsZF0gfHwgJycpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgY29uc3QgZDIgPSBuZXcgRGF0ZShkYXRhW2ZpZWxkXSB8fCAnJykuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICByZXR1cm4gZDEgLSBkMjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IHMxID0gKGRhdGFbZmllbGRdIHx8ICcnKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgY29uc3QgczIgPSAobmV4dFtmaWVsZF0gfHwgJycpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICBpZiAoczEgPiBzMikge1xyXG4gICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChzMSA8IHMyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChvcmRlckRpcmVjdGlvbiA9PT0gJ2Rlc2MnKSB7XHJcbiAgICAgICAgICBpdGVtcy5yZXZlcnNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpdGVtczogaXRlbXMuZmlsdGVyKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBpbmRleCA+PSBwYWdlTnVtYmVyICogcGFnZVNpemUgJiYgaW5kZXggPCAocGFnZU51bWJlciArIDEpICogcGFnZVNpemU7XHJcbiAgICAgIH0pLFxyXG4gICAgICB0b3RhbDogaXRlbXMubGVuZ3RoLFxyXG4gICAgfTtcclxuICB9O1xyXG5cclxuICAjZ2V0RmlsdGVyID0gKCk6IFNkVGFibGVGaWx0ZXJSZXF1ZXN0ID0+IHtcclxuICAgIGNvbnN0IHsgY29sdW1uT3BlcmF0b3IsIGNvbHVtbkZpbHRlciwgZXh0ZXJuYWxGaWx0ZXIsIGZpbHRlckRlZiB9ID0gdGhpcy5maWx0ZXJSZWdpc3Rlci52YWx1ZS5nZXQoKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGNvbHVtbk9wZXJhdG9yOiBjb2x1bW5PcGVyYXRvciB8fCB7fSxcclxuICAgICAgcmF3Q29sdW1uRmlsdGVyOiBjb2x1bW5GaWx0ZXIgfHwge30sXHJcbiAgICAgIHJhd0V4dGVybmFsRmlsdGVyOiBleHRlcm5hbEZpbHRlciB8fCB7fSxcclxuICAgICAgcmF3RmlsdGVyRGVmOiBmaWx0ZXJEZWYgfHwge30sXHJcbiAgICAgIG9yZGVyQnk6IHRoaXMuI3NvcnQ/LmFjdGl2ZSB8fCAnJyxcclxuICAgICAgb3JkZXJEaXJlY3Rpb246IHRoaXMuI3NvcnQ/LmRpcmVjdGlvbiB8fCAnJyxcclxuICAgICAgcGFnZU51bWJlcjogdGhpcy4jcGFnaW5hdG9yPy5wYWdlSW5kZXggfHwgMCxcclxuICAgICAgcGFnZVNpemU6IHRoaXMuI3BhZ2luYXRvcj8ucGFnZVNpemUgfHwgdGhpcy5ncmlkT3B0aW9uPy5wYWdpbmF0ZT8ucGFnZVNpemUgfHwgNTAsXHJcbiAgICB9O1xyXG4gIH07XHJcblxyXG4gICNsb2FkID0gYXN5bmMgKGZpbHRlclJlcTogU2RUYWJsZUZpbHRlclJlcXVlc3QsIGZvcmNlOiBib29sZWFuID0gdHJ1ZSkgPT4ge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi50eXBlID09PSAnc2VydmVyJykge1xyXG4gICAgICBjb25zdCB7IGl0ZW1zIH0gPSB0aGlzLmdyaWRPcHRpb247XHJcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBpdGVtcyhmaWx0ZXJSZXEpLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKCdDw7MgbOG7l2kgeOG6o3kgcmEnKTtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGl0ZW1zOiBbXSBhcyBUW10sXHJcbiAgICAgICAgICB0b3RhbDogMCxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBpdGVtczogYXdhaXQgdGhpcy4jZm9ybWF0KGRhdGE/Lml0ZW1zLCB0aGlzLmdyaWRPcHRpb24uY29sdW1ucyksXHJcbiAgICAgICAgdG90YWw6IGRhdGE/LnRvdGFsIHx8IDAsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBpZiAoZm9yY2UpIHtcclxuICAgICAgY29uc3QgeyBpdGVtcyB9ID0gdGhpcy5ncmlkT3B0aW9uO1xyXG4gICAgICBjb25zdCByZXN1bHRzID0gaXRlbXMoKTtcclxuICAgICAgbGV0IGRhdGE6IFRbXSA9IFtdO1xyXG4gICAgICBpZiAocmVzdWx0cyBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICBkYXRhID0gYXdhaXQgcmVzdWx0cy5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKCdDw7MgbOG7l2kgeOG6o3kgcmEnKTtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkYXRhID0gcmVzdWx0cztcclxuICAgICAgfVxyXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcoJ0Thu68gbGnhu4d1IGtow7RuZyBwaOG6o2kgbMOgIG3hu5l0IG3huqNuZycpO1xyXG4gICAgICAgIGRhdGEgPSBbXTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLiNsb2NhbEl0ZW1zID0gYXdhaXQgdGhpcy4jZm9ybWF0KGRhdGEsIHRoaXMuZ3JpZE9wdGlvbi5jb2x1bW5zKTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICByZXR1cm4gdGhpcy4jZmlsdGVyTG9jYWwodGhpcy4jbG9jYWxJdGVtcywgZmlsdGVyUmVxKTtcclxuICB9O1xyXG5cclxuICAjcmVuZGVyID0gYXN5bmMgKGFyZ3M6IHsgaXRlbXM6IFNkVGFibGVJdGVtPFQ+W107IHRvdGFsOiBudW1iZXIgfSkgPT4ge1xyXG4gICAgdGhpcy5zZFNjcm9sbD8uc2Nyb2xsVG9wKCk7XHJcbiAgICB0aGlzLml0ZW1zID0gYXJncz8uaXRlbXMgfHwgW107XHJcbiAgICB0aGlzLnRvdGFsID0gYXJncz8udG90YWwgfHwgMDtcclxuICAgIGF3YWl0IHRoaXMuZ3JpZE9wdGlvbj8ucmVsb2FkPy5vblJlbG9hZD8uKHRoaXMuaXRlbXMpO1xyXG4gICAgdGhpcy5pc1NlbGVjdEFsbCA9IHRoaXMuaXRlbXMuZXZlcnkoZSA9PiBlLm1ldGEuc2VsZWN0b3IuaXNTZWxlY3RlZCk7XHJcbiAgICB0aGlzLiN1cGRhdGVTZWxlY3RlZEl0ZW1zKCk7XHJcbiAgfTtcclxuXHJcbiAgcmVsb2FkID0gYXN5bmMgKGZvcmNlOiBib29sZWFuID0gdHJ1ZSkgPT4ge1xyXG4gICAgdGhpcy50YWJsZUZpbHRlcj8udXBkYXRlRmlsdGVyPy4oKTtcclxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLiNsb2FkKHRoaXMuI2dldEZpbHRlcigpLCBmb3JjZSk7XHJcbiAgICB0aGlzLiNyZW5kZXIoZGF0YSk7XHJcbiAgfTtcclxuXHJcbiAgI2V4cG9ydGVkSXRlbXMgPSBhc3luYyAocGFnZU51bWJlcjogbnVtYmVyID0gMCwgcGFnZVNpemU6IG51bWJlciA9IDEwMDAwKSA9PiB7XHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8uaXRlbXMpIHtcclxuICAgICAgLy8gY29uc3QgZXhwb3J0ZWRJdGVtcyA9IHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQ/Lml0ZW1zKHRoaXMuI2ZpbHRlckV4cG9ydEluZm8ocGFnZU51bWJlciwgcGFnZVNpemUpKTtcclxuICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQ/Lml0ZW1zKHRoaXMuI2ZpbHRlckV4cG9ydEluZm8ocGFnZU51bWJlciwgcGFnZVNpemUpKTtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGlzT2JzZXJ2YWJsZTxhbnlbXT4ocmVzdWx0KSkge1xyXG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC50b1Byb21pc2UoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXNPYnNlcnZhYmxlPHsgaXRlbXM6IGFueVtdOyB0b3RhbDogbnVtYmVyIH0+KHJlc3VsdCkpIHtcclxuICAgICAgICByZXN1bHQgPSByZXN1bHQudG9Qcm9taXNlKCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGF3YWl0IHJlc3VsdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGZpbHRlckluZm8gPSB0aGlzLiNmaWx0ZXJFeHBvcnRJbmZvKHBhZ2VOdW1iZXIsIHBhZ2VTaXplKTtcclxuICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi50eXBlID09PSAnc2VydmVyJykge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmdyaWRPcHRpb24uaXRlbXMoZmlsdGVySW5mbyk7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlc3VsdDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgZXhwb3J0ZWRJdGVtczogYW55W10gPSBbXTtcclxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZ3JpZE9wdGlvbi5pdGVtcyA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHRoaXMuZ3JpZE9wdGlvbi5pdGVtcygpO1xyXG4gICAgICAgICAgaWYgKHJlc3VsdHMgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICAgIGV4cG9ydGVkSXRlbXMgPSBhd2FpdCByZXN1bHRzO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZXhwb3J0ZWRJdGVtcyA9IHJlc3VsdHM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGV4cG9ydGVkSXRlbXMgPSB0aGlzLmdyaWRPcHRpb24uaXRlbXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLiNmaWx0ZXJMb2NhbChleHBvcnRlZEl0ZW1zLCBmaWx0ZXJJbmZvKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gICNhbGxDb2x1bW5zID0gKCk6IFNkVGFibGVDb2x1bW5bXSA9PiB7XHJcbiAgICBjb25zdCBjb2x1bW5zOiBTZFRhYmxlQ29sdW1uW10gPSBbXTtcclxuICAgIHRoaXMuZ3JpZE9wdGlvbi5jb2x1bW5zXHJcbiAgICAgIC5maWx0ZXIoZSA9PiAhZS5leHBvcnQ/LmRpc2FibGVkKVxyXG4gICAgICAuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2NoaWxkcmVuJykge1xyXG4gICAgICAgICAgY29sdW1uLmNoaWxkcmVuXHJcbiAgICAgICAgICAgID8uZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZClcclxuICAgICAgICAgICAgLmZvckVhY2goY2hpbGRDb2x1bW4gPT4ge1xyXG4gICAgICAgICAgICAgIGNvbHVtbnMucHVzaChjaGlsZENvbHVtbik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb2x1bW5zLnB1c2goY29sdW1uKTtcclxuICAgICAgfSk7XHJcbiAgICByZXR1cm4gY29sdW1ucztcclxuICB9O1xyXG5cclxuICAjYWxsRXhwb3J0ZWRDb2x1bW5zID0gKCk6IFNkVGFibGVPcHRpb25FeHBvcnRDb2x1bW5bXSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8uY29sdW1ucz8uZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZCkgfHwgW107XHJcbiAgfTtcclxuXHJcbiAgI29uRXhwb3J0ID0gYXN5bmMgKGlzQ1NWPzogYm9vbGVhbikgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGNvbHVtbnMgPSB0aGlzLiNnZXRFeHBvcnRDb2x1bW5zKCk7XHJcbiAgICAgIGNvbnN0IHBhZ2VTaXplID0gdGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/Lm1heEl0ZW1zUGVyUmVxdWVzdCB8fCAxMDAwO1xyXG4gICAgICBjb25zdCBiYXRjaCA9IHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5iYXRjaCB8fCAxO1xyXG4gICAgICBsZXQgdG90YWwgPSB0aGlzLnRvdGFsO1xyXG4gICAgICBsZXQgcGFnZU51bWJlciA9IDA7XHJcbiAgICAgIGxldCBleHBvcnRJdGVtcyA9IFtdO1xyXG4gICAgICB0aGlzLmlzRXhwb3J0aW5nID0gdHJ1ZTtcclxuICAgICAgY29uc3QgaXRlbXM6IGFueVtdID0gW107XHJcbiAgICAgIGxldCBwcm9taXNlczogUHJvbWlzZTxcclxuICAgICAgICB8IGFueVtdXHJcbiAgICAgICAgfCB7XHJcbiAgICAgICAgICBpdGVtczogYW55W107XHJcbiAgICAgICAgICB0b3RhbDogbnVtYmVyO1xyXG4gICAgICAgIH1cclxuICAgICAgPltdID0gW107XHJcbiAgICAgIGNvbnN0IGhhbmRsZURhdGEgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcclxuICAgICAgICBwcm9taXNlcyA9IFtdO1xyXG4gICAgICAgIGV4cG9ydEl0ZW1zID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xyXG4gICAgICAgICAgaWYgKCdpdGVtcycgaW4gcmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGV4cG9ydEl0ZW1zID0gWy4uLmV4cG9ydEl0ZW1zLCAuLi5yZXN1bHQuaXRlbXNdO1xyXG4gICAgICAgICAgICB0b3RhbCA9IHJlc3VsdC50b3RhbDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGV4cG9ydEl0ZW1zID0gWy4uLmV4cG9ydEl0ZW1zLCAuLi5yZXN1bHRdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8ubWFwcGluZykge1xyXG4gICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQubWFwcGluZyhleHBvcnRJdGVtcyk7XHJcbiAgICAgICAgICBpZiAocmVzdWx0cyBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgICAgZXhwb3J0SXRlbXMgPSBhd2FpdCByZXN1bHRzO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZXhwb3J0SXRlbXMgPSByZXN1bHRzO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB0b3RhbFBhZ2UgPSB0b3RhbCAvIHBhZ2VTaXplO1xyXG4gICAgICAgIGNvbnN0IHBlcmNlbnQgPSBNYXRoLnJvdW5kKCgocGFnZU51bWJlciAtIDEpICogMTAwLjApIC8gdG90YWxQYWdlKTtcclxuICAgICAgICB0aGlzLmV4cG9ydFRpdGxlID0gYEV4cG9ydGluZy4uLiR7cGVyY2VudH0lYDtcclxuICAgICAgICBjb25zdCBhbGxDb2x1bW5zID0gdGhpcy4jYWxsQ29sdW1ucygpO1xyXG4gICAgICAgIGNvbnN0IGFsbEV4cG9ydGVkQ29sdW1ucyA9IHRoaXMuI2FsbEV4cG9ydGVkQ29sdW1ucygpO1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBleHBvcnRJdGVtcykge1xyXG4gICAgICAgICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcclxuICAgICAgICAgIGNvbnN0IGhhbmRsZSA9IGFzeW5jIChleHBvcnRDb2x1bW46IFNkRXhwb3J0Q29sdW1uKSA9PiB7XHJcbiAgICAgICAgICAgIG9ialtleHBvcnRDb2x1bW4uZmllbGRdID0gaXRlbVtleHBvcnRDb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICBjb25zdCBjb2x1bW4gPSBhbGxDb2x1bW5zLmZpbmQoZSA9PiBlLmZpZWxkID09PSBleHBvcnRDb2x1bW4uZmllbGQpO1xyXG4gICAgICAgICAgICBjb25zdCBleHBvcnRlZENvbHVtbiA9IGFsbEV4cG9ydGVkQ29sdW1ucy5maW5kKGUgPT4gZS5maWVsZCA9PT0gZXhwb3J0Q29sdW1uLmZpZWxkKTtcclxuICAgICAgICAgICAgaWYgKGV4cG9ydGVkQ29sdW1uPy50cmFuc2Zvcm0pIHtcclxuICAgICAgICAgICAgICBvYmpbZXhwb3J0ZWRDb2x1bW4uZmllbGRdID0gZXhwb3J0ZWRDb2x1bW4udHJhbnNmb3JtKGl0ZW1bZXhwb3J0ZWRDb2x1bW4uZmllbGRdLCBpdGVtKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFjb2x1bW4pIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnY2hpbGRyZW4nKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uPy5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkQ29sdW1uID0+IGhhbmRsZShjaGlsZENvbHVtbikpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIWNvbHVtbnMuc29tZShlID0+IGUuZmllbGQgPT09IGNvbHVtbi5maWVsZCkpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNvbHVtbi50cmFuc2Zvcm0pIHtcclxuICAgICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm0gPSBjb2x1bW4udHJhbnNmb3JtKGl0ZW1bY29sdW1uLmZpZWxkXSwgaXRlbSwge1xyXG4gICAgICAgICAgICAgICAgaXNFeHBvcnQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybSBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gYXdhaXQgdHJhbnNmb3JtO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IHRyYW5zZm9ybTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBvYmpbY29sdW1uLmZpZWxkXSA/PyAnJztcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtW2NvbHVtbi5maWVsZF0gPT09IHVuZGVmaW5lZCB8fCBpdGVtW2NvbHVtbi5maWVsZF0gPT09IG51bGwgfHwgaXRlbVtjb2x1bW4uZmllbGRdID09PSAnJykge1xyXG4gICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gJyc7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdzdHJpbmcnIHx8IGNvbHVtbi50eXBlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICAgIC8vIE7hur91IGNlbGwgbMOgIHN0cmluZyBob+G6t2MgbnVtYmVyIHRow6wgZ8OhbiBi4bqxbmcgY2jDrW5oIG7Ds1xyXG4gICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gaXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnYm9vbCcpIHtcclxuICAgICAgICAgICAgICAvLyBO4bq/dSBsw6AgYm9vbCB0aMOsIGfDoW4gYuG6sW5nIGdpw6EgdHLhu4sgdHJ1ZVZhbHVlIHbDoCBmYWxzZVZhbHVlIChu4bq/dSBjw7MpLCBt4bq3YyDEkeG7i25oIGzDoCBUUlVFL0ZBTFNFXHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW1bY29sdW1uLmZpZWxkXSkge1xyXG4gICAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBjb2x1bW4ub3B0aW9uPy5kaXNwbGF5T25UcnVlIHx8ICdUcnVlJztcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9ialtjb2x1bW4uZmllbGRdICE9PSB1bmRlZmluZWQgJiYgb2JqW2NvbHVtbi5maWVsZF0gIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gY29sdW1uLm9wdGlvbj8uZGlzcGxheU9uRmFsc2UgfHwgJ0ZhbHNlJztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRlID0gaXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICAgIC8vIE7hur91IGzDoCBkYXRlIHRow6wgY29udmVydCB0aGVvIMSRw7puZyBmb3JtYXRcclxuICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IERhdGUudG9Gb3JtYXQoZGF0ZSwgJ2RkL01NL3l5eXknKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2RhdGV0aW1lJykge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRlID0gaXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICAgIC8vIE7hur91IGzDoCBkYXRldGltZSB0aMOsIGNvbnZlcnQgdGhlbyDEkcO6bmcgZm9ybWF0XHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBEYXRlLnRvRm9ybWF0KGRhdGUsICdkZC9NTS95eXl5IEhIOm1tJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRlID0gaXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICAgIC8vIE7hur91IGzDoCB0aW1lIHRow6wgY29udmVydCB0aGVvIMSRw7puZyBmb3JtYXRcclxuICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IERhdGUudG9Gb3JtYXQoZGF0ZSwgJ0hIOm1tJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICd2YWx1ZXMnKSB7XHJcbiAgICAgICAgICAgICAgLy8gTuG6v3UgbMOgIHZhbHVlcyB0aMOsIGzhuqV5IGdpw6EgdHLhu4sgY+G7p2EgdmFsdWUgxJHGsOG7o2MgY2jhu41uXHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSB0aGlzLiNjYWNoZU9ialZhbHVlc1tjb2x1bW4uZmllbGRdPy5baXRlbVtjb2x1bW4uZmllbGRdXSB8fCBpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICAvLyB0aGlzLmdyaWRPcHRpb24uY29sdW1ucy5mb3JFYWNoKGhhbmRsZSk7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGV4cG9ydENvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGhhbmRsZShleHBvcnRDb2x1bW4pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaXRlbXMucHVzaChvYmopO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgd2hpbGUgKHBhZ2VOdW1iZXIgKiBwYWdlU2l6ZSA8IHRvdGFsKSB7XHJcbiAgICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLiNleHBvcnRlZEl0ZW1zKHBhZ2VOdW1iZXIsIHBhZ2VTaXplKSk7XHJcbiAgICAgICAgcGFnZU51bWJlcisrO1xyXG4gICAgICAgIGlmIChwcm9taXNlcy5sZW5ndGggPCBiYXRjaCkge1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF3YWl0IGhhbmRsZURhdGEoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocHJvbWlzZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGF3YWl0IGhhbmRsZURhdGEoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXNDU1YpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0Q1NWKHtcclxuICAgICAgICAgIGNvbHVtbnMsXHJcbiAgICAgICAgICBpdGVtcyxcclxuICAgICAgICAgIGZpbGVOYW1lOiB0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8uZmlsZU5hbWUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHNoZWV0czoge1xyXG4gICAgICAgIG5hbWU6IHN0cmluZztcclxuICAgICAgICBpdGVtczogYW55W107XHJcbiAgICAgICAgZmllbGRzOiBzdHJpbmdbXTtcclxuICAgICAgfVtdID0gW107XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5zaGVldHMpKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBzaGVldCBvZiB0aGlzLmdyaWRPcHRpb24uZXhwb3J0LnNoZWV0cykge1xyXG4gICAgICAgICAgaWYgKHNoZWV0Lm5hbWUgJiYgc2hlZXQuaXRlbXMgJiYgc2hlZXQuZmllbGRzKSB7XHJcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNoZWV0Lml0ZW1zKSkge1xyXG4gICAgICAgICAgICAgIHNoZWV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IHNoZWV0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICBpdGVtczogc2hlZXQuaXRlbXMsXHJcbiAgICAgICAgICAgICAgICBmaWVsZHM6IHNoZWV0LmZpZWxkcyxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBzaGVldHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBzaGVldC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgaXRlbXM6IGF3YWl0IHNoZWV0Lml0ZW1zKCksXHJcbiAgICAgICAgICAgICAgICBmaWVsZHM6IHNoZWV0LmZpZWxkcyxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBhd2FpdCB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0KHtcclxuICAgICAgICBjb2x1bW5zLFxyXG4gICAgICAgIGl0ZW1zLFxyXG4gICAgICAgIGZpbGVOYW1lOiB0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8uZmlsZU5hbWUsXHJcbiAgICAgICAgc2hlZXRzLFxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgdGhpcy5pc0V4cG9ydGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmV4cG9ydFRpdGxlID0gYEV4cG9ydGA7XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICAjZ2V0RXhwb3J0Q29sdW1ucyA9ICgpID0+IHtcclxuICAgIGNvbnN0IGNvbHVtbnMgPSBbXHJcbiAgICAgIC4uLnRoaXMuZ3JpZE9wdGlvbi5jb2x1bW5zLmZpbHRlcihlID0+ICFlLmV4cG9ydD8uZGlzYWJsZWQpLFxyXG4gICAgICAuLi4odGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8uY29sdW1ucz8uZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZCkgfHwgW10pLFxyXG4gICAgXTtcclxuICAgIHJldHVybiBjb2x1bW5zO1xyXG4gIH07XHJcblxyXG4gIGV4cG9ydEV4Y2VsID0gKCkgPT4ge1xyXG4gICAgdGhpcy4jb25FeHBvcnQoKTtcclxuICB9O1xyXG5cclxuICBleHBvcnRDU1YgPSAoKSA9PiB7XHJcbiAgICB0aGlzLiNvbkV4cG9ydCh0cnVlKTtcclxuICB9O1xyXG5cclxuICBvbkZpbHRlckNoYW5nZSA9ICgpID0+IHtcclxuICAgIHRoaXMudGFibGVGaWx0ZXI/LnVwZGF0ZUZpbHRlcj8uKCk7XHJcbiAgICB0aGlzLmZpbHRlclJlZ2lzdGVyLnZhbHVlLnNldCh7XHJcbiAgICAgIGNvbHVtbk9wZXJhdG9yOiB0aGlzLmNvbHVtbk9wZXJhdG9yIHx8IHt9LFxyXG4gICAgICBjb2x1bW5GaWx0ZXI6IHRoaXMuY29sdW1uRmlsdGVyLFxyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgb25FeHBhbmQgPSBhc3luYyAocm93RGF0YTogU2RUYWJsZUl0ZW08VD4pID0+IHtcclxuICAgIGlmICh0aGlzLmdyaWRPcHRpb24uZXhwYW5kPy5hbHdheXMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHJvd0RhdGEubWV0YS5leHBhbmQuaXNFeHBhbmRpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHJvd0RhdGEubWV0YS5leHBhbmQuaXNFeHBhbmRlZCkge1xyXG4gICAgICByb3dEYXRhLm1ldGEuZXhwYW5kLmlzRXhwYW5kZWQgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZ3JpZE9wdGlvbj8uZXhwYW5kPy5vbkV4cGFuZD8uKHJvd0RhdGEuZGF0YSk7XHJcbiAgICBpZiAoIXRoaXMuZ3JpZE9wdGlvbi5leHBhbmQ/Lm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IChpdGVtLm1ldGEuZXhwYW5kLmlzRXhwYW5kaW5nID0gaXRlbS5tZXRhLmV4cGFuZC5pc0V4cGFuZGVkID0gZmFsc2UpKTtcclxuICAgIH1cclxuICAgIGlmIChkYXRhIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICByb3dEYXRhLm1ldGEuZXhwYW5kLmlzRXhwYW5kaW5nID0gdHJ1ZTtcclxuICAgICAgZGF0YVxyXG4gICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICByb3dEYXRhLm1ldGEuZXhwYW5kLmRhdGEgPSByZXM7XHJcbiAgICAgICAgICByb3dEYXRhLm1ldGEuZXhwYW5kLmlzRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4gKHJvd0RhdGEubWV0YS5leHBhbmQuaXNFeHBhbmRpbmcgPSBmYWxzZSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcm93RGF0YS5tZXRhLmV4cGFuZC5kYXRhID0gZGF0YTtcclxuICAgICAgcm93RGF0YS5tZXRhLmV4cGFuZC5pc0V4cGFuZGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBvblNlbGVjdCA9IChyb3dEYXRhOiBTZFRhYmxlSXRlbTxUPikgPT4ge1xyXG4gICAgaWYgKHJvd0RhdGEubWV0YS5ncm91cD8uaXRlbXM/Lmxlbmd0aCkge1xyXG4gICAgICByb3dEYXRhLm1ldGEuZ3JvdXAuaXRlbXMuZm9yRWFjaChlID0+IChlLm1ldGEuc2VsZWN0b3IuaXNTZWxlY3RlZCA9IHJvd0RhdGEubWV0YS5zZWxlY3Rvci5pc1NlbGVjdGVkKSk7XHJcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbi5zZWxlY3Rvcj8ub25TZWxlY3Q/LihcclxuICAgICAgICByb3dEYXRhLmRhdGEsXHJcbiAgICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoZSA9PiBlLm1ldGEuc2VsZWN0b3IuaXNTZWxlY3RlZCkubWFwKGUgPT4gZS5kYXRhKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmlzU2VsZWN0QWxsID0gdGhpcy5pdGVtcy5ldmVyeShlID0+IGUubWV0YS5zZWxlY3Rvci5pc1NlbGVjdGVkKTtcclxuICAgICAgdGhpcy4jdXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi5zZWxlY3Rvcj8uc2luZ2xlKSB7XHJcbiAgICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoZSA9PiBlICE9PSByb3dEYXRhKS5mb3JFYWNoKGUgPT4gKGUubWV0YS5zZWxlY3Rvci5pc1NlbGVjdGVkID0gZmFsc2UpKTtcclxuICAgICAgICB0aGlzLiN1cGRhdGVTZWxlY3RlZEl0ZW1zKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbi5zZWxlY3Rvcj8ub25TZWxlY3Q/LihcclxuICAgICAgICByb3dEYXRhLmRhdGEsXHJcbiAgICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoZSA9PiBlLm1ldGEuc2VsZWN0b3IuaXNTZWxlY3RlZCkubWFwKGUgPT4gZS5kYXRhKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmlzU2VsZWN0QWxsID0gdGhpcy5pdGVtcy5ldmVyeShlID0+IGUubWV0YS5zZWxlY3Rvci5pc1NlbGVjdGVkKTtcclxuICAgICAgdGhpcy4jdXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIG9uU2VsZWN0QWxsID0gKCkgPT4ge1xyXG4gICAgdGhpcy5pdGVtcz8uZm9yRWFjaChlID0+IHtcclxuICAgICAgaWYgKGUubWV0YS5zZWxlY3Rvci5zZWxlY3RhYmxlICYmICghdGhpcy5ncmlkT3B0aW9uPy5zZWxlY3Rvcj8uYWN0aW9ucz8ubGVuZ3RoIHx8IGUubWV0YS5zZWxlY3Rvci5hY3Rpb25zPy5sZW5ndGgpKSB7XHJcbiAgICAgICAgZS5tZXRhLnNlbGVjdG9yLmlzU2VsZWN0ZWQgPSB0aGlzLmlzU2VsZWN0QWxsO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZ3JpZE9wdGlvbi5zZWxlY3Rvcj8ub25TZWxlY3RBbGw/Lih0aGlzLml0ZW1zLmZpbHRlcihlID0+IGUubWV0YS5zZWxlY3Rvci5pc1NlbGVjdGVkKS5tYXAoZSA9PiBlLmRhdGEpKTtcclxuICAgIHRoaXMuI3VwZGF0ZVNlbGVjdGVkSXRlbXMoKTtcclxuICB9O1xyXG5cclxuICBvbkNsZWFyU2VsZWN0aW9uID0gKGl0ZW1zPzogU2RUYWJsZUl0ZW08VD5bXSkgPT4ge1xyXG4gICAgaXRlbXMgPSBpdGVtcyB8fCB0aGlzLml0ZW1zO1xyXG4gICAgdGhpcy5pc1NlbGVjdEFsbCA9IGZhbHNlO1xyXG4gICAgaXRlbXM/LmZvckVhY2goZSA9PiAoZS5tZXRhLnNlbGVjdG9yLmlzU2VsZWN0ZWQgPSBmYWxzZSkpO1xyXG4gICAgdGhpcy4jdXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gIH07XHJcblxyXG4gICN1cGRhdGVTZWxlY3RlZEl0ZW1zID0gKCkgPT4ge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLm1ldGEuc2VsZWN0b3IuaXNTZWxlY3RlZCkubWFwKGl0ZW0gPT4gaXRlbS5kYXRhKTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9O1xyXG5cclxuICBjbGVhckZpbHRlciA9ICgpID0+IHtcclxuICAgIHRoaXMuZmlsdGVyUmVnaXN0ZXIudmFsdWUucmVtb3ZlKCk7XHJcbiAgfTtcclxuXHJcbiAgc2V0RmlsdGVyID0gKGFyZ3M6IHsgY29sdW1uRmlsdGVyPzogUmVjb3JkPHN0cmluZywgYW55PjsgZXh0ZXJuYWxGaWx0ZXI/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+OyBmaWx0ZXJEZWY/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH0pID0+IHtcclxuICAgIGNvbnN0IHsgY29sdW1uRmlsdGVyLCBleHRlcm5hbEZpbHRlciwgZmlsdGVyRGVmIH0gPSBhcmdzIHx8IHt9O1xyXG4gICAgaWYgKGNvbHVtbkZpbHRlcikge1xyXG4gICAgICB0aGlzLmNvbHVtbkZpbHRlciA9IGNvbHVtbkZpbHRlcjtcclxuICAgIH1cclxuICAgIHRoaXMuZmlsdGVyUmVnaXN0ZXIudmFsdWUuc2V0KHtcclxuICAgICAgY29sdW1uRmlsdGVyLFxyXG4gICAgICBleHRlcm5hbEZpbHRlcixcclxuICAgICAgZmlsdGVyRGVmLFxyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgZ2V0IGdyaWRJdGVtcygpOiBUW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbXMubWFwKGl0ZW0gPT4gaXRlbS5kYXRhKTtcclxuICB9XHJcblxyXG4gIGRldGVjdENoYW5nZXMgPSAoKSA9PiB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICNsb2FkVmFsdWVzID0gYXN5bmMgKGNvbHVtbnM6IFNkVGFibGVDb2x1bW5bXSkgPT4ge1xyXG4gICAgY29uc3QgcHJvbWlzZXM6IFByb21pc2U8e1xyXG4gICAgICBrZXk6IHN0cmluZztcclxuICAgICAgdmFsdWVGaWVsZDogc3RyaW5nO1xyXG4gICAgICBkaXNwbGF5RmllbGQ6IHN0cmluZztcclxuICAgICAgZGF0YTogYW55W107XHJcbiAgICB9PltdID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ3ZhbHVlcycgJiYgIXRoaXMuY2FjaGVWYWx1ZXNbY29sdW1uLmZpZWxkXSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgY29sdW1uLm9wdGlvbi5pdGVtcyA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgcHJvbWlzZXMucHVzaChcclxuICAgICAgICAgICAgY29sdW1uLm9wdGlvblxyXG4gICAgICAgICAgICAgIC5pdGVtcygpXHJcbiAgICAgICAgICAgICAgLnRoZW4oZGF0YSA9PiAoe1xyXG4gICAgICAgICAgICAgICAga2V5OiBjb2x1bW4uZmllbGQsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZUZpZWxkOiBjb2x1bW4ub3B0aW9uLnZhbHVlRmllbGQsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6IGNvbHVtbi5vcHRpb24uZGlzcGxheUZpZWxkLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEgOiBbXSxcclxuICAgICAgICAgICAgICB9KSlcclxuICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgIGtleTogY29sdW1uLmZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZUZpZWxkOiBjb2x1bW4ub3B0aW9uLnZhbHVlRmllbGQsXHJcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogY29sdW1uLm9wdGlvbi5kaXNwbGF5RmllbGQsXHJcbiAgICAgICAgICAgICAgICAgIGRhdGE6IFtdLFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jYWNoZVZhbHVlc1tjb2x1bW4uZmllbGRdID0gY29sdW1uLm9wdGlvbi5pdGVtcy5tYXAoZSA9PiAoe1xyXG4gICAgICAgICAgICBbY29sdW1uLm9wdGlvbi52YWx1ZUZpZWxkXTogZT8uW2NvbHVtbi5vcHRpb24udmFsdWVGaWVsZF0sXHJcbiAgICAgICAgICAgIFtjb2x1bW4ub3B0aW9uLmRpc3BsYXlGaWVsZF06IGU/Lltjb2x1bW4ub3B0aW9uLmRpc3BsYXlGaWVsZF0sXHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICB0aGlzLiNjYWNoZU9ialZhbHVlc1tjb2x1bW4uZmllbGRdID0gQXJyYXkudG9PYmplY3QodGhpcy5jYWNoZVZhbHVlc1tjb2x1bW4uZmllbGRdLCBjb2x1bW4ub3B0aW9uLnZhbHVlRmllbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHByb21pc2VzLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xyXG4gICAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiByZXN1bHRzKSB7XHJcbiAgICAgICAgdGhpcy5jYWNoZVZhbHVlc1tyZXN1bHQua2V5XSA9IHJlc3VsdC5kYXRhLm1hcChlID0+ICh7XHJcbiAgICAgICAgICBbcmVzdWx0LnZhbHVlRmllbGRdOiBlPy5bcmVzdWx0LnZhbHVlRmllbGRdLFxyXG4gICAgICAgICAgW3Jlc3VsdC5kaXNwbGF5RmllbGRdOiBlPy5bcmVzdWx0LmRpc3BsYXlGaWVsZF0sXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMuI2NhY2hlT2JqVmFsdWVzW3Jlc3VsdC5rZXldID0gQXJyYXkudG9PYmplY3QodGhpcy5jYWNoZVZhbHVlc1tyZXN1bHQua2V5XSwgcmVzdWx0LnZhbHVlRmllbGQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgI2Zvcm1hdCA9IGFzeW5jIDxUID0gYW55PihyYXdJdGVtczogVFtdLCBjb2x1bW5zOiBTZFRhYmxlQ29sdW1uW10pID0+IHtcclxuICAgIGNvbnN0IGl0ZW1zID0gcmF3SXRlbXMubWFwKE1hcFRvU2RUYWJsZUl0ZW0pO1xyXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICAvLyBDbGlja2FibGVcclxuICAgICAgY29uc3QgeyBmaWVsZCwgY2VsbFN0eWxlLCBjbGljaywgdG9vbHRpcCwgaHRtbFRlbXBsYXRlLCB0cmFuc2Zvcm0gfSA9IGNvbHVtbjtcclxuICAgICAgbGV0IG9ialZhbHVlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICd2YWx1ZXMnKSB7XHJcbiAgICAgICAgb2JqVmFsdWVzID0gdGhpcy4jY2FjaGVPYmpWYWx1ZXNbZmllbGRdIHx8IHt9O1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2xhenktdmFsdWVzJykge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IGl0ZW1zLm1hcChlID0+IGUuZGF0YT8uW2ZpZWxkXSkuZmlsdGVyKHZhbCA9PiAhIXZhbCB8fCB2YWwgPT09IDApLnVuaW9uKCk7XHJcbiAgICAgICAgY29uc3Qge1xyXG4gICAgICAgICAgb3B0aW9uOiB7IHZpZXdzIH0sXHJcbiAgICAgICAgfSA9IGNvbHVtbjtcclxuICAgICAgICBpZiAodmlld3MgJiYgdmFsdWVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgb2JqVmFsdWVzID0gQXJyYXkudG9PYmplY3QoYXdhaXQgdmlld3ModmFsdWVzKS5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgICAgfSksIGNvbHVtbi5vcHRpb24udmFsdWVGaWVsZCkgfHwge307XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xyXG4gICAgICAgIGNvbnN0IHJvd0RhdGEgPSBpdGVtLmRhdGE7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSByb3dEYXRhPy5bZmllbGRdO1xyXG4gICAgICAgIGl0ZW0ubWV0YS5kaXNwbGF5W2ZpZWxkXSA9IHtcclxuICAgICAgICAgIGJhZGdlOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICBjZWxsU3R5bGU6IGNvbHVtbi50eXBlID09PSAnbnVtYmVyJyAmJiB7ICd0ZXh0LWFsaWduJzogJ3JpZ2h0IWltcG9ydGFudCcgfSxcclxuICAgICAgICAgIGRhdGE6IHZhbHVlLFxyXG4gICAgICAgICAgaXNIdG1sOiBmYWxzZSxcclxuICAgICAgICAgIHRvb2x0aXA6IHR5cGVvZiB0b29sdGlwID09PSAnZnVuY3Rpb24nID8gdG9vbHRpcCh2YWx1ZSwgcm93RGF0YSkgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICBjbGljazogdHlwZW9mIGNsaWNrID09PSAnZnVuY3Rpb24nID8gKCkgPT4gY2xpY2sodmFsdWUsIHJvd0RhdGEpIDogdW5kZWZpbmVkLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgZGlzcGxheSA9IGl0ZW0ubWV0YS5kaXNwbGF5W2ZpZWxkXTtcclxuICAgICAgICAvLyBEaXNwbGF5XHJcbiAgICAgICAgaWYgKHR5cGVvZiBodG1sVGVtcGxhdGUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgIGRpc3BsYXkuaXNIdG1sID0gdHJ1ZTtcclxuICAgICAgICAgIGRpc3BsYXkuZGF0YSA9IGh0bWxUZW1wbGF0ZSh2YWx1ZSwgcm93RGF0YSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdHJhbnNmb3JtID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRyYW5zZm9ybSh2YWx1ZSwgcm93RGF0YSk7XHJcbiAgICAgICAgICBpZiAobmV3VmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXkuZGF0YSA9IGF3YWl0IG5ld1ZhbHVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZGlzcGxheS5kYXRhID0gbmV3VmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2RhdGUnIHx8IGNvbHVtbi50eXBlID09PSAnZGF0ZXRpbWUnIHx8IGNvbHVtbi50eXBlID09PSAndGltZScpIHtcclxuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IERhdGUudG9Gb3JtYXQodmFsdWUsICdkZC9NTS95eXl5Jyk7XHJcbiAgICAgICAgICAgIGxldCB0aW1lID0gRGF0ZS50b0Zvcm1hdCh2YWx1ZSwgJ0hIOm1tOnNzJyk7XHJcbiAgICAgICAgICAgIGlmICh0aW1lPy5lbmRzV2l0aCgnMDAnKSkge1xyXG4gICAgICAgICAgICAgIHRpbWUgPSBEYXRlLnRvRm9ybWF0KHZhbHVlLCAnSEg6bW0nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkYXRlJyB8fCBjb2x1bW4udHlwZSA9PT0gJ2RhdGV0aW1lJykge1xyXG4gICAgICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2RhdGV0aW1lJykge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheS5pc0h0bWwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheS5kYXRhID0gYDxzcGFuIGNsYXNzPVwiZC1ibG9jayBUMTRSIHRleHQtYmxhY2s0MDBcIj4ke3RpbWV9PC9zcGFuPjxzcGFuIGNsYXNzPVwiZC1ibG9jayBUMTRSXCI+JHtkYXRlfTwvc3Bhbj5gO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5LmRhdGEgPSBkYXRlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgICAgICAgIGRpc3BsYXkuZGF0YSA9IHRpbWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ3ZhbHVlcycgfHwgY29sdW1uLnR5cGUgPT09ICdsYXp5LXZhbHVlcycpIHtcclxuICAgICAgICAgICAgZGlzcGxheS5kYXRhID0gb2JqVmFsdWVzW3ZhbHVlXT8uW2NvbHVtbi5vcHRpb24uZGlzcGxheUZpZWxkXSB8fCB2YWx1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzTnVtYmVyKHZhbHVlKSkge1xyXG4gICAgICAgICAgICBkaXNwbGF5LmRhdGEgPSBOdW1iZXIudG9WTkN1cnJlbmN5KHZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Jvb2wnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgb3B0aW9uIH0gPSBjb2x1bW47XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSAnJykge1xyXG4gICAgICAgICAgICAgIGRpc3BsYXkuZGF0YSA9IHZhbHVlID09PSB0cnVlID8gb3B0aW9uPy5kaXNwbGF5T25UcnVlIHx8ICdUcnVlJyA6IG9wdGlvbj8uZGlzcGxheU9uRmFsc2UgfHwgJ0ZhbHNlJztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBkaXNwbGF5LmRhdGEgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBCYWRnZVxyXG4gICAgICAgICAgaWYgKChjb2x1bW4udHlwZSA9PT0gJ3N0cmluZycgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInIHx8IGNvbHVtbi50eXBlID09PSAndmFsdWVzJykgJiYgY29sdW1uLmJhZGdlKSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXkuYmFkZ2UgPSB7XHJcbiAgICAgICAgICAgICAgdHlwZTogIWNvbHVtbj8uYmFkZ2VUeXBlID8gJ3JvdW5kJyA6IGNvbHVtbi5iYWRnZVR5cGUsXHJcbiAgICAgICAgICAgICAgY29sb3I6IGNvbHVtbi5iYWRnZSh2YWx1ZSwgcm93RGF0YSksXHJcbiAgICAgICAgICAgICAgaWNvbjogY29sdW1uLmJhZGdlSWNvbj8uKHZhbHVlLCByb3dEYXRhKSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdib29sJykge1xyXG4gICAgICAgICAgICBkaXNwbGF5LmJhZGdlID0ge1xyXG4gICAgICAgICAgICAgIHR5cGU6ICdjaXJjbGUnLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiAhIXZhbHVlID8gJ3N1Y2Nlc3MnIDogJ2RhbmdlcicsXHJcbiAgICAgICAgICAgICAgaWNvbjogbnVsbCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBpdGVtcztcclxuICB9O1xyXG59XHJcbiJdfQ==
|
|
947
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL3VzZXIvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdGFibGUvIiwic291cmNlcyI6WyJzcmMvbGliL3RhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFNBQVMsRUFFVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsU0FBUyxFQUdULFlBQVksRUFDWix1QkFBdUIsR0FDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRzdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQXlCLE1BQU0sb0NBQW9DLENBQUM7QUFDL0csT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFMUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNqRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztB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Q3ZCLFNBQVMsU0FBQyxhQUFhO3FCQUd2QixLQUFLO3dCQThCTCxTQUFTLFNBQUMsWUFBWTttQkFtQnRCLFNBQVMsU0FBQyxPQUFPOytCQWtCakIsWUFBWSxTQUFDLG9DQUFvQzswQkFJakQsWUFBWSxTQUFDLCtCQUErQjt5QkFJNUMsZUFBZSxTQUFDLDBCQUEwQjsyQkFNMUMsZUFBZSxTQUFDLDRCQUE0QjsyQkFPNUMsZUFBZSxTQUFDLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIEluamVjdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgUXVlcnlMaXN0LFxyXG4gIE9uSW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgQ29udGVudENoaWxkLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBNYXRTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBTZFRhYmxlRmlsdGVyUmVnaXN0ZXIsIFNkVGFibGVGaWx0ZXJSZXF1ZXN0IH0gZnJvbSAnLi9zZXJ2aWNlcy90YWJsZS1maWx0ZXIvdGFibGUtZmlsdGVyLm1vZGVsJztcclxuaW1wb3J0IHsgU2RUYWJsZU9wdGlvbiB9IGZyb20gJy4vbW9kZWxzL3RhYmxlLW9wdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFRBQkxFX0NPTkZJRywgREVGQVVMVF9UQUJMRV9DT05GSUcsIElTZFRhYmxlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vbW9kZWxzL3RhYmxlLWNvbmZpZ3VyYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGlzT2JzZXJ2YWJsZSwgU3ViamVjdCwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTZE5vdGlmeVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL25vdGlmeSc7XHJcbmltcG9ydCB7IFNkRmlsdGVyT3BlcmF0b3IsIFNkVGFibGVDb2x1bW4gfSBmcm9tICcuL21vZGVscy90YWJsZS1jb2x1bW4ubW9kZWwnO1xyXG5pbXBvcnQgeyBTZE1hdGVyaWFsQ2VsbERlZkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zZC1tYXRlcmlhbC1jZWxsLWRlZi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNkVGFibGVGaWx0ZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtZmlsdGVyL3RhYmxlLWZpbHRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3NkLW1hdGVyaWFsLWZpbHRlci1kZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2RNYXRlcmlhbFN1YkluZm9ybWF0aW9uRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3NkLW1hdGVyaWFsLXN1Yi1pbmZvcm1hdGlvbi1kZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2RNYXRlcmlhbEZvb3RlckRlZkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zZC1tYXRlcmlhbC1mb290ZXItZGVmLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNkTWF0ZXJpYWxFbXB0eURhdGFEZWZEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2QtbWF0ZXJpYWwtZW1wdHktZGF0YS1kZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2RFeHBvcnRDb2x1bW4sIFNkRXhwb3J0U2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvZXhwb3J0JztcclxuaW1wb3J0IHsgU2RUYWJsZUNvbmZpZ3VyYXRpb25SZXN1bHQgfSBmcm9tICcuL21vZGVscy90YWJsZS1vcHRpb24tY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgU2RUYWJsZUNvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy90YWJsZS1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZFRhYmxlT3B0aW9uRXhwb3J0Q29sdW1uIH0gZnJvbSAnLi9tb2RlbHMvdGFibGUtb3B0aW9uLWV4cG9ydC5tb2RlbCc7XHJcbmltcG9ydCB7IFNkUXVpY2tBY3Rpb24gfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL3F1aWNrLWFjdGlvbic7XHJcbmltcG9ydCB7IE1hcFRvU2RUYWJsZUl0ZW0sIFNkVGFibGVJdGVtIH0gZnJvbSAnLi9tb2RlbHMvdGFibGUtaXRlbS5tb2RlbCc7XHJcbmltcG9ydCB7IFNkU2Nyb2xsRGlyZWN0aXZlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9jb21tb24nO1xyXG5pbXBvcnQgeyBTZFRhYmxlRmlsdGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGFibGUtZmlsdGVyL3RhYmxlLWZpbHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2RQb3B1cENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2NvbXBvbmVudHMvcG9wdXAtY29uZmlndXJhdGlvbi9wb3B1cC1jb25maWd1cmF0aW9uLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xyXG4gICAgICBzdGF0ZSgnY29sbGFwc2VkJywgc3R5bGUoeyBoZWlnaHQ6ICcwJywgbWluSGVpZ2h0OiAnMCcsIHZpc2liaWxpdHk6ICdoaWRkZW4nIH0pKSxcclxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJywgdmlzaWJpbGl0eTogJ3Zpc2libGUnIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPD0+IGNvbGxhcHNlZCcsIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpKSxcclxuICAgIF0pLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZFRhYmxlPFQgPSBhbnk+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoU2RQb3B1cENvbmZpZ3VyYXRpb24pIHBvcHVwQ29uZmlndXJhdGlvbjogU2RQb3B1cENvbmZpZ3VyYXRpb247XHJcbiAgI2dyaWRJZCA9IHV1aWQudjQoKTtcclxuICBAVmlld0NoaWxkKFNkU2Nyb2xsRGlyZWN0aXZlKSBzZFNjcm9sbDogU2RTY3JvbGxEaXJlY3RpdmU7XHJcbiAgZmlsdGVyUmVnaXN0ZXI6IFNkVGFibGVGaWx0ZXJSZWdpc3RlcjtcclxuICBrZXkgPSB1dWlkLnY0KCk7XHJcbiAgQFZpZXdDaGlsZChTZFF1aWNrQWN0aW9uKSBxdWlja0FjdGlvbjogU2RRdWlja0FjdGlvbjtcclxuICBAVmlld0NoaWxkKFNkVGFibGVGaWx0ZXIpIHRhYmxlRmlsdGVyOiBTZFRhYmxlRmlsdGVyO1xyXG4gIGdyaWRPcHRpb246IFNkVGFibGVPcHRpb248VD47XHJcbiAgY29uZmlndXJhdGlvbjogU2RUYWJsZUNvbmZpZ3VyYXRpb25SZXN1bHQ7XHJcbiAgQElucHV0KCkgc2V0IG9wdGlvbihvcHRpb246IFNkVGFibGVPcHRpb24pIHtcclxuICAgIGlmIChvcHRpb24pIHtcclxuICAgICAgb3B0aW9uID0gdGhpcy4jaW5pdENvbmZpZ3VyYXRpb24ob3B0aW9uKTtcclxuICAgICAgdGhpcy5ncmlkT3B0aW9uID0gb3B0aW9uO1xyXG4gICAgICB0aGlzLiNsb2FkQ29tcGxldGVkID0gZmFsc2U7XHJcbiAgICAgIGNvbnN0IHNldHRpbmcgPSB0aGlzLmdyaWRDb25maWd1cmF0aW9uU2VydmljZS5pbml0KHRoaXMuZ3JpZE9wdGlvbik7XHJcbiAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgICAgc2V0dGluZy5vYnNlcnZlci5waXBlKHN0YXJ0V2l0aChzZXR0aW5nLnN1YmplY3QuZ2V0VmFsdWUoKSkpLnN1YnNjcmliZShhc3luYyBjb25maWd1cmF0aW9uID0+IHtcclxuICAgICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25SZXN1bHQgPSB0aGlzLmdyaWRDb25maWd1cmF0aW9uU2VydmljZS5sb2FkQ29uZmlndXJhdGlvblJlc3VsdCh0aGlzLmdyaWRPcHRpb24sIGNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgICAgY29uc3QgZGlzcGxheUNvbHVtbnMgPSBjb25maWd1cmF0aW9uUmVzdWx0LmRpc3BsYXllZENvbHVtbnMgfHwgW107XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLiNsb2FkVmFsdWVzKHRoaXMuZ3JpZE9wdGlvbi5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gZGlzcGxheUNvbHVtbnMuaW5jbHVkZXMoY29sdW1uLmZpZWxkKSkpO1xyXG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvblJlc3VsdDtcclxuICAgICAgICAgIHRoaXMuI29wdGlvbkNoYW5nZXMubmV4dCh0aGlzLmdyaWRPcHRpb24pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gICNvcHRpb25DaGFuZ2VzID0gbmV3IFN1YmplY3Q8U2RUYWJsZU9wdGlvbj4oKTtcclxuXHJcbiAgI2xvY2FsSXRlbXM6IFNkVGFibGVJdGVtPFQ+W10gPSBbXTtcclxuICBpdGVtczogU2RUYWJsZUl0ZW08VD5bXSA9IFtdO1xyXG4gIHNlbGVjdGVkSXRlbXM6IFRbXSA9IFtdO1xyXG4gIHRvdGFsOiBudW1iZXI7XHJcblxyXG4gIC8vIExvYWRpbmdcclxuICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgLy8gUGFnaW5hdGVcclxuICBpc0hpZGRlblBhZ2luYXRvciA9IGZhbHNlO1xyXG4gICNwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvcikgc2V0IHBhZ2luYXRvcihwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcikge1xyXG4gICAgaWYgKHBhZ2luYXRvciAmJiB0aGlzLiNwYWdpbmF0b3IgIT09IHBhZ2luYXRvcikge1xyXG4gICAgICB0aGlzLiNwYWdpbmF0b3IgPSBwYWdpbmF0b3I7XHJcbiAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgICAgcGFnaW5hdG9yLnBhZ2VcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuI3JlbG9hZC5uZXh0KHtcclxuICAgICAgICAgICAgICAgIGZvcmNlOiBmYWxzZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU29ydGluZ1xyXG4gICNzb3J0OiBNYXRTb3J0O1xyXG4gIEBWaWV3Q2hpbGQoTWF0U29ydCkgc2V0IHNvcnQoc29ydDogTWF0U29ydCkge1xyXG4gICAgaWYgKHNvcnQgJiYgdGhpcy4jc29ydCAhPT0gc29ydCkge1xyXG4gICAgICB0aGlzLiNzb3J0ID0gc29ydDtcclxuICAgICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgICBzb3J0LnNvcnRDaGFuZ2VcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuI3JlbG9hZC5uZXh0KHtcclxuICAgICAgICAgICAgICAgIGZvcmNlOiBmYWxzZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU3ViIEluZm9ybWF0aW9uXHJcbiAgQENvbnRlbnRDaGlsZChTZE1hdGVyaWFsU3ViSW5mb3JtYXRpb25EZWZEaXJlY3RpdmUpXHJcbiAgc2RTdWJJbmZvcm1hdGlvbjogU2RNYXRlcmlhbFN1YkluZm9ybWF0aW9uRGVmRGlyZWN0aXZlO1xyXG5cclxuICAvLyBFbXB0eSBEYXRhXHJcbiAgQENvbnRlbnRDaGlsZChTZE1hdGVyaWFsRW1wdHlEYXRhRGVmRGlyZWN0aXZlKVxyXG4gIHNkRW1wdHlEYXRhOiBTZE1hdGVyaWFsRW1wdHlEYXRhRGVmRGlyZWN0aXZlO1xyXG5cclxuICAvLyBDZWxsIERlZlxyXG4gIEBDb250ZW50Q2hpbGRyZW4oU2RNYXRlcmlhbENlbGxEZWZEaXJlY3RpdmUpIHNkQ2VsbERlZnMgPSBuZXcgUXVlcnlMaXN0PFNkTWF0ZXJpYWxDZWxsRGVmRGlyZWN0aXZlPigpO1xyXG4gIGNlbGxEZWY6IHtcclxuICAgIFtjb2x1bW46IHN0cmluZ106IFNkTWF0ZXJpYWxDZWxsRGVmRGlyZWN0aXZlO1xyXG4gIH0gPSB7fTtcclxuXHJcbiAgLy8gRm9vdGVyIERlZlxyXG4gIEBDb250ZW50Q2hpbGRyZW4oU2RNYXRlcmlhbEZvb3RlckRlZkRpcmVjdGl2ZSkgc2RGb290ZXJEZWZzID0gbmV3IFF1ZXJ5TGlzdDxTZE1hdGVyaWFsRm9vdGVyRGVmRGlyZWN0aXZlPigpO1xyXG4gIGZvb3RlckRlZjoge1xyXG4gICAgW2NvbHVtbjogc3RyaW5nXTogU2RNYXRlcmlhbEZvb3RlckRlZkRpcmVjdGl2ZTtcclxuICB9ID0ge307XHJcbiAgaGFzRm9vdGVyID0gZmFsc2U7XHJcblxyXG4gIC8vIEZpbHRlciBEZWZcclxuICBAQ29udGVudENoaWxkcmVuKFNkTWF0ZXJpYWxGaWx0ZXJEZWZEaXJlY3RpdmUpIHNkRmlsdGVyRGVmcyA9IG5ldyBRdWVyeUxpc3Q8U2RNYXRlcmlhbEZpbHRlckRlZkRpcmVjdGl2ZT4oKTtcclxuICBmaWx0ZXJEZWZzOiBTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlW10gPSBbXTtcclxuXHJcbiAgLy8gRmlsdGVyXHJcbiAgY29sdW1uT3BlcmF0b3I6IFJlY29yZDxzdHJpbmcsIFNkRmlsdGVyT3BlcmF0b3I+ID0ge307XHJcbiAgY29sdW1uRmlsdGVyOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgLy8gU3ViY3JpcHRpb25cclxuICAjc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gICNyZWxvYWQgPSBuZXcgU3ViamVjdDx7XHJcbiAgICBmb3JjZTogYm9vbGVhbjtcclxuICB9PigpO1xyXG4gIGlzRXhwb3J0aW5nID0gZmFsc2U7XHJcbiAgaXNTZWxlY3RBbGwgPSBmYWxzZTtcclxuICBleHBvcnRUaXRsZSA9ICdFeHBvcnQnO1xyXG4gICNsb2FkQ29tcGxldGVkID0gZmFsc2U7XHJcbiAgY2FjaGVWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IHt9O1xyXG4gICNjYWNoZU9ialZhbHVlczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7fTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBJbmplY3QoVEFCTEVfQ09ORklHKVxyXG4gICAgQE9wdGlvbmFsKClcclxuICAgIHB1YmxpYyB0YWJsZUNvbmZpZ3VyYXRpb246IElTZFRhYmxlQ29uZmlndXJhdGlvbixcclxuICAgIHByaXZhdGUgZ3JpZENvbmZpZ3VyYXRpb25TZXJ2aWNlOiBTZFRhYmxlQ29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGV4cG9ydFNlcnZpY2U6IFNkRXhwb3J0U2VydmljZSxcclxuICAgIHByaXZhdGUgbm90aWZ5U2VydmljZTogU2ROb3RpZnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBncmlkRmlsdGVyU2VydmljZTogU2RUYWJsZUZpbHRlclNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuI2luaXRDZWxsRGVmKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLiNyZWxvYWRcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICAgICAgc3dpdGNoTWFwKGFzeW5jIGRhdGEgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJJbmZvID0gdGhpcy4jZ2V0RmlsdGVyKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuI2xvYWQoZmlsdGVySW5mbywgIXRoaXMuI2xvYWRDb21wbGV0ZWQgfHwgZGF0YS5mb3JjZSk7XHJcbiAgICAgICAgICAgIHRoaXMuI2xvYWRDb21wbGV0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSh0aGlzLiNyZW5kZXIpXHJcbiAgICApO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnNkQ2VsbERlZnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChbXSkpLnN1YnNjcmliZSh0aGlzLiNpbml0Q2VsbERlZikpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnNkRm9vdGVyRGVmcy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKFtdKSkuc3Vic2NyaWJlKHRoaXMuI2luaXRGb290ZXJEZWYpKTtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5zZEZpbHRlckRlZnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChbXSkpLnN1YnNjcmliZSh0aGlzLiNpbml0RmlsdGVyRGVmKSk7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICBjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgICB0aGlzLiNvcHRpb25DaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZ3JpZE9wdGlvbikpLFxyXG4gICAgICAgIHRoaXMuc2RGaWx0ZXJEZWZzLmNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5maWx0ZXJEZWZzKSksXHJcbiAgICAgIF0pLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy4jbG9hZEZpbHRlclJlZ2lzdGVyKCk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy4jb3B0aW9uQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmZpbHRlclJlZ2lzdGVyKSB7XHJcbiAgICAgICAgICB0aGlzLiNyZWxvYWQubmV4dCh7XHJcbiAgICAgICAgICAgIGZvcmNlOiB0cnVlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAjaW5pdENlbGxEZWYgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNlbGxEZWYgPSB7fTtcclxuICAgIGZvciAoY29uc3QgY2VsbERlZiBvZiB0aGlzLnNkQ2VsbERlZnMpIHtcclxuICAgICAgaWYgKGNlbGxEZWYuc2RNYXRlcmlhbENlbGxEZWYpIHtcclxuICAgICAgICB0aGlzLmNlbGxEZWZbY2VsbERlZi5zZE1hdGVyaWFsQ2VsbERlZl0gPSBjZWxsRGVmO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgI2luaXRGaWx0ZXJEZWYgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZpbHRlckRlZnMgPSBbXTtcclxuICAgIGZvciAoY29uc3QgZmlsdGVyRGVmIG9mIHRoaXMuc2RGaWx0ZXJEZWZzKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyRGVmcy5wdXNoKGZpbHRlckRlZik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgI2luaXRGb290ZXJEZWYgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZvb3RlckRlZiA9IHt9O1xyXG4gICAgdGhpcy5oYXNGb290ZXIgPSBmYWxzZTtcclxuICAgIGZvciAoY29uc3QgZm9vdGVyRGVmIG9mIHRoaXMuc2RGb290ZXJEZWZzKSB7XHJcbiAgICAgIGlmIChmb290ZXJEZWYuc2RNYXRlcmlhbEZvb3RlckRlZikge1xyXG4gICAgICAgIHRoaXMuaGFzRm9vdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmZvb3RlckRlZltmb290ZXJEZWYuc2RNYXRlcmlhbEZvb3RlckRlZl0gPSBmb290ZXJEZWY7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICAjZmlsdGVyRXhwb3J0SW5mbyA9IChwYWdlTnVtYmVyOiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIpOiBTZFRhYmxlRmlsdGVyUmVxdWVzdCA9PiB7XHJcbiAgICBjb25zdCB7IGNvbHVtbk9wZXJhdG9yLCBjb2x1bW5GaWx0ZXIsIGV4dGVybmFsRmlsdGVyLCBmaWx0ZXJEZWYgfSA9IHRoaXMuZmlsdGVyUmVnaXN0ZXIudmFsdWUuZ2V0KCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBjb2x1bW5PcGVyYXRvcjogY29sdW1uT3BlcmF0b3IgfHwge30sXHJcbiAgICAgIHJhd0NvbHVtbkZpbHRlcjogY29sdW1uRmlsdGVyIHx8IHt9LFxyXG4gICAgICByYXdFeHRlcm5hbEZpbHRlcjogZXh0ZXJuYWxGaWx0ZXIgfHwge30sXHJcbiAgICAgIHJhd0ZpbHRlckRlZjogZmlsdGVyRGVmIHx8IHt9LFxyXG4gICAgICBvcmRlckJ5OiB0aGlzLiNzb3J0Py5hY3RpdmUgfHwgJycsXHJcbiAgICAgIG9yZGVyRGlyZWN0aW9uOiB0aGlzLiNzb3J0Py5kaXJlY3Rpb24gfHwgJycsXHJcbiAgICAgIHBhZ2VOdW1iZXIsXHJcbiAgICAgIHBhZ2VTaXplLFxyXG4gICAgICBpc0V4cG9ydGVkOiB0cnVlLFxyXG4gICAgfTtcclxuICB9O1xyXG5cclxuICAjaW5pdENvbmZpZ3VyYXRpb24gPSAob3B0aW9uOiBTZFRhYmxlT3B0aW9uKSA9PiB7XHJcbiAgICAvLyBJbml0IHBhZ2luYXRpb25cclxuICAgIG9wdGlvbi5wYWdpbmF0ZSA9IHtcclxuICAgICAgaGlkZGVuOiBvcHRpb24/LnBhZ2luYXRlPy5oaWRkZW4sXHJcbiAgICAgIHBhZ2VTaXplOiBvcHRpb24/LnBhZ2luYXRlPy5wYWdlU2l6ZSA/PyB0aGlzLnRhYmxlQ29uZmlndXJhdGlvbj8ucGFnaW5hdGU/LnBhZ2VTaXplID8/IERFRkFVTFRfVEFCTEVfQ09ORklHLnBhZ2luYXRlPy5wYWdlU2l6ZSxcclxuICAgICAgcGFnZXM6IG9wdGlvbj8ucGFnaW5hdGU/LnBhZ2VzID8/IHRoaXMudGFibGVDb25maWd1cmF0aW9uPy5wYWdpbmF0ZT8ucGFnZXMgPz8gREVGQVVMVF9UQUJMRV9DT05GSUcucGFnaW5hdGU/LnBhZ2VzLFxyXG4gICAgICBzaG93Rmlyc3RMYXN0QnV0dG9uczogb3B0aW9uPy5wYWdpbmF0ZT8uc2hvd0ZpcnN0TGFzdEJ1dHRvbnMgPz8gZmFsc2UsXHJcbiAgICB9O1xyXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2Ygb3B0aW9uLmNvbHVtbnMgfHwgW10pIHtcclxuICAgICAgaWYgKGNvbHVtbi5maWx0ZXI/Lm9wZXJhdG9yPy5lbmFibGUgJiYgIWNvbHVtbi5maWx0ZXI/Lm9wZXJhdG9yPy5saXN0Py5sZW5ndGgpIHtcclxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICBjb2x1bW4uZmlsdGVyLm9wZXJhdG9yLmxpc3QgPSB0aGlzLnRhYmxlQ29uZmlndXJhdGlvbj8uZmlsdGVyPy5vcGVyYXRvcj8uZGVmYXVsdExpc3RTdHJpbmcgfHwgW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgIGNvbHVtbi5maWx0ZXIub3BlcmF0b3IubGlzdCA9IHRoaXMudGFibGVDb25maWd1cmF0aW9uPy5maWx0ZXI/Lm9wZXJhdG9yPy5kZWZhdWx0TGlzdE51bWJlciB8fCBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAndmFsdWVzJyB8fCBjb2x1bW4udHlwZSA9PT0gJ2xhenktdmFsdWVzJykge1xyXG4gICAgICAgICAgY29sdW1uLmZpbHRlci5vcGVyYXRvci5saXN0ID0gdGhpcy50YWJsZUNvbmZpZ3VyYXRpb24/LmZpbHRlcj8ub3BlcmF0b3I/LmRlZmF1bHRMaXN0VmFsdWVzIHx8IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkYXRlJyB8fCBjb2x1bW4udHlwZSA9PT0gJ2RhdGV0aW1lJykge1xyXG4gICAgICAgICAgY29sdW1uLmZpbHRlci5vcGVyYXRvci5saXN0ID0gdGhpcy50YWJsZUNvbmZpZ3VyYXRpb24/LmZpbHRlcj8ub3BlcmF0b3I/LmRlZmF1bHRMaXN0RGF0ZSB8fCBbXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBvcHRpb247XHJcbiAgfTtcclxuXHJcbiAgI2xvYWRGaWx0ZXJSZWdpc3RlciA9ICgpID0+IHtcclxuICAgIC8vIEluaXQgZmlsdGVyXHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9uKSB7XHJcbiAgICAgIGlmICghdGhpcy5maWx0ZXJSZWdpc3Rlcikge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyUmVnaXN0ZXIgPSB0aGlzLmdyaWRGaWx0ZXJTZXJ2aWNlLnJlZ2lzdGVyKHRoaXMuZ3JpZE9wdGlvbj8uZmlsdGVyLCB7XHJcbiAgICAgICAgICBpZDogdGhpcy4jZ3JpZElkLFxyXG4gICAgICAgICAgY29sdW1uczogdGhpcy5ncmlkT3B0aW9uPy5jb2x1bW5zLFxyXG4gICAgICAgICAgZXh0ZXJuYWxGaWx0ZXJzOiB0aGlzLmdyaWRPcHRpb24/LmZpbHRlcj8uZXh0ZXJuYWxGaWx0ZXJzLFxyXG4gICAgICAgICAgZmlsdGVyRGVmczogdGhpcy5maWx0ZXJEZWZzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgICAgICB0aGlzLmZpbHRlclJlZ2lzdGVyLnZhbHVlLm9ic2VydmVyXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MDApLFxyXG4gICAgICAgICAgICAgIG1hcChmaWx0ZXJWYWx1ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IGNvbHVtbk9wZXJhdG9yLCBjb2x1bW5GaWx0ZXIsIG5vdFJlbG9hZCB9ID0gZmlsdGVyVmFsdWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbk9wZXJhdG9yID0gY29sdW1uT3BlcmF0b3IgfHwge307XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkZpbHRlciA9IGNvbHVtbkZpbHRlcjtcclxuICAgICAgICAgICAgICAgIGlmICghbm90UmVsb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuI3BhZ2luYXRvci5wYWdlSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLiNyZWxvYWQubmV4dCh7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yY2U6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICAjZmlsdGVyTG9jYWwgPSAobG9jYWxJdGVtczogU2RUYWJsZUl0ZW08VD5bXSwgZmlsdGVySW5mbzogU2RUYWJsZUZpbHRlclJlcXVlc3QpID0+IHtcclxuICAgIGNvbnN0IHsgY29sdW1ucyB9ID0gdGhpcy5ncmlkT3B0aW9uO1xyXG4gICAgY29uc3QgeyByYXdDb2x1bW5GaWx0ZXIsIG9yZGVyQnksIG9yZGVyRGlyZWN0aW9uLCBwYWdlU2l6ZSwgcGFnZU51bWJlciB9ID0gZmlsdGVySW5mbztcclxuICAgIGNvbnN0IGl0ZW1zID0gbG9jYWxJdGVtcy5maWx0ZXIodGFibGVJdGVtID0+IHtcclxuICAgICAgY29uc3QgaXRlbSA9IHRhYmxlSXRlbS5kYXRhO1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgY29uc3QgeyBmaWVsZCwgdHlwZSB9ID0gY29sdW1uO1xyXG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlOiBzdHJpbmcgPSAocmF3Q29sdW1uRmlsdGVyW2ZpZWxkXSB8fCAnJykudG9TdHJpbmcoKS50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBjb25zdCBjb2x1bW5WYWx1ZTogc3RyaW5nID0gKGl0ZW1bZmllbGRdIHx8ICcnKS50b1N0cmluZygpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIGlmIChmaWx0ZXJWYWx1ZSkge1xyXG4gICAgICAgICAgaWYgKCFjb2x1bW5WYWx1ZSAmJiB0eXBlICE9PSAnZGF0ZXRpbWUnICYmIHR5cGUgIT09ICdkYXRlJyAmJiB0eXBlICE9PSAndGltZScpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW5WYWx1ZS5pbmRleE9mKGZpbHRlclZhbHVlKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3ZhbHVlcycgfHwgdHlwZSA9PT0gJ2xhenktdmFsdWVzJykge1xyXG4gICAgICAgICAgICBpZiAoY29sdW1uVmFsdWUgIT09IGZpbHRlclZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZWYWx1ZSA9ICtmaWx0ZXJWYWx1ZS5yZXBsYWNlKCc+PScsICcnKS5yZXBsYWNlKCc8PScsICcnKS5yZXBsYWNlKCc+JywgJycpLnJlcGxhY2UoJzwnLCAnJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNWYWx1ZSA9ICtjb2x1bW5WYWx1ZTtcclxuICAgICAgICAgICAgaWYgKGZWYWx1ZSB8fCBmVmFsdWUgPT09IDApIHtcclxuICAgICAgICAgICAgICBpZiAoIWNWYWx1ZSAmJiBjVmFsdWUgIT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJz49JykgPiAtMSAmJiBjVmFsdWUgPCBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJzw9JykgPiAtMSAmJiBjVmFsdWUgPiBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJzwnKSA+IC0xICYmIGNWYWx1ZSA+PSBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclZhbHVlLmluZGV4T2YoJz4nKSA+IC0xICYmIGNWYWx1ZSA8PSBmVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNWYWx1ZSAhPT0gZlZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdib29sJykge1xyXG4gICAgICAgICAgICBpZiAoZmlsdGVyVmFsdWUgPT09ICcxJyAmJiBjb2x1bW5WYWx1ZSAhPT0gJzEnICYmIGNvbHVtblZhbHVlICE9PSAndHJ1ZScpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyVmFsdWUgPT09ICcwJyAmJiBjb2x1bW5WYWx1ZSAhPT0gJzAnICYmIGNvbHVtblZhbHVlICE9PSAnZmFsc2UnKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRldGltZScgfHwgdHlwZSA9PT0gJ2RhdGUnIHx8IHR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgICAgICBjb25zdCBmcm9tID0gcmF3Q29sdW1uRmlsdGVyW2ZpZWxkXT8uZnJvbSA/PyByYXdDb2x1bW5GaWx0ZXJbZmllbGRdO1xyXG4gICAgICAgICAgICBjb25zdCB0byA9IHJhd0NvbHVtbkZpbHRlcltmaWVsZF0/LnRvID8/IHJhd0NvbHVtbkZpbHRlcltmaWVsZF07XHJcbiAgICAgICAgICAgIGNvbnN0IGZyb21EYXRlID0gRGF0ZS5iZWdpbihmcm9tKTtcclxuICAgICAgICAgICAgY29uc3QgdG9EYXRlID0gRGF0ZS5lbmQodG8pO1xyXG4gICAgICAgICAgICBpZiAoZnJvbURhdGUgfHwgdG9EYXRlKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFjb2x1bW5WYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgY29uc3QgY29sdW1uVGltZSA9IG5ldyBEYXRlKGNvbHVtblZhbHVlKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgZnJvbURhdGVUaW1lID0gZnJvbURhdGU/LmdldFRpbWUoKSB8fCBudWxsO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHRvRGF0ZVRpbWUgPSB0b0RhdGU/LmdldFRpbWUoKSB8fCBudWxsO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoZnJvbURhdGVUaW1lICYmIGZyb21EYXRlVGltZSA+IGNvbHVtblRpbWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHRvRGF0ZVRpbWUgJiYgY29sdW1uVGltZSA+IHRvRGF0ZVRpbWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9KTtcclxuICAgIC8vIFNvcnRcclxuICAgIGlmIChvcmRlckJ5ICYmIG9yZGVyRGlyZWN0aW9uKSB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnMuZmluZChlID0+IGUuZmllbGQgPT09IG9yZGVyQnkpO1xyXG4gICAgICBpZiAoY29sdW1uKSB7XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCBmaWVsZCB9ID0gY29sdW1uO1xyXG4gICAgICAgIGl0ZW1zLnNvcnQoKHRhYmxlSXRlbUN1cnJlbnQsIHRhYmxlSXRlbU5leHQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGRhdGEgPSB0YWJsZUl0ZW1DdXJyZW50LmRhdGE7XHJcbiAgICAgICAgICBjb25zdCBuZXh0ID0gdGFibGVJdGVtTmV4dC5kYXRhO1xyXG4gICAgICAgICAgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoZGF0YVtmaWVsZF0gfHwgMCkgLSAobmV4dFtmaWVsZF0gfHwgMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodHlwZSA9PT0gJ2RhdGUnIHx8IHR5cGUgPT09ICdkYXRldGltZScgfHwgdHlwZSA9PT0gJ3RpbWUnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGQxID0gbmV3IERhdGUoZGF0YVtmaWVsZF0gfHwgJycpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgY29uc3QgZDIgPSBuZXcgRGF0ZShkYXRhW2ZpZWxkXSB8fCAnJykuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICByZXR1cm4gZDEgLSBkMjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IHMxID0gKGRhdGFbZmllbGRdIHx8ICcnKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgY29uc3QgczIgPSAobmV4dFtmaWVsZF0gfHwgJycpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICBpZiAoczEgPiBzMikge1xyXG4gICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChzMSA8IHMyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChvcmRlckRpcmVjdGlvbiA9PT0gJ2Rlc2MnKSB7XHJcbiAgICAgICAgICBpdGVtcy5yZXZlcnNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpdGVtczogaXRlbXMuZmlsdGVyKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBpbmRleCA+PSBwYWdlTnVtYmVyICogcGFnZVNpemUgJiYgaW5kZXggPCAocGFnZU51bWJlciArIDEpICogcGFnZVNpemU7XHJcbiAgICAgIH0pLFxyXG4gICAgICB0b3RhbDogaXRlbXMubGVuZ3RoLFxyXG4gICAgfTtcclxuICB9O1xyXG5cclxuICAjZ2V0RmlsdGVyID0gKCk6IFNkVGFibGVGaWx0ZXJSZXF1ZXN0ID0+IHtcclxuICAgIGNvbnN0IHsgY29sdW1uT3BlcmF0b3IsIGNvbHVtbkZpbHRlciwgZXh0ZXJuYWxGaWx0ZXIsIGZpbHRlckRlZiB9ID0gdGhpcy5maWx0ZXJSZWdpc3Rlci52YWx1ZS5nZXQoKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGNvbHVtbk9wZXJhdG9yOiBjb2x1bW5PcGVyYXRvciB8fCB7fSxcclxuICAgICAgcmF3Q29sdW1uRmlsdGVyOiBjb2x1bW5GaWx0ZXIgfHwge30sXHJcbiAgICAgIHJhd0V4dGVybmFsRmlsdGVyOiBleHRlcm5hbEZpbHRlciB8fCB7fSxcclxuICAgICAgcmF3RmlsdGVyRGVmOiBmaWx0ZXJEZWYgfHwge30sXHJcbiAgICAgIG9yZGVyQnk6IHRoaXMuI3NvcnQ/LmFjdGl2ZSB8fCAnJyxcclxuICAgICAgb3JkZXJEaXJlY3Rpb246IHRoaXMuI3NvcnQ/LmRpcmVjdGlvbiB8fCAnJyxcclxuICAgICAgcGFnZU51bWJlcjogdGhpcy4jcGFnaW5hdG9yPy5wYWdlSW5kZXggfHwgMCxcclxuICAgICAgcGFnZVNpemU6IHRoaXMuI3BhZ2luYXRvcj8ucGFnZVNpemUgfHwgdGhpcy5ncmlkT3B0aW9uPy5wYWdpbmF0ZT8ucGFnZVNpemUgfHwgNTAsXHJcbiAgICB9O1xyXG4gIH07XHJcblxyXG4gICNsb2FkID0gYXN5bmMgKGZpbHRlclJlcTogU2RUYWJsZUZpbHRlclJlcXVlc3QsIGZvcmNlOiBib29sZWFuID0gdHJ1ZSkgPT4ge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi50eXBlID09PSAnc2VydmVyJykge1xyXG4gICAgICBjb25zdCB7IGl0ZW1zIH0gPSB0aGlzLmdyaWRPcHRpb247XHJcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBpdGVtcyhmaWx0ZXJSZXEpLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKCdDw7MgbOG7l2kgeOG6o3kgcmEnKTtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGl0ZW1zOiBbXSBhcyBUW10sXHJcbiAgICAgICAgICB0b3RhbDogMCxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBpdGVtczogYXdhaXQgdGhpcy4jZm9ybWF0KGRhdGE/Lml0ZW1zLCB0aGlzLmdyaWRPcHRpb24uY29sdW1ucyksXHJcbiAgICAgICAgdG90YWw6IGRhdGE/LnRvdGFsIHx8IDAsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBpZiAoZm9yY2UpIHtcclxuICAgICAgY29uc3QgeyBpdGVtcyB9ID0gdGhpcy5ncmlkT3B0aW9uO1xyXG4gICAgICBjb25zdCByZXN1bHRzID0gaXRlbXMoKTtcclxuICAgICAgbGV0IGRhdGE6IFRbXSA9IFtdO1xyXG4gICAgICBpZiAocmVzdWx0cyBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICBkYXRhID0gYXdhaXQgcmVzdWx0cy5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKCdDw7MgbOG7l2kgeOG6o3kgcmEnKTtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkYXRhID0gcmVzdWx0cztcclxuICAgICAgfVxyXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcoJ0Thu68gbGnhu4d1IGtow7RuZyBwaOG6o2kgbMOgIG3hu5l0IG3huqNuZycpO1xyXG4gICAgICAgIGRhdGEgPSBbXTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLiNsb2NhbEl0ZW1zID0gYXdhaXQgdGhpcy4jZm9ybWF0KGRhdGEsIHRoaXMuZ3JpZE9wdGlvbi5jb2x1bW5zKTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICByZXR1cm4gdGhpcy4jZmlsdGVyTG9jYWwodGhpcy4jbG9jYWxJdGVtcywgZmlsdGVyUmVxKTtcclxuICB9O1xyXG5cclxuICAjcmVuZGVyID0gYXN5bmMgKGFyZ3M6IHsgaXRlbXM6IFNkVGFibGVJdGVtPFQ+W107IHRvdGFsOiBudW1iZXIgfSkgPT4ge1xyXG4gICAgdGhpcy5zZFNjcm9sbD8uc2Nyb2xsVG9wKCk7XHJcbiAgICB0aGlzLml0ZW1zID0gYXJncz8uaXRlbXMgfHwgW107XHJcbiAgICB0aGlzLnRvdGFsID0gYXJncz8udG90YWwgfHwgMDtcclxuICAgIGF3YWl0IHRoaXMuZ3JpZE9wdGlvbj8ucmVsb2FkPy5vblJlbG9hZD8uKHRoaXMuaXRlbXMpO1xyXG4gICAgdGhpcy5pc1NlbGVjdEFsbCA9IHRoaXMuaXRlbXMuZXZlcnkoZSA9PiBlLm1ldGEuc2VsZWN0b3IuaXNTZWxlY3RlZCk7XHJcbiAgICB0aGlzLiN1cGRhdGVTZWxlY3RlZEl0ZW1zKCk7XHJcbiAgfTtcclxuXHJcbiAgcmVsb2FkID0gYXN5bmMgKGZvcmNlOiBib29sZWFuID0gdHJ1ZSkgPT4ge1xyXG4gICAgdGhpcy50YWJsZUZpbHRlcj8udXBkYXRlRmlsdGVyPy4oKTtcclxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLiNsb2FkKHRoaXMuI2dldEZpbHRlcigpLCBmb3JjZSk7XHJcbiAgICB0aGlzLiNyZW5kZXIoZGF0YSk7XHJcbiAgfTtcclxuXHJcbiAgI2V4cG9ydGVkSXRlbXMgPSBhc3luYyAocGFnZU51bWJlcjogbnVtYmVyID0gMCwgcGFnZVNpemU6IG51bWJlciA9IDEwMDAwKSA9PiB7XHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8uaXRlbXMpIHtcclxuICAgICAgLy8gY29uc3QgZXhwb3J0ZWRJdGVtcyA9IHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQ/Lml0ZW1zKHRoaXMuI2ZpbHRlckV4cG9ydEluZm8ocGFnZU51bWJlciwgcGFnZVNpemUpKTtcclxuICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQ/Lml0ZW1zKHRoaXMuI2ZpbHRlckV4cG9ydEluZm8ocGFnZU51bWJlciwgcGFnZVNpemUpKTtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGlzT2JzZXJ2YWJsZTxhbnlbXT4ocmVzdWx0KSkge1xyXG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC50b1Byb21pc2UoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXNPYnNlcnZhYmxlPHsgaXRlbXM6IGFueVtdOyB0b3RhbDogbnVtYmVyIH0+KHJlc3VsdCkpIHtcclxuICAgICAgICByZXN1bHQgPSByZXN1bHQudG9Qcm9taXNlKCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGF3YWl0IHJlc3VsdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGZpbHRlckluZm8gPSB0aGlzLiNmaWx0ZXJFeHBvcnRJbmZvKHBhZ2VOdW1iZXIsIHBhZ2VTaXplKTtcclxuICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi50eXBlID09PSAnc2VydmVyJykge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmdyaWRPcHRpb24uaXRlbXMoZmlsdGVySW5mbyk7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlc3VsdDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgZXhwb3J0ZWRJdGVtczogYW55W10gPSBbXTtcclxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZ3JpZE9wdGlvbi5pdGVtcyA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHRoaXMuZ3JpZE9wdGlvbi5pdGVtcygpO1xyXG4gICAgICAgICAgaWYgKHJlc3VsdHMgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICAgIGV4cG9ydGVkSXRlbXMgPSBhd2FpdCByZXN1bHRzO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZXhwb3J0ZWRJdGVtcyA9IHJlc3VsdHM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGV4cG9ydGVkSXRlbXMgPSB0aGlzLmdyaWRPcHRpb24uaXRlbXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLiNmaWx0ZXJMb2NhbChleHBvcnRlZEl0ZW1zLCBmaWx0ZXJJbmZvKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gICNhbGxDb2x1bW5zID0gKCk6IFNkVGFibGVDb2x1bW5bXSA9PiB7XHJcbiAgICBjb25zdCBjb2x1bW5zOiBTZFRhYmxlQ29sdW1uW10gPSBbXTtcclxuICAgIHRoaXMuZ3JpZE9wdGlvbi5jb2x1bW5zXHJcbiAgICAgIC5maWx0ZXIoZSA9PiAhZS5leHBvcnQ/LmRpc2FibGVkKVxyXG4gICAgICAuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2NoaWxkcmVuJykge1xyXG4gICAgICAgICAgY29sdW1uLmNoaWxkcmVuXHJcbiAgICAgICAgICAgID8uZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZClcclxuICAgICAgICAgICAgLmZvckVhY2goY2hpbGRDb2x1bW4gPT4ge1xyXG4gICAgICAgICAgICAgIGNvbHVtbnMucHVzaChjaGlsZENvbHVtbik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb2x1bW5zLnB1c2goY29sdW1uKTtcclxuICAgICAgfSk7XHJcbiAgICByZXR1cm4gY29sdW1ucztcclxuICB9O1xyXG5cclxuICAjYWxsRXhwb3J0ZWRDb2x1bW5zID0gKCk6IFNkVGFibGVPcHRpb25FeHBvcnRDb2x1bW5bXSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8uY29sdW1ucz8uZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZCkgfHwgW107XHJcbiAgfTtcclxuXHJcbiAgI29uRXhwb3J0ID0gYXN5bmMgKGlzQ1NWPzogYm9vbGVhbikgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGNvbHVtbnMgPSB0aGlzLiNnZXRFeHBvcnRDb2x1bW5zKCk7XHJcbiAgICAgIGNvbnN0IHBhZ2VTaXplID0gdGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/Lm1heEl0ZW1zUGVyUmVxdWVzdCB8fCAxMDAwO1xyXG4gICAgICBjb25zdCBiYXRjaCA9IHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5iYXRjaCB8fCAxO1xyXG4gICAgICBsZXQgdG90YWwgPSB0aGlzLnRvdGFsO1xyXG4gICAgICBsZXQgcGFnZU51bWJlciA9IDA7XHJcbiAgICAgIGxldCBleHBvcnRJdGVtcyA9IFtdO1xyXG4gICAgICB0aGlzLmlzRXhwb3J0aW5nID0gdHJ1ZTtcclxuICAgICAgY29uc3QgaXRlbXM6IGFueVtdID0gW107XHJcbiAgICAgIGxldCBwcm9taXNlczogUHJvbWlzZTxcclxuICAgICAgICB8IGFueVtdXHJcbiAgICAgICAgfCB7XHJcbiAgICAgICAgICBpdGVtczogYW55W107XHJcbiAgICAgICAgICB0b3RhbDogbnVtYmVyO1xyXG4gICAgICAgIH1cclxuICAgICAgPltdID0gW107XHJcbiAgICAgIGNvbnN0IGhhbmRsZURhdGEgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcclxuICAgICAgICBwcm9taXNlcyA9IFtdO1xyXG4gICAgICAgIGV4cG9ydEl0ZW1zID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xyXG4gICAgICAgICAgaWYgKCdpdGVtcycgaW4gcmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGV4cG9ydEl0ZW1zID0gWy4uLmV4cG9ydEl0ZW1zLCAuLi5yZXN1bHQuaXRlbXNdO1xyXG4gICAgICAgICAgICB0b3RhbCA9IHJlc3VsdC50b3RhbDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGV4cG9ydEl0ZW1zID0gWy4uLmV4cG9ydEl0ZW1zLCAuLi5yZXN1bHRdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8ubWFwcGluZykge1xyXG4gICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQubWFwcGluZyhleHBvcnRJdGVtcyk7XHJcbiAgICAgICAgICBpZiAocmVzdWx0cyBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgICAgZXhwb3J0SXRlbXMgPSBhd2FpdCByZXN1bHRzO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZXhwb3J0SXRlbXMgPSByZXN1bHRzO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB0b3RhbFBhZ2UgPSB0b3RhbCAvIHBhZ2VTaXplO1xyXG4gICAgICAgIGNvbnN0IHBlcmNlbnQgPSBNYXRoLnJvdW5kKCgocGFnZU51bWJlciAtIDEpICogMTAwLjApIC8gdG90YWxQYWdlKTtcclxuICAgICAgICB0aGlzLmV4cG9ydFRpdGxlID0gYEV4cG9ydGluZy4uLiR7cGVyY2VudH0lYDtcclxuICAgICAgICBjb25zdCBhbGxDb2x1bW5zID0gdGhpcy4jYWxsQ29sdW1ucygpO1xyXG4gICAgICAgIGNvbnN0IGFsbEV4cG9ydGVkQ29sdW1ucyA9IHRoaXMuI2FsbEV4cG9ydGVkQ29sdW1ucygpO1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBleHBvcnRJdGVtcykge1xyXG4gICAgICAgICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcclxuICAgICAgICAgIGNvbnN0IGhhbmRsZSA9IGFzeW5jIChleHBvcnRDb2x1bW46IFNkRXhwb3J0Q29sdW1uKSA9PiB7XHJcbiAgICAgICAgICAgIG9ialtleHBvcnRDb2x1bW4uZmllbGRdID0gaXRlbVtleHBvcnRDb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICBjb25zdCBjb2x1bW4gPSBhbGxDb2x1bW5zLmZpbmQoZSA9PiBlLmZpZWxkID09PSBleHBvcnRDb2x1bW4uZmllbGQpO1xyXG4gICAgICAgICAgICBjb25zdCBleHBvcnRlZENvbHVtbiA9IGFsbEV4cG9ydGVkQ29sdW1ucy5maW5kKGUgPT4gZS5maWVsZCA9PT0gZXhwb3J0Q29sdW1uLmZpZWxkKTtcclxuICAgICAgICAgICAgaWYgKGV4cG9ydGVkQ29sdW1uPy50cmFuc2Zvcm0pIHtcclxuICAgICAgICAgICAgICBvYmpbZXhwb3J0ZWRDb2x1bW4uZmllbGRdID0gZXhwb3J0ZWRDb2x1bW4udHJhbnNmb3JtKGl0ZW1bZXhwb3J0ZWRDb2x1bW4uZmllbGRdLCBpdGVtKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFjb2x1bW4pIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnY2hpbGRyZW4nKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uPy5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkQ29sdW1uID0+IGhhbmRsZShjaGlsZENvbHVtbikpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIWNvbHVtbnMuc29tZShlID0+IGUuZmllbGQgPT09IGNvbHVtbi5maWVsZCkpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNvbHVtbi50cmFuc2Zvcm0pIHtcclxuICAgICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm0gPSBjb2x1bW4udHJhbnNmb3JtKGl0ZW1bY29sdW1uLmZpZWxkXSwgaXRlbSwge1xyXG4gICAgICAgICAgICAgICAgaXNFeHBvcnQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybSBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gYXdhaXQgdHJhbnNmb3JtO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IHRyYW5zZm9ybTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBvYmpbY29sdW1uLmZpZWxkXSA/PyAnJztcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtW2NvbHVtbi5maWVsZF0gPT09IHVuZGVmaW5lZCB8fCBpdGVtW2NvbHVtbi5maWVsZF0gPT09IG51bGwgfHwgaXRlbVtjb2x1bW4uZmllbGRdID09PSAnJykge1xyXG4gICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gJyc7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdzdHJpbmcnIHx8IGNvbHVtbi50eXBlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICAgIC8vIE7hur91IGNlbGwgbMOgIHN0cmluZyBob+G6t2MgbnVtYmVyIHRow6wgZ8OhbiBi4bqxbmcgY2jDrW5oIG7Ds1xyXG4gICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gaXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnYm9vbCcpIHtcclxuICAgICAgICAgICAgICAvLyBO4bq/dSBsw6AgYm9vbCB0aMOsIGfDoW4gYuG6sW5nIGdpw6EgdHLhu4sgdHJ1ZVZhbHVlIHbDoCBmYWxzZVZhbHVlIChu4bq/dSBjw7MpLCBt4bq3YyDEkeG7i25oIGzDoCBUUlVFL0ZBTFNFXHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW1bY29sdW1uLmZpZWxkXSkge1xyXG4gICAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBjb2x1bW4ub3B0aW9uPy5kaXNwbGF5T25UcnVlIHx8ICdUcnVlJztcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9ialtjb2x1bW4uZmllbGRdICE9PSB1bmRlZmluZWQgJiYgb2JqW2NvbHVtbi5maWVsZF0gIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gY29sdW1uLm9wdGlvbj8uZGlzcGxheU9uRmFsc2UgfHwgJ0ZhbHNlJztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRlID0gaXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICAgIC8vIE7hur91IGzDoCBkYXRlIHRow6wgY29udmVydCB0aGVvIMSRw7puZyBmb3JtYXRcclxuICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IERhdGUudG9Gb3JtYXQoZGF0ZSwgJ2RkL01NL3l5eXknKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2RhdGV0aW1lJykge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRlID0gaXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICAgIC8vIE7hur91IGzDoCBkYXRldGltZSB0aMOsIGNvbnZlcnQgdGhlbyDEkcO6bmcgZm9ybWF0XHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBEYXRlLnRvRm9ybWF0KGRhdGUsICdkZC9NTS95eXl5IEhIOm1tJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRlID0gaXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICAgIC8vIE7hur91IGzDoCB0aW1lIHRow6wgY29udmVydCB0aGVvIMSRw7puZyBmb3JtYXRcclxuICAgICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IERhdGUudG9Gb3JtYXQoZGF0ZSwgJ0hIOm1tJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICd2YWx1ZXMnKSB7XHJcbiAgICAgICAgICAgICAgLy8gTuG6v3UgbMOgIHZhbHVlcyB0aMOsIGzhuqV5IGdpw6EgdHLhu4sgY+G7p2EgdmFsdWUgxJHGsOG7o2MgY2jhu41uXHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSB0aGlzLiNjYWNoZU9ialZhbHVlc1tjb2x1bW4uZmllbGRdPy5baXRlbVtjb2x1bW4uZmllbGRdXSB8fCBpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICAvLyB0aGlzLmdyaWRPcHRpb24uY29sdW1ucy5mb3JFYWNoKGhhbmRsZSk7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGV4cG9ydENvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGhhbmRsZShleHBvcnRDb2x1bW4pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaXRlbXMucHVzaChvYmopO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgd2hpbGUgKHBhZ2VOdW1iZXIgKiBwYWdlU2l6ZSA8IHRvdGFsKSB7XHJcbiAgICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLiNleHBvcnRlZEl0ZW1zKHBhZ2VOdW1iZXIsIHBhZ2VTaXplKSk7XHJcbiAgICAgICAgcGFnZU51bWJlcisrO1xyXG4gICAgICAgIGlmIChwcm9taXNlcy5sZW5ndGggPCBiYXRjaCkge1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF3YWl0IGhhbmRsZURhdGEoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocHJvbWlzZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGF3YWl0IGhhbmRsZURhdGEoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXNDU1YpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0Q1NWKHtcclxuICAgICAgICAgIGNvbHVtbnMsXHJcbiAgICAgICAgICBpdGVtcyxcclxuICAgICAgICAgIGZpbGVOYW1lOiB0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8uZmlsZU5hbWUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHNoZWV0czoge1xyXG4gICAgICAgIG5hbWU6IHN0cmluZztcclxuICAgICAgICBpdGVtczogYW55W107XHJcbiAgICAgICAgZmllbGRzOiBzdHJpbmdbXTtcclxuICAgICAgfVtdID0gW107XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5zaGVldHMpKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBzaGVldCBvZiB0aGlzLmdyaWRPcHRpb24uZXhwb3J0LnNoZWV0cykge1xyXG4gICAgICAgICAgaWYgKHNoZWV0Lm5hbWUgJiYgc2hlZXQuaXRlbXMgJiYgc2hlZXQuZmllbGRzKSB7XHJcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNoZWV0Lml0ZW1zKSkge1xyXG4gICAgICAgICAgICAgIHNoZWV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IHNoZWV0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICBpdGVtczogc2hlZXQuaXRlbXMsXHJcbiAgICAgICAgICAgICAgICBmaWVsZHM6IHNoZWV0LmZpZWxkcyxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBzaGVldHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBzaGVldC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgaXRlbXM6IGF3YWl0IHNoZWV0Lml0ZW1zKCksXHJcbiAgICAgICAgICAgICAgICBmaWVsZHM6IHNoZWV0LmZpZWxkcyxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBhd2FpdCB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0KHtcclxuICAgICAgICBjb2x1bW5zLFxyXG4gICAgICAgIGl0ZW1zLFxyXG4gICAgICAgIGZpbGVOYW1lOiB0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8uZmlsZU5hbWUsXHJcbiAgICAgICAgc2hlZXRzLFxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgdGhpcy5pc0V4cG9ydGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmV4cG9ydFRpdGxlID0gYEV4cG9ydGA7XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICAjZ2V0RXhwb3J0Q29sdW1ucyA9ICgpID0+IHtcclxuICAgIGNvbnN0IGNvbHVtbnMgPSBbXHJcbiAgICAgIC4uLnRoaXMuZ3JpZE9wdGlvbi5jb2x1bW5zLmZpbHRlcihlID0+ICFlLmV4cG9ydD8uZGlzYWJsZWQpLFxyXG4gICAgICAuLi4odGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8uY29sdW1ucz8uZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZCkgfHwgW10pLFxyXG4gICAgXTtcclxuICAgIHJldHVybiBjb2x1bW5zO1xyXG4gIH07XHJcblxyXG4gIGV4cG9ydEV4Y2VsID0gKCkgPT4ge1xyXG4gICAgdGhpcy4jb25FeHBvcnQoKTtcclxuICB9O1xyXG5cclxuICBleHBvcnRDU1YgPSAoKSA9PiB7XHJcbiAgICB0aGlzLiNvbkV4cG9ydCh0cnVlKTtcclxuICB9O1xyXG5cclxuICBvbkZpbHRlckNoYW5nZSA9ICgpID0+IHtcclxuICAgIHRoaXMudGFibGVGaWx0ZXI/LnVwZGF0ZUZpbHRlcj8uKCk7XHJcbiAgICB0aGlzLmZpbHRlclJlZ2lzdGVyLnZhbHVlLnNldCh7XHJcbiAgICAgIGNvbHVtbk9wZXJhdG9yOiB0aGlzLmNvbHVtbk9wZXJhdG9yIHx8IHt9LFxyXG4gICAgICBjb2x1bW5GaWx0ZXI6IHRoaXMuY29sdW1uRmlsdGVyLFxyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgb25FeHBhbmQgPSBhc3luYyAocm93RGF0YTogU2RUYWJsZUl0ZW08VD4pID0+IHtcclxuICAgIGlmICh0aGlzLmdyaWRPcHRpb24uZXhwYW5kPy5hbHdheXMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHJvd0RhdGEubWV0YS5leHBhbmQuaXNFeHBhbmRpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHJvd0RhdGEubWV0YS5leHBhbmQuaXNFeHBhbmRlZCkge1xyXG4gICAgICByb3dEYXRhLm1ldGEuZXhwYW5kLmlzRXhwYW5kZWQgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZ3JpZE9wdGlvbj8uZXhwYW5kPy5vbkV4cGFuZD8uKHJvd0RhdGEuZGF0YSk7XHJcbiAgICBpZiAoIXRoaXMuZ3JpZE9wdGlvbi5leHBhbmQ/Lm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IChpdGVtLm1ldGEuZXhwYW5kLmlzRXhwYW5kaW5nID0gaXRlbS5tZXRhLmV4cGFuZC5pc0V4cGFuZGVkID0gZmFsc2UpKTtcclxuICAgIH1cclxuICAgIGlmIChkYXRhIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICByb3dEYXRhLm1ldGEuZXhwYW5kLmlzRXhwYW5kaW5nID0gdHJ1ZTtcclxuICAgICAgZGF0YVxyXG4gICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICByb3dEYXRhLm1ldGEuZXhwYW5kLmRhdGEgPSByZXM7XHJcbiAgICAgICAgICByb3dEYXRhLm1ldGEuZXhwYW5kLmlzRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4gKHJvd0RhdGEubWV0YS5leHBhbmQuaXNFeHBhbmRpbmcgPSBmYWxzZSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcm93RGF0YS5tZXRhLmV4cGFuZC5kYXRhID0gZGF0YTtcclxuICAgICAgcm93RGF0YS5tZXRhLmV4cGFuZC5pc0V4cGFuZGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBvblNlbGVjdCA9IChyb3dEYXRhOiBTZFRhYmxlSXRlbTxUPikgPT4ge1xyXG4gICAgaWYgKHJvd0RhdGEubWV0YS5ncm91cD8uaXRlbXM/Lmxlbmd0aCkge1xyXG4gICAgICByb3dEYXRhLm1ldGEuZ3JvdXAuaXRlbXMuZm9yRWFjaChlID0+IChlLm1ldGEuc2VsZWN0b3IuaXNTZWxlY3RlZCA9IHJvd0RhdGEubWV0YS5zZWxlY3Rvci5pc1NlbGVjdGVkKSk7XHJcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbi5zZWxlY3Rvcj8ub25TZWxlY3Q/LihcclxuICAgICAgICByb3dEYXRhLmRhdGEsXHJcbiAgICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoZSA9PiBlLm1ldGEuc2VsZWN0b3IuaXNTZWxlY3RlZCkubWFwKGUgPT4gZS5kYXRhKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmlzU2VsZWN0QWxsID0gdGhpcy5pdGVtcy5ldmVyeShlID0+IGUubWV0YS5zZWxlY3Rvci5pc1NlbGVjdGVkKTtcclxuICAgICAgdGhpcy4jdXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi5zZWxlY3Rvcj8uc2luZ2xlKSB7XHJcbiAgICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoZSA9PiBlICE9PSByb3dEYXRhKS5mb3JFYWNoKGUgPT4gKGUubWV0YS5zZWxlY3Rvci5pc1NlbGVjdGVkID0gZmFsc2UpKTtcclxuICAgICAgICB0aGlzLiN1cGRhdGVTZWxlY3RlZEl0ZW1zKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbi5zZWxlY3Rvcj8ub25TZWxlY3Q/LihcclxuICAgICAgICByb3dEYXRhLmRhdGEsXHJcbiAgICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoZSA9PiBlLm1ldGEuc2VsZWN0b3IuaXNTZWxlY3RlZCkubWFwKGUgPT4gZS5kYXRhKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmlzU2VsZWN0QWxsID0gdGhpcy5pdGVtcy5ldmVyeShlID0+IGUubWV0YS5zZWxlY3Rvci5pc1NlbGVjdGVkKTtcclxuICAgICAgdGhpcy4jdXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIG9uU2VsZWN0QWxsID0gKCkgPT4ge1xyXG4gICAgdGhpcy5pdGVtcz8uZm9yRWFjaChlID0+IHtcclxuICAgICAgaWYgKGUubWV0YS5zZWxlY3Rvci5zZWxlY3RhYmxlICYmICghdGhpcy5ncmlkT3B0aW9uPy5zZWxlY3Rvcj8uYWN0aW9ucz8ubGVuZ3RoIHx8IGUubWV0YS5zZWxlY3Rvci5hY3Rpb25zPy5sZW5ndGgpKSB7XHJcbiAgICAgICAgZS5tZXRhLnNlbGVjdG9yLmlzU2VsZWN0ZWQgPSB0aGlzLmlzU2VsZWN0QWxsO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZ3JpZE9wdGlvbi5zZWxlY3Rvcj8ub25TZWxlY3RBbGw/Lih0aGlzLml0ZW1zLmZpbHRlcihlID0+IGUubWV0YS5zZWxlY3Rvci5pc1NlbGVjdGVkKS5tYXAoZSA9PiBlLmRhdGEpKTtcclxuICAgIHRoaXMuI3VwZGF0ZVNlbGVjdGVkSXRlbXMoKTtcclxuICB9O1xyXG5cclxuICBvbkNsZWFyU2VsZWN0aW9uID0gKGl0ZW1zPzogU2RUYWJsZUl0ZW08VD5bXSkgPT4ge1xyXG4gICAgaXRlbXMgPSBpdGVtcyB8fCB0aGlzLml0ZW1zO1xyXG4gICAgdGhpcy5pc1NlbGVjdEFsbCA9IGZhbHNlO1xyXG4gICAgaXRlbXM/LmZvckVhY2goZSA9PiAoZS5tZXRhLnNlbGVjdG9yLmlzU2VsZWN0ZWQgPSBmYWxzZSkpO1xyXG4gICAgdGhpcy4jdXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xyXG4gIH07XHJcblxyXG4gICN1cGRhdGVTZWxlY3RlZEl0ZW1zID0gKCkgPT4ge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLm1ldGEuc2VsZWN0b3IuaXNTZWxlY3RlZCkubWFwKGl0ZW0gPT4gaXRlbS5kYXRhKTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9O1xyXG5cclxuICBjbGVhckZpbHRlciA9ICgpID0+IHtcclxuICAgIHRoaXMuZmlsdGVyUmVnaXN0ZXIudmFsdWUucmVtb3ZlKCk7XHJcbiAgfTtcclxuXHJcbiAgc2V0RmlsdGVyID0gKGFyZ3M6IHsgY29sdW1uRmlsdGVyPzogUmVjb3JkPHN0cmluZywgYW55PjsgZXh0ZXJuYWxGaWx0ZXI/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+OyBmaWx0ZXJEZWY/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH0pID0+IHtcclxuICAgIGNvbnN0IHsgY29sdW1uRmlsdGVyLCBleHRlcm5hbEZpbHRlciwgZmlsdGVyRGVmIH0gPSBhcmdzIHx8IHt9O1xyXG4gICAgaWYgKGNvbHVtbkZpbHRlcikge1xyXG4gICAgICB0aGlzLmNvbHVtbkZpbHRlciA9IGNvbHVtbkZpbHRlcjtcclxuICAgIH1cclxuICAgIHRoaXMuZmlsdGVyUmVnaXN0ZXIudmFsdWUuc2V0KHtcclxuICAgICAgY29sdW1uRmlsdGVyLFxyXG4gICAgICBleHRlcm5hbEZpbHRlcixcclxuICAgICAgZmlsdGVyRGVmLFxyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgZ2V0IGdyaWRJdGVtcygpOiBUW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbXMubWFwKGl0ZW0gPT4gaXRlbS5kYXRhKTtcclxuICB9XHJcblxyXG4gIGRldGVjdENoYW5nZXMgPSAoKSA9PiB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICNsb2FkVmFsdWVzID0gYXN5bmMgKGNvbHVtbnM6IFNkVGFibGVDb2x1bW5bXSkgPT4ge1xyXG4gICAgY29uc3QgcHJvbWlzZXM6IFByb21pc2U8e1xyXG4gICAgICBrZXk6IHN0cmluZztcclxuICAgICAgdmFsdWVGaWVsZDogc3RyaW5nO1xyXG4gICAgICBkaXNwbGF5RmllbGQ6IHN0cmluZztcclxuICAgICAgZGF0YTogYW55W107XHJcbiAgICB9PltdID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ3ZhbHVlcycgJiYgIXRoaXMuY2FjaGVWYWx1ZXNbY29sdW1uLmZpZWxkXSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgY29sdW1uLm9wdGlvbi5pdGVtcyA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgcHJvbWlzZXMucHVzaChcclxuICAgICAgICAgICAgY29sdW1uLm9wdGlvblxyXG4gICAgICAgICAgICAgIC5pdGVtcygpXHJcbiAgICAgICAgICAgICAgLnRoZW4oZGF0YSA9PiAoe1xyXG4gICAgICAgICAgICAgICAga2V5OiBjb2x1bW4uZmllbGQsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZUZpZWxkOiBjb2x1bW4ub3B0aW9uLnZhbHVlRmllbGQsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6IGNvbHVtbi5vcHRpb24uZGlzcGxheUZpZWxkLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEgOiBbXSxcclxuICAgICAgICAgICAgICB9KSlcclxuICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgIGtleTogY29sdW1uLmZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZUZpZWxkOiBjb2x1bW4ub3B0aW9uLnZhbHVlRmllbGQsXHJcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogY29sdW1uLm9wdGlvbi5kaXNwbGF5RmllbGQsXHJcbiAgICAgICAgICAgICAgICAgIGRhdGE6IFtdLFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jYWNoZVZhbHVlc1tjb2x1bW4uZmllbGRdID0gY29sdW1uLm9wdGlvbi5pdGVtcy5tYXAoZSA9PiAoe1xyXG4gICAgICAgICAgICBbY29sdW1uLm9wdGlvbi52YWx1ZUZpZWxkXTogZT8uW2NvbHVtbi5vcHRpb24udmFsdWVGaWVsZF0sXHJcbiAgICAgICAgICAgIFtjb2x1bW4ub3B0aW9uLmRpc3BsYXlGaWVsZF06IGU/Lltjb2x1bW4ub3B0aW9uLmRpc3BsYXlGaWVsZF0sXHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICB0aGlzLiNjYWNoZU9ialZhbHVlc1tjb2x1bW4uZmllbGRdID0gQXJyYXkudG9PYmplY3QodGhpcy5jYWNoZVZhbHVlc1tjb2x1bW4uZmllbGRdLCBjb2x1bW4ub3B0aW9uLnZhbHVlRmllbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHByb21pc2VzLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xyXG4gICAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiByZXN1bHRzKSB7XHJcbiAgICAgICAgdGhpcy5jYWNoZVZhbHVlc1tyZXN1bHQua2V5XSA9IHJlc3VsdC5kYXRhLm1hcChlID0+ICh7XHJcbiAgICAgICAgICBbcmVzdWx0LnZhbHVlRmllbGRdOiBlPy5bcmVzdWx0LnZhbHVlRmllbGRdLFxyXG4gICAgICAgICAgW3Jlc3VsdC5kaXNwbGF5RmllbGRdOiBlPy5bcmVzdWx0LmRpc3BsYXlGaWVsZF0sXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMuI2NhY2hlT2JqVmFsdWVzW3Jlc3VsdC5rZXldID0gQXJyYXkudG9PYmplY3QodGhpcy5jYWNoZVZhbHVlc1tyZXN1bHQua2V5XSwgcmVzdWx0LnZhbHVlRmllbGQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgI2Zvcm1hdCA9IGFzeW5jIDxUID0gYW55PihyYXdJdGVtczogVFtdLCBjb2x1bW5zOiBTZFRhYmxlQ29sdW1uW10pID0+IHtcclxuICAgIGNvbnN0IGl0ZW1zID0gcmF3SXRlbXMubWFwKE1hcFRvU2RUYWJsZUl0ZW0pO1xyXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICAvLyBDbGlja2FibGVcclxuICAgICAgY29uc3QgeyBmaWVsZCwgY2VsbFN0eWxlLCBjbGljaywgdG9vbHRpcCwgaHRtbFRlbXBsYXRlLCB0cmFuc2Zvcm0gfSA9IGNvbHVtbjtcclxuICAgICAgbGV0IG9ialZhbHVlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICd2YWx1ZXMnKSB7XHJcbiAgICAgICAgb2JqVmFsdWVzID0gdGhpcy4jY2FjaGVPYmpWYWx1ZXNbZmllbGRdIHx8IHt9O1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2xhenktdmFsdWVzJykge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IGl0ZW1zLm1hcChlID0+IGUuZGF0YT8uW2ZpZWxkXSkuZmlsdGVyKHZhbCA9PiAhIXZhbCB8fCB2YWwgPT09IDApLnVuaW9uKCk7XHJcbiAgICAgICAgY29uc3Qge1xyXG4gICAgICAgICAgb3B0aW9uOiB7IHZpZXdzIH0sXHJcbiAgICAgICAgfSA9IGNvbHVtbjtcclxuICAgICAgICBpZiAodmlld3MgJiYgdmFsdWVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgb2JqVmFsdWVzID0gQXJyYXkudG9PYmplY3QoYXdhaXQgdmlld3ModmFsdWVzKS5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgICAgfSksIGNvbHVtbi5vcHRpb24udmFsdWVGaWVsZCkgfHwge307XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xyXG4gICAgICAgIGNvbnN0IHJvd0RhdGEgPSBpdGVtLmRhdGE7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSByb3dEYXRhPy5bZmllbGRdO1xyXG4gICAgICAgIGl0ZW0ubWV0YS5kaXNwbGF5W2ZpZWxkXSA9IHtcclxuICAgICAgICAgIGJhZGdlOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICBjZWxsU3R5bGU6IGNvbHVtbi50eXBlID09PSAnbnVtYmVyJyA/IHsgJ3RleHQtYWxpZ24nOiAncmlnaHQhaW1wb3J0YW50JyB9IDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgZGF0YTogdmFsdWUsXHJcbiAgICAgICAgICBpc0h0bWw6IGZhbHNlLFxyXG4gICAgICAgICAgdG9vbHRpcDogdHlwZW9mIHRvb2x0aXAgPT09ICdmdW5jdGlvbicgPyB0b29sdGlwKHZhbHVlLCByb3dEYXRhKSA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGNsaWNrOiB0eXBlb2YgY2xpY2sgPT09ICdmdW5jdGlvbicgPyAoKSA9PiBjbGljayh2YWx1ZSwgcm93RGF0YSkgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBkaXNwbGF5ID0gaXRlbS5tZXRhLmRpc3BsYXlbZmllbGRdO1xyXG4gICAgICAgIC8vIERpc3BsYXlcclxuICAgICAgICBpZiAodHlwZW9mIGh0bWxUZW1wbGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgZGlzcGxheS5pc0h0bWwgPSB0cnVlO1xyXG4gICAgICAgICAgZGlzcGxheS5kYXRhID0gaHRtbFRlbXBsYXRlKHZhbHVlLCByb3dEYXRhKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0cmFuc2Zvcm0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdHJhbnNmb3JtKHZhbHVlLCByb3dEYXRhKTtcclxuICAgICAgICAgIGlmIChuZXdWYWx1ZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgICAgZGlzcGxheS5kYXRhID0gYXdhaXQgbmV3VmFsdWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkaXNwbGF5LmRhdGEgPSBuZXdWYWx1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnZGF0ZScgfHwgY29sdW1uLnR5cGUgPT09ICdkYXRldGltZScgfHwgY29sdW1uLnR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgICAgICBjb25zdCBkYXRlID0gRGF0ZS50b0Zvcm1hdCh2YWx1ZSwgJ2RkL01NL3l5eXknKTtcclxuICAgICAgICAgICAgbGV0IHRpbWUgPSBEYXRlLnRvRm9ybWF0KHZhbHVlLCAnSEg6bW06c3MnKTtcclxuICAgICAgICAgICAgaWYgKHRpbWU/LmVuZHNXaXRoKCcwMCcpKSB7XHJcbiAgICAgICAgICAgICAgdGltZSA9IERhdGUudG9Gb3JtYXQodmFsdWUsICdISDptbScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2RhdGUnIHx8IGNvbHVtbi50eXBlID09PSAnZGF0ZXRpbWUnKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnZGF0ZXRpbWUnKSB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5LmlzSHRtbCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5LmRhdGEgPSBgPHNwYW4gY2xhc3M9XCJkLWJsb2NrIFQxNFIgdGV4dC1ibGFjazQwMFwiPiR7dGltZX08L3NwYW4+PHNwYW4gY2xhc3M9XCJkLWJsb2NrIFQxNFJcIj4ke2RhdGV9PC9zcGFuPmA7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXkuZGF0YSA9IGRhdGU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ3RpbWUnKSB7XHJcbiAgICAgICAgICAgICAgZGlzcGxheS5kYXRhID0gdGltZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAndmFsdWVzJyB8fCBjb2x1bW4udHlwZSA9PT0gJ2xhenktdmFsdWVzJykge1xyXG4gICAgICAgICAgICBkaXNwbGF5LmRhdGEgPSBvYmpWYWx1ZXNbdmFsdWVdPy5bY29sdW1uLm9wdGlvbi5kaXNwbGF5RmllbGRdIHx8IHZhbHVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNOdW1iZXIodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXkuZGF0YSA9IE51bWJlci50b1ZOQ3VycmVuY3kodmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnYm9vbCcpIHtcclxuICAgICAgICAgICAgY29uc3QgeyBvcHRpb24gfSA9IGNvbHVtbjtcclxuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09ICcnKSB7XHJcbiAgICAgICAgICAgICAgZGlzcGxheS5kYXRhID0gdmFsdWUgPT09IHRydWUgPyBvcHRpb24/LmRpc3BsYXlPblRydWUgfHwgJ1RydWUnIDogb3B0aW9uPy5kaXNwbGF5T25GYWxzZSB8fCAnRmFsc2UnO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGRpc3BsYXkuZGF0YSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIEJhZGdlXHJcbiAgICAgICAgICBpZiAoKGNvbHVtbi50eXBlID09PSAnc3RyaW5nJyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcicgfHwgY29sdW1uLnR5cGUgPT09ICd2YWx1ZXMnKSAmJiBjb2x1bW4uYmFkZ2UpIHtcclxuICAgICAgICAgICAgZGlzcGxheS5iYWRnZSA9IHtcclxuICAgICAgICAgICAgICB0eXBlOiAhY29sdW1uPy5iYWRnZVR5cGUgPyAncm91bmQnIDogY29sdW1uLmJhZGdlVHlwZSxcclxuICAgICAgICAgICAgICBjb2xvcjogY29sdW1uLmJhZGdlKHZhbHVlLCByb3dEYXRhKSxcclxuICAgICAgICAgICAgICBpY29uOiBjb2x1bW4uYmFkZ2VJY29uPy4odmFsdWUsIHJvd0RhdGEpLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Jvb2wnKSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXkuYmFkZ2UgPSB7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ2NpcmNsZScsXHJcbiAgICAgICAgICAgICAgY29sb3I6ICEhdmFsdWUgPyAnc3VjY2VzcycgOiAnZGFuZ2VyJyxcclxuICAgICAgICAgICAgICBpY29uOiBudWxsLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGl0ZW1zO1xyXG4gIH07XHJcbn1cclxuIl19
|
|
@@ -1452,7 +1452,7 @@ class SdTable {
|
|
|
1452
1452
|
const value = rowData === null || rowData === void 0 ? void 0 : rowData[field];
|
|
1453
1453
|
item.meta.display[field] = {
|
|
1454
1454
|
badge: undefined,
|
|
1455
|
-
cellStyle: column.type === 'number'
|
|
1455
|
+
cellStyle: column.type === 'number' ? { 'text-align': 'right!important' } : undefined,
|
|
1456
1456
|
data: value,
|
|
1457
1457
|
isHtml: false,
|
|
1458
1458
|
tooltip: typeof tooltip === 'function' ? tooltip(value, rowData) : undefined,
|