@workflow/core 4.2.2 → 4.2.4

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 (61) hide show
  1. package/dist/capabilities.js +1 -1
  2. package/dist/class-serialization.js +1 -1
  3. package/dist/classify-error.js +1 -1
  4. package/dist/create-hook.js +1 -1
  5. package/dist/define-hook.js +1 -1
  6. package/dist/encryption.js +1 -1
  7. package/dist/events-consumer.d.ts.map +1 -1
  8. package/dist/events-consumer.js +10 -2
  9. package/dist/flushable-stream.js +1 -1
  10. package/dist/global.js +1 -1
  11. package/dist/index.js +1 -1
  12. package/dist/logger.js +1 -1
  13. package/dist/private.js +1 -1
  14. package/dist/runtime/constants.d.ts +1 -0
  15. package/dist/runtime/constants.d.ts.map +1 -1
  16. package/dist/runtime/constants.js +7 -2
  17. package/dist/runtime/helpers.d.ts +2 -2
  18. package/dist/runtime/helpers.d.ts.map +1 -1
  19. package/dist/runtime/helpers.js +5 -5
  20. package/dist/runtime/resume-hook.js +1 -1
  21. package/dist/runtime/run.js +1 -1
  22. package/dist/runtime/runs.js +1 -1
  23. package/dist/runtime/start.js +9 -3
  24. package/dist/runtime/step-handler.d.ts.map +1 -1
  25. package/dist/runtime/step-handler.js +6 -5
  26. package/dist/runtime/suspension-handler.js +1 -1
  27. package/dist/runtime/world.d.ts +1 -1
  28. package/dist/runtime/world.d.ts.map +1 -1
  29. package/dist/runtime/world.js +2 -1
  30. package/dist/runtime.d.ts.map +1 -1
  31. package/dist/runtime.js +16 -8
  32. package/dist/schemas.js +1 -1
  33. package/dist/serialization-format.js +1 -1
  34. package/dist/serialization.js +1 -1
  35. package/dist/sleep.js +1 -1
  36. package/dist/source-map.js +1 -1
  37. package/dist/step/context-storage.js +1 -1
  38. package/dist/step/get-closure-vars.js +1 -1
  39. package/dist/step/get-step-metadata.js +1 -1
  40. package/dist/step/get-workflow-metadata.js +1 -1
  41. package/dist/step/writable-stream.js +1 -1
  42. package/dist/step.js +1 -1
  43. package/dist/symbols.js +1 -1
  44. package/dist/telemetry/semantic-conventions.js +1 -1
  45. package/dist/telemetry.js +1 -1
  46. package/dist/types.js +1 -1
  47. package/dist/util.js +1 -1
  48. package/dist/version.d.ts +1 -1
  49. package/dist/version.js +2 -2
  50. package/dist/vm/index.js +1 -1
  51. package/dist/vm/uint8array-base64.js +1 -1
  52. package/dist/vm/uuid.js +1 -1
  53. package/dist/workflow/create-hook.js +1 -1
  54. package/dist/workflow/define-hook.js +1 -1
  55. package/dist/workflow/get-workflow-metadata.js +1 -1
  56. package/dist/workflow/hook.js +1 -1
  57. package/dist/workflow/index.js +1 -1
  58. package/dist/workflow/sleep.js +1 -1
  59. package/dist/workflow/writable-stream.js +1 -1
  60. package/dist/workflow.js +1 -1
  61. package/package.json +7 -7
@@ -1466,4 +1466,4 @@ export async function hydrateStepReturnValue(value, _runId, key, global = global
1466
1466
  }
1467
1467
  throw new Error(`Unsupported serialization format: ${format}`);
1468
1468
  }
1469
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJpYWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDakUsT0FBTyxFQUNMLE9BQU8sSUFBSSxhQUFhLEVBQ3hCLE9BQU8sSUFBSSxhQUFhLEdBRXpCLE1BQU0saUJBQWlCLENBQUM7QUFhekIsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLGdCQUFnQixHQUNqQixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIseUJBQXlCLEdBQzFCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLCtFQUErRTtBQUMvRSxxQ0FBcUM7QUFDckMsK0VBQStFO0FBQy9FLEVBQUU7QUFDRiw0RUFBNEU7QUFD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
1469
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJpYWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDakUsT0FBTyxFQUNMLE9BQU8sSUFBSSxhQUFhLEVBQ3hCLE9BQU8sSUFBSSxhQUFhLEdBRXpCLE1BQU0saUJBQWlCLENBQUM7QUFhekIsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLGdCQUFnQixHQUNqQixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIseUJBQXlCLEdBQzFCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLCtFQUErRTtBQUMvRSxxQ0FBcUM7QUFDckMsK0VBQStFO0FBQy9FLEVBQUU7QUFDRiw0RUFBNEU7QUFD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QixTQUE4QixVQUFVLEVBQ3hDLGdCQUFxRCxFQUFFO0lBRXZELG9CQUFvQjtJQUNwQixNQUFNLFNBQVMsR0FBRyxNQUFNLFlBQVksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFakQsMkVBQTJFO0lBQzNFLDBFQUEwRTtJQUMxRSw2QkFBNkI7SUFDN0IsSUFBSSxDQUFDLENBQUMsU0FBUyxZQUFZLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDdkMsT0FBTyxTQUFTLENBQUMsU0FBa0IsRUFBRTtZQUNuQyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztZQUM5QixHQUFHLGFBQWE7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFMUQsSUFBSSxNQUFNLEtBQUssbUJBQW1CLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDOUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsT0FBTyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ2hCLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1lBQzlCLEdBQUcsYUFBYTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZXMgfSBmcm9tICdub2RlOnV0aWwnO1xuaW1wb3J0IHsgV29ya2Zsb3dSdW50aW1lRXJyb3IgfSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzJztcbmltcG9ydCB7IFdPUktGTE9XX0RFU0VSSUFMSVpFLCBXT1JLRkxPV19TRVJJQUxJWkUgfSBmcm9tICdAd29ya2Zsb3cvc2VyZGUnO1xuaW1wb3J0IHsgRGV2YWx1ZUVycm9yLCBwYXJzZSwgc3RyaW5naWZ5LCB1bmZsYXR0ZW4gfSBmcm9tICdkZXZhbHVlJztcbmltcG9ydCB7IG1vbm90b25pY0ZhY3RvcnkgfSBmcm9tICd1bGlkJztcbmltcG9ydCB7IGdldFNlcmlhbGl6YXRpb25DbGFzcyB9IGZyb20gJy4vY2xhc3Mtc2VyaWFsaXphdGlvbi5qcyc7XG5pbXBvcnQge1xuICBkZWNyeXB0IGFzIGFlc0djbURlY3J5cHQsXG4gIGVuY3J5cHQgYXMgYWVzR2NtRW5jcnlwdCxcbiAgdHlwZSBDcnlwdG9LZXksXG59IGZyb20gJy4vZW5jcnlwdGlvbi5qcyc7XG5cbi8qKlxuICogRW5jcnlwdGlvbiBrZXkgcGFyYW1ldGVyIHR5cGUuIEFjY2VwdHMgYSByZXNvbHZlZCBrZXksIHVuZGVmaW5lZCAobm8gZW5jcnlwdGlvbiksXG4gKiBvciBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBlaXRoZXIuIFRoaXMgYWxsb3dzIHN5bmNocm9ub3VzIGZ1bmN0aW9uIHNpZ25hdHVyZXNcbiAqIChlLmcuLCBnZXRSZWFkYWJsZSgpKSB0byB0aHJlYWQgdGhlIGtleSB0aHJvdWdoIHdpdGhvdXQgYXdhaXRpbmcgaXQg4oCUIHRoZSBwcm9taXNlXG4gKiBpcyByZXNvbHZlZCBsYXppbHkgaW5zaWRlIHRoZSBmaXJzdCBhc3luYyB0cmFuc2Zvcm0oKSBjYWxsLlxuICovXG5leHBvcnQgdHlwZSBFbmNyeXB0aW9uS2V5UGFyYW0gPVxuICB8IENyeXB0b0tleVxuICB8IHVuZGVmaW5lZFxuICB8IFByb21pc2U8Q3J5cHRvS2V5IHwgdW5kZWZpbmVkPjtcblxuaW1wb3J0IHtcbiAgY3JlYXRlRmx1c2hhYmxlU3RhdGUsXG4gIGZsdXNoYWJsZVBpcGUsXG4gIHBvbGxSZWFkYWJsZUxvY2ssXG4gIHBvbGxXcml0YWJsZUxvY2ssXG59IGZyb20gJy4vZmx1c2hhYmxlLXN0cmVhbS5qcyc7XG5pbXBvcnQgeyBydW50aW1lTG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXIuanMnO1xuaW1wb3J0IHsgZ2V0U3RlcEZ1bmN0aW9uIH0gZnJvbSAnLi9wcml2YXRlLmpzJztcbmltcG9ydCB7IGdldFdvcmxkIH0gZnJvbSAnLi9ydW50aW1lL3dvcmxkLmpzJztcbmltcG9ydCB7IGNvbnRleHRTdG9yYWdlIH0gZnJvbSAnLi9zdGVwL2NvbnRleHQtc3RvcmFnZS5qcyc7XG5pbXBvcnQge1xuICBCT0RZX0lOSVRfU1lNQk9MLFxuICBTVEFCTEVfVUxJRCxcbiAgU1RSRUFNX05BTUVfU1lNQk9MLFxuICBTVFJFQU1fVFlQRV9TWU1CT0wsXG4gIFdFQkhPT0tfUkVTUE9OU0VfV1JJVEFCTEUsXG59IGZyb20gJy4vc3ltYm9scy5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNlcmlhbGl6YXRpb24gRm9ybWF0IFByZWZpeCBTeXN0ZW1cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vXG4vLyBBbGwgc2VyaWFsaXplZCBwYXlsb2FkcyBhcmUgcHJlZml4ZWQgd2l0aCBhIDQtYnl0ZSBmb3JtYXQgaWRlbnRpZmllciB0aGF0XG4vLyBhbGxvd3MgdGhlIGNsaWVudCB0byBkZXRlcm1pbmUgaG93IHRvIGRlY29kZSB0aGUgcGF5bG9hZC4gVGhpcyBlbmFibGVzOlxuLy9cbi8vIDEuIFNlbGYtZGVzY3JpYmluZyBwYXlsb2FkcyAtIFRoZSBXb3JsZCBsYXllciBpcyBhZ25vc3RpYyB0byBzZXJpYWxpemF0aW9uIGZvcm1hdFxuLy8gMi4gR3JhZHVhbCBtaWdyYXRpb24gLSBPbGQgcnVucyBrZWVwIHdvcmtpbmcsIG5ldyBydW5zIGNhbiB1c2UgbmV3IGZvcm1hdHNcbi8vIDMuIENvbXBvc2FiaWxpdHkgLSBFbmNyeXB0aW9uIGNhbiB3cmFwIGFueSBmb3JtYXQgKGUuZy4sIFwiZW5jclwiIHdyYXBwaW5nIFwiZGV2bFwiKVxuLy8gNC4gRGVidWdnaW5nIC0gUmF3IGRhdGEgaW5zcGVjdGlvbiBpbW1lZGlhdGVseSByZXZlYWxzIHRoZSBmb3JtYXRcbi8vXG4vLyBGb3JtYXQ6IFs0IGJ5dGVzOiBmb3JtYXQgaWRlbnRpZmllcl1bcGF5bG9hZF1cbi8vXG4vLyBUaGUgNC1jaGFyYWN0ZXIgcHJlZml4IGNvbnZlbnRpb24gbWF0Y2hlcyBvdGhlciB3b3JrZmxvdyBJRHMgKHdydW4sIHN0ZXAsIHdhaXQsIGV0Yy4pXG4vL1xuLy8gQ3VycmVudCBmb3JtYXRzOlxuLy8gLSBcImRldmxcIiAtIGRldmFsdWUgc3RyaW5naWZ5L3BhcnNlIHdpdGggVGV4dEVuY29kZXIvVGV4dERlY29kZXIgKGN1cnJlbnQgZGVmYXVsdClcbi8vIC0gXCJlbmNyXCIgLSBFbmNyeXB0ZWQgcGF5bG9hZCAoaW5uZXIgcGF5bG9hZCBoYXMgaXRzIG93biBmb3JtYXQgcHJlZml4KVxuLy9cbi8vIEZ1dHVyZSBmb3JtYXRzIChyZXNlcnZlZCk6XG4vLyAtIFwiY2JvclwiIC0gQ0JPUiBiaW5hcnkgc2VyaWFsaXphdGlvblxuXG4vKipcbiAqIEtub3duIHNlcmlhbGl6YXRpb24gZm9ybWF0IGlkZW50aWZpZXJzLlxuICogRWFjaCBmb3JtYXQgSUQgaXMgZXhhY3RseSA0IEFTQ0lJIGNoYXJhY3RlcnMsIG1hdGNoaW5nIHRoZSBjb252ZW50aW9uXG4gKiB1c2VkIGZvciBvdGhlciB3b3JrZmxvdyBJRHMgKHdydW4sIHN0ZXAsIHdhaXQsIGV0Yy4pXG4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uRm9ybWF0ID0ge1xuICAvKiogZGV2YWx1ZSBzdHJpbmdpZnkvcGFyc2Ugd2l0aCBUZXh0RW5jb2Rlci9UZXh0RGVjb2RlciAqL1xuICBERVZBTFVFX1YxOiAnZGV2bCcsXG4gIC8qKiBFbmNyeXB0ZWQgcGF5bG9hZCAoaW5uZXIgcGF5bG9hZCBoYXMgaXRzIG93biBmb3JtYXQgcHJlZml4KSAqL1xuICBFTkNSWVBURUQ6ICdlbmNyJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFNlcmlhbGl6YXRpb25Gb3JtYXRUeXBlID1cbiAgKHR5cGVvZiBTZXJpYWxpemF0aW9uRm9ybWF0KVtrZXlvZiB0eXBlb2YgU2VyaWFsaXphdGlvbkZvcm1hdF07XG5cbi8qKiBMZW5ndGggb2YgdGhlIGZvcm1hdCBwcmVmaXggaW4gYnl0ZXMgKi9cbmNvbnN0IEZPUk1BVF9QUkVGSVhfTEVOR1RIID0gNDtcblxuLyoqIFRleHRFbmNvZGVyIGluc3RhbmNlIGZvciBmb3JtYXQgcHJlZml4IGVuY29kaW5nICovXG5jb25zdCBmb3JtYXRFbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG5cbi8qKiBUZXh0RGVjb2RlciBpbnN0YW5jZSBmb3IgZm9ybWF0IHByZWZpeCBkZWNvZGluZyAqL1xuY29uc3QgZm9ybWF0RGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpO1xuXG4vKipcbiAqIEVuY29kZSBhIHBheWxvYWQgd2l0aCBhIGZvcm1hdCBwcmVmaXguXG4gKlxuICogQHBhcmFtIGZvcm1hdCAtIFRoZSBmb3JtYXQgaWRlbnRpZmllciAobXVzdCBiZSBleGFjdGx5IDQgQVNDSUkgY2hhcmFjdGVycylcbiAqIEBwYXJhbSBwYXlsb2FkIC0gVGhlIHNlcmlhbGl6ZWQgcGF5bG9hZCBieXRlc1xuICogQHJldHVybnMgQSBuZXcgVWludDhBcnJheSB3aXRoIGZvcm1hdCBwcmVmaXggcHJlcGVuZGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVXaXRoRm9ybWF0UHJlZml4KFxuICBmb3JtYXQ6IFNlcmlhbGl6YXRpb25Gb3JtYXRUeXBlLFxuICBwYXlsb2FkOiBVaW50OEFycmF5IHwgdW5rbm93blxuKTogVWludDhBcnJheSB8IHVua25vd24ge1xuICBpZiAoIShwYXlsb2FkIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHtcbiAgICByZXR1cm4gcGF5bG9hZDtcbiAgfVxuXG4gIGNvbnN0IHByZWZpeEJ5dGVzID0gZm9ybWF0RW5jb2Rlci5lbmNvZGUoZm9ybWF0KTtcbiAgaWYgKHByZWZpeEJ5dGVzLmxlbmd0aCAhPT0gRk9STUFUX1BSRUZJWF9MRU5HVEgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgRm9ybWF0IGlkZW50aWZpZXIgbXVzdCBiZSBleGFjdGx5ICR7Rk9STUFUX1BSRUZJWF9MRU5HVEh9IEFTQ0lJIGNoYXJhY3RlcnMsIGdvdCBcIiR7Zm9ybWF0fVwiICgke3ByZWZpeEJ5dGVzLmxlbmd0aH0gYnl0ZXMpYFxuICAgICk7XG4gIH1cblxuICBjb25zdCByZXN1bHQgPSBuZXcgVWludDhBcnJheShGT1JNQVRfUFJFRklYX0xFTkdUSCArIHBheWxvYWQubGVuZ3RoKTtcbiAgcmVzdWx0LnNldChwcmVmaXhCeXRlcywgMCk7XG4gIHJlc3VsdC5zZXQocGF5bG9hZCwgRk9STUFUX1BSRUZJWF9MRU5HVEgpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFBlZWsgYXQgdGhlIGZvcm1hdCBwcmVmaXggd2l0aG91dCBjb25zdW1pbmcgaXQuXG4gKiBVc2VmdWwgZm9yIGNoZWNraW5nIGlmIGRhdGEgaXMgZW5jcnlwdGVkIGJlZm9yZSBkZWNpZGluZyBob3cgdG8gcHJvY2VzcyBpdC5cbiAqXG4gKiBAcGFyYW0gZGF0YSAtIFRoZSBmb3JtYXQtcHJlZml4ZWQgZGF0YVxuICogQHJldHVybnMgVGhlIGZvcm1hdCBpZGVudGlmaWVyLCBvciBudWxsIGlmIGRhdGEgaXMgbGVnYWN5L25vbi1iaW5hcnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBlZWtGb3JtYXRQcmVmaXgoXG4gIGRhdGE6IFVpbnQ4QXJyYXkgfCB1bmtub3duXG4pOiBTZXJpYWxpemF0aW9uRm9ybWF0VHlwZSB8IG51bGwge1xuICBpZiAoIShkYXRhIGluc3RhbmNlb2YgVWludDhBcnJheSkgfHwgZGF0YS5sZW5ndGggPCBGT1JNQVRfUFJFRklYX0xFTkdUSCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IHByZWZpeEJ5dGVzID0gZGF0YS5zdWJhcnJheSgwLCBGT1JNQVRfUFJFRklYX0xFTkdUSCk7XG4gIGNvbnN0IGZvcm1hdCA9IGZvcm1hdERlY29kZXIuZGVjb2RlKHByZWZpeEJ5dGVzKTtcbiAgY29uc3Qga25vd25Gb3JtYXRzID0gT2JqZWN0LnZhbHVlcyhTZXJpYWxpemF0aW9uRm9ybWF0KSBhcyBzdHJpbmdbXTtcbiAgaWYgKCFrbm93bkZvcm1hdHMuaW5jbHVkZXMoZm9ybWF0KSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBmb3JtYXQgYXMgU2VyaWFsaXphdGlvbkZvcm1hdFR5cGU7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgZGF0YSBpcyBlbmNyeXB0ZWQgKGhhcyAnZW5jcicgZm9ybWF0IHByZWZpeCkuXG4gKlxuICogQHBhcmFtIGRhdGEgLSBUaGUgZm9ybWF0LXByZWZpeGVkIGRhdGFcbiAqIEByZXR1cm5zIHRydWUgaWYgZGF0YSBoYXMgdGhlIGVuY3J5cHRlZCBmb3JtYXQgcHJlZml4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0VuY3J5cHRlZChkYXRhOiBVaW50OEFycmF5IHwgdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gcGVla0Zvcm1hdFByZWZpeChkYXRhKSA9PT0gU2VyaWFsaXphdGlvbkZvcm1hdC5FTkNSWVBURUQ7XG59XG5cbi8qKlxuICogRGVjb2RlIGEgZm9ybWF0LXByZWZpeGVkIHBheWxvYWQuXG4gKlxuICogQHBhcmFtIGRhdGEgLSBUaGUgZm9ybWF0LXByZWZpeGVkIGRhdGFcbiAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIHRoZSBmb3JtYXQgaWRlbnRpZmllciBhbmQgcGF5bG9hZFxuICogQHRocm93cyBFcnJvciBpZiB0aGUgZGF0YSBpcyB0b28gc2hvcnQgb3IgaGFzIGFuIHVua25vd24gZm9ybWF0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVGb3JtYXRQcmVmaXgoZGF0YTogVWludDhBcnJheSB8IHVua25vd24pOiB7XG4gIGZvcm1hdDogU2VyaWFsaXphdGlvbkZvcm1hdFR5cGU7XG4gIHBheWxvYWQ6IFVpbnQ4QXJyYXk7XG59IHtcbiAgLy8gQ29tcGF0IGZvciBsZWdhY3kgc3BlY1ZlcnNpb24gMSBydW5zIHRoYXQgZG9uJ3QgaGF2ZSBhIGZvcm1hdCBwcmVmaXgsXG4gIC8vIGFuZCBkb24ndCBoYXZlIGEgYmluYXJ5IHBheWxvYWRcbiAgaWYgKCEoZGF0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvcm1hdDogU2VyaWFsaXphdGlvbkZvcm1hdC5ERVZBTFVFX1YxLFxuICAgICAgcGF5bG9hZDogbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKEpTT04uc3RyaW5naWZ5KGRhdGEpKSxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGRhdGEubGVuZ3RoIDwgRk9STUFUX1BSRUZJWF9MRU5HVEgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgRGF0YSB0b28gc2hvcnQgdG8gY29udGFpbiBmb3JtYXQgcHJlZml4OiBleHBlY3RlZCBhdCBsZWFzdCAke0ZPUk1BVF9QUkVGSVhfTEVOR1RIfSBieXRlcywgZ290ICR7ZGF0YS5sZW5ndGh9YFxuICAgICk7XG4gIH1cblxuICBjb25zdCBwcmVmaXhCeXRlcyA9IGRhdGEuc3ViYXJyYXkoMCwgRk9STUFUX1BSRUZJWF9MRU5HVEgpO1xuICBjb25zdCBmb3JtYXQgPSBmb3JtYXREZWNvZGVyLmRlY29kZShwcmVmaXhCeXRlcyk7XG5cbiAgLy8gVmFsaWRhdGUgdGhlIGZvcm1hdCBpcyBrbm93blxuICBjb25zdCBrbm93bkZvcm1hdHMgPSBPYmplY3QudmFsdWVzKFNlcmlhbGl6YXRpb25Gb3JtYXQpIGFzIHN0cmluZ1tdO1xuICBpZiAoIWtub3duRm9ybWF0cy5pbmNsdWRlcyhmb3JtYXQpKSB7XG4gICAgdGhyb3cgbmV3IFdvcmtmbG93UnVudGltZUVycm9yKFxuICAgICAgYFVua25vd24gc2VyaWFsaXphdGlvbiBmb3JtYXQ6IFwiJHtmb3JtYXR9XCIuIEtub3duIGZvcm1hdHM6ICR7a25vd25Gb3JtYXRzLmpvaW4oJywgJyl9YFxuICAgICk7XG4gIH1cblxuICBjb25zdCBwYXlsb2FkID0gZGF0YS5zdWJhcnJheShGT1JNQVRfUFJFRklYX0xFTkdUSCk7XG4gIHJldHVybiB7IGZvcm1hdDogZm9ybWF0IGFzIFNlcmlhbGl6YXRpb25Gb3JtYXRUeXBlLCBwYXlsb2FkIH07XG59XG5cbi8qKlxuICogRGVmYXVsdCBVTElEIGdlbmVyYXRvciBmb3IgY29udGV4dHMgd2hlcmUgVk0ncyBzZWVkZWQgYHN0YWJsZVVsaWRgIGlzbid0IGF2YWlsYWJsZS5cbiAqIFVzZWQgYXMgYSBmYWxsYmFjayB3aGVuIHNlcmlhbGl6aW5nIHN0cmVhbXMgb3V0c2lkZSB0aGUgd29ya2Zsb3cgVk0gY29udGV4dFxuICogKGUuZy4sIHdoZW4gc3RhcnRpbmcgYSB3b3JrZmxvdyBvciBoYW5kbGluZyBzdGVwIHJldHVybiB2YWx1ZXMpLlxuICovXG5jb25zdCBkZWZhdWx0VWxpZCA9IG1vbm90b25pY0ZhY3RvcnkoKTtcblxuLyoqXG4gKiBGb3JtYXQgYSBzZXJpYWxpemF0aW9uIGVycm9yIHdpdGggY29udGV4dCBhYm91dCB3aGF0IGZhaWxlZC5cbiAqIEV4dHJhY3RzIHBhdGgsIHZhbHVlLCBhbmQgcmVhc29uIGZyb20gZGV2YWx1ZSdzIERldmFsdWVFcnJvciB3aGVuIGF2YWlsYWJsZS5cbiAqIExvZ3MgdGhlIHByb2JsZW1hdGljIHZhbHVlIHRvIHRoZSBjb25zb2xlIGZvciBiZXR0ZXIgZGVidWdnaW5nLlxuICovXG5mdW5jdGlvbiBmb3JtYXRTZXJpYWxpemF0aW9uRXJyb3IoY29udGV4dDogc3RyaW5nLCBlcnJvcjogdW5rbm93bik6IHN0cmluZyB7XG4gIC8vIFVzZSBcInJldHVybmluZ1wiIGZvciByZXR1cm4gdmFsdWVzLCBcInBhc3NpbmdcIiBmb3IgYXJndW1lbnRzL2lucHV0c1xuICBjb25zdCB2ZXJiID0gY29udGV4dC5pbmNsdWRlcygncmV0dXJuIHZhbHVlJykgPyAncmV0dXJuaW5nJyA6ICdwYXNzaW5nJztcblxuICAvLyBCdWlsZCB0aGUgZXJyb3IgbWVzc2FnZSB3aXRoIHBhdGggaW5mbyBpZiBhdmFpbGFibGUgZnJvbSBEZXZhbHVlRXJyb3JcbiAgbGV0IG1lc3NhZ2UgPSBgRmFpbGVkIHRvIHNlcmlhbGl6ZSAke2NvbnRleHR9YDtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRGV2YWx1ZUVycm9yICYmIGVycm9yLnBhdGgpIHtcbiAgICBtZXNzYWdlICs9IGAgYXQgcGF0aCBcIiR7ZXJyb3IucGF0aH1cImA7XG4gIH1cbiAgbWVzc2FnZSArPSBgLiBFbnN1cmUgeW91J3JlICR7dmVyYn0gc2VyaWFsaXphYmxlIHR5cGVzIChwbGFpbiBvYmplY3RzLCBhcnJheXMsIHByaW1pdGl2ZXMsIERhdGUsIFJlZ0V4cCwgTWFwLCBTZXQpLmA7XG5cbiAgLy8gTG9nIHRoZSBwcm9ibGVtYXRpYyB2YWx1ZSBmb3IgZGVidWdnaW5nXG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIERldmFsdWVFcnJvciAmJiBlcnJvci52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcnVudGltZUxvZ2dlci5lcnJvcignU2VyaWFsaXphdGlvbiBmYWlsZWQnLCB7XG4gICAgICBjb250ZXh0LFxuICAgICAgcHJvYmxlbWF0aWNWYWx1ZTogZXJyb3IudmFsdWUsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbWVzc2FnZTtcbn1cblxuLyoqXG4gKiBEZXRlY3QgaWYgYSByZWFkYWJsZSBzdHJlYW0gaXMgYSBieXRlIHN0cmVhbS5cbiAqXG4gKiBAcGFyYW0gc3RyZWFtXG4gKiBAcmV0dXJucyBgXCJieXRlc1wiYCBpZiB0aGUgc3RyZWFtIGlzIGEgYnl0ZSBzdHJlYW0sIGB1bmRlZmluZWRgIG90aGVyd2lzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RyZWFtVHlwZShzdHJlYW06IFJlYWRhYmxlU3RyZWFtKTogJ2J5dGVzJyB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTtcbiAgICByZWFkZXIucmVsZWFzZUxvY2soKTtcbiAgICByZXR1cm4gJ2J5dGVzJztcbiAgfSBjYXRjaCB7fVxufVxuXG4vKipcbiAqIEZyYW1lIGZvcm1hdCBmb3Igc3RyZWFtIGNodW5rczpcbiAqICAgWzQtYnl0ZSBiaWctZW5kaWFuIGxlbmd0aF1bZm9ybWF0LXByZWZpeGVkIHBheWxvYWRdXG4gKlxuICogRWFjaCBjaHVuayBpcyBpbmRlcGVuZGVudGx5IGZyYW1lZCBzbyB0aGUgZGVzZXJpYWxpemVyIGNhbiBmaW5kXG4gKiBjaHVuayBib3VuZGFyaWVzIGV2ZW4gd2hlbiBtdWx0aXBsZSBjaHVua3MgYXJlIGNvbmNhdGVuYXRlZCBvclxuICogc3BsaXQgYWNyb3NzIHRyYW5zcG9ydCByZWFkcy5cbiAqL1xuY29uc3QgRlJBTUVfSEVBREVSX1NJWkUgPSA0O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VyaWFsaXplU3RyZWFtKFxuICByZWR1Y2VyczogUmVkdWNlcnMsXG4gIGNyeXB0b0tleTogRW5jcnlwdGlvbktleVBhcmFtXG4pOiBUcmFuc2Zvcm1TdHJlYW08YW55LCBVaW50OEFycmF5PiB7XG4gIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbiAgLy8gUmVzb2x2ZSB0aGUga2V5IHByb21pc2Ugb25jZSBvbiBmaXJzdCB1c2UgYW5kIGNhY2hlIHRoZSByZXN1bHQuXG4gIC8vIE5vdGU6IGlmIHRoZSBjcnlwdG9LZXkgcHJvbWlzZSByZWplY3RzIChlLmcuLCBuZXR3b3JrIGVycm9yIGZldGNoaW5nXG4gIC8vIHRoZSBkZXJpdmVkIGtleSksIHRoZSByZWplY3Rpb24gd29uJ3Qgc3VyZmFjZSB1bnRpbCB0aGUgZmlyc3QgY2h1bmtcbiAgLy8gaXMgcHJvY2Vzc2VkIOKAlCBub3QgYXQgc3RyZWFtIGNvbnN0cnVjdGlvbiB0aW1lLlxuICBjb25zdCBrZXlTdGF0ZSA9IHsgcmVzb2x2ZWQ6IGZhbHNlLCBrZXk6IHVuZGVmaW5lZCBhcyBDcnlwdG9LZXkgfCB1bmRlZmluZWQgfTtcbiAgY29uc3Qgc3RyZWFtID0gbmV3IFRyYW5zZm9ybVN0cmVhbTxhbnksIFVpbnQ4QXJyYXk+KHtcbiAgICBhc3luYyB0cmFuc2Zvcm0oY2h1bmssIGNvbnRyb2xsZXIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICgha2V5U3RhdGUucmVzb2x2ZWQpIHtcbiAgICAgICAgICBrZXlTdGF0ZS5rZXkgPSBhd2FpdCBjcnlwdG9LZXk7XG4gICAgICAgICAga2V5U3RhdGUucmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBzdHJpbmdpZnkoY2h1bmssIHJlZHVjZXJzKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IGVuY29kZXIuZW5jb2RlKHNlcmlhbGl6ZWQpO1xuICAgICAgICBsZXQgcHJlZml4ZWQgPSBlbmNvZGVXaXRoRm9ybWF0UHJlZml4KFxuICAgICAgICAgIFNlcmlhbGl6YXRpb25Gb3JtYXQuREVWQUxVRV9WMSxcbiAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICkgYXMgVWludDhBcnJheTtcblxuICAgICAgICAvLyBFbmNyeXB0IHRoZSBmcmFtZSBwYXlsb2FkIGlmIGEga2V5IGlzIHByb3ZpZGVkLlxuICAgICAgICAvLyBUaGUgbGVuZ3RoIGhlYWRlciByZW1haW5zIGluIHRoZSBjbGVhciBzbyB0aGUgZGVzZXJpYWxpemVyIGNhblxuICAgICAgICAvLyBmaW5kIGZyYW1lIGJvdW5kYXJpZXMgcmVnYXJkbGVzcyBvZiB0cmFuc3BvcnQgY2h1bmtpbmcuXG4gICAgICAgIGlmIChrZXlTdGF0ZS5rZXkpIHtcbiAgICAgICAgICBjb25zdCBlbmNyeXB0ZWQgPSBhd2FpdCBhZXNHY21FbmNyeXB0KGtleVN0YXRlLmtleSwgcHJlZml4ZWQpO1xuICAgICAgICAgIHByZWZpeGVkID0gZW5jb2RlV2l0aEZvcm1hdFByZWZpeChcbiAgICAgICAgICAgIFNlcmlhbGl6YXRpb25Gb3JtYXQuRU5DUllQVEVELFxuICAgICAgICAgICAgZW5jcnlwdGVkXG4gICAgICAgICAgKSBhcyBVaW50OEFycmF5O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV3JpdGUgbGVuZ3RoLXByZWZpeGVkIGZyYW1lOiBbNC1ieXRlIGxlbmd0aF1bcHJlZml4ZWQgZGF0YV1cbiAgICAgICAgY29uc3QgZnJhbWUgPSBuZXcgVWludDhBcnJheShGUkFNRV9IRUFERVJfU0laRSArIHByZWZpeGVkLmxlbmd0aCk7XG4gICAgICAgIG5ldyBEYXRhVmlldyhmcmFtZS5idWZmZXIpLnNldFVpbnQzMigwLCBwcmVmaXhlZC5sZW5ndGgsIGZhbHNlKTtcbiAgICAgICAgZnJhbWUuc2V0KHByZWZpeGVkLCBGUkFNRV9IRUFERVJfU0laRSk7XG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShmcmFtZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb250cm9sbGVyLmVycm9yKFxuICAgICAgICAgIG5ldyBXb3JrZmxvd1J1bnRpbWVFcnJvcihcbiAgICAgICAgICAgIGZvcm1hdFNlcmlhbGl6YXRpb25FcnJvcignc3RyZWFtIGNodW5rJywgZXJyb3IpLFxuICAgICAgICAgICAgeyBzbHVnOiAnc2VyaWFsaXphdGlvbi1mYWlsZWQnLCBjYXVzZTogZXJyb3IgfVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcbiAgcmV0dXJuIHN0cmVhbTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlc2VyaWFsaXplU3RyZWFtKFxuICByZXZpdmVyczogUmV2aXZlcnMsXG4gIGNyeXB0b0tleTogRW5jcnlwdGlvbktleVBhcmFtXG4pOiBUcmFuc2Zvcm1TdHJlYW08VWludDhBcnJheSwgYW55PiB7XG4gIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTtcbiAgbGV0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDApO1xuICAvLyBSZXNvbHZlIHRoZSBrZXkgcHJvbWlzZSBvbmNlIG9uIGZpcnN0IHVzZSBhbmQgY2FjaGUgdGhlIHJlc3VsdC5cbiAgY29uc3Qga2V5U3RhdGUgPSB7IHJlc29sdmVkOiBmYWxzZSwga2V5OiB1bmRlZmluZWQgYXMgQ3J5cHRvS2V5IHwgdW5kZWZpbmVkIH07XG5cbiAgZnVuY3Rpb24gYXBwZW5kVG9CdWZmZXIoZGF0YTogVWludDhBcnJheSkge1xuICAgIGNvbnN0IG5ld0J1ZmZlciA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlci5sZW5ndGggKyBkYXRhLmxlbmd0aCk7XG4gICAgbmV3QnVmZmVyLnNldChidWZmZXIsIDApO1xuICAgIG5ld0J1ZmZlci5zZXQoZGF0YSwgYnVmZmVyLmxlbmd0aCk7XG4gICAgYnVmZmVyID0gbmV3QnVmZmVyO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0ZyYW1lcyhcbiAgICBjb250cm9sbGVyOiBUcmFuc2Zvcm1TdHJlYW1EZWZhdWx0Q29udHJvbGxlcjxhbnk+XG4gICkge1xuICAgIC8vIFJlc29sdmUgdGhlIGtleSBwcm9taXNlIG9uY2Ugb24gZmlyc3QgdXNlIGFuZCBjYWNoZSB0aGUgcmVzdWx0XG4gICAgaWYgKCFrZXlTdGF0ZS5yZXNvbHZlZCkge1xuICAgICAga2V5U3RhdGUua2V5ID0gYXdhaXQgY3J5cHRvS2V5O1xuICAgICAga2V5U3RhdGUucmVzb2x2ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIFRyeSB0byBleHRyYWN0IGNvbXBsZXRlIGxlbmd0aC1wcmVmaXhlZCBmcmFtZXNcbiAgICB3aGlsZSAoYnVmZmVyLmxlbmd0aCA+PSBGUkFNRV9IRUFERVJfU0laRSkge1xuICAgICAgY29uc3QgZnJhbWVMZW5ndGggPSBuZXcgRGF0YVZpZXcoXG4gICAgICAgIGJ1ZmZlci5idWZmZXIsXG4gICAgICAgIGJ1ZmZlci5ieXRlT2Zmc2V0LFxuICAgICAgICBidWZmZXIuYnl0ZUxlbmd0aFxuICAgICAgKS5nZXRVaW50MzIoMCwgZmFsc2UpO1xuXG4gICAgICBpZiAoYnVmZmVyLmxlbmd0aCA8IEZSQU1FX0hFQURFUl9TSVpFICsgZnJhbWVMZW5ndGgpIHtcbiAgICAgICAgYnJlYWs7IC8vIEluY29tcGxldGUgZnJhbWUsIHdhaXQgZm9yIG1vcmUgZGF0YVxuICAgICAgfVxuXG4gICAgICBjb25zdCBmcmFtZURhdGEgPSBidWZmZXIuc2xpY2UoXG4gICAgICAgIEZSQU1FX0hFQURFUl9TSVpFLFxuICAgICAgICBGUkFNRV9IRUFERVJfU0laRSArIGZyYW1lTGVuZ3RoXG4gICAgICApO1xuICAgICAgYnVmZmVyID0gYnVmZmVyLnNsaWNlKEZSQU1FX0hFQURFUl9TSVpFICsgZnJhbWVMZW5ndGgpO1xuXG4gICAgICBsZXQgeyBmb3JtYXQsIHBheWxvYWQgfSA9IGRlY29kZUZvcm1hdFByZWZpeChmcmFtZURhdGEpO1xuXG4gICAgICAvLyBJZiB0aGUgZnJhbWUgcGF5bG9hZCBpcyBlbmNyeXB0ZWQsIGRlY3J5cHQgaXQgZmlyc3QgdG8gcmV2ZWFsXG4gICAgICAvLyB0aGUgaW5uZXIgZm9ybWF0LXByZWZpeGVkIGRhdGEgKGUuZy4sICdkZXZsJyArIHNlcmlhbGl6ZWQgdGV4dCksXG4gICAgICAvLyB0aGVuIGZhbGwgdGhyb3VnaCB0byB0aGUgbm9ybWFsIGRlc2VyaWFsaXphdGlvbiBwYXRoLlxuICAgICAgaWYgKGZvcm1hdCA9PT0gU2VyaWFsaXphdGlvbkZvcm1hdC5FTkNSWVBURUQpIHtcbiAgICAgICAgaWYgKCFrZXlTdGF0ZS5rZXkpIHtcbiAgICAgICAgICBjb250cm9sbGVyLmVycm9yKFxuICAgICAgICAgICAgbmV3IFdvcmtmbG93UnVudGltZUVycm9yKFxuICAgICAgICAgICAgICAnRW5jcnlwdGVkIHN0cmVhbSBkYXRhIGVuY291bnRlcmVkIGJ1dCBubyBlbmNyeXB0aW9uIGtleSBpcyBhdmFpbGFibGUuICcgK1xuICAgICAgICAgICAgICAgICdFbmNyeXB0aW9uIGlzIG5vdCBjb25maWd1cmVkIG9yIG5vIGtleSB3YXMgcHJvdmlkZWQgZm9yIHRoaXMgcnVuLidcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkZWNyeXB0ZWQgPSBhd2FpdCBhZXNHY21EZWNyeXB0KGtleVN0YXRlLmtleSwgcGF5bG9hZCk7XG4gICAgICAgICh7IGZvcm1hdCwgcGF5bG9hZCB9ID0gZGVjb2RlRm9ybWF0UHJlZml4KGRlY3J5cHRlZCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZm9ybWF0ID09PSBTZXJpYWxpemF0aW9uRm9ybWF0LkRFVkFMVUVfVjEpIHtcbiAgICAgICAgY29uc3QgdGV4dCA9IGRlY29kZXIuZGVjb2RlKHBheWxvYWQpO1xuICAgICAgICBjb250cm9sbGVyLmVucXVldWUocGFyc2UodGV4dCwgcmV2aXZlcnMpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzdHJlYW0gPSBuZXcgVHJhbnNmb3JtU3RyZWFtPFVpbnQ4QXJyYXksIGFueT4oe1xuICAgIGFzeW5jIHRyYW5zZm9ybShjaHVuaywgY29udHJvbGxlcikge1xuICAgICAgLy8gRmlyc3QsIHRyeSB0byBkZXRlY3QgaWYgdGhpcyBpcyBsZW5ndGgtcHJlZml4ZWQgZnJhbWVkIGRhdGFcbiAgICAgIC8vIGJ5IGNoZWNraW5nIGlmIHRoZSBmaXJzdCA0IGJ5dGVzIGZvcm0gYSBwbGF1c2libGUgbGVuZ3RoLlxuICAgICAgaWYgKGJ1ZmZlci5sZW5ndGggPT09IDAgJiYgY2h1bmsubGVuZ3RoID49IEZSQU1FX0hFQURFUl9TSVpFKSB7XG4gICAgICAgIGNvbnN0IHBvc3NpYmxlTGVuZ3RoID0gbmV3IERhdGFWaWV3KFxuICAgICAgICAgIGNodW5rLmJ1ZmZlcixcbiAgICAgICAgICBjaHVuay5ieXRlT2Zmc2V0LFxuICAgICAgICAgIGNodW5rLmJ5dGVMZW5ndGhcbiAgICAgICAgKS5nZXRVaW50MzIoMCwgZmFsc2UpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcG9zc2libGVMZW5ndGggPiAwICYmXG4gICAgICAgICAgcG9zc2libGVMZW5ndGggPCAxMDBfMDAwXzAwMCAvLyBzYW5pdHkgY2hlY2s6IDwgMTAwTUJcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gTG9va3MgbGlrZSBmcmFtZWQgZGF0YVxuICAgICAgICAgIGFwcGVuZFRvQnVmZmVyKGNodW5rKTtcbiAgICAgICAgICBhd2FpdCBwcm9jZXNzRnJhbWVzKGNvbnRyb2xsZXIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChidWZmZXIubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyBBbHJlYWR5IGluIGZyYW1lZCBtb2RlIChoYXZlIGJ1ZmZlcmVkIGRhdGEpXG4gICAgICAgIGFwcGVuZFRvQnVmZmVyKGNodW5rKTtcbiAgICAgICAgYXdhaXQgcHJvY2Vzc0ZyYW1lcyhjb250cm9sbGVyKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBMZWdhY3kgZm9ybWF0OiBuZXdsaW5lLWRlbGltaXRlZCBkZXZhbHVlIHRleHQgKG5vIGZyYW1pbmcpXG4gICAgICBjb25zdCB0ZXh0ID0gZGVjb2Rlci5kZWNvZGUoY2h1bmspO1xuICAgICAgY29uc3QgbGluZXMgPSB0ZXh0LnNwbGl0KCdcXG4nKTtcbiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgICBpZiAobGluZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHBhcnNlKGxpbmUsIHJldml2ZXJzKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIGZsdXNoKGNvbnRyb2xsZXIpIHtcbiAgICAgIC8vIFByb2Nlc3MgYW55IHJlbWFpbmluZyBmcmFtZWQgZGF0YVxuICAgICAgaWYgKGJ1ZmZlci5sZW5ndGggPiAwKSB7XG4gICAgICAgIGF3YWl0IHByb2Nlc3NGcmFtZXMoY29udHJvbGxlcik7XG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG4gIHJldHVybiBzdHJlYW07XG59XG5cbmV4cG9ydCBjbGFzcyBXb3JrZmxvd1NlcnZlclJlYWRhYmxlU3RyZWFtIGV4dGVuZHMgUmVhZGFibGVTdHJlYW08VWludDhBcnJheT4ge1xuICAjcmVhZGVyPzogUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyPFVpbnQ4QXJyYXk+O1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgc3RhcnRJbmRleD86IG51bWJlcikge1xuICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycgfHwgbmFtZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgXCJuYW1lXCIgaXMgcmVxdWlyZWQsIGdvdCBcIiR7bmFtZX1cImApO1xuICAgIH1cbiAgICBzdXBlcih7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIE5vdCBzdXJlIHdoeSBUeXBlU2NyaXB0IGlzIGNvbXBsYWluaW5nIGFib3V0IHRoaXNcbiAgICAgIHR5cGU6ICdieXRlcycsXG5cbiAgICAgIHB1bGw6IGFzeW5jIChjb250cm9sbGVyKSA9PiB7XG4gICAgICAgIGxldCByZWFkZXIgPSB0aGlzLiNyZWFkZXI7XG4gICAgICAgIGlmICghcmVhZGVyKSB7XG4gICAgICAgICAgY29uc3Qgd29ybGQgPSBnZXRXb3JsZCgpO1xuICAgICAgICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IHdvcmxkLnJlYWRGcm9tU3RyZWFtKG5hbWUsIHN0YXJ0SW5kZXgpO1xuICAgICAgICAgIHJlYWRlciA9IHRoaXMuI3JlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJlYWRlcikge1xuICAgICAgICAgIGNvbnRyb2xsZXIuZXJyb3IobmV3IEVycm9yKCdGYWlsZWQgdG8gZ2V0IHJlYWRlcicpKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWFkZXIucmVhZCgpO1xuICAgICAgICBpZiAocmVzdWx0LmRvbmUpIHtcbiAgICAgICAgICB0aGlzLiNyZWFkZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEZvcndhcmQgcmF3IGJ5dGVzOyBlbmNyeXB0aW9uL2RlY3J5cHRpb24gaXMgaGFuZGxlZCBhdCB0aGVcbiAgICAgICAgICAvLyBmcmFtaW5nIGxldmVsIGJ5IGdldFNlcmlhbGl6ZVN0cmVhbS9nZXREZXNlcmlhbGl6ZVN0cmVhbS5cbiAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGNhbmNlbDogYXN5bmMgKHJlYXNvbikgPT4ge1xuICAgICAgICBpZiAodGhpcy4jcmVhZGVyKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy4jcmVhZGVyLmNhbmNlbChyZWFzb24pLmNhdGNoKCgpID0+IHt9KTtcbiAgICAgICAgICB0aGlzLiNyZWFkZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBEZWZhdWx0IGZsdXNoIGludGVydmFsIGluIG1pbGxpc2Vjb25kcyBmb3IgYnVmZmVyZWQgc3RyZWFtIHdyaXRlcy5cbiAqIENodW5rcyBhcmUgYWNjdW11bGF0ZWQgYW5kIGZsdXNoZWQgdG9nZXRoZXIgdG8gcmVkdWNlIG5ldHdvcmsgb3ZlcmhlYWQuXG4gKi9cbmNvbnN0IFNUUkVBTV9GTFVTSF9JTlRFUlZBTF9NUyA9IDEwO1xuXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dTZXJ2ZXJXcml0YWJsZVN0cmVhbSBleHRlbmRzIFdyaXRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+IHtcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBydW5JZDogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiBydW5JZCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgXCJydW5JZFwiIG11c3QgYmUgYSBzdHJpbmcsIGdvdCBcIiR7dHlwZW9mIHJ1bklkfVwiYCk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycgfHwgbmFtZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgXCJuYW1lXCIgaXMgcmVxdWlyZWQsIGdvdCBcIiR7bmFtZX1cImApO1xuICAgIH1cbiAgICBjb25zdCB3b3JsZCA9IGdldFdvcmxkKCk7XG5cbiAgICAvLyBCdWZmZXJpbmcgc3RhdGUgZm9yIGJhdGNoZWQgd3JpdGVzXG4gICAgLy8gRW5jcnlwdGlvbi9kZWNyeXB0aW9uIGlzIGhhbmRsZWQgYXQgdGhlIGZyYW1pbmcgbGV2ZWwgYnlcbiAgICAvLyBnZXRTZXJpYWxpemVTdHJlYW0vZ2V0RGVzZXJpYWxpemVTdHJlYW0sIG5vdCBoZXJlLlxuICAgIGxldCBidWZmZXI6IFVpbnQ4QXJyYXlbXSA9IFtdO1xuICAgIGxldCBmbHVzaFRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuICAgIGxldCBmbHVzaFByb21pc2U6IFByb21pc2U8dm9pZD4gfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0IGZsdXNoID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgaWYgKGZsdXNoVGltZXIpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KGZsdXNoVGltZXIpO1xuICAgICAgICBmbHVzaFRpbWVyID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKGJ1ZmZlci5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgICAgLy8gQ29weSBjaHVua3MgdG8gZmx1c2gsIGJ1dCBkb24ndCBjbGVhciBidWZmZXIgdW50aWwgd3JpdGUgc3VjY2VlZHNcbiAgICAgIC8vIFRoaXMgcHJldmVudHMgZGF0YSBsb3NzIGlmIHRoZSB3cml0ZSBvcGVyYXRpb24gZmFpbHNcbiAgICAgIGNvbnN0IGNodW5rc1RvRmx1c2ggPSBidWZmZXIuc2xpY2UoKTtcblxuICAgICAgLy8gVXNlIHdyaXRlVG9TdHJlYW1NdWx0aSBpZiBhdmFpbGFibGUgZm9yIGJhdGNoIHdyaXRlc1xuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2Ygd29ybGQud3JpdGVUb1N0cmVhbU11bHRpID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAgIGNodW5rc1RvRmx1c2gubGVuZ3RoID4gMVxuICAgICAgKSB7XG4gICAgICAgIGF3YWl0IHdvcmxkLndyaXRlVG9TdHJlYW1NdWx0aShuYW1lLCBydW5JZCwgY2h1bmtzVG9GbHVzaCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBGYWxsIGJhY2sgdG8gc2VxdWVudGlhbCB3cml0ZXNcbiAgICAgICAgZm9yIChjb25zdCBjaHVuayBvZiBjaHVua3NUb0ZsdXNoKSB7XG4gICAgICAgICAgYXdhaXQgd29ybGQud3JpdGVUb1N0cmVhbShuYW1lLCBydW5JZCwgY2h1bmspO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE9ubHkgY2xlYXIgYnVmZmVyIGFmdGVyIHN1Y2Nlc3NmdWwgd3JpdGUgdG8gcHJldmVudCBkYXRhIGxvc3NcbiAgICAgIGJ1ZmZlciA9IFtdO1xuICAgIH07XG5cbiAgICAvKiogUmVzb2x2ZXJzL3JlamVjdG9ycyB3YWl0aW5nIGZvciB0aGUgY3VycmVudCBzY2hlZHVsZWQgZmx1c2ggKi9cbiAgICBsZXQgZmx1c2hXYWl0ZXJzOiBBcnJheTx7XG4gICAgICByZXNvbHZlOiAoKSA9PiB2b2lkO1xuICAgICAgcmVqZWN0OiAoZXJyOiB1bmtub3duKSA9PiB2b2lkO1xuICAgIH0+ID0gW107XG5cbiAgICBjb25zdCBzY2hlZHVsZUZsdXNoID0gKCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKGZsdXNoVGltZXIpIHJldHVybjsgLy8gQWxyZWFkeSBzY2hlZHVsZWRcblxuICAgICAgZmx1c2hUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBmbHVzaFRpbWVyID0gbnVsbDtcbiAgICAgICAgY29uc3QgY3VycmVudFdhaXRlcnMgPSBmbHVzaFdhaXRlcnM7XG4gICAgICAgIGZsdXNoV2FpdGVycyA9IFtdO1xuICAgICAgICBmbHVzaFByb21pc2UgPSBmbHVzaCgpLnRoZW4oXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgZm9yIChjb25zdCB3IG9mIGN1cnJlbnRXYWl0ZXJzKSB3LnJlc29sdmUoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdyBvZiBjdXJyZW50V2FpdGVycykgdy5yZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9LCB3b3JsZC5zdHJlYW1GbHVzaEludGVydmFsTXMgPz8gU1RSRUFNX0ZMVVNIX0lOVEVSVkFMX01TKTtcbiAgICB9O1xuXG4gICAgc3VwZXIoe1xuICAgICAgYXN5bmMgd3JpdGUoY2h1bmspIHtcbiAgICAgICAgLy8gV2FpdCBmb3IgYW55IGluLXByb2dyZXNzIGZsdXNoIHRvIGNvbXBsZXRlIGJlZm9yZSBhZGRpbmcgdG8gYnVmZmVyXG4gICAgICAgIGlmIChmbHVzaFByb21pc2UpIHtcbiAgICAgICAgICBhd2FpdCBmbHVzaFByb21pc2U7XG4gICAgICAgICAgZmx1c2hQcm9taXNlID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1ZmZlci5wdXNoKGNodW5rKTtcbiAgICAgICAgc2NoZWR1bGVGbHVzaCgpO1xuXG4gICAgICAgIC8vIFdhaXQgZm9yIHRoZSBzY2hlZHVsZWQgZmx1c2ggdG8gY29tcGxldGUgc28gdGhhdCBjYWxsZXJzXG4gICAgICAgIC8vIChsaWtlIGZsdXNoYWJsZVBpcGUpIGtub3cgZGF0YSBoYXMgcmVhY2hlZCB0aGUgc2VydmVyXG4gICAgICAgIC8vIGJlZm9yZSBkZWNyZW1lbnRpbmcgcGVuZGluZ09wcy4gV2l0aG91dCB0aGlzLCBwZW5kaW5nT3BzXG4gICAgICAgIC8vIHJlYWNoZXMgMCB3aGVuIHRoZSBidWZmZXJlZCB3cml0ZSByZXR1cm5zIChpbnN0YW50KSwgYnV0XG4gICAgICAgIC8vIHRoZSAxMG1zIGZsdXNoIHRpbWVyIGhhc24ndCBmaXJlZCB5ZXQuXG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBmbHVzaFdhaXRlcnMucHVzaCh7IHJlc29sdmUsIHJlamVjdCB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgYXN5bmMgY2xvc2UoKSB7XG4gICAgICAgIC8vIFdhaXQgZm9yIGFueSBpbi1wcm9ncmVzcyBmbHVzaCB0byBjb21wbGV0ZVxuICAgICAgICBpZiAoZmx1c2hQcm9taXNlKSB7XG4gICAgICAgICAgYXdhaXQgZmx1c2hQcm9taXNlO1xuICAgICAgICAgIGZsdXNoUHJvbWlzZSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGbHVzaCBhbnkgcmVtYWluaW5nIGJ1ZmZlcmVkIGNodW5rc1xuICAgICAgICBhd2FpdCBmbHVzaCgpO1xuXG4gICAgICAgIGF3YWl0IHdvcmxkLmNsb3NlU3RyZWFtKG5hbWUsIHJ1bklkKTtcbiAgICAgIH0sXG4gICAgICBhYm9ydChyZWFzb24pIHtcbiAgICAgICAgLy8gQ2xlYW4gdXAgdGltZXIgdG8gcHJldmVudCBsZWFrc1xuICAgICAgICBpZiAoZmx1c2hUaW1lcikge1xuICAgICAgICAgIGNsZWFyVGltZW91dChmbHVzaFRpbWVyKTtcbiAgICAgICAgICBmbHVzaFRpbWVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICAvLyBEaXNjYXJkIGJ1ZmZlcmVkIGNodW5rcyAtIHRoZXkgd29uJ3QgYmUgd3JpdHRlblxuICAgICAgICBidWZmZXIgPSBbXTtcbiAgICAgICAgLy8gUmVqZWN0IGFueSBwZW5kaW5nIGZsdXNoV2FpdGVycyBzbyB0aGUgd3JpdGUoKSBwcm9taXNlcyBzZXR0bGVcbiAgICAgICAgLy8gYW5kIGRvbid0IGxlYWsuIFdpdGhvdXQgdGhpcywgd3JpdGUoKSBoYW5ncyBmb3JldmVyIG9uIGFuXG4gICAgICAgIC8vIHVuc2V0dGxlZCBwcm9taXNlIGJlY2F1c2UgdGhlIGNsZWFyZWQgdGltZXIgd2lsbCBuZXZlciBmaXJlLlxuICAgICAgICBjb25zdCB3YWl0ZXJzID0gZmx1c2hXYWl0ZXJzO1xuICAgICAgICBmbHVzaFdhaXRlcnMgPSBbXTtcbiAgICAgICAgY29uc3QgYWJvcnRFcnJvciA9IHJlYXNvbiA/PyBuZXcgRXJyb3IoJ1N0cmVhbSBhYm9ydGVkJyk7XG4gICAgICAgIGZvciAoY29uc3QgdyBvZiB3YWl0ZXJzKSB3LnJlamVjdChhYm9ydEVycm9yKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuLy8gVHlwZXMgdGhhdCBuZWVkIHNwZWNpYWxpemVkIGhhbmRsaW5nIHdoZW4gc2VyaWFsaXplZC9kZXNlcmlhbGl6ZWRcbi8vICEgSWYgYSB0eXBlIGlzIGFkZGVkIGhlcmUsIGl0IE1VU1QgYWxzbyBiZSBhZGRlZCB0byB0aGUgYFNlcmlhbGl6YWJsZWAgdHlwZSBpbiBgc2NoZW1hcy50c2BcbmV4cG9ydCBpbnRlcmZhY2UgU2VyaWFsaXphYmxlU3BlY2lhbCB7XG4gIEFycmF5QnVmZmVyOiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgQmlnSW50OiBzdHJpbmc7IC8vIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBiaWdpbnRcbiAgQmlnSW50NjRBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIEJpZ1VpbnQ2NEFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgRGF0ZTogc3RyaW5nOyAvLyBJU08gc3RyaW5nXG4gIERPTUV4Y2VwdGlvbjoge1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgc3RhY2s/OiBzdHJpbmc7XG4gICAgY2F1c2U/OiB1bmtub3duO1xuICB9O1xuICBGbG9hdDMyQXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBGbG9hdDY0QXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBFcnJvcjogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgSGVhZGVyczogW3N0cmluZywgc3RyaW5nXVtdO1xuICBJbnQ4QXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBJbnQxNkFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgSW50MzJBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIE1hcDogW2FueSwgYW55XVtdO1xuICBSZWFkYWJsZVN0cmVhbTpcbiAgICB8IHsgbmFtZTogc3RyaW5nOyB0eXBlPzogJ2J5dGVzJzsgc3RhcnRJbmRleD86IG51bWJlciB9XG4gICAgfCB7IGJvZHlJbml0OiBhbnkgfTtcbiAgUmVnRXhwOiB7IHNvdXJjZTogc3RyaW5nOyBmbGFnczogc3RyaW5nIH07XG4gIFJlcXVlc3Q6IHtcbiAgICBtZXRob2Q6IHN0cmluZztcbiAgICB1cmw6IHN0cmluZztcbiAgICBoZWFkZXJzOiBIZWFkZXJzO1xuICAgIGJvZHk6IFJlcXVlc3RbJ2JvZHknXTtcbiAgICBkdXBsZXg6IFJlcXVlc3RbJ2R1cGxleCddO1xuXG4gICAgLy8gVGhpcyBpcyBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgUmVxdWVzdFdpdGhSZXNwb25zZWAgdHlwZSB3aGljaCBpcyB1c2VkIGZvciB3ZWJob29rc1xuICAgIHJlc3BvbnNlV3JpdGFibGU/OiBXcml0YWJsZVN0cmVhbTxSZXNwb25zZT47XG4gIH07XG4gIFJlc3BvbnNlOiB7XG4gICAgdHlwZTogUmVzcG9uc2VbJ3R5cGUnXTtcbiAgICB1cmw6IHN0cmluZztcbiAgICBzdGF0dXM6IG51bWJlcjtcbiAgICBzdGF0dXNUZXh0OiBzdHJpbmc7XG4gICAgaGVhZGVyczogSGVhZGVycztcbiAgICBib2R5OiBSZXNwb25zZVsnYm9keSddO1xuICAgIHJlZGlyZWN0ZWQ6IGJvb2xlYW47XG4gIH07XG4gIENsYXNzOiB7XG4gICAgY2xhc3NJZDogc3RyaW5nO1xuICB9O1xuICAvKipcbiAgICogQ3VzdG9tIHNlcmlhbGl6ZWQgY2xhc3MgaW5zdGFuY2UuXG4gICAqIFRoZSBjbGFzcyBtdXN0IGhhdmUgYSBgY2xhc3NJZGAgcHJvcGVydHkgYW5kIGJlIHJlZ2lzdGVyZWQgZm9yIGRlc2VyaWFsaXphdGlvbi5cbiAgICovXG4gIEluc3RhbmNlOiB7XG4gICAgY2xhc3NJZDogc3RyaW5nOyAvLyBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGNsYXNzICh1c2VkIGZvciBsb29rdXAgZHVyaW5nIGRlc2VyaWFsaXphdGlvbilcbiAgICBkYXRhOiB1bmtub3duOyAvLyBUaGUgc2VyaWFsaXplZCBpbnN0YW5jZSBkYXRhXG4gIH07XG4gIFNldDogYW55W107XG4gIFN0ZXBGdW5jdGlvbjoge1xuICAgIHN0ZXBJZDogc3RyaW5nO1xuICAgIGNsb3N1cmVWYXJzPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgfTtcbiAgVVJMOiBzdHJpbmc7XG4gIFVSTFNlYXJjaFBhcmFtczogc3RyaW5nO1xuICBVaW50OEFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgVWludDhDbGFtcGVkQXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBVaW50MTZBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIFVpbnQzMkFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgV3JpdGFibGVTdHJlYW06IHsgbmFtZTogc3RyaW5nIH07XG59XG5cbnR5cGUgUmVkdWNlcnMgPSB7XG4gIFtLIGluIGtleW9mIFNlcmlhbGl6YWJsZVNwZWNpYWxdOiAoXG4gICAgdmFsdWU6IGFueVxuICApID0+IFNlcmlhbGl6YWJsZVNwZWNpYWxbS10gfCBmYWxzZTtcbn07XG5cbnR5cGUgUmV2aXZlcnMgPSB7XG4gIFtLIGluIGtleW9mIFNlcmlhbGl6YWJsZVNwZWNpYWxdOiAodmFsdWU6IFNlcmlhbGl6YWJsZVNwZWNpYWxbS10pID0+IGFueTtcbn07XG5cbmZ1bmN0aW9uIHJldml2ZShzdHI6IHN0cmluZykge1xuICAvLyBiaW9tZS1pZ25vcmUgbGludC9zZWN1cml0eS9ub0dsb2JhbEV2YWw6IEV2YWwgaXMgc2FmZSBoZXJlIC0gd2UgYXJlIG9ubHkgcGFzc2luZyB2YWx1ZSBmcm9tIGBkZXZhbHVlLnN0cmluZ2lmeSgpYFxuICAvLyBiaW9tZS1pZ25vcmUgbGludC9jb21wbGV4aXR5L25vQ29tbWFPcGVyYXRvcjogVGhpcyBpcyBob3cgeW91IGRvIGdsb2JhbCBzY29wZSBldmFsXG4gIHJldHVybiAoMCwgZXZhbCkoYCgke3N0cn0pYCk7XG59XG5cbmZ1bmN0aW9uIGdldENvbW1vblJlZHVjZXJzKGdsb2JhbDogUmVjb3JkPHN0cmluZywgYW55PiA9IGdsb2JhbFRoaXMpIHtcbiAgY29uc3QgYWJUb0Jhc2U2NCA9IChcbiAgICB2YWx1ZTogQXJyYXlCdWZmZXJMaWtlLFxuICAgIG9mZnNldDogbnVtYmVyLFxuICAgIGxlbmd0aDogbnVtYmVyXG4gICkgPT4ge1xuICAgIC8vIEF2b2lkIHJldHVybmluZyBmYWxzeSB2YWx1ZSBmb3IgemVyby1sZW5ndGggYnVmZmVyc1xuICAgIGlmIChsZW5ndGggPT09IDApIHJldHVybiAnLic7XG4gICAgLy8gQ3JlYXRlIGEgcHJvcGVyIGNvcHkgdG8gYXZvaWQgQXJyYXlCdWZmZXIgZGV0YWNobWVudCBpc3N1ZXNcbiAgICAvLyBCdWZmZXIuZnJvbShBcnJheUJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgpIGNyZWF0ZXMgYSB2aWV3LCBub3QgYSBjb3B5XG4gICAgY29uc3QgdWludDggPSBuZXcgVWludDhBcnJheSh2YWx1ZSwgb2Zmc2V0LCBsZW5ndGgpO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh1aW50OCkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICB9O1xuICBjb25zdCB2aWV3VG9CYXNlNjQgPSAodmFsdWU6IEFycmF5QnVmZmVyVmlldykgPT5cbiAgICBhYlRvQmFzZTY0KHZhbHVlLmJ1ZmZlciwgdmFsdWUuYnl0ZU9mZnNldCwgdmFsdWUuYnl0ZUxlbmd0aCk7XG5cbiAgcmV0dXJuIHtcbiAgICBBcnJheUJ1ZmZlcjogKHZhbHVlKSA9PlxuICAgICAgdmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuQXJyYXlCdWZmZXIgJiZcbiAgICAgIGFiVG9CYXNlNjQodmFsdWUsIDAsIHZhbHVlLmJ5dGVMZW5ndGgpLFxuICAgIEJpZ0ludDogKHZhbHVlKSA9PiB0eXBlb2YgdmFsdWUgPT09ICdiaWdpbnQnICYmIHZhbHVlLnRvU3RyaW5nKCksXG4gICAgQmlnSW50NjRBcnJheTogKHZhbHVlKSA9PlxuICAgICAgdmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuQmlnSW50NjRBcnJheSAmJiB2aWV3VG9CYXNlNjQodmFsdWUpLFxuICAgIEJpZ1VpbnQ2NEFycmF5OiAodmFsdWUpID0+XG4gICAgICB2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5CaWdVaW50NjRBcnJheSAmJiB2aWV3VG9CYXNlNjQodmFsdWUpLFxuICAgIC8vIENsYXNzIGFuZCBJbnN0YW5jZSBhcmUgaW50ZW50aW9uYWxseSBwbGFjZWQgYmVmb3JlIEVycm9yIHNvIHRoYXRcbiAgICAvLyBjdXN0b20gRXJyb3Igc3ViY2xhc3NlcyB3aXRoIFdPUktGTE9XX1NFUklBTElaRSB0YWtlIHByZWNlZGVuY2VcbiAgICAvLyBvdmVyIHRoZSBnZW5lcmljIEVycm9yIHNlcmlhbGl6YXRpb24gKGRldmFsdWUgdXNlcyBmaXJzdC1tYXRjaC13aW5zKS5cbiAgICBDbGFzczogKHZhbHVlKSA9PiB7XG4gICAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgY2xhc3MgY29uc3RydWN0b3Igd2l0aCBhIGNsYXNzSWQgcHJvcGVydHlcbiAgICAgIC8vIChzZXQgYnkgdGhlIFNXQyBwbHVnaW4gZm9yIGNsYXNzZXMgd2l0aCBzdGF0aWMgc3RlcC93b3JrZmxvdyBtZXRob2RzKVxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgY2xhc3NJZCA9ICh2YWx1ZSBhcyBhbnkpLmNsYXNzSWQ7XG4gICAgICBpZiAodHlwZW9mIGNsYXNzSWQgIT09ICdzdHJpbmcnKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4geyBjbGFzc0lkIH07XG4gICAgfSxcbiAgICBJbnN0YW5jZTogKHZhbHVlKSA9PiB7XG4gICAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3Mgd2l0aCBjdXN0b20gc2VyaWFsaXphdGlvblxuICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IGNscyA9IHZhbHVlLmNvbnN0cnVjdG9yO1xuICAgICAgaWYgKCFjbHMgfHwgdHlwZW9mIGNscyAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAvLyBDaGVjayBpZiB0aGUgY2xhc3MgaGFzIGEgc3RhdGljIFdPUktGTE9XX1NFUklBTElaRSBtZXRob2RcbiAgICAgIGNvbnN0IHNlcmlhbGl6ZSA9IGNsc1tXT1JLRkxPV19TRVJJQUxJWkVdO1xuICAgICAgaWYgKHR5cGVvZiBzZXJpYWxpemUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyBHZXQgdGhlIGNsYXNzSWQgZnJvbSB0aGUgc3RhdGljIGNsYXNzIHByb3BlcnR5IChzZXQgYnkgU1dDIHBsdWdpbilcbiAgICAgIGNvbnN0IGNsYXNzSWQgPSBjbHMuY2xhc3NJZDtcbiAgICAgIGlmICh0eXBlb2YgY2xhc3NJZCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBDbGFzcyBcIiR7Y2xzLm5hbWV9XCIgd2l0aCAke1N0cmluZyhXT1JLRkxPV19TRVJJQUxJWkUpfSBtdXN0IGhhdmUgYSBzdGF0aWMgXCJjbGFzc0lkXCIgcHJvcGVydHkuYFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXJpYWxpemUgdGhlIGluc3RhbmNlIHVzaW5nIHRoZSBjdXN0b20gc2VyaWFsaXplclxuICAgICAgY29uc3QgZGF0YSA9IHNlcmlhbGl6ZS5jYWxsKGNscywgdmFsdWUpO1xuICAgICAgcmV0dXJuIHsgY2xhc3NJZCwgZGF0YSB9O1xuICAgIH0sXG4gICAgRGF0ZTogKHZhbHVlKSA9PiB7XG4gICAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5EYXRlKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgdmFsaWQgPSAhTnVtYmVyLmlzTmFOKHZhbHVlLmdldERhdGUoKSk7XG4gICAgICAvLyBOb3RlOiBcIi5cIiBpcyB0byBhdm9pZCByZXR1cm5pbmcgYSBmYWxzeSB2YWx1ZSB3aGVuIHRoZSBkYXRlIGlzIGludmFsaWRcbiAgICAgIHJldHVybiB2YWxpZCA/IHZhbHVlLnRvSVNPU3RyaW5nKCkgOiAnLic7XG4gICAgfSxcbiAgICAvLyBET01FeGNlcHRpb24gaXMgYSBzcGVjaWFsIGNhc2U6IGluIE5vZGUuanMgaXQgcGFzc2VzIGlzTmF0aXZlRXJyb3IoKVxuICAgIC8vIGFuZCBpbnN0YW5jZW9mIEVycm9yLCBidXQgaGFzIGEgdW5pcXVlIGNvbnN0cnVjdG9yIHNpZ25hdHVyZVxuICAgIC8vIChtZXNzYWdlLCBuYW1lKSBhbmQgYSByZWFkLW9ubHkgbnVtZXJpYyBgY29kZWAgcHJvcGVydHkgZGVyaXZlZCBmcm9tXG4gICAgLy8gYG5hbWVgLiBJdCBtdXN0IGJlIGNoZWNrZWQgYmVmb3JlIHRoZSBnZW5lcmljIEVycm9yIHJlZHVjZXIuXG4gICAgRE9NRXhjZXB0aW9uOiAodmFsdWUpID0+IHtcbiAgICAgIGlmICghdHlwZXMuaXNOYXRpdmVFcnJvcih2YWx1ZSkpIHJldHVybiBmYWxzZTtcbiAgICAgIGlmICh2YWx1ZS5jb25zdHJ1Y3Rvcj8ubmFtZSAhPT0gJ0RPTUV4Y2VwdGlvbicpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IHJlZHVjZWQ6IFNlcmlhbGl6YWJsZVNwZWNpYWxbJ0RPTUV4Y2VwdGlvbiddID0ge1xuICAgICAgICBtZXNzYWdlOiB2YWx1ZS5tZXNzYWdlLFxuICAgICAgICBuYW1lOiB2YWx1ZS5uYW1lLFxuICAgICAgICBzdGFjazogdmFsdWUuc3RhY2ssXG4gICAgICB9O1xuICAgICAgaWYgKCdjYXVzZScgaW4gdmFsdWUpIHJlZHVjZWQuY2F1c2UgPSB2YWx1ZS5jYXVzZTtcbiAgICAgIHJldHVybiByZWR1Y2VkO1xuICAgIH0sXG4gICAgRXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gVXNlIHR5cGVzLmlzTmF0aXZlRXJyb3IoKSBpbnN0ZWFkIG9mIGBpbnN0YW5jZW9mIGdsb2JhbC5FcnJvcmBcbiAgICAgIC8vIGJlY2F1c2UgZXJyb3JzIG1heSBvcmlnaW5hdGUgZnJvbSBhIGRpZmZlcmVudCBWTSBjb250ZXh0IChlLmcuXG4gICAgICAvLyBGYXRhbEVycm9yIGZyb20gdGhlIGhvc3QgY29udGV4dCBwYXNzZWQgaW50byBhIFZNLWNvbnRleHQgd29ya2Zsb3cpLlxuICAgICAgLy8gYGluc3RhbmNlb2ZgIGNoZWNrcyBmYWlsIGFjcm9zcyBWTSBib3VuZGFyaWVzIHNpbmNlIGVhY2ggY29udGV4dFxuICAgICAgLy8gaGFzIGl0cyBvd24gRXJyb3IgY29uc3RydWN0b3IsIGJ1dCBpc05hdGl2ZUVycm9yKCkgdXNlcyBWOCdzXG4gICAgICAvLyBpbnRlcm5hbCB0eXBlIHRhZyB3aGljaCB3b3JrcyBhY3Jvc3MgYWxsIGNvbnRleHRzLlxuICAgICAgaWYgKCF0eXBlcy5pc05hdGl2ZUVycm9yKHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogdmFsdWUubmFtZSxcbiAgICAgICAgbWVzc2FnZTogdmFsdWUubWVzc2FnZSxcbiAgICAgICAgc3RhY2s6IHZhbHVlLnN0YWNrLFxuICAgICAgfTtcbiAgICB9LFxuICAgIEZsb2F0MzJBcnJheTogKHZhbHVlKSA9PlxuICAgICAgdmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuRmxvYXQzMkFycmF5ICYmIHZpZXdUb0Jhc2U2NCh2YWx1ZSksXG4gICAgRmxvYXQ2NEFycmF5OiAodmFsdWUpID0+XG4gICAgICB2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5GbG9hdDY0QXJyYXkgJiYgdmlld1RvQmFzZTY0KHZhbHVlKSxcbiAgICBIZWFkZXJzOiAodmFsdWUpID0+IHZhbHVlIGluc3RhbmNlb2YgZ2xvYmFsLkhlYWRlcnMgJiYgQXJyYXkuZnJvbSh2YWx1ZSksXG4gICAgSW50OEFycmF5OiAodmFsdWUpID0+XG4gICAgICB2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5JbnQ4QXJyYXkgJiYgdmlld1RvQmFzZTY0KHZhbHVlKSxcbiAgICBJbnQxNkFycmF5OiAodmFsdWUpID0+XG4gICAgICB2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5JbnQxNkFycmF5ICYmIHZpZXdUb0Jhc2U2NCh2YWx1ZSksXG4gICAgSW50MzJBcnJheTogKHZhbHVlKSA9PlxuICAgICAgdmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuSW50MzJBcnJheSAmJiB2aWV3VG9CYXNlNjQodmFsdWUpLFxuICAgIE1hcDogKHZhbHVlKSA9PiB2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5NYXAgJiYgQXJyYXkuZnJvbSh2YWx1ZSksXG4gICAgUmVnRXhwOiAodmFsdWUpID0+XG4gICAgICB2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5SZWdFeHAgJiYge1xuICAgICAgICBzb3VyY2U6IHZhbHVlLnNvdXJjZSxcbiAgICAgICAgZmxhZ3M6IHZhbHVlLmZsYWdzLFxuICAgICAgfSxcbiAgICBSZXF1ZXN0OiAodmFsdWUpID0+IHtcbiAgICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgZ2xvYmFsLlJlcXVlc3QpKSByZXR1cm4gZmFsc2U7XG4gICAgICBjb25zdCBkYXRhOiBTZXJpYWxpemFibGVTcGVjaWFsWydSZXF1ZXN0J10gPSB7XG4gICAgICAgIG1ldGhvZDogdmFsdWUubWV0aG9kLFxuICAgICAgICB1cmw6IHZhbHVlLnVybCxcbiAgICAgICAgaGVhZGVyczogdmFsdWUuaGVhZGVycyxcbiAgICAgICAgYm9keTogdmFsdWUuYm9keSxcbiAgICAgICAgZHVwbGV4OiB2YWx1ZS5kdXBsZXgsXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzcG9uc2VXcml0YWJsZSA9IHZhbHVlW1dFQkhPT0tfUkVTUE9OU0VfV1JJVEFCTEVdO1xuICAgICAgaWYgKHJlc3BvbnNlV3JpdGFibGUpIHtcbiAgICAgICAgZGF0YS5yZXNwb25zZVdyaXRhYmxlID0gcmVzcG9uc2VXcml0YWJsZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH0sXG4gICAgUmVzcG9uc2U6ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuUmVzcG9uc2UpKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiB2YWx1ZS50eXBlLFxuICAgICAgICB1cmw6IHZhbHVlLnVybCxcbiAgICAgICAgc3RhdHVzOiB2YWx1ZS5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHZhbHVlLnN0YXR1c1RleHQsXG4gICAgICAgIGhlYWRlcnM6IHZhbHVlLmhlYWRlcnMsXG4gICAgICAgIGJvZHk6IHZhbHVlLmJvZHksXG4gICAgICAgIHJlZGlyZWN0ZWQ6IHZhbHVlLnJlZGlyZWN0ZWQsXG4gICAgICB9O1xuICAgIH0sXG4gICAgU2V0OiAodmFsdWUpID0+IHZhbHVlIGluc3RhbmNlb2YgZ2xvYmFsLlNldCAmJiBBcnJheS5mcm9tKHZhbHVlKSxcbiAgICBTdGVwRnVuY3Rpb246ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3Qgc3RlcElkID0gKHZhbHVlIGFzIGFueSkuc3RlcElkO1xuICAgICAgaWYgKHR5cGVvZiBzdGVwSWQgIT09ICdzdHJpbmcnKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoZSBzdGVwIGZ1bmN0aW9uIGhhcyBjbG9zdXJlIHZhcmlhYmxlc1xuICAgICAgY29uc3QgY2xvc3VyZVZhcnNGbiA9ICh2YWx1ZSBhcyBhbnkpLl9fY2xvc3VyZVZhcnNGbjtcbiAgICAgIGlmIChjbG9zdXJlVmFyc0ZuICYmIHR5cGVvZiBjbG9zdXJlVmFyc0ZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vIEludm9rZSB0aGUgY2xvc3VyZSB2YXJpYWJsZXMgZnVuY3Rpb24gYW5kIHNlcmlhbGl6ZSBhbG9uZyB3aXRoIHN0ZXBJZFxuICAgICAgICBjb25zdCBjbG9zdXJlVmFycyA9IGNsb3N1cmVWYXJzRm4oKTtcbiAgICAgICAgcmV0dXJuIHsgc3RlcElkLCBjbG9zdXJlVmFycyB9O1xuICAgICAgfVxuXG4gICAgICAvLyBObyBjbG9zdXJlIHZhcmlhYmxlcyAtIHJldHVybiBvYmplY3Qgd2l0aCBqdXN0IHN0ZXBJZFxuICAgICAgcmV0dXJuIHsgc3RlcElkIH07XG4gICAgfSxcbiAgICBVUkw6ICh2YWx1ZSkgPT4gdmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuVVJMICYmIHZhbHVlLmhyZWYsXG4gICAgVVJMU2VhcmNoUGFyYW1zOiAodmFsdWUpID0+IHtcbiAgICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgZ2xvYmFsLlVSTFNlYXJjaFBhcmFtcykpIHJldHVybiBmYWxzZTtcblxuICAgICAgLy8gQXZvaWQgcmV0dXJuaW5nIGEgZmFsc3kgdmFsdWUgd2hlbiB0aGUgVVJMU2VhcmNoUGFyYW1zIGlzIGVtcHR5XG4gICAgICBpZiAodmFsdWUuc2l6ZSA9PT0gMCkgcmV0dXJuICcuJztcblxuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgfSxcbiAgICBVaW50OEFycmF5OiAodmFsdWUpID0+XG4gICAgICB2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5VaW50OEFycmF5ICYmIHZpZXdUb0Jhc2U2NCh2YWx1ZSksXG4gICAgVWludDhDbGFtcGVkQXJyYXk6ICh2YWx1ZSkgPT5cbiAgICAgIHZhbHVlIGluc3RhbmNlb2YgZ2xvYmFsLlVpbnQ4Q2xhbXBlZEFycmF5ICYmIHZpZXdUb0Jhc2U2NCh2YWx1ZSksXG4gICAgVWludDE2QXJyYXk6ICh2YWx1ZSkgPT5cbiAgICAgIHZhbHVlIGluc3RhbmNlb2YgZ2xvYmFsLlVpbnQxNkFycmF5ICYmIHZpZXdUb0Jhc2U2NCh2YWx1ZSksXG4gICAgVWludDMyQXJyYXk6ICh2YWx1ZSkgPT5cbiAgICAgIHZhbHVlIGluc3RhbmNlb2YgZ2xvYmFsLlVpbnQzMkFycmF5ICYmIHZpZXdUb0Jhc2U2NCh2YWx1ZSksXG4gIH0gYXMgY29uc3Qgc2F0aXNmaWVzIFBhcnRpYWw8UmVkdWNlcnM+O1xufVxuXG4vKipcbiAqIFJlZHVjZXJzIGZvciBzZXJpYWxpemF0aW9uIGJvdW5kYXJ5IGZyb20gdGhlIGNsaWVudCBzaWRlLCBwYXNzaW5nIGFyZ3VtZW50c1xuICogdG8gdGhlIHdvcmtmbG93IGhhbmRsZXIuXG4gKlxuICogQHBhcmFtIGdsb2JhbFxuICogQHBhcmFtIG9wc1xuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVybmFsUmVkdWNlcnMoXG4gIGdsb2JhbDogUmVjb3JkPHN0cmluZywgYW55PiA9IGdsb2JhbFRoaXMsXG4gIG9wczogUHJvbWlzZTx2b2lkPltdLFxuICBydW5JZDogc3RyaW5nLFxuICBjcnlwdG9LZXk6IEVuY3J5cHRpb25LZXlQYXJhbVxuKTogUmVkdWNlcnMge1xuICByZXR1cm4ge1xuICAgIC4uLmdldENvbW1vblJlZHVjZXJzKGdsb2JhbCksXG5cbiAgICBSZWFkYWJsZVN0cmVhbTogKHZhbHVlKSA9PiB7XG4gICAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5SZWFkYWJsZVN0cmVhbSkpIHJldHVybiBmYWxzZTtcblxuICAgICAgLy8gU3RyZWFtIG11c3Qgbm90IGJlIGxvY2tlZCB3aGVuIHBhc3NpbmcgYWNyb3NzIGV4ZWN1dGlvbiBib3VuZGFyeVxuICAgICAgaWYgKHZhbHVlLmxvY2tlZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlYWRhYmxlU3RyZWFtIGlzIGxvY2tlZCcpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdHJlYW1JZCA9ICgoZ2xvYmFsIGFzIGFueSlbU1RBQkxFX1VMSURdIHx8IGRlZmF1bHRVbGlkKSgpO1xuICAgICAgY29uc3QgbmFtZSA9IGBzdHJtXyR7c3RyZWFtSWR9YDtcbiAgICAgIGNvbnN0IHR5cGUgPSBnZXRTdHJlYW1UeXBlKHZhbHVlKTtcblxuICAgICAgY29uc3Qgd3JpdGFibGUgPSBuZXcgV29ya2Zsb3dTZXJ2ZXJXcml0YWJsZVN0cmVhbShuYW1lLCBydW5JZCk7XG4gICAgICBpZiAodHlwZSA9PT0gJ2J5dGVzJykge1xuICAgICAgICBvcHMucHVzaCh2YWx1ZS5waXBlVG8od3JpdGFibGUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wcy5wdXNoKFxuICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICAucGlwZVRocm91Z2goXG4gICAgICAgICAgICAgIGdldFNlcmlhbGl6ZVN0cmVhbShcbiAgICAgICAgICAgICAgICBnZXRFeHRlcm5hbFJlZHVjZXJzKGdsb2JhbCwgb3BzLCBydW5JZCwgY3J5cHRvS2V5KSxcbiAgICAgICAgICAgICAgICBjcnlwdG9LZXlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGVUbyh3cml0YWJsZSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgczogU2VyaWFsaXphYmxlU3BlY2lhbFsnUmVhZGFibGVTdHJlYW0nXSA9IHsgbmFtZSB9O1xuICAgICAgaWYgKHR5cGUpIHMudHlwZSA9IHR5cGU7XG4gICAgICByZXR1cm4gcztcbiAgICB9LFxuXG4gICAgV3JpdGFibGVTdHJlYW06ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuV3JpdGFibGVTdHJlYW0pKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIGNvbnN0IHN0cmVhbUlkID0gKChnbG9iYWwgYXMgYW55KVtTVEFCTEVfVUxJRF0gfHwgZGVmYXVsdFVsaWQpKCk7XG4gICAgICBjb25zdCBuYW1lID0gYHN0cm1fJHtzdHJlYW1JZH1gO1xuXG4gICAgICBjb25zdCByZWFkYWJsZSA9IG5ldyBXb3JrZmxvd1NlcnZlclJlYWRhYmxlU3RyZWFtKG5hbWUpO1xuICAgICAgb3BzLnB1c2gocmVhZGFibGUucGlwZVRvKHZhbHVlKSk7XG5cbiAgICAgIHJldHVybiB7IG5hbWUgfTtcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIFJlZHVjZXJzIGZvciBzZXJpYWxpemF0aW9uIGJvdW5kYXJ5IGZyb20gd2l0aGluIHRoZSB3b3JrZmxvdyBleGVjdXRpb25cbiAqIGVudmlyb25tZW50LCBwYXNzaW5nIHJldHVybiB2YWx1ZSB0byB0aGUgY2xpZW50IHNpZGUgYW5kIGludG8gc3RlcCBhcmd1bWVudHMuXG4gKlxuICogQHBhcmFtIGdsb2JhbFxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtmbG93UmVkdWNlcnMoXG4gIGdsb2JhbDogUmVjb3JkPHN0cmluZywgYW55PiA9IGdsb2JhbFRoaXNcbik6IFJlZHVjZXJzIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5nZXRDb21tb25SZWR1Y2VycyhnbG9iYWwpLFxuXG4gICAgLy8gUmVhZGFibGUvV3JpdGFibGUgc3RyZWFtcyBmcm9tIHdpdGhpbiB0aGUgd29ya2Zsb3cgZXhlY3V0aW9uIGVudmlyb25tZW50XG4gICAgLy8gYXJlIHNpbXBseSBcImhhbmRsZXNcIiB0aGF0IGNhbiBiZSBwYXNzZWQgYXJvdW5kIHRvIG90aGVyIHN0ZXBzLlxuICAgIFJlYWRhYmxlU3RyZWFtOiAodmFsdWUpID0+IHtcbiAgICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgZ2xvYmFsLlJlYWRhYmxlU3RyZWFtKSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgZmFrZSBzdHJlYW0gc3RvcmluZyBCb2R5SW5pdCBmcm9tIFJlcXVlc3QvUmVzcG9uc2UgY29uc3RydWN0b3JcbiAgICAgIGNvbnN0IGJvZHlJbml0ID0gdmFsdWVbQk9EWV9JTklUX1NZTUJPTF07XG4gICAgICBpZiAoYm9keUluaXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBUaGlzIGlzIGEgZmFrZSBzdHJlYW0gLSBzZXJpYWxpemUgdGhlIEJvZHlJbml0IGRpcmVjdGx5XG4gICAgICAgIC8vIGRldmFsdWUgd2lsbCBoYW5kbGUgc2VyaWFsaXppbmcgc3RyaW5ncywgVWludDhBcnJheSwgZXRjLlxuICAgICAgICByZXR1cm4geyBib2R5SW5pdCB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuYW1lID0gdmFsdWVbU1RSRUFNX05BTUVfU1lNQk9MXTtcbiAgICAgIGlmICghbmFtZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlYWRhYmxlU3RyZWFtIGBuYW1lYCBpcyBub3Qgc2V0Jyk7XG4gICAgICB9XG4gICAgICBjb25zdCBzOiBTZXJpYWxpemFibGVTcGVjaWFsWydSZWFkYWJsZVN0cmVhbSddID0geyBuYW1lIH07XG4gICAgICBjb25zdCB0eXBlID0gdmFsdWVbU1RSRUFNX1RZUEVfU1lNQk9MXTtcbiAgICAgIGlmICh0eXBlKSBzLnR5cGUgPSB0eXBlO1xuICAgICAgcmV0dXJuIHM7XG4gICAgfSxcbiAgICBXcml0YWJsZVN0cmVhbTogKHZhbHVlKSA9PiB7XG4gICAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5Xcml0YWJsZVN0cmVhbSkpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IG5hbWUgPSB2YWx1ZVtTVFJFQU1fTkFNRV9TWU1CT0xdO1xuICAgICAgaWYgKCFuYW1lKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignV3JpdGFibGVTdHJlYW0gYG5hbWVgIGlzIG5vdCBzZXQnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IG5hbWUgfTtcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIFJlZHVjZXJzIGZvciBzZXJpYWxpemF0aW9uIGJvdW5kYXJ5IGZyb20gd2l0aGluIHRoZSBzdGVwIGV4ZWN1dGlvblxuICogZW52aXJvbm1lbnQsIHBhc3NpbmcgcmV0dXJuIHZhbHVlIHRvIHRoZSB3b3JrZmxvdyBoYW5kbGVyLlxuICpcbiAqIEBwYXJhbSBnbG9iYWxcbiAqIEBwYXJhbSBvcHNcbiAqIEBwYXJhbSBydW5JZFxuICogQHJldHVybnNcbiAqL1xuZnVuY3Rpb24gZ2V0U3RlcFJlZHVjZXJzKFxuICBnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBnbG9iYWxUaGlzLFxuICBvcHM6IFByb21pc2U8dm9pZD5bXSxcbiAgcnVuSWQ6IHN0cmluZyxcbiAgY3J5cHRvS2V5OiBFbmNyeXB0aW9uS2V5UGFyYW1cbik6IFJlZHVjZXJzIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5nZXRDb21tb25SZWR1Y2VycyhnbG9iYWwpLFxuXG4gICAgUmVhZGFibGVTdHJlYW06ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuUmVhZGFibGVTdHJlYW0pKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIC8vIFN0cmVhbSBtdXN0IG5vdCBiZSBsb2NrZWQgd2hlbiBwYXNzaW5nIGFjcm9zcyBleGVjdXRpb24gYm91bmRhcnlcbiAgICAgIGlmICh2YWx1ZS5sb2NrZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWFkYWJsZVN0cmVhbSBpcyBsb2NrZWQnKTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIHN0cmVhbSBhbHJlYWR5IGhhcyB0aGUgbmFtZSBzeW1ib2wgc2V0LCBpbiB3aGljaCBjYXNlXG4gICAgICAvLyBpdCdzIGFscmVhZHkgYmVpbmcgc3VuayB0byB0aGUgc2VydmVyIGFuZCB3ZSBjYW4ganVzdCByZXR1cm4gdGhlXG4gICAgICAvLyBuYW1lIGFuZCB0eXBlLlxuICAgICAgbGV0IG5hbWUgPSB2YWx1ZVtTVFJFQU1fTkFNRV9TWU1CT0xdO1xuICAgICAgbGV0IHR5cGUgPSB2YWx1ZVtTVFJFQU1fVFlQRV9TWU1CT0xdO1xuXG4gICAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgY29uc3Qgc3RyZWFtSWQgPSAoKGdsb2JhbCBhcyBhbnkpW1NUQUJMRV9VTElEXSB8fCBkZWZhdWx0VWxpZCkoKTtcbiAgICAgICAgbmFtZSA9IGBzdHJtXyR7c3RyZWFtSWR9YDtcbiAgICAgICAgdHlwZSA9IGdldFN0cmVhbVR5cGUodmFsdWUpO1xuXG4gICAgICAgIGNvbnN0IHdyaXRhYmxlID0gbmV3IFdvcmtmbG93U2VydmVyV3JpdGFibGVTdHJlYW0obmFtZSwgcnVuSWQpO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ2J5dGVzJykge1xuICAgICAgICAgIG9wcy5wdXNoKHZhbHVlLnBpcGVUbyh3cml0YWJsZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9wcy5wdXNoKFxuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgICAgLnBpcGVUaHJvdWdoKFxuICAgICAgICAgICAgICAgIGdldFNlcmlhbGl6ZVN0cmVhbShcbiAgICAgICAgICAgICAgICAgIGdldFN0ZXBSZWR1Y2VycyhnbG9iYWwsIG9wcywgcnVuSWQsIGNyeXB0b0tleSksXG4gICAgICAgICAgICAgICAgICBjcnlwdG9LZXlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLnBpcGVUbyh3cml0YWJsZSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHM6IFNlcmlhbGl6YWJsZVNwZWNpYWxbJ1JlYWRhYmxlU3RyZWFtJ10gPSB7IG5hbWUgfTtcbiAgICAgIGlmICh0eXBlKSBzLnR5cGUgPSB0eXBlO1xuICAgICAgcmV0dXJuIHM7XG4gICAgfSxcblxuICAgIFdyaXRhYmxlU3RyZWFtOiAodmFsdWUpID0+IHtcbiAgICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgZ2xvYmFsLldyaXRhYmxlU3RyZWFtKSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBsZXQgbmFtZSA9IHZhbHVlW1NUUkVBTV9OQU1FX1NZTUJPTF07XG4gICAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgY29uc3Qgc3RyZWFtSWQgPSAoKGdsb2JhbCBhcyBhbnkpW1NUQUJMRV9VTElEXSB8fCBkZWZhdWx0VWxpZCkoKTtcbiAgICAgICAgbmFtZSA9IGBzdHJtXyR7c3RyZWFtSWR9YDtcbiAgICAgICAgb3BzLnB1c2goXG4gICAgICAgICAgbmV3IFdvcmtmbG93U2VydmVyUmVhZGFibGVTdHJlYW0obmFtZSlcbiAgICAgICAgICAgIC5waXBlVGhyb3VnaChcbiAgICAgICAgICAgICAgZ2V0RGVzZXJpYWxpemVTdHJlYW0oXG4gICAgICAgICAgICAgICAgZ2V0U3RlcFJldml2ZXJzKGdsb2JhbCwgb3BzLCBydW5JZCwgY3J5cHRvS2V5KSxcbiAgICAgICAgICAgICAgICBjcnlwdG9LZXlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGVUbyh2YWx1ZSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgbmFtZSB9O1xuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21tb25SZXZpdmVycyhnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBnbG9iYWxUaGlzKSB7XG4gIGZ1bmN0aW9uIHJldml2ZUFycmF5QnVmZmVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAvLyBIYW5kbGUgc2VudGluZWwgdmFsdWUgZm9yIHplcm8tbGVuZ3RoIGJ1ZmZlcnNcbiAgICBjb25zdCBiYXNlNjQgPSB2YWx1ZSA9PT0gJy4nID8gJycgOiB2YWx1ZTtcbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbShiYXNlNjQsICdiYXNlNjQnKTtcbiAgICBjb25zdCBhcnJheUJ1ZmZlciA9IG5ldyBnbG9iYWwuQXJyYXlCdWZmZXIoYnVmZmVyLmxlbmd0aCk7XG4gICAgY29uc3QgdWludDhBcnJheSA9IG5ldyBnbG9iYWwuVWludDhBcnJheShhcnJheUJ1ZmZlcik7XG4gICAgdWludDhBcnJheS5zZXQoYnVmZmVyKTtcbiAgICByZXR1cm4gYXJyYXlCdWZmZXI7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBBcnJheUJ1ZmZlcjogcmV2aXZlQXJyYXlCdWZmZXIsXG4gICAgQmlnSW50OiAodmFsdWU6IHN0cmluZykgPT4gZ2xvYmFsLkJpZ0ludCh2YWx1ZSksXG4gICAgQmlnSW50NjRBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGFiID0gcmV2aXZlQXJyYXlCdWZmZXIodmFsdWUpO1xuICAgICAgcmV0dXJuIG5ldyBnbG9iYWwuQmlnSW50NjRBcnJheShhYik7XG4gICAgfSxcbiAgICBCaWdVaW50NjRBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGFiID0gcmV2aXZlQXJyYXlCdWZmZXIodmFsdWUpO1xuICAgICAgcmV0dXJuIG5ldyBnbG9iYWwuQmlnVWludDY0QXJyYXkoYWIpO1xuICAgIH0sXG4gICAgRGF0ZTogKHZhbHVlKSA9PiBuZXcgZ2xvYmFsLkRhdGUodmFsdWUpLFxuICAgIERPTUV4Y2VwdGlvbjogKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBnbG9iYWwuRE9NRXhjZXB0aW9uKHZhbHVlLm1lc3NhZ2UsIHZhbHVlLm5hbWUpO1xuICAgICAgaWYgKHZhbHVlLnN0YWNrICE9PSB1bmRlZmluZWQpIGVycm9yLnN0YWNrID0gdmFsdWUuc3RhY2s7XG4gICAgICAvLyBET01FeGNlcHRpb24ncyBjb25zdHJ1Y3RvciBkb2Vzbid0IGFjY2VwdCBhIGNhdXNlIG9wdGlvbiwgc29cbiAgICAgIC8vIHdlIHNldCBpdCBtYW51YWxseSB3aGVuIHByZXNlbnQgaW4gdGhlIHNlcmlhbGl6ZWQgZGF0YS5cbiAgICAgIGlmICgnY2F1c2UnIGluIHZhbHVlKSBlcnJvci5jYXVzZSA9IHZhbHVlLmNhdXNlO1xuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH0sXG4gICAgRXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgZ2xvYmFsLkVycm9yKHZhbHVlLm1lc3NhZ2UpO1xuICAgICAgZXJyb3IubmFtZSA9IHZhbHVlLm5hbWU7XG4gICAgICBlcnJvci5zdGFjayA9IHZhbHVlLnN0YWNrO1xuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH0sXG4gICAgRmxvYXQzMkFycmF5OiAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgYWIgPSByZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSk7XG4gICAgICByZXR1cm4gbmV3IGdsb2JhbC5GbG9hdDMyQXJyYXkoYWIpO1xuICAgIH0sXG4gICAgRmxvYXQ2NEFycmF5OiAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgYWIgPSByZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSk7XG4gICAgICByZXR1cm4gbmV3IGdsb2JhbC5GbG9hdDY0QXJyYXkoYWIpO1xuICAgIH0sXG4gICAgSGVhZGVyczogKHZhbHVlKSA9PiBuZXcgZ2xvYmFsLkhlYWRlcnModmFsdWUpLFxuICAgIEludDhBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGFiID0gcmV2aXZlQXJyYXlCdWZmZXIodmFsdWUpO1xuICAgICAgcmV0dXJuIG5ldyBnbG9iYWwuSW50OEFycmF5KGFiKTtcbiAgICB9LFxuICAgIEludDE2QXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBhYiA9IHJldml2ZUFycmF5QnVmZmVyKHZhbHVlKTtcbiAgICAgIHJldHVybiBuZXcgZ2xvYmFsLkludDE2QXJyYXkoYWIpO1xuICAgIH0sXG4gICAgSW50MzJBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGFiID0gcmV2aXZlQXJyYXlCdWZmZXIodmFsdWUpO1xuICAgICAgcmV0dXJuIG5ldyBnbG9iYWwuSW50MzJBcnJheShhYik7XG4gICAgfSxcbiAgICBNYXA6ICh2YWx1ZSkgPT4gbmV3IGdsb2JhbC5NYXAodmFsdWUpLFxuICAgIFJlZ0V4cDogKHZhbHVlKSA9PiBuZXcgZ2xvYmFsLlJlZ0V4cCh2YWx1ZS5zb3VyY2UsIHZhbHVlLmZsYWdzKSxcbiAgICBDbGFzczogKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBjbGFzc0lkID0gdmFsdWUuY2xhc3NJZDtcbiAgICAgIC8vIFBhc3MgdGhlIGdsb2JhbCBvYmplY3QgdG8gc3VwcG9ydCBWTSBjb250ZXh0cyB3aGVyZSBjbGFzc2VzIGFyZSByZWdpc3RlcmVkXG4gICAgICAvLyBvbiB0aGUgVk0ncyBnbG9iYWwgcmF0aGVyIHRoYW4gdGhlIGhvc3QncyBnbG9iYWxUaGlzXG4gICAgICBjb25zdCBjbHMgPSBnZXRTZXJpYWxpemF0aW9uQ2xhc3MoY2xhc3NJZCwgZ2xvYmFsKTtcbiAgICAgIGlmICghY2xzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2xhc3MgXCIke2NsYXNzSWR9XCIgbm90IGZvdW5kLiBNYWtlIHN1cmUgdGhlIGNsYXNzIGlzIHJlZ2lzdGVyZWQgd2l0aCByZWdpc3RlclNlcmlhbGl6YXRpb25DbGFzcy5gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2xzO1xuICAgIH0sXG4gICAgSW5zdGFuY2U6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgY2xhc3NJZCA9IHZhbHVlLmNsYXNzSWQ7XG4gICAgICBjb25zdCBkYXRhID0gdmFsdWUuZGF0YTtcblxuICAgICAgLy8gTG9vayB1cCB0aGUgY2xhc3MgYnkgY2xhc3NJZCBmcm9tIHRoZSByZWdpc3RyeVxuICAgICAgLy8gUGFzcyB0aGUgZ2xvYmFsIG9iamVjdCB0byBzdXBwb3J0IFZNIGNvbnRleHRzIHdoZXJlIGNsYXNzZXMgYXJlIHJlZ2lzdGVyZWRcbiAgICAgIC8vIG9uIHRoZSBWTSdzIGdsb2JhbCByYXRoZXIgdGhhbiB0aGUgaG9zdCdzIGdsb2JhbFRoaXNcbiAgICAgIGNvbnN0IGNscyA9IGdldFNlcmlhbGl6YXRpb25DbGFzcyhjbGFzc0lkLCBnbG9iYWwpO1xuXG4gICAgICBpZiAoIWNscykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYENsYXNzIFwiJHtjbGFzc0lkfVwiIG5vdCBmb3VuZC4gTWFrZSBzdXJlIHRoZSBjbGFzcyBpcyByZWdpc3RlcmVkIHdpdGggcmVnaXN0ZXJTZXJpYWxpemF0aW9uQ2xhc3MuYFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBHZXQgdGhlIGRlc2VyaWFsaXplciBmcm9tIHRoZSBjbGFzc1xuICAgICAgY29uc3QgZGVzZXJpYWxpemUgPSAoY2xzIGFzIGFueSlbV09SS0ZMT1dfREVTRVJJQUxJWkVdO1xuICAgICAgaWYgKHR5cGVvZiBkZXNlcmlhbGl6ZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYENsYXNzIFwiJHtjbGFzc0lkfVwiIGRvZXMgbm90IGhhdmUgYSBzdGF0aWMgJHtTdHJpbmcoV09SS0ZMT1dfREVTRVJJQUxJWkUpfSBtZXRob2QuYFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBEZXNlcmlhbGl6ZSB0aGUgaW5zdGFuY2UgdXNpbmcgdGhlIGN1c3RvbSBkZXNlcmlhbGl6ZXJcbiAgICAgIHJldHVybiBkZXNlcmlhbGl6ZS5jYWxsKGNscywgZGF0YSk7XG4gICAgfSxcbiAgICBTZXQ6ICh2YWx1ZSkgPT4gbmV3IGdsb2JhbC5TZXQodmFsdWUpLFxuICAgIFVSTDogKHZhbHVlKSA9PiBuZXcgZ2xvYmFsLlVSTCh2YWx1ZSksXG4gICAgVVJMU2VhcmNoUGFyYW1zOiAodmFsdWUpID0+XG4gICAgICBuZXcgZ2xvYmFsLlVSTFNlYXJjaFBhcmFtcyh2YWx1ZSA9PT0gJy4nID8gJycgOiB2YWx1ZSksXG4gICAgVWludDhBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGFiID0gcmV2aXZlQXJyYXlCdWZmZXIodmFsdWUpO1xuICAgICAgcmV0dXJuIG5ldyBnbG9iYWwuVWludDhBcnJheShhYik7XG4gICAgfSxcbiAgICBVaW50OENsYW1wZWRBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGFiID0gcmV2aXZlQXJyYXlCdWZmZXIodmFsdWUpO1xuICAgICAgcmV0dXJuIG5ldyBnbG9iYWwuVWludDhDbGFtcGVkQXJyYXkoYWIpO1xuICAgIH0sXG4gICAgVWludDE2QXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBhYiA9IHJldml2ZUFycmF5QnVmZmVyKHZhbHVlKTtcbiAgICAgIHJldHVybiBuZXcgZ2xvYmFsLlVpbnQxNkFycmF5KGFiKTtcbiAgICB9LFxuICAgIFVpbnQzMkFycmF5OiAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgYWIgPSByZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSk7XG4gICAgICByZXR1cm4gbmV3IGdsb2JhbC5VaW50MzJBcnJheShhYik7XG4gICAgfSxcbiAgfSBhcyBjb25zdCBzYXRpc2ZpZXMgUGFydGlhbDxSZXZpdmVycz47XG59XG5cbi8qKlxuICogUmV2aXZlcnMgZm9yIGRlc2VyaWFsaXphdGlvbiBib3VuZGFyeSBmcm9tIHRoZSBjbGllbnQgc2lkZSxcbiAqIHJlY2VpdmluZyB0aGUgcmV0dXJuIHZhbHVlIGZyb20gdGhlIHdvcmtmbG93IGhhbmRsZXIuXG4gKlxuICogQHBhcmFtIGdsb2JhbFxuICogQHBhcmFtIG9wc1xuICogQHBhcmFtIHJ1bklkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlcm5hbFJldml2ZXJzKFxuICBnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBnbG9iYWxUaGlzLFxuICBvcHM6IFByb21pc2U8dm9pZD5bXSxcbiAgcnVuSWQ6IHN0cmluZyxcbiAgY3J5cHRvS2V5OiBFbmNyeXB0aW9uS2V5UGFyYW1cbik6IFJldml2ZXJzIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5nZXRDb21tb25SZXZpdmVycyhnbG9iYWwpLFxuXG4gICAgLy8gU3RlcEZ1bmN0aW9uIHNob3VsZCBub3QgYmUgcmV0dXJuZWQgZnJvbSB3b3JrZmxvd3MgdG8gY2xpZW50c1xuICAgIFN0ZXBGdW5jdGlvbjogKCkgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnU3RlcCBmdW5jdGlvbnMgY2Fubm90IGJlIGRlc2VyaWFsaXplZCBpbiBjbGllbnQgY29udGV4dC4gU3RlcCBmdW5jdGlvbnMgc2hvdWxkIG5vdCBiZSByZXR1cm5lZCBmcm9tIHdvcmtmbG93cy4nXG4gICAgICApO1xuICAgIH0sXG5cbiAgICBSZXF1ZXN0OiAodmFsdWUpID0+IHtcbiAgICAgIHJldHVybiBuZXcgZ2xvYmFsLlJlcXVlc3QodmFsdWUudXJsLCB7XG4gICAgICAgIG1ldGhvZDogdmFsdWUubWV0aG9kLFxuICAgICAgICBoZWFkZXJzOiBuZXcgZ2xvYmFsLkhlYWRlcnModmFsdWUuaGVhZGVycyksXG4gICAgICAgIGJvZHk6IHZhbHVlLmJvZHksXG4gICAgICAgIGR1cGxleDogdmFsdWUuZHVwbGV4LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBSZXNwb25zZTogKHZhbHVlKSA9PiB7XG4gICAgICAvLyBOb3RlOiBSZXNwb25zZSBjb25zdHJ1Y3RvciBvbmx5IGFjY2VwdHMgc3RhdHVzLCBzdGF0dXNUZXh0LCBhbmQgaGVhZGVyc1xuICAgICAgLy8gVGhlIHR5cGUsIHVybCwgYW5kIHJlZGlyZWN0ZWQgcHJvcGVydGllcyBhcmUgcmVhZC1vbmx5IGFuZCBzZXQgYnkgdGhlIGNvbnN0cnVjdG9yXG4gICAgICByZXR1cm4gbmV3IGdsb2JhbC5SZXNwb25zZSh2YWx1ZS5ib2R5LCB7XG4gICAgICAgIHN0YXR1czogdmFsdWUuc3RhdHVzLFxuICAgICAgICBzdGF0dXNUZXh0OiB2YWx1ZS5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiBuZXcgZ2xvYmFsLkhlYWRlcnModmFsdWUuaGVhZGVycyksXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFJlYWRhYmxlU3RyZWFtOiAodmFsdWUpID0+IHtcbiAgICAgIC8vIElmIHRoaXMgaGFzIGJvZHlJbml0LCBpdCBjYW1lIGZyb20gYSBSZXNwb25zZSBjb25zdHJ1Y3RvclxuICAgICAgLy8gQ29udmVydCBpdCB0byBhIFJFQUwgc3RyZWFtIG5vdyB0aGF0IHdlJ3JlIG91dHNpZGUgdGhlIHdvcmtmbG93XG4gICAgICBpZiAoJ2JvZHlJbml0JyBpbiB2YWx1ZSkge1xuICAgICAgICBjb25zdCBib2R5SW5pdCA9IHZhbHVlLmJvZHlJbml0O1xuICAgICAgICAvLyBVc2UgdGhlIG5hdGl2ZSBSZXNwb25zZSBjb25zdHJ1Y3RvciB0byBwcm9wZXJseSBjb252ZXJ0IEJvZHlJbml0IHRvIFJlYWRhYmxlU3RyZWFtXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gbmV3IGdsb2JhbC5SZXNwb25zZShib2R5SW5pdCk7XG4gICAgICAgIHJldHVybiByZXNwb25zZS5ib2R5O1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZWFkYWJsZSA9IG5ldyBXb3JrZmxvd1NlcnZlclJlYWRhYmxlU3RyZWFtKFxuICAgICAgICB2YWx1ZS5uYW1lLFxuICAgICAgICB2YWx1ZS5zdGFydEluZGV4XG4gICAgICApO1xuICAgICAgaWYgKHZhbHVlLnR5cGUgPT09ICdieXRlcycpIHtcbiAgICAgICAgLy8gRm9yIGJ5dGUgc3RyZWFtcywgdXNlIGZsdXNoYWJsZSBwaXBlIHdpdGggbG9jayBwb2xsaW5nXG4gICAgICAgIGNvbnN0IHN0YXRlID0gY3JlYXRlRmx1c2hhYmxlU3RhdGUoKTtcbiAgICAgICAgb3BzLnB1c2goc3RhdGUucHJvbWlzZSk7XG5cbiAgICAgICAgLy8gQ3JlYXRlIGFuIGlkZW50aXR5IHRyYW5zZm9ybSB0byBnaXZlIHRoZSB1c2VyIGEgcmVhZGFibGVcbiAgICAgICAgY29uc3QgeyByZWFkYWJsZTogdXNlclJlYWRhYmxlLCB3cml0YWJsZSB9ID1cbiAgICAgICAgICBuZXcgZ2xvYmFsLlRyYW5zZm9ybVN0cmVhbSgpO1xuXG4gICAgICAgIC8vIFN0YXJ0IHRoZSBmbHVzaGFibGUgcGlwZSBpbiB0aGUgYmFja2dyb3VuZFxuICAgICAgICBmbHVzaGFibGVQaXBlKHJlYWRhYmxlLCB3cml0YWJsZSwgc3RhdGUpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAvLyBFcnJvcnMgYXJlIGhhbmRsZWQgdmlhIHN0YXRlLnJlamVjdFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTdGFydCBwb2xsaW5nIHRvIGRldGVjdCB3aGVuIHVzZXIgcmVsZWFzZXMgbG9ja1xuICAgICAgICBwb2xsUmVhZGFibGVMb2NrKHVzZXJSZWFkYWJsZSwgc3RhdGUpO1xuXG4gICAgICAgIHJldHVybiB1c2VyUmVhZGFibGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm0gPSBnZXREZXNlcmlhbGl6ZVN0cmVhbShcbiAgICAgICAgICBnZXRFeHRlcm5hbFJldml2ZXJzKGdsb2JhbCwgb3BzLCBydW5JZCwgY3J5cHRvS2V5KSxcbiAgICAgICAgICBjcnlwdG9LZXlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBjcmVhdGVGbHVzaGFibGVTdGF0ZSgpO1xuICAgICAgICBvcHMucHVzaChzdGF0ZS5wcm9taXNlKTtcblxuICAgICAgICAvLyBTdGFydCB0aGUgZmx1c2hhYmxlIHBpcGUgaW4gdGhlIGJhY2tncm91bmRcbiAgICAgICAgZmx1c2hhYmxlUGlwZShyZWFkYWJsZSwgdHJhbnNmb3JtLndyaXRhYmxlLCBzdGF0ZSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgIC8vIEVycm9ycyBhcmUgaGFuZGxlZCB2aWEgc3RhdGUucmVqZWN0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFN0YXJ0IHBvbGxpbmcgdG8gZGV0ZWN0IHdoZW4gdXNlciByZWxlYXNlcyBsb2NrXG4gICAgICAgIHBvbGxSZWFkYWJsZUxvY2sodHJhbnNmb3JtLnJlYWRhYmxlLCBzdGF0ZSk7XG5cbiAgICAgICAgcmV0dXJuIHRyYW5zZm9ybS5yZWFkYWJsZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFdyaXRhYmxlU3RyZWFtOiAodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IHNlcmlhbGl6ZSA9IGdldFNlcmlhbGl6ZVN0cmVhbShcbiAgICAgICAgZ2V0RXh0ZXJuYWxSZWR1Y2VycyhnbG9iYWwsIG9wcywgcnVuSWQsIGNyeXB0b0tleSksXG4gICAgICAgIGNyeXB0b0tleVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHNlcnZlcldyaXRhYmxlID0gbmV3IFdvcmtmbG93U2VydmVyV3JpdGFibGVTdHJlYW0oXG4gICAgICAgIHZhbHVlLm5hbWUsXG4gICAgICAgIHJ1bklkXG4gICAgICApO1xuXG4gICAgICAvLyBDcmVhdGUgZmx1c2hhYmxlIHN0YXRlIGZvciB0aGlzIHN0cmVhbVxuICAgICAgY29uc3Qgc3RhdGUgPSBjcmVhdGVGbHVzaGFibGVTdGF0ZSgpO1xuICAgICAgb3BzLnB1c2goc3RhdGUucHJvbWlzZSk7XG5cbiAgICAgIC8vIFN0YXJ0IHRoZSBmbHVzaGFibGUgcGlwZSBpbiB0aGUgYmFja2dyb3VuZFxuICAgICAgZmx1c2hhYmxlUGlwZShzZXJpYWxpemUucmVhZGFibGUsIHNlcnZlcldyaXRhYmxlLCBzdGF0ZSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAvLyBFcnJvcnMgYXJlIGhhbmRsZWQgdmlhIHN0YXRlLnJlamVjdFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFN0YXJ0IHBvbGxpbmcgdG8gZGV0ZWN0IHdoZW4gdXNlciByZWxlYXNlcyBsb2NrXG4gICAgICBwb2xsV3JpdGFibGVMb2NrKHNlcmlhbGl6ZS53cml0YWJsZSwgc3RhdGUpO1xuXG4gICAgICByZXR1cm4gc2VyaWFsaXplLndyaXRhYmxlO1xuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogUmV2aXZlcnMgZm9yIGRlc2VyaWFsaXphdGlvbiBib3VuZGFyeSBmcm9tIHdpdGhpbiB0aGUgd29ya2Zsb3cgZXhlY3V0aW9uXG4gKiBlbnZpcm9ubWVudCwgcmVjZWl2aW5nIGFyZ3VtZW50cyBmcm9tIHRoZSBjbGllbnQgc2lkZSwgYW5kIHJldHVybiB2YWx1ZXNcbiAqIGZyb20gdGhlIHN0ZXBzLlxuICpcbiAqIEBwYXJhbSBnbG9iYWxcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3JrZmxvd1Jldml2ZXJzKFxuICBnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBnbG9iYWxUaGlzXG4pOiBSZXZpdmVycyB7XG4gIC8vIEdldCB0aGUgdXNlU3RlcCBmdW5jdGlvbiBmcm9tIHRoZSBWTSdzIGdsb2JhbFRoaXNcbiAgLy8gVGhpcyBpcyBzZXQgdXAgYnkgdGhlIHdvcmtmbG93IHJ1bm5lciBpbiB3b3JrZmxvdy50c1xuICAvLyBVc2UgU3ltYm9sLmZvciBkaXJlY3RseSB0byBhY2Nlc3MgdGhlIHN5bWJvbCBvbiB0aGUgZ2xvYmFsIG9iamVjdFxuICBjb25zdCB1c2VTdGVwID0gKGdsb2JhbCBhcyBhbnkpW1N5bWJvbC5mb3IoJ1dPUktGTE9XX1VTRV9TVEVQJyldIGFzXG4gICAgfCAoKFxuICAgICAgICBzdGVwSWQ6IHN0cmluZyxcbiAgICAgICAgY2xvc3VyZVZhcnNGbj86ICgpID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICApID0+ICguLi5hcmdzOiB1bmtub3duW10pID0+IFByb21pc2U8dW5rbm93bj4pXG4gICAgfCB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5nZXRDb21tb25SZXZpdmVycyhnbG9iYWwpLFxuICAgIC8vIFN0ZXBGdW5jdGlvbiByZXZpdmVyIGZvciB3b3JrZmxvdyBjb250ZXh0IC0gcmV0dXJucyB1c2VTdGVwIHdyYXBwZXJcbiAgICAvLyBUaGlzIGFsbG93cyBzdGVwIGZ1bmN0aW9ucyBwYXNzZWQgYXMgYXJndW1lbnRzIHRvIHN0YXJ0KCkgdG8gYmUgY2FsbGVkIGRpcmVjdGx5XG4gICAgLy8gZnJvbSB3b3JrZmxvdyBjb2RlLCBqdXN0IGxpa2Ugc3RlcCBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgc2FtZSBmaWxlXG4gICAgU3RlcEZ1bmN0aW9uOiAodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IHN0ZXBJZCA9IHZhbHVlLnN0ZXBJZDtcbiAgICAgIGNvbnN0IGNsb3N1cmVWYXJzID0gdmFsdWUuY2xvc3VyZVZhcnM7XG5cbiAgICAgIGlmICghdXNlU3RlcCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1dPUktGTE9XX1VTRV9TVEVQIG5vdCBmb3VuZCBvbiBnbG9iYWwgb2JqZWN0LiBTdGVwIGZ1bmN0aW9ucyBjYW5ub3QgYmUgZGVzZXJpYWxpemVkIG91dHNpZGUgd29ya2Zsb3cgY29udGV4dC4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjbG9zdXJlVmFycykge1xuICAgICAgICAvLyBGb3Igc3RlcCBmdW5jdGlvbnMgd2l0aCBjbG9zdXJlIHZhcmlhYmxlcywgY3JlYXRlIGEgd3JhcHBlciB0aGF0IHByb3ZpZGVzIHRoZW1cbiAgICAgICAgcmV0dXJuIHVzZVN0ZXAoc3RlcElkLCAoKSA9PiBjbG9zdXJlVmFycyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdXNlU3RlcChzdGVwSWQpO1xuICAgIH0sXG4gICAgUmVxdWVzdDogKHZhbHVlKSA9PiB7XG4gICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodmFsdWUsIGdsb2JhbC5SZXF1ZXN0LnByb3RvdHlwZSk7XG4gICAgICBjb25zdCByZXNwb25zZVdyaXRhYmxlID0gdmFsdWUucmVzcG9uc2VXcml0YWJsZTtcbiAgICAgIGlmIChyZXNwb25zZVdyaXRhYmxlKSB7XG4gICAgICAgICh2YWx1ZSBhcyBhbnkpW1dFQkhPT0tfUkVTUE9OU0VfV1JJVEFCTEVdID0gcmVzcG9uc2VXcml0YWJsZTtcbiAgICAgICAgZGVsZXRlIHZhbHVlLnJlc3BvbnNlV3JpdGFibGU7XG4gICAgICAgICh2YWx1ZSBhcyBhbnkpLnJlc3BvbmRXaXRoID0gKCkgPT4ge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdgcmVzcG9uZFdpdGgoKWAgbXVzdCBiZSBjYWxsZWQgZnJvbSB3aXRoaW4gYSBzdGVwIGZ1bmN0aW9uJ1xuICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgICBSZXNwb25zZTogKHZhbHVlKSA9PiB7XG4gICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodmFsdWUsIGdsb2JhbC5SZXNwb25zZS5wcm90b3R5cGUpO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0sXG4gICAgUmVhZGFibGVTdHJlYW06ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIEJvZHlJbml0IHRoYXQgc2hvdWxkIGJlIHdyYXBwZWQgaW4gYSBmYWtlIHN0cmVhbVxuICAgICAgaWYgKCdib2R5SW5pdCcgaW4gdmFsdWUpIHtcbiAgICAgICAgLy8gUmVjcmVhdGUgdGhlIGZha2Ugc3RyZWFtIHdpdGggdGhlIEJvZHlJbml0XG4gICAgICAgIHJldHVybiBPYmplY3QuY3JlYXRlKGdsb2JhbC5SZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsIHtcbiAgICAgICAgICBbQk9EWV9JTklUX1NZTUJPTF06IHtcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZS5ib2R5SW5pdCxcbiAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gUmVndWxhciBzdHJlYW0gaGFuZGxpbmdcbiAgICAgIHJldHVybiBPYmplY3QuY3JlYXRlKGdsb2JhbC5SZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUsIHtcbiAgICAgICAgW1NUUkVBTV9OQU1FX1NZTUJPTF06IHtcbiAgICAgICAgICB2YWx1ZTogdmFsdWUubmFtZSxcbiAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIFtTVFJFQU1fVFlQRV9TWU1CT0xdOiB7XG4gICAgICAgICAgdmFsdWU6IHZhbHVlLnR5cGUsXG4gICAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBXcml0YWJsZVN0cmVhbTogKHZhbHVlKSA9PiB7XG4gICAgICByZXR1cm4gT2JqZWN0LmNyZWF0ZShnbG9iYWwuV3JpdGFibGVTdHJlYW0ucHJvdG90eXBlLCB7XG4gICAgICAgIFtTVFJFQU1fTkFNRV9TWU1CT0xdOiB7XG4gICAgICAgICAgdmFsdWU6IHZhbHVlLm5hbWUsXG4gICAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXZpdmVycyBmb3IgZGVzZXJpYWxpemF0aW9uIGJvdW5kYXJ5IGZyb20gd2l0aGluIHRoZSBzdGVwIGV4ZWN1dGlvblxuICogZW52aXJvbm1lbnQsIHJlY2VpdmluZyBhcmd1bWVudHMgZnJvbSB0aGUgd29ya2Zsb3cgaGFuZGxlci5cbiAqXG4gKiBAcGFyYW0gZ2xvYmFsXG4gKiBAcGFyYW0gb3BzXG4gKiBAcGFyYW0gcnVuSWRcbiAqIEByZXR1cm5zXG4gKi9cbmZ1bmN0aW9uIGdldFN0ZXBSZXZpdmVycyhcbiAgZ2xvYmFsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gZ2xvYmFsVGhpcyxcbiAgb3BzOiBQcm9taXNlPHZvaWQ+W10sXG4gIHJ1bklkOiBzdHJpbmcsXG4gIGNyeXB0b0tleTogRW5jcnlwdGlvbktleVBhcmFtXG4pOiBSZXZpdmVycyB7XG4gIHJldHVybiB7XG4gICAgLi4uZ2V0Q29tbW9uUmV2aXZlcnMoZ2xvYmFsKSxcblxuICAgIC8vIFN0ZXBGdW5jdGlvbiByZXZpdmVyIGZvciBzdGVwIGNvbnRleHQgLSByZXR1cm5zIHJhdyBzdGVwIGZ1bmN0aW9uXG4gICAgLy8gd2l0aCBjbG9zdXJlIHZhcmlhYmxlIHN1cHBvcnQgdmlhIEFzeW5jTG9jYWxTdG9yYWdlXG4gICAgU3RlcEZ1bmN0aW9uOiAodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IHN0ZXBJZCA9IHZhbHVlLnN0ZXBJZDtcbiAgICAgIGNvbnN0IGNsb3N1cmVWYXJzID0gdmFsdWUuY2xvc3VyZVZhcnM7XG5cbiAgICAgIGNvbnN0IHN0ZXBGbiA9IGdldFN0ZXBGdW5jdGlvbihzdGVwSWQpO1xuICAgICAgaWYgKCFzdGVwRm4pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBTdGVwIGZ1bmN0aW9uIFwiJHtzdGVwSWR9XCIgbm90IGZvdW5kLiBNYWtlIHN1cmUgdGhlIHN0ZXAgZnVuY3Rpb24gaXMgcmVnaXN0ZXJlZC5gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIGNsb3N1cmUgdmFyaWFibGVzIHdlcmUgc2VyaWFsaXplZCwgcmV0dXJuIGEgd3JhcHBlciBmdW5jdGlvblxuICAgICAgLy8gdGhhdCBzZXRzIHVwIEFzeW5jTG9jYWxTdG9yYWdlIGNvbnRleHQgd2hlbiBpbnZva2VkXG4gICAgICBpZiAoY2xvc3VyZVZhcnMpIHtcbiAgICAgICAgY29uc3Qgd3JhcHBlZFN0ZXBGbiA9ICgoLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgICAgICAvLyBHZXQgdGhlIGN1cnJlbnQgY29udGV4dCBmcm9tIEFzeW5jTG9jYWxTdG9yYWdlXG4gICAgICAgICAgY29uc3QgY3VycmVudENvbnRleHQgPSBjb250ZXh0U3RvcmFnZS5nZXRTdG9yZSgpO1xuXG4gICAgICAgICAgaWYgKCFjdXJyZW50Q29udGV4dCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAnQ2Fubm90IGNhbGwgc3RlcCBmdW5jdGlvbiB3aXRoIGNsb3N1cmUgdmFyaWFibGVzIG91dHNpZGUgc3RlcCBjb250ZXh0J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgY29udGV4dCB3aXRoIHRoZSBjbG9zdXJlIHZhcmlhYmxlcyBtZXJnZWQgaW5cbiAgICAgICAgICBjb25zdCBuZXdDb250ZXh0ID0ge1xuICAgICAgICAgICAgLi4uY3VycmVudENvbnRleHQsXG4gICAgICAgICAgICBjbG9zdXJlVmFycyxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgLy8gUnVuIHRoZSBzdGVwIGZ1bmN0aW9uIHdpdGggdGhlIG5ldyBjb250ZXh0IHRoYXQgaW5jbHVkZXMgY2xvc3VyZSB2YXJzXG4gICAgICAgICAgcmV0dXJuIGNvbnRleHRTdG9yYWdlLnJ1bihuZXdDb250ZXh0LCAoKSA9PiBzdGVwRm4oLi4uYXJncykpO1xuICAgICAgICB9KSBhcyBhbnk7XG5cbiAgICAgICAgLy8gQ29weSBwcm9wZXJ0aWVzIGZyb20gb3JpZ2luYWwgc3RlcCBmdW5jdGlvblxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkod3JhcHBlZFN0ZXBGbiwgJ25hbWUnLCB7XG4gICAgICAgICAgdmFsdWU6IHN0ZXBGbi5uYW1lLFxuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdyYXBwZWRTdGVwRm4sICdzdGVwSWQnLCB7XG4gICAgICAgICAgdmFsdWU6IHN0ZXBJZCxcbiAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChzdGVwRm4ubWF4UmV0cmllcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgd3JhcHBlZFN0ZXBGbi5tYXhSZXRyaWVzID0gc3RlcEZuLm1heFJldHJpZXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gd3JhcHBlZFN0ZXBGbjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHN0ZXBGbjtcbiAgICB9LFxuXG4gICAgUmVxdWVzdDogKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCByZXNwb25zZVdyaXRhYmxlID0gdmFsdWUucmVzcG9uc2VXcml0YWJsZTtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgZ2xvYmFsLlJlcXVlc3QodmFsdWUudXJsLCB7XG4gICAgICAgIG1ldGhvZDogdmFsdWUubWV0aG9kLFxuICAgICAgICBoZWFkZXJzOiBuZXcgZ2xvYmFsLkhlYWRlcnModmFsdWUuaGVhZGVycyksXG4gICAgICAgIGJvZHk6IHZhbHVlLmJvZHksXG4gICAgICAgIGR1cGxleDogdmFsdWUuZHVwbGV4LFxuICAgICAgfSk7XG4gICAgICBpZiAocmVzcG9uc2VXcml0YWJsZSkge1xuICAgICAgICByZXF1ZXN0LnJlc3BvbmRXaXRoID0gYXN5bmMgKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHdyaXRlciA9IHJlc3BvbnNlV3JpdGFibGUuZ2V0V3JpdGVyKCk7XG4gICAgICAgICAgYXdhaXQgd3JpdGVyLndyaXRlKHJlc3BvbnNlKTtcbiAgICAgICAgICBhd2FpdCB3cml0ZXIuY2xvc2UoKTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXF1ZXN0O1xuICAgIH0sXG4gICAgUmVzcG9uc2U6ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gTm90ZTogUmVzcG9uc2UgY29uc3RydWN0b3Igb25seSBhY2NlcHRzIHN0YXR1cywgc3RhdHVzVGV4dCwgYW5kIGhlYWRlcnNcbiAgICAgIC8vIFRoZSB0eXBlLCB1cmwsIGFuZCByZWRpcmVjdGVkIHByb3BlcnRpZXMgYXJlIHJlYWQtb25seSBhbmQgc2V0IGJ5IHRoZSBjb25zdHJ1Y3RvclxuICAgICAgcmV0dXJuIG5ldyBnbG9iYWwuUmVzcG9uc2UodmFsdWUuYm9keSwge1xuICAgICAgICBzdGF0dXM6IHZhbHVlLnN0YXR1cyxcbiAgICAgICAgc3RhdHVzVGV4dDogdmFsdWUuc3RhdHVzVGV4dCxcbiAgICAgICAgaGVhZGVyczogbmV3IGdsb2JhbC5IZWFkZXJzKHZhbHVlLmhlYWRlcnMpLFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBSZWFkYWJsZVN0cmVhbTogKHZhbHVlKSA9PiB7XG4gICAgICAvLyBJZiB0aGlzIGhhcyBib2R5SW5pdCwgaXQgY2FtZSBmcm9tIGEgUmVzcG9uc2UgY29uc3RydWN0b3JcbiAgICAgIC8vIENvbnZlcnQgaXQgdG8gYSBSRUFMIHN0cmVhbSBub3cgdGhhdCB3ZSdyZSBpbiB0aGUgc3RlcCBlbnZpcm9ubWVudFxuICAgICAgaWYgKCdib2R5SW5pdCcgaW4gdmFsdWUpIHtcbiAgICAgICAgY29uc3QgYm9keUluaXQgPSB2YWx1ZS5ib2R5SW5pdDtcbiAgICAgICAgLy8gVXNlIHRoZSBuYXRpdmUgUmVzcG9uc2UgY29uc3RydWN0b3IgdG8gcHJvcGVybHkgY29udmVydCBCb2R5SW5pdCB0byBSZWFkYWJsZVN0cmVhbVxuICAgICAgICBjb25zdCByZXNwb25zZSA9IG5ldyBnbG9iYWwuUmVzcG9uc2UoYm9keUluaXQpO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2UuYm9keTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVhZGFibGUgPSBuZXcgV29ya2Zsb3dTZXJ2ZXJSZWFkYWJsZVN0cmVhbSh2YWx1ZS5uYW1lKTtcbiAgICAgIGlmICh2YWx1ZS50eXBlID09PSAnYnl0ZXMnKSB7XG4gICAgICAgIC8vIEZvciBieXRlIHN0cmVhbXMsIHVzZSBmbHVzaGFibGUgcGlwZSB3aXRoIGxvY2sgcG9sbGluZ1xuICAgICAgICBjb25zdCBzdGF0ZSA9IGNyZWF0ZUZsdXNoYWJsZVN0YXRlKCk7XG4gICAgICAgIG9wcy5wdXNoKHN0YXRlLnByb21pc2UpO1xuXG4gICAgICAgIC8vIENyZWF0ZSBhbiBpZGVudGl0eSB0cmFuc2Zvcm0gdG8gZ2l2ZSB0aGUgdXNlciBhIHJlYWRhYmxlXG4gICAgICAgIGNvbnN0IHsgcmVhZGFibGU6IHVzZXJSZWFkYWJsZSwgd3JpdGFibGUgfSA9XG4gICAgICAgICAgbmV3IGdsb2JhbC5UcmFuc2Zvcm1TdHJlYW0oKTtcblxuICAgICAgICAvLyBTdGFydCB0aGUgZmx1c2hhYmxlIHBpcGUgaW4gdGhlIGJhY2tncm91bmRcbiAgICAgICAgZmx1c2hhYmxlUGlwZShyZWFkYWJsZSwgd3JpdGFibGUsIHN0YXRlKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgLy8gRXJyb3JzIGFyZSBoYW5kbGVkIHZpYSBzdGF0ZS5yZWplY3RcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU3RhcnQgcG9sbGluZyB0byBkZXRlY3Qgd2hlbiB1c2VyIHJlbGVhc2VzIGxvY2tcbiAgICAgICAgcG9sbFJlYWRhYmxlTG9jayh1c2VyUmVhZGFibGUsIHN0YXRlKTtcblxuICAgICAgICByZXR1cm4gdXNlclJlYWRhYmxlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtID0gZ2V0RGVzZXJpYWxpemVTdHJlYW0oXG4gICAgICAgICAgZ2V0U3RlcFJldml2ZXJzKGdsb2JhbCwgb3BzLCBydW5JZCwgY3J5cHRvS2V5KSxcbiAgICAgICAgICBjcnlwdG9LZXlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBjcmVhdGVGbHVzaGFibGVTdGF0ZSgpO1xuICAgICAgICBvcHMucHVzaChzdGF0ZS5wcm9taXNlKTtcblxuICAgICAgICAvLyBTdGFydCB0aGUgZmx1c2hhYmxlIHBpcGUgaW4gdGhlIGJhY2tncm91bmRcbiAgICAgICAgZmx1c2hhYmxlUGlwZShyZWFkYWJsZSwgdHJhbnNmb3JtLndyaXRhYmxlLCBzdGF0ZSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgIC8vIEVycm9ycyBhcmUgaGFuZGxlZCB2aWEgc3RhdGUucmVqZWN0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFN0YXJ0IHBvbGxpbmcgdG8gZGV0ZWN0IHdoZW4gdXNlciByZWxlYXNlcyBsb2NrXG4gICAgICAgIHBvbGxSZWFkYWJsZUxvY2sodHJhbnNmb3JtLnJlYWRhYmxlLCBzdGF0ZSk7XG5cbiAgICAgICAgcmV0dXJuIHRyYW5zZm9ybS5yZWFkYWJsZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFdyaXRhYmxlU3RyZWFtOiAodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IHNlcmlhbGl6ZSA9IGdldFNlcmlhbGl6ZVN0cmVhbShcbiAgICAgICAgZ2V0U3RlcFJlZHVjZXJzKGdsb2JhbCwgb3BzLCBydW5JZCwgY3J5cHRvS2V5KSxcbiAgICAgICAgY3J5cHRvS2V5XG4gICAgICApO1xuICAgICAgY29uc3Qgc2VydmVyV3JpdGFibGUgPSBuZXcgV29ya2Zsb3dTZXJ2ZXJXcml0YWJsZVN0cmVhbShcbiAgICAgICAgdmFsdWUubmFtZSxcbiAgICAgICAgcnVuSWRcbiAgICAgICk7XG5cbiAgICAgIC8vIENyZWF0ZSBmbHVzaGFibGUgc3RhdGUgZm9yIHRoaXMgc3RyZWFtXG4gICAgICBjb25zdCBzdGF0ZSA9IGNyZWF0ZUZsdXNoYWJsZVN0YXRlKCk7XG4gICAgICBvcHMucHVzaChzdGF0ZS5wcm9taXNlKTtcblxuICAgICAgLy8gU3RhcnQgdGhlIGZsdXNoYWJsZSBwaXBlIGluIHRoZSBiYWNrZ3JvdW5kXG4gICAgICBmbHVzaGFibGVQaXBlKHNlcmlhbGl6ZS5yZWFkYWJsZSwgc2VydmVyV3JpdGFibGUsIHN0YXRlKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIC8vIEVycm9ycyBhcmUgaGFuZGxlZCB2aWEgc3RhdGUucmVqZWN0XG4gICAgICB9KTtcblxuICAgICAgLy8gU3RhcnQgcG9sbGluZyB0byBkZXRlY3Qgd2hlbiB1c2VyIHJlbGVhc2VzIGxvY2tcbiAgICAgIHBvbGxXcml0YWJsZUxvY2soc2VyaWFsaXplLndyaXRhYmxlLCBzdGF0ZSk7XG5cbiAgICAgIHJldHVybiBzZXJpYWxpemUud3JpdGFibGU7XG4gICAgfSxcbiAgfTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRW5jcnlwdGlvbiBIZWxwZXJzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRW5jcnlwdCBkYXRhIGlmIHRoZSB3b3JsZCBzdXBwb3J0cyBlbmNyeXB0aW9uLlxuICogUmV0dXJucyBvcmlnaW5hbCBkYXRhIGlmIGVuY3J5cHRpb24gaXMgbm90IGF2YWlsYWJsZS5cbiAqXG4gKiBAcGFyYW0gZGF0YSAtIFNlcmlhbGl6ZWQgZGF0YSB0byBlbmNyeXB0XG4gKiBAcGFyYW0ga2V5IC0gRW5jcnlwdGlvbiBrZXkgKHVuZGVmaW5lZCB0byBza2lwIGVuY3J5cHRpb24pXG4gKiBAcGFyYW0gY29udGV4dCAtIEVuY3J5cHRpb24gY29udGV4dCB3aXRoIHJ1bklkXG4gKiBAcmV0dXJucyBFbmNyeXB0ZWQgZGF0YSBpZiBlbmNyeXB0aW9uIGF2YWlsYWJsZSwgb3JpZ2luYWwgZGF0YSBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1heWJlRW5jcnlwdChcbiAgZGF0YTogVWludDhBcnJheSxcbiAga2V5OiBDcnlwdG9LZXkgfCB1bmRlZmluZWRcbik6IFByb21pc2U8VWludDhBcnJheT4ge1xuICBpZiAoIWtleSkgcmV0dXJuIGRhdGE7XG4gIGNvbnN0IGVuY3J5cHRlZCA9IGF3YWl0IGFlc0djbUVuY3J5cHQoa2V5LCBkYXRhKTtcbiAgcmV0dXJuIGVuY29kZVdpdGhGb3JtYXRQcmVmaXgoXG4gICAgU2VyaWFsaXphdGlvbkZvcm1hdC5FTkNSWVBURUQsXG4gICAgZW5jcnlwdGVkXG4gICkgYXMgVWludDhBcnJheTtcbn1cblxuLyoqXG4gKiBEZWNyeXB0IGRhdGEgaWYgaXQgaGFzIHRoZSAnZW5jcicgcHJlZml4LlxuICpcbiAqIEBwYXJhbSBkYXRhIC0gRGF0YSB0aGF0IG1heSBiZSBlbmNyeXB0ZWRcbiAqIEBwYXJhbSBrZXkgLSBFbmNyeXB0aW9uIGtleSAodW5kZWZpbmVkIGlmIG5vIGtleSBhdmFpbGFibGUpXG4gKiBAcmV0dXJucyBEZWNyeXB0ZWQgZGF0YSBpZiBlbmNyeXB0ZWQsIG9yaWdpbmFsIGRhdGEgb3RoZXJ3aXNlXG4gKiBAdGhyb3dzIHtXb3JrZmxvd1J1bnRpbWVFcnJvcn0gSWYgdGhlIGRhdGEgaXMgZW5jcnlwdGVkIGJ1dCBubyBrZXkgaXNcbiAqICAgYXZhaWxhYmxlLiBDYWxsZXJzIChlLmcuLCBgUnVuLnBvbGxSZXR1cm5WYWx1ZSgpYCwgYGh5ZHJhdGVTdGVwUmV0dXJuVmFsdWVgKVxuICogICBzaG91bGQgYmUgYXdhcmUgdGhpcyBjYW4gc3VyZmFjZSBhcyBhIHJlamVjdGVkIHByb21pc2UgZHVyaW5nIGtleSByb3RhdGlvblxuICogICBvciBtaXNjb25maWd1cmF0aW9uIHNjZW5hcmlvcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1heWJlRGVjcnlwdChcbiAgZGF0YTogVWludDhBcnJheSB8IHVua25vd24sXG4gIGtleTogQ3J5cHRvS2V5IHwgdW5kZWZpbmVkXG4pOiBQcm9taXNlPFVpbnQ4QXJyYXkgfCB1bmtub3duPiB7XG4gIC8vIExlZ2FjeSBzcGVjVmVyc2lvbiAxIHJ1bnMgc3RvcmVkIGV2ZW50IGRhdGEgYXMgcGxhaW4gSlNPTiBhcnJheXNcbiAgLy8gKG5vdCBiaW5hcnkgVWludDhBcnJheSkuIFBhc3MgdGhyb3VnaCBhcy1pcyBmb3IgYmFja3dhcmRzIGNvbXBhdC5cbiAgaWYgKCEoZGF0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBpZiAoaXNFbmNyeXB0ZWQoZGF0YSkpIHtcbiAgICBpZiAoIWtleSkge1xuICAgICAgdGhyb3cgbmV3IFdvcmtmbG93UnVudGltZUVycm9yKFxuICAgICAgICAnRW5jcnlwdGVkIGRhdGEgZW5jb3VudGVyZWQgYnV0IG5vIGVuY3J5cHRpb24ga2V5IGlzIGF2YWlsYWJsZS4gJyArXG4gICAgICAgICAgJ0VuY3J5cHRpb24gaXMgbm90IGNvbmZpZ3VyZWQgb3Igbm8ga2V5IHdhcyBwcm92aWRlZCBmb3IgdGhpcyBydW4uJ1xuICAgICAgKTtcbiAgICB9XG4gICAgLy8gU3RyaXAgdGhlICdlbmNyJyBmb3JtYXQgcHJlZml4IOKAlCB0aGUgcHJlZml4IGlzIGEgY29yZSBmcmFtaW5nIGNvbmNlcm5cbiAgICBjb25zdCB7IHBheWxvYWQgfSA9IGRlY29kZUZvcm1hdFByZWZpeChkYXRhKTtcbiAgICByZXR1cm4gYWVzR2NtRGVjcnlwdChrZXksIHBheWxvYWQpO1xuICB9XG5cbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERlaHlkcmF0ZSAvIEh5ZHJhdGUgRnVuY3Rpb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ2FsbGVkIGZyb20gdGhlIGBzdGFydCgpYCBmdW5jdGlvbiB0byBzZXJpYWxpemUgdGhlIHdvcmtmbG93IGFyZ3VtZW50c1xuICogaW50byBhIGZvcm1hdCB0aGF0IGNhbiBiZSBzYXZlZCB0byB0aGUgZGF0YWJhc2UgYW5kIHRoZW4gaHlkcmF0ZWQgZnJvbVxuICogd2l0aGluIHRoZSB3b3JrZmxvdyBleGVjdXRpb24gZW52aXJvbm1lbnQuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNlcmlhbGl6ZVxuICogQHBhcmFtIHJ1bklkIC0gVGhlIHdvcmtmbG93IHJ1biBJRCAocmVxdWlyZWQgZm9yIGVuY3J5cHRpb24gY29udGV4dClcbiAqIEBwYXJhbSBrZXkgLSBFbmNyeXB0aW9uIGtleSAodW5kZWZpbmVkIHRvIHNraXAgZW5jcnlwdGlvbilcbiAqIEBwYXJhbSBvcHMgLSBQcm9taXNlIGFycmF5IGZvciBzdHJlYW0gb3BlcmF0aW9uc1xuICogQHBhcmFtIGdsb2JhbCAtIEdsb2JhbCBvYmplY3QgZm9yIHNlcmlhbGl6YXRpb24gY29udGV4dFxuICogQHBhcmFtIHYxQ29tcGF0IC0gRW5hYmxlIGxlZ2FjeSB2MSBjb21wYXRpYmlsaXR5IG1vZGVcbiAqIEByZXR1cm5zIFRoZSBkZWh5ZHJhdGVkIHZhbHVlIGFzIGJpbmFyeSBkYXRhIChVaW50OEFycmF5KSB3aXRoIGZvcm1hdCBwcmVmaXhcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlaHlkcmF0ZVdvcmtmbG93QXJndW1lbnRzKFxuICB2YWx1ZTogdW5rbm93bixcbiAgcnVuSWQ6IHN0cmluZyxcbiAga2V5OiBDcnlwdG9LZXkgfCB1bmRlZmluZWQsXG4gIG9wczogUHJvbWlzZTx2b2lkPltdID0gW10sXG4gIGdsb2JhbDogUmVjb3JkPHN0cmluZywgYW55PiA9IGdsb2JhbFRoaXMsXG4gIHYxQ29tcGF0ID0gZmFsc2Vcbik6IFByb21pc2U8VWludDhBcnJheSB8IHVua25vd24+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzdHIgPSBzdHJpbmdpZnkodmFsdWUsIGdldEV4dGVybmFsUmVkdWNlcnMoZ2xvYmFsLCBvcHMsIHJ1bklkLCBrZXkpKTtcbiAgICBpZiAodjFDb21wYXQpIHtcbiAgICAgIHJldHVybiByZXZpdmUoc3RyKTtcbiAgICB9XG4gICAgY29uc3QgcGF5bG9hZCA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShzdHIpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBlbmNvZGVXaXRoRm9ybWF0UHJlZml4KFxuICAgICAgU2VyaWFsaXphdGlvbkZvcm1hdC5ERVZBTFVFX1YxLFxuICAgICAgcGF5bG9hZFxuICAgICkgYXMgVWludDhBcnJheTtcblxuICAgIC8vIEVuY3J5cHQgaWYgd29ybGQgc3VwcG9ydHMgZW5jcnlwdGlvblxuICAgIHJldHVybiBtYXliZUVuY3J5cHQoc2VyaWFsaXplZCwga2V5KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgV29ya2Zsb3dSdW50aW1lRXJyb3IoXG4gICAgICBmb3JtYXRTZXJpYWxpemF0aW9uRXJyb3IoJ3dvcmtmbG93IGFyZ3VtZW50cycsIGVycm9yKSxcbiAgICAgIHsgc2x1ZzogJ3NlcmlhbGl6YXRpb24tZmFpbGVkJywgY2F1c2U6IGVycm9yIH1cbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogQ2FsbGVkIGZyb20gd29ya2Zsb3cgZXhlY3V0aW9uIGVudmlyb25tZW50IHRvIGh5ZHJhdGUgdGhlIHdvcmtmbG93XG4gKiBhcmd1bWVudHMgZnJvbSB0aGUgZGF0YWJhc2UgYXQgdGhlIHN0YXJ0IG9mIHdvcmtmbG93IGV4ZWN1dGlvbi5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBCaW5hcnkgc2VyaWFsaXplZCBkYXRhIChVaW50OEFycmF5KSB3aXRoIGZvcm1hdCBwcmVmaXhcbiAqIEBwYXJhbSBfcnVuSWQgLSBXb3JrZmxvdyBydW4gSUQgKHJlc2VydmVkIGZvciBmdXR1cmUgZGVjcnlwdGlvbiBjb250ZXh0OyBkZWNyeXB0aW9uIGlzIGN1cnJlbnRseSBkcml2ZW4gc29sZWx5IGJ5IHRoZSBwcm92aWRlZCBrZXkpXG4gKiBAcGFyYW0ga2V5IC0gRW5jcnlwdGlvbiBrZXkgKHVuZGVmaW5lZCB0byBza2lwIGRlY3J5cHRpb24pXG4gKiBAcGFyYW0gZ2xvYmFsIC0gR2xvYmFsIG9iamVjdCBmb3IgZGVzZXJpYWxpemF0aW9uIGNvbnRleHRcbiAqIEBwYXJhbSBleHRyYVJldml2ZXJzIC0gQWRkaXRpb25hbCByZXZpdmVycyBmb3IgY3VzdG9tIHR5cGVzXG4gKiBAcmV0dXJucyBUaGUgaHlkcmF0ZWQgdmFsdWVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGh5ZHJhdGVXb3JrZmxvd0FyZ3VtZW50cyhcbiAgdmFsdWU6IFVpbnQ4QXJyYXkgfCB1bmtub3duLFxuICBfcnVuSWQ6IHN0cmluZyxcbiAga2V5OiBDcnlwdG9LZXkgfCB1bmRlZmluZWQsXG4gIGdsb2JhbDogUmVjb3JkPHN0cmluZywgYW55PiA9IGdsb2JhbFRoaXMsXG4gIGV4dHJhUmV2aXZlcnM6IFJlY29yZDxzdHJpbmcsICh2YWx1ZTogYW55KSA9PiBhbnk+ID0ge31cbikge1xuICAvLyBEZWNyeXB0IGlmIG5lZWRlZFxuICBjb25zdCBkZWNyeXB0ZWQgPSBhd2FpdCBtYXliZURlY3J5cHQodmFsdWUsIGtleSk7XG5cbiAgLy8gTGVnYWN5IHNwZWNWZXJzaW9uIDEgcnVucyBzdG9yZWQgZGF0YSBhcyBwbGFpbiBKU09OIGFycmF5cyAobm90IGJpbmFyeSkuXG4gIC8vIFRoZXNlIHBhc3MgdGhyb3VnaCBtYXliZURlY3J5cHQgdW5jaGFuZ2VkIGFuZCBhcmUgZGVzZXJpYWxpemVkIGRpcmVjdGx5XG4gIC8vIHZpYSBkZXZhbHVlJ3MgdW5mbGF0dGVuKCkuXG4gIGlmICghKGRlY3J5cHRlZCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgcmV0dXJuIHVuZmxhdHRlbihkZWNyeXB0ZWQgYXMgYW55W10sIHtcbiAgICAgIC4uLmdldFdvcmtmbG93UmV2aXZlcnMoZ2xvYmFsKSxcbiAgICAgIC4uLmV4dHJhUmV2aXZlcnMsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCB7IGZvcm1hdCwgcGF5bG9hZCB9ID0gZGVjb2RlRm9ybWF0UHJlZml4KGRlY3J5cHRlZCk7XG5cbiAgaWYgKGZvcm1hdCA9PT0gU2VyaWFsaXphdGlvbkZvcm1hdC5ERVZBTFVFX1YxKSB7XG4gICAgY29uc3Qgc3RyID0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKHBheWxvYWQpO1xuICAgIGNvbnN0IG9iaiA9IHBhcnNlKHN0ciwge1xuICAgICAgLi4uZ2V0V29ya2Zsb3dSZXZpdmVycyhnbG9iYWwpLFxuICAgICAgLi4uZXh0cmFSZXZpdmVycyxcbiAgICB9KTtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBzZXJpYWxpemF0aW9uIGZvcm1hdDogJHtmb3JtYXR9YCk7XG59XG5cbi8qKlxuICogRGVoeWRyYXRlIHdvcmtmbG93IHJldHVybiB2YWx1ZSBmb3Igc3RvcmFnZS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2VyaWFsaXplXG4gKiBAcGFyYW0gcnVuSWQgLSBSdW4gSUQgZm9yIGVuY3J5cHRpb24gY29udGV4dFxuICogQHBhcmFtIGtleSAtIEVuY3J5cHRpb24ga2V5ICh1bmRlZmluZWQgdG8gc2tpcCBlbmNyeXB0aW9uKVxuICogQHBhcmFtIGdsb2JhbCAtIEdsb2JhbCBvYmplY3QgZm9yIHNlcmlhbGl6YXRpb24gY29udGV4dFxuICogQHJldHVybnMgVGhlIGRlaHlkcmF0ZWQgdmFsdWUgYXMgYmluYXJ5IGRhdGEgKFVpbnQ4QXJyYXkpIHdpdGggZm9ybWF0IHByZWZpeFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVoeWRyYXRlV29ya2Zsb3dSZXR1cm5WYWx1ZShcbiAgdmFsdWU6IHVua25vd24sXG4gIF9ydW5JZDogc3RyaW5nLFxuICBrZXk6IENyeXB0b0tleSB8IHVuZGVmaW5lZCxcbiAgZ2xvYmFsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gZ2xvYmFsVGhpcyxcbiAgdjFDb21wYXQgPSBmYWxzZVxuKTogUHJvbWlzZTxVaW50OEFycmF5IHwgdW5rbm93bj4ge1xuICB0cnkge1xuICAgIGNvbnN0IHN0ciA9IHN0cmluZ2lmeSh2YWx1ZSwgZ2V0V29ya2Zsb3dSZWR1Y2VycyhnbG9iYWwpKTtcbiAgICBpZiAodjFDb21wYXQpIHtcbiAgICAgIHJldHVybiByZXZpdmUoc3RyKTtcbiAgICB9XG4gICAgY29uc3QgcGF5bG9hZCA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShzdHIpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBlbmNvZGVXaXRoRm9ybWF0UHJlZml4KFxuICAgICAgU2VyaWFsaXphdGlvbkZvcm1hdC5ERVZBTFVFX1YxLFxuICAgICAgcGF5bG9hZFxuICAgICkgYXMgVWludDhBcnJheTtcblxuICAgIC8vIEVuY3J5cHQgaWYgd29ybGQgc3VwcG9ydHMgZW5jcnlwdGlvblxuICAgIHJldHVybiBtYXliZUVuY3J5cHQoc2VyaWFsaXplZCwga2V5KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgV29ya2Zsb3dSdW50aW1lRXJyb3IoXG4gICAgICBmb3JtYXRTZXJpYWxpemF0aW9uRXJyb3IoJ3dvcmtmbG93IHJldHVybiB2YWx1ZScsIGVycm9yKSxcbiAgICAgIHsgc2x1ZzogJ3NlcmlhbGl6YXRpb24tZmFpbGVkJywgY2F1c2U6IGVycm9yIH1cbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogQ2FsbGVkIGZyb20gdGhlIGNsaWVudCBzaWRlIChpLmUuIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQgd2hlcmVcbiAqIHRoZSB3b3JrZmxvdyBydW4gd2FzIGluaXRpYXRlZCBmcm9tKSB0byBoeWRyYXRlIHRoZSB3b3JrZmxvd1xuICogcmV0dXJuIHZhbHVlIG9mIGEgY29tcGxldGVkIHdvcmtmbG93IHJ1bi5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBCaW5hcnkgc2VyaWFsaXplZCBkYXRhIChVaW50OEFycmF5KSB3aXRoIGZvcm1hdCBwcmVmaXhcbiAqIEBwYXJhbSBydW5JZCAtIFJ1biBJRCBmb3IgZGVjcnlwdGlvbiBjb250ZXh0XG4gKiBAcGFyYW0ga2V5IC0gRW5jcnlwdGlvbiBrZXkgKHVuZGVmaW5lZCB0byBza2lwIGRlY3J5cHRpb24pXG4gKiBAcGFyYW0gb3BzIC0gUHJvbWlzZSBhcnJheSBmb3Igc3RyZWFtIG9wZXJhdGlvbnNcbiAqIEBwYXJhbSBnbG9iYWwgLSBHbG9iYWwgb2JqZWN0IGZvciBkZXNlcmlhbGl6YXRpb24gY29udGV4dFxuICogQHBhcmFtIGV4dHJhUmV2aXZlcnMgLSBBZGRpdGlvbmFsIHJldml2ZXJzIGZvciBjdXN0b20gdHlwZXNcbiAqIEByZXR1cm5zIFRoZSBoeWRyYXRlZCByZXR1cm4gdmFsdWUsIHJlYWR5IHRvIGJlIGNvbnN1bWVkIGJ5IHRoZSBjbGllbnRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGh5ZHJhdGVXb3JrZmxvd1JldHVyblZhbHVlKFxuICB2YWx1ZTogVWludDhBcnJheSB8IHVua25vd24sXG4gIHJ1bklkOiBzdHJpbmcsXG4gIGtleTogQ3J5cHRvS2V5IHwgdW5kZWZpbmVkLFxuICBvcHM6IFByb21pc2U8dm9pZD5bXSA9IFtdLFxuICBnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBnbG9iYWxUaGlzLFxuICBleHRyYVJldml2ZXJzOiBSZWNvcmQ8c3RyaW5nLCAodmFsdWU6IGFueSkgPT4gYW55PiA9IHt9XG4pIHtcbiAgLy8gRGVjcnlwdCBpZiBuZWVkZWRcbiAgY29uc3QgZGVjcnlwdGVkID0gYXdhaXQgbWF5YmVEZWNyeXB0KHZhbHVlLCBrZXkpO1xuXG4gIC8vIExlZ2FjeSBzcGVjVmVyc2lvbiAxIHJ1bnMgc3RvcmVkIGRhdGEgYXMgcGxhaW4gSlNPTiBhcnJheXMgKG5vdCBiaW5hcnkpLlxuICAvLyBUaGVzZSBwYXNzIHRocm91Z2ggbWF5YmVEZWNyeXB0IHVuY2hhbmdlZCBhbmQgYXJlIGRlc2VyaWFsaXplZCBkaXJlY3RseVxuICAvLyB2aWEgZGV2YWx1ZSdzIHVuZmxhdHRlbigpLlxuICBpZiAoIShkZWNyeXB0ZWQgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgIHJldHVybiB1bmZsYXR0ZW4oZGVjcnlwdGVkIGFzIGFueVtdLCB7XG4gICAgICAuLi5nZXRFeHRlcm5hbFJldml2ZXJzKGdsb2JhbCwgb3BzLCBydW5JZCwga2V5KSxcbiAgICAgIC4uLmV4dHJhUmV2aXZlcnMsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCB7IGZvcm1hdCwgcGF5bG9hZCB9ID0gZGVjb2RlRm9ybWF0UHJlZml4KGRlY3J5cHRlZCk7XG5cbiAgaWYgKGZvcm1hdCA9PT0gU2VyaWFsaXphdGlvbkZvcm1hdC5ERVZBTFVFX1YxKSB7XG4gICAgY29uc3Qgc3RyID0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKHBheWxvYWQpO1xuICAgIGNvbnN0IG9iaiA9IHBhcnNlKHN0ciwge1xuICAgICAgLi4uZ2V0RXh0ZXJuYWxSZXZpdmVycyhnbG9iYWwsIG9wcywgcnVuSWQsIGtleSksXG4gICAgICAuLi5leHRyYVJldml2ZXJzLFxuICAgIH0pO1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHNlcmlhbGl6YXRpb24gZm9ybWF0OiAke2Zvcm1hdH1gKTtcbn1cblxuLyoqXG4gKiBDYWxsZWQgZnJvbSB0aGUgd29ya2Zsb3cgaGFuZGxlciB3aGVuIGEgc3RlcCBpcyBiZWluZyBjcmVhdGVkLlxuICogRGVoeWRyYXRlcyB2YWx1ZXMgZnJvbSB3aXRoaW4gdGhlIHdvcmtmbG93IGV4ZWN1dGlvbiBlbnZpcm9ubWVudFxuICogaW50byBhIGZvcm1hdCB0aGF0IGNhbiBiZSBzYXZlZCB0byB0aGUgZGF0YWJhc2UuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNlcmlhbGl6ZVxuICogQHBhcmFtIHJ1bklkIC0gUnVuIElEIGZvciBlbmNyeXB0aW9uIGNvbnRleHRcbiAqIEBwYXJhbSBrZXkgLSBFbmNyeXB0aW9uIGtleSAodW5kZWZpbmVkIHRvIHNraXAgZW5jcnlwdGlvbilcbiAqIEBwYXJhbSBnbG9iYWwgLSBHbG9iYWwgb2JqZWN0IGZvciBzZXJpYWxpemF0aW9uIGNvbnRleHRcbiAqIEBwYXJhbSB2MUNvbXBhdCAtIEVuYWJsZSBsZWdhY3kgdjEgY29tcGF0aWJpbGl0eSBtb2RlXG4gKiBAcmV0dXJucyBUaGUgZGVoeWRyYXRlZCB2YWx1ZSBhcyBiaW5hcnkgZGF0YSAoVWludDhBcnJheSkgd2l0aCBmb3JtYXQgcHJlZml4XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWh5ZHJhdGVTdGVwQXJndW1lbnRzKFxuICB2YWx1ZTogdW5rbm93bixcbiAgX3J1bklkOiBzdHJpbmcsXG4gIGtleTogQ3J5cHRvS2V5IHwgdW5kZWZpbmVkLFxuICBnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBnbG9iYWxUaGlzLFxuICB2MUNvbXBhdCA9IGZhbHNlXG4pOiBQcm9taXNlPFVpbnQ4QXJyYXkgfCB1bmtub3duPiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3RyID0gc3RyaW5naWZ5KHZhbHVlLCBnZXRXb3JrZmxvd1JlZHVjZXJzKGdsb2JhbCkpO1xuICAgIGlmICh2MUNvbXBhdCkge1xuICAgICAgcmV0dXJuIHJldml2ZShzdHIpO1xuICAgIH1cbiAgICBjb25zdCBwYXlsb2FkID0gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHN0cik7XG4gICAgY29uc3Qgc2VyaWFsaXplZCA9IGVuY29kZVdpdGhGb3JtYXRQcmVmaXgoXG4gICAgICBTZXJpYWxpemF0aW9uRm9ybWF0LkRFVkFMVUVfVjEsXG4gICAgICBwYXlsb2FkXG4gICAgKSBhcyBVaW50OEFycmF5O1xuXG4gICAgLy8gRW5jcnlwdCBpZiB3b3JsZCBzdXBwb3J0cyBlbmNyeXB0aW9uXG4gICAgcmV0dXJuIG1heWJlRW5jcnlwdChzZXJpYWxpemVkLCBrZXkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IG5ldyBXb3JrZmxvd1J1bnRpbWVFcnJvcihcbiAgICAgIGZvcm1hdFNlcmlhbGl6YXRpb25FcnJvcignc3RlcCBhcmd1bWVudHMnLCBlcnJvciksXG4gICAgICB7IHNsdWc6ICdzZXJpYWxpemF0aW9uLWZhaWxlZCcsIGNhdXNlOiBlcnJvciB9XG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIENhbGxlZCBmcm9tIHRoZSBzdGVwIGhhbmRsZXIgdG8gaHlkcmF0ZSB0aGUgYXJndW1lbnRzIG9mIGEgc3RlcFxuICogZnJvbSB0aGUgZGF0YWJhc2UgYXQgdGhlIHN0YXJ0IG9mIHRoZSBzdGVwIGV4ZWN1dGlvbi5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBCaW5hcnkgc2VyaWFsaXplZCBkYXRhIChVaW50OEFycmF5KSB3aXRoIGZvcm1hdCBwcmVmaXhcbiAqIEBwYXJhbSBydW5JZCAtIFJ1biBJRCBmb3IgZGVjcnlwdGlvbiBjb250ZXh0XG4gKiBAcGFyYW0ga2V5IC0gRW5jcnlwdGlvbiBrZXkgKHVuZGVmaW5lZCB0byBza2lwIGRlY3J5cHRpb24pXG4gKiBAcGFyYW0gb3BzIC0gUHJvbWlzZSBhcnJheSBmb3Igc3RyZWFtIG9wZXJhdGlvbnNcbiAqIEBwYXJhbSBnbG9iYWwgLSBHbG9iYWwgb2JqZWN0IGZvciBkZXNlcmlhbGl6YXRpb24gY29udGV4dFxuICogQHBhcmFtIGV4dHJhUmV2aXZlcnMgLSBBZGRpdGlvbmFsIHJldml2ZXJzIGZvciBjdXN0b20gdHlwZXNcbiAqIEByZXR1cm5zIFRoZSBoeWRyYXRlZCB2YWx1ZSwgcmVhZHkgdG8gYmUgY29uc3VtZWQgYnkgdGhlIHN0ZXAgdXNlci1jb2RlIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoeWRyYXRlU3RlcEFyZ3VtZW50cyhcbiAgdmFsdWU6IFVpbnQ4QXJyYXkgfCB1bmtub3duLFxuICBydW5JZDogc3RyaW5nLFxuICBrZXk6IENyeXB0b0tleSB8IHVuZGVmaW5lZCxcbiAgb3BzOiBQcm9taXNlPGFueT5bXSA9IFtdLFxuICBnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBnbG9iYWxUaGlzLFxuICBleHRyYVJldml2ZXJzOiBSZWNvcmQ8c3RyaW5nLCAodmFsdWU6IGFueSkgPT4gYW55PiA9IHt9XG4pIHtcbiAgLy8gRGVjcnlwdCBpZiBuZWVkZWRcbiAgY29uc3QgZGVjcnlwdGVkID0gYXdhaXQgbWF5YmVEZWNyeXB0KHZhbHVlLCBrZXkpO1xuXG4gIC8vIExlZ2FjeSBzcGVjVmVyc2lvbiAxIHJ1bnMgc3RvcmVkIGRhdGEgYXMgcGxhaW4gSlNPTiBhcnJheXMgKG5vdCBiaW5hcnkpLlxuICAvLyBUaGVzZSBwYXNzIHRocm91Z2ggbWF5YmVEZWNyeXB0IHVuY2hhbmdlZCBhbmQgYXJlIGRlc2VyaWFsaXplZCBkaXJlY3RseVxuICAvLyB2aWEgZGV2YWx1ZSdzIHVuZmxhdHRlbigpLlxuICBpZiAoIShkZWNyeXB0ZWQgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgIHJldHVybiB1bmZsYXR0ZW4oZGVjcnlwdGVkIGFzIGFueVtdLCB7XG4gICAgICAuLi5nZXRTdGVwUmV2aXZlcnMoZ2xvYmFsLCBvcHMsIHJ1bklkLCBrZXkpLFxuICAgICAgLi4uZXh0cmFSZXZpdmVycyxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IHsgZm9ybWF0LCBwYXlsb2FkIH0gPSBkZWNvZGVGb3JtYXRQcmVmaXgoZGVjcnlwdGVkKTtcblxuICBpZiAoZm9ybWF0ID09PSBTZXJpYWxpemF0aW9uRm9ybWF0LkRFVkFMVUVfVjEpIHtcbiAgICBjb25zdCBzdHIgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUocGF5bG9hZCk7XG4gICAgY29uc3Qgb2JqID0gcGFyc2Uoc3RyLCB7XG4gICAgICAuLi5nZXRTdGVwUmV2aXZlcnMoZ2xvYmFsLCBvcHMsIHJ1bklkLCBrZXkpLFxuICAgICAgLi4uZXh0cmFSZXZpdmVycyxcbiAgICB9KTtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBzZXJpYWxpemF0aW9uIGZvcm1hdDogJHtmb3JtYXR9YCk7XG59XG5cbi8qKlxuICogQ2FsbGVkIGZyb20gdGhlIHN0ZXAgaGFuZGxlciB3aGVuIGEgc3RlcCBoYXMgY29tcGxldGVkLlxuICogRGVoeWRyYXRlcyB2YWx1ZXMgZnJvbSB3aXRoaW4gdGhlIHN0ZXAgZXhlY3V0aW9uIGVudmlyb25tZW50XG4gKiBpbnRvIGEgZm9ybWF0IHRoYXQgY2FuIGJlIHNhdmVkIHRvIHRoZSBkYXRhYmFzZS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2VyaWFsaXplXG4gKiBAcGFyYW0gcnVuSWQgLSBSdW4gSUQgZm9yIGVuY3J5cHRpb24gY29udGV4dFxuICogQHBhcmFtIGtleSAtIEVuY3J5cHRpb24ga2V5ICh1bmRlZmluZWQgdG8gc2tpcCBlbmNyeXB0aW9uKVxuICogQHBhcmFtIG9wcyAtIFByb21pc2UgYXJyYXkgZm9yIHN0cmVhbSBvcGVyYXRpb25zXG4gKiBAcGFyYW0gZ2xvYmFsIC0gR2xvYmFsIG9iamVjdCBmb3Igc2VyaWFsaXphdGlvbiBjb250ZXh0XG4gKiBAcGFyYW0gdjFDb21wYXQgLSBFbmFibGUgbGVnYWN5IHYxIGNvbXBhdGliaWxpdHkgbW9kZVxuICogQHJldHVybnMgVGhlIGRlaHlkcmF0ZWQgdmFsdWUgYXMgYmluYXJ5IGRhdGEgKFVpbnQ4QXJyYXkpIHdpdGggZm9ybWF0IHByZWZpeFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVoeWRyYXRlU3RlcFJldHVyblZhbHVlKFxuICB2YWx1ZTogdW5rbm93bixcbiAgcnVuSWQ6IHN0cmluZyxcbiAga2V5OiBDcnlwdG9LZXkgfCB1bmRlZmluZWQsXG4gIG9wczogUHJvbWlzZTxhbnk+W10gPSBbXSxcbiAgZ2xvYmFsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gZ2xvYmFsVGhpcyxcbiAgdjFDb21wYXQgPSBmYWxzZVxuKTogUHJvbWlzZTxVaW50OEFycmF5IHwgdW5rbm93bj4ge1xuICB0cnkge1xuICAgIGNvbnN0IHN0ciA9IHN0cmluZ2lmeSh2YWx1ZSwgZ2V0U3RlcFJlZHVjZXJzKGdsb2JhbCwgb3BzLCBydW5JZCwga2V5KSk7XG4gICAgaWYgKHYxQ29tcGF0KSB7XG4gICAgICByZXR1cm4gcmV2aXZlKHN0cik7XG4gICAgfVxuICAgIGNvbnN0IHBheWxvYWQgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoc3RyKTtcbiAgICBjb25zdCBzZXJpYWxpemVkID0gZW5jb2RlV2l0aEZvcm1hdFByZWZpeChcbiAgICAgIFNlcmlhbGl6YXRpb25Gb3JtYXQuREVWQUxVRV9WMSxcbiAgICAgIHBheWxvYWRcbiAgICApIGFzIFVpbnQ4QXJyYXk7XG5cbiAgICAvLyBFbmNyeXB0IGlmIHdvcmxkIHN1cHBvcnRzIGVuY3J5cHRpb25cbiAgICByZXR1cm4gbWF5YmVFbmNyeXB0KHNlcmlhbGl6ZWQsIGtleSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IFdvcmtmbG93UnVudGltZUVycm9yKFxuICAgICAgZm9ybWF0U2VyaWFsaXphdGlvbkVycm9yKCdzdGVwIHJldHVybiB2YWx1ZScsIGVycm9yKSxcbiAgICAgIHsgc2x1ZzogJ3NlcmlhbGl6YXRpb24tZmFpbGVkJywgY2F1c2U6IGVycm9yIH1cbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogQ2FsbGVkIGZyb20gdGhlIHdvcmtmbG93IGhhbmRsZXIgd2hlbiByZXBsYXlpbmcgdGhlIGV2ZW50IGxvZyBvZiBhIGBzdGVwX2NvbXBsZXRlZGAgZXZlbnQuXG4gKiBIeWRyYXRlcyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgc3RlcCBmcm9tIHRoZSBkYXRhYmFzZS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBCaW5hcnkgc2VyaWFsaXplZCBkYXRhIChVaW50OEFycmF5KSB3aXRoIGZvcm1hdCBwcmVmaXhcbiAqIEBwYXJhbSBydW5JZCAtIFJ1biBJRCBmb3IgZGVjcnlwdGlvbiBjb250ZXh0XG4gKiBAcGFyYW0ga2V5IC0gRW5jcnlwdGlvbiBrZXkgKHVuZGVmaW5lZCB0byBza2lwIGRlY3J5cHRpb24pXG4gKiBAcGFyYW0gZ2xvYmFsIC0gR2xvYmFsIG9iamVjdCBmb3IgZGVzZXJpYWxpemF0aW9uIGNvbnRleHRcbiAqIEBwYXJhbSBleHRyYVJldml2ZXJzIC0gQWRkaXRpb25hbCByZXZpdmVycyBmb3IgY3VzdG9tIHR5cGVzXG4gKiBAcmV0dXJucyBUaGUgaHlkcmF0ZWQgcmV0dXJuIHZhbHVlIG9mIGEgc3RlcCwgcmVhZHkgdG8gYmUgY29uc3VtZWQgYnkgdGhlIHdvcmtmbG93IGhhbmRsZXJcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGh5ZHJhdGVTdGVwUmV0dXJuVmFsdWUoXG4gIHZhbHVlOiBVaW50OEFycmF5IHwgdW5rbm93bixcbiAgX3J1bklkOiBzdHJpbmcsXG4gIGtleTogQ3J5cHRvS2V5IHwgdW5kZWZpbmVkLFxuICBnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBnbG9iYWxUaGlzLFxuICBleHRyYVJldml2ZXJzOiBSZWNvcmQ8c3RyaW5nLCAodmFsdWU6IGFueSkgPT4gYW55PiA9IHt9XG4pIHtcbiAgLy8gRGVjcnlwdCBpZiBuZWVkZWRcbiAgY29uc3QgZGVjcnlwdGVkID0gYXdhaXQgbWF5YmVEZWNyeXB0KHZhbHVlLCBrZXkpO1xuXG4gIC8vIExlZ2FjeSBzcGVjVmVyc2lvbiAxIHJ1bnMgc3RvcmVkIGRhdGEgYXMgcGxhaW4gSlNPTiBhcnJheXMgKG5vdCBiaW5hcnkpLlxuICAvLyBUaGVzZSBwYXNzIHRocm91Z2ggbWF5YmVEZWNyeXB0IHVuY2hhbmdlZCBhbmQgYXJlIGRlc2VyaWFsaXplZCBkaXJlY3RseVxuICAvLyB2aWEgZGV2YWx1ZSdzIHVuZmxhdHRlbigpLlxuICBpZiAoIShkZWNyeXB0ZWQgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgIHJldHVybiB1bmZsYXR0ZW4oZGVjcnlwdGVkIGFzIGFueVtdLCB7XG4gICAgICAuLi5nZXRXb3JrZmxvd1Jldml2ZXJzKGdsb2JhbCksXG4gICAgICAuLi5leHRyYVJldml2ZXJzLFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgeyBmb3JtYXQsIHBheWxvYWQgfSA9IGRlY29kZUZvcm1hdFByZWZpeChkZWNyeXB0ZWQpO1xuXG4gIGlmIChmb3JtYXQgPT09IFNlcmlhbGl6YXRpb25Gb3JtYXQuREVWQUxVRV9WMSkge1xuICAgIGNvbnN0IHN0ciA9IG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShwYXlsb2FkKTtcbiAgICByZXR1cm4gcGFyc2Uoc3RyLCB7XG4gICAgICAuLi5nZXRXb3JrZmxvd1Jldml2ZXJzKGdsb2JhbCksXG4gICAgICAuLi5leHRyYVJldml2ZXJzLFxuICAgIH0pO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBzZXJpYWxpemF0aW9uIGZvcm1hdDogJHtmb3JtYXR9YCk7XG59XG4iXX0=
package/dist/sleep.js CHANGED
@@ -7,4 +7,4 @@ export async function sleep(param) {
7
7
  }
8
8
  return sleepFn(param);
9
9
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xlZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc2xlZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQW9DOUMsTUFBTSxDQUFDLEtBQUssVUFBVSxLQUFLLENBQUMsS0FBa0M7SUFDNUQsZ0dBQWdHO0lBQ2hHLE1BQU0sT0FBTyxHQUFJLFVBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDcEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixDQUFDIn0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xlZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc2xlZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQW9DOUMsTUFBTSxDQUFDLEtBQUssVUFBVSxLQUFLLENBQUMsS0FBa0M7SUFDNUQsZ0dBQWdHO0lBQ2hHLE1BQU0sT0FBTyxHQUFJLFVBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDcEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTdHJpbmdWYWx1ZSB9IGZyb20gJ21zJztcbmltcG9ydCB7IFdPUktGTE9XX1NMRUVQIH0gZnJvbSAnLi9zeW1ib2xzLmpzJztcblxuLyoqXG4gKiBTbGVlcCB3aXRoaW4gYSB3b3JrZmxvdyBmb3IgYSBnaXZlbiBkdXJhdGlvbi5cbiAqXG4gKiBUaGlzIGlzIGEgYnVpbHQtaW4gcnVudGltZSBmdW5jdGlvbiB0aGF0IHVzZXMgdGltZXIgZXZlbnRzIGluIHRoZSBldmVudCBsb2cuXG4gKlxuICogQHBhcmFtIGR1cmF0aW9uIC0gVGhlIGR1cmF0aW9uIHRvIHNsZWVwIGZvciwgdGhpcyBpcyBhIHN0cmluZyBpbiB0aGUgZm9ybWF0XG4gKiBvZiBgXCIxMDAwbXNcImAsIGBcIjFzXCJgLCBgXCIxbVwiYCwgYFwiMWhcImAsIG9yIGBcIjFkXCJgLlxuICogQG92ZXJsb2FkXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBzbGVlcCBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNsZWVwKGR1cmF0aW9uOiBTdHJpbmdWYWx1ZSk6IFByb21pc2U8dm9pZD47XG5cbi8qKlxuICogU2xlZXAgd2l0aGluIGEgd29ya2Zsb3cgdW50aWwgYSBzcGVjaWZpYyBkYXRlLlxuICpcbiAqIFRoaXMgaXMgYSBidWlsdC1pbiBydW50aW1lIGZ1bmN0aW9uIHRoYXQgdXNlcyB0aW1lciBldmVudHMgaW4gdGhlIGV2ZW50IGxvZy5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIHNsZWVwIHVudGlsLCB0aGlzIG11c3QgYmUgYSBmdXR1cmUgZGF0ZS5cbiAqIEBvdmVybG9hZFxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc2xlZXAgaXMgY29tcGxldGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzbGVlcChkYXRlOiBEYXRlKTogUHJvbWlzZTx2b2lkPjtcblxuLyoqXG4gKiBTbGVlcCB3aXRoaW4gYSB3b3JrZmxvdyBmb3IgYSBnaXZlbiBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMuXG4gKlxuICogVGhpcyBpcyBhIGJ1aWx0LWluIHJ1bnRpbWUgZnVuY3Rpb24gdGhhdCB1c2VzIHRpbWVyIGV2ZW50cyBpbiB0aGUgZXZlbnQgbG9nLlxuICpcbiAqIEBwYXJhbSBkdXJhdGlvbk1zIC0gVGhlIGR1cmF0aW9uIHRvIHNsZWVwIGZvciBpbiBtaWxsaXNlY29uZHMuXG4gKiBAb3ZlcmxvYWRcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNsZWVwIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2xlZXAoZHVyYXRpb25NczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNsZWVwKHBhcmFtOiBTdHJpbmdWYWx1ZSB8IERhdGUgfCBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gSW5zaWRlIHRoZSB3b3JrZmxvdyBWTSwgdGhlIHNsZWVwIGZ1bmN0aW9uIGlzIHN0b3JlZCBpbiB0aGUgZ2xvYmFsVGhpcyBvYmplY3QgYmVoaW5kIGEgc3ltYm9sXG4gIGNvbnN0IHNsZWVwRm4gPSAoZ2xvYmFsVGhpcyBhcyBhbnkpW1dPUktGTE9XX1NMRUVQXTtcbiAgaWYgKCFzbGVlcEZuKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdgc2xlZXAoKWAgY2FuIG9ubHkgYmUgY2FsbGVkIGluc2lkZSBhIHdvcmtmbG93IGZ1bmN0aW9uJyk7XG4gIH1cbiAgcmV0dXJuIHNsZWVwRm4ocGFyYW0pO1xufVxuIl19
@@ -53,4 +53,4 @@ export function remapErrorStack(stack, filename, workflowCode) {
53
53
  return stack;
54
54
  }
55
55
  }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zb3VyY2UtbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsS0FBYSxFQUNiLFFBQWdCLEVBQ2hCLFlBQW9CO0lBRXBCLCtDQUErQztJQUMvQyxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUN2QywyREFBMkQsQ0FDNUQsQ0FBQztJQUNGLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwQixPQUFPLEtBQUssQ0FBQyxDQUFDLHNCQUFzQjtJQUN0QyxDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWhELDJDQUEyQztRQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUzQywrQ0FBK0M7UUFDL0MsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdkMsNEZBQTRGO1lBQzVGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQzNCLCtDQUErQyxDQUNoRCxDQUFDO1lBQ0YsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNoQixPQUFPLElBQUksQ0FBQyxDQUFDLGtDQUFrQztZQUNqRCxDQUFDO1lBRUQsTUFBTSxDQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDO1lBRTNELDJDQUEyQztZQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUM3QixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFFRCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFMUMsa0NBQWtDO1lBQ2xDLE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRTtnQkFDM0MsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLE1BQU0sRUFBRSxZQUFZO2FBQ3JCLENBQUMsQ0FBQztZQUVILElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUM5QyxNQUFNLElBQUksR0FBRyxZQUFZLElBQUksUUFBUSxDQUFDLElBQUksSUFBSSxXQUFXLENBQUM7Z0JBQzFELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7Z0JBQ3RFLE9BQU8sVUFBVSxJQUFJLEtBQUssUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDO1lBQ3ZFLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxDQUFDLGdDQUFnQztRQUMvQyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLHdEQUF3RDtRQUN4RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7QUFDSCxDQUFDIn0=
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zb3VyY2UtbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsS0FBYSxFQUNiLFFBQWdCLEVBQ2hCLFlBQW9CO0lBRXBCLCtDQUErQztJQUMvQyxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUN2QywyREFBMkQsQ0FDNUQsQ0FBQztJQUNGLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwQixPQUFPLEtBQUssQ0FBQyxDQUFDLHNCQUFzQjtJQUN0QyxDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWhELDJDQUEyQztRQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUzQywrQ0FBK0M7UUFDL0MsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdkMsNEZBQTRGO1lBQzVGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQzNCLCtDQUErQyxDQUNoRCxDQUFDO1lBQ0YsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNoQixPQUFPLElBQUksQ0FBQyxDQUFDLGtDQUFrQztZQUNqRCxDQUFDO1lBRUQsTUFBTSxDQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDO1lBRTNELDJDQUEyQztZQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUM3QixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFFRCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFMUMsa0NBQWtDO1lBQ2xDLE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRTtnQkFDM0MsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLE1BQU0sRUFBRSxZQUFZO2FBQ3JCLENBQUMsQ0FBQztZQUVILElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUM5QyxNQUFNLElBQUksR0FBRyxZQUFZLElBQUksUUFBUSxDQUFDLElBQUksSUFBSSxXQUFXLENBQUM7Z0JBQzFELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7Z0JBQ3RFLE9BQU8sVUFBVSxJQUFJLEtBQUssUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDO1lBQ3ZFLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxDQUFDLGdDQUFnQztRQUMvQyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLHdEQUF3RDtRQUN4RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgb3JpZ2luYWxQb3NpdGlvbkZvciwgVHJhY2VNYXAgfSBmcm9tICdAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nJztcblxuLyoqXG4gKiBSZW1hcHMgYW4gZXJyb3Igc3RhY2sgdHJhY2UgdXNpbmcgaW5saW5lIHNvdXJjZSBtYXBzIHRvIHNob3cgb3JpZ2luYWwgc291cmNlIGxvY2F0aW9ucy5cbiAqXG4gKiBAcGFyYW0gc3RhY2sgLSBUaGUgZXJyb3Igc3RhY2sgdHJhY2UgdG8gcmVtYXBcbiAqIEBwYXJhbSBmaWxlbmFtZSAtIFRoZSB3b3JrZmxvdyBmaWxlbmFtZSB0byBtYXRjaCBpbiBzdGFjayBmcmFtZXNcbiAqIEBwYXJhbSB3b3JrZmxvd0NvZGUgLSBUaGUgd29ya2Zsb3cgYnVuZGxlIGNvZGUgY29udGFpbmluZyBpbmxpbmUgc291cmNlIG1hcHNcbiAqIEByZXR1cm5zIFRoZSByZW1hcHBlZCBzdGFjayB0cmFjZSB3aXRoIG9yaWdpbmFsIHNvdXJjZSBsb2NhdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbWFwRXJyb3JTdGFjayhcbiAgc3RhY2s6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgd29ya2Zsb3dDb2RlOiBzdHJpbmdcbik6IHN0cmluZyB7XG4gIC8vIEV4dHJhY3QgaW5saW5lIHNvdXJjZSBtYXAgZnJvbSB3b3JrZmxvdyBjb2RlXG4gIGNvbnN0IHNvdXJjZU1hcE1hdGNoID0gd29ya2Zsb3dDb2RlLm1hdGNoKFxuICAgIC9cXC9cXC8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvblxcL2pzb247YmFzZTY0LCguKykvXG4gICk7XG4gIGlmICghc291cmNlTWFwTWF0Y2gpIHtcbiAgICByZXR1cm4gc3RhY2s7IC8vIE5vIHNvdXJjZSBtYXAgZm91bmRcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgYmFzZTY0ID0gc291cmNlTWFwTWF0Y2hbMV07XG4gICAgY29uc3Qgc291cmNlTWFwSnNvbiA9IEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCd1dGYtOCcpO1xuICAgIGNvbnN0IHNvdXJjZU1hcERhdGEgPSBKU09OLnBhcnNlKHNvdXJjZU1hcEpzb24pO1xuXG4gICAgLy8gVXNlIFRyYWNlTWFwIChwdXJlIEpTLCBubyBXQVNNIHJlcXVpcmVkKVxuICAgIGNvbnN0IHRyYWNlciA9IG5ldyBUcmFjZU1hcChzb3VyY2VNYXBEYXRhKTtcblxuICAgIC8vIFBhcnNlIGFuZCByZW1hcCBlYWNoIGxpbmUgaW4gdGhlIHN0YWNrIHRyYWNlXG4gICAgY29uc3QgbGluZXMgPSBzdGFjay5zcGxpdCgnXFxuJyk7XG4gICAgY29uc3QgcmVtYXBwZWRMaW5lcyA9IGxpbmVzLm1hcCgobGluZSkgPT4ge1xuICAgICAgLy8gTWF0Y2ggc3RhY2sgZnJhbWVzOiBcImF0IGZ1bmN0aW9uTmFtZSAoZmlsZW5hbWU6bGluZTpjb2x1bW4pXCIgb3IgXCJhdCBmaWxlbmFtZTpsaW5lOmNvbHVtblwiXG4gICAgICBjb25zdCBmcmFtZU1hdGNoID0gbGluZS5tYXRjaChcbiAgICAgICAgL15cXHMqYXRcXHMrKD86KC4rPylcXHMrXFwoKT8oLis/KTooXFxkKyk6KFxcZCspXFwpPyQvXG4gICAgICApO1xuICAgICAgaWYgKCFmcmFtZU1hdGNoKSB7XG4gICAgICAgIHJldHVybiBsaW5lOyAvLyBOb3QgYSBzdGFjayBmcmFtZSwgcmV0dXJuIGFzLWlzXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IFssIGZ1bmN0aW9uTmFtZSwgZmlsZSwgbGluZVN0ciwgY29sU3RyXSA9IGZyYW1lTWF0Y2g7XG5cbiAgICAgIC8vIE9ubHkgcmVtYXAgZnJhbWVzIGZyb20gb3VyIHdvcmtmbG93IGZpbGVcbiAgICAgIGlmICghZmlsZS5pbmNsdWRlcyhmaWxlbmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIGxpbmU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxpbmVOdW1iZXIgPSBwYXJzZUludChsaW5lU3RyLCAxMCk7XG4gICAgICBjb25zdCBjb2x1bW5OdW1iZXIgPSBwYXJzZUludChjb2xTdHIsIDEwKTtcblxuICAgICAgLy8gTWFwIHRvIG9yaWdpbmFsIHNvdXJjZSBwb3NpdGlvblxuICAgICAgY29uc3Qgb3JpZ2luYWwgPSBvcmlnaW5hbFBvc2l0aW9uRm9yKHRyYWNlciwge1xuICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLFxuICAgICAgICBjb2x1bW46IGNvbHVtbk51bWJlcixcbiAgICAgIH0pO1xuXG4gICAgICBpZiAob3JpZ2luYWwuc291cmNlICYmIG9yaWdpbmFsLmxpbmUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgZnVuYyA9IGZ1bmN0aW9uTmFtZSB8fCBvcmlnaW5hbC5uYW1lIHx8ICdhbm9ueW1vdXMnO1xuICAgICAgICBjb25zdCBjb2wgPSBvcmlnaW5hbC5jb2x1bW4gIT09IG51bGwgPyBvcmlnaW5hbC5jb2x1bW4gOiBjb2x1bW5OdW1iZXI7XG4gICAgICAgIHJldHVybiBgICAgIGF0ICR7ZnVuY30gKCR7b3JpZ2luYWwuc291cmNlfToke29yaWdpbmFsLmxpbmV9OiR7Y29sfSlgO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbGluZTsgLy8gQ291bGRuJ3QgbWFwLCByZXR1cm4gb3JpZ2luYWxcbiAgICB9KTtcblxuICAgIHJldHVybiByZW1hcHBlZExpbmVzLmpvaW4oJ1xcbicpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gSWYgc291cmNlIG1hcCBwcm9jZXNzaW5nIGZhaWxzLCByZXR1cm4gb3JpZ2luYWwgc3RhY2tcbiAgICByZXR1cm4gc3RhY2s7XG4gIH1cbn1cbiJdfQ==
@@ -19,4 +19,4 @@ const CONTEXT_STORAGE_SYMBOL = Symbol.for('WORKFLOW_STEP_CONTEXT_STORAGE');
19
19
  export const contextStorage = globalThis[CONTEXT_STORAGE_SYMBOL] ??
20
20
  (globalThis[CONTEXT_STORAGE_SYMBOL] =
21
21
  new AsyncLocalStorage());
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0ZXAvY29udGV4dC1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBYXJEOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0FBRTNFLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FDdkIsVUFBa0IsQ0FBQyxzQkFBc0IsQ0FFN0I7SUFDZCxDQUFFLFVBQWtCLENBQUMsc0JBQXNCLENBQUM7UUFDMUMsSUFBSSxpQkFBaUIsRUFBZSxDQUFDLENBQUMifQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0ZXAvY29udGV4dC1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBYXJEOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0FBRTNFLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FDdkIsVUFBa0IsQ0FBQyxzQkFBc0IsQ0FFN0I7SUFDZCxDQUFFLFVBQWtCLENBQUMsc0JBQXNCLENBQUM7UUFDMUMsSUFBSSxpQkFBaUIsRUFBZSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY0xvY2FsU3RvcmFnZSB9IGZyb20gJ25vZGU6YXN5bmNfaG9va3MnO1xuaW1wb3J0IHR5cGUgeyBDcnlwdG9LZXkgfSBmcm9tICcuLi9lbmNyeXB0aW9uLmpzJztcbmltcG9ydCB0eXBlIHsgV29ya2Zsb3dNZXRhZGF0YSB9IGZyb20gJy4uL3dvcmtmbG93L2dldC13b3JrZmxvdy1tZXRhZGF0YS5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0ZXBNZXRhZGF0YSB9IGZyb20gJy4vZ2V0LXN0ZXAtbWV0YWRhdGEuanMnO1xuXG5leHBvcnQgdHlwZSBTdGVwQ29udGV4dCA9IHtcbiAgc3RlcE1ldGFkYXRhOiBTdGVwTWV0YWRhdGE7XG4gIHdvcmtmbG93TWV0YWRhdGE6IFdvcmtmbG93TWV0YWRhdGE7XG4gIG9wczogUHJvbWlzZTx2b2lkPltdO1xuICBjbG9zdXJlVmFycz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGVuY3J5cHRpb25LZXk/OiBDcnlwdG9LZXk7XG59O1xuXG4vKipcbiAqIFByb2Nlc3Mtd2lkZSBzaW5nbGV0b24gQXN5bmNMb2NhbFN0b3JhZ2UgZm9yIHN0ZXAgZXhlY3V0aW9uIGNvbnRleHQuXG4gKlxuICogVXNlcyBgU3ltYm9sLmZvcigpYCBvbiBnbG9iYWxUaGlzIHRvIGd1YXJhbnRlZSBhIHNpbmdsZSBpbnN0YW5jZSBldmVuIHdoZW5cbiAqIGJ1bmRsZXJzIChlLmcuIFZlcmNlbCdzIHByb2R1Y3Rpb24gYnVuZGxlcikgY3JlYXRlIG11bHRpcGxlIGNvcGllcyBvZiB0aGlzXG4gKiBtb2R1bGUuIFdpdGhvdXQgdGhpcywgYGNvbnRleHRTdG9yYWdlLnJ1bigpYCBpbiB0aGUgc3RlcCBoYW5kbGVyIGFuZFxuICogYGNvbnRleHRTdG9yYWdlLmdldFN0b3JlKClgIGluIHVzZXIgY29kZSAodmlhIGdldFdvcmtmbG93TWV0YWRhdGEgL1xuICogZ2V0U3RlcE1ldGFkYXRhKSBjYW4gcmVmZXJlbmNlIGRpZmZlcmVudCBBc3luY0xvY2FsU3RvcmFnZSBpbnN0YW5jZXMsXG4gKiBjYXVzaW5nIHRoZSBzdG9yZSB0byBhcHBlYXIgZW1wdHkuXG4gKlxuICogTm90ZSB0aGF0IHdlIHdlcmUgdW5hYmxlIHRvIHJlcHJvZHVjZSB0aGlzIGlzc3VlLiBUaGlzIGlzIGEgZml4IGZvciB0aGUgb25seSBzeW50aGV0aWMgd2F5XG4gKiB3YXkgaW4gd2hpY2ggd2UgY291bGQgZ2V0IHRoZSBidWlsZGVyIHRvIGJyZWFrIHdpdGggdGhlIHJlcG9ydGVkIGVycm9yIG1lc3NhZ2UsIGFuZFxuICogc2VydmVzIGFzIGRlZmVuc2UtaW4tZGVwdGgsIHNpbmNlIHRoZSBjaGFuZ2UgaXMgb3RoZXJ3aXNlIHNhZmUuXG4gKlxuICogU2VlOiBodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL3dvcmtmbG93L2lzc3Vlcy8xNTc3XG4gKi9cbmNvbnN0IENPTlRFWFRfU1RPUkFHRV9TWU1CT0wgPSBTeW1ib2wuZm9yKCdXT1JLRkxPV19TVEVQX0NPTlRFWFRfU1RPUkFHRScpO1xuXG5leHBvcnQgY29uc3QgY29udGV4dFN0b3JhZ2U6IEFzeW5jTG9jYWxTdG9yYWdlPFN0ZXBDb250ZXh0PiA9XG4gICgoZ2xvYmFsVGhpcyBhcyBhbnkpW0NPTlRFWFRfU1RPUkFHRV9TWU1CT0xdIGFzXG4gICAgfCBBc3luY0xvY2FsU3RvcmFnZTxTdGVwQ29udGV4dD5cbiAgICB8IHVuZGVmaW5lZCkgPz9cbiAgKChnbG9iYWxUaGlzIGFzIGFueSlbQ09OVEVYVF9TVE9SQUdFX1NZTUJPTF0gPVxuICAgIG5ldyBBc3luY0xvY2FsU3RvcmFnZTxTdGVwQ29udGV4dD4oKSk7XG4iXX0=
@@ -13,4 +13,4 @@ export function __private_getClosureVars() {
13
13
  }
14
14
  return ctx.closureVars || {};
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWNsb3N1cmUtdmFycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGVwL2dldC1jbG9zdXJlLXZhcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXREOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSx3QkFBd0I7SUFDdEMsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNULE1BQU0sSUFBSSxLQUFLLENBQ2IsK0RBQStELENBQ2hFLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztBQUMvQixDQUFDIn0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWNsb3N1cmUtdmFycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGVwL2dldC1jbG9zdXJlLXZhcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXREOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSx3QkFBd0I7SUFDdEMsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNULE1BQU0sSUFBSSxLQUFLLENBQ2IsK0RBQStELENBQ2hFLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztBQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29udGV4dFN0b3JhZ2UgfSBmcm9tICcuL2NvbnRleHQtc3RvcmFnZS5qcyc7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgY2xvc3VyZSB2YXJpYWJsZXMgZm9yIHRoZSBjdXJyZW50IHN0ZXAgZnVuY3Rpb24uXG4gKiBUaGlzIGlzIGFuIGludGVybmFsIGZ1bmN0aW9uIHVzZWQgYnkgdGhlIFNXQyB0cmFuc2Zvcm0gdG8gYWNjZXNzXG4gKiB2YXJpYWJsZXMgZnJvbSB0aGUgcGFyZW50IHdvcmtmbG93IHNjb3BlLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gX19wcml2YXRlX2dldENsb3N1cmVWYXJzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICBjb25zdCBjdHggPSBjb250ZXh0U3RvcmFnZS5nZXRTdG9yZSgpO1xuICBpZiAoIWN0eCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdDbG9zdXJlIHZhcmlhYmxlcyBjYW4gb25seSBiZSBhY2Nlc3NlZCBpbnNpZGUgYSBzdGVwIGZ1bmN0aW9uJ1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIGN0eC5jbG9zdXJlVmFycyB8fCB7fTtcbn1cbiJdfQ==
@@ -11,4 +11,4 @@ export function getStepMetadata() {
11
11
  }
12
12
  return ctx.stepMetadata;
13
13
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXN0ZXAtbWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RlcC9nZXQtc3RlcC1tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUF5Q3REOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZUFBZTtJQUM3QixNQUFNLEdBQUcsR0FBRyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1QsTUFBTSxJQUFJLEtBQUssQ0FDYiwrREFBK0QsQ0FDaEUsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQyxZQUFZLENBQUM7QUFDMUIsQ0FBQyJ9
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXN0ZXAtbWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RlcC9nZXQtc3RlcC1tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUF5Q3REOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZUFBZTtJQUM3QixNQUFNLEdBQUcsR0FBRyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1QsTUFBTSxJQUFJLEtBQUssQ0FDYiwrREFBK0QsQ0FDaEUsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQyxZQUFZLENBQUM7QUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbnRleHRTdG9yYWdlIH0gZnJvbSAnLi9jb250ZXh0LXN0b3JhZ2UuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBNZXRhZGF0YSB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc3RlcC5cbiAgICovXG4gIHN0ZXBOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBzdGVwLlxuICAgKiBVc2VmdWwgdG8gdXNlIGFzIHBhcnQgb2YgYW4gaWRlbXBvdGVuY3kga2V5IGZvciBjcml0aWNhbFxuICAgKiBvcGVyYXRpb25zIHRoYXQgbXVzdCBvbmx5IGJlIGV4ZWN1dGVkIG9uY2UgKHN1Y2ggYXMgY2hhcmdpbmcgYSBjdXN0b21lcikuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqXG4gICAqIE9ubHkgYXZhaWxhYmxlIGluc2lkZSBhIHN0ZXAgZnVuY3Rpb24uXG4gICAqIEFjY2Vzc2luZyB0aGlzIHByb3BlcnR5IGluIGEgd29ya2Zsb3cgZnVuY3Rpb24gd2lsbCB0aHJvdyBhbiBlcnJvci5cbiAgICovXG4gIHN0ZXBJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaW1lc3RhbXAgd2hlbiB0aGUgY3VycmVudCBzdGVwIHN0YXJ0ZWQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqXG4gICAqIE9ubHkgYXZhaWxhYmxlIGluc2lkZSBhIHN0ZXAgZnVuY3Rpb24uXG4gICAqIEFjY2Vzc2luZyB0aGlzIHByb3BlcnR5IGluIGEgd29ya2Zsb3cgZnVuY3Rpb24gd2lsbCB0aHJvdyBhbiBlcnJvci5cbiAgICovXG4gIHN0ZXBTdGFydGVkQXQ6IERhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgdGltZXMgdGhlIGN1cnJlbnQgc3RlcCBoYXMgYmVlbiBleGVjdXRlZC4gVGhpcyB3aWxsIGluY3JlYXNlIHdpdGggZWFjaCByZXRyeS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICpcbiAgICogT25seSBhdmFpbGFibGUgaW5zaWRlIGEgc3RlcCBmdW5jdGlvbi5cbiAgICogQWNjZXNzaW5nIHRoaXMgcHJvcGVydHkgaW4gYSB3b3JrZmxvdyBmdW5jdGlvbiB3aWxsIHRocm93IGFuIGVycm9yLlxuICAgKi9cbiAgYXR0ZW1wdDogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJldHVybnMgbWV0YWRhdGEgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IHN0ZXAgZnVuY3Rpb24uXG4gKiBJdCB1c2VzIGBBc3luY0xvY2FsU3RvcmFnZWAgdG8gc3RvcmUgdGhlIGNvbnRleHQgYW5kXG4gKiByZXRyaWV2ZSBpdCBpbiB0aGUgc3RlcCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0ZXBNZXRhZGF0YSgpOiBTdGVwTWV0YWRhdGEge1xuICBjb25zdCBjdHggPSBjb250ZXh0U3RvcmFnZS5nZXRTdG9yZSgpO1xuICBpZiAoIWN0eCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdgZ2V0U3RlcE1ldGFkYXRhKClgIGNhbiBvbmx5IGJlIGNhbGxlZCBpbnNpZGUgYSBzdGVwIGZ1bmN0aW9uJ1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIGN0eC5zdGVwTWV0YWRhdGE7XG59XG4iXX0=
@@ -9,4 +9,4 @@ export function getWorkflowMetadata() {
9
9
  }
10
10
  return ctx.workflowMetadata;
11
11
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXdvcmtmbG93LW1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0ZXAvZ2V0LXdvcmtmbG93LW1ldGFkYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUl0RDs7R0FFRztBQUNILE1BQU0sVUFBVSxtQkFBbUI7SUFDakMsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNULE1BQU0sSUFBSSxLQUFLLENBQ2IsK0VBQStFLENBQ2hGLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7QUFDOUIsQ0FBQyJ9
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXdvcmtmbG93LW1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0ZXAvZ2V0LXdvcmtmbG93LW1ldGFkYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUl0RDs7R0FFRztBQUNILE1BQU0sVUFBVSxtQkFBbUI7SUFDakMsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNULE1BQU0sSUFBSSxLQUFLLENBQ2IsK0VBQStFLENBQ2hGLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7QUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgV29ya2Zsb3dNZXRhZGF0YSB9IGZyb20gJy4uL3dvcmtmbG93L2dldC13b3JrZmxvdy1tZXRhZGF0YS5qcyc7XG5pbXBvcnQgeyBjb250ZXh0U3RvcmFnZSB9IGZyb20gJy4vY29udGV4dC1zdG9yYWdlLmpzJztcblxuZXhwb3J0IHR5cGUgeyBXb3JrZmxvd01ldGFkYXRhIH07XG5cbi8qKlxuICogUmV0dXJucyBtZXRhZGF0YSBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgd29ya2Zsb3cgcnVuIGluc2lkZSBhIHN0ZXAgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3JrZmxvd01ldGFkYXRhKCk6IFdvcmtmbG93TWV0YWRhdGEge1xuICBjb25zdCBjdHggPSBjb250ZXh0U3RvcmFnZS5nZXRTdG9yZSgpO1xuICBpZiAoIWN0eCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdgZ2V0V29ya2Zsb3dNZXRhZGF0YSgpYCBjYW4gb25seSBiZSBjYWxsZWQgaW5zaWRlIGEgd29ya2Zsb3cgb3Igc3RlcCBmdW5jdGlvbidcbiAgICApO1xuICB9XG4gIHJldHVybiBjdHgud29ya2Zsb3dNZXRhZGF0YTtcbn1cbiJdfQ==
@@ -36,4 +36,4 @@ export function getWritable(options = {}) {
36
36
  // Return the writable side of the transform stream
37
37
  return serialize.writable;
38
38
  }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGFibGUtc3RyZWFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0ZXAvd3JpdGFibGUtc3RyZWFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLGdCQUFnQixHQUNqQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLDRCQUE0QixHQUM3QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFhdEQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FDekIsVUFBeUMsRUFBRTtJQUUzQyxNQUFNLEdBQUcsR0FBRyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1QsTUFBTSxJQUFJLEtBQUssQ0FDYix1RUFBdUUsQ0FDeEUsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQzlCLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7SUFDakQsTUFBTSxJQUFJLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRXRELG9GQUFvRjtJQUNwRixNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FDbEMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFDbEUsR0FBRyxDQUFDLGFBQWEsQ0FDbEIsQ0FBQztJQUVGLHdFQUF3RTtJQUN4RSxvRUFBb0U7SUFDcEUsd0VBQXdFO0lBQ3hFLDJDQUEyQztJQUMzQyxNQUFNLGNBQWMsR0FBRyxJQUFJLDRCQUE0QixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyRSxNQUFNLEtBQUssR0FBRyxvQkFBb0IsRUFBRSxDQUFDO0lBQ3JDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUU1QixhQUFhLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtRQUNsRSxzQ0FBc0M7SUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRTVDLG1EQUFtRDtJQUNuRCxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDNUIsQ0FBQyJ9
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGFibGUtc3RyZWFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0ZXAvd3JpdGFibGUtc3RyZWFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLGdCQUFnQixHQUNqQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLDRCQUE0QixHQUM3QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFhdEQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FDekIsVUFBeUMsRUFBRTtJQUUzQyxNQUFNLEdBQUcsR0FBRyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1QsTUFBTSxJQUFJLEtBQUssQ0FDYix1RUFBdUUsQ0FDeEUsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQzlCLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7SUFDakQsTUFBTSxJQUFJLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRXRELG9GQUFvRjtJQUNwRixNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FDbEMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFDbEUsR0FBRyxDQUFDLGFBQWEsQ0FDbEIsQ0FBQztJQUVGLHdFQUF3RTtJQUN4RSxvRUFBb0U7SUFDcEUsd0VBQXdFO0lBQ3hFLDJDQUEyQztJQUMzQyxNQUFNLGNBQWMsR0FBRyxJQUFJLDRCQUE0QixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyRSxNQUFNLEtBQUssR0FBRyxvQkFBb0IsRUFBRSxDQUFDO0lBQ3JDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUU1QixhQUFhLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtRQUNsRSxzQ0FBc0M7SUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRTVDLG1EQUFtRDtJQUNuRCxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGNyZWF0ZUZsdXNoYWJsZVN0YXRlLFxuICBmbHVzaGFibGVQaXBlLFxuICBwb2xsV3JpdGFibGVMb2NrLFxufSBmcm9tICcuLi9mbHVzaGFibGUtc3RyZWFtLmpzJztcbmltcG9ydCB7XG4gIGdldEV4dGVybmFsUmVkdWNlcnMsXG4gIGdldFNlcmlhbGl6ZVN0cmVhbSxcbiAgV29ya2Zsb3dTZXJ2ZXJXcml0YWJsZVN0cmVhbSxcbn0gZnJvbSAnLi4vc2VyaWFsaXphdGlvbi5qcyc7XG5pbXBvcnQgeyBnZXRXb3JrZmxvd1J1blN0cmVhbUlkIH0gZnJvbSAnLi4vdXRpbC5qcyc7XG5pbXBvcnQgeyBjb250ZXh0U3RvcmFnZSB9IGZyb20gJy4vY29udGV4dC1zdG9yYWdlLmpzJztcblxuLyoqXG4gKiBUaGUgb3B0aW9ucyBmb3Ige0BsaW5rIGdldFdyaXRhYmxlfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrZmxvd1dyaXRhYmxlU3RyZWFtT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBuYW1lc3BhY2UgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBtdWx0aXBsZSBzdHJlYW1zIGFzc29jaWF0ZWRcbiAgICogd2l0aCB0aGUgc2FtZSB3b3JrZmxvdyBydW4uXG4gICAqL1xuICBuYW1lc3BhY2U/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgd3JpdGFibGUgc3RyZWFtIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IHdvcmtmbG93LlxuICpcbiAqIFRoZSB3cml0YWJsZSBzdHJlYW0gaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aXRoaW4gc3RlcCBmdW5jdGlvbnMgdG8gd3JpdGVcbiAqIGRhdGEgdGhhdCBjYW4gYmUgcmVhZCBvdXRzaWRlIHRoZSB3b3JrZmxvdyBieSB1c2luZyB0aGUgcmVhZGFibGUgbWV0aG9kIG9mIGdldFJ1bi5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB3cml0YWJsZSBzdHJlYW1cbiAqIEByZXR1cm5zIFRoZSB3cml0YWJsZSBzdHJlYW0gYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IHdvcmtmbG93IHJ1blxuICogQHRocm93cyBFcnJvciBpZiBjYWxsZWQgb3V0c2lkZSBhIHdvcmtmbG93IG9yIHN0ZXAgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdyaXRhYmxlPFcgPSBhbnk+KFxuICBvcHRpb25zOiBXb3JrZmxvd1dyaXRhYmxlU3RyZWFtT3B0aW9ucyA9IHt9XG4pOiBXcml0YWJsZVN0cmVhbTxXPiB7XG4gIGNvbnN0IGN0eCA9IGNvbnRleHRTdG9yYWdlLmdldFN0b3JlKCk7XG4gIGlmICghY3R4KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ2BnZXRXcml0YWJsZSgpYCBjYW4gb25seSBiZSBjYWxsZWQgaW5zaWRlIGEgd29ya2Zsb3cgb3Igc3RlcCBmdW5jdGlvbidcbiAgICApO1xuICB9XG5cbiAgY29uc3QgeyBuYW1lc3BhY2UgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJ1bklkID0gY3R4LndvcmtmbG93TWV0YWRhdGEud29ya2Zsb3dSdW5JZDtcbiAgY29uc3QgbmFtZSA9IGdldFdvcmtmbG93UnVuU3RyZWFtSWQocnVuSWQsIG5hbWVzcGFjZSk7XG5cbiAgLy8gQ3JlYXRlIGEgdHJhbnNmb3JtIHN0cmVhbSB0aGF0IHNlcmlhbGl6ZXMgY2h1bmtzIGFuZCBwaXBlcyB0byB0aGUgd29ya2Zsb3cgc2VydmVyXG4gIGNvbnN0IHNlcmlhbGl6ZSA9IGdldFNlcmlhbGl6ZVN0cmVhbShcbiAgICBnZXRFeHRlcm5hbFJlZHVjZXJzKGdsb2JhbFRoaXMsIGN0eC5vcHMsIHJ1bklkLCBjdHguZW5jcnlwdGlvbktleSksXG4gICAgY3R4LmVuY3J5cHRpb25LZXlcbiAgKTtcblxuICAvLyBVc2UgZmx1c2hhYmxlIHBpcGUgc28gdGhlIG9wcyBwcm9taXNlIHJlc29sdmVzIHdoZW4gdGhlIHVzZXIgcmVsZWFzZXNcbiAgLy8gdGhlaXIgd3JpdGVyIGxvY2ssIG5vdCBvbmx5IHdoZW4gdGhlIHN0cmVhbSBpcyBleHBsaWNpdGx5IGNsb3NlZC5cbiAgLy8gV2l0aG91dCB0aGlzLCBWZXJjZWwgZnVuY3Rpb25zIGhhbmcgdW50aWwgdGhlIHJ1bnRpbWUgdGltZW91dCBiZWNhdXNlXG4gIC8vIC5waXBlVG8oKSBvbmx5IHJlc29sdmVzIG9uIHN0cmVhbSBjbG9zZS5cbiAgY29uc3Qgc2VydmVyV3JpdGFibGUgPSBuZXcgV29ya2Zsb3dTZXJ2ZXJXcml0YWJsZVN0cmVhbShuYW1lLCBydW5JZCk7XG4gIGNvbnN0IHN0YXRlID0gY3JlYXRlRmx1c2hhYmxlU3RhdGUoKTtcbiAgY3R4Lm9wcy5wdXNoKHN0YXRlLnByb21pc2UpO1xuXG4gIGZsdXNoYWJsZVBpcGUoc2VyaWFsaXplLnJlYWRhYmxlLCBzZXJ2ZXJXcml0YWJsZSwgc3RhdGUpLmNhdGNoKCgpID0+IHtcbiAgICAvLyBFcnJvcnMgYXJlIGhhbmRsZWQgdmlhIHN0YXRlLnJlamVjdFxuICB9KTtcblxuICBwb2xsV3JpdGFibGVMb2NrKHNlcmlhbGl6ZS53cml0YWJsZSwgc3RhdGUpO1xuXG4gIC8vIFJldHVybiB0aGUgd3JpdGFibGUgc2lkZSBvZiB0aGUgdHJhbnNmb3JtIHN0cmVhbVxuICByZXR1cm4gc2VyaWFsaXplLndyaXRhYmxlO1xufVxuIl19