footprintjs 10.2.0 → 10.3.0

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 (57) hide show
  1. package/dist/esm/index.d.ts +1 -0
  2. package/dist/esm/index.js +1 -1
  3. package/dist/esm/lib/attempt/category.d.ts +4 -2
  4. package/dist/esm/lib/attempt/category.js +18 -11
  5. package/dist/esm/lib/attempt/errorField.d.ts +2 -0
  6. package/dist/esm/lib/attempt/errorField.js +32 -0
  7. package/dist/esm/lib/capture/nativeCoverage.d.ts +56 -0
  8. package/dist/esm/lib/capture/nativeCoverage.js +102 -0
  9. package/dist/esm/lib/memory/StageContext.d.ts +5 -0
  10. package/dist/esm/lib/memory/StageContext.js +27 -6
  11. package/dist/esm/lib/memory/attention.d.ts +2 -0
  12. package/dist/esm/lib/memory/attention.js +12 -5
  13. package/dist/esm/lib/recorder/ControlDepRecorder.d.ts +12 -1
  14. package/dist/esm/lib/recorder/ControlDepRecorder.js +23 -1
  15. package/dist/esm/lib/recorder/snapshot.d.ts +1 -1
  16. package/dist/esm/lib/recorder/snapshot.js +7 -2
  17. package/dist/esm/lib/runner/ExecutionRuntime.d.ts +9 -0
  18. package/dist/esm/lib/runner/ExecutionRuntime.js +13 -1
  19. package/dist/esm/lib/runner/FlowChartExecutor.d.ts +2 -0
  20. package/dist/esm/lib/runner/FlowChartExecutor.js +31 -2
  21. package/dist/esm/lib/runner/attach.js +4 -2
  22. package/dist/esm/lib/runner/options.d.ts +3 -0
  23. package/dist/esm/lib/runner/options.js +5 -1
  24. package/dist/esm/lib/runner/snapshot.d.ts +3 -1
  25. package/dist/esm/lib/runner/snapshot.js +35 -4
  26. package/dist/esm/lib/scope/ScopeFacade.js +4 -2
  27. package/dist/esm/lib/scope/runtime.d.ts +2 -0
  28. package/dist/esm/lib/scope/runtime.js +9 -1
  29. package/dist/index.js +1 -1
  30. package/dist/lib/attempt/category.js +18 -11
  31. package/dist/lib/attempt/errorField.js +36 -0
  32. package/dist/lib/capture/nativeCoverage.js +107 -0
  33. package/dist/lib/memory/StageContext.js +27 -6
  34. package/dist/lib/memory/attention.js +12 -5
  35. package/dist/lib/recorder/ControlDepRecorder.js +23 -1
  36. package/dist/lib/recorder/snapshot.js +7 -2
  37. package/dist/lib/runner/ExecutionRuntime.js +13 -1
  38. package/dist/lib/runner/FlowChartExecutor.js +34 -5
  39. package/dist/lib/runner/attach.js +3 -1
  40. package/dist/lib/runner/options.js +5 -1
  41. package/dist/lib/runner/snapshot.js +35 -4
  42. package/dist/lib/scope/ScopeFacade.js +3 -1
  43. package/dist/lib/scope/runtime.js +12 -2
  44. package/dist/types/index.d.ts +1 -0
  45. package/dist/types/lib/attempt/category.d.ts +4 -2
  46. package/dist/types/lib/attempt/errorField.d.ts +2 -0
  47. package/dist/types/lib/capture/nativeCoverage.d.ts +56 -0
  48. package/dist/types/lib/memory/StageContext.d.ts +5 -0
  49. package/dist/types/lib/memory/attention.d.ts +2 -0
  50. package/dist/types/lib/recorder/ControlDepRecorder.d.ts +12 -1
  51. package/dist/types/lib/recorder/snapshot.d.ts +1 -1
  52. package/dist/types/lib/runner/ExecutionRuntime.d.ts +9 -0
  53. package/dist/types/lib/runner/FlowChartExecutor.d.ts +2 -0
  54. package/dist/types/lib/runner/options.d.ts +3 -0
  55. package/dist/types/lib/runner/snapshot.d.ts +3 -1
  56. package/dist/types/lib/scope/runtime.d.ts +2 -0
  57. package/package.json +1 -1
@@ -283,4 +283,5 @@ export { extractErrorInfo, formatErrorInfo } from './lib/engine/index.js';
283
283
  export { disableDevMode, enableDevMode, isDevMode } from './lib/devMode.js';
284
284
  export type { RetryLoopCall, RetryLoopDecision, RetryLoopIdentity } from './lib/attempt/retryLoopTypes.js';
285
285
  export type { RetryLoopContext, RetryLoopOptions, RetryLoopState } from './lib/builder/retryLoop.js';
286
+ export type { CaptureChannelStatus, CaptureLimitation, NativeCaptureNote, RecorderCaptureAcknowledgement, } from './lib/capture/nativeCoverage.js';
286
287
  export { stringifySnapshot } from './lib/runner/stringifySnapshot.js';
package/dist/esm/index.js CHANGED
@@ -95,4 +95,4 @@ export { extractErrorInfo, formatErrorInfo } from './lib/engine/index.js';
95
95
  */
96
96
  export { disableDevMode, enableDevMode, isDevMode } from './lib/devMode.js';
97
97
  export { stringifySnapshot } from './lib/runner/stringifySnapshot.js';
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFTSCw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBc0N4RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFRbkQsNEJBQTRCO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQW9CM0MsbUNBQW1DO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFpRHZEOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBV3JILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBMEIvRixvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUXhELG9CQUFvQjtBQUNwQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBcUJuRCwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXRELCtCQUErQjtBQUMvQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFckQsb0NBQW9DO0FBQ3BDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBbUM1RCxxRUFBcUU7QUFDckUsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ2xCLFdBQVcsR0FDWixNQUFNLHlCQUF5QixDQUFDO0FBa0RqQywrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLOUQsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdELCtCQUErQjtBQUMvQixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkUsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXpFLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVqRSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEUsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBFLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQW1CdEUsdUNBQXVDO0FBQ3ZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdFLCtFQUErRTtBQUMvRSw0RUFBNEU7QUFDNUUsK0VBQStFO0FBRS9FLDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQTBCNUQsNkJBQTZCO0FBQzdCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQWdFakQsc0NBQXNDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTNFLHNDQUFzQztBQUN0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFTckcsZ0NBQWdDO0FBQ2hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRSwrRUFBK0U7QUFDL0UsaURBQWlEO0FBQ2pELCtFQUErRTtBQUUvRTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBUzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb290UHJpbnQg4oCUIFB1YmxpYyBBUEkgKHYzKVxuICpcbiAqIFRoZSBmbG93Y2hhcnQgcGF0dGVybiBmb3IgYmFja2VuZCBjb2RlLlxuICogQnVpbGQg4oaSIFJ1biDihpIgT2JzZXJ2ZS5cbiAqXG4gKiAqKlRoZSBjb21tb24gaW1wb3J0IHBhdGhzOioqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZmxvd0NoYXJ0LCBkZWNpZGUsIG5hcnJhdGl2ZSB9IGZyb20gJ2Zvb3RwcmludGpzJzsgICAgICAgICAgIC8vIG1haW4g4oCUIHN0YXJ0IGhlcmVcbiAqIGltcG9ydCB7IG1ldHJpY3MsIGRlYnVnLCBtYW5pZmVzdCB9ICAgICBmcm9tICdmb290cHJpbnRqcy9yZWNvcmRlcnMnOyAvLyByZWNvcmRlciBmYWN0b3JpZXNcbiAqIGltcG9ydCB7IHN0YXRlQXQsIGNhdXNhbENoYWluIH0gZnJvbSAnZm9vdHRyYWNlJzsgICAgIC8vIHJlYWQgYSBmaW5pc2hlZCBydW5cbiAqIGltcG9ydCB7IFJlY29yZEZyYW1lLCBFdmVudExvZyB9IGZyb20gJ2Zvb3R0cmFjZS93cml0ZSc7ICAgICAvLyB3cml0ZSBhIHJlY29yZCB5b3Vyc2VsZlxuICogaW1wb3J0IHsgU3RhZ2VDb250ZXh0IH0gICAgICAgICAgICAgICAgIGZyb20gJ2Zvb3RwcmludGpzL2FkdmFuY2VkJzsgIC8vIGVuZ2luZSBpbnRlcm5hbHNcbiAqIGBgYFxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRdWljayBTdGFydCDigJQgRXZlcnl0aGluZyB5b3UgbmVlZCBmb3IgOTAlIG9mIHVzZSBjYXNlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IEZsb3dDaGFydCwgU3RhZ2VGdW5jdGlvbiBhcyBTdGFnZUhhbmRsZXIsIFN0cmVhbUhhbmRsZXJzIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnQgKi9cbmV4cG9ydCB7IGZsb3dDaGFydCwgRmxvd0NoYXJ0QnVpbGRlciwgZmxvd0NoYXJ0U2VsZWN0b3IgfSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnRcbiAqXG4gKiBDb25maWcgZm9yIGAuYWRkUGFyYWxsZWxGb3JFYWNoKClgIOKAlCBvbmUgYnJhbmNoIHBlciBpdGVtLCBicmFuY2ggY291bnRcbiAqIGRlY2lkZWQgYXQgcnVuIHRpbWUgZnJvbSB0aGUgcGF5bG9hZC4gYG1heEJyYW5jaGVzYCBhbmQgYGludG9gIGFyZSByZXF1aXJlZFxuICogb24gcHVycG9zZSAoc2VlIGRvY3MvZGVzaWduL2V4ZWN1dGlvbi1jb250cm9sLm1kKS5cbiAqL1xuZXhwb3J0IHR5cGUgeyBCcmFuY2hDaGFydCwgUGFyYWxsZWxGb3JFYWNoQ29uZmlnLCBSZXRyeVBvbGljeSB9IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0IOKAlCBidWlsZC10aW1lIG9ic2VydmVyICh0d2luIG9mIEZsb3dSZWNvcmRlcikgKi9cbmV4cG9ydCB0eXBlIHtcbiAgU3RydWN0dXJlRGVjaWRlckNvbXBsZXRlRXZlbnQsXG4gIFN0cnVjdHVyZUVkZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVFZGdlS2luZCxcbiAgU3RydWN0dXJlTG9vcEVkZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVSZWNvcmRlcixcbiAgU3RydWN0dXJlU3RhZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVTdGFnZVRhZ2dlZEV2ZW50LFxuICBTdHJ1Y3R1cmVTdWJmbG93TW91bnRlZEV2ZW50LFxufSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgVGltZSBCdWRnZXRcbiAqXG4gKiBgdGltZUJ1ZGdldChjaGFydClgIOKAlCB0aGUgc2xvd2VzdCBhIGNoYXJ0IGNhbiB0YWtlLCBmcm9tIGl0cyBkZWNsYXJlZCByZXRyeSBwb2xpY2llcyAoYGF0dGVtcHRzIMOXIHRpbWVvdXRNc2AgcGx1c1xuICogdGhlIHdhaXRzLCBzdW1tZWQgYWxvbmcgdGhlIHNsb3dlc3QgcGF0aCksIGFuZCBldmVyeSBzdGFnZSB0aGF0IG1ha2VzIGEgcGF0aCB1bmJvdW5kZWQsIGJ5IG5hbWUuIGAuYnVkZ2V0KG1zKWBcbiAqIGRlY2xhcmVzIHRoZSBjYWxsZXIncyBjb250cmFjdDsgYGJ1aWxkKClgIHJlZnVzZXMgYSBjaGFydCB0aGF0IGNhbm5vdCBrZWVwIGl0LiBBbHNvIGBjaGFydC50aW1lQnVkZ2V0KClgLlxuICovXG5leHBvcnQgdHlwZSB7XG4gIEJ1ZGdldEFzc3VtcHRpb25zLFxuICBCdWRnZXRTdGVwLFxuICBUaW1lQnVkZ2V0T3B0aW9ucyxcbiAgVGltZUJ1ZGdldFJlcG9ydCxcbiAgVW5ib3VuZGVkUmVhc29uLFxuICBVbmJvdW5kZWRTdGFnZSxcbn0gZnJvbSAnLi9saWIvYnVkZ2V0L2luZGV4LmpzJztcbmV4cG9ydCB7IHRpbWVCdWRnZXQgfSBmcm9tICcuL2xpYi9idWRnZXQvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IFR5cGVkU3RhZ2VGdW5jdGlvbiB9IGZyb20gJy4vbGliL2J1aWxkZXIvdHlwZWRGbG93Q2hhcnQuanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IFNjb3BlTWV0aG9kcywgVHlwZWRTY29wZSB9IGZyb20gJy4vbGliL3JlYWN0aXZlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBRdWljayBTdGFydCAqL1xuZXhwb3J0IHsgbmFycmF0aXZlIH0gZnJvbSAnLi9yZWNvcmRlcnMuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZWNpc2lvbiBCcmFuY2hpbmcg4oCUIGRlY2lkZSgpIC8gc2VsZWN0KCkgd2l0aCBldmlkZW5jZSBjYXB0dXJlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgRGVjaXNpb24gQnJhbmNoaW5nICovXG5leHBvcnQgdHlwZSB7XG4gIERlY2lkZVJ1bGUsXG4gIERlY2lzaW9uRXZpZGVuY2UsXG4gIERlY2lzaW9uUmVzdWx0LFxuICBEZWZhdWx0QnJhbmNoLFxuICBGaWx0ZXJPcHMsXG4gIFJ1bGVFdmlkZW5jZSxcbiAgU2VsZWN0aW9uRXZpZGVuY2UsXG4gIFNlbGVjdGlvblJlc3VsdCxcbiAgV2hlbkNsYXVzZSxcbiAgV2hlcmVGaWx0ZXIsXG59IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRGVjaXNpb24gQnJhbmNoaW5nICovXG5leHBvcnQgeyBkZWNpZGUsIHNlbGVjdCB9IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRXJyb3JzICovXG5leHBvcnQgdHlwZSB7IFRlcm1pbmFsRmFpbHVyZUNvbnRleHQgfSBmcm9tICcuL2xpYi9lcnJvcnMvdGVybWluYWxGYWlsdXJlLmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQXR0ZW1wdHMg4oCUIGV2ZXJ5IHRyeSBvZiBhIHJldHJpZWQgc3RhZ2UsIGFuZCB0aGUgZGVjaXNpb24gdGhhdCBmb2xsb3dlZCBpdFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEBjYXRlZ29yeSBBdHRlbXB0c1xuICpcbiAqIE9uZSBgQXR0ZW1wdFJlY29yZGAgcGVyIGF0dGVtcHQgb2YgYSBzdGFnZSB3aXRoIGEgZGVjbGFyZWQgYHJldHJ5YCBwb2xpY3ksIGEgYHRpbWVvdXRNc2AsIG9yIGEgcnVuIGRlYWRsaW5lIOKAlFxuICogdGltaW5nLCBvdXRjb21lLCBmYWlsdXJlIGNhdGVnb3J5LCBhbmQgdGhlIHJldHJ5LW9yLXN0b3AgZGVjaXNpb24gYXMgYERlY2lzaW9uRXZpZGVuY2VgIOKAlCBvbiB0aGUgc3RhZ2Unc1xuICogZXhlY3V0aW9uLXRyZWUgbm9kZSAoYFN0YWdlU25hcHNob3QuYXR0ZW1wdHNgIC8gYGF0dGVtcHRTdW1tYXJ5YCkgYW5kIG9uIGBGbG93UmVjb3JkZXIub25BdHRlbXB0YC5cbiAqIEEgY2FsbCBhIHN0YWdlIG1ha2VzIHRocm91Z2ggYHNjb3BlLiRjYWxsYCBpcyByZWNvcmRlZCB0aGUgc2FtZSB3YXkgKGtpbmQgYCdjYWxsJ2ApLCBhbmQgc28gaXMgYW4gU0RLJ3Mgb3duIHJldHJ5XG4gKiBhbiBhZGFwdGVyIHJlcG9ydHMgdGhyb3VnaCBgb2JzZXJ2ZWQoKWAgKGBPYnNlcnZlZEF0dGVtcHRgLCBraW5kIGAnb2JzZXJ2ZWQnYCkuIGBBdHRlbXB0Q29udGV4dGAgaXMgd2hhdFxuICogYHNjb3BlLiRhdHRlbXB0KClgIHJldHVybnMsIGFuZCB3aGF0IGEgY2FsbCdzIGZ1bmN0aW9uIGdldHMgKHRoZSBhdHRlbXB0J3Mgc2lnbmFsLCB0aGUgdGltZSBsZWZ0LCBgb2JzZXJ2ZWRgKTtcbiAqIGBMYXRlV3JpdGVgIGlzIGEgd3JpdGUgKG9yIGNhbGwpIGFuIGVuZGVkIGF0dGVtcHQgdHJpZWQgKGBTdGFnZVNuYXBzaG90LmxhdGVXcml0ZXNgKS4gQSBzdGFnZSB0aGF0IGNoYW5nZXMgYW5cbiAqIG91dHNpZGUgc3lzdGVtIGRlY2xhcmVzIGl0IChgU3RhZ2VUb3VjaGVzYCwgYC50b3VjaGVzKClgKSwgYW5kIGEgY2FsbCBkb2VzIChgQ2FsbE9wdGlvbnNgKTogZXZlcnkgYXR0ZW1wdCB0aGVuXG4gKiBjYXJyaWVzIGl0cyBgQXR0ZW1wdEVmZmVjdGAsIGFuZCB0aGUga2V5IHJ1bGUgaXMgaGFuZGVkIGFuIGBJZGVtcG90ZW5jeUtleUNvbnRleHRgIG9uY2UgcGVyIGV4ZWN1dGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUge1xuICBBdHRlbXB0Q2F0ZWdvcnksXG4gIEF0dGVtcHRDb250ZXh0LFxuICBBdHRlbXB0RWZmZWN0LFxuICBBdHRlbXB0RXJyb3IsXG4gIEF0dGVtcHRJbnB1dHMsXG4gIEF0dGVtcHRLaW5kLFxuICBBdHRlbXB0TmV4dCxcbiAgQXR0ZW1wdE9wdGlvbnMsXG4gIEF0dGVtcHRPdXRjb21lLFxuICBBdHRlbXB0UmVhc29uLFxuICBBdHRlbXB0UmVjb3JkLFxuICBBdHRlbXB0U3VtbWFyeSxcbiAgQ2FsbE9wdGlvbnMsXG4gIElkZW1wb3RlbmN5S2V5Q29udGV4dCxcbiAgTGF0ZVdyaXRlLFxuICBPYnNlcnZlZEF0dGVtcHQsXG4gIFN0YWdlVG91Y2hlcyxcbiAgVW5rbm93bkVmZmVjdEluaXQsXG59IGZyb20gJy4vbGliL2F0dGVtcHQvaW5kZXguanMnO1xuLyoqXG4gKiBAY2F0ZWdvcnkgQXR0ZW1wdHNcbiAqXG4gKiBBbiBhdHRlbXB0IGJ5IG5hbWUgKGBzZXJpZXNgICsgYGF0dGVtcHRgKSBhbmQgcGVyLW91dGNvbWUgY291bnRzIOKAlCB3aGF0IHJlY29yZGVyIHJvd3MgaG9sZCBvZiBhdHRlbXB0cy5cbiAqL1xuZXhwb3J0IHR5cGUgeyBBdHRlbXB0T3V0Y29tZUNvdW50cywgQXR0ZW1wdFJlZiB9IGZyb20gJy4vbGliL3JlY29yZGVyL2F0dGVtcHRTZXJpZXMuanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBBdHRlbXB0c1xuICpcbiAqIGBhdHRlbXB0KClgIOKAlCB0aGUgYXR0ZW1wdCBydW5uZXIgZm9yIGNvZGUgdGhhdCBpcyBub3QgYSBzdGFnZSAocmVjb3JkcyBnbyB0byBpdHMgYG9uQXR0ZW1wdGApOyBgZXJyb3JDYXRlZ29yeWBcbiAqIOKAlCB0aGUgb25lIGZhaWx1cmUgY2xhc3NpZmllciAoc2V2ZW4gZml4ZWQgY2F0ZWdvcmllcyk7IGByZXRyeVJ1bGVzYCDigJQgdGhlIG9uZSByZXRyeSBydWxlIHRhYmxlLCBhcyBgZGVjaWRlKClgXG4gKiBydWxlczsgdGhlIGF0dGVtcHQgY29udHJhY3QncyB0d28gZXJyb3JzLlxuICovXG5leHBvcnQgeyBhdHRlbXB0LCBBdHRlbXB0VGltZW91dEVycm9yLCBlcnJvckNhdGVnb3J5LCByZXRyeVJ1bGVzLCBVbmtub3duRWZmZWN0RXJyb3IgfSBmcm9tICcuL2xpYi9hdHRlbXB0L2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgQ29ycmVsYXRpb25cbiAqXG4gKiBUaGUgcnVuJ3MgY29ycmVsYXRpb24gKDEwLjEpOiBgZW52LnRyYWNlcGFyZW50YCAoVzNDLCBwYXJzZWQgc3RyaWN0bHkpIG9yIGBlbnYudHJhY2VJZGAgKyBgZW52Lm9wZXJhdGlvbklkYFxuICogYmVjb21lIE9ORSBmcm96ZW4gYFJ1bkNvcnJlbGF0aW9uYCBwZXIgcnVuIOKAlCBvbiBgZ2V0U25hcHNob3QoKS5jb3JyZWxhdGlvbmAsIGV2ZXJ5IGZsb3cgZXZlbnQnc1xuICogYHRyYXZlcnNhbENvbnRleHQuY29ycmVsYXRpb25gIGFuZCBldmVyeSBzY29wZSBhbmQgZW1pdCBldmVudCdzIGBjb3JyZWxhdGlvbmAuIGBwYXJzZVRyYWNlcGFyZW50YCAvXG4gKiBgZm9ybWF0VHJhY2VwYXJlbnRgIGFyZSB0aGUgVzNDIGNvZGVjOyBhIHJlZnVzZWQgaGVhZGVyIHRocm93cyBgVHJhY2VwYXJlbnRFcnJvcmAgd2l0aCBhIG5hbWVkIGByZWFzb25gLlxuICovXG5leHBvcnQgdHlwZSB7IFBhcnNlZFRyYWNlcGFyZW50LCBSdW5Db3JyZWxhdGlvbiwgVHJhY2VwYXJlbnRGaWVsZHMsIFRyYWNlcGFyZW50UmVmdXNhbCB9IGZyb20gJy4vbGliL2F0dGVtcHQvaW5kZXguanMnO1xuZXhwb3J0IHsgZm9ybWF0VHJhY2VwYXJlbnQsIHBhcnNlVHJhY2VwYXJlbnQsIFRyYWNlcGFyZW50RXJyb3IgfSBmcm9tICcuL2xpYi9hdHRlbXB0L2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUnVuIOKAlCBFeGVjdXRlIGNoYXJ0cyBhbmQgY29sbGVjdCByZXN1bHRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgdHlwZSB7IFJ1blJlc3VsdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgdHlwZSB7IEZsb3dDaGFydEV4ZWN1dG9yT3B0aW9ucyB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKlxuICogVGhlIGNyYXNoLXNhZmUgcmVjb3JkICgxMC4xKTogdGhlIGV4ZWN1dG9yJ3MgYHNpbmtgIG9wdGlvbiwgaXRzIGFjY291bnRpbmcgb24gYGdldFNuYXBzaG90KCkuc2lua2AsXG4gKiBgZXhlY3V0b3IuZmx1c2hSZWNvcmQoKWAncyByZXN1bHQsIGFuZCB0aGUgZXJyb3IgYSBydW4gd2l0aCBgb25GYWlsdXJlOiAnZmFpbCdgIHJlamVjdHMgd2l0aC4gVGhlIHBvcnRcbiAqIChgUmVjb3JkU2lua2AsIGBtZW1vcnlTaW5rYCkgaXMgYGZvb3R0cmFjZS93cml0ZWAnczsgdGhlIGZpbGUgYWRhcHRlciBpcyBgZm9vdHByaW50anMvc2lua3NgLlxuICogQGNhdGVnb3J5IFJ1blxuICovXG5leHBvcnQgdHlwZSB7XG4gIFJlY29yZEZsdXNoUmVzdWx0LFxuICBSZWNvcmRTaW5rRmFpbHVyZU1vZGUsXG4gIFJlY29yZFNpbmtGbHVzaE1vZGUsXG4gIFJlY29yZFNpbmtPcHRpb24sXG4gIFJlY29yZFNpbmtPcHRpb25zLFxuICBSZWNvcmRTaW5rU3RhdHMsXG59IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHsgUmVjb3JkU2lua0Vycm9yIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBUaGUgZm91ciBvYnNlcnZhYmlsaXR5IGRpYWxzIGBGbG93Q2hhcnRFeGVjdXRvck9wdGlvbnNgIGluaGVyaXRzLlxuICogQGNhdGVnb3J5IFJ1blxuICovXG5leHBvcnQgdHlwZSB7IFJ1bkRpYWxzIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB7IEZsb3dDaGFydEV4ZWN1dG9yIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB7IFJ1bkNvbnRleHQgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHR5cGUgeyBDaGFydE9wZW5BUElPcHRpb25zLCBNQ1BUb29sRGVzY3JpcHRpb24sIFJ1bm5hYmxlRmxvd0NoYXJ0IH0gZnJvbSAnLi9saWIvcnVubmVyL1J1bm5hYmxlQ2hhcnQuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBPYnNlcnZlIOKAlCBEYXRhIChzY29wZSByZWNvcmRlcnMsIGZpcmUgZHVyaW5nIHN0YWdlIGV4ZWN1dGlvbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEYXRhICovXG5leHBvcnQgdHlwZSB7XG4gIENvbW1pdEV2ZW50LFxuICBFcnJvckV2ZW50LFxuICBSZWFkRXZlbnQsXG4gIFJlZGFjdGlvblBvbGljeSxcbiAgUmVkYWN0aW9uUmVwb3J0LFxuICBTY29wZVJlY29yZGVyLFxuICBTdGFnZUV2ZW50LFxuICBXcml0ZUV2ZW50LFxufSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGF0YSAqL1xuZXhwb3J0IHsgTWV0cmljUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGF0YSAqL1xuZXhwb3J0IHsgRGVidWdSZWNvcmRlciB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBPcGVyYXRpb24gKi9cbmV4cG9ydCB7IFJlY29yZGVyT3BlcmF0aW9uIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEZWxpdmVyeSB0aWVyIChSRkMtMDAxIGRlZmVycmVkIG9ic2VydmVycylcbiAqXG4gKiBFdmVyeSBgYXR0YWNoKlJlY29yZGVyYCBjYWxsIGFjY2VwdHMgYW4gb3B0aW9ucyBiYWc6XG4gKiBgZXhlY3V0b3IuYXR0YWNoU2NvcGVSZWNvcmRlcihyZWMsIHsgZGVsaXZlcnk6ICdkZWZlcnJlZCcgfSlgIHRha2VzIHRoZVxuICogcmVjb3JkZXIgT1VUIG9mIHRoZSBlbmdpbmUncyBob3QgcGF0aCDigJQgZXZlbnRzIGFyZSBjYXB0dXJlZCBpbnRvIG9uZVxuICogYm91bmRlZCwgdG90YWxseS1vcmRlcmVkIHF1ZXVlIGFuZCBkZWxpdmVyZWQgYXQgdGhlIG5leHQgbWljcm90YXNrXG4gKiBjaGVja3BvaW50IChcIm9uZSBiZWF0IGJlaGluZFwiKS4gT21pdCBgZGVsaXZlcnlgIGZvciB0aGUgaGlzdG9yaWNhbFxuICogc3luY2hyb25vdXMgY2FsbCAoYnl0ZS1pZGVudGljYWwgdG8gcHJldmlvdXMgcmVsZWFzZXMpLiBBY2NvdW50aW5nXG4gKiBzdXJmYWNlcyBvbiBgc25hcHNob3Qub2JzZXJ2ZXJTdGF0c2A7IGBleGVjdXRvci5kcmFpbk9ic2VydmVycygpYCBzZXR0bGVzXG4gKiBhc3luYyBsaXN0ZW5lcnMgYmVmb3JlIHNodXRkb3duLiBTZWUgYGRvY3MvZ3VpZGVzL29ic2VydmVycy1kZWZlcnJlZC5tZGAuXG4gKi9cbmV4cG9ydCB0eXBlIHtcbiAgQXR0YWNoUmVjb3JkZXJPcHRpb25zLFxuICBPYnNlcnZlckRlbGl2ZXJ5LFxuICBPYnNlcnZlckRyYWluUmVzdWx0LFxuICBPYnNlcnZlclN0YXRzLFxufSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEZWxpdmVyeSB0aWVyIChSRkMtMDAxIGRlZmVycmVkIG9ic2VydmVycylcbiAqXG4gKiBgQ2FwdHVyZVBvbGljeWAg4oCUIGhvdyBhIGRlZmVycmVkIGV2ZW50J3MgcGF5bG9hZCBpcyBtYXRlcmlhbGl6ZWQgYXRcbiAqIGNhcHR1cmUgdGltZSAoYCdjbG9uZSdgIGJ5IGRlZmF1bHQgZm9yIGF0dGFjaCBvcHRpb25zIC8gYCdzdW1tYXJ5J2AgLyBgJ3JlZidgKS4gYE92ZXJmbG93UG9saWN5YFxuICog4oCUIHdoYXQgYSBzYXR1cmF0ZWQgcXVldWUgZG9lcyAoYCdkcm9wLW9sZGVzdCdgIGRlZmF1bHQgLyBgJ3NhbXBsZSdgIC9cbiAqIGAnYmxvY2snYCkuIGBEaXNwYXRjaGVyU3RhdHNgIC8gYExpc3RlbmVyU3RhdHNgIOKAlCB0aGUgYWNjb3VudGluZyBzaGFwZXNcbiAqIGVtYmVkZGVkIGluIGBPYnNlcnZlclN0YXRzYC4gVHlwZXMgb25seSDigJQgdGhlIG9ic2VydmVyLXF1ZXVlIG1vZHVsZVxuICogaXRzZWxmIGlzIGludGVybmFsOyBjb25zdW1lcnMgdXNlIHRoZSBhdHRhY2ggb3B0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgeyBDYXB0dXJlUG9saWN5LCBEaXNwYXRjaGVyU3RhdHMsIExpc3RlbmVyU3RhdHMsIE92ZXJmbG93UG9saWN5IH0gZnJvbSAnLi9saWIvb2JzZXJ2ZXItcXVldWUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIENvbWJpbmVkIChib3RoIGRhdGEtZmxvdyBhbmQgY29udHJvbC1mbG93KSAqL1xuZXhwb3J0IHR5cGUgeyBDb21iaW5lZFJlY29yZGVyIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBDb21iaW5lZCAoYm90aCBkYXRhLWZsb3cgYW5kIGNvbnRyb2wtZmxvdykgKi9cbmV4cG9ydCB7XG4gIGhhc0VtaXRSZWNvcmRlck1ldGhvZHMsXG4gIGhhc0Zsb3dSZWNvcmRlck1ldGhvZHMsXG4gIGhhc1JlY29yZGVyTWV0aG9kcyxcbiAgaXNGbG93RXZlbnQsXG59IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRW1pdCAodXNlci1hdXRob3JlZCBzdHJ1Y3R1cmVkIGV2ZW50cylcbiAqXG4gKiBUaGlyZCBvYnNlcnZlciBjaGFubmVsIChhbG9uZ3NpZGUgYFNjb3BlUmVjb3JkZXJgIGFuZCBgRmxvd1JlY29yZGVyYCkuIENvbnN1bWVyXG4gKiBjb2RlIGNhbGxzIGBzY29wZS4kZW1pdChuYW1lLCBwYXlsb2FkKWAgZnJvbSBpbnNpZGUgYSBzdGFnZTsgZXZlcnkgYXR0YWNoZWRcbiAqIGBFbWl0UmVjb3JkZXIub25FbWl0KGV2ZW50KWAgZmlyZXMgc3luY2hyb25vdXNseSB3aXRoIHN0YWdlLWNvbnRleHRcbiAqIGVucmljaG1lbnQuIFBhc3MtdGhyb3VnaCDigJQgbm8gYnVmZmVyaW5nLCB6ZXJvIGFsbG9jYXRpb24gd2hlbiBubyByZWNvcmRlclxuICogaXMgYXR0YWNoZWQuXG4gKi9cbmV4cG9ydCB0eXBlIHsgRW1pdEV2ZW50LCBFbWl0UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9ic2VydmUg4oCUIEZsb3cgKEZsb3dSZWNvcmRlciwgZmlyZXMgYWZ0ZXIgc3RhZ2UgZXhlY3V0aW9uKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB0eXBlIHtcbiAgRmxvd0F0dGVtcHRFdmVudCxcbiAgRmxvd0JyZWFrRXZlbnQsXG4gIEZsb3dEZWNpc2lvbkV2ZW50LFxuICBGbG93RXJyb3JFdmVudCxcbiAgRmxvd0ZvcmtFdmVudCxcbiAgRmxvd0xvb3BFdmVudCxcbiAgRmxvd05leHRFdmVudCxcbiAgRmxvd1JlY29yZGVyLFxuICBGbG93UnVuRXZlbnQsXG4gIEZsb3dSdW5GYWlsZWRFdmVudCxcbiAgRmxvd1NlbGVjdGVkRXZlbnQsXG4gIEZsb3dTdGFnZUV2ZW50LFxuICBGbG93U3RhZ2VSZXRyeUV2ZW50LFxuICBGbG93U3ViZmxvd0V2ZW50LFxuICBGbG93U3ViZmxvd1JlZ2lzdGVyZWRFdmVudCxcbiAgRmxvd1Rocm90dGxlZEV2ZW50LFxuICBSZXN1bWVMaW5rLFxuICBUcmF2ZXJzYWxDb250ZXh0LFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVFbnRyeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3dcbiAqXG4gKiBgTmFycmF0aXZlRm9ybWF0dGVyYCDigJQgcGx1Z2dhYmxlIGZvcm1hdHRlciB0aGF0IGNvbnZlcnRzIGV2ZW50IGNvbnRleHRcbiAqIG9iamVjdHMgaW50byB0aGUgdGV4dCBsaW5lcyBvZiB0aGUgbmFycmF0aXZlLlxuICovXG5leHBvcnQgdHlwZSB7IE5hcnJhdGl2ZUZvcm1hdHRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgdHlwZSB7IE1hbmlmZXN0QXR0ZW1wdFJvdywgTWFuaWZlc3RFbnRyeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTWFuaWZlc3RGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IEFkYXB0aXZlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBNaWxlc3RvbmVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFByb2dyZXNzaXZlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBSTEVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFNlcGFyYXRlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBTaWxlbnROYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFdpbmRvd2VkTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VsZi1EZXNjcmliaW5nIOKAlCAuY29udHJhY3QoKSwgdG9PcGVuQVBJKCksIHRvTUNQVG9vbCgpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgU2VsZi1EZXNjcmliaW5nICovXG5leHBvcnQgdHlwZSB7IEpzb25TY2hlbWEgfSBmcm9tICcuL2xpYi9jb250cmFjdC9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNuYXBzaG90ICYgQ29tcG9zaXRpb24g4oCUIFN1YmZsb3cgbmF2aWdhdGlvbiBhbmQgQ29tcG9zYWJsZVJ1bm5lclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFNuYXBzaG90ICYgQ29tcG9zaXRpb24gKi9cbmV4cG9ydCB0eXBlIHsgQ29tcG9zYWJsZVJ1bm5lciB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgU25hcHNob3QgJiBDb21wb3NpdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBSZWNvcmRlclNuYXBzaG90LCBSdW50aW1lU25hcHNob3QsIFN1YnRyZWVTbmFwc2hvdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgU25hcHNob3QgJiBDb21wb3NpdGlvbiAqL1xuZXhwb3J0IHsgZ2V0U3VidHJlZVNuYXBzaG90LCBsaXN0U3ViZmxvd1BhdGhzIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2NvcGVSZWNvcmRlciBDb21wb3NpdGlvbiDigJQgQnVuZGxlIG11bHRpcGxlIHJlY29yZGVycyBpbnRvIGRvbWFpbiBwcmVzZXRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgU2NvcGVSZWNvcmRlciAqL1xuZXhwb3J0IHsgQ29tcG9zaXRlUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBhdXNlL1Jlc3VtZSDigJQgU2VyaWFsaXphYmxlIGNoZWNrcG9pbnRzIGZvciBsb25nLXJ1bm5pbmcgb3IgaHVtYW4taW4tdGhlLWxvb3AgZmxvd3Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBQYXVzZS9SZXN1bWUgKi9cbi8qKiBAY2F0ZWdvcnkgUGF1c2UvUmVzdW1lICovXG5leHBvcnQgdHlwZSB7XG4gIEZsb3djaGFydENoZWNrcG9pbnQsXG4gIFBhdXNhYmxlSGFuZGxlcixcbiAgUGF1c2VkRXhlY3V0aW9uLFxuICBQZW5kaW5nUGF1c2UsXG4gIFJlZGFjdGlvbk1hcmtzLFxufSBmcm9tICcuL2xpYi9wYXVzZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IFBhdXNlL1Jlc3VtZVxuICpcbiAqIGBpbnRlcnJ1cHQoc2NvcGUsIHsgcmVhc29uLCBleHBlY3RzPyB9KWAg4oCUIHN0b3AgbWlkLXN0YWdlIHRvIGFzayBhIHF1ZXN0aW9uLFxuICogYW5kIGdldCB0aGUgYW5zd2VyIGJhY2sgYXQgdGhlIHNhbWUgY2FsbCBzaXRlIHdoZW4gdGhlIHJ1biByZXN1bWVzLiBSZXN1bWVcbiAqIHJlLWVudGVycyB0aGUgc3RhZ2UgZnJvbSBpdHMgVE9QIChzdGFnZXMgYXJlIGF0b21pYyksIHNvIGtlZXAgdGhlIGhhbGZcbiAqIGJlZm9yZSB0aGUgY2FsbCBpZGVtcG90ZW50LlxuICovXG5leHBvcnQgdHlwZSB7IEludGVycnVwdFBheWxvYWQgfSBmcm9tICcuL2xpYi9wYXVzZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUGF1c2UvUmVzdW1lICovXG5leHBvcnQgeyBpbnRlcnJ1cHQgfSBmcm9tICcuL2xpYi9wYXVzZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgU2NvcGVSZWNvcmRlciAqL1xuZXhwb3J0IHR5cGUgeyBDb21wb3NpdGVTbmFwc2hvdCB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29uZmlndXJhdGlvbiDigJQgVHlwZXMgcGFzc2VkIHRvIEZsb3dDaGFydEV4ZWN1dG9yIGFuZCBydW4oKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IENvbmZpZ3VyYXRpb24gKi9cbmV4cG9ydCB0eXBlIHsgRXhlY3V0aW9uRW52LCBFeGVjdXRvclJlc3VsdCwgUGF1c2VkUmVzdWx0LCBSdW5PcHRpb25zIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBDb25maWd1cmF0aW9uICovXG5leHBvcnQgdHlwZSB7IFNjb3BlRmFjdG9yeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IENvbmZpZ3VyYXRpb25cbiAqXG4gKiBSZWFkLXRyYWNraW5nIHBvbGljeSBmb3IgYFN0YWdlU25hcHNob3Quc3RhZ2VSZWFkc2AgKCMxNCk6XG4gKiBgJ2Z1bGwnYCAoZGVmYXVsdCDigJQgcGVyLXJlYWQgdmFsdWUgY2xvbmUsIGhpc3RvcmljYWwgYmVoYXZpb3IpIC9cbiAqIGAnc3VtbWFyeSdgIChjaGVhcCBgUmVhZFN1bW1hcnlNYXJrZXJgIHBlciByZWFkKSAvIGAnb2ZmJ2AgKG5vIHRyYWNraW5nLFxuICogemVybyBwZXItcmVhZCBjbG9uZSkuIFBhc3MgYXMgYG5ldyBGbG93Q2hhcnRFeGVjdXRvcihjaGFydCwgeyByZWFkVHJhY2tpbmcgfSlgXG4gKiBvciBjYWxsIGBleGVjdXRvci5zZXRSZWFkVHJhY2tpbmcobW9kZSlgIGJlZm9yZSBgcnVuKClgLlxuICovXG5leHBvcnQgdHlwZSB7IFJlYWRTdW1tYXJ5TWFya2VyLCBSZWFkVHJhY2tpbmdNb2RlIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgQ29uZmlndXJhdGlvblxuICpcbiAqIFdyaXRlLXRyYWNraW5nIHBvbGljeSBmb3IgYFN0YWdlU25hcHNob3Quc3RhZ2VXcml0ZXNgICgjMTNjLUEpIOKAlCB0aGVcbiAqIHNpYmxpbmcgb2YgYFJlYWRUcmFja2luZ01vZGVgOyBib3RoIGFsaWFzIHRoZSBzaGFyZWQgYFJldGVudGlvblBvbGljeWBcbiAqIGZhbWlseSBmcm9tIGBsaWIvY2FwdHVyZWAuIGAnZnVsbCdgIChkZWZhdWx0IOKAlCBwZXItd3JpdGUgdmFsdWUgY2xvbmUsXG4gKiBoaXN0b3JpY2FsIGJlaGF2aW9yKSAvIGAnc3VtbWFyeSdgIChjaGVhcCBgV3JpdGVTdW1tYXJ5TWFya2VyYCBwZXIgd3JpdGUpXG4gKiAvIGAnb2ZmJ2AgKG5vIHRyYWNraW5nOyBgc3RhZ2VXcml0ZXNgIGFic2VudCBhbmQgdGhlIGBvbkNvbW1pdGAgbXV0YXRpb25zXG4gKiBwYXlsb2FkIGlzIGVtcHR5IOKAlCB3cml0ZXMgdGhlbXNlbHZlcyBzdGlsbCBjb21taXQsIGFuZCB0aGUgY29tbWl0IGxvZyBpc1xuICogdW5hZmZlY3RlZCkuIFBhc3MgYXMgYG5ldyBGbG93Q2hhcnRFeGVjdXRvcihjaGFydCwgeyB3cml0ZVRyYWNraW5nIH0pYCBvclxuICogY2FsbCBgZXhlY3V0b3Iuc2V0V3JpdGVUcmFja2luZyhtb2RlKWAgYmVmb3JlIGBydW4oKWAuXG4gKi9cbmV4cG9ydCB0eXBlIHsgUmV0ZW50aW9uUG9saWN5LCBXcml0ZVN1bW1hcnlNYXJrZXIsIFdyaXRlVHJhY2tpbmdNb2RlIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgQ29uZmlndXJhdGlvblxuICpcbiAqIENvbW1pdC12YWx1ZXMgZW5jb2RpbmcgZm9yIHRoZSBDT01NSVQgTE9HICgjMTNjLUIpIOKAlCB0aGUgdGhpcmQgZGlhbCBvZlxuICogdGhlIGZhbWlseSwgYW5kIHRoZSBvbmx5IExPU1NMRVNTIG9uZSAoaXQgY2hhbmdlcyB0aGUgbG9nJ3MgZW5jb2RpbmcsXG4gKiBuZXZlciBpdHMgaW5mb3JtYXRpb24pLiBgJ2Z1bGwnYCAoZGVmYXVsdCDigJQgZXZlcnkgc3Vydml2aW5nIGBzZXRgIHN0b3Jlc1xuICogdGhlIGZ1bGwgZmluYWwgdmFsdWUsIGJ5dGUtaWRlbnRpY2FsIHRvIGhpc3RvcnkpIC8gYCdkZWx0YSdgIChhcnJheVxuICogbmV0LWNoYW5nZXMgdGhhdCBhcmUgXCJiYXNlIHBsdXMgYSB0YWlsXCIgY29tbWl0IGFzIGFuIGBhcHBlbmRgIHZlcmJcbiAqIHN0b3Jpbmcgb25seSB0aGUgdGFpbDsgYGRlbGV0ZVZhbHVlKClgIGNvbW1pdHMgYXMgYSByZWFsIGBkZWxldGVgIHZlcmI7XG4gKiBvbmUgdHJhY2UgZW50cnkgcGVyIHN1cnZpdmluZyBwYXRoKS4gUmVwbGF5IHJlY29uc3RydWN0cyBldmVyeSBzdGVwJ3NcbiAqIGZ1bGwgc3RhdGUgZXhhY3RseS4gQ29uc3VtZXJzIHJlYWRpbmcgYGJ1bmRsZS5vdmVyd3JpdGVba2V5XWAgYXMgdGhlIGZ1bGxcbiAqIHZhbHVlIG11c3QgdXNlIGBjb21taXRWYWx1ZUF0YCBmcm9tIGBmb290dHJhY2VgLiBQYXNzIGFzXG4gKiBgbmV3IEZsb3dDaGFydEV4ZWN1dG9yKGNoYXJ0LCB7IGNvbW1pdFZhbHVlcyB9KWAgb3IgY2FsbFxuICogYGV4ZWN1dG9yLnNldENvbW1pdFZhbHVlcyhtb2RlKWAgYmVmb3JlIGBydW4oKWA7IHRoZSBhY3RpdmUgbW9kZSBpcyB0aGVcbiAqIHNuYXBzaG90IGRpc2NyaW1pbmFudCBgZ2V0U25hcHNob3QoKS5jb21taXRWYWx1ZXNgLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbnRyYWN0ICYgVmFsaWRhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IENvbnRyYWN0ICYgVmFsaWRhdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBTY2hlbWFLaW5kLCBWYWxpZGF0aW9uSXNzdWUsIFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IENvbnRyYWN0ICYgVmFsaWRhdGlvbiAqL1xuZXhwb3J0IHsgZGV0ZWN0U2NoZW1hLCBpc1ZhbGlkYXRhYmxlLCBpc1pvZCB9IGZyb20gJy4vbGliL3NjaGVtYS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgQ29udHJhY3QgJiBWYWxpZGF0aW9uICovXG5leHBvcnQgeyBJbnB1dFZhbGlkYXRpb25FcnJvciwgdmFsaWRhdGVBZ2FpbnN0U2NoZW1hLCB2YWxpZGF0ZU9yVGhyb3cgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFcnJvciBVdGlsaXRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBFcnJvciBVdGlsaXRpZXMgKi9cbmV4cG9ydCB0eXBlIHsgU3RydWN0dXJlZEVycm9ySW5mbyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRXJyb3IgVXRpbGl0aWVzICovXG5leHBvcnQgeyBleHRyYWN0RXJyb3JJbmZvLCBmb3JtYXRFcnJvckluZm8gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXYgVG9vbHMg4oCUIE1vZGUgZmxhZ3MgYW5kIFpvZCBzY29wZSB1dGlsaXRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBAY2F0ZWdvcnkgRGV2IFRvb2xzXG4gKlxuICogR2xvYmFsIGRldi1tb2RlIGZsYWcuIENhbGwgYGVuYWJsZURldk1vZGUoKWAgYXQgYXBwbGljYXRpb24gc3RhcnR1cCB0b1xuICogdHVybiBvbiBkZXZlbG9wZXItb25seSBkaWFnbm9zdGljcyBhY3Jvc3MgdGhlIGxpYnJhcnkg4oCUIGNpcmN1bGFyLXJlZmVyZW5jZVxuICogZGV0ZWN0aW9uIGluIHNjb3BlIHdyaXRlcywgd2FybmluZ3Mgd2hlbiBhIHJlY29yZGVyIGhhcyBubyBvYnNlcnZlclxuICogbWV0aG9kcywgc3VzcGljaW91cy1wcmVkaWNhdGUgd2FybmluZ3MgaW4gZGVjaWRlL3NlbGVjdCwgc3RydWN0dXJhbFxuICogY2hlY2tzIGluIGBnZXRTdWJ0cmVlU25hcHNob3RgLCBhbmQgYW55IGZ1dHVyZSBkZXYtb25seSBkaWFnbm9zdGljLlxuICpcbiAqIFByb2R1Y3Rpb24gbGVhdmVzIGl0IE9GRiBieSBkZWZhdWx0ICh6ZXJvIG92ZXJoZWFkKS4gU2VlIHRoZSBKU0RvYyBvblxuICogYGVuYWJsZURldk1vZGVgIGZvciB0aGUgZnVsbCBsaXN0IGFuZCB1c2FnZSBleGFtcGxlLlxuICovXG5leHBvcnQgeyBkaXNhYmxlRGV2TW9kZSwgZW5hYmxlRGV2TW9kZSwgaXNEZXZNb2RlIH0gZnJvbSAnLi9saWIvZGV2TW9kZS5qcyc7XG5cbi8vIGBkZWZpbmVTY29wZUZyb21ab2RgIGFuZCB0aGUgb3RoZXIgem9kLWJhc2VkIHNjb3BlIGhlbHBlcnMgbW92ZWQgdG8gdGhlIG9wdC1pblxuLy8gYGZvb3RwcmludGpzL3pvZGAgZW50cnkg4oCUIGtlZXBpbmcgem9kIG91dCBvZiB0aGUgY29yZSBsb2FkIHBhdGggKGl0IGlzIGFuXG4vLyBvcHRpb25hbCBwZWVyKS4gSW1wb3J0IHRoZW0gZnJvbSAnZm9vdHByaW50anMvem9kJy5cbi8vIEEgcnVuJ3MgcmVjb3JkIGFzIEpTT04gd2l0aG91dCB0aGUgZW5naW5lJ3MgcmVjdXJzaW9uIGxpbWl0ICg5LjI2LjApOiB0aGVcbi8vIHNhbWUgYnl0ZXMgSlNPTi5zdHJpbmdpZnkgZW1pdHMsIGZvciBhIGRlZXAgYG5leHRgIGNoYWluIGl0IGNhbm5vdCBlbmNvZGUuXG5leHBvcnQgdHlwZSB7IFJldHJ5TG9vcENhbGwsIFJldHJ5TG9vcERlY2lzaW9uLCBSZXRyeUxvb3BJZGVudGl0eSB9IGZyb20gJy4vbGliL2F0dGVtcHQvcmV0cnlMb29wVHlwZXMuanMnO1xuZXhwb3J0IHR5cGUgeyBSZXRyeUxvb3BDb250ZXh0LCBSZXRyeUxvb3BPcHRpb25zLCBSZXRyeUxvb3BTdGF0ZSB9IGZyb20gJy4vbGliL2J1aWxkZXIvcmV0cnlMb29wLmpzJztcbmV4cG9ydCB7IHN0cmluZ2lmeVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcnVubmVyL3N0cmluZ2lmeVNuYXBzaG90LmpzJztcbiJdfQ==
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFTSCw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBc0N4RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFRbkQsNEJBQTRCO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQW9CM0MsbUNBQW1DO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFpRHZEOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBV3JILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBMEIvRixvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUXhELG9CQUFvQjtBQUNwQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBcUJuRCwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXRELCtCQUErQjtBQUMvQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFckQsb0NBQW9DO0FBQ3BDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBbUM1RCxxRUFBcUU7QUFDckUsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ2xCLFdBQVcsR0FDWixNQUFNLHlCQUF5QixDQUFDO0FBa0RqQywrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLOUQsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdELCtCQUErQjtBQUMvQixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkUsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXpFLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVqRSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEUsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBFLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQW1CdEUsdUNBQXVDO0FBQ3ZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdFLCtFQUErRTtBQUMvRSw0RUFBNEU7QUFDNUUsK0VBQStFO0FBRS9FLDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQTBCNUQsNkJBQTZCO0FBQzdCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQWdFakQsc0NBQXNDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTNFLHNDQUFzQztBQUN0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFTckcsZ0NBQWdDO0FBQ2hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRSwrRUFBK0U7QUFDL0UsaURBQWlEO0FBQ2pELCtFQUErRTtBQUUvRTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBZTVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb290UHJpbnQg4oCUIFB1YmxpYyBBUEkgKHYzKVxuICpcbiAqIFRoZSBmbG93Y2hhcnQgcGF0dGVybiBmb3IgYmFja2VuZCBjb2RlLlxuICogQnVpbGQg4oaSIFJ1biDihpIgT2JzZXJ2ZS5cbiAqXG4gKiAqKlRoZSBjb21tb24gaW1wb3J0IHBhdGhzOioqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZmxvd0NoYXJ0LCBkZWNpZGUsIG5hcnJhdGl2ZSB9IGZyb20gJ2Zvb3RwcmludGpzJzsgICAgICAgICAgIC8vIG1haW4g4oCUIHN0YXJ0IGhlcmVcbiAqIGltcG9ydCB7IG1ldHJpY3MsIGRlYnVnLCBtYW5pZmVzdCB9ICAgICBmcm9tICdmb290cHJpbnRqcy9yZWNvcmRlcnMnOyAvLyByZWNvcmRlciBmYWN0b3JpZXNcbiAqIGltcG9ydCB7IHN0YXRlQXQsIGNhdXNhbENoYWluIH0gZnJvbSAnZm9vdHRyYWNlJzsgICAgIC8vIHJlYWQgYSBmaW5pc2hlZCBydW5cbiAqIGltcG9ydCB7IFJlY29yZEZyYW1lLCBFdmVudExvZyB9IGZyb20gJ2Zvb3R0cmFjZS93cml0ZSc7ICAgICAvLyB3cml0ZSBhIHJlY29yZCB5b3Vyc2VsZlxuICogaW1wb3J0IHsgU3RhZ2VDb250ZXh0IH0gICAgICAgICAgICAgICAgIGZyb20gJ2Zvb3RwcmludGpzL2FkdmFuY2VkJzsgIC8vIGVuZ2luZSBpbnRlcm5hbHNcbiAqIGBgYFxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRdWljayBTdGFydCDigJQgRXZlcnl0aGluZyB5b3UgbmVlZCBmb3IgOTAlIG9mIHVzZSBjYXNlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IEZsb3dDaGFydCwgU3RhZ2VGdW5jdGlvbiBhcyBTdGFnZUhhbmRsZXIsIFN0cmVhbUhhbmRsZXJzIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnQgKi9cbmV4cG9ydCB7IGZsb3dDaGFydCwgRmxvd0NoYXJ0QnVpbGRlciwgZmxvd0NoYXJ0U2VsZWN0b3IgfSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnRcbiAqXG4gKiBDb25maWcgZm9yIGAuYWRkUGFyYWxsZWxGb3JFYWNoKClgIOKAlCBvbmUgYnJhbmNoIHBlciBpdGVtLCBicmFuY2ggY291bnRcbiAqIGRlY2lkZWQgYXQgcnVuIHRpbWUgZnJvbSB0aGUgcGF5bG9hZC4gYG1heEJyYW5jaGVzYCBhbmQgYGludG9gIGFyZSByZXF1aXJlZFxuICogb24gcHVycG9zZSAoc2VlIGRvY3MvZGVzaWduL2V4ZWN1dGlvbi1jb250cm9sLm1kKS5cbiAqL1xuZXhwb3J0IHR5cGUgeyBCcmFuY2hDaGFydCwgUGFyYWxsZWxGb3JFYWNoQ29uZmlnLCBSZXRyeVBvbGljeSB9IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0IOKAlCBidWlsZC10aW1lIG9ic2VydmVyICh0d2luIG9mIEZsb3dSZWNvcmRlcikgKi9cbmV4cG9ydCB0eXBlIHtcbiAgU3RydWN0dXJlRGVjaWRlckNvbXBsZXRlRXZlbnQsXG4gIFN0cnVjdHVyZUVkZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVFZGdlS2luZCxcbiAgU3RydWN0dXJlTG9vcEVkZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVSZWNvcmRlcixcbiAgU3RydWN0dXJlU3RhZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVTdGFnZVRhZ2dlZEV2ZW50LFxuICBTdHJ1Y3R1cmVTdWJmbG93TW91bnRlZEV2ZW50LFxufSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgVGltZSBCdWRnZXRcbiAqXG4gKiBgdGltZUJ1ZGdldChjaGFydClgIOKAlCB0aGUgc2xvd2VzdCBhIGNoYXJ0IGNhbiB0YWtlLCBmcm9tIGl0cyBkZWNsYXJlZCByZXRyeSBwb2xpY2llcyAoYGF0dGVtcHRzIMOXIHRpbWVvdXRNc2AgcGx1c1xuICogdGhlIHdhaXRzLCBzdW1tZWQgYWxvbmcgdGhlIHNsb3dlc3QgcGF0aCksIGFuZCBldmVyeSBzdGFnZSB0aGF0IG1ha2VzIGEgcGF0aCB1bmJvdW5kZWQsIGJ5IG5hbWUuIGAuYnVkZ2V0KG1zKWBcbiAqIGRlY2xhcmVzIHRoZSBjYWxsZXIncyBjb250cmFjdDsgYGJ1aWxkKClgIHJlZnVzZXMgYSBjaGFydCB0aGF0IGNhbm5vdCBrZWVwIGl0LiBBbHNvIGBjaGFydC50aW1lQnVkZ2V0KClgLlxuICovXG5leHBvcnQgdHlwZSB7XG4gIEJ1ZGdldEFzc3VtcHRpb25zLFxuICBCdWRnZXRTdGVwLFxuICBUaW1lQnVkZ2V0T3B0aW9ucyxcbiAgVGltZUJ1ZGdldFJlcG9ydCxcbiAgVW5ib3VuZGVkUmVhc29uLFxuICBVbmJvdW5kZWRTdGFnZSxcbn0gZnJvbSAnLi9saWIvYnVkZ2V0L2luZGV4LmpzJztcbmV4cG9ydCB7IHRpbWVCdWRnZXQgfSBmcm9tICcuL2xpYi9idWRnZXQvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IFR5cGVkU3RhZ2VGdW5jdGlvbiB9IGZyb20gJy4vbGliL2J1aWxkZXIvdHlwZWRGbG93Q2hhcnQuanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IFNjb3BlTWV0aG9kcywgVHlwZWRTY29wZSB9IGZyb20gJy4vbGliL3JlYWN0aXZlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBRdWljayBTdGFydCAqL1xuZXhwb3J0IHsgbmFycmF0aXZlIH0gZnJvbSAnLi9yZWNvcmRlcnMuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZWNpc2lvbiBCcmFuY2hpbmcg4oCUIGRlY2lkZSgpIC8gc2VsZWN0KCkgd2l0aCBldmlkZW5jZSBjYXB0dXJlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgRGVjaXNpb24gQnJhbmNoaW5nICovXG5leHBvcnQgdHlwZSB7XG4gIERlY2lkZVJ1bGUsXG4gIERlY2lzaW9uRXZpZGVuY2UsXG4gIERlY2lzaW9uUmVzdWx0LFxuICBEZWZhdWx0QnJhbmNoLFxuICBGaWx0ZXJPcHMsXG4gIFJ1bGVFdmlkZW5jZSxcbiAgU2VsZWN0aW9uRXZpZGVuY2UsXG4gIFNlbGVjdGlvblJlc3VsdCxcbiAgV2hlbkNsYXVzZSxcbiAgV2hlcmVGaWx0ZXIsXG59IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRGVjaXNpb24gQnJhbmNoaW5nICovXG5leHBvcnQgeyBkZWNpZGUsIHNlbGVjdCB9IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRXJyb3JzICovXG5leHBvcnQgdHlwZSB7IFRlcm1pbmFsRmFpbHVyZUNvbnRleHQgfSBmcm9tICcuL2xpYi9lcnJvcnMvdGVybWluYWxGYWlsdXJlLmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQXR0ZW1wdHMg4oCUIGV2ZXJ5IHRyeSBvZiBhIHJldHJpZWQgc3RhZ2UsIGFuZCB0aGUgZGVjaXNpb24gdGhhdCBmb2xsb3dlZCBpdFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEBjYXRlZ29yeSBBdHRlbXB0c1xuICpcbiAqIE9uZSBgQXR0ZW1wdFJlY29yZGAgcGVyIGF0dGVtcHQgb2YgYSBzdGFnZSB3aXRoIGEgZGVjbGFyZWQgYHJldHJ5YCBwb2xpY3ksIGEgYHRpbWVvdXRNc2AsIG9yIGEgcnVuIGRlYWRsaW5lIOKAlFxuICogdGltaW5nLCBvdXRjb21lLCBmYWlsdXJlIGNhdGVnb3J5LCBhbmQgdGhlIHJldHJ5LW9yLXN0b3AgZGVjaXNpb24gYXMgYERlY2lzaW9uRXZpZGVuY2VgIOKAlCBvbiB0aGUgc3RhZ2Unc1xuICogZXhlY3V0aW9uLXRyZWUgbm9kZSAoYFN0YWdlU25hcHNob3QuYXR0ZW1wdHNgIC8gYGF0dGVtcHRTdW1tYXJ5YCkgYW5kIG9uIGBGbG93UmVjb3JkZXIub25BdHRlbXB0YC5cbiAqIEEgY2FsbCBhIHN0YWdlIG1ha2VzIHRocm91Z2ggYHNjb3BlLiRjYWxsYCBpcyByZWNvcmRlZCB0aGUgc2FtZSB3YXkgKGtpbmQgYCdjYWxsJ2ApLCBhbmQgc28gaXMgYW4gU0RLJ3Mgb3duIHJldHJ5XG4gKiBhbiBhZGFwdGVyIHJlcG9ydHMgdGhyb3VnaCBgb2JzZXJ2ZWQoKWAgKGBPYnNlcnZlZEF0dGVtcHRgLCBraW5kIGAnb2JzZXJ2ZWQnYCkuIGBBdHRlbXB0Q29udGV4dGAgaXMgd2hhdFxuICogYHNjb3BlLiRhdHRlbXB0KClgIHJldHVybnMsIGFuZCB3aGF0IGEgY2FsbCdzIGZ1bmN0aW9uIGdldHMgKHRoZSBhdHRlbXB0J3Mgc2lnbmFsLCB0aGUgdGltZSBsZWZ0LCBgb2JzZXJ2ZWRgKTtcbiAqIGBMYXRlV3JpdGVgIGlzIGEgd3JpdGUgKG9yIGNhbGwpIGFuIGVuZGVkIGF0dGVtcHQgdHJpZWQgKGBTdGFnZVNuYXBzaG90LmxhdGVXcml0ZXNgKS4gQSBzdGFnZSB0aGF0IGNoYW5nZXMgYW5cbiAqIG91dHNpZGUgc3lzdGVtIGRlY2xhcmVzIGl0IChgU3RhZ2VUb3VjaGVzYCwgYC50b3VjaGVzKClgKSwgYW5kIGEgY2FsbCBkb2VzIChgQ2FsbE9wdGlvbnNgKTogZXZlcnkgYXR0ZW1wdCB0aGVuXG4gKiBjYXJyaWVzIGl0cyBgQXR0ZW1wdEVmZmVjdGAsIGFuZCB0aGUga2V5IHJ1bGUgaXMgaGFuZGVkIGFuIGBJZGVtcG90ZW5jeUtleUNvbnRleHRgIG9uY2UgcGVyIGV4ZWN1dGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUge1xuICBBdHRlbXB0Q2F0ZWdvcnksXG4gIEF0dGVtcHRDb250ZXh0LFxuICBBdHRlbXB0RWZmZWN0LFxuICBBdHRlbXB0RXJyb3IsXG4gIEF0dGVtcHRJbnB1dHMsXG4gIEF0dGVtcHRLaW5kLFxuICBBdHRlbXB0TmV4dCxcbiAgQXR0ZW1wdE9wdGlvbnMsXG4gIEF0dGVtcHRPdXRjb21lLFxuICBBdHRlbXB0UmVhc29uLFxuICBBdHRlbXB0UmVjb3JkLFxuICBBdHRlbXB0U3VtbWFyeSxcbiAgQ2FsbE9wdGlvbnMsXG4gIElkZW1wb3RlbmN5S2V5Q29udGV4dCxcbiAgTGF0ZVdyaXRlLFxuICBPYnNlcnZlZEF0dGVtcHQsXG4gIFN0YWdlVG91Y2hlcyxcbiAgVW5rbm93bkVmZmVjdEluaXQsXG59IGZyb20gJy4vbGliL2F0dGVtcHQvaW5kZXguanMnO1xuLyoqXG4gKiBAY2F0ZWdvcnkgQXR0ZW1wdHNcbiAqXG4gKiBBbiBhdHRlbXB0IGJ5IG5hbWUgKGBzZXJpZXNgICsgYGF0dGVtcHRgKSBhbmQgcGVyLW91dGNvbWUgY291bnRzIOKAlCB3aGF0IHJlY29yZGVyIHJvd3MgaG9sZCBvZiBhdHRlbXB0cy5cbiAqL1xuZXhwb3J0IHR5cGUgeyBBdHRlbXB0T3V0Y29tZUNvdW50cywgQXR0ZW1wdFJlZiB9IGZyb20gJy4vbGliL3JlY29yZGVyL2F0dGVtcHRTZXJpZXMuanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBBdHRlbXB0c1xuICpcbiAqIGBhdHRlbXB0KClgIOKAlCB0aGUgYXR0ZW1wdCBydW5uZXIgZm9yIGNvZGUgdGhhdCBpcyBub3QgYSBzdGFnZSAocmVjb3JkcyBnbyB0byBpdHMgYG9uQXR0ZW1wdGApOyBgZXJyb3JDYXRlZ29yeWBcbiAqIOKAlCB0aGUgb25lIGZhaWx1cmUgY2xhc3NpZmllciAoc2V2ZW4gZml4ZWQgY2F0ZWdvcmllcyk7IGByZXRyeVJ1bGVzYCDigJQgdGhlIG9uZSByZXRyeSBydWxlIHRhYmxlLCBhcyBgZGVjaWRlKClgXG4gKiBydWxlczsgdGhlIGF0dGVtcHQgY29udHJhY3QncyB0d28gZXJyb3JzLlxuICovXG5leHBvcnQgeyBhdHRlbXB0LCBBdHRlbXB0VGltZW91dEVycm9yLCBlcnJvckNhdGVnb3J5LCByZXRyeVJ1bGVzLCBVbmtub3duRWZmZWN0RXJyb3IgfSBmcm9tICcuL2xpYi9hdHRlbXB0L2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgQ29ycmVsYXRpb25cbiAqXG4gKiBUaGUgcnVuJ3MgY29ycmVsYXRpb24gKDEwLjEpOiBgZW52LnRyYWNlcGFyZW50YCAoVzNDLCBwYXJzZWQgc3RyaWN0bHkpIG9yIGBlbnYudHJhY2VJZGAgKyBgZW52Lm9wZXJhdGlvbklkYFxuICogYmVjb21lIE9ORSBmcm96ZW4gYFJ1bkNvcnJlbGF0aW9uYCBwZXIgcnVuIOKAlCBvbiBgZ2V0U25hcHNob3QoKS5jb3JyZWxhdGlvbmAsIGV2ZXJ5IGZsb3cgZXZlbnQnc1xuICogYHRyYXZlcnNhbENvbnRleHQuY29ycmVsYXRpb25gIGFuZCBldmVyeSBzY29wZSBhbmQgZW1pdCBldmVudCdzIGBjb3JyZWxhdGlvbmAuIGBwYXJzZVRyYWNlcGFyZW50YCAvXG4gKiBgZm9ybWF0VHJhY2VwYXJlbnRgIGFyZSB0aGUgVzNDIGNvZGVjOyBhIHJlZnVzZWQgaGVhZGVyIHRocm93cyBgVHJhY2VwYXJlbnRFcnJvcmAgd2l0aCBhIG5hbWVkIGByZWFzb25gLlxuICovXG5leHBvcnQgdHlwZSB7IFBhcnNlZFRyYWNlcGFyZW50LCBSdW5Db3JyZWxhdGlvbiwgVHJhY2VwYXJlbnRGaWVsZHMsIFRyYWNlcGFyZW50UmVmdXNhbCB9IGZyb20gJy4vbGliL2F0dGVtcHQvaW5kZXguanMnO1xuZXhwb3J0IHsgZm9ybWF0VHJhY2VwYXJlbnQsIHBhcnNlVHJhY2VwYXJlbnQsIFRyYWNlcGFyZW50RXJyb3IgfSBmcm9tICcuL2xpYi9hdHRlbXB0L2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUnVuIOKAlCBFeGVjdXRlIGNoYXJ0cyBhbmQgY29sbGVjdCByZXN1bHRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgdHlwZSB7IFJ1blJlc3VsdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgdHlwZSB7IEZsb3dDaGFydEV4ZWN1dG9yT3B0aW9ucyB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKlxuICogVGhlIGNyYXNoLXNhZmUgcmVjb3JkICgxMC4xKTogdGhlIGV4ZWN1dG9yJ3MgYHNpbmtgIG9wdGlvbiwgaXRzIGFjY291bnRpbmcgb24gYGdldFNuYXBzaG90KCkuc2lua2AsXG4gKiBgZXhlY3V0b3IuZmx1c2hSZWNvcmQoKWAncyByZXN1bHQsIGFuZCB0aGUgZXJyb3IgYSBydW4gd2l0aCBgb25GYWlsdXJlOiAnZmFpbCdgIHJlamVjdHMgd2l0aC4gVGhlIHBvcnRcbiAqIChgUmVjb3JkU2lua2AsIGBtZW1vcnlTaW5rYCkgaXMgYGZvb3R0cmFjZS93cml0ZWAnczsgdGhlIGZpbGUgYWRhcHRlciBpcyBgZm9vdHByaW50anMvc2lua3NgLlxuICogQGNhdGVnb3J5IFJ1blxuICovXG5leHBvcnQgdHlwZSB7XG4gIFJlY29yZEZsdXNoUmVzdWx0LFxuICBSZWNvcmRTaW5rRmFpbHVyZU1vZGUsXG4gIFJlY29yZFNpbmtGbHVzaE1vZGUsXG4gIFJlY29yZFNpbmtPcHRpb24sXG4gIFJlY29yZFNpbmtPcHRpb25zLFxuICBSZWNvcmRTaW5rU3RhdHMsXG59IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHsgUmVjb3JkU2lua0Vycm9yIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBUaGUgZm91ciBvYnNlcnZhYmlsaXR5IGRpYWxzIGBGbG93Q2hhcnRFeGVjdXRvck9wdGlvbnNgIGluaGVyaXRzLlxuICogQGNhdGVnb3J5IFJ1blxuICovXG5leHBvcnQgdHlwZSB7IFJ1bkRpYWxzIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB7IEZsb3dDaGFydEV4ZWN1dG9yIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB7IFJ1bkNvbnRleHQgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHR5cGUgeyBDaGFydE9wZW5BUElPcHRpb25zLCBNQ1BUb29sRGVzY3JpcHRpb24sIFJ1bm5hYmxlRmxvd0NoYXJ0IH0gZnJvbSAnLi9saWIvcnVubmVyL1J1bm5hYmxlQ2hhcnQuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBPYnNlcnZlIOKAlCBEYXRhIChzY29wZSByZWNvcmRlcnMsIGZpcmUgZHVyaW5nIHN0YWdlIGV4ZWN1dGlvbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEYXRhICovXG5leHBvcnQgdHlwZSB7XG4gIENvbW1pdEV2ZW50LFxuICBFcnJvckV2ZW50LFxuICBSZWFkRXZlbnQsXG4gIFJlZGFjdGlvblBvbGljeSxcbiAgUmVkYWN0aW9uUmVwb3J0LFxuICBTY29wZVJlY29yZGVyLFxuICBTdGFnZUV2ZW50LFxuICBXcml0ZUV2ZW50LFxufSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGF0YSAqL1xuZXhwb3J0IHsgTWV0cmljUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGF0YSAqL1xuZXhwb3J0IHsgRGVidWdSZWNvcmRlciB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBPcGVyYXRpb24gKi9cbmV4cG9ydCB7IFJlY29yZGVyT3BlcmF0aW9uIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEZWxpdmVyeSB0aWVyIChSRkMtMDAxIGRlZmVycmVkIG9ic2VydmVycylcbiAqXG4gKiBFdmVyeSBgYXR0YWNoKlJlY29yZGVyYCBjYWxsIGFjY2VwdHMgYW4gb3B0aW9ucyBiYWc6XG4gKiBgZXhlY3V0b3IuYXR0YWNoU2NvcGVSZWNvcmRlcihyZWMsIHsgZGVsaXZlcnk6ICdkZWZlcnJlZCcgfSlgIHRha2VzIHRoZVxuICogcmVjb3JkZXIgT1VUIG9mIHRoZSBlbmdpbmUncyBob3QgcGF0aCDigJQgZXZlbnRzIGFyZSBjYXB0dXJlZCBpbnRvIG9uZVxuICogYm91bmRlZCwgdG90YWxseS1vcmRlcmVkIHF1ZXVlIGFuZCBkZWxpdmVyZWQgYXQgdGhlIG5leHQgbWljcm90YXNrXG4gKiBjaGVja3BvaW50IChcIm9uZSBiZWF0IGJlaGluZFwiKS4gT21pdCBgZGVsaXZlcnlgIGZvciB0aGUgaGlzdG9yaWNhbFxuICogc3luY2hyb25vdXMgY2FsbCAoYnl0ZS1pZGVudGljYWwgdG8gcHJldmlvdXMgcmVsZWFzZXMpLiBBY2NvdW50aW5nXG4gKiBzdXJmYWNlcyBvbiBgc25hcHNob3Qub2JzZXJ2ZXJTdGF0c2A7IGBleGVjdXRvci5kcmFpbk9ic2VydmVycygpYCBzZXR0bGVzXG4gKiBhc3luYyBsaXN0ZW5lcnMgYmVmb3JlIHNodXRkb3duLiBTZWUgYGRvY3MvZ3VpZGVzL29ic2VydmVycy1kZWZlcnJlZC5tZGAuXG4gKi9cbmV4cG9ydCB0eXBlIHtcbiAgQXR0YWNoUmVjb3JkZXJPcHRpb25zLFxuICBPYnNlcnZlckRlbGl2ZXJ5LFxuICBPYnNlcnZlckRyYWluUmVzdWx0LFxuICBPYnNlcnZlclN0YXRzLFxufSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEZWxpdmVyeSB0aWVyIChSRkMtMDAxIGRlZmVycmVkIG9ic2VydmVycylcbiAqXG4gKiBgQ2FwdHVyZVBvbGljeWAg4oCUIGhvdyBhIGRlZmVycmVkIGV2ZW50J3MgcGF5bG9hZCBpcyBtYXRlcmlhbGl6ZWQgYXRcbiAqIGNhcHR1cmUgdGltZSAoYCdjbG9uZSdgIGJ5IGRlZmF1bHQgZm9yIGF0dGFjaCBvcHRpb25zIC8gYCdzdW1tYXJ5J2AgLyBgJ3JlZidgKS4gYE92ZXJmbG93UG9saWN5YFxuICog4oCUIHdoYXQgYSBzYXR1cmF0ZWQgcXVldWUgZG9lcyAoYCdkcm9wLW9sZGVzdCdgIGRlZmF1bHQgLyBgJ3NhbXBsZSdgIC9cbiAqIGAnYmxvY2snYCkuIGBEaXNwYXRjaGVyU3RhdHNgIC8gYExpc3RlbmVyU3RhdHNgIOKAlCB0aGUgYWNjb3VudGluZyBzaGFwZXNcbiAqIGVtYmVkZGVkIGluIGBPYnNlcnZlclN0YXRzYC4gVHlwZXMgb25seSDigJQgdGhlIG9ic2VydmVyLXF1ZXVlIG1vZHVsZVxuICogaXRzZWxmIGlzIGludGVybmFsOyBjb25zdW1lcnMgdXNlIHRoZSBhdHRhY2ggb3B0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgeyBDYXB0dXJlUG9saWN5LCBEaXNwYXRjaGVyU3RhdHMsIExpc3RlbmVyU3RhdHMsIE92ZXJmbG93UG9saWN5IH0gZnJvbSAnLi9saWIvb2JzZXJ2ZXItcXVldWUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIENvbWJpbmVkIChib3RoIGRhdGEtZmxvdyBhbmQgY29udHJvbC1mbG93KSAqL1xuZXhwb3J0IHR5cGUgeyBDb21iaW5lZFJlY29yZGVyIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBDb21iaW5lZCAoYm90aCBkYXRhLWZsb3cgYW5kIGNvbnRyb2wtZmxvdykgKi9cbmV4cG9ydCB7XG4gIGhhc0VtaXRSZWNvcmRlck1ldGhvZHMsXG4gIGhhc0Zsb3dSZWNvcmRlck1ldGhvZHMsXG4gIGhhc1JlY29yZGVyTWV0aG9kcyxcbiAgaXNGbG93RXZlbnQsXG59IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRW1pdCAodXNlci1hdXRob3JlZCBzdHJ1Y3R1cmVkIGV2ZW50cylcbiAqXG4gKiBUaGlyZCBvYnNlcnZlciBjaGFubmVsIChhbG9uZ3NpZGUgYFNjb3BlUmVjb3JkZXJgIGFuZCBgRmxvd1JlY29yZGVyYCkuIENvbnN1bWVyXG4gKiBjb2RlIGNhbGxzIGBzY29wZS4kZW1pdChuYW1lLCBwYXlsb2FkKWAgZnJvbSBpbnNpZGUgYSBzdGFnZTsgZXZlcnkgYXR0YWNoZWRcbiAqIGBFbWl0UmVjb3JkZXIub25FbWl0KGV2ZW50KWAgZmlyZXMgc3luY2hyb25vdXNseSB3aXRoIHN0YWdlLWNvbnRleHRcbiAqIGVucmljaG1lbnQuIFBhc3MtdGhyb3VnaCDigJQgbm8gYnVmZmVyaW5nLCB6ZXJvIGFsbG9jYXRpb24gd2hlbiBubyByZWNvcmRlclxuICogaXMgYXR0YWNoZWQuXG4gKi9cbmV4cG9ydCB0eXBlIHsgRW1pdEV2ZW50LCBFbWl0UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9ic2VydmUg4oCUIEZsb3cgKEZsb3dSZWNvcmRlciwgZmlyZXMgYWZ0ZXIgc3RhZ2UgZXhlY3V0aW9uKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB0eXBlIHtcbiAgRmxvd0F0dGVtcHRFdmVudCxcbiAgRmxvd0JyZWFrRXZlbnQsXG4gIEZsb3dEZWNpc2lvbkV2ZW50LFxuICBGbG93RXJyb3JFdmVudCxcbiAgRmxvd0ZvcmtFdmVudCxcbiAgRmxvd0xvb3BFdmVudCxcbiAgRmxvd05leHRFdmVudCxcbiAgRmxvd1JlY29yZGVyLFxuICBGbG93UnVuRXZlbnQsXG4gIEZsb3dSdW5GYWlsZWRFdmVudCxcbiAgRmxvd1NlbGVjdGVkRXZlbnQsXG4gIEZsb3dTdGFnZUV2ZW50LFxuICBGbG93U3RhZ2VSZXRyeUV2ZW50LFxuICBGbG93U3ViZmxvd0V2ZW50LFxuICBGbG93U3ViZmxvd1JlZ2lzdGVyZWRFdmVudCxcbiAgRmxvd1Rocm90dGxlZEV2ZW50LFxuICBSZXN1bWVMaW5rLFxuICBUcmF2ZXJzYWxDb250ZXh0LFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVFbnRyeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3dcbiAqXG4gKiBgTmFycmF0aXZlRm9ybWF0dGVyYCDigJQgcGx1Z2dhYmxlIGZvcm1hdHRlciB0aGF0IGNvbnZlcnRzIGV2ZW50IGNvbnRleHRcbiAqIG9iamVjdHMgaW50byB0aGUgdGV4dCBsaW5lcyBvZiB0aGUgbmFycmF0aXZlLlxuICovXG5leHBvcnQgdHlwZSB7IE5hcnJhdGl2ZUZvcm1hdHRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgdHlwZSB7IE1hbmlmZXN0QXR0ZW1wdFJvdywgTWFuaWZlc3RFbnRyeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTWFuaWZlc3RGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IEFkYXB0aXZlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBNaWxlc3RvbmVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFByb2dyZXNzaXZlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBSTEVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFNlcGFyYXRlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBTaWxlbnROYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFdpbmRvd2VkTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VsZi1EZXNjcmliaW5nIOKAlCAuY29udHJhY3QoKSwgdG9PcGVuQVBJKCksIHRvTUNQVG9vbCgpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgU2VsZi1EZXNjcmliaW5nICovXG5leHBvcnQgdHlwZSB7IEpzb25TY2hlbWEgfSBmcm9tICcuL2xpYi9jb250cmFjdC9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNuYXBzaG90ICYgQ29tcG9zaXRpb24g4oCUIFN1YmZsb3cgbmF2aWdhdGlvbiBhbmQgQ29tcG9zYWJsZVJ1bm5lclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFNuYXBzaG90ICYgQ29tcG9zaXRpb24gKi9cbmV4cG9ydCB0eXBlIHsgQ29tcG9zYWJsZVJ1bm5lciB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgU25hcHNob3QgJiBDb21wb3NpdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBSZWNvcmRlclNuYXBzaG90LCBSdW50aW1lU25hcHNob3QsIFN1YnRyZWVTbmFwc2hvdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgU25hcHNob3QgJiBDb21wb3NpdGlvbiAqL1xuZXhwb3J0IHsgZ2V0U3VidHJlZVNuYXBzaG90LCBsaXN0U3ViZmxvd1BhdGhzIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2NvcGVSZWNvcmRlciBDb21wb3NpdGlvbiDigJQgQnVuZGxlIG11bHRpcGxlIHJlY29yZGVycyBpbnRvIGRvbWFpbiBwcmVzZXRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgU2NvcGVSZWNvcmRlciAqL1xuZXhwb3J0IHsgQ29tcG9zaXRlUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBhdXNlL1Jlc3VtZSDigJQgU2VyaWFsaXphYmxlIGNoZWNrcG9pbnRzIGZvciBsb25nLXJ1bm5pbmcgb3IgaHVtYW4taW4tdGhlLWxvb3AgZmxvd3Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBQYXVzZS9SZXN1bWUgKi9cbi8qKiBAY2F0ZWdvcnkgUGF1c2UvUmVzdW1lICovXG5leHBvcnQgdHlwZSB7XG4gIEZsb3djaGFydENoZWNrcG9pbnQsXG4gIFBhdXNhYmxlSGFuZGxlcixcbiAgUGF1c2VkRXhlY3V0aW9uLFxuICBQZW5kaW5nUGF1c2UsXG4gIFJlZGFjdGlvbk1hcmtzLFxufSBmcm9tICcuL2xpYi9wYXVzZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IFBhdXNlL1Jlc3VtZVxuICpcbiAqIGBpbnRlcnJ1cHQoc2NvcGUsIHsgcmVhc29uLCBleHBlY3RzPyB9KWAg4oCUIHN0b3AgbWlkLXN0YWdlIHRvIGFzayBhIHF1ZXN0aW9uLFxuICogYW5kIGdldCB0aGUgYW5zd2VyIGJhY2sgYXQgdGhlIHNhbWUgY2FsbCBzaXRlIHdoZW4gdGhlIHJ1biByZXN1bWVzLiBSZXN1bWVcbiAqIHJlLWVudGVycyB0aGUgc3RhZ2UgZnJvbSBpdHMgVE9QIChzdGFnZXMgYXJlIGF0b21pYyksIHNvIGtlZXAgdGhlIGhhbGZcbiAqIGJlZm9yZSB0aGUgY2FsbCBpZGVtcG90ZW50LlxuICovXG5leHBvcnQgdHlwZSB7IEludGVycnVwdFBheWxvYWQgfSBmcm9tICcuL2xpYi9wYXVzZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUGF1c2UvUmVzdW1lICovXG5leHBvcnQgeyBpbnRlcnJ1cHQgfSBmcm9tICcuL2xpYi9wYXVzZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgU2NvcGVSZWNvcmRlciAqL1xuZXhwb3J0IHR5cGUgeyBDb21wb3NpdGVTbmFwc2hvdCB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29uZmlndXJhdGlvbiDigJQgVHlwZXMgcGFzc2VkIHRvIEZsb3dDaGFydEV4ZWN1dG9yIGFuZCBydW4oKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IENvbmZpZ3VyYXRpb24gKi9cbmV4cG9ydCB0eXBlIHsgRXhlY3V0aW9uRW52LCBFeGVjdXRvclJlc3VsdCwgUGF1c2VkUmVzdWx0LCBSdW5PcHRpb25zIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBDb25maWd1cmF0aW9uICovXG5leHBvcnQgdHlwZSB7IFNjb3BlRmFjdG9yeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IENvbmZpZ3VyYXRpb25cbiAqXG4gKiBSZWFkLXRyYWNraW5nIHBvbGljeSBmb3IgYFN0YWdlU25hcHNob3Quc3RhZ2VSZWFkc2AgKCMxNCk6XG4gKiBgJ2Z1bGwnYCAoZGVmYXVsdCDigJQgcGVyLXJlYWQgdmFsdWUgY2xvbmUsIGhpc3RvcmljYWwgYmVoYXZpb3IpIC9cbiAqIGAnc3VtbWFyeSdgIChjaGVhcCBgUmVhZFN1bW1hcnlNYXJrZXJgIHBlciByZWFkKSAvIGAnb2ZmJ2AgKG5vIHRyYWNraW5nLFxuICogemVybyBwZXItcmVhZCBjbG9uZSkuIFBhc3MgYXMgYG5ldyBGbG93Q2hhcnRFeGVjdXRvcihjaGFydCwgeyByZWFkVHJhY2tpbmcgfSlgXG4gKiBvciBjYWxsIGBleGVjdXRvci5zZXRSZWFkVHJhY2tpbmcobW9kZSlgIGJlZm9yZSBgcnVuKClgLlxuICovXG5leHBvcnQgdHlwZSB7IFJlYWRTdW1tYXJ5TWFya2VyLCBSZWFkVHJhY2tpbmdNb2RlIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgQ29uZmlndXJhdGlvblxuICpcbiAqIFdyaXRlLXRyYWNraW5nIHBvbGljeSBmb3IgYFN0YWdlU25hcHNob3Quc3RhZ2VXcml0ZXNgICgjMTNjLUEpIOKAlCB0aGVcbiAqIHNpYmxpbmcgb2YgYFJlYWRUcmFja2luZ01vZGVgOyBib3RoIGFsaWFzIHRoZSBzaGFyZWQgYFJldGVudGlvblBvbGljeWBcbiAqIGZhbWlseSBmcm9tIGBsaWIvY2FwdHVyZWAuIGAnZnVsbCdgIChkZWZhdWx0IOKAlCBwZXItd3JpdGUgdmFsdWUgY2xvbmUsXG4gKiBoaXN0b3JpY2FsIGJlaGF2aW9yKSAvIGAnc3VtbWFyeSdgIChjaGVhcCBgV3JpdGVTdW1tYXJ5TWFya2VyYCBwZXIgd3JpdGUpXG4gKiAvIGAnb2ZmJ2AgKG5vIHRyYWNraW5nOyBgc3RhZ2VXcml0ZXNgIGFic2VudCBhbmQgdGhlIGBvbkNvbW1pdGAgbXV0YXRpb25zXG4gKiBwYXlsb2FkIGlzIGVtcHR5IOKAlCB3cml0ZXMgdGhlbXNlbHZlcyBzdGlsbCBjb21taXQsIGFuZCB0aGUgY29tbWl0IGxvZyBpc1xuICogdW5hZmZlY3RlZCkuIFBhc3MgYXMgYG5ldyBGbG93Q2hhcnRFeGVjdXRvcihjaGFydCwgeyB3cml0ZVRyYWNraW5nIH0pYCBvclxuICogY2FsbCBgZXhlY3V0b3Iuc2V0V3JpdGVUcmFja2luZyhtb2RlKWAgYmVmb3JlIGBydW4oKWAuXG4gKi9cbmV4cG9ydCB0eXBlIHsgUmV0ZW50aW9uUG9saWN5LCBXcml0ZVN1bW1hcnlNYXJrZXIsIFdyaXRlVHJhY2tpbmdNb2RlIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgQ29uZmlndXJhdGlvblxuICpcbiAqIENvbW1pdC12YWx1ZXMgZW5jb2RpbmcgZm9yIHRoZSBDT01NSVQgTE9HICgjMTNjLUIpIOKAlCB0aGUgdGhpcmQgZGlhbCBvZlxuICogdGhlIGZhbWlseSwgYW5kIHRoZSBvbmx5IExPU1NMRVNTIG9uZSAoaXQgY2hhbmdlcyB0aGUgbG9nJ3MgZW5jb2RpbmcsXG4gKiBuZXZlciBpdHMgaW5mb3JtYXRpb24pLiBgJ2Z1bGwnYCAoZGVmYXVsdCDigJQgZXZlcnkgc3Vydml2aW5nIGBzZXRgIHN0b3Jlc1xuICogdGhlIGZ1bGwgZmluYWwgdmFsdWUsIGJ5dGUtaWRlbnRpY2FsIHRvIGhpc3RvcnkpIC8gYCdkZWx0YSdgIChhcnJheVxuICogbmV0LWNoYW5nZXMgdGhhdCBhcmUgXCJiYXNlIHBsdXMgYSB0YWlsXCIgY29tbWl0IGFzIGFuIGBhcHBlbmRgIHZlcmJcbiAqIHN0b3Jpbmcgb25seSB0aGUgdGFpbDsgYGRlbGV0ZVZhbHVlKClgIGNvbW1pdHMgYXMgYSByZWFsIGBkZWxldGVgIHZlcmI7XG4gKiBvbmUgdHJhY2UgZW50cnkgcGVyIHN1cnZpdmluZyBwYXRoKS4gUmVwbGF5IHJlY29uc3RydWN0cyBldmVyeSBzdGVwJ3NcbiAqIGZ1bGwgc3RhdGUgZXhhY3RseS4gQ29uc3VtZXJzIHJlYWRpbmcgYGJ1bmRsZS5vdmVyd3JpdGVba2V5XWAgYXMgdGhlIGZ1bGxcbiAqIHZhbHVlIG11c3QgdXNlIGBjb21taXRWYWx1ZUF0YCBmcm9tIGBmb290dHJhY2VgLiBQYXNzIGFzXG4gKiBgbmV3IEZsb3dDaGFydEV4ZWN1dG9yKGNoYXJ0LCB7IGNvbW1pdFZhbHVlcyB9KWAgb3IgY2FsbFxuICogYGV4ZWN1dG9yLnNldENvbW1pdFZhbHVlcyhtb2RlKWAgYmVmb3JlIGBydW4oKWA7IHRoZSBhY3RpdmUgbW9kZSBpcyB0aGVcbiAqIHNuYXBzaG90IGRpc2NyaW1pbmFudCBgZ2V0U25hcHNob3QoKS5jb21taXRWYWx1ZXNgLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbnRyYWN0ICYgVmFsaWRhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IENvbnRyYWN0ICYgVmFsaWRhdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBTY2hlbWFLaW5kLCBWYWxpZGF0aW9uSXNzdWUsIFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IENvbnRyYWN0ICYgVmFsaWRhdGlvbiAqL1xuZXhwb3J0IHsgZGV0ZWN0U2NoZW1hLCBpc1ZhbGlkYXRhYmxlLCBpc1pvZCB9IGZyb20gJy4vbGliL3NjaGVtYS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgQ29udHJhY3QgJiBWYWxpZGF0aW9uICovXG5leHBvcnQgeyBJbnB1dFZhbGlkYXRpb25FcnJvciwgdmFsaWRhdGVBZ2FpbnN0U2NoZW1hLCB2YWxpZGF0ZU9yVGhyb3cgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFcnJvciBVdGlsaXRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBFcnJvciBVdGlsaXRpZXMgKi9cbmV4cG9ydCB0eXBlIHsgU3RydWN0dXJlZEVycm9ySW5mbyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRXJyb3IgVXRpbGl0aWVzICovXG5leHBvcnQgeyBleHRyYWN0RXJyb3JJbmZvLCBmb3JtYXRFcnJvckluZm8gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXYgVG9vbHMg4oCUIE1vZGUgZmxhZ3MgYW5kIFpvZCBzY29wZSB1dGlsaXRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBAY2F0ZWdvcnkgRGV2IFRvb2xzXG4gKlxuICogR2xvYmFsIGRldi1tb2RlIGZsYWcuIENhbGwgYGVuYWJsZURldk1vZGUoKWAgYXQgYXBwbGljYXRpb24gc3RhcnR1cCB0b1xuICogdHVybiBvbiBkZXZlbG9wZXItb25seSBkaWFnbm9zdGljcyBhY3Jvc3MgdGhlIGxpYnJhcnkg4oCUIGNpcmN1bGFyLXJlZmVyZW5jZVxuICogZGV0ZWN0aW9uIGluIHNjb3BlIHdyaXRlcywgd2FybmluZ3Mgd2hlbiBhIHJlY29yZGVyIGhhcyBubyBvYnNlcnZlclxuICogbWV0aG9kcywgc3VzcGljaW91cy1wcmVkaWNhdGUgd2FybmluZ3MgaW4gZGVjaWRlL3NlbGVjdCwgc3RydWN0dXJhbFxuICogY2hlY2tzIGluIGBnZXRTdWJ0cmVlU25hcHNob3RgLCBhbmQgYW55IGZ1dHVyZSBkZXYtb25seSBkaWFnbm9zdGljLlxuICpcbiAqIFByb2R1Y3Rpb24gbGVhdmVzIGl0IE9GRiBieSBkZWZhdWx0ICh6ZXJvIG92ZXJoZWFkKS4gU2VlIHRoZSBKU0RvYyBvblxuICogYGVuYWJsZURldk1vZGVgIGZvciB0aGUgZnVsbCBsaXN0IGFuZCB1c2FnZSBleGFtcGxlLlxuICovXG5leHBvcnQgeyBkaXNhYmxlRGV2TW9kZSwgZW5hYmxlRGV2TW9kZSwgaXNEZXZNb2RlIH0gZnJvbSAnLi9saWIvZGV2TW9kZS5qcyc7XG5cbi8vIGBkZWZpbmVTY29wZUZyb21ab2RgIGFuZCB0aGUgb3RoZXIgem9kLWJhc2VkIHNjb3BlIGhlbHBlcnMgbW92ZWQgdG8gdGhlIG9wdC1pblxuLy8gYGZvb3RwcmludGpzL3pvZGAgZW50cnkg4oCUIGtlZXBpbmcgem9kIG91dCBvZiB0aGUgY29yZSBsb2FkIHBhdGggKGl0IGlzIGFuXG4vLyBvcHRpb25hbCBwZWVyKS4gSW1wb3J0IHRoZW0gZnJvbSAnZm9vdHByaW50anMvem9kJy5cbi8vIEEgcnVuJ3MgcmVjb3JkIGFzIEpTT04gd2l0aG91dCB0aGUgZW5naW5lJ3MgcmVjdXJzaW9uIGxpbWl0ICg5LjI2LjApOiB0aGVcbi8vIHNhbWUgYnl0ZXMgSlNPTi5zdHJpbmdpZnkgZW1pdHMsIGZvciBhIGRlZXAgYG5leHRgIGNoYWluIGl0IGNhbm5vdCBlbmNvZGUuXG5leHBvcnQgdHlwZSB7IFJldHJ5TG9vcENhbGwsIFJldHJ5TG9vcERlY2lzaW9uLCBSZXRyeUxvb3BJZGVudGl0eSB9IGZyb20gJy4vbGliL2F0dGVtcHQvcmV0cnlMb29wVHlwZXMuanMnO1xuZXhwb3J0IHR5cGUgeyBSZXRyeUxvb3BDb250ZXh0LCBSZXRyeUxvb3BPcHRpb25zLCBSZXRyeUxvb3BTdGF0ZSB9IGZyb20gJy4vbGliL2J1aWxkZXIvcmV0cnlMb29wLmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ2FwdHVyZUNoYW5uZWxTdGF0dXMsXG4gIENhcHR1cmVMaW1pdGF0aW9uLFxuICBOYXRpdmVDYXB0dXJlTm90ZSxcbiAgUmVjb3JkZXJDYXB0dXJlQWNrbm93bGVkZ2VtZW50LFxufSBmcm9tICcuL2xpYi9jYXB0dXJlL25hdGl2ZUNvdmVyYWdlLmpzJztcbmV4cG9ydCB7IHN0cmluZ2lmeVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcnVubmVyL3N0cmluZ2lmeVNuYXBzaG90LmpzJztcbiJdfQ==
@@ -20,8 +20,10 @@
20
20
  * `TypeError`, an `AbortError` / `TimeoutError` that was not the run's) → network
21
21
  * 9. anything else → unknown
22
22
  *
23
- * A status is a NUMBER (`status` or `statusCode`); a numeric string is not read as one. Total: a value whose
24
- * reads throw (a hostile Proxy) is `'unknown'`, never a second throw from an error path.
23
+ * A status is a NUMBER (`status` or `statusCode`); a numeric string is not read as one. Metadata uses only
24
+ * own/inherited data within 32 prototype objects; a caller accessor shadows farther data without executing.
25
+ * The captured platform DOMException name getter is the sole accessor exception and brand-checks its receiver.
26
+ * Inspection failures (a hostile Proxy) are `'unknown'`, never a second throw from an error path.
25
27
  */
26
28
  import type { AttemptCategory, AttemptOutcome } from './types.js';
27
29
  /**
@@ -20,10 +20,13 @@
20
20
  * `TypeError`, an `AbortError` / `TimeoutError` that was not the run's) → network
21
21
  * 9. anything else → unknown
22
22
  *
23
- * A status is a NUMBER (`status` or `statusCode`); a numeric string is not read as one. Total: a value whose
24
- * reads throw (a hostile Proxy) is `'unknown'`, never a second throw from an error path.
23
+ * A status is a NUMBER (`status` or `statusCode`); a numeric string is not read as one. Metadata uses only
24
+ * own/inherited data within 32 prototype objects; a caller accessor shadows farther data without executing.
25
+ * The captured platform DOMException name getter is the sole accessor exception and brand-checks its receiver.
26
+ * Inspection failures (a hostile Proxy) are `'unknown'`, never a second throw from an error path.
25
27
  */
26
28
  import { InputValidationError } from '../schema/errors.js';
29
+ import { errorField } from './errorField.js';
27
30
  import { AttemptTimeoutError, UnknownEffectError } from './errors.js';
28
31
  /** Socket-level codes a transport failure carries (Node's `errno` names). */
29
32
  const NETWORK_CODES = new Set([
@@ -87,7 +90,7 @@ function categoryOf(error) {
87
90
  return 'unknown';
88
91
  const fields = error;
89
92
  const status = numberField(fields, 'status') ?? numberField(fields, 'statusCode');
90
- const declaresRetryAfter = isWait(fields.retryAfterMs) || isWait(fields.retryAfterSeconds);
93
+ const declaresRetryAfter = isWait(errorField(fields, 'retryAfterMs')) || isWait(errorField(fields, 'retryAfterSeconds'));
91
94
  if (status === 429 || declaresRetryAfter)
92
95
  return 'rate-limited';
93
96
  if (status !== undefined && status >= 500 && status <= 599)
@@ -96,11 +99,12 @@ function categoryOf(error) {
96
99
  return 'auth';
97
100
  if (status !== undefined && status >= 400 && status <= 499)
98
101
  return 'permanent';
99
- if (fields.retryable === false)
102
+ if (errorField(fields, 'retryable') === false)
100
103
  return 'permanent';
101
104
  if (error instanceof InputValidationError)
102
105
  return 'permanent';
103
- const name = typeof fields.name === 'string' ? fields.name : undefined;
106
+ const declaredName = errorField(fields, 'name');
107
+ const name = typeof declaredName === 'string' ? declaredName : undefined;
104
108
  if (name !== undefined && VALIDATION_NAMES.has(name))
105
109
  return 'permanent';
106
110
  if (status === undefined && isTransportFailure(fields, name))
@@ -108,24 +112,27 @@ function categoryOf(error) {
108
112
  return 'unknown';
109
113
  }
110
114
  function isTransportFailure(fields, name) {
111
- if (hasNetworkCode(fields.code))
115
+ if (hasNetworkCode(errorField(fields, 'code')))
112
116
  return true;
113
- const cause = fields.cause;
114
- if (cause !== null && typeof cause === 'object' && hasNetworkCode(cause.code)) {
117
+ const cause = errorField(fields, 'cause');
118
+ if (cause !== null && typeof cause === 'object' && hasNetworkCode(errorField(cause, 'code'))) {
115
119
  return true;
116
120
  }
117
121
  if (name !== undefined && TRANSPORT_ABORT_NAMES.has(name))
118
122
  return true;
119
- return fields instanceof TypeError && typeof fields.message === 'string' && FETCH_FAILURE.test(fields.message);
123
+ if (!(fields instanceof TypeError))
124
+ return false;
125
+ const message = errorField(fields, 'message');
126
+ return typeof message === 'string' && FETCH_FAILURE.test(message);
120
127
  }
121
128
  function hasNetworkCode(code) {
122
129
  return typeof code === 'string' && NETWORK_CODES.has(code);
123
130
  }
124
131
  function numberField(fields, key) {
125
- const value = fields[key];
132
+ const value = errorField(fields, key);
126
133
  return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
127
134
  }
128
135
  function isWait(value) {
129
136
  return typeof value === 'number' && Number.isFinite(value) && value >= 0;
130
137
  }
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2F0dGVtcHQvY2F0ZWdvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQUVILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUd0RSw2RUFBNkU7QUFDN0UsTUFBTSxhQUFhLEdBQXdCLElBQUksR0FBRyxDQUFDO0lBQ2pELFlBQVk7SUFDWixjQUFjO0lBQ2QsV0FBVztJQUNYLFdBQVc7SUFDWCxXQUFXO0lBQ1gsT0FBTztDQUNSLENBQUMsQ0FBQztBQUVILDRHQUE0RztBQUM1RyxNQUFNLGFBQWEsR0FBRyxpR0FBaUcsQ0FBQztBQUV4SCx5RkFBeUY7QUFDekYsTUFBTSxnQkFBZ0IsR0FBd0IsSUFBSSxHQUFHLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0FBRS9HLHNIQUFzSDtBQUN0SCxNQUFNLHFCQUFxQixHQUF3QixJQUFJLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBRTNGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBYyxFQUFFLFVBQTBCLFFBQVE7SUFDOUUsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzVDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM1QyxJQUFJLENBQUM7UUFDSCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFFRDs7OztHQUlH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QUM3QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzNCLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksY0FBYyxDQUFFLEtBQWlDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMzRyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLElBQUksS0FBSyxTQUFTLElBQUkscUJBQXFCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3ZFLE9BQU8sTUFBTSxZQUFZLFNBQVMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxPQUFPLEtBQUssUUFBUSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2pILENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxJQUFhO0lBQ25DLE9BQU8sT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLE1BQStCLEVBQUUsR0FBNEI7SUFDaEYsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ2pGLENBQUM7QUFFRCxTQUFTLE1BQU0sQ0FBQyxLQUFjO0lBQzVCLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztBQUMzRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBhdHRlbXB0L2NhdGVnb3J5LnRzIOKAlCBgZXJyb3JDYXRlZ29yeWAsIHRoZSBPTkUgZmFpbHVyZSBjbGFzc2lmaWVyIChkZXNpZ24gwqczLjkpLlxuICpcbiAqIFNldmVuIGZpeGVkIHZhbHVlcywgc28gZXZlcnkgcmVjb3JkZXIg4oCUIHRoZSBuYXJyYXRpdmUsIHRoZSBtZXRyaWMgbGF5ZXIsIGFuIGFnZW50J3Mgb3duIOKAlCBicmVha3MgZmFpbHVyZXMgZG93blxuICogdGhlIHNhbWUgd2F5OyBhIHJlY29yZGVyIG5ldmVyIGludmVudHMgYSBjYXRlZ29yeSBvZiBpdHMgb3duLiBCb3Jyb3dlZCBmcm9tIGFnZW50Zm9vdHByaW50J3NcbiAqIGBjbGFzc2lmeVJldHJ5UmVhc29uYCBhbmQgd2lkZW5lZCwgc28gaXRzIGRlY29yYXRvcnMgYWRvcHQgdGhpcyBvbmUgcmF0aGVyIHRoYW4ga2VlcCB0aGVpcnMuXG4gKlxuICogQ2F0ZWdvcnkgaXMgRVZJREVOQ0UsIG5ldmVyIHBvbGljeTogdGhlIGRlZmF1bHQgYHJldHJ5T25gIHJldHJpZXMgZXZlcnkgY2F0ZWdvcnkuIEEgY2hhcnQgdGhhdCB3YW50cyBcIm5ldmVyXG4gKiByZXRyeSBhIHBlcm1hbmVudCBmYWlsdXJlXCIgc2F5cyBzbzogYHJldHJ5T246IChlKSA9PiBlcnJvckNhdGVnb3J5KGUpICE9PSAncGVybWFuZW50J2AuXG4gKlxuICogUHJlY2VkZW5jZSDigJQgd2hhdCB0aGUgZmFpbHVyZSBMT09LRUQgbGlrZSB3aW5zIG92ZXIgd2hhdCBpdCBkZWNsYXJlczpcbiAqICAgMS4gdGhlIGF0dGVtcHQncyBvd24gdGltZXIgKG91dGNvbWUgYCd0aW1lb3V0J2AsIG9yIG91ciBgQXR0ZW1wdFRpbWVvdXRFcnJvcmApICDihpIgdGltZW91dFxuICogICAyLiB0aGUgcnVuJ3Mgc2lnbmFsIGVuZGVkIGl0IChvdXRjb21lIGAnYWJvcnRlZCdgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiB1bmtub3duXG4gKiAgIDMuIHN0YXR1cyA0MjksIG9yIGEgZGVjbGFyZWQgYHJldHJ5QWZ0ZXJNc2AgLyBgcmV0cnlBZnRlclNlY29uZHNgICAgICAgICAgICAgICAg4oaSIHJhdGUtbGltaXRlZFxuICogICA0LiBzdGF0dXMgNXh4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiBzZXJ2ZXJcbiAqICAgNS4gc3RhdHVzIDQwMSAvIDQwMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpIgYXV0aFxuICogICA2LiBhbnkgb3RoZXIgNHh4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiBwZXJtYW5lbnRcbiAqICAgNy4gYHJldHJ5YWJsZTogZmFsc2VgLCBvciBhIHZhbGlkYXRpb24gZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpIgcGVybWFuZW50XG4gKiAgIDguIGEgdHJhbnNwb3J0IGZhaWx1cmUgKGEgc29ja2V0IGNvZGUgb24gdGhlIGVycm9yIG9yIGl0cyBjYXVzZSwgYSBmZXRjaFxuICogICAgICBgVHlwZUVycm9yYCwgYW4gYEFib3J0RXJyb3JgIC8gYFRpbWVvdXRFcnJvcmAgdGhhdCB3YXMgbm90IHRoZSBydW4ncykgICAgICAgIOKGkiBuZXR3b3JrXG4gKiAgIDkuIGFueXRoaW5nIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIHVua25vd25cbiAqXG4gKiBBIHN0YXR1cyBpcyBhIE5VTUJFUiAoYHN0YXR1c2Agb3IgYHN0YXR1c0NvZGVgKTsgYSBudW1lcmljIHN0cmluZyBpcyBub3QgcmVhZCBhcyBvbmUuIFRvdGFsOiBhIHZhbHVlIHdob3NlXG4gKiByZWFkcyB0aHJvdyAoYSBob3N0aWxlIFByb3h5KSBpcyBgJ3Vua25vd24nYCwgbmV2ZXIgYSBzZWNvbmQgdGhyb3cgZnJvbSBhbiBlcnJvciBwYXRoLlxuICovXG5cbmltcG9ydCB7IElucHV0VmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi4vc2NoZW1hL2Vycm9ycy5qcyc7XG5pbXBvcnQgeyBBdHRlbXB0VGltZW91dEVycm9yLCBVbmtub3duRWZmZWN0RXJyb3IgfSBmcm9tICcuL2Vycm9ycy5qcyc7XG5pbXBvcnQgdHlwZSB7IEF0dGVtcHRDYXRlZ29yeSwgQXR0ZW1wdE91dGNvbWUgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLyoqIFNvY2tldC1sZXZlbCBjb2RlcyBhIHRyYW5zcG9ydCBmYWlsdXJlIGNhcnJpZXMgKE5vZGUncyBgZXJybm9gIG5hbWVzKS4gKi9cbmNvbnN0IE5FVFdPUktfQ09ERVM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgJ0VDT05OUkVTRVQnLFxuICAnRUNPTk5SRUZVU0VEJyxcbiAgJ0VOT1RGT1VORCcsXG4gICdFVElNRURPVVQnLFxuICAnRUFJX0FHQUlOJyxcbiAgJ0VQSVBFJyxcbl0pO1xuXG4vKiogVGhlIG1lc3NhZ2VzIHJ1bnRpbWVzIGdpdmUgYSBgZmV0Y2hgIHRoYXQgbmV2ZXIgcmVhY2hlZCB0aGUgc2VydmVyIChOb2RlLCBDaHJvbWl1bSwgRmlyZWZveCwgU2FmYXJpKS4gKi9cbmNvbnN0IEZFVENIX0ZBSUxVUkUgPSAvXihmZXRjaCBmYWlsZWR8ZmFpbGVkIHRvIGZldGNofG5ldHdvcmtlcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gZmV0Y2ggcmVzb3VyY2VcXC4/fGxvYWQgZmFpbGVkKSQvaTtcblxuLyoqIEVycm9yIG5hbWVzIHRoYXQgc2F5IGEgdmFsaWRhdGlvbiBmYWlsZWQg4oCUIHJldHJ5aW5nIHRoZSBzYW1lIGlucHV0IGNhbm5vdCBzdWNjZWVkLiAqL1xuY29uc3QgVkFMSURBVElPTl9OQU1FUzogUmVhZG9ubHlTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoWydWYWxpZGF0aW9uRXJyb3InLCAnWm9kRXJyb3InLCAnSW5wdXRWYWxpZGF0aW9uRXJyb3InXSk7XG5cbi8qKiBFcnJvciBuYW1lcyBvZiBhbiBhYm9ydCBvciBhIHRpbWVvdXQgdGhhdCBzb21lIE9USEVSIHNpZ25hbCByYWlzZWQgKHRoZSBydW4ncyBvd24gZW5kcyBhcyBvdXRjb21lIGAnYWJvcnRlZCdgKS4gKi9cbmNvbnN0IFRSQU5TUE9SVF9BQk9SVF9OQU1FUzogUmVhZG9ubHlTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoWydBYm9ydEVycm9yJywgJ1RpbWVvdXRFcnJvciddKTtcblxuLyoqXG4gKiBUaGUgY2F0ZWdvcnkgb2YgYW4gYXR0ZW1wdCdzIGZhaWx1cmUuIGBvdXRjb21lYCBpcyBob3cgdGhlIGF0dGVtcHQgZW5kZWQgKGRlZmF1bHQgYCdmYWlsZWQnYCk6IGl0IGRlY2lkZXNcbiAqIGAndGltZW91dCdgICh0aGUgYXR0ZW1wdCdzIG93biB0aW1lcikgYW5kIGAndW5rbm93bidgICh0aGUgcnVuJ3Mgc2lnbmFsKSBiZWZvcmUgdGhlIGVycm9yIGlzIHJlYWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlcnJvckNhdGVnb3J5KGVycm9yOiB1bmtub3duLCBvdXRjb21lOiBBdHRlbXB0T3V0Y29tZSA9ICdmYWlsZWQnKTogQXR0ZW1wdENhdGVnb3J5IHtcbiAgaWYgKG91dGNvbWUgPT09ICd0aW1lb3V0JykgcmV0dXJuICd0aW1lb3V0JztcbiAgaWYgKG91dGNvbWUgPT09ICdhYm9ydGVkJykgcmV0dXJuICd1bmtub3duJztcbiAgdHJ5IHtcbiAgICByZXR1cm4gY2F0ZWdvcnlPZihlcnJvcik7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiAndW5rbm93bic7XG4gIH1cbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGVybWluYWwgb3duZXJzaGlwIHByZXNlcnZlcyBhIHByb2R1Y2VyJ3Mga25vd24gY2F0ZWdvcnkuIEFuXG4gKiB1bnJlc29sdmVkIGVmZmVjdCBpcyB1bmtub3duLCBuZXZlciB0aGUgY2F0ZWdvcnkgb2YgaXRzIHBoeXNpY2FsIGNhdXNlLlxuICogVGhpcyBkb2VzIG5vdCByZXdyaXRlIGhpc3RvcmljYWwgYXR0ZW1wdCBjYXRlZ29yaWVzIG9yIHJlLXJlYWQgYSBrbm93biBvbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtaW5hbENhdGVnb3J5KGVycm9yOiB1bmtub3duLCBrbm93bj86IEF0dGVtcHRDYXRlZ29yeSk6IEF0dGVtcHRDYXRlZ29yeSB7XG4gIHRyeSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgVW5rbm93bkVmZmVjdEVycm9yKSByZXR1cm4gJ3Vua25vd24nO1xuICAgIC8vIENKUyBhbmQgRVNNIGhhdmUgZGlzdGluY3QgY29uc3RydWN0b3JzLiBBIGRlY2xhcmVkIG93biBEQVRBIG5hbWUgbWF5XG4gICAgLy8gb25seSByZWR1Y2UgY2VydGFpbnR5IHRvIHVua25vd247IG5ldmVyIGV4ZWN1dGUgYW4gZXJyb3IncyBuYW1lIGdldHRlclxuICAgIC8vIG9yIHByb21vdGUgaXRzIHBoeXNpY2FsIGNhdXNlIHRvIGEga25vd24gb3V0Y29tZSBhY3Jvc3MgbW9kdWxlIGNvcGllcy5cbiAgICBpZiAoZXJyb3IgIT09IG51bGwgJiYgKHR5cGVvZiBlcnJvciA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIGVycm9yID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgY29uc3QgbmFtZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXJyb3IsICduYW1lJyk7XG4gICAgICBpZiAobmFtZSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobmFtZSwgJ3ZhbHVlJykgJiYgbmFtZS52YWx1ZSA9PT0gJ1Vua25vd25FZmZlY3RFcnJvcicpIHtcbiAgICAgICAgcmV0dXJuICd1bmtub3duJztcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBrbm93biA/PyAndW5rbm93bic7XG4gIH1cbiAgcmV0dXJuIGtub3duID8/IGVycm9yQ2F0ZWdvcnkoZXJyb3IpO1xufVxuXG5mdW5jdGlvbiBjYXRlZ29yeU9mKGVycm9yOiB1bmtub3duKTogQXR0ZW1wdENhdGVnb3J5IHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXR0ZW1wdFRpbWVvdXRFcnJvcikgcmV0dXJuICd0aW1lb3V0JztcbiAgaWYgKGVycm9yID09PSBudWxsIHx8ICh0eXBlb2YgZXJyb3IgIT09ICdvYmplY3QnICYmIHR5cGVvZiBlcnJvciAhPT0gJ2Z1bmN0aW9uJykpIHJldHVybiAndW5rbm93bic7XG4gIGNvbnN0IGZpZWxkcyA9IGVycm9yIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIGNvbnN0IHN0YXR1cyA9IG51bWJlckZpZWxkKGZpZWxkcywgJ3N0YXR1cycpID8/IG51bWJlckZpZWxkKGZpZWxkcywgJ3N0YXR1c0NvZGUnKTtcbiAgY29uc3QgZGVjbGFyZXNSZXRyeUFmdGVyID0gaXNXYWl0KGZpZWxkcy5yZXRyeUFmdGVyTXMpIHx8IGlzV2FpdChmaWVsZHMucmV0cnlBZnRlclNlY29uZHMpO1xuICBpZiAoc3RhdHVzID09PSA0MjkgfHwgZGVjbGFyZXNSZXRyeUFmdGVyKSByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gIGlmIChzdGF0dXMgIT09IHVuZGVmaW5lZCAmJiBzdGF0dXMgPj0gNTAwICYmIHN0YXR1cyA8PSA1OTkpIHJldHVybiAnc2VydmVyJztcbiAgaWYgKHN0YXR1cyA9PT0gNDAxIHx8IHN0YXR1cyA9PT0gNDAzKSByZXR1cm4gJ2F1dGgnO1xuICBpZiAoc3RhdHVzICE9PSB1bmRlZmluZWQgJiYgc3RhdHVzID49IDQwMCAmJiBzdGF0dXMgPD0gNDk5KSByZXR1cm4gJ3Blcm1hbmVudCc7XG5cbiAgaWYgKGZpZWxkcy5yZXRyeWFibGUgPT09IGZhbHNlKSByZXR1cm4gJ3Blcm1hbmVudCc7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIElucHV0VmFsaWRhdGlvbkVycm9yKSByZXR1cm4gJ3Blcm1hbmVudCc7XG4gIGNvbnN0IG5hbWUgPSB0eXBlb2YgZmllbGRzLm5hbWUgPT09ICdzdHJpbmcnID8gZmllbGRzLm5hbWUgOiB1bmRlZmluZWQ7XG4gIGlmIChuYW1lICE9PSB1bmRlZmluZWQgJiYgVkFMSURBVElPTl9OQU1FUy5oYXMobmFtZSkpIHJldHVybiAncGVybWFuZW50JztcblxuICBpZiAoc3RhdHVzID09PSB1bmRlZmluZWQgJiYgaXNUcmFuc3BvcnRGYWlsdXJlKGZpZWxkcywgbmFtZSkpIHJldHVybiAnbmV0d29yayc7XG4gIHJldHVybiAndW5rbm93bic7XG59XG5cbmZ1bmN0aW9uIGlzVHJhbnNwb3J0RmFpbHVyZShmaWVsZHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgaWYgKGhhc05ldHdvcmtDb2RlKGZpZWxkcy5jb2RlKSkgcmV0dXJuIHRydWU7XG4gIGNvbnN0IGNhdXNlID0gZmllbGRzLmNhdXNlO1xuICBpZiAoY2F1c2UgIT09IG51bGwgJiYgdHlwZW9mIGNhdXNlID09PSAnb2JqZWN0JyAmJiBoYXNOZXR3b3JrQ29kZSgoY2F1c2UgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLmNvZGUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKG5hbWUgIT09IHVuZGVmaW5lZCAmJiBUUkFOU1BPUlRfQUJPUlRfTkFNRVMuaGFzKG5hbWUpKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIGZpZWxkcyBpbnN0YW5jZW9mIFR5cGVFcnJvciAmJiB0eXBlb2YgZmllbGRzLm1lc3NhZ2UgPT09ICdzdHJpbmcnICYmIEZFVENIX0ZBSUxVUkUudGVzdChmaWVsZHMubWVzc2FnZSk7XG59XG5cbmZ1bmN0aW9uIGhhc05ldHdvcmtDb2RlKGNvZGU6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBjb2RlID09PSAnc3RyaW5nJyAmJiBORVRXT1JLX0NPREVTLmhhcyhjb2RlKTtcbn1cblxuZnVuY3Rpb24gbnVtYmVyRmllbGQoZmllbGRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwga2V5OiAnc3RhdHVzJyB8ICdzdGF0dXNDb2RlJyk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHZhbHVlID0gZmllbGRzW2tleV07XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaXNXYWl0KHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkgJiYgdmFsdWUgPj0gMDtcbn1cbiJdfQ==
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2F0dGVtcHQvY2F0ZWdvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBRUgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUd0RSw2RUFBNkU7QUFDN0UsTUFBTSxhQUFhLEdBQXdCLElBQUksR0FBRyxDQUFDO0lBQ2pELFlBQVk7SUFDWixjQUFjO0lBQ2QsV0FBVztJQUNYLFdBQVc7SUFDWCxXQUFXO0lBQ1gsT0FBTztDQUNSLENBQUMsQ0FBQztBQUVILDRHQUE0RztBQUM1RyxNQUFNLGFBQWEsR0FBRyxpR0FBaUcsQ0FBQztBQUV4SCx5RkFBeUY7QUFDekYsTUFBTSxnQkFBZ0IsR0FBd0IsSUFBSSxHQUFHLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0FBRS9HLHNIQUFzSDtBQUN0SCxNQUFNLHFCQUFxQixHQUF3QixJQUFJLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBRTNGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBYyxFQUFFLFVBQTBCLFFBQVE7SUFDOUUsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzVDLElBQUksT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM1QyxJQUFJLENBQUM7UUFDSCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQWMsRUFBRSxLQUF1QjtJQUN0RSxJQUFJLENBQUM7UUFDSCxJQUFJLEtBQUssWUFBWSxrQkFBa0I7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUMxRCx1RUFBdUU7UUFDdkUseUVBQXlFO1FBQ3pFLHlFQUF5RTtRQUN6RSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNqRixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzVELElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxvQkFBb0IsRUFBRSxDQUFDO2dCQUN2RyxPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssSUFBSSxTQUFTLENBQUM7SUFDNUIsQ0FBQztJQUNELE9BQU8sS0FBSyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsS0FBYztJQUNoQyxJQUFJLEtBQUssWUFBWSxtQkFBbUI7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUMzRCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDbkcsTUFBTSxNQUFNLEdBQUcsS0FBZ0MsQ0FBQztJQUVoRCxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDbEYsTUFBTSxrQkFBa0IsR0FDdEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7SUFDaEcsSUFBSSxNQUFNLEtBQUssR0FBRyxJQUFJLGtCQUFrQjtRQUFFLE9BQU8sY0FBYyxDQUFDO0lBQ2hFLElBQUksTUFBTSxLQUFLLFNBQVMsSUFBSSxNQUFNLElBQUksR0FBRyxJQUFJLE1BQU0sSUFBSSxHQUFHO1FBQUUsT0FBTyxRQUFRLENBQUM7SUFDNUUsSUFBSSxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sS0FBSyxHQUFHO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFDcEQsSUFBSSxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sSUFBSSxHQUFHLElBQUksTUFBTSxJQUFJLEdBQUc7UUFBRSxPQUFPLFdBQVcsQ0FBQztJQUUvRSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEtBQUssS0FBSztRQUFFLE9BQU8sV0FBVyxDQUFDO0lBQ2xFLElBQUksS0FBSyxZQUFZLG9CQUFvQjtRQUFFLE9BQU8sV0FBVyxDQUFDO0lBQzlELE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEQsTUFBTSxJQUFJLEdBQUcsT0FBTyxZQUFZLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN6RSxJQUFJLElBQUksS0FBSyxTQUFTLElBQUksZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztRQUFFLE9BQU8sV0FBVyxDQUFDO0lBRXpFLElBQUksTUFBTSxLQUFLLFNBQVMsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDL0UsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsTUFBK0IsRUFBRSxJQUF3QjtJQUNuRixJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDNUQsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxQyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3RixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLElBQUksS0FBSyxTQUFTLElBQUkscUJBQXFCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3ZFLElBQUksQ0FBQyxDQUFDLE1BQU0sWUFBWSxTQUFTLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNqRCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLE9BQU8sT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLElBQWE7SUFDbkMsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsTUFBK0IsRUFBRSxHQUE0QjtJQUNoRixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ2pGLENBQUM7QUFFRCxTQUFTLE1BQU0sQ0FBQyxLQUFjO0lBQzVCLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztBQUMzRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBhdHRlbXB0L2NhdGVnb3J5LnRzIOKAlCBgZXJyb3JDYXRlZ29yeWAsIHRoZSBPTkUgZmFpbHVyZSBjbGFzc2lmaWVyIChkZXNpZ24gwqczLjkpLlxuICpcbiAqIFNldmVuIGZpeGVkIHZhbHVlcywgc28gZXZlcnkgcmVjb3JkZXIg4oCUIHRoZSBuYXJyYXRpdmUsIHRoZSBtZXRyaWMgbGF5ZXIsIGFuIGFnZW50J3Mgb3duIOKAlCBicmVha3MgZmFpbHVyZXMgZG93blxuICogdGhlIHNhbWUgd2F5OyBhIHJlY29yZGVyIG5ldmVyIGludmVudHMgYSBjYXRlZ29yeSBvZiBpdHMgb3duLiBCb3Jyb3dlZCBmcm9tIGFnZW50Zm9vdHByaW50J3NcbiAqIGBjbGFzc2lmeVJldHJ5UmVhc29uYCBhbmQgd2lkZW5lZCwgc28gaXRzIGRlY29yYXRvcnMgYWRvcHQgdGhpcyBvbmUgcmF0aGVyIHRoYW4ga2VlcCB0aGVpcnMuXG4gKlxuICogQ2F0ZWdvcnkgaXMgRVZJREVOQ0UsIG5ldmVyIHBvbGljeTogdGhlIGRlZmF1bHQgYHJldHJ5T25gIHJldHJpZXMgZXZlcnkgY2F0ZWdvcnkuIEEgY2hhcnQgdGhhdCB3YW50cyBcIm5ldmVyXG4gKiByZXRyeSBhIHBlcm1hbmVudCBmYWlsdXJlXCIgc2F5cyBzbzogYHJldHJ5T246IChlKSA9PiBlcnJvckNhdGVnb3J5KGUpICE9PSAncGVybWFuZW50J2AuXG4gKlxuICogUHJlY2VkZW5jZSDigJQgd2hhdCB0aGUgZmFpbHVyZSBMT09LRUQgbGlrZSB3aW5zIG92ZXIgd2hhdCBpdCBkZWNsYXJlczpcbiAqICAgMS4gdGhlIGF0dGVtcHQncyBvd24gdGltZXIgKG91dGNvbWUgYCd0aW1lb3V0J2AsIG9yIG91ciBgQXR0ZW1wdFRpbWVvdXRFcnJvcmApICDihpIgdGltZW91dFxuICogICAyLiB0aGUgcnVuJ3Mgc2lnbmFsIGVuZGVkIGl0IChvdXRjb21lIGAnYWJvcnRlZCdgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiB1bmtub3duXG4gKiAgIDMuIHN0YXR1cyA0MjksIG9yIGEgZGVjbGFyZWQgYHJldHJ5QWZ0ZXJNc2AgLyBgcmV0cnlBZnRlclNlY29uZHNgICAgICAgICAgICAgICAg4oaSIHJhdGUtbGltaXRlZFxuICogICA0LiBzdGF0dXMgNXh4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiBzZXJ2ZXJcbiAqICAgNS4gc3RhdHVzIDQwMSAvIDQwMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpIgYXV0aFxuICogICA2LiBhbnkgb3RoZXIgNHh4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiBwZXJtYW5lbnRcbiAqICAgNy4gYHJldHJ5YWJsZTogZmFsc2VgLCBvciBhIHZhbGlkYXRpb24gZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpIgcGVybWFuZW50XG4gKiAgIDguIGEgdHJhbnNwb3J0IGZhaWx1cmUgKGEgc29ja2V0IGNvZGUgb24gdGhlIGVycm9yIG9yIGl0cyBjYXVzZSwgYSBmZXRjaFxuICogICAgICBgVHlwZUVycm9yYCwgYW4gYEFib3J0RXJyb3JgIC8gYFRpbWVvdXRFcnJvcmAgdGhhdCB3YXMgbm90IHRoZSBydW4ncykgICAgICAgIOKGkiBuZXR3b3JrXG4gKiAgIDkuIGFueXRoaW5nIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIHVua25vd25cbiAqXG4gKiBBIHN0YXR1cyBpcyBhIE5VTUJFUiAoYHN0YXR1c2Agb3IgYHN0YXR1c0NvZGVgKTsgYSBudW1lcmljIHN0cmluZyBpcyBub3QgcmVhZCBhcyBvbmUuIE1ldGFkYXRhIHVzZXMgb25seVxuICogb3duL2luaGVyaXRlZCBkYXRhIHdpdGhpbiAzMiBwcm90b3R5cGUgb2JqZWN0czsgYSBjYWxsZXIgYWNjZXNzb3Igc2hhZG93cyBmYXJ0aGVyIGRhdGEgd2l0aG91dCBleGVjdXRpbmcuXG4gKiBUaGUgY2FwdHVyZWQgcGxhdGZvcm0gRE9NRXhjZXB0aW9uIG5hbWUgZ2V0dGVyIGlzIHRoZSBzb2xlIGFjY2Vzc29yIGV4Y2VwdGlvbiBhbmQgYnJhbmQtY2hlY2tzIGl0cyByZWNlaXZlci5cbiAqIEluc3BlY3Rpb24gZmFpbHVyZXMgKGEgaG9zdGlsZSBQcm94eSkgYXJlIGAndW5rbm93bidgLCBuZXZlciBhIHNlY29uZCB0aHJvdyBmcm9tIGFuIGVycm9yIHBhdGguXG4gKi9cblxuaW1wb3J0IHsgSW5wdXRWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuLi9zY2hlbWEvZXJyb3JzLmpzJztcbmltcG9ydCB7IGVycm9yRmllbGQgfSBmcm9tICcuL2Vycm9yRmllbGQuanMnO1xuaW1wb3J0IHsgQXR0ZW1wdFRpbWVvdXRFcnJvciwgVW5rbm93bkVmZmVjdEVycm9yIH0gZnJvbSAnLi9lcnJvcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBBdHRlbXB0Q2F0ZWdvcnksIEF0dGVtcHRPdXRjb21lIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKiBTb2NrZXQtbGV2ZWwgY29kZXMgYSB0cmFuc3BvcnQgZmFpbHVyZSBjYXJyaWVzIChOb2RlJ3MgYGVycm5vYCBuYW1lcykuICovXG5jb25zdCBORVRXT1JLX0NPREVTOiBSZWFkb25seVNldDxzdHJpbmc+ID0gbmV3IFNldChbXG4gICdFQ09OTlJFU0VUJyxcbiAgJ0VDT05OUkVGVVNFRCcsXG4gICdFTk9URk9VTkQnLFxuICAnRVRJTUVET1VUJyxcbiAgJ0VBSV9BR0FJTicsXG4gICdFUElQRScsXG5dKTtcblxuLyoqIFRoZSBtZXNzYWdlcyBydW50aW1lcyBnaXZlIGEgYGZldGNoYCB0aGF0IG5ldmVyIHJlYWNoZWQgdGhlIHNlcnZlciAoTm9kZSwgQ2hyb21pdW0sIEZpcmVmb3gsIFNhZmFyaSkuICovXG5jb25zdCBGRVRDSF9GQUlMVVJFID0gL14oZmV0Y2ggZmFpbGVkfGZhaWxlZCB0byBmZXRjaHxuZXR3b3JrZXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIGZldGNoIHJlc291cmNlXFwuP3xsb2FkIGZhaWxlZCkkL2k7XG5cbi8qKiBFcnJvciBuYW1lcyB0aGF0IHNheSBhIHZhbGlkYXRpb24gZmFpbGVkIOKAlCByZXRyeWluZyB0aGUgc2FtZSBpbnB1dCBjYW5ub3Qgc3VjY2VlZC4gKi9cbmNvbnN0IFZBTElEQVRJT05fTkFNRVM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPSBuZXcgU2V0KFsnVmFsaWRhdGlvbkVycm9yJywgJ1pvZEVycm9yJywgJ0lucHV0VmFsaWRhdGlvbkVycm9yJ10pO1xuXG4vKiogRXJyb3IgbmFtZXMgb2YgYW4gYWJvcnQgb3IgYSB0aW1lb3V0IHRoYXQgc29tZSBPVEhFUiBzaWduYWwgcmFpc2VkICh0aGUgcnVuJ3Mgb3duIGVuZHMgYXMgb3V0Y29tZSBgJ2Fib3J0ZWQnYCkuICovXG5jb25zdCBUUkFOU1BPUlRfQUJPUlRfTkFNRVM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPSBuZXcgU2V0KFsnQWJvcnRFcnJvcicsICdUaW1lb3V0RXJyb3InXSk7XG5cbi8qKlxuICogVGhlIGNhdGVnb3J5IG9mIGFuIGF0dGVtcHQncyBmYWlsdXJlLiBgb3V0Y29tZWAgaXMgaG93IHRoZSBhdHRlbXB0IGVuZGVkIChkZWZhdWx0IGAnZmFpbGVkJ2ApOiBpdCBkZWNpZGVzXG4gKiBgJ3RpbWVvdXQnYCAodGhlIGF0dGVtcHQncyBvd24gdGltZXIpIGFuZCBgJ3Vua25vd24nYCAodGhlIHJ1bidzIHNpZ25hbCkgYmVmb3JlIHRoZSBlcnJvciBpcyByZWFkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXJyb3JDYXRlZ29yeShlcnJvcjogdW5rbm93biwgb3V0Y29tZTogQXR0ZW1wdE91dGNvbWUgPSAnZmFpbGVkJyk6IEF0dGVtcHRDYXRlZ29yeSB7XG4gIGlmIChvdXRjb21lID09PSAndGltZW91dCcpIHJldHVybiAndGltZW91dCc7XG4gIGlmIChvdXRjb21lID09PSAnYWJvcnRlZCcpIHJldHVybiAndW5rbm93bic7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGNhdGVnb3J5T2YoZXJyb3IpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gJ3Vua25vd24nO1xuICB9XG59XG5cbi8qKlxuICogQGludGVybmFsIFRlcm1pbmFsIG93bmVyc2hpcCBwcmVzZXJ2ZXMgYSBwcm9kdWNlcidzIGtub3duIGNhdGVnb3J5LiBBblxuICogdW5yZXNvbHZlZCBlZmZlY3QgaXMgdW5rbm93biwgbmV2ZXIgdGhlIGNhdGVnb3J5IG9mIGl0cyBwaHlzaWNhbCBjYXVzZS5cbiAqIFRoaXMgZG9lcyBub3QgcmV3cml0ZSBoaXN0b3JpY2FsIGF0dGVtcHQgY2F0ZWdvcmllcyBvciByZS1yZWFkIGEga25vd24gb25lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdGVybWluYWxDYXRlZ29yeShlcnJvcjogdW5rbm93biwga25vd24/OiBBdHRlbXB0Q2F0ZWdvcnkpOiBBdHRlbXB0Q2F0ZWdvcnkge1xuICB0cnkge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFVua25vd25FZmZlY3RFcnJvcikgcmV0dXJuICd1bmtub3duJztcbiAgICAvLyBDSlMgYW5kIEVTTSBoYXZlIGRpc3RpbmN0IGNvbnN0cnVjdG9ycy4gQSBkZWNsYXJlZCBvd24gREFUQSBuYW1lIG1heVxuICAgIC8vIG9ubHkgcmVkdWNlIGNlcnRhaW50eSB0byB1bmtub3duOyBuZXZlciBleGVjdXRlIGFuIGVycm9yJ3MgbmFtZSBnZXR0ZXJcbiAgICAvLyBvciBwcm9tb3RlIGl0cyBwaHlzaWNhbCBjYXVzZSB0byBhIGtub3duIG91dGNvbWUgYWNyb3NzIG1vZHVsZSBjb3BpZXMuXG4gICAgaWYgKGVycm9yICE9PSBudWxsICYmICh0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBlcnJvciA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGVycm9yLCAnbmFtZScpO1xuICAgICAgaWYgKG5hbWUgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5hbWUsICd2YWx1ZScpICYmIG5hbWUudmFsdWUgPT09ICdVbmtub3duRWZmZWN0RXJyb3InKSB7XG4gICAgICAgIHJldHVybiAndW5rbm93bic7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ga25vd24gPz8gJ3Vua25vd24nO1xuICB9XG4gIHJldHVybiBrbm93biA/PyBlcnJvckNhdGVnb3J5KGVycm9yKTtcbn1cblxuZnVuY3Rpb24gY2F0ZWdvcnlPZihlcnJvcjogdW5rbm93bik6IEF0dGVtcHRDYXRlZ29yeSB7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEF0dGVtcHRUaW1lb3V0RXJyb3IpIHJldHVybiAndGltZW91dCc7XG4gIGlmIChlcnJvciA9PT0gbnVsbCB8fCAodHlwZW9mIGVycm9yICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgZXJyb3IgIT09ICdmdW5jdGlvbicpKSByZXR1cm4gJ3Vua25vd24nO1xuICBjb25zdCBmaWVsZHMgPSBlcnJvciBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICBjb25zdCBzdGF0dXMgPSBudW1iZXJGaWVsZChmaWVsZHMsICdzdGF0dXMnKSA/PyBudW1iZXJGaWVsZChmaWVsZHMsICdzdGF0dXNDb2RlJyk7XG4gIGNvbnN0IGRlY2xhcmVzUmV0cnlBZnRlciA9XG4gICAgaXNXYWl0KGVycm9yRmllbGQoZmllbGRzLCAncmV0cnlBZnRlck1zJykpIHx8IGlzV2FpdChlcnJvckZpZWxkKGZpZWxkcywgJ3JldHJ5QWZ0ZXJTZWNvbmRzJykpO1xuICBpZiAoc3RhdHVzID09PSA0MjkgfHwgZGVjbGFyZXNSZXRyeUFmdGVyKSByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gIGlmIChzdGF0dXMgIT09IHVuZGVmaW5lZCAmJiBzdGF0dXMgPj0gNTAwICYmIHN0YXR1cyA8PSA1OTkpIHJldHVybiAnc2VydmVyJztcbiAgaWYgKHN0YXR1cyA9PT0gNDAxIHx8IHN0YXR1cyA9PT0gNDAzKSByZXR1cm4gJ2F1dGgnO1xuICBpZiAoc3RhdHVzICE9PSB1bmRlZmluZWQgJiYgc3RhdHVzID49IDQwMCAmJiBzdGF0dXMgPD0gNDk5KSByZXR1cm4gJ3Blcm1hbmVudCc7XG5cbiAgaWYgKGVycm9yRmllbGQoZmllbGRzLCAncmV0cnlhYmxlJykgPT09IGZhbHNlKSByZXR1cm4gJ3Blcm1hbmVudCc7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIElucHV0VmFsaWRhdGlvbkVycm9yKSByZXR1cm4gJ3Blcm1hbmVudCc7XG4gIGNvbnN0IGRlY2xhcmVkTmFtZSA9IGVycm9yRmllbGQoZmllbGRzLCAnbmFtZScpO1xuICBjb25zdCBuYW1lID0gdHlwZW9mIGRlY2xhcmVkTmFtZSA9PT0gJ3N0cmluZycgPyBkZWNsYXJlZE5hbWUgOiB1bmRlZmluZWQ7XG4gIGlmIChuYW1lICE9PSB1bmRlZmluZWQgJiYgVkFMSURBVElPTl9OQU1FUy5oYXMobmFtZSkpIHJldHVybiAncGVybWFuZW50JztcblxuICBpZiAoc3RhdHVzID09PSB1bmRlZmluZWQgJiYgaXNUcmFuc3BvcnRGYWlsdXJlKGZpZWxkcywgbmFtZSkpIHJldHVybiAnbmV0d29yayc7XG4gIHJldHVybiAndW5rbm93bic7XG59XG5cbmZ1bmN0aW9uIGlzVHJhbnNwb3J0RmFpbHVyZShmaWVsZHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgaWYgKGhhc05ldHdvcmtDb2RlKGVycm9yRmllbGQoZmllbGRzLCAnY29kZScpKSkgcmV0dXJuIHRydWU7XG4gIGNvbnN0IGNhdXNlID0gZXJyb3JGaWVsZChmaWVsZHMsICdjYXVzZScpO1xuICBpZiAoY2F1c2UgIT09IG51bGwgJiYgdHlwZW9mIGNhdXNlID09PSAnb2JqZWN0JyAmJiBoYXNOZXR3b3JrQ29kZShlcnJvckZpZWxkKGNhdXNlLCAnY29kZScpKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChuYW1lICE9PSB1bmRlZmluZWQgJiYgVFJBTlNQT1JUX0FCT1JUX05BTUVTLmhhcyhuYW1lKSkgcmV0dXJuIHRydWU7XG4gIGlmICghKGZpZWxkcyBpbnN0YW5jZW9mIFR5cGVFcnJvcikpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgbWVzc2FnZSA9IGVycm9yRmllbGQoZmllbGRzLCAnbWVzc2FnZScpO1xuICByZXR1cm4gdHlwZW9mIG1lc3NhZ2UgPT09ICdzdHJpbmcnICYmIEZFVENIX0ZBSUxVUkUudGVzdChtZXNzYWdlKTtcbn1cblxuZnVuY3Rpb24gaGFzTmV0d29ya0NvZGUoY29kZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZW9mIGNvZGUgPT09ICdzdHJpbmcnICYmIE5FVFdPUktfQ09ERVMuaGFzKGNvZGUpO1xufVxuXG5mdW5jdGlvbiBudW1iZXJGaWVsZChmaWVsZHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6ICdzdGF0dXMnIHwgJ3N0YXR1c0NvZGUnKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdmFsdWUgPSBlcnJvckZpZWxkKGZpZWxkcywga2V5KTtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc1dhaXQodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHZhbHVlKSAmJiB2YWx1ZSA+PSAwO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ /** Caller accessors shadow farther data. Only the captured platform name getter may run. */
2
+ export declare function errorField(value: unknown, key: string): unknown;
@@ -0,0 +1,32 @@
1
+ /** A finite inheritance allowance for ordinary Error subclasses and metadata. */
2
+ const MAX_ERROR_FIELD_DEPTH = 32;
3
+ // Capture the platform intrinsic once; never call a later caller replacement.
4
+ const DOM_EXCEPTION_PROTOTYPE = typeof DOMException === 'function' ? DOMException.prototype : undefined;
5
+ const DOM_EXCEPTION_NAME = DOM_EXCEPTION_PROTOTYPE
6
+ ? Object.getOwnPropertyDescriptor(DOM_EXCEPTION_PROTOTYPE, 'name')?.get
7
+ : undefined;
8
+ const APPLY_INTRINSIC = Reflect.apply;
9
+ /** Caller accessors shadow farther data. Only the captured platform name getter may run. */
10
+ export function errorField(value, key) {
11
+ if (value === null || (typeof value !== 'object' && typeof value !== 'function'))
12
+ return undefined;
13
+ let current = value;
14
+ for (let depth = 0; current !== null && depth < MAX_ERROR_FIELD_DEPTH; depth++) {
15
+ const property = Object.getOwnPropertyDescriptor(current, key);
16
+ if (property) {
17
+ if (Object.prototype.hasOwnProperty.call(property, 'value'))
18
+ return property.value;
19
+ if (key === 'name' &&
20
+ current === DOM_EXCEPTION_PROTOTYPE &&
21
+ DOM_EXCEPTION_NAME &&
22
+ property.get === DOM_EXCEPTION_NAME) {
23
+ // The intrinsic brand-checks its receiver, refusing forged prototypes and proxies.
24
+ return APPLY_INTRINSIC(DOM_EXCEPTION_NAME, value, []);
25
+ }
26
+ return undefined;
27
+ }
28
+ current = Object.getPrototypeOf(current);
29
+ }
30
+ return undefined;
31
+ }
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JGaWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYXR0ZW1wdC9lcnJvckZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlGQUFpRjtBQUNqRixNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztBQUVqQyw4RUFBOEU7QUFDOUUsTUFBTSx1QkFBdUIsR0FBRyxPQUFPLFlBQVksS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN4RyxNQUFNLGtCQUFrQixHQUFHLHVCQUF1QjtJQUNoRCxDQUFDLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixFQUFFLE1BQU0sQ0FBQyxFQUFFLEdBQUc7SUFDdkUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNkLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFFdEMsNEZBQTRGO0FBQzVGLE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBYyxFQUFFLEdBQVc7SUFDcEQsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ25HLElBQUksT0FBTyxHQUFrQixLQUFLLENBQUM7SUFDbkMsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsT0FBTyxLQUFLLElBQUksSUFBSSxLQUFLLEdBQUcscUJBQXFCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUMvRSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQy9ELElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDO2dCQUFFLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQztZQUNuRixJQUNFLEdBQUcsS0FBSyxNQUFNO2dCQUNkLE9BQU8sS0FBSyx1QkFBdUI7Z0JBQ25DLGtCQUFrQjtnQkFDbEIsUUFBUSxDQUFDLEdBQUcsS0FBSyxrQkFBa0IsRUFDbkMsQ0FBQztnQkFDRCxtRkFBbUY7Z0JBQ25GLE9BQU8sZUFBZSxDQUFDLGtCQUFrQixFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN4RCxDQUFDO1lBQ0QsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE9BQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEEgZmluaXRlIGluaGVyaXRhbmNlIGFsbG93YW5jZSBmb3Igb3JkaW5hcnkgRXJyb3Igc3ViY2xhc3NlcyBhbmQgbWV0YWRhdGEuICovXG5jb25zdCBNQVhfRVJST1JfRklFTERfREVQVEggPSAzMjtcblxuLy8gQ2FwdHVyZSB0aGUgcGxhdGZvcm0gaW50cmluc2ljIG9uY2U7IG5ldmVyIGNhbGwgYSBsYXRlciBjYWxsZXIgcmVwbGFjZW1lbnQuXG5jb25zdCBET01fRVhDRVBUSU9OX1BST1RPVFlQRSA9IHR5cGVvZiBET01FeGNlcHRpb24gPT09ICdmdW5jdGlvbicgPyBET01FeGNlcHRpb24ucHJvdG90eXBlIDogdW5kZWZpbmVkO1xuY29uc3QgRE9NX0VYQ0VQVElPTl9OQU1FID0gRE9NX0VYQ0VQVElPTl9QUk9UT1RZUEVcbiAgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKERPTV9FWENFUFRJT05fUFJPVE9UWVBFLCAnbmFtZScpPy5nZXRcbiAgOiB1bmRlZmluZWQ7XG5jb25zdCBBUFBMWV9JTlRSSU5TSUMgPSBSZWZsZWN0LmFwcGx5O1xuXG4vKiogQ2FsbGVyIGFjY2Vzc29ycyBzaGFkb3cgZmFydGhlciBkYXRhLiBPbmx5IHRoZSBjYXB0dXJlZCBwbGF0Zm9ybSBuYW1lIGdldHRlciBtYXkgcnVuLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVycm9yRmllbGQodmFsdWU6IHVua25vd24sIGtleTogc3RyaW5nKTogdW5rbm93biB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBsZXQgY3VycmVudDogb2JqZWN0IHwgbnVsbCA9IHZhbHVlO1xuICBmb3IgKGxldCBkZXB0aCA9IDA7IGN1cnJlbnQgIT09IG51bGwgJiYgZGVwdGggPCBNQVhfRVJST1JfRklFTERfREVQVEg7IGRlcHRoKyspIHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY3VycmVudCwga2V5KTtcbiAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocHJvcGVydHksICd2YWx1ZScpKSByZXR1cm4gcHJvcGVydHkudmFsdWU7XG4gICAgICBpZiAoXG4gICAgICAgIGtleSA9PT0gJ25hbWUnICYmXG4gICAgICAgIGN1cnJlbnQgPT09IERPTV9FWENFUFRJT05fUFJPVE9UWVBFICYmXG4gICAgICAgIERPTV9FWENFUFRJT05fTkFNRSAmJlxuICAgICAgICBwcm9wZXJ0eS5nZXQgPT09IERPTV9FWENFUFRJT05fTkFNRVxuICAgICAgKSB7XG4gICAgICAgIC8vIFRoZSBpbnRyaW5zaWMgYnJhbmQtY2hlY2tzIGl0cyByZWNlaXZlciwgcmVmdXNpbmcgZm9yZ2VkIHByb3RvdHlwZXMgYW5kIHByb3hpZXMuXG4gICAgICAgIHJldHVybiBBUFBMWV9JTlRSSU5TSUMoRE9NX0VYQ0VQVElPTl9OQU1FLCB2YWx1ZSwgW10pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY3VycmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihjdXJyZW50KTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuIl19
@@ -0,0 +1,56 @@
1
+ import type { LogAddress } from 'foottrace';
2
+ import type { TerminalFailureContext } from '../errors/terminalFailure.js';
3
+ export type CaptureChannelStatus = 'captured' | 'disabled' | 'partial' | 'failed' | 'unknown';
4
+ export type CaptureLimitation = 'tracked-state-only' | 'final-attempt-views' | 'read-sources-not-collected' | 'child-scopes-not-attested' | 'storage-not-attested' | 'resumed-segment' | 'redacted-export' | 'redaction-active' | 'custom-scope' | 'read-retention-failed' | 'commit-retention-failed' | 'attention-omitted' | 'recorder-snapshot-failed' | 'identity-omitted' | 'execution-broken' | 'modes-unavailable';
5
+ /** A producer acknowledgement, not engine inspection of a recorder's implementation. */
6
+ export interface RecorderCaptureAcknowledgement {
7
+ readonly version: 1;
8
+ readonly runId: string;
9
+ readonly control: 'captured' | 'partial' | 'unknown';
10
+ }
11
+ /** Engine observation of ONE root-log segment. Never a durable or whole-workflow completeness claim. */
12
+ export interface NativeCaptureNote {
13
+ readonly version: 1;
14
+ readonly runId: string;
15
+ readonly scope: 'root-log';
16
+ readonly logAddress: LogAddress;
17
+ /** Half-open offsets in this log. A same-executor resume starts at the previous end. */
18
+ readonly commits: {
19
+ readonly from: number;
20
+ readonly to: number;
21
+ };
22
+ readonly boundary: {
23
+ readonly status: 'running' | 'completed' | 'paused' | 'failed' | 'cancelled';
24
+ readonly failure?: TerminalFailureContext;
25
+ };
26
+ readonly modes: {
27
+ readonly readTracking: 'full' | 'summary' | 'off' | 'unknown';
28
+ readonly writeTracking: 'full' | 'summary' | 'off' | 'unknown';
29
+ readonly commitValues: 'full' | 'delta' | 'unknown';
30
+ readonly writeProvenance: 'off' | 'reads-prefix' | 'unknown';
31
+ };
32
+ readonly channels: {
33
+ readonly reads: CaptureChannelStatus;
34
+ readonly writes: CaptureChannelStatus;
35
+ readonly attention: CaptureChannelStatus;
36
+ readonly control: CaptureChannelStatus;
37
+ readonly readSources: 'not-collected';
38
+ };
39
+ readonly persistence: 'memory-only';
40
+ readonly limitations: readonly CaptureLimitation[];
41
+ }
42
+ /** @internal Bounded facts collected at native funnels; no values, key names, recorder discovery or tree walk. */
43
+ export declare class NativeCapture {
44
+ readonly runId: string;
45
+ readonly logAddress: LogAddress;
46
+ readonly from: number;
47
+ private readonly gaps;
48
+ private boundary;
49
+ private readonly modes;
50
+ constructor(runId: string, logAddress: LogAddress, from: number, modes: NativeCaptureNote['modes']);
51
+ limit(gap: CaptureLimitation): void;
52
+ end(status: NativeCaptureNote['boundary']['status'], failure?: TerminalFailureContext): void;
53
+ snapshot(to: number, control?: CaptureChannelStatus, redacted?: boolean): NativeCaptureNote;
54
+ }
55
+ /** Stored/recorder metadata is untrusted. Read data properties only, never getters or arbitrary strings. */
56
+ export declare function copyCaptureAcknowledgement(value: unknown): RecorderCaptureAcknowledgement | undefined;
@@ -0,0 +1,102 @@
1
+ /** @internal Bounded facts collected at native funnels; no values, key names, recorder discovery or tree walk. */
2
+ export class NativeCapture {
3
+ runId;
4
+ logAddress;
5
+ from;
6
+ gaps = new Set([
7
+ 'tracked-state-only',
8
+ 'final-attempt-views',
9
+ 'read-sources-not-collected',
10
+ 'child-scopes-not-attested',
11
+ 'storage-not-attested',
12
+ ]);
13
+ boundary = { status: 'running' };
14
+ modes;
15
+ constructor(runId, logAddress, from, modes) {
16
+ this.runId = runId;
17
+ this.logAddress = logAddress;
18
+ this.from = from;
19
+ const retention = (value) => value === 'full' || value === 'summary' || value === 'off' ? value : 'unknown';
20
+ this.modes = {
21
+ readTracking: retention(modes.readTracking),
22
+ writeTracking: retention(modes.writeTracking),
23
+ commitValues: modes.commitValues === 'full' || modes.commitValues === 'delta' ? modes.commitValues : 'unknown',
24
+ writeProvenance: modes.writeProvenance === 'off' || modes.writeProvenance === 'reads-prefix' ? modes.writeProvenance : 'unknown',
25
+ };
26
+ if (Object.values(this.modes).includes('unknown'))
27
+ this.limit('modes-unavailable');
28
+ }
29
+ limit(gap) {
30
+ this.gaps.add(gap);
31
+ }
32
+ end(status, failure) {
33
+ if (this.boundary.status !== 'running')
34
+ return;
35
+ if (failure?.stage && failure.stage.runtimeStageId.length > 1024) {
36
+ this.limit('identity-omitted');
37
+ failure = Object.freeze({ category: failure.category });
38
+ }
39
+ this.boundary = { status, ...(failure && { failure }) };
40
+ }
41
+ snapshot(to, control = 'unknown', redacted = false) {
42
+ const gaps = new Set(this.gaps);
43
+ if (redacted)
44
+ gaps.add('redacted-export');
45
+ const failed = gaps.has('commit-retention-failed');
46
+ const custom = gaps.has('custom-scope') || gaps.has('modes-unavailable');
47
+ return Object.freeze({
48
+ version: 1,
49
+ runId: this.runId,
50
+ scope: 'root-log',
51
+ logAddress: Object.freeze({
52
+ logRunId: this.logAddress.logRunId,
53
+ drillPath: Object.freeze([...this.logAddress.drillPath]),
54
+ }),
55
+ commits: Object.freeze({ from: this.from, to }),
56
+ boundary: Object.freeze({ ...this.boundary }),
57
+ modes: Object.freeze({
58
+ readTracking: this.modes.readTracking,
59
+ writeTracking: this.modes.writeTracking,
60
+ commitValues: this.modes.commitValues,
61
+ writeProvenance: this.modes.writeProvenance,
62
+ }),
63
+ channels: Object.freeze({
64
+ reads: this.modes.readTracking === 'off'
65
+ ? 'disabled'
66
+ : gaps.has('read-retention-failed')
67
+ ? 'failed'
68
+ : custom
69
+ ? 'unknown'
70
+ : 'captured',
71
+ writes: this.modes.writeTracking === 'off' ? 'disabled' : failed ? 'failed' : custom ? 'unknown' : 'captured',
72
+ attention: failed || gaps.has('attention-omitted') ? 'partial' : custom ? 'unknown' : 'captured',
73
+ control: gaps.has('recorder-snapshot-failed') ? 'failed' : control,
74
+ readSources: 'not-collected',
75
+ }),
76
+ persistence: 'memory-only',
77
+ limitations: Object.freeze([...gaps]),
78
+ });
79
+ }
80
+ }
81
+ /** Stored/recorder metadata is untrusted. Read data properties only, never getters or arbitrary strings. */
82
+ export function copyCaptureAcknowledgement(value) {
83
+ try {
84
+ if (!value || typeof value !== 'object' || Object.getPrototypeOf(value) !== Object.prototype)
85
+ return undefined;
86
+ const data = (key) => Object.getOwnPropertyDescriptor(value, key)?.value;
87
+ const version = data('version');
88
+ const runId = data('runId');
89
+ const control = data('control');
90
+ if (version !== 1 ||
91
+ typeof runId !== 'string' ||
92
+ runId.length === 0 ||
93
+ runId.length > 2048 ||
94
+ !['captured', 'partial', 'unknown'].includes(control))
95
+ return undefined;
96
+ return Object.freeze({ version, runId, control });
97
+ }
98
+ catch {
99
+ return undefined;
100
+ }
101
+ }
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlQ292ZXJhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NhcHR1cmUvbmF0aXZlQ292ZXJhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMkRBLGtIQUFrSDtBQUNsSCxNQUFNLE9BQU8sYUFBYTtJQWFiO0lBQ0E7SUFDQTtJQWRNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBb0I7UUFDakQsb0JBQW9CO1FBQ3BCLHFCQUFxQjtRQUNyQiw0QkFBNEI7UUFDNUIsMkJBQTJCO1FBQzNCLHNCQUFzQjtLQUN2QixDQUFDLENBQUM7SUFFSyxRQUFRLEdBQWtDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQ3ZELEtBQUssQ0FBNkI7SUFFbkQsWUFDVyxLQUFhLEVBQ2IsVUFBc0IsRUFDdEIsSUFBWSxFQUNyQixLQUFpQztRQUh4QixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixTQUFJLEdBQUosSUFBSSxDQUFRO1FBR3JCLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FDbkMsS0FBSyxLQUFLLE1BQU0sSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxLQUFLLEdBQUc7WUFDWCxZQUFZLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDM0MsYUFBYSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1lBQzdDLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWSxLQUFLLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUztZQUM5RyxlQUFlLEVBQ2IsS0FBSyxDQUFD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QUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQ2pGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hDLElBQ0UsT0FBTyxLQUFLLENBQUM7WUFDYixPQUFPLEtBQUssS0FBSyxRQUFRO1lBQ3pCLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUNsQixLQUFLLENBQUMsTUFBTSxHQUFHLElBQUk7WUFDbkIsQ0FBQyxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUVyRCxPQUFPLFNBQVMsQ0FBQztRQUNuQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBMb2dBZGRyZXNzIH0gZnJvbSAnZm9vdHRyYWNlJztcblxuaW1wb3J0IHR5cGUgeyBUZXJtaW5hbEZhaWx1cmVDb250ZXh0IH0gZnJvbSAnLi4vZXJyb3JzL3Rlcm1pbmFsRmFpbHVyZS5qcyc7XG5cbmV4cG9ydCB0eXBlIENhcHR1cmVDaGFubmVsU3RhdHVzID0gJ2NhcHR1cmVkJyB8ICdkaXNhYmxlZCcgfCAncGFydGlhbCcgfCAnZmFpbGVkJyB8ICd1bmtub3duJztcbmV4cG9ydCB0eXBlIENhcHR1cmVMaW1pdGF0aW9uID1cbiAgfCAndHJhY2tlZC1zdGF0ZS1vbmx5J1xuICB8ICdmaW5hbC1hdHRlbXB0LXZpZXdzJ1xuICB8ICdyZWFkLXNvdXJjZXMtbm90LWNvbGxlY3RlZCdcbiAgfCAnY2hpbGQtc2NvcGVzLW5vdC1hdHRlc3RlZCdcbiAgfCAnc3RvcmFnZS1ub3QtYXR0ZXN0ZWQnXG4gIHwgJ3Jlc3VtZWQtc2VnbWVudCdcbiAgfCAncmVkYWN0ZWQtZXhwb3J0J1xuICB8ICdyZWRhY3Rpb24tYWN0aXZlJ1xuICB8ICdjdXN0b20tc2NvcGUnXG4gIHwgJ3JlYWQtcmV0ZW50aW9uLWZhaWxlZCdcbiAgfCAnY29tbWl0LXJldGVudGlvbi1mYWlsZWQnXG4gIHwgJ2F0dGVudGlvbi1vbWl0dGVkJ1xuICB8ICdyZWNvcmRlci1zbmFwc2hvdC1mYWlsZWQnXG4gIHwgJ2lkZW50aXR5LW9taXR0ZWQnXG4gIHwgJ2V4ZWN1dGlvbi1icm9rZW4nXG4gIHwgJ21vZGVzLXVuYXZhaWxhYmxlJztcblxuLyoqIEEgcHJvZHVjZXIgYWNrbm93bGVkZ2VtZW50LCBub3QgZW5naW5lIGluc3BlY3Rpb24gb2YgYSByZWNvcmRlcidzIGltcGxlbWVudGF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWNvcmRlckNhcHR1cmVBY2tub3dsZWRnZW1lbnQge1xuICByZWFkb25seSB2ZXJzaW9uOiAxO1xuICByZWFkb25seSBydW5JZDogc3RyaW5nO1xuICByZWFkb25seSBjb250cm9sOiAnY2FwdHVyZWQnIHwgJ3BhcnRpYWwnIHwgJ3Vua25vd24nO1xufVxuXG4vKiogRW5naW5lIG9ic2VydmF0aW9uIG9mIE9ORSByb290LWxvZyBzZWdtZW50LiBOZXZlciBhIGR1cmFibGUgb3Igd2hvbGUtd29ya2Zsb3cgY29tcGxldGVuZXNzIGNsYWltLiAqL1xuZXhwb3J0IGludGVyZmFjZSBOYXRpdmVDYXB0dXJlTm90ZSB7XG4gIHJlYWRvbmx5IHZlcnNpb246IDE7XG4gIHJlYWRvbmx5IHJ1bklkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNjb3BlOiAncm9vdC1sb2cnO1xuICByZWFkb25seSBsb2dBZGRyZXNzOiBMb2dBZGRyZXNzO1xuICAvKiogSGFsZi1vcGVuIG9mZnNldHMgaW4gdGhpcyBsb2cuIEEgc2FtZS1leGVjdXRvciByZXN1bWUgc3RhcnRzIGF0IHRoZSBwcmV2aW91cyBlbmQuICovXG4gIHJlYWRvbmx5IGNvbW1pdHM6IHsgcmVhZG9ubHkgZnJvbTogbnVtYmVyOyByZWFkb25seSB0bzogbnVtYmVyIH07XG4gIHJlYWRvbmx5IGJvdW5kYXJ5OiB7XG4gICAgcmVhZG9ubHkgc3RhdHVzOiAncnVubmluZycgfCAnY29tcGxldGVkJyB8ICdwYXVzZWQnIHwgJ2ZhaWxlZCcgfCAnY2FuY2VsbGVkJztcbiAgICByZWFkb25seSBmYWlsdXJlPzogVGVybWluYWxGYWlsdXJlQ29udGV4dDtcbiAgfTtcbiAgcmVhZG9ubHkgbW9kZXM6IHtcbiAgICByZWFkb25seSByZWFkVHJhY2tpbmc6ICdmdWxsJyB8ICdzdW1tYXJ5JyB8ICdvZmYnIHwgJ3Vua25vd24nO1xuICAgIHJlYWRvbmx5IHdyaXRlVHJhY2tpbmc6ICdmdWxsJyB8ICdzdW1tYXJ5JyB8ICdvZmYnIHwgJ3Vua25vd24nO1xuICAgIHJlYWRvbmx5IGNvbW1pdFZhbHVlczogJ2Z1bGwnIHwgJ2RlbHRhJyB8ICd1bmtub3duJztcbiAgICByZWFkb25seSB3cml0ZVByb3ZlbmFuY2U6ICdvZmYnIHwgJ3JlYWRzLXByZWZpeCcgfCAndW5rbm93bic7XG4gIH07XG4gIHJlYWRvbmx5IGNoYW5uZWxzOiB7XG4gICAgcmVhZG9ubHkgcmVhZHM6IENhcHR1cmVDaGFubmVsU3RhdHVzO1xuICAgIHJlYWRvbmx5IHdyaXRlczogQ2FwdHVyZUNoYW5uZWxTdGF0dXM7XG4gICAgcmVhZG9ubHkgYXR0ZW50aW9uOiBDYXB0dXJlQ2hhbm5lbFN0YXR1cztcbiAgICByZWFkb25seSBjb250cm9sOiBDYXB0dXJlQ2hhbm5lbFN0YXR1cztcbiAgICByZWFkb25seSByZWFkU291cmNlczogJ25vdC1jb2xsZWN0ZWQnO1xuICB9O1xuICByZWFkb25seSBwZXJzaXN0ZW5jZTogJ21lbW9yeS1vbmx5JztcbiAgcmVhZG9ubHkgbGltaXRhdGlvbnM6IHJlYWRvbmx5IENhcHR1cmVMaW1pdGF0aW9uW107XG59XG5cbi8qKiBAaW50ZXJuYWwgQm91bmRlZCBmYWN0cyBjb2xsZWN0ZWQgYXQgbmF0aXZlIGZ1bm5lbHM7IG5vIHZhbHVlcywga2V5IG5hbWVzLCByZWNvcmRlciBkaXNjb3Zlcnkgb3IgdHJlZSB3YWxrLiAqL1xuZXhwb3J0IGNsYXNzIE5hdGl2ZUNhcHR1cmUge1xuICBwcml2YXRlIHJlYWRvbmx5IGdhcHMgPSBuZXcgU2V0PENhcHR1cmVMaW1pdGF0aW9uPihbXG4gICAgJ3RyYWNrZWQtc3RhdGUtb25seScsXG4gICAgJ2ZpbmFsLWF0dGVtcHQtdmlld3MnLFxuICAgICdyZWFkLXNvdXJjZXMtbm90LWNvbGxlY3RlZCcsXG4gICAgJ2NoaWxkLXNjb3Blcy1ub3QtYXR0ZXN0ZWQnLFxuICAgICdzdG9yYWdlLW5vdC1hdHRlc3RlZCcsXG4gIF0pO1xuXG4gIHByaXZhdGUgYm91bmRhcnk6IE5hdGl2ZUNhcHR1cmVOb3RlWydib3VuZGFyeSddID0geyBzdGF0dXM6ICdydW5uaW5nJyB9O1xuICBwcml2YXRlIHJlYWRvbmx5IG1vZGVzOiBOYXRpdmVDYXB0dXJlTm90ZVsnbW9kZXMnXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBydW5JZDogc3RyaW5nLFxuICAgIHJlYWRvbmx5IGxvZ0FkZHJlc3M6IExvZ0FkZHJlc3MsXG4gICAgcmVhZG9ubHkgZnJvbTogbnVtYmVyLFxuICAgIG1vZGVzOiBOYXRpdmVDYXB0dXJlTm90ZVsnbW9kZXMnXSxcbiAgKSB7XG4gICAgY29uc3QgcmV0ZW50aW9uID0gKHZhbHVlOiB1bmtub3duKSA9PlxuICAgICAgdmFsdWUgPT09ICdmdWxsJyB8fCB2YWx1ZSA9PT0gJ3N1bW1hcnknIHx8IHZhbHVlID09PSAnb2ZmJyA/IHZhbHVlIDogJ3Vua25vd24nO1xuICAgIHRoaXMubW9kZXMgPSB7XG4gICAgICByZWFkVHJhY2tpbmc6IHJldGVudGlvbihtb2Rlcy5yZWFkVHJhY2tpbmcpLFxuICAgICAgd3JpdGVUcmFja2luZzogcmV0ZW50aW9uKG1vZGVzLndyaXRlVHJhY2tpbmcpLFxuICAgICAgY29tbWl0VmFsdWVzOiBtb2Rlcy5jb21taXRWYWx1ZXMgPT09ICdmdWxsJyB8fCBtb2Rlcy5jb21taXRWYWx1ZXMgPT09ICdkZWx0YScgPyBtb2Rlcy5jb21taXRWYWx1ZXMgOiAndW5rbm93bicsXG4gICAgICB3cml0ZVByb3ZlbmFuY2U6XG4gICAgICAgIG1vZGVzLndyaXRlUHJvdmVuYW5jZSA9PT0gJ29mZicgfHwgbW9kZXMud3JpdGVQcm92ZW5hbmNlID09PSAncmVhZHMtcHJlZml4JyA/IG1vZGVzLndyaXRlUHJvdmVuYW5jZSA6ICd1bmtub3duJyxcbiAgICB9O1xuICAgIGlmIChPYmplY3QudmFsdWVzKHRoaXMubW9kZXMpLmluY2x1ZGVzKCd1bmtub3duJykpIHRoaXMubGltaXQoJ21vZGVzLXVuYXZhaWxhYmxlJyk7XG4gIH1cblxuICBsaW1pdChnYXA6IENhcHR1cmVMaW1pdGF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5nYXBzLmFkZChnYXApO1xuICB9XG5cbiAgZW5kKHN0YXR1czogTmF0aXZlQ2FwdHVyZU5vdGVbJ2JvdW5kYXJ5J11bJ3N0YXR1cyddLCBmYWlsdXJlPzogVGVybWluYWxGYWlsdXJlQ29udGV4dCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmJvdW5kYXJ5LnN0YXR1cyAhPT0gJ3J1bm5pbmcnKSByZXR1cm47XG4gICAgaWYgKGZhaWx1cmU/LnN0YWdlICYmIGZhaWx1cmUuc3RhZ2UucnVudGltZVN0YWdlSWQubGVuZ3RoID4gMTAyNCkge1xuICAgICAgdGhpcy5saW1pdCgnaWRlbnRpdHktb21pdHRlZCcpO1xuICAgICAgZmFpbHVyZSA9IE9iamVjdC5mcmVlemUoeyBjYXRlZ29yeTogZmFpbHVyZS5jYXRlZ29yeSB9KTtcbiAgICB9XG4gICAgdGhpcy5ib3VuZGFyeSA9IHsgc3RhdHVzLCAuLi4oZmFpbHVyZSAmJiB7IGZhaWx1cmUgfSkgfTtcbiAgfVxuXG4gIHNuYXBzaG90KHRvOiBudW1iZXIsIGNvbnRyb2w6IENhcHR1cmVDaGFubmVsU3RhdHVzID0gJ3Vua25vd24nLCByZWRhY3RlZCA9IGZhbHNlKTogTmF0aXZlQ2FwdHVyZU5vdGUge1xuICAgIGNvbnN0IGdhcHMgPSBuZXcgU2V0KHRoaXMuZ2Fwcyk7XG4gICAgaWYgKHJlZGFjdGVkKSBnYXBzLmFkZCgncmVkYWN0ZWQtZXhwb3J0Jyk7XG4gICAgY29uc3QgZmFpbGVkID0gZ2Fwcy5oYXMoJ2NvbW1pdC1yZXRlbnRpb24tZmFpbGVkJyk7XG4gICAgY29uc3QgY3VzdG9tID0gZ2Fwcy5oYXMoJ2N1c3RvbS1zY29wZScpIHx8IGdhcHMuaGFzKCdtb2Rlcy11bmF2YWlsYWJsZScpO1xuICAgIHJldHVybiBPYmplY3QuZnJlZXplKHtcbiAgICAgIHZlcnNpb246IDEsXG4gICAgICBydW5JZDogdGhpcy5ydW5JZCxcbiAgICAgIHNjb3BlOiAncm9vdC1sb2cnLFxuICAgICAgbG9nQWRkcmVzczogT2JqZWN0LmZyZWV6ZSh7XG4gICAgICAgIGxvZ1J1bklkOiB0aGlzLmxvZ0FkZHJlc3MubG9nUnVuSWQsXG4gICAgICAgIGRyaWxsUGF0aDogT2JqZWN0LmZyZWV6ZShbLi4udGhpcy5sb2dBZGRyZXNzLmRyaWxsUGF0aF0pLFxuICAgICAgfSksXG4gICAgICBjb21taXRzOiBPYmplY3QuZnJlZXplKHsgZnJvbTogdGhpcy5mcm9tLCB0byB9KSxcbiAgICAgIGJvdW5kYXJ5OiBPYmplY3QuZnJlZXplKHsgLi4udGhpcy5ib3VuZGFyeSB9KSxcbiAgICAgIG1vZGVzOiBPYmplY3QuZnJlZXplKHtcbiAgICAgICAgcmVhZFRyYWNraW5nOiB0aGlzLm1vZGVzLnJlYWRUcmFja2luZyxcbiAgICAgICAgd3JpdGVUcmFja2luZzogdGhpcy5tb2Rlcy53cml0ZVRyYWNraW5nLFxuICAgICAgICBjb21taXRWYWx1ZXM6IHRoaXMubW9kZXMuY29tbWl0VmFsdWVzLFxuICAgICAgICB3cml0ZVByb3ZlbmFuY2U6IHRoaXMubW9kZXMud3JpdGVQcm92ZW5hbmNlLFxuICAgICAgfSksXG4gICAgICBjaGFubmVsczogT2JqZWN0LmZyZWV6ZSh7XG4gICAgICAgIHJlYWRzOlxuICAgICAgICAgIHRoaXMubW9kZXMucmVhZFRyYWNraW5nID09PSAnb2ZmJ1xuICAgICAgICAgICAgPyAnZGlzYWJsZWQnXG4gICAgICAgICAgICA6IGdhcHMuaGFzKCdyZWFkLXJldGVudGlvbi1mYWlsZWQnKVxuICAgICAgICAgICAgPyAnZmFpbGVkJ1xuICAgICAgICAgICAgOiBjdXN0b21cbiAgICAgICAgICAgID8gJ3Vua25vd24nXG4gICAgICAgICAgICA6ICdjYXB0dXJlZCcsXG4gICAgICAgIHdyaXRlczogdGhpcy5tb2Rlcy53cml0ZVRyYWNraW5nID09PSAnb2ZmJyA/ICdkaXNhYmxlZCcgOiBmYWlsZWQgPyAnZmFpbGVkJyA6IGN1c3RvbSA/ICd1bmtub3duJyA6ICdjYXB0dXJlZCcsXG4gICAgICAgIGF0dGVudGlvbjogZmFpbGVkIHx8IGdhcHMuaGFzKCdhdHRlbnRpb24tb21pdHRlZCcpID8gJ3BhcnRpYWwnIDogY3VzdG9tID8gJ3Vua25vd24nIDogJ2NhcHR1cmVkJyxcbiAgICAgICAgY29udHJvbDogZ2Fwcy5oYXMoJ3JlY29yZGVyLXNuYXBzaG90LWZhaWxlZCcpID8gJ2ZhaWxlZCcgOiBjb250cm9sLFxuICAgICAgICByZWFkU291cmNlczogJ25vdC1jb2xsZWN0ZWQnLFxuICAgICAgfSksXG4gICAgICBwZXJzaXN0ZW5jZTogJ21lbW9yeS1vbmx5JyxcbiAgICAgIGxpbWl0YXRpb25zOiBPYmplY3QuZnJlZXplKFsuLi5nYXBzXSksXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqIFN0b3JlZC9yZWNvcmRlciBtZXRhZGF0YSBpcyB1bnRydXN0ZWQuIFJlYWQgZGF0YSBwcm9wZXJ0aWVzIG9ubHksIG5ldmVyIGdldHRlcnMgb3IgYXJiaXRyYXJ5IHN0cmluZ3MuICovXG5leHBvcnQgZnVuY3Rpb24gY29weUNhcHR1cmVBY2tub3dsZWRnZW1lbnQodmFsdWU6IHVua25vd24pOiBSZWNvcmRlckNhcHR1cmVBY2tub3dsZWRnZW1lbnQgfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpICE9PSBPYmplY3QucHJvdG90eXBlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGRhdGEgPSAoa2V5OiBzdHJpbmcpID0+IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodmFsdWUsIGtleSk/LnZhbHVlO1xuICAgIGNvbnN0IHZlcnNpb24gPSBkYXRhKCd2ZXJzaW9uJyk7XG4gICAgY29uc3QgcnVuSWQgPSBkYXRhKCdydW5JZCcpO1xuICAgIGNvbnN0IGNvbnRyb2wgPSBkYXRhKCdjb250cm9sJyk7XG4gICAgaWYgKFxuICAgICAgdmVyc2lvbiAhPT0gMSB8fFxuICAgICAgdHlwZW9mIHJ1bklkICE9PSAnc3RyaW5nJyB8fFxuICAgICAgcnVuSWQubGVuZ3RoID09PSAwIHx8XG4gICAgICBydW5JZC5sZW5ndGggPiAyMDQ4IHx8XG4gICAgICAhWydjYXB0dXJlZCcsICdwYXJ0aWFsJywgJ3Vua25vd24nXS5pbmNsdWRlcyhjb250cm9sKVxuICAgIClcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIE9iamVjdC5mcmVlemUoeyB2ZXJzaW9uLCBydW5JZCwgY29udHJvbCB9KTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
@@ -14,6 +14,7 @@
14
14
  import type { CommitPhase, EmitSourcePosition, UntrackedSource } from 'foottrace';
15
15
  import type { EventLog, SharedMemory } from 'foottrace/write';
16
16
  import type { AttemptContext, AttemptRecord, AttemptSummary, LateWrite } from '../attempt/types.js';
17
+ import type { NativeCapture } from '../capture/nativeCoverage.js';
17
18
  import type { StructuredErrorInfo } from '../errors/errorInfo.js';
18
19
  import { type TerminalFailureContext, NativeFailureState } from '../errors/terminalFailure.js';
19
20
  import { type DiagnosticChannel, DiagnosticCollector } from './DiagnosticCollector.js';
@@ -57,6 +58,8 @@ export declare class StageContext {
57
58
  private policy;
58
59
  /** The emitting frame's logical leg, never the mutable executor's current leg. */
59
60
  private emitRunId?;
61
+ /** The native root-log collector; copied to same-log frames, never child runtimes. */
62
+ capture?: NativeCapture;
60
63
  stageName: string;
61
64
  /** Unique stage identifier from the builder (matches spec node id). */
62
65
  stageId: string;
@@ -342,6 +345,7 @@ export declare class StageContext {
342
345
  * `'summary'` records a cheap marker, `'off'` records nothing.
343
346
  */
344
347
  getValue(path: string[], key?: string, description?: string): unknown;
348
+ private readRetainedValue;
345
349
  /**
346
350
  * How many tracked reads of this frame read a value the run's rule selects
347
351
  * (a key it masks whole, or one with secret fields). A boundary that maps
@@ -455,6 +459,7 @@ export declare class StageContext {
455
459
  * reads them post-run for the execution-tree snapshot.
456
460
  */
457
461
  commit(phase?: CommitPhase): void;
462
+ private commitRetained;
458
463
  /** Whether this frame has committed — a call's record arriving after it is late (P2, `ScopeFacade · call`). */
459
464
  get committed(): boolean;
460
465
  /**