footprintjs 9.46.1 → 9.47.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.
- package/AGENTS.md +4 -3
- package/CLAUDE.md +4 -4
- package/README.md +1 -1
- package/dist/advanced.js +95 -90
- package/dist/esm/advanced.d.ts +16 -10
- package/dist/esm/advanced.js +14 -9
- package/dist/esm/index.d.ts +4 -2
- package/dist/esm/index.js +5 -3
- package/dist/esm/lib/memory/EventLog.d.ts +1 -1
- package/dist/esm/lib/memory/EventLog.js +2 -2
- package/dist/esm/lib/memory/scrub.d.ts +3 -1
- package/dist/esm/lib/memory/scrub.js +4 -2
- package/dist/esm/lib/memory/verbs.d.ts +1 -1
- package/dist/esm/lib/memory/verbs.js +2 -2
- package/dist/esm/trace.d.ts +2 -0
- package/dist/esm/trace.js +3 -2
- package/dist/esm/write.d.ts +47 -0
- package/dist/esm/write.js +46 -0
- package/dist/index.js +5 -3
- package/dist/lib/memory/EventLog.js +2 -2
- package/dist/lib/memory/scrub.js +4 -2
- package/dist/lib/memory/verbs.js +2 -2
- package/dist/trace.js +6 -4
- package/dist/types/advanced.d.ts +16 -10
- package/dist/types/index.d.ts +4 -2
- package/dist/types/lib/memory/EventLog.d.ts +1 -1
- package/dist/types/lib/memory/scrub.d.ts +3 -1
- package/dist/types/lib/memory/verbs.d.ts +1 -1
- package/dist/types/trace.d.ts +2 -0
- package/dist/types/write.d.ts +47 -0
- package/dist/write.js +52 -0
- package/package.json +15 -1
package/dist/esm/trace.js
CHANGED
|
@@ -47,9 +47,10 @@ export { walkSubflowSpec } from './lib/engine/walkSubflowSpec.js';
|
|
|
47
47
|
export { pathSegments } from './lib/memory/utils.js';
|
|
48
48
|
// The refusal the commit-log readers raise for a row whose verb is not
|
|
49
49
|
// set | merge | append | delete (`commitValueAt`, `arrayProvenance`, and
|
|
50
|
-
// `applySmartMerge`
|
|
50
|
+
// `applySmartMerge` below): a foreign or corrupted log fails loudly,
|
|
51
51
|
// naming the row, instead of being folded as a merge.
|
|
52
52
|
export { UnknownVerbError } from './lib/memory/index.js';
|
|
53
|
+
export { applySmartMerge } from './lib/memory/verbs.js';
|
|
53
54
|
export { buildCommitIndex, commitIndexOf, commitValueAt, commitValueAtWithBasis, findCommit, findCommits, findLastWriter, findLastWriterWithBasis,
|
|
54
55
|
// One stage, one record (F8, 9.39.0): does a log record its continuations
|
|
55
56
|
// (`CommitBundle.phase`), and — for a log written before it — the ONE legacy
|
|
@@ -72,4 +73,4 @@ export { InOutRecorder, inOutRecorder, ROOT_RUNTIME_STAGE_ID, ROOT_SUBFLOW_ID }
|
|
|
72
73
|
export { ControlDepRecorder, controlDepRecorder } from './lib/recorder/ControlDepRecorder.js';
|
|
73
74
|
export { QualityRecorder } from './lib/recorder/QualityRecorder.js';
|
|
74
75
|
export { formatQualityTrace, qualityTrace } from './lib/recorder/qualityTrace.js';
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUlILE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3RCLG1CQUFtQixFQUNuQixZQUFZLEdBQ2IsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyw2RUFBNkU7QUFDN0UsNkVBQTZFO0FBQzdFLGdGQUFnRjtBQUNoRixnRkFBZ0Y7QUFDaEYsd0VBQXdFO0FBQ3hFLHdEQUF3RDtBQUN4RCw0Q0FBNEM7QUFDNUMsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixrQkFBa0IsR0FDbkIsTUFBTSw0QkFBNEIsQ0FBQztBQUtwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFbEUsNkVBQTZFO0FBQzdFLCtFQUErRTtBQUMvRSx5RUFBeUU7QUFDekUsOEVBQThFO0FBQzlFLG9FQUFvRTtBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckQsdUVBQXVFO0FBQ3ZFLHlFQUF5RTtBQUN6RSw4RUFBOEU7QUFDOUUsc0RBQXNEO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBYXpELE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGFBQWEsRUFDYixzQkFBc0IsRUFDdEIsVUFBVSxFQUNWLFdBQVcsRUFDWCxjQUFjLEVBQ2QsdUJBQXVCO0FBQ3ZCLDBFQUEwRTtBQUMxRSw2RUFBNkU7QUFDN0UsOENBQThDO0FBQzlDLGlCQUFpQixFQUNqQixhQUFhLEdBQ2QsTUFBTSxnQ0FBZ0MsQ0FBQztBQTBDeEMsT0FBTyxFQUNMLFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLGNBQWMsRUFDZCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFFBQVEsRUFDUixVQUFVLEdBQ1gsTUFBTSw0QkFBNEIsQ0FBQztBQWVwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUEyQzdGLE9BQU8sRUFDTCxlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLGVBQWUsRUFDZixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsV0FBVyxHQUNaLE1BQU0sc0JBQXNCLENBQUM7QUFhOUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRELG1FQUFtRTtBQUNuRSxpRUFBaUU7QUFDakUsaUVBQWlFO0FBQ2pFLDRDQUE0QztBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBU2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBVXRFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBS3hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBT3ZILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBSTlGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUlwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGZvb3RwcmludGpzL3RyYWNlIOKAlCBFeGVjdXRpb24gdHJhY2luZywgZGVidWdnaW5nLCBhbmQgYmFja3RyYWNraW5nIHV0aWxpdGllcy5cbiAqXG4gKiBSdW50aW1lIHN0YWdlIElEcywgY29tbWl0IGxvZyBxdWVyaWVzLCBhbmQgcmVjb3JkZXIgYmFzZSBjbGFzc2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBwYXJzZVJ1bnRpbWVTdGFnZUlkLCBmaW5kTGFzdFdyaXRlciwgS2V5ZWRTdG9yZSwgU2VxdWVuY2VTdG9yZSB9IGZyb20gJ2Zvb3RwcmludGpzL3RyYWNlJztcbiAqXG4gKiAvLyBQYXJzZSBhIHJ1bnRpbWVTdGFnZUlkXG4gKiBjb25zdCB7IHN0YWdlSWQsIGV4ZWN1dGlvbkluZGV4IH0gPSBwYXJzZVJ1bnRpbWVTdGFnZUlkKCdjYWxsLWxsbSM1Jyk7XG4gKlxuICogLy8gQmFja3RyYWNrOiB3aG8gd3JvdGUgJ3N5c3RlbVByb21wdCcgYmVmb3JlIGNvbW1pdCBhdCBpZHggOD9cbiAqIGNvbnN0IHdyaXRlciA9IGZpbmRMYXN0V3JpdGVyKGNvbW1pdExvZywgJ3N5c3RlbVByb21wdCcsIDgpO1xuICpcbiAqIC8vIHY1IHByaW1hcnkgQVBJOiBjb21wb3NlIGEgU3RvcmUgYXMgYSBmaWVsZCAob25lIHB1cnBvc2UgcGVyIHJlY29yZGVyKS5cbiAqIC8vIEtleWVkU3RvcmU8VD4g4oCUIDE6MSAob25lIGVudHJ5IHBlciBzdGVwKVxuICogY2xhc3MgTXlSZWNvcmRlciB7XG4gKiAgIHJlYWRvbmx5IGlkID0gJ215LXJlY29yZGVyJztcbiAqICAgcHJpdmF0ZSBzdG9yZSA9IG5ldyBLZXllZFN0b3JlPE15RW50cnk+KCk7XG4gKiAgIG9uV3JpdGUoZSkgeyB0aGlzLnN0b3JlLnNldChlLnJ1bnRpbWVTdGFnZUlkLCB7IC4uLiB9KTsgfVxuICogfVxuICpcbiAqIC8vIFNlcXVlbmNlU3RvcmU8VD4g4oCUIDE6TiAobXVsdGlwbGUgZW50cmllcyBwZXIgc3RlcCwgb3JkZXJpbmcgbWF0dGVycylcbiAqIGNsYXNzIEF1ZGl0UmVjb3JkZXIge1xuICogICByZWFkb25seSBpZCA9ICdhdWRpdCc7XG4gKiAgIHByaXZhdGUgc3RvcmUgPSBuZXcgU2VxdWVuY2VTdG9yZTxBdWRpdEVudHJ5PigpO1xuICogICBvblJlYWQoZSkgeyB0aGlzLnN0b3JlLnB1c2goeyBydW50aW1lU3RhZ2VJZDogZS5ydW50aW1lU3RhZ2VJZCwgLi4uIH0pOyB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuXG4vLyBSdW50aW1lIHN0YWdlIElEIOKAlCB1bmlxdWUgZXhlY3V0aW9uIHN0ZXAgaWRlbnRpZmllcnNcbmV4cG9ydCB0eXBlIHsgQ29tbWl0SWR4LCBFeGVjdXRpb25Db3VudGVyLCBFeGVjdXRpb25JbmRleCwgUnVudGltZVN0YWdlSWQgfSBmcm9tICcuL2xpYi9pZHMvcnVudGltZVN0YWdlSWQuanMnO1xuZXhwb3J0IHtcbiAgYnVpbGRSdW50aW1lU3RhZ2VJZCxcbiAgY3JlYXRlRXhlY3V0aW9uQ291bnRlcixcbiAgcGFyc2VSdW50aW1lU3RhZ2VJZCxcbiAgc3BsaXRTdGFnZUlkLFxufSBmcm9tICcuL2xpYi9pZHMvcnVudGltZVN0YWdlSWQuanMnO1xuXG4vLyBHZW5lcmF0ZWQgYnJhbmNoIHNlZ21lbnRzIOKAlCB0aGUgc3ViZmxvdyBwYXRoIHNlZ21lbnRzIGBhZGRQYXJhbGxlbEZvckVhY2hgXG4vLyBtaW50cyBmb3IgaXRzIGJyYW5jaGVzIChgPHN0YWdlSWQ+fjxpbmRleD5gKS4gQSBicmFuY2ggaXMgYWRkcmVzc2VkIGJ5IHRoZVxuLy8gT1JESU5BUlkgZ3JhbW1hciBhYm92ZSwgc28gbm90aGluZyBoZXJlIGlzIG5lZWRlZCB0byBSRUFEIG9uZTsgdGhlc2UgZXhpc3Qgc29cbi8vIGEgY29uc3VtZXIgY2FuIFRFTEwgYSBnZW5lcmF0ZWQgYnJhbmNoIGZyb20gYSBoYW5kLWF1dGhvcmVkIHN1YmZsb3cgKHRvIGxhYmVsXG4vLyBpdCBcImJyYW5jaCAyIG9mIHJldmlldy1jaHVua3NcIiBpbnN0ZWFkIG9mIGEgc3ViZmxvdyBuYW1lKSwgYW5kIHNvIHRoZVxuLy8gcmVzZXJ2ZWQgbWFya2VyIGlzIGRpc2NvdmVyYWJsZSByYXRoZXIgdGhhbiBmb2xrbG9yZS5cbi8vIERlc2lnbjogZG9jcy9kZXNpZ24vZXhlY3V0aW9uLWNvbnRyb2wubWQuXG5leHBvcnQge1xuICBCUkFOQ0hfU0VHTUVOVF9NQVJLRVIsXG4gIGJ1aWxkQnJhbmNoU2VnbWVudCxcbiAgaGFzQnJhbmNoU2VnbWVudE1hcmtlcixcbiAgaXNCcmFuY2hTZWdtZW50LFxuICBwYXJzZUJyYW5jaFNlZ21lbnQsXG59IGZyb20gJy4vbGliL2lkcy9icmFuY2hTZWdtZW50LmpzJztcblxuLy8gd2Fsa1N1YmZsb3dTcGVjIOKAlCBmbGF0IG9yZGVyZWQgdHJhdmVyc2FsIG9mIGEgc3ViZmxvdydzIHN0cnVjdHVyZVxuLy8gKGNvbnN1bWUgdmlhIFN0cnVjdHVyZVJlY29yZGVyLm9uU3ViZmxvd01vdW50ZWQncyBzdWJmbG93U3BlYyBwYXlsb2FkKVxuZXhwb3J0IHR5cGUgeyBXYWxrZXJJdGVtLCBXYWxrZXJPcHRpb25zIH0gZnJvbSAnLi9saWIvZW5naW5lL3dhbGtTdWJmbG93U3BlYy5qcyc7XG5leHBvcnQgeyB3YWxrU3ViZmxvd1NwZWMgfSBmcm9tICcuL2xpYi9lbmdpbmUvd2Fsa1N1YmZsb3dTcGVjLmpzJztcblxuLy8gUGF0aCBzZWdtZW50cyDigJQgdGhlIHN1cHBvcnRlZCB3YXkgdG8gdGFrZSBhIGBUcmFjZUVudHJ5LnBhdGhgIGFwYXJ0LiBQYXRoc1xuLy8gYXJlIGpvaW5lZCB3aXRoIGFuIEFTQ0lJIFVuaXQtU2VwYXJhdG9yIChuZXZlciBhIGRvdDogYSBzdGF0ZSBrZXkgbWF5IGl0c2VsZlxuLy8gY29udGFpbiBhIGRvdCwgc28gYSBkb3Qgc2VwYXJhdG9yIHdvdWxkIG1ha2UgYFsnYS5iJ11gIGFuZCBgWydhJywnYiddYFxuLy8gaW5kaXN0aW5ndWlzaGFibGUpLCB3aGljaCBpcyBhbiBlbmNvZGluZywgbm90IGEgZGlzcGxheSBjaGFyYWN0ZXIuIFJlbmRlciBhXG4vLyBwYXRoIHRocm91Z2ggdGhpcyBpbnN0ZWFkIG9mIHNwbGl0dGluZyBvbiB0aGUgZGVsaW1pdGVyIHlvdXJzZWxmLlxuZXhwb3J0IHsgcGF0aFNlZ21lbnRzIH0gZnJvbSAnLi9saWIvbWVtb3J5L3V0aWxzLmpzJztcblxuLy8gVGhlIHJlZnVzYWwgdGhlIGNvbW1pdC1sb2cgcmVhZGVycyByYWlzZSBmb3IgYSByb3cgd2hvc2UgdmVyYiBpcyBub3Rcbi8vIHNldCB8IG1lcmdlIHwgYXBwZW5kIHwgZGVsZXRlIChgY29tbWl0VmFsdWVBdGAsIGBhcnJheVByb3ZlbmFuY2VgLCBhbmRcbi8vIGBhcHBseVNtYXJ0TWVyZ2VgIG9uIGAvYWR2YW5jZWRgKTogYSBmb3JlaWduIG9yIGNvcnJ1cHRlZCBsb2cgZmFpbHMgbG91ZGx5LFxuLy8gbmFtaW5nIHRoZSByb3csIGluc3RlYWQgb2YgYmVpbmcgZm9sZGVkIGFzIGEgbWVyZ2UuXG5leHBvcnQgeyBVbmtub3duVmVyYkVycm9yIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLy8gQ29tbWl0IGxvZyBxdWVyaWVzIOKAlCB0eXBlZCB1dGlsaXRpZXMgZm9yIGJhY2t0cmFja2luZy5cbi8vIGNvbW1pdFZhbHVlQXQgcmVjb25zdHJ1Y3RzIHRoZSBGVUxMIHZhbHVlIG9mIGEga2V5IGF0IGEgY29tbWl0IGluZGV4IOKAlFxuLy8gcmVxdWlyZWQgdW5kZXIgYGNvbW1pdFZhbHVlczogJ2RlbHRhJ2AgKCMxM2MtQiksIHdoZXJlIGFuIGBhcHBlbmRgXG4vLyBidW5kbGUncyBgb3ZlcndyaXRlW2tleV1gIGhvbGRzIG9ubHkgdGhlIHRhaWwuXG5leHBvcnQgdHlwZSB7XG4gIFZhbHVlQmFzaXMsXG4gIFZhbHVlQmFzaXNPcHRpb25zLFxuICBWYWx1ZVdpdGhCYXNpcyxcbiAgV3JpdGVyQmFzaXMsXG4gIFdyaXRlcldpdGhCYXNpcyxcbn0gZnJvbSAnLi9saWIvbWVtb3J5L2NvbW1pdExvZ1V0aWxzLmpzJztcbmV4cG9ydCB7XG4gIGJ1aWxkQ29tbWl0SW5kZXgsXG4gIGNvbW1pdEluZGV4T2YsXG4gIGNvbW1pdFZhbHVlQXQsXG4gIGNvbW1pdFZhbHVlQXRXaXRoQmFzaXMsXG4gIGZpbmRDb21taXQsXG4gIGZpbmRDb21taXRzLFxuICBmaW5kTGFzdFdyaXRlcixcbiAgZmluZExhc3RXcml0ZXJXaXRoQmFzaXMsXG4gIC8vIE9uZSBzdGFnZSwgb25lIHJlY29yZCAoRjgsIDkuMzkuMCk6IGRvZXMgYSBsb2cgcmVjb3JkIGl0cyBjb250aW51YXRpb25zXG4gIC8vIChgQ29tbWl0QnVuZGxlLnBoYXNlYCksIGFuZCDigJQgZm9yIGEgbG9nIHdyaXR0ZW4gYmVmb3JlIGl0IOKAlCB0aGUgT05FIGxlZ2FjeVxuICAvLyByZWFkZXIgdGhhdCBpbmZlcnMgdGhlbSB0aGUgd2F5IDkuMzguMCBkaWQuXG4gIGluZmVyTGVnYWN5UGhhc2VzLFxuICByZWNvcmRzUGhhc2VzLFxufSBmcm9tICcuL2xpYi9tZW1vcnkvY29tbWl0TG9nVXRpbHMuanMnO1xuZXhwb3J0IHR5cGUgeyBDb21taXRQaGFzZSB9IGZyb20gJy4vbGliL21lbW9yeS90eXBlcy5qcyc7XG5cbi8vIOKUgOKUgCB0aW1lLXRyYXZlbC8g4oCUIHRoZSBSRUFERVInUyBjdXJzb3Igb3ZlciBhIGZpbmlzaGVkIHRyYWNlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gQSBUcmFjZSBpcyB3aGF0IHRoZSBydW4gcmVjb3JkZWQ7IHRpbWUgdHJhdmVsIGlzIGEgY3Vyc29yIG92ZXIgaXQgd2l0aCBhXG4vLyBGb2xkIGF0IGVhY2ggc3RvcC4gSXQgaXMgTk9UIHRoZSBlbmdpbmUncyB3YWxrIGFuZCBuZXZlciBiZWNvbWVzIGEgc2Vjb25kXG4vLyBsaXZlIGN1cnNvcjogZXZlcnl0aGluZyBiZWxvdyBpcyBhIHJlYWQtdGltZSBxdWVyeSBvdmVyIGFscmVhZHktY29sbGVjdGVkXG4vLyBkYXRhLlxuLy9cbi8vIGBzdGF0ZUF0KHNuYXBzaG90IHwgc3VidHJlZSwgY29tbWl0SWR4KWAgaXMgdGhlIGZvbGQg4oCUIHRoZSBydW4nc1xuLy8gYGluaXRpYWxTdGF0ZWAgcmVwbGF5ZWQgdGhyb3VnaCBgY29tbWl0TG9nWzAuLmNvbW1pdElkeF1gIHdpdGggdGhlIFNBTUUgdmVyYlxuLy8gc3dpdGNoIHRoZSBsaXZlIGNvbW1pdCB1c2VzLCByZXR1cm5lZCBkZXRhY2hlZCBhbmQgZnJvemVuLCBhbmQgaG9uZXN0IGFib3V0XG4vLyBob3cgaXQgd2FzIGRlcml2ZWQgKGBiYXNpc2ApIGFuZCB3aGVyZSB0aGUgbG9nIHdhcyBzY3J1YmJlZCAoYHJlZGFjdGVkYCkuXG4vL1xuLy8gYHRpbWVUcmF2ZWwoc25hcHNob3QpYCBpcyB0aGUgY3Vyc29yOiBzdG9wcywgcHJldi9uZXh0L2p1bXBUbywgbWFya3MgYmVzaWRlXG4vLyB0aGUgbG9nLCBhbmQgYGRyaWxsKG1vdW50KWAgaW50byBhIHN1YmZsb3cncyBvd24gbG9nIOKAlCB0aGUgc2FtZSBpbnRlcmZhY2UsXG4vLyBpdHMgb3duIGJhc2UuIEhvdyBzdG9wcyBhcmUgREVSSVZFRCBpcyB0aGUgc2VhbSAoYFRpbWVUcmF2ZWxTdHJhdGVneWApO1xuLy8gZm9vdHByaW50anMgc2hpcHMgYGNvbW1pdFN0b3BzYCAob25lIHN0b3AgcGVyIGV4ZWN1dGVkIHN0YWdlKSBiZWNhdXNlIHRoYXRcbi8vIGlzIHRoZSBvbmx5IHN0b3AgZ3JhbW1hciB0aGUgc3Vic3RyYXRlIGl0c2VsZiBrbm93cyDigJQgYW5kLCBzaW5jZSA5LjIxLjAsXG4vLyBgdGFnU3RvcHModGFncz8pYDogdGhlIHN0b3BzIGEgY2hhcnQgREVDTEFSRUQgYXQgYnVpbGQgdGltZSAoYC50YWcoKWApLFxuLy8gcmVhZCBiYWNrIG9mZiBgQ29tbWl0QnVuZGxlLnRhZ3NgLCBzbyBhIHN0b3JlZCByZWNvcmRpbmcgc2NydWJzIGJ5IGl0cyBvd25cbi8vIG1pbGVzdG9uZXMgd2l0aCBubyBpZCBjb252ZW50aW9ucyBpbiB0aGUgcmVhZGVyLlxuLy8gU2VlIHNyYy9saWIvdGltZS10cmF2ZWwvUkVBRE1FLm1kLlxuZXhwb3J0IHR5cGUge1xuICBBeGlzUmVmdXNhbCxcbiAgQXhpc1NwbGl0LFxuICBCb29rZW5kZWRBeGlzLFxuICBGb2xkQmFzaXMsXG4gIEZvbGRlZFN0YXRlLFxuICBGb2xkU291cmNlLFxuICBMb2dHYXAsXG4gIE1hcmssXG4gIE1vdmUsXG4gIE1vdmVSZWZ1c2FsLFxuICBTdG9wLFxuICBTdG9wRmlsdGVyLFxuICBTdG9wS2luZCxcbiAgVGltZVRyYXZlbCxcbiAgVGltZVRyYXZlbE9wdGlvbnMsXG4gIFRpbWVUcmF2ZWxTb3VyY2UsXG4gIFRpbWVUcmF2ZWxTdHJhdGVneSxcbn0gZnJvbSAnLi9saWIvdGltZS10cmF2ZWwvaW5kZXguanMnO1xuZXhwb3J0IHtcbiAgY29tbWl0U3RvcHMsXG4gIGNvbW1pdFN0b3BzU3RyYXRlZ3ksXG4gIGZpbHRlclN0b3BzLFxuICBpc0NvbW1pdEJ1bmRsZSxcbiAgc3BsaXRBeGlzLFxuICBzdGF0ZUF0LFxuICB0YWdTdG9wcyxcbiAgdGltZVRyYXZlbCxcbn0gZnJvbSAnLi9saWIvdGltZS10cmF2ZWwvaW5kZXguanMnO1xuXG4vLyBDYXVzYWwgY2hhaW4g4oCUIGJhY2t3YXJkIHByb2dyYW0gc2xpY2luZyBvbiBjb21taXQgbG9nIChEQUcpLlxuLy8gUkZDLTAwMyBEMzogYENhdXNhbEVkZ2VgICh0eXBlZC9rZXllZC93ZWlnaHRlZCBwYXJlbnQgbGlua3Mgb25cbi8vIGBDYXVzYWxOb2RlLnBhcmVudEVkZ2VzYCkgKyB0aGUgYGNvbnRyb2xEZXBzYCBvcHRpb24gKGBDb250cm9sRGVwTG9va3VwYClcbi8vIGFkZCBjb250cm9sLWRlcGVuZGVuY2UgZWRnZXMgdG8gdGhlIHNsaWNlLlxuZXhwb3J0IHR5cGUge1xuICBDYXVzYWxDaGFpbk9wdGlvbnMsXG4gIENhdXNhbEVkZ2UsXG4gIENhdXNhbE5vZGUsXG4gIENvbnRyb2xEZXBlbmRlbmN5LFxuICBDb250cm9sRGVwTG9va3VwLFxuICBFZGdlV2VpZ2hlcixcbiAgS2V5c1JlYWRMb29rdXAsXG59IGZyb20gJy4vbGliL21lbW9yeS9iYWNrdHJhY2suanMnO1xuZXhwb3J0IHsgY2F1c2FsQ2hhaW4sIGZsYXR0ZW5DYXVzYWxEQUcsIGZvcm1hdENhdXNhbENoYWluIH0gZnJvbSAnLi9saWIvbWVtb3J5L2JhY2t0cmFjay5qcyc7XG4vLyBSRkMtMDAzIEQyIOKAlCBob25lc3R5IG1hcmtlcnM6IHRoZSB1bnRyYWNrZWQgcmVhZCBwYXRocyBhIHN0YWdlIGNvbnN1bWVkXG4vLyAoYENvbW1pdEJ1bmRsZS51bnRyYWNrZWRTb3VyY2VzYCDihpIgYENhdXNhbE5vZGUuaW5jb21wbGV0ZVNvdXJjZXNgKS5cbmV4cG9ydCB0eXBlIHsgVW50cmFja2VkU291cmNlIH0gZnJvbSAnLi9saWIvbWVtb3J5L3R5cGVzLmpzJztcblxuLy8g4pSA4pSAIHNsaWNlLyDigJQgdmFyaWFibGUtZmlyc3Qgc2xpY2luZywgYm90aCBkaXJlY3Rpb25zICh0cmlhZ2UgcXVlcnkgbGF5ZXIpIOKUgOKUgFxuLy8gT25lIGNvbnRyYWN0IGZvciBldmVyeSB0cmlhZ2Ugc3VyZmFjZSAoVUkgcGFuZWwsIExMTSB0b29sLCBvZmZsaW5lXG4vLyBhdXRvcHN5IGFnZW50KTogdmFyaWFibGUgaW4g4oaSIHNsaWNlIG91dC5cbi8vXG4vLyBCQUNLV0FSRCDigJQgYHNsaWNlRm9yS2V5YCBhbmNob3JzIGF0IHRoZSBrZXkncyBsYXN0IHdyaXRlciB0aGVuIGRlbGVnYXRlc1xuLy8gdG8gY2F1c2FsQ2hhaW47IGBhcnJheVByb3ZlbmFuY2VgIC8gYGVsZW1lbnRQcm92ZW5hbmNlYCAoYXBwZW5kLWZvbGQpXG4vLyBhbnN3ZXIgZWxlbWVudC1sZXZlbCBxdWVzdGlvbnMgbGlrZSBcIndoaWNoIHN0YWdlIHByb2R1Y2VkIGhpc3RvcnlbN10/XCIg4oCUXG4vLyB0aGUgZml4IGZvciB0aGUgYWdlbnQgbWVnYS1rZXkgcHJvYmxlbSwgd2l0aCBob25lc3QgYXR0cmlidXRpb24gbGFiZWxzLlxuLy9cbi8vIEZPUldBUkQg4oCUIGBmb3J3YXJkU2xpY2VGb3JLZXlgIHdhbGtzIHRoZSBvdGhlciB3YXk6IGZyb20gYSB3cml0ZSwgdGhyb3VnaFxuLy8gdGhlIHZhbHVlJ3MgTElWRSBSQU5HRSAoaXQgbGl2ZXMgdW50aWwgdGhlIGtleSdzIG5leHQgd3JpdGUpLCB0byBldmVyeVxuLy8gc3RhZ2UgdGhhdCByZWFkIGl0IGFuZCBldmVyeSB3cml0ZSB0aG9zZSByZWFkcyBmZWQuIGBrZXlUaW1lbGluZWAgaXMgdGhlXG4vLyBmbGF0IGNocm9ub2xvZ2ljYWwgdmlldyBvZiB0aGUgc2FtZSBmYWN0cy4gRmVkIGVkZ2VzIGFyZSBFWEFDVCB1bmRlciB0aGVcbi8vIGB3cml0ZVByb3ZlbmFuY2U6ICdyZWFkcy1wcmVmaXgnYCBkaWFsIGFuZCBzdGFtcGVkIENPTlNFUlZBVElWRSB3aXRob3V0XG4vLyBpdCDigJQgbmV2ZXIgdGhlIG90aGVyIHdheSByb3VuZC4gU2VlIHNyYy9saWIvc2xpY2UvUkVBRE1FLm1kLlxuZXhwb3J0IHR5cGUge1xuICBBcnJheVByb3ZlbmFuY2UsXG4gIEF0dHJpYnV0aW9uQmFzaXMsXG4gIEVsZW1lbnRCaXJ0aCxcbiAgRmVkQmFzaXMsXG4gIEZvcndhcmRFZGdlLFxuICBGb3J3YXJkTm9kZSxcbiAgRm9yd2FyZFJlYWQsXG4gIEZvcndhcmRTbGljZSxcbiAgRm9yd2FyZFNsaWNlSlNPTixcbiAgSG9uZXN0eU5vdGUsXG4gIEhvbmVzdHlOb3RlQ29kZSxcbiAgS2V5TW9tZW50LFxuICBLZXlzUmVhZFNvdXJjZSxcbiAgS2V5VGltZWxpbmUsXG4gIE1pc3NpbmdQcm92ZW5hbmNlUmVhc29uLFxuICBNaXNzaW5nU2xpY2VSZWFzb24sXG4gIFJlYWRzQ292ZXJhZ2UsXG4gIFNsaWNlSlNPTixcbiAgU3RhdGVLZXksXG4gIFZhcmlhYmxlU2xpY2UsXG59IGZyb20gJy4vbGliL3NsaWNlL2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHsgRm9yd2FyZFNsaWNlRm9yS2V5T3B0aW9ucywgS2V5VGltZWxpbmVPcHRpb25zLCBTbGljZUZvcktleU9wdGlvbnMgfSBmcm9tICcuL2xpYi9zbGljZS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBhcnJheVByb3ZlbmFuY2UsXG4gIGVsZW1lbnRQcm92ZW5hbmNlLFxuICBmb3JtYXRGb3J3YXJkU2xpY2UsXG4gIGZvcm1hdFNsaWNlLFxuICBmb3JtYXRUaW1lbGluZSxcbiAgZm9yd2FyZFNsaWNlRm9yS2V5LFxuICBmb3J3YXJkU2xpY2VUb0pTT04sXG4gIGtleXNSZWFkRnJvbUV4ZWN1dGlvblRyZWUsXG4gIGtleXNSZWFkRnJvbU1hcCxcbiAga2V5VGltZWxpbmUsXG4gIG5vcm1hbGlzZVN0YXRlS2V5LFxuICByZXNvbHZlS2V5c1JlYWRTb3VyY2UsXG4gIHNsaWNlRm9yS2V5LFxuICBzbGljZVRvSlNPTixcbn0gZnJvbSAnLi9saWIvc2xpY2UvaW5kZXguanMnO1xuXG4vLyDilIDilIAgaG9uZXN0eSDigJQgdGhlIE9ORSByZWdpc3RyeSBvZiB3aGF0IGEgcmVhZGVyIGNhbm5vdCBzZWUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBUaGUgaG9uZXN0eSBzaWduYWxzIHRoaXMgZG9vcidzIHJlYWRlcnMgcHJvZHVjZSDigJQgYSBzbGljZSdzIGBIb25lc3R5Tm90ZS5jb2RlYCBhbmQgYG1pc3NpbmdgXG4vLyByZWFzb24sIGEgZmVkIGVkZ2UncyBhbmQgYW4gZWxlbWVudCBiaXJ0aCdzIGBiYXNpc2AsIGEgZm9sZCdzIGBiYXNpc2AgYW5kIGByZWRhY3RlZGAgcGF0aHMsIGFcbi8vIGBMb2dHYXBgLCBhIGNhdXNhbCBub2RlJ3MgYGluY29tcGxldGVTb3VyY2VzYCBhbmQgYHRydW5jYXRlZGAg4oCUIGVhY2ggaGFzIGEgY29kZSBoZXJlIGFuZCB0aGUgT05FXG4vLyBzZW50ZW5jZSB0aGF0IHNheXMgd2hhdCBpdCBtZWFucywgc28gYSBsZW5zIG9yIGFuIGFnZW50IHRvb2wgZXhwbGFpbnMgYW55IG9mIHRoZW0gZnJvbSBvbmUgcGxhY2Vcbi8vIGluc3RlYWQgb2Yga2VlcGluZyBpdHMgb3duIHRhYmxlLiBUaGUgdW5pb25zIG9mIHRob3NlIGNvZGVzIGV4cG9ydGVkIGFib3ZlIChgSG9uZXN0eU5vdGVDb2RlYCxcbi8vIGBNaXNzaW5nU2xpY2VSZWFzb25gLCBgTWlzc2luZ1Byb3ZlbmFuY2VSZWFzb25gLCBgRmVkQmFzaXNgLCBgQXR0cmlidXRpb25CYXNpc2AsIGBGb2xkQmFzaXNgKSBhcmVcbi8vIHN1YnNldHMgb2YgYEhvbmVzdHlDb2RlYCwgYW5kIHRlc3QvYXJjaGl0ZWN0dXJlL2hvbmVzdHktdm9jYWJ1bGFyeS50ZXN0LnRzIGZhaWxzIG9uIGEgdW5pb24gb2Zcbi8vIHN0cmluZyBsaXRlcmFscyB0aGlzIGRvb3IgZXhwb3J0cyB0aGF0IGlzIG5laXRoZXIgcmVnaXN0ZXJlZCBub3IgbmFtZWQgdGhlcmUgYXMgYSBkaWZmZXJlbnQga2luZFxuLy8gb2Ygd29yZC4gU2VlIHNyYy9saWIvbWVtb3J5L1JFQURNRS5tZC5cbmV4cG9ydCB0eXBlIHsgSG9uZXN0eUNvZGUgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgSE9ORVNUWV9DT0RFUyB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5cbi8vIOKUgOKUgCB2NSBTdG9yZXMgKGNvbmNyZXRlLCBjb21wb3NhYmxlIOKAlCBwcmltYXJ5IHJlY29yZGVyIEFQSSkg4pSA4pSA4pSA4pSA4pSAXG4vLyBDb21wb3NlIHRoZXNlIHZpYSBgbmV3IFN0b3JlPFQ+KClgIGFzIGEgZmllbGQgb24geW91ciByZWNvcmRlclxuLy8gY2xhc3MuIE9uZSBwdXJwb3NlIHBlciByZWNvcmRlcjogc3RvcmVzIGFyZSBzdG9yYWdlOyByZWNvcmRlcnNcbi8vIGFyZSBldmVudC1ob29rIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbnMuXG5leHBvcnQgeyBCb3VuZGFyeVN0YXRlU3RvcmUgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9Cb3VuZGFyeVN0YXRlU3RvcmUuanMnO1xuZXhwb3J0IHsgS2V5ZWRTdG9yZSB9IGZyb20gJy4vbGliL3JlY29yZGVyL0tleWVkU3RvcmUuanMnO1xuZXhwb3J0IHsgU2VxdWVuY2VTdG9yZSB9IGZyb20gJy4vbGliL3JlY29yZGVyL1NlcXVlbmNlU3RvcmUuanMnO1xuXG4vLyDilIDilIAgdjUuMSBDb21taXQgZ3JvdXBpbmcgcHJpbWl0aXZlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gSW50ZXJ2YWwgaW5kZXggb3ZlciBjb21taXQgaW5kaWNlcy4gQnVpbHQgaW5jcmVtZW50YWxseSBkdXJpbmdcbi8vIHRyYXZlcnNhbDogb3BlbigpIG9uIGJvdW5kYXJ5IGVudHJ5LCBjbG9zZSgpIG9uIGV4aXQuIFF1ZXJ5IGF0IGFueVxuLy8gY29tbWl0IHBvc2l0aW9uIHdpdGggZW5jbG9zaW5nKCkvb3ZlcmxhcHBpbmcoKS4gR2VuZXJpYyBvdmVyIFRMYWJlbFxuLy8g4oCUIGZvb3RwcmludGpzIG93bnMgWkVSTyBrbm93bGVkZ2Ugb2Ygd2hhdCBjb25zdW1lcnMgdXNlIGFzIGxhYmVscy5cbi8vIFNlZSBkb2NzL2Rlc2lnbi9jb21taXQtcmFuZ2UtaW5kZXgubWQgZm9yIHRoZSBmdWxsIGNvbnRyYWN0LlxuZXhwb3J0IHR5cGUgeyBSYW5nZUVudHJ5LCBSYW5nZVRva2VuIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvQ29tbWl0UmFuZ2VJbmRleC5qcyc7XG5leHBvcnQgeyBDb21taXRSYW5nZUluZGV4IH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvQ29tbWl0UmFuZ2VJbmRleC5qcyc7XG5cbi8vIFRvcG9sb2d5UmVjb3JkZXIg4oCUIGNvbXBvc2l0aW9uIGdyYXBoIGFjY3VtdWxhdG9yIChzdWJmbG93cyArIGNvbnRyb2wtZmxvdyBlZGdlcylcbmV4cG9ydCB0eXBlIHtcbiAgVG9wb2xvZ3ksXG4gIFRvcG9sb2d5RWRnZSxcbiAgVG9wb2xvZ3lJbmNvbWluZ0tpbmQsXG4gIFRvcG9sb2d5Tm9kZSxcbiAgVG9wb2xvZ3lSZWNvcmRlck9wdGlvbnMsXG59IGZyb20gJy4vbGliL3JlY29yZGVyL1RvcG9sb2d5UmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgVG9wb2xvZ3lSZWNvcmRlciwgdG9wb2xvZ3lSZWNvcmRlciB9IGZyb20gJy4vbGliL3JlY29yZGVyL1RvcG9sb2d5UmVjb3JkZXIuanMnO1xuXG4vLyBJbk91dFJlY29yZGVyIOKAlCBjaGFydCBpbi9vdXQgc3RyZWFtIChlbnRyeS9leGl0IHBhaXJzIGF0IGV2ZXJ5IGNoYXJ0IGJvdW5kYXJ5LFxuLy8gaW5jbHVkaW5nIHRoZSB0b3AtbGV2ZWwgcnVuIGFuZCBldmVyeSBzdWJmbG93KVxuZXhwb3J0IHR5cGUgeyBJbk91dEVudHJ5LCBJbk91dFBoYXNlLCBJbk91dFJlY29yZGVyT3B0aW9ucyB9IGZyb20gJy4vbGliL3JlY29yZGVyL0luT3V0UmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgSW5PdXRSZWNvcmRlciwgaW5PdXRSZWNvcmRlciwgUk9PVF9SVU5USU1FX1NUQUdFX0lELCBST09UX1NVQkZMT1dfSUQgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9Jbk91dFJlY29yZGVyLmpzJztcblxuLy8gQ29udHJvbERlcFJlY29yZGVyIOKAlCBjb250cm9sLWRlcGVuZGVuY2UgdHJhY2tpbmcgKFJGQy0wMDMgRDUpOiByZWNvcmRzXG4vLyBvbkRlY2lzaW9uL29uU2VsZWN0ZWQgKyB0aGUgRDEgcnVudGltZSBhbmNlc3RvciBjaGFpbiwgYW5zd2VycyBcIndoaWNoXG4vLyBkZWNpc2lvbiBhbGxvd2VkIHRoaXMgc3RhZ2UgdG8gcnVuP1wiIOKAlCB0aGUgYnVpbHQtaW4gcHJvZHVjZXIgZm9yXG4vLyBjYXVzYWxDaGFpbidzIGBjb250cm9sRGVwc2Agb3B0aW9uLlxuZXhwb3J0IHR5cGUgeyBDb250cm9sRGVjaXNpb25SZWNvcmQsIENvbnRyb2xEZXBSZWNvcmRlck9wdGlvbnMgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9Db250cm9sRGVwUmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgQ29udHJvbERlcFJlY29yZGVyLCBjb250cm9sRGVwUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9Db250cm9sRGVwUmVjb3JkZXIuanMnO1xuXG4vLyBRdWFsaXR5UmVjb3JkZXIg4oCUIHBlci1zdGVwIHF1YWxpdHkgc2NvcmluZyB3aXRoIGJhY2t0cmFja2luZ1xuZXhwb3J0IHR5cGUgeyBRdWFsaXR5RW50cnksIFF1YWxpdHlSZWNvcmRlck9wdGlvbnMsIFF1YWxpdHlTY29yaW5nRm4gfSBmcm9tICcuL2xpYi9yZWNvcmRlci9RdWFsaXR5UmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgUXVhbGl0eVJlY29yZGVyIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvUXVhbGl0eVJlY29yZGVyLmpzJztcblxuLy8gcXVhbGl0eVRyYWNlIOKAlCBRdWFsaXR5IFN0YWNrIFRyYWNlIChiYWNrdHJhY2sgZnJvbSBsb3ctc2NvcmluZyBzdGVwcylcbmV4cG9ydCB0eXBlIHsgUXVhbGl0eUZyYW1lLCBRdWFsaXR5U3RhY2tUcmFjZSB9IGZyb20gJy4vbGliL3JlY29yZGVyL3F1YWxpdHlUcmFjZS5qcyc7XG5leHBvcnQgeyBmb3JtYXRRdWFsaXR5VHJhY2UsIHF1YWxpdHlUcmFjZSB9IGZyb20gJy4vbGliL3JlY29yZGVyL3F1YWxpdHlUcmFjZS5qcyc7XG4iXX0=
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUlILE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3RCLG1CQUFtQixFQUNuQixZQUFZLEdBQ2IsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyw2RUFBNkU7QUFDN0UsNkVBQTZFO0FBQzdFLGdGQUFnRjtBQUNoRixnRkFBZ0Y7QUFDaEYsd0VBQXdFO0FBQ3hFLHdEQUF3RDtBQUN4RCw0Q0FBNEM7QUFDNUMsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixrQkFBa0IsR0FDbkIsTUFBTSw0QkFBNEIsQ0FBQztBQUtwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFbEUsNkVBQTZFO0FBQzdFLCtFQUErRTtBQUMvRSx5RUFBeUU7QUFDekUsOEVBQThFO0FBQzlFLG9FQUFvRTtBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckQsdUVBQXVFO0FBQ3ZFLHlFQUF5RTtBQUN6RSxxRUFBcUU7QUFDckUsc0RBQXNEO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUXpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWF4RCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixhQUFhLEVBQ2Isc0JBQXNCLEVBQ3RCLFVBQVUsRUFDVixXQUFXLEVBQ1gsY0FBYyxFQUNkLHVCQUF1QjtBQUN2QiwwRUFBMEU7QUFDMUUsNkVBQTZFO0FBQzdFLDhDQUE4QztBQUM5QyxpQkFBaUIsRUFDakIsYUFBYSxHQUNkLE1BQU0sZ0NBQWdDLENBQUM7QUEwQ3hDLE9BQU8sRUFDTCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFdBQVcsRUFDWCxjQUFjLEVBQ2QsU0FBUyxFQUNULE9BQU8sRUFDUCxRQUFRLEVBQ1IsVUFBVSxHQUNYLE1BQU0sNEJBQTRCLENBQUM7QUFlcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBMkM3RixPQUFPLEVBQ0wsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6QixlQUFlLEVBQ2YsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsV0FBVyxFQUNYLFdBQVcsR0FDWixNQUFNLHNCQUFzQixDQUFDO0FBYTlCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RCxtRUFBbUU7QUFDbkUsaUVBQWlFO0FBQ2pFLGlFQUFpRTtBQUNqRSw0Q0FBNEM7QUFDNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQVNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQVV0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUt4RixPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQU92SCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUk5RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFJcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBmb290cHJpbnRqcy90cmFjZSDigJQgRXhlY3V0aW9uIHRyYWNpbmcsIGRlYnVnZ2luZywgYW5kIGJhY2t0cmFja2luZyB1dGlsaXRpZXMuXG4gKlxuICogUnVudGltZSBzdGFnZSBJRHMsIGNvbW1pdCBsb2cgcXVlcmllcywgYW5kIHJlY29yZGVyIGJhc2UgY2xhc3Nlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgcGFyc2VSdW50aW1lU3RhZ2VJZCwgZmluZExhc3RXcml0ZXIsIEtleWVkU3RvcmUsIFNlcXVlbmNlU3RvcmUgfSBmcm9tICdmb290cHJpbnRqcy90cmFjZSc7XG4gKlxuICogLy8gUGFyc2UgYSBydW50aW1lU3RhZ2VJZFxuICogY29uc3QgeyBzdGFnZUlkLCBleGVjdXRpb25JbmRleCB9ID0gcGFyc2VSdW50aW1lU3RhZ2VJZCgnY2FsbC1sbG0jNScpO1xuICpcbiAqIC8vIEJhY2t0cmFjazogd2hvIHdyb3RlICdzeXN0ZW1Qcm9tcHQnIGJlZm9yZSBjb21taXQgYXQgaWR4IDg/XG4gKiBjb25zdCB3cml0ZXIgPSBmaW5kTGFzdFdyaXRlcihjb21taXRMb2csICdzeXN0ZW1Qcm9tcHQnLCA4KTtcbiAqXG4gKiAvLyB2NSBwcmltYXJ5IEFQSTogY29tcG9zZSBhIFN0b3JlIGFzIGEgZmllbGQgKG9uZSBwdXJwb3NlIHBlciByZWNvcmRlcikuXG4gKiAvLyBLZXllZFN0b3JlPFQ+IOKAlCAxOjEgKG9uZSBlbnRyeSBwZXIgc3RlcClcbiAqIGNsYXNzIE15UmVjb3JkZXIge1xuICogICByZWFkb25seSBpZCA9ICdteS1yZWNvcmRlcic7XG4gKiAgIHByaXZhdGUgc3RvcmUgPSBuZXcgS2V5ZWRTdG9yZTxNeUVudHJ5PigpO1xuICogICBvbldyaXRlKGUpIHsgdGhpcy5zdG9yZS5zZXQoZS5ydW50aW1lU3RhZ2VJZCwgeyAuLi4gfSk7IH1cbiAqIH1cbiAqXG4gKiAvLyBTZXF1ZW5jZVN0b3JlPFQ+IOKAlCAxOk4gKG11bHRpcGxlIGVudHJpZXMgcGVyIHN0ZXAsIG9yZGVyaW5nIG1hdHRlcnMpXG4gKiBjbGFzcyBBdWRpdFJlY29yZGVyIHtcbiAqICAgcmVhZG9ubHkgaWQgPSAnYXVkaXQnO1xuICogICBwcml2YXRlIHN0b3JlID0gbmV3IFNlcXVlbmNlU3RvcmU8QXVkaXRFbnRyeT4oKTtcbiAqICAgb25SZWFkKGUpIHsgdGhpcy5zdG9yZS5wdXNoKHsgcnVudGltZVN0YWdlSWQ6IGUucnVudGltZVN0YWdlSWQsIC4uLiB9KTsgfVxuICogfVxuICogYGBgXG4gKi9cblxuLy8gUnVudGltZSBzdGFnZSBJRCDigJQgdW5pcXVlIGV4ZWN1dGlvbiBzdGVwIGlkZW50aWZpZXJzXG5leHBvcnQgdHlwZSB7IENvbW1pdElkeCwgRXhlY3V0aW9uQ291bnRlciwgRXhlY3V0aW9uSW5kZXgsIFJ1bnRpbWVTdGFnZUlkIH0gZnJvbSAnLi9saWIvaWRzL3J1bnRpbWVTdGFnZUlkLmpzJztcbmV4cG9ydCB7XG4gIGJ1aWxkUnVudGltZVN0YWdlSWQsXG4gIGNyZWF0ZUV4ZWN1dGlvbkNvdW50ZXIsXG4gIHBhcnNlUnVudGltZVN0YWdlSWQsXG4gIHNwbGl0U3RhZ2VJZCxcbn0gZnJvbSAnLi9saWIvaWRzL3J1bnRpbWVTdGFnZUlkLmpzJztcblxuLy8gR2VuZXJhdGVkIGJyYW5jaCBzZWdtZW50cyDigJQgdGhlIHN1YmZsb3cgcGF0aCBzZWdtZW50cyBgYWRkUGFyYWxsZWxGb3JFYWNoYFxuLy8gbWludHMgZm9yIGl0cyBicmFuY2hlcyAoYDxzdGFnZUlkPn48aW5kZXg+YCkuIEEgYnJhbmNoIGlzIGFkZHJlc3NlZCBieSB0aGVcbi8vIE9SRElOQVJZIGdyYW1tYXIgYWJvdmUsIHNvIG5vdGhpbmcgaGVyZSBpcyBuZWVkZWQgdG8gUkVBRCBvbmU7IHRoZXNlIGV4aXN0IHNvXG4vLyBhIGNvbnN1bWVyIGNhbiBURUxMIGEgZ2VuZXJhdGVkIGJyYW5jaCBmcm9tIGEgaGFuZC1hdXRob3JlZCBzdWJmbG93ICh0byBsYWJlbFxuLy8gaXQgXCJicmFuY2ggMiBvZiByZXZpZXctY2h1bmtzXCIgaW5zdGVhZCBvZiBhIHN1YmZsb3cgbmFtZSksIGFuZCBzbyB0aGVcbi8vIHJlc2VydmVkIG1hcmtlciBpcyBkaXNjb3ZlcmFibGUgcmF0aGVyIHRoYW4gZm9sa2xvcmUuXG4vLyBEZXNpZ246IGRvY3MvZGVzaWduL2V4ZWN1dGlvbi1jb250cm9sLm1kLlxuZXhwb3J0IHtcbiAgQlJBTkNIX1NFR01FTlRfTUFSS0VSLFxuICBidWlsZEJyYW5jaFNlZ21lbnQsXG4gIGhhc0JyYW5jaFNlZ21lbnRNYXJrZXIsXG4gIGlzQnJhbmNoU2VnbWVudCxcbiAgcGFyc2VCcmFuY2hTZWdtZW50LFxufSBmcm9tICcuL2xpYi9pZHMvYnJhbmNoU2VnbWVudC5qcyc7XG5cbi8vIHdhbGtTdWJmbG93U3BlYyDigJQgZmxhdCBvcmRlcmVkIHRyYXZlcnNhbCBvZiBhIHN1YmZsb3cncyBzdHJ1Y3R1cmVcbi8vIChjb25zdW1lIHZpYSBTdHJ1Y3R1cmVSZWNvcmRlci5vblN1YmZsb3dNb3VudGVkJ3Mgc3ViZmxvd1NwZWMgcGF5bG9hZClcbmV4cG9ydCB0eXBlIHsgV2Fsa2VySXRlbSwgV2Fsa2VyT3B0aW9ucyB9IGZyb20gJy4vbGliL2VuZ2luZS93YWxrU3ViZmxvd1NwZWMuanMnO1xuZXhwb3J0IHsgd2Fsa1N1YmZsb3dTcGVjIH0gZnJvbSAnLi9saWIvZW5naW5lL3dhbGtTdWJmbG93U3BlYy5qcyc7XG5cbi8vIFBhdGggc2VnbWVudHMg4oCUIHRoZSBzdXBwb3J0ZWQgd2F5IHRvIHRha2UgYSBgVHJhY2VFbnRyeS5wYXRoYCBhcGFydC4gUGF0aHNcbi8vIGFyZSBqb2luZWQgd2l0aCBhbiBBU0NJSSBVbml0LVNlcGFyYXRvciAobmV2ZXIgYSBkb3Q6IGEgc3RhdGUga2V5IG1heSBpdHNlbGZcbi8vIGNvbnRhaW4gYSBkb3QsIHNvIGEgZG90IHNlcGFyYXRvciB3b3VsZCBtYWtlIGBbJ2EuYiddYCBhbmQgYFsnYScsJ2InXWBcbi8vIGluZGlzdGluZ3Vpc2hhYmxlKSwgd2hpY2ggaXMgYW4gZW5jb2RpbmcsIG5vdCBhIGRpc3BsYXkgY2hhcmFjdGVyLiBSZW5kZXIgYVxuLy8gcGF0aCB0aHJvdWdoIHRoaXMgaW5zdGVhZCBvZiBzcGxpdHRpbmcgb24gdGhlIGRlbGltaXRlciB5b3Vyc2VsZi5cbmV4cG9ydCB7IHBhdGhTZWdtZW50cyB9IGZyb20gJy4vbGliL21lbW9yeS91dGlscy5qcyc7XG5cbi8vIFRoZSByZWZ1c2FsIHRoZSBjb21taXQtbG9nIHJlYWRlcnMgcmFpc2UgZm9yIGEgcm93IHdob3NlIHZlcmIgaXMgbm90XG4vLyBzZXQgfCBtZXJnZSB8IGFwcGVuZCB8IGRlbGV0ZSAoYGNvbW1pdFZhbHVlQXRgLCBgYXJyYXlQcm92ZW5hbmNlYCwgYW5kXG4vLyBgYXBwbHlTbWFydE1lcmdlYCBiZWxvdyk6IGEgZm9yZWlnbiBvciBjb3JydXB0ZWQgbG9nIGZhaWxzIGxvdWRseSxcbi8vIG5hbWluZyB0aGUgcm93LCBpbnN0ZWFkIG9mIGJlaW5nIGZvbGRlZCBhcyBhIG1lcmdlLlxuZXhwb3J0IHsgVW5rbm93blZlcmJFcnJvciB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5cbi8vIFRoZSByZWNvcmQncyBvd24gc2hhcGVzIOKAlCBvbmUgYnVuZGxlIHBlciBleGVjdXRlZCBzdGFnZSAoYENvbW1pdEJ1bmRsZWApLCBpdHNcbi8vIHJvd3MgKGBUcmFjZUVudHJ5YCkgYW5kIGl0cyB2YWx1ZSBwYXRjaGVzIChgTWVtb3J5UGF0Y2hgKSDigJQgYW5kIHRoZSBvbmUgZm9sZFxuLy8gb2YgYSBidW5kbGUgb250byBhIHN0YXRlIHRoYXQgaGFuZHMgYmFjayBhIGZ1bGx5IGRldGFjaGVkIHJlc3VsdFxuLy8gKGBhcHBseVNtYXJ0TWVyZ2VgLCB0aGUgdmVyYiBsYXcncyBwdWJsaWMgZG9vcikuIEFsc28gb24gYC9hZHZhbmNlZGAgdW50aWwgMTAuMC4wO1xuLy8gYSByZWNvcmQgaXMgV1JJVFRFTiB0aHJvdWdoIGBmb290cHJpbnRqcy93cml0ZWAuIFNlZSBkb2NzL2d1aWRlcy9yZWNvcmQtY29udHJhY3QubWQuXG5leHBvcnQgdHlwZSB7IENvbW1pdEJ1bmRsZSwgTWVtb3J5UGF0Y2gsIFRyYWNlRW50cnkgfSBmcm9tICcuL2xpYi9tZW1vcnkvdHlwZXMuanMnO1xuZXhwb3J0IHsgYXBwbHlTbWFydE1lcmdlIH0gZnJvbSAnLi9saWIvbWVtb3J5L3ZlcmJzLmpzJztcblxuLy8gQ29tbWl0IGxvZyBxdWVyaWVzIOKAlCB0eXBlZCB1dGlsaXRpZXMgZm9yIGJhY2t0cmFja2luZy5cbi8vIGNvbW1pdFZhbHVlQXQgcmVjb25zdHJ1Y3RzIHRoZSBGVUxMIHZhbHVlIG9mIGEga2V5IGF0IGEgY29tbWl0IGluZGV4IOKAlFxuLy8gcmVxdWlyZWQgdW5kZXIgYGNvbW1pdFZhbHVlczogJ2RlbHRhJ2AgKCMxM2MtQiksIHdoZXJlIGFuIGBhcHBlbmRgXG4vLyBidW5kbGUncyBgb3ZlcndyaXRlW2tleV1gIGhvbGRzIG9ubHkgdGhlIHRhaWwuXG5leHBvcnQgdHlwZSB7XG4gIFZhbHVlQmFzaXMsXG4gIFZhbHVlQmFzaXNPcHRpb25zLFxuICBWYWx1ZVdpdGhCYXNpcyxcbiAgV3JpdGVyQmFzaXMsXG4gIFdyaXRlcldpdGhCYXNpcyxcbn0gZnJvbSAnLi9saWIvbWVtb3J5L2NvbW1pdExvZ1V0aWxzLmpzJztcbmV4cG9ydCB7XG4gIGJ1aWxkQ29tbWl0SW5kZXgsXG4gIGNvbW1pdEluZGV4T2YsXG4gIGNvbW1pdFZhbHVlQXQsXG4gIGNvbW1pdFZhbHVlQXRXaXRoQmFzaXMsXG4gIGZpbmRDb21taXQsXG4gIGZpbmRDb21taXRzLFxuICBmaW5kTGFzdFdyaXRlcixcbiAgZmluZExhc3RXcml0ZXJXaXRoQmFzaXMsXG4gIC8vIE9uZSBzdGFnZSwgb25lIHJlY29yZCAoRjgsIDkuMzkuMCk6IGRvZXMgYSBsb2cgcmVjb3JkIGl0cyBjb250aW51YXRpb25zXG4gIC8vIChgQ29tbWl0QnVuZGxlLnBoYXNlYCksIGFuZCDigJQgZm9yIGEgbG9nIHdyaXR0ZW4gYmVmb3JlIGl0IOKAlCB0aGUgT05FIGxlZ2FjeVxuICAvLyByZWFkZXIgdGhhdCBpbmZlcnMgdGhlbSB0aGUgd2F5IDkuMzguMCBkaWQuXG4gIGluZmVyTGVnYWN5UGhhc2VzLFxuICByZWNvcmRzUGhhc2VzLFxufSBmcm9tICcuL2xpYi9tZW1vcnkvY29tbWl0TG9nVXRpbHMuanMnO1xuZXhwb3J0IHR5cGUgeyBDb21taXRQaGFzZSB9IGZyb20gJy4vbGliL21lbW9yeS90eXBlcy5qcyc7XG5cbi8vIOKUgOKUgCB0aW1lLXRyYXZlbC8g4oCUIHRoZSBSRUFERVInUyBjdXJzb3Igb3ZlciBhIGZpbmlzaGVkIHRyYWNlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gQSBUcmFjZSBpcyB3aGF0IHRoZSBydW4gcmVjb3JkZWQ7IHRpbWUgdHJhdmVsIGlzIGEgY3Vyc29yIG92ZXIgaXQgd2l0aCBhXG4vLyBGb2xkIGF0IGVhY2ggc3RvcC4gSXQgaXMgTk9UIHRoZSBlbmdpbmUncyB3YWxrIGFuZCBuZXZlciBiZWNvbWVzIGEgc2Vjb25kXG4vLyBsaXZlIGN1cnNvcjogZXZlcnl0aGluZyBiZWxvdyBpcyBhIHJlYWQtdGltZSBxdWVyeSBvdmVyIGFscmVhZHktY29sbGVjdGVkXG4vLyBkYXRhLlxuLy9cbi8vIGBzdGF0ZUF0KHNuYXBzaG90IHwgc3VidHJlZSwgY29tbWl0SWR4KWAgaXMgdGhlIGZvbGQg4oCUIHRoZSBydW4nc1xuLy8gYGluaXRpYWxTdGF0ZWAgcmVwbGF5ZWQgdGhyb3VnaCBgY29tbWl0TG9nWzAuLmNvbW1pdElkeF1gIHdpdGggdGhlIFNBTUUgdmVyYlxuLy8gc3dpdGNoIHRoZSBsaXZlIGNvbW1pdCB1c2VzLCByZXR1cm5lZCBkZXRhY2hlZCBhbmQgZnJvemVuLCBhbmQgaG9uZXN0IGFib3V0XG4vLyBob3cgaXQgd2FzIGRlcml2ZWQgKGBiYXNpc2ApIGFuZCB3aGVyZSB0aGUgbG9nIHdhcyBzY3J1YmJlZCAoYHJlZGFjdGVkYCkuXG4vL1xuLy8gYHRpbWVUcmF2ZWwoc25hcHNob3QpYCBpcyB0aGUgY3Vyc29yOiBzdG9wcywgcHJldi9uZXh0L2p1bXBUbywgbWFya3MgYmVzaWRlXG4vLyB0aGUgbG9nLCBhbmQgYGRyaWxsKG1vdW50KWAgaW50byBhIHN1YmZsb3cncyBvd24gbG9nIOKAlCB0aGUgc2FtZSBpbnRlcmZhY2UsXG4vLyBpdHMgb3duIGJhc2UuIEhvdyBzdG9wcyBhcmUgREVSSVZFRCBpcyB0aGUgc2VhbSAoYFRpbWVUcmF2ZWxTdHJhdGVneWApO1xuLy8gZm9vdHByaW50anMgc2hpcHMgYGNvbW1pdFN0b3BzYCAob25lIHN0b3AgcGVyIGV4ZWN1dGVkIHN0YWdlKSBiZWNhdXNlIHRoYXRcbi8vIGlzIHRoZSBvbmx5IHN0b3AgZ3JhbW1hciB0aGUgc3Vic3RyYXRlIGl0c2VsZiBrbm93cyDigJQgYW5kLCBzaW5jZSA5LjIxLjAsXG4vLyBgdGFnU3RvcHModGFncz8pYDogdGhlIHN0b3BzIGEgY2hhcnQgREVDTEFSRUQgYXQgYnVpbGQgdGltZSAoYC50YWcoKWApLFxuLy8gcmVhZCBiYWNrIG9mZiBgQ29tbWl0QnVuZGxlLnRhZ3NgLCBzbyBhIHN0b3JlZCByZWNvcmRpbmcgc2NydWJzIGJ5IGl0cyBvd25cbi8vIG1pbGVzdG9uZXMgd2l0aCBubyBpZCBjb252ZW50aW9ucyBpbiB0aGUgcmVhZGVyLlxuLy8gU2VlIHNyYy9saWIvdGltZS10cmF2ZWwvUkVBRE1FLm1kLlxuZXhwb3J0IHR5cGUge1xuICBBeGlzUmVmdXNhbCxcbiAgQXhpc1NwbGl0LFxuICBCb29rZW5kZWRBeGlzLFxuICBGb2xkQmFzaXMsXG4gIEZvbGRlZFN0YXRlLFxuICBGb2xkU291cmNlLFxuICBMb2dHYXAsXG4gIE1hcmssXG4gIE1vdmUsXG4gIE1vdmVSZWZ1c2FsLFxuICBTdG9wLFxuICBTdG9wRmlsdGVyLFxuICBTdG9wS2luZCxcbiAgVGltZVRyYXZlbCxcbiAgVGltZVRyYXZlbE9wdGlvbnMsXG4gIFRpbWVUcmF2ZWxTb3VyY2UsXG4gIFRpbWVUcmF2ZWxTdHJhdGVneSxcbn0gZnJvbSAnLi9saWIvdGltZS10cmF2ZWwvaW5kZXguanMnO1xuZXhwb3J0IHtcbiAgY29tbWl0U3RvcHMsXG4gIGNvbW1pdFN0b3BzU3RyYXRlZ3ksXG4gIGZpbHRlclN0b3BzLFxuICBpc0NvbW1pdEJ1bmRsZSxcbiAgc3BsaXRBeGlzLFxuICBzdGF0ZUF0LFxuICB0YWdTdG9wcyxcbiAgdGltZVRyYXZlbCxcbn0gZnJvbSAnLi9saWIvdGltZS10cmF2ZWwvaW5kZXguanMnO1xuXG4vLyBDYXVzYWwgY2hhaW4g4oCUIGJhY2t3YXJkIHByb2dyYW0gc2xpY2luZyBvbiBjb21taXQgbG9nIChEQUcpLlxuLy8gUkZDLTAwMyBEMzogYENhdXNhbEVkZ2VgICh0eXBlZC9rZXllZC93ZWlnaHRlZCBwYXJlbnQgbGlua3Mgb25cbi8vIGBDYXVzYWxOb2RlLnBhcmVudEVkZ2VzYCkgKyB0aGUgYGNvbnRyb2xEZXBzYCBvcHRpb24gKGBDb250cm9sRGVwTG9va3VwYClcbi8vIGFkZCBjb250cm9sLWRlcGVuZGVuY2UgZWRnZXMgdG8gdGhlIHNsaWNlLlxuZXhwb3J0IHR5cGUge1xuICBDYXVzYWxDaGFpbk9wdGlvbnMsXG4gIENhdXNhbEVkZ2UsXG4gIENhdXNhbE5vZGUsXG4gIENvbnRyb2xEZXBlbmRlbmN5LFxuICBDb250cm9sRGVwTG9va3VwLFxuICBFZGdlV2VpZ2hlcixcbiAgS2V5c1JlYWRMb29rdXAsXG59IGZyb20gJy4vbGliL21lbW9yeS9iYWNrdHJhY2suanMnO1xuZXhwb3J0IHsgY2F1c2FsQ2hhaW4sIGZsYXR0ZW5DYXVzYWxEQUcsIGZvcm1hdENhdXNhbENoYWluIH0gZnJvbSAnLi9saWIvbWVtb3J5L2JhY2t0cmFjay5qcyc7XG4vLyBSRkMtMDAzIEQyIOKAlCBob25lc3R5IG1hcmtlcnM6IHRoZSB1bnRyYWNrZWQgcmVhZCBwYXRocyBhIHN0YWdlIGNvbnN1bWVkXG4vLyAoYENvbW1pdEJ1bmRsZS51bnRyYWNrZWRTb3VyY2VzYCDihpIgYENhdXNhbE5vZGUuaW5jb21wbGV0ZVNvdXJjZXNgKS5cbmV4cG9ydCB0eXBlIHsgVW50cmFja2VkU291cmNlIH0gZnJvbSAnLi9saWIvbWVtb3J5L3R5cGVzLmpzJztcblxuLy8g4pSA4pSAIHNsaWNlLyDigJQgdmFyaWFibGUtZmlyc3Qgc2xpY2luZywgYm90aCBkaXJlY3Rpb25zICh0cmlhZ2UgcXVlcnkgbGF5ZXIpIOKUgOKUgFxuLy8gT25lIGNvbnRyYWN0IGZvciBldmVyeSB0cmlhZ2Ugc3VyZmFjZSAoVUkgcGFuZWwsIExMTSB0b29sLCBvZmZsaW5lXG4vLyBhdXRvcHN5IGFnZW50KTogdmFyaWFibGUgaW4g4oaSIHNsaWNlIG91dC5cbi8vXG4vLyBCQUNLV0FSRCDigJQgYHNsaWNlRm9yS2V5YCBhbmNob3JzIGF0IHRoZSBrZXkncyBsYXN0IHdyaXRlciB0aGVuIGRlbGVnYXRlc1xuLy8gdG8gY2F1c2FsQ2hhaW47IGBhcnJheVByb3ZlbmFuY2VgIC8gYGVsZW1lbnRQcm92ZW5hbmNlYCAoYXBwZW5kLWZvbGQpXG4vLyBhbnN3ZXIgZWxlbWVudC1sZXZlbCBxdWVzdGlvbnMgbGlrZSBcIndoaWNoIHN0YWdlIHByb2R1Y2VkIGhpc3RvcnlbN10/XCIg4oCUXG4vLyB0aGUgZml4IGZvciB0aGUgYWdlbnQgbWVnYS1rZXkgcHJvYmxlbSwgd2l0aCBob25lc3QgYXR0cmlidXRpb24gbGFiZWxzLlxuLy9cbi8vIEZPUldBUkQg4oCUIGBmb3J3YXJkU2xpY2VGb3JLZXlgIHdhbGtzIHRoZSBvdGhlciB3YXk6IGZyb20gYSB3cml0ZSwgdGhyb3VnaFxuLy8gdGhlIHZhbHVlJ3MgTElWRSBSQU5HRSAoaXQgbGl2ZXMgdW50aWwgdGhlIGtleSdzIG5leHQgd3JpdGUpLCB0byBldmVyeVxuLy8gc3RhZ2UgdGhhdCByZWFkIGl0IGFuZCBldmVyeSB3cml0ZSB0aG9zZSByZWFkcyBmZWQuIGBrZXlUaW1lbGluZWAgaXMgdGhlXG4vLyBmbGF0IGNocm9ub2xvZ2ljYWwgdmlldyBvZiB0aGUgc2FtZSBmYWN0cy4gRmVkIGVkZ2VzIGFyZSBFWEFDVCB1bmRlciB0aGVcbi8vIGB3cml0ZVByb3ZlbmFuY2U6ICdyZWFkcy1wcmVmaXgnYCBkaWFsIGFuZCBzdGFtcGVkIENPTlNFUlZBVElWRSB3aXRob3V0XG4vLyBpdCDigJQgbmV2ZXIgdGhlIG90aGVyIHdheSByb3VuZC4gU2VlIHNyYy9saWIvc2xpY2UvUkVBRE1FLm1kLlxuZXhwb3J0IHR5cGUge1xuICBBcnJheVByb3ZlbmFuY2UsXG4gIEF0dHJpYnV0aW9uQmFzaXMsXG4gIEVsZW1lbnRCaXJ0aCxcbiAgRmVkQmFzaXMsXG4gIEZvcndhcmRFZGdlLFxuICBGb3J3YXJkTm9kZSxcbiAgRm9yd2FyZFJlYWQsXG4gIEZvcndhcmRTbGljZSxcbiAgRm9yd2FyZFNsaWNlSlNPTixcbiAgSG9uZXN0eU5vdGUsXG4gIEhvbmVzdHlOb3RlQ29kZSxcbiAgS2V5TW9tZW50LFxuICBLZXlzUmVhZFNvdXJjZSxcbiAgS2V5VGltZWxpbmUsXG4gIE1pc3NpbmdQcm92ZW5hbmNlUmVhc29uLFxuICBNaXNzaW5nU2xpY2VSZWFzb24sXG4gIFJlYWRzQ292ZXJhZ2UsXG4gIFNsaWNlSlNPTixcbiAgU3RhdGVLZXksXG4gIFZhcmlhYmxlU2xpY2UsXG59IGZyb20gJy4vbGliL3NsaWNlL2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHsgRm9yd2FyZFNsaWNlRm9yS2V5T3B0aW9ucywgS2V5VGltZWxpbmVPcHRpb25zLCBTbGljZUZvcktleU9wdGlvbnMgfSBmcm9tICcuL2xpYi9zbGljZS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBhcnJheVByb3ZlbmFuY2UsXG4gIGVsZW1lbnRQcm92ZW5hbmNlLFxuICBmb3JtYXRGb3J3YXJkU2xpY2UsXG4gIGZvcm1hdFNsaWNlLFxuICBmb3JtYXRUaW1lbGluZSxcbiAgZm9yd2FyZFNsaWNlRm9yS2V5LFxuICBmb3J3YXJkU2xpY2VUb0pTT04sXG4gIGtleXNSZWFkRnJvbUV4ZWN1dGlvblRyZWUsXG4gIGtleXNSZWFkRnJvbU1hcCxcbiAga2V5VGltZWxpbmUsXG4gIG5vcm1hbGlzZVN0YXRlS2V5LFxuICByZXNvbHZlS2V5c1JlYWRTb3VyY2UsXG4gIHNsaWNlRm9yS2V5LFxuICBzbGljZVRvSlNPTixcbn0gZnJvbSAnLi9saWIvc2xpY2UvaW5kZXguanMnO1xuXG4vLyDilIDilIAgaG9uZXN0eSDigJQgdGhlIE9ORSByZWdpc3RyeSBvZiB3aGF0IGEgcmVhZGVyIGNhbm5vdCBzZWUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBUaGUgaG9uZXN0eSBzaWduYWxzIHRoaXMgZG9vcidzIHJlYWRlcnMgcHJvZHVjZSDigJQgYSBzbGljZSdzIGBIb25lc3R5Tm90ZS5jb2RlYCBhbmQgYG1pc3NpbmdgXG4vLyByZWFzb24sIGEgZmVkIGVkZ2UncyBhbmQgYW4gZWxlbWVudCBiaXJ0aCdzIGBiYXNpc2AsIGEgZm9sZCdzIGBiYXNpc2AgYW5kIGByZWRhY3RlZGAgcGF0aHMsIGFcbi8vIGBMb2dHYXBgLCBhIGNhdXNhbCBub2RlJ3MgYGluY29tcGxldGVTb3VyY2VzYCBhbmQgYHRydW5jYXRlZGAg4oCUIGVhY2ggaGFzIGEgY29kZSBoZXJlIGFuZCB0aGUgT05FXG4vLyBzZW50ZW5jZSB0aGF0IHNheXMgd2hhdCBpdCBtZWFucywgc28gYSBsZW5zIG9yIGFuIGFnZW50IHRvb2wgZXhwbGFpbnMgYW55IG9mIHRoZW0gZnJvbSBvbmUgcGxhY2Vcbi8vIGluc3RlYWQgb2Yga2VlcGluZyBpdHMgb3duIHRhYmxlLiBUaGUgdW5pb25zIG9mIHRob3NlIGNvZGVzIGV4cG9ydGVkIGFib3ZlIChgSG9uZXN0eU5vdGVDb2RlYCxcbi8vIGBNaXNzaW5nU2xpY2VSZWFzb25gLCBgTWlzc2luZ1Byb3ZlbmFuY2VSZWFzb25gLCBgRmVkQmFzaXNgLCBgQXR0cmlidXRpb25CYXNpc2AsIGBGb2xkQmFzaXNgKSBhcmVcbi8vIHN1YnNldHMgb2YgYEhvbmVzdHlDb2RlYCwgYW5kIHRlc3QvYXJjaGl0ZWN0dXJlL2hvbmVzdHktdm9jYWJ1bGFyeS50ZXN0LnRzIGZhaWxzIG9uIGEgdW5pb24gb2Zcbi8vIHN0cmluZyBsaXRlcmFscyB0aGlzIGRvb3IgZXhwb3J0cyB0aGF0IGlzIG5laXRoZXIgcmVnaXN0ZXJlZCBub3IgbmFtZWQgdGhlcmUgYXMgYSBkaWZmZXJlbnQga2luZFxuLy8gb2Ygd29yZC4gU2VlIHNyYy9saWIvbWVtb3J5L1JFQURNRS5tZC5cbmV4cG9ydCB0eXBlIHsgSG9uZXN0eUNvZGUgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgSE9ORVNUWV9DT0RFUyB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5cbi8vIOKUgOKUgCB2NSBTdG9yZXMgKGNvbmNyZXRlLCBjb21wb3NhYmxlIOKAlCBwcmltYXJ5IHJlY29yZGVyIEFQSSkg4pSA4pSA4pSA4pSA4pSAXG4vLyBDb21wb3NlIHRoZXNlIHZpYSBgbmV3IFN0b3JlPFQ+KClgIGFzIGEgZmllbGQgb24geW91ciByZWNvcmRlclxuLy8gY2xhc3MuIE9uZSBwdXJwb3NlIHBlciByZWNvcmRlcjogc3RvcmVzIGFyZSBzdG9yYWdlOyByZWNvcmRlcnNcbi8vIGFyZSBldmVudC1ob29rIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbnMuXG5leHBvcnQgeyBCb3VuZGFyeVN0YXRlU3RvcmUgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9Cb3VuZGFyeVN0YXRlU3RvcmUuanMnO1xuZXhwb3J0IHsgS2V5ZWRTdG9yZSB9IGZyb20gJy4vbGliL3JlY29yZGVyL0tleWVkU3RvcmUuanMnO1xuZXhwb3J0IHsgU2VxdWVuY2VTdG9yZSB9IGZyb20gJy4vbGliL3JlY29yZGVyL1NlcXVlbmNlU3RvcmUuanMnO1xuXG4vLyDilIDilIAgdjUuMSBDb21taXQgZ3JvdXBpbmcgcHJpbWl0aXZlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gSW50ZXJ2YWwgaW5kZXggb3ZlciBjb21taXQgaW5kaWNlcy4gQnVpbHQgaW5jcmVtZW50YWxseSBkdXJpbmdcbi8vIHRyYXZlcnNhbDogb3BlbigpIG9uIGJvdW5kYXJ5IGVudHJ5LCBjbG9zZSgpIG9uIGV4aXQuIFF1ZXJ5IGF0IGFueVxuLy8gY29tbWl0IHBvc2l0aW9uIHdpdGggZW5jbG9zaW5nKCkvb3ZlcmxhcHBpbmcoKS4gR2VuZXJpYyBvdmVyIFRMYWJlbFxuLy8g4oCUIGZvb3RwcmludGpzIG93bnMgWkVSTyBrbm93bGVkZ2Ugb2Ygd2hhdCBjb25zdW1lcnMgdXNlIGFzIGxhYmVscy5cbi8vIFNlZSBkb2NzL2Rlc2lnbi9jb21taXQtcmFuZ2UtaW5kZXgubWQgZm9yIHRoZSBmdWxsIGNvbnRyYWN0LlxuZXhwb3J0IHR5cGUgeyBSYW5nZUVudHJ5LCBSYW5nZVRva2VuIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvQ29tbWl0UmFuZ2VJbmRleC5qcyc7XG5leHBvcnQgeyBDb21taXRSYW5nZUluZGV4IH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvQ29tbWl0UmFuZ2VJbmRleC5qcyc7XG5cbi8vIFRvcG9sb2d5UmVjb3JkZXIg4oCUIGNvbXBvc2l0aW9uIGdyYXBoIGFjY3VtdWxhdG9yIChzdWJmbG93cyArIGNvbnRyb2wtZmxvdyBlZGdlcylcbmV4cG9ydCB0eXBlIHtcbiAgVG9wb2xvZ3ksXG4gIFRvcG9sb2d5RWRnZSxcbiAgVG9wb2xvZ3lJbmNvbWluZ0tpbmQsXG4gIFRvcG9sb2d5Tm9kZSxcbiAgVG9wb2xvZ3lSZWNvcmRlck9wdGlvbnMsXG59IGZyb20gJy4vbGliL3JlY29yZGVyL1RvcG9sb2d5UmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgVG9wb2xvZ3lSZWNvcmRlciwgdG9wb2xvZ3lSZWNvcmRlciB9IGZyb20gJy4vbGliL3JlY29yZGVyL1RvcG9sb2d5UmVjb3JkZXIuanMnO1xuXG4vLyBJbk91dFJlY29yZGVyIOKAlCBjaGFydCBpbi9vdXQgc3RyZWFtIChlbnRyeS9leGl0IHBhaXJzIGF0IGV2ZXJ5IGNoYXJ0IGJvdW5kYXJ5LFxuLy8gaW5jbHVkaW5nIHRoZSB0b3AtbGV2ZWwgcnVuIGFuZCBldmVyeSBzdWJmbG93KVxuZXhwb3J0IHR5cGUgeyBJbk91dEVudHJ5LCBJbk91dFBoYXNlLCBJbk91dFJlY29yZGVyT3B0aW9ucyB9IGZyb20gJy4vbGliL3JlY29yZGVyL0luT3V0UmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgSW5PdXRSZWNvcmRlciwgaW5PdXRSZWNvcmRlciwgUk9PVF9SVU5USU1FX1NUQUdFX0lELCBST09UX1NVQkZMT1dfSUQgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9Jbk91dFJlY29yZGVyLmpzJztcblxuLy8gQ29udHJvbERlcFJlY29yZGVyIOKAlCBjb250cm9sLWRlcGVuZGVuY2UgdHJhY2tpbmcgKFJGQy0wMDMgRDUpOiByZWNvcmRzXG4vLyBvbkRlY2lzaW9uL29uU2VsZWN0ZWQgKyB0aGUgRDEgcnVudGltZSBhbmNlc3RvciBjaGFpbiwgYW5zd2VycyBcIndoaWNoXG4vLyBkZWNpc2lvbiBhbGxvd2VkIHRoaXMgc3RhZ2UgdG8gcnVuP1wiIOKAlCB0aGUgYnVpbHQtaW4gcHJvZHVjZXIgZm9yXG4vLyBjYXVzYWxDaGFpbidzIGBjb250cm9sRGVwc2Agb3B0aW9uLlxuZXhwb3J0IHR5cGUgeyBDb250cm9sRGVjaXNpb25SZWNvcmQsIENvbnRyb2xEZXBSZWNvcmRlck9wdGlvbnMgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9Db250cm9sRGVwUmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgQ29udHJvbERlcFJlY29yZGVyLCBjb250cm9sRGVwUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9Db250cm9sRGVwUmVjb3JkZXIuanMnO1xuXG4vLyBRdWFsaXR5UmVjb3JkZXIg4oCUIHBlci1zdGVwIHF1YWxpdHkgc2NvcmluZyB3aXRoIGJhY2t0cmFja2luZ1xuZXhwb3J0IHR5cGUgeyBRdWFsaXR5RW50cnksIFF1YWxpdHlSZWNvcmRlck9wdGlvbnMsIFF1YWxpdHlTY29yaW5nRm4gfSBmcm9tICcuL2xpYi9yZWNvcmRlci9RdWFsaXR5UmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgUXVhbGl0eVJlY29yZGVyIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvUXVhbGl0eVJlY29yZGVyLmpzJztcblxuLy8gcXVhbGl0eVRyYWNlIOKAlCBRdWFsaXR5IFN0YWNrIFRyYWNlIChiYWNrdHJhY2sgZnJvbSBsb3ctc2NvcmluZyBzdGVwcylcbmV4cG9ydCB0eXBlIHsgUXVhbGl0eUZyYW1lLCBRdWFsaXR5U3RhY2tUcmFjZSB9IGZyb20gJy4vbGliL3JlY29yZGVyL3F1YWxpdHlUcmFjZS5qcyc7XG5leHBvcnQgeyBmb3JtYXRRdWFsaXR5VHJhY2UsIHF1YWxpdHlUcmFjZSB9IGZyb20gJy4vbGliL3JlY29yZGVyL3F1YWxpdHlUcmFjZS5qcyc7XG4iXX0=
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* footprintjs/write — the public way to write a record.
|
|
3
|
+
*
|
|
4
|
+
* A record is what a run wrote: a frozen base and an append-only log of bundles, one per step
|
|
5
|
+
* (docs/guides/record-contract.md). This door hands out the classes the engine itself writes one
|
|
6
|
+
* with — there is no wrapper, so a record written here and one a flowchart wrote come from the same
|
|
7
|
+
* code and the same bytes:
|
|
8
|
+
*
|
|
9
|
+
* - `SharedMemory` — the heap: live state, one generation per commit (copy-on-write);
|
|
10
|
+
* - `EventLog` — the log: the fold base and the bundles, frozen as they are recorded;
|
|
11
|
+
* - `RecordFrame` — one step's frame: what it read (`read`, `noteRead`), what it staged
|
|
12
|
+
* (`write`, with a redaction verdict's bytes as `WriteScrub`), and its
|
|
13
|
+
* commit onto the heap and the log (`commit`, named by a `CommitStamp`).
|
|
14
|
+
*
|
|
15
|
+
* The step's encoding is two dials (`RecordEncoding`): `commitValues` (`'full'` | `'delta'`) and
|
|
16
|
+
* `writeProvenance` (`'off'` | `'reads-prefix'`, `WriteProvenanceMode`).
|
|
17
|
+
*
|
|
18
|
+
* Every type this door names is the record's own: nothing here loads or names the engine
|
|
19
|
+
* (test/architecture/write-door.test.ts). Its names and the bytes they write are promised under the
|
|
20
|
+
* record fixtures' re-pin policy (test/fixtures/README.md): a refactor never moves a byte.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* import { EventLog, RecordFrame, SharedMemory } from 'footprintjs/write';
|
|
25
|
+
* import { stateAt } from 'footprintjs/trace';
|
|
26
|
+
*
|
|
27
|
+
* const state = new SharedMemory(undefined, { count: 0 }); // the heap, seeded
|
|
28
|
+
* const log = new EventLog(state.getState()); // its fold base is the seed
|
|
29
|
+
*
|
|
30
|
+
* const frame = new RecordFrame(state, log); // one step, at the root
|
|
31
|
+
* frame.useEncoding({ commitValues: 'full', writeProvenance: 'reads-prefix' });
|
|
32
|
+
* const count = frame.read([], 'count') as number;
|
|
33
|
+
* frame.noteRead([], 'count'); // the bundle names the read
|
|
34
|
+
* frame.write(frame.at([], 'count'), count + 1, 'set');
|
|
35
|
+
* frame.commit(() => ({ stage: 'Increment', stageId: 'increment', runtimeStageId: 'increment#0' }));
|
|
36
|
+
*
|
|
37
|
+
* stateAt({ initialState: log.getInitialState(), commitLog: log.list() }, 0).state; // { count: 1 }
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @module write
|
|
41
|
+
*/
|
|
42
|
+
export { EventLog } from './lib/memory/EventLog.js';
|
|
43
|
+
export { SharedMemory } from './lib/memory/SharedMemory.js';
|
|
44
|
+
export type { CommitStamp } from './lib/memory/recordCommit.js';
|
|
45
|
+
export type { RecordEncoding, WriteScrub, WriteVerb } from './lib/memory/RecordFrame.js';
|
|
46
|
+
export { RecordFrame } from './lib/memory/RecordFrame.js';
|
|
47
|
+
export type { WriteProvenanceMode } from './lib/memory/types.js';
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* footprintjs/write — the public way to write a record.
|
|
3
|
+
*
|
|
4
|
+
* A record is what a run wrote: a frozen base and an append-only log of bundles, one per step
|
|
5
|
+
* (docs/guides/record-contract.md). This door hands out the classes the engine itself writes one
|
|
6
|
+
* with — there is no wrapper, so a record written here and one a flowchart wrote come from the same
|
|
7
|
+
* code and the same bytes:
|
|
8
|
+
*
|
|
9
|
+
* - `SharedMemory` — the heap: live state, one generation per commit (copy-on-write);
|
|
10
|
+
* - `EventLog` — the log: the fold base and the bundles, frozen as they are recorded;
|
|
11
|
+
* - `RecordFrame` — one step's frame: what it read (`read`, `noteRead`), what it staged
|
|
12
|
+
* (`write`, with a redaction verdict's bytes as `WriteScrub`), and its
|
|
13
|
+
* commit onto the heap and the log (`commit`, named by a `CommitStamp`).
|
|
14
|
+
*
|
|
15
|
+
* The step's encoding is two dials (`RecordEncoding`): `commitValues` (`'full'` | `'delta'`) and
|
|
16
|
+
* `writeProvenance` (`'off'` | `'reads-prefix'`, `WriteProvenanceMode`).
|
|
17
|
+
*
|
|
18
|
+
* Every type this door names is the record's own: nothing here loads or names the engine
|
|
19
|
+
* (test/architecture/write-door.test.ts). Its names and the bytes they write are promised under the
|
|
20
|
+
* record fixtures' re-pin policy (test/fixtures/README.md): a refactor never moves a byte.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* import { EventLog, RecordFrame, SharedMemory } from 'footprintjs/write';
|
|
25
|
+
* import { stateAt } from 'footprintjs/trace';
|
|
26
|
+
*
|
|
27
|
+
* const state = new SharedMemory(undefined, { count: 0 }); // the heap, seeded
|
|
28
|
+
* const log = new EventLog(state.getState()); // its fold base is the seed
|
|
29
|
+
*
|
|
30
|
+
* const frame = new RecordFrame(state, log); // one step, at the root
|
|
31
|
+
* frame.useEncoding({ commitValues: 'full', writeProvenance: 'reads-prefix' });
|
|
32
|
+
* const count = frame.read([], 'count') as number;
|
|
33
|
+
* frame.noteRead([], 'count'); // the bundle names the read
|
|
34
|
+
* frame.write(frame.at([], 'count'), count + 1, 'set');
|
|
35
|
+
* frame.commit(() => ({ stage: 'Increment', stageId: 'increment', runtimeStageId: 'increment#0' }));
|
|
36
|
+
*
|
|
37
|
+
* stateAt({ initialState: log.getInitialState(), commitLog: log.list() }, 0).state; // { count: 1 }
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @module write
|
|
41
|
+
*/
|
|
42
|
+
// The heap and the log.
|
|
43
|
+
export { EventLog } from './lib/memory/EventLog.js';
|
|
44
|
+
export { SharedMemory } from './lib/memory/SharedMemory.js';
|
|
45
|
+
export { RecordFrame } from './lib/memory/RecordFrame.js';
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd3JpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Q0c7QUFFSCx3QkFBd0I7QUFDeEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUs1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGZvb3RwcmludGpzL3dyaXRlIOKAlCB0aGUgcHVibGljIHdheSB0byB3cml0ZSBhIHJlY29yZC5cbiAqXG4gKiBBIHJlY29yZCBpcyB3aGF0IGEgcnVuIHdyb3RlOiBhIGZyb3plbiBiYXNlIGFuZCBhbiBhcHBlbmQtb25seSBsb2cgb2YgYnVuZGxlcywgb25lIHBlciBzdGVwXG4gKiAoZG9jcy9ndWlkZXMvcmVjb3JkLWNvbnRyYWN0Lm1kKS4gVGhpcyBkb29yIGhhbmRzIG91dCB0aGUgY2xhc3NlcyB0aGUgZW5naW5lIGl0c2VsZiB3cml0ZXMgb25lXG4gKiB3aXRoIOKAlCB0aGVyZSBpcyBubyB3cmFwcGVyLCBzbyBhIHJlY29yZCB3cml0dGVuIGhlcmUgYW5kIG9uZSBhIGZsb3djaGFydCB3cm90ZSBjb21lIGZyb20gdGhlIHNhbWVcbiAqIGNvZGUgYW5kIHRoZSBzYW1lIGJ5dGVzOlxuICpcbiAqICAgLSBgU2hhcmVkTWVtb3J5YCDigJQgdGhlIGhlYXA6IGxpdmUgc3RhdGUsIG9uZSBnZW5lcmF0aW9uIHBlciBjb21taXQgKGNvcHktb24td3JpdGUpO1xuICogICAtIGBFdmVudExvZ2AgICAgIOKAlCB0aGUgbG9nOiB0aGUgZm9sZCBiYXNlIGFuZCB0aGUgYnVuZGxlcywgZnJvemVuIGFzIHRoZXkgYXJlIHJlY29yZGVkO1xuICogICAtIGBSZWNvcmRGcmFtZWAgIOKAlCBvbmUgc3RlcCdzIGZyYW1lOiB3aGF0IGl0IHJlYWQgKGByZWFkYCwgYG5vdGVSZWFkYCksIHdoYXQgaXQgc3RhZ2VkXG4gKiAgICAgICAgICAgICAgICAgICAgICAoYHdyaXRlYCwgd2l0aCBhIHJlZGFjdGlvbiB2ZXJkaWN0J3MgYnl0ZXMgYXMgYFdyaXRlU2NydWJgKSwgYW5kIGl0c1xuICogICAgICAgICAgICAgICAgICAgICAgY29tbWl0IG9udG8gdGhlIGhlYXAgYW5kIHRoZSBsb2cgKGBjb21taXRgLCBuYW1lZCBieSBhIGBDb21taXRTdGFtcGApLlxuICpcbiAqIFRoZSBzdGVwJ3MgZW5jb2RpbmcgaXMgdHdvIGRpYWxzIChgUmVjb3JkRW5jb2RpbmdgKTogYGNvbW1pdFZhbHVlc2AgKGAnZnVsbCdgIHwgYCdkZWx0YSdgKSBhbmRcbiAqIGB3cml0ZVByb3ZlbmFuY2VgIChgJ29mZidgIHwgYCdyZWFkcy1wcmVmaXgnYCwgYFdyaXRlUHJvdmVuYW5jZU1vZGVgKS5cbiAqXG4gKiBFdmVyeSB0eXBlIHRoaXMgZG9vciBuYW1lcyBpcyB0aGUgcmVjb3JkJ3Mgb3duOiBub3RoaW5nIGhlcmUgbG9hZHMgb3IgbmFtZXMgdGhlIGVuZ2luZVxuICogKHRlc3QvYXJjaGl0ZWN0dXJlL3dyaXRlLWRvb3IudGVzdC50cykuIEl0cyBuYW1lcyBhbmQgdGhlIGJ5dGVzIHRoZXkgd3JpdGUgYXJlIHByb21pc2VkIHVuZGVyIHRoZVxuICogcmVjb3JkIGZpeHR1cmVzJyByZS1waW4gcG9saWN5ICh0ZXN0L2ZpeHR1cmVzL1JFQURNRS5tZCk6IGEgcmVmYWN0b3IgbmV2ZXIgbW92ZXMgYSBieXRlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBFdmVudExvZywgUmVjb3JkRnJhbWUsIFNoYXJlZE1lbW9yeSB9IGZyb20gJ2Zvb3RwcmludGpzL3dyaXRlJztcbiAqIGltcG9ydCB7IHN0YXRlQXQgfSBmcm9tICdmb290cHJpbnRqcy90cmFjZSc7XG4gKlxuICogY29uc3Qgc3RhdGUgPSBuZXcgU2hhcmVkTWVtb3J5KHVuZGVmaW5lZCwgeyBjb3VudDogMCB9KTsgLy8gdGhlIGhlYXAsIHNlZWRlZFxuICogY29uc3QgbG9nID0gbmV3IEV2ZW50TG9nKHN0YXRlLmdldFN0YXRlKCkpOyAgICAgICAgICAgICAgLy8gaXRzIGZvbGQgYmFzZSBpcyB0aGUgc2VlZFxuICpcbiAqIGNvbnN0IGZyYW1lID0gbmV3IFJlY29yZEZyYW1lKHN0YXRlLCBsb2cpOyAgICAgICAgICAgICAgIC8vIG9uZSBzdGVwLCBhdCB0aGUgcm9vdFxuICogZnJhbWUudXNlRW5jb2RpbmcoeyBjb21taXRWYWx1ZXM6ICdmdWxsJywgd3JpdGVQcm92ZW5hbmNlOiAncmVhZHMtcHJlZml4JyB9KTtcbiAqIGNvbnN0IGNvdW50ID0gZnJhbWUucmVhZChbXSwgJ2NvdW50JykgYXMgbnVtYmVyO1xuICogZnJhbWUubm90ZVJlYWQoW10sICdjb3VudCcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGJ1bmRsZSBuYW1lcyB0aGUgcmVhZFxuICogZnJhbWUud3JpdGUoZnJhbWUuYXQoW10sICdjb3VudCcpLCBjb3VudCArIDEsICdzZXQnKTtcbiAqIGZyYW1lLmNvbW1pdCgoKSA9PiAoeyBzdGFnZTogJ0luY3JlbWVudCcsIHN0YWdlSWQ6ICdpbmNyZW1lbnQnLCBydW50aW1lU3RhZ2VJZDogJ2luY3JlbWVudCMwJyB9KSk7XG4gKlxuICogc3RhdGVBdCh7IGluaXRpYWxTdGF0ZTogbG9nLmdldEluaXRpYWxTdGF0ZSgpLCBjb21taXRMb2c6IGxvZy5saXN0KCkgfSwgMCkuc3RhdGU7IC8vIHsgY291bnQ6IDEgfVxuICogYGBgXG4gKlxuICogQG1vZHVsZSB3cml0ZVxuICovXG5cbi8vIFRoZSBoZWFwIGFuZCB0aGUgbG9nLlxuZXhwb3J0IHsgRXZlbnRMb2cgfSBmcm9tICcuL2xpYi9tZW1vcnkvRXZlbnRMb2cuanMnO1xuZXhwb3J0IHsgU2hhcmVkTWVtb3J5IH0gZnJvbSAnLi9saWIvbWVtb3J5L1NoYXJlZE1lbW9yeS5qcyc7XG5cbi8vIE9uZSBzdGVwJ3MgZnJhbWUsIGFuZCB3aGF0IGl0IHRha2VzOiB0aGUgZGlhbHMsIHRoZSB2ZXJicywgYSB2ZXJkaWN0J3MgYnl0ZXMsIHRoZSBuYW1lcyBvbiBpdHMgYnVuZGxlLlxuZXhwb3J0IHR5cGUgeyBDb21taXRTdGFtcCB9IGZyb20gJy4vbGliL21lbW9yeS9yZWNvcmRDb21taXQuanMnO1xuZXhwb3J0IHR5cGUgeyBSZWNvcmRFbmNvZGluZywgV3JpdGVTY3J1YiwgV3JpdGVWZXJiIH0gZnJvbSAnLi9saWIvbWVtb3J5L1JlY29yZEZyYW1lLmpzJztcbmV4cG9ydCB7IFJlY29yZEZyYW1lIH0gZnJvbSAnLi9saWIvbWVtb3J5L1JlY29yZEZyYW1lLmpzJztcbmV4cG9ydCB0eXBlIHsgV3JpdGVQcm92ZW5hbmNlTW9kZSB9IGZyb20gJy4vbGliL21lbW9yeS90eXBlcy5qcyc7XG4iXX0=
|
package/dist/index.js
CHANGED
|
@@ -5,11 +5,13 @@
|
|
|
5
5
|
* The flowchart pattern for backend code.
|
|
6
6
|
* Build → Run → Observe.
|
|
7
7
|
*
|
|
8
|
-
* **
|
|
8
|
+
* **The common import paths:**
|
|
9
9
|
* ```ts
|
|
10
10
|
* import { flowChart, decide, narrative } from 'footprintjs'; // main — start here
|
|
11
11
|
* import { metrics, debug, manifest } from 'footprintjs/recorders'; // recorder factories
|
|
12
|
-
* import {
|
|
12
|
+
* import { stateAt, causalChain } from 'footprintjs/trace'; // read a finished run
|
|
13
|
+
* import { RecordFrame, EventLog } from 'footprintjs/write'; // write a record yourself
|
|
14
|
+
* import { StageContext } from 'footprintjs/advanced'; // engine internals
|
|
13
15
|
* ```
|
|
14
16
|
*
|
|
15
17
|
* @module
|
|
@@ -129,4 +131,4 @@ Object.defineProperty(exports, "isDevMode", { enumerable: true, get: function ()
|
|
|
129
131
|
// same bytes JSON.stringify emits, for a deep `next` chain it cannot encode.
|
|
130
132
|
var stringifySnapshot_js_1 = require("./lib/runner/stringifySnapshot.js");
|
|
131
133
|
Object.defineProperty(exports, "stringifySnapshot", { enumerable: true, get: function () { return stringifySnapshot_js_1.stringifySnapshot; } });
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHOzs7QUFTSCw0QkFBNEI7QUFDNUIsbURBQXdGO0FBQS9FLHFHQUFBLFNBQVMsT0FBQTtBQUFFLDRHQUFBLGdCQUFnQixPQUFBO0FBQUUsNkdBQUEsaUJBQWlCLE9BQUE7QUE2QnZELDRCQUE0QjtBQUM1QiwrQ0FBMkM7QUFBbEMseUdBQUEsU0FBUyxPQUFBO0FBb0JsQixtQ0FBbUM7QUFDbkMsa0RBQXVEO0FBQTlDLGtHQUFBLE1BQU0sT0FBQTtBQUFFLGtHQUFBLE1BQU0sT0FBQTtBQWtCdkIsb0JBQW9CO0FBQ3BCLGtEQUEwRDtBQUFqRCw2R0FBQSxpQkFBaUIsT0FBQTtBQUUxQixvQkFBb0I7QUFDcEIsa0RBQW1EO0FBQTFDLHNHQUFBLFVBQVUsT0FBQTtBQXFCbkIsK0JBQStCO0FBQy9CLGlEQUFzRDtBQUE3QywwR0FBQSxjQUFjLE9BQUE7QUFFdkIsK0JBQStCO0FBQy9CLGlEQUFxRDtBQUE1Qyx5R0FBQSxhQUFhLE9BQUE7QUFFdEIsb0NBQW9DO0FBQ3BDLG9EQUE0RDtBQUFuRCw2R0FBQSxpQkFBaUIsT0FBQTtBQW1DMUIscUVBQXFFO0FBQ3JFLG9EQUtpQztBQUovQixrSEFBQSxzQkFBc0IsT0FBQTtBQUN0QixrSEFBQSxzQkFBc0IsT0FBQTtBQUN0Qiw4R0FBQSxrQkFBa0IsT0FBQTtBQUNsQix1R0FBQSxXQUFXLE9BQUE7QUFvRGIsK0JBQStCO0FBQy9CLGtEQUE4RDtBQUFyRCxpSEFBQSxxQkFBcUIsT0FBQTtBQUs5QiwrQkFBK0I7QUFDL0IsbURBQTZEO0FBQXBELGlIQUFBLG9CQUFvQixPQUFBO0FBRTdCLCtCQUErQjtBQUMvQixtREFBc0U7QUFBN0QsMEhBQUEsNkJBQTZCLE9BQUE7QUFFdEMsK0JBQStCO0FBQy9CLG1EQUF1RTtBQUE5RCwySEFBQSw4QkFBOEIsT0FBQTtBQUV2QywrQkFBK0I7QUFDL0IsbURBQXlFO0FBQWhFLDZIQUFBLGdDQUFnQyxPQUFBO0FBRXpDLCtCQUErQjtBQUMvQixtREFBaUU7QUFBeEQscUhBQUEsd0JBQXdCLE9BQUE7QUFFakMsK0JBQStCO0FBQy9CLG1EQUFzRTtBQUE3RCwwSEFBQSw2QkFBNkIsT0FBQTtBQUV0QywrQkFBK0I7QUFDL0IsbURBQW9FO0FBQTNELHdIQUFBLDJCQUEyQixPQUFBO0FBRXBDLCtCQUErQjtBQUMvQixtREFBc0U7QUFBN0QsMEhBQUEsNkJBQTZCLE9BQUE7QUFtQnRDLHVDQUF1QztBQUN2QyxtREFBNkU7QUFBcEUsK0dBQUEsa0JBQWtCLE9BQUE7QUFBRSw2R0FBQSxnQkFBZ0IsT0FBQTtBQUU3QywrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLCtFQUErRTtBQUUvRSw4QkFBOEI7QUFDOUIscURBQTREO0FBQW5ELDhHQUFBLGlCQUFpQixPQUFBO0FBMEIxQiw2QkFBNkI7QUFDN0Isa0RBQWlEO0FBQXhDLHNHQUFBLFNBQVMsT0FBQTtBQWlFbEIsc0NBQXNDO0FBQ3RDLG1EQUEyRTtBQUFsRSx5R0FBQSxZQUFZLE9BQUE7QUFBRSwwR0FBQSxhQUFhLE9BQUE7QUFBRSxrR0FBQSxLQUFLLE9BQUE7QUFFM0Msc0NBQXNDO0FBQ3RDLG1EQUFxRztBQUE1RixpSEFBQSxvQkFBb0IsT0FBQTtBQUFFLGtIQUFBLHFCQUFxQixPQUFBO0FBQUUsNEdBQUEsZUFBZSxPQUFBO0FBU3JFLGdDQUFnQztBQUNoQyxtREFBMEU7QUFBakUsNkdBQUEsZ0JBQWdCLE9BQUE7QUFBRSw0R0FBQSxlQUFlLE9BQUE7QUFFMUMsK0VBQStFO0FBQy9FLGlEQUFpRDtBQUNqRCwrRUFBK0U7QUFFL0U7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCwrQ0FBNEU7QUFBbkUsNEdBQUEsY0FBYyxPQUFBO0FBQUUsMkdBQUEsYUFBYSxPQUFBO0FBQUUsdUdBQUEsU0FBUyxPQUFBO0FBRWpELGlGQUFpRjtBQUNqRiw0RUFBNEU7QUFDNUUsc0RBQXNEO0FBQ3RELDRFQUE0RTtBQUM1RSw2RUFBNkU7QUFDN0UsMEVBQXNFO0FBQTdELHlIQUFBLGlCQUFpQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb290UHJpbnQg4oCUIFB1YmxpYyBBUEkgKHYzKVxuICpcbiAqIFRoZSBmbG93Y2hhcnQgcGF0dGVybiBmb3IgYmFja2VuZCBjb2RlLlxuICogQnVpbGQg4oaSIFJ1biDihpIgT2JzZXJ2ZS5cbiAqXG4gKiAqKlRocmVlIGltcG9ydCBwYXRoczoqKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGZsb3dDaGFydCwgZGVjaWRlLCBuYXJyYXRpdmUgfSBmcm9tICdmb290cHJpbnRqcyc7ICAgICAgICAgICAvLyBtYWluIOKAlCBzdGFydCBoZXJlXG4gKiBpbXBvcnQgeyBtZXRyaWNzLCBkZWJ1ZywgbWFuaWZlc3QgfSAgICAgZnJvbSAnZm9vdHByaW50anMvcmVjb3JkZXJzJzsgLy8gcmVjb3JkZXIgZmFjdG9yaWVzXG4gKiBpbXBvcnQgeyBTaGFyZWRNZW1vcnksIFN0YWdlQ29udGV4dCB9ICAgZnJvbSAnZm9vdHByaW50anMvYWR2YW5jZWQnOyAgLy8gaW50ZXJuYWxzXG4gKiBgYGBcbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUXVpY2sgU3RhcnQg4oCUIEV2ZXJ5dGhpbmcgeW91IG5lZWQgZm9yIDkwJSBvZiB1c2UgY2FzZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBRdWljayBTdGFydCAqL1xuZXhwb3J0IHR5cGUgeyBGbG93Q2hhcnQsIFN0YWdlRnVuY3Rpb24gYXMgU3RhZ2VIYW5kbGVyLCBTdHJlYW1IYW5kbGVycyB9IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgeyBmbG93Q2hhcnQsIEZsb3dDaGFydEJ1aWxkZXIsIGZsb3dDaGFydFNlbGVjdG9yIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0XG4gKlxuICogQ29uZmlnIGZvciBgLmFkZFBhcmFsbGVsRm9yRWFjaCgpYCDigJQgb25lIGJyYW5jaCBwZXIgaXRlbSwgYnJhbmNoIGNvdW50XG4gKiBkZWNpZGVkIGF0IHJ1biB0aW1lIGZyb20gdGhlIHBheWxvYWQuIGBtYXhCcmFuY2hlc2AgYW5kIGBpbnRvYCBhcmUgcmVxdWlyZWRcbiAqIG9uIHB1cnBvc2UgKHNlZSBkb2NzL2Rlc2lnbi9leGVjdXRpb24tY29udHJvbC5tZCkuXG4gKi9cbmV4cG9ydCB0eXBlIHsgQnJhbmNoQ2hhcnQsIFBhcmFsbGVsRm9yRWFjaENvbmZpZywgUmV0cnlQb2xpY3kgfSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBRdWljayBTdGFydCDigJQgYnVpbGQtdGltZSBvYnNlcnZlciAodHdpbiBvZiBGbG93UmVjb3JkZXIpICovXG5leHBvcnQgdHlwZSB7XG4gIFN0cnVjdHVyZURlY2lkZXJDb21wbGV0ZUV2ZW50LFxuICBTdHJ1Y3R1cmVFZGdlQWRkZWRFdmVudCxcbiAgU3RydWN0dXJlRWRnZUtpbmQsXG4gIFN0cnVjdHVyZUxvb3BFZGdlQWRkZWRFdmVudCxcbiAgU3RydWN0dXJlUmVjb3JkZXIsXG4gIFN0cnVjdHVyZVN0YWdlQWRkZWRFdmVudCxcbiAgU3RydWN0dXJlU3RhZ2VUYWdnZWRFdmVudCxcbiAgU3RydWN0dXJlU3ViZmxvd01vdW50ZWRFdmVudCxcbn0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnQgKi9cbmV4cG9ydCB0eXBlIHsgVHlwZWRTdGFnZUZ1bmN0aW9uIH0gZnJvbSAnLi9saWIvYnVpbGRlci90eXBlZEZsb3dDaGFydC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnQgKi9cbmV4cG9ydCB0eXBlIHsgU2NvcGVNZXRob2RzLCBUeXBlZFNjb3BlIH0gZnJvbSAnLi9saWIvcmVhY3RpdmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgeyBuYXJyYXRpdmUgfSBmcm9tICcuL3JlY29yZGVycy5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERlY2lzaW9uIEJyYW5jaGluZyDigJQgZGVjaWRlKCkgLyBzZWxlY3QoKSB3aXRoIGV2aWRlbmNlIGNhcHR1cmVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBEZWNpc2lvbiBCcmFuY2hpbmcgKi9cbmV4cG9ydCB0eXBlIHtcbiAgRGVjaWRlUnVsZSxcbiAgRGVjaXNpb25FdmlkZW5jZSxcbiAgRGVjaXNpb25SZXN1bHQsXG4gIERlZmF1bHRCcmFuY2gsXG4gIEZpbHRlck9wcyxcbiAgUnVsZUV2aWRlbmNlLFxuICBTZWxlY3Rpb25FdmlkZW5jZSxcbiAgU2VsZWN0aW9uUmVzdWx0LFxuICBXaGVuQ2xhdXNlLFxuICBXaGVyZUZpbHRlcixcbn0gZnJvbSAnLi9saWIvZGVjaWRlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBEZWNpc2lvbiBCcmFuY2hpbmcgKi9cbmV4cG9ydCB7IGRlY2lkZSwgc2VsZWN0IH0gZnJvbSAnLi9saWIvZGVjaWRlL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUnVuIOKAlCBFeGVjdXRlIGNoYXJ0cyBhbmQgY29sbGVjdCByZXN1bHRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgdHlwZSB7IFJ1blJlc3VsdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgdHlwZSB7IEZsb3dDaGFydEV4ZWN1dG9yT3B0aW9ucyB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKlxuICogVGhlIGZvdXIgb2JzZXJ2YWJpbGl0eSBkaWFscyBgRmxvd0NoYXJ0RXhlY3V0b3JPcHRpb25zYCBpbmhlcml0cy5cbiAqIEBjYXRlZ29yeSBSdW5cbiAqL1xuZXhwb3J0IHR5cGUgeyBSdW5EaWFscyB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgeyBGbG93Q2hhcnRFeGVjdXRvciB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgeyBSdW5Db250ZXh0IH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB0eXBlIHsgQ2hhcnRPcGVuQVBJT3B0aW9ucywgTUNQVG9vbERlc2NyaXB0aW9uLCBSdW5uYWJsZUZsb3dDaGFydCB9IGZyb20gJy4vbGliL3J1bm5lci9SdW5uYWJsZUNoYXJ0LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gT2JzZXJ2ZSDigJQgRGF0YSAoc2NvcGUgcmVjb3JkZXJzLCBmaXJlIGR1cmluZyBzdGFnZSBleGVjdXRpb24pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGF0YSAqL1xuZXhwb3J0IHR5cGUge1xuICBDb21taXRFdmVudCxcbiAgRXJyb3JFdmVudCxcbiAgUmVhZEV2ZW50LFxuICBSZWRhY3Rpb25Qb2xpY3ksXG4gIFJlZGFjdGlvblJlcG9ydCxcbiAgU2NvcGVSZWNvcmRlcixcbiAgU3RhZ2VFdmVudCxcbiAgV3JpdGVFdmVudCxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIERhdGEgKi9cbmV4cG9ydCB7IE1ldHJpY1JlY29yZGVyIH0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIERhdGEgKi9cbmV4cG9ydCB7IERlYnVnUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgT3BlcmF0aW9uICovXG5leHBvcnQgeyBSZWNvcmRlck9wZXJhdGlvbiB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGVsaXZlcnkgdGllciAoUkZDLTAwMSBkZWZlcnJlZCBvYnNlcnZlcnMpXG4gKlxuICogRXZlcnkgYGF0dGFjaCpSZWNvcmRlcmAgY2FsbCBhY2NlcHRzIGFuIG9wdGlvbnMgYmFnOlxuICogYGV4ZWN1dG9yLmF0dGFjaFNjb3BlUmVjb3JkZXIocmVjLCB7IGRlbGl2ZXJ5OiAnZGVmZXJyZWQnIH0pYCB0YWtlcyB0aGVcbiAqIHJlY29yZGVyIE9VVCBvZiB0aGUgZW5naW5lJ3MgaG90IHBhdGgg4oCUIGV2ZW50cyBhcmUgY2FwdHVyZWQgaW50byBvbmVcbiAqIGJvdW5kZWQsIHRvdGFsbHktb3JkZXJlZCBxdWV1ZSBhbmQgZGVsaXZlcmVkIGF0IHRoZSBuZXh0IG1pY3JvdGFza1xuICogY2hlY2twb2ludCAoXCJvbmUgYmVhdCBiZWhpbmRcIikuIE9taXQgYGRlbGl2ZXJ5YCBmb3IgdGhlIGhpc3RvcmljYWxcbiAqIHN5bmNocm9ub3VzIGNhbGwgKGJ5dGUtaWRlbnRpY2FsIHRvIHByZXZpb3VzIHJlbGVhc2VzKS4gQWNjb3VudGluZ1xuICogc3VyZmFjZXMgb24gYHNuYXBzaG90Lm9ic2VydmVyU3RhdHNgOyBgZXhlY3V0b3IuZHJhaW5PYnNlcnZlcnMoKWAgc2V0dGxlc1xuICogYXN5bmMgbGlzdGVuZXJzIGJlZm9yZSBzaHV0ZG93bi4gU2VlIGBkb2NzL2d1aWRlcy9vYnNlcnZlcnMtZGVmZXJyZWQubWRgLlxuICovXG5leHBvcnQgdHlwZSB7XG4gIEF0dGFjaFJlY29yZGVyT3B0aW9ucyxcbiAgT2JzZXJ2ZXJEZWxpdmVyeSxcbiAgT2JzZXJ2ZXJEcmFpblJlc3VsdCxcbiAgT2JzZXJ2ZXJTdGF0cyxcbn0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGVsaXZlcnkgdGllciAoUkZDLTAwMSBkZWZlcnJlZCBvYnNlcnZlcnMpXG4gKlxuICogYENhcHR1cmVQb2xpY3lgIOKAlCBob3cgYSBkZWZlcnJlZCBldmVudCdzIHBheWxvYWQgaXMgbWF0ZXJpYWxpemVkIGF0XG4gKiBjYXB0dXJlIHRpbWUgKGAnY2xvbmUnYCBieSBkZWZhdWx0IGZvciBhdHRhY2ggb3B0aW9ucyAvIGAnc3VtbWFyeSdgIC8gYCdyZWYnYCkuIGBPdmVyZmxvd1BvbGljeWBcbiAqIOKAlCB3aGF0IGEgc2F0dXJhdGVkIHF1ZXVlIGRvZXMgKGAnZHJvcC1vbGRlc3QnYCBkZWZhdWx0IC8gYCdzYW1wbGUnYCAvXG4gKiBgJ2Jsb2NrJ2ApLiBgRGlzcGF0Y2hlclN0YXRzYCAvIGBMaXN0ZW5lclN0YXRzYCDigJQgdGhlIGFjY291bnRpbmcgc2hhcGVzXG4gKiBlbWJlZGRlZCBpbiBgT2JzZXJ2ZXJTdGF0c2AuIFR5cGVzIG9ubHkg4oCUIHRoZSBvYnNlcnZlci1xdWV1ZSBtb2R1bGVcbiAqIGl0c2VsZiBpcyBpbnRlcm5hbDsgY29uc3VtZXJzIHVzZSB0aGUgYXR0YWNoIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIHsgQ2FwdHVyZVBvbGljeSwgRGlzcGF0Y2hlclN0YXRzLCBMaXN0ZW5lclN0YXRzLCBPdmVyZmxvd1BvbGljeSB9IGZyb20gJy4vbGliL29ic2VydmVyLXF1ZXVlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBDb21iaW5lZCAoYm90aCBkYXRhLWZsb3cgYW5kIGNvbnRyb2wtZmxvdykgKi9cbmV4cG9ydCB0eXBlIHsgQ29tYmluZWRSZWNvcmRlciB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgQ29tYmluZWQgKGJvdGggZGF0YS1mbG93IGFuZCBjb250cm9sLWZsb3cpICovXG5leHBvcnQge1xuICBoYXNFbWl0UmVjb3JkZXJNZXRob2RzLFxuICBoYXNGbG93UmVjb3JkZXJNZXRob2RzLFxuICBoYXNSZWNvcmRlck1ldGhvZHMsXG4gIGlzRmxvd0V2ZW50LFxufSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEVtaXQgKHVzZXItYXV0aG9yZWQgc3RydWN0dXJlZCBldmVudHMpXG4gKlxuICogVGhpcmQgb2JzZXJ2ZXIgY2hhbm5lbCAoYWxvbmdzaWRlIGBTY29wZVJlY29yZGVyYCBhbmQgYEZsb3dSZWNvcmRlcmApLiBDb25zdW1lclxuICogY29kZSBjYWxscyBgc2NvcGUuJGVtaXQobmFtZSwgcGF5bG9hZClgIGZyb20gaW5zaWRlIGEgc3RhZ2U7IGV2ZXJ5IGF0dGFjaGVkXG4gKiBgRW1pdFJlY29yZGVyLm9uRW1pdChldmVudClgIGZpcmVzIHN5bmNocm9ub3VzbHkgd2l0aCBzdGFnZS1jb250ZXh0XG4gKiBlbnJpY2htZW50LiBQYXNzLXRocm91Z2gg4oCUIG5vIGJ1ZmZlcmluZywgemVybyBhbGxvY2F0aW9uIHdoZW4gbm8gcmVjb3JkZXJcbiAqIGlzIGF0dGFjaGVkLlxuICovXG5leHBvcnQgdHlwZSB7IEVtaXRFdmVudCwgRW1pdFJlY29yZGVyIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBPYnNlcnZlIOKAlCBGbG93IChGbG93UmVjb3JkZXIsIGZpcmVzIGFmdGVyIHN0YWdlIGV4ZWN1dGlvbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgdHlwZSB7XG4gIEZsb3dCcmVha0V2ZW50LFxuICBGbG93RGVjaXNpb25FdmVudCxcbiAgRmxvd0Vycm9yRXZlbnQsXG4gIEZsb3dGb3JrRXZlbnQsXG4gIEZsb3dMb29wRXZlbnQsXG4gIEZsb3dOZXh0RXZlbnQsXG4gIEZsb3dSZWNvcmRlcixcbiAgRmxvd1J1bkV2ZW50LFxuICBGbG93UnVuRmFpbGVkRXZlbnQsXG4gIEZsb3dTZWxlY3RlZEV2ZW50LFxuICBGbG93U3RhZ2VFdmVudCxcbiAgRmxvd1N0YWdlUmV0cnlFdmVudCxcbiAgRmxvd1N1YmZsb3dFdmVudCxcbiAgRmxvd1N1YmZsb3dSZWdpc3RlcmVkRXZlbnQsXG4gIEZsb3dUaHJvdHRsZWRFdmVudCxcbiAgUmVzdW1lTGluayxcbiAgVHJhdmVyc2FsQ29udGV4dCxcbn0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgdHlwZSB7IENvbWJpbmVkTmFycmF0aXZlRW50cnkgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93XG4gKlxuICogYE5hcnJhdGl2ZUZvcm1hdHRlcmAg4oCUIHBsdWdnYWJsZSBmb3JtYXR0ZXIgdGhhdCBjb252ZXJ0cyBldmVudCBjb250ZXh0XG4gKiBvYmplY3RzIGludG8gdGhlIHRleHQgbGluZXMgb2YgdGhlIG5hcnJhdGl2ZS4gUHJlZmVyIHRoaXMgbmFtZSBpbiBuZXdcbiAqIGNvZGU7IGBOYXJyYXRpdmVSZW5kZXJlcmAgaXMgYSBkZXByZWNhdGVkIGFsaWFzIHRoYXQgd2lsbCBiZSByZW1vdmVkIGluXG4gKiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLlxuICovXG5leHBvcnQgdHlwZSB7IE5hcnJhdGl2ZUZvcm1hdHRlciwgTmFycmF0aXZlUmVuZGVyZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IE5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHR5cGUgeyBNYW5pZmVzdEVudHJ5IH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBNYW5pZmVzdEZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgQWRhcHRpdmVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IE1pbGVzdG9uZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgUHJvZ3Jlc3NpdmVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFJMRU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgU2VwYXJhdGVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFNpbGVudE5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgV2luZG93ZWROYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZWxmLURlc2NyaWJpbmcg4oCUIC5jb250cmFjdCgpLCB0b09wZW5BUEkoKSwgdG9NQ1BUb29sKClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBTZWxmLURlc2NyaWJpbmcgKi9cbmV4cG9ydCB0eXBlIHsgSnNvblNjaGVtYSB9IGZyb20gJy4vbGliL2NvbnRyYWN0L2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU25hcHNob3QgJiBDb21wb3NpdGlvbiDigJQgU3ViZmxvdyBuYXZpZ2F0aW9uIGFuZCBDb21wb3NhYmxlUnVubmVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgU25hcHNob3QgJiBDb21wb3NpdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBDb21wb3NhYmxlUnVubmVyIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBTbmFwc2hvdCAmIENvbXBvc2l0aW9uICovXG5leHBvcnQgdHlwZSB7IFJlY29yZGVyU25hcHNob3QsIFJ1bnRpbWVTbmFwc2hvdCwgU3VidHJlZVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBTbmFwc2hvdCAmIENvbXBvc2l0aW9uICovXG5leHBvcnQgeyBnZXRTdWJ0cmVlU25hcHNob3QsIGxpc3RTdWJmbG93UGF0aHMgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY29wZVJlY29yZGVyIENvbXBvc2l0aW9uIOKAlCBCdW5kbGUgbXVsdGlwbGUgcmVjb3JkZXJzIGludG8gZG9tYWluIHByZXNldHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBTY29wZVJlY29yZGVyICovXG5leHBvcnQgeyBDb21wb3NpdGVSZWNvcmRlciB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUGF1c2UvUmVzdW1lIOKAlCBTZXJpYWxpemFibGUgY2hlY2twb2ludHMgZm9yIGxvbmctcnVubmluZyBvciBodW1hbi1pbi10aGUtbG9vcCBmbG93c1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFBhdXNlL1Jlc3VtZSAqL1xuLyoqIEBjYXRlZ29yeSBQYXVzZS9SZXN1bWUgKi9cbmV4cG9ydCB0eXBlIHtcbiAgRmxvd2NoYXJ0Q2hlY2twb2ludCxcbiAgUGF1c2FibGVIYW5kbGVyLFxuICBQYXVzZWRFeGVjdXRpb24sXG4gIFBlbmRpbmdQYXVzZSxcbiAgUmVkYWN0aW9uTWFya3MsXG59IGZyb20gJy4vbGliL3BhdXNlL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgUGF1c2UvUmVzdW1lXG4gKlxuICogYGludGVycnVwdChzY29wZSwgeyByZWFzb24sIGV4cGVjdHM/IH0pYCDigJQgc3RvcCBtaWQtc3RhZ2UgdG8gYXNrIGEgcXVlc3Rpb24sXG4gKiBhbmQgZ2V0IHRoZSBhbnN3ZXIgYmFjayBhdCB0aGUgc2FtZSBjYWxsIHNpdGUgd2hlbiB0aGUgcnVuIHJlc3VtZXMuIFJlc3VtZVxuICogcmUtZW50ZXJzIHRoZSBzdGFnZSBmcm9tIGl0cyBUT1AgKHN0YWdlcyBhcmUgYXRvbWljKSwgc28ga2VlcCB0aGUgaGFsZlxuICogYmVmb3JlIHRoZSBjYWxsIGlkZW1wb3RlbnQuXG4gKi9cbmV4cG9ydCB0eXBlIHsgSW50ZXJydXB0UGF5bG9hZCB9IGZyb20gJy4vbGliL3BhdXNlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBQYXVzZS9SZXN1bWUgKi9cbmV4cG9ydCB7IGludGVycnVwdCB9IGZyb20gJy4vbGliL3BhdXNlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBTY29wZVJlY29yZGVyICovXG5leHBvcnQgdHlwZSB7IENvbXBvc2l0ZVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb25maWd1cmF0aW9uIOKAlCBUeXBlcyBwYXNzZWQgdG8gRmxvd0NoYXJ0RXhlY3V0b3IgYW5kIHJ1bigpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgQ29uZmlndXJhdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBFeGVjdXRpb25FbnYsIEV4ZWN1dG9yUmVzdWx0LCBQYXVzZWRSZXN1bHQsIFJ1bk9wdGlvbnMgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IENvbmZpZ3VyYXRpb24gKi9cbmV4cG9ydCB0eXBlIHsgU2NvcGVGYWN0b3J5IH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgQ29uZmlndXJhdGlvblxuICpcbiAqIFJlYWQtdHJhY2tpbmcgcG9saWN5IGZvciBgU3RhZ2VTbmFwc2hvdC5zdGFnZVJlYWRzYCAoIzE0KTpcbiAqIGAnZnVsbCdgIChkZWZhdWx0IOKAlCBwZXItcmVhZCB2YWx1ZSBjbG9uZSwgaGlzdG9yaWNhbCBiZWhhdmlvcikgL1xuICogYCdzdW1tYXJ5J2AgKGNoZWFwIGBSZWFkU3VtbWFyeU1hcmtlcmAgcGVyIHJlYWQpIC8gYCdvZmYnYCAobm8gdHJhY2tpbmcsXG4gKiB6ZXJvIHBlci1yZWFkIGNsb25lKS4gUGFzcyBhcyBgbmV3IEZsb3dDaGFydEV4ZWN1dG9yKGNoYXJ0LCB7IHJlYWRUcmFja2luZyB9KWBcbiAqIG9yIGNhbGwgYGV4ZWN1dG9yLnNldFJlYWRUcmFja2luZyhtb2RlKWAgYmVmb3JlIGBydW4oKWAuXG4gKi9cbmV4cG9ydCB0eXBlIHsgUmVhZFN1bW1hcnlNYXJrZXIsIFJlYWRUcmFja2luZ01vZGUgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBDb25maWd1cmF0aW9uXG4gKlxuICogV3JpdGUtdHJhY2tpbmcgcG9saWN5IGZvciBgU3RhZ2VTbmFwc2hvdC5zdGFnZVdyaXRlc2AgKCMxM2MtQSkg4oCUIHRoZVxuICogc2libGluZyBvZiBgUmVhZFRyYWNraW5nTW9kZWA7IGJvdGggYWxpYXMgdGhlIHNoYXJlZCBgUmV0ZW50aW9uUG9saWN5YFxuICogZmFtaWx5IGZyb20gYGxpYi9jYXB0dXJlYC4gYCdmdWxsJ2AgKGRlZmF1bHQg4oCUIHBlci13cml0ZSB2YWx1ZSBjbG9uZSxcbiAqIGhpc3RvcmljYWwgYmVoYXZpb3IpIC8gYCdzdW1tYXJ5J2AgKGNoZWFwIGBXcml0ZVN1bW1hcnlNYXJrZXJgIHBlciB3cml0ZSlcbiAqIC8gYCdvZmYnYCAobm8gdHJhY2tpbmc7IGBzdGFnZVdyaXRlc2AgYWJzZW50IGFuZCB0aGUgYG9uQ29tbWl0YCBtdXRhdGlvbnNcbiAqIHBheWxvYWQgaXMgZW1wdHkg4oCUIHdyaXRlcyB0aGVtc2VsdmVzIHN0aWxsIGNvbW1pdCwgYW5kIHRoZSBjb21taXQgbG9nIGlzXG4gKiB1bmFmZmVjdGVkKS4gUGFzcyBhcyBgbmV3IEZsb3dDaGFydEV4ZWN1dG9yKGNoYXJ0LCB7IHdyaXRlVHJhY2tpbmcgfSlgIG9yXG4gKiBjYWxsIGBleGVjdXRvci5zZXRXcml0ZVRyYWNraW5nKG1vZGUpYCBiZWZvcmUgYHJ1bigpYC5cbiAqL1xuZXhwb3J0IHR5cGUgeyBSZXRlbnRpb25Qb2xpY3ksIFdyaXRlU3VtbWFyeU1hcmtlciwgV3JpdGVUcmFja2luZ01vZGUgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBDb25maWd1cmF0aW9uXG4gKlxuICogQ29tbWl0LXZhbHVlcyBlbmNvZGluZyBmb3IgdGhlIENPTU1JVCBMT0cgKCMxM2MtQikg4oCUIHRoZSB0aGlyZCBkaWFsIG9mXG4gKiB0aGUgZmFtaWx5LCBhbmQgdGhlIG9ubHkgTE9TU0xFU1Mgb25lIChpdCBjaGFuZ2VzIHRoZSBsb2cncyBlbmNvZGluZyxcbiAqIG5ldmVyIGl0cyBpbmZvcm1hdGlvbikuIGAnZnVsbCdgIChkZWZhdWx0IOKAlCBldmVyeSBzdXJ2aXZpbmcgYHNldGAgc3RvcmVzXG4gKiB0aGUgZnVsbCBmaW5hbCB2YWx1ZSwgYnl0ZS1pZGVudGljYWwgdG8gaGlzdG9yeSkgLyBgJ2RlbHRhJ2AgKGFycmF5XG4gKiBuZXQtY2hhbmdlcyB0aGF0IGFyZSBcImJhc2UgcGx1cyBhIHRhaWxcIiBjb21taXQgYXMgYW4gYGFwcGVuZGAgdmVyYlxuICogc3RvcmluZyBvbmx5IHRoZSB0YWlsOyBgZGVsZXRlVmFsdWUoKWAgY29tbWl0cyBhcyBhIHJlYWwgYGRlbGV0ZWAgdmVyYjtcbiAqIG9uZSB0cmFjZSBlbnRyeSBwZXIgc3Vydml2aW5nIHBhdGgpLiBSZXBsYXkgcmVjb25zdHJ1Y3RzIGV2ZXJ5IHN0ZXAnc1xuICogZnVsbCBzdGF0ZSBleGFjdGx5LiBDb25zdW1lcnMgcmVhZGluZyBgYnVuZGxlLm92ZXJ3cml0ZVtrZXldYCBhcyB0aGUgZnVsbFxuICogdmFsdWUgbXVzdCB1c2UgYGNvbW1pdFZhbHVlQXRgIGZyb20gYGZvb3RwcmludGpzL3RyYWNlYC4gUGFzcyBhc1xuICogYG5ldyBGbG93Q2hhcnRFeGVjdXRvcihjaGFydCwgeyBjb21taXRWYWx1ZXMgfSlgIG9yIGNhbGxcbiAqIGBleGVjdXRvci5zZXRDb21taXRWYWx1ZXMobW9kZSlgIGJlZm9yZSBgcnVuKClgOyB0aGUgYWN0aXZlIG1vZGUgaXMgdGhlXG4gKiBzbmFwc2hvdCBkaXNjcmltaW5hbnQgYGdldFNuYXBzaG90KCkuY29tbWl0VmFsdWVzYC5cbiAqL1xuZXhwb3J0IHR5cGUgeyBDb21taXRWYWx1ZXNNb2RlIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29udHJhY3QgJiBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgQ29udHJhY3QgJiBWYWxpZGF0aW9uICovXG5leHBvcnQgdHlwZSB7IFNjaGVtYUtpbmQsIFZhbGlkYXRpb25Jc3N1ZSwgVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJy4vbGliL3NjaGVtYS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgQ29udHJhY3QgJiBWYWxpZGF0aW9uICovXG5leHBvcnQgeyBkZXRlY3RTY2hlbWEsIGlzVmFsaWRhdGFibGUsIGlzWm9kIH0gZnJvbSAnLi9saWIvc2NoZW1hL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBDb250cmFjdCAmIFZhbGlkYXRpb24gKi9cbmV4cG9ydCB7IElucHV0VmFsaWRhdGlvbkVycm9yLCB2YWxpZGF0ZUFnYWluc3RTY2hlbWEsIHZhbGlkYXRlT3JUaHJvdyB9IGZyb20gJy4vbGliL3NjaGVtYS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVycm9yIFV0aWxpdGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IEVycm9yIFV0aWxpdGllcyAqL1xuZXhwb3J0IHR5cGUgeyBTdHJ1Y3R1cmVkRXJyb3JJbmZvIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBFcnJvciBVdGlsaXRpZXMgKi9cbmV4cG9ydCB7IGV4dHJhY3RFcnJvckluZm8sIGZvcm1hdEVycm9ySW5mbyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERldiBUb29scyDigJQgTW9kZSBmbGFncyBhbmQgWm9kIHNjb3BlIHV0aWxpdGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEBjYXRlZ29yeSBEZXYgVG9vbHNcbiAqXG4gKiBHbG9iYWwgZGV2LW1vZGUgZmxhZy4gQ2FsbCBgZW5hYmxlRGV2TW9kZSgpYCBhdCBhcHBsaWNhdGlvbiBzdGFydHVwIHRvXG4gKiB0dXJuIG9uIGRldmVsb3Blci1vbmx5IGRpYWdub3N0aWNzIGFjcm9zcyB0aGUgbGlicmFyeSDigJQgY2lyY3VsYXItcmVmZXJlbmNlXG4gKiBkZXRlY3Rpb24gaW4gc2NvcGUgd3JpdGVzLCB3YXJuaW5ncyB3aGVuIGEgcmVjb3JkZXIgaGFzIG5vIG9ic2VydmVyXG4gKiBtZXRob2RzLCBzdXNwaWNpb3VzLXByZWRpY2F0ZSB3YXJuaW5ncyBpbiBkZWNpZGUvc2VsZWN0LCBzdHJ1Y3R1cmFsXG4gKiBjaGVja3MgaW4gYGdldFN1YnRyZWVTbmFwc2hvdGAsIGFuZCBhbnkgZnV0dXJlIGRldi1vbmx5IGRpYWdub3N0aWMuXG4gKlxuICogUHJvZHVjdGlvbiBsZWF2ZXMgaXQgT0ZGIGJ5IGRlZmF1bHQgKHplcm8gb3ZlcmhlYWQpLiBTZWUgdGhlIEpTRG9jIG9uXG4gKiBgZW5hYmxlRGV2TW9kZWAgZm9yIHRoZSBmdWxsIGxpc3QgYW5kIHVzYWdlIGV4YW1wbGUuXG4gKi9cbmV4cG9ydCB7IGRpc2FibGVEZXZNb2RlLCBlbmFibGVEZXZNb2RlLCBpc0Rldk1vZGUgfSBmcm9tICcuL2xpYi9kZXZNb2RlLmpzJztcblxuLy8gYGRlZmluZVNjb3BlRnJvbVpvZGAgYW5kIHRoZSBvdGhlciB6b2QtYmFzZWQgc2NvcGUgaGVscGVycyBtb3ZlZCB0byB0aGUgb3B0LWluXG4vLyBgZm9vdHByaW50anMvem9kYCBlbnRyeSDigJQga2VlcGluZyB6b2Qgb3V0IG9mIHRoZSBjb3JlIGxvYWQgcGF0aCAoaXQgaXMgYW5cbi8vIG9wdGlvbmFsIHBlZXIpLiBJbXBvcnQgdGhlbSBmcm9tICdmb290cHJpbnRqcy96b2QnLlxuLy8gQSBydW4ncyByZWNvcmQgYXMgSlNPTiB3aXRob3V0IHRoZSBlbmdpbmUncyByZWN1cnNpb24gbGltaXQgKDkuMjYuMCk6IHRoZVxuLy8gc2FtZSBieXRlcyBKU09OLnN0cmluZ2lmeSBlbWl0cywgZm9yIGEgZGVlcCBgbmV4dGAgY2hhaW4gaXQgY2Fubm90IGVuY29kZS5cbmV4cG9ydCB7IHN0cmluZ2lmeVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcnVubmVyL3N0cmluZ2lmeVNuYXBzaG90LmpzJztcbiJdfQ==
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHOzs7QUFTSCw0QkFBNEI7QUFDNUIsbURBQXdGO0FBQS9FLHFHQUFBLFNBQVMsT0FBQTtBQUFFLDRHQUFBLGdCQUFnQixPQUFBO0FBQUUsNkdBQUEsaUJBQWlCLE9BQUE7QUE2QnZELDRCQUE0QjtBQUM1QiwrQ0FBMkM7QUFBbEMseUdBQUEsU0FBUyxPQUFBO0FBb0JsQixtQ0FBbUM7QUFDbkMsa0RBQXVEO0FBQTlDLGtHQUFBLE1BQU0sT0FBQTtBQUFFLGtHQUFBLE1BQU0sT0FBQTtBQWtCdkIsb0JBQW9CO0FBQ3BCLGtEQUEwRDtBQUFqRCw2R0FBQSxpQkFBaUIsT0FBQTtBQUUxQixvQkFBb0I7QUFDcEIsa0RBQW1EO0FBQTFDLHNHQUFBLFVBQVUsT0FBQTtBQXFCbkIsK0JBQStCO0FBQy9CLGlEQUFzRDtBQUE3QywwR0FBQSxjQUFjLE9BQUE7QUFFdkIsK0JBQStCO0FBQy9CLGlEQUFxRDtBQUE1Qyx5R0FBQSxhQUFhLE9BQUE7QUFFdEIsb0NBQW9DO0FBQ3BDLG9EQUE0RDtBQUFuRCw2R0FBQSxpQkFBaUIsT0FBQTtBQW1DMUIscUVBQXFFO0FBQ3JFLG9EQUtpQztBQUovQixrSEFBQSxzQkFBc0IsT0FBQTtBQUN0QixrSEFBQSxzQkFBc0IsT0FBQTtBQUN0Qiw4R0FBQSxrQkFBa0IsT0FBQTtBQUNsQix1R0FBQSxXQUFXLE9BQUE7QUFvRGIsK0JBQStCO0FBQy9CLGtEQUE4RDtBQUFyRCxpSEFBQSxxQkFBcUIsT0FBQTtBQUs5QiwrQkFBK0I7QUFDL0IsbURBQTZEO0FBQXBELGlIQUFBLG9CQUFvQixPQUFBO0FBRTdCLCtCQUErQjtBQUMvQixtREFBc0U7QUFBN0QsMEhBQUEsNkJBQTZCLE9BQUE7QUFFdEMsK0JBQStCO0FBQy9CLG1EQUF1RTtBQUE5RCwySEFBQSw4QkFBOEIsT0FBQTtBQUV2QywrQkFBK0I7QUFDL0IsbURBQXlFO0FBQWhFLDZIQUFBLGdDQUFnQyxPQUFBO0FBRXpDLCtCQUErQjtBQUMvQixtREFBaUU7QUFBeEQscUhBQUEsd0JBQXdCLE9BQUE7QUFFakMsK0JBQStCO0FBQy9CLG1EQUFzRTtBQUE3RCwwSEFBQSw2QkFBNkIsT0FBQTtBQUV0QywrQkFBK0I7QUFDL0IsbURBQW9FO0FBQTNELHdIQUFBLDJCQUEyQixPQUFBO0FBRXBDLCtCQUErQjtBQUMvQixtREFBc0U7QUFBN0QsMEhBQUEsNkJBQTZCLE9BQUE7QUFtQnRDLHVDQUF1QztBQUN2QyxtREFBNkU7QUFBcEUsK0dBQUEsa0JBQWtCLE9BQUE7QUFBRSw2R0FBQSxnQkFBZ0IsT0FBQTtBQUU3QywrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLCtFQUErRTtBQUUvRSw4QkFBOEI7QUFDOUIscURBQTREO0FBQW5ELDhHQUFBLGlCQUFpQixPQUFBO0FBMEIxQiw2QkFBNkI7QUFDN0Isa0RBQWlEO0FBQXhDLHNHQUFBLFNBQVMsT0FBQTtBQWlFbEIsc0NBQXNDO0FBQ3RDLG1EQUEyRTtBQUFsRSx5R0FBQSxZQUFZLE9BQUE7QUFBRSwwR0FBQSxhQUFhLE9BQUE7QUFBRSxrR0FBQSxLQUFLLE9BQUE7QUFFM0Msc0NBQXNDO0FBQ3RDLG1EQUFxRztBQUE1RixpSEFBQSxvQkFBb0IsT0FBQTtBQUFFLGtIQUFBLHFCQUFxQixPQUFBO0FBQUUsNEdBQUEsZUFBZSxPQUFBO0FBU3JFLGdDQUFnQztBQUNoQyxtREFBMEU7QUFBakUsNkdBQUEsZ0JBQWdCLE9BQUE7QUFBRSw0R0FBQSxlQUFlLE9BQUE7QUFFMUMsK0VBQStFO0FBQy9FLGlEQUFpRDtBQUNqRCwrRUFBK0U7QUFFL0U7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCwrQ0FBNEU7QUFBbkUsNEdBQUEsY0FBYyxPQUFBO0FBQUUsMkdBQUEsYUFBYSxPQUFBO0FBQUUsdUdBQUEsU0FBUyxPQUFBO0FBRWpELGlGQUFpRjtBQUNqRiw0RUFBNEU7QUFDNUUsc0RBQXNEO0FBQ3RELDRFQUE0RTtBQUM1RSw2RUFBNkU7QUFDN0UsMEVBQXNFO0FBQTdELHlIQUFBLGlCQUFpQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb290UHJpbnQg4oCUIFB1YmxpYyBBUEkgKHYzKVxuICpcbiAqIFRoZSBmbG93Y2hhcnQgcGF0dGVybiBmb3IgYmFja2VuZCBjb2RlLlxuICogQnVpbGQg4oaSIFJ1biDihpIgT2JzZXJ2ZS5cbiAqXG4gKiAqKlRoZSBjb21tb24gaW1wb3J0IHBhdGhzOioqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZmxvd0NoYXJ0LCBkZWNpZGUsIG5hcnJhdGl2ZSB9IGZyb20gJ2Zvb3RwcmludGpzJzsgICAgICAgICAgIC8vIG1haW4g4oCUIHN0YXJ0IGhlcmVcbiAqIGltcG9ydCB7IG1ldHJpY3MsIGRlYnVnLCBtYW5pZmVzdCB9ICAgICBmcm9tICdmb290cHJpbnRqcy9yZWNvcmRlcnMnOyAvLyByZWNvcmRlciBmYWN0b3JpZXNcbiAqIGltcG9ydCB7IHN0YXRlQXQsIGNhdXNhbENoYWluIH0gICAgICAgICBmcm9tICdmb290cHJpbnRqcy90cmFjZSc7ICAgICAvLyByZWFkIGEgZmluaXNoZWQgcnVuXG4gKiBpbXBvcnQgeyBSZWNvcmRGcmFtZSwgRXZlbnRMb2cgfSAgICAgICAgZnJvbSAnZm9vdHByaW50anMvd3JpdGUnOyAgICAgLy8gd3JpdGUgYSByZWNvcmQgeW91cnNlbGZcbiAqIGltcG9ydCB7IFN0YWdlQ29udGV4dCB9ICAgICAgICAgICAgICAgICBmcm9tICdmb290cHJpbnRqcy9hZHZhbmNlZCc7ICAvLyBlbmdpbmUgaW50ZXJuYWxzXG4gKiBgYGBcbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUXVpY2sgU3RhcnQg4oCUIEV2ZXJ5dGhpbmcgeW91IG5lZWQgZm9yIDkwJSBvZiB1c2UgY2FzZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBRdWljayBTdGFydCAqL1xuZXhwb3J0IHR5cGUgeyBGbG93Q2hhcnQsIFN0YWdlRnVuY3Rpb24gYXMgU3RhZ2VIYW5kbGVyLCBTdHJlYW1IYW5kbGVycyB9IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgeyBmbG93Q2hhcnQsIEZsb3dDaGFydEJ1aWxkZXIsIGZsb3dDaGFydFNlbGVjdG9yIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0XG4gKlxuICogQ29uZmlnIGZvciBgLmFkZFBhcmFsbGVsRm9yRWFjaCgpYCDigJQgb25lIGJyYW5jaCBwZXIgaXRlbSwgYnJhbmNoIGNvdW50XG4gKiBkZWNpZGVkIGF0IHJ1biB0aW1lIGZyb20gdGhlIHBheWxvYWQuIGBtYXhCcmFuY2hlc2AgYW5kIGBpbnRvYCBhcmUgcmVxdWlyZWRcbiAqIG9uIHB1cnBvc2UgKHNlZSBkb2NzL2Rlc2lnbi9leGVjdXRpb24tY29udHJvbC5tZCkuXG4gKi9cbmV4cG9ydCB0eXBlIHsgQnJhbmNoQ2hhcnQsIFBhcmFsbGVsRm9yRWFjaENvbmZpZywgUmV0cnlQb2xpY3kgfSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBRdWljayBTdGFydCDigJQgYnVpbGQtdGltZSBvYnNlcnZlciAodHdpbiBvZiBGbG93UmVjb3JkZXIpICovXG5leHBvcnQgdHlwZSB7XG4gIFN0cnVjdHVyZURlY2lkZXJDb21wbGV0ZUV2ZW50LFxuICBTdHJ1Y3R1cmVFZGdlQWRkZWRFdmVudCxcbiAgU3RydWN0dXJlRWRnZUtpbmQsXG4gIFN0cnVjdHVyZUxvb3BFZGdlQWRkZWRFdmVudCxcbiAgU3RydWN0dXJlUmVjb3JkZXIsXG4gIFN0cnVjdHVyZVN0YWdlQWRkZWRFdmVudCxcbiAgU3RydWN0dXJlU3RhZ2VUYWdnZWRFdmVudCxcbiAgU3RydWN0dXJlU3ViZmxvd01vdW50ZWRFdmVudCxcbn0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnQgKi9cbmV4cG9ydCB0eXBlIHsgVHlwZWRTdGFnZUZ1bmN0aW9uIH0gZnJvbSAnLi9saWIvYnVpbGRlci90eXBlZEZsb3dDaGFydC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnQgKi9cbmV4cG9ydCB0eXBlIHsgU2NvcGVNZXRob2RzLCBUeXBlZFNjb3BlIH0gZnJvbSAnLi9saWIvcmVhY3RpdmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgeyBuYXJyYXRpdmUgfSBmcm9tICcuL3JlY29yZGVycy5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERlY2lzaW9uIEJyYW5jaGluZyDigJQgZGVjaWRlKCkgLyBzZWxlY3QoKSB3aXRoIGV2aWRlbmNlIGNhcHR1cmVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBEZWNpc2lvbiBCcmFuY2hpbmcgKi9cbmV4cG9ydCB0eXBlIHtcbiAgRGVjaWRlUnVsZSxcbiAgRGVjaXNpb25FdmlkZW5jZSxcbiAgRGVjaXNpb25SZXN1bHQsXG4gIERlZmF1bHRCcmFuY2gsXG4gIEZpbHRlck9wcyxcbiAgUnVsZUV2aWRlbmNlLFxuICBTZWxlY3Rpb25FdmlkZW5jZSxcbiAgU2VsZWN0aW9uUmVzdWx0LFxuICBXaGVuQ2xhdXNlLFxuICBXaGVyZUZpbHRlcixcbn0gZnJvbSAnLi9saWIvZGVjaWRlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBEZWNpc2lvbiBCcmFuY2hpbmcgKi9cbmV4cG9ydCB7IGRlY2lkZSwgc2VsZWN0IH0gZnJvbSAnLi9saWIvZGVjaWRlL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUnVuIOKAlCBFeGVjdXRlIGNoYXJ0cyBhbmQgY29sbGVjdCByZXN1bHRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgdHlwZSB7IFJ1blJlc3VsdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgdHlwZSB7IEZsb3dDaGFydEV4ZWN1dG9yT3B0aW9ucyB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKlxuICogVGhlIGZvdXIgb2JzZXJ2YWJpbGl0eSBkaWFscyBgRmxvd0NoYXJ0RXhlY3V0b3JPcHRpb25zYCBpbmhlcml0cy5cbiAqIEBjYXRlZ29yeSBSdW5cbiAqL1xuZXhwb3J0IHR5cGUgeyBSdW5EaWFscyB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgeyBGbG93Q2hhcnRFeGVjdXRvciB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgeyBSdW5Db250ZXh0IH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB0eXBlIHsgQ2hhcnRPcGVuQVBJT3B0aW9ucywgTUNQVG9vbERlc2NyaXB0aW9uLCBSdW5uYWJsZUZsb3dDaGFydCB9IGZyb20gJy4vbGliL3J1bm5lci9SdW5uYWJsZUNoYXJ0LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gT2JzZXJ2ZSDigJQgRGF0YSAoc2NvcGUgcmVjb3JkZXJzLCBmaXJlIGR1cmluZyBzdGFnZSBleGVjdXRpb24pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGF0YSAqL1xuZXhwb3J0IHR5cGUge1xuICBDb21taXRFdmVudCxcbiAgRXJyb3JFdmVudCxcbiAgUmVhZEV2ZW50LFxuICBSZWRhY3Rpb25Qb2xpY3ksXG4gIFJlZGFjdGlvblJlcG9ydCxcbiAgU2NvcGVSZWNvcmRlcixcbiAgU3RhZ2VFdmVudCxcbiAgV3JpdGVFdmVudCxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIERhdGEgKi9cbmV4cG9ydCB7IE1ldHJpY1JlY29yZGVyIH0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIERhdGEgKi9cbmV4cG9ydCB7IERlYnVnUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgT3BlcmF0aW9uICovXG5leHBvcnQgeyBSZWNvcmRlck9wZXJhdGlvbiB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGVsaXZlcnkgdGllciAoUkZDLTAwMSBkZWZlcnJlZCBvYnNlcnZlcnMpXG4gKlxuICogRXZlcnkgYGF0dGFjaCpSZWNvcmRlcmAgY2FsbCBhY2NlcHRzIGFuIG9wdGlvbnMgYmFnOlxuICogYGV4ZWN1dG9yLmF0dGFjaFNjb3BlUmVjb3JkZXIocmVjLCB7IGRlbGl2ZXJ5OiAnZGVmZXJyZWQnIH0pYCB0YWtlcyB0aGVcbiAqIHJlY29yZGVyIE9VVCBvZiB0aGUgZW5naW5lJ3MgaG90IHBhdGgg4oCUIGV2ZW50cyBhcmUgY2FwdHVyZWQgaW50byBvbmVcbiAqIGJvdW5kZWQsIHRvdGFsbHktb3JkZXJlZCBxdWV1ZSBhbmQgZGVsaXZlcmVkIGF0IHRoZSBuZXh0IG1pY3JvdGFza1xuICogY2hlY2twb2ludCAoXCJvbmUgYmVhdCBiZWhpbmRcIikuIE9taXQgYGRlbGl2ZXJ5YCBmb3IgdGhlIGhpc3RvcmljYWxcbiAqIHN5bmNocm9ub3VzIGNhbGwgKGJ5dGUtaWRlbnRpY2FsIHRvIHByZXZpb3VzIHJlbGVhc2VzKS4gQWNjb3VudGluZ1xuICogc3VyZmFjZXMgb24gYHNuYXBzaG90Lm9ic2VydmVyU3RhdHNgOyBgZXhlY3V0b3IuZHJhaW5PYnNlcnZlcnMoKWAgc2V0dGxlc1xuICogYXN5bmMgbGlzdGVuZXJzIGJlZm9yZSBzaHV0ZG93bi4gU2VlIGBkb2NzL2d1aWRlcy9vYnNlcnZlcnMtZGVmZXJyZWQubWRgLlxuICovXG5leHBvcnQgdHlwZSB7XG4gIEF0dGFjaFJlY29yZGVyT3B0aW9ucyxcbiAgT2JzZXJ2ZXJEZWxpdmVyeSxcbiAgT2JzZXJ2ZXJEcmFpblJlc3VsdCxcbiAgT2JzZXJ2ZXJTdGF0cyxcbn0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGVsaXZlcnkgdGllciAoUkZDLTAwMSBkZWZlcnJlZCBvYnNlcnZlcnMpXG4gKlxuICogYENhcHR1cmVQb2xpY3lgIOKAlCBob3cgYSBkZWZlcnJlZCBldmVudCdzIHBheWxvYWQgaXMgbWF0ZXJpYWxpemVkIGF0XG4gKiBjYXB0dXJlIHRpbWUgKGAnY2xvbmUnYCBieSBkZWZhdWx0IGZvciBhdHRhY2ggb3B0aW9ucyAvIGAnc3VtbWFyeSdgIC8gYCdyZWYnYCkuIGBPdmVyZmxvd1BvbGljeWBcbiAqIOKAlCB3aGF0IGEgc2F0dXJhdGVkIHF1ZXVlIGRvZXMgKGAnZHJvcC1vbGRlc3QnYCBkZWZhdWx0IC8gYCdzYW1wbGUnYCAvXG4gKiBgJ2Jsb2NrJ2ApLiBgRGlzcGF0Y2hlclN0YXRzYCAvIGBMaXN0ZW5lclN0YXRzYCDigJQgdGhlIGFjY291bnRpbmcgc2hhcGVzXG4gKiBlbWJlZGRlZCBpbiBgT2JzZXJ2ZXJTdGF0c2AuIFR5cGVzIG9ubHkg4oCUIHRoZSBvYnNlcnZlci1xdWV1ZSBtb2R1bGVcbiAqIGl0c2VsZiBpcyBpbnRlcm5hbDsgY29uc3VtZXJzIHVzZSB0aGUgYXR0YWNoIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIHsgQ2FwdHVyZVBvbGljeSwgRGlzcGF0Y2hlclN0YXRzLCBMaXN0ZW5lclN0YXRzLCBPdmVyZmxvd1BvbGljeSB9IGZyb20gJy4vbGliL29ic2VydmVyLXF1ZXVlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBDb21iaW5lZCAoYm90aCBkYXRhLWZsb3cgYW5kIGNvbnRyb2wtZmxvdykgKi9cbmV4cG9ydCB0eXBlIHsgQ29tYmluZWRSZWNvcmRlciB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgQ29tYmluZWQgKGJvdGggZGF0YS1mbG93IGFuZCBjb250cm9sLWZsb3cpICovXG5leHBvcnQge1xuICBoYXNFbWl0UmVjb3JkZXJNZXRob2RzLFxuICBoYXNGbG93UmVjb3JkZXJNZXRob2RzLFxuICBoYXNSZWNvcmRlck1ldGhvZHMsXG4gIGlzRmxvd0V2ZW50LFxufSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEVtaXQgKHVzZXItYXV0aG9yZWQgc3RydWN0dXJlZCBldmVudHMpXG4gKlxuICogVGhpcmQgb2JzZXJ2ZXIgY2hhbm5lbCAoYWxvbmdzaWRlIGBTY29wZVJlY29yZGVyYCBhbmQgYEZsb3dSZWNvcmRlcmApLiBDb25zdW1lclxuICogY29kZSBjYWxscyBgc2NvcGUuJGVtaXQobmFtZSwgcGF5bG9hZClgIGZyb20gaW5zaWRlIGEgc3RhZ2U7IGV2ZXJ5IGF0dGFjaGVkXG4gKiBgRW1pdFJlY29yZGVyLm9uRW1pdChldmVudClgIGZpcmVzIHN5bmNocm9ub3VzbHkgd2l0aCBzdGFnZS1jb250ZXh0XG4gKiBlbnJpY2htZW50LiBQYXNzLXRocm91Z2gg4oCUIG5vIGJ1ZmZlcmluZywgemVybyBhbGxvY2F0aW9uIHdoZW4gbm8gcmVjb3JkZXJcbiAqIGlzIGF0dGFjaGVkLlxuICovXG5leHBvcnQgdHlwZSB7IEVtaXRFdmVudCwgRW1pdFJlY29yZGVyIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBPYnNlcnZlIOKAlCBGbG93IChGbG93UmVjb3JkZXIsIGZpcmVzIGFmdGVyIHN0YWdlIGV4ZWN1dGlvbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgdHlwZSB7XG4gIEZsb3dCcmVha0V2ZW50LFxuICBGbG93RGVjaXNpb25FdmVudCxcbiAgRmxvd0Vycm9yRXZlbnQsXG4gIEZsb3dGb3JrRXZlbnQsXG4gIEZsb3dMb29wRXZlbnQsXG4gIEZsb3dOZXh0RXZlbnQsXG4gIEZsb3dSZWNvcmRlcixcbiAgRmxvd1J1bkV2ZW50LFxuICBGbG93UnVuRmFpbGVkRXZlbnQsXG4gIEZsb3dTZWxlY3RlZEV2ZW50LFxuICBGbG93U3RhZ2VFdmVudCxcbiAgRmxvd1N0YWdlUmV0cnlFdmVudCxcbiAgRmxvd1N1YmZsb3dFdmVudCxcbiAgRmxvd1N1YmZsb3dSZWdpc3RlcmVkRXZlbnQsXG4gIEZsb3dUaHJvdHRsZWRFdmVudCxcbiAgUmVzdW1lTGluayxcbiAgVHJhdmVyc2FsQ29udGV4dCxcbn0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgdHlwZSB7IENvbWJpbmVkTmFycmF0aXZlRW50cnkgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93XG4gKlxuICogYE5hcnJhdGl2ZUZvcm1hdHRlcmAg4oCUIHBsdWdnYWJsZSBmb3JtYXR0ZXIgdGhhdCBjb252ZXJ0cyBldmVudCBjb250ZXh0XG4gKiBvYmplY3RzIGludG8gdGhlIHRleHQgbGluZXMgb2YgdGhlIG5hcnJhdGl2ZS4gUHJlZmVyIHRoaXMgbmFtZSBpbiBuZXdcbiAqIGNvZGU7IGBOYXJyYXRpdmVSZW5kZXJlcmAgaXMgYSBkZXByZWNhdGVkIGFsaWFzIHRoYXQgd2lsbCBiZSByZW1vdmVkIGluXG4gKiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLlxuICovXG5leHBvcnQgdHlwZSB7IE5hcnJhdGl2ZUZvcm1hdHRlciwgTmFycmF0aXZlUmVuZGVyZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IE5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHR5cGUgeyBNYW5pZmVzdEVudHJ5IH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBNYW5pZmVzdEZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgQWRhcHRpdmVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IE1pbGVzdG9uZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgUHJvZ3Jlc3NpdmVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFJMRU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgU2VwYXJhdGVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFNpbGVudE5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgV2luZG93ZWROYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZWxmLURlc2NyaWJpbmcg4oCUIC5jb250cmFjdCgpLCB0b09wZW5BUEkoKSwgdG9NQ1BUb29sKClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBTZWxmLURlc2NyaWJpbmcgKi9cbmV4cG9ydCB0eXBlIHsgSnNvblNjaGVtYSB9IGZyb20gJy4vbGliL2NvbnRyYWN0L2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU25hcHNob3QgJiBDb21wb3NpdGlvbiDigJQgU3ViZmxvdyBuYXZpZ2F0aW9uIGFuZCBDb21wb3NhYmxlUnVubmVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgU25hcHNob3QgJiBDb21wb3NpdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBDb21wb3NhYmxlUnVubmVyIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBTbmFwc2hvdCAmIENvbXBvc2l0aW9uICovXG5leHBvcnQgdHlwZSB7IFJlY29yZGVyU25hcHNob3QsIFJ1bnRpbWVTbmFwc2hvdCwgU3VidHJlZVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBTbmFwc2hvdCAmIENvbXBvc2l0aW9uICovXG5leHBvcnQgeyBnZXRTdWJ0cmVlU25hcHNob3QsIGxpc3RTdWJmbG93UGF0aHMgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY29wZVJlY29yZGVyIENvbXBvc2l0aW9uIOKAlCBCdW5kbGUgbXVsdGlwbGUgcmVjb3JkZXJzIGludG8gZG9tYWluIHByZXNldHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBTY29wZVJlY29yZGVyICovXG5leHBvcnQgeyBDb21wb3NpdGVSZWNvcmRlciB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUGF1c2UvUmVzdW1lIOKAlCBTZXJpYWxpemFibGUgY2hlY2twb2ludHMgZm9yIGxvbmctcnVubmluZyBvciBodW1hbi1pbi10aGUtbG9vcCBmbG93c1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFBhdXNlL1Jlc3VtZSAqL1xuLyoqIEBjYXRlZ29yeSBQYXVzZS9SZXN1bWUgKi9cbmV4cG9ydCB0eXBlIHtcbiAgRmxvd2NoYXJ0Q2hlY2twb2ludCxcbiAgUGF1c2FibGVIYW5kbGVyLFxuICBQYXVzZWRFeGVjdXRpb24sXG4gIFBlbmRpbmdQYXVzZSxcbiAgUmVkYWN0aW9uTWFya3MsXG59IGZyb20gJy4vbGliL3BhdXNlL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgUGF1c2UvUmVzdW1lXG4gKlxuICogYGludGVycnVwdChzY29wZSwgeyByZWFzb24sIGV4cGVjdHM/IH0pYCDigJQgc3RvcCBtaWQtc3RhZ2UgdG8gYXNrIGEgcXVlc3Rpb24sXG4gKiBhbmQgZ2V0IHRoZSBhbnN3ZXIgYmFjayBhdCB0aGUgc2FtZSBjYWxsIHNpdGUgd2hlbiB0aGUgcnVuIHJlc3VtZXMuIFJlc3VtZVxuICogcmUtZW50ZXJzIHRoZSBzdGFnZSBmcm9tIGl0cyBUT1AgKHN0YWdlcyBhcmUgYXRvbWljKSwgc28ga2VlcCB0aGUgaGFsZlxuICogYmVmb3JlIHRoZSBjYWxsIGlkZW1wb3RlbnQuXG4gKi9cbmV4cG9ydCB0eXBlIHsgSW50ZXJydXB0UGF5bG9hZCB9IGZyb20gJy4vbGliL3BhdXNlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBQYXVzZS9SZXN1bWUgKi9cbmV4cG9ydCB7IGludGVycnVwdCB9IGZyb20gJy4vbGliL3BhdXNlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBTY29wZVJlY29yZGVyICovXG5leHBvcnQgdHlwZSB7IENvbXBvc2l0ZVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb25maWd1cmF0aW9uIOKAlCBUeXBlcyBwYXNzZWQgdG8gRmxvd0NoYXJ0RXhlY3V0b3IgYW5kIHJ1bigpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgQ29uZmlndXJhdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBFeGVjdXRpb25FbnYsIEV4ZWN1dG9yUmVzdWx0LCBQYXVzZWRSZXN1bHQsIFJ1bk9wdGlvbnMgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IENvbmZpZ3VyYXRpb24gKi9cbmV4cG9ydCB0eXBlIHsgU2NvcGVGYWN0b3J5IH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgQ29uZmlndXJhdGlvblxuICpcbiAqIFJlYWQtdHJhY2tpbmcgcG9saWN5IGZvciBgU3RhZ2VTbmFwc2hvdC5zdGFnZVJlYWRzYCAoIzE0KTpcbiAqIGAnZnVsbCdgIChkZWZhdWx0IOKAlCBwZXItcmVhZCB2YWx1ZSBjbG9uZSwgaGlzdG9yaWNhbCBiZWhhdmlvcikgL1xuICogYCdzdW1tYXJ5J2AgKGNoZWFwIGBSZWFkU3VtbWFyeU1hcmtlcmAgcGVyIHJlYWQpIC8gYCdvZmYnYCAobm8gdHJhY2tpbmcsXG4gKiB6ZXJvIHBlci1yZWFkIGNsb25lKS4gUGFzcyBhcyBgbmV3IEZsb3dDaGFydEV4ZWN1dG9yKGNoYXJ0LCB7IHJlYWRUcmFja2luZyB9KWBcbiAqIG9yIGNhbGwgYGV4ZWN1dG9yLnNldFJlYWRUcmFja2luZyhtb2RlKWAgYmVmb3JlIGBydW4oKWAuXG4gKi9cbmV4cG9ydCB0eXBlIHsgUmVhZFN1bW1hcnlNYXJrZXIsIFJlYWRUcmFja2luZ01vZGUgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBDb25maWd1cmF0aW9uXG4gKlxuICogV3JpdGUtdHJhY2tpbmcgcG9saWN5IGZvciBgU3RhZ2VTbmFwc2hvdC5zdGFnZVdyaXRlc2AgKCMxM2MtQSkg4oCUIHRoZVxuICogc2libGluZyBvZiBgUmVhZFRyYWNraW5nTW9kZWA7IGJvdGggYWxpYXMgdGhlIHNoYXJlZCBgUmV0ZW50aW9uUG9saWN5YFxuICogZmFtaWx5IGZyb20gYGxpYi9jYXB0dXJlYC4gYCdmdWxsJ2AgKGRlZmF1bHQg4oCUIHBlci13cml0ZSB2YWx1ZSBjbG9uZSxcbiAqIGhpc3RvcmljYWwgYmVoYXZpb3IpIC8gYCdzdW1tYXJ5J2AgKGNoZWFwIGBXcml0ZVN1bW1hcnlNYXJrZXJgIHBlciB3cml0ZSlcbiAqIC8gYCdvZmYnYCAobm8gdHJhY2tpbmc7IGBzdGFnZVdyaXRlc2AgYWJzZW50IGFuZCB0aGUgYG9uQ29tbWl0YCBtdXRhdGlvbnNcbiAqIHBheWxvYWQgaXMgZW1wdHkg4oCUIHdyaXRlcyB0aGVtc2VsdmVzIHN0aWxsIGNvbW1pdCwgYW5kIHRoZSBjb21taXQgbG9nIGlzXG4gKiB1bmFmZmVjdGVkKS4gUGFzcyBhcyBgbmV3IEZsb3dDaGFydEV4ZWN1dG9yKGNoYXJ0LCB7IHdyaXRlVHJhY2tpbmcgfSlgIG9yXG4gKiBjYWxsIGBleGVjdXRvci5zZXRXcml0ZVRyYWNraW5nKG1vZGUpYCBiZWZvcmUgYHJ1bigpYC5cbiAqL1xuZXhwb3J0IHR5cGUgeyBSZXRlbnRpb25Qb2xpY3ksIFdyaXRlU3VtbWFyeU1hcmtlciwgV3JpdGVUcmFja2luZ01vZGUgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBDb25maWd1cmF0aW9uXG4gKlxuICogQ29tbWl0LXZhbHVlcyBlbmNvZGluZyBmb3IgdGhlIENPTU1JVCBMT0cgKCMxM2MtQikg4oCUIHRoZSB0aGlyZCBkaWFsIG9mXG4gKiB0aGUgZmFtaWx5LCBhbmQgdGhlIG9ubHkgTE9TU0xFU1Mgb25lIChpdCBjaGFuZ2VzIHRoZSBsb2cncyBlbmNvZGluZyxcbiAqIG5ldmVyIGl0cyBpbmZvcm1hdGlvbikuIGAnZnVsbCdgIChkZWZhdWx0IOKAlCBldmVyeSBzdXJ2aXZpbmcgYHNldGAgc3RvcmVzXG4gKiB0aGUgZnVsbCBmaW5hbCB2YWx1ZSwgYnl0ZS1pZGVudGljYWwgdG8gaGlzdG9yeSkgLyBgJ2RlbHRhJ2AgKGFycmF5XG4gKiBuZXQtY2hhbmdlcyB0aGF0IGFyZSBcImJhc2UgcGx1cyBhIHRhaWxcIiBjb21taXQgYXMgYW4gYGFwcGVuZGAgdmVyYlxuICogc3RvcmluZyBvbmx5IHRoZSB0YWlsOyBgZGVsZXRlVmFsdWUoKWAgY29tbWl0cyBhcyBhIHJlYWwgYGRlbGV0ZWAgdmVyYjtcbiAqIG9uZSB0cmFjZSBlbnRyeSBwZXIgc3Vydml2aW5nIHBhdGgpLiBSZXBsYXkgcmVjb25zdHJ1Y3RzIGV2ZXJ5IHN0ZXAnc1xuICogZnVsbCBzdGF0ZSBleGFjdGx5LiBDb25zdW1lcnMgcmVhZGluZyBgYnVuZGxlLm92ZXJ3cml0ZVtrZXldYCBhcyB0aGUgZnVsbFxuICogdmFsdWUgbXVzdCB1c2UgYGNvbW1pdFZhbHVlQXRgIGZyb20gYGZvb3RwcmludGpzL3RyYWNlYC4gUGFzcyBhc1xuICogYG5ldyBGbG93Q2hhcnRFeGVjdXRvcihjaGFydCwgeyBjb21taXRWYWx1ZXMgfSlgIG9yIGNhbGxcbiAqIGBleGVjdXRvci5zZXRDb21taXRWYWx1ZXMobW9kZSlgIGJlZm9yZSBgcnVuKClgOyB0aGUgYWN0aXZlIG1vZGUgaXMgdGhlXG4gKiBzbmFwc2hvdCBkaXNjcmltaW5hbnQgYGdldFNuYXBzaG90KCkuY29tbWl0VmFsdWVzYC5cbiAqL1xuZXhwb3J0IHR5cGUgeyBDb21taXRWYWx1ZXNNb2RlIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29udHJhY3QgJiBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgQ29udHJhY3QgJiBWYWxpZGF0aW9uICovXG5leHBvcnQgdHlwZSB7IFNjaGVtYUtpbmQsIFZhbGlkYXRpb25Jc3N1ZSwgVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJy4vbGliL3NjaGVtYS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgQ29udHJhY3QgJiBWYWxpZGF0aW9uICovXG5leHBvcnQgeyBkZXRlY3RTY2hlbWEsIGlzVmFsaWRhdGFibGUsIGlzWm9kIH0gZnJvbSAnLi9saWIvc2NoZW1hL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBDb250cmFjdCAmIFZhbGlkYXRpb24gKi9cbmV4cG9ydCB7IElucHV0VmFsaWRhdGlvbkVycm9yLCB2YWxpZGF0ZUFnYWluc3RTY2hlbWEsIHZhbGlkYXRlT3JUaHJvdyB9IGZyb20gJy4vbGliL3NjaGVtYS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVycm9yIFV0aWxpdGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IEVycm9yIFV0aWxpdGllcyAqL1xuZXhwb3J0IHR5cGUgeyBTdHJ1Y3R1cmVkRXJyb3JJbmZvIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBFcnJvciBVdGlsaXRpZXMgKi9cbmV4cG9ydCB7IGV4dHJhY3RFcnJvckluZm8sIGZvcm1hdEVycm9ySW5mbyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERldiBUb29scyDigJQgTW9kZSBmbGFncyBhbmQgWm9kIHNjb3BlIHV0aWxpdGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEBjYXRlZ29yeSBEZXYgVG9vbHNcbiAqXG4gKiBHbG9iYWwgZGV2LW1vZGUgZmxhZy4gQ2FsbCBgZW5hYmxlRGV2TW9kZSgpYCBhdCBhcHBsaWNhdGlvbiBzdGFydHVwIHRvXG4gKiB0dXJuIG9uIGRldmVsb3Blci1vbmx5IGRpYWdub3N0aWNzIGFjcm9zcyB0aGUgbGlicmFyeSDigJQgY2lyY3VsYXItcmVmZXJlbmNlXG4gKiBkZXRlY3Rpb24gaW4gc2NvcGUgd3JpdGVzLCB3YXJuaW5ncyB3aGVuIGEgcmVjb3JkZXIgaGFzIG5vIG9ic2VydmVyXG4gKiBtZXRob2RzLCBzdXNwaWNpb3VzLXByZWRpY2F0ZSB3YXJuaW5ncyBpbiBkZWNpZGUvc2VsZWN0LCBzdHJ1Y3R1cmFsXG4gKiBjaGVja3MgaW4gYGdldFN1YnRyZWVTbmFwc2hvdGAsIGFuZCBhbnkgZnV0dXJlIGRldi1vbmx5IGRpYWdub3N0aWMuXG4gKlxuICogUHJvZHVjdGlvbiBsZWF2ZXMgaXQgT0ZGIGJ5IGRlZmF1bHQgKHplcm8gb3ZlcmhlYWQpLiBTZWUgdGhlIEpTRG9jIG9uXG4gKiBgZW5hYmxlRGV2TW9kZWAgZm9yIHRoZSBmdWxsIGxpc3QgYW5kIHVzYWdlIGV4YW1wbGUuXG4gKi9cbmV4cG9ydCB7IGRpc2FibGVEZXZNb2RlLCBlbmFibGVEZXZNb2RlLCBpc0Rldk1vZGUgfSBmcm9tICcuL2xpYi9kZXZNb2RlLmpzJztcblxuLy8gYGRlZmluZVNjb3BlRnJvbVpvZGAgYW5kIHRoZSBvdGhlciB6b2QtYmFzZWQgc2NvcGUgaGVscGVycyBtb3ZlZCB0byB0aGUgb3B0LWluXG4vLyBgZm9vdHByaW50anMvem9kYCBlbnRyeSDigJQga2VlcGluZyB6b2Qgb3V0IG9mIHRoZSBjb3JlIGxvYWQgcGF0aCAoaXQgaXMgYW5cbi8vIG9wdGlvbmFsIHBlZXIpLiBJbXBvcnQgdGhlbSBmcm9tICdmb290cHJpbnRqcy96b2QnLlxuLy8gQSBydW4ncyByZWNvcmQgYXMgSlNPTiB3aXRob3V0IHRoZSBlbmdpbmUncyByZWN1cnNpb24gbGltaXQgKDkuMjYuMCk6IHRoZVxuLy8gc2FtZSBieXRlcyBKU09OLnN0cmluZ2lmeSBlbWl0cywgZm9yIGEgZGVlcCBgbmV4dGAgY2hhaW4gaXQgY2Fubm90IGVuY29kZS5cbmV4cG9ydCB7IHN0cmluZ2lmeVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcnVubmVyL3N0cmluZ2lmeVNuYXBzaG90LmpzJztcbiJdfQ==
|
|
@@ -92,7 +92,7 @@ class EventLog {
|
|
|
92
92
|
/**
|
|
93
93
|
* Persists a commit bundle for a finished stage, and FREEZES it (see the module doc): the bundle
|
|
94
94
|
* is stamped with its position, then deep-frozen, then appended. The engine hands it a bundle
|
|
95
|
-
* built for the log alone; a caller of this class (`footprintjs/
|
|
95
|
+
* built for the log alone; a caller of this class (`footprintjs/write`) hands over a bundle it
|
|
96
96
|
* will no longer edit — its own object is the one frozen.
|
|
97
97
|
*/
|
|
98
98
|
record(bundle) {
|
|
@@ -149,4 +149,4 @@ class EventLog {
|
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
151
|
exports.EventLog = EventLog;
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRMb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL21lbW9yeS9FdmVudExvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHOzs7QUFFSCxvREFBaUU7QUFHakUseUNBQWlEO0FBRWpELE1BQWEsUUFBUTtJQUNuQiw2REFBNkQ7SUFDckQsSUFBSSxDQUFNO0lBQ2xCLHNDQUFzQztJQUM5QixLQUFLLEdBQW1CLEVBQUUsQ0FBQztJQUMzQixhQUFhLENBQWM7SUFDM0Isb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBRXJDLFlBQVksYUFBa0I7UUFDNUIsdUVBQXVFO1FBQ3ZFLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILGVBQWU7UUFDYixPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW9CRztJQUNILFdBQVcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsSUFBQSw4QkFBbUIsRUFBQyxHQUFHLEVBQUUsT0FBc0IsRUFBRSxTQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxNQUFvQjtRQUN6QixNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQy9CLElBQUEsd0JBQVksRUFBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyx1QkFBVyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzNCLENBQUM7SUFFRCx3RUFBd0U7SUFDeEUsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCx3RkFBd0Y7SUFDeEYsV0FBVyxDQUFDLFFBQWdCLEVBQUUsU0FBNEI7UUFDeEQsSUFBSSxJQUFJLENBQUMsb0JBQW9CO1lBQUUsT0FBTztRQUN0QyxJQUFJLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCwrRkFBK0Y7SUFDL0YsZUFBZSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDMUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFRCw4Q0FBOEM7SUFDOUMsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLHdFQUF3RTtRQUN4RSxzRUFBc0U7UUFDdEUsdUVBQXVFO1FBQ3ZFLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQy9CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBOUhELDRCQThIQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRXZlbnRMb2cg4oCUIFRpbWUtdHJhdmVsIHNuYXBzaG90IHN0b3JhZ2UgZm9yIGZsb3djaGFydCBleGVjdXRpb25cbiAqXG4gKiBMaWtlIGdpdCBoaXN0b3J5OiBzdG9yZXMgY29tbWl0IGJ1bmRsZXMgKGRpZmZzKSwgbm90IGZ1bGwgc25hcHNob3RzLlxuICpcbiAqIFRIRSBSRUNPUkQgSVMgSU1NVVRBQkxFIEZST00gYHJlY29yZGAgKEYzLCBydWxpbmcgUjMpLiBFdmVyeSBidW5kbGUgaXMgZGVlcC1mcm96ZW4gYXMgaXQgaXNcbiAqIHJlY29yZGVkIOKAlCB0aGUgYnVuZGxlLCBgb3ZlcndyaXRlYCBhbmQgYHVwZGF0ZXNgIGF0IGV2ZXJ5IGRlcHRoLCB0aGUgdHJhY2UgYW5kIGVhY2ggcm93LCB0aGVcbiAqIHJvdydzIGByZWFkS2V5c2AsIGByZWRhY3RlZFBhdGhzYCwgYHRhZ3NgLCBgdW50cmFja2VkU291cmNlc2Ag4oCUIHNvIGEgaG9sZGVyIG9mIGEgc25hcHNob3QgY2FuIG5vXG4gKiBsb25nZXIgcmV3cml0ZSB0aGUgaGlzdG9yeSBldmVyeSBsYXRlciBhbnN3ZXIgaXMgZm9sZGVkIGZyb206IGFuIGFzc2lnbm1lbnQgaW50byBhIGJ1bmRsZSB0aHJvd3NcbiAqIGEgYFR5cGVFcnJvcmAgaW4gc3RyaWN0IGNvZGUuIFNhZmUgYmVjYXVzZSBub3RoaW5nIG91dHNpZGUgdGhlIGxvZyBob2xkcyBhIGJ1bmRsZSdzIGNvbnRhaW5lcnM6XG4gKiB0aGUgbG9nJ3MgcGF5bG9hZCBpcyB0aGUgY29tbWl0J3Mgb3duIGNvcHkgKGByZWNvcmRDb21taXRgIGhhbmRzIGl0IHRoZSBvdXRwdXQgb2ZcbiAqIGBzY3J1YlBhdGNoYCksIGFuZCBsaXZlIHN0YXRlLCB0aGUgcmVkYWN0ZWQgbWlycm9yIGFuZCB3cml0ZSByZXRlbnRpb24gZWFjaCB0YWtlIHRoZWlyIG93biBjb3B5XG4gKiAoYHZlcmJzLnRzIMK3IGZvbGRSb3dzYCBkZXRhY2hlcywgYFN0YWdlQ29udGV4dCDCtyByZXRhaW5lZEZvcm1gIGNsb25lcykg4oCUIHBpbm5lZCBieVxuICogdGVzdC9saWIvbWVtb3J5L3Byb3BlcnR5L3JlY29yZC1yZWFjaGFiaWxpdHkucHJvcGVydHkudGVzdC50cy5cbiAqXG4gKiBXaGF0IGBPYmplY3QuZnJlZXplYCBjYW5ub3Qgc2VhbCDigJQgYSBEYXRlJ3MgdGltZSwgYSBNYXAncyBvciBTZXQncyBlbnRyaWVzLCBhIGJ1ZmZlcidzIGJ5dGVzLCBhXG4gKiBSZWdFeHAsIGFuIEVycm9yJ3Mgc3RhY2sg4oCUIGlzIG5ldmVyIGhhbmRlZCBvdXQgdG8gYSByZWFkZXIgKDkuNDQuMik6IGByZWNvcmRgIHJlbWVtYmVycyB0aGF0IGFcbiAqIGJ1bmRsZSBob2xkcyBzdWNoIGEgdmFsdWUgKGBjYXB0dXJlL2ZyZWV6ZS50cyDCtyBmcmVlemVSZWNvcmRgKSwgYW5kIGBsaXN0KClgIOKAlCBsaWtlIHRoZSBwdWJsaWNcbiAqIHNuYXBzaG90LCBgcnVubmVyL3NuYXBzaG90LnRzIMK3IHNlcnZlZFNuYXBzaG90YCDigJQgc2VydmVzIHRoYXQgYnVuZGxlIGFzIGEgY29weSBvZiBpdHMgb3BlbiBwYXRoc1xuICogKGBzZXJ2ZVJlY29yZGAsIG1hcHBlZCBhdCBpdHMgZmlyc3Qgc2VydmUpOiBmcmVzaCBmcm96ZW4gY29udGFpbmVycyBkb3duIHRvIGVhY2ggc3VjaCB2YWx1ZSwgYVxuICogZnJlc2ggY29weSBvZiBpdCwgZXZlcnkgb3RoZXIgcGFydCB0aGUgbG9nJ3Mgb3duLiBBIHJlYWRlciBlZGl0cyBvbmx5IGl0cyBvd24gY29weTsgZXZlcnkgbGF0ZXJcbiAqIHNlcnZlIHJlYWRzIHRoZSByZWNvcmQgYXMgcmVjb3JkZWQuIGByZWNvcmRlZCgpYCBpcyB0aGUgZW5naW5lJ3Mgb3duLCB1bnNlcnZlZCByZWFkLiBOYW1lZCBob2xlczogYW4gb2JqZWN0IGh1bmcgb24gYW4gYXJyYXkgRVhQQU5ETyAoYXJyYXlzIGFyZSB3YWxrZWRcbiAqIGJ5IGluZGV4IOKAlCB0aGUgYCdpbmRpY2VzJ2Agd2Fsaywgd2hpY2gga2VlcHMgdGhlIGZyZWV6ZSBpbnNpZGUgaXRzIGJ1ZGdldDsgYW4gZXhwYW5kbyBpcyBvdXQgb2ZcbiAqIGNvbnRyYWN0IGZvciBzdGF0ZSkgYW5kIGEgYFNoYXJlZEFycmF5QnVmZmVyYCAoZXZlcnkgY29weSBzaGFyZXMgaXRzIG1lbW9yeSkuIEEgZnJvemVuIFJlZ0V4cCdzXG4gKiBgbGFzdEluZGV4YCBpcyByZWFkLW9ubHksIHNvIGEgYC9nYCBvciBgL3lgIHJlZ2V4IHJlYWQgZnJvbSBhIGJ1bmRsZSB0aHJvd3Mgd2hlbiBgZXhlY2Agb3JcbiAqIGByZXBsYWNlYCBhZHZhbmNlIGl0LlxuICovXG5cbmltcG9ydCB7IGZyZWV6ZVJlY29yZCwgc2VydmVSZWNvcmQgfSBmcm9tICcuLi9jYXB0dXJlL2ZyZWV6ZS5qcyc7XG5pbXBvcnQgdHlwZSB7IEVtaXRTb3VyY2VQb3NpdGlvbiwgTG9nQWRkcmVzcyB9IGZyb20gJy4vZXZlbnRQb3NpdGlvbi5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbW1pdEJ1bmRsZSwgTWVtb3J5UGF0Y2ggfSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB7IGFwcGx5U21hcnRNZXJnZUludG8gfSBmcm9tICcuL3V0aWxzLmpzJztcblxuZXhwb3J0IGNsYXNzIEV2ZW50TG9nIHtcbiAgLyoqIEJhc2Ugc25hcHNob3QgQkVGT1JFIHRoZSBmaXJzdCBzdGFnZSBtdXRhdGVzIGFueXRoaW5nLiAqL1xuICBwcml2YXRlIGJhc2U6IGFueTtcbiAgLyoqIE9yZGVyZWQgbGlzdCBvZiBjb21taXQgYnVuZGxlcy4gKi9cbiAgcHJpdmF0ZSBzdGVwczogQ29tbWl0QnVuZGxlW10gPSBbXTtcbiAgcHJpdmF0ZSBzb3VyY2VBZGRyZXNzPzogTG9nQWRkcmVzcztcbiAgcHJpdmF0ZSBzb3VyY2VBZGRyZXNzUmV0aXJlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKGluaXRpYWxNZW1vcnk6IGFueSkge1xuICAgIC8vIE5vcm1hbGlzZWQgdG8gYW4gb2JqZWN0OiB0aGUgYmFzZSBpcyBhIFNUQVRFLCBhbmQgZXZlcnkgZm9sZCBvdmVyIGl0XG4gICAgLy8gKGBtYXRlcmlhbGlzZWAsIGBzdGF0ZUF0YCkgYXBwbGllcyBwYXRoIHdyaXRlcyB0byBpdC4gYHVuZGVmaW5lZGAg4oCUXG4gICAgLy8gd2hhdCBhIHJ1biB3aXRoIG5vIGBpbml0aWFsQ29udGV4dGAgdXNlZCB0byBzdG9yZSBoZXJlIOKAlCBtYWRlIGV2ZXJ5XG4gICAgLy8gb25lIG9mIHRob3NlIGZvbGRzIHRocm93IG9uIHRoZSBmaXJzdCBgc2V0YC5cbiAgICB0aGlzLmJhc2UgPSBpbml0aWFsTWVtb3J5ID09PSB1bmRlZmluZWQgPyB7fSA6IHN0cnVjdHVyZWRDbG9uZShpbml0aWFsTWVtb3J5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZm9sZCBCQVNFIOKAlCB0aGUgc3RhdGUgYXMgaXQgc3Rvb2QgYmVmb3JlIHRoZSBmaXJzdCBjb21taXQuXG4gICAqXG4gICAqIFRoaXMgaXMgdGhlIG90aGVyIGhhbGYgb2YgdGhlIGNvbW1pdCBsb2c6IGJ1bmRsZXMgYXJlIERJRkZTLCBzbyBhIGxvZ1xuICAgKiBhbG9uZSBjYW5ub3QgcmVjb25zdHJ1Y3Qgc3RhdGUgdGhhdCB3YXMgc2VlZGVkIGJlZm9yZSB0aGUgcnVuIChhblxuICAgKiBleGVjdXRvciBgaW5pdGlhbENvbnRleHRgLCBgZGVmYXVsdFZhbHVlc0ZvckNvbnRleHRgLCBhIHJlc3VtZSdzXG4gICAqIGBjaGVja3BvaW50LnNoYXJlZFN0YXRlYCwgYSBzdWJmbG93J3MgYGlucHV0TWFwcGVyYCBzZWVkKS4gVHJhdmVsbGluZ1xuICAgKiB3aXRoIHRoZSBsb2cg4oCUIGBSdW50aW1lU25hcHNob3QuaW5pdGlhbFN0YXRlYCDigJQgaXMgd2hhdCBsZXRzIGFuIE9GRkxJTkVcbiAgICogY29uc3VtZXIgZm9sZDsgd2l0aG91dCBpdCB0aGUgaG9uZXN0IGFuc3dlciBpcyBhIHBhcnRpYWwgb25lXG4gICAqIChgc3RhdGVBdGAncyBgYmFzaXM6ICdsb2ctb25seSdgKS5cbiAgICpcbiAgICogUmV0dXJucyBhIGZyZXNoIGRldGFjaGVkIGNsb25lIG9uIGV2ZXJ5IGNhbGwg4oCUIHRoZSBjYWxsZXIgb3ducyBpdC5cbiAgICovXG4gIGdldEluaXRpYWxTdGF0ZSgpOiBhbnkge1xuICAgIHJldHVybiBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5iYXNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvbnN0cnVjdHMgdGhlIGZ1bGwgc3RhdGUgYXQgYW55IGdpdmVuIHN0ZXAuXG4gICAqIFJlcGxheXMgY29tbWl0cyBmcm9tIHRoZSBiZWdpbm5pbmcg4oCUIE8obikgYnV0IGxvdyBtZW1vcnkgZm9vdHByaW50LlxuICAgKlxuICAgKiBJTkRFWCBDT05WRU5USU9OIOKAlCBgc3RlcElkeGAgaXMgRVhDTFVTSVZFOiBgbWF0ZXJpYWxpc2UoMylgIGZvbGRzIGNvbW1pdHNcbiAgICogMCwgMSBhbmQgMi4gYHN0YXRlQXQoc291cmNlLCBjb21taXRJZHgpYCAoZm9vdHByaW50anMvdHJhY2UpIGZvbGRzIHRoZVxuICAgKiBzYW1lIGxvZyBidXQgaXRzIGBjb21taXRJZHhgIGlzIElOQ0xVU0lWRSwgYmVjYXVzZSBhIHJlYWRlcidzIGN1cnNvciBhc2tzXG4gICAqIFwidGhlIHN0YXRlIEFUIHRoaXMgc3RvcFwiLCB3aGljaCBtdXN0IGluY2x1ZGUgdGhhdCBzdG9wJ3Mgb3duIGNvbW1pdC4gVHdvXG4gICAqIGZvbGRzIG92ZXIgb25lIGxvZyB3aXRoIG9wcG9zaXRlIGNvbnZlbnRpb25zOiBjaGVjayB3aGljaCBvbmUgeW91IGhvbGQuXG4gICAqXG4gICAqIE9uZSBjbG9uZSBvZiB0aGUgYmFzZSBwZXIgY2FsbCwgdGhlbiBldmVyeSBidW5kbGUgcmVwbGF5ZWQgSU5UTyB0aGF0XG4gICAqIHByaXZhdGUgY29weSAoYGFwcGx5U21hcnRNZXJnZUludG9gIOKAlCB0aGUgbGl2ZSBjb21taXQncyBjb3B5LW9uLXdyaXRlIGxhd1xuICAgKiBiZWxvdyB0aGUgcm9vdCwgOS4yOS4wLCBzbyB0aGUgZm9sZCBhbmQgdGhlIGxpdmUgc3RhdGUgYWdyZWUgYXQgZXZlcnlcbiAgICogcGF0aCkuIFRoZSByZXN1bHQgaXMgdGhlIGNhbGxlcidzOiBpdCBzaGFyZXMgbm90aGluZyB3aXRoIHRoZSBiYXNlIG9yXG4gICAqIHRoZSBsb2cuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFNpbmNlIDkuMzMuMCDigJQgdXNlIGBzdGF0ZUF0YCBmcm9tIGBmb290cHJpbnRqcy90cmFjZWAsIHdoaWNoIGZvbGRzIHRoZSBzYW1lIGxvZ1xuICAgKiBmcm9tIHRoZSBzYW1lIGJhc2UgKGBSdW50aW1lU25hcHNob3QuaW5pdGlhbFN0YXRlYCkgYW5kIHNheXMgaG93IGl0IHdhcyBkZXJpdmVkIChgYmFzaXNgKS5cbiAgICogTm90aGluZyBpbiB0aGUgbGlicmFyeSBjYWxscyB0aGlzOyBpdCBzdGF5cyBmb3Igb25lIG1pbm9yIGFuZCBpcyB0aGVuIHJlbW92ZWQuIE1pbmQgdGhlXG4gICAqIGluZGV4OiBgbWF0ZXJpYWxpc2UobilgIGZvbGRzIGNvbW1pdHMgYDAuLm4tMWAsIGBzdGF0ZUF0KHNvdXJjZSwgbiAtIDEpYCB0aGUgc2FtZSBjb21taXRzLlxuICAgKi9cbiAgbWF0ZXJpYWxpc2Uoc3RlcElkeCA9IHRoaXMuc3RlcHMubGVuZ3RoKTogYW55IHtcbiAgICBjb25zdCBvdXQgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5iYXNlKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ZXBJZHg7IGkrKykge1xuICAgICAgY29uc3QgeyBvdmVyd3JpdGUsIHVwZGF0ZXMsIHRyYWNlIH0gPSB0aGlzLnN0ZXBzW2ldO1xuICAgICAgYXBwbHlTbWFydE1lcmdlSW50byhvdXQsIHVwZGF0ZXMgYXMgTWVtb3J5UGF0Y2gsIG92ZXJ3cml0ZSBhcyBNZW1vcnlQYXRjaCwgdHJhY2UpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNpc3RzIGEgY29tbWl0IGJ1bmRsZSBmb3IgYSBmaW5pc2hlZCBzdGFnZSwgYW5kIEZSRUVaRVMgaXQgKHNlZSB0aGUgbW9kdWxlIGRvYyk6IHRoZSBidW5kbGVcbiAgICogaXMgc3RhbXBlZCB3aXRoIGl0cyBwb3NpdGlvbiwgdGhlbiBkZWVwLWZyb3plbiwgdGhlbiBhcHBlbmRlZC4gVGhlIGVuZ2luZSBoYW5kcyBpdCBhIGJ1bmRsZVxuICAgKiBidWlsdCBmb3IgdGhlIGxvZyBhbG9uZTsgYSBjYWxsZXIgb2YgdGhpcyBjbGFzcyAoYGZvb3RwcmludGpzL2FkdmFuY2VkYCkgaGFuZHMgb3ZlciBhIGJ1bmRsZSBpdFxuICAgKiB3aWxsIG5vIGxvbmdlciBlZGl0IOKAlCBpdHMgb3duIG9iamVjdCBpcyB0aGUgb25lIGZyb3plbi5cbiAgICovXG4gIHJlY29yZChidW5kbGU6IENvbW1pdEJ1bmRsZSk6IHZvaWQge1xuICAgIGJ1bmRsZS5pZHggPSB0aGlzLnN0ZXBzLmxlbmd0aDtcbiAgICBmcmVlemVSZWNvcmQoYnVuZGxlLCAnaW5kaWNlcycpO1xuICAgIHRoaXMuc3RlcHMucHVzaChidW5kbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2ZXJ5IHJlY29yZGVkIGNvbW1pdCBidW5kbGUsIEFTIFNFUlZFRCAoOS40NC4yKTogYSBuZXcgYXJyYXkgZWFjaCBjYWxsOyBhIGJ1bmRsZSBmcmVlemluZyBzZWFsZWRcbiAgICogd2hvbGUgaXMgdGhlIGxvZydzIG93biAoZnJvemVuKSBvYmplY3QsIG9uZSBob2xkaW5nIGEgRGF0ZSwgTWFwLCBidWZmZXIg4oCmIGlzIGEgY29weSBvZiBpdHMgb3BlblxuICAgKiBwYXRocyAoYGNhcHR1cmUvZnJlZXplLnRzIMK3IHNlcnZlUmVjb3JkYCkg4oCUIHRoZSByZWFkZXIncyBvd24sIHNvIG5vIGVkaXQgcmVhY2hlcyB0aGUgbG9nLlxuICAgKi9cbiAgbGlzdCgpOiBDb21taXRCdW5kbGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHMubWFwKHNlcnZlUmVjb3JkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWwgVGhlIGJ1bmRsZXMgYXMgdGhlIGxvZyBob2xkcyB0aGVtIOKAlCBlYWNoIGZyb3plbiwgTk9UIHNlcnZlZCDigJQgaW4gYSBuZXcgYXJyYXksIHNvIGEgaG9sZGVyJ3NcbiAgICogYHNwbGljZWAgcmVhY2hlcyBvbmx5IGl0cyBvd24uIEZvciB0aGUgZW5naW5lJ3Mgb3duIHNuYXBzaG90IChgRXhlY3V0aW9uUnVudGltZSDCtyBnZXRTbmFwc2hvdGAsIHdoaWNoXG4gICAqIGEgc3ViZmxvdyBtb3VudCB0YWtlcyBvbmNlIHBlciBtb3VudCksIHNvIHRoZSBydW4gc2VydmVzIG5vdGhpbmc7IGEgcmVhZGVyIGlzIHNlcnZlZCBieSBgbGlzdCgpYCBhbmRcbiAgICogYGdldFNuYXBzaG90KCkuY29tbWl0TG9nYC4gQSBrbm93biBvcGVuIGRvb3IgKENIQU5HRUxPRyA5LjQ0LjIpOiBhIGhvbGRlciBvZiB0aGVzZSBidW5kbGVzIGNhbiBzdGlsbFxuICAgKiBlZGl0IGEgRGF0ZSwgTWFwIG9yIGJ1ZmZlciBpbnNpZGUgdGhlbS5cbiAgICovXG4gIHJlY29yZGVkKCk6IENvbW1pdEJ1bmRsZVtdIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcy5zbGljZSgpO1xuICB9XG5cbiAgLyoqIE51bWJlciBvZiByZWNvcmRlZCBjb21taXRzLiAqL1xuICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHMubGVuZ3RoO1xuICB9XG5cbiAgLyoqIEltbXV0YWJsZSBpZGVudGl0eSBvZiB0aGlzIGxvZywgYWJzZW50IHVudGlsIHRoZSBlbmdpbmUgYmluZHMgaXQuICovXG4gIGdldCBhZGRyZXNzKCk6IExvZ0FkZHJlc3MgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZUFkZHJlc3M7XG4gIH1cblxuICAvKiogQGludGVybmFsIEJpbmQgb25jZTsgcmVzdW1pbmcgdGhlIHNhbWUgbG9nIG11c3Qgbm90IHJlbmFtZSBpdHMgZWFybGllciBwb3NpdGlvbnMuICovXG4gIGJpbmRBZGRyZXNzKGxvZ1J1bklkOiBzdHJpbmcsIGRyaWxsUGF0aDogcmVhZG9ubHkgc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zb3VyY2VBZGRyZXNzUmV0aXJlZCkgcmV0dXJuO1xuICAgIHRoaXMuc291cmNlQWRkcmVzcyA/Pz0gT2JqZWN0LmZyZWV6ZSh7IGxvZ1J1bklkLCBkcmlsbFBhdGg6IE9iamVjdC5mcmVlemUoWy4uLmRyaWxsUGF0aF0pIH0pO1xuICB9XG5cbiAgLyoqIE8oMSkgc291cmNlLXRpbWUgY2FwdHVyZS4gTm8gY291bnRlciwgb2JzZXJ2ZXIgYm9va2tlZXBpbmcsIG9yIGZ1dHVyZSBjb21taXQgcHJlZGljdGlvbi4gKi9cbiAgY2FwdHVyZVBvc2l0aW9uKHJ1bklkOiBzdHJpbmcpOiBFbWl0U291cmNlUG9zaXRpb24gfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5zb3VyY2VBZGRyZXNzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiBPYmplY3QuZnJlZXplKHsgcnVuSWQsIC4uLnRoaXMuc291cmNlQWRkcmVzcywgY29tbWl0dGVkVGhyb3VnaElkeDogdGhpcy5zdGVwcy5sZW5ndGggLSAxIH0pO1xuICB9XG5cbiAgLyoqIFdpcGVzIGhpc3RvcnkgKHVzZWZ1bCBmb3IgdGVzdCByZXNldHMpLiAqL1xuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBzID0gW107XG4gICAgLy8gQSByZXNldCBwcmVmaXggY2Fubm90IHJldXNlIG9sZCBjb29yZGluYXRlcywgZXZlbiBpZiBhbm90aGVyIHN0YWdlIG9mXG4gICAgLy8gdGhlIFNBTUUgbGVnIGJpbmRzIGl0IGFnYWluLiBLZWVwIGNsZWFyJ3MgZGF0YSBiZWhhdmlvciwgYnV0IHJldGlyZVxuICAgIC8vIGFkZHJlc3NpbmcgZm9yIHRoaXMgbG9nOyBrbm93biBjb29yZGluYXRlcyByZXF1aXJlIGEgZnJlc2ggRXZlbnRMb2cuXG4gICAgdGhpcy5zb3VyY2VBZGRyZXNzID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc291cmNlQWRkcmVzc1JldGlyZWQgPSB0cnVlO1xuICB9XG59XG4iXX0=
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRMb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL21lbW9yeS9FdmVudExvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHOzs7QUFFSCxvREFBaUU7QUFHakUseUNBQWlEO0FBRWpELE1BQWEsUUFBUTtJQUNuQiw2REFBNkQ7SUFDckQsSUFBSSxDQUFNO0lBQ2xCLHNDQUFzQztJQUM5QixLQUFLLEdBQW1CLEVBQUUsQ0FBQztJQUMzQixhQUFhLENBQWM7SUFDM0Isb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBRXJDLFlBQVksYUFBa0I7UUFDNUIsdUVBQXVFO1FBQ3ZFLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILGVBQWU7UUFDYixPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW9CRztJQUNILFdBQVcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsSUFBQSw4QkFBbUIsRUFBQyxHQUFHLEVBQUUsT0FBc0IsRUFBRSxTQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxNQUFvQjtRQUN6QixNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQy9CLElBQUEsd0JBQVksRUFBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyx1QkFBVyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzNCLENBQUM7SUFFRCx3RUFBd0U7SUFDeEUsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCx3RkFBd0Y7SUFDeEYsV0FBVyxDQUFDLFFBQWdCLEVBQUUsU0FBNEI7UUFDeEQsSUFBSSxJQUFJLENBQUMsb0JBQW9CO1lBQUUsT0FBTztRQUN0QyxJQUFJLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCwrRkFBK0Y7SUFDL0YsZUFBZSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDMUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFRCw4Q0FBOEM7SUFDOUMsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLHdFQUF3RTtRQUN4RSxzRUFBc0U7UUFDdEUsdUVBQXVFO1FBQ3ZFLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQy9CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBOUhELDRCQThIQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRXZlbnRMb2cg4oCUIFRpbWUtdHJhdmVsIHNuYXBzaG90IHN0b3JhZ2UgZm9yIGZsb3djaGFydCBleGVjdXRpb25cbiAqXG4gKiBMaWtlIGdpdCBoaXN0b3J5OiBzdG9yZXMgY29tbWl0IGJ1bmRsZXMgKGRpZmZzKSwgbm90IGZ1bGwgc25hcHNob3RzLlxuICpcbiAqIFRIRSBSRUNPUkQgSVMgSU1NVVRBQkxFIEZST00gYHJlY29yZGAgKEYzLCBydWxpbmcgUjMpLiBFdmVyeSBidW5kbGUgaXMgZGVlcC1mcm96ZW4gYXMgaXQgaXNcbiAqIHJlY29yZGVkIOKAlCB0aGUgYnVuZGxlLCBgb3ZlcndyaXRlYCBhbmQgYHVwZGF0ZXNgIGF0IGV2ZXJ5IGRlcHRoLCB0aGUgdHJhY2UgYW5kIGVhY2ggcm93LCB0aGVcbiAqIHJvdydzIGByZWFkS2V5c2AsIGByZWRhY3RlZFBhdGhzYCwgYHRhZ3NgLCBgdW50cmFja2VkU291cmNlc2Ag4oCUIHNvIGEgaG9sZGVyIG9mIGEgc25hcHNob3QgY2FuIG5vXG4gKiBsb25nZXIgcmV3cml0ZSB0aGUgaGlzdG9yeSBldmVyeSBsYXRlciBhbnN3ZXIgaXMgZm9sZGVkIGZyb206IGFuIGFzc2lnbm1lbnQgaW50byBhIGJ1bmRsZSB0aHJvd3NcbiAqIGEgYFR5cGVFcnJvcmAgaW4gc3RyaWN0IGNvZGUuIFNhZmUgYmVjYXVzZSBub3RoaW5nIG91dHNpZGUgdGhlIGxvZyBob2xkcyBhIGJ1bmRsZSdzIGNvbnRhaW5lcnM6XG4gKiB0aGUgbG9nJ3MgcGF5bG9hZCBpcyB0aGUgY29tbWl0J3Mgb3duIGNvcHkgKGByZWNvcmRDb21taXRgIGhhbmRzIGl0IHRoZSBvdXRwdXQgb2ZcbiAqIGBzY3J1YlBhdGNoYCksIGFuZCBsaXZlIHN0YXRlLCB0aGUgcmVkYWN0ZWQgbWlycm9yIGFuZCB3cml0ZSByZXRlbnRpb24gZWFjaCB0YWtlIHRoZWlyIG93biBjb3B5XG4gKiAoYHZlcmJzLnRzIMK3IGZvbGRSb3dzYCBkZXRhY2hlcywgYFN0YWdlQ29udGV4dCDCtyByZXRhaW5lZEZvcm1gIGNsb25lcykg4oCUIHBpbm5lZCBieVxuICogdGVzdC9saWIvbWVtb3J5L3Byb3BlcnR5L3JlY29yZC1yZWFjaGFiaWxpdHkucHJvcGVydHkudGVzdC50cy5cbiAqXG4gKiBXaGF0IGBPYmplY3QuZnJlZXplYCBjYW5ub3Qgc2VhbCDigJQgYSBEYXRlJ3MgdGltZSwgYSBNYXAncyBvciBTZXQncyBlbnRyaWVzLCBhIGJ1ZmZlcidzIGJ5dGVzLCBhXG4gKiBSZWdFeHAsIGFuIEVycm9yJ3Mgc3RhY2sg4oCUIGlzIG5ldmVyIGhhbmRlZCBvdXQgdG8gYSByZWFkZXIgKDkuNDQuMik6IGByZWNvcmRgIHJlbWVtYmVycyB0aGF0IGFcbiAqIGJ1bmRsZSBob2xkcyBzdWNoIGEgdmFsdWUgKGBjYXB0dXJlL2ZyZWV6ZS50cyDCtyBmcmVlemVSZWNvcmRgKSwgYW5kIGBsaXN0KClgIOKAlCBsaWtlIHRoZSBwdWJsaWNcbiAqIHNuYXBzaG90LCBgcnVubmVyL3NuYXBzaG90LnRzIMK3IHNlcnZlZFNuYXBzaG90YCDigJQgc2VydmVzIHRoYXQgYnVuZGxlIGFzIGEgY29weSBvZiBpdHMgb3BlbiBwYXRoc1xuICogKGBzZXJ2ZVJlY29yZGAsIG1hcHBlZCBhdCBpdHMgZmlyc3Qgc2VydmUpOiBmcmVzaCBmcm96ZW4gY29udGFpbmVycyBkb3duIHRvIGVhY2ggc3VjaCB2YWx1ZSwgYVxuICogZnJlc2ggY29weSBvZiBpdCwgZXZlcnkgb3RoZXIgcGFydCB0aGUgbG9nJ3Mgb3duLiBBIHJlYWRlciBlZGl0cyBvbmx5IGl0cyBvd24gY29weTsgZXZlcnkgbGF0ZXJcbiAqIHNlcnZlIHJlYWRzIHRoZSByZWNvcmQgYXMgcmVjb3JkZWQuIGByZWNvcmRlZCgpYCBpcyB0aGUgZW5naW5lJ3Mgb3duLCB1bnNlcnZlZCByZWFkLiBOYW1lZCBob2xlczogYW4gb2JqZWN0IGh1bmcgb24gYW4gYXJyYXkgRVhQQU5ETyAoYXJyYXlzIGFyZSB3YWxrZWRcbiAqIGJ5IGluZGV4IOKAlCB0aGUgYCdpbmRpY2VzJ2Agd2Fsaywgd2hpY2gga2VlcHMgdGhlIGZyZWV6ZSBpbnNpZGUgaXRzIGJ1ZGdldDsgYW4gZXhwYW5kbyBpcyBvdXQgb2ZcbiAqIGNvbnRyYWN0IGZvciBzdGF0ZSkgYW5kIGEgYFNoYXJlZEFycmF5QnVmZmVyYCAoZXZlcnkgY29weSBzaGFyZXMgaXRzIG1lbW9yeSkuIEEgZnJvemVuIFJlZ0V4cCdzXG4gKiBgbGFzdEluZGV4YCBpcyByZWFkLW9ubHksIHNvIGEgYC9nYCBvciBgL3lgIHJlZ2V4IHJlYWQgZnJvbSBhIGJ1bmRsZSB0aHJvd3Mgd2hlbiBgZXhlY2Agb3JcbiAqIGByZXBsYWNlYCBhZHZhbmNlIGl0LlxuICovXG5cbmltcG9ydCB7IGZyZWV6ZVJlY29yZCwgc2VydmVSZWNvcmQgfSBmcm9tICcuLi9jYXB0dXJlL2ZyZWV6ZS5qcyc7XG5pbXBvcnQgdHlwZSB7IEVtaXRTb3VyY2VQb3NpdGlvbiwgTG9nQWRkcmVzcyB9IGZyb20gJy4vZXZlbnRQb3NpdGlvbi5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbW1pdEJ1bmRsZSwgTWVtb3J5UGF0Y2ggfSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB7IGFwcGx5U21hcnRNZXJnZUludG8gfSBmcm9tICcuL3V0aWxzLmpzJztcblxuZXhwb3J0IGNsYXNzIEV2ZW50TG9nIHtcbiAgLyoqIEJhc2Ugc25hcHNob3QgQkVGT1JFIHRoZSBmaXJzdCBzdGFnZSBtdXRhdGVzIGFueXRoaW5nLiAqL1xuICBwcml2YXRlIGJhc2U6IGFueTtcbiAgLyoqIE9yZGVyZWQgbGlzdCBvZiBjb21taXQgYnVuZGxlcy4gKi9cbiAgcHJpdmF0ZSBzdGVwczogQ29tbWl0QnVuZGxlW10gPSBbXTtcbiAgcHJpdmF0ZSBzb3VyY2VBZGRyZXNzPzogTG9nQWRkcmVzcztcbiAgcHJpdmF0ZSBzb3VyY2VBZGRyZXNzUmV0aXJlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKGluaXRpYWxNZW1vcnk6IGFueSkge1xuICAgIC8vIE5vcm1hbGlzZWQgdG8gYW4gb2JqZWN0OiB0aGUgYmFzZSBpcyBhIFNUQVRFLCBhbmQgZXZlcnkgZm9sZCBvdmVyIGl0XG4gICAgLy8gKGBtYXRlcmlhbGlzZWAsIGBzdGF0ZUF0YCkgYXBwbGllcyBwYXRoIHdyaXRlcyB0byBpdC4gYHVuZGVmaW5lZGAg4oCUXG4gICAgLy8gd2hhdCBhIHJ1biB3aXRoIG5vIGBpbml0aWFsQ29udGV4dGAgdXNlZCB0byBzdG9yZSBoZXJlIOKAlCBtYWRlIGV2ZXJ5XG4gICAgLy8gb25lIG9mIHRob3NlIGZvbGRzIHRocm93IG9uIHRoZSBmaXJzdCBgc2V0YC5cbiAgICB0aGlzLmJhc2UgPSBpbml0aWFsTWVtb3J5ID09PSB1bmRlZmluZWQgPyB7fSA6IHN0cnVjdHVyZWRDbG9uZShpbml0aWFsTWVtb3J5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZm9sZCBCQVNFIOKAlCB0aGUgc3RhdGUgYXMgaXQgc3Rvb2QgYmVmb3JlIHRoZSBmaXJzdCBjb21taXQuXG4gICAqXG4gICAqIFRoaXMgaXMgdGhlIG90aGVyIGhhbGYgb2YgdGhlIGNvbW1pdCBsb2c6IGJ1bmRsZXMgYXJlIERJRkZTLCBzbyBhIGxvZ1xuICAgKiBhbG9uZSBjYW5ub3QgcmVjb25zdHJ1Y3Qgc3RhdGUgdGhhdCB3YXMgc2VlZGVkIGJlZm9yZSB0aGUgcnVuIChhblxuICAgKiBleGVjdXRvciBgaW5pdGlhbENvbnRleHRgLCBgZGVmYXVsdFZhbHVlc0ZvckNvbnRleHRgLCBhIHJlc3VtZSdzXG4gICAqIGBjaGVja3BvaW50LnNoYXJlZFN0YXRlYCwgYSBzdWJmbG93J3MgYGlucHV0TWFwcGVyYCBzZWVkKS4gVHJhdmVsbGluZ1xuICAgKiB3aXRoIHRoZSBsb2cg4oCUIGBSdW50aW1lU25hcHNob3QuaW5pdGlhbFN0YXRlYCDigJQgaXMgd2hhdCBsZXRzIGFuIE9GRkxJTkVcbiAgICogY29uc3VtZXIgZm9sZDsgd2l0aG91dCBpdCB0aGUgaG9uZXN0IGFuc3dlciBpcyBhIHBhcnRpYWwgb25lXG4gICAqIChgc3RhdGVBdGAncyBgYmFzaXM6ICdsb2ctb25seSdgKS5cbiAgICpcbiAgICogUmV0dXJucyBhIGZyZXNoIGRldGFjaGVkIGNsb25lIG9uIGV2ZXJ5IGNhbGwg4oCUIHRoZSBjYWxsZXIgb3ducyBpdC5cbiAgICovXG4gIGdldEluaXRpYWxTdGF0ZSgpOiBhbnkge1xuICAgIHJldHVybiBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5iYXNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvbnN0cnVjdHMgdGhlIGZ1bGwgc3RhdGUgYXQgYW55IGdpdmVuIHN0ZXAuXG4gICAqIFJlcGxheXMgY29tbWl0cyBmcm9tIHRoZSBiZWdpbm5pbmcg4oCUIE8obikgYnV0IGxvdyBtZW1vcnkgZm9vdHByaW50LlxuICAgKlxuICAgKiBJTkRFWCBDT05WRU5USU9OIOKAlCBgc3RlcElkeGAgaXMgRVhDTFVTSVZFOiBgbWF0ZXJpYWxpc2UoMylgIGZvbGRzIGNvbW1pdHNcbiAgICogMCwgMSBhbmQgMi4gYHN0YXRlQXQoc291cmNlLCBjb21taXRJZHgpYCAoZm9vdHByaW50anMvdHJhY2UpIGZvbGRzIHRoZVxuICAgKiBzYW1lIGxvZyBidXQgaXRzIGBjb21taXRJZHhgIGlzIElOQ0xVU0lWRSwgYmVjYXVzZSBhIHJlYWRlcidzIGN1cnNvciBhc2tzXG4gICAqIFwidGhlIHN0YXRlIEFUIHRoaXMgc3RvcFwiLCB3aGljaCBtdXN0IGluY2x1ZGUgdGhhdCBzdG9wJ3Mgb3duIGNvbW1pdC4gVHdvXG4gICAqIGZvbGRzIG92ZXIgb25lIGxvZyB3aXRoIG9wcG9zaXRlIGNvbnZlbnRpb25zOiBjaGVjayB3aGljaCBvbmUgeW91IGhvbGQuXG4gICAqXG4gICAqIE9uZSBjbG9uZSBvZiB0aGUgYmFzZSBwZXIgY2FsbCwgdGhlbiBldmVyeSBidW5kbGUgcmVwbGF5ZWQgSU5UTyB0aGF0XG4gICAqIHByaXZhdGUgY29weSAoYGFwcGx5U21hcnRNZXJnZUludG9gIOKAlCB0aGUgbGl2ZSBjb21taXQncyBjb3B5LW9uLXdyaXRlIGxhd1xuICAgKiBiZWxvdyB0aGUgcm9vdCwgOS4yOS4wLCBzbyB0aGUgZm9sZCBhbmQgdGhlIGxpdmUgc3RhdGUgYWdyZWUgYXQgZXZlcnlcbiAgICogcGF0aCkuIFRoZSByZXN1bHQgaXMgdGhlIGNhbGxlcidzOiBpdCBzaGFyZXMgbm90aGluZyB3aXRoIHRoZSBiYXNlIG9yXG4gICAqIHRoZSBsb2cuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFNpbmNlIDkuMzMuMCDigJQgdXNlIGBzdGF0ZUF0YCBmcm9tIGBmb290cHJpbnRqcy90cmFjZWAsIHdoaWNoIGZvbGRzIHRoZSBzYW1lIGxvZ1xuICAgKiBmcm9tIHRoZSBzYW1lIGJhc2UgKGBSdW50aW1lU25hcHNob3QuaW5pdGlhbFN0YXRlYCkgYW5kIHNheXMgaG93IGl0IHdhcyBkZXJpdmVkIChgYmFzaXNgKS5cbiAgICogTm90aGluZyBpbiB0aGUgbGlicmFyeSBjYWxscyB0aGlzOyBpdCBzdGF5cyBmb3Igb25lIG1pbm9yIGFuZCBpcyB0aGVuIHJlbW92ZWQuIE1pbmQgdGhlXG4gICAqIGluZGV4OiBgbWF0ZXJpYWxpc2UobilgIGZvbGRzIGNvbW1pdHMgYDAuLm4tMWAsIGBzdGF0ZUF0KHNvdXJjZSwgbiAtIDEpYCB0aGUgc2FtZSBjb21taXRzLlxuICAgKi9cbiAgbWF0ZXJpYWxpc2Uoc3RlcElkeCA9IHRoaXMuc3RlcHMubGVuZ3RoKTogYW55IHtcbiAgICBjb25zdCBvdXQgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5iYXNlKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ZXBJZHg7IGkrKykge1xuICAgICAgY29uc3QgeyBvdmVyd3JpdGUsIHVwZGF0ZXMsIHRyYWNlIH0gPSB0aGlzLnN0ZXBzW2ldO1xuICAgICAgYXBwbHlTbWFydE1lcmdlSW50byhvdXQsIHVwZGF0ZXMgYXMgTWVtb3J5UGF0Y2gsIG92ZXJ3cml0ZSBhcyBNZW1vcnlQYXRjaCwgdHJhY2UpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNpc3RzIGEgY29tbWl0IGJ1bmRsZSBmb3IgYSBmaW5pc2hlZCBzdGFnZSwgYW5kIEZSRUVaRVMgaXQgKHNlZSB0aGUgbW9kdWxlIGRvYyk6IHRoZSBidW5kbGVcbiAgICogaXMgc3RhbXBlZCB3aXRoIGl0cyBwb3NpdGlvbiwgdGhlbiBkZWVwLWZyb3plbiwgdGhlbiBhcHBlbmRlZC4gVGhlIGVuZ2luZSBoYW5kcyBpdCBhIGJ1bmRsZVxuICAgKiBidWlsdCBmb3IgdGhlIGxvZyBhbG9uZTsgYSBjYWxsZXIgb2YgdGhpcyBjbGFzcyAoYGZvb3RwcmludGpzL3dyaXRlYCkgaGFuZHMgb3ZlciBhIGJ1bmRsZSBpdFxuICAgKiB3aWxsIG5vIGxvbmdlciBlZGl0IOKAlCBpdHMgb3duIG9iamVjdCBpcyB0aGUgb25lIGZyb3plbi5cbiAgICovXG4gIHJlY29yZChidW5kbGU6IENvbW1pdEJ1bmRsZSk6IHZvaWQge1xuICAgIGJ1bmRsZS5pZHggPSB0aGlzLnN0ZXBzLmxlbmd0aDtcbiAgICBmcmVlemVSZWNvcmQoYnVuZGxlLCAnaW5kaWNlcycpO1xuICAgIHRoaXMuc3RlcHMucHVzaChidW5kbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2ZXJ5IHJlY29yZGVkIGNvbW1pdCBidW5kbGUsIEFTIFNFUlZFRCAoOS40NC4yKTogYSBuZXcgYXJyYXkgZWFjaCBjYWxsOyBhIGJ1bmRsZSBmcmVlemluZyBzZWFsZWRcbiAgICogd2hvbGUgaXMgdGhlIGxvZydzIG93biAoZnJvemVuKSBvYmplY3QsIG9uZSBob2xkaW5nIGEgRGF0ZSwgTWFwLCBidWZmZXIg4oCmIGlzIGEgY29weSBvZiBpdHMgb3BlblxuICAgKiBwYXRocyAoYGNhcHR1cmUvZnJlZXplLnRzIMK3IHNlcnZlUmVjb3JkYCkg4oCUIHRoZSByZWFkZXIncyBvd24sIHNvIG5vIGVkaXQgcmVhY2hlcyB0aGUgbG9nLlxuICAgKi9cbiAgbGlzdCgpOiBDb21taXRCdW5kbGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHMubWFwKHNlcnZlUmVjb3JkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWwgVGhlIGJ1bmRsZXMgYXMgdGhlIGxvZyBob2xkcyB0aGVtIOKAlCBlYWNoIGZyb3plbiwgTk9UIHNlcnZlZCDigJQgaW4gYSBuZXcgYXJyYXksIHNvIGEgaG9sZGVyJ3NcbiAgICogYHNwbGljZWAgcmVhY2hlcyBvbmx5IGl0cyBvd24uIEZvciB0aGUgZW5naW5lJ3Mgb3duIHNuYXBzaG90IChgRXhlY3V0aW9uUnVudGltZSDCtyBnZXRTbmFwc2hvdGAsIHdoaWNoXG4gICAqIGEgc3ViZmxvdyBtb3VudCB0YWtlcyBvbmNlIHBlciBtb3VudCksIHNvIHRoZSBydW4gc2VydmVzIG5vdGhpbmc7IGEgcmVhZGVyIGlzIHNlcnZlZCBieSBgbGlzdCgpYCBhbmRcbiAgICogYGdldFNuYXBzaG90KCkuY29tbWl0TG9nYC4gQSBrbm93biBvcGVuIGRvb3IgKENIQU5HRUxPRyA5LjQ0LjIpOiBhIGhvbGRlciBvZiB0aGVzZSBidW5kbGVzIGNhbiBzdGlsbFxuICAgKiBlZGl0IGEgRGF0ZSwgTWFwIG9yIGJ1ZmZlciBpbnNpZGUgdGhlbS5cbiAgICovXG4gIHJlY29yZGVkKCk6IENvbW1pdEJ1bmRsZVtdIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcy5zbGljZSgpO1xuICB9XG5cbiAgLyoqIE51bWJlciBvZiByZWNvcmRlZCBjb21taXRzLiAqL1xuICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHMubGVuZ3RoO1xuICB9XG5cbiAgLyoqIEltbXV0YWJsZSBpZGVudGl0eSBvZiB0aGlzIGxvZywgYWJzZW50IHVudGlsIHRoZSBlbmdpbmUgYmluZHMgaXQuICovXG4gIGdldCBhZGRyZXNzKCk6IExvZ0FkZHJlc3MgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZUFkZHJlc3M7XG4gIH1cblxuICAvKiogQGludGVybmFsIEJpbmQgb25jZTsgcmVzdW1pbmcgdGhlIHNhbWUgbG9nIG11c3Qgbm90IHJlbmFtZSBpdHMgZWFybGllciBwb3NpdGlvbnMuICovXG4gIGJpbmRBZGRyZXNzKGxvZ1J1bklkOiBzdHJpbmcsIGRyaWxsUGF0aDogcmVhZG9ubHkgc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zb3VyY2VBZGRyZXNzUmV0aXJlZCkgcmV0dXJuO1xuICAgIHRoaXMuc291cmNlQWRkcmVzcyA/Pz0gT2JqZWN0LmZyZWV6ZSh7IGxvZ1J1bklkLCBkcmlsbFBhdGg6IE9iamVjdC5mcmVlemUoWy4uLmRyaWxsUGF0aF0pIH0pO1xuICB9XG5cbiAgLyoqIE8oMSkgc291cmNlLXRpbWUgY2FwdHVyZS4gTm8gY291bnRlciwgb2JzZXJ2ZXIgYm9va2tlZXBpbmcsIG9yIGZ1dHVyZSBjb21taXQgcHJlZGljdGlvbi4gKi9cbiAgY2FwdHVyZVBvc2l0aW9uKHJ1bklkOiBzdHJpbmcpOiBFbWl0U291cmNlUG9zaXRpb24gfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5zb3VyY2VBZGRyZXNzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiBPYmplY3QuZnJlZXplKHsgcnVuSWQsIC4uLnRoaXMuc291cmNlQWRkcmVzcywgY29tbWl0dGVkVGhyb3VnaElkeDogdGhpcy5zdGVwcy5sZW5ndGggLSAxIH0pO1xuICB9XG5cbiAgLyoqIFdpcGVzIGhpc3RvcnkgKHVzZWZ1bCBmb3IgdGVzdCByZXNldHMpLiAqL1xuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBzID0gW107XG4gICAgLy8gQSByZXNldCBwcmVmaXggY2Fubm90IHJldXNlIG9sZCBjb29yZGluYXRlcywgZXZlbiBpZiBhbm90aGVyIHN0YWdlIG9mXG4gICAgLy8gdGhlIFNBTUUgbGVnIGJpbmRzIGl0IGFnYWluLiBLZWVwIGNsZWFyJ3MgZGF0YSBiZWhhdmlvciwgYnV0IHJldGlyZVxuICAgIC8vIGFkZHJlc3NpbmcgZm9yIHRoaXMgbG9nOyBrbm93biBjb29yZGluYXRlcyByZXF1aXJlIGEgZnJlc2ggRXZlbnRMb2cuXG4gICAgdGhpcy5zb3VyY2VBZGRyZXNzID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc291cmNlQWRkcmVzc1JldGlyZWQgPSB0cnVlO1xuICB9XG59XG4iXX0=
|
package/dist/lib/memory/scrub.js
CHANGED
|
@@ -68,10 +68,12 @@ exports.scrubPatch = scrubPatch;
|
|
|
68
68
|
* its contract unchanged since 4.x: a fresh deep copy of `patch` (`structuredClone`) with
|
|
69
69
|
* {@link LOG_PLACEHOLDER} at every listed path that holds a defined value. Shares nothing with `patch`
|
|
70
70
|
* and never edits it. (It lived in `memory/utils.ts` until 9.33.0 and in `memory/redaction.ts` until
|
|
71
|
-
* C4; the engine's own commit path uses the clone-free {@link scrubPatch}.)
|
|
71
|
+
* C4; the engine's own commit path uses the clone-free {@link scrubPatch}.) No caller inside the
|
|
72
|
+
* library: it stays on `footprintjs/advanced` for the consumers that import it until 10.0.0 (the trace
|
|
73
|
+
* extraction, E6), which takes it off every door.
|
|
72
74
|
*/
|
|
73
75
|
function redactPatch(patch, redactedSet) {
|
|
74
76
|
return scrubPatch(structuredClone(patch), redactedSet);
|
|
75
77
|
}
|
|
76
78
|
exports.redactPatch = redactPatch;
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NydWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL21lbW9yeS9zY3J1Yi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHOzs7QUFFSCw2Q0FBc0Y7QUFDdEYseUNBQW1DO0FBQ25DLHVEQUFvRDtBQUdwRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILFNBQWdCLFVBQVUsQ0FBQyxLQUFrQixFQUFFLGFBQStCO0lBQzVFLElBQUksR0FBNEIsQ0FBQztJQUNqQyxJQUFJLEtBQWtDLENBQUM7SUFDdkMsS0FBSyxNQUFNLElBQUksSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFLLENBQUMsQ0FBQztRQUMvQixNQUFNLE9BQU8sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFBLHNCQUFTLEVBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUEsc0JBQVMsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssU0FBUztZQUFFLFNBQVM7UUFDbEYsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdEIsS0FBSyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7WUFDOUIsR0FBRyxHQUFHLElBQUEsd0JBQVcsRUFBQyxLQUFLLEVBQUUsS0FBSyxDQUFnQixDQUFDO1FBQ2pELENBQUM7UUFDRCxJQUFBLHFCQUFRLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFNLENBQUMsQ0FBQztRQUM1QixJQUFBLHNCQUFTLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxpQ0FBZSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNELE9BQU8sR0FBRyxJQUFJLEtBQUssQ0FBQztBQUN0QixDQUFDO0FBZkQsZ0NBZUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxLQUFrQixFQUFFLFdBQXdCO0lBQ3RFLE9BQU8sVUFBVSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUN6RCxDQUFDO0FBRkQsa0NBRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHNjcnViLnRzIOKAlCB0aGUgY29tbWl0IGxvZydzIHNjcnViOiB0aGUgcGxhY2Vob2xkZXIgYXQgZXZlcnkgcmVkYWN0ZWQgcGF0aCBvZiBhIHBhdGNoIChDNCwgTDIpLlxuICpcbiAqIFRoZSBSRUNPUkQncyBoYWxmIG9mIGEgcmVkYWN0aW9uLiBBIHJlZGFjdGVkIHBhdGggaXMgREFUQSBieSB0aGUgdGltZSBpdCByZWFjaGVzIGhlcmUg4oCUIHRoZVxuICogdHJhbnNhY3Rpb24gYnVmZmVyJ3MgYHJlZGFjdGVkUGF0aHNgLCByZWdpc3RlcmVkIGJ5IGBSZWNvcmRGcmFtZSDCtyB3cml0ZWAgZnJvbSB0aGUgc2NydWIgaXQgd2FzXG4gKiBoYW5kZWQg4oCUIGFuZCB0aGlzIGZpbGUgb25seSB3cml0ZXMgYExPR19QTEFDRUhPTERFUmAgKGBwbGFjZWhvbGRlcnMudHNgKSB3aGVyZSBzdWNoIGEgcGF0aCBob2xkc1xuICogYSB2YWx1ZS4gSXQgbmV2ZXIgZGVjaWRlcyBXSEFUIGlzIHNlY3JldDogdGhhdCBpcyB0aGUgZW5naW5lJ3MgdmVyZGljdCAoYHJlZGFjdGlvbi50c2AsIEw0IOKAlFxuICogYFJlZGFjdGlvblJ1bGVgIGFuZCB0aGUgd3JpdGUgZGVjaXNpb24pLCB3aGljaCBhbHNvIG93bnMgdGhlIE9USEVSIHBsYWNlaG9sZGVyLCB0aGUgc2NvcGUgY2hhbm5lbCdzXG4gKiBgU0NPUEVfUExBQ0VIT0xERVJgLiBCZWZvcmUgQzQgYm90aCBoYWx2ZXMgbGl2ZWQgaW4gYHJlZGFjdGlvbi50c2AsIHNvIHRoZSByZWNvcmQgaW1wb3J0ZWQgdGhlXG4gKiBlbmdpbmUncyBwb2xpY3kgbW9kdWxlIHRvIHdyaXRlIGEgc3RyaW5nLlxuICpcbiAqIFRIRSBMQVc6XG4gKiAgIDEuIEEgcGF0aCBpcyBzY3J1YmJlZCBvbmx5IHdoZXJlIGl0IGhvbGRzIGEgREVGSU5FRCB2YWx1ZSDigJQgc2NydWJiaW5nIG5ldmVyIGludmVudHMgYSBmaWVsZC5cbiAqICAgMi4gUGF0aHMgYXJlIHNjcnViYmVkIGluIHRoZSBzZXQncyBvcmRlciwgYWdhaW5zdCB0aGUgdHJlZSBhcyBzY3J1YmJlZCBzbyBmYXI6IGEgcGF0aCB1bmRlciBvbmVcbiAqICAgICAgYWxyZWFkeSBzY3J1YmJlZCBmaW5kcyBhIHN0cmluZywgbm90IGEgY29udGFpbmVyLCBhbmQgaXMgbGVmdCBhbG9uZS5cbiAqICAgMy4gVGhlIGlucHV0IHBhdGNoIGlzIG5ldmVyIGVkaXRlZC4gYHNjcnViUGF0Y2hgIGNvcGllcyBvbmx5IHRoZSBzcGluZSBvZiBlYWNoIHNjcnViYmVkIHBhdGhcbiAqICAgICAgKGFuZCBub3RoaW5nIGF0IGFsbCB3aGVuIG5vdGhpbmcgaXMgc2NydWJiZWQpOyBgcmVkYWN0UGF0Y2hgIGhhbmRzIGJhY2sgYSBmcmVzaCBkZWVwIGNvcHkuXG4gKi9cblxuaW1wb3J0IHsgbmF0aXZlR2V0LCBuYXRpdmVIYXMsIG5hdGl2ZVNldCwgb3duZWRSb290T2YsIG93blNwaW5lIH0gZnJvbSAnLi9wYXRoT3BzLmpzJztcbmltcG9ydCB7IERFTElNIH0gZnJvbSAnLi9wYXRocy5qcyc7XG5pbXBvcnQgeyBMT0dfUExBQ0VIT0xERVIgfSBmcm9tICcuL3BsYWNlaG9sZGVycy5qcyc7XG5pbXBvcnQgdHlwZSB7IE1lbW9yeVBhdGNoIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogVGhlIGNvbW1pdCBsb2cncyBzY3J1YjogYHBhdGNoYCB3aXRoIHtAbGluayBMT0dfUExBQ0VIT0xERVJ9IGF0IGV2ZXJ5IHBhdGggaW4gYHJlZGFjdGVkUGF0aHNgIHRoYXRcbiAqIGhvbGRzIGEgZGVmaW5lZCB2YWx1ZSDigJQgdGhlIGNvcHkgYHJlY29yZENvbW1pdGAgcmVjb3JkcyBhbmQgZmVlZHMgdGhlIHJlZGFjdGVkIG1pcnJvci5cbiAqXG4gKiBDTE9ORS1GUkVFICg5LjMzLjApLiBUaGUgcGF0Y2ggaXMgdGhlIHRyYW5zYWN0aW9uIGJ1ZmZlcidzIGNvbW1pdC10aW1lIHBheWxvYWQsIGFscmVhZHkgdGhlIHJlY29yZCdzXG4gKiBvd24gY29weSAoYFRyYW5zYWN0aW9uQnVmZmVyIMK3IGNvbW1pdGAgY2xvbmVzIGVhY2ggc3Vydml2aW5nIHBhdGggb25jZTsgdGhlIGJ1ZmZlciBpcyBkcm9wcGVkIGF0XG4gKiBjb21taXQpLCBzbyB0aGUgc2NydWIgY29waWVzIG9ubHkgd2hhdCBpdCBtdXN0IG5vdCBlZGl0IGluIHBsYWNlOlxuICogICAtIG5vIHBhdGggdG8gc2NydWIgKG5vIHBvbGljeSwgbm8gcGVyLWNhbGwgbWFyayDigJQgdGhlIGNvbW1vbiBjYXNlKSDihpIgYHBhdGNoYCBJVFNFTEYsIG5vIGNvcHkgYXQgYWxsO1xuICogICAtIG90aGVyd2lzZSDihpIgYSBuZXcgcm9vdCBhbmQgYSBzaGFsbG93IGNvcHkgb2YgZWFjaCBjb250YWluZXIgb24gYSBzY3J1YmJlZCBwYXRoIChgcGF0aE9wcyDCt1xuICogICAgIG93blNwaW5lYCksIGV2ZXJ5IG90aGVyIHN1YnRyZWUgc2hhcmVkIHdpdGggYHBhdGNoYC4gYHBhdGNoYCBpcyBuZXZlciBlZGl0ZWQuXG4gKiBUaGUgZW5naW5lIGNhbGxlZCB0aGUgcHVibGljIHtAbGluayByZWRhY3RQYXRjaH0gKGEgd2hvbGUgYHN0cnVjdHVyZWRDbG9uZWApIHR3aWNlIHBlciBjb21taXQgYmVmb3JlXG4gKiA5LjMzLjAuIFRoZSBieXRlcyBhcmUgdGhlIHNhbWU6IGEgc2NydWJiZWQgcGF0aCBob2xkcyB0aGUgcGxhY2Vob2xkZXIsIGV2ZXJ5IG90aGVyIHBhdGggdGhlIHZhbHVlIHRoZVxuICogYnVmZmVyIGNsb25lZCAocGlubmVkIGJ5IHRoZSA5LjE4LjEgLyA5LjE5LjEgcmVkYWN0aW9uIGJ5dGUgdGVzdHMpLlxuICpcbiAqIFBhdGhzIGFyZSBzY3J1YmJlZCBpbiB0aGUgc2V0J3Mgb3JkZXIsIGFnYWluc3QgdGhlIHRyZWUgYXMgc2NydWJiZWQgc28gZmFyOiBhIHBhdGggdW5kZXIgb25lIGFscmVhZHlcbiAqIHNjcnViYmVkIGZpbmRzIGEgc3RyaW5nLCBub3QgYSBjb250YWluZXIsIGFuZCBpcyBsZWZ0IGFsb25lIChhcyBiZWZvcmUpLlxuICpcbiAqIElOVEVSTkFMIOKAlCB0aGUgcmVzdWx0IHNoYXJlcyBzdHJ1Y3R1cmUgd2l0aCBgcGF0Y2hgLiBBIGNhbGxlciBvdXRzaWRlIHRoZSBjb21taXQgcGF0aCB3YW50c1xuICoge0BsaW5rIHJlZGFjdFBhdGNofS5cbiAqXG4gKiBAcGFyYW0gcmVkYWN0ZWRQYXRocyBERUxJTS1qb2luZWQgcGF0aHMgKGBUcmFuc2FjdGlvbkJ1ZmZlcmAncyBgcmVkYWN0ZWRQYXRoc2A7IGEgYnVuZGxlJ3NcbiAqICAgYHJlZGFjdGVkUGF0aHNgIGFycmF5IHdvcmtzIHRvbykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY3J1YlBhdGNoKHBhdGNoOiBNZW1vcnlQYXRjaCwgcmVkYWN0ZWRQYXRoczogSXRlcmFibGU8c3RyaW5nPik6IE1lbW9yeVBhdGNoIHtcbiAgbGV0IG91dDogTWVtb3J5UGF0Y2ggfCB1bmRlZmluZWQ7XG4gIGxldCBvd25lZDogV2Vha1NldDxvYmplY3Q+IHwgdW5kZWZpbmVkO1xuICBmb3IgKGNvbnN0IGZsYXQgb2YgcmVkYWN0ZWRQYXRocykge1xuICAgIGNvbnN0IHNlZ3MgPSBmbGF0LnNwbGl0KERFTElNKTtcbiAgICBjb25zdCBjdXJyZW50ID0gb3V0ID8/IHBhdGNoO1xuICAgIGlmICghbmF0aXZlSGFzKGN1cnJlbnQsIHNlZ3MpIHx8IG5hdGl2ZUdldChjdXJyZW50LCBzZWdzKSA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcbiAgICBpZiAob3V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG93bmVkID0gbmV3IFdlYWtTZXQ8b2JqZWN0PigpO1xuICAgICAgb3V0ID0gb3duZWRSb290T2YocGF0Y2gsIG93bmVkKSBhcyBNZW1vcnlQYXRjaDtcbiAgICB9XG4gICAgb3duU3BpbmUob3V0LCBzZWdzLCBvd25lZCEpO1xuICAgIG5hdGl2ZVNldChvdXQsIHNlZ3MsIExPR19QTEFDRUhPTERFUik7XG4gIH1cbiAgcmV0dXJuIG91dCA/PyBwYXRjaDtcbn1cblxuLyoqXG4gKiBSZWRhY3RzIHNlbnNpdGl2ZSB2YWx1ZXMgaW4gYSBwYXRjaCBmb3IgbG9nZ2luZy9kZWJ1Z2dpbmcg4oCUIHRoZSBQVUJMSUMgc2NydWIgKGBmb290cHJpbnRqcy9hZHZhbmNlZGApLFxuICogaXRzIGNvbnRyYWN0IHVuY2hhbmdlZCBzaW5jZSA0Lng6IGEgZnJlc2ggZGVlcCBjb3B5IG9mIGBwYXRjaGAgKGBzdHJ1Y3R1cmVkQ2xvbmVgKSB3aXRoXG4gKiB7QGxpbmsgTE9HX1BMQUNFSE9MREVSfSBhdCBldmVyeSBsaXN0ZWQgcGF0aCB0aGF0IGhvbGRzIGEgZGVmaW5lZCB2YWx1ZS4gU2hhcmVzIG5vdGhpbmcgd2l0aCBgcGF0Y2hgXG4gKiBhbmQgbmV2ZXIgZWRpdHMgaXQuIChJdCBsaXZlZCBpbiBgbWVtb3J5L3V0aWxzLnRzYCB1bnRpbCA5LjMzLjAgYW5kIGluIGBtZW1vcnkvcmVkYWN0aW9uLnRzYCB1bnRpbFxuICogQzQ7IHRoZSBlbmdpbmUncyBvd24gY29tbWl0IHBhdGggdXNlcyB0aGUgY2xvbmUtZnJlZSB7QGxpbmsgc2NydWJQYXRjaH0uKSBObyBjYWxsZXIgaW5zaWRlIHRoZVxuICogbGlicmFyeTogaXQgc3RheXMgb24gYGZvb3RwcmludGpzL2FkdmFuY2VkYCBmb3IgdGhlIGNvbnN1bWVycyB0aGF0IGltcG9ydCBpdCB1bnRpbCAxMC4wLjAgKHRoZSB0cmFjZVxuICogZXh0cmFjdGlvbiwgRTYpLCB3aGljaCB0YWtlcyBpdCBvZmYgZXZlcnkgZG9vci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZGFjdFBhdGNoKHBhdGNoOiBNZW1vcnlQYXRjaCwgcmVkYWN0ZWRTZXQ6IFNldDxzdHJpbmc+KTogTWVtb3J5UGF0Y2gge1xuICByZXR1cm4gc2NydWJQYXRjaChzdHJ1Y3R1cmVkQ2xvbmUocGF0Y2gpLCByZWRhY3RlZFNldCk7XG59XG4iXX0=
|