@workflow/web-shared 5.0.0-beta.10 → 5.0.0-beta.12

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.
Files changed (58) hide show
  1. package/dist/components/index.d.ts +1 -0
  2. package/dist/components/index.d.ts.map +1 -1
  3. package/dist/components/index.js +2 -1
  4. package/dist/components/new-trace-viewer/components/event-list.d.ts.map +1 -1
  5. package/dist/components/new-trace-viewer/components/event-list.js +9 -4
  6. package/dist/components/new-trace-viewer/components/split-pane.d.ts +3 -2
  7. package/dist/components/new-trace-viewer/components/split-pane.d.ts.map +1 -1
  8. package/dist/components/new-trace-viewer/components/split-pane.js +10 -4
  9. package/dist/components/new-trace-viewer/components/timeline.d.ts +1 -1
  10. package/dist/components/new-trace-viewer/components/timeline.d.ts.map +1 -1
  11. package/dist/components/new-trace-viewer/components/timeline.js +6 -8
  12. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.d.ts +2 -0
  13. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.d.ts.map +1 -0
  14. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.js +19 -0
  15. package/dist/components/new-trace-viewer/components/use-row-window.d.ts +20 -0
  16. package/dist/components/new-trace-viewer/components/use-row-window.d.ts.map +1 -0
  17. package/dist/components/new-trace-viewer/components/use-row-window.js +69 -0
  18. package/dist/components/new-trace-viewer/context.d.ts.map +1 -1
  19. package/dist/components/new-trace-viewer/context.js +2 -2
  20. package/dist/components/new-trace-viewer/trace-viewer.d.ts +4 -1
  21. package/dist/components/new-trace-viewer/trace-viewer.d.ts.map +1 -1
  22. package/dist/components/new-trace-viewer/trace-viewer.js +19 -6
  23. package/dist/components/trace-viewer-new.d.ts +5 -1
  24. package/dist/components/trace-viewer-new.d.ts.map +1 -1
  25. package/dist/components/trace-viewer-new.js +7 -8
  26. package/dist/components/ui/icon-button.d.ts +8 -2
  27. package/dist/components/ui/icon-button.d.ts.map +1 -1
  28. package/dist/components/ui/icon-button.js +4 -4
  29. package/dist/components/ui/kbd.d.ts +6 -0
  30. package/dist/components/ui/kbd.d.ts.map +1 -0
  31. package/dist/components/ui/kbd.js +6 -0
  32. package/dist/components/ui/tooltip.d.ts +10 -0
  33. package/dist/components/ui/tooltip.d.ts.map +1 -0
  34. package/dist/components/ui/tooltip.js +12 -0
  35. package/dist/hooks/use-intersection-observer.d.ts +17 -0
  36. package/dist/hooks/use-intersection-observer.d.ts.map +1 -0
  37. package/dist/hooks/use-intersection-observer.js +29 -0
  38. package/dist/hooks/use-load-more-on-scroll.d.ts +21 -0
  39. package/dist/hooks/use-load-more-on-scroll.d.ts.map +1 -0
  40. package/dist/hooks/use-load-more-on-scroll.js +28 -0
  41. package/dist/lib/hydration.d.ts.map +1 -1
  42. package/dist/lib/hydration.js +26 -2
  43. package/package.json +4 -4
  44. package/src/components/index.ts +1 -0
  45. package/src/components/new-trace-viewer/components/event-list.tsx +19 -11
  46. package/src/components/new-trace-viewer/components/split-pane.tsx +15 -2
  47. package/src/components/new-trace-viewer/components/timeline.tsx +27 -19
  48. package/src/components/new-trace-viewer/components/trace-viewer-skeleton.tsx +94 -0
  49. package/src/components/new-trace-viewer/components/use-row-window.ts +93 -0
  50. package/src/components/new-trace-viewer/context.tsx +1 -3
  51. package/src/components/new-trace-viewer/trace-viewer.tsx +90 -22
  52. package/src/components/trace-viewer-new.tsx +20 -12
  53. package/src/components/ui/icon-button.tsx +7 -11
  54. package/src/components/ui/kbd.tsx +21 -0
  55. package/src/components/ui/tooltip.tsx +47 -0
  56. package/src/hooks/use-intersection-observer.ts +57 -0
  57. package/src/hooks/use-load-more-on-scroll.ts +49 -0
  58. package/src/lib/hydration.ts +28 -1
@@ -16,4 +16,5 @@ export { MenuDropdown, type MenuDropdownOption } from './ui/menu-dropdown';
16
16
  export { Spinner } from './ui/spinner';
17
17
  export { WorkflowTraceViewer } from './workflow-trace-view';
18
18
  export { NewTraceViewer } from './trace-viewer-new';
19
+ export { TraceViewerSkeleton } from './new-trace-viewer/components/trace-viewer-skeleton';
19
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EACV,mBAAmB,EACnB,4BAA4B,EAC5B,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EACL,mBAAmB,EACnB,KAAK,uBAAuB,GAC7B,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACV,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,KAAK,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACjE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EACV,mBAAmB,EACnB,4BAA4B,EAC5B,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EACL,mBAAmB,EACnB,KAAK,uBAAuB,GAC7B,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACV,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,KAAK,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACjE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAC"}
@@ -13,4 +13,5 @@ export { MenuDropdown } from './ui/menu-dropdown';
13
13
  export { Spinner } from './ui/spinner';
14
14
  export { WorkflowTraceViewer } from './workflow-trace-view';
15
15
  export { NewTraceViewer } from './trace-viewer-new';
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBUWxELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQixjQUFjLEdBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUNMLG1CQUFtQixHQUVwQixNQUFNLGdDQUFnQyxDQUFDO0FBS3hDLE9BQU8sRUFBb0IsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakUsT0FBTyxFQUNMLGFBQWEsRUFFYixtQkFBbUIsR0FFcEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUEyQixNQUFNLG9CQUFvQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgRXJyb3JCb3VuZGFyeSB9IGZyb20gJy4vZXJyb3ItYm91bmRhcnknO1xuZXhwb3J0IHsgRXZlbnRMaXN0VmlldyB9IGZyb20gJy4vZXZlbnQtbGlzdC12aWV3JztcbmV4cG9ydCB0eXBlIHtcbiAgSG9va0FjdGlvbkNhbGxiYWNrcyxcbiAgSG9va0FjdGlvbnNEcm9wZG93bkl0ZW1Qcm9wcyxcbiAgSG9va1Jlc29sdmVNb2RhbFByb3BzLFxuICBVc2VIb29rQWN0aW9uc09wdGlvbnMsXG4gIFVzZUhvb2tBY3Rpb25zUmV0dXJuLFxufSBmcm9tICcuL2hvb2stYWN0aW9ucyc7XG5leHBvcnQge1xuICBIb29rUmVzb2x2ZU1vZGFsV3JhcHBlcixcbiAgUmVzb2x2ZUhvb2tEcm9wZG93bkl0ZW0sXG4gIFJlc29sdmVIb29rTW9kYWwsXG4gIHVzZUhvb2tBY3Rpb25zLFxufSBmcm9tICcuL2hvb2stYWN0aW9ucyc7XG5leHBvcnQgeyBSdW5UcmFjZVZpZXcgfSBmcm9tICcuL3J1bi10cmFjZS12aWV3JztcbmV4cG9ydCB7IENvbnZlcnNhdGlvblZpZXcgfSBmcm9tICcuL3NpZGViYXIvY29udmVyc2F0aW9uLXZpZXcnO1xuZXhwb3J0IHtcbiAgU2lkZWJhckRhdGFQcm92aWRlcixcbiAgdHlwZSBTaWRlYmFyRGF0YUNvbnRleHRWYWx1ZSxcbn0gZnJvbSAnLi9zaWRlYmFyL3NpZGViYXItZGF0YS1jb250ZXh0JztcbmV4cG9ydCB0eXBlIHtcbiAgU2VsZWN0ZWRTcGFuSW5mbyxcbiAgU3BhblNlbGVjdGlvbkluZm8sXG59IGZyb20gJy4vc2lkZWJhci9lbnRpdHktZGV0YWlsLXBhbmVsJztcbmV4cG9ydCB7IHR5cGUgU3RyZWFtQ2h1bmssIFN0cmVhbVZpZXdlciB9IGZyb20gJy4vc3RyZWFtLXZpZXdlcic7XG5leHBvcnQgdHlwZSB7IFNwYW4sIFNwYW5FdmVudCB9IGZyb20gJy4vdHJhY2Utdmlld2VyL3R5cGVzJztcbmV4cG9ydCB7XG4gIERhdGFJbnNwZWN0b3IsXG4gIHR5cGUgRGF0YUluc3BlY3RvclByb3BzLFxuICBEZWNyeXB0Q2xpY2tDb250ZXh0LFxuICB0eXBlIERlY3J5cHRDbGlja0NvbnRleHRWYWx1ZSxcbn0gZnJvbSAnLi91aS9kYXRhLWluc3BlY3Rvcic7XG5leHBvcnQgeyBEZWNyeXB0QnV0dG9uIH0gZnJvbSAnLi91aS9kZWNyeXB0LWJ1dHRvbic7XG5leHBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnLi91aS9pY29uLWJ1dHRvbic7XG5leHBvcnQgeyBMb2FkTW9yZUJ1dHRvbiB9IGZyb20gJy4vdWkvbG9hZC1tb3JlLWJ1dHRvbic7XG5leHBvcnQgeyBNZW51RHJvcGRvd24sIHR5cGUgTWVudURyb3Bkb3duT3B0aW9uIH0gZnJvbSAnLi91aS9tZW51LWRyb3Bkb3duJztcbmV4cG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuL3VpL3NwaW5uZXInO1xuZXhwb3J0IHsgV29ya2Zsb3dUcmFjZVZpZXdlciB9IGZyb20gJy4vd29ya2Zsb3ctdHJhY2Utdmlldyc7XG5leHBvcnQgeyBOZXdUcmFjZVZpZXdlciB9IGZyb20gJy4vdHJhY2Utdmlld2VyLW5ldyc7XG4iXX0=
16
+ export { TraceViewerSkeleton } from './new-trace-viewer/components/trace-viewer-skeleton';
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBUWxELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQixjQUFjLEdBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUNMLG1CQUFtQixHQUVwQixNQUFNLGdDQUFnQyxDQUFDO0FBS3hDLE9BQU8sRUFBb0IsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakUsT0FBTyxFQUNMLGFBQWEsRUFFYixtQkFBbUIsR0FFcEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUEyQixNQUFNLG9CQUFvQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgRXJyb3JCb3VuZGFyeSB9IGZyb20gJy4vZXJyb3ItYm91bmRhcnknO1xuZXhwb3J0IHsgRXZlbnRMaXN0VmlldyB9IGZyb20gJy4vZXZlbnQtbGlzdC12aWV3JztcbmV4cG9ydCB0eXBlIHtcbiAgSG9va0FjdGlvbkNhbGxiYWNrcyxcbiAgSG9va0FjdGlvbnNEcm9wZG93bkl0ZW1Qcm9wcyxcbiAgSG9va1Jlc29sdmVNb2RhbFByb3BzLFxuICBVc2VIb29rQWN0aW9uc09wdGlvbnMsXG4gIFVzZUhvb2tBY3Rpb25zUmV0dXJuLFxufSBmcm9tICcuL2hvb2stYWN0aW9ucyc7XG5leHBvcnQge1xuICBIb29rUmVzb2x2ZU1vZGFsV3JhcHBlcixcbiAgUmVzb2x2ZUhvb2tEcm9wZG93bkl0ZW0sXG4gIFJlc29sdmVIb29rTW9kYWwsXG4gIHVzZUhvb2tBY3Rpb25zLFxufSBmcm9tICcuL2hvb2stYWN0aW9ucyc7XG5leHBvcnQgeyBSdW5UcmFjZVZpZXcgfSBmcm9tICcuL3J1bi10cmFjZS12aWV3JztcbmV4cG9ydCB7IENvbnZlcnNhdGlvblZpZXcgfSBmcm9tICcuL3NpZGViYXIvY29udmVyc2F0aW9uLXZpZXcnO1xuZXhwb3J0IHtcbiAgU2lkZWJhckRhdGFQcm92aWRlcixcbiAgdHlwZSBTaWRlYmFyRGF0YUNvbnRleHRWYWx1ZSxcbn0gZnJvbSAnLi9zaWRlYmFyL3NpZGViYXItZGF0YS1jb250ZXh0JztcbmV4cG9ydCB0eXBlIHtcbiAgU2VsZWN0ZWRTcGFuSW5mbyxcbiAgU3BhblNlbGVjdGlvbkluZm8sXG59IGZyb20gJy4vc2lkZWJhci9lbnRpdHktZGV0YWlsLXBhbmVsJztcbmV4cG9ydCB7IHR5cGUgU3RyZWFtQ2h1bmssIFN0cmVhbVZpZXdlciB9IGZyb20gJy4vc3RyZWFtLXZpZXdlcic7XG5leHBvcnQgdHlwZSB7IFNwYW4sIFNwYW5FdmVudCB9IGZyb20gJy4vdHJhY2Utdmlld2VyL3R5cGVzJztcbmV4cG9ydCB7XG4gIERhdGFJbnNwZWN0b3IsXG4gIHR5cGUgRGF0YUluc3BlY3RvclByb3BzLFxuICBEZWNyeXB0Q2xpY2tDb250ZXh0LFxuICB0eXBlIERlY3J5cHRDbGlja0NvbnRleHRWYWx1ZSxcbn0gZnJvbSAnLi91aS9kYXRhLWluc3BlY3Rvcic7XG5leHBvcnQgeyBEZWNyeXB0QnV0dG9uIH0gZnJvbSAnLi91aS9kZWNyeXB0LWJ1dHRvbic7XG5leHBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnLi91aS9pY29uLWJ1dHRvbic7XG5leHBvcnQgeyBMb2FkTW9yZUJ1dHRvbiB9IGZyb20gJy4vdWkvbG9hZC1tb3JlLWJ1dHRvbic7XG5leHBvcnQgeyBNZW51RHJvcGRvd24sIHR5cGUgTWVudURyb3Bkb3duT3B0aW9uIH0gZnJvbSAnLi91aS9tZW51LWRyb3Bkb3duJztcbmV4cG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuL3VpL3NwaW5uZXInO1xuZXhwb3J0IHsgV29ya2Zsb3dUcmFjZVZpZXdlciB9IGZyb20gJy4vd29ya2Zsb3ctdHJhY2Utdmlldyc7XG5leHBvcnQgeyBOZXdUcmFjZVZpZXdlciB9IGZyb20gJy4vdHJhY2Utdmlld2VyLW5ldyc7XG5leHBvcnQgeyBUcmFjZVZpZXdlclNrZWxldG9uIH0gZnJvbSAnLi9uZXctdHJhY2Utdmlld2VyL2NvbXBvbmVudHMvdHJhY2Utdmlld2VyLXNrZWxldG9uJztcbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"event-list.d.ts","sourceRoot":"","sources":["../../../../src/components/new-trace-viewer/components/event-list.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAQrD,OAAO,EAAwB,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAoFxE,QAAA,MAAM,SAAS,GAAI,sDAKhB;IACD,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,gBAAgB,CAAC;IAC/B,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,4CAoBA,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"event-list.d.ts","sourceRoot":"","sources":["../../../../src/components/new-trace-viewer/components/event-list.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAQrD,OAAO,EAAwB,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAqFxE,QAAA,MAAM,SAAS,GAAI,sDAKhB;IACD,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,gBAAgB,CAAC;IAC/B,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,4CA0BA,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -1,11 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Circle } from 'lucide-react';
3
+ import { useRef } from 'react';
3
4
  import { cn } from '../../../lib/utils';
4
5
  import { formatDuration } from '../../trace-viewer/util/timing';
5
6
  import { SleepIcon, StepForwardIcon, WebhookIcon, WorkflowIcon, } from '../icons';
6
7
  import { isSpanDimmedBySearch } from '../search';
7
8
  import { getSpanDurationMs } from '../utils';
8
9
  import { MiddleTruncate } from './middle-truncate/middle-truncate';
10
+ import { ROW_HEIGHT_PX, useRowWindow } from './use-row-window';
9
11
  const eventStyles = {
10
12
  run: { icon: WorkflowIcon, className: 'text-blue-900' },
11
13
  step: { icon: StepForwardIcon, className: 'text-green-900' },
@@ -31,9 +33,12 @@ const EventRow = ({ span, isSelected, isDimmed, onSelectSpan, }) => {
31
33
  return (_jsx("li", { className: cn('relative overflow-clip group transition-opacity', ROW_HEIGHT_CLASS, isDimmed && 'opacity-35'), role: "treeitem", "aria-selected": isSelected, "aria-expanded": isSelected, "aria-level": 1, onClick: () => onSelectSpan(span.spanId), children: _jsx("div", { className: "h-full hover:bg-gray-100 group-aria-selected:bg-gray-100 group-aria-selected:hover:bg-gray-200", children: _jsxs("div", { className: "flex h-full min-w-0 items-center pl-4 pr-2", children: [_jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [_jsx("span", { className: cn('shrink-0', tagClassName), children: _jsx(Icon, { className: "w-4 h-4" }) }), _jsx("span", { className: "min-w-0 text-label-14", children: _jsx(MiddleTruncate, { value: span.name }) })] }), _jsx("div", { className: "ml-2 shrink-0", children: _jsx("span", { className: "text-label-14 text-gray-900 tabular-nums", children: formatDuration(durationMs) }) })] }) }) }));
32
34
  };
33
35
  const EventList = ({ spans, activeSpanId, searchResult, onSelectSpan, }) => {
34
- return (_jsx("ul", { id: "event-list", role: "tree", className: "block min-h-0 overflow-visible divide-y divide-gray-alpha-400 border-b border-gray-alpha-400", children: spans.map((span) => {
35
- return (_jsx(EventRow, { span: span, isSelected: span.spanId === activeSpanId, isDimmed: isSpanDimmedBySearch(span.spanId, searchResult), onSelectSpan: onSelectSpan }, span.spanId));
36
- }) }));
36
+ const listRef = useRef(null);
37
+ const { start, end } = useRowWindow(listRef, spans.length, ROW_HEIGHT_PX);
38
+ return (_jsx("ul", { ref: listRef, id: "event-list", role: "tree", className: "block min-h-0 overflow-visible divide-y divide-gray-alpha-400 border-b border-gray-alpha-400", style: {
39
+ paddingTop: start * ROW_HEIGHT_PX,
40
+ paddingBottom: (spans.length - end) * ROW_HEIGHT_PX,
41
+ }, children: spans.slice(start, end).map((span) => (_jsx(EventRow, { span: span, isSelected: span.spanId === activeSpanId, isDimmed: isSpanDimmedBySearch(span.spanId, searchResult), onSelectSpan: onSelectSpan }, span.spanId))) }));
37
42
  };
38
43
  export default EventList;
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL25ldy10cmFjZS12aWV3ZXIvY29tcG9uZW50cy9ldmVudC1saXN0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFDTCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFdBQVcsRUFDWCxZQUFZLEdBQ2IsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLG9CQUFvQixFQUF5QixNQUFNLFdBQVcsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBT25FLE1BQU0sV0FBVyxHQUErQjtJQUM5QyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7SUFDdkQsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7SUFDNUQsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO0lBQ3ZELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtDQUN2RCxDQUFDO0FBRUYsTUFBTSxZQUFZLEdBQWU7SUFDL0IsSUFBSSxFQUFFLE1BQU07SUFDWixTQUFTLEVBQUUsZUFBZTtDQUMzQixDQUFDO0FBRUYsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUM7QUFFaEMsU0FBUyxhQUFhLENBQUMsUUFBZ0IsRUFBRSxTQUFrQjtJQUN6RCxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksWUFBWSxDQUFDO0lBQ3BELE9BQU87UUFDTCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7UUFDaEIsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztLQUM1RCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sUUFBUSxHQUFHLENBQUMsRUFDaEIsSUFBSSxFQUNKLFVBQVUsRUFDVixRQUFRLEVBQ1IsWUFBWSxHQU1iLEVBQUUsRUFBRTtJQUNILE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLE1BQU0sU0FBUyxHQUNaLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBZ0MsQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDO0lBQ3hFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsR0FBRyxhQUFhLENBQzNELElBQUksQ0FBQyxRQUFRLEVBQ2IsU0FBUyxDQUNWLENBQUM7SUFFRixPQUFPLENBQ0wsYUFDRSxTQUFTLEVBQUUsRUFBRSxDQUNYLGlEQUFpRCxFQUNqRCxnQkFBZ0IsRUFDaEIsUUFBUSxJQUFJLFlBQVksQ0FDekIsRUFDRCxJQUFJLEVBQUMsVUFBVSxtQkFDQSxVQUFVLG1CQUNWLFVBQVUsZ0JBQ2IsQ0FBQyxFQUNiLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUV4QyxjQUFLLFNBQVMsRUFBQyxnR0FBZ0csWUFDN0csZUFBSyxTQUFTLEVBQUMsNENBQTRDLGFBQ3pELGVBQUssU0FBUyxFQUFDLHdDQUF3QyxhQUNyRCxlQUFNLFNBQVMsRUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxZQUMzQyxLQUFDLElBQUksSUFBQyxTQUFTLEVBQUMsU0FBUyxHQUFHLEdBQ3ZCLEVBQ1AsZUFBTSxTQUFTLEVBQUMsdUJBQXVCLFlBQ3JDLEtBQUMsY0FBYyxJQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFJLEdBQy9CLElBQ0gsRUFDTixjQUFLLFNBQVMsRUFBQyxlQUFlLFlBQzVCLGVBQU0sU0FBUyxFQUFDLDBDQUEwQyxZQUN2RCxjQUFjLENBQUMsVUFBVSxDQUFDLEdBQ3RCLEdBQ0gsSUFDRixHQUNGLEdBQ0gsQ0FDTixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxTQUFTLEdBQUcsQ0FBQyxFQUNqQixLQUFLLEVBQ0wsWUFBWSxFQUNaLFlBQVksRUFDWixZQUFZLEdBTWIsRUFBRSxFQUFFO0lBQ0gsT0FBTyxDQUNMLGFBQ0UsRUFBRSxFQUFDLFlBQVksRUFDZixJQUFJLEVBQUMsTUFBTSxFQUNYLFNBQVMsRUFBQyw4RkFBOEYsWUFFdkcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2xCLE9BQU8sQ0FDTCxLQUFDLFFBQVEsSUFFUCxJQUFJLEVBQUUsSUFBSSxFQUNWLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxLQUFLLFlBQVksRUFDeEMsUUFBUSxFQUFFLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLEVBQ3pELFlBQVksRUFBRSxZQUFZLElBSnJCLElBQUksQ0FBQyxNQUFNLENBS2hCLENBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQyxHQUNDLENBQ04sQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLGVBQWUsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2lyY2xlIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi4vLi4vLi4vbGliL3V0aWxzJztcbmltcG9ydCB0eXBlIHsgU3BhbiB9IGZyb20gJy4uLy4uL3RyYWNlLXZpZXdlci90eXBlcyc7XG5pbXBvcnQgeyBmb3JtYXREdXJhdGlvbiB9IGZyb20gJy4uLy4uL3RyYWNlLXZpZXdlci91dGlsL3RpbWluZyc7XG5pbXBvcnQge1xuICBTbGVlcEljb24sXG4gIFN0ZXBGb3J3YXJkSWNvbixcbiAgV2ViaG9va0ljb24sXG4gIFdvcmtmbG93SWNvbixcbn0gZnJvbSAnLi4vaWNvbnMnO1xuaW1wb3J0IHsgaXNTcGFuRGltbWVkQnlTZWFyY2gsIHR5cGUgU3BhblNlYXJjaFJlc3VsdCB9IGZyb20gJy4uL3NlYXJjaCc7XG5pbXBvcnQgeyBnZXRTcGFuRHVyYXRpb25NcyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IE1pZGRsZVRydW5jYXRlIH0gZnJvbSAnLi9taWRkbGUtdHJ1bmNhdGUvbWlkZGxlLXRydW5jYXRlJztcblxuaW50ZXJmYWNlIEV2ZW50U3R5bGUge1xuICBpY29uOiBSZWFjdC5Db21wb25lbnRUeXBlPHsgY2xhc3NOYW1lPzogc3RyaW5nIH0+O1xuICBjbGFzc05hbWU6IHN0cmluZztcbn1cblxuY29uc3QgZXZlbnRTdHlsZXM6IFJlY29yZDxzdHJpbmcsIEV2ZW50U3R5bGU+ID0ge1xuICBydW46IHsgaWNvbjogV29ya2Zsb3dJY29uLCBjbGFzc05hbWU6ICd0ZXh0LWJsdWUtOTAwJyB9LFxuICBzdGVwOiB7IGljb246IFN0ZXBGb3J3YXJkSWNvbiwgY2xhc3NOYW1lOiAndGV4dC1ncmVlbi05MDAnIH0sXG4gIGhvb2s6IHsgaWNvbjogV2ViaG9va0ljb24sIGNsYXNzTmFtZTogJ3RleHQtZ3JheS05MDAnIH0sXG4gIHNsZWVwOiB7IGljb246IFNsZWVwSWNvbiwgY2xhc3NOYW1lOiAndGV4dC1ncmF5LTkwMCcgfSxcbn07XG5cbmNvbnN0IGRlZmF1bHRTdHlsZTogRXZlbnRTdHlsZSA9IHtcbiAgaWNvbjogQ2lyY2xlLFxuICBjbGFzc05hbWU6ICd0ZXh0LWdyYXktOTAwJyxcbn07XG5cbmNvbnN0IFJPV19IRUlHSFRfQ0xBU1MgPSAnaC0xMCc7XG5cbmZ1bmN0aW9uIGdldEV2ZW50U3R5bGUocmVzb3VyY2U6IHN0cmluZywgaXNFcnJvcmVkOiBib29sZWFuKTogRXZlbnRTdHlsZSB7XG4gIGNvbnN0IHN0eWxlID0gZXZlbnRTdHlsZXNbcmVzb3VyY2VdID8/IGRlZmF1bHRTdHlsZTtcbiAgcmV0dXJuIHtcbiAgICBpY29uOiBzdHlsZS5pY29uLFxuICAgIGNsYXNzTmFtZTogY24oaXNFcnJvcmVkID8gJ3RleHQtcmVkLTkwMCcgOiBzdHlsZS5jbGFzc05hbWUpLFxuICB9O1xufVxuXG5jb25zdCBFdmVudFJvdyA9ICh7XG4gIHNwYW4sXG4gIGlzU2VsZWN0ZWQsXG4gIGlzRGltbWVkLFxuICBvblNlbGVjdFNwYW4sXG59OiB7XG4gIHNwYW46IFNwYW47XG4gIGlzU2VsZWN0ZWQ6IGJvb2xlYW47XG4gIGlzRGltbWVkPzogYm9vbGVhbjtcbiAgb25TZWxlY3RTcGFuOiAoc3BhbklkOiBzdHJpbmcpID0+IHZvaWQ7XG59KSA9PiB7XG4gIGNvbnN0IGR1cmF0aW9uTXMgPSBnZXRTcGFuRHVyYXRpb25NcyhzcGFuKTtcbiAgY29uc3QgaXNFcnJvcmVkID1cbiAgICAoc3Bhbi5hdHRyaWJ1dGVzLmRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLnN0YXR1cyA9PT0gJ2ZhaWxlZCc7XG4gIGNvbnN0IHsgaWNvbjogSWNvbiwgY2xhc3NOYW1lOiB0YWdDbGFzc05hbWUgfSA9IGdldEV2ZW50U3R5bGUoXG4gICAgc3Bhbi5yZXNvdXJjZSxcbiAgICBpc0Vycm9yZWRcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxsaVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ3JlbGF0aXZlIG92ZXJmbG93LWNsaXAgZ3JvdXAgdHJhbnNpdGlvbi1vcGFjaXR5JyxcbiAgICAgICAgUk9XX0hFSUdIVF9DTEFTUyxcbiAgICAgICAgaXNEaW1tZWQgJiYgJ29wYWNpdHktMzUnXG4gICAgICApfVxuICAgICAgcm9sZT1cInRyZWVpdGVtXCJcbiAgICAgIGFyaWEtc2VsZWN0ZWQ9e2lzU2VsZWN0ZWR9XG4gICAgICBhcmlhLWV4cGFuZGVkPXtpc1NlbGVjdGVkfVxuICAgICAgYXJpYS1sZXZlbD17MX1cbiAgICAgIG9uQ2xpY2s9eygpID0+IG9uU2VsZWN0U3BhbihzcGFuLnNwYW5JZCl9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLWZ1bGwgaG92ZXI6YmctZ3JheS0xMDAgZ3JvdXAtYXJpYS1zZWxlY3RlZDpiZy1ncmF5LTEwMCBncm91cC1hcmlhLXNlbGVjdGVkOmhvdmVyOmJnLWdyYXktMjAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBoLWZ1bGwgbWluLXctMCBpdGVtcy1jZW50ZXIgcGwtNCBwci0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IG1pbi13LTAgZmxleC0xIGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbignc2hyaW5rLTAnLCB0YWdDbGFzc05hbWUpfT5cbiAgICAgICAgICAgICAgPEljb24gY2xhc3NOYW1lPVwidy00IGgtNFwiIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtaW4tdy0wIHRleHQtbGFiZWwtMTRcIj5cbiAgICAgICAgICAgICAgPE1pZGRsZVRydW5jYXRlIHZhbHVlPXtzcGFuLm5hbWV9IC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtbC0yIHNocmluay0wXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWxhYmVsLTE0IHRleHQtZ3JheS05MDAgdGFidWxhci1udW1zXCI+XG4gICAgICAgICAgICAgIHtmb3JtYXREdXJhdGlvbihkdXJhdGlvbk1zKX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPlxuICApO1xufTtcblxuY29uc3QgRXZlbnRMaXN0ID0gKHtcbiAgc3BhbnMsXG4gIGFjdGl2ZVNwYW5JZCxcbiAgc2VhcmNoUmVzdWx0LFxuICBvblNlbGVjdFNwYW4sXG59OiB7XG4gIHNwYW5zOiBTcGFuW107XG4gIGFjdGl2ZVNwYW5JZDogc3RyaW5nIHwgbnVsbDtcbiAgc2VhcmNoUmVzdWx0OiBTcGFuU2VhcmNoUmVzdWx0O1xuICBvblNlbGVjdFNwYW46IChzcGFuSWQ6IHN0cmluZykgPT4gdm9pZDtcbn0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8dWxcbiAgICAgIGlkPVwiZXZlbnQtbGlzdFwiXG4gICAgICByb2xlPVwidHJlZVwiXG4gICAgICBjbGFzc05hbWU9XCJibG9jayBtaW4taC0wIG92ZXJmbG93LXZpc2libGUgZGl2aWRlLXkgZGl2aWRlLWdyYXktYWxwaGEtNDAwIGJvcmRlci1iIGJvcmRlci1ncmF5LWFscGhhLTQwMFwiXG4gICAgPlxuICAgICAge3NwYW5zLm1hcCgoc3BhbikgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxFdmVudFJvd1xuICAgICAgICAgICAga2V5PXtzcGFuLnNwYW5JZH1cbiAgICAgICAgICAgIHNwYW49e3NwYW59XG4gICAgICAgICAgICBpc1NlbGVjdGVkPXtzcGFuLnNwYW5JZCA9PT0gYWN0aXZlU3BhbklkfVxuICAgICAgICAgICAgaXNEaW1tZWQ9e2lzU3BhbkRpbW1lZEJ5U2VhcmNoKHNwYW4uc3BhbklkLCBzZWFyY2hSZXN1bHQpfVxuICAgICAgICAgICAgb25TZWxlY3RTcGFuPXtvblNlbGVjdFNwYW59XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH0pfVxuICAgIDwvdWw+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBFdmVudExpc3Q7XG4iXX0=
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL25ldy10cmFjZS12aWV3ZXIvY29tcG9uZW50cy9ldmVudC1saXN0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUNMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsV0FBVyxFQUNYLFlBQVksR0FDYixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsb0JBQW9CLEVBQXlCLE1BQU0sV0FBVyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQU8vRCxNQUFNLFdBQVcsR0FBK0I7SUFDOUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO0lBQ3ZELElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO0lBQzVELElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtJQUN2RCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Q0FDdkQsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFlO0lBQy9CLElBQUksRUFBRSxNQUFN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QUFLLFlBQVksRUFDeEMsUUFBUSxFQUFFLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLEVBQ3pELFlBQVksRUFBRSxZQUFZLElBSnJCLElBQUksQ0FBQyxNQUFNLENBS2hCLENBQ0gsQ0FBQyxHQUNDLENBQ04sQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLGVBQWUsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2lyY2xlIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi4vLi4vLi4vbGliL3V0aWxzJztcbmltcG9ydCB0eXBlIHsgU3BhbiB9IGZyb20gJy4uLy4uL3RyYWNlLXZpZXdlci90eXBlcyc7XG5pbXBvcnQgeyBmb3JtYXREdXJhdGlvbiB9IGZyb20gJy4uLy4uL3RyYWNlLXZpZXdlci91dGlsL3RpbWluZyc7XG5pbXBvcnQge1xuICBTbGVlcEljb24sXG4gIFN0ZXBGb3J3YXJkSWNvbixcbiAgV2ViaG9va0ljb24sXG4gIFdvcmtmbG93SWNvbixcbn0gZnJvbSAnLi4vaWNvbnMnO1xuaW1wb3J0IHsgaXNTcGFuRGltbWVkQnlTZWFyY2gsIHR5cGUgU3BhblNlYXJjaFJlc3VsdCB9IGZyb20gJy4uL3NlYXJjaCc7XG5pbXBvcnQgeyBnZXRTcGFuRHVyYXRpb25NcyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IE1pZGRsZVRydW5jYXRlIH0gZnJvbSAnLi9taWRkbGUtdHJ1bmNhdGUvbWlkZGxlLXRydW5jYXRlJztcbmltcG9ydCB7IFJPV19IRUlHSFRfUFgsIHVzZVJvd1dpbmRvdyB9IGZyb20gJy4vdXNlLXJvdy13aW5kb3cnO1xuXG5pbnRlcmZhY2UgRXZlbnRTdHlsZSB7XG4gIGljb246IFJlYWN0LkNvbXBvbmVudFR5cGU8eyBjbGFzc05hbWU/OiBzdHJpbmcgfT47XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xufVxuXG5jb25zdCBldmVudFN0eWxlczogUmVjb3JkPHN0cmluZywgRXZlbnRTdHlsZT4gPSB7XG4gIHJ1bjogeyBpY29uOiBXb3JrZmxvd0ljb24sIGNsYXNzTmFtZTogJ3RleHQtYmx1ZS05MDAnIH0sXG4gIHN0ZXA6IHsgaWNvbjogU3RlcEZvcndhcmRJY29uLCBjbGFzc05hbWU6ICd0ZXh0LWdyZWVuLTkwMCcgfSxcbiAgaG9vazogeyBpY29uOiBXZWJob29rSWNvbiwgY2xhc3NOYW1lOiAndGV4dC1ncmF5LTkwMCcgfSxcbiAgc2xlZXA6IHsgaWNvbjogU2xlZXBJY29uLCBjbGFzc05hbWU6ICd0ZXh0LWdyYXktOTAwJyB9LFxufTtcblxuY29uc3QgZGVmYXVsdFN0eWxlOiBFdmVudFN0eWxlID0ge1xuICBpY29uOiBDaXJjbGUsXG4gIGNsYXNzTmFtZTogJ3RleHQtZ3JheS05MDAnLFxufTtcblxuY29uc3QgUk9XX0hFSUdIVF9DTEFTUyA9ICdoLTEwJztcblxuZnVuY3Rpb24gZ2V0RXZlbnRTdHlsZShyZXNvdXJjZTogc3RyaW5nLCBpc0Vycm9yZWQ6IGJvb2xlYW4pOiBFdmVudFN0eWxlIHtcbiAgY29uc3Qgc3R5bGUgPSBldmVudFN0eWxlc1tyZXNvdXJjZV0gPz8gZGVmYXVsdFN0eWxlO1xuICByZXR1cm4ge1xuICAgIGljb246IHN0eWxlLmljb24sXG4gICAgY2xhc3NOYW1lOiBjbihpc0Vycm9yZWQgPyAndGV4dC1yZWQtOTAwJyA6IHN0eWxlLmNsYXNzTmFtZSksXG4gIH07XG59XG5cbmNvbnN0IEV2ZW50Um93ID0gKHtcbiAgc3BhbixcbiAgaXNTZWxlY3RlZCxcbiAgaXNEaW1tZWQsXG4gIG9uU2VsZWN0U3Bhbixcbn06IHtcbiAgc3BhbjogU3BhbjtcbiAgaXNTZWxlY3RlZDogYm9vbGVhbjtcbiAgaXNEaW1tZWQ/OiBib29sZWFuO1xuICBvblNlbGVjdFNwYW46IChzcGFuSWQ6IHN0cmluZykgPT4gdm9pZDtcbn0pID0+IHtcbiAgY29uc3QgZHVyYXRpb25NcyA9IGdldFNwYW5EdXJhdGlvbk1zKHNwYW4pO1xuICBjb25zdCBpc0Vycm9yZWQgPVxuICAgIChzcGFuLmF0dHJpYnV0ZXMuZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikuc3RhdHVzID09PSAnZmFpbGVkJztcbiAgY29uc3QgeyBpY29uOiBJY29uLCBjbGFzc05hbWU6IHRhZ0NsYXNzTmFtZSB9ID0gZ2V0RXZlbnRTdHlsZShcbiAgICBzcGFuLnJlc291cmNlLFxuICAgIGlzRXJyb3JlZFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGxpXG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAncmVsYXRpdmUgb3ZlcmZsb3ctY2xpcCBncm91cCB0cmFuc2l0aW9uLW9wYWNpdHknLFxuICAgICAgICBST1dfSEVJR0hUX0NMQVNTLFxuICAgICAgICBpc0RpbW1lZCAmJiAnb3BhY2l0eS0zNSdcbiAgICAgICl9XG4gICAgICByb2xlPVwidHJlZWl0ZW1cIlxuICAgICAgYXJpYS1zZWxlY3RlZD17aXNTZWxlY3RlZH1cbiAgICAgIGFyaWEtZXhwYW5kZWQ9e2lzU2VsZWN0ZWR9XG4gICAgICBhcmlhLWxldmVsPXsxfVxuICAgICAgb25DbGljaz17KCkgPT4gb25TZWxlY3RTcGFuKHNwYW4uc3BhbklkKX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtZnVsbCBob3ZlcjpiZy1ncmF5LTEwMCBncm91cC1hcmlhLXNlbGVjdGVkOmJnLWdyYXktMTAwIGdyb3VwLWFyaWEtc2VsZWN0ZWQ6aG92ZXI6YmctZ3JheS0yMDBcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGgtZnVsbCBtaW4tdy0wIGl0ZW1zLWNlbnRlciBwbC00IHByLTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggbWluLXctMCBmbGV4LTEgaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2NuKCdzaHJpbmstMCcsIHRhZ0NsYXNzTmFtZSl9PlxuICAgICAgICAgICAgICA8SWNvbiBjbGFzc05hbWU9XCJ3LTQgaC00XCIgLz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1pbi13LTAgdGV4dC1sYWJlbC0xNFwiPlxuICAgICAgICAgICAgICA8TWlkZGxlVHJ1bmNhdGUgdmFsdWU9e3NwYW4ubmFtZX0gLz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1sLTIgc2hyaW5rLTBcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtbGFiZWwtMTQgdGV4dC1ncmF5LTkwMCB0YWJ1bGFyLW51bXNcIj5cbiAgICAgICAgICAgICAge2Zvcm1hdER1cmF0aW9uKGR1cmF0aW9uTXMpfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbGk+XG4gICk7XG59O1xuXG5jb25zdCBFdmVudExpc3QgPSAoe1xuICBzcGFucyxcbiAgYWN0aXZlU3BhbklkLFxuICBzZWFyY2hSZXN1bHQsXG4gIG9uU2VsZWN0U3Bhbixcbn06IHtcbiAgc3BhbnM6IFNwYW5bXTtcbiAgYWN0aXZlU3BhbklkOiBzdHJpbmcgfCBudWxsO1xuICBzZWFyY2hSZXN1bHQ6IFNwYW5TZWFyY2hSZXN1bHQ7XG4gIG9uU2VsZWN0U3BhbjogKHNwYW5JZDogc3RyaW5nKSA9PiB2b2lkO1xufSkgPT4ge1xuICBjb25zdCBsaXN0UmVmID0gdXNlUmVmPEhUTUxVTGlzdEVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IHVzZVJvd1dpbmRvdyhsaXN0UmVmLCBzcGFucy5sZW5ndGgsIFJPV19IRUlHSFRfUFgpO1xuXG4gIHJldHVybiAoXG4gICAgPHVsXG4gICAgICByZWY9e2xpc3RSZWZ9XG4gICAgICBpZD1cImV2ZW50LWxpc3RcIlxuICAgICAgcm9sZT1cInRyZWVcIlxuICAgICAgY2xhc3NOYW1lPVwiYmxvY2sgbWluLWgtMCBvdmVyZmxvdy12aXNpYmxlIGRpdmlkZS15IGRpdmlkZS1ncmF5LWFscGhhLTQwMCBib3JkZXItYiBib3JkZXItZ3JheS1hbHBoYS00MDBcIlxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgcGFkZGluZ1RvcDogc3RhcnQgKiBST1dfSEVJR0hUX1BYLFxuICAgICAgICBwYWRkaW5nQm90dG9tOiAoc3BhbnMubGVuZ3RoIC0gZW5kKSAqIFJPV19IRUlHSFRfUFgsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtzcGFucy5zbGljZShzdGFydCwgZW5kKS5tYXAoKHNwYW4pID0+IChcbiAgICAgICAgPEV2ZW50Um93XG4gICAgICAgICAga2V5PXtzcGFuLnNwYW5JZH1cbiAgICAgICAgICBzcGFuPXtzcGFufVxuICAgICAgICAgIGlzU2VsZWN0ZWQ9e3NwYW4uc3BhbklkID09PSBhY3RpdmVTcGFuSWR9XG4gICAgICAgICAgaXNEaW1tZWQ9e2lzU3BhbkRpbW1lZEJ5U2VhcmNoKHNwYW4uc3BhbklkLCBzZWFyY2hSZXN1bHQpfVxuICAgICAgICAgIG9uU2VsZWN0U3Bhbj17b25TZWxlY3RTcGFufVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgPC91bD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEV2ZW50TGlzdDtcbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { type ReactNode } from 'react';
1
+ import { type ReactNode, type RefObject } from 'react';
2
2
  export declare function Divider(): import("react/jsx-runtime").JSX.Element;
3
3
  export interface SplitPaneProps {
4
4
  children: ReactNode;
@@ -9,6 +9,7 @@ export interface SplitPaneProps {
9
9
  startHeader?: ReactNode;
10
10
  /** Fixed (non-scrolling) header rendered above the end pane. */
11
11
  endHeader?: ReactNode;
12
+ scrollContainerRef?: RefObject<HTMLDivElement | null>;
12
13
  }
13
- export declare function SplitPane({ children, className, defaultStartWidth, startHeader, endHeader, }: SplitPaneProps): import("react/jsx-runtime").JSX.Element;
14
+ export declare function SplitPane({ children, className, defaultStartWidth, startHeader, endHeader, scrollContainerRef, }: SplitPaneProps): import("react/jsx-runtime").JSX.Element;
14
15
  //# sourceMappingURL=split-pane.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"split-pane.d.ts","sourceRoot":"","sources":["../../../../src/components/new-trace-viewer/components/split-pane.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAOf,wBAAgB,OAAO,4CAEtB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kEAAkE;IAClE,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,gEAAgE;IAChE,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,SAAS,EACT,iBAAoC,EACpC,WAAW,EACX,SAAS,GACV,EAAE,cAAc,2CAkJhB"}
1
+ {"version":3,"file":"split-pane.d.ts","sourceRoot":"","sources":["../../../../src/components/new-trace-viewer/components/split-pane.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,SAAS,EAEd,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AAOf,wBAAgB,OAAO,4CAEtB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kEAAkE;IAClE,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,gEAAgE;IAChE,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,kBAAkB,CAAC,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CACvD;AAED,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,SAAS,EACT,iBAAoC,EACpC,WAAW,EACX,SAAS,EACT,kBAAkB,GACnB,EAAE,cAAc,2CA4JhB"}
@@ -8,7 +8,7 @@ const DEFAULT_START_PX = 340;
8
8
  export function Divider() {
9
9
  return _jsx("div", { "aria-hidden": true, className: "h-full w-px shrink-0 bg-gray-alpha-400" });
10
10
  }
11
- export function SplitPane({ children, className, defaultStartWidth = DEFAULT_START_PX, startHeader, endHeader, }) {
11
+ export function SplitPane({ children, className, defaultStartWidth = DEFAULT_START_PX, startHeader, endHeader, scrollContainerRef, }) {
12
12
  const parts = Children.toArray(children);
13
13
  if (parts.length !== 2) {
14
14
  throw new Error('SplitPane expects exactly two children');
@@ -27,6 +27,12 @@ export function SplitPane({ children, className, defaultStartWidth = DEFAULT_STA
27
27
  cancelAnimationFrame(rafRef.current);
28
28
  };
29
29
  }, []);
30
+ const setContainerRef = useCallback((node) => {
31
+ containerRef.current = node;
32
+ if (scrollContainerRef) {
33
+ scrollContainerRef.current = node;
34
+ }
35
+ }, [scrollContainerRef]);
30
36
  const clampPx = useCallback((px) => {
31
37
  const el = containerRef.current;
32
38
  if (!el)
@@ -92,8 +98,8 @@ export function SplitPane({ children, className, defaultStartWidth = DEFAULT_STA
92
98
  const hasHeaders = startHeader != null || endHeader != null;
93
99
  const gutter = (_jsx("div", { ref: gutterRef, className: "relative z-20 isolate flex shrink-0 cursor-col-resize justify-center", onPointerDown: handlePointerDown, onLostPointerCapture: handleLostPointerCapture, children: _jsx("span", { className: "pointer-events-none relative z-10 h-full w-px shrink-0 bg-gray-alpha-400", "aria-hidden": true }) }));
94
100
  if (hasHeaders) {
95
- return (_jsxs("div", { className: cn('flex flex-col h-full min-h-0', className), children: [_jsxs("div", { className: "shrink-0 grid", style: { gridTemplateColumns: colTemplate }, children: [_jsx("div", { children: startHeader }), _jsx("div", { className: "flex justify-center", children: _jsx("span", { className: "h-full w-px bg-gray-alpha-400", "aria-hidden": true }) }), _jsx("div", { children: endHeader })] }), _jsxs("div", { ref: containerRef, className: cn('grid flex-1 min-h-0 overflow-x-hidden overflow-y-auto', isDragging && 'select-none'), style: { gridTemplateColumns: colTemplate }, children: [start, gutter, end] })] }));
101
+ return (_jsxs("div", { className: cn('flex flex-col h-full min-h-0', className), children: [_jsxs("div", { className: "shrink-0 grid", style: { gridTemplateColumns: colTemplate }, children: [_jsx("div", { children: startHeader }), _jsx("div", { className: "flex justify-center", children: _jsx("span", { className: "h-full w-px bg-gray-alpha-400", "aria-hidden": true }) }), _jsx("div", { children: endHeader })] }), _jsxs("div", { ref: setContainerRef, className: cn('grid flex-1 min-h-0 overflow-x-hidden overflow-y-auto', isDragging && 'select-none'), style: { gridTemplateColumns: colTemplate }, children: [start, gutter, end] })] }));
96
102
  }
97
- return (_jsxs("div", { ref: containerRef, className: cn('grid h-full min-h-0 content-start overflow-x-hidden overflow-y-auto', isDragging && 'select-none', className), style: { gridTemplateColumns: colTemplate, height: '100%' }, children: [start, gutter, end] }));
103
+ return (_jsxs("div", { ref: setContainerRef, className: cn('grid h-full min-h-0 content-start overflow-x-hidden overflow-y-auto', isDragging && 'select-none', className), style: { gridTemplateColumns: colTemplate, height: '100%' }, children: [start, gutter, end] }));
98
104
  }
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtcGFuZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL25ldy10cmFjZS12aWV3ZXIvY29tcG9uZW50cy9zcGxpdC1wYW5lLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBRWIsT0FBTyxFQUNMLFFBQVEsRUFHUixXQUFXLEVBQ1gsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEdBQ1QsTUFBTSxPQUFPLENBQUM7QUFDZixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNsQixNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztBQUU3QixNQUFNLFVBQVUsT0FBTztJQUNyQixPQUFPLG1DQUFpQixTQUFTLEVBQUMsd0NBQXdDLEdBQUcsQ0FBQztBQUNoRixDQUFDO0FBYUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxFQUN4QixRQUFRLEVBQ1IsU0FBUyxFQUNULGlCQUFpQixHQUFHLGdCQUFnQixFQUNwQyxXQUFXLEVBQ1gsU0FBUyxHQUNNO0lBQ2YsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUUzQixNQUFNLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzFELE1BQU0sQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxD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Y2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7XG4gIENoaWxkcmVuLFxuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBQb2ludGVyRXZlbnQgYXMgUmVhY3RQb2ludGVyRXZlbnQsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VFZmZlY3QsXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi4vLi4vLi4vbGliL3V0aWxzJztcblxuY29uc3QgR1VUVEVSX1BYID0gMTtcbmNvbnN0IE1JTl9QWCA9IDUwO1xuY29uc3QgREVGQVVMVF9TVEFSVF9QWCA9IDM0MDtcblxuZXhwb3J0IGZ1bmN0aW9uIERpdmlkZXIoKSB7XG4gIHJldHVybiA8ZGl2IGFyaWEtaGlkZGVuIGNsYXNzTmFtZT1cImgtZnVsbCB3LXB4IHNocmluay0wIGJnLWdyYXktYWxwaGEtNDAwXCIgLz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3BsaXRQYW5lUHJvcHMge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIC8qKiBGaXhlZCBwaXhlbCB3aWR0aCBmb3IgdGhlIHN0YXJ0IChsZWZ0KSBwYW5lLiBEZWZhdWx0IDIyMC4gKi9cbiAgZGVmYXVsdFN0YXJ0V2lkdGg/OiBudW1iZXI7XG4gIC8qKiBGaXhlZCAobm9uLXNjcm9sbGluZykgaGVhZGVyIHJlbmRlcmVkIGFib3ZlIHRoZSBzdGFydCBwYW5lLiAqL1xuICBzdGFydEhlYWRlcj86IFJlYWN0Tm9kZTtcbiAgLyoqIEZpeGVkIChub24tc2Nyb2xsaW5nKSBoZWFkZXIgcmVuZGVyZWQgYWJvdmUgdGhlIGVuZCBwYW5lLiAqL1xuICBlbmRIZWFkZXI/OiBSZWFjdE5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTcGxpdFBhbmUoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBkZWZhdWx0U3RhcnRXaWR0aCA9IERFRkFVTFRfU1RBUlRfUFgsXG4gIHN0YXJ0SGVhZGVyLFxuICBlbmRIZWFkZXIsXG59OiBTcGxpdFBhbmVQcm9wcykge1xuICBjb25zdCBwYXJ0cyA9IENoaWxkcmVuLnRvQXJyYXkoY2hpbGRyZW4pO1xuICBpZiAocGFydHMubGVuZ3RoICE9PSAyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTcGxpdFBhbmUgZXhwZWN0cyBleGFjdGx5IHR3byBjaGlsZHJlbicpO1xuICB9XG4gIGNvbnN0IFtzdGFydCwgZW5kXSA9IHBhcnRzO1xuXG4gIGNvbnN0IFtzdGFydFB4LCBzZXRTdGFydFB4XSA9IHVzZVN0YXRlKGRlZmF1bHRTdGFydFdpZHRoKTtcbiAgY29uc3QgW2lzRHJhZ2dpbmcsIHNldElzRHJhZ2dpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBndXR0ZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCByYWZSZWYgPSB1c2VSZWY8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHBlbmRpbmdQeCA9IHVzZVJlZihkZWZhdWx0U3RhcnRXaWR0aCk7XG4gIGNvbnN0IHBvaW50ZXJJZFJlZiA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAocmFmUmVmLmN1cnJlbnQpIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZlJlZi5jdXJyZW50KTtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgY29uc3QgY2xhbXBQeCA9IHVzZUNhbGxiYWNrKChweDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgZWwgPSBjb250YWluZXJSZWYuY3VycmVudDtcbiAgICBpZiAoIWVsKSByZXR1cm4gcHg7XG4gICAgY29uc3QgbWF4UHggPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCAtIE1JTl9QWCAtIEdVVFRFUl9QWDtcbiAgICByZXR1cm4gTWF0aC5taW4obWF4UHgsIE1hdGgubWF4KE1JTl9QWCwgcHgpKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0RyYWdnaW5nKSByZXR1cm47XG5cbiAgICBjb25zdCBvblBvaW50ZXJNb3ZlID0gKGU6IGdsb2JhbFRoaXMuUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICBpZiAoZS5wb2ludGVySWQgIT09IHBvaW50ZXJJZFJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgICBjb25zdCBjb250YWluZXIgPSBjb250YWluZXJSZWYuY3VycmVudDtcbiAgICAgIGlmICghY29udGFpbmVyKSByZXR1cm47XG4gICAgICBjb25zdCByZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgcGVuZGluZ1B4LmN1cnJlbnQgPSBjbGFtcFB4KGUuY2xpZW50WCAtIHJlY3QubGVmdCk7XG4gICAgICBpZiAoIXJhZlJlZi5jdXJyZW50KSB7XG4gICAgICAgIHJhZlJlZi5jdXJyZW50ID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICByYWZSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgc2V0U3RhcnRQeChwZW5kaW5nUHguY3VycmVudCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvblBvaW50ZXJVcCA9IChlOiBnbG9iYWxUaGlzLlBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgaWYgKGUucG9pbnRlcklkICE9PSBwb2ludGVySWRSZWYuY3VycmVudCkgcmV0dXJuO1xuICAgICAgY29uc3QgZ3V0dGVyID0gZ3V0dGVyUmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoZ3V0dGVyPy5oYXNQb2ludGVyQ2FwdHVyZShlLnBvaW50ZXJJZCkpIHtcbiAgICAgICAgZ3V0dGVyLnJlbGVhc2VQb2ludGVyQ2FwdHVyZShlLnBvaW50ZXJJZCk7XG4gICAgICB9XG4gICAgICBpZiAocmFmUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmUmVmLmN1cnJlbnQpO1xuICAgICAgICByYWZSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICB9XG4gICAgICBwb2ludGVySWRSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICBzZXRJc0RyYWdnaW5nKGZhbHNlKTtcbiAgICB9O1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBvblBvaW50ZXJNb3ZlKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCBvblBvaW50ZXJVcCk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmNhbmNlbCcsIG9uUG9pbnRlclVwKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVybW92ZScsIG9uUG9pbnRlck1vdmUpO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgb25Qb2ludGVyVXApO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcmNhbmNlbCcsIG9uUG9pbnRlclVwKTtcbiAgICB9O1xuICB9LCBbaXNEcmFnZ2luZywgY2xhbXBQeF0pO1xuXG4gIGNvbnN0IGhhbmRsZVBvaW50ZXJEb3duID0gKGU6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGUuY3VycmVudFRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShlLnBvaW50ZXJJZCk7XG4gICAgcG9pbnRlcklkUmVmLmN1cnJlbnQgPSBlLnBvaW50ZXJJZDtcbiAgICBzZXRJc0RyYWdnaW5nKHRydWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUxvc3RQb2ludGVyQ2FwdHVyZSA9ICgpID0+IHtcbiAgICBwb2ludGVySWRSZWYuY3VycmVudCA9IG51bGw7XG4gICAgc2V0SXNEcmFnZ2luZyhmYWxzZSk7XG4gICAgaWYgKHJhZlJlZi5jdXJyZW50KSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyYWZSZWYuY3VycmVudCk7XG4gICAgICByYWZSZWYuY3VycmVudCA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNvbFRlbXBsYXRlID0gYCR7c3RhcnRQeH1weCAke0dVVFRFUl9QWH1weCBtaW5tYXgoJHtNSU5fUFh9cHgsIDFmcilgO1xuICBjb25zdCBoYXNIZWFkZXJzID0gc3RhcnRIZWFkZXIgIT0gbnVsbCB8fCBlbmRIZWFkZXIgIT0gbnVsbDtcblxuICBjb25zdCBndXR0ZXIgPSAoXG4gICAgPGRpdlxuICAgICAgcmVmPXtndXR0ZXJSZWZ9XG4gICAgICBjbGFzc05hbWU9XCJyZWxhdGl2ZSB6LTIwIGlzb2xhdGUgZmxleCBzaHJpbmstMCBjdXJzb3ItY29sLXJlc2l6ZSBqdXN0aWZ5LWNlbnRlclwiXG4gICAgICBvblBvaW50ZXJEb3duPXtoYW5kbGVQb2ludGVyRG93bn1cbiAgICAgIG9uTG9zdFBvaW50ZXJDYXB0dXJlPXtoYW5kbGVMb3N0UG9pbnRlckNhcHR1cmV9XG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3NOYW1lPVwicG9pbnRlci1ldmVudHMtbm9uZSByZWxhdGl2ZSB6LTEwIGgtZnVsbCB3LXB4IHNocmluay0wIGJnLWdyYXktYWxwaGEtNDAwXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICk7XG5cbiAgaWYgKGhhc0hlYWRlcnMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKCdmbGV4IGZsZXgtY29sIGgtZnVsbCBtaW4taC0wJywgY2xhc3NOYW1lKX0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJzaHJpbmstMCBncmlkXCJcbiAgICAgICAgICBzdHlsZT17eyBncmlkVGVtcGxhdGVDb2x1bW5zOiBjb2xUZW1wbGF0ZSB9fVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdj57c3RhcnRIZWFkZXJ9PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJoLWZ1bGwgdy1weCBiZy1ncmF5LWFscGhhLTQwMFwiIGFyaWEtaGlkZGVuIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdj57ZW5kSGVhZGVyfTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAnZ3JpZCBmbGV4LTEgbWluLWgtMCBvdmVyZmxvdy14LWhpZGRlbiBvdmVyZmxvdy15LWF1dG8nLFxuICAgICAgICAgICAgaXNEcmFnZ2luZyAmJiAnc2VsZWN0LW5vbmUnXG4gICAgICAgICAgKX1cbiAgICAgICAgICBzdHlsZT17eyBncmlkVGVtcGxhdGVDb2x1bW5zOiBjb2xUZW1wbGF0ZSB9fVxuICAgICAgICA+XG4gICAgICAgICAge3N0YXJ0fVxuICAgICAgICAgIHtndXR0ZXJ9XG4gICAgICAgICAge2VuZH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdncmlkIGgtZnVsbCBtaW4taC0wIGNvbnRlbnQtc3RhcnQgb3ZlcmZsb3cteC1oaWRkZW4gb3ZlcmZsb3cteS1hdXRvJyxcbiAgICAgICAgaXNEcmFnZ2luZyAmJiAnc2VsZWN0LW5vbmUnLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICBzdHlsZT17eyBncmlkVGVtcGxhdGVDb2x1bW5zOiBjb2xUZW1wbGF0ZSwgaGVpZ2h0OiAnMTAwJScgfX1cbiAgICA+XG4gICAgICB7c3RhcnR9XG4gICAgICB7Z3V0dGVyfVxuICAgICAge2VuZH1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdfQ==
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtcGFuZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL25ldy10cmFjZS12aWV3ZXIvY29tcG9uZW50cy9zcGxpdC1wYW5lLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBRWIsT0FBTyxFQUNMLFFBQVEsRUFJUixXQUFXLEVBQ1gsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEdBQ1QsTUFBTSxPQUFPLENBQUM7QUFDZixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNsQixNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztBQUU3QixNQUFNLFVBQVUsT0FBTztJQUNyQixPQUFPLG1DQUFpQixTQUFTLEVBQUMsd0NBQXdDLEdBQUcsQ0FBQztBQUNoRixDQUFDO0FBY0QsTUFBTSxVQUFVLFNBQVMsQ0FBQyxFQUN4QixRQUFRLEVBQ1IsU0FBUyxFQUNULGlCQUFpQixHQUFHLGdCQUFnQixFQUNwQyxXQUFXLEVBQ1gsU0FBUyxFQUNULGtCQUFrQixHQUNIO0lBQ2YsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUUzQixNQUFNLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzFELE1BQU0sQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLEdBQUcsUUFBUSxDQUFD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LENBQ0wsZUFDRSxHQUFHLEVBQUUsZUFBZSxFQUNwQixTQUFTLEVBQUUsRUFBRSxDQUNYLHFFQUFxRSxFQUNyRSxVQUFVLElBQUksYUFBYSxFQUMzQixTQUFTLENBQ1YsRUFDRCxLQUFLLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUUxRCxLQUFLLEVBQ0wsTUFBTSxFQUNOLEdBQUcsSUFDQSxDQUNQLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQge1xuICBDaGlsZHJlbixcbiAgdHlwZSBSZWFjdE5vZGUsXG4gIHR5cGUgUG9pbnRlckV2ZW50IGFzIFJlYWN0UG9pbnRlckV2ZW50LFxuICB0eXBlIFJlZk9iamVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuXG5jb25zdCBHVVRURVJfUFggPSAxO1xuY29uc3QgTUlOX1BYID0gNTA7XG5jb25zdCBERUZBVUxUX1NUQVJUX1BYID0gMzQwO1xuXG5leHBvcnQgZnVuY3Rpb24gRGl2aWRlcigpIHtcbiAgcmV0dXJuIDxkaXYgYXJpYS1oaWRkZW4gY2xhc3NOYW1lPVwiaC1mdWxsIHctcHggc2hyaW5rLTAgYmctZ3JheS1hbHBoYS00MDBcIiAvPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTcGxpdFBhbmVQcm9wcyB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgLyoqIEZpeGVkIHBpeGVsIHdpZHRoIGZvciB0aGUgc3RhcnQgKGxlZnQpIHBhbmUuIERlZmF1bHQgMjIwLiAqL1xuICBkZWZhdWx0U3RhcnRXaWR0aD86IG51bWJlcjtcbiAgLyoqIEZpeGVkIChub24tc2Nyb2xsaW5nKSBoZWFkZXIgcmVuZGVyZWQgYWJvdmUgdGhlIHN0YXJ0IHBhbmUuICovXG4gIHN0YXJ0SGVhZGVyPzogUmVhY3ROb2RlO1xuICAvKiogRml4ZWQgKG5vbi1zY3JvbGxpbmcpIGhlYWRlciByZW5kZXJlZCBhYm92ZSB0aGUgZW5kIHBhbmUuICovXG4gIGVuZEhlYWRlcj86IFJlYWN0Tm9kZTtcbiAgc2Nyb2xsQ29udGFpbmVyUmVmPzogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTcGxpdFBhbmUoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBkZWZhdWx0U3RhcnRXaWR0aCA9IERFRkFVTFRfU1RBUlRfUFgsXG4gIHN0YXJ0SGVhZGVyLFxuICBlbmRIZWFkZXIsXG4gIHNjcm9sbENvbnRhaW5lclJlZixcbn06IFNwbGl0UGFuZVByb3BzKSB7XG4gIGNvbnN0IHBhcnRzID0gQ2hpbGRyZW4udG9BcnJheShjaGlsZHJlbik7XG4gIGlmIChwYXJ0cy5sZW5ndGggIT09IDIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NwbGl0UGFuZSBleHBlY3RzIGV4YWN0bHkgdHdvIGNoaWxkcmVuJyk7XG4gIH1cbiAgY29uc3QgW3N0YXJ0LCBlbmRdID0gcGFydHM7XG5cbiAgY29uc3QgW3N0YXJ0UHgsIHNldFN0YXJ0UHhdID0gdXNlU3RhdGUoZGVmYXVsdFN0YXJ0V2lkdGgpO1xuICBjb25zdCBbaXNEcmFnZ2luZywgc2V0SXNEcmFnZ2luZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGd1dHRlclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IHJhZlJlZiA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgY29uc3QgcGVuZGluZ1B4ID0gdXNlUmVmKGRlZmF1bHRTdGFydFdpZHRoKTtcbiAgY29uc3QgcG9pbnRlcklkUmVmID0gdXNlUmVmPG51bWJlciB8IG51bGw+KG51bGwpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChyYWZSZWYuY3VycmVudCkgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmUmVmLmN1cnJlbnQpO1xuICAgIH07XG4gIH0sIFtdKTtcblxuICBjb25zdCBzZXRDb250YWluZXJSZWYgPSB1c2VDYWxsYmFjayhcbiAgICAobm9kZTogSFRNTERpdkVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgICBjb250YWluZXJSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICBpZiAoc2Nyb2xsQ29udGFpbmVyUmVmKSB7XG4gICAgICAgIHNjcm9sbENvbnRhaW5lclJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzY3JvbGxDb250YWluZXJSZWZdXG4gICk7XG5cbiAgY29uc3QgY2xhbXBQeCA9IHVzZUNhbGxiYWNrKChweDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgZWwgPSBjb250YWluZXJSZWYuY3VycmVudDtcbiAgICBpZiAoIWVsKSByZXR1cm4gcHg7XG4gICAgY29uc3QgbWF4UHggPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCAtIE1JTl9QWCAtIEdVVFRFUl9QWDtcbiAgICByZXR1cm4gTWF0aC5taW4obWF4UHgsIE1hdGgubWF4KE1JTl9QWCwgcHgpKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0RyYWdnaW5nKSByZXR1cm47XG5cbiAgICBjb25zdCBvblBvaW50ZXJNb3ZlID0gKGU6IGdsb2JhbFRoaXMuUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICBpZiAoZS5wb2ludGVySWQgIT09IHBvaW50ZXJJZFJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgICBjb25zdCBjb250YWluZXIgPSBjb250YWluZXJSZWYuY3VycmVudDtcbiAgICAgIGlmICghY29udGFpbmVyKSByZXR1cm47XG4gICAgICBjb25zdCByZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgcGVuZGluZ1B4LmN1cnJlbnQgPSBjbGFtcFB4KGUuY2xpZW50WCAtIHJlY3QubGVmdCk7XG4gICAgICBpZiAoIXJhZlJlZi5jdXJyZW50KSB7XG4gICAgICAgIHJhZlJlZi5jdXJyZW50ID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICByYWZSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgc2V0U3RhcnRQeChwZW5kaW5nUHguY3VycmVudCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvblBvaW50ZXJVcCA9IChlOiBnbG9iYWxUaGlzLlBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgaWYgKGUucG9pbnRlcklkICE9PSBwb2ludGVySWRSZWYuY3VycmVudCkgcmV0dXJuO1xuICAgICAgY29uc3QgZ3V0dGVyID0gZ3V0dGVyUmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoZ3V0dGVyPy5oYXNQb2ludGVyQ2FwdHVyZShlLnBvaW50ZXJJZCkpIHtcbiAgICAgICAgZ3V0dGVyLnJlbGVhc2VQb2ludGVyQ2FwdHVyZShlLnBvaW50ZXJJZCk7XG4gICAgICB9XG4gICAgICBpZiAocmFmUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmUmVmLmN1cnJlbnQpO1xuICAgICAgICByYWZSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICB9XG4gICAgICBwb2ludGVySWRSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICBzZXRJc0RyYWdnaW5nKGZhbHNlKTtcbiAgICB9O1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBvblBvaW50ZXJNb3ZlKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCBvblBvaW50ZXJVcCk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmNhbmNlbCcsIG9uUG9pbnRlclVwKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVybW92ZScsIG9uUG9pbnRlck1vdmUpO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgb25Qb2ludGVyVXApO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcmNhbmNlbCcsIG9uUG9pbnRlclVwKTtcbiAgICB9O1xuICB9LCBbaXNEcmFnZ2luZywgY2xhbXBQeF0pO1xuXG4gIGNvbnN0IGhhbmRsZVBvaW50ZXJEb3duID0gKGU6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGUuY3VycmVudFRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShlLnBvaW50ZXJJZCk7XG4gICAgcG9pbnRlcklkUmVmLmN1cnJlbnQgPSBlLnBvaW50ZXJJZDtcbiAgICBzZXRJc0RyYWdnaW5nKHRydWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUxvc3RQb2ludGVyQ2FwdHVyZSA9ICgpID0+IHtcbiAgICBwb2ludGVySWRSZWYuY3VycmVudCA9IG51bGw7XG4gICAgc2V0SXNEcmFnZ2luZyhmYWxzZSk7XG4gICAgaWYgKHJhZlJlZi5jdXJyZW50KSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyYWZSZWYuY3VycmVudCk7XG4gICAgICByYWZSZWYuY3VycmVudCA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNvbFRlbXBsYXRlID0gYCR7c3RhcnRQeH1weCAke0dVVFRFUl9QWH1weCBtaW5tYXgoJHtNSU5fUFh9cHgsIDFmcilgO1xuICBjb25zdCBoYXNIZWFkZXJzID0gc3RhcnRIZWFkZXIgIT0gbnVsbCB8fCBlbmRIZWFkZXIgIT0gbnVsbDtcblxuICBjb25zdCBndXR0ZXIgPSAoXG4gICAgPGRpdlxuICAgICAgcmVmPXtndXR0ZXJSZWZ9XG4gICAgICBjbGFzc05hbWU9XCJyZWxhdGl2ZSB6LTIwIGlzb2xhdGUgZmxleCBzaHJpbmstMCBjdXJzb3ItY29sLXJlc2l6ZSBqdXN0aWZ5LWNlbnRlclwiXG4gICAgICBvblBvaW50ZXJEb3duPXtoYW5kbGVQb2ludGVyRG93bn1cbiAgICAgIG9uTG9zdFBvaW50ZXJDYXB0dXJlPXtoYW5kbGVMb3N0UG9pbnRlckNhcHR1cmV9XG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3NOYW1lPVwicG9pbnRlci1ldmVudHMtbm9uZSByZWxhdGl2ZSB6LTEwIGgtZnVsbCB3LXB4IHNocmluay0wIGJnLWdyYXktYWxwaGEtNDAwXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICk7XG5cbiAgaWYgKGhhc0hlYWRlcnMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKCdmbGV4IGZsZXgtY29sIGgtZnVsbCBtaW4taC0wJywgY2xhc3NOYW1lKX0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJzaHJpbmstMCBncmlkXCJcbiAgICAgICAgICBzdHlsZT17eyBncmlkVGVtcGxhdGVDb2x1bW5zOiBjb2xUZW1wbGF0ZSB9fVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdj57c3RhcnRIZWFkZXJ9PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJoLWZ1bGwgdy1weCBiZy1ncmF5LWFscGhhLTQwMFwiIGFyaWEtaGlkZGVuIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdj57ZW5kSGVhZGVyfTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHJlZj17c2V0Q29udGFpbmVyUmVmfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAnZ3JpZCBmbGV4LTEgbWluLWgtMCBvdmVyZmxvdy14LWhpZGRlbiBvdmVyZmxvdy15LWF1dG8nLFxuICAgICAgICAgICAgaXNEcmFnZ2luZyAmJiAnc2VsZWN0LW5vbmUnXG4gICAgICAgICAgKX1cbiAgICAgICAgICBzdHlsZT17eyBncmlkVGVtcGxhdGVDb2x1bW5zOiBjb2xUZW1wbGF0ZSB9fVxuICAgICAgICA+XG4gICAgICAgICAge3N0YXJ0fVxuICAgICAgICAgIHtndXR0ZXJ9XG4gICAgICAgICAge2VuZH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByZWY9e3NldENvbnRhaW5lclJlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdncmlkIGgtZnVsbCBtaW4taC0wIGNvbnRlbnQtc3RhcnQgb3ZlcmZsb3cteC1oaWRkZW4gb3ZlcmZsb3cteS1hdXRvJyxcbiAgICAgICAgaXNEcmFnZ2luZyAmJiAnc2VsZWN0LW5vbmUnLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICBzdHlsZT17eyBncmlkVGVtcGxhdGVDb2x1bW5zOiBjb2xUZW1wbGF0ZSwgaGVpZ2h0OiAnMTAwJScgfX1cbiAgICA+XG4gICAgICB7c3RhcnR9XG4gICAgICB7Z3V0dGVyfVxuICAgICAge2VuZH1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import type { ReactNode } from 'react';
2
2
  import type { Span } from '../../trace-viewer/types';
3
- import type { TimeMarker } from '../utils';
4
3
  import { type SpanSearchResult } from '../search';
4
+ import type { TimeMarker } from '../utils';
5
5
  export declare const TIMELINE_PADDING_PX = 16;
6
6
  declare const TimelineBar: import("react").NamedExoticComponent<{
7
7
  span: Span;
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../../../src/components/new-trace-viewer/components/timeline.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,KAAK,EAA0B,UAAU,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,EAAwB,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAcxE,eAAO,MAAM,mBAAmB,KAAK,CAAC;AA8OtC,QAAA,MAAM,WAAW;UAST,IAAI;eACC,MAAM;kBACH,MAAM;oBACJ,MAAM;gBACV,OAAO;eACR,OAAO;cACR,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;EAmFlC,CAAC;AAEH,OAAO,EAAE,WAAW,EAAE,CAAC;AAqDvB,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,SAAS,GACV,EAAE;IACD,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACxD,GAAG,SAAS,CAwBZ;AAMD,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,SAAS,EACT,OAAO,EACP,OAAO,EACP,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,OAAe,GAChB,EAAE;IACD,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,gBAAgB,CAAC;IAC/B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,SAAS,CAiFZ"}
1
+ {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../../../src/components/new-trace-viewer/components/timeline.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAwB,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,KAAK,EAA0B,UAAU,EAAE,MAAM,UAAU,CAAC;AAenE,eAAO,MAAM,mBAAmB,KAAK,CAAC;AA8OtC,QAAA,MAAM,WAAW;UAST,IAAI;eACC,MAAM;kBACH,MAAM;oBACJ,MAAM;gBACV,OAAO;eACR,OAAO;cACR,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;EAmFlC,CAAC;AAEH,OAAO,EAAE,WAAW,EAAE,CAAC;AAiDvB,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,SAAS,GACV,EAAE;IACD,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACxD,GAAG,SAAS,CAwBZ;AAMD,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,SAAS,EACT,OAAO,EACP,OAAO,EACP,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,OAAe,GAChB,EAAE;IACD,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,gBAAgB,CAAC;IAC/B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,SAAS,CA4FZ"}
@@ -6,6 +6,7 @@ import { cn } from '../../../lib/utils';
6
6
  import { formatDuration, getHighResInMs } from '../../trace-viewer/util/timing';
7
7
  import { isSpanDimmedBySearch } from '../search';
8
8
  import { computeSpanGaps, computeSpanSegments, getResourceColor, getSpanDurationMs, } from '../utils';
9
+ import { ROW_HEIGHT_PX, useRowWindow } from './use-row-window';
9
10
  // ---------------------------------------------------------------------------
10
11
  // Constants
11
12
  // ---------------------------------------------------------------------------
@@ -173,17 +174,13 @@ export { TimelineBar };
173
174
  // ---------------------------------------------------------------------------
174
175
  // DeltaIndicator (Alt-key gap overlay)
175
176
  // ---------------------------------------------------------------------------
176
- // Row and indicator sizes are local to DeltaIndicator since it's the only
177
- // place that needs to compute Y positions from a row index. ROW_HEIGHT must
178
- // match the `h-10` (40px) row used in TimelineBar.
179
- const DELTA_ROW_HEIGHT_PX = 40;
180
177
  const DELTA_CAP_HEIGHT_PX = 8;
181
178
  // Vertical offset to sit the indicator inside the gap between row N and N+1,
182
179
  // aligned with where the bar starts in the next row (rows center a 24px bar
183
180
  // inside 40px, so bars start ~8px from the top of the row).
184
181
  const DELTA_ROW_OFFSET_PX = 8;
185
182
  const DeltaIndicator = memo(function DeltaIndicator({ leftFrac, rightFrac, label, rowIndex, }) {
186
- const centerY = DELTA_ROW_OFFSET_PX + (rowIndex + 1) * DELTA_ROW_HEIGHT_PX;
183
+ const centerY = DELTA_ROW_OFFSET_PX + (rowIndex + 1) * ROW_HEIGHT_PX;
187
184
  return (_jsxs("div", { className: "absolute pointer-events-none", style: {
188
185
  left: `${leftFrac * 100}%`,
189
186
  width: `${(rightFrac - leftFrac) * 100}%`,
@@ -205,6 +202,7 @@ export function Timeline({ spans, viewStart, viewEnd, markers, selectedId, searc
205
202
  const [containerWidth, setContainerWidth] = useState(0);
206
203
  const viewDuration = viewEnd - viewStart;
207
204
  const timelineWidth = Math.max(0, containerWidth - TIMELINE_PADDING_PX * 2);
205
+ const { start, end } = useRowWindow(containerRef, spans.length, ROW_HEIGHT_PX);
208
206
  useEffect(() => {
209
207
  const el = containerRef.current;
210
208
  if (!el)
@@ -216,8 +214,8 @@ export function Timeline({ spans, viewStart, viewEnd, markers, selectedId, searc
216
214
  return () => ro.disconnect();
217
215
  }, []);
218
216
  const gaps = useMemo(() => computeSpanGaps(spans, viewStart, viewEnd), [spans, viewStart, viewEnd]);
219
- return (_jsxs("div", { ref: containerRef, className: "relative h-full overflow-hidden", children: [_jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: markers.map((marker) =>
217
+ return (_jsxs("div", { ref: containerRef, className: "relative h-full overflow-hidden", style: { minHeight: spans.length * ROW_HEIGHT_PX }, children: [_jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: markers.map((marker) =>
220
218
  // Skip the "0s" origin marker since the left edge already implies it.
221
- Math.abs(marker.value) > 0.000001 ? (_jsx("div", { className: "absolute top-0 bottom-0 w-px bg-gray-alpha-300", style: { left: `${marker.position * 100}%` } }, `${marker.position}-${marker.label}`)) : null) }), hoverFraction != null && (_jsx("div", { className: "absolute inset-y-0 pointer-events-none z-10", style: TIMELINE_INSET_STYLE, children: _jsx("div", { className: "absolute top-0 bottom-0 w-px bg-gray-alpha-500", style: { left: `${hoverFraction * 100}%` } }) })), spans.map((span) => (_jsx(TimelineBar, { span: span, viewStart: viewStart, viewDuration: viewDuration, containerWidth: timelineWidth, isSelected: selectedId === span.spanId, isDimmed: isSpanDimmedBySearch(span.spanId, searchResult), onSelect: onSelect }, span.spanId))), altHeld && (_jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: gaps.map((gap) => (_jsx(DeltaIndicator, { leftFrac: gap.leftFrac, rightFrac: gap.rightFrac, label: formatDuration(gap.gapMs, true), rowIndex: gap.rowIndex }, gap.rowIndex))) }))] }));
219
+ Math.abs(marker.value) > 0.000001 ? (_jsx("div", { className: "absolute top-0 bottom-0 w-px bg-gray-alpha-300", style: { left: `${marker.position * 100}%` } }, `${marker.position}-${marker.label}`)) : null) }), hoverFraction != null && (_jsx("div", { className: "absolute inset-y-0 pointer-events-none z-10", style: TIMELINE_INSET_STYLE, children: _jsx("div", { className: "absolute top-0 bottom-0 w-px bg-gray-alpha-500", style: { left: `${hoverFraction * 100}%` } }) })), _jsx("div", { style: { transform: `translateY(${start * ROW_HEIGHT_PX}px)` }, children: spans.slice(start, end).map((span) => (_jsx(TimelineBar, { span: span, viewStart: viewStart, viewDuration: viewDuration, containerWidth: timelineWidth, isSelected: selectedId === span.spanId, isDimmed: isSpanDimmedBySearch(span.spanId, searchResult), onSelect: onSelect }, span.spanId))) }), altHeld && (_jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: gaps.map((gap) => (_jsx(DeltaIndicator, { leftFrac: gap.leftFrac, rightFrac: gap.rightFrac, label: formatDuration(gap.gapMs, true), rowIndex: gap.rowIndex }, gap.rowIndex))) }))] }));
222
220
  }
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9uZXctdHJhY2Utdmlld2VyL2NvbXBvbmVudHMvdGltZWxpbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDaEYsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFaEYsT0FBTyxFQUFFLG9CQUFvQixFQUF5QixNQUFNLFdBQVcsQ0FBQztBQUN4RSxPQUFPLEVBQ0wsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEdBQ2xCLE1BQU0sVUFBVSxDQUFDO0FBRWxCLDhFQUE4RTtBQUM5RSxZQUFZO0FBQ1osOEVBQThFO0FBRTlFLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztBQUV0QyxNQUFNLGVBQWUsR0FBa0M7SUFDckQsTUFBTSxFQUFFLG9DQUFvQztJQUM1QyxRQUFRLEVBQUUsb0NBQW9DO0lBQzlDLE9BQU8sRUFBRSxvQ0FBb0M7SUFDN0MsT0FBTyxFQUFFLG9DQUFvQztJQUM3QyxNQUFNLEVBQUUsa0NBQWtDO0lBQzFDLFNBQVMsRUFBRSxzQ0FBc0M7SUFDakQsUUFBUSxFQUFFLG9DQUFvQztJQUM5QyxRQUFRLEVBQUUsb0NBQW9DO0NBQy9DLENBQUM7QUFFRixN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QixDQUNILENBQUMsRUFDRCxPQUFPLElBQUksQ0FDVixtQ0FFRSxTQUFTLEVBQUMsd0NBQXdDLEVBQ2xELEtBQUssRUFBRSxvQkFBb0IsWUFFMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FDakIsS0FBQyxjQUFjLElBRWIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQ3RCLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUN4QixLQUFLLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQ3RDLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxJQUpqQixHQUFHLENBQUMsUUFBUSxDQUtqQixDQUNILENBQUMsR0FDRSxDQUNQLElBQ0csQ0FDUCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgQXJyb3dMZWZ0LCBBcnJvd1JpZ2h0IH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB0eXBlIHsgQ1NTUHJvcGVydGllcywgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgbWVtbywgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi4vLi4vLi4vbGliL3V0aWxzJztcbmltcG9ydCB0eXBlIHsgU3BhbiB9IGZyb20gJy4uLy4uL3RyYWNlLXZpZXdlci90eXBlcyc7XG5pbXBvcnQgeyBmb3JtYXREdXJhdGlvbiwgZ2V0SGlnaFJlc0luTXMgfSBmcm9tICcuLi8uLi90cmFjZS12aWV3ZXIvdXRpbC90aW1pbmcnO1xuaW1wb3J0IHR5cGUgeyBTZWdtZW50LCBTZWdtZW50U3RhdHVzLCBUaW1lTWFya2VyIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgaXNTcGFuRGltbWVkQnlTZWFyY2gsIHR5cGUgU3BhblNlYXJjaFJlc3VsdCB9IGZyb20gJy4uL3NlYXJjaCc7XG5pbXBvcnQge1xuICBjb21wdXRlU3BhbkdhcHMsXG4gIGNvbXB1dGVTcGFuU2VnbWVudHMsXG4gIGdldFJlc291cmNlQ29sb3IsXG4gIGdldFNwYW5EdXJhdGlvbk1zLFxufSBmcm9tICcuLi91dGlscyc7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ29uc3RhbnRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuY29uc3QgVElOWV9CQVJfQk9YX1NJWkVfUFggPSAyNDtcbmNvbnN0IFRJTllfQkFSX1dJRFRIX1BYID0gNDtcbmV4cG9ydCBjb25zdCBUSU1FTElORV9QQURESU5HX1BYID0gMTY7XG5cbmNvbnN0IFNFR01FTlRfQ0xBU1NFUzogUmVjb3JkPFNlZ21lbnRTdGF0dXMsIHN0cmluZz4gPSB7XG4gIHF1ZXVlZDogJ2JnLWdyYXktNDAwIGJvcmRlciBib3JkZXItZ3JheS01MDAnLFxuICByZXRyeWluZzogJ2JnLWdyYXktNDAwIGJvcmRlciBib3JkZXItZ3JheS01MDAnLFxuICB3YWl0aW5nOiAnYmctZ3JheS00MDAgYm9yZGVyIGJvcmRlci1ncmF5LTUwMCcsXG4gIHJ1bm5pbmc6ICdiZy1ibHVlLTIwMCBib3JkZXIgYm9yZGVyLWJsdWUtNTAwJyxcbiAgZmFpbGVkOiAnYmctcmVkLTIwMCBib3JkZXIgYm9yZGVyLXJlZC01MDAnLFxuICBzdWNjZWVkZWQ6ICdiZy1ncmVlbi0yMDAgYm9yZGVyIGJvcmRlci1ncmVlbi01MDAnLFxuICBzbGVlcGluZzogJ2JnLWdyYXktNDAwIGJvcmRlciBib3JkZXItZ3JheS01MDAnLFxuICByZWNlaXZlZDogJ2JnLWJsdWUtMjAwIGJvcmRlciBib3JkZXItYmx1ZS01MDAnLFxufTtcblxuY29uc3QgVElNRUxJTkVfSU5TRVRfU1RZTEU6IENTU1Byb3BlcnRpZXMgPSB7XG4gIGxlZnQ6IFRJTUVMSU5FX1BBRERJTkdfUFgsXG4gIHJpZ2h0OiBUSU1FTElORV9QQURESU5HX1BYLFxufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCYXIgZ2VvbWV0cnlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG50eXBlIEJhck1vZGUgPVxuICB8IHsga2luZDogJ2Fycm93JzsgZGlyZWN0aW9uOiAnbGVmdCcgfCAncmlnaHQnIH1cbiAgfCB7IGtpbmQ6ICd0aW55JyB9XG4gIHwgeyBraW5kOiAnZnVsbCcgfTtcblxuaW50ZXJmYWNlIEJhckdlb21ldHJ5IHtcbiAgbW9kZTogQmFyTW9kZTtcbiAgbGVmdFBjdDogbnVtYmVyO1xuICB3aWR0aFBjdDogbnVtYmVyO1xuICB2aXNpYmxlU3RhcnRNczogbnVtYmVyO1xuICB2aXNpYmxlRW5kTXM6IG51bWJlcjtcbiAgdmlzaWJsZVBpeGVsV2lkdGg6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDb21wdXRlIHRoZSBiYXIncyBnZW9tZXRyeSBpbnNpZGUgdGhlIHRpbWVsaW5lIHZpZXdwb3J0LiBQZXJjZW50YWdlcyBhcmVcbiAqIGFsd2F5cyBpbiBbMCwgMTAwXSBzbyB3ZSBuZXZlciBlbWl0IENTUyB2YWx1ZXMgdGhhdCBleGNlZWQgYnJvd3NlciBsYXlvdXRcbiAqIGxpbWl0cyBhdCBleHRyZW1lIHpvb20uXG4gKi9cbmZ1bmN0aW9uIGNvbXB1dGVCYXJHZW9tZXRyeShcbiAgc3RhcnRNczogbnVtYmVyLFxuICBlbmRNczogbnVtYmVyLFxuICB2aWV3U3RhcnQ6IG51bWJlcixcbiAgdmlld0VuZDogbnVtYmVyLFxuICBjb250YWluZXJXaWR0aDogbnVtYmVyXG4pOiBCYXJHZW9tZXRyeSB7XG4gIGNvbnN0IHZpZXdEdXJhdGlvbiA9IHZpZXdFbmQgLSB2aWV3U3RhcnQ7XG4gIGNvbnN0IHZpc2libGVTdGFydE1zID0gTWF0aC5tYXgoc3RhcnRNcywgdmlld1N0YXJ0KTtcbiAgY29uc3QgdmlzaWJsZUVuZE1zID0gTWF0aC5taW4oZW5kTXMsIHZpZXdFbmQpO1xuICBjb25zdCB2aXNpYmxlRHVyYXRpb25NcyA9IE1hdGgubWF4KDAsIHZpc2libGVFbmRNcyAtIHZpc2libGVTdGFydE1zKTtcbiAgY29uc3Qgd2lkdGhGcmFjID0gdmlld0R1cmF0aW9uID4gMCA/IHZpc2libGVEdXJhdGlvbk1zIC8gdmlld0R1cmF0aW9uIDogMDtcbiAgY29uc3QgdmlzaWJsZVBpeGVsV2lkdGggPSB3aWR0aEZyYWMgKiBjb250YWluZXJXaWR0aDtcblxuICBjb25zdCBpc1RpbnkgPSBjb250YWluZXJXaWR0aCA+IDAgJiYgdmlzaWJsZVBpeGVsV2lkdGggPCBUSU5ZX0JBUl9CT1hfU0laRV9QWDtcbiAgY29uc3QgZXh0ZW5kc09mZkxlZnQgPSBzdGFydE1zIDwgdmlld1N0YXJ0O1xuICBjb25zdCBleHRlbmRzT2ZmUmlnaHQgPSBlbmRNcyA+IHZpZXdFbmQ7XG5cbiAgY29uc3QgbW9kZTogQmFyTW9kZSA9XG4gICAgaXNUaW55ICYmIChleHRlbmRzT2ZmTGVmdCB8fCBleHRlbmRzT2ZmUmlnaHQpXG4gICAgICA/IHsga2luZDogJ2Fycm93JywgZGlyZWN0aW9uOiBleHRlbmRzT2ZmUmlnaHQgPyAncmlnaHQnIDogJ2xlZnQnIH1cbiAgICAgIDogaXNUaW55XG4gICAgICAgID8geyBraW5kOiAndGlueScgfVxuICAgICAgICA6IHsga2luZDogJ2Z1bGwnIH07XG5cbiAgcmV0dXJuIHtcbiAgICBtb2RlLFxuICAgIGxlZnRQY3Q6XG4gICAgICB2aWV3RHVyYXRpb24gPiAwXG4gICAgICAgID8gKCh2aXNpYmxlU3RhcnRNcyAtIHZpZXdTdGFydCkgLyB2aWV3RHVyYXRpb24pICogMTAwXG4gICAgICAgIDogMCxcbiAgICB3aWR0aFBjdDogd2lkdGhGcmFjICogMTAwLFxuICAgIHZpc2libGVTdGFydE1zLFxuICAgIHZpc2libGVFbmRNcyxcbiAgICB2aXNpYmxlUGl4ZWxXaWR0aCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0QmFyUG9zaXRpb25TdHlsZShnZW9tZXRyeTogQmFyR2VvbWV0cnkpOiB7XG4gIGxlZnQ6IHN0cmluZztcbiAgd2lkdGg6IHN0cmluZztcbn0ge1xuICBzd2l0Y2ggKGdlb21ldHJ5Lm1vZGUua2luZCkge1xuICAgIGNhc2UgJ2Fycm93JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQ6XG4gICAgICAgICAgZ2VvbWV0cnkubW9kZS5kaXJlY3Rpb24gPT09ICdyaWdodCdcbiAgICAgICAgICAgID8gYGNhbGMoMTAwJSAtICR7VElOWV9CQVJfQk9YX1NJWkVfUFh9cHgpYFxuICAgICAgICAgICAgOiAnMHB4JyxcbiAgICAgICAgd2lkdGg6IGAke1RJTllfQkFSX0JPWF9TSVpFX1BYfXB4YCxcbiAgICAgIH07XG4gICAgY2FzZSAndGlueSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsZWZ0OiBgbWluKCR7Z2VvbWV0cnkubGVmdFBjdH0lLCBjYWxjKDEwMCUgLSAke1RJTllfQkFSX1dJRFRIX1BYfXB4KSlgLFxuICAgICAgICB3aWR0aDogYCR7VElOWV9CQVJfV0lEVEhfUFh9cHhgLFxuICAgICAgfTtcbiAgICBjYXNlICdmdWxsJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQ6IGAke2dlb21ldHJ5LmxlZnRQY3R9JWAsXG4gICAgICAgIHdpZHRoOiBgbWF4KCR7Z2VvbWV0cnkud2lkdGhQY3R9JSwgNHB4KWAsXG4gICAgICB9O1xuICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VnbWVudCBwcm9qZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuaW50ZXJmYWNlIFZpc2libGVTZWdtZW50IHtcbiAgc3RhdHVzOiBTZWdtZW50U3RhdHVzO1xuICBsZWZ0UGN0OiBudW1iZXI7XG4gIHdpZHRoUGN0OiBudW1iZXI7XG4gIHBpeGVsV2lkdGg6IG51bWJlcjtcbiAgZnVsbER1cmF0aW9uTXM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQcm9qZWN0IHN0YXR1cyBzZWdtZW50cyBvbnRvIHRoZSB2aXNpYmxlIHBvcnRpb24gb2YgYSBiYXIuIFNlZ21lbnRzIGZ1bGx5XG4gKiBvdXRzaWRlIHRoZSB2aXNpYmxlIHdpbmRvdyBhcmUgZHJvcHBlZDsgc2VnbWVudHMgY3Jvc3NpbmcgdGhlIGVkZ2UgYXJlXG4gKiBjbGlwcGVkIHRvIFswJSwgMTAwJV0gb2YgdGhlIHZpc2libGUgYmFyLlxuICovXG5mdW5jdGlvbiBwcm9qZWN0U2VnbWVudHMoXG4gIHNlZ21lbnRzOiBTZWdtZW50W10sXG4gIHNwYW5TdGFydE1zOiBudW1iZXIsXG4gIHNwYW5EdXJhdGlvbk1zOiBudW1iZXIsXG4gIGdlb21ldHJ5OiBCYXJHZW9tZXRyeVxuKTogVmlzaWJsZVNlZ21lbnRbXSB7XG4gIGNvbnN0IHZpc2libGVEdXJhdGlvbk1zID0gZ2VvbWV0cnkudmlzaWJsZUVuZE1zIC0gZ2VvbWV0cnkudmlzaWJsZVN0YXJ0TXM7XG4gIGlmICh2aXNpYmxlRHVyYXRpb25NcyA8PSAwKSByZXR1cm4gW107XG5cbiAgcmV0dXJuIHNlZ21lbnRzLmZsYXRNYXAoKHNlZykgPT4ge1xuICAgIGNvbnN0IHNlZ1N0YXJ0TXMgPSBzcGFuU3RhcnRNcyArIHNlZy5zdGFydEZyYWN0aW9uICogc3BhbkR1cmF0aW9uTXM7XG4gICAgY29uc3Qgc2VnRW5kTXMgPSBzcGFuU3RhcnRNcyArIHNlZy5lbmRGcmFjdGlvbiAqIHNwYW5EdXJhdGlvbk1zO1xuICAgIGNvbnN0IHN0YXJ0TXMgPSBNYXRoLm1heChzZWdTdGFydE1zLCBnZW9tZXRyeS52aXNpYmxlU3RhcnRNcyk7XG4gICAgY29uc3QgZW5kTXMgPSBNYXRoLm1pbihzZWdFbmRNcywgZ2VvbWV0cnkudmlzaWJsZUVuZE1zKTtcbiAgICBpZiAoZW5kTXMgPD0gc3RhcnRNcykgcmV0dXJuIFtdO1xuXG4gICAgY29uc3Qgd2lkdGhGcmFjID0gKGVuZE1zIC0gc3RhcnRNcykgLyB2aXNpYmxlRHVyYXRpb25NcztcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBzdGF0dXM6IHNlZy5zdGF0dXMsXG4gICAgICAgIGxlZnRQY3Q6XG4gICAgICAgICAgKChzdGFydE1zIC0gZ2VvbWV0cnkudmlzaWJsZVN0YXJ0TXMpIC8gdmlzaWJsZUR1cmF0aW9uTXMpICogMTAwLFxuICAgICAgICB3aWR0aFBjdDogd2lkdGhGcmFjICogMTAwLFxuICAgICAgICBwaXhlbFdpZHRoOiB3aWR0aEZyYWMgKiBnZW9tZXRyeS52aXNpYmxlUGl4ZWxXaWR0aCxcbiAgICAgICAgZnVsbER1cmF0aW9uTXM6IChzZWcuZW5kRnJhY3Rpb24gLSBzZWcuc3RhcnRGcmFjdGlvbikgKiBzcGFuRHVyYXRpb25NcyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfSk7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU21hbGwgcmVuZGVyIGhlbHBlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBEdXJhdGlvbkxhYmVsKHsgbGFiZWwgfTogeyBsYWJlbDogc3RyaW5nIH0pOiBSZWFjdE5vZGUge1xuICByZXR1cm4gKFxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgaW5zZXQtMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LXN0YXJ0IG92ZXJmbG93LWhpZGRlbiBweC0xIHRleHQtWzEwcHhdIGZvbnQtbW9ubyBmb250LW1lZGl1bSBsZWFkaW5nLW5vbmUgd2hpdGVzcGFjZS1ub3dyYXAgdGV4dC1sZWZ0IHRleHQtZ3JheS0xMDAwIHRhYnVsYXItbnVtcyBvcGFjaXR5LTAgZ3JvdXAtaG92ZXIvdGltZWxpbmUtcm93Om9wYWNpdHktMTAwXCI+XG4gICAgICB7bGFiZWx9XG4gICAgPC9zcGFuPlxuICApO1xufVxuXG5mdW5jdGlvbiBCb3VuZGFyeUFycm93KHtcbiAgZGlyZWN0aW9uLFxufToge1xuICBkaXJlY3Rpb246ICdsZWZ0JyB8ICdyaWdodCc7XG59KTogUmVhY3ROb2RlIHtcbiAgY29uc3QgSWNvbiA9IGRpcmVjdGlvbiA9PT0gJ3JpZ2h0JyA/IEFycm93UmlnaHQgOiBBcnJvd0xlZnQ7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGgtNiB3LTYgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtWzAuMjVyZW1dXCI+XG4gICAgICA8SWNvbiBjbGFzc05hbWU9XCJzaXplLTMgdGV4dC1ncmF5LTkwMFwiIC8+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFBsYWluQmFyKHtcbiAgYmcsXG4gIGJvcmRlcixcbiAgbGFiZWwsXG59OiB7XG4gIGJnOiBzdHJpbmc7XG4gIGJvcmRlcjogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbn0pOiBSZWFjdE5vZGUge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT1cInJlbGF0aXZlIGgtNiB3LWZ1bGwgbWluLXctMSByb3VuZGVkLVswLjI1cmVtXSBib3JkZXJcIlxuICAgICAgc3R5bGU9e3sgYmFja2dyb3VuZDogYmcsIGJvcmRlckNvbG9yOiBib3JkZXIgfX1cbiAgICA+XG4gICAgICB7bGFiZWwgPyA8RHVyYXRpb25MYWJlbCBsYWJlbD17bGFiZWx9IC8+IDogbnVsbH1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gU2VnbWVudEJhcih7IHNlZ21lbnRzIH06IHsgc2VnbWVudHM6IFZpc2libGVTZWdtZW50W10gfSk6IFJlYWN0Tm9kZSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBoLTYgdy1mdWxsXCI+XG4gICAgICB7c2VnbWVudHMubWFwKChzZWcsIGkpID0+IHtcbiAgICAgICAgY29uc3QgbGFiZWwgPSBmb3JtYXREdXJhdGlvbihzZWcuZnVsbER1cmF0aW9uTXMpO1xuICAgICAgICAvLyBPbmx5IHJlbmRlciB0aGUgbGFiZWwgd2hlbiB0aGVyZSdzIGVub3VnaCByb29tIGZvciBpdCB3aXRob3V0IGNsaXBwaW5nLlxuICAgICAgICBjb25zdCBzaG93TGFiZWwgPSBzZWcucGl4ZWxXaWR0aCA+PSBNYXRoLm1heCg0MCwgbGFiZWwubGVuZ3RoICogNiArIDEyKTtcbiAgICAgICAgLy8gQmVlZiB1cCB0aGUgcXVldWVkIHNlZ21lbnQgd2hlbiBpdCdzIHRvbyBuYXJyb3cgdG8gcmVhZC5cbiAgICAgICAgY29uc3QgaXNOYXJyb3dRdWV1ZWQgPSBzZWcuc3RhdHVzID09PSAncXVldWVkJyAmJiBzZWcucGl4ZWxXaWR0aCA8IDIwO1xuICAgICAgICBjb25zdCBvdmVycmlkZUJnID0gaXNOYXJyb3dRdWV1ZWQgPyAndmFyKC0tZHMtZ3JheS00MDApJyA6IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3Qgb3ZlcnJpZGVCb3JkZXIgPSBpc05hcnJvd1F1ZXVlZFxuICAgICAgICAgID8gJ3ZhcigtLWRzLWdyYXktNTAwKSdcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGtleT17YCR7c2VnLnN0YXR1c30tJHtpfWB9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAnYWJzb2x1dGUgaC1mdWxsIHJvdW5kZWQtWzAuMjVyZW1dJyxcbiAgICAgICAgICAgICAgU0VHTUVOVF9DTEFTU0VTW3NlZy5zdGF0dXNdXG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgLy8gMXB4IGdhcCBiZXR3ZWVuIGFkamFjZW50IHNlZ21lbnRzLCBkaXN0cmlidXRlZCBlcXVhbGx5LlxuICAgICAgICAgICAgICBsZWZ0OiBgY2FsYygke3NlZy5sZWZ0UGN0fSUgKyAwLjVweClgLFxuICAgICAgICAgICAgICB3aWR0aDogYGNhbGMoJHtzZWcud2lkdGhQY3R9JSAtIDFweClgLFxuICAgICAgICAgICAgICBtaW5XaWR0aDogMSxcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogb3ZlcnJpZGVCZyxcbiAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6IG92ZXJyaWRlQm9yZGVyLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2hvd0xhYmVsID8gPER1cmF0aW9uTGFiZWwgbGFiZWw9e2xhYmVsfSAvPiA6IG51bGx9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgICB9KX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaW1lbGluZUJhclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmNvbnN0IFRpbWVsaW5lQmFyID0gbWVtbyhmdW5jdGlvbiBUaW1lbGluZUJhcih7XG4gIHNwYW4sXG4gIHZpZXdTdGFydCxcbiAgdmlld0R1cmF0aW9uLFxuICBjb250YWluZXJXaWR0aCxcbiAgaXNTZWxlY3RlZCxcbiAgaXNEaW1tZWQsXG4gIG9uU2VsZWN0LFxufToge1xuICBzcGFuOiBTcGFuO1xuICB2aWV3U3RhcnQ6IG51bWJlcjtcbiAgdmlld0R1cmF0aW9uOiBudW1iZXI7XG4gIGNvbnRhaW5lcldpZHRoOiBudW1iZXI7XG4gIGlzU2VsZWN0ZWQ6IGJvb2xlYW47XG4gIGlzRGltbWVkPzogYm9vbGVhbjtcbiAgb25TZWxlY3Q6IChzcGFuSWQ6IHN0cmluZykgPT4gdm9pZDtcbn0pOiBSZWFjdE5vZGUge1xuICBjb25zdCBzdGFydE1zID0gZ2V0SGlnaFJlc0luTXMoc3Bhbi5zdGFydFRpbWUpO1xuICBjb25zdCBlbmRNcyA9IGdldEhpZ2hSZXNJbk1zKHNwYW4uZW5kVGltZSk7XG4gIGNvbnN0IHRvdGFsRHVyYXRpb25NcyA9IGdldFNwYW5EdXJhdGlvbk1zKHNwYW4pO1xuXG4gIGNvbnN0IGdlb21ldHJ5ID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgY29tcHV0ZUJhckdlb21ldHJ5KFxuICAgICAgICBzdGFydE1zLFxuICAgICAgICBlbmRNcyxcbiAgICAgICAgdmlld1N0YXJ0LFxuICAgICAgICB2aWV3U3RhcnQgKyB2aWV3RHVyYXRpb24sXG4gICAgICAgIGNvbnRhaW5lcldpZHRoXG4gICAgICApLFxuICAgIFtzdGFydE1zLCBlbmRNcywgdmlld1N0YXJ0LCB2aWV3RHVyYXRpb24sIGNvbnRhaW5lcldpZHRoXVxuICApO1xuXG4gIGNvbnN0IGJhc2VTZWdtZW50cyA9IHVzZU1lbW8oKCkgPT4gY29tcHV0ZVNwYW5TZWdtZW50cyhzcGFuKSwgW3NwYW5dKTtcbiAgY29uc3Qgc2VnbWVudHMgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBnZW9tZXRyeS5tb2RlLmtpbmQgPT09ICdmdWxsJ1xuICAgICAgICA/IHByb2plY3RTZWdtZW50cyhiYXNlU2VnbWVudHMsIHN0YXJ0TXMsIHRvdGFsRHVyYXRpb25NcywgZ2VvbWV0cnkpXG4gICAgICAgIDogW10sXG4gICAgW2dlb21ldHJ5LCBiYXNlU2VnbWVudHMsIHN0YXJ0TXMsIHRvdGFsRHVyYXRpb25Nc11cbiAgKTtcblxuICBjb25zdCB3b3JrZmxvd1N0YXR1cyA9IChzcGFuLmF0dHJpYnV0ZXMuZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilcbiAgICA/LnN0YXR1cyBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IGlzRXJyb3JlZCA9IHNwYW4uc3RhdHVzLmNvZGUgPT09IDIgfHwgd29ya2Zsb3dTdGF0dXMgPT09ICdmYWlsZWQnO1xuICBjb25zdCBjb2xvcnMgPSBnZXRSZXNvdXJjZUNvbG9yKHNwYW4ucmVzb3VyY2UpO1xuICBjb25zdCBmYWxsYmFja0JnID0gaXNFcnJvcmVkXG4gICAgPyAoY29sb3JzLmVycm9yQmcgPz8gJ3ZhcigtLWRzLXJlZC0yMDApJylcbiAgICA6IGNvbG9ycy5iZztcbiAgY29uc3QgZmFsbGJhY2tCb3JkZXIgPSBpc0Vycm9yZWRcbiAgICA/IChjb2xvcnMuZXJyb3JCb3JkZXIgPz8gJ3ZhcigtLWRzLXJlZC01MDApJylcbiAgICA6IGNvbG9ycy5ib3JkZXI7XG5cbiAgY29uc3QgdG90YWxMYWJlbCA9IGZvcm1hdER1cmF0aW9uKHRvdGFsRHVyYXRpb25Ncyk7XG4gIGNvbnN0IHNob3dUb3RhbExhYmVsID1cbiAgICBnZW9tZXRyeS52aXNpYmxlUGl4ZWxXaWR0aCA+PSBNYXRoLm1heCg0MCwgdG90YWxMYWJlbC5sZW5ndGggKiA2ICsgMTIpO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIG9uU2VsZWN0KHNwYW4uc3BhbklkKTtcbiAgfSwgW29uU2VsZWN0LCBzcGFuLnNwYW5JZF0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcm9sZT1cInRyZWVpdGVtXCJcbiAgICAgIGFyaWEtc2VsZWN0ZWQ9e2lzU2VsZWN0ZWR9XG4gICAgICBhcmlhLWV4cGFuZGVkPXtpc1NlbGVjdGVkfVxuICAgICAgYXJpYS1sZXZlbD17MX1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdncm91cC90aW1lbGluZS1yb3cgaC0xMCByZWxhdGl2ZSBmbGV4IGl0ZW1zLWNlbnRlciBob3ZlcjpiZy1ncmF5LTEwMCBhcmlhLXNlbGVjdGVkOmJnLWdyYXktMTAwIGFyaWEtc2VsZWN0ZWQ6aG92ZXI6YmctZ3JheS0yMDAgdHJhbnNpdGlvbi1vcGFjaXR5JyxcbiAgICAgICAgaXNEaW1tZWQgJiYgJ29wYWNpdHktMzUnXG4gICAgICApfVxuICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC15LTBcIiBzdHlsZT17VElNRUxJTkVfSU5TRVRfU1RZTEV9PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTEvMiBoLTYgLXRyYW5zbGF0ZS15LTEvMiByb3VuZGVkLVswLjI1cmVtXVwiXG4gICAgICAgICAgc3R5bGU9e2dldEJhclBvc2l0aW9uU3R5bGUoZ2VvbWV0cnkpfVxuICAgICAgICA+XG4gICAgICAgICAge2dlb21ldHJ5Lm1vZGUua2luZCA9PT0gJ2Fycm93JyA/IChcbiAgICAgICAgICAgIDxCb3VuZGFyeUFycm93IGRpcmVjdGlvbj17Z2VvbWV0cnkubW9kZS5kaXJlY3Rpb259IC8+XG4gICAgICAgICAgKSA6IGdlb21ldHJ5Lm1vZGUua2luZCA9PT0gJ3RpbnknID8gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTYgcm91bmRlZC1bMC4yNXJlbV0gYm9yZGVyXCJcbiAgICAgICAgICAgICAgc3R5bGU9e3sgYmFja2dyb3VuZDogZmFsbGJhY2tCZywgYm9yZGVyQ29sb3I6IGZhbGxiYWNrQm9yZGVyIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBzZWdtZW50cy5sZW5ndGggPiAwID8gKFxuICAgICAgICAgICAgPFNlZ21lbnRCYXIgc2VnbWVudHM9e3NlZ21lbnRzfSAvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8UGxhaW5CYXJcbiAgICAgICAgICAgICAgYmc9e2ZhbGxiYWNrQmd9XG4gICAgICAgICAgICAgIGJvcmRlcj17ZmFsbGJhY2tCb3JkZXJ9XG4gICAgICAgICAgICAgIGxhYmVsPXtzaG93VG90YWxMYWJlbCA/IHRvdGFsTGFiZWwgOiBudWxsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufSk7XG5cbmV4cG9ydCB7IFRpbWVsaW5lQmFyIH07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRGVsdGFJbmRpY2F0b3IgKEFsdC1rZXkgZ2FwIG92ZXJsYXkpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gUm93IGFuZCBpbmRpY2F0b3Igc2l6ZXMgYXJlIGxvY2FsIHRvIERlbHRhSW5kaWNhdG9yIHNpbmNlIGl0J3MgdGhlIG9ubHlcbi8vIHBsYWNlIHRoYXQgbmVlZHMgdG8gY29tcHV0ZSBZIHBvc2l0aW9ucyBmcm9tIGEgcm93IGluZGV4LiBST1dfSEVJR0hUIG11c3Rcbi8vIG1hdGNoIHRoZSBgaC0xMGAgKDQwcHgpIHJvdyB1c2VkIGluIFRpbWVsaW5lQmFyLlxuY29uc3QgREVMVEFfUk9XX0hFSUdIVF9QWCA9IDQwO1xuY29uc3QgREVMVEFfQ0FQX0hFSUdIVF9QWCA9IDg7XG4vLyBWZXJ0aWNhbCBvZmZzZXQgdG8gc2l0IHRoZSBpbmRpY2F0b3IgaW5zaWRlIHRoZSBnYXAgYmV0d2VlbiByb3cgTiBhbmQgTisxLFxuLy8gYWxpZ25lZCB3aXRoIHdoZXJlIHRoZSBiYXIgc3RhcnRzIGluIHRoZSBuZXh0IHJvdyAocm93cyBjZW50ZXIgYSAyNHB4IGJhclxuLy8gaW5zaWRlIDQwcHgsIHNvIGJhcnMgc3RhcnQgfjhweCBmcm9tIHRoZSB0b3Agb2YgdGhlIHJvdykuXG5jb25zdCBERUxUQV9ST1dfT0ZGU0VUX1BYID0gODtcblxuY29uc3QgRGVsdGFJbmRpY2F0b3IgPSBtZW1vKGZ1bmN0aW9uIERlbHRhSW5kaWNhdG9yKHtcbiAgbGVmdEZyYWMsXG4gIHJpZ2h0RnJhYyxcbiAgbGFiZWwsXG4gIHJvd0luZGV4LFxufToge1xuICBsZWZ0RnJhYzogbnVtYmVyO1xuICByaWdodEZyYWM6IG51bWJlcjtcbiAgbGFiZWw6IHN0cmluZztcbiAgcm93SW5kZXg6IG51bWJlcjtcbn0pIHtcbiAgY29uc3QgY2VudGVyWSA9IERFTFRBX1JPV19PRkZTRVRfUFggKyAocm93SW5kZXggKyAxKSAqIERFTFRBX1JPV19IRUlHSFRfUFg7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSBwb2ludGVyLWV2ZW50cy1ub25lXCJcbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIGxlZnQ6IGAke2xlZnRGcmFjICogMTAwfSVgLFxuICAgICAgICB3aWR0aDogYCR7KHJpZ2h0RnJhYyAtIGxlZnRGcmFjKSAqIDEwMH0lYCxcbiAgICAgICAgdG9wOiBjZW50ZXJZIC0gREVMVEFfQ0FQX0hFSUdIVF9QWCAvIDIsXG4gICAgICAgIGhlaWdodDogREVMVEFfQ0FQX0hFSUdIVF9QWCxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgdy1weCBoLWZ1bGwgYmctYW1iZXItODAwXCIgLz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgbGVmdC0wIHJpZ2h0LTAgdG9wLTEvMiBoLXB4IGJnLWFtYmVyLTgwMFwiIC8+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHJpZ2h0LTAgdG9wLTAgdy1weCBoLWZ1bGwgYmctYW1iZXItODAwXCIgLz5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImFic29sdXRlIGxlZnQtMS8yIHRvcC0xLzIgLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIHRleHQtbGFiZWwtMTIgbGVhZGluZy1ub25lIHdoaXRlc3BhY2Utbm93cmFwIHJvdW5kZWQteHMgcHgtMSBweS0wLjUgdGV4dC1ncmF5LTEwMCBiZy1hbWJlci04MDBcIj5cbiAgICAgICAge2xhYmVsfVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICApO1xufSk7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGltZWxpbmVIZWFkZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgZnVuY3Rpb24gVGltZWxpbmVIZWFkZXIoe1xuICBtYXJrZXJzLFxuICBob3ZlckluZm8sXG59OiB7XG4gIG1hcmtlcnM6IFRpbWVNYXJrZXJbXTtcbiAgaG92ZXJJbmZvPzogeyBmcmFjdGlvbjogbnVtYmVyOyBsYWJlbDogc3RyaW5nIH0gfCBudWxsO1xufSk6IFJlYWN0Tm9kZSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBiZy1iYWNrZ3JvdW5kLTEwMCBib3JkZXItYiBib3JkZXItZ3JheS1hbHBoYS00MDAgaC0xMCBtaW4taC0xMCBmbGV4IGl0ZW1zLWVuZCBweC00IHBiLTFcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgaC1mdWxsIGZsZXgtMVwiPlxuICAgICAgICB7bWFya2Vycy5tYXAoKG0pID0+IChcbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAga2V5PXtgJHttLnBvc2l0aW9ufS0ke20ubGFiZWx9YH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIGJvdHRvbS0xIGZvbnQtbW9ubyB0ZXh0LXhzIGZvbnQtbm9ybWFsIGxlYWRpbmctNCB0ZXh0LWdyYXktOTAwIHdoaXRlc3BhY2Utbm93cmFwXCJcbiAgICAgICAgICAgIHN0eWxlPXt7IGxlZnQ6IGAke20ucG9zaXRpb24gKiAxMDB9JWAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bS5sYWJlbH1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICkpfVxuICAgICAgICB7aG92ZXJJbmZvICYmIChcbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTEgcG9pbnRlci1ldmVudHMtbm9uZSB6LTEwIGZvbnQtbW9ubyB0ZXh0LVsxMXB4XSBsZWFkaW5nLTQgdGV4dC1ncmF5LTEwMDAgd2hpdGVzcGFjZS1ub3dyYXAgYmctYmFja2dyb3VuZC0xMDAgYm9yZGVyIGJvcmRlci1ncmF5LWFscGhhLTQwMCByb3VuZGVkIHB4LTEgLXRyYW5zbGF0ZS14LTEvMlwiXG4gICAgICAgICAgICBzdHlsZT17eyBsZWZ0OiBgJHtob3ZlckluZm8uZnJhY3Rpb24gKiAxMDB9JWAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aG92ZXJJbmZvLmxhYmVsfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRpbWVsaW5lXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGZ1bmN0aW9uIFRpbWVsaW5lKHtcbiAgc3BhbnMsXG4gIHZpZXdTdGFydCxcbiAgdmlld0VuZCxcbiAgbWFya2VycyxcbiAgc2VsZWN0ZWRJZCxcbiAgc2VhcmNoUmVzdWx0LFxuICBvblNlbGVjdCxcbiAgaG92ZXJGcmFjdGlvbixcbiAgYWx0SGVsZCA9IGZhbHNlLFxufToge1xuICBzcGFuczogU3BhbltdO1xuICB2aWV3U3RhcnQ6IG51bWJlcjtcbiAgdmlld0VuZDogbnVtYmVyO1xuICBtYXJrZXJzOiBUaW1lTWFya2VyW107XG4gIHNlbGVjdGVkSWQ6IHN0cmluZyB8IG51bGw7XG4gIHNlYXJjaFJlc3VsdDogU3BhblNlYXJjaFJlc3VsdDtcbiAgb25TZWxlY3Q6IChzcGFuSWQ6IHN0cmluZykgPT4gdm9pZDtcbiAgaG92ZXJGcmFjdGlvbj86IG51bWJlciB8IG51bGw7XG4gIGFsdEhlbGQ/OiBib29sZWFuO1xufSk6IFJlYWN0Tm9kZSB7XG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFtjb250YWluZXJXaWR0aCwgc2V0Q29udGFpbmVyV2lkdGhdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IHZpZXdEdXJhdGlvbiA9IHZpZXdFbmQgLSB2aWV3U3RhcnQ7XG4gIGNvbnN0IHRpbWVsaW5lV2lkdGggPSBNYXRoLm1heCgwLCBjb250YWluZXJXaWR0aCAtIFRJTUVMSU5FX1BBRERJTkdfUFggKiAyKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgIGNvbnN0IHJvID0gbmV3IFJlc2l6ZU9ic2VydmVyKChbZW50cnldKSA9PiB7XG4gICAgICBzZXRDb250YWluZXJXaWR0aChlbnRyeS5jb250ZW50UmVjdC53aWR0aCk7XG4gICAgfSk7XG4gICAgcm8ub2JzZXJ2ZShlbCk7XG4gICAgcmV0dXJuICgpID0+IHJvLmRpc2Nvbm5lY3QoKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGdhcHMgPSB1c2VNZW1vKFxuICAgICgpID0+IGNvbXB1dGVTcGFuR2FwcyhzcGFucywgdmlld1N0YXJ0LCB2aWV3RW5kKSxcbiAgICBbc3BhbnMsIHZpZXdTdGFydCwgdmlld0VuZF1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgcmVmPXtjb250YWluZXJSZWZ9IGNsYXNzTmFtZT1cInJlbGF0aXZlIGgtZnVsbCBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgIDxkaXZcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQteS0wIHBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgICBzdHlsZT17VElNRUxJTkVfSU5TRVRfU1RZTEV9XG4gICAgICA+XG4gICAgICAgIHttYXJrZXJzLm1hcCgobWFya2VyKSA9PlxuICAgICAgICAgIC8vIFNraXAgdGhlIFwiMHNcIiBvcmlnaW4gbWFya2VyIHNpbmNlIHRoZSBsZWZ0IGVkZ2UgYWxyZWFkeSBpbXBsaWVzIGl0LlxuICAgICAgICAgIE1hdGguYWJzKG1hcmtlci52YWx1ZSkgPiAwLjAwMDAwMSA/IChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAga2V5PXtgJHttYXJrZXIucG9zaXRpb259LSR7bWFya2VyLmxhYmVsfWB9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0wIGJvdHRvbS0wIHctcHggYmctZ3JheS1hbHBoYS0zMDBcIlxuICAgICAgICAgICAgICBzdHlsZT17eyBsZWZ0OiBgJHttYXJrZXIucG9zaXRpb24gKiAxMDB9JWAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICAge2hvdmVyRnJhY3Rpb24gIT0gbnVsbCAmJiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC15LTAgcG9pbnRlci1ldmVudHMtbm9uZSB6LTEwXCJcbiAgICAgICAgICBzdHlsZT17VElNRUxJTkVfSU5TRVRfU1RZTEV9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMCBib3R0b20tMCB3LXB4IGJnLWdyYXktYWxwaGEtNTAwXCJcbiAgICAgICAgICAgIHN0eWxlPXt7IGxlZnQ6IGAke2hvdmVyRnJhY3Rpb24gKiAxMDB9JWAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgICB7c3BhbnMubWFwKChzcGFuKSA9PiAoXG4gICAgICAgIDxUaW1lbGluZUJhclxuICAgICAgICAgIGtleT17c3Bhbi5zcGFuSWR9XG4gICAgICAgICAgc3Bhbj17c3Bhbn1cbiAgICAgICAgICB2aWV3U3RhcnQ9e3ZpZXdTdGFydH1cbiAgICAgICAgICB2aWV3RHVyYXRpb249e3ZpZXdEdXJhdGlvbn1cbiAgICAgICAgICBjb250YWluZXJXaWR0aD17dGltZWxpbmVXaWR0aH1cbiAgICAgICAgICBpc1NlbGVjdGVkPXtzZWxlY3RlZElkID09PSBzcGFuLnNwYW5JZH1cbiAgICAgICAgICBpc0RpbW1lZD17aXNTcGFuRGltbWVkQnlTZWFyY2goc3Bhbi5zcGFuSWQsIHNlYXJjaFJlc3VsdCl9XG4gICAgICAgICAgb25TZWxlY3Q9e29uU2VsZWN0fVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgICB7YWx0SGVsZCAmJiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LXktMCBwb2ludGVyLWV2ZW50cy1ub25lXCJcbiAgICAgICAgICBzdHlsZT17VElNRUxJTkVfSU5TRVRfU1RZTEV9XG4gICAgICAgID5cbiAgICAgICAgICB7Z2Fwcy5tYXAoKGdhcCkgPT4gKFxuICAgICAgICAgICAgPERlbHRhSW5kaWNhdG9yXG4gICAgICAgICAgICAgIGtleT17Z2FwLnJvd0luZGV4fVxuICAgICAgICAgICAgICBsZWZ0RnJhYz17Z2FwLmxlZnRGcmFjfVxuICAgICAgICAgICAgICByaWdodEZyYWM9e2dhcC5yaWdodEZyYWN9XG4gICAgICAgICAgICAgIGxhYmVsPXtmb3JtYXREdXJhdGlvbihnYXAuZ2FwTXMsIHRydWUpfVxuICAgICAgICAgICAgICByb3dJbmRleD17Z2FwLnJvd0luZGV4fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuIl19
221
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9uZXctdHJhY2Utdmlld2VyL2NvbXBvbmVudHMvdGltZWxpbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDaEYsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEYsT0FBTyxFQUFFLG9CQUFvQixFQUF5QixNQUFNLFdBQVcsQ0FBQztBQUV4RSxPQUFPLEVBQ0wsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEdBQ2xCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFL0QsOEVBQThFO0FBQzlFLFlBQVk7QUFDWiw4RUFBOEU7QUFFOUUsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFDaEMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7QUFDNUIsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0FBRXRDLE1BQU0sZUFBZSxHQUFrQztJQUNyRCxNQUFNLEVBQUUsb0NBQW9DO0lBQzVDLFFBQVEsRUFBRSxvQ0FBb0M7SUFDOUMsT0FBTyxFQUFFLG9DQUFvQztJQUM3QyxPQUFPLEVBQUUsb0NBQW9DO0lBQzdDLE1BQU0sRUFBRSxrQ0FBa0M7SUFDMUMsU0FBUyxFQUFFLHNDQUFzQztJQUNqRCxRQUFR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QyxLQUFDLFdBQVcsSUFFVixJQUFJLEVBQUUsSUFBSSxFQUNWLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLFlBQVksRUFBRSxZQUFZLEVBQzFCLGNBQWMsRUFBRSxhQUFhLEVBQzdCLFVBQVUsRUFBRSxVQUFVLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFDdEMsUUFBUSxFQUFFLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLEVBQ3pELFFBQVEsRUFBRSxRQUFRLElBUGIsSUFBSSxDQUFDLE1BQU0sQ0FRaEIsQ0FDSCxDQUFDLEdBQ0UsRUFDTCxPQUFPLElBQUksQ0FDVixtQ0FFRSxTQUFTLEVBQUMsd0NBQXdDLEVBQ2xELEtBQUssRUFBRSxvQkFBb0IsWUFFMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FDakIsS0FBQyxjQUFjLElBRWIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQ3RCLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUN4QixLQUFLLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQ3RDLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxJQUpqQixHQUFHLENBQUMsUUFBUSxDQUtqQixDQUNILENBQUMsR0FDRSxDQUNQLElBQ0csQ0FDUCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgQXJyb3dMZWZ0LCBBcnJvd1JpZ2h0IH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB0eXBlIHsgQ1NTUHJvcGVydGllcywgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgbWVtbywgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi4vLi4vLi4vbGliL3V0aWxzJztcbmltcG9ydCB0eXBlIHsgU3BhbiB9IGZyb20gJy4uLy4uL3RyYWNlLXZpZXdlci90eXBlcyc7XG5pbXBvcnQgeyBmb3JtYXREdXJhdGlvbiwgZ2V0SGlnaFJlc0luTXMgfSBmcm9tICcuLi8uLi90cmFjZS12aWV3ZXIvdXRpbC90aW1pbmcnO1xuaW1wb3J0IHsgaXNTcGFuRGltbWVkQnlTZWFyY2gsIHR5cGUgU3BhblNlYXJjaFJlc3VsdCB9IGZyb20gJy4uL3NlYXJjaCc7XG5pbXBvcnQgdHlwZSB7IFNlZ21lbnQsIFNlZ21lbnRTdGF0dXMsIFRpbWVNYXJrZXIgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge1xuICBjb21wdXRlU3BhbkdhcHMsXG4gIGNvbXB1dGVTcGFuU2VnbWVudHMsXG4gIGdldFJlc291cmNlQ29sb3IsXG4gIGdldFNwYW5EdXJhdGlvbk1zLFxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBST1dfSEVJR0hUX1BYLCB1c2VSb3dXaW5kb3cgfSBmcm9tICcuL3VzZS1yb3ctd2luZG93JztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb25zdGFudHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jb25zdCBUSU5ZX0JBUl9CT1hfU0laRV9QWCA9IDI0O1xuY29uc3QgVElOWV9CQVJfV0lEVEhfUFggPSA0O1xuZXhwb3J0IGNvbnN0IFRJTUVMSU5FX1BBRERJTkdfUFggPSAxNjtcblxuY29uc3QgU0VHTUVOVF9DTEFTU0VTOiBSZWNvcmQ8U2VnbWVudFN0YXR1cywgc3RyaW5nPiA9IHtcbiAgcXVldWVkOiAnYmctZ3JheS00MDAgYm9yZGVyIGJvcmRlci1ncmF5LTUwMCcsXG4gIHJldHJ5aW5nOiAnYmctZ3JheS00MDAgYm9yZGVyIGJvcmRlci1ncmF5LTUwMCcsXG4gIHdhaXRpbmc6ICdiZy1ncmF5LTQwMCBib3JkZXIgYm9yZGVyLWdyYXktNTAwJyxcbiAgcnVubmluZzogJ2JnLWJsdWUtMjAwIGJvcmRlciBib3JkZXItYmx1ZS01MDAnLFxuICBmYWlsZWQ6ICdiZy1yZWQtMjAwIGJvcmRlciBib3JkZXItcmVkLTUwMCcsXG4gIHN1Y2NlZWRlZDogJ2JnLWdyZWVuLTIwMCBib3JkZXIgYm9yZGVyLWdyZWVuLTUwMCcsXG4gIHNsZWVwaW5nOiAnYmctZ3JheS00MDAgYm9yZGVyIGJvcmRlci1ncmF5LTUwMCcsXG4gIHJlY2VpdmVkOiAnYmctYmx1ZS0yMDAgYm9yZGVyIGJvcmRlci1ibHVlLTUwMCcsXG59O1xuXG5jb25zdCBUSU1FTElORV9JTlNFVF9TVFlMRTogQ1NTUHJvcGVydGllcyA9IHtcbiAgbGVmdDogVElNRUxJTkVfUEFERElOR19QWCxcbiAgcmlnaHQ6IFRJTUVMSU5FX1BBRERJTkdfUFgsXG59O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEJhciBnZW9tZXRyeVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbnR5cGUgQmFyTW9kZSA9XG4gIHwgeyBraW5kOiAnYXJyb3cnOyBkaXJlY3Rpb246ICdsZWZ0JyB8ICdyaWdodCcgfVxuICB8IHsga2luZDogJ3RpbnknIH1cbiAgfCB7IGtpbmQ6ICdmdWxsJyB9O1xuXG5pbnRlcmZhY2UgQmFyR2VvbWV0cnkge1xuICBtb2RlOiBCYXJNb2RlO1xuICBsZWZ0UGN0OiBudW1iZXI7XG4gIHdpZHRoUGN0OiBudW1iZXI7XG4gIHZpc2libGVTdGFydE1zOiBudW1iZXI7XG4gIHZpc2libGVFbmRNczogbnVtYmVyO1xuICB2aXNpYmxlUGl4ZWxXaWR0aDogbnVtYmVyO1xufVxuXG4vKipcbiAqIENvbXB1dGUgdGhlIGJhcidzIGdlb21ldHJ5IGluc2lkZSB0aGUgdGltZWxpbmUgdmlld3BvcnQuIFBlcmNlbnRhZ2VzIGFyZVxuICogYWx3YXlzIGluIFswLCAxMDBdIHNvIHdlIG5ldmVyIGVtaXQgQ1NTIHZhbHVlcyB0aGF0IGV4Y2VlZCBicm93c2VyIGxheW91dFxuICogbGltaXRzIGF0IGV4dHJlbWUgem9vbS5cbiAqL1xuZnVuY3Rpb24gY29tcHV0ZUJhckdlb21ldHJ5KFxuICBzdGFydE1zOiBudW1iZXIsXG4gIGVuZE1zOiBudW1iZXIsXG4gIHZpZXdTdGFydDogbnVtYmVyLFxuICB2aWV3RW5kOiBudW1iZXIsXG4gIGNvbnRhaW5lcldpZHRoOiBudW1iZXJcbik6IEJhckdlb21ldHJ5IHtcbiAgY29uc3Qgdmlld0R1cmF0aW9uID0gdmlld0VuZCAtIHZpZXdTdGFydDtcbiAgY29uc3QgdmlzaWJsZVN0YXJ0TXMgPSBNYXRoLm1heChzdGFydE1zLCB2aWV3U3RhcnQpO1xuICBjb25zdCB2aXNpYmxlRW5kTXMgPSBNYXRoLm1pbihlbmRNcywgdmlld0VuZCk7XG4gIGNvbnN0IHZpc2libGVEdXJhdGlvbk1zID0gTWF0aC5tYXgoMCwgdmlzaWJsZUVuZE1zIC0gdmlzaWJsZVN0YXJ0TXMpO1xuICBjb25zdCB3aWR0aEZyYWMgPSB2aWV3RHVyYXRpb24gPiAwID8gdmlzaWJsZUR1cmF0aW9uTXMgLyB2aWV3RHVyYXRpb24gOiAwO1xuICBjb25zdCB2aXNpYmxlUGl4ZWxXaWR0aCA9IHdpZHRoRnJhYyAqIGNvbnRhaW5lcldpZHRoO1xuXG4gIGNvbnN0IGlzVGlueSA9IGNvbnRhaW5lcldpZHRoID4gMCAmJiB2aXNpYmxlUGl4ZWxXaWR0aCA8IFRJTllfQkFSX0JPWF9TSVpFX1BYO1xuICBjb25zdCBleHRlbmRzT2ZmTGVmdCA9IHN0YXJ0TXMgPCB2aWV3U3RhcnQ7XG4gIGNvbnN0IGV4dGVuZHNPZmZSaWdodCA9IGVuZE1zID4gdmlld0VuZDtcblxuICBjb25zdCBtb2RlOiBCYXJNb2RlID1cbiAgICBpc1RpbnkgJiYgKGV4dGVuZHNPZmZMZWZ0IHx8IGV4dGVuZHNPZmZSaWdodClcbiAgICAgID8geyBraW5kOiAnYXJyb3cnLCBkaXJlY3Rpb246IGV4dGVuZHNPZmZSaWdodCA/ICdyaWdodCcgOiAnbGVmdCcgfVxuICAgICAgOiBpc1RpbnlcbiAgICAgICAgPyB7IGtpbmQ6ICd0aW55JyB9XG4gICAgICAgIDogeyBraW5kOiAnZnVsbCcgfTtcblxuICByZXR1cm4ge1xuICAgIG1vZGUsXG4gICAgbGVmdFBjdDpcbiAgICAgIHZpZXdEdXJhdGlvbiA+IDBcbiAgICAgICAgPyAoKHZpc2libGVTdGFydE1zIC0gdmlld1N0YXJ0KSAvIHZpZXdEdXJhdGlvbikgKiAxMDBcbiAgICAgICAgOiAwLFxuICAgIHdpZHRoUGN0OiB3aWR0aEZyYWMgKiAxMDAsXG4gICAgdmlzaWJsZVN0YXJ0TXMsXG4gICAgdmlzaWJsZUVuZE1zLFxuICAgIHZpc2libGVQaXhlbFdpZHRoLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRCYXJQb3NpdGlvblN0eWxlKGdlb21ldHJ5OiBCYXJHZW9tZXRyeSk6IHtcbiAgbGVmdDogc3RyaW5nO1xuICB3aWR0aDogc3RyaW5nO1xufSB7XG4gIHN3aXRjaCAoZ2VvbWV0cnkubW9kZS5raW5kKSB7XG4gICAgY2FzZSAnYXJyb3cnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGVmdDpcbiAgICAgICAgICBnZW9tZXRyeS5tb2RlLmRpcmVjdGlvbiA9PT0gJ3JpZ2h0J1xuICAgICAgICAgICAgPyBgY2FsYygxMDAlIC0gJHtUSU5ZX0JBUl9CT1hfU0laRV9QWH1weClgXG4gICAgICAgICAgICA6ICcwcHgnLFxuICAgICAgICB3aWR0aDogYCR7VElOWV9CQVJfQk9YX1NJWkVfUFh9cHhgLFxuICAgICAgfTtcbiAgICBjYXNlICd0aW55JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQ6IGBtaW4oJHtnZW9tZXRyeS5sZWZ0UGN0fSUsIGNhbGMoMTAwJSAtICR7VElOWV9CQVJfV0lEVEhfUFh9cHgpKWAsXG4gICAgICAgIHdpZHRoOiBgJHtUSU5ZX0JBUl9XSURUSF9QWH1weGAsXG4gICAgICB9O1xuICAgIGNhc2UgJ2Z1bGwnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGVmdDogYCR7Z2VvbWV0cnkubGVmdFBjdH0lYCxcbiAgICAgICAgd2lkdGg6IGBtYXgoJHtnZW9tZXRyeS53aWR0aFBjdH0lLCA0cHgpYCxcbiAgICAgIH07XG4gIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZWdtZW50IHByb2plY3Rpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5pbnRlcmZhY2UgVmlzaWJsZVNlZ21lbnQge1xuICBzdGF0dXM6IFNlZ21lbnRTdGF0dXM7XG4gIGxlZnRQY3Q6IG51bWJlcjtcbiAgd2lkdGhQY3Q6IG51bWJlcjtcbiAgcGl4ZWxXaWR0aDogbnVtYmVyO1xuICBmdWxsRHVyYXRpb25NczogbnVtYmVyO1xufVxuXG4vKipcbiAqIFByb2plY3Qgc3RhdHVzIHNlZ21lbnRzIG9udG8gdGhlIHZpc2libGUgcG9ydGlvbiBvZiBhIGJhci4gU2VnbWVudHMgZnVsbHlcbiAqIG91dHNpZGUgdGhlIHZpc2libGUgd2luZG93IGFyZSBkcm9wcGVkOyBzZWdtZW50cyBjcm9zc2luZyB0aGUgZWRnZSBhcmVcbiAqIGNsaXBwZWQgdG8gWzAlLCAxMDAlXSBvZiB0aGUgdmlzaWJsZSBiYXIuXG4gKi9cbmZ1bmN0aW9uIHByb2plY3RTZWdtZW50cyhcbiAgc2VnbWVudHM6IFNlZ21lbnRbXSxcbiAgc3BhblN0YXJ0TXM6IG51bWJlcixcbiAgc3BhbkR1cmF0aW9uTXM6IG51bWJlcixcbiAgZ2VvbWV0cnk6IEJhckdlb21ldHJ5XG4pOiBWaXNpYmxlU2VnbWVudFtdIHtcbiAgY29uc3QgdmlzaWJsZUR1cmF0aW9uTXMgPSBnZW9tZXRyeS52aXNpYmxlRW5kTXMgLSBnZW9tZXRyeS52aXNpYmxlU3RhcnRNcztcbiAgaWYgKHZpc2libGVEdXJhdGlvbk1zIDw9IDApIHJldHVybiBbXTtcblxuICByZXR1cm4gc2VnbWVudHMuZmxhdE1hcCgoc2VnKSA9PiB7XG4gICAgY29uc3Qgc2VnU3RhcnRNcyA9IHNwYW5TdGFydE1zICsgc2VnLnN0YXJ0RnJhY3Rpb24gKiBzcGFuRHVyYXRpb25NcztcbiAgICBjb25zdCBzZWdFbmRNcyA9IHNwYW5TdGFydE1zICsgc2VnLmVuZEZyYWN0aW9uICogc3BhbkR1cmF0aW9uTXM7XG4gICAgY29uc3Qgc3RhcnRNcyA9IE1hdGgubWF4KHNlZ1N0YXJ0TXMsIGdlb21ldHJ5LnZpc2libGVTdGFydE1zKTtcbiAgICBjb25zdCBlbmRNcyA9IE1hdGgubWluKHNlZ0VuZE1zLCBnZW9tZXRyeS52aXNpYmxlRW5kTXMpO1xuICAgIGlmIChlbmRNcyA8PSBzdGFydE1zKSByZXR1cm4gW107XG5cbiAgICBjb25zdCB3aWR0aEZyYWMgPSAoZW5kTXMgLSBzdGFydE1zKSAvIHZpc2libGVEdXJhdGlvbk1zO1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHN0YXR1czogc2VnLnN0YXR1cyxcbiAgICAgICAgbGVmdFBjdDpcbiAgICAgICAgICAoKHN0YXJ0TXMgLSBnZW9tZXRyeS52aXNpYmxlU3RhcnRNcykgLyB2aXNpYmxlRHVyYXRpb25NcykgKiAxMDAsXG4gICAgICAgIHdpZHRoUGN0OiB3aWR0aEZyYWMgKiAxMDAsXG4gICAgICAgIHBpeGVsV2lkdGg6IHdpZHRoRnJhYyAqIGdlb21ldHJ5LnZpc2libGVQaXhlbFdpZHRoLFxuICAgICAgICBmdWxsRHVyYXRpb25NczogKHNlZy5lbmRGcmFjdGlvbiAtIHNlZy5zdGFydEZyYWN0aW9uKSAqIHNwYW5EdXJhdGlvbk1zLFxuICAgICAgfSxcbiAgICBdO1xuICB9KTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTbWFsbCByZW5kZXIgaGVscGVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIER1cmF0aW9uTGFiZWwoeyBsYWJlbCB9OiB7IGxhYmVsOiBzdHJpbmcgfSk6IFJlYWN0Tm9kZSB7XG4gIHJldHVybiAoXG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBpbnNldC0wIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnQgb3ZlcmZsb3ctaGlkZGVuIHB4LTEgdGV4dC1bMTBweF0gZm9udC1tb25vIGZvbnQtbWVkaXVtIGxlYWRpbmctbm9uZSB3aGl0ZXNwYWNlLW5vd3JhcCB0ZXh0LWxlZnQgdGV4dC1ncmF5LTEwMDAgdGFidWxhci1udW1zIG9wYWNpdHktMCBncm91cC1ob3Zlci90aW1lbGluZS1yb3c6b3BhY2l0eS0xMDBcIj5cbiAgICAgIHtsYWJlbH1cbiAgICA8L3NwYW4+XG4gICk7XG59XG5cbmZ1bmN0aW9uIEJvdW5kYXJ5QXJyb3coe1xuICBkaXJlY3Rpb24sXG59OiB7XG4gIGRpcmVjdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0Jztcbn0pOiBSZWFjdE5vZGUge1xuICBjb25zdCBJY29uID0gZGlyZWN0aW9uID09PSAncmlnaHQnID8gQXJyb3dSaWdodCA6IEFycm93TGVmdDtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaC02IHctNiBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1bMC4yNXJlbV1cIj5cbiAgICAgIDxJY29uIGNsYXNzTmFtZT1cInNpemUtMyB0ZXh0LWdyYXktOTAwXCIgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gUGxhaW5CYXIoe1xuICBiZyxcbiAgYm9yZGVyLFxuICBsYWJlbCxcbn06IHtcbiAgYmc6IHN0cmluZztcbiAgYm9yZGVyOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmcgfCBudWxsO1xufSk6IFJlYWN0Tm9kZSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPVwicmVsYXRpdmUgaC02IHctZnVsbCBtaW4tdy0xIHJvdW5kZWQtWzAuMjVyZW1dIGJvcmRlclwiXG4gICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kOiBiZywgYm9yZGVyQ29sb3I6IGJvcmRlciB9fVxuICAgID5cbiAgICAgIHtsYWJlbCA/IDxEdXJhdGlvbkxhYmVsIGxhYmVsPXtsYWJlbH0gLz4gOiBudWxsfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBTZWdtZW50QmFyKHsgc2VnbWVudHMgfTogeyBzZWdtZW50czogVmlzaWJsZVNlZ21lbnRbXSB9KTogUmVhY3ROb2RlIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIGgtNiB3LWZ1bGxcIj5cbiAgICAgIHtzZWdtZW50cy5tYXAoKHNlZywgaSkgPT4ge1xuICAgICAgICBjb25zdCBsYWJlbCA9IGZvcm1hdER1cmF0aW9uKHNlZy5mdWxsRHVyYXRpb25Ncyk7XG4gICAgICAgIC8vIE9ubHkgcmVuZGVyIHRoZSBsYWJlbCB3aGVuIHRoZXJlJ3MgZW5vdWdoIHJvb20gZm9yIGl0IHdpdGhvdXQgY2xpcHBpbmcuXG4gICAgICAgIGNvbnN0IHNob3dMYWJlbCA9IHNlZy5waXhlbFdpZHRoID49IE1hdGgubWF4KDQwLCBsYWJlbC5sZW5ndGggKiA2ICsgMTIpO1xuICAgICAgICAvLyBCZWVmIHVwIHRoZSBxdWV1ZWQgc2VnbWVudCB3aGVuIGl0J3MgdG9vIG5hcnJvdyB0byByZWFkLlxuICAgICAgICBjb25zdCBpc05hcnJvd1F1ZXVlZCA9IHNlZy5zdGF0dXMgPT09ICdxdWV1ZWQnICYmIHNlZy5waXhlbFdpZHRoIDwgMjA7XG4gICAgICAgIGNvbnN0IG92ZXJyaWRlQmcgPSBpc05hcnJvd1F1ZXVlZCA/ICd2YXIoLS1kcy1ncmF5LTQwMCknIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBvdmVycmlkZUJvcmRlciA9IGlzTmFycm93UXVldWVkXG4gICAgICAgICAgPyAndmFyKC0tZHMtZ3JheS01MDApJ1xuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAga2V5PXtgJHtzZWcuc3RhdHVzfS0ke2l9YH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICdhYnNvbHV0ZSBoLWZ1bGwgcm91bmRlZC1bMC4yNXJlbV0nLFxuICAgICAgICAgICAgICBTRUdNRU5UX0NMQVNTRVNbc2VnLnN0YXR1c11cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAvLyAxcHggZ2FwIGJldHdlZW4gYWRqYWNlbnQgc2VnbWVudHMsIGRpc3RyaWJ1dGVkIGVxdWFsbHkuXG4gICAgICAgICAgICAgIGxlZnQ6IGBjYWxjKCR7c2VnLmxlZnRQY3R9JSArIDAuNXB4KWAsXG4gICAgICAgICAgICAgIHdpZHRoOiBgY2FsYygke3NlZy53aWR0aFBjdH0lIC0gMXB4KWAsXG4gICAgICAgICAgICAgIG1pbldpZHRoOiAxLFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBvdmVycmlkZUJnLFxuICAgICAgICAgICAgICBib3JkZXJDb2xvcjogb3ZlcnJpZGVCb3JkZXIsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzaG93TGFiZWwgPyA8RHVyYXRpb25MYWJlbCBsYWJlbD17bGFiZWx9IC8+IDogbnVsbH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICAgIH0pfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRpbWVsaW5lQmFyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuY29uc3QgVGltZWxpbmVCYXIgPSBtZW1vKGZ1bmN0aW9uIFRpbWVsaW5lQmFyKHtcbiAgc3BhbixcbiAgdmlld1N0YXJ0LFxuICB2aWV3RHVyYXRpb24sXG4gIGNvbnRhaW5lcldpZHRoLFxuICBpc1NlbGVjdGVkLFxuICBpc0RpbW1lZCxcbiAgb25TZWxlY3QsXG59OiB7XG4gIHNwYW46IFNwYW47XG4gIHZpZXdTdGFydDogbnVtYmVyO1xuICB2aWV3RHVyYXRpb246IG51bWJlcjtcbiAgY29udGFpbmVyV2lkdGg6IG51bWJlcjtcbiAgaXNTZWxlY3RlZDogYm9vbGVhbjtcbiAgaXNEaW1tZWQ/OiBib29sZWFuO1xuICBvblNlbGVjdDogKHNwYW5JZDogc3RyaW5nKSA9PiB2b2lkO1xufSk6IFJlYWN0Tm9kZSB7XG4gIGNvbnN0IHN0YXJ0TXMgPSBnZXRIaWdoUmVzSW5NcyhzcGFuLnN0YXJ0VGltZSk7XG4gIGNvbnN0IGVuZE1zID0gZ2V0SGlnaFJlc0luTXMoc3Bhbi5lbmRUaW1lKTtcbiAgY29uc3QgdG90YWxEdXJhdGlvbk1zID0gZ2V0U3BhbkR1cmF0aW9uTXMoc3Bhbik7XG5cbiAgY29uc3QgZ2VvbWV0cnkgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBjb21wdXRlQmFyR2VvbWV0cnkoXG4gICAgICAgIHN0YXJ0TXMsXG4gICAgICAgIGVuZE1zLFxuICAgICAgICB2aWV3U3RhcnQsXG4gICAgICAgIHZpZXdTdGFydCArIHZpZXdEdXJhdGlvbixcbiAgICAgICAgY29udGFpbmVyV2lkdGhcbiAgICAgICksXG4gICAgW3N0YXJ0TXMsIGVuZE1zLCB2aWV3U3RhcnQsIHZpZXdEdXJhdGlvbiwgY29udGFpbmVyV2lkdGhdXG4gICk7XG5cbiAgY29uc3QgYmFzZVNlZ21lbnRzID0gdXNlTWVtbygoKSA9PiBjb21wdXRlU3BhblNlZ21lbnRzKHNwYW4pLCBbc3Bhbl0pO1xuICBjb25zdCBzZWdtZW50cyA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIGdlb21ldHJ5Lm1vZGUua2luZCA9PT0gJ2Z1bGwnXG4gICAgICAgID8gcHJvamVjdFNlZ21lbnRzKGJhc2VTZWdtZW50cywgc3RhcnRNcywgdG90YWxEdXJhdGlvbk1zLCBnZW9tZXRyeSlcbiAgICAgICAgOiBbXSxcbiAgICBbZ2VvbWV0cnksIGJhc2VTZWdtZW50cywgc3RhcnRNcywgdG90YWxEdXJhdGlvbk1zXVxuICApO1xuXG4gIGNvbnN0IHdvcmtmbG93U3RhdHVzID0gKHNwYW4uYXR0cmlidXRlcy5kYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVxuICAgID8uc3RhdHVzIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgY29uc3QgaXNFcnJvcmVkID0gc3Bhbi5zdGF0dXMuY29kZSA9PT0gMiB8fCB3b3JrZmxvd1N0YXR1cyA9PT0gJ2ZhaWxlZCc7XG4gIGNvbnN0IGNvbG9ycyA9IGdldFJlc291cmNlQ29sb3Ioc3Bhbi5yZXNvdXJjZSk7XG4gIGNvbnN0IGZhbGxiYWNrQmcgPSBpc0Vycm9yZWRcbiAgICA/IChjb2xvcnMuZXJyb3JCZyA/PyAndmFyKC0tZHMtcmVkLTIwMCknKVxuICAgIDogY29sb3JzLmJnO1xuICBjb25zdCBmYWxsYmFja0JvcmRlciA9IGlzRXJyb3JlZFxuICAgID8gKGNvbG9ycy5lcnJvckJvcmRlciA/PyAndmFyKC0tZHMtcmVkLTUwMCknKVxuICAgIDogY29sb3JzLmJvcmRlcjtcblxuICBjb25zdCB0b3RhbExhYmVsID0gZm9ybWF0RHVyYXRpb24odG90YWxEdXJhdGlvbk1zKTtcbiAgY29uc3Qgc2hvd1RvdGFsTGFiZWwgPVxuICAgIGdlb21ldHJ5LnZpc2libGVQaXhlbFdpZHRoID49IE1hdGgubWF4KDQwLCB0b3RhbExhYmVsLmxlbmd0aCAqIDYgKyAxMik7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgb25TZWxlY3Qoc3Bhbi5zcGFuSWQpO1xuICB9LCBbb25TZWxlY3QsIHNwYW4uc3BhbklkXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByb2xlPVwidHJlZWl0ZW1cIlxuICAgICAgYXJpYS1zZWxlY3RlZD17aXNTZWxlY3RlZH1cbiAgICAgIGFyaWEtZXhwYW5kZWQ9e2lzU2VsZWN0ZWR9XG4gICAgICBhcmlhLWxldmVsPXsxfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ2dyb3VwL3RpbWVsaW5lLXJvdyBoLTEwIHJlbGF0aXZlIGZsZXggaXRlbXMtY2VudGVyIGhvdmVyOmJnLWdyYXktMTAwIGFyaWEtc2VsZWN0ZWQ6YmctZ3JheS0xMDAgYXJpYS1zZWxlY3RlZDpob3ZlcjpiZy1ncmF5LTIwMCB0cmFuc2l0aW9uLW9wYWNpdHknLFxuICAgICAgICBpc0RpbW1lZCAmJiAnb3BhY2l0eS0zNSdcbiAgICAgICl9XG4gICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja31cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LXktMFwiIHN0eWxlPXtUSU1FTElORV9JTlNFVF9TVFlMRX0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMS8yIGgtNiAtdHJhbnNsYXRlLXktMS8yIHJvdW5kZWQtWzAuMjVyZW1dXCJcbiAgICAgICAgICBzdHlsZT17Z2V0QmFyUG9zaXRpb25TdHlsZShnZW9tZXRyeSl9XG4gICAgICAgID5cbiAgICAgICAgICB7Z2VvbWV0cnkubW9kZS5raW5kID09PSAnYXJyb3cnID8gKFxuICAgICAgICAgICAgPEJvdW5kYXJ5QXJyb3cgZGlyZWN0aW9uPXtnZW9tZXRyeS5tb2RlLmRpcmVjdGlvbn0gLz5cbiAgICAgICAgICApIDogZ2VvbWV0cnkubW9kZS5raW5kID09PSAndGlueScgPyAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtNiByb3VuZGVkLVswLjI1cmVtXSBib3JkZXJcIlxuICAgICAgICAgICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kOiBmYWxsYmFja0JnLCBib3JkZXJDb2xvcjogZmFsbGJhY2tCb3JkZXIgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IHNlZ21lbnRzLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICA8U2VnbWVudEJhciBzZWdtZW50cz17c2VnbWVudHN9IC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxQbGFpbkJhclxuICAgICAgICAgICAgICBiZz17ZmFsbGJhY2tCZ31cbiAgICAgICAgICAgICAgYm9yZGVyPXtmYWxsYmFja0JvcmRlcn1cbiAgICAgICAgICAgICAgbGFiZWw9e3Nob3dUb3RhbExhYmVsID8gdG90YWxMYWJlbCA6IG51bGx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59KTtcblxuZXhwb3J0IHsgVGltZWxpbmVCYXIgfTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBEZWx0YUluZGljYXRvciAoQWx0LWtleSBnYXAgb3ZlcmxheSlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jb25zdCBERUxUQV9DQVBfSEVJR0hUX1BYID0gODtcbi8vIFZlcnRpY2FsIG9mZnNldCB0byBzaXQgdGhlIGluZGljYXRvciBpbnNpZGUgdGhlIGdhcCBiZXR3ZWVuIHJvdyBOIGFuZCBOKzEsXG4vLyBhbGlnbmVkIHdpdGggd2hlcmUgdGhlIGJhciBzdGFydHMgaW4gdGhlIG5leHQgcm93IChyb3dzIGNlbnRlciBhIDI0cHggYmFyXG4vLyBpbnNpZGUgNDBweCwgc28gYmFycyBzdGFydCB+OHB4IGZyb20gdGhlIHRvcCBvZiB0aGUgcm93KS5cbmNvbnN0IERFTFRBX1JPV19PRkZTRVRfUFggPSA4O1xuXG5jb25zdCBEZWx0YUluZGljYXRvciA9IG1lbW8oZnVuY3Rpb24gRGVsdGFJbmRpY2F0b3Ioe1xuICBsZWZ0RnJhYyxcbiAgcmlnaHRGcmFjLFxuICBsYWJlbCxcbiAgcm93SW5kZXgsXG59OiB7XG4gIGxlZnRGcmFjOiBudW1iZXI7XG4gIHJpZ2h0RnJhYzogbnVtYmVyO1xuICBsYWJlbDogc3RyaW5nO1xuICByb3dJbmRleDogbnVtYmVyO1xufSkge1xuICBjb25zdCBjZW50ZXJZID0gREVMVEFfUk9XX09GRlNFVF9QWCArIChyb3dJbmRleCArIDEpICogUk9XX0hFSUdIVF9QWDtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIHBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgbGVmdDogYCR7bGVmdEZyYWMgKiAxMDB9JWAsXG4gICAgICAgIHdpZHRoOiBgJHsocmlnaHRGcmFjIC0gbGVmdEZyYWMpICogMTAwfSVgLFxuICAgICAgICB0b3A6IGNlbnRlclkgLSBERUxUQV9DQVBfSEVJR0hUX1BYIC8gMixcbiAgICAgICAgaGVpZ2h0OiBERUxUQV9DQVBfSEVJR0hUX1BYLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGxlZnQtMCB0b3AtMCB3LXB4IGgtZnVsbCBiZy1hbWJlci04MDBcIiAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBsZWZ0LTAgcmlnaHQtMCB0b3AtMS8yIGgtcHggYmctYW1iZXItODAwXCIgLz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgcmlnaHQtMCB0b3AtMCB3LXB4IGgtZnVsbCBiZy1hbWJlci04MDBcIiAvPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYWJzb2x1dGUgbGVmdC0xLzIgdG9wLTEvMiAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzIgdGV4dC1sYWJlbC0xMiBsZWFkaW5nLW5vbmUgd2hpdGVzcGFjZS1ub3dyYXAgcm91bmRlZC14cyBweC0xIHB5LTAuNSB0ZXh0LWdyYXktMTAwIGJnLWFtYmVyLTgwMFwiPlxuICAgICAgICB7bGFiZWx9XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICk7XG59KTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaW1lbGluZUhlYWRlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBmdW5jdGlvbiBUaW1lbGluZUhlYWRlcih7XG4gIG1hcmtlcnMsXG4gIGhvdmVySW5mbyxcbn06IHtcbiAgbWFya2VyczogVGltZU1hcmtlcltdO1xuICBob3ZlckluZm8/OiB7IGZyYWN0aW9uOiBudW1iZXI7IGxhYmVsOiBzdHJpbmcgfSB8IG51bGw7XG59KTogUmVhY3ROb2RlIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIGJnLWJhY2tncm91bmQtMTAwIGJvcmRlci1iIGJvcmRlci1ncmF5LWFscGhhLTQwMCBoLTEwIG1pbi1oLTEwIGZsZXggaXRlbXMtZW5kIHB4LTQgcGItMVwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBoLWZ1bGwgZmxleC0xXCI+XG4gICAgICAgIHttYXJrZXJzLm1hcCgobSkgPT4gKFxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBrZXk9e2Ake20ucG9zaXRpb259LSR7bS5sYWJlbH1gfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTEgZm9udC1tb25vIHRleHQteHMgZm9udC1ub3JtYWwgbGVhZGluZy00IHRleHQtZ3JheS05MDAgd2hpdGVzcGFjZS1ub3dyYXBcIlxuICAgICAgICAgICAgc3R5bGU9e3sgbGVmdDogYCR7bS5wb3NpdGlvbiAqIDEwMH0lYCB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHttLmxhYmVsfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgKSl9XG4gICAgICAgIHtob3ZlckluZm8gJiYgKFxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMSBwb2ludGVyLWV2ZW50cy1ub25lIHotMTAgZm9udC1tb25vIHRleHQtWzExcHhdIGxlYWRpbmctNCB0ZXh0LWdyYXktMTAwMCB3aGl0ZXNwYWNlLW5vd3JhcCBiZy1iYWNrZ3JvdW5kLTEwMCBib3JkZXIgYm9yZGVyLWdyYXktYWxwaGEtNDAwIHJvdW5kZWQgcHgtMSAtdHJhbnNsYXRlLXgtMS8yXCJcbiAgICAgICAgICAgIHN0eWxlPXt7IGxlZnQ6IGAke2hvdmVySW5mby5mcmFjdGlvbiAqIDEwMH0lYCB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtob3ZlckluZm8ubGFiZWx9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGltZWxpbmVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgZnVuY3Rpb24gVGltZWxpbmUoe1xuICBzcGFucyxcbiAgdmlld1N0YXJ0LFxuICB2aWV3RW5kLFxuICBtYXJrZXJzLFxuICBzZWxlY3RlZElkLFxuICBzZWFyY2hSZXN1bHQsXG4gIG9uU2VsZWN0LFxuICBob3ZlckZyYWN0aW9uLFxuICBhbHRIZWxkID0gZmFsc2UsXG59OiB7XG4gIHNwYW5zOiBTcGFuW107XG4gIHZpZXdTdGFydDogbnVtYmVyO1xuICB2aWV3RW5kOiBudW1iZXI7XG4gIG1hcmtlcnM6IFRpbWVNYXJrZXJbXTtcbiAgc2VsZWN0ZWRJZDogc3RyaW5nIHwgbnVsbDtcbiAgc2VhcmNoUmVzdWx0OiBTcGFuU2VhcmNoUmVzdWx0O1xuICBvblNlbGVjdDogKHNwYW5JZDogc3RyaW5nKSA9PiB2b2lkO1xuICBob3ZlckZyYWN0aW9uPzogbnVtYmVyIHwgbnVsbDtcbiAgYWx0SGVsZD86IGJvb2xlYW47XG59KTogUmVhY3ROb2RlIHtcbiAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2NvbnRhaW5lcldpZHRoLCBzZXRDb250YWluZXJXaWR0aF0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3Qgdmlld0R1cmF0aW9uID0gdmlld0VuZCAtIHZpZXdTdGFydDtcbiAgY29uc3QgdGltZWxpbmVXaWR0aCA9IE1hdGgubWF4KDAsIGNvbnRhaW5lcldpZHRoIC0gVElNRUxJTkVfUEFERElOR19QWCAqIDIpO1xuICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IHVzZVJvd1dpbmRvdyhcbiAgICBjb250YWluZXJSZWYsXG4gICAgc3BhbnMubGVuZ3RoLFxuICAgIFJPV19IRUlHSFRfUFhcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgIGNvbnN0IHJvID0gbmV3IFJlc2l6ZU9ic2VydmVyKChbZW50cnldKSA9PiB7XG4gICAgICBzZXRDb250YWluZXJXaWR0aChlbnRyeS5jb250ZW50UmVjdC53aWR0aCk7XG4gICAgfSk7XG4gICAgcm8ub2JzZXJ2ZShlbCk7XG4gICAgcmV0dXJuICgpID0+IHJvLmRpc2Nvbm5lY3QoKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGdhcHMgPSB1c2VNZW1vKFxuICAgICgpID0+IGNvbXB1dGVTcGFuR2FwcyhzcGFucywgdmlld1N0YXJ0LCB2aWV3RW5kKSxcbiAgICBbc3BhbnMsIHZpZXdTdGFydCwgdmlld0VuZF1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgICAgY2xhc3NOYW1lPVwicmVsYXRpdmUgaC1mdWxsIG92ZXJmbG93LWhpZGRlblwiXG4gICAgICBzdHlsZT17eyBtaW5IZWlnaHQ6IHNwYW5zLmxlbmd0aCAqIFJPV19IRUlHSFRfUFggfX1cbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LXktMCBwb2ludGVyLWV2ZW50cy1ub25lXCJcbiAgICAgICAgc3R5bGU9e1RJTUVMSU5FX0lOU0VUX1NUWUxFfVxuICAgICAgPlxuICAgICAgICB7bWFya2Vycy5tYXAoKG1hcmtlcikgPT5cbiAgICAgICAgICAvLyBTa2lwIHRoZSBcIjBzXCIgb3JpZ2luIG1hcmtlciBzaW5jZSB0aGUgbGVmdCBlZGdlIGFscmVhZHkgaW1wbGllcyBpdC5cbiAgICAgICAgICBNYXRoLmFicyhtYXJrZXIudmFsdWUpID4gMC4wMDAwMDEgPyAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGtleT17YCR7bWFya2VyLnBvc2l0aW9ufS0ke21hcmtlci5sYWJlbH1gfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtMCBib3R0b20tMCB3LXB4IGJnLWdyYXktYWxwaGEtMzAwXCJcbiAgICAgICAgICAgICAgc3R5bGU9e3sgbGVmdDogYCR7bWFya2VyLnBvc2l0aW9uICogMTAwfSVgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsXG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICAgIHtob3ZlckZyYWN0aW9uICE9IG51bGwgJiYgKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQteS0wIHBvaW50ZXItZXZlbnRzLW5vbmUgei0xMFwiXG4gICAgICAgICAgc3R5bGU9e1RJTUVMSU5FX0lOU0VUX1NUWUxFfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTAgYm90dG9tLTAgdy1weCBiZy1ncmF5LWFscGhhLTUwMFwiXG4gICAgICAgICAgICBzdHlsZT17eyBsZWZ0OiBgJHtob3ZlckZyYWN0aW9uICogMTAwfSVgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAgPGRpdiBzdHlsZT17eyB0cmFuc2Zvcm06IGB0cmFuc2xhdGVZKCR7c3RhcnQgKiBST1dfSEVJR0hUX1BYfXB4KWAgfX0+XG4gICAgICAgIHtzcGFucy5zbGljZShzdGFydCwgZW5kKS5tYXAoKHNwYW4pID0+IChcbiAgICAgICAgICA8VGltZWxpbmVCYXJcbiAgICAgICAgICAgIGtleT17c3Bhbi5zcGFuSWR9XG4gICAgICAgICAgICBzcGFuPXtzcGFufVxuICAgICAgICAgICAgdmlld1N0YXJ0PXt2aWV3U3RhcnR9XG4gICAgICAgICAgICB2aWV3RHVyYXRpb249e3ZpZXdEdXJhdGlvbn1cbiAgICAgICAgICAgIGNvbnRhaW5lcldpZHRoPXt0aW1lbGluZVdpZHRofVxuICAgICAgICAgICAgaXNTZWxlY3RlZD17c2VsZWN0ZWRJZCA9PT0gc3Bhbi5zcGFuSWR9XG4gICAgICAgICAgICBpc0RpbW1lZD17aXNTcGFuRGltbWVkQnlTZWFyY2goc3Bhbi5zcGFuSWQsIHNlYXJjaFJlc3VsdCl9XG4gICAgICAgICAgICBvblNlbGVjdD17b25TZWxlY3R9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L2Rpdj5cbiAgICAgIHthbHRIZWxkICYmIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQteS0wIHBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgICAgICAgIHN0eWxlPXtUSU1FTElORV9JTlNFVF9TVFlMRX1cbiAgICAgICAgPlxuICAgICAgICAgIHtnYXBzLm1hcCgoZ2FwKSA9PiAoXG4gICAgICAgICAgICA8RGVsdGFJbmRpY2F0b3JcbiAgICAgICAgICAgICAga2V5PXtnYXAucm93SW5kZXh9XG4gICAgICAgICAgICAgIGxlZnRGcmFjPXtnYXAubGVmdEZyYWN9XG4gICAgICAgICAgICAgIHJpZ2h0RnJhYz17Z2FwLnJpZ2h0RnJhY31cbiAgICAgICAgICAgICAgbGFiZWw9e2Zvcm1hdER1cmF0aW9uKGdhcC5nYXBNcywgdHJ1ZSl9XG4gICAgICAgICAgICAgIHJvd0luZGV4PXtnYXAucm93SW5kZXh9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export declare function TraceViewerSkeleton(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=trace-viewer-skeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-viewer-skeleton.d.ts","sourceRoot":"","sources":["../../../../src/components/new-trace-viewer/components/trace-viewer-skeleton.tsx"],"names":[],"mappings":"AAuBA,wBAAgB,mBAAmB,4CAsElC"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Skeleton } from '../../ui/skeleton';
3
+ const COL_TEMPLATE = '340px 1px minmax(50px, 1fr)';
4
+ const ROWS = [
5
+ { id: 'r0', name: 62, off: 0, bar: 72 },
6
+ { id: 'r1', name: 78, off: 6, bar: 48 },
7
+ { id: 'r2', name: 50, off: 10, bar: 55 },
8
+ { id: 'r3', name: 84, off: 18, bar: 30 },
9
+ { id: 'r4', name: 45, off: 18, bar: 42 },
10
+ { id: 'r5', name: 66, off: 34, bar: 38 },
11
+ { id: 'r6', name: 55, off: 41, bar: 25 },
12
+ { id: 'r7', name: 40, off: 50, bar: 30 },
13
+ ];
14
+ const HEADER_MARKERS = ['m0', 'm1', 'm2', 'm3'];
15
+ const HeaderDivider = () => (_jsx("div", { className: "flex justify-center", children: _jsx("span", { "aria-hidden": true, className: "h-full w-px bg-gray-alpha-400" }) }));
16
+ export function TraceViewerSkeleton() {
17
+ return (_jsxs("output", { "aria-busy": "true", "aria-label": "Loading trace", className: "flex flex-col w-full h-full min-h-0 bg-background-100", children: [_jsx("span", { className: "sr-only", children: "Loading trace\u2026" }), _jsxs("div", { className: "shrink-0 grid", style: { gridTemplateColumns: COL_TEMPLATE }, children: [_jsxs("div", { className: "h-10 min-h-10 flex items-center border-b border-gray-alpha-400 pl-4 pr-2 gap-1.5", children: [_jsx(Skeleton, { className: "w-3.5 h-3.5 shrink-0 rounded-sm" }), _jsx(Skeleton, { className: "h-3.5 w-40" })] }), _jsx(HeaderDivider, {}), _jsx("div", { className: "h-10 min-h-10 flex items-end border-b border-gray-alpha-400 px-4 pb-1 gap-2", children: _jsx("div", { className: "relative flex-1 flex items-end justify-between", children: HEADER_MARKERS.map((id) => (_jsx(Skeleton, { className: "h-3.5 w-9" }, id))) }) })] }), _jsxs("div", { className: "grid flex-1 min-h-0 overflow-hidden", style: { gridTemplateColumns: COL_TEMPLATE }, children: [_jsx("div", { className: "block overflow-visible", children: _jsx("ul", { className: "block divide-y divide-gray-alpha-400 border-b border-gray-alpha-400", children: ROWS.map((row) => (_jsxs("li", { className: "h-10 flex items-center pl-4 pr-2", children: [_jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [_jsx(Skeleton, { className: "w-4 h-4 shrink-0 rounded-sm" }), _jsx(Skeleton, { className: "h-3.5", style: { width: `${row.name}%` } })] }), _jsx(Skeleton, { className: "ml-2 h-3.5 w-10 shrink-0" })] }, row.id))) }) }), _jsx("span", { "aria-hidden": true, className: "h-full w-px bg-gray-alpha-400" }), _jsx("div", { className: "relative min-h-0", children: ROWS.map((row) => (_jsx("div", { className: "relative h-10", children: _jsx("div", { className: "absolute inset-x-4 inset-y-0", children: _jsx(Skeleton, { className: "absolute top-1/2 -translate-y-1/2 h-6 rounded-[0.25rem]", style: { left: `${row.off}%`, width: `${row.bar}%` } }) }) }, row.id))) })] })] }));
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2Utdmlld2VyLXNrZWxldG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbmV3LXRyYWNlLXZpZXdlci9jb21wb25lbnRzL3RyYWNlLXZpZXdlci1za2VsZXRvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU3QyxNQUFNLFlBQVksR0FBRyw2QkFBNkIsQ0FBQztBQUVuRCxNQUFNLElBQUksR0FBNkQ7SUFDckUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFO0lBQ3ZDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRTtJQUN2QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7SUFDeEMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFO0lBQ3hDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRTtJQUN4QyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7SUFDeEMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFO0lBQ3hDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRTtDQUN6QyxDQUFDO0FBRUYsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVoRCxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUMxQixjQUFLLFNBQVMsRUFBQyxxQkFBcUIsWUFDbEMsb0NBQWtCLFNBQVMsRUFBQywrQkFBK0IsR0FBRyxHQUMxRCxDQUNQLENBQUM7QUFFRixNQUFNLFVBQVUsbUJBQW1CO0lBQ2pDLE9BQU8sQ0FDTCwrQkFDWSxNQUFNLGdCQUNMLGVBQWUsRUFDMUIsU0FBUyxFQUFDLHVEQUF1RCxhQUVqRSxlQUFNLFNBQVMsRUFBQyxTQUFTLG9DQUFzQixFQUcvQyxlQUNFLFNBQVMsRUFBQyxlQUFlLEVBQ3pCLEtBQUssRUFBRSxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxhQUU1QyxlQUFLLFNBQVMsRUFBQyxrRkFBa0YsYUFDL0YsS0FBQyxRQUFRLElBQUMsU0FBUyxFQUFDLGlDQUFpQyxHQUFHLEVBQ3hELEtBQUMsUUFBUSxJQUFDLFNBQVMsRUFBQyxZQUFZLEdBQUcsSUFDL0IsRUFDTixLQUFDLGFBQWEsS0FBRyxFQUNqQixjQUFLLFNBQVMsRUFBQyw2RUFBNkUsWUFDMUYsY0FBSyxTQUFTLEVBQUMsZ0RBQWdELFlBQzVELGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQzFCLEtBQUMsUUFBUSxJQUFVLFNBQVMsRUFBQyxXQUFXLElBQXpCLEVBQUUsQ0FBMEIsQ0FDNUMsQ0FBQyxHQUNFLEdBQ0YsSUFDRixFQUdOLGVBQ0UsU0FBUyxFQUFDLHFDQUFxQyxFQUMvQyxLQUFLLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsYUFHNUMsY0FBSyxTQUFTLEVBQUMsd0JBQXdCLFlBQ3JDLGFBQUksU0FBUyxFQUFDLHFFQUFxRSxZQUNoRixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUNqQixjQUFpQixTQUFTLEVBQUMsa0NBQWtDLGFBQzNELGVBQUssU0FBUyxFQUFDLHdDQUF3QyxhQUNyRCxLQUFDLFFBQVEsSUFBQyxTQUFTLEVBQUMsNkJBQTZCLEdBQUcsRUFDcEQsS0FBQyxRQUFRLElBQ1AsU0FBUyxFQUFDLE9BQU8sRUFDakIsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQ2hDLElBQ0UsRUFDTixLQUFDLFFBQVEsSUFBQyxTQUFTLEVBQUMsMEJBQTBCLEdBQUcsS0FSMUMsR0FBRyxDQUFDLEVBQUUsQ0FTVixDQUNOLENBQUMsR0FDQyxHQUNELEVBR04sb0NBQWtCLFNBQVMsRUFBQywrQkFBK0IsR0FBRyxFQUc5RCxjQUFLLFNBQVMsRUFBQyxrQkFBa0IsWUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FDakIsY0FBa0IsU0FBUyxFQUFDLGVBQWUsWUFDekMsY0FBSyxTQUFTLEVBQUMsOEJBQThCLFlBQzNDLEtBQUMsUUFBUSxJQUNQLFNBQVMsRUFBQyx5REFBeUQsRUFDbkUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxHQUNwRCxHQUNFLElBTkUsR0FBRyxDQUFDLEVBQUUsQ0FPVixDQUNQLENBQUMsR0FDRSxJQUNGLElBQ0MsQ0FDVixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAnLi4vLi4vdWkvc2tlbGV0b24nO1xuXG5jb25zdCBDT0xfVEVNUExBVEUgPSAnMzQwcHggMXB4IG1pbm1heCg1MHB4LCAxZnIpJztcblxuY29uc3QgUk9XUzogeyBpZDogc3RyaW5nOyBuYW1lOiBudW1iZXI7IG9mZjogbnVtYmVyOyBiYXI6IG51bWJlciB9W10gPSBbXG4gIHsgaWQ6ICdyMCcsIG5hbWU6IDYyLCBvZmY6IDAsIGJhcjogNzIgfSxcbiAgeyBpZDogJ3IxJywgbmFtZTogNzgsIG9mZjogNiwgYmFyOiA0OCB9LFxuICB7IGlkOiAncjInLCBuYW1lOiA1MCwgb2ZmOiAxMCwgYmFyOiA1NSB9LFxuICB7IGlkOiAncjMnLCBuYW1lOiA4NCwgb2ZmOiAxOCwgYmFyOiAzMCB9LFxuICB7IGlkOiAncjQnLCBuYW1lOiA0NSwgb2ZmOiAxOCwgYmFyOiA0MiB9LFxuICB7IGlkOiAncjUnLCBuYW1lOiA2Niwgb2ZmOiAzNCwgYmFyOiAzOCB9LFxuICB7IGlkOiAncjYnLCBuYW1lOiA1NSwgb2ZmOiA0MSwgYmFyOiAyNSB9LFxuICB7IGlkOiAncjcnLCBuYW1lOiA0MCwgb2ZmOiA1MCwgYmFyOiAzMCB9LFxuXTtcblxuY29uc3QgSEVBREVSX01BUktFUlMgPSBbJ20wJywgJ20xJywgJ20yJywgJ20zJ107XG5cbmNvbnN0IEhlYWRlckRpdmlkZXIgPSAoKSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgIDxzcGFuIGFyaWEtaGlkZGVuIGNsYXNzTmFtZT1cImgtZnVsbCB3LXB4IGJnLWdyYXktYWxwaGEtNDAwXCIgLz5cbiAgPC9kaXY+XG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gVHJhY2VWaWV3ZXJTa2VsZXRvbigpIHtcbiAgcmV0dXJuIChcbiAgICA8b3V0cHV0XG4gICAgICBhcmlhLWJ1c3k9XCJ0cnVlXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJMb2FkaW5nIHRyYWNlXCJcbiAgICAgIGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgdy1mdWxsIGgtZnVsbCBtaW4taC0wIGJnLWJhY2tncm91bmQtMTAwXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+TG9hZGluZyB0cmFjZeKApjwvc3Bhbj5cblxuICAgICAgey8qIEhlYWRlciByb3c6IHNlYXJjaCBoZWFkZXIgfCBkaXZpZGVyIHwgdGltZWxpbmUgaGVhZGVyICovfVxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9XCJzaHJpbmstMCBncmlkXCJcbiAgICAgICAgc3R5bGU9e3sgZ3JpZFRlbXBsYXRlQ29sdW1uczogQ09MX1RFTVBMQVRFIH19XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC0xMCBtaW4taC0xMCBmbGV4IGl0ZW1zLWNlbnRlciBib3JkZXItYiBib3JkZXItZ3JheS1hbHBoYS00MDAgcGwtNCBwci0yIGdhcC0xLjVcIj5cbiAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwidy0zLjUgaC0zLjUgc2hyaW5rLTAgcm91bmRlZC1zbVwiIC8+XG4gICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cImgtMy41IHctNDBcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPEhlYWRlckRpdmlkZXIgLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLTEwIG1pbi1oLTEwIGZsZXggaXRlbXMtZW5kIGJvcmRlci1iIGJvcmRlci1ncmF5LWFscGhhLTQwMCBweC00IHBiLTEgZ2FwLTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIGZsZXgtMSBmbGV4IGl0ZW1zLWVuZCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgIHtIRUFERVJfTUFSS0VSUy5tYXAoKGlkKSA9PiAoXG4gICAgICAgICAgICAgIDxTa2VsZXRvbiBrZXk9e2lkfSBjbGFzc05hbWU9XCJoLTMuNSB3LTlcIiAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBDb250ZW50IHJvdzogZXZlbnQgbGlzdCB8IGd1dHRlciB8IHRpbWVsaW5lICovfVxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9XCJncmlkIGZsZXgtMSBtaW4taC0wIG92ZXJmbG93LWhpZGRlblwiXG4gICAgICAgIHN0eWxlPXt7IGdyaWRUZW1wbGF0ZUNvbHVtbnM6IENPTF9URU1QTEFURSB9fVxuICAgICAgPlxuICAgICAgICB7LyogU2lkZWJhciBldmVudCByb3dzICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2NrIG92ZXJmbG93LXZpc2libGVcIj5cbiAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwiYmxvY2sgZGl2aWRlLXkgZGl2aWRlLWdyYXktYWxwaGEtNDAwIGJvcmRlci1iIGJvcmRlci1ncmF5LWFscGhhLTQwMFwiPlxuICAgICAgICAgICAge1JPV1MubWFwKChyb3cpID0+IChcbiAgICAgICAgICAgICAgPGxpIGtleT17cm93LmlkfSBjbGFzc05hbWU9XCJoLTEwIGZsZXggaXRlbXMtY2VudGVyIHBsLTQgcHItMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBtaW4tdy0wIGZsZXgtMSBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJ3LTQgaC00IHNocmluay0wIHJvdW5kZWQtc21cIiAvPlxuICAgICAgICAgICAgICAgICAgPFNrZWxldG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtMy41XCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IGAke3Jvdy5uYW1lfSVgIH19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJtbC0yIGgtMy41IHctMTAgc2hyaW5rLTBcIiAvPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIEd1dHRlciAqL31cbiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW4gY2xhc3NOYW1lPVwiaC1mdWxsIHctcHggYmctZ3JheS1hbHBoYS00MDBcIiAvPlxuXG4gICAgICAgIHsvKiBUaW1lbGluZSBiYXJzICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIG1pbi1oLTBcIj5cbiAgICAgICAgICB7Uk9XUy5tYXAoKHJvdykgPT4gKFxuICAgICAgICAgICAgPGRpdiBrZXk9e3Jvdy5pZH0gY2xhc3NOYW1lPVwicmVsYXRpdmUgaC0xMFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LXgtNCBpbnNldC15LTBcIj5cbiAgICAgICAgICAgICAgICA8U2tlbGV0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0xLzIgLXRyYW5zbGF0ZS15LTEvMiBoLTYgcm91bmRlZC1bMC4yNXJlbV1cIlxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgbGVmdDogYCR7cm93Lm9mZn0lYCwgd2lkdGg6IGAke3Jvdy5iYXJ9JWAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvb3V0cHV0PlxuICApO1xufVxuIl19
@@ -0,0 +1,20 @@
1
+ import { type RefObject } from 'react';
2
+ export interface RowWindow {
3
+ /** First visible row index (inclusive), already padded by overscan. */
4
+ start: number;
5
+ /** Last visible row index (exclusive), already padded by overscan. */
6
+ end: number;
7
+ }
8
+ /**
9
+ * Fixed-height windowing over a shared scroll container.
10
+ *
11
+ * The events list and timeline both render one `rowHeight`-tall row per span
12
+ * and scroll together inside the same `SplitPane`. Each caller passes a ref to
13
+ * its own root; the hook walks up to the shared scrollable ancestor, so the
14
+ * scroll container doesn't have to be threaded through props. Same scroll
15
+ * position + same row height means both panes window to the same range.
16
+ */
17
+ export declare function useRowWindow(ref: RefObject<HTMLElement | null>, rowCount: number, rowHeight: number, overscan?: number): RowWindow;
18
+ /** Row height (px) shared by the events list and timeline rows (`h-10`). */
19
+ export declare const ROW_HEIGHT_PX = 40;
20
+ //# sourceMappingURL=use-row-window.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-row-window.d.ts","sourceRoot":"","sources":["../../../../src/components/new-trace-viewer/components/use-row-window.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAC;AAK5D,MAAM,WAAW,SAAS;IACxB,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;CACb;AAaD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,SAAK,GACZ,SAAS,CAkDX;AAED,4EAA4E;AAC5E,eAAO,MAAM,aAAa,KAAK,CAAC"}