@workflow/core 5.0.0-beta.36 → 5.0.0-beta.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/dist/capabilities.d.ts +6 -0
  2. package/dist/capabilities.d.ts.map +1 -1
  3. package/dist/capabilities.js +13 -1
  4. package/dist/encryption.d.ts +15 -2
  5. package/dist/encryption.d.ts.map +1 -1
  6. package/dist/encryption.js +28 -7
  7. package/dist/flushable-stream.d.ts +26 -0
  8. package/dist/flushable-stream.d.ts.map +1 -1
  9. package/dist/flushable-stream.js +63 -187
  10. package/dist/index.d.ts +1 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +2 -2
  13. package/dist/log-format.js +3 -3
  14. package/dist/private.d.ts +76 -33
  15. package/dist/private.d.ts.map +1 -1
  16. package/dist/private.js +149 -22
  17. package/dist/replay-payload-cache.d.ts +3 -2
  18. package/dist/replay-payload-cache.d.ts.map +1 -1
  19. package/dist/replay-payload-cache.js +8 -2
  20. package/dist/runtime/count-step-started-events.d.ts +52 -0
  21. package/dist/runtime/count-step-started-events.d.ts.map +1 -0
  22. package/dist/runtime/count-step-started-events.js +72 -0
  23. package/dist/runtime/helpers.d.ts +41 -12
  24. package/dist/runtime/helpers.d.ts.map +1 -1
  25. package/dist/runtime/helpers.js +75 -22
  26. package/dist/runtime/resume-hook.d.ts +2 -2
  27. package/dist/runtime/resume-hook.d.ts.map +1 -1
  28. package/dist/runtime/resume-hook.js +174 -55
  29. package/dist/runtime/run.d.ts.map +1 -1
  30. package/dist/runtime/run.js +3 -3
  31. package/dist/runtime/runs.d.ts.map +1 -1
  32. package/dist/runtime/runs.js +5 -3
  33. package/dist/runtime/start.d.ts.map +1 -1
  34. package/dist/runtime/start.js +65 -18
  35. package/dist/runtime/step-executor.d.ts +9 -8
  36. package/dist/runtime/step-executor.d.ts.map +1 -1
  37. package/dist/runtime/step-executor.js +17 -17
  38. package/dist/runtime/suspension-handler.d.ts.map +1 -1
  39. package/dist/runtime/suspension-handler.js +2 -3
  40. package/dist/runtime/world.d.ts +2 -7
  41. package/dist/runtime/world.d.ts.map +1 -1
  42. package/dist/runtime/world.js +3 -10
  43. package/dist/runtime.d.ts +1 -1
  44. package/dist/runtime.d.ts.map +1 -1
  45. package/dist/runtime.js +74 -122
  46. package/dist/sealed-box.d.ts +167 -0
  47. package/dist/sealed-box.d.ts.map +1 -0
  48. package/dist/sealed-box.js +571 -0
  49. package/dist/serialization/client.d.ts +3 -3
  50. package/dist/serialization/client.d.ts.map +1 -1
  51. package/dist/serialization/client.js +1 -1
  52. package/dist/serialization/codec.d.ts +6 -4
  53. package/dist/serialization/codec.d.ts.map +1 -1
  54. package/dist/serialization/codec.js +1 -1
  55. package/dist/serialization/encryption.d.ts +118 -17
  56. package/dist/serialization/encryption.d.ts.map +1 -1
  57. package/dist/serialization/encryption.js +131 -15
  58. package/dist/serialization/step.d.ts +4 -4
  59. package/dist/serialization/step.d.ts.map +1 -1
  60. package/dist/serialization/step.js +2 -2
  61. package/dist/serialization/types.d.ts +20 -0
  62. package/dist/serialization/types.d.ts.map +1 -1
  63. package/dist/serialization/types.js +11 -1
  64. package/dist/serialization-format.d.ts +44 -4
  65. package/dist/serialization-format.d.ts.map +1 -1
  66. package/dist/serialization-format.js +66 -9
  67. package/dist/serialization.d.ts +21 -21
  68. package/dist/serialization.d.ts.map +1 -1
  69. package/dist/serialization.js +496 -174
  70. package/dist/set-attributes.d.ts +2 -7
  71. package/dist/set-attributes.d.ts.map +1 -1
  72. package/dist/set-attributes.js +1 -6
  73. package/dist/step/context-storage.d.ts +2 -2
  74. package/dist/step/context-storage.d.ts.map +1 -1
  75. package/dist/step/context-storage.js +2 -2
  76. package/dist/step/writable-stream.d.ts.map +1 -1
  77. package/dist/step/writable-stream.js +14 -3
  78. package/dist/step.d.ts.map +1 -1
  79. package/dist/step.js +79 -8
  80. package/dist/symbols.d.ts +23 -10
  81. package/dist/symbols.d.ts.map +1 -1
  82. package/dist/symbols.js +24 -11
  83. package/dist/telemetry/semantic-conventions.d.ts +4 -4
  84. package/dist/telemetry/semantic-conventions.js +2 -2
  85. package/dist/version.d.ts +1 -1
  86. package/dist/version.js +2 -2
  87. package/dist/vm/index.d.ts.map +1 -1
  88. package/dist/vm/index.js +76 -9
  89. package/dist/workflow/abort-controller.d.ts +1 -1
  90. package/dist/workflow/abort-controller.d.ts.map +1 -1
  91. package/dist/workflow/abort-controller.js +36 -2
  92. package/dist/workflow/hook.d.ts.map +1 -1
  93. package/dist/workflow/hook.js +64 -24
  94. package/dist/workflow/index.d.ts +1 -1
  95. package/dist/workflow/index.d.ts.map +1 -1
  96. package/dist/workflow/index.js +2 -2
  97. package/dist/workflow/set-attributes.d.ts +0 -9
  98. package/dist/workflow/set-attributes.d.ts.map +1 -1
  99. package/dist/workflow/set-attributes.js +1 -6
  100. package/dist/workflow/sleep.d.ts.map +1 -1
  101. package/dist/workflow/sleep.js +21 -9
  102. package/dist/workflow.d.ts +2 -2
  103. package/dist/workflow.d.ts.map +1 -1
  104. package/dist/workflow.js +22 -83
  105. package/docs/api-reference/set-attributes.mdx +0 -4
  106. package/docs/how-it-works/cancellation.mdx +2 -2
  107. package/docs/how-it-works/code-transform.mdx +19 -15
  108. package/docs/how-it-works/framework-integrations.mdx +95 -341
  109. package/package.json +6 -6
  110. package/dist/runtime/step-handler.d.ts +0 -2
  111. package/dist/runtime/step-handler.d.ts.map +0 -1
  112. package/dist/runtime/step-handler.js +0 -839
@@ -5,13 +5,13 @@
5
5
  * arguments) and when receiving workflow return values. Supports encryption.
6
6
  */
7
7
  import type { CodecOptions } from './codec.js';
8
- import { type CryptoKey } from './encryption.js';
8
+ import { type PayloadKey } from './encryption.js';
9
9
  /**
10
10
  * Serialize a value from the client environment (e.g. workflow arguments).
11
11
  */
12
- export declare function serialize(value: unknown, encryptionKey?: CryptoKey, options?: CodecOptions): Promise<Uint8Array | unknown>;
12
+ export declare function serialize(value: unknown, encryptionKey?: PayloadKey, options?: CodecOptions): Promise<Uint8Array | unknown>;
13
13
  /**
14
14
  * Deserialize a value for the client environment (e.g. workflow return value).
15
15
  */
16
- export declare function deserialize(data: Uint8Array | unknown, encryptionKey?: CryptoKey, options?: CodecOptions): Promise<unknown>;
16
+ export declare function deserialize(data: Uint8Array | unknown, encryptionKey?: PayloadKey, options?: CodecOptions): Promise<unknown>;
17
17
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/serialization/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EACL,KAAK,SAAS,EAGf,MAAM,iBAAiB,CAAC;AAKzB;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,OAAO,EACd,aAAa,CAAC,EAAE,SAAS,EACzB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,CAmB/B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,UAAU,GAAG,OAAO,EAC1B,aAAa,CAAC,EAAE,SAAS,EACzB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,OAAO,CAAC,CAsBlB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/serialization/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAKzB;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,OAAO,EACd,aAAa,CAAC,EAAE,UAAU,EAC1B,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,CAmB/B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,UAAU,GAAG,OAAO,EAC1B,aAAa,CAAC,EAAE,UAAU,EAC1B,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,OAAO,CAAC,CAsBlB"}
@@ -45,4 +45,4 @@ export async function deserialize(data, encryptionKey, options) {
45
45
  }
46
46
  throw new Error(`Unsupported serialization format: ${format}`);
47
47
  }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcmlhbGl6YXRpb24vY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUVMLE9BQU8sSUFBSSxXQUFXLEVBQ3RCLE9BQU8sSUFBSSxXQUFXLEdBQ3ZCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFakQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFNBQVMsQ0FDN0IsS0FBYyxFQUNkLGFBQXlCLEVBQ3pCLE9BQXNCO0lBRXRCLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqRSxNQUFNLFFBQVEsR0FBRyxzQkFBc0IsQ0FDckMsbUJBQW1CLENBQUMsVUFBVSxFQUM5QixPQUFPLENBQ00sQ0FBQztRQUNoQiwrREFBK0Q7UUFDL0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxRQUFRLENBQy9CLFFBQVEsRUFDUixPQUFPLEVBQUUsV0FBVyxLQUFLLElBQUksRUFDN0IsT0FBTyxFQUFFLGdCQUFnQixDQUMxQixDQUFDO1FBQ0YsT0FBTyxXQUFXLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyx3QkFBd0IsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUUsTUFBTSxJQUFJLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQy9CLElBQTBCLEVBQzFCLGFBQXlCLEVBQ3pCLE9BQXNCO0lBRXRCLE1BQU0sU0FBUyxHQUFHLE1BQU0sVUFBVSxDQUNoQyxNQUFNLFdBQVcsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLEVBQ3RDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FDMUIsQ0FBQztJQUVGLElBQUksQ0FBQyxDQUFDLFNBQVMsWUFBWSxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLElBQUksWUFBWSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDbkMsT0FBTyxZQUFZLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYiwyREFBMkQsQ0FDNUQsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTFELElBQUksTUFBTSxLQUFLLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzlDLE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENsaWVudCAoZXh0ZXJuYWwpIG1vZGUgc2VyaWFsaXphdGlvbi5cbiAqXG4gKiBVc2VkIHdoZW4gc3RhcnRpbmcgd29ya2Zsb3dzIGZyb20gdGhlIGNsaWVudCBzaWRlIChzZXJpYWxpemluZyB3b3JrZmxvd1xuICogYXJndW1lbnRzKSBhbmQgd2hlbiByZWNlaXZpbmcgd29ya2Zsb3cgcmV0dXJuIHZhbHVlcy4gU3VwcG9ydHMgZW5jcnlwdGlvbi5cbiAqL1xuXG5pbXBvcnQgeyBTZXJpYWxpemF0aW9uRXJyb3IgfSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgQ29kZWNPcHRpb25zIH0gZnJvbSAnLi9jb2RlYy5qcyc7XG5pbXBvcnQgeyBkZXZhbHVlQ29kZWMgfSBmcm9tICcuL2NvZGVjLWRldmFsdWUuanMnO1xuaW1wb3J0IHsgY29tcHJlc3MsIGRlY29tcHJlc3MgfSBmcm9tICcuL2NvbXByZXNzaW9uLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgQ3J5cHRvS2V5LFxuICBkZWNyeXB0IGFzIGRlY3J5cHREYXRhLFxuICBlbmNyeXB0IGFzIGVuY3J5cHREYXRhLFxufSBmcm9tICcuL2VuY3J5cHRpb24uanMnO1xuaW1wb3J0IHsgZm9ybWF0U2VyaWFsaXphdGlvbkVycm9yLCByZXRocm93SWZSdW50aW1lRXJyb3IgfSBmcm9tICcuL2Vycm9ycy5qcyc7XG5pbXBvcnQgeyBkZWNvZGVGb3JtYXRQcmVmaXgsIGVuY29kZVdpdGhGb3JtYXRQcmVmaXggfSBmcm9tICcuL2Zvcm1hdC5qcyc7XG5pbXBvcnQgeyBTZXJpYWxpemF0aW9uRm9ybWF0IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogU2VyaWFsaXplIGEgdmFsdWUgZnJvbSB0aGUgY2xpZW50IGVudmlyb25tZW50IChlLmcuIHdvcmtmbG93IGFyZ3VtZW50cykuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXJpYWxpemUoXG4gIHZhbHVlOiB1bmtub3duLFxuICBlbmNyeXB0aW9uS2V5PzogQ3J5cHRvS2V5LFxuICBvcHRpb25zPzogQ29kZWNPcHRpb25zXG4pOiBQcm9taXNlPFVpbnQ4QXJyYXkgfCB1bmtub3duPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IGRldmFsdWVDb2RlYy5zZXJpYWxpemUodmFsdWUsICdjbGllbnQnLCBvcHRpb25zKTtcbiAgICBjb25zdCBwcmVmaXhlZCA9IGVuY29kZVdpdGhGb3JtYXRQcmVmaXgoXG4gICAgICBTZXJpYWxpemF0aW9uRm9ybWF0LkRFVkFMVUVfVjEsXG4gICAgICBwYXlsb2FkXG4gICAgKSBhcyBVaW50OEFycmF5O1xuICAgIC8vIENvbXByZXNzIGJlZm9yZSBlbmNyeXB0aW5nIOKAlCBlbmNyeXB0ZWQgYnl0ZXMgZG9uJ3QgY29tcHJlc3MuXG4gICAgY29uc3QgY29tcHJlc3NlZCA9IGF3YWl0IGNvbXByZXNzKFxuICAgICAgcHJlZml4ZWQsXG4gICAgICBvcHRpb25zPy5jb21wcmVzc2lvbiA9PT0gdHJ1ZSxcbiAgICAgIG9wdGlvbnM/LmNvbXByZXNzaW9uU3RhdHNcbiAgICApO1xuICAgIHJldHVybiBlbmNyeXB0RGF0YShjb21wcmVzc2VkLCBlbmNyeXB0aW9uS2V5KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXRocm93SWZSdW50aW1lRXJyb3IoZXJyb3IpO1xuICAgIGNvbnN0IHsgbWVzc2FnZSwgaGludCB9ID0gZm9ybWF0U2VyaWFsaXphdGlvbkVycm9yKCdjbGllbnQgdmFsdWUnLCBlcnJvcik7XG4gICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FcnJvcihtZXNzYWdlLCB7IGhpbnQsIGNhdXNlOiBlcnJvciB9KTtcbiAgfVxufVxuXG4vKipcbiAqIERlc2VyaWFsaXplIGEgdmFsdWUgZm9yIHRoZSBjbGllbnQgZW52aXJvbm1lbnQgKGUuZy4gd29ya2Zsb3cgcmV0dXJuIHZhbHVlKS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlc2VyaWFsaXplKFxuICBkYXRhOiBVaW50OEFycmF5IHwgdW5rbm93bixcbiAgZW5jcnlwdGlvbktleT86IENyeXB0b0tleSxcbiAgb3B0aW9ucz86IENvZGVjT3B0aW9uc1xuKTogUHJvbWlzZTx1bmtub3duPiB7XG4gIGNvbnN0IGRlY3J5cHRlZCA9IGF3YWl0IGRlY29tcHJlc3MoXG4gICAgYXdhaXQgZGVjcnlwdERhdGEoZGF0YSwgZW5jcnlwdGlvbktleSksXG4gICAgb3B0aW9ucz8uY29tcHJlc3Npb25TdGF0c1xuICApO1xuXG4gIGlmICghKGRlY3J5cHRlZCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgaWYgKGRldmFsdWVDb2RlYy5kZXNlcmlhbGl6ZUxlZ2FjeSkge1xuICAgICAgcmV0dXJuIGRldmFsdWVDb2RlYy5kZXNlcmlhbGl6ZUxlZ2FjeShkZWNyeXB0ZWQsICdjbGllbnQnLCBvcHRpb25zKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0Nhbm5vdCBkZXNlcmlhbGl6ZSBub24tYmluYXJ5IGRhdGEgd2l0aG91dCBsZWdhY3kgc3VwcG9ydCdcbiAgICApO1xuICB9XG5cbiAgY29uc3QgeyBmb3JtYXQsIHBheWxvYWQgfSA9IGRlY29kZUZvcm1hdFByZWZpeChkZWNyeXB0ZWQpO1xuXG4gIGlmIChmb3JtYXQgPT09IFNlcmlhbGl6YXRpb25Gb3JtYXQuREVWQUxVRV9WMSkge1xuICAgIHJldHVybiBkZXZhbHVlQ29kZWMuZGVzZXJpYWxpemUocGF5bG9hZCwgJ2NsaWVudCcsIG9wdGlvbnMpO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBzZXJpYWxpemF0aW9uIGZvcm1hdDogJHtmb3JtYXR9YCk7XG59XG4iXX0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcmlhbGl6YXRpb24vY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUNMLE9BQU8sSUFBSSxXQUFXLEVBQ3RCLE9BQU8sSUFBSSxXQUFXLEdBRXZCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFakQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFNBQVMsQ0FDN0IsS0FBYyxFQUNkLGFBQTBCLEVBQzFCLE9BQXNCO0lBRXRCLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqRSxNQUFNLFFBQVEsR0FBRyxzQkFBc0IsQ0FDckMsbUJBQW1CLENBQUMsVUFBVSxFQUM5QixPQUFPLENBQ00sQ0FBQztRQUNoQiwrREFBK0Q7UUFDL0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxRQUFRLENBQy9CLFFBQVEsRUFDUixPQUFPLEVBQUUsV0FBVyxLQUFLLElBQUksRUFDN0IsT0FBTyxFQUFFLGdCQUFnQixDQUMxQixDQUFDO1FBQ0YsT0FBTyxXQUFXLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyx3QkFBd0IsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUUsTUFBTSxJQUFJLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQy9CLElBQTBCLEVBQzFCLGFBQTBCLEVBQzFCLE9BQXNCO0lBRXRCLE1BQU0sU0FBUyxHQUFHLE1BQU0sVUFBVSxDQUNoQyxNQUFNLFdBQVcsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLEVBQ3RDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FDMUIsQ0FBQztJQUVGLElBQUksQ0FBQyxDQUFDLFNBQVMsWUFBWSxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLElBQUksWUFBWSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDbkMsT0FBTyxZQUFZLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYiwyREFBMkQsQ0FDNUQsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTFELElBQUksTUFBTSxLQUFLLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzlDLE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENsaWVudCAoZXh0ZXJuYWwpIG1vZGUgc2VyaWFsaXphdGlvbi5cbiAqXG4gKiBVc2VkIHdoZW4gc3RhcnRpbmcgd29ya2Zsb3dzIGZyb20gdGhlIGNsaWVudCBzaWRlIChzZXJpYWxpemluZyB3b3JrZmxvd1xuICogYXJndW1lbnRzKSBhbmQgd2hlbiByZWNlaXZpbmcgd29ya2Zsb3cgcmV0dXJuIHZhbHVlcy4gU3VwcG9ydHMgZW5jcnlwdGlvbi5cbiAqL1xuXG5pbXBvcnQgeyBTZXJpYWxpemF0aW9uRXJyb3IgfSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgQ29kZWNPcHRpb25zIH0gZnJvbSAnLi9jb2RlYy5qcyc7XG5pbXBvcnQgeyBkZXZhbHVlQ29kZWMgfSBmcm9tICcuL2NvZGVjLWRldmFsdWUuanMnO1xuaW1wb3J0IHsgY29tcHJlc3MsIGRlY29tcHJlc3MgfSBmcm9tICcuL2NvbXByZXNzaW9uLmpzJztcbmltcG9ydCB7XG4gIGRlY3J5cHQgYXMgZGVjcnlwdERhdGEsXG4gIGVuY3J5cHQgYXMgZW5jcnlwdERhdGEsXG4gIHR5cGUgUGF5bG9hZEtleSxcbn0gZnJvbSAnLi9lbmNyeXB0aW9uLmpzJztcbmltcG9ydCB7IGZvcm1hdFNlcmlhbGl6YXRpb25FcnJvciwgcmV0aHJvd0lmUnVudGltZUVycm9yIH0gZnJvbSAnLi9lcnJvcnMuanMnO1xuaW1wb3J0IHsgZGVjb2RlRm9ybWF0UHJlZml4LCBlbmNvZGVXaXRoRm9ybWF0UHJlZml4IH0gZnJvbSAnLi9mb3JtYXQuanMnO1xuaW1wb3J0IHsgU2VyaWFsaXphdGlvbkZvcm1hdCB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG4vKipcbiAqIFNlcmlhbGl6ZSBhIHZhbHVlIGZyb20gdGhlIGNsaWVudCBlbnZpcm9ubWVudCAoZS5nLiB3b3JrZmxvdyBhcmd1bWVudHMpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VyaWFsaXplKFxuICB2YWx1ZTogdW5rbm93bixcbiAgZW5jcnlwdGlvbktleT86IFBheWxvYWRLZXksXG4gIG9wdGlvbnM/OiBDb2RlY09wdGlvbnNcbik6IFByb21pc2U8VWludDhBcnJheSB8IHVua25vd24+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXlsb2FkID0gZGV2YWx1ZUNvZGVjLnNlcmlhbGl6ZSh2YWx1ZSwgJ2NsaWVudCcsIG9wdGlvbnMpO1xuICAgIGNvbnN0IHByZWZpeGVkID0gZW5jb2RlV2l0aEZvcm1hdFByZWZpeChcbiAgICAgIFNlcmlhbGl6YXRpb25Gb3JtYXQuREVWQUxVRV9WMSxcbiAgICAgIHBheWxvYWRcbiAgICApIGFzIFVpbnQ4QXJyYXk7XG4gICAgLy8gQ29tcHJlc3MgYmVmb3JlIGVuY3J5cHRpbmcg4oCUIGVuY3J5cHRlZCBieXRlcyBkb24ndCBjb21wcmVzcy5cbiAgICBjb25zdCBjb21wcmVzc2VkID0gYXdhaXQgY29tcHJlc3MoXG4gICAgICBwcmVmaXhlZCxcbiAgICAgIG9wdGlvbnM/LmNvbXByZXNzaW9uID09PSB0cnVlLFxuICAgICAgb3B0aW9ucz8uY29tcHJlc3Npb25TdGF0c1xuICAgICk7XG4gICAgcmV0dXJuIGVuY3J5cHREYXRhKGNvbXByZXNzZWQsIGVuY3J5cHRpb25LZXkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldGhyb3dJZlJ1bnRpbWVFcnJvcihlcnJvcik7XG4gICAgY29uc3QgeyBtZXNzYWdlLCBoaW50IH0gPSBmb3JtYXRTZXJpYWxpemF0aW9uRXJyb3IoJ2NsaWVudCB2YWx1ZScsIGVycm9yKTtcbiAgICB0aHJvdyBuZXcgU2VyaWFsaXphdGlvbkVycm9yKG1lc3NhZ2UsIHsgaGludCwgY2F1c2U6IGVycm9yIH0pO1xuICB9XG59XG5cbi8qKlxuICogRGVzZXJpYWxpemUgYSB2YWx1ZSBmb3IgdGhlIGNsaWVudCBlbnZpcm9ubWVudCAoZS5nLiB3b3JrZmxvdyByZXR1cm4gdmFsdWUpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVzZXJpYWxpemUoXG4gIGRhdGE6IFVpbnQ4QXJyYXkgfCB1bmtub3duLFxuICBlbmNyeXB0aW9uS2V5PzogUGF5bG9hZEtleSxcbiAgb3B0aW9ucz86IENvZGVjT3B0aW9uc1xuKTogUHJvbWlzZTx1bmtub3duPiB7XG4gIGNvbnN0IGRlY3J5cHRlZCA9IGF3YWl0IGRlY29tcHJlc3MoXG4gICAgYXdhaXQgZGVjcnlwdERhdGEoZGF0YSwgZW5jcnlwdGlvbktleSksXG4gICAgb3B0aW9ucz8uY29tcHJlc3Npb25TdGF0c1xuICApO1xuXG4gIGlmICghKGRlY3J5cHRlZCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgaWYgKGRldmFsdWVDb2RlYy5kZXNlcmlhbGl6ZUxlZ2FjeSkge1xuICAgICAgcmV0dXJuIGRldmFsdWVDb2RlYy5kZXNlcmlhbGl6ZUxlZ2FjeShkZWNyeXB0ZWQsICdjbGllbnQnLCBvcHRpb25zKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0Nhbm5vdCBkZXNlcmlhbGl6ZSBub24tYmluYXJ5IGRhdGEgd2l0aG91dCBsZWdhY3kgc3VwcG9ydCdcbiAgICApO1xuICB9XG5cbiAgY29uc3QgeyBmb3JtYXQsIHBheWxvYWQgfSA9IGRlY29kZUZvcm1hdFByZWZpeChkZWNyeXB0ZWQpO1xuXG4gIGlmIChmb3JtYXQgPT09IFNlcmlhbGl6YXRpb25Gb3JtYXQuREVWQUxVRV9WMSkge1xuICAgIHJldHVybiBkZXZhbHVlQ29kZWMuZGVzZXJpYWxpemUocGF5bG9hZCwgJ2NsaWVudCcsIG9wdGlvbnMpO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBzZXJpYWxpemF0aW9uIGZvcm1hdDogJHtmb3JtYXR9YCk7XG59XG4iXX0=
@@ -21,7 +21,7 @@ import type { FormatPrefix } from './types.js';
21
21
  *
22
22
  * - `workflow`: Runs inside the workflow VM. Includes class serialization,
23
23
  * step function serialization. No stream handling.
24
- * - `step`: Runs in the step handler (Node.js). Includes class serialization.
24
+ * - `step`: Runs in the step executor (Node.js). Includes class serialization.
25
25
  * No step function serialization. Stream handling at call sites.
26
26
  * - `client`: Runs on the client side. Includes class serialization.
27
27
  * No step function serialization. Stream handling at call sites.
@@ -51,9 +51,11 @@ export interface CodecOptions {
51
51
  */
52
52
  extraRevivers?: Record<string, (value: any) => any>;
53
53
  /**
54
- * Whether to gzip-compress the serialized payload (write side only;
55
- * reads always handle both compressed and uncompressed data). Must
56
- * only be enabled when the target run supports compressed payloads:
54
+ * Whether to compress the serialized payload (write side only; zstd is
55
+ * preferred and gzip is the portable fallback). Reads dispatch compressed
56
+ * payloads by format prefix; zstd decoding still requires runtime or
57
+ * registered decoder support. Must only be enabled when the target run
58
+ * supports compressed payloads:
57
59
  * run specVersion >= SPEC_VERSION_SUPPORTS_COMPRESSION, and for
58
60
  * cross-deployment writes the target deployment's capabilities (see
59
61
  * `getRunCapabilities` in capabilities.ts). Defaults to `false`.
@@ -1 +1 @@
1
- {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/serialization/codec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE/D;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;IAEpD;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;IAEpD;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,MAAM,WAAW,KAAK;IACpB,6EAA6E;IAC7E,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAEpC;;;;;;;;;OASG;IACH,SAAS,CACP,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE,YAAY,GACrB,UAAU,CAAC;IAEd;;;;;;;;;OASG;IACH,WAAW,CACT,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC;IAEX;;;;;;;;;OASG;IACH,iBAAiB,CAAC,CAChB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC;CACZ"}
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/serialization/codec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE/D;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;IAEpD;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;IAEpD;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,MAAM,WAAW,KAAK;IACpB,6EAA6E;IAC7E,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAEpC;;;;;;;;;OASG;IACH,SAAS,CACP,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE,YAAY,GACrB,UAAU,CAAC;IAEd;;;;;;;;;OASG;IACH,WAAW,CACT,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC;IAEX;;;;;;;;;OASG;IACH,iBAAiB,CAAC,CAChB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC;CACZ"}
@@ -14,4 +14,4 @@
14
14
  * plain objects). No Date, Map, Set, typed arrays, etc.
15
15
  */
16
16
  export {};
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXphdGlvbi9jb2RlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29kZWMgaW50ZXJmYWNlIGZvciBzZXJpYWxpemF0aW9uIGZvcm1hdHMuXG4gKlxuICogQSBjb2RlYyBoYW5kbGVzIHRoZSBjb3JlIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSBsb2dpYyBmb3IgYSBzcGVjaWZpY1xuICogd2lyZSBmb3JtYXQgKGRldmFsdWUsIENCT1IsIEpTT04sIGV0Yy4pLiBFYWNoIGNvZGVjIGlzIHJlc3BvbnNpYmxlXG4gKiBmb3IgaGFuZGxpbmcgYWxsIHN1cHBvcnRlZCBkYXRhIHR5cGVzIGludGVybmFsbHkg4oCUIHRoZSBjYWxsZXIgb25seVxuICogc3BlY2lmaWVzIHdoaWNoIHNlcmlhbGl6YXRpb24gbW9kZSB0byB1c2UuXG4gKlxuICogLSAqKmRldmFsdWUqKjogVXNlcyBjdXN0b20gcmVkdWNlcnMvcmV2aXZlcnMgZm9yIERhdGUsIEVycm9yLCBNYXAsIFNldCxcbiAqICAgdHlwZWQgYXJyYXlzLCBjbGFzcyBpbnN0YW5jZXMsIGV0Yy5cbiAqIC0gKipjYm9yKio6IFdvdWxkIGhhbmRsZSBEYXRlLCB0eXBlZCBhcnJheXMsIE1hcCwgU2V0IG5hdGl2ZWx5IHZpYSB0aGVcbiAqICAgQ0JPUiB0eXBlIHN5c3RlbS4gQ2xhc3MgaW5zdGFuY2VzIHdvdWxkIHN0aWxsIG5lZWQgY3VzdG9tIGhhbmRsaW5nLlxuICogLSAqKmpzb24qKjogV291bGQgb25seSBzdXBwb3J0IHN0YW5kYXJkIEpTT04gdHlwZXMgKHByaW1pdGl2ZXMsIGFycmF5cyxcbiAqICAgcGxhaW4gb2JqZWN0cykuIE5vIERhdGUsIE1hcCwgU2V0LCB0eXBlZCBhcnJheXMsIGV0Yy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IENvbXByZXNzaW9uU3RhdHMgfSBmcm9tICcuL2NvbXByZXNzaW9uLmpzJztcbmltcG9ydCB0eXBlIHsgRm9ybWF0UHJlZml4IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogVGhlIHNlcmlhbGl6YXRpb24gbW9kZSBkZXRlcm1pbmVzIHdoaWNoIHR5cGVzIGFyZSBzdXBwb3J0ZWQgYW5kIGhvd1xuICogdGhleSdyZSBoYW5kbGVkLiBEaWZmZXJlbnQgbW9kZXMgY29tcG9zZSBkaWZmZXJlbnQgc2V0cyBvZiB0eXBlIGhhbmRsZXJzLlxuICpcbiAqIC0gYHdvcmtmbG93YDogUnVucyBpbnNpZGUgdGhlIHdvcmtmbG93IFZNLiBJbmNsdWRlcyBjbGFzcyBzZXJpYWxpemF0aW9uLFxuICogICBzdGVwIGZ1bmN0aW9uIHNlcmlhbGl6YXRpb24uIE5vIHN0cmVhbSBoYW5kbGluZy5cbiAqIC0gYHN0ZXBgOiBSdW5zIGluIHRoZSBzdGVwIGhhbmRsZXIgKE5vZGUuanMpLiBJbmNsdWRlcyBjbGFzcyBzZXJpYWxpemF0aW9uLlxuICogICBObyBzdGVwIGZ1bmN0aW9uIHNlcmlhbGl6YXRpb24uIFN0cmVhbSBoYW5kbGluZyBhdCBjYWxsIHNpdGVzLlxuICogLSBgY2xpZW50YDogUnVucyBvbiB0aGUgY2xpZW50IHNpZGUuIEluY2x1ZGVzIGNsYXNzIHNlcmlhbGl6YXRpb24uXG4gKiAgIE5vIHN0ZXAgZnVuY3Rpb24gc2VyaWFsaXphdGlvbi4gU3RyZWFtIGhhbmRsaW5nIGF0IGNhbGwgc2l0ZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFNlcmlhbGl6YXRpb25Nb2RlID0gJ3dvcmtmbG93JyB8ICdzdGVwJyB8ICdjbGllbnQnO1xuXG4vKipcbiAqIE9wdGlvbnMgcGFzc2VkIHRvIGNvZGVjIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSB0byBzdXBwb3J0IFZNLWNvbnRleHRcbiAqIHNlcmlhbGl6YXRpb24gYW5kIG1vZGUtc3BlY2lmaWMgdHlwZSBoYW5kbGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2RlY09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGdsb2JhbCBvYmplY3QgdG8gdXNlIGZvciBgaW5zdGFuY2VvZmAgY2hlY2tzIGFuZCBjb25zdHJ1Y3RvcnMuXG4gICAqIERlZmF1bHRzIHRvIGBnbG9iYWxUaGlzYC4gTXVzdCBiZSBzZXQgdG8gdGhlIFZNJ3MgZ2xvYmFsIHdoZW5cbiAgICogc2VyaWFsaXppbmcvZGVzZXJpYWxpemluZyBkYXRhIHRoYXQgY3Jvc3NlcyBWTSBib3VuZGFyaWVzLlxuICAgKi9cbiAgZ2xvYmFsPzogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCByZWR1Y2VycyB0byBtZXJnZSBpbnRvIHRoZSBtb2RlJ3MgZGVmYXVsdCByZWR1Y2Vycy5cbiAgICogVXNlZCBieSBkZWh5ZHJhdGUvaHlkcmF0ZSBmdW5jdGlvbnMgdGhhdCBuZWVkIHN0cmVhbSBoYW5kbGluZ1xuICAgKiBvciBvdGhlciBtb2RlLXNwZWNpZmljIHR5cGUgcmVkdWNlcnMuXG4gICAqL1xuICBleHRyYVJlZHVjZXJzPzogUmVjb3JkPHN0cmluZywgKHZhbHVlOiBhbnkpID0+IGFueT47XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgcmV2aXZlcnMgdG8gbWVyZ2UgaW50byB0aGUgbW9kZSdzIGRlZmF1bHQgcmV2aXZlcnMuXG4gICAqIFVzZWQgYnkgZGVoeWRyYXRlL2h5ZHJhdGUgZnVuY3Rpb25zIHRoYXQgbmVlZCBzdHJlYW0gaGFuZGxpbmdcbiAgICogb3Igb3RoZXIgbW9kZS1zcGVjaWZpYyB0eXBlIHJldml2ZXJzLlxuICAgKi9cbiAgZXh0cmFSZXZpdmVycz86IFJlY29yZDxzdHJpbmcsICh2YWx1ZTogYW55KSA9PiBhbnk+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGd6aXAtY29tcHJlc3MgdGhlIHNlcmlhbGl6ZWQgcGF5bG9hZCAod3JpdGUgc2lkZSBvbmx5O1xuICAgKiByZWFkcyBhbHdheXMgaGFuZGxlIGJvdGggY29tcHJlc3NlZCBhbmQgdW5jb21wcmVzc2VkIGRhdGEpLiBNdXN0XG4gICAqIG9ubHkgYmUgZW5hYmxlZCB3aGVuIHRoZSB0YXJnZXQgcnVuIHN1cHBvcnRzIGNvbXByZXNzZWQgcGF5bG9hZHM6XG4gICAqIHJ1biBzcGVjVmVyc2lvbiA+PSBTUEVDX1ZFUlNJT05fU1VQUE9SVFNfQ09NUFJFU1NJT04sIGFuZCBmb3JcbiAgICogY3Jvc3MtZGVwbG95bWVudCB3cml0ZXMgdGhlIHRhcmdldCBkZXBsb3ltZW50J3MgY2FwYWJpbGl0aWVzIChzZWVcbiAgICogYGdldFJ1bkNhcGFiaWxpdGllc2AgaW4gY2FwYWJpbGl0aWVzLnRzKS4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIGNvbXByZXNzaW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgdGVsZW1ldHJ5IHNpbmsgcG9wdWxhdGVkIGJ5IHRoZSBjb21wcmVzc2lvbiBsYXllciB3aXRoIHdoYXRcbiAgICogaXQgZGlkIHRvIHRoZSBwYXlsb2FkICh3aGV0aGVyIGl0IGNvbXByZXNzZWQsIGxvZ2ljYWwgdnMgc3RvcmVkIHNpemUpLlxuICAgKiBVc2VkIGJ5IHRoZSBkZWh5ZHJhdGUvaHlkcmF0ZSB3cmFwcGVycyB0byBlbWl0IE9UZWwgc3BhbiBhdHRyaWJ1dGVzLlxuICAgKi9cbiAgY29tcHJlc3Npb25TdGF0cz86IENvbXByZXNzaW9uU3RhdHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZWMge1xuICAvKiogVGhlIDQtY2hhcmFjdGVyIGZvcm1hdCBwcmVmaXggaWRlbnRpZmllciAoZS5nLiBcImRldmxcIiwgXCJjYm9yXCIsIFwianNvblwiKSAqL1xuICByZWFkb25seSBmb3JtYXRQcmVmaXg6IEZvcm1hdFByZWZpeDtcblxuICAvKipcbiAgICogU2VyaWFsaXplIGEgdmFsdWUgdG8gYnl0ZXMuXG4gICAqXG4gICAqIFRoZSBjb2RlYyBoYW5kbGVzIGFsbCBzdXBwb3J0ZWQgdHlwZXMgaW50ZXJuYWxseSBiYXNlZCBvbiB0aGUgbW9kZS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNlcmlhbGl6ZVxuICAgKiBAcGFyYW0gbW9kZSAtIFRoZSBzZXJpYWxpemF0aW9uIG1vZGVcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBnbG9iYWwsIGV4dHJhIHJlZHVjZXJzL3Jldml2ZXJzXG4gICAqIEByZXR1cm5zIFRoZSBzZXJpYWxpemVkIHBheWxvYWQgKHdpdGhvdXQgZm9ybWF0IHByZWZpeClcbiAgICovXG4gIHNlcmlhbGl6ZShcbiAgICB2YWx1ZTogdW5rbm93bixcbiAgICBtb2RlOiBTZXJpYWxpemF0aW9uTW9kZSxcbiAgICBvcHRpb25zPzogQ29kZWNPcHRpb25zXG4gICk6IFVpbnQ4QXJyYXk7XG5cbiAgLyoqXG4gICAqIERlc2VyaWFsaXplIGJ5dGVzIGJhY2sgdG8gYSB2YWx1ZS5cbiAgICpcbiAgICogVGhlIGNvZGVjIGhhbmRsZXMgYWxsIHN1cHBvcnRlZCB0eXBlcyBpbnRlcm5hbGx5IGJhc2VkIG9uIHRoZSBtb2RlLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBzZXJpYWxpemVkIHBheWxvYWQgKHdpdGhvdXQgZm9ybWF0IHByZWZpeClcbiAgICogQHBhcmFtIG1vZGUgLSBUaGUgc2VyaWFsaXphdGlvbiBtb2RlXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgZ2xvYmFsLCBleHRyYSByZXZpdmVyc1xuICAgKiBAcmV0dXJucyBUaGUgZGVzZXJpYWxpemVkIHZhbHVlXG4gICAqL1xuICBkZXNlcmlhbGl6ZShcbiAgICBkYXRhOiBVaW50OEFycmF5LFxuICAgIG1vZGU6IFNlcmlhbGl6YXRpb25Nb2RlLFxuICAgIG9wdGlvbnM/OiBDb2RlY09wdGlvbnNcbiAgKTogdW5rbm93bjtcblxuICAvKipcbiAgICogRGVzZXJpYWxpemUgbGVnYWN5IChwcmUtZm9ybWF0LXByZWZpeCkgZGF0YS5cbiAgICogVXNlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBzcGVjVmVyc2lvbiAxIHJ1bnMgdGhhdCBzdG9yZWRcbiAgICogZGF0YSBhcyBwbGFpbiBKU09OIGFycmF5cyBpbnN0ZWFkIG9mIGJpbmFyeS5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgbGVnYWN5IGRhdGFcbiAgICogQHBhcmFtIG1vZGUgLSBUaGUgc2VyaWFsaXphdGlvbiBtb2RlXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgZ2xvYmFsLCBleHRyYSByZXZpdmVyc1xuICAgKiBAcmV0dXJucyBUaGUgZGVzZXJpYWxpemVkIHZhbHVlXG4gICAqL1xuICBkZXNlcmlhbGl6ZUxlZ2FjeT8oXG4gICAgZGF0YTogdW5rbm93bixcbiAgICBtb2RlOiBTZXJpYWxpemF0aW9uTW9kZSxcbiAgICBvcHRpb25zPzogQ29kZWNPcHRpb25zXG4gICk6IHVua25vd247XG59XG4iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXphdGlvbi9jb2RlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29kZWMgaW50ZXJmYWNlIGZvciBzZXJpYWxpemF0aW9uIGZvcm1hdHMuXG4gKlxuICogQSBjb2RlYyBoYW5kbGVzIHRoZSBjb3JlIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSBsb2dpYyBmb3IgYSBzcGVjaWZpY1xuICogd2lyZSBmb3JtYXQgKGRldmFsdWUsIENCT1IsIEpTT04sIGV0Yy4pLiBFYWNoIGNvZGVjIGlzIHJlc3BvbnNpYmxlXG4gKiBmb3IgaGFuZGxpbmcgYWxsIHN1cHBvcnRlZCBkYXRhIHR5cGVzIGludGVybmFsbHkg4oCUIHRoZSBjYWxsZXIgb25seVxuICogc3BlY2lmaWVzIHdoaWNoIHNlcmlhbGl6YXRpb24gbW9kZSB0byB1c2UuXG4gKlxuICogLSAqKmRldmFsdWUqKjogVXNlcyBjdXN0b20gcmVkdWNlcnMvcmV2aXZlcnMgZm9yIERhdGUsIEVycm9yLCBNYXAsIFNldCxcbiAqICAgdHlwZWQgYXJyYXlzLCBjbGFzcyBpbnN0YW5jZXMsIGV0Yy5cbiAqIC0gKipjYm9yKio6IFdvdWxkIGhhbmRsZSBEYXRlLCB0eXBlZCBhcnJheXMsIE1hcCwgU2V0IG5hdGl2ZWx5IHZpYSB0aGVcbiAqICAgQ0JPUiB0eXBlIHN5c3RlbS4gQ2xhc3MgaW5zdGFuY2VzIHdvdWxkIHN0aWxsIG5lZWQgY3VzdG9tIGhhbmRsaW5nLlxuICogLSAqKmpzb24qKjogV291bGQgb25seSBzdXBwb3J0IHN0YW5kYXJkIEpTT04gdHlwZXMgKHByaW1pdGl2ZXMsIGFycmF5cyxcbiAqICAgcGxhaW4gb2JqZWN0cykuIE5vIERhdGUsIE1hcCwgU2V0LCB0eXBlZCBhcnJheXMsIGV0Yy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IENvbXByZXNzaW9uU3RhdHMgfSBmcm9tICcuL2NvbXByZXNzaW9uLmpzJztcbmltcG9ydCB0eXBlIHsgRm9ybWF0UHJlZml4IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogVGhlIHNlcmlhbGl6YXRpb24gbW9kZSBkZXRlcm1pbmVzIHdoaWNoIHR5cGVzIGFyZSBzdXBwb3J0ZWQgYW5kIGhvd1xuICogdGhleSdyZSBoYW5kbGVkLiBEaWZmZXJlbnQgbW9kZXMgY29tcG9zZSBkaWZmZXJlbnQgc2V0cyBvZiB0eXBlIGhhbmRsZXJzLlxuICpcbiAqIC0gYHdvcmtmbG93YDogUnVucyBpbnNpZGUgdGhlIHdvcmtmbG93IFZNLiBJbmNsdWRlcyBjbGFzcyBzZXJpYWxpemF0aW9uLFxuICogICBzdGVwIGZ1bmN0aW9uIHNlcmlhbGl6YXRpb24uIE5vIHN0cmVhbSBoYW5kbGluZy5cbiAqIC0gYHN0ZXBgOiBSdW5zIGluIHRoZSBzdGVwIGV4ZWN1dG9yIChOb2RlLmpzKS4gSW5jbHVkZXMgY2xhc3Mgc2VyaWFsaXphdGlvbi5cbiAqICAgTm8gc3RlcCBmdW5jdGlvbiBzZXJpYWxpemF0aW9uLiBTdHJlYW0gaGFuZGxpbmcgYXQgY2FsbCBzaXRlcy5cbiAqIC0gYGNsaWVudGA6IFJ1bnMgb24gdGhlIGNsaWVudCBzaWRlLiBJbmNsdWRlcyBjbGFzcyBzZXJpYWxpemF0aW9uLlxuICogICBObyBzdGVwIGZ1bmN0aW9uIHNlcmlhbGl6YXRpb24uIFN0cmVhbSBoYW5kbGluZyBhdCBjYWxsIHNpdGVzLlxuICovXG5leHBvcnQgdHlwZSBTZXJpYWxpemF0aW9uTW9kZSA9ICd3b3JrZmxvdycgfCAnc3RlcCcgfCAnY2xpZW50JztcblxuLyoqXG4gKiBPcHRpb25zIHBhc3NlZCB0byBjb2RlYyBzZXJpYWxpemUvZGVzZXJpYWxpemUgdG8gc3VwcG9ydCBWTS1jb250ZXh0XG4gKiBzZXJpYWxpemF0aW9uIGFuZCBtb2RlLXNwZWNpZmljIHR5cGUgaGFuZGxpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZWNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBnbG9iYWwgb2JqZWN0IHRvIHVzZSBmb3IgYGluc3RhbmNlb2ZgIGNoZWNrcyBhbmQgY29uc3RydWN0b3JzLlxuICAgKiBEZWZhdWx0cyB0byBgZ2xvYmFsVGhpc2AuIE11c3QgYmUgc2V0IHRvIHRoZSBWTSdzIGdsb2JhbCB3aGVuXG4gICAqIHNlcmlhbGl6aW5nL2Rlc2VyaWFsaXppbmcgZGF0YSB0aGF0IGNyb3NzZXMgVk0gYm91bmRhcmllcy5cbiAgICovXG4gIGdsb2JhbD86IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgcmVkdWNlcnMgdG8gbWVyZ2UgaW50byB0aGUgbW9kZSdzIGRlZmF1bHQgcmVkdWNlcnMuXG4gICAqIFVzZWQgYnkgZGVoeWRyYXRlL2h5ZHJhdGUgZnVuY3Rpb25zIHRoYXQgbmVlZCBzdHJlYW0gaGFuZGxpbmdcbiAgICogb3Igb3RoZXIgbW9kZS1zcGVjaWZpYyB0eXBlIHJlZHVjZXJzLlxuICAgKi9cbiAgZXh0cmFSZWR1Y2Vycz86IFJlY29yZDxzdHJpbmcsICh2YWx1ZTogYW55KSA9PiBhbnk+O1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHJldml2ZXJzIHRvIG1lcmdlIGludG8gdGhlIG1vZGUncyBkZWZhdWx0IHJldml2ZXJzLlxuICAgKiBVc2VkIGJ5IGRlaHlkcmF0ZS9oeWRyYXRlIGZ1bmN0aW9ucyB0aGF0IG5lZWQgc3RyZWFtIGhhbmRsaW5nXG4gICAqIG9yIG90aGVyIG1vZGUtc3BlY2lmaWMgdHlwZSByZXZpdmVycy5cbiAgICovXG4gIGV4dHJhUmV2aXZlcnM/OiBSZWNvcmQ8c3RyaW5nLCAodmFsdWU6IGFueSkgPT4gYW55PjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBjb21wcmVzcyB0aGUgc2VyaWFsaXplZCBwYXlsb2FkICh3cml0ZSBzaWRlIG9ubHk7IHpzdGQgaXNcbiAgICogcHJlZmVycmVkIGFuZCBnemlwIGlzIHRoZSBwb3J0YWJsZSBmYWxsYmFjaykuIFJlYWRzIGRpc3BhdGNoIGNvbXByZXNzZWRcbiAgICogcGF5bG9hZHMgYnkgZm9ybWF0IHByZWZpeDsgenN0ZCBkZWNvZGluZyBzdGlsbCByZXF1aXJlcyBydW50aW1lIG9yXG4gICAqIHJlZ2lzdGVyZWQgZGVjb2RlciBzdXBwb3J0LiBNdXN0IG9ubHkgYmUgZW5hYmxlZCB3aGVuIHRoZSB0YXJnZXQgcnVuXG4gICAqIHN1cHBvcnRzIGNvbXByZXNzZWQgcGF5bG9hZHM6XG4gICAqIHJ1biBzcGVjVmVyc2lvbiA+PSBTUEVDX1ZFUlNJT05fU1VQUE9SVFNfQ09NUFJFU1NJT04sIGFuZCBmb3JcbiAgICogY3Jvc3MtZGVwbG95bWVudCB3cml0ZXMgdGhlIHRhcmdldCBkZXBsb3ltZW50J3MgY2FwYWJpbGl0aWVzIChzZWVcbiAgICogYGdldFJ1bkNhcGFiaWxpdGllc2AgaW4gY2FwYWJpbGl0aWVzLnRzKS4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIGNvbXByZXNzaW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgdGVsZW1ldHJ5IHNpbmsgcG9wdWxhdGVkIGJ5IHRoZSBjb21wcmVzc2lvbiBsYXllciB3aXRoIHdoYXRcbiAgICogaXQgZGlkIHRvIHRoZSBwYXlsb2FkICh3aGV0aGVyIGl0IGNvbXByZXNzZWQsIGxvZ2ljYWwgdnMgc3RvcmVkIHNpemUpLlxuICAgKiBVc2VkIGJ5IHRoZSBkZWh5ZHJhdGUvaHlkcmF0ZSB3cmFwcGVycyB0byBlbWl0IE9UZWwgc3BhbiBhdHRyaWJ1dGVzLlxuICAgKi9cbiAgY29tcHJlc3Npb25TdGF0cz86IENvbXByZXNzaW9uU3RhdHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZWMge1xuICAvKiogVGhlIDQtY2hhcmFjdGVyIGZvcm1hdCBwcmVmaXggaWRlbnRpZmllciAoZS5nLiBcImRldmxcIiwgXCJjYm9yXCIsIFwianNvblwiKSAqL1xuICByZWFkb25seSBmb3JtYXRQcmVmaXg6IEZvcm1hdFByZWZpeDtcblxuICAvKipcbiAgICogU2VyaWFsaXplIGEgdmFsdWUgdG8gYnl0ZXMuXG4gICAqXG4gICAqIFRoZSBjb2RlYyBoYW5kbGVzIGFsbCBzdXBwb3J0ZWQgdHlwZXMgaW50ZXJuYWxseSBiYXNlZCBvbiB0aGUgbW9kZS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNlcmlhbGl6ZVxuICAgKiBAcGFyYW0gbW9kZSAtIFRoZSBzZXJpYWxpemF0aW9uIG1vZGVcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBnbG9iYWwsIGV4dHJhIHJlZHVjZXJzL3Jldml2ZXJzXG4gICAqIEByZXR1cm5zIFRoZSBzZXJpYWxpemVkIHBheWxvYWQgKHdpdGhvdXQgZm9ybWF0IHByZWZpeClcbiAgICovXG4gIHNlcmlhbGl6ZShcbiAgICB2YWx1ZTogdW5rbm93bixcbiAgICBtb2RlOiBTZXJpYWxpemF0aW9uTW9kZSxcbiAgICBvcHRpb25zPzogQ29kZWNPcHRpb25zXG4gICk6IFVpbnQ4QXJyYXk7XG5cbiAgLyoqXG4gICAqIERlc2VyaWFsaXplIGJ5dGVzIGJhY2sgdG8gYSB2YWx1ZS5cbiAgICpcbiAgICogVGhlIGNvZGVjIGhhbmRsZXMgYWxsIHN1cHBvcnRlZCB0eXBlcyBpbnRlcm5hbGx5IGJhc2VkIG9uIHRoZSBtb2RlLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBzZXJpYWxpemVkIHBheWxvYWQgKHdpdGhvdXQgZm9ybWF0IHByZWZpeClcbiAgICogQHBhcmFtIG1vZGUgLSBUaGUgc2VyaWFsaXphdGlvbiBtb2RlXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgZ2xvYmFsLCBleHRyYSByZXZpdmVyc1xuICAgKiBAcmV0dXJucyBUaGUgZGVzZXJpYWxpemVkIHZhbHVlXG4gICAqL1xuICBkZXNlcmlhbGl6ZShcbiAgICBkYXRhOiBVaW50OEFycmF5LFxuICAgIG1vZGU6IFNlcmlhbGl6YXRpb25Nb2RlLFxuICAgIG9wdGlvbnM/OiBDb2RlY09wdGlvbnNcbiAgKTogdW5rbm93bjtcblxuICAvKipcbiAgICogRGVzZXJpYWxpemUgbGVnYWN5IChwcmUtZm9ybWF0LXByZWZpeCkgZGF0YS5cbiAgICogVXNlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBzcGVjVmVyc2lvbiAxIHJ1bnMgdGhhdCBzdG9yZWRcbiAgICogZGF0YSBhcyBwbGFpbiBKU09OIGFycmF5cyBpbnN0ZWFkIG9mIGJpbmFyeS5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgbGVnYWN5IGRhdGFcbiAgICogQHBhcmFtIG1vZGUgLSBUaGUgc2VyaWFsaXphdGlvbiBtb2RlXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgZ2xvYmFsLCBleHRyYSByZXZpdmVyc1xuICAgKiBAcmV0dXJucyBUaGUgZGVzZXJpYWxpemVkIHZhbHVlXG4gICAqL1xuICBkZXNlcmlhbGl6ZUxlZ2FjeT8oXG4gICAgZGF0YTogdW5rbm93bixcbiAgICBtb2RlOiBTZXJpYWxpemF0aW9uTW9kZSxcbiAgICBvcHRpb25zPzogQ29kZWNPcHRpb25zXG4gICk6IHVua25vd247XG59XG4iXX0=
@@ -1,33 +1,134 @@
1
1
  /**
2
2
  * Composable encryption layer for serialized data.
3
3
  *
4
- * Wraps/unwraps serialized payloads with AES-256-GCM encryption,
5
- * using the format prefix system to mark encrypted data.
4
+ * Wraps/unwraps serialized payloads with either symmetric AES-256-GCM
5
+ * encryption (`encr`) or an asymmetric sealed box (`encp`), using the format
6
+ * prefix system to mark which. See {@link PayloadKey} for how a caller
7
+ * declares which capabilities it holds.
6
8
  */
7
9
  import { type CryptoKey } from '../encryption.js';
8
- export type { CryptoKey };
10
+ import { type RunKeyPair } from '../sealed-box.js';
11
+ export type { CryptoKey, RunKeyPair };
12
+ /**
13
+ * Brands distinguishing the structured key variants from a bare `CryptoKey`.
14
+ *
15
+ * `Symbol.for` rather than `Symbol()` because these values cross realm
16
+ * boundaries (host ↔ workflow VM), and the global symbol registry is shared
17
+ * across realms while unique symbols are not.
18
+ */
19
+ declare const SEAL_TARGET_BRAND: unique symbol;
20
+ declare const RUN_KEYS_BRAND: unique symbol;
21
+ /**
22
+ * A write-only capability: seal payloads to a run's X25519 public key.
23
+ *
24
+ * This is what a *cross-run* writer holds — a hook resumption targeting
25
+ * another run, or a child workflow writing into a parent's forwarded stream.
26
+ * It carries no ability to decrypt anything, and because it is a distinct
27
+ * nominal type it cannot be mistaken for symmetric key material.
28
+ *
29
+ * That last property matters more than it looks: a raw 32-byte X25519 public
30
+ * key is a *structurally valid* AES-256 key, so handing one to
31
+ * `importKey(..., 'AES-GCM')` succeeds and silently produces ciphertext that
32
+ * nobody can ever open. Routing public keys exclusively through
33
+ * {@link sealTo} makes that mistake unrepresentable rather than merely
34
+ * discouraged.
35
+ */
36
+ export interface SealTarget {
37
+ readonly [SEAL_TARGET_BRAND]: true;
38
+ /** The recipient run's raw 32-byte X25519 public key. */
39
+ readonly recipientPublicKey: Uint8Array;
40
+ /** Additional authenticated data binding the payload to the recipient run. */
41
+ readonly aad?: Uint8Array;
42
+ }
43
+ /**
44
+ * The full key capability of a run's *own* runtime (and of o11y tooling
45
+ * acting on its behalf): the symmetric key for its own payloads, plus the
46
+ * keypair needed to open sealed payloads that other runs wrote to it.
47
+ */
48
+ export interface RunPayloadKeys {
49
+ readonly [RUN_KEYS_BRAND]: true;
50
+ /** Symmetric AES-256-GCM key — the run's own `encr` payloads. */
51
+ readonly aes: CryptoKey;
52
+ /** X25519 keypair — opens `encp` payloads sealed to this run. */
53
+ readonly keyPair: RunKeyPair;
54
+ /** Additional authenticated data expected on sealed payloads. */
55
+ readonly aad?: Uint8Array;
56
+ }
57
+ /**
58
+ * A resolved key for reading or writing a serialized payload.
59
+ *
60
+ * The bare `CryptoKey` variant is the historical shape and remains valid: it
61
+ * means "symmetric only", which is exactly right for a run that predates
62
+ * sealed boxes or for any same-run payload. The structured variants are
63
+ * additive:
64
+ *
65
+ * | Variant | Writes | Reads | Held by |
66
+ * | ------------------ | ------- | -------------- | ------------------------ |
67
+ * | `CryptoKey` | `encr` | `encr` | same-run (legacy shape) |
68
+ * | {@link RunPayloadKeys} | `encr` | `encr`, `encp` | the owning run, o11y |
69
+ * | {@link SealTarget} | `encp` | — | cross-run writers |
70
+ *
71
+ * A run's own payloads deliberately stay symmetric even when the writer could
72
+ * seal: sealing costs a fresh ECDH per envelope and 32 extra bytes, and buys
73
+ * nothing when the writer already holds the decryption key.
74
+ */
75
+ export type PayloadKey = CryptoKey | SealTarget | RunPayloadKeys;
76
+ /**
77
+ * The subset of {@link PayloadKey} that can actually *read* a payload.
78
+ *
79
+ * Excludes {@link SealTarget}, which is write-only by construction: it holds a
80
+ * public key, so it can open neither `encp` (needs the private scalar) nor
81
+ * `encr` (needs the symmetric key). Decrypt-side signatures should take this
82
+ * rather than `PayloadKey`, so passing a seal target is a compile error instead
83
+ * of a guaranteed runtime failure.
84
+ */
85
+ export type DecryptionKey = CryptoKey | RunPayloadKeys;
86
+ /**
87
+ * Build a write-only seal capability for a recipient run's public key.
88
+ *
89
+ * @param recipientPublicKey - The recipient run's raw 32-byte X25519 public key
90
+ * @param aad - Additional authenticated data, conventionally `runAad(projectId, runId)`
91
+ */
92
+ export declare function sealTo(recipientPublicKey: Uint8Array, aad?: Uint8Array): SealTarget;
93
+ /**
94
+ * Bundle a run's symmetric key with the keypair that opens payloads sealed
95
+ * to it.
96
+ */
97
+ export declare function runPayloadKeys(aes: CryptoKey, keyPair: RunKeyPair, aad?: Uint8Array): RunPayloadKeys;
98
+ /**
99
+ * Build the full key capability for a run from its raw 32-byte key material —
100
+ * the value `World.getEncryptionKeyForRun()` returns.
101
+ *
102
+ * Use this anywhere a run reads its own event log: it yields a key that opens
103
+ * both its own symmetric (`encr`) payloads and sealed (`encp`) payloads other
104
+ * runs wrote to it. Resolving only `importKey(material)` would leave the
105
+ * reader unable to open sealed writes.
106
+ */
107
+ export declare function deriveRunPayloadKeys(runKeyMaterial: Uint8Array): Promise<RunPayloadKeys>;
108
+ export declare function isSealTarget(value: unknown): value is SealTarget;
109
+ export declare function isRunPayloadKeys(value: unknown): value is RunPayloadKeys;
110
+ /**
111
+ * The symmetric key to use for `encr` operations, or undefined when this key
112
+ * has no symmetric capability (i.e. it is a seal-only target).
113
+ */
114
+ export declare function aesKeyOf(key: PayloadKey | undefined): CryptoKey | undefined;
9
115
  /**
10
116
  * Encryption key parameter type. Accepts a resolved key, undefined (no encryption),
11
117
  * a promise, or a resolver that can defer fetching the key until data needs it.
12
118
  */
13
- export type EncryptionKeyParam = CryptoKey | undefined | Promise<CryptoKey | undefined> | (() => Promise<CryptoKey | undefined>);
14
- export declare function resolveEncryptionKey(key: EncryptionKeyParam): Promise<CryptoKey | undefined>;
119
+ export type EncryptionKeyParam = PayloadKey | undefined | Promise<PayloadKey | undefined> | (() => Promise<PayloadKey | undefined>);
120
+ export declare function resolveEncryptionKey(key: EncryptionKeyParam): Promise<PayloadKey | undefined>;
15
121
  /**
16
122
  * Encrypt a format-prefixed payload if a key is provided.
17
- * Wraps the data with the 'encr' format prefix.
123
+ *
124
+ * Wraps the data with the `encr` prefix for symmetric keys, or the `encp`
125
+ * prefix when handed a {@link SealTarget} — a cross-run writer that holds only
126
+ * the recipient's public key.
18
127
  *
19
128
  * @param data - The format-prefixed serialized data
20
129
  * @param key - Encryption key (undefined to skip encryption)
21
- * @returns The encrypted data with 'encr' prefix, or the original data if no key
22
- */
23
- export declare function encrypt(data: Uint8Array | unknown, key: CryptoKey | undefined): Promise<Uint8Array | unknown>;
24
- /**
25
- * Decrypt a format-prefixed payload if it's encrypted.
26
- * Strips the 'encr' format prefix and decrypts the inner payload.
27
- *
28
- * @param data - The potentially encrypted data
29
- * @param key - Encryption key (undefined to skip decryption)
30
- * @returns The decrypted inner payload, or the original data if not encrypted
130
+ * @returns The encrypted data with its format prefix, or the original data if no key
31
131
  */
32
- export declare function decrypt(data: Uint8Array | unknown, key: CryptoKey | undefined): Promise<Uint8Array | unknown>;
132
+ export declare function encrypt(data: Uint8Array | unknown, key: PayloadKey | undefined): Promise<Uint8Array | unknown>;
133
+ export declare function decrypt(data: Uint8Array | unknown, key: PayloadKey | undefined): Promise<Uint8Array | unknown>;
33
134
  //# sourceMappingURL=encryption.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"encryption.d.ts","sourceRoot":"","sources":["../../src/serialization/encryption.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAGL,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAC;AAQ1B,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,SAAS,GACT,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,GAC9B,CAAC,MAAM,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC;AAE3C,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAEhC;AAED;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAC3B,IAAI,EAAE,UAAU,GAAG,OAAO,EAC1B,GAAG,EAAE,SAAS,GAAG,SAAS,GACzB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,CAI/B;AAED;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAC3B,IAAI,EAAE,UAAU,GAAG,OAAO,EAC1B,GAAG,EAAE,SAAS,GAAG,SAAS,GACzB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,CAqC/B"}
1
+ {"version":3,"file":"encryption.d.ts","sourceRoot":"","sources":["../../src/serialization/encryption.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAGL,KAAK,SAAS,EAEf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,kBAAkB,CAAC;AAQ1B,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAEtC;;;;;;GAMG;AACH,QAAA,MAAM,iBAAiB,eAAkD,CAAC;AAC1E,QAAA,MAAM,cAAc,eAA+C,CAAC;AAEpE;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC;IACnC,yDAAyD;IACzD,QAAQ,CAAC,kBAAkB,EAAE,UAAU,CAAC;IACxC,8EAA8E;IAC9E,QAAQ,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC;IAChC,iEAAiE;IACjE,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,iEAAiE;IACjE,QAAQ,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,cAAc,CAAC;AAEjE;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,cAAc,CAAC;AAEvD;;;;;GAKG;AACH,wBAAgB,MAAM,CACpB,kBAAkB,EAAE,UAAU,EAC9B,GAAG,CAAC,EAAE,UAAU,GACf,UAAU,CAEZ;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,UAAU,EACnB,GAAG,CAAC,EAAE,UAAU,GACf,cAAc,CAEhB;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,UAAU,GACzB,OAAO,CAAC,cAAc,CAAC,CAMzB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAMhE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAMxE;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAK3E;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAC1B,UAAU,GACV,SAAS,GACT,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,GAC/B,CAAC,MAAM,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC;AAE5C,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAEjC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,OAAO,CAC3B,IAAI,EAAE,UAAU,GAAG,OAAO,EAC1B,GAAG,EAAE,UAAU,GAAG,SAAS,GAC1B,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,CAa/B;AAoDD,wBAAsB,OAAO,CAC3B,IAAI,EAAE,UAAU,GAAG,OAAO,EAC1B,GAAG,EAAE,UAAU,GAAG,SAAS,GAC1B,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,CA0C/B"}
@@ -1,45 +1,164 @@
1
1
  /**
2
2
  * Composable encryption layer for serialized data.
3
3
  *
4
- * Wraps/unwraps serialized payloads with AES-256-GCM encryption,
5
- * using the format prefix system to mark encrypted data.
4
+ * Wraps/unwraps serialized payloads with either symmetric AES-256-GCM
5
+ * encryption (`encr`) or an asymmetric sealed box (`encp`), using the format
6
+ * prefix system to mark which. See {@link PayloadKey} for how a caller
7
+ * declares which capabilities it holds.
6
8
  */
7
9
  import { RuntimeDecryptionError } from '@workflow/errors';
8
- import { decrypt as aesGcmDecrypt, encrypt as aesGcmEncrypt, } from '../encryption.js';
10
+ import { decrypt as aesGcmDecrypt, encrypt as aesGcmEncrypt, importKey as importAesKey, } from '../encryption.js';
11
+ import { deriveRunKeyPair, open as openSealed, seal as sealToPublicKey, } from '../sealed-box.js';
9
12
  import { decodeFormatPrefix, encodeWithFormatPrefix, peekFormatPrefix, } from './format.js';
10
13
  import { SerializationFormat } from './types.js';
14
+ /**
15
+ * Brands distinguishing the structured key variants from a bare `CryptoKey`.
16
+ *
17
+ * `Symbol.for` rather than `Symbol()` because these values cross realm
18
+ * boundaries (host ↔ workflow VM), and the global symbol registry is shared
19
+ * across realms while unique symbols are not.
20
+ */
21
+ const SEAL_TARGET_BRAND = Symbol.for('workflow.serialization.sealTarget');
22
+ const RUN_KEYS_BRAND = Symbol.for('workflow.serialization.runKeys');
23
+ /**
24
+ * Build a write-only seal capability for a recipient run's public key.
25
+ *
26
+ * @param recipientPublicKey - The recipient run's raw 32-byte X25519 public key
27
+ * @param aad - Additional authenticated data, conventionally `runAad(projectId, runId)`
28
+ */
29
+ export function sealTo(recipientPublicKey, aad) {
30
+ return { [SEAL_TARGET_BRAND]: true, recipientPublicKey, aad };
31
+ }
32
+ /**
33
+ * Bundle a run's symmetric key with the keypair that opens payloads sealed
34
+ * to it.
35
+ */
36
+ export function runPayloadKeys(aes, keyPair, aad) {
37
+ return { [RUN_KEYS_BRAND]: true, aes, keyPair, aad };
38
+ }
39
+ /**
40
+ * Build the full key capability for a run from its raw 32-byte key material —
41
+ * the value `World.getEncryptionKeyForRun()` returns.
42
+ *
43
+ * Use this anywhere a run reads its own event log: it yields a key that opens
44
+ * both its own symmetric (`encr`) payloads and sealed (`encp`) payloads other
45
+ * runs wrote to it. Resolving only `importKey(material)` would leave the
46
+ * reader unable to open sealed writes.
47
+ */
48
+ export async function deriveRunPayloadKeys(runKeyMaterial) {
49
+ const [aes, keyPair] = await Promise.all([
50
+ importAesKey(runKeyMaterial),
51
+ deriveRunKeyPair(runKeyMaterial),
52
+ ]);
53
+ return runPayloadKeys(aes, keyPair);
54
+ }
55
+ export function isSealTarget(value) {
56
+ return (typeof value === 'object' &&
57
+ value !== null &&
58
+ value[SEAL_TARGET_BRAND] === true);
59
+ }
60
+ export function isRunPayloadKeys(value) {
61
+ return (typeof value === 'object' &&
62
+ value !== null &&
63
+ value[RUN_KEYS_BRAND] === true);
64
+ }
65
+ /**
66
+ * The symmetric key to use for `encr` operations, or undefined when this key
67
+ * has no symmetric capability (i.e. it is a seal-only target).
68
+ */
69
+ export function aesKeyOf(key) {
70
+ if (!key)
71
+ return undefined;
72
+ if (isRunPayloadKeys(key))
73
+ return key.aes;
74
+ if (isSealTarget(key))
75
+ return undefined;
76
+ return key;
77
+ }
11
78
  export async function resolveEncryptionKey(key) {
12
79
  return typeof key === 'function' ? key() : key;
13
80
  }
14
81
  /**
15
82
  * Encrypt a format-prefixed payload if a key is provided.
16
- * Wraps the data with the 'encr' format prefix.
83
+ *
84
+ * Wraps the data with the `encr` prefix for symmetric keys, or the `encp`
85
+ * prefix when handed a {@link SealTarget} — a cross-run writer that holds only
86
+ * the recipient's public key.
17
87
  *
18
88
  * @param data - The format-prefixed serialized data
19
89
  * @param key - Encryption key (undefined to skip encryption)
20
- * @returns The encrypted data with 'encr' prefix, or the original data if no key
90
+ * @returns The encrypted data with its format prefix, or the original data if no key
21
91
  */
22
92
  export async function encrypt(data, key) {
23
93
  if (!key || !(data instanceof Uint8Array))
24
94
  return data;
25
- const encrypted = await aesGcmEncrypt(key, data);
95
+ if (isSealTarget(key)) {
96
+ const sealed = await sealToPublicKey(key.recipientPublicKey, data, key.aad);
97
+ return encodeWithFormatPrefix(SerializationFormat.SEALED, sealed);
98
+ }
99
+ // Symmetric path — a run's own payloads, including when the caller holds
100
+ // the full `RunPayloadKeys` bundle and *could* seal. See `PayloadKey`.
101
+ const aesKey = isRunPayloadKeys(key) ? key.aes : key;
102
+ const encrypted = await aesGcmEncrypt(aesKey, data);
26
103
  return encodeWithFormatPrefix(SerializationFormat.ENCRYPTED, encrypted);
27
104
  }
28
105
  /**
29
- * Decrypt a format-prefixed payload if it's encrypted.
30
- * Strips the 'encr' format prefix and decrypts the inner payload.
106
+ * Decrypt a format-prefixed payload if it's encrypted or sealed.
107
+ *
108
+ * Strips the `encr`/`encp` format prefix and recovers the inner payload.
109
+ * Opening a sealed (`encp`) payload requires the run's X25519 keypair, so the
110
+ * caller must supply {@link RunPayloadKeys} — a bare symmetric key cannot do
111
+ * it, and neither can a {@link SealTarget} (which is write-only by design).
31
112
  *
32
113
  * @param data - The potentially encrypted data
33
114
  * @param key - Encryption key (undefined to skip decryption)
34
115
  * @returns The decrypted inner payload, or the original data if not encrypted
35
116
  */
117
+ /**
118
+ * Open a sealed (`encp`) envelope. Split out from {@link decrypt} to keep
119
+ * each scheme's error handling readable on its own.
120
+ */
121
+ async function openSealedEnvelope(data, key) {
122
+ // Sealed payloads need the private scalar. Anything else — no key, a bare
123
+ // symmetric key, or a write-only seal target — cannot open them.
124
+ if (!isRunPayloadKeys(key)) {
125
+ throw new RuntimeDecryptionError('Sealed data encountered but no run keypair is available. ' +
126
+ "Opening a sealed payload requires the run's own encryption key " +
127
+ 'material; a symmetric key or a seal-only target cannot decrypt it.', {
128
+ context: {
129
+ operation: 'decrypt',
130
+ byteLength: data.byteLength,
131
+ formatPrefix: 'encp',
132
+ },
133
+ });
134
+ }
135
+ const { payload } = decodeFormatPrefix(data);
136
+ try {
137
+ return await openSealed(key.keyPair, payload, key.aad);
138
+ }
139
+ catch (error) {
140
+ // The sealed-box layer only sees the stripped payload, so it cannot
141
+ // record the outer envelope prefix. Enrich it here before rethrowing.
142
+ if (RuntimeDecryptionError.is(error) && error.context) {
143
+ error.context.formatPrefix = SerializationFormat.SEALED;
144
+ }
145
+ throw error;
146
+ }
147
+ }
36
148
  export async function decrypt(data, key) {
37
149
  // Non-binary data is returned as-is.
38
150
  if (!(data instanceof Uint8Array))
39
151
  return data;
40
152
  const format = peekFormatPrefix(data);
41
- // If the data is encrypted but no key was provided, fail fast.
42
- if (format === SerializationFormat.ENCRYPTED && !key) {
153
+ if (format === SerializationFormat.SEALED) {
154
+ return openSealedEnvelope(data, key);
155
+ }
156
+ // If the data is not encrypted, return it unchanged.
157
+ if (format !== SerializationFormat.ENCRYPTED)
158
+ return data;
159
+ // If the data is encrypted but no symmetric key is available, fail fast.
160
+ const aesKey = aesKeyOf(key);
161
+ if (!aesKey) {
43
162
  throw new RuntimeDecryptionError('Encrypted data encountered but no encryption key is available. ' +
44
163
  'Encryption is not configured or no key was provided for this run.', {
45
164
  context: {
@@ -49,12 +168,9 @@ export async function decrypt(data, key) {
49
168
  },
50
169
  });
51
170
  }
52
- // If the data is not encrypted, return it unchanged.
53
- if (format !== SerializationFormat.ENCRYPTED)
54
- return data;
55
171
  const { payload } = decodeFormatPrefix(data);
56
172
  try {
57
- return await aesGcmDecrypt(key, payload);
173
+ return await aesGcmDecrypt(aesKey, payload);
58
174
  }
59
175
  catch (error) {
60
176
  // The low-level AES layer only sees the stripped payload, so it cannot
@@ -67,4 +183,4 @@ export async function decrypt(data, key) {
67
183
  throw error;
68
184
  }
69
185
  }
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJpYWxpemF0aW9uL2VuY3J5cHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLEVBQ0wsT0FBTyxJQUFJLGFBQWEsRUFDeEIsT0FBTyxJQUFJLGFBQWEsR0FFekIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0QixnQkFBZ0IsR0FDakIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBY2pELE1BQU0sQ0FBQyxLQUFLLFVBQVUsb0JBQW9CLENBQ3hDLEdBQXVCO0lBRXZCLE9BQU8sT0FBTyxHQUFHLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ2pELENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLENBQzNCLElBQTBCLEVBQzFCLEdBQTBCO0lBRTFCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksWUFBWSxVQUFVLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUN2RCxNQUFNLFNBQVMsR0FBRyxNQUFNLGFBQWEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakQsT0FBTyxzQkFBc0IsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDMUUsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sQ0FDM0IsSUFBMEIsRUFDMUIsR0FBMEI7SUFFMUIscUNBQXFDO0lBQ3JDLElBQUksQ0FBQyxDQUFDLElBQUksWUFBWSxVQUFVLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUUvQyxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV0QywrREFBK0Q7SUFDL0QsSUFBSSxNQUFNLEtBQUssbUJBQW1CLENBQUMsU0FBUyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDckQsTUFBTSxJQUFJLHNCQUFzQixDQUM5QixpRUFBaUU7WUFDL0QsbUVBQW1FLEVBQ3JFO1lBQ0UsT0FBTyxFQUFFO2dCQUNQLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQzNCLFlBQVksRUFBRSxNQUFNO2FBQ3JCO1NBQ0YsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELHFEQUFxRDtJQUNyRCxJQUFJLE1BQU0sS0FBSyxtQkFBbUIsQ0FBQyxTQUFTO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFFMUQsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLElBQUksQ0FBQztRQUNILE9BQU8sTUFBTSxhQUFhLENBQUMsR0FBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsdUVBQXVFO1FBQ3ZFLHNFQUFzRTtRQUN0RSxtRUFBbUU7UUFDbkUsY0FBYztRQUNkLElBQUksc0JBQXNCLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN0RCxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7UUFDdEMsQ0FBQztRQUNELE1BQU0sS0FBSyxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbXBvc2FibGUgZW5jcnlwdGlvbiBsYXllciBmb3Igc2VyaWFsaXplZCBkYXRhLlxuICpcbiAqIFdyYXBzL3Vud3JhcHMgc2VyaWFsaXplZCBwYXlsb2FkcyB3aXRoIEFFUy0yNTYtR0NNIGVuY3J5cHRpb24sXG4gKiB1c2luZyB0aGUgZm9ybWF0IHByZWZpeCBzeXN0ZW0gdG8gbWFyayBlbmNyeXB0ZWQgZGF0YS5cbiAqL1xuXG5pbXBvcnQgeyBSdW50aW1lRGVjcnlwdGlvbkVycm9yIH0gZnJvbSAnQHdvcmtmbG93L2Vycm9ycyc7XG5pbXBvcnQge1xuICBkZWNyeXB0IGFzIGFlc0djbURlY3J5cHQsXG4gIGVuY3J5cHQgYXMgYWVzR2NtRW5jcnlwdCxcbiAgdHlwZSBDcnlwdG9LZXksXG59IGZyb20gJy4uL2VuY3J5cHRpb24uanMnO1xuaW1wb3J0IHtcbiAgZGVjb2RlRm9ybWF0UHJlZml4LFxuICBlbmNvZGVXaXRoRm9ybWF0UHJlZml4LFxuICBwZWVrRm9ybWF0UHJlZml4LFxufSBmcm9tICcuL2Zvcm1hdC5qcyc7XG5pbXBvcnQgeyBTZXJpYWxpemF0aW9uRm9ybWF0IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmV4cG9ydCB0eXBlIHsgQ3J5cHRvS2V5IH07XG5cbi8qKlxuICogRW5jcnlwdGlvbiBrZXkgcGFyYW1ldGVyIHR5cGUuIEFjY2VwdHMgYSByZXNvbHZlZCBrZXksIHVuZGVmaW5lZCAobm8gZW5jcnlwdGlvbiksXG4gKiBhIHByb21pc2UsIG9yIGEgcmVzb2x2ZXIgdGhhdCBjYW4gZGVmZXIgZmV0Y2hpbmcgdGhlIGtleSB1bnRpbCBkYXRhIG5lZWRzIGl0LlxuICovXG5leHBvcnQgdHlwZSBFbmNyeXB0aW9uS2V5UGFyYW0gPVxuICB8IENyeXB0b0tleVxuICB8IHVuZGVmaW5lZFxuICB8IFByb21pc2U8Q3J5cHRvS2V5IHwgdW5kZWZpbmVkPlxuICB8ICgoKSA9PiBQcm9taXNlPENyeXB0b0tleSB8IHVuZGVmaW5lZD4pO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZUVuY3J5cHRpb25LZXkoXG4gIGtleTogRW5jcnlwdGlvbktleVBhcmFtXG4pOiBQcm9taXNlPENyeXB0b0tleSB8IHVuZGVmaW5lZD4ge1xuICByZXR1cm4gdHlwZW9mIGtleSA9PT0gJ2Z1bmN0aW9uJyA/IGtleSgpIDoga2V5O1xufVxuXG4vKipcbiAqIEVuY3J5cHQgYSBmb3JtYXQtcHJlZml4ZWQgcGF5bG9hZCBpZiBhIGtleSBpcyBwcm92aWRlZC5cbiAqIFdyYXBzIHRoZSBkYXRhIHdpdGggdGhlICdlbmNyJyBmb3JtYXQgcHJlZml4LlxuICpcbiAqIEBwYXJhbSBkYXRhIC0gVGhlIGZvcm1hdC1wcmVmaXhlZCBzZXJpYWxpemVkIGRhdGFcbiAqIEBwYXJhbSBrZXkgLSBFbmNyeXB0aW9uIGtleSAodW5kZWZpbmVkIHRvIHNraXAgZW5jcnlwdGlvbilcbiAqIEByZXR1cm5zIFRoZSBlbmNyeXB0ZWQgZGF0YSB3aXRoICdlbmNyJyBwcmVmaXgsIG9yIHRoZSBvcmlnaW5hbCBkYXRhIGlmIG5vIGtleVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5jcnlwdChcbiAgZGF0YTogVWludDhBcnJheSB8IHVua25vd24sXG4gIGtleTogQ3J5cHRvS2V5IHwgdW5kZWZpbmVkXG4pOiBQcm9taXNlPFVpbnQ4QXJyYXkgfCB1bmtub3duPiB7XG4gIGlmICgha2V5IHx8ICEoZGF0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSByZXR1cm4gZGF0YTtcbiAgY29uc3QgZW5jcnlwdGVkID0gYXdhaXQgYWVzR2NtRW5jcnlwdChrZXksIGRhdGEpO1xuICByZXR1cm4gZW5jb2RlV2l0aEZvcm1hdFByZWZpeChTZXJpYWxpemF0aW9uRm9ybWF0LkVOQ1JZUFRFRCwgZW5jcnlwdGVkKTtcbn1cblxuLyoqXG4gKiBEZWNyeXB0IGEgZm9ybWF0LXByZWZpeGVkIHBheWxvYWQgaWYgaXQncyBlbmNyeXB0ZWQuXG4gKiBTdHJpcHMgdGhlICdlbmNyJyBmb3JtYXQgcHJlZml4IGFuZCBkZWNyeXB0cyB0aGUgaW5uZXIgcGF5bG9hZC5cbiAqXG4gKiBAcGFyYW0gZGF0YSAtIFRoZSBwb3RlbnRpYWxseSBlbmNyeXB0ZWQgZGF0YVxuICogQHBhcmFtIGtleSAtIEVuY3J5cHRpb24ga2V5ICh1bmRlZmluZWQgdG8gc2tpcCBkZWNyeXB0aW9uKVxuICogQHJldHVybnMgVGhlIGRlY3J5cHRlZCBpbm5lciBwYXlsb2FkLCBvciB0aGUgb3JpZ2luYWwgZGF0YSBpZiBub3QgZW5jcnlwdGVkXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWNyeXB0KFxuICBkYXRhOiBVaW50OEFycmF5IHwgdW5rbm93bixcbiAga2V5OiBDcnlwdG9LZXkgfCB1bmRlZmluZWRcbik6IFByb21pc2U8VWludDhBcnJheSB8IHVua25vd24+IHtcbiAgLy8gTm9uLWJpbmFyeSBkYXRhIGlzIHJldHVybmVkIGFzLWlzLlxuICBpZiAoIShkYXRhIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHJldHVybiBkYXRhO1xuXG4gIGNvbnN0IGZvcm1hdCA9IHBlZWtGb3JtYXRQcmVmaXgoZGF0YSk7XG5cbiAgLy8gSWYgdGhlIGRhdGEgaXMgZW5jcnlwdGVkIGJ1dCBubyBrZXkgd2FzIHByb3ZpZGVkLCBmYWlsIGZhc3QuXG4gIGlmIChmb3JtYXQgPT09IFNlcmlhbGl6YXRpb25Gb3JtYXQuRU5DUllQVEVEICYmICFrZXkpIHtcbiAgICB0aHJvdyBuZXcgUnVudGltZURlY3J5cHRpb25FcnJvcihcbiAgICAgICdFbmNyeXB0ZWQgZGF0YSBlbmNvdW50ZXJlZCBidXQgbm8gZW5jcnlwdGlvbiBrZXkgaXMgYXZhaWxhYmxlLiAnICtcbiAgICAgICAgJ0VuY3J5cHRpb24gaXMgbm90IGNvbmZpZ3VyZWQgb3Igbm8ga2V5IHdhcyBwcm92aWRlZCBmb3IgdGhpcyBydW4uJyxcbiAgICAgIHtcbiAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgIG9wZXJhdGlvbjogJ2RlY3J5cHQnLFxuICAgICAgICAgIGJ5dGVMZW5ndGg6IGRhdGEuYnl0ZUxlbmd0aCxcbiAgICAgICAgICBmb3JtYXRQcmVmaXg6ICdlbmNyJyxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLy8gSWYgdGhlIGRhdGEgaXMgbm90IGVuY3J5cHRlZCwgcmV0dXJuIGl0IHVuY2hhbmdlZC5cbiAgaWYgKGZvcm1hdCAhPT0gU2VyaWFsaXphdGlvbkZvcm1hdC5FTkNSWVBURUQpIHJldHVybiBkYXRhO1xuXG4gIGNvbnN0IHsgcGF5bG9hZCB9ID0gZGVjb2RlRm9ybWF0UHJlZml4KGRhdGEpO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBhZXNHY21EZWNyeXB0KGtleSEsIHBheWxvYWQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIFRoZSBsb3ctbGV2ZWwgQUVTIGxheWVyIG9ubHkgc2VlcyB0aGUgc3RyaXBwZWQgcGF5bG9hZCwgc28gaXQgY2Fubm90XG4gICAgLy8gcmVjb3JkIHRoZSBvdXRlciBlbnZlbG9wZSBwcmVmaXguIFRoaXMgbGF5ZXIgcGVla2VkIGl0IChgZW5jcmApLCBzb1xuICAgIC8vIGVucmljaCB0aGUgZGlhZ25vc3RpYyBjb250ZXh0IHdpdGggdGhlIHJlYWwgZm9ybWF0IHByZWZpeCBiZWZvcmVcbiAgICAvLyByZXRocm93aW5nLlxuICAgIGlmIChSdW50aW1lRGVjcnlwdGlvbkVycm9yLmlzKGVycm9yKSAmJiBlcnJvci5jb250ZXh0KSB7XG4gICAgICBlcnJvci5jb250ZXh0LmZvcm1hdFByZWZpeCA9IGZvcm1hdDtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cbiJdfQ==
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJpYWxpemF0aW9uL2VuY3J5cHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFELE9BQU8sRUFDTCxPQUFPLElBQUksYUFBYSxFQUN4QixPQUFPLElBQUksYUFBYSxFQUV4QixTQUFTLElBQUksWUFBWSxHQUMxQixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsSUFBSSxJQUFJLFVBQVUsRUFFbEIsSUFBSSxJQUFJLGVBQWUsR0FDeEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0QixnQkFBZ0IsR0FDakIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBSWpEOzs7Ozs7R0FNRztBQUNILE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0FBQzFFLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztBQXVFcEU7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUNwQixrQkFBOEIsRUFDOUIsR0FBZ0I7SUFFaEIsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDaEUsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQzVCLEdBQWMsRUFDZCxPQUFtQixFQUNuQixHQUFnQjtJQUVoQixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUN2RCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLG9CQUFvQixDQUN4QyxjQUEwQjtJQUUxQixNQUFNLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUN2QyxZQUFZLENBQUMsY0FBYyxDQUFDO1FBQzVCLGdCQUFnQixDQUFDLGNBQWMsQ0FBQztLQUNqQyxDQUFDLENBQUM7SUFDSCxPQUFPLGNBQWMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBYztJQUN6QyxPQUFPLENBQ0wsT0FBTyxLQUFLLEtBQUssUUFBUTtRQUN6QixLQUFLLEtBQUssSUFBSTtRQUNiLEtBQTZCLENBQUMsaUJBQWlCLENBQUMsS0FBSyxJQUFJLENBQzNELENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQWM7SUFDN0MsT0FBTyxDQUNMLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFDekIsS0FBSyxLQUFLLElBQUk7UUFDYixLQUFpQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLElBQUksQ0FDNUQsQ0FBQztBQUNKLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQTJCO0lBQ2xELElBQUksQ0FBQyxHQUFHO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDM0IsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDMUMsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDeEMsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBWUQsTUFBTSxDQUFDLEtBQUssVUFBVSxvQkFBb0IsQ0FDeEMsR0FBdUI7SUFFdkIsT0FBTyxPQUFPLEdBQUcsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDakQsQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sQ0FDM0IsSUFBMEIsRUFDMUIsR0FBMkI7SUFFM0IsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxZQUFZLFVBQVUsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRXZELElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxlQUFlLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUUsT0FBTyxzQkFBc0IsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELHlFQUF5RTtJQUN6RSx1RUFBdUU7SUFDdkUsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUNyRCxNQUFNLFNBQVMsR0FBRyxNQUFNLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEQsT0FBTyxzQkFBc0IsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDMUUsQ0FBQztBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0g7OztHQUdHO0FBQ0gsS0FBSyxVQUFVLGtCQUFrQixDQUMvQixJQUFnQixFQUNoQixHQUEyQjtJQUUzQiwwRUFBMEU7SUFDMUUsaUVBQWlFO0lBQ2pFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzNCLE1BQU0sSUFBSSxzQkFBc0IsQ0FDOUIsMkRBQTJEO1lBQ3pELGlFQUFpRTtZQUNqRSxvRUFBb0UsRUFDdEU7WUFDRSxPQUFPLEVBQUU7Z0JBQ1AsU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDM0IsWUFBWSxFQUFFLE1BQU07YUFDckI7U0FDRixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLElBQUksQ0FBQztRQUNILE9BQU8sTUFBTSxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2Ysb0VBQW9FO1FBQ3BFLHNFQUFzRTtRQUN0RSxJQUFJLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1FBQzFELENBQUM7UUFDRCxNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLENBQzNCLElBQTBCLEVBQzFCLEdBQTJCO0lBRTNCLHFDQUFxQztJQUNyQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFlBQVksVUFBVSxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFFL0MsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFdEMsSUFBSSxNQUFNLEtBQUssbUJBQW1CLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDMUMsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELHFEQUFxRDtJQUNyRCxJQUFJLE1BQU0sS0FBSyxtQkFBbUIsQ0FBQyxTQUFTO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFFMUQseUVBQXlFO0lBQ3pFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixNQUFNLElBQUksc0JBQXNCLENBQzlCLGlFQUFpRTtZQUMvRCxtRUFBbUUsRUFDckU7WUFDRSxPQUFPLEVBQUU7Z0JBQ1AsU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDM0IsWUFBWSxFQUFFLE1BQU07YUFDckI7U0FDRixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLElBQUksQ0FBQztRQUNILE9BQU8sTUFBTSxhQUFhLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsdUVBQXVFO1FBQ3ZFLHNFQUFzRTtRQUN0RSxtRUFBbUU7UUFDbkUsY0FBYztRQUNkLElBQUksc0JBQXNCLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN0RCxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7UUFDdEMsQ0FBQztRQUNELE1BQU0sS0FBSyxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbXBvc2FibGUgZW5jcnlwdGlvbiBsYXllciBmb3Igc2VyaWFsaXplZCBkYXRhLlxuICpcbiAqIFdyYXBzL3Vud3JhcHMgc2VyaWFsaXplZCBwYXlsb2FkcyB3aXRoIGVpdGhlciBzeW1tZXRyaWMgQUVTLTI1Ni1HQ01cbiAqIGVuY3J5cHRpb24gKGBlbmNyYCkgb3IgYW4gYXN5bW1ldHJpYyBzZWFsZWQgYm94IChgZW5jcGApLCB1c2luZyB0aGUgZm9ybWF0XG4gKiBwcmVmaXggc3lzdGVtIHRvIG1hcmsgd2hpY2guIFNlZSB7QGxpbmsgUGF5bG9hZEtleX0gZm9yIGhvdyBhIGNhbGxlclxuICogZGVjbGFyZXMgd2hpY2ggY2FwYWJpbGl0aWVzIGl0IGhvbGRzLlxuICovXG5cbmltcG9ydCB7IFJ1bnRpbWVEZWNyeXB0aW9uRXJyb3IgfSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzJztcbmltcG9ydCB7XG4gIGRlY3J5cHQgYXMgYWVzR2NtRGVjcnlwdCxcbiAgZW5jcnlwdCBhcyBhZXNHY21FbmNyeXB0LFxuICB0eXBlIENyeXB0b0tleSxcbiAgaW1wb3J0S2V5IGFzIGltcG9ydEFlc0tleSxcbn0gZnJvbSAnLi4vZW5jcnlwdGlvbi5qcyc7XG5pbXBvcnQge1xuICBkZXJpdmVSdW5LZXlQYWlyLFxuICBvcGVuIGFzIG9wZW5TZWFsZWQsXG4gIHR5cGUgUnVuS2V5UGFpcixcbiAgc2VhbCBhcyBzZWFsVG9QdWJsaWNLZXksXG59IGZyb20gJy4uL3NlYWxlZC1ib3guanMnO1xuaW1wb3J0IHtcbiAgZGVjb2RlRm9ybWF0UHJlZml4LFxuICBlbmNvZGVXaXRoRm9ybWF0UHJlZml4LFxuICBwZWVrRm9ybWF0UHJlZml4LFxufSBmcm9tICcuL2Zvcm1hdC5qcyc7XG5pbXBvcnQgeyBTZXJpYWxpemF0aW9uRm9ybWF0IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmV4cG9ydCB0eXBlIHsgQ3J5cHRvS2V5LCBSdW5LZXlQYWlyIH07XG5cbi8qKlxuICogQnJhbmRzIGRpc3Rpbmd1aXNoaW5nIHRoZSBzdHJ1Y3R1cmVkIGtleSB2YXJpYW50cyBmcm9tIGEgYmFyZSBgQ3J5cHRvS2V5YC5cbiAqXG4gKiBgU3ltYm9sLmZvcmAgcmF0aGVyIHRoYW4gYFN5bWJvbCgpYCBiZWNhdXNlIHRoZXNlIHZhbHVlcyBjcm9zcyByZWFsbVxuICogYm91bmRhcmllcyAoaG9zdCDihpQgd29ya2Zsb3cgVk0pLCBhbmQgdGhlIGdsb2JhbCBzeW1ib2wgcmVnaXN0cnkgaXMgc2hhcmVkXG4gKiBhY3Jvc3MgcmVhbG1zIHdoaWxlIHVuaXF1ZSBzeW1ib2xzIGFyZSBub3QuXG4gKi9cbmNvbnN0IFNFQUxfVEFSR0VUX0JSQU5EID0gU3ltYm9sLmZvcignd29ya2Zsb3cuc2VyaWFsaXphdGlvbi5zZWFsVGFyZ2V0Jyk7XG5jb25zdCBSVU5fS0VZU19CUkFORCA9IFN5bWJvbC5mb3IoJ3dvcmtmbG93LnNlcmlhbGl6YXRpb24ucnVuS2V5cycpO1xuXG4vKipcbiAqIEEgd3JpdGUtb25seSBjYXBhYmlsaXR5OiBzZWFsIHBheWxvYWRzIHRvIGEgcnVuJ3MgWDI1NTE5IHB1YmxpYyBrZXkuXG4gKlxuICogVGhpcyBpcyB3aGF0IGEgKmNyb3NzLXJ1biogd3JpdGVyIGhvbGRzIOKAlCBhIGhvb2sgcmVzdW1wdGlvbiB0YXJnZXRpbmdcbiAqIGFub3RoZXIgcnVuLCBvciBhIGNoaWxkIHdvcmtmbG93IHdyaXRpbmcgaW50byBhIHBhcmVudCdzIGZvcndhcmRlZCBzdHJlYW0uXG4gKiBJdCBjYXJyaWVzIG5vIGFiaWxpdHkgdG8gZGVjcnlwdCBhbnl0aGluZywgYW5kIGJlY2F1c2UgaXQgaXMgYSBkaXN0aW5jdFxuICogbm9taW5hbCB0eXBlIGl0IGNhbm5vdCBiZSBtaXN0YWtlbiBmb3Igc3ltbWV0cmljIGtleSBtYXRlcmlhbC5cbiAqXG4gKiBUaGF0IGxhc3QgcHJvcGVydHkgbWF0dGVycyBtb3JlIHRoYW4gaXQgbG9va3M6IGEgcmF3IDMyLWJ5dGUgWDI1NTE5IHB1YmxpY1xuICoga2V5IGlzIGEgKnN0cnVjdHVyYWxseSB2YWxpZCogQUVTLTI1NiBrZXksIHNvIGhhbmRpbmcgb25lIHRvXG4gKiBgaW1wb3J0S2V5KC4uLiwgJ0FFUy1HQ00nKWAgc3VjY2VlZHMgYW5kIHNpbGVudGx5IHByb2R1Y2VzIGNpcGhlcnRleHQgdGhhdFxuICogbm9ib2R5IGNhbiBldmVyIG9wZW4uIFJvdXRpbmcgcHVibGljIGtleXMgZXhjbHVzaXZlbHkgdGhyb3VnaFxuICoge0BsaW5rIHNlYWxUb30gbWFrZXMgdGhhdCBtaXN0YWtlIHVucmVwcmVzZW50YWJsZSByYXRoZXIgdGhhbiBtZXJlbHlcbiAqIGRpc2NvdXJhZ2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlYWxUYXJnZXQge1xuICByZWFkb25seSBbU0VBTF9UQVJHRVRfQlJBTkRdOiB0cnVlO1xuICAvKiogVGhlIHJlY2lwaWVudCBydW4ncyByYXcgMzItYnl0ZSBYMjU1MTkgcHVibGljIGtleS4gKi9cbiAgcmVhZG9ubHkgcmVjaXBpZW50UHVibGljS2V5OiBVaW50OEFycmF5O1xuICAvKiogQWRkaXRpb25hbCBhdXRoZW50aWNhdGVkIGRhdGEgYmluZGluZyB0aGUgcGF5bG9hZCB0byB0aGUgcmVjaXBpZW50IHJ1bi4gKi9cbiAgcmVhZG9ubHkgYWFkPzogVWludDhBcnJheTtcbn1cblxuLyoqXG4gKiBUaGUgZnVsbCBrZXkgY2FwYWJpbGl0eSBvZiBhIHJ1bidzICpvd24qIHJ1bnRpbWUgKGFuZCBvZiBvMTF5IHRvb2xpbmdcbiAqIGFjdGluZyBvbiBpdHMgYmVoYWxmKTogdGhlIHN5bW1ldHJpYyBrZXkgZm9yIGl0cyBvd24gcGF5bG9hZHMsIHBsdXMgdGhlXG4gKiBrZXlwYWlyIG5lZWRlZCB0byBvcGVuIHNlYWxlZCBwYXlsb2FkcyB0aGF0IG90aGVyIHJ1bnMgd3JvdGUgdG8gaXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVuUGF5bG9hZEtleXMge1xuICByZWFkb25seSBbUlVOX0tFWVNfQlJBTkRdOiB0cnVlO1xuICAvKiogU3ltbWV0cmljIEFFUy0yNTYtR0NNIGtleSDigJQgdGhlIHJ1bidzIG93biBgZW5jcmAgcGF5bG9hZHMuICovXG4gIHJlYWRvbmx5IGFlczogQ3J5cHRvS2V5O1xuICAvKiogWDI1NTE5IGtleXBhaXIg4oCUIG9wZW5zIGBlbmNwYCBwYXlsb2FkcyBzZWFsZWQgdG8gdGhpcyBydW4uICovXG4gIHJlYWRvbmx5IGtleVBhaXI6IFJ1bktleVBhaXI7XG4gIC8qKiBBZGRpdGlvbmFsIGF1dGhlbnRpY2F0ZWQgZGF0YSBleHBlY3RlZCBvbiBzZWFsZWQgcGF5bG9hZHMuICovXG4gIHJlYWRvbmx5IGFhZD86IFVpbnQ4QXJyYXk7XG59XG5cbi8qKlxuICogQSByZXNvbHZlZCBrZXkgZm9yIHJlYWRpbmcgb3Igd3JpdGluZyBhIHNlcmlhbGl6ZWQgcGF5bG9hZC5cbiAqXG4gKiBUaGUgYmFyZSBgQ3J5cHRvS2V5YCB2YXJpYW50IGlzIHRoZSBoaXN0b3JpY2FsIHNoYXBlIGFuZCByZW1haW5zIHZhbGlkOiBpdFxuICogbWVhbnMgXCJzeW1tZXRyaWMgb25seVwiLCB3aGljaCBpcyBleGFjdGx5IHJpZ2h0IGZvciBhIHJ1biB0aGF0IHByZWRhdGVzXG4gKiBzZWFsZWQgYm94ZXMgb3IgZm9yIGFueSBzYW1lLXJ1biBwYXlsb2FkLiBUaGUgc3RydWN0dXJlZCB2YXJpYW50cyBhcmVcbiAqIGFkZGl0aXZlOlxuICpcbiAqIHwgVmFyaWFudCAgICAgICAgICAgIHwgV3JpdGVzICB8IFJlYWRzICAgICAgICAgIHwgSGVsZCBieSAgICAgICAgICAgICAgICAgIHxcbiAqIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAqIHwgYENyeXB0b0tleWAgICAgICAgIHwgYGVuY3JgICB8IGBlbmNyYCAgICAgICAgIHwgc2FtZS1ydW4gKGxlZ2FjeSBzaGFwZSkgIHxcbiAqIHwge0BsaW5rIFJ1blBheWxvYWRLZXlzfSB8IGBlbmNyYCAgfCBgZW5jcmAsIGBlbmNwYCB8IHRoZSBvd25pbmcgcnVuLCBvMTF5ICAgICB8XG4gKiB8IHtAbGluayBTZWFsVGFyZ2V0fSB8IGBlbmNwYCAgfCDigJQgICAgICAgICAgICAgIHwgY3Jvc3MtcnVuIHdyaXRlcnMgICAgICAgIHxcbiAqXG4gKiBBIHJ1bidzIG93biBwYXlsb2FkcyBkZWxpYmVyYXRlbHkgc3RheSBzeW1tZXRyaWMgZXZlbiB3aGVuIHRoZSB3cml0ZXIgY291bGRcbiAqIHNlYWw6IHNlYWxpbmcgY29zdHMgYSBmcmVzaCBFQ0RIIHBlciBlbnZlbG9wZSBhbmQgMzIgZXh0cmEgYnl0ZXMsIGFuZCBidXlzXG4gKiBub3RoaW5nIHdoZW4gdGhlIHdyaXRlciBhbHJlYWR5IGhvbGRzIHRoZSBkZWNyeXB0aW9uIGtleS5cbiAqL1xuZXhwb3J0IHR5cGUgUGF5bG9hZEtleSA9IENyeXB0b0tleSB8IFNlYWxUYXJnZXQgfCBSdW5QYXlsb2FkS2V5cztcblxuLyoqXG4gKiBUaGUgc3Vic2V0IG9mIHtAbGluayBQYXlsb2FkS2V5fSB0aGF0IGNhbiBhY3R1YWxseSAqcmVhZCogYSBwYXlsb2FkLlxuICpcbiAqIEV4Y2x1ZGVzIHtAbGluayBTZWFsVGFyZ2V0fSwgd2hpY2ggaXMgd3JpdGUtb25seSBieSBjb25zdHJ1Y3Rpb246IGl0IGhvbGRzIGFcbiAqIHB1YmxpYyBrZXksIHNvIGl0IGNhbiBvcGVuIG5laXRoZXIgYGVuY3BgIChuZWVkcyB0aGUgcHJpdmF0ZSBzY2FsYXIpIG5vclxuICogYGVuY3JgIChuZWVkcyB0aGUgc3ltbWV0cmljIGtleSkuIERlY3J5cHQtc2lkZSBzaWduYXR1cmVzIHNob3VsZCB0YWtlIHRoaXNcbiAqIHJhdGhlciB0aGFuIGBQYXlsb2FkS2V5YCwgc28gcGFzc2luZyBhIHNlYWwgdGFyZ2V0IGlzIGEgY29tcGlsZSBlcnJvciBpbnN0ZWFkXG4gKiBvZiBhIGd1YXJhbnRlZWQgcnVudGltZSBmYWlsdXJlLlxuICovXG5leHBvcnQgdHlwZSBEZWNyeXB0aW9uS2V5ID0gQ3J5cHRvS2V5IHwgUnVuUGF5bG9hZEtleXM7XG5cbi8qKlxuICogQnVpbGQgYSB3cml0ZS1vbmx5IHNlYWwgY2FwYWJpbGl0eSBmb3IgYSByZWNpcGllbnQgcnVuJ3MgcHVibGljIGtleS5cbiAqXG4gKiBAcGFyYW0gcmVjaXBpZW50UHVibGljS2V5IC0gVGhlIHJlY2lwaWVudCBydW4ncyByYXcgMzItYnl0ZSBYMjU1MTkgcHVibGljIGtleVxuICogQHBhcmFtIGFhZCAtIEFkZGl0aW9uYWwgYXV0aGVudGljYXRlZCBkYXRhLCBjb252ZW50aW9uYWxseSBgcnVuQWFkKHByb2plY3RJZCwgcnVuSWQpYFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VhbFRvKFxuICByZWNpcGllbnRQdWJsaWNLZXk6IFVpbnQ4QXJyYXksXG4gIGFhZD86IFVpbnQ4QXJyYXlcbik6IFNlYWxUYXJnZXQge1xuICByZXR1cm4geyBbU0VBTF9UQVJHRVRfQlJBTkRdOiB0cnVlLCByZWNpcGllbnRQdWJsaWNLZXksIGFhZCB9O1xufVxuXG4vKipcbiAqIEJ1bmRsZSBhIHJ1bidzIHN5bW1ldHJpYyBrZXkgd2l0aCB0aGUga2V5cGFpciB0aGF0IG9wZW5zIHBheWxvYWRzIHNlYWxlZFxuICogdG8gaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5QYXlsb2FkS2V5cyhcbiAgYWVzOiBDcnlwdG9LZXksXG4gIGtleVBhaXI6IFJ1bktleVBhaXIsXG4gIGFhZD86IFVpbnQ4QXJyYXlcbik6IFJ1blBheWxvYWRLZXlzIHtcbiAgcmV0dXJuIHsgW1JVTl9LRVlTX0JSQU5EXTogdHJ1ZSwgYWVzLCBrZXlQYWlyLCBhYWQgfTtcbn1cblxuLyoqXG4gKiBCdWlsZCB0aGUgZnVsbCBrZXkgY2FwYWJpbGl0eSBmb3IgYSBydW4gZnJvbSBpdHMgcmF3IDMyLWJ5dGUga2V5IG1hdGVyaWFsIOKAlFxuICogdGhlIHZhbHVlIGBXb3JsZC5nZXRFbmNyeXB0aW9uS2V5Rm9yUnVuKClgIHJldHVybnMuXG4gKlxuICogVXNlIHRoaXMgYW55d2hlcmUgYSBydW4gcmVhZHMgaXRzIG93biBldmVudCBsb2c6IGl0IHlpZWxkcyBhIGtleSB0aGF0IG9wZW5zXG4gKiBib3RoIGl0cyBvd24gc3ltbWV0cmljIChgZW5jcmApIHBheWxvYWRzIGFuZCBzZWFsZWQgKGBlbmNwYCkgcGF5bG9hZHMgb3RoZXJcbiAqIHJ1bnMgd3JvdGUgdG8gaXQuIFJlc29sdmluZyBvbmx5IGBpbXBvcnRLZXkobWF0ZXJpYWwpYCB3b3VsZCBsZWF2ZSB0aGVcbiAqIHJlYWRlciB1bmFibGUgdG8gb3BlbiBzZWFsZWQgd3JpdGVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVyaXZlUnVuUGF5bG9hZEtleXMoXG4gIHJ1bktleU1hdGVyaWFsOiBVaW50OEFycmF5XG4pOiBQcm9taXNlPFJ1blBheWxvYWRLZXlzPiB7XG4gIGNvbnN0IFthZXMsIGtleVBhaXJdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgIGltcG9ydEFlc0tleShydW5LZXlNYXRlcmlhbCksXG4gICAgZGVyaXZlUnVuS2V5UGFpcihydW5LZXlNYXRlcmlhbCksXG4gIF0pO1xuICByZXR1cm4gcnVuUGF5bG9hZEtleXMoYWVzLCBrZXlQYWlyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2VhbFRhcmdldCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFNlYWxUYXJnZXQge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgICh2YWx1ZSBhcyBQYXJ0aWFsPFNlYWxUYXJnZXQ+KVtTRUFMX1RBUkdFVF9CUkFORF0gPT09IHRydWVcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUnVuUGF5bG9hZEtleXModmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSdW5QYXlsb2FkS2V5cyB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgKHZhbHVlIGFzIFBhcnRpYWw8UnVuUGF5bG9hZEtleXM+KVtSVU5fS0VZU19CUkFORF0gPT09IHRydWVcbiAgKTtcbn1cblxuLyoqXG4gKiBUaGUgc3ltbWV0cmljIGtleSB0byB1c2UgZm9yIGBlbmNyYCBvcGVyYXRpb25zLCBvciB1bmRlZmluZWQgd2hlbiB0aGlzIGtleVxuICogaGFzIG5vIHN5bW1ldHJpYyBjYXBhYmlsaXR5IChpLmUuIGl0IGlzIGEgc2VhbC1vbmx5IHRhcmdldCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZXNLZXlPZihrZXk6IFBheWxvYWRLZXkgfCB1bmRlZmluZWQpOiBDcnlwdG9LZXkgfCB1bmRlZmluZWQge1xuICBpZiAoIWtleSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgaWYgKGlzUnVuUGF5bG9hZEtleXMoa2V5KSkgcmV0dXJuIGtleS5hZXM7XG4gIGlmIChpc1NlYWxUYXJnZXQoa2V5KSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIGtleTtcbn1cblxuLyoqXG4gKiBFbmNyeXB0aW9uIGtleSBwYXJhbWV0ZXIgdHlwZS4gQWNjZXB0cyBhIHJlc29sdmVkIGtleSwgdW5kZWZpbmVkIChubyBlbmNyeXB0aW9uKSxcbiAqIGEgcHJvbWlzZSwgb3IgYSByZXNvbHZlciB0aGF0IGNhbiBkZWZlciBmZXRjaGluZyB0aGUga2V5IHVudGlsIGRhdGEgbmVlZHMgaXQuXG4gKi9cbmV4cG9ydCB0eXBlIEVuY3J5cHRpb25LZXlQYXJhbSA9XG4gIHwgUGF5bG9hZEtleVxuICB8IHVuZGVmaW5lZFxuICB8IFByb21pc2U8UGF5bG9hZEtleSB8IHVuZGVmaW5lZD5cbiAgfCAoKCkgPT4gUHJvbWlzZTxQYXlsb2FkS2V5IHwgdW5kZWZpbmVkPik7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlRW5jcnlwdGlvbktleShcbiAga2V5OiBFbmNyeXB0aW9uS2V5UGFyYW1cbik6IFByb21pc2U8UGF5bG9hZEtleSB8IHVuZGVmaW5lZD4ge1xuICByZXR1cm4gdHlwZW9mIGtleSA9PT0gJ2Z1bmN0aW9uJyA/IGtleSgpIDoga2V5O1xufVxuXG4vKipcbiAqIEVuY3J5cHQgYSBmb3JtYXQtcHJlZml4ZWQgcGF5bG9hZCBpZiBhIGtleSBpcyBwcm92aWRlZC5cbiAqXG4gKiBXcmFwcyB0aGUgZGF0YSB3aXRoIHRoZSBgZW5jcmAgcHJlZml4IGZvciBzeW1tZXRyaWMga2V5cywgb3IgdGhlIGBlbmNwYFxuICogcHJlZml4IHdoZW4gaGFuZGVkIGEge0BsaW5rIFNlYWxUYXJnZXR9IOKAlCBhIGNyb3NzLXJ1biB3cml0ZXIgdGhhdCBob2xkcyBvbmx5XG4gKiB0aGUgcmVjaXBpZW50J3MgcHVibGljIGtleS5cbiAqXG4gKiBAcGFyYW0gZGF0YSAtIFRoZSBmb3JtYXQtcHJlZml4ZWQgc2VyaWFsaXplZCBkYXRhXG4gKiBAcGFyYW0ga2V5IC0gRW5jcnlwdGlvbiBrZXkgKHVuZGVmaW5lZCB0byBza2lwIGVuY3J5cHRpb24pXG4gKiBAcmV0dXJucyBUaGUgZW5jcnlwdGVkIGRhdGEgd2l0aCBpdHMgZm9ybWF0IHByZWZpeCwgb3IgdGhlIG9yaWdpbmFsIGRhdGEgaWYgbm8ga2V5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbmNyeXB0KFxuICBkYXRhOiBVaW50OEFycmF5IHwgdW5rbm93bixcbiAga2V5OiBQYXlsb2FkS2V5IHwgdW5kZWZpbmVkXG4pOiBQcm9taXNlPFVpbnQ4QXJyYXkgfCB1bmtub3duPiB7XG4gIGlmICgha2V5IHx8ICEoZGF0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSByZXR1cm4gZGF0YTtcblxuICBpZiAoaXNTZWFsVGFyZ2V0KGtleSkpIHtcbiAgICBjb25zdCBzZWFsZWQgPSBhd2FpdCBzZWFsVG9QdWJsaWNLZXkoa2V5LnJlY2lwaWVudFB1YmxpY0tleSwgZGF0YSwga2V5LmFhZCk7XG4gICAgcmV0dXJuIGVuY29kZVdpdGhGb3JtYXRQcmVmaXgoU2VyaWFsaXphdGlvbkZvcm1hdC5TRUFMRUQsIHNlYWxlZCk7XG4gIH1cblxuICAvLyBTeW1tZXRyaWMgcGF0aCDigJQgYSBydW4ncyBvd24gcGF5bG9hZHMsIGluY2x1ZGluZyB3aGVuIHRoZSBjYWxsZXIgaG9sZHNcbiAgLy8gdGhlIGZ1bGwgYFJ1blBheWxvYWRLZXlzYCBidW5kbGUgYW5kICpjb3VsZCogc2VhbC4gU2VlIGBQYXlsb2FkS2V5YC5cbiAgY29uc3QgYWVzS2V5ID0gaXNSdW5QYXlsb2FkS2V5cyhrZXkpID8ga2V5LmFlcyA6IGtleTtcbiAgY29uc3QgZW5jcnlwdGVkID0gYXdhaXQgYWVzR2NtRW5jcnlwdChhZXNLZXksIGRhdGEpO1xuICByZXR1cm4gZW5jb2RlV2l0aEZvcm1hdFByZWZpeChTZXJpYWxpemF0aW9uRm9ybWF0LkVOQ1JZUFRFRCwgZW5jcnlwdGVkKTtcbn1cblxuLyoqXG4gKiBEZWNyeXB0IGEgZm9ybWF0LXByZWZpeGVkIHBheWxvYWQgaWYgaXQncyBlbmNyeXB0ZWQgb3Igc2VhbGVkLlxuICpcbiAqIFN0cmlwcyB0aGUgYGVuY3JgL2BlbmNwYCBmb3JtYXQgcHJlZml4IGFuZCByZWNvdmVycyB0aGUgaW5uZXIgcGF5bG9hZC5cbiAqIE9wZW5pbmcgYSBzZWFsZWQgKGBlbmNwYCkgcGF5bG9hZCByZXF1aXJlcyB0aGUgcnVuJ3MgWDI1NTE5IGtleXBhaXIsIHNvIHRoZVxuICogY2FsbGVyIG11c3Qgc3VwcGx5IHtAbGluayBSdW5QYXlsb2FkS2V5c30g4oCUIGEgYmFyZSBzeW1tZXRyaWMga2V5IGNhbm5vdCBkb1xuICogaXQsIGFuZCBuZWl0aGVyIGNhbiBhIHtAbGluayBTZWFsVGFyZ2V0fSAod2hpY2ggaXMgd3JpdGUtb25seSBieSBkZXNpZ24pLlxuICpcbiAqIEBwYXJhbSBkYXRhIC0gVGhlIHBvdGVudGlhbGx5IGVuY3J5cHRlZCBkYXRhXG4gKiBAcGFyYW0ga2V5IC0gRW5jcnlwdGlvbiBrZXkgKHVuZGVmaW5lZCB0byBza2lwIGRlY3J5cHRpb24pXG4gKiBAcmV0dXJucyBUaGUgZGVjcnlwdGVkIGlubmVyIHBheWxvYWQsIG9yIHRoZSBvcmlnaW5hbCBkYXRhIGlmIG5vdCBlbmNyeXB0ZWRcbiAqL1xuLyoqXG4gKiBPcGVuIGEgc2VhbGVkIChgZW5jcGApIGVudmVsb3BlLiBTcGxpdCBvdXQgZnJvbSB7QGxpbmsgZGVjcnlwdH0gdG8ga2VlcFxuICogZWFjaCBzY2hlbWUncyBlcnJvciBoYW5kbGluZyByZWFkYWJsZSBvbiBpdHMgb3duLlxuICovXG5hc3luYyBmdW5jdGlvbiBvcGVuU2VhbGVkRW52ZWxvcGUoXG4gIGRhdGE6IFVpbnQ4QXJyYXksXG4gIGtleTogUGF5bG9hZEtleSB8IHVuZGVmaW5lZFxuKTogUHJvbWlzZTxVaW50OEFycmF5PiB7XG4gIC8vIFNlYWxlZCBwYXlsb2FkcyBuZWVkIHRoZSBwcml2YXRlIHNjYWxhci4gQW55dGhpbmcgZWxzZSDigJQgbm8ga2V5LCBhIGJhcmVcbiAgLy8gc3ltbWV0cmljIGtleSwgb3IgYSB3cml0ZS1vbmx5IHNlYWwgdGFyZ2V0IOKAlCBjYW5ub3Qgb3BlbiB0aGVtLlxuICBpZiAoIWlzUnVuUGF5bG9hZEtleXMoa2V5KSkge1xuICAgIHRocm93IG5ldyBSdW50aW1lRGVjcnlwdGlvbkVycm9yKFxuICAgICAgJ1NlYWxlZCBkYXRhIGVuY291bnRlcmVkIGJ1dCBubyBydW4ga2V5cGFpciBpcyBhdmFpbGFibGUuICcgK1xuICAgICAgICBcIk9wZW5pbmcgYSBzZWFsZWQgcGF5bG9hZCByZXF1aXJlcyB0aGUgcnVuJ3Mgb3duIGVuY3J5cHRpb24ga2V5IFwiICtcbiAgICAgICAgJ21hdGVyaWFsOyBhIHN5bW1ldHJpYyBrZXkgb3IgYSBzZWFsLW9ubHkgdGFyZ2V0IGNhbm5vdCBkZWNyeXB0IGl0LicsXG4gICAgICB7XG4gICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICBvcGVyYXRpb246ICdkZWNyeXB0JyxcbiAgICAgICAgICBieXRlTGVuZ3RoOiBkYXRhLmJ5dGVMZW5ndGgsXG4gICAgICAgICAgZm9ybWF0UHJlZml4OiAnZW5jcCcsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHsgcGF5bG9hZCB9ID0gZGVjb2RlRm9ybWF0UHJlZml4KGRhdGEpO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBvcGVuU2VhbGVkKGtleS5rZXlQYWlyLCBwYXlsb2FkLCBrZXkuYWFkKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyBUaGUgc2VhbGVkLWJveCBsYXllciBvbmx5IHNlZXMgdGhlIHN0cmlwcGVkIHBheWxvYWQsIHNvIGl0IGNhbm5vdFxuICAgIC8vIHJlY29yZCB0aGUgb3V0ZXIgZW52ZWxvcGUgcHJlZml4LiBFbnJpY2ggaXQgaGVyZSBiZWZvcmUgcmV0aHJvd2luZy5cbiAgICBpZiAoUnVudGltZURlY3J5cHRpb25FcnJvci5pcyhlcnJvcikgJiYgZXJyb3IuY29udGV4dCkge1xuICAgICAgZXJyb3IuY29udGV4dC5mb3JtYXRQcmVmaXggPSBTZXJpYWxpemF0aW9uRm9ybWF0LlNFQUxFRDtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlY3J5cHQoXG4gIGRhdGE6IFVpbnQ4QXJyYXkgfCB1bmtub3duLFxuICBrZXk6IFBheWxvYWRLZXkgfCB1bmRlZmluZWRcbik6IFByb21pc2U8VWludDhBcnJheSB8IHVua25vd24+IHtcbiAgLy8gTm9uLWJpbmFyeSBkYXRhIGlzIHJldHVybmVkIGFzLWlzLlxuICBpZiAoIShkYXRhIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHJldHVybiBkYXRhO1xuXG4gIGNvbnN0IGZvcm1hdCA9IHBlZWtGb3JtYXRQcmVmaXgoZGF0YSk7XG5cbiAgaWYgKGZvcm1hdCA9PT0gU2VyaWFsaXphdGlvbkZvcm1hdC5TRUFMRUQpIHtcbiAgICByZXR1cm4gb3BlblNlYWxlZEVudmVsb3BlKGRhdGEsIGtleSk7XG4gIH1cblxuICAvLyBJZiB0aGUgZGF0YSBpcyBub3QgZW5jcnlwdGVkLCByZXR1cm4gaXQgdW5jaGFuZ2VkLlxuICBpZiAoZm9ybWF0ICE9PSBTZXJpYWxpemF0aW9uRm9ybWF0LkVOQ1JZUFRFRCkgcmV0dXJuIGRhdGE7XG5cbiAgLy8gSWYgdGhlIGRhdGEgaXMgZW5jcnlwdGVkIGJ1dCBubyBzeW1tZXRyaWMga2V5IGlzIGF2YWlsYWJsZSwgZmFpbCBmYXN0LlxuICBjb25zdCBhZXNLZXkgPSBhZXNLZXlPZihrZXkpO1xuICBpZiAoIWFlc0tleSkge1xuICAgIHRocm93IG5ldyBSdW50aW1lRGVjcnlwdGlvbkVycm9yKFxuICAgICAgJ0VuY3J5cHRlZCBkYXRhIGVuY291bnRlcmVkIGJ1dCBubyBlbmNyeXB0aW9uIGtleSBpcyBhdmFpbGFibGUuICcgK1xuICAgICAgICAnRW5jcnlwdGlvbiBpcyBub3QgY29uZmlndXJlZCBvciBubyBrZXkgd2FzIHByb3ZpZGVkIGZvciB0aGlzIHJ1bi4nLFxuICAgICAge1xuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgb3BlcmF0aW9uOiAnZGVjcnlwdCcsXG4gICAgICAgICAgYnl0ZUxlbmd0aDogZGF0YS5ieXRlTGVuZ3RoLFxuICAgICAgICAgIGZvcm1hdFByZWZpeDogJ2VuY3InLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBjb25zdCB7IHBheWxvYWQgfSA9IGRlY29kZUZvcm1hdFByZWZpeChkYXRhKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgYWVzR2NtRGVjcnlwdChhZXNLZXksIHBheWxvYWQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIFRoZSBsb3ctbGV2ZWwgQUVTIGxheWVyIG9ubHkgc2VlcyB0aGUgc3RyaXBwZWQgcGF5bG9hZCwgc28gaXQgY2Fubm90XG4gICAgLy8gcmVjb3JkIHRoZSBvdXRlciBlbnZlbG9wZSBwcmVmaXguIFRoaXMgbGF5ZXIgcGVla2VkIGl0IChgZW5jcmApLCBzb1xuICAgIC8vIGVucmljaCB0aGUgZGlhZ25vc3RpYyBjb250ZXh0IHdpdGggdGhlIHJlYWwgZm9ybWF0IHByZWZpeCBiZWZvcmVcbiAgICAvLyByZXRocm93aW5nLlxuICAgIGlmIChSdW50aW1lRGVjcnlwdGlvbkVycm9yLmlzKGVycm9yKSAmJiBlcnJvci5jb250ZXh0KSB7XG4gICAgICBlcnJvci5jb250ZXh0LmZvcm1hdFByZWZpeCA9IGZvcm1hdDtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cbiJdfQ==
@@ -1,17 +1,17 @@
1
1
  /**
2
2
  * Step mode serialization.
3
3
  *
4
- * Used by the step handler for serializing step return values and
4
+ * Used by the step executor for serializing step return values and
5
5
  * deserializing step arguments. Supports encryption as a composable layer.
6
6
  */
7
7
  import type { CodecOptions } from './codec.js';
8
- import { type CryptoKey } from './encryption.js';
8
+ import { type PayloadKey } from './encryption.js';
9
9
  /**
10
10
  * Serialize a value from the step execution environment.
11
11
  */
12
- export declare function serialize(value: unknown, encryptionKey?: CryptoKey, options?: CodecOptions): Promise<Uint8Array | unknown>;
12
+ export declare function serialize(value: unknown, encryptionKey?: PayloadKey, options?: CodecOptions): Promise<Uint8Array | unknown>;
13
13
  /**
14
14
  * Deserialize a value for the step execution environment.
15
15
  */
16
- export declare function deserialize(data: Uint8Array | unknown, encryptionKey?: CryptoKey, options?: CodecOptions): Promise<unknown>;
16
+ export declare function deserialize(data: Uint8Array | unknown, encryptionKey?: PayloadKey, options?: CodecOptions): Promise<unknown>;
17
17
  //# sourceMappingURL=step.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../../src/serialization/step.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EACL,KAAK,SAAS,EAGf,MAAM,iBAAiB,CAAC;AAKzB;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,OAAO,EACd,aAAa,CAAC,EAAE,SAAS,EACzB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,CAmB/B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,UAAU,GAAG,OAAO,EAC1B,aAAa,CAAC,EAAE,SAAS,EACzB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,OAAO,CAAC,CAsBlB"}
1
+ {"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../../src/serialization/step.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAKzB;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,OAAO,EACd,aAAa,CAAC,EAAE,UAAU,EAC1B,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,CAmB/B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,UAAU,GAAG,OAAO,EAC1B,aAAa,CAAC,EAAE,UAAU,EAC1B,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,OAAO,CAAC,CAsBlB"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Step mode serialization.
3
3
  *
4
- * Used by the step handler for serializing step return values and
4
+ * Used by the step executor for serializing step return values and
5
5
  * deserializing step arguments. Supports encryption as a composable layer.
6
6
  */
7
7
  import { SerializationError } from '@workflow/errors';
@@ -45,4 +45,4 @@ export async function deserialize(data, encryptionKey, options) {
45
45
  }
46
46
  throw new Error(`Unsupported serialization format: ${format}`);
47
47
  }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJpYWxpemF0aW9uL3N0ZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBRUwsT0FBTyxJQUFJLFdBQVcsRUFDdEIsT0FBTyxJQUFJLFdBQVcsR0FDdkIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsU0FBUyxDQUM3QixLQUFjLEVBQ2QsYUFBeUIsRUFDekIsT0FBc0I7SUFFdEIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQy9ELE1BQU0sUUFBUSxHQUFHLHNCQUFzQixDQUNyQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQzlCLE9BQU8sQ0FDTSxDQUFDO1FBQ2hCLCtEQUErRDtRQUMvRCxNQUFNLFVBQVUsR0FBRyxNQUFNLFFBQVEsQ0FDL0IsUUFBUSxFQUNSLE9BQU8sRUFBRSxXQUFXLEtBQUssSUFBSSxFQUM3QixPQUFPLEVBQUUsZ0JBQWdCLENBQzFCLENBQUM7UUFDRixPQUFPLFdBQVcsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLHdCQUF3QixDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4RSxNQUFNLElBQUksa0JBQWtCLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FDL0IsSUFBMEIsRUFDMUIsYUFBeUIsRUFDekIsT0FBc0I7SUFFdEIsTUFBTSxTQUFTLEdBQUcsTUFBTSxVQUFVLENBQ2hDLE1BQU0sV0FBVyxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsRUFDdEMsT0FBTyxFQUFFLGdCQUFnQixDQUMxQixDQUFDO0lBRUYsSUFBSSxDQUFDLENBQUMsU0FBUyxZQUFZLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDdkMsSUFBSSxZQUFZLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNuQyxPQUFPLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUNiLDJEQUEyRCxDQUM1RCxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFMUQsSUFBSSxNQUFNLEtBQUssbUJBQW1CLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDOUMsT0FBTyxZQUFZLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3RlcCBtb2RlIHNlcmlhbGl6YXRpb24uXG4gKlxuICogVXNlZCBieSB0aGUgc3RlcCBoYW5kbGVyIGZvciBzZXJpYWxpemluZyBzdGVwIHJldHVybiB2YWx1ZXMgYW5kXG4gKiBkZXNlcmlhbGl6aW5nIHN0ZXAgYXJndW1lbnRzLiBTdXBwb3J0cyBlbmNyeXB0aW9uIGFzIGEgY29tcG9zYWJsZSBsYXllci5cbiAqL1xuXG5pbXBvcnQgeyBTZXJpYWxpemF0aW9uRXJyb3IgfSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgQ29kZWNPcHRpb25zIH0gZnJvbSAnLi9jb2RlYy5qcyc7XG5pbXBvcnQgeyBkZXZhbHVlQ29kZWMgfSBmcm9tICcuL2NvZGVjLWRldmFsdWUuanMnO1xuaW1wb3J0IHsgY29tcHJlc3MsIGRlY29tcHJlc3MgfSBmcm9tICcuL2NvbXByZXNzaW9uLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgQ3J5cHRvS2V5LFxuICBkZWNyeXB0IGFzIGRlY3J5cHREYXRhLFxuICBlbmNyeXB0IGFzIGVuY3J5cHREYXRhLFxufSBmcm9tICcuL2VuY3J5cHRpb24uanMnO1xuaW1wb3J0IHsgZm9ybWF0U2VyaWFsaXphdGlvbkVycm9yLCByZXRocm93SWZSdW50aW1lRXJyb3IgfSBmcm9tICcuL2Vycm9ycy5qcyc7XG5pbXBvcnQgeyBkZWNvZGVGb3JtYXRQcmVmaXgsIGVuY29kZVdpdGhGb3JtYXRQcmVmaXggfSBmcm9tICcuL2Zvcm1hdC5qcyc7XG5pbXBvcnQgeyBTZXJpYWxpemF0aW9uRm9ybWF0IH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogU2VyaWFsaXplIGEgdmFsdWUgZnJvbSB0aGUgc3RlcCBleGVjdXRpb24gZW52aXJvbm1lbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXJpYWxpemUoXG4gIHZhbHVlOiB1bmtub3duLFxuICBlbmNyeXB0aW9uS2V5PzogQ3J5cHRvS2V5LFxuICBvcHRpb25zPzogQ29kZWNPcHRpb25zXG4pOiBQcm9taXNlPFVpbnQ4QXJyYXkgfCB1bmtub3duPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IGRldmFsdWVDb2RlYy5zZXJpYWxpemUodmFsdWUsICdzdGVwJywgb3B0aW9ucyk7XG4gICAgY29uc3QgcHJlZml4ZWQgPSBlbmNvZGVXaXRoRm9ybWF0UHJlZml4KFxuICAgICAgU2VyaWFsaXphdGlvbkZvcm1hdC5ERVZBTFVFX1YxLFxuICAgICAgcGF5bG9hZFxuICAgICkgYXMgVWludDhBcnJheTtcbiAgICAvLyBDb21wcmVzcyBiZWZvcmUgZW5jcnlwdGluZyDigJQgZW5jcnlwdGVkIGJ5dGVzIGRvbid0IGNvbXByZXNzLlxuICAgIGNvbnN0IGNvbXByZXNzZWQgPSBhd2FpdCBjb21wcmVzcyhcbiAgICAgIHByZWZpeGVkLFxuICAgICAgb3B0aW9ucz8uY29tcHJlc3Npb24gPT09IHRydWUsXG4gICAgICBvcHRpb25zPy5jb21wcmVzc2lvblN0YXRzXG4gICAgKTtcbiAgICByZXR1cm4gZW5jcnlwdERhdGEoY29tcHJlc3NlZCwgZW5jcnlwdGlvbktleSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0aHJvd0lmUnVudGltZUVycm9yKGVycm9yKTtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIGhpbnQgfSA9IGZvcm1hdFNlcmlhbGl6YXRpb25FcnJvcignc3RlcCB2YWx1ZScsIGVycm9yKTtcbiAgICB0aHJvdyBuZXcgU2VyaWFsaXphdGlvbkVycm9yKG1lc3NhZ2UsIHsgaGludCwgY2F1c2U6IGVycm9yIH0pO1xuICB9XG59XG5cbi8qKlxuICogRGVzZXJpYWxpemUgYSB2YWx1ZSBmb3IgdGhlIHN0ZXAgZXhlY3V0aW9uIGVudmlyb25tZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVzZXJpYWxpemUoXG4gIGRhdGE6IFVpbnQ4QXJyYXkgfCB1bmtub3duLFxuICBlbmNyeXB0aW9uS2V5PzogQ3J5cHRvS2V5LFxuICBvcHRpb25zPzogQ29kZWNPcHRpb25zXG4pOiBQcm9taXNlPHVua25vd24+IHtcbiAgY29uc3QgZGVjcnlwdGVkID0gYXdhaXQgZGVjb21wcmVzcyhcbiAgICBhd2FpdCBkZWNyeXB0RGF0YShkYXRhLCBlbmNyeXB0aW9uS2V5KSxcbiAgICBvcHRpb25zPy5jb21wcmVzc2lvblN0YXRzXG4gICk7XG5cbiAgaWYgKCEoZGVjcnlwdGVkIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHtcbiAgICBpZiAoZGV2YWx1ZUNvZGVjLmRlc2VyaWFsaXplTGVnYWN5KSB7XG4gICAgICByZXR1cm4gZGV2YWx1ZUNvZGVjLmRlc2VyaWFsaXplTGVnYWN5KGRlY3J5cHRlZCwgJ3N0ZXAnLCBvcHRpb25zKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0Nhbm5vdCBkZXNlcmlhbGl6ZSBub24tYmluYXJ5IGRhdGEgd2l0aG91dCBsZWdhY3kgc3VwcG9ydCdcbiAgICApO1xuICB9XG5cbiAgY29uc3QgeyBmb3JtYXQsIHBheWxvYWQgfSA9IGRlY29kZUZvcm1hdFByZWZpeChkZWNyeXB0ZWQpO1xuXG4gIGlmIChmb3JtYXQgPT09IFNlcmlhbGl6YXRpb25Gb3JtYXQuREVWQUxVRV9WMSkge1xuICAgIHJldHVybiBkZXZhbHVlQ29kZWMuZGVzZXJpYWxpemUocGF5bG9hZCwgJ3N0ZXAnLCBvcHRpb25zKTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgc2VyaWFsaXphdGlvbiBmb3JtYXQ6ICR7Zm9ybWF0fWApO1xufVxuIl19
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJpYWxpemF0aW9uL3N0ZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsT0FBTyxJQUFJLFdBQVcsRUFDdEIsT0FBTyxJQUFJLFdBQVcsR0FFdkIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsU0FBUyxDQUM3QixLQUFjLEVBQ2QsYUFBMEIsRUFDMUIsT0FBc0I7SUFFdEIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQy9ELE1BQU0sUUFBUSxHQUFHLHNCQUFzQixDQUNyQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQzlCLE9BQU8sQ0FDTSxDQUFDO1FBQ2hCLCtEQUErRDtRQUMvRCxNQUFNLFVBQVUsR0FBRyxNQUFNLFFBQVEsQ0FDL0IsUUFBUSxFQUNSLE9BQU8sRUFBRSxXQUFXLEtBQUssSUFBSSxFQUM3QixPQUFPLEVBQUUsZ0JBQWdCLENBQzFCLENBQUM7UUFDRixPQUFPLFdBQVcsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLHdCQUF3QixDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4RSxNQUFNLElBQUksa0JBQWtCLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FDL0IsSUFBMEIsRUFDMUIsYUFBMEIsRUFDMUIsT0FBc0I7SUFFdEIsTUFBTSxTQUFTLEdBQUcsTUFBTSxVQUFVLENBQ2hDLE1BQU0sV0FBVyxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsRUFDdEMsT0FBTyxFQUFFLGdCQUFnQixDQUMxQixDQUFDO0lBRUYsSUFBSSxDQUFDLENBQUMsU0FBUyxZQUFZLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDdkMsSUFBSSxZQUFZLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNuQyxPQUFPLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUNiLDJEQUEyRCxDQUM1RCxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFMUQsSUFBSSxNQUFNLEtBQUssbUJBQW1CLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDOUMsT0FBTyxZQUFZLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3RlcCBtb2RlIHNlcmlhbGl6YXRpb24uXG4gKlxuICogVXNlZCBieSB0aGUgc3RlcCBleGVjdXRvciBmb3Igc2VyaWFsaXppbmcgc3RlcCByZXR1cm4gdmFsdWVzIGFuZFxuICogZGVzZXJpYWxpemluZyBzdGVwIGFyZ3VtZW50cy4gU3VwcG9ydHMgZW5jcnlwdGlvbiBhcyBhIGNvbXBvc2FibGUgbGF5ZXIuXG4gKi9cblxuaW1wb3J0IHsgU2VyaWFsaXphdGlvbkVycm9yIH0gZnJvbSAnQHdvcmtmbG93L2Vycm9ycyc7XG5pbXBvcnQgdHlwZSB7IENvZGVjT3B0aW9ucyB9IGZyb20gJy4vY29kZWMuanMnO1xuaW1wb3J0IHsgZGV2YWx1ZUNvZGVjIH0gZnJvbSAnLi9jb2RlYy1kZXZhbHVlLmpzJztcbmltcG9ydCB7IGNvbXByZXNzLCBkZWNvbXByZXNzIH0gZnJvbSAnLi9jb21wcmVzc2lvbi5qcyc7XG5pbXBvcnQge1xuICBkZWNyeXB0IGFzIGRlY3J5cHREYXRhLFxuICBlbmNyeXB0IGFzIGVuY3J5cHREYXRhLFxuICB0eXBlIFBheWxvYWRLZXksXG59IGZyb20gJy4vZW5jcnlwdGlvbi5qcyc7XG5pbXBvcnQgeyBmb3JtYXRTZXJpYWxpemF0aW9uRXJyb3IsIHJldGhyb3dJZlJ1bnRpbWVFcnJvciB9IGZyb20gJy4vZXJyb3JzLmpzJztcbmltcG9ydCB7IGRlY29kZUZvcm1hdFByZWZpeCwgZW5jb2RlV2l0aEZvcm1hdFByZWZpeCB9IGZyb20gJy4vZm9ybWF0LmpzJztcbmltcG9ydCB7IFNlcmlhbGl6YXRpb25Gb3JtYXQgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLyoqXG4gKiBTZXJpYWxpemUgYSB2YWx1ZSBmcm9tIHRoZSBzdGVwIGV4ZWN1dGlvbiBlbnZpcm9ubWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlcmlhbGl6ZShcbiAgdmFsdWU6IHVua25vd24sXG4gIGVuY3J5cHRpb25LZXk/OiBQYXlsb2FkS2V5LFxuICBvcHRpb25zPzogQ29kZWNPcHRpb25zXG4pOiBQcm9taXNlPFVpbnQ4QXJyYXkgfCB1bmtub3duPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IGRldmFsdWVDb2RlYy5zZXJpYWxpemUodmFsdWUsICdzdGVwJywgb3B0aW9ucyk7XG4gICAgY29uc3QgcHJlZml4ZWQgPSBlbmNvZGVXaXRoRm9ybWF0UHJlZml4KFxuICAgICAgU2VyaWFsaXphdGlvbkZvcm1hdC5ERVZBTFVFX1YxLFxuICAgICAgcGF5bG9hZFxuICAgICkgYXMgVWludDhBcnJheTtcbiAgICAvLyBDb21wcmVzcyBiZWZvcmUgZW5jcnlwdGluZyDigJQgZW5jcnlwdGVkIGJ5dGVzIGRvbid0IGNvbXByZXNzLlxuICAgIGNvbnN0IGNvbXByZXNzZWQgPSBhd2FpdCBjb21wcmVzcyhcbiAgICAgIHByZWZpeGVkLFxuICAgICAgb3B0aW9ucz8uY29tcHJlc3Npb24gPT09IHRydWUsXG4gICAgICBvcHRpb25zPy5jb21wcmVzc2lvblN0YXRzXG4gICAgKTtcbiAgICByZXR1cm4gZW5jcnlwdERhdGEoY29tcHJlc3NlZCwgZW5jcnlwdGlvbktleSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0aHJvd0lmUnVudGltZUVycm9yKGVycm9yKTtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIGhpbnQgfSA9IGZvcm1hdFNlcmlhbGl6YXRpb25FcnJvcignc3RlcCB2YWx1ZScsIGVycm9yKTtcbiAgICB0aHJvdyBuZXcgU2VyaWFsaXphdGlvbkVycm9yKG1lc3NhZ2UsIHsgaGludCwgY2F1c2U6IGVycm9yIH0pO1xuICB9XG59XG5cbi8qKlxuICogRGVzZXJpYWxpemUgYSB2YWx1ZSBmb3IgdGhlIHN0ZXAgZXhlY3V0aW9uIGVudmlyb25tZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVzZXJpYWxpemUoXG4gIGRhdGE6IFVpbnQ4QXJyYXkgfCB1bmtub3duLFxuICBlbmNyeXB0aW9uS2V5PzogUGF5bG9hZEtleSxcbiAgb3B0aW9ucz86IENvZGVjT3B0aW9uc1xuKTogUHJvbWlzZTx1bmtub3duPiB7XG4gIGNvbnN0IGRlY3J5cHRlZCA9IGF3YWl0IGRlY29tcHJlc3MoXG4gICAgYXdhaXQgZGVjcnlwdERhdGEoZGF0YSwgZW5jcnlwdGlvbktleSksXG4gICAgb3B0aW9ucz8uY29tcHJlc3Npb25TdGF0c1xuICApO1xuXG4gIGlmICghKGRlY3J5cHRlZCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgaWYgKGRldmFsdWVDb2RlYy5kZXNlcmlhbGl6ZUxlZ2FjeSkge1xuICAgICAgcmV0dXJuIGRldmFsdWVDb2RlYy5kZXNlcmlhbGl6ZUxlZ2FjeShkZWNyeXB0ZWQsICdzdGVwJywgb3B0aW9ucyk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdDYW5ub3QgZGVzZXJpYWxpemUgbm9uLWJpbmFyeSBkYXRhIHdpdGhvdXQgbGVnYWN5IHN1cHBvcnQnXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHsgZm9ybWF0LCBwYXlsb2FkIH0gPSBkZWNvZGVGb3JtYXRQcmVmaXgoZGVjcnlwdGVkKTtcblxuICBpZiAoZm9ybWF0ID09PSBTZXJpYWxpemF0aW9uRm9ybWF0LkRFVkFMVUVfVjEpIHtcbiAgICByZXR1cm4gZGV2YWx1ZUNvZGVjLmRlc2VyaWFsaXplKHBheWxvYWQsICdzdGVwJywgb3B0aW9ucyk7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHNlcmlhbGl6YXRpb24gZm9ybWF0OiAke2Zvcm1hdH1gKTtcbn1cbiJdfQ==