@pipeline-builder/api-core 5.2.6 → 5.2.8

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 (189) hide show
  1. package/lib/constants/ai-providers.js +1 -1
  2. package/lib/constants/http-status.js +1 -1
  3. package/lib/constants/index.js +1 -1
  4. package/lib/constants/time.js +1 -1
  5. package/lib/errors/app-errors.js +1 -1
  6. package/lib/errors/index.js +1 -1
  7. package/lib/helpers/access-helpers.d.ts +19 -0
  8. package/lib/helpers/access-helpers.js +24 -4
  9. package/lib/helpers/content-disposition.js +1 -1
  10. package/lib/helpers/crud-helpers.js +1 -1
  11. package/lib/helpers/index.d.ts +1 -1
  12. package/lib/helpers/index.js +2 -2
  13. package/lib/helpers/org-hierarchy-http.js +1 -1
  14. package/lib/helpers/org-hierarchy.js +1 -1
  15. package/lib/helpers/restore-helpers.js +1 -1
  16. package/lib/helpers/sse-helpers.js +13 -2
  17. package/lib/helpers/support-calendar.js +1 -1
  18. package/lib/index.js +1 -1
  19. package/lib/middleware/ask-provenance.js +1 -1
  20. package/lib/middleware/assurance.js +1 -1
  21. package/lib/middleware/auth.js +3 -2
  22. package/lib/middleware/client-version.d.ts +45 -0
  23. package/lib/middleware/client-version.js +97 -0
  24. package/lib/middleware/deferred-quota-check.js +1 -1
  25. package/lib/middleware/ecosystem-guard.js +1 -1
  26. package/lib/middleware/index.d.ts +1 -0
  27. package/lib/middleware/index.js +2 -1
  28. package/lib/middleware/jwt-verify.js +1 -1
  29. package/lib/middleware/mongo-sanitize.js +1 -1
  30. package/lib/middleware/on-behalf.js +1 -1
  31. package/lib/middleware/permission-gates.js +1 -1
  32. package/lib/middleware/quota-exempt-routes.js +1 -1
  33. package/lib/middleware/revocation.js +1 -1
  34. package/lib/middleware/route-table.js +16 -1
  35. package/lib/middleware/service-tokens.js +1 -1
  36. package/lib/middleware/step-up.js +1 -1
  37. package/lib/middleware/system-org.d.ts +18 -5
  38. package/lib/middleware/system-org.js +19 -6
  39. package/lib/openapi/extend-zod.js +1 -1
  40. package/lib/openapi/index.js +1 -1
  41. package/lib/openapi/registry.js +1 -1
  42. package/lib/openapi/routes/ask-routes.js +1 -1
  43. package/lib/openapi/routes/billing-routes.js +1 -1
  44. package/lib/openapi/routes/image-registry-routes.js +1 -1
  45. package/lib/openapi/routes/index.js +1 -1
  46. package/lib/openapi/routes/message-routes.js +1 -1
  47. package/lib/openapi/routes/pipeline-routes.js +1 -1
  48. package/lib/openapi/routes/pipeline-template-routes.js +1 -1
  49. package/lib/openapi/routes/plugin-routes.js +1 -1
  50. package/lib/openapi/routes/quota-routes.js +1 -1
  51. package/lib/openapi/schema-registry.js +1 -1
  52. package/lib/routes/health.js +1 -1
  53. package/lib/routes/index.js +1 -1
  54. package/lib/services/ai-call-weight.js +1 -1
  55. package/lib/services/alert-delivery.js +1 -1
  56. package/lib/services/api-key-exchange.d.ts +4 -2
  57. package/lib/services/api-key-exchange.js +15 -8
  58. package/lib/services/audit-context.d.ts +3 -0
  59. package/lib/services/audit-context.js +2 -1
  60. package/lib/services/audit-spool.js +1 -1
  61. package/lib/services/cache-service.js +1 -1
  62. package/lib/services/circuit-breaker.js +1 -1
  63. package/lib/services/compliance-client.js +1 -1
  64. package/lib/services/compliance-event-subscriber.js +1 -1
  65. package/lib/services/durable-event-bus.js +1 -1
  66. package/lib/services/ecosystem-notify-client.d.ts +7 -1
  67. package/lib/services/ecosystem-notify-client.js +9 -3
  68. package/lib/services/entity-events.js +1 -1
  69. package/lib/services/env-redis.js +1 -1
  70. package/lib/services/http-client.js +19 -3
  71. package/lib/services/index.d.ts +1 -1
  72. package/lib/services/index.js +2 -2
  73. package/lib/services/jwks-cache.js +1 -1
  74. package/lib/services/leader-lock.js +1 -1
  75. package/lib/services/notification-channels.js +1 -1
  76. package/lib/services/org-ai-client.js +1 -1
  77. package/lib/services/pagerduty-inbound.js +1 -1
  78. package/lib/services/pagerduty.js +1 -1
  79. package/lib/services/quota-increment-batcher.js +1 -1
  80. package/lib/services/quota.js +1 -1
  81. package/lib/services/remote-audit-client.js +1 -1
  82. package/lib/services/retry-forever.js +1 -1
  83. package/lib/services/retry-strategy.js +1 -1
  84. package/lib/services/s3-client.js +1 -1
  85. package/lib/services/scheduler.js +1 -1
  86. package/lib/services/service-boot.js +1 -1
  87. package/lib/services/service-keys.js +2 -2
  88. package/lib/services/sse-ticket-store.js +1 -1
  89. package/lib/services/system-notification.js +1 -1
  90. package/lib/services/token-revocation.js +1 -1
  91. package/lib/services/version-vuln-policy.d.ts +11 -0
  92. package/lib/services/version-vuln-policy.js +33 -7
  93. package/lib/types/ai-catalog.js +1 -1
  94. package/lib/types/ask-proposals.d.ts +23 -0
  95. package/lib/types/ask-proposals.js +29 -1
  96. package/lib/types/audit-events.js +1 -1
  97. package/lib/types/build-catalog.d.ts +65 -0
  98. package/lib/types/build-catalog.js +95 -1
  99. package/lib/types/catalog-metadata.js +1 -1
  100. package/lib/types/common.js +1 -1
  101. package/lib/types/compliance-exemption.js +1 -1
  102. package/lib/types/ecosystem-notifications.d.ts +9 -0
  103. package/lib/types/ecosystem-notifications.js +15 -6
  104. package/lib/types/ecosystem.d.ts +1 -6
  105. package/lib/types/ecosystem.js +18 -5
  106. package/lib/types/error-codes.d.ts +3 -0
  107. package/lib/types/error-codes.js +6 -1
  108. package/lib/types/feature-flags.d.ts +17 -1
  109. package/lib/types/feature-flags.js +1 -1
  110. package/lib/types/http.js +1 -1
  111. package/lib/types/index.d.ts +3 -3
  112. package/lib/types/index.js +4 -4
  113. package/lib/types/metadata-keys.js +1 -1
  114. package/lib/types/permissions.d.ts +60 -13
  115. package/lib/types/permissions.js +63 -14
  116. package/lib/types/pipeline-template.js +1 -1
  117. package/lib/types/pipeline.js +1 -1
  118. package/lib/types/plugin-catalog.js +1 -1
  119. package/lib/types/plugin-health.js +1 -1
  120. package/lib/types/plugin-scan.d.ts +69 -0
  121. package/lib/types/plugin-scan.js +77 -1
  122. package/lib/types/quota-catalog.js +15 -2
  123. package/lib/types/quota-tiers.d.ts +27 -160
  124. package/lib/types/quota-tiers.js +47 -255
  125. package/lib/types/remote-audit-actions.d.ts +1 -1
  126. package/lib/types/remote-audit-actions.js +9 -1
  127. package/lib/types/reserved-tags.js +1 -1
  128. package/lib/types/tier-limits.d.ts +210 -0
  129. package/lib/types/tier-limits.js +254 -0
  130. package/lib/types/usage-projection.js +1 -1
  131. package/lib/types/visibility.js +1 -1
  132. package/lib/types/wire-vocabulary.d.ts +7 -0
  133. package/lib/types/wire-vocabulary.js +7 -1
  134. package/lib/utils/alias-resolver.js +1 -1
  135. package/lib/utils/api-key.js +1 -1
  136. package/lib/utils/audit.js +1 -1
  137. package/lib/utils/aws-scrub.js +1 -1
  138. package/lib/utils/compliance-attributes.js +1 -1
  139. package/lib/utils/concurrency-gate.d.ts +98 -0
  140. package/lib/utils/concurrency-gate.js +110 -0
  141. package/lib/utils/concurrency.js +1 -1
  142. package/lib/utils/crash-handlers.js +1 -1
  143. package/lib/utils/date.js +1 -1
  144. package/lib/utils/dsse.js +1 -1
  145. package/lib/utils/env.d.ts +11 -0
  146. package/lib/utils/env.js +14 -1
  147. package/lib/utils/headers.js +1 -1
  148. package/lib/utils/identity.js +1 -1
  149. package/lib/utils/index.d.ts +2 -0
  150. package/lib/utils/index.js +3 -1
  151. package/lib/utils/jwk.js +2 -2
  152. package/lib/utils/logger.js +1 -1
  153. package/lib/utils/metric-emitter.js +1 -1
  154. package/lib/utils/object.js +1 -1
  155. package/lib/utils/params.js +1 -1
  156. package/lib/utils/plugin-compliance.d.ts +9 -1
  157. package/lib/utils/plugin-compliance.js +1 -1
  158. package/lib/utils/proof-of-work.js +1 -1
  159. package/lib/utils/response.js +1 -1
  160. package/lib/utils/retention.js +1 -1
  161. package/lib/utils/safe-require.js +1 -1
  162. package/lib/utils/secret-encryption.js +1 -1
  163. package/lib/utils/secret-rotation.js +1 -1
  164. package/lib/utils/secure-compare.js +1 -1
  165. package/lib/utils/semver.d.ts +18 -0
  166. package/lib/utils/semver.js +120 -0
  167. package/lib/utils/sensitive-patterns.js +1 -1
  168. package/lib/utils/service-registry.js +1 -1
  169. package/lib/utils/ssrf.js +1 -1
  170. package/lib/validation/ai-schemas.js +1 -1
  171. package/lib/validation/common-schemas.js +1 -1
  172. package/lib/validation/dockerfile-static.js +1 -1
  173. package/lib/validation/index.d.ts +1 -1
  174. package/lib/validation/index.js +2 -2
  175. package/lib/validation/message-schemas.d.ts +73 -0
  176. package/lib/validation/message-schemas.js +63 -2
  177. package/lib/validation/middleware.js +1 -1
  178. package/lib/validation/pipeline-schemas.js +1 -1
  179. package/lib/validation/pipeline-template-schemas.js +1 -1
  180. package/lib/validation/plugin-base-images.js +1 -1
  181. package/lib/validation/plugin-catalog-detect.js +1 -1
  182. package/lib/validation/plugin-catalog-metadata.js +1 -1
  183. package/lib/validation/plugin-heuristics.js +1 -1
  184. package/lib/validation/plugin-lint.js +1 -1
  185. package/lib/validation/plugin-name-confusable.js +1 -1
  186. package/lib/validation/plugin-schemas.js +1 -1
  187. package/lib/validation/plugin-spec-schema.js +1 -1
  188. package/lib/validation/plugin-template-contract.js +1 -1
  189. package/package.json +11 -4
@@ -116,4 +116,4 @@ export function getErrorRetryDecision(attempt, config) {
116
116
  }
117
117
  return { shouldRetry: false, delayMs: 0, reason: 'Max retries exceeded' };
118
118
  }
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cnktc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvcmV0cnktc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDcEYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxDQUFDLDRCQUE0QixFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzVGLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLENBQUMsQ0FBQztBQUVoRCxzREFBc0Q7QUFDdEQsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUM7QUFFbEMsK0VBQStFO0FBQy9FLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBOEIvQzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxNQUFxQztJQUNuRSxJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzlCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3pELElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFN0IsNEJBQTRCO0lBQzVCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENB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S0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxDQUFDO0FBQ3JFLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLE9BQWUsRUFDZixNQUFtQjtJQUVuQixJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEMsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRSxPQUFPO1lBQ0wsV0FBVyxFQUFFLElBQUk7WUFDakIsT0FBTyxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFDNUIsTUFBTSxFQUFFLDZCQUE2QjtTQUN0QyxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLHNCQUFzQixFQUFFLENBQUM7QUFDNUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgKiBhcyBodHRwIGZyb20gJ2h0dHAnO1xuaW1wb3J0IHsgZW52SW50IH0gZnJvbSAnLi4vdXRpbHMvZW52LmpzJztcblxuLyoqXG4gKiBEZWZhdWx0IHJldHJ5IGNvbmZpZ3VyYXRpb24gKGVudjogYEhUVFBfQ0xJRU5UX01BWF9SRVRSSUVTYCwgYEhUVFBfQ0xJRU5UX1JFVFJZX0RFTEFZX01TYCkuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BWF9SRVRSSUVTID0gZW52SW50KCdIVFRQX0NMSUVOVF9NQVhfUkVUUklFUycsIDIsIHsgbWluOiAwIH0pO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUkVUUllfREVMQVlfTVMgPSBlbnZJbnQoJ0hUVFBfQ0xJRU5UX1JFVFJZX0RFTEFZX01TJywgMjAwLCB7IG1pbjogMCB9KTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX01BWF9SQVRFX0xJTUlUX1JFVFJJRVMgPSA0O1xuXG4vKiogTWF4IFJldHJ5LUFmdGVyIHZhbHVlIHdlJ2xsIGhvbm9yICg2MCBzZWNvbmRzKS4gKi9cbmNvbnN0IE1BWF9SRVRSWV9BRlRFUl9NUyA9IDYwXzAwMDtcblxuLyoqIEhUVFAgc3RhdHVzIGNvZGVzIGNvbnNpZGVyZWQgdHJhbnNpZW50IHNlcnZlciBlcnJvcnMgZWxpZ2libGUgZm9yIHJldHJ5LiAqL1xuY29uc3QgVFJBTlNJRU5UX1NUQVRVU19DT0RFUyA9IFs1MDIsIDUwMywgNTA0XTtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciByZXRyeSBiZWhhdmlvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXRyeUNvbmZpZyB7XG4gIC8qKiBSZXRyaWVzIEFGVEVSIHRoZSBpbml0aWFsIGF0dGVtcHQgKHNvIGAzYCDih5IgdXAgdG8gNCBhdHRlbXB0cykuICovXG4gIG1heFJldHJpZXM6IG51bWJlcjtcbiAgLyoqIEJhc2UgZGVsYXkgYmV0d2VlbiByZXRyaWVzIGluIG1zIOKAlCBkb3VibGVzIGVhY2ggYXR0ZW1wdCAoZGVmYXVsdDogMjAwKSAqL1xuICByZXRyeURlbGF5TXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIE1heGltdW0gcmV0cnkgYXR0ZW1wdHMgc3BlY2lmaWNhbGx5IGZvciA0MjkgcmF0ZSBsaW1pdGluZyAoZGVmYXVsdDpcbiAgICoge0BsaW5rIERFRkFVTFRfTUFYX1JBVEVfTElNSVRfUkVUUklFU30pLiBIVFRQLW9ubHkg4oCUIG9taXQgaXQgZm9yIGFcbiAgICogbm9uLUhUVFAgY29uc3VtZXIgc3VjaCBhcyB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiByZXRyeS5cbiAgICovXG4gIG1heFJhdGVMaW1pdFJldHJpZXM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUmVzdWx0IG9mIGEgcmV0cnkgZGVjaXNpb246IHdoZXRoZXIgdG8gcmV0cnksIGFuZCBob3cgbG9uZyB0byB3YWl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5RGVjaXNpb24ge1xuICAvKiogV2hldGhlciB0aGUgcmVxdWVzdCBzaG91bGQgYmUgcmV0cmllZCAqL1xuICBzaG91bGRSZXRyeTogYm9vbGVhbjtcbiAgLyoqIERlbGF5IGluIG1pbGxpc2Vjb25kcyBiZWZvcmUgcmV0cnlpbmcgKHdpdGggaml0dGVyIGFwcGxpZWQpICovXG4gIGRlbGF5TXM6IG51bWJlcjtcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIHJlYXNvbiBmb3IgdGhlIHJldHJ5IGRlY2lzaW9uICovXG4gIHJlYXNvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgYFJldHJ5LUFmdGVyYCBoZWFkZXIgdmFsdWUgaW50byBtaWxsaXNlY29uZHMuXG4gKiBTdXBwb3J0cyBudW1lcmljIHNlY29uZHMgKGUuZy4gXCI1XCIpIGFuZCBIVFRQLWRhdGUgZm9ybWF0LlxuICogUmV0dXJucyBgdW5kZWZpbmVkYCBmb3IgbWlzc2luZyBvciBpbnZhbGlkIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmV0cnlBZnRlcihoZWFkZXI6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFoZWFkZXIpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHZhbHVlID0gQXJyYXkuaXNBcnJheShoZWFkZXIpID8gaGVhZGVyWzBdIDogaGVhZGVyO1xuICBpZiAoIXZhbHVlKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIC8vIFRyeSBudW1lcmljIHNlY29uZHMgZmlyc3RcbiAgY29uc3Qgc2Vjb25kcyA9IE51bWJlcih2YWx1ZSk7XG4gIGlmICghaXNOYU4oc2Vjb25kcykgJiYgc2Vjb25kcyA+PSAwKSB7XG4gICAgcmV0dXJuIE1hdGgubWluKHNlY29uZHMgKiAxMDAwLCBNQVhfUkVUUllfQUZURVJfTVMpO1xuICB9XG5cbiAgLy8gVHJ5IEhUVFAtZGF0ZVxuICBjb25zdCBkYXRlID0gRGF0ZS5wYXJzZSh2YWx1ZSk7XG4gIGlmICghaXNOYU4oZGF0ZSkpIHtcbiAgICBjb25zdCBkZWxheU1zID0gZGF0ZSAtIERhdGUubm93KCk7XG4gICAgaWYgKGRlbGF5TXMgPiAwKSByZXR1cm4gTWF0aC5taW4oZGVsYXlNcywgTUFYX1JFVFJZX0FGVEVSX01TKTtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQXBwbHkgKy8tMjUlIHJhbmRvbSBqaXR0ZXIgdG8gYSBkZWxheSB0byBwcmV2ZW50IHRodW5kZXJpbmcgaGVyZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZEppdHRlcihkZWxheTogbnVtYmVyKTogbnVtYmVyIHtcbiAgY29uc3Qgaml0dGVyID0gZGVsYXkgKiAwLjI1ICogKDIgKiBNYXRoLnJhbmRvbSgpIC0gMSk7IC8vIC0yNSUgdG8gKzI1JVxuICByZXR1cm4gTWF0aC5tYXgoMCwgTWF0aC5yb3VuZChkZWxheSArIGppdHRlcikpO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBleHBvbmVudGlhbCBiYWNrb2ZmIGRlbGF5IGZvciBhIGdpdmVuIGF0dGVtcHQuXG4gKlxuICogQHBhcmFtIGJhc2VEZWxheSAtIEJhc2UgZGVsYXkgaW4gbWlsbGlzZWNvbmRzXG4gKiBAcGFyYW0gYXR0ZW1wdCAtIFplcm8tYmFzZWQgYXR0ZW1wdCBudW1iZXJcbiAqIEByZXR1cm5zIERlbGF5IGluIG1pbGxpc2Vjb25kcyAod2l0aG91dCBqaXR0ZXIpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVCYWNrb2ZmKGJhc2VEZWxheTogbnVtYmVyLCBhdHRlbXB0OiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gYmFzZURlbGF5ICogTWF0aC5wb3coMiwgYXR0ZW1wdCk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgYSBzdGF0dXMgY29kZSByZXByZXNlbnRzIGEgdHJhbnNpZW50IHNlcnZlciBlcnJvclxuICogdGhhdCBpcyBlbGlnaWJsZSBmb3IgcmV0cnkgKDUwMiwgNTAzLCA1MDQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNUcmFuc2llbnRTdGF0dXNDb2RlKHN0YXR1c0NvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gVFJBTlNJRU5UX1NUQVRVU19DT0RFUy5pbmNsdWRlcyhzdGF0dXNDb2RlKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgd2hldGhlciBhIHN0YXR1cyBjb2RlIGluZGljYXRlcyByYXRlIGxpbWl0aW5nICg0MjkpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSYXRlTGltaXRlZChzdGF0dXNDb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN0YXR1c0NvZGUgPT09IDQyOTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgd2hldGhlciBhIGZhaWxlZCByZXNwb25zZSBzaG91bGQgYmUgcmV0cmllZCwgYW5kIGNvbXB1dGUgdGhlIGRlbGF5LlxuICpcbiAqIEBwYXJhbSBzdGF0dXNDb2RlIC0gSFRUUCBzdGF0dXMgY29kZSBvZiB0aGUgcmVzcG9uc2VcbiAqIEBwYXJhbSBoZWFkZXJzIC0gUmVzcG9uc2UgaGVhZGVycyAodXNlZCB0byByZWFkIFJldHJ5LUFmdGVyIGZvciA0MjkpXG4gKiBAcGFyYW0gYXR0ZW1wdCAtIFplcm8tYmFzZWQgYXR0ZW1wdCBudW1iZXJcbiAqIEBwYXJhbSBjb25maWcgLSBSZXRyeSBjb25maWd1cmF0aW9uXG4gKiBAcmV0dXJucyBBIFJldHJ5RGVjaXNpb24gaW5kaWNhdGluZyB3aGV0aGVyIHRvIHJldHJ5IGFuZCB0aGUgZGVsYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJldHJ5RGVjaXNpb24oXG4gIHN0YXR1c0NvZGU6IG51bWJlcixcbiAgaGVhZGVyczogaHR0cC5JbmNvbWluZ0h0dHBIZWFkZXJzLFxuICBhdHRlbXB0OiBudW1iZXIsXG4gIGNvbmZpZzogUmV0cnlDb25maWcsXG4pOiBSZXRyeURlY2lzaW9uIHtcbiAgLy8gNDI5IHJhdGUgbGltaXRpbmcg4oCUIHVzZSBSZXRyeS1BZnRlciBvciBsb25nZXIgYmFja29mZiAoNHggYmFzZSlcbiAgaWYgKGlzUmF0ZUxpbWl0ZWQoc3RhdHVzQ29kZSkgJiYgYXR0ZW1wdCA8IChjb25maWcubWF4UmF0ZUxpbWl0UmV0cmllcyA/PyBERUZBVUxUX01BWF9SQVRFX0xJTUlUX1JFVFJJRVMpKSB7XG4gICAgY29uc3QgcmV0cnlBZnRlciA9IHBhcnNlUmV0cnlBZnRlcihoZWFkZXJzWydyZXRyeS1hZnRlciddKTtcbiAgICBjb25zdCByYXdEZWxheSA9IHJldHJ5QWZ0ZXIgPz8gKGNvbmZpZy5yZXRyeURlbGF5TXMgKiA0ICogTWF0aC5wb3coMiwgYXR0ZW1wdCkpO1xuICAgIHJldHVybiB7XG4gICAgICBzaG91bGRSZXRyeTogdHJ1ZSxcbiAgICAgIGRlbGF5TXM6IGFkZEppdHRlcihyYXdEZWxheSksXG4gICAgICByZWFzb246ICdSYXRlIGxpbWl0ZWQgKDQyOSknLFxuICAgIH07XG4gIH1cblxuICAvLyA1eHggdHJhbnNpZW50IHNlcnZlciBlcnJvcnMg4oCUIHN0YW5kYXJkIGV4cG9uZW50aWFsIGJhY2tvZmZcbiAgaWYgKGlzVHJhbnNpZW50U3RhdHVzQ29kZShzdGF0dXNDb2RlKSAmJiBhdHRlbXB0IDwgY29uZmlnLm1heFJldHJpZXMpIHtcbiAgICBjb25zdCByYXdEZWxheSA9IGNhbGN1bGF0ZUJhY2tvZmYoY29uZmlnLnJldHJ5RGVsYXlNcywgYXR0ZW1wdCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNob3VsZFJldHJ5OiB0cnVlLFxuICAgICAgZGVsYXlNczogYWRkSml0dGVyKHJhd0RlbGF5KSxcbiAgICAgIHJlYXNvbjogYFRyYW5zaWVudCBzZXJ2ZXIgZXJyb3IgKCR7c3RhdHVzQ29kZX0pYCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHsgc2hvdWxkUmV0cnk6IGZhbHNlLCBkZWxheU1zOiAwLCByZWFzb246ICdOb3QgcmV0cnlhYmxlJyB9O1xufVxuXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIGEgY29ubmVjdGlvbi90aW1lb3V0IGVycm9yIHNob3VsZCBiZSByZXRyaWVkLCBhbmQgY29tcHV0ZSB0aGUgZGVsYXkuXG4gKlxuICogQHBhcmFtIGF0dGVtcHQgLSBaZXJvLWJhc2VkIGF0dGVtcHQgbnVtYmVyXG4gKiBAcGFyYW0gY29uZmlnIC0gUmV0cnkgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgQSBSZXRyeURlY2lzaW9uIGluZGljYXRpbmcgd2hldGhlciB0byByZXRyeSBhbmQgdGhlIGRlbGF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFcnJvclJldHJ5RGVjaXNpb24oXG4gIGF0dGVtcHQ6IG51bWJlcixcbiAgY29uZmlnOiBSZXRyeUNvbmZpZyxcbik6IFJldHJ5RGVjaXNpb24ge1xuICBpZiAoYXR0ZW1wdCA8IGNvbmZpZy5tYXhSZXRyaWVzKSB7XG4gICAgY29uc3QgcmF3RGVsYXkgPSBjYWxjdWxhdGVCYWNrb2ZmKGNvbmZpZy5yZXRyeURlbGF5TXMsIGF0dGVtcHQpO1xuICAgIHJldHVybiB7XG4gICAgICBzaG91bGRSZXRyeTogdHJ1ZSxcbiAgICAgIGRlbGF5TXM6IGFkZEppdHRlcihyYXdEZWxheSksXG4gICAgICByZWFzb246ICdDb25uZWN0aW9uIG9yIHRpbWVvdXQgZXJyb3InLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4geyBzaG91bGRSZXRyeTogZmFsc2UsIGRlbGF5TXM6IDAsIHJlYXNvbjogJ01heCByZXRyaWVzIGV4Y2VlZGVkJyB9O1xufVxuIl19
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cnktc3RyYXRlZ3kuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9yZXRyeS1zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNwRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDNUYsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxDQUFDO0FBRWhELHNEQUFzRDtBQUN0RCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQztBQUVsQywrRUFBK0U7QUFDL0UsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUE4Qi9DOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQXFDO0lBQ25FLElBQUksQ0FBQyxNQUFNO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDOUIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDekQsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUU3Qiw0QkFBNEI7SUFDNUIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLElB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QUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLENBQUM7QUFDckUsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsT0FBZSxFQUNmLE1BQW1CO0lBRW5CLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQyxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hFLE9BQU87WUFDTCxXQUFXLEVBQUUsSUFBSTtZQUNqQixPQUFPLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQztZQUM1QixNQUFNLEVBQUUsNkJBQTZCO1NBQ3RDLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztBQUM1RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCAqIGFzIGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgeyBlbnZJbnQgfSBmcm9tICcuLi91dGlscy9lbnYuanMnO1xuXG4vKipcbiAqIERlZmF1bHQgcmV0cnkgY29uZmlndXJhdGlvbiAoZW52OiBgSFRUUF9DTElFTlRfTUFYX1JFVFJJRVNgLCBgSFRUUF9DTElFTlRfUkVUUllfREVMQVlfTVNgKS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUFYX1JFVFJJRVMgPSBlbnZJbnQoJ0hUVFBfQ0xJRU5UX01BWF9SRVRSSUVTJywgMiwgeyBtaW46IDAgfSk7XG5leHBvcnQgY29uc3QgREVGQVVMVF9SRVRSWV9ERUxBWV9NUyA9IGVudkludCgnSFRUUF9DTElFTlRfUkVUUllfREVMQVlfTVMnLCAyMDAsIHsgbWluOiAwIH0pO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUFYX1JBVEVfTElNSVRfUkVUUklFUyA9IDQ7XG5cbi8qKiBNYXggUmV0cnktQWZ0ZXIgdmFsdWUgd2UnbGwgaG9ub3IgKDYwIHNlY29uZHMpLiAqL1xuY29uc3QgTUFYX1JFVFJZX0FGVEVSX01TID0gNjBfMDAwO1xuXG4vKiogSFRUUCBzdGF0dXMgY29kZXMgY29uc2lkZXJlZCB0cmFuc2llbnQgc2VydmVyIGVycm9ycyBlbGlnaWJsZSBmb3IgcmV0cnkuICovXG5jb25zdCBUUkFOU0lFTlRfU1RBVFVTX0NPREVTID0gWzUwMiwgNTAzLCA1MDRdO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHJldHJ5IGJlaGF2aW9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5Q29uZmlnIHtcbiAgLyoqIFJldHJpZXMgQUZURVIgdGhlIGluaXRpYWwgYXR0ZW1wdCAoc28gYDNgIOKHkiB1cCB0byA0IGF0dGVtcHRzKS4gKi9cbiAgbWF4UmV0cmllczogbnVtYmVyO1xuICAvKiogQmFzZSBkZWxheSBiZXR3ZWVuIHJldHJpZXMgaW4gbXMg4oCUIGRvdWJsZXMgZWFjaCBhdHRlbXB0IChkZWZhdWx0OiAyMDApICovXG4gIHJldHJ5RGVsYXlNczogbnVtYmVyO1xuICAvKipcbiAgICogTWF4aW11bSByZXRyeSBhdHRlbXB0cyBzcGVjaWZpY2FsbHkgZm9yIDQyOSByYXRlIGxpbWl0aW5nIChkZWZhdWx0OlxuICAgKiB7QGxpbmsgREVGQVVMVF9NQVhfUkFURV9MSU1JVF9SRVRSSUVTfSkuIEhUVFAtb25seSDigJQgb21pdCBpdCBmb3IgYVxuICAgKiBub24tSFRUUCBjb25zdW1lciBzdWNoIGFzIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uIHJldHJ5LlxuICAgKi9cbiAgbWF4UmF0ZUxpbWl0UmV0cmllcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgYSByZXRyeSBkZWNpc2lvbjogd2hldGhlciB0byByZXRyeSwgYW5kIGhvdyBsb25nIHRvIHdhaXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmV0cnlEZWNpc2lvbiB7XG4gIC8qKiBXaGV0aGVyIHRoZSByZXF1ZXN0IHNob3VsZCBiZSByZXRyaWVkICovXG4gIHNob3VsZFJldHJ5OiBib29sZWFuO1xuICAvKiogRGVsYXkgaW4gbWlsbGlzZWNvbmRzIGJlZm9yZSByZXRyeWluZyAod2l0aCBqaXR0ZXIgYXBwbGllZCkgKi9cbiAgZGVsYXlNczogbnVtYmVyO1xuICAvKiogSHVtYW4tcmVhZGFibGUgcmVhc29uIGZvciB0aGUgcmV0cnkgZGVjaXNpb24gKi9cbiAgcmVhc29uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2UgYSBgUmV0cnktQWZ0ZXJgIGhlYWRlciB2YWx1ZSBpbnRvIG1pbGxpc2Vjb25kcy5cbiAqIFN1cHBvcnRzIG51bWVyaWMgc2Vjb25kcyAoZS5nLiBcIjVcIikgYW5kIEhUVFAtZGF0ZSBmb3JtYXQuXG4gKiBSZXR1cm5zIGB1bmRlZmluZWRgIGZvciBtaXNzaW5nIG9yIGludmFsaWQgdmFsdWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSZXRyeUFmdGVyKGhlYWRlcjogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAoIWhlYWRlcikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgdmFsdWUgPSBBcnJheS5pc0FycmF5KGhlYWRlcikgPyBoZWFkZXJbMF0gOiBoZWFkZXI7XG4gIGlmICghdmFsdWUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgLy8gVHJ5IG51bWVyaWMgc2Vjb25kcyBmaXJzdFxuICBjb25zdCBzZWNvbmRzID0gTnVtYmVyKHZhbHVlKTtcbiAgaWYgKCFpc05hTihzZWNvbmRzKSAmJiBzZWNvbmRzID49IDApIHtcbiAgICByZXR1cm4gTWF0aC5taW4oc2Vjb25kcyAqIDEwMDAsIE1BWF9SRVRSWV9BRlRFUl9NUyk7XG4gIH1cblxuICAvLyBUcnkgSFRUUC1kYXRlXG4gIGNvbnN0IGRhdGUgPSBEYXRlLnBhcnNlKHZhbHVlKTtcbiAgaWYgKCFpc05hTihkYXRlKSkge1xuICAgIGNvbnN0IGRlbGF5TXMgPSBkYXRlIC0gRGF0ZS5ub3coKTtcbiAgICBpZiAoZGVsYXlNcyA+IDApIHJldHVybiBNYXRoLm1pbihkZWxheU1zLCBNQVhfUkVUUllfQUZURVJfTVMpO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBBcHBseSArLy0yNSUgcmFuZG9tIGppdHRlciB0byBhIGRlbGF5IHRvIHByZXZlbnQgdGh1bmRlcmluZyBoZXJkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkSml0dGVyKGRlbGF5OiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBqaXR0ZXIgPSBkZWxheSAqIDAuMjUgKiAoMiAqIE1hdGgucmFuZG9tKCkgLSAxKTsgLy8gLTI1JSB0byArMjUlXG4gIHJldHVybiBNYXRoLm1heCgwLCBNYXRoLnJvdW5kKGRlbGF5ICsgaml0dGVyKSk7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIGV4cG9uZW50aWFsIGJhY2tvZmYgZGVsYXkgZm9yIGEgZ2l2ZW4gYXR0ZW1wdC5cbiAqXG4gKiBAcGFyYW0gYmFzZURlbGF5IC0gQmFzZSBkZWxheSBpbiBtaWxsaXNlY29uZHNcbiAqIEBwYXJhbSBhdHRlbXB0IC0gWmVyby1iYXNlZCBhdHRlbXB0IG51bWJlclxuICogQHJldHVybnMgRGVsYXkgaW4gbWlsbGlzZWNvbmRzICh3aXRob3V0IGppdHRlcilcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUJhY2tvZmYoYmFzZURlbGF5OiBudW1iZXIsIGF0dGVtcHQ6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBiYXNlRGVsYXkgKiBNYXRoLnBvdygyLCBhdHRlbXB0KTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgd2hldGhlciBhIHN0YXR1cyBjb2RlIHJlcHJlc2VudHMgYSB0cmFuc2llbnQgc2VydmVyIGVycm9yXG4gKiB0aGF0IGlzIGVsaWdpYmxlIGZvciByZXRyeSAoNTAyLCA1MDMsIDUwNCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1RyYW5zaWVudFN0YXR1c0NvZGUoc3RhdHVzQ29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBUUkFOU0lFTlRfU1RBVFVTX0NPREVTLmluY2x1ZGVzKHN0YXR1c0NvZGUpO1xufVxuXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIGEgc3RhdHVzIGNvZGUgaW5kaWNhdGVzIHJhdGUgbGltaXRpbmcgKDQyOSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JhdGVMaW1pdGVkKHN0YXR1c0NvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gc3RhdHVzQ29kZSA9PT0gNDI5O1xufVxuXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIGEgZmFpbGVkIHJlc3BvbnNlIHNob3VsZCBiZSByZXRyaWVkLCBhbmQgY29tcHV0ZSB0aGUgZGVsYXkuXG4gKlxuICogQHBhcmFtIHN0YXR1c0NvZGUgLSBIVFRQIHN0YXR1cyBjb2RlIG9mIHRoZSByZXNwb25zZVxuICogQHBhcmFtIGhlYWRlcnMgLSBSZXNwb25zZSBoZWFkZXJzICh1c2VkIHRvIHJlYWQgUmV0cnktQWZ0ZXIgZm9yIDQyOSlcbiAqIEBwYXJhbSBhdHRlbXB0IC0gWmVyby1iYXNlZCBhdHRlbXB0IG51bWJlclxuICogQHBhcmFtIGNvbmZpZyAtIFJldHJ5IGNvbmZpZ3VyYXRpb25cbiAqIEByZXR1cm5zIEEgUmV0cnlEZWNpc2lvbiBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gcmV0cnkgYW5kIHRoZSBkZWxheVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmV0cnlEZWNpc2lvbihcbiAgc3RhdHVzQ29kZTogbnVtYmVyLFxuICBoZWFkZXJzOiBodHRwLkluY29taW5nSHR0cEhlYWRlcnMsXG4gIGF0dGVtcHQ6IG51bWJlcixcbiAgY29uZmlnOiBSZXRyeUNvbmZpZyxcbik6IFJldHJ5RGVjaXNpb24ge1xuICAvLyA0MjkgcmF0ZSBsaW1pdGluZyDigJQgdXNlIFJldHJ5LUFmdGVyIG9yIGxvbmdlciBiYWNrb2ZmICg0eCBiYXNlKVxuICBpZiAoaXNSYXRlTGltaXRlZChzdGF0dXNDb2RlKSAmJiBhdHRlbXB0IDwgKGNvbmZpZy5tYXhSYXRlTGltaXRSZXRyaWVzID8/IERFRkFVTFRfTUFYX1JBVEVfTElNSVRfUkVUUklFUykpIHtcbiAgICBjb25zdCByZXRyeUFmdGVyID0gcGFyc2VSZXRyeUFmdGVyKGhlYWRlcnNbJ3JldHJ5LWFmdGVyJ10pO1xuICAgIGNvbnN0IHJhd0RlbGF5ID0gcmV0cnlBZnRlciA/PyAoY29uZmlnLnJldHJ5RGVsYXlNcyAqIDQgKiBNYXRoLnBvdygyLCBhdHRlbXB0KSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNob3VsZFJldHJ5OiB0cnVlLFxuICAgICAgZGVsYXlNczogYWRkSml0dGVyKHJhd0RlbGF5KSxcbiAgICAgIHJlYXNvbjogJ1JhdGUgbGltaXRlZCAoNDI5KScsXG4gICAgfTtcbiAgfVxuXG4gIC8vIDV4eCB0cmFuc2llbnQgc2VydmVyIGVycm9ycyDigJQgc3RhbmRhcmQgZXhwb25lbnRpYWwgYmFja29mZlxuICBpZiAoaXNUcmFuc2llbnRTdGF0dXNDb2RlKHN0YXR1c0NvZGUpICYmIGF0dGVtcHQgPCBjb25maWcubWF4UmV0cmllcykge1xuICAgIGNvbnN0IHJhd0RlbGF5ID0gY2FsY3VsYXRlQmFja29mZihjb25maWcucmV0cnlEZWxheU1zLCBhdHRlbXB0KTtcbiAgICByZXR1cm4ge1xuICAgICAgc2hvdWxkUmV0cnk6IHRydWUsXG4gICAgICBkZWxheU1zOiBhZGRKaXR0ZXIocmF3RGVsYXkpLFxuICAgICAgcmVhc29uOiBgVHJhbnNpZW50IHNlcnZlciBlcnJvciAoJHtzdGF0dXNDb2RlfSlgLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4geyBzaG91bGRSZXRyeTogZmFsc2UsIGRlbGF5TXM6IDAsIHJlYXNvbjogJ05vdCByZXRyeWFibGUnIH07XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgYSBjb25uZWN0aW9uL3RpbWVvdXQgZXJyb3Igc2hvdWxkIGJlIHJldHJpZWQsIGFuZCBjb21wdXRlIHRoZSBkZWxheS5cbiAqXG4gKiBAcGFyYW0gYXR0ZW1wdCAtIFplcm8tYmFzZWQgYXR0ZW1wdCBudW1iZXJcbiAqIEBwYXJhbSBjb25maWcgLSBSZXRyeSBjb25maWd1cmF0aW9uXG4gKiBAcmV0dXJucyBBIFJldHJ5RGVjaXNpb24gaW5kaWNhdGluZyB3aGV0aGVyIHRvIHJldHJ5IGFuZCB0aGUgZGVsYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVycm9yUmV0cnlEZWNpc2lvbihcbiAgYXR0ZW1wdDogbnVtYmVyLFxuICBjb25maWc6IFJldHJ5Q29uZmlnLFxuKTogUmV0cnlEZWNpc2lvbiB7XG4gIGlmIChhdHRlbXB0IDwgY29uZmlnLm1heFJldHJpZXMpIHtcbiAgICBjb25zdCByYXdEZWxheSA9IGNhbGN1bGF0ZUJhY2tvZmYoY29uZmlnLnJldHJ5RGVsYXlNcywgYXR0ZW1wdCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNob3VsZFJldHJ5OiB0cnVlLFxuICAgICAgZGVsYXlNczogYWRkSml0dGVyKHJhd0RlbGF5KSxcbiAgICAgIHJlYXNvbjogJ0Nvbm5lY3Rpb24gb3IgdGltZW91dCBlcnJvcicsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7IHNob3VsZFJldHJ5OiBmYWxzZSwgZGVsYXlNczogMCwgcmVhc29uOiAnTWF4IHJldHJpZXMgZXhjZWVkZWQnIH07XG59XG4iXX0=
@@ -103,4 +103,4 @@ export async function ensureBucket(bucket) {
103
103
  }
104
104
  return ready;
105
105
  }
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3MzLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFFSCxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbEQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRXpDLElBQUksTUFBTSxHQUFvQixJQUFJLENBQUM7QUFFbkM7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsUUFBUTtJQUN0QixJQUFJLE1BQU07UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUMxQixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sR0FBRyxJQUFJLFFBQVEsQ0FBQztRQUNwQixNQUFNLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7UUFDeEMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2pDLHlFQUF5RTtRQUN6RSw2RUFBNkU7UUFDN0UsY0FBYyxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUM7UUFDcEQsV0FBVyxFQUFFO1lBQ1gsV0FBVyxFQUFFLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLENBQUM7WUFDckQsZUFBZSxFQUFFLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxZQUFZLENBQUM7U0FDOUQ7S0FDRixDQUFDLENBQUM7SUFDSCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsb0ZBQW9GO0FBQ3BGLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO0FBRXREOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxZQUFZLENBQUMsTUFBYztJQUMvQyxJQUFJLEtBQUssR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLEtBQUssR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ2xCLElBQUksQ0FBQztnQkFDSCxNQUFNLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLGlCQUFpQixDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuRSxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLElBQUksQ0FBQztvQkFDSCxNQUFNLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLG1CQUFtQixDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDbkUsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQy9DLENBQUM7Z0JBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztvQkFDYixJQUFJLENBQUM7d0JBQ0gsTUFBTSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ2pFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0RBQWdELEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ2hHLENBQUM7b0JBQUMsTUFBTSxDQUFDO3dCQUNQLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxNQUFNLGtCQUFrQixNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUN2RSxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNMLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBUaGUgc2hhcmVkIFMzLWNvbXBhdGlibGUgY2xpZW50LCBhbmQgdGhlIGJ1Y2tldC1lbnN1cmUgYmFja3N0b3AgdGhhdCBnb2VzXG4gKiB3aXRoIGl0LlxuICpcbiAqIEJhY2tlZCBieSBNaW5JTyBpbiBldmVyeSBlbnZpcm9ubWVudCAoc2VsZi1ob3N0ZWQsIG5vIEFXUy1hY2NvdW50IGNvdXBsaW5nKTtcbiAqIGJlY2F1c2UgTWluSU8gc3BlYWtzIHRoZSBTMyBBUEkgdGhpcyB1c2VzIHRoZSBBV1MgUzMgU0RLLCBzbyBhIHJlYWwtUzMgc3dhcCBpc1xuICogYSBwdXJlIGNvbmZpZyBjaGFuZ2UgKGRyb3AgdGhlIGN1c3RvbSBlbmRwb2ludCArIHBhdGgtc3R5bGUsIHN1cHBseSBJQU0gY3JlZHMpLlxuICpcbiAqIENvbmZpZyAoZW52KSDigJQgb25lIHNldCBvZiBuYW1lcywgcmVhZCBpZGVudGljYWxseSBieSBldmVyeSBzZXJ2aWNlOyBlYWNoXG4gKiBjb250YWluZXIgaXMgcG9pbnRlZCBhdCBpdHMgT1dOIGJ1Y2tldCB3aXRoIGJ1Y2tldC1zY29wZWQgY3JlZGVudGlhbHM6XG4gKiAgIFMzX0VORFBPSU5UICAgICAgICAgICBNaW5JTy9TMyBlbmRwb2ludCBVUkwgKGUuZy4gaHR0cDovL21pbmlvOjkwMDApLiBFbXB0eVxuICogICAgICAgICAgICAgICAgICAgICAgICAg4oeSIGRlZmF1bHQgQVdTIFMzIChubyBjdXN0b20gZW5kcG9pbnQpLlxuICogICBTM19SRUdJT04gICAgICAgICAgICAgcmVnaW9uIChkZWZhdWx0ICd1cy1lYXN0LTEnKS5cbiAqICAgUzNfQUNDRVNTX0tFWV9JRCAgICAgIGFjY2VzcyBrZXkuXG4gKiAgIFMzX1NFQ1JFVF9BQ0NFU1NfS0VZICBzZWNyZXQga2V5LlxuICogICBTM19GT1JDRV9QQVRIX1NUWUxFICAgJ3RydWUnIGZvciBNaW5JTyAocGF0aC1zdHlsZSBhZGRyZXNzaW5nKTsgZGVmYXVsdCB0cnVlLlxuICpcbiAqIGBTM19CVUNLRVRgIGlzIGRlbGliZXJhdGVseSBOT1QgcmVhZCBoZXJlOiB0aGUgYnVja2V0IGlzIHRoZSBjYWxsZXIncywgYW5kXG4gKiBlYWNoIHNlcnZpY2Uga2VlcHMgaXRzIG93biBkZWZhdWx0IGFuZCBpdHMgb3duIGtleSBjb252ZW50aW9uLlxuICpcbiAqICoqUmVhY2hlZCB0aHJvdWdoIHRoZSBgQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUvczNgIHN1YnBhdGgsIG5ldmVyIHRoZSByb290XG4gKiBiYXJyZWwqKiDigJQgb25seSB0d28gc2VydmljZXMgZG8gYmxvYiBzdG9yYWdlLCBhbmQgdGhlIFMzIFNESyBpcyBhIGxhcmdlXG4gKiBlYWdlciBkZXBlbmRlbmN5IHRoYXQgdGhlIG90aGVyIGVpZ2h0IG11c3Qgbm90IHBheSBmb3IgYXQgYm9vdC4gU2FtZSByZWFzb25cbiAqIGBAYXdzLXNkay9jbGllbnQta21zYCBpcyBkeW5hbWljYWxseSBpbXBvcnRlZCBpbnNpZGUgc2VjcmV0LWVuY3J5cHRpb24uXG4gKi9cblxuaW1wb3J0IHsgUzNDbGllbnQsIEhlYWRCdWNrZXRDb21tYW5kLCBDcmVhdGVCdWNrZXRDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcblxuaW1wb3J0IHsgZW52Qm9vbCwgZW52U3RyIH0gZnJvbSAnLi4vdXRpbHMvZW52LmpzJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignczMtY2xpZW50Jyk7XG5cbmxldCBjbGllbnQ6IFMzQ2xpZW50IHwgbnVsbCA9IG51bGw7XG5cbi8qKlxuICogVGhlIHByb2Nlc3Mtd2lkZSBTMyBjbGllbnQsIGJ1aWx0IGZyb20gZW52IG9uIGZpcnN0IHVzZS5cbiAqXG4gKiBMYXp5IHNvIGEgc2VydmljZSB0aGF0IG5ldmVyIHRvdWNoZXMgYmxvYiBzdG9yYWdlIOKAlCBhbmQgYSB0ZXN0IHRoYXQgbmV2ZXJcbiAqIGNvbmZpZ3VyZXMgUzMg4oCUIG5ldmVyIGNvbnN0cnVjdHMgb25lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gczNDbGllbnQoKTogUzNDbGllbnQge1xuICBpZiAoY2xpZW50KSByZXR1cm4gY2xpZW50O1xuICBjb25zdCBlbmRwb2ludCA9IGVudlN0cignUzNfRU5EUE9JTlQnLCAnJyk7XG4gIGNsaWVudCA9IG5ldyBTM0NsaWVudCh7XG4gICAgcmVnaW9uOiBlbnZTdHIoJ1MzX1JFR0lPTicsICd1cy1lYXN0LTEnKSxcbiAgICAuLi4oZW5kcG9pbnQgPyB7IGVuZHBvaW50IH0gOiB7fSksXG4gICAgLy8gUGF0aC1zdHlsZSBpcyByZXF1aXJlZCBieSBNaW5JTyAobm8gdmlydHVhbC1ob3N0IGJ1Y2tldCBETlMpLiBIYXJtbGVzc1xuICAgIC8vIGFnYWluc3QgcmVhbCBTMywgYnV0IGRlZmF1bHQtb24gaGVyZSBiZWNhdXNlIE1pbklPIGlzIHRoZSBkZWZhdWx0IGJhY2tlbmQuXG4gICAgZm9yY2VQYXRoU3R5bGU6IGVudkJvb2woJ1MzX0ZPUkNFX1BBVEhfU1RZTEUnLCB0cnVlKSxcbiAgICBjcmVkZW50aWFsczoge1xuICAgICAgYWNjZXNzS2V5SWQ6IGVudlN0cignUzNfQUNDRVNTX0tFWV9JRCcsICdtaW5pb2FkbWluJyksXG4gICAgICBzZWNyZXRBY2Nlc3NLZXk6IGVudlN0cignUzNfU0VDUkVUX0FDQ0VTU19LRVknLCAnbWluaW9hZG1pbicpLFxuICAgIH0sXG4gIH0pO1xuICByZXR1cm4gY2xpZW50O1xufVxuXG4vKiogSW4tZmxpZ2h0IC8gc2V0dGxlZCBlbnN1cmUgcGVyIGJ1Y2tldC4gQSByZWplY3RlZCBhdHRlbXB0IGlzIG5ldmVyIGxlZnQgaGVyZS4gKi9cbmNvbnN0IGJ1Y2tldHNSZWFkeSA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPHZvaWQ+PigpO1xuXG4vKipcbiAqIEVuc3VyZSBgYnVja2V0YCBleGlzdHMsIG9uY2UgcGVyIHByb2Nlc3MgcGVyIGJ1Y2tldC5cbiAqXG4gKiBNaW5JTyDigJQgdW5saWtlIGFuIGF1dG8tcHJvdmlzaW9uZWQgUzMgYnVja2V0IOKAlCB3b24ndCBjcmVhdGUgYSBidWNrZXQgb24gZmlyc3RcbiAqIHdyaXRlLCBzbyBIRUFEIGl0IGFuZCBDUkVBVEUgb24gNDA0L05vU3VjaEJ1Y2tldC4gSWRlbXBvdGVudCBhbmRcbiAqIGNvbmN1cnJlbmN5LXNhZmU6IGNvbmN1cnJlbnQgY2FsbGVycyBzaGFyZSB0aGUgc2luZ2xlIGluLWZsaWdodCBwcm9taXNlLlxuICpcbiAqIFRoZSBpbXBvcnRhbnQgcGFydCBpcyB0aGUgZmFpbHVyZSBicmFuY2guIEEgQ3JlYXRlQnVja2V0IGZhaWx1cmUgaXMgRUlUSEVSIGFcbiAqIGJlbmlnbiByYWNlIChhbm90aGVyIHJlcGxpY2EgY3JlYXRlZCBpdCBiZXR3ZWVuIG91ciBIRUFEIGFuZCBvdXIgQ1JFQVRFKSBvciBhXG4gKiByZWFsIG91dGFnZSAoTWluSU8gbm90IHVwIHlldCwgY3JlZGVudGlhbHMgd3JvbmcsIG5ldHdvcmsgZG93bikuIFJlLUhFQURpbmdcbiAqIHRlbGxzIHRoZW0gYXBhcnQ6XG4gKlxuICogIC0gaXQgbm93IGV4aXN0cyAg4oaSIGJlbmlnbiByYWNlLCBjb250aW51ZTtcbiAqICAtIGl0IHN0aWxsIGRvZXMgbm90IOKGkiBEUk9QIHRoZSBtZW1vIGVudHJ5IGFuZCBmYWlsIHRoaXMgYXR0ZW1wdC5cbiAqXG4gKiBEcm9wcGluZyB0aGUgZW50cnkgaXMgbG9hZC1iZWFyaW5nLiBNZW1vaXppbmcgYSByZXNvbHZlZCBcInJlYWR5XCIgYWZ0ZXIgYVxuICogZmFpbGVkIGNyZWF0ZSBjYWNoZXMgYSBwZXJtYW5lbnRseS1icm9rZW4gc3VjY2VzcyBmb3IgdGhlIHByb2Nlc3MgbGlmZXRpbWU6XG4gKiBldmVyeSBsYXRlciB1cGxvYWQgdGhlbiBmYWlscyBgTm9TdWNoQnVja2V0YCBhZ2FpbnN0IGEgTWluSU8gdGhhdCBjYW1lIHVwXG4gKiBzZWNvbmRzIGFmdGVyIGJvb3QsIHVudGlsIHRoZSBwb2QgaXMgcmVzdGFydGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlQnVja2V0KGJ1Y2tldDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGxldCByZWFkeSA9IGJ1Y2tldHNSZWFkeS5nZXQoYnVja2V0KTtcbiAgaWYgKCFyZWFkeSkge1xuICAgIHJlYWR5ID0gKGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHMzQ2xpZW50KCkuc2VuZChuZXcgSGVhZEJ1Y2tldENvbW1hbmQoeyBCdWNrZXQ6IGJ1Y2tldCB9KSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBzM0NsaWVudCgpLnNlbmQobmV3IENyZWF0ZUJ1Y2tldENvbW1hbmQoeyBCdWNrZXQ6IGJ1Y2tldCB9KSk7XG4gICAgICAgICAgbG9nZ2VyLmluZm8oJ0NyZWF0ZWQgUzMgYnVja2V0JywgeyBidWNrZXQgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBzM0NsaWVudCgpLnNlbmQobmV3IEhlYWRCdWNrZXRDb21tYW5kKHsgQnVja2V0OiBidWNrZXQgfSkpO1xuICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ1MzIGJ1Y2tldCBlbnN1cmUgcmFjZSAobm93IGV4aXN0cywgY29udGludWluZyknLCB7IGJ1Y2tldCwgZXJyb3I6IFN0cmluZyhlcnIpIH0pO1xuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgYnVja2V0c1JlYWR5LmRlbGV0ZShidWNrZXQpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTMyBidWNrZXQgXCIke2J1Y2tldH1cIiB1bmF2YWlsYWJsZTogJHtTdHJpbmcoZXJyKX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSgpO1xuICAgIGJ1Y2tldHNSZWFkeS5zZXQoYnVja2V0LCByZWFkeSk7XG4gIH1cbiAgcmV0dXJuIHJlYWR5O1xufVxuIl19
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtY2xpZW50LmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvczMtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQUVILE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV0RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVsRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFekMsSUFBSSxNQUFNLEdBQW9CLElBQUksQ0FBQztBQUVuQzs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxRQUFRO0lBQ3RCLElBQUksTUFBTTtRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQzFCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0MsTUFBTSxHQUFHLElBQUksUUFBUSxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxNQUFNLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQztRQUN4QyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakMseUVBQXlFO1FBQ3pFLDZFQUE2RTtRQUM3RSxjQUFjLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQztRQUNwRCxXQUFXLEVBQUU7WUFDWCxXQUFXLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixFQUFFLFlBQVksQ0FBQztZQUNyRCxlQUFlLEVBQUUsTUFBTSxDQUFDLHNCQUFzQixFQUFFLFlBQVksQ0FBQztTQUM5RDtLQUNGLENBQUMsQ0FBQztJQUNILE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxvRkFBb0Y7QUFDcEYsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7QUFFdEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVksQ0FBQyxNQUFjO0lBQy9DLElBQUksS0FBSyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsS0FBSyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDbEIsSUFBSSxDQUFDO2dCQUNILE1BQU0sUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksaUJBQWlCLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25FLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsSUFBSSxDQUFDO29CQUNILE1BQU0sUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksbUJBQW1CLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNuRSxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztnQkFDL0MsQ0FBQztnQkFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO29CQUNiLElBQUksQ0FBQzt3QkFDSCxNQUFNLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLGlCQUFpQixDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDakUsTUFBTSxDQUFDLElBQUksQ0FBQyxnREFBZ0QsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDaEcsQ0FBQztvQkFBQyxNQUFNLENBQUM7d0JBQ1AsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLE1BQU0sa0JBQWtCLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3ZFLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0wsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFRoZSBzaGFyZWQgUzMtY29tcGF0aWJsZSBjbGllbnQsIGFuZCB0aGUgYnVja2V0LWVuc3VyZSBiYWNrc3RvcCB0aGF0IGdvZXNcbiAqIHdpdGggaXQuXG4gKlxuICogQmFja2VkIGJ5IE1pbklPIGluIGV2ZXJ5IGVudmlyb25tZW50IChzZWxmLWhvc3RlZCwgbm8gQVdTLWFjY291bnQgY291cGxpbmcpO1xuICogYmVjYXVzZSBNaW5JTyBzcGVha3MgdGhlIFMzIEFQSSB0aGlzIHVzZXMgdGhlIEFXUyBTMyBTREssIHNvIGEgcmVhbC1TMyBzd2FwIGlzXG4gKiBhIHB1cmUgY29uZmlnIGNoYW5nZSAoZHJvcCB0aGUgY3VzdG9tIGVuZHBvaW50ICsgcGF0aC1zdHlsZSwgc3VwcGx5IElBTSBjcmVkcykuXG4gKlxuICogQ29uZmlnIChlbnYpIOKAlCBvbmUgc2V0IG9mIG5hbWVzLCByZWFkIGlkZW50aWNhbGx5IGJ5IGV2ZXJ5IHNlcnZpY2U7IGVhY2hcbiAqIGNvbnRhaW5lciBpcyBwb2ludGVkIGF0IGl0cyBPV04gYnVja2V0IHdpdGggYnVja2V0LXNjb3BlZCBjcmVkZW50aWFsczpcbiAqICAgUzNfRU5EUE9JTlQgICAgICAgICAgIE1pbklPL1MzIGVuZHBvaW50IFVSTCAoZS5nLiBodHRwOi8vbWluaW86OTAwMCkuIEVtcHR5XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICDih5IgZGVmYXVsdCBBV1MgUzMgKG5vIGN1c3RvbSBlbmRwb2ludCkuXG4gKiAgIFMzX1JFR0lPTiAgICAgICAgICAgICByZWdpb24gKGRlZmF1bHQgJ3VzLWVhc3QtMScpLlxuICogICBTM19BQ0NFU1NfS0VZX0lEICAgICAgYWNjZXNzIGtleS5cbiAqICAgUzNfU0VDUkVUX0FDQ0VTU19LRVkgIHNlY3JldCBrZXkuXG4gKiAgIFMzX0ZPUkNFX1BBVEhfU1RZTEUgICAndHJ1ZScgZm9yIE1pbklPIChwYXRoLXN0eWxlIGFkZHJlc3NpbmcpOyBkZWZhdWx0IHRydWUuXG4gKlxuICogYFMzX0JVQ0tFVGAgaXMgZGVsaWJlcmF0ZWx5IE5PVCByZWFkIGhlcmU6IHRoZSBidWNrZXQgaXMgdGhlIGNhbGxlcidzLCBhbmRcbiAqIGVhY2ggc2VydmljZSBrZWVwcyBpdHMgb3duIGRlZmF1bHQgYW5kIGl0cyBvd24ga2V5IGNvbnZlbnRpb24uXG4gKlxuICogKipSZWFjaGVkIHRocm91Z2ggdGhlIGBAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZS9zM2Agc3VicGF0aCwgbmV2ZXIgdGhlIHJvb3RcbiAqIGJhcnJlbCoqIOKAlCBvbmx5IHR3byBzZXJ2aWNlcyBkbyBibG9iIHN0b3JhZ2UsIGFuZCB0aGUgUzMgU0RLIGlzIGEgbGFyZ2VcbiAqIGVhZ2VyIGRlcGVuZGVuY3kgdGhhdCB0aGUgb3RoZXIgZWlnaHQgbXVzdCBub3QgcGF5IGZvciBhdCBib290LiBTYW1lIHJlYXNvblxuICogYEBhd3Mtc2RrL2NsaWVudC1rbXNgIGlzIGR5bmFtaWNhbGx5IGltcG9ydGVkIGluc2lkZSBzZWNyZXQtZW5jcnlwdGlvbi5cbiAqL1xuXG5pbXBvcnQgeyBTM0NsaWVudCwgSGVhZEJ1Y2tldENvbW1hbmQsIENyZWF0ZUJ1Y2tldENvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtczMnO1xuXG5pbXBvcnQgeyBlbnZCb29sLCBlbnZTdHIgfSBmcm9tICcuLi91dGlscy9lbnYuanMnO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLmpzJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdzMy1jbGllbnQnKTtcblxubGV0IGNsaWVudDogUzNDbGllbnQgfCBudWxsID0gbnVsbDtcblxuLyoqXG4gKiBUaGUgcHJvY2Vzcy13aWRlIFMzIGNsaWVudCwgYnVpbHQgZnJvbSBlbnYgb24gZmlyc3QgdXNlLlxuICpcbiAqIExhenkgc28gYSBzZXJ2aWNlIHRoYXQgbmV2ZXIgdG91Y2hlcyBibG9iIHN0b3JhZ2Ug4oCUIGFuZCBhIHRlc3QgdGhhdCBuZXZlclxuICogY29uZmlndXJlcyBTMyDigJQgbmV2ZXIgY29uc3RydWN0cyBvbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzM0NsaWVudCgpOiBTM0NsaWVudCB7XG4gIGlmIChjbGllbnQpIHJldHVybiBjbGllbnQ7XG4gIGNvbnN0IGVuZHBvaW50ID0gZW52U3RyKCdTM19FTkRQT0lOVCcsICcnKTtcbiAgY2xpZW50ID0gbmV3IFMzQ2xpZW50KHtcbiAgICByZWdpb246IGVudlN0cignUzNfUkVHSU9OJywgJ3VzLWVhc3QtMScpLFxuICAgIC4uLihlbmRwb2ludCA/IHsgZW5kcG9pbnQgfSA6IHt9KSxcbiAgICAvLyBQYXRoLXN0eWxlIGlzIHJlcXVpcmVkIGJ5IE1pbklPIChubyB2aXJ0dWFsLWhvc3QgYnVja2V0IEROUykuIEhhcm1sZXNzXG4gICAgLy8gYWdhaW5zdCByZWFsIFMzLCBidXQgZGVmYXVsdC1vbiBoZXJlIGJlY2F1c2UgTWluSU8gaXMgdGhlIGRlZmF1bHQgYmFja2VuZC5cbiAgICBmb3JjZVBhdGhTdHlsZTogZW52Qm9vbCgnUzNfRk9SQ0VfUEFUSF9TVFlMRScsIHRydWUpLFxuICAgIGNyZWRlbnRpYWxzOiB7XG4gICAgICBhY2Nlc3NLZXlJZDogZW52U3RyKCdTM19BQ0NFU1NfS0VZX0lEJywgJ21pbmlvYWRtaW4nKSxcbiAgICAgIHNlY3JldEFjY2Vzc0tleTogZW52U3RyKCdTM19TRUNSRVRfQUNDRVNTX0tFWScsICdtaW5pb2FkbWluJyksXG4gICAgfSxcbiAgfSk7XG4gIHJldHVybiBjbGllbnQ7XG59XG5cbi8qKiBJbi1mbGlnaHQgLyBzZXR0bGVkIGVuc3VyZSBwZXIgYnVja2V0LiBBIHJlamVjdGVkIGF0dGVtcHQgaXMgbmV2ZXIgbGVmdCBoZXJlLiAqL1xuY29uc3QgYnVja2V0c1JlYWR5ID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8dm9pZD4+KCk7XG5cbi8qKlxuICogRW5zdXJlIGBidWNrZXRgIGV4aXN0cywgb25jZSBwZXIgcHJvY2VzcyBwZXIgYnVja2V0LlxuICpcbiAqIE1pbklPIOKAlCB1bmxpa2UgYW4gYXV0by1wcm92aXNpb25lZCBTMyBidWNrZXQg4oCUIHdvbid0IGNyZWF0ZSBhIGJ1Y2tldCBvbiBmaXJzdFxuICogd3JpdGUsIHNvIEhFQUQgaXQgYW5kIENSRUFURSBvbiA0MDQvTm9TdWNoQnVja2V0LiBJZGVtcG90ZW50IGFuZFxuICogY29uY3VycmVuY3ktc2FmZTogY29uY3VycmVudCBjYWxsZXJzIHNoYXJlIHRoZSBzaW5nbGUgaW4tZmxpZ2h0IHByb21pc2UuXG4gKlxuICogVGhlIGltcG9ydGFudCBwYXJ0IGlzIHRoZSBmYWlsdXJlIGJyYW5jaC4gQSBDcmVhdGVCdWNrZXQgZmFpbHVyZSBpcyBFSVRIRVIgYVxuICogYmVuaWduIHJhY2UgKGFub3RoZXIgcmVwbGljYSBjcmVhdGVkIGl0IGJldHdlZW4gb3VyIEhFQUQgYW5kIG91ciBDUkVBVEUpIG9yIGFcbiAqIHJlYWwgb3V0YWdlIChNaW5JTyBub3QgdXAgeWV0LCBjcmVkZW50aWFscyB3cm9uZywgbmV0d29yayBkb3duKS4gUmUtSEVBRGluZ1xuICogdGVsbHMgdGhlbSBhcGFydDpcbiAqXG4gKiAgLSBpdCBub3cgZXhpc3RzICDihpIgYmVuaWduIHJhY2UsIGNvbnRpbnVlO1xuICogIC0gaXQgc3RpbGwgZG9lcyBub3Qg4oaSIERST1AgdGhlIG1lbW8gZW50cnkgYW5kIGZhaWwgdGhpcyBhdHRlbXB0LlxuICpcbiAqIERyb3BwaW5nIHRoZSBlbnRyeSBpcyBsb2FkLWJlYXJpbmcuIE1lbW9pemluZyBhIHJlc29sdmVkIFwicmVhZHlcIiBhZnRlciBhXG4gKiBmYWlsZWQgY3JlYXRlIGNhY2hlcyBhIHBlcm1hbmVudGx5LWJyb2tlbiBzdWNjZXNzIGZvciB0aGUgcHJvY2VzcyBsaWZldGltZTpcbiAqIGV2ZXJ5IGxhdGVyIHVwbG9hZCB0aGVuIGZhaWxzIGBOb1N1Y2hCdWNrZXRgIGFnYWluc3QgYSBNaW5JTyB0aGF0IGNhbWUgdXBcbiAqIHNlY29uZHMgYWZ0ZXIgYm9vdCwgdW50aWwgdGhlIHBvZCBpcyByZXN0YXJ0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbnN1cmVCdWNrZXQoYnVja2V0OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgbGV0IHJlYWR5ID0gYnVja2V0c1JlYWR5LmdldChidWNrZXQpO1xuICBpZiAoIXJlYWR5KSB7XG4gICAgcmVhZHkgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgczNDbGllbnQoKS5zZW5kKG5ldyBIZWFkQnVja2V0Q29tbWFuZCh7IEJ1Y2tldDogYnVja2V0IH0pKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHMzQ2xpZW50KCkuc2VuZChuZXcgQ3JlYXRlQnVja2V0Q29tbWFuZCh7IEJ1Y2tldDogYnVja2V0IH0pKTtcbiAgICAgICAgICBsb2dnZXIuaW5mbygnQ3JlYXRlZCBTMyBidWNrZXQnLCB7IGJ1Y2tldCB9KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHMzQ2xpZW50KCkuc2VuZChuZXcgSGVhZEJ1Y2tldENvbW1hbmQoeyBCdWNrZXQ6IGJ1Y2tldCB9KSk7XG4gICAgICAgICAgICBsb2dnZXIud2FybignUzMgYnVja2V0IGVuc3VyZSByYWNlIChub3cgZXhpc3RzLCBjb250aW51aW5nKScsIHsgYnVja2V0LCBlcnJvcjogU3RyaW5nKGVycikgfSk7XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICBidWNrZXRzUmVhZHkuZGVsZXRlKGJ1Y2tldCk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFMzIGJ1Y2tldCBcIiR7YnVja2V0fVwiIHVuYXZhaWxhYmxlOiAke1N0cmluZyhlcnIpfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKCk7XG4gICAgYnVja2V0c1JlYWR5LnNldChidWNrZXQsIHJlYWR5KTtcbiAgfVxuICByZXR1cm4gcmVhZHk7XG59XG4iXX0=
@@ -125,4 +125,4 @@ export function createScheduler(opts) {
125
125
  },
126
126
  };
127
127
  }
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3NjaGVkdWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQXNDLE1BQU0sa0JBQWtCLENBQUM7QUFDbEksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQXVEcEQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQXNCO0lBQ3BELE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsSUFBSSxRQUFRLEdBQTBDLElBQUksQ0FBQztJQUMzRCxJQUFJLE9BQU8sR0FBeUMsSUFBSSxDQUFDO0lBQ3pELElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNwQixJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDcEIsMEZBQTBGO0lBQzFGLElBQUksT0FBTyxHQUFxQixJQUFJLENBQUM7SUFDckMsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLGtGQUFrRjtJQUNsRixJQUFJLFFBQVEsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO0lBQ3JDLGtGQUFrRjtJQUNsRixJQUFJLFFBQVEsR0FBeUIsSUFBSSxDQUFDO0lBRTFDLE1BQU0sS0FBSyxHQUFHLEtBQUssSUFBbUIsRUFBRTtRQUN0Qyw0RUFBNEU7UUFDNUUsNEVBQTRFO1FBQzVFLDZFQUE2RTtRQUM3RSw4RUFBOEU7UUFDOUUscUJBQXFCO1FBQ3JCLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixHQUFHLENBQUMsS0FBSyxDQUFDLHFFQUFxRSxDQUFDLENBQUM7WUFDakYsT0FBTztRQUNULENBQUM7UUFDRCxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUM7WUFDSCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ2pGLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDdkIsNEVBQTRFO2dCQUM1RSxtREFBbUQ7Z0JBQ25ELE1BQU0sR0FBRyxHQUFHLE1BQU0sY0FBYyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztnQkFDOUYsSUFBSSxDQUFDLEdBQUc7b0JBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7aUJBQU0sQ0FBQztnQkFDTiwwRUFBMEU7Z0JBQzFFLG9EQUFvRDtnQkFDcEQsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUM3QixDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixHQUFHLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEUsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBRUYseUVBQXlFO0lBQ3pFLE1BQU0sUUFBUSxHQUFHLEdBQVMsRUFBRTtRQUMxQixNQUFNLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxRQUFRLEtBQUssQ0FBQztZQUFFLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0lBRUYsTUFBTSxLQUFLLEdBQUcsR0FBUyxFQUFFO1FBQ3ZCLElBQUksT0FBTztZQUFFLE9BQU8sQ0FBQyx5Q0FBeUM7UUFDOUQsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEtBQUs7WUFBRSxRQUFRLEVBQUUsQ0FBQztRQUMxQyxRQUFRLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxRCxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbkIsQ0FBQyxDQUFDO0lBRUYsT0FBTztRQUNMLEtBQUs7WUFDSCxJQUFJLFFBQVEsSUFBSSxPQUFPO2dCQUFFLE9BQU87WUFDaEMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNoQiwwRUFBMEU7WUFDMUUscUVBQXFFO1lBQ3JFLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPO2dCQUFFLFFBQVEsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQzlELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ25ELE9BQU8sR0FBRyxvQkFBb0IsRUFBRSxDQUFDO2dCQUNqQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbkQsT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUM5RSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssRUFBRSxDQUFDO1lBQ1YsQ0FBQztZQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxSCxDQUFDO1FBQ0QsSUFBSTtZQUNGLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDZixJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQUMsQ0FBQztZQUN2RCxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQUMsQ0FBQztZQUMzRCwwRUFBMEU7WUFDMUUsMEVBQTBFO1lBQzFFLDBFQUEwRTtZQUMxRSx1REFBdUQ7WUFDdkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTztnQkFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pELElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2pCLFlBQVksR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQztnQkFDekIsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDZix1RUFBdUU7Z0JBQ3ZFLHVFQUF1RTtnQkFDdkUsNENBQTRDO2dCQUM1QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7cUJBQ2hFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7WUFDeEMsQ0FBQztZQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNoQyxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgYWNxdWlyZVNoYXJlZEVudkxvY2ssIHJlbGVhc2VTaGFyZWRFbnZMb2NrLCB3aXRoTGVhZGVyTG9jaywgdHlwZSBMZWFkZXJMb2NrUnVuLCB0eXBlIExvY2tSZWRpcyB9IGZyb20gJy4vbGVhZGVyLWxvY2suanMnO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IGVycm9yTWVzc2FnZSB9IGZyb20gJy4uL3V0aWxzL3Jlc3BvbnNlLmpzJztcblxuLyoqXG4gKiBPcHRpb25hbCBjcm9zcy1wb2Qgc2luZ2xlLXJ1bm5lciBsb2NrIGZvciBhIHNjaGVkdWxlcidzIGN5Y2xlLiBXaXRob3V0XG4gKiBgcmVkaXNgIHRoZSBzY2hlZHVsZXIgdXNlcyB0aGUgcHJvY2VzcydzIHNoYXJlZCBlbnYtY29uZmlndXJlZCBsb2NrIGNsaWVudFxuICogKHRha2VuIG9uIGBzdGFydGAsIHJlbGVhc2VkIG9uIGBzdG9wYCk7IHdoZW4gUmVkaXMgaXNuJ3QgY29uZmlndXJlZCB0aGUgY3ljbGVcbiAqIHJ1bnMgb24gZXZlcnkgcG9kLCBzbyB0aGUgd29yayBpdCB3cmFwcyBtdXN0IHN0YXkgc2FmZSB0byBydW4gY29uY3VycmVudGx5LlxuICogQSBzdXBwbGllZCBgcmVkaXNgIGZhY3RvcnkgaXMgcmVzb2x2ZWQgcGVyIGN5Y2xlIChlLmcuIGEgQnVsbE1RIGNvbm5lY3Rpb24pLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVkdWxlckxvY2sge1xuICBrZXk6IHN0cmluZztcbiAgdHRsTXM6IG51bWJlcjtcbiAgcmVkaXM/OiAoKSA9PiBMb2NrUmVkaXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZWR1bGVyT3B0aW9ucyB7XG4gIC8qKiBMb2cgbGFiZWwgKGFsc28gdGhlIGxvZ2dlciBuYW1lKS4gKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogSW50ZXJ2YWwgYmV0d2VlbiBjeWNsZXMgKG1zKS4gKi9cbiAgaW50ZXJ2YWxNczogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIHdvcmsgdG8gcnVuIGVhY2ggY3ljbGUuIEVycm9ycyBhcmUgY2F1Z2h0ICsgbG9nZ2VkLCBuZXZlciB0aHJvd24uXG4gICAqXG4gICAqIGBydW4uc2lnbmFsYCBpcyBhYm9ydGVkIHdoZW4gYSBsZWFkZXItbG9ja2VkIGN5Y2xlIExPU0VTIGl0cyBsb2NrIG1pZC1ydW4sIG9yXG4gICAqIHdoZW4gYHN0b3AoKWAgaXMgY2FsbGVkLiBBIGpvYiB0aGF0IGl0ZXJhdGVzIG92ZXIgdW5pdHMgb2Ygd29yayAob3JncywgcmVwb3MsXG4gICAqIGVudGl0aWVzKSBtdXN0IGNoZWNrIGl0IGJldHdlZW4gdW5pdHMgYW5kIHJldHVybjogcGFzdCBhIGxvY2sgbG9zcyBhbm90aGVyIHBvZFxuICAgKiBtYXkgYmUgZG9pbmcgdGhlIHNhbWUgd29yaywgYW5kIG9uIHNodXRkb3duIHJldHVybmluZyBwcm9tcHRseSBpcyB3aGF0XG4gICAqIHJlbGVhc2VzIHRoZSBsb2NrIGluc3RlYWQgb2YgbGVhdmluZyBpdCB0byBleHBpcmUuIFVubG9ja2VkIHNjaGVkdWxlcnMgZ2V0IGFcbiAgICogc2lnbmFsIHRvbyDigJQgaXQgZmlyZXMgb24gYHN0b3AoKWAgb25seS5cbiAgICovXG4gIHJ1bjogKHJ1bjogTGVhZGVyTG9ja1J1bikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgLyoqIFJ1biBhIGN5Y2xlIGltbWVkaWF0ZWx5IHdoZW4gc3RhcnRlZC4gRGVmYXVsdCB0cnVlLiAqL1xuICBydW5PblN0YXJ0PzogYm9vbGVhbjtcbiAgLyoqIERlbGF5IGJlZm9yZSB0aGUgZmlyc3QgY3ljbGUgKGFuZCBiZWZvcmUgdGhlIGludGVydmFsIGJlZ2lucyksIG1zLlxuICAgKiAgRGVmYXVsdCAwLiBMZXRzIGEgc2VydmljZSB3YWl0IGZvciBkZXBlbmRlbmNpZXMgdG8gY29tZSB1cC4gKi9cbiAgc3RhcnR1cERlbGF5TXM/OiBudW1iZXI7XG4gIC8qKiBXaGVuIHNldCwgZWFjaCBjeWNsZSBydW5zIG9ubHkgb24gdGhlIHBvZCB0aGF0IHdpbnMgdGhpcyBsb2NrIOKAlCBzbyB3aXRoXG4gICAqICBtdWx0aXBsZSByZXBsaWNhcyBvbmx5IG9uZSBydW5zIHBlciB3aW5kb3cuICovXG4gIGxvY2s/OiBTY2hlZHVsZXJMb2NrO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVkdWxlciB7XG4gIC8qKiBTdGFydCB0aGUgdGltZXIuIElkZW1wb3RlbnQg4oCUIHJlcGVhdGVkIGNhbGxzIGFyZSBuby1vcHMuICovXG4gIHN0YXJ0KCk6IHZvaWQ7XG4gIC8qKlxuICAgKiBTdG9wIHRoZSB0aW1lciAoYW5kIGNhbmNlbCBhIHBlbmRpbmcgc3RhcnR1cCBkZWxheSkuIFNhZmUgYmVmb3JlIHN0YXJ0LlxuICAgKlxuICAgKiBBbHNvIEFCT1JUUyBhbiBpbi1mbGlnaHQgY3ljbGUncyBgcnVuLnNpZ25hbGAgYW5kIGRlZmVycyBjbG9zaW5nIHRoZSBzaGFyZWRcbiAgICogbG9jayBjbGllbnQgdW50aWwgdGhhdCBjeWNsZSBzZXR0bGVzOiBhIHJ1bm5pbmcgY3ljbGUgdXNlZCB0byBrZWVwIGl0cyBsb2NrXG4gICAqIGtleSB1bnRpbCB0aGUgVFRMIGxhcHNlZCwgc28gYSByb2xsaW5nIGRlcGxveSBtaWQtcnVuIHBhcmtlZCB0aGUgam9iIGZvciB0aGVcbiAgICogcmVzdCBvZiB0aGUgVFRMLiBBIHNpZ25hbC1hd2FyZSBgcnVuYCByZXR1cm5zIGFuZCB0aGUgbG9jayBpcyByZWxlYXNlZC5cbiAgICovXG4gIHN0b3AoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBBIHBlcmlvZGljIGJhY2tncm91bmQgam9iOiBhIHNpbmdsZSB1bnJlZidkIGBzZXRJbnRlcnZhbGAgd2l0aCBzdGFydC1vbmNlXG4gKiBzZW1hbnRpY3MsIGVycm9yIGlzb2xhdGlvbiAoYSB0aHJvd2luZyBjeWNsZSBpcyBsb2dnZWQsIG5ldmVyIGNyYXNoZXMgdGhlXG4gKiBsb29wKSwgYW4gb3B0aW9uYWwgc3RhcnR1cCBkZWxheSwgYW5kIGFuIG9wdGlvbmFsIGNyb3NzLXBvZCBsZWFkZXIgbG9jay5cbiAqXG4gKiBSZXBsYWNlcyB0aGUgaGFuZC1yb2xsZWQgdGltZXIvYHVucmVmYC9gY2F0Y2hgL3N0YXJ0LXN0b3AgYm9pbGVycGxhdGUgdGhhdFxuICogZWFjaCBzY2hlZHVsZXIgKHNjYW4sIGRpZ2VzdCwgcmVnaXN0cnkgR0MsIGJpbGxpbmcgbGlmZWN5Y2xlKSByZXBlYXRlZCwgYW5kXG4gKiBtYWtlcyB0aGUgbGVhZGVyIGxvY2sgYXZhaWxhYmxlIHRvIGFsbCBvZiB0aGVtIHVuaWZvcm1seS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNjaGVkdWxlcihvcHRzOiBTY2hlZHVsZXJPcHRpb25zKTogU2NoZWR1bGVyIHtcbiAgY29uc3QgbG9nID0gY3JlYXRlTG9nZ2VyKG9wdHMubmFtZSk7XG4gIGxldCBpbnRlcnZhbDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+IHwgbnVsbCA9IG51bGw7XG4gIGxldCBzdGFydHVwOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuICBsZXQgc3RvcHBlZCA9IGZhbHNlO1xuICBsZXQgcnVubmluZyA9IGZhbHNlO1xuICAvKiogVGhlIHNoYXJlZCBlbnYgY2xpZW50IHRoaXMgc2NoZWR1bGVyIGhvbGRzIGEgcmVmZXJlbmNlIG9uIChvd24tY2xpZW50IGxvY2tzIGRvbid0KS4gKi9cbiAgbGV0IGVudkxvY2s6IExvY2tSZWRpcyB8IG51bGwgPSBudWxsO1xuICBsZXQgaG9sZHNFbnZMb2NrID0gZmFsc2U7XG4gIC8qKiBBYm9ydGVkIGJ5IGBzdG9wKClgLCBzbyBhbiBpbi1mbGlnaHQgY3ljbGUgY2FuIHJldHVybiBhbmQgcmVsZWFzZSBpdHMgbG9jay4gKi9cbiAgbGV0IHNodXRkb3duID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAvKiogVGhlIGluLWZsaWdodCBjeWNsZSwgc28gYHN0b3AoKWAgY2FuIHdhaXQgZm9yIGl0IGJlZm9yZSBjbG9zaW5nIHRoZSBjbGllbnQuICovXG4gIGxldCBpbkZsaWdodDogUHJvbWlzZTx2b2lkPiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0IGN5Y2xlID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIC8vIFNhbWUtcG9kIHJlLWVudHJhbmN5IGd1YXJkOiBzZXRJbnRlcnZhbCBkb2Vzbid0IGF3YWl0IHRoZSBhc3luYyBjeWNsZSwgc29cbiAgICAvLyBhIGN5Y2xlIHNsb3dlciB0aGFuIGludGVydmFsTXMgd291bGQgb3RoZXJ3aXNlIG92ZXJsYXAgSVRTRUxGIG9uIHRoaXMgcG9kXG4gICAgLy8gKGRvdWJsZS1wcm9jZXNzaW5nLCBkdXBsaWNhdGUgc2lkZSBlZmZlY3RzKS4gVGhlIG9wdGlvbmFsIGxlYWRlciBsb2NrIG9ubHlcbiAgICAvLyBndWFyZHMgQ1JPU1MtcG9kIG92ZXJsYXA7IHRoaXMgZ3VhcmRzIHNhbWUtcG9kLiBBIHNraXBwZWQgdGljayBqdXN0IHJ1bnMgb25cbiAgICAvLyB0aGUgbmV4dCBpbnRlcnZhbC5cbiAgICBpZiAocnVubmluZykge1xuICAgICAgbG9nLmRlYnVnKCdDeWNsZSBza2lwcGVkIOKAlCBwcmV2aW91cyBjeWNsZSBzdGlsbCBydW5uaW5nIChzYW1lLXBvZCByZS1lbnRyYW5jeSknKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcnVubmluZyA9IHRydWU7XG4gICAgY29uc3Qgc2lnbmFsID0gc2h1dGRvd24uc2lnbmFsO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZWRpcyA9IG9wdHMubG9jayA/IChvcHRzLmxvY2sucmVkaXMgPyBvcHRzLmxvY2sucmVkaXMoKSA6IGVudkxvY2spIDogbnVsbDtcbiAgICAgIGlmIChvcHRzLmxvY2sgJiYgcmVkaXMpIHtcbiAgICAgICAgLy8gd2l0aExlYWRlckxvY2sgbWVyZ2VzIGBzaWduYWxgIGludG8gdGhlIHJ1bidzIG93biwgc28gYHJ1bmAgc2VlcyBhIHNpbmdsZVxuICAgICAgICAvLyBzaWduYWwgZm9yIGJvdGggXCJsb2NrIGxvc3RcIiBhbmQgXCJzaHV0dGluZyBkb3duXCIuXG4gICAgICAgIGNvbnN0IHJhbiA9IGF3YWl0IHdpdGhMZWFkZXJMb2NrKHJlZGlzLCBvcHRzLmxvY2sua2V5LCBvcHRzLmxvY2sudHRsTXMsIG9wdHMucnVuLCB7IHNpZ25hbCB9KTtcbiAgICAgICAgaWYgKCFyYW4pIGxvZy5kZWJ1ZygnQ3ljbGUgc2tpcHBlZCDigJQgYW5vdGhlciBwb2QgaG9sZHMgdGhlIGxvY2snKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFVubG9ja2VkOiBzdGlsbCBnaXZlIHRoZSBqb2IgYSBzaWduYWwsIHNvIGBzdG9wKClgIGNhbiBjdXQgYSBsb25nIGN5Y2xlXG4gICAgICAgIC8vIHNob3J0IHJhdGhlciB0aGFuIHdhaXRpbmcgZm9yIGl0IGR1cmluZyBzaHV0ZG93bi5cbiAgICAgICAgYXdhaXQgb3B0cy5ydW4oeyBzaWduYWwgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cuZXJyb3IoJ1NjaGVkdWxlciBjeWNsZSBmYWlsZWQnLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgcnVubmluZyA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICAvKiogUnVuIGEgY3ljbGUgYW5kIHB1Ymxpc2ggaXQgYXMgYGluRmxpZ2h0YCBzbyBgc3RvcCgpYCBjYW4gYXdhaXQgaXQuICovXG4gIGNvbnN0IHJ1bkN5Y2xlID0gKCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IHAgPSBjeWNsZSgpLmZpbmFsbHkoKCkgPT4geyBpZiAoaW5GbGlnaHQgPT09IHApIGluRmxpZ2h0ID0gbnVsbDsgfSk7XG4gICAgaW5GbGlnaHQgPSBwO1xuICB9O1xuXG4gIGNvbnN0IGJlZ2luID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmIChzdG9wcGVkKSByZXR1cm47IC8vIHN0b3AoKSBjYWxsZWQgZHVyaW5nIHRoZSBzdGFydHVwIGRlbGF5XG4gICAgaWYgKG9wdHMucnVuT25TdGFydCAhPT0gZmFsc2UpIHJ1bkN5Y2xlKCk7XG4gICAgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiBydW5DeWNsZSgpLCBvcHRzLmludGVydmFsTXMpO1xuICAgIGludGVydmFsLnVucmVmKCk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFydCgpOiB2b2lkIHtcbiAgICAgIGlmIChpbnRlcnZhbCB8fCBzdGFydHVwKSByZXR1cm47XG4gICAgICBzdG9wcGVkID0gZmFsc2U7XG4gICAgICAvLyBBIHJlc3RhcnQgbmVlZHMgYSBmcmVzaCBjb250cm9sbGVyOiB0aGUgcHJldmlvdXMgc3RvcCgpIGFib3J0ZWQgdGhlIG9sZFxuICAgICAgLy8gb25lLCBhbmQgYW4gYWxyZWFkeS1hYm9ydGVkIHNpZ25hbCB3b3VsZCBtYWtlIGV2ZXJ5IGN5Y2xlIGEgbm8tb3AuXG4gICAgICBpZiAoc2h1dGRvd24uc2lnbmFsLmFib3J0ZWQpIHNodXRkb3duID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgaWYgKG9wdHMubG9jayAmJiAhb3B0cy5sb2NrLnJlZGlzICYmICFob2xkc0VudkxvY2spIHtcbiAgICAgICAgZW52TG9jayA9IGFjcXVpcmVTaGFyZWRFbnZMb2NrKCk7XG4gICAgICAgIGhvbGRzRW52TG9jayA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAob3B0cy5zdGFydHVwRGVsYXlNcyAmJiBvcHRzLnN0YXJ0dXBEZWxheU1zID4gMCkge1xuICAgICAgICBzdGFydHVwID0gc2V0VGltZW91dCgoKSA9PiB7IHN0YXJ0dXAgPSBudWxsOyBiZWdpbigpOyB9LCBvcHRzLnN0YXJ0dXBEZWxheU1zKTtcbiAgICAgICAgc3RhcnR1cC51bnJlZigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmVnaW4oKTtcbiAgICAgIH1cbiAgICAgIGxvZy5pbmZvKCdTY2hlZHVsZXIgc3RhcnRlZCcsIHsgaW50ZXJ2YWxNczogb3B0cy5pbnRlcnZhbE1zLCBsb2NrZWQ6ICEhb3B0cy5sb2NrICYmICghIW9wdHMubG9jay5yZWRpcyB8fCAhIWVudkxvY2spIH0pO1xuICAgIH0sXG4gICAgc3RvcCgpOiB2b2lkIHtcbiAgICAgIHN0b3BwZWQgPSB0cnVlO1xuICAgICAgaWYgKHN0YXJ0dXApIHsgY2xlYXJUaW1lb3V0KHN0YXJ0dXApOyBzdGFydHVwID0gbnVsbDsgfVxuICAgICAgaWYgKGludGVydmFsKSB7IGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOyBpbnRlcnZhbCA9IG51bGw7IH1cbiAgICAgIC8vIEFzayBhbiBpbi1mbGlnaHQgY3ljbGUgdG8gd2luZCB1cC4gQSBzaWduYWwtYXdhcmUgYHJ1bmAgcmV0dXJucyBiZXR3ZWVuXG4gICAgICAvLyB1bml0cyBvZiB3b3JrLCB3aGljaCBsZXRzIHdpdGhMZWFkZXJMb2NrJ3MgYGZpbmFsbHlgIFJFTEVBU0UgdGhlIGxvY2sg4oCUXG4gICAgICAvLyBvdGhlcndpc2UgdGhlIGtleSBzYXQgdGhlcmUgdW50aWwgdGhlIFRUTCBsYXBzZWQgYW5kIHRoZSBqb2Igd2FzIHBhcmtlZFxuICAgICAgLy8gZmxlZXQtd2lkZSBmb3IgdGhhdCBsb25nIGFmdGVyIGV2ZXJ5IHJvbGxpbmcgZGVwbG95LlxuICAgICAgaWYgKCFzaHV0ZG93bi5zaWduYWwuYWJvcnRlZCkgc2h1dGRvd24uYWJvcnQoJ3NodXRkb3duJyk7XG4gICAgICBpZiAoaG9sZHNFbnZMb2NrKSB7XG4gICAgICAgIGhvbGRzRW52TG9jayA9IGZhbHNlO1xuICAgICAgICBjb25zdCBwZW5kaW5nID0gaW5GbGlnaHQ7XG4gICAgICAgIGVudkxvY2sgPSBudWxsO1xuICAgICAgICAvLyBDbG9zaW5nIHRoZSBjbGllbnQgdW5kZXIgYSBydW5uaW5nIGN5Y2xlIGtpbGxzIGl0cyBoZWFydGJlYXQgYW5kIGl0c1xuICAgICAgICAvLyByZWxlYXNlLCBzbyB3YWl0IGZvciB0aGUgY3ljbGUgdG8gc2V0dGxlIGZpcnN0LiBCb3VuZGVkIGJ5IHRoZSBjeWNsZVxuICAgICAgICAvLyBpdHNlbGYsIHdoaWNoIGlzIG5vdyBiZWluZyBhc2tlZCB0byBzdG9wLlxuICAgICAgICB2b2lkIChwZW5kaW5nID8gcGVuZGluZy5jYXRjaCgoKSA9PiB1bmRlZmluZWQpIDogUHJvbWlzZS5yZXNvbHZlKCkpXG4gICAgICAgICAgLnRoZW4oKCkgPT4gcmVsZWFzZVNoYXJlZEVudkxvY2soKSk7XG4gICAgICB9XG4gICAgICBsb2cuaW5mbygnU2NoZWR1bGVyIHN0b3BwZWQnKTtcbiAgICB9LFxuICB9O1xufVxuIl19
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVyLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvc2NoZWR1bGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUFFLGNBQWMsRUFBc0MsTUFBTSxrQkFBa0IsQ0FBQztBQUNsSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBdURwRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsSUFBc0I7SUFDcEQsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxJQUFJLFFBQVEsR0FBMEMsSUFBSSxDQUFDO0lBQzNELElBQUksT0FBTyxHQUF5QyxJQUFJLENBQUM7SUFDekQsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNwQiwwRkFBMEY7SUFDMUYsSUFBSSxPQUFPLEdBQXFCLElBQUksQ0FBQztJQUNyQyxJQUFJLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDekIsa0ZBQWtGO0lBQ2xGLElBQUksUUFBUSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7SUFDckMsa0ZBQWtGO0lBQ2xGLElBQUksUUFBUSxHQUF5QixJQUFJLENBQUM7SUFFMUMsTUFBTSxLQUFLLEdBQUcsS0FBSyxJQUFtQixFQUFFO1FBQ3RDLDRFQUE0RTtRQUM1RSw0RUFBNEU7UUFDNUUsNkVBQTZFO1FBQzdFLDhFQUE4RTtRQUM5RSxxQkFBcUI7UUFDckIsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLEdBQUcsQ0FBQyxLQUFLLENBQUMscUVBQXFFLENBQUMsQ0FBQztZQUNqRixPQUFPO1FBQ1QsQ0FBQztRQUNELE9BQU8sR0FBRyxJQUFJ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QUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztxQkFDaEUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztZQUN4QyxDQUFDO1lBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBhY3F1aXJlU2hhcmVkRW52TG9jaywgcmVsZWFzZVNoYXJlZEVudkxvY2ssIHdpdGhMZWFkZXJMb2NrLCB0eXBlIExlYWRlckxvY2tSdW4sIHR5cGUgTG9ja1JlZGlzIH0gZnJvbSAnLi9sZWFkZXItbG9jay5qcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vdXRpbHMvcmVzcG9uc2UuanMnO1xuXG4vKipcbiAqIE9wdGlvbmFsIGNyb3NzLXBvZCBzaW5nbGUtcnVubmVyIGxvY2sgZm9yIGEgc2NoZWR1bGVyJ3MgY3ljbGUuIFdpdGhvdXRcbiAqIGByZWRpc2AgdGhlIHNjaGVkdWxlciB1c2VzIHRoZSBwcm9jZXNzJ3Mgc2hhcmVkIGVudi1jb25maWd1cmVkIGxvY2sgY2xpZW50XG4gKiAodGFrZW4gb24gYHN0YXJ0YCwgcmVsZWFzZWQgb24gYHN0b3BgKTsgd2hlbiBSZWRpcyBpc24ndCBjb25maWd1cmVkIHRoZSBjeWNsZVxuICogcnVucyBvbiBldmVyeSBwb2QsIHNvIHRoZSB3b3JrIGl0IHdyYXBzIG11c3Qgc3RheSBzYWZlIHRvIHJ1biBjb25jdXJyZW50bHkuXG4gKiBBIHN1cHBsaWVkIGByZWRpc2AgZmFjdG9yeSBpcyByZXNvbHZlZCBwZXIgY3ljbGUgKGUuZy4gYSBCdWxsTVEgY29ubmVjdGlvbikuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZWR1bGVyTG9jayB7XG4gIGtleTogc3RyaW5nO1xuICB0dGxNczogbnVtYmVyO1xuICByZWRpcz86ICgpID0+IExvY2tSZWRpcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2hlZHVsZXJPcHRpb25zIHtcbiAgLyoqIExvZyBsYWJlbCAoYWxzbyB0aGUgbG9nZ2VyIG5hbWUpLiAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBJbnRlcnZhbCBiZXR3ZWVuIGN5Y2xlcyAobXMpLiAqL1xuICBpbnRlcnZhbE1zOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgd29yayB0byBydW4gZWFjaCBjeWNsZS4gRXJyb3JzIGFyZSBjYXVnaHQgKyBsb2dnZWQsIG5ldmVyIHRocm93bi5cbiAgICpcbiAgICogYHJ1bi5zaWduYWxgIGlzIGFib3J0ZWQgd2hlbiBhIGxlYWRlci1sb2NrZWQgY3ljbGUgTE9TRVMgaXRzIGxvY2sgbWlkLXJ1biwgb3JcbiAgICogd2hlbiBgc3RvcCgpYCBpcyBjYWxsZWQuIEEgam9iIHRoYXQgaXRlcmF0ZXMgb3ZlciB1bml0cyBvZiB3b3JrIChvcmdzLCByZXBvcyxcbiAgICogZW50aXRpZXMpIG11c3QgY2hlY2sgaXQgYmV0d2VlbiB1bml0cyBhbmQgcmV0dXJuOiBwYXN0IGEgbG9jayBsb3NzIGFub3RoZXIgcG9kXG4gICAqIG1heSBiZSBkb2luZyB0aGUgc2FtZSB3b3JrLCBhbmQgb24gc2h1dGRvd24gcmV0dXJuaW5nIHByb21wdGx5IGlzIHdoYXRcbiAgICogcmVsZWFzZXMgdGhlIGxvY2sgaW5zdGVhZCBvZiBsZWF2aW5nIGl0IHRvIGV4cGlyZS4gVW5sb2NrZWQgc2NoZWR1bGVycyBnZXQgYVxuICAgKiBzaWduYWwgdG9vIOKAlCBpdCBmaXJlcyBvbiBgc3RvcCgpYCBvbmx5LlxuICAgKi9cbiAgcnVuOiAocnVuOiBMZWFkZXJMb2NrUnVuKSA9PiBQcm9taXNlPHZvaWQ+O1xuICAvKiogUnVuIGEgY3ljbGUgaW1tZWRpYXRlbHkgd2hlbiBzdGFydGVkLiBEZWZhdWx0IHRydWUuICovXG4gIHJ1bk9uU3RhcnQ/OiBib29sZWFuO1xuICAvKiogRGVsYXkgYmVmb3JlIHRoZSBmaXJzdCBjeWNsZSAoYW5kIGJlZm9yZSB0aGUgaW50ZXJ2YWwgYmVnaW5zKSwgbXMuXG4gICAqICBEZWZhdWx0IDAuIExldHMgYSBzZXJ2aWNlIHdhaXQgZm9yIGRlcGVuZGVuY2llcyB0byBjb21lIHVwLiAqL1xuICBzdGFydHVwRGVsYXlNcz86IG51bWJlcjtcbiAgLyoqIFdoZW4gc2V0LCBlYWNoIGN5Y2xlIHJ1bnMgb25seSBvbiB0aGUgcG9kIHRoYXQgd2lucyB0aGlzIGxvY2sg4oCUIHNvIHdpdGhcbiAgICogIG11bHRpcGxlIHJlcGxpY2FzIG9ubHkgb25lIHJ1bnMgcGVyIHdpbmRvdy4gKi9cbiAgbG9jaz86IFNjaGVkdWxlckxvY2s7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZWR1bGVyIHtcbiAgLyoqIFN0YXJ0IHRoZSB0aW1lci4gSWRlbXBvdGVudCDigJQgcmVwZWF0ZWQgY2FsbHMgYXJlIG5vLW9wcy4gKi9cbiAgc3RhcnQoKTogdm9pZDtcbiAgLyoqXG4gICAqIFN0b3AgdGhlIHRpbWVyIChhbmQgY2FuY2VsIGEgcGVuZGluZyBzdGFydHVwIGRlbGF5KS4gU2FmZSBiZWZvcmUgc3RhcnQuXG4gICAqXG4gICAqIEFsc28gQUJPUlRTIGFuIGluLWZsaWdodCBjeWNsZSdzIGBydW4uc2lnbmFsYCBhbmQgZGVmZXJzIGNsb3NpbmcgdGhlIHNoYXJlZFxuICAgKiBsb2NrIGNsaWVudCB1bnRpbCB0aGF0IGN5Y2xlIHNldHRsZXM6IGEgcnVubmluZyBjeWNsZSB1c2VkIHRvIGtlZXAgaXRzIGxvY2tcbiAgICoga2V5IHVudGlsIHRoZSBUVEwgbGFwc2VkLCBzbyBhIHJvbGxpbmcgZGVwbG95IG1pZC1ydW4gcGFya2VkIHRoZSBqb2IgZm9yIHRoZVxuICAgKiByZXN0IG9mIHRoZSBUVEwuIEEgc2lnbmFsLWF3YXJlIGBydW5gIHJldHVybnMgYW5kIHRoZSBsb2NrIGlzIHJlbGVhc2VkLlxuICAgKi9cbiAgc3RvcCgpOiB2b2lkO1xufVxuXG4vKipcbiAqIEEgcGVyaW9kaWMgYmFja2dyb3VuZCBqb2I6IGEgc2luZ2xlIHVucmVmJ2QgYHNldEludGVydmFsYCB3aXRoIHN0YXJ0LW9uY2VcbiAqIHNlbWFudGljcywgZXJyb3IgaXNvbGF0aW9uIChhIHRocm93aW5nIGN5Y2xlIGlzIGxvZ2dlZCwgbmV2ZXIgY3Jhc2hlcyB0aGVcbiAqIGxvb3ApLCBhbiBvcHRpb25hbCBzdGFydHVwIGRlbGF5LCBhbmQgYW4gb3B0aW9uYWwgY3Jvc3MtcG9kIGxlYWRlciBsb2NrLlxuICpcbiAqIFJlcGxhY2VzIHRoZSBoYW5kLXJvbGxlZCB0aW1lci9gdW5yZWZgL2BjYXRjaGAvc3RhcnQtc3RvcCBib2lsZXJwbGF0ZSB0aGF0XG4gKiBlYWNoIHNjaGVkdWxlciAoc2NhbiwgZGlnZXN0LCByZWdpc3RyeSBHQywgYmlsbGluZyBsaWZlY3ljbGUpIHJlcGVhdGVkLCBhbmRcbiAqIG1ha2VzIHRoZSBsZWFkZXIgbG9jayBhdmFpbGFibGUgdG8gYWxsIG9mIHRoZW0gdW5pZm9ybWx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2NoZWR1bGVyKG9wdHM6IFNjaGVkdWxlck9wdGlvbnMpOiBTY2hlZHVsZXIge1xuICBjb25zdCBsb2cgPSBjcmVhdGVMb2dnZXIob3B0cy5uYW1lKTtcbiAgbGV0IGludGVydmFsOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD4gfCBudWxsID0gbnVsbDtcbiAgbGV0IHN0YXJ0dXA6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG4gIGxldCBzdG9wcGVkID0gZmFsc2U7XG4gIGxldCBydW5uaW5nID0gZmFsc2U7XG4gIC8qKiBUaGUgc2hhcmVkIGVudiBjbGllbnQgdGhpcyBzY2hlZHVsZXIgaG9sZHMgYSByZWZlcmVuY2Ugb24gKG93bi1jbGllbnQgbG9ja3MgZG9uJ3QpLiAqL1xuICBsZXQgZW52TG9jazogTG9ja1JlZGlzIHwgbnVsbCA9IG51bGw7XG4gIGxldCBob2xkc0VudkxvY2sgPSBmYWxzZTtcbiAgLyoqIEFib3J0ZWQgYnkgYHN0b3AoKWAsIHNvIGFuIGluLWZsaWdodCBjeWNsZSBjYW4gcmV0dXJuIGFuZCByZWxlYXNlIGl0cyBsb2NrLiAqL1xuICBsZXQgc2h1dGRvd24gPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIC8qKiBUaGUgaW4tZmxpZ2h0IGN5Y2xlLCBzbyBgc3RvcCgpYCBjYW4gd2FpdCBmb3IgaXQgYmVmb3JlIGNsb3NpbmcgdGhlIGNsaWVudC4gKi9cbiAgbGV0IGluRmxpZ2h0OiBQcm9taXNlPHZvaWQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3QgY3ljbGUgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgLy8gU2FtZS1wb2QgcmUtZW50cmFuY3kgZ3VhcmQ6IHNldEludGVydmFsIGRvZXNuJ3QgYXdhaXQgdGhlIGFzeW5jIGN5Y2xlLCBzb1xuICAgIC8vIGEgY3ljbGUgc2xvd2VyIHRoYW4gaW50ZXJ2YWxNcyB3b3VsZCBvdGhlcndpc2Ugb3ZlcmxhcCBJVFNFTEYgb24gdGhpcyBwb2RcbiAgICAvLyAoZG91YmxlLXByb2Nlc3NpbmcsIGR1cGxpY2F0ZSBzaWRlIGVmZmVjdHMpLiBUaGUgb3B0aW9uYWwgbGVhZGVyIGxvY2sgb25seVxuICAgIC8vIGd1YXJkcyBDUk9TUy1wb2Qgb3ZlcmxhcDsgdGhpcyBndWFyZHMgc2FtZS1wb2QuIEEgc2tpcHBlZCB0aWNrIGp1c3QgcnVucyBvblxuICAgIC8vIHRoZSBuZXh0IGludGVydmFsLlxuICAgIGlmIChydW5uaW5nKSB7XG4gICAgICBsb2cuZGVidWcoJ0N5Y2xlIHNraXBwZWQg4oCUIHByZXZpb3VzIGN5Y2xlIHN0aWxsIHJ1bm5pbmcgKHNhbWUtcG9kIHJlLWVudHJhbmN5KScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBydW5uaW5nID0gdHJ1ZTtcbiAgICBjb25zdCBzaWduYWwgPSBzaHV0ZG93bi5zaWduYWw7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlZGlzID0gb3B0cy5sb2NrID8gKG9wdHMubG9jay5yZWRpcyA/IG9wdHMubG9jay5yZWRpcygpIDogZW52TG9jaykgOiBudWxsO1xuICAgICAgaWYgKG9wdHMubG9jayAmJiByZWRpcykge1xuICAgICAgICAvLyB3aXRoTGVhZGVyTG9jayBtZXJnZXMgYHNpZ25hbGAgaW50byB0aGUgcnVuJ3Mgb3duLCBzbyBgcnVuYCBzZWVzIGEgc2luZ2xlXG4gICAgICAgIC8vIHNpZ25hbCBmb3IgYm90aCBcImxvY2sgbG9zdFwiIGFuZCBcInNodXR0aW5nIGRvd25cIi5cbiAgICAgICAgY29uc3QgcmFuID0gYXdhaXQgd2l0aExlYWRlckxvY2socmVkaXMsIG9wdHMubG9jay5rZXksIG9wdHMubG9jay50dGxNcywgb3B0cy5ydW4sIHsgc2lnbmFsIH0pO1xuICAgICAgICBpZiAoIXJhbikgbG9nLmRlYnVnKCdDeWNsZSBza2lwcGVkIOKAlCBhbm90aGVyIHBvZCBob2xkcyB0aGUgbG9jaycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVW5sb2NrZWQ6IHN0aWxsIGdpdmUgdGhlIGpvYiBhIHNpZ25hbCwgc28gYHN0b3AoKWAgY2FuIGN1dCBhIGxvbmcgY3ljbGVcbiAgICAgICAgLy8gc2hvcnQgcmF0aGVyIHRoYW4gd2FpdGluZyBmb3IgaXQgZHVyaW5nIHNodXRkb3duLlxuICAgICAgICBhd2FpdCBvcHRzLnJ1bih7IHNpZ25hbCB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZy5lcnJvcignU2NoZWR1bGVyIGN5Y2xlIGZhaWxlZCcsIHsgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBydW5uaW5nID0gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIC8qKiBSdW4gYSBjeWNsZSBhbmQgcHVibGlzaCBpdCBhcyBgaW5GbGlnaHRgIHNvIGBzdG9wKClgIGNhbiBhd2FpdCBpdC4gKi9cbiAgY29uc3QgcnVuQ3ljbGUgPSAoKTogdm9pZCA9PiB7XG4gICAgY29uc3QgcCA9IGN5Y2xlKCkuZmluYWxseSgoKSA9PiB7IGlmIChpbkZsaWdodCA9PT0gcCkgaW5GbGlnaHQgPSBudWxsOyB9KTtcbiAgICBpbkZsaWdodCA9IHA7XG4gIH07XG5cbiAgY29uc3QgYmVnaW4gPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKHN0b3BwZWQpIHJldHVybjsgLy8gc3RvcCgpIGNhbGxlZCBkdXJpbmcgdGhlIHN0YXJ0dXAgZGVsYXlcbiAgICBpZiAob3B0cy5ydW5PblN0YXJ0ICE9PSBmYWxzZSkgcnVuQ3ljbGUoKTtcbiAgICBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHJ1bkN5Y2xlKCksIG9wdHMuaW50ZXJ2YWxNcyk7XG4gICAgaW50ZXJ2YWwudW5yZWYoKTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHN0YXJ0KCk6IHZvaWQge1xuICAgICAgaWYgKGludGVydmFsIHx8IHN0YXJ0dXApIHJldHVybjtcbiAgICAgIHN0b3BwZWQgPSBmYWxzZTtcbiAgICAgIC8vIEEgcmVzdGFydCBuZWVkcyBhIGZyZXNoIGNvbnRyb2xsZXI6IHRoZSBwcmV2aW91cyBzdG9wKCkgYWJvcnRlZCB0aGUgb2xkXG4gICAgICAvLyBvbmUsIGFuZCBhbiBhbHJlYWR5LWFib3J0ZWQgc2lnbmFsIHdvdWxkIG1ha2UgZXZlcnkgY3ljbGUgYSBuby1vcC5cbiAgICAgIGlmIChzaHV0ZG93bi5zaWduYWwuYWJvcnRlZCkgc2h1dGRvd24gPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgICBpZiAob3B0cy5sb2NrICYmICFvcHRzLmxvY2sucmVkaXMgJiYgIWhvbGRzRW52TG9jaykge1xuICAgICAgICBlbnZMb2NrID0gYWNxdWlyZVNoYXJlZEVudkxvY2soKTtcbiAgICAgICAgaG9sZHNFbnZMb2NrID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRzLnN0YXJ0dXBEZWxheU1zICYmIG9wdHMuc3RhcnR1cERlbGF5TXMgPiAwKSB7XG4gICAgICAgIHN0YXJ0dXAgPSBzZXRUaW1lb3V0KCgpID0+IHsgc3RhcnR1cCA9IG51bGw7IGJlZ2luKCk7IH0sIG9wdHMuc3RhcnR1cERlbGF5TXMpO1xuICAgICAgICBzdGFydHVwLnVucmVmKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiZWdpbigpO1xuICAgICAgfVxuICAgICAgbG9nLmluZm8oJ1NjaGVkdWxlciBzdGFydGVkJywgeyBpbnRlcnZhbE1zOiBvcHRzLmludGVydmFsTXMsIGxvY2tlZDogISFvcHRzLmxvY2sgJiYgKCEhb3B0cy5sb2NrLnJlZGlzIHx8ICEhZW52TG9jaykgfSk7XG4gICAgfSxcbiAgICBzdG9wKCk6IHZvaWQge1xuICAgICAgc3RvcHBlZCA9IHRydWU7XG4gICAgICBpZiAoc3RhcnR1cCkgeyBjbGVhclRpbWVvdXQoc3RhcnR1cCk7IHN0YXJ0dXAgPSBudWxsOyB9XG4gICAgICBpZiAoaW50ZXJ2YWwpIHsgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7IGludGVydmFsID0gbnVsbDsgfVxuICAgICAgLy8gQXNrIGFuIGluLWZsaWdodCBjeWNsZSB0byB3aW5kIHVwLiBBIHNpZ25hbC1hd2FyZSBgcnVuYCByZXR1cm5zIGJldHdlZW5cbiAgICAgIC8vIHVuaXRzIG9mIHdvcmssIHdoaWNoIGxldHMgd2l0aExlYWRlckxvY2sncyBgZmluYWxseWAgUkVMRUFTRSB0aGUgbG9jayDigJRcbiAgICAgIC8vIG90aGVyd2lzZSB0aGUga2V5IHNhdCB0aGVyZSB1bnRpbCB0aGUgVFRMIGxhcHNlZCBhbmQgdGhlIGpvYiB3YXMgcGFya2VkXG4gICAgICAvLyBmbGVldC13aWRlIGZvciB0aGF0IGxvbmcgYWZ0ZXIgZXZlcnkgcm9sbGluZyBkZXBsb3kuXG4gICAgICBpZiAoIXNodXRkb3duLnNpZ25hbC5hYm9ydGVkKSBzaHV0ZG93bi5hYm9ydCgnc2h1dGRvd24nKTtcbiAgICAgIGlmIChob2xkc0VudkxvY2spIHtcbiAgICAgICAgaG9sZHNFbnZMb2NrID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHBlbmRpbmcgPSBpbkZsaWdodDtcbiAgICAgICAgZW52TG9jayA9IG51bGw7XG4gICAgICAgIC8vIENsb3NpbmcgdGhlIGNsaWVudCB1bmRlciBhIHJ1bm5pbmcgY3ljbGUga2lsbHMgaXRzIGhlYXJ0YmVhdCBhbmQgaXRzXG4gICAgICAgIC8vIHJlbGVhc2UsIHNvIHdhaXQgZm9yIHRoZSBjeWNsZSB0byBzZXR0bGUgZmlyc3QuIEJvdW5kZWQgYnkgdGhlIGN5Y2xlXG4gICAgICAgIC8vIGl0c2VsZiwgd2hpY2ggaXMgbm93IGJlaW5nIGFza2VkIHRvIHN0b3AuXG4gICAgICAgIHZvaWQgKHBlbmRpbmcgPyBwZW5kaW5nLmNhdGNoKCgpID0+IHVuZGVmaW5lZCkgOiBQcm9taXNlLnJlc29sdmUoKSlcbiAgICAgICAgICAudGhlbigoKSA9PiByZWxlYXNlU2hhcmVkRW52TG9jaygpKTtcbiAgICAgIH1cbiAgICAgIGxvZy5pbmZvKCdTY2hlZHVsZXIgc3RvcHBlZCcpO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
@@ -36,4 +36,4 @@ export function wireServiceSecurity(serviceName, opts = {}) {
36
36
  setTokenRevocationStore(opts.tokenRevocationStore ?? createEnvRedisTokenRevocationStore());
37
37
  setApiKeyExchangeServiceName(serviceName);
38
38
  }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1ib290LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3NlcnZpY2UtYm9vdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNFLE9BQU8sRUFBRSx1QkFBdUIsRUFBNkIsTUFBTSw2QkFBNkIsQ0FBQztBQWNqRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsV0FBbUIsRUFDbkIsSUFBSSxHQUEyQixFQUFFO0lBRWpDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlCLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3pELHVCQUF1QixDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxrQ0FBa0MsRUFBRSxDQUFDLENBQUM7SUFDM0YsNEJBQTRCLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBzZXRBcGlLZXlFeGNoYW5nZVNlcnZpY2VOYW1lIH0gZnJvbSAnLi9hcGkta2V5LWV4Y2hhbmdlLmpzJztcbmltcG9ydCB7IGJpbmRBdWRpdFNlcnZpY2UsIGdldEJvdW5kQXVkaXRDbGllbnQsIHdpcmVBdXRoekRlbmlhbEF1ZGl0b3IgfSBmcm9tICcuL3JlbW90ZS1hdWRpdC1jbGllbnQuanMnO1xuaW1wb3J0IHsgY3JlYXRlRW52UmVkaXNUb2tlblJldm9jYXRpb25TdG9yZSB9IGZyb20gJy4vdG9rZW4tcmV2b2NhdGlvbi5qcyc7XG5pbXBvcnQgeyBzZXRUb2tlblJldm9jYXRpb25TdG9yZSwgdHlwZSBUb2tlblJldm9jYXRpb25TdG9yZSB9IGZyb20gJy4uL21pZGRsZXdhcmUvcmV2b2NhdGlvbi5qcyc7XG5cbi8qKiBQZXItc2VydmljZSBvdmVycmlkZXMgZm9yIHtAbGluayB3aXJlU2VydmljZVNlY3VyaXR5fS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZVNlY3VyaXR5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUb2tlbi1yZXZvY2F0aW9uIHJlYWRlciB0byByZWdpc3RlciBpbnN0ZWFkIG9mIHRoZSBlbnYtUmVkaXMgb25lLiBUaGVcbiAgICogcGx1Z2luIHNlcnZpY2UgcGFzc2VzIGEgc3RvcmUgYnVpbHQgb24gdGhlIHBvb2xlZCBpb3JlZGlzIGNvbm5lY3Rpb24gaXRzXG4gICAqIEJ1bGxNUSBidWlsZCBxdWV1ZSBhbmQgcmVhZGluZXNzIHByb2JlIGFscmVhZHkgc2hhcmUsIHNvIHRoZSBwcm9jZXNzIGhvbGRzXG4gICAqIE9ORSBSZWRpcyBjb25uZWN0aW9uIHJhdGhlciB0aGFuIHR3by4gRmFpbC1vcGVuIGVpdGhlciB3YXk6IGEgbWlzcy9vdXRhZ2VcbiAgICogeWllbGRzIG51bGwgYW5kIGF1dGggZGVncmFkZXMgdG8gbmF0dXJhbCB0b2tlbiBleHBpcnkuXG4gICAqL1xuICB0b2tlblJldm9jYXRpb25TdG9yZT86IFRva2VuUmV2b2NhdGlvblN0b3JlO1xufVxuXG4vKipcbiAqIFdpcmUgdGhlIGJvb3Qtc2VjdXJpdHkgY29uY2VybnMgZXZlcnkgc3RhdGVsZXNzIHNlcnZpY2Ugc2V0cyB1cCBpZGVudGljYWxseVxuICogYXQgc3RhcnR1cDpcbiAqICAgMC4gYmluZCB0aGlzIHByb2Nlc3MncyBzZXJ2aWNlIGlkZW50aXR5IGZvciBgcmVjb3JkQXVkaXRgIOKAlCB0aGUgT05FIHBsYWNlIGFcbiAqICAgICAgc2VydmljZSBuYW1lcyBpdHNlbGYgZm9yIHRoZSBjZW50cmFsIGF1ZGl0IHRyYWlsIChiZWZvcmUgdGhpcyBydW5zLFxuICogICAgICBgcmVjb3JkQXVkaXRgIHRocm93cyBcImF1ZGl0IG5vdCBpbml0aWFsaXNlZFwiKTtcbiAqICAgMS4gZm9yd2FyZCBkZW5pZWQgKG5vbi1HRVQpIGF1dGhvcml6YXRpb25zIHRvIHRoZSBzaGFyZWQgYGF1dGh6LmRlbmllZGBcbiAqICAgICAgYXVkaXQgc2luayAoYHdpcmVBdXRoekRlbmlhbEF1ZGl0b3JgKTtcbiAqICAgMi4gcmVnaXN0ZXIgdGhlIGVudi1SZWRpcyB0b2tlbi1yZXZvY2F0aW9uIHJlYWRlciAoZmFpbC1vcGVuKSBzb1xuICogICAgICBgcmVxdWlyZUF1dGhgIGNhbiByZWplY3QgYSB0b2tlbiBiZWhpbmQgdGhlIHBsYXRmb3JtLXB1Ymxpc2hlZFxuICogICAgICBgdG9rZW5WZXJzaW9uYCAoYHNldFRva2VuUmV2b2NhdGlvblN0b3JlKGNyZWF0ZUVudlJlZGlzVG9rZW5SZXZvY2F0aW9uU3RvcmUoKSlgKTtcbiAqICAgMy4gbmFtZSB0aGlzIHByb2Nlc3MgaW4gdGhlIGFjY2Vzcy1rZXkgZXhjaGFuZ2UgY2FsbCdzIG93biBzZXJ2aWNlIHRva2VuLCBzb1xuICogICAgICBwbGF0Zm9ybSBjYW4gYXR0cmlidXRlIChhbmQgcmF0ZS1saW1pdCkgdGhlIGV4Y2hhbmdlcyBpdCBwZXJmb3Jtcy5cbiAqXG4gKiBDb2xsYXBzZXMgdGhlIGNvcHktcGFzdGVkIGxpbmVzIGluIGVhY2ggc2VydmljZSdzIGBpbmRleC50c2AgaW50byBvbmUgY2FsbC5cbiAqXG4gKiBFVkVSWSBzdGF0ZWxlc3Mgc2VydmljZSBnb2VzIHRocm91Z2ggaGVyZSwgcGx1Z2luIGluY2x1ZGVkLiBQbHVnaW4gbmVlZHMgYVxuICogZGlmZmVyZW50IHJldm9jYXRpb24gc3RvcmUgKGl0cyBwb29sZWQgQnVsbE1RIFJlZGlzIGNvbm5lY3Rpb24sIG5vdCB0aGVcbiAqIGVudi1SZWRpcyBvbmUpOyB0aGF0IG92ZXJyaWRlIGlzIGEgcGFyYW1ldGVyLCBzbyBvcHRpbmcgb3V0IG9mIHRoZSBlbnYtUmVkaXNcbiAqIHN0b3JlIG5ldmVyIG1lYW5zIG9wdGluZyBvdXQgb2YgdGhlIHdpcmluZyDigJQgYSBoYW5kLXJvbGxlZCBjb3B5IHdvdWxkXG4gKiBzaWxlbnRseSBza2lwIHRoZSBuZXh0IGNvbmNlcm4gYWRkZWQgaGVyZS5cbiAqXG4gKiBAcGFyYW0gc2VydmljZU5hbWUgc2hvcnQgc2VydmljZSBuYW1lIGV2ZXJ5IGByZWNvcmRBdWRpdGAgZXZlbnQgKGFuZCB0aGVcbiAqICAgYGF1dGh6LmRlbmllZGAgcmVjb3JkcykgaXMgYXR0cmlidXRlZCB0b1xuICogQHBhcmFtIG9wdHMgcGVyLXNlcnZpY2Ugb3ZlcnJpZGVzIOKAlCBzZWUge0BsaW5rIFNlcnZpY2VTZWN1cml0eU9wdGlvbnN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXJlU2VydmljZVNlY3VyaXR5KFxuICBzZXJ2aWNlTmFtZTogc3RyaW5nLFxuICBvcHRzOiBTZXJ2aWNlU2VjdXJpdHlPcHRpb25zID0ge30sXG4pOiB2b2lkIHtcbiAgYmluZEF1ZGl0U2VydmljZShzZXJ2aWNlTmFtZSk7XG4gIHdpcmVBdXRoekRlbmlhbEF1ZGl0b3Ioc2VydmljZU5hbWUsIGdldEJvdW5kQXVkaXRDbGllbnQpO1xuICBzZXRUb2tlblJldm9jYXRpb25TdG9yZShvcHRzLnRva2VuUmV2b2NhdGlvblN0b3JlID8/IGNyZWF0ZUVudlJlZGlzVG9rZW5SZXZvY2F0aW9uU3RvcmUoKSk7XG4gIHNldEFwaUtleUV4Y2hhbmdlU2VydmljZU5hbWUoc2VydmljZU5hbWUpO1xufVxuIl19
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1ib290LmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvc2VydmljZS1ib290LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekcsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHVCQUF1QixFQUE2QixNQUFNLDZCQUE2QixDQUFDO0FBY2pHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxXQUFtQixFQUNuQixJQUFJLEdBQTJCLEVBQUU7SUFFakMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUIsc0JBQXNCLENBQUMsV0FBVyxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDekQsdUJBQXVCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixJQUFJLGtDQUFrQyxFQUFFLENBQUMsQ0FBQztJQUMzRiw0QkFBNEIsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IHNldEFwaUtleUV4Y2hhbmdlU2VydmljZU5hbWUgfSBmcm9tICcuL2FwaS1rZXktZXhjaGFuZ2UuanMnO1xuaW1wb3J0IHsgYmluZEF1ZGl0U2VydmljZSwgZ2V0Qm91bmRBdWRpdENsaWVudCwgd2lyZUF1dGh6RGVuaWFsQXVkaXRvciB9IGZyb20gJy4vcmVtb3RlLWF1ZGl0LWNsaWVudC5qcyc7XG5pbXBvcnQgeyBjcmVhdGVFbnZSZWRpc1Rva2VuUmV2b2NhdGlvblN0b3JlIH0gZnJvbSAnLi90b2tlbi1yZXZvY2F0aW9uLmpzJztcbmltcG9ydCB7IHNldFRva2VuUmV2b2NhdGlvblN0b3JlLCB0eXBlIFRva2VuUmV2b2NhdGlvblN0b3JlIH0gZnJvbSAnLi4vbWlkZGxld2FyZS9yZXZvY2F0aW9uLmpzJztcblxuLyoqIFBlci1zZXJ2aWNlIG92ZXJyaWRlcyBmb3Ige0BsaW5rIHdpcmVTZXJ2aWNlU2VjdXJpdHl9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlU2VjdXJpdHlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRva2VuLXJldm9jYXRpb24gcmVhZGVyIHRvIHJlZ2lzdGVyIGluc3RlYWQgb2YgdGhlIGVudi1SZWRpcyBvbmUuIFRoZVxuICAgKiBwbHVnaW4gc2VydmljZSBwYXNzZXMgYSBzdG9yZSBidWlsdCBvbiB0aGUgcG9vbGVkIGlvcmVkaXMgY29ubmVjdGlvbiBpdHNcbiAgICogQnVsbE1RIGJ1aWxkIHF1ZXVlIGFuZCByZWFkaW5lc3MgcHJvYmUgYWxyZWFkeSBzaGFyZSwgc28gdGhlIHByb2Nlc3MgaG9sZHNcbiAgICogT05FIFJlZGlzIGNvbm5lY3Rpb24gcmF0aGVyIHRoYW4gdHdvLiBGYWlsLW9wZW4gZWl0aGVyIHdheTogYSBtaXNzL291dGFnZVxuICAgKiB5aWVsZHMgbnVsbCBhbmQgYXV0aCBkZWdyYWRlcyB0byBuYXR1cmFsIHRva2VuIGV4cGlyeS5cbiAgICovXG4gIHRva2VuUmV2b2NhdGlvblN0b3JlPzogVG9rZW5SZXZvY2F0aW9uU3RvcmU7XG59XG5cbi8qKlxuICogV2lyZSB0aGUgYm9vdC1zZWN1cml0eSBjb25jZXJucyBldmVyeSBzdGF0ZWxlc3Mgc2VydmljZSBzZXRzIHVwIGlkZW50aWNhbGx5XG4gKiBhdCBzdGFydHVwOlxuICogICAwLiBiaW5kIHRoaXMgcHJvY2VzcydzIHNlcnZpY2UgaWRlbnRpdHkgZm9yIGByZWNvcmRBdWRpdGAg4oCUIHRoZSBPTkUgcGxhY2UgYVxuICogICAgICBzZXJ2aWNlIG5hbWVzIGl0c2VsZiBmb3IgdGhlIGNlbnRyYWwgYXVkaXQgdHJhaWwgKGJlZm9yZSB0aGlzIHJ1bnMsXG4gKiAgICAgIGByZWNvcmRBdWRpdGAgdGhyb3dzIFwiYXVkaXQgbm90IGluaXRpYWxpc2VkXCIpO1xuICogICAxLiBmb3J3YXJkIGRlbmllZCAobm9uLUdFVCkgYXV0aG9yaXphdGlvbnMgdG8gdGhlIHNoYXJlZCBgYXV0aHouZGVuaWVkYFxuICogICAgICBhdWRpdCBzaW5rIChgd2lyZUF1dGh6RGVuaWFsQXVkaXRvcmApO1xuICogICAyLiByZWdpc3RlciB0aGUgZW52LVJlZGlzIHRva2VuLXJldm9jYXRpb24gcmVhZGVyIChmYWlsLW9wZW4pIHNvXG4gKiAgICAgIGByZXF1aXJlQXV0aGAgY2FuIHJlamVjdCBhIHRva2VuIGJlaGluZCB0aGUgcGxhdGZvcm0tcHVibGlzaGVkXG4gKiAgICAgIGB0b2tlblZlcnNpb25gIChgc2V0VG9rZW5SZXZvY2F0aW9uU3RvcmUoY3JlYXRlRW52UmVkaXNUb2tlblJldm9jYXRpb25TdG9yZSgpKWApO1xuICogICAzLiBuYW1lIHRoaXMgcHJvY2VzcyBpbiB0aGUgYWNjZXNzLWtleSBleGNoYW5nZSBjYWxsJ3Mgb3duIHNlcnZpY2UgdG9rZW4sIHNvXG4gKiAgICAgIHBsYXRmb3JtIGNhbiBhdHRyaWJ1dGUgKGFuZCByYXRlLWxpbWl0KSB0aGUgZXhjaGFuZ2VzIGl0IHBlcmZvcm1zLlxuICpcbiAqIENvbGxhcHNlcyB0aGUgY29weS1wYXN0ZWQgbGluZXMgaW4gZWFjaCBzZXJ2aWNlJ3MgYGluZGV4LnRzYCBpbnRvIG9uZSBjYWxsLlxuICpcbiAqIEVWRVJZIHN0YXRlbGVzcyBzZXJ2aWNlIGdvZXMgdGhyb3VnaCBoZXJlLCBwbHVnaW4gaW5jbHVkZWQuIFBsdWdpbiBuZWVkcyBhXG4gKiBkaWZmZXJlbnQgcmV2b2NhdGlvbiBzdG9yZSAoaXRzIHBvb2xlZCBCdWxsTVEgUmVkaXMgY29ubmVjdGlvbiwgbm90IHRoZVxuICogZW52LVJlZGlzIG9uZSk7IHRoYXQgb3ZlcnJpZGUgaXMgYSBwYXJhbWV0ZXIsIHNvIG9wdGluZyBvdXQgb2YgdGhlIGVudi1SZWRpc1xuICogc3RvcmUgbmV2ZXIgbWVhbnMgb3B0aW5nIG91dCBvZiB0aGUgd2lyaW5nIOKAlCBhIGhhbmQtcm9sbGVkIGNvcHkgd291bGRcbiAqIHNpbGVudGx5IHNraXAgdGhlIG5leHQgY29uY2VybiBhZGRlZCBoZXJlLlxuICpcbiAqIEBwYXJhbSBzZXJ2aWNlTmFtZSBzaG9ydCBzZXJ2aWNlIG5hbWUgZXZlcnkgYHJlY29yZEF1ZGl0YCBldmVudCAoYW5kIHRoZVxuICogICBgYXV0aHouZGVuaWVkYCByZWNvcmRzKSBpcyBhdHRyaWJ1dGVkIHRvXG4gKiBAcGFyYW0gb3B0cyBwZXItc2VydmljZSBvdmVycmlkZXMg4oCUIHNlZSB7QGxpbmsgU2VydmljZVNlY3VyaXR5T3B0aW9uc31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpcmVTZXJ2aWNlU2VjdXJpdHkoXG4gIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gIG9wdHM6IFNlcnZpY2VTZWN1cml0eU9wdGlvbnMgPSB7fSxcbik6IHZvaWQge1xuICBiaW5kQXVkaXRTZXJ2aWNlKHNlcnZpY2VOYW1lKTtcbiAgd2lyZUF1dGh6RGVuaWFsQXVkaXRvcihzZXJ2aWNlTmFtZSwgZ2V0Qm91bmRBdWRpdENsaWVudCk7XG4gIHNldFRva2VuUmV2b2NhdGlvblN0b3JlKG9wdHMudG9rZW5SZXZvY2F0aW9uU3RvcmUgPz8gY3JlYXRlRW52UmVkaXNUb2tlblJldm9jYXRpb25TdG9yZSgpKTtcbiAgc2V0QXBpS2V5RXhjaGFuZ2VTZXJ2aWNlTmFtZShzZXJ2aWNlTmFtZSk7XG59XG4iXX0=
@@ -51,7 +51,7 @@
51
51
  * counted, because in a real deployment it means this service's peers will
52
52
  * reject everything it sends.
53
53
  */
54
- import crypto, {} from 'crypto';
54
+ import crypto from 'crypto';
55
55
  import { readFileSync, statSync } from 'fs';
56
56
  import jwt from 'jsonwebtoken';
57
57
  import { compactJws, encodeJwsSigningInput, publicJwkFrom, publicKeyFromJwk } from '../utils/jwk.js';
@@ -340,4 +340,4 @@ export function _resetServiceKeysForTests() {
340
340
  ephemeralKeys = undefined;
341
341
  ephemeralWarned = false;
342
342
  }
343
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1rZXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3NlcnZpY2Uta2V5cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtERztBQUVILE9BQU8sTUFBTSxFQUFFLEVBQWtCLE1BQU0sUUFBUSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQzVDLE9BQU8sR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBa0IsTUFBTSxpQkFBaUIsQ0FBQztBQUNySCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFNUMsdUVBQXVFO0FBQ3ZFLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLE9BQU8sQ0FBQztBQUUvQyx1RkFBdUY7QUFDdkYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsVUFBVSxDQUFDO0FBRWpELGlGQUFpRjtBQUNqRixNQUFNLDBCQUEwQixHQUFHLE9BQU8sQ0FBQyxDQUFDLFlBQVk7QUFvQnhELDZFQUE2RTtBQUM3RSxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxLQUFLO0lBQ3hDLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7Q0FD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c291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUGVyLXNlcnZpY2Ugc2lnbmluZyBrZXlzIGZvciBJTlRFUk5BTCBzZXJ2aWNlLXRvLXNlcnZpY2UgdG9rZW5zLlxuICpcbiAqIEJlZm9yZSB0aGlzLCBldmVyeSBzZXJ2aWNlIGhlbGQgb25lIHNoYXJlZCBgSldUX1NFQ1JFVGAsIHNvIGFueSBzZXJ2aWNlIGNvdWxkXG4gKiBtaW50IGEgdG9rZW4gbmFtaW5nIGFueSBPVEhFUiBzZXJ2aWNlIOKAlCBcImJpbGxpbmcgc2FpZCBzb1wiIHdhcyB1bmZhbHNpZmlhYmxlLFxuICogYW5kIGEgc2luZ2xlIGNvbXByb21pc2VkIHdvcmtsb2FkIGNvdWxkIHNwZWFrIGZvciB0aGUgd2hvbGUgZmxlZXQuIE5vdyBlYWNoXG4gKiBzZXJ2aWNlIHNpZ25zIHdpdGggaXRzIE9XTiBFUzI1NiAoRUMgUC0yNTYpIGtleSBhbmQgY29uc3VtZXJzIHZlcmlmeSBhZ2FpbnN0XG4gKiB0aGUgcHVibGljIGhhbHZlcy4gVGhlIGBraWRgIGlzIGJvdW5kIHRvIHRoZSBzaWduZXIncyBOQU1FLCBzbyBhIHRva2VuIHdob3NlXG4gKiBgc3ViYCBzYXlzIGBzZXJ2aWNlOmJpbGxpbmdgIGJ1dCB3YXMgc2lnbmVkIHdpdGggY29tcGxpYW5jZSdzIGtleSBpcyBhXG4gKiBmb3JnZXJ5LCBub3QgYSB2YWxpZCB0b2tlbiB3aXRoIGEgY29uZnVzaW5nIHN1YmplY3QuXG4gKlxuICogIyMgV2h5IHB1YmxpYyBrZXlzIGFyZSBkaXN0cmlidXRlZCBieSBDT05GSUcsIG5vdCBieSBwZXItc2VydmljZSBKV0tTIGVuZHBvaW50c1xuICpcbiAqIFRoZSB1c2VyIGNoYWluIGZldGNoZXMgcGxhdGZvcm0ncyBKV0tTIG92ZXIgSFRUUCBiZWNhdXNlIHRoZXJlIGlzIGV4YWN0bHlcbiAqIG9uZSBzaWduZXIgYW5kIGl0IGlzIHRoZSBvbmUgc2VydmljZSB0aGF0IG11c3QgYmUgdXAgZm9yIGFueWJvZHkgdG8gc2lnbiBpbi5cbiAqIFRoZSBzZXJ2aWNlIGNoYWluIGlzIHRoZSBvcHBvc2l0ZSBzaGFwZSwgYW5kIHRocmVlIHByb3BlcnRpZXMgZGVjaWRlZCBpdDpcbiAqXG4gKiAgMS4gKipgdmVyaWZ5U2VydmljZVByaW5jaXBhbGAgbXVzdCBzdGF5IHN5bmNocm9ub3VzLioqIFRoZSBnbG9iYWwgcmF0ZVxuICogICAgIGxpbWl0ZXIncyBgc2tpcGAgYW5kIGFwcC1mYWN0b3J5J3MgYC93YXJtdXBgIGd1YXJkIHZlcmlmeSBhIHNlcnZpY2UgdG9rZW5cbiAqICAgICBCRUZPUkUgYHJlcXVpcmVBdXRoYCBydW5zLCBpbiBzeW5jaHJvbm91cyBFeHByZXNzIGNhbGxiYWNrcy4gQW4gSFRUUCBKV0tTXG4gKiAgICAgZmV0Y2ggd291bGQgZm9yY2UgdGhvc2UgYXN5bmMg4oCUIGEgY2hhbmdlIHRoYXQgcmVhY2hlcyBpbnRvIGV2ZXJ5XG4gKiAgICAgc2VydmljZSdzIGxpbWl0ZXIgd2lyaW5nLlxuICogIDIuICoqTm8gYXZhaWxhYmlsaXR5IGNvdXBsaW5nLioqIFdpdGggcGVyLXNlcnZpY2UgSldLUyBlbmRwb2ludHMsIHZlcmlmeWluZyBhXG4gKiAgICAgdG9rZW4gbWludGVkIGJ5IGBiaWxsaW5nYCBuZWVkcyBgYmlsbGluZ2AgdG8gYmUgcmVhY2hhYmxlIOKAlCBzbyBiaWxsaW5nXG4gKiAgICAgYmVpbmcgZG93biB3b3VsZCBzdG9wIHBsYXRmb3JtIGZyb20gYWNjZXB0aW5nIGJpbGxpbmcncyBpbi1mbGlnaHQgY2FsbHMsXG4gKiAgICAgdHVybmluZyBvbmUgb3V0YWdlIGludG8gc2V2ZXJhbC4gQSBtb3VudGVkIGZpbGUgaGFzIG5vIHN1Y2ggZWRnZS5cbiAqICAzLiAqKk5vIE7Dl04gYWRkcmVzcyBjb25maWcuKiogMTAgc2VydmljZXMgd291bGQgZWFjaCBuZWVkIGV2ZXJ5IHBlZXInc1xuICogICAgIGhvc3QvcG9ydCAoYW5kIGNvbXBvc2UsIHdoaWNoIGhhcyBubyBtZXNoLCB3b3VsZCBuZWVkIHRoZW0gdG9vKS5cbiAqXG4gKiBTbyB0aGUgZGVwbG95IGdlbmVyYXRlcyBvbmUga2V5cGFpciBwZXIgc2VydmljZSwgbW91bnRzIGVhY2ggcHJpdmF0ZSBrZXkgT05MWVxuICogaW50byBpdHMgb3duIHNlcnZpY2UsIGFuZCBtb3VudHMgT05FIHB1YmxpYyBidW5kbGUgKHJlYWQtb25seSkgZXZlcnl3aGVyZTpcbiAqXG4gKiAgIGBTRVJWSUNFX1NJR05JTkdfS0VZX0ZJTEVgICB0aGlzIHNlcnZpY2UncyBFQyBQLTI1NiBwcml2YXRlIGtleSAoUEtDUyM4IFBFTSlcbiAqICAgYFNFUlZJQ0VfS0VZX0JVTkRMRV9GSUxFYCAgIGB7IFwic2VydmljZXNcIjogeyBcIjxuYW1lPlwiOiB7IFwia2V5c1wiOiBbPGp3az7igKZdIH0gfSB9YFxuICpcbiAqIFJvdGF0aW9uIGlzIGJ5IGBraWRgLCBpbiB0aGUgc2FtZSBzaGFwZSBhcyB0aGUgdXNlciBjaGFpbjogYWRkIHRoZSBuZXcgcHVibGljXG4gKiBrZXkgdG8gdGhlIGJ1bmRsZSAodGhlIHNlcnZpY2Ugbm93IHB1Ymxpc2hlcyB0d28pLCByb2xsIHRoZSBidW5kbGUgb3V0LCBzd2FwXG4gKiB0aGF0IHNlcnZpY2UncyBwcml2YXRlIGtleSwgdGhlbiBkcm9wIHRoZSByZXRpcmVkIHB1YmxpYyBrZXkuIFRoZSBidW5kbGUgaXNcbiAqIHJlLXJlYWQgb24gYW4gaW50ZXJ2YWwgQU5EIG9uIGFuIG10aW1lIGNoYW5nZSwgc28gYSByb3RhdGlvbiBuZWVkcyBubyByZXN0YXJ0LlxuICogYGRlcGxveS9iaW4vc2VydmljZS1zaWduaW5nLWtleXMuc2hgIGdlbmVyYXRlcyBhbmQgcm90YXRlcyBib3RoIGhhbHZlcy5cbiAqXG4gKiAjIyBFcGhlbWVyYWwgbW9kZVxuICpcbiAqIFdpdGggbm8gYFNFUlZJQ0VfU0lHTklOR19LRVlfRklMRWAgY29uZmlndXJlZCwgYSBrZXlwYWlyIGlzIGdlbmVyYXRlZFxuICogSU4tUFJPQ0VTUyBwZXIgcmVxdWVzdGVkIHNlcnZpY2UgbmFtZSBhbmQgcmVnaXN0ZXJlZCBpbiB0aGUgaW4tbWVtb3J5IGJ1bmRsZS5cbiAqIFRoYXQga2VlcHMgc2luZ2xlLXByb2Nlc3Mgc3VpdGVzIGFuZCBsb2NhbCBvbmUtb2ZmIHNjcmlwdHMgd29ya2luZyB3aXRoIG5vIGtleVxuICogbWF0ZXJpYWwsIGFuZCBpdCBjYW4gbmV2ZXIgd2lkZW4gdHJ1c3Q6IHRoZSBvbmx5IHZlcmlmaWVyIHRoYXQgYWNjZXB0cyBzdWNoIGFcbiAqIHRva2VuIGlzIHRoZSBwcm9jZXNzIHRoYXQgbWludGVkIGl0LiBJdCBpcyBsb2dnZWQgb25jZSBhdCB3YXJuIGxldmVsLCBhbmRcbiAqIGNvdW50ZWQsIGJlY2F1c2UgaW4gYSByZWFsIGRlcGxveW1lbnQgaXQgbWVhbnMgdGhpcyBzZXJ2aWNlJ3MgcGVlcnMgd2lsbFxuICogcmVqZWN0IGV2ZXJ5dGhpbmcgaXQgc2VuZHMuXG4gKi9cblxuaW1wb3J0IGNyeXB0bywgeyB0eXBlIEtleU9iamVjdCB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyByZWFkRmlsZVN5bmMsIHN0YXRTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IGp3dCBmcm9tICdqc29ud2VidG9rZW4nO1xuaW1wb3J0IHsgY29tcGFjdEp3cywgZW5jb2RlSndzU2lnbmluZ0lucHV0LCBwdWJsaWNKd2tGcm9tLCBwdWJsaWNLZXlGcm9tSndrLCB0eXBlIFB1YmxpY0p3ayB9IGZyb20gJy4uL3V0aWxzL2p3ay5qcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgZW1pdENvdW50ZXIgfSBmcm9tICcuLi91dGlscy9tZXRyaWMtZW1pdHRlci5qcyc7XG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignc2VydmljZS1rZXlzJyk7XG5cbi8qKiBUaGUgT05MWSBhbGdvcml0aG0gYW4gaW50ZXJuYWwgc2VydmljZSB0b2tlbiBtYXkgYmUgc2lnbmVkIHdpdGguICovXG5leHBvcnQgY29uc3QgU0VSVklDRV9UT0tFTl9BTEdPUklUSE0gPSAnRVMyNTYnO1xuXG4vKiogU3ViamVjdCBwcmVmaXggbmFtaW5nIHRoZSBjYWxsaW5nIHNlcnZpY2Ugb24gYSBzZXJ2aWNlIHRva2VuIChgc2VydmljZTo8bmFtZT5gKS4gKi9cbmV4cG9ydCBjb25zdCBTRVJWSUNFX1NVQkpFQ1RfUFJFRklYID0gJ3NlcnZpY2U6JztcblxuLyoqIEhvdyBsb25nIGEgbG9hZGVkIGJ1bmRsZSBpcyBzZXJ2ZWQgYmVmb3JlIGl0IGlzIHJlLXJlYWQgKHJvdGF0aW9uIHBpY2t1cCkuICovXG5jb25zdCBCVU5ETEVfUkVGUkVTSF9JTlRFUlZBTF9NUyA9IDMwMF8wMDA7IC8vIDUgbWludXRlc1xuXG4vKiogT25lIHNlcnZpY2UncyBwdWJsaXNoZWQgdmVyaWZpY2F0aW9uIGtleXMsIGFzIHRoZXkgYXBwZWFyIGluIHRoZSBidW5kbGUgZmlsZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZUtleUVudHJ5IHtcbiAga2V5czogUHVibGljSndrW107XG59XG5cbi8qKiBUaGUgZG9jdW1lbnQgYFNFUlZJQ0VfS0VZX0JVTkRMRV9GSUxFYCBob2xkczogZXZlcnkgc2VydmljZSdzIHB1YmxpYyBrZXlzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlS2V5QnVuZGxlIHtcbiAgc2VydmljZXM6IFJlY29yZDxzdHJpbmcsIFNlcnZpY2VLZXlFbnRyeT47XG59XG5cbi8qKiBBIHNpZ25pbmcga2V5IHRoaXMgcHJvY2VzcyBob2xkcywgaW4gdGhlIGZvcm1zIHNpZ25pbmcgbmVlZHMuICovXG5pbnRlcmZhY2UgTG9jYWxTaWduaW5nS2V5IHtcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAga2lkOiBzdHJpbmc7XG4gIHByaXZhdGVLZXk6IEtleU9iamVjdDtcbiAgcHVibGljSndrOiBQdWJsaWNKd2s7XG59XG5cbi8qKiBUaGUgYnVuZGxlIGNvdWxkIG5vdCBiZSBsb2FkZWQgb3IgZG9lcyBub3Qga25vdyB0aGUga2V5IGEgdG9rZW4gbmFtZXMuICovXG5leHBvcnQgY2xhc3MgU2VydmljZUtleUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnU2VydmljZUtleUVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgcHJvY2VzcydzIHNlcnZpY2UgaWRlbnRpdHkg4oCUIHRoZSBgPG5hbWU+YCBpbiBgc2VydmljZTo8bmFtZT5gIGFuZCB0aGVcbiAqIG5hbWUgaXRzIGtleSBpcyBwdWJsaXNoZWQgdW5kZXIuIGBTRVJWSUNFX05BTUVgIGlzIGFscmVhZHkgc2V0IHBlciBzZXJ2aWNlIGluXG4gKiBldmVyeSBkZXBsb3kgdGFyZ2V0IChjb21wb3NlLCBtaW5pa3ViZSwgZWMyLCBla3MpLCBhbmQgaXMgdGhlIHNhbWUgdmFsdWUgdGhlXG4gKiBhdWRpdCBhbmQgbWV0cmljIGxhYmVscyB1c2UsIHNvIHRoZXJlIGlzIG9uZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIFwid2hvIGFtIElcIi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcnZpY2VJZGVudGl0eSgpOiBzdHJpbmcge1xuICByZXR1cm4gcHJvY2Vzcy5lbnYuU0VSVklDRV9OQU1FIHx8ICdhcGknO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIExvY2FsIHNpZ25pbmcga2V5XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxubGV0IGxvY2FsS2V5OiBMb2NhbFNpZ25pbmdLZXkgfCB1bmRlZmluZWQ7XG5sZXQgZXBoZW1lcmFsS2V5czogTWFwPHN0cmluZywgTG9jYWxTaWduaW5nS2V5PiB8IHVuZGVmaW5lZDtcbmxldCBlcGhlbWVyYWxXYXJuZWQgPSBmYWxzZTtcblxuZnVuY3Rpb24gbG9hZENvbmZpZ3VyZWRTaWduaW5nS2V5KGZpbGU6IHN0cmluZyk6IExvY2FsU2lnbmluZ0tleSB7XG4gIGNvbnN0IHNlcnZpY2VOYW1lID0gc2VydmljZUlkZW50aXR5KCk7XG4gIGxldCBwcml2YXRlS2V5OiBLZXlPYmplY3Q7XG4gIHRyeSB7XG4gICAgcHJpdmF0ZUtleSA9IGNyeXB0by5jcmVhdGVQcml2YXRlS2V5KHJlYWRGaWxlU3luYyhmaWxlLCAndXRmOCcpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgU2VydmljZUtleUVycm9yKGBDb3VsZCBub3QgcmVhZCB0aGUgc2VydmljZSBzaWduaW5nIGtleSBhdCAke2ZpbGV9OiAke2Vycm9yTWVzc2FnZShlcnJvcil9YCk7XG4gIH1cbiAgLy8gcHVibGljSndrRnJvbSByZWplY3RzIGFueXRoaW5nIGJ1dCBhbiBFQyBQLTI1NiBrZXksIHNvIGEgc2VydmljZSBjb25maWd1cmVkXG4gIC8vIHdpdGggKHNheSkgYW4gUlNBIGtleSBmYWlscyBIRVJFIHJhdGhlciB0aGFuIG1pbnRpbmcgdG9rZW5zIG5vYm9keSB2ZXJpZmllcy5cbiAgY29uc3QgcHVibGljSndrID0gcHVibGljSndrRnJvbShjcnlwdG8uY3JlYXRlUHVibGljS2V5KHByaXZhdGVLZXkpKTtcbiAgcmV0dXJuIHsgc2VydmljZU5hbWUsIGtpZDogcHVibGljSndrLmtpZCwgcHJpdmF0ZUtleSwgcHVibGljSndrIH07XG59XG5cbi8qKlxuICogVGhlIGluLXByb2Nlc3Mga2V5IGZvciBgc2VydmljZU5hbWVgIGluIGVwaGVtZXJhbCBtb2RlLCBnZW5lcmF0ZWQgb24gZmlyc3RcbiAqIHVzZSBhbmQgcmVnaXN0ZXJlZCBpbiB0aGUgaW4tbWVtb3J5IGJ1bmRsZSBzbyB0aGlzIHByb2Nlc3MgY2FuIHZlcmlmeSBpdHMgb3duXG4gKiB0b2tlbnMuIEtleWVkIGJ5IE5BTUUgKG5vdCBqdXN0IG9uZSBrZXkpIHNvIGEgc2luZ2xlLXByb2Nlc3Mgc3VpdGUgY2FuIG1pbnRcbiAqIHRva2VucyBmb3Igc2V2ZXJhbCBzZXJ2aWNlcywgYXMgdGhlIHJlYWwgZmxlZXQgZG9lcyBhY3Jvc3MgcHJvY2Vzc2VzLlxuICovXG5mdW5jdGlvbiBlcGhlbWVyYWxTaWduaW5nS2V5KHNlcnZpY2VOYW1lOiBzdHJpbmcpOiBMb2NhbFNpZ25pbmdLZXkge1xuICBlcGhlbWVyYWxLZXlzID8/PSBuZXcgTWFwKCk7XG4gIGNvbnN0IGV4aXN0aW5nID0gZXBoZW1lcmFsS2V5cy5nZXQoc2VydmljZU5hbWUpO1xuICBpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZztcblxuICBpZiAoIWVwaGVtZXJhbFdhcm5lZCkge1xuICAgIGVwaGVtZXJhbFdhcm5lZCA9IHRydWU7XG4gICAgZW1pdENvdW50ZXIoJ3NlcnZpY2Vfc2lnbmluZ19lcGhlbWVyYWxfa2V5X3RvdGFsJywgeyBzZXJ2aWNlOiBzZXJ2aWNlSWRlbnRpdHkoKSB9KTtcbiAgICBsb2dnZXIud2FybignU0VSVklDRV9TSUdOSU5HX0tFWV9GSUxFIGlzIG5vdCBzZXQg4oCUIG1pbnRpbmcgaW50ZXJuYWwgc2VydmljZSB0b2tlbnMgd2l0aCBhbiBFUEhFTUVSQUwga2V5LiBPbmx5IHRoaXMgcHJvY2VzcyB3aWxsIGFjY2VwdCB0aGVtOyBldmVyeSBwZWVyIHdpbGwgcmVqZWN0IHRoZW0uIFNldCBTRVJWSUNFX1NJR05JTkdfS0VZX0ZJTEUgKyBTRVJWSUNFX0tFWV9CVU5ETEVfRklMRSAoZGVwbG95L2Jpbi9zZXJ2aWNlLXNpZ25pbmcta2V5cy5zaCkuJyk7XG4gIH1cbiAgY29uc3QgeyBwcml2YXRlS2V5LCBwdWJsaWNLZXkgfSA9IGNyeXB0by5nZW5lcmF0ZUtleVBhaXJTeW5jKCdlYycsIHsgbmFtZWRDdXJ2ZTogJ3ByaW1lMjU2djEnIH0pO1xuICBjb25zdCBwdWJsaWNKd2sgPSBwdWJsaWNKd2tGcm9tKHB1YmxpY0tleSk7XG4gIGNvbnN0IGdlbmVyYXRlZDogTG9jYWxTaWduaW5nS2V5ID0geyBzZXJ2aWNlTmFtZSwga2lkOiBwdWJsaWNKd2sua2lkLCBwcml2YXRlS2V5LCBwdWJsaWNKd2sgfTtcbiAgZXBoZW1lcmFsS2V5cy5zZXQoc2VydmljZU5hbWUsIGdlbmVyYXRlZCk7XG4gIHJldHVybiBnZW5lcmF0ZWQ7XG59XG5cbi8qKlxuICogVGhlIGtleSBgc2VydmljZU5hbWVgIG11c3QgYmUgc2lnbmVkIHdpdGguXG4gKlxuICogSW4gYGNvbmZpZ3VyZWRgIG1vZGUgdGhlcmUgaXMgZXhhY3RseSBPTkUga2V5IOKAlCB0aGlzIHNlcnZpY2UncyDigJQgc28gYSByZXF1ZXN0XG4gKiB0byBzaWduIGFzIHNvbWUgT1RIRVIgc2VydmljZSBpcyBhIGJ1ZyBhbmQgdGhyb3dzOiBzdWNoIGEgdG9rZW4gd291bGQgYmVcbiAqIHVudmVyaWZpYWJsZSBldmVyeXdoZXJlIChpdHMgYGtpZGAgbmFtZXMgdGhpcyBzZXJ2aWNlLCBpdHMgYHN1YmAgYW5vdGhlcikuXG4gKiBGYWlsaW5nIGF0IHRoZSBtaW50IG1ha2VzIHRoYXQgYW4gaW1tZWRpYXRlLCBvYnZpb3VzIGVycm9yIGluc3RlYWQgb2YgYVxuICogcnVudGltZSA0MDEuXG4gKi9cbmZ1bmN0aW9uIHNpZ25pbmdLZXlGb3Ioc2VydmljZU5hbWU6IHN0cmluZyk6IExvY2FsU2lnbmluZ0tleSB7XG4gIGNvbnN0IGZpbGUgPSBwcm9jZXNzLmVudi5TRVJWSUNFX1NJR05JTkdfS0VZX0ZJTEU7XG4gIGlmICghZmlsZSkgcmV0dXJuIGVwaGVtZXJhbFNpZ25pbmdLZXkoc2VydmljZU5hbWUpO1xuXG4gIGlmICghbG9jYWxLZXkgfHwgbG9jYWxLZXkuc2VydmljZU5hbWUgIT09IHNlcnZpY2VJZGVudGl0eSgpKSB7XG4gICAgbG9jYWxLZXkgPSBsb2FkQ29uZmlndXJlZFNpZ25pbmdLZXkoZmlsZSk7XG4gIH1cbiAgaWYgKHNlcnZpY2VOYW1lICE9PSBsb2NhbEtleS5zZXJ2aWNlTmFtZSkge1xuICAgIHRocm93IG5ldyBTZXJ2aWNlS2V5RXJyb3IoXG4gICAgICBgVGhpcyBwcm9jZXNzIGlzICcke2xvY2FsS2V5LnNlcnZpY2VOYW1lfScgYW5kIGhvbGRzIG9ubHkgaXRzIG93biBzaWduaW5nIGtleSwgc28gaXQgY2Fubm90IG1pbnQgYSB0b2tlbiBmb3IgJyR7c2VydmljZU5hbWV9Jy4gYFxuICAgICAgKyAnTmFtZSB0aGUgY2FsbGluZyBzZXJ2aWNlIGNvcnJlY3RseSwgb3IgZ2l2ZSB0aGUgY2FsbGVyIGl0cyBvd24ga2V5LicsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gbG9jYWxLZXk7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVmVyaWZpY2F0aW9uIGJ1bmRsZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmludGVyZmFjZSBMb2FkZWRCdW5kbGUge1xuICAvKiogYGtpZGAg4oaSIHRoZSBzZXJ2aWNlIHRoYXQgcHVibGlzaGVkIGl0LCBwbHVzIHRoZSB2ZXJpZmljYXRpb24ga2V5LiAqL1xuICBieUtpZDogTWFwPHN0cmluZywgeyBzZXJ2aWNlTmFtZTogc3RyaW5nOyBrZXk6IEtleU9iamVjdCB9PjtcbiAgbG9hZGVkQXQ6IG51bWJlcjtcbiAgbXRpbWVNczogbnVtYmVyO1xufVxuXG5sZXQgYnVuZGxlOiBMb2FkZWRCdW5kbGUgfCB1bmRlZmluZWQ7XG5cbmZ1bmN0aW9uIHBhcnNlQnVuZGxlKHJhdzogc3RyaW5nLCBmaWxlOiBzdHJpbmcpOiBNYXA8c3RyaW5nLCB7IHNlcnZpY2VOYW1lOiBzdHJpbmc7IGtleTogS2V5T2JqZWN0IH0+IHtcbiAgbGV0IGRvY3VtZW50OiB1bmtub3duO1xuICB0cnkge1xuICAgIGRvY3VtZW50ID0gSlNPTi5wYXJzZShyYXcpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IG5ldyBTZXJ2aWNlS2V5RXJyb3IoYCR7ZmlsZX0gaXMgbm90IHZhbGlkIEpTT046ICR7ZXJyb3JNZXNzYWdlKGVycm9yKX1gKTtcbiAgfVxuICBjb25zdCBzZXJ2aWNlcyA9IChkb2N1bWVudCBhcyBQYXJ0aWFsPFNlcnZpY2VLZXlCdW5kbGU+KT8uc2VydmljZXM7XG4gIGlmICghc2VydmljZXMgfHwgdHlwZW9mIHNlcnZpY2VzICE9PSAnb2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBTZXJ2aWNlS2V5RXJyb3IoYCR7ZmlsZX0gaGFzIG5vIFwic2VydmljZXNcIiBvYmplY3RgKTtcbiAgfVxuICBjb25zdCBieUtpZCA9IG5ldyBNYXA8c3RyaW5nLCB7IHNlcnZpY2VOYW1lOiBzdHJpbmc7IGtleTogS2V5T2JqZWN0IH0+KCk7XG4gIGZvciAoY29uc3QgW3NlcnZpY2VOYW1lLCBlbnRyeV0gb2YgT2JqZWN0LmVudHJpZXMoc2VydmljZXMpKSB7XG4gICAgZm9yIChjb25zdCBqd2sgb2YgZW50cnk/LmtleXMgPz8gW10pIHtcbiAgICAgIGlmICghandrPy5raWQpIGNvbnRpbnVlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYnlLaWQuc2V0KGp3ay5raWQsIHsgc2VydmljZU5hbWUsIGtleTogcHVibGljS2V5RnJvbUp3ayhqd2spIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gT25lIHVudXNhYmxlIGVudHJ5IG11c3Qgbm90IGRpc2NhcmQgdGhlIHJlc3Qgb2YgdGhlIGJ1bmRsZSDigJQgdGhlIHNhbWVcbiAgICAgICAgLy8gcnVsZSB0aGUgSldLUyBjYWNoZSBhcHBsaWVzIHRvIHBsYXRmb3JtJ3MgcHVibGlzaGVkIHNldC5cbiAgICAgICAgbG9nZ2VyLndhcm4oJ1NraXBwaW5nIHVudXNhYmxlIHNlcnZpY2Uga2V5JywgeyBzZXJ2aWNlTmFtZSwga2lkOiBqd2sua2lkLCBlcnJvcjogZXJyb3JNZXNzYWdlKGVycm9yKSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGJ5S2lkLnNpemUgPT09IDApIHRocm93IG5ldyBTZXJ2aWNlS2V5RXJyb3IoYCR7ZmlsZX0gY29udGFpbmVkIG5vIHVzYWJsZSBzZXJ2aWNlIGtleXNgKTtcbiAgcmV0dXJuIGJ5S2lkO1xufVxuXG4vKipcbiAqIFRoZSBga2lkYCDihpIgc2VydmljZSBtYXAsIHJlLXJlYWQgd2hlbiB0aGUgcmVmcmVzaCBpbnRlcnZhbCBoYXMgcGFzc2VkIG9yIHRoZVxuICogZmlsZSdzIG10aW1lIGNoYW5nZWQgKHNvIGEgcm90YXRpb24gaXMgcGlja2VkIHVwIHdpdGhvdXQgYSByZXN0YXJ0KS5cbiAqXG4gKiBJbiBlcGhlbWVyYWwgbW9kZSB0aGUgXCJidW5kbGVcIiBpcyB3aGF0ZXZlciB0aGlzIHByb2Nlc3MgZ2VuZXJhdGVkIGZvciBpdHNlbGYuXG4gKiBOZXZlciB0aHJvd3MgZm9yIGEgbWlzc2luZyBmaWxlIGluIHRoYXQgbW9kZSDigJQgaXQganVzdCBob2xkcyB0aG9zZSBrZXlzLlxuICovXG5mdW5jdGlvbiB2ZXJpZmljYXRpb25LZXlzKCk6IE1hcDxzdHJpbmcsIHsgc2VydmljZU5hbWU6IHN0cmluZzsga2V5OiBLZXlPYmplY3QgfT4ge1xuICBjb25zdCBmaWxlID0gcHJvY2Vzcy5lbnYuU0VSVklDRV9LRVlfQlVORExFX0ZJTEU7XG4gIGlmICghZmlsZSkge1xuICAgIGNvbnN0IGxvY2FsID0gbmV3IE1hcDxzdHJpbmcsIHsgc2VydmljZU5hbWU6IHN0cmluZzsga2V5OiBLZXlPYmplY3QgfT4oKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBlcGhlbWVyYWxLZXlzPy52YWx1ZXMoKSA/PyBbXSkge1xuICAgICAgbG9jYWwuc2V0KGtleS5raWQsIHsgc2VydmljZU5hbWU6IGtleS5zZXJ2aWNlTmFtZSwga2V5OiBjcnlwdG8uY3JlYXRlUHVibGljS2V5KGtleS5wcml2YXRlS2V5KSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxvY2FsO1xuICB9XG5cbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgbGV0IG10aW1lTXMgPSAwO1xuICB0cnkge1xuICAgIG10aW1lTXMgPSBzdGF0U3luYyhmaWxlKS5tdGltZU1zO1xuICB9IGNhdGNoIHtcbiAgICAvLyBVbnJlYWRhYmxlIG5vdzoga2VlcCBzZXJ2aW5nIGEgYnVuZGxlIGFscmVhZHkgaW4gaGFuZCAocHVibGljIGtleXMgZG9uJ3RcbiAgICAvLyBleHBpcmUsIGFuZCByZWZ1c2luZyBldmVyeSBpbnRlcm5hbCBjYWxsIGJlY2F1c2UgYSBtb3VudCBibGlwcGVkIHdvdWxkIGJlXG4gICAgLy8gYSBzZWxmLWluZmxpY3RlZCBvdXRhZ2UpLiBXaXRoIG5vdGhpbmcgaW4gaGFuZCwgZmFpbCBjbG9zZWQgYmVsb3cuXG4gICAgaWYgKGJ1bmRsZSkgcmV0dXJuIGJ1bmRsZS5ieUtpZDtcbiAgfVxuICBpZiAoYnVuZGxlICYmIGJ1bmRsZS5tdGltZU1zID09PSBtdGltZU1zICYmIG5vdyAtIGJ1bmRsZS5sb2FkZWRBdCA8IEJVTkRMRV9SRUZSRVNIX0lOVEVSVkFMX01TKSB7XG4gICAgcmV0dXJuIGJ1bmRsZS5ieUtpZDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgYnlLaWQgPSBwYXJzZUJ1bmRsZShyZWFkRmlsZVN5bmMoZmlsZSwgJ3V0ZjgnKSwgZmlsZSk7XG4gICAgYnVuZGxlID0geyBieUtpZCwgbG9hZGVkQXQ6IG5vdywgbXRpbWVNcyB9O1xuICAgIHJldHVybiBieUtpZDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoYnVuZGxlKSB7XG4gICAgICBsb2dnZXIud2FybignU2VydmljZSBrZXkgYnVuZGxlIHJlbG9hZCBmYWlsZWQ7IGNvbnRpbnVpbmcgb24gdGhlIGxvYWRlZCBjb3B5JywgeyBmaWxlLCBlcnJvcjogZXJyb3JNZXNzYWdlKGVycm9yKSB9KTtcbiAgICAgIHJldHVybiBidW5kbGUuYnlLaWQ7XG4gICAgfVxuICAgIHRocm93IGVycm9yIGluc3RhbmNlb2YgU2VydmljZUtleUVycm9yID8gZXJyb3IgOiBuZXcgU2VydmljZUtleUVycm9yKFN0cmluZyhlcnJvcikpO1xuICB9XG59XG5cbi8qKlxuICogV2hldGhlciBga2lkYCBiZWxvbmdzIHRvIGFuIGludGVybmFsIFNFUlZJQ0Uga2V5LiBUaGlzIGlzIGhvdyBhIGJlYXJlciB0b2tlblxuICogaXMgcm91dGVkIGJldHdlZW4gdGhlIHR3byBFUzI1NiBjaGFpbnM6IGJvdGggdXNlciBhbmQgc2VydmljZSB0b2tlbnMgYXJlXG4gKiBFUzI1NiB3aXRoIGEgYGtpZGAsIGFuZCBga2lkYCBpcyBhbiBSRkMgNzYzOCB0aHVtYnByaW50LCBzbyBvd25lcnNoaXAgb2YgdGhlXG4gKiBpZCDigJQgbm90IGEgY2xhaW0gaW5zaWRlIHRoZSB0b2tlbiDigJQgZGVjaWRlcyB3aGljaCBrZXkgc2V0IG1heSB2ZXJpZnkgaXQuXG4gKiBSZXR1cm5zIGBmYWxzZWAgKG5ldmVyIHRocm93cykgd2hlbiBubyBidW5kbGUgY2FuIGJlIHJlYWQ7IHRoZSB0b2tlbiB0aGVuXG4gKiB0YWtlcyB0aGUgdXNlciBjaGFpbiBhbmQgaXMgcmVqZWN0ZWQgdGhlcmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NlcnZpY2VLaWQoa2lkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdmVyaWZpY2F0aW9uS2V5cygpLmhhcyhraWQpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNpZ24gLyB2ZXJpZnlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFNpZ24gYGNsYWltc2AgYXMgdGhpcyBzZXJ2aWNlJ3MgaW50ZXJuYWwgdG9rZW46IEVTMjU2LCBga2lkYCA9IHRoZSBzaWduZXInc1xuICogdGh1bWJwcmludCwgYHN1YmAgPSBgc2VydmljZTo8c2VydmljZU5hbWU+YC4gYGlhdGAvYGV4cGAgYW5kIHRoZSBvcHRpb25hbFxuICogaXNzdWVyL2F1ZGllbmNlIGFyZSBzdGFtcGVkIGhlcmUgc28gdGhlcmUgaXMgb25lIHBsYWNlIHRoYXQgZGVjaWRlcyB3aGF0IGFcbiAqIHNlcnZpY2UgdG9rZW4gc2F5cy5cbiAqXG4gKiBIYW5kLXJvbGxlZCAocmF0aGVyIHRoYW4gYGp3dC5zaWduYCkgb25seSBzbyB0aGUgaGVhZGVyIGNhcnJpZXMgdGhlIGBraWRgIGluXG4gKiB0aGUgc2FtZSBzaGFwZSBwbGF0Zm9ybSdzIHNpZ25lciBwcm9kdWNlcyDigJQgYGNyeXB0by5zaWduYCBpcyBzeW5jaHJvbm91cywgc29cbiAqIHVubGlrZSB0aGUgS01TIHBhdGggdGhpcyBjb3N0cyBub3RoaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnblNlcnZpY2VKd3QoXG4gIGNsYWltczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIG9wdGlvbnM6IHsgc2VydmljZU5hbWU6IHN0cmluZzsgZXhwaXJlc0luU2Vjb25kczogbnVtYmVyOyBpc3N1ZXI/OiBzdHJpbmc7IGF1ZGllbmNlPzogc3RyaW5nIH0sXG4pOiBzdHJpbmcge1xuICBjb25zdCBrZXkgPSBzaWduaW5nS2V5Rm9yKG9wdGlvbnMuc2VydmljZU5hbWUpO1xuICBjb25zdCBub3cgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTtcbiAgY29uc3QgYm9keSA9IHtcbiAgICAuLi5jbGFpbXMsXG4gICAgc3ViOiBgJHtTRVJWSUNFX1NVQkpFQ1RfUFJFRklYfSR7b3B0aW9ucy5zZXJ2aWNlTmFtZX1gLFxuICAgIGlhdDogbm93LFxuICAgIGV4cDogbm93ICsgb3B0aW9ucy5leHBpcmVzSW5TZWNvbmRzLFxuICAgIC4uLihvcHRpb25zLmlzc3VlciA/IHsgaXNzOiBvcHRpb25zLmlzc3VlciB9IDoge30pLFxuICAgIC4uLihvcHRpb25zLmF1ZGllbmNlID8geyBhdWQ6IG9wdGlvbnMuYXVkaWVuY2UgfSA6IHt9KSxcbiAgfTtcbiAgY29uc3Qgc2lnbmluZ0lucHV0ID0gZW5jb2RlSndzU2lnbmluZ0lucHV0KGtleS5raWQsIGJvZHkpO1xuICBjb25zdCBzaWduYXR1cmUgPSBjcnlwdG8uc2lnbignc2hhMjU2JywgQnVmZmVyLmZyb20oc2lnbmluZ0lucHV0LCAndXRmLTgnKSwge1xuICAgIGtleToga2V5LnByaXZhdGVLZXksXG4gICAgZHNhRW5jb2Rpbmc6ICdpZWVlLXAxMzYzJyxcbiAgfSk7XG4gIHJldHVybiBjb21wYWN0SndzKHNpZ25pbmdJbnB1dCwgc2lnbmF0dXJlKTtcbn1cblxuLyoqXG4gKiBWZXJpZnkgYW4gaW50ZXJuYWwgc2VydmljZSB0b2tlbiwgU1lOQ0hST05PVVNMWSwgYW5kIHJldHVybiBpdHMgY2xhaW1zLlxuICpcbiAqIFRoZSBzZWN1cml0eSBwcm9wZXJ0eSB0aGlzIGZ1bmN0aW9uIGV4aXN0cyBmb3I6IHRoZSBga2lkYCBzZWxlY3RzIHRoZSBrZXlcbiAqIEFORCBuYW1lcyB0aGUgc2lnbmVyLCBhbmQgdGhlIHRva2VuJ3MgYHN1YmAgbXVzdCBhZ3JlZS4gU28gYGJpbGxpbmdgIGNhbm5vdFxuICogYmUgaW1wZXJzb25hdGVkIGJ5IGFueSBvdGhlciBzZXJ2aWNlIOKAlCBub3QgZXZlbiBvbmUgdGhhdCBob2xkcyBhIHZhbGlkIGtleSBvZlxuICogaXRzIG93biDigJQgYSBndWFyYW50ZWUgbm8gc2hhcmVkIHNlY3JldCBjYW4gZ2l2ZS5cbiAqXG4gKiBAdGhyb3dzIHtqd3QuSnNvbldlYlRva2VuRXJyb3J9IHVua25vd24gYGtpZGAsIHdyb25nIGFsZ29yaXRobSwgYmFkXG4gKiAgICAgICAgIHNpZ25hdHVyZSwgZXhwaXJlZCwgb3IgYSBgc3ViYCB0aGF0IGRpc2FncmVlcyB3aXRoIHRoZSBzaWduaW5nIGtleS5cbiAqIEB0aHJvd3Mge1NlcnZpY2VLZXlFcnJvcn0gbm8gdmVyaWZpY2F0aW9uIGJ1bmRsZSBjb3VsZCBiZSByZWFkIGF0IGFsbCDigJQgdGhlXG4gKiAgICAgICAgIHRva2VuJ3MgdmFsaWRpdHkgaXMgVU5LTk9XTiBhbmQgdGhlIGNhbGxlciBtdXN0IG5vdCB0cmVhdCBpdCBhcyB2YWxpZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVNlcnZpY2VKd3Q8VCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgdG9rZW46IHN0cmluZyxcbiAgb3B0aW9uczogeyBraWQ6IHN0cmluZzsgaXNzdWVyPzogc3RyaW5nOyBhdWRpZW5jZT86IHN0cmluZyB9LFxuKTogVCB7XG4gIGNvbnN0IGVudHJ5ID0gdmVyaWZpY2F0aW9uS2V5cygpLmdldChvcHRpb25zLmtpZCk7XG4gIC8vIEVWRVJZIGVtaXNzaW9uIG9mIHRoaXMgY291bnRlciBjYXJyaWVzIHRoZSBzYW1lIGxhYmVsIEtFWVMuIFRoZSBQcm9tZXRoZXVzXG4gIC8vIGNvdW50ZXIgaXMgcmVnaXN0ZXJlZCBsYXppbHkgd2l0aCB3aGF0ZXZlciBrZXlzIGl0cyBmaXJzdCBlbWlzc2lvbiB1c2VkLFxuICAvLyBhbmQgYW4gaW5jcmVtZW50IHdpdGggYSBkaWZmZXJlbnQgc2V0IHRocm93cyDigJQgd2hpY2ggYGVtaXRDb3VudGVyYFxuICAvLyBzd2FsbG93cy4gU28gd2hlbiB0aGUgZmlyc3QgdG9rZW4gYSBwb2QgdmVyaWZpZWQgd2FzIGJhZCAoYHsgcmVzdWx0IH1gXG4gIC8vIGFsb25lKSwgZXZlcnkgbGF0ZXIgYG9rYCBhbmQgYHN1YmplY3RfbWlzbWF0Y2hgIChgeyByZXN1bHQsIHNlcnZpY2UgfWApIHdhc1xuICAvLyBzaWxlbnRseSBkcm9wcGVkIGZvciB0aGUgbGlmZSBvZiB0aGUgcHJvY2VzczogdGhlIG1ldHJpYyB0aGF0IHRlbGxzIHlvdVxuICAvLyBzZXJ2aWNlLXRvLXNlcnZpY2UgYXV0aCBpcyBoZWFsdGh5IHdlbnQgcXVpZXQgZXhhY3RseSB3aGVuIGl0IG1hdHRlcmVkLlxuICBpZiAoIWVudHJ5KSB7XG4gICAgZW1pdENvdW50ZXIoJ3NlcnZpY2VfdG9rZW5fdmVyaWZ5X3RvdGFsJywgeyByZXN1bHQ6ICd1bmtub3duX2tpZCcsIHNlcnZpY2U6ICd1bmtub3duJyB9KTtcbiAgICB0aHJvdyBuZXcgand0Lkpzb25XZWJUb2tlbkVycm9yKGBObyBwdWJsaXNoZWQgc2VydmljZSBrZXkgZm9yIGtpZCAke29wdGlvbnMua2lkfWApO1xuICB9XG4gIGxldCBjbGFpbXM6IFQgJiB7IHN1Yj86IHVua25vd24gfTtcbiAgdHJ5IHtcbiAgICBjbGFpbXMgPSBqd3QudmVyaWZ5KHRva2VuLCBlbnRyeS5rZXksIHtcbiAgICAgIGFsZ29yaXRobXM6IFtTRVJWSUNFX1RPS0VOX0FMR09SSVRITV0sXG4gICAgICAuLi4ob3B0aW9ucy5pc3N1ZXIgPyB7IGlzc3Vlcjogb3B0aW9ucy5pc3N1ZXIgfSA6IHt9KSxcbiAgICAgIC4uLihvcHRpb25zLmF1ZGllbmNlID8geyBhdWRpZW5jZTogb3B0aW9ucy5hdWRpZW5jZSB9IDoge30pLFxuICAgIH0pIGFzIFQgJiB7IHN1Yj86IHVua25vd24gfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBlbWl0Q291bnRlcignc2VydmljZV90b2tlbl92ZXJpZnlfdG90YWwnLCB7IHJlc3VsdDogJ2ludmFsaWQnLCBzZXJ2aWNlOiBlbnRyeS5zZXJ2aWNlTmFtZSB9KTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuICBpZiAoY2xhaW1zLnN1YiAhPT0gYCR7U0VSVklDRV9TVUJKRUNUX1BSRUZJWH0ke2VudHJ5LnNlcnZpY2VOYW1lfWApIHtcbiAgICAvLyBBIHZhbGlkIHNpZ25hdHVyZSBieSB0aGUgV1JPTkcgc2VydmljZTogdGhlIGtleSBiZWxvbmdzIHRvIGBlbnRyeS5zZXJ2aWNlTmFtZWBcbiAgICAvLyBidXQgdGhlIHRva2VuIHNwZWFrcyBmb3Igc29tZW9uZSBlbHNlOiBhIGNyb3NzLXNlcnZpY2UgZm9yZ2VyeS5cbiAgICBlbWl0Q291bnRlcignc2VydmljZV90b2tlbl92ZXJpZnlfdG90YWwnLCB7IHJlc3VsdDogJ3N1YmplY3RfbWlzbWF0Y2gnLCBzZXJ2aWNlOiBlbnRyeS5zZXJ2aWNlTmFtZSB9KTtcbiAgICB0aHJvdyBuZXcgand0Lkpzb25XZWJUb2tlbkVycm9yKGBTZXJ2aWNlIHRva2VuIHN1YmplY3QgJHtTdHJpbmcoY2xhaW1zLnN1Yil9IHdhcyBzaWduZWQgYnkgJHtlbnRyeS5zZXJ2aWNlTmFtZX1gKTtcbiAgfVxuICBlbWl0Q291bnRlcignc2VydmljZV90b2tlbl92ZXJpZnlfdG90YWwnLCB7IHJlc3VsdDogJ29rJywgc2VydmljZTogZW50cnkuc2VydmljZU5hbWUgfSk7XG4gIHJldHVybiBjbGFpbXM7XG59XG5cbi8qKlxuICogVHJ1ZSB3aGlsZSB0aGlzIHNlcnZpY2Ugc3RpbGwgcHVibGlzaGVzIG1vcmUgdGhhbiBvbmUgdmVyaWZpY2F0aW9uIGtleSDigJQgaS5lLlxuICogYSBzaWduaW5nLWtleSByb3RhdGlvbiBpcyBvcGVuIGFuZCB0aGUgcmV0aXJpbmcga2V5IGlzIHN0aWxsIHRydXN0ZWQuIEZlZWRzXG4gKiB0aGUgYHNlY3JldF9yb3RhdGlvbl9wcmV2aW91c19zZXR7c2VjcmV0PVwiU0VSVklDRV9TSUdOSU5HX0tFWVwifWAgZ2F1Z2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JldGlyaW5nU2VydmljZUtleVB1Ymxpc2hlZCgpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBtZSA9IHNlcnZpY2VJZGVudGl0eSgpO1xuICAgIHJldHVybiBbLi4udmVyaWZpY2F0aW9uS2V5cygpLnZhbHVlcygpXS5maWx0ZXIoKHYpID0+IHYuc2VydmljZU5hbWUgPT09IG1lKS5sZW5ndGggPiAxO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBUZXN0IHNlYW06IGRyb3AgdGhlIGxvYWRlZCBzaWduaW5nIGtleSwgdGhlIGJ1bmRsZSBhbmQgYW55IGVwaGVtZXJhbCBrZXlzIHNvXG4gKiB0aGUgbmV4dCBzaWduL3ZlcmlmeSByZS1yZWFkcyB0aGUgZW52aXJvbm1lbnQuIERvbid0IGNhbGwgZnJvbSBwcm9kdWN0aW9uIGNvZGVcbiAqIOKAlCByb3RhdGlvbiBpcyBwaWNrZWQgdXAgYnkgdGhlIHJlZnJlc2ggaW50ZXJ2YWwgYW5kIHRoZSBtdGltZSBjaGVjay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9yZXNldFNlcnZpY2VLZXlzRm9yVGVzdHMoKTogdm9pZCB7XG4gIGxvY2FsS2V5ID0gdW5kZWZpbmVkO1xuICBidW5kbGUgPSB1bmRlZmluZWQ7XG4gIGVwaGVtZXJhbEtleXMgPSB1bmRlZmluZWQ7XG4gIGVwaGVtZXJhbFdhcm5lZCA9IGZhbHNlO1xufVxuIl19
343
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1rZXlzLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvc2VydmljZS1rZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0RHO0FBRUgsT0FBTyxNQUEwQixNQUFNLFFBQVEsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLElBQUksQ0FBQztBQUM1QyxPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQWtCLE1BQU0saUJBQWlCLENBQUM7QUFDckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFcEQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRTVDLHVFQUF1RTtBQUN2RSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxPQUFPLENBQUM7QUFFL0MsdUZBQXVGO0FBQ3ZGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLFVBQVUsQ0FBQztBQUVqRCxpRkFBaUY7QUFDakYsTUFBTSwwQkFBMEIsR0FBRyxPQUFPLENBQUMsQ0FBQyxZQUFZO0FBb0J4RCw2RUFBNkU7QUFDN0UsTUFBTSxPQUFPLGVBQWdCLFNBQVEsS0FBSztJQUN4QyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0s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aWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFBlci1zZXJ2aWNlIHNpZ25pbmcga2V5cyBmb3IgSU5URVJOQUwgc2VydmljZS10by1zZXJ2aWNlIHRva2Vucy5cbiAqXG4gKiBCZWZvcmUgdGhpcywgZXZlcnkgc2VydmljZSBoZWxkIG9uZSBzaGFyZWQgYEpXVF9TRUNSRVRgLCBzbyBhbnkgc2VydmljZSBjb3VsZFxuICogbWludCBhIHRva2VuIG5hbWluZyBhbnkgT1RIRVIgc2VydmljZSDigJQgXCJiaWxsaW5nIHNhaWQgc29cIiB3YXMgdW5mYWxzaWZpYWJsZSxcbiAqIGFuZCBhIHNpbmdsZSBjb21wcm9taXNlZCB3b3JrbG9hZCBjb3VsZCBzcGVhayBmb3IgdGhlIHdob2xlIGZsZWV0LiBOb3cgZWFjaFxuICogc2VydmljZSBzaWducyB3aXRoIGl0cyBPV04gRVMyNTYgKEVDIFAtMjU2KSBrZXkgYW5kIGNvbnN1bWVycyB2ZXJpZnkgYWdhaW5zdFxuICogdGhlIHB1YmxpYyBoYWx2ZXMuIFRoZSBga2lkYCBpcyBib3VuZCB0byB0aGUgc2lnbmVyJ3MgTkFNRSwgc28gYSB0b2tlbiB3aG9zZVxuICogYHN1YmAgc2F5cyBgc2VydmljZTpiaWxsaW5nYCBidXQgd2FzIHNpZ25lZCB3aXRoIGNvbXBsaWFuY2UncyBrZXkgaXMgYVxuICogZm9yZ2VyeSwgbm90IGEgdmFsaWQgdG9rZW4gd2l0aCBhIGNvbmZ1c2luZyBzdWJqZWN0LlxuICpcbiAqICMjIFdoeSBwdWJsaWMga2V5cyBhcmUgZGlzdHJpYnV0ZWQgYnkgQ09ORklHLCBub3QgYnkgcGVyLXNlcnZpY2UgSldLUyBlbmRwb2ludHNcbiAqXG4gKiBUaGUgdXNlciBjaGFpbiBmZXRjaGVzIHBsYXRmb3JtJ3MgSldLUyBvdmVyIEhUVFAgYmVjYXVzZSB0aGVyZSBpcyBleGFjdGx5XG4gKiBvbmUgc2lnbmVyIGFuZCBpdCBpcyB0aGUgb25lIHNlcnZpY2UgdGhhdCBtdXN0IGJlIHVwIGZvciBhbnlib2R5IHRvIHNpZ24gaW4uXG4gKiBUaGUgc2VydmljZSBjaGFpbiBpcyB0aGUgb3Bwb3NpdGUgc2hhcGUsIGFuZCB0aHJlZSBwcm9wZXJ0aWVzIGRlY2lkZWQgaXQ6XG4gKlxuICogIDEuICoqYHZlcmlmeVNlcnZpY2VQcmluY2lwYWxgIG11c3Qgc3RheSBzeW5jaHJvbm91cy4qKiBUaGUgZ2xvYmFsIHJhdGVcbiAqICAgICBsaW1pdGVyJ3MgYHNraXBgIGFuZCBhcHAtZmFjdG9yeSdzIGAvd2FybXVwYCBndWFyZCB2ZXJpZnkgYSBzZXJ2aWNlIHRva2VuXG4gKiAgICAgQkVGT1JFIGByZXF1aXJlQXV0aGAgcnVucywgaW4gc3luY2hyb25vdXMgRXhwcmVzcyBjYWxsYmFja3MuIEFuIEhUVFAgSldLU1xuICogICAgIGZldGNoIHdvdWxkIGZvcmNlIHRob3NlIGFzeW5jIOKAlCBhIGNoYW5nZSB0aGF0IHJlYWNoZXMgaW50byBldmVyeVxuICogICAgIHNlcnZpY2UncyBsaW1pdGVyIHdpcmluZy5cbiAqICAyLiAqKk5vIGF2YWlsYWJpbGl0eSBjb3VwbGluZy4qKiBXaXRoIHBlci1zZXJ2aWNlIEpXS1MgZW5kcG9pbnRzLCB2ZXJpZnlpbmcgYVxuICogICAgIHRva2VuIG1pbnRlZCBieSBgYmlsbGluZ2AgbmVlZHMgYGJpbGxpbmdgIHRvIGJlIHJlYWNoYWJsZSDigJQgc28gYmlsbGluZ1xuICogICAgIGJlaW5nIGRvd24gd291bGQgc3RvcCBwbGF0Zm9ybSBmcm9tIGFjY2VwdGluZyBiaWxsaW5nJ3MgaW4tZmxpZ2h0IGNhbGxzLFxuICogICAgIHR1cm5pbmcgb25lIG91dGFnZSBpbnRvIHNldmVyYWwuIEEgbW91bnRlZCBmaWxlIGhhcyBubyBzdWNoIGVkZ2UuXG4gKiAgMy4gKipObyBOw5dOIGFkZHJlc3MgY29uZmlnLioqIDEwIHNlcnZpY2VzIHdvdWxkIGVhY2ggbmVlZCBldmVyeSBwZWVyJ3NcbiAqICAgICBob3N0L3BvcnQgKGFuZCBjb21wb3NlLCB3aGljaCBoYXMgbm8gbWVzaCwgd291bGQgbmVlZCB0aGVtIHRvbykuXG4gKlxuICogU28gdGhlIGRlcGxveSBnZW5lcmF0ZXMgb25lIGtleXBhaXIgcGVyIHNlcnZpY2UsIG1vdW50cyBlYWNoIHByaXZhdGUga2V5IE9OTFlcbiAqIGludG8gaXRzIG93biBzZXJ2aWNlLCBhbmQgbW91bnRzIE9ORSBwdWJsaWMgYnVuZGxlIChyZWFkLW9ubHkpIGV2ZXJ5d2hlcmU6XG4gKlxuICogICBgU0VSVklDRV9TSUdOSU5HX0tFWV9GSUxFYCAgdGhpcyBzZXJ2aWNlJ3MgRUMgUC0yNTYgcHJpdmF0ZSBrZXkgKFBLQ1MjOCBQRU0pXG4gKiAgIGBTRVJWSUNFX0tFWV9CVU5ETEVfRklMRWAgICBgeyBcInNlcnZpY2VzXCI6IHsgXCI8bmFtZT5cIjogeyBcImtleXNcIjogWzxqd2s+4oCmXSB9IH0gfWBcbiAqXG4gKiBSb3RhdGlvbiBpcyBieSBga2lkYCwgaW4gdGhlIHNhbWUgc2hhcGUgYXMgdGhlIHVzZXIgY2hhaW46IGFkZCB0aGUgbmV3IHB1YmxpY1xuICoga2V5IHRvIHRoZSBidW5kbGUgKHRoZSBzZXJ2aWNlIG5vdyBwdWJsaXNoZXMgdHdvKSwgcm9sbCB0aGUgYnVuZGxlIG91dCwgc3dhcFxuICogdGhhdCBzZXJ2aWNlJ3MgcHJpdmF0ZSBrZXksIHRoZW4gZHJvcCB0aGUgcmV0aXJlZCBwdWJsaWMga2V5LiBUaGUgYnVuZGxlIGlzXG4gKiByZS1yZWFkIG9uIGFuIGludGVydmFsIEFORCBvbiBhbiBtdGltZSBjaGFuZ2UsIHNvIGEgcm90YXRpb24gbmVlZHMgbm8gcmVzdGFydC5cbiAqIGBkZXBsb3kvYmluL3NlcnZpY2Utc2lnbmluZy1rZXlzLnNoYCBnZW5lcmF0ZXMgYW5kIHJvdGF0ZXMgYm90aCBoYWx2ZXMuXG4gKlxuICogIyMgRXBoZW1lcmFsIG1vZGVcbiAqXG4gKiBXaXRoIG5vIGBTRVJWSUNFX1NJR05JTkdfS0VZX0ZJTEVgIGNvbmZpZ3VyZWQsIGEga2V5cGFpciBpcyBnZW5lcmF0ZWRcbiAqIElOLVBST0NFU1MgcGVyIHJlcXVlc3RlZCBzZXJ2aWNlIG5hbWUgYW5kIHJlZ2lzdGVyZWQgaW4gdGhlIGluLW1lbW9yeSBidW5kbGUuXG4gKiBUaGF0IGtlZXBzIHNpbmdsZS1wcm9jZXNzIHN1aXRlcyBhbmQgbG9jYWwgb25lLW9mZiBzY3JpcHRzIHdvcmtpbmcgd2l0aCBubyBrZXlcbiAqIG1hdGVyaWFsLCBhbmQgaXQgY2FuIG5ldmVyIHdpZGVuIHRydXN0OiB0aGUgb25seSB2ZXJpZmllciB0aGF0IGFjY2VwdHMgc3VjaCBhXG4gKiB0b2tlbiBpcyB0aGUgcHJvY2VzcyB0aGF0IG1pbnRlZCBpdC4gSXQgaXMgbG9nZ2VkIG9uY2UgYXQgd2FybiBsZXZlbCwgYW5kXG4gKiBjb3VudGVkLCBiZWNhdXNlIGluIGEgcmVhbCBkZXBsb3ltZW50IGl0IG1lYW5zIHRoaXMgc2VydmljZSdzIHBlZXJzIHdpbGxcbiAqIHJlamVjdCBldmVyeXRoaW5nIGl0IHNlbmRzLlxuICovXG5cbmltcG9ydCBjcnlwdG8sIHsgdHlwZSBLZXlPYmplY3QgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgcmVhZEZpbGVTeW5jLCBzdGF0U3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCBqd3QgZnJvbSAnanNvbndlYnRva2VuJztcbmltcG9ydCB7IGNvbXBhY3RKd3MsIGVuY29kZUp3c1NpZ25pbmdJbnB1dCwgcHVibGljSndrRnJvbSwgcHVibGljS2V5RnJvbUp3aywgdHlwZSBQdWJsaWNKd2sgfSBmcm9tICcuLi91dGlscy9qd2suanMnO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IGVtaXRDb3VudGVyIH0gZnJvbSAnLi4vdXRpbHMvbWV0cmljLWVtaXR0ZXIuanMnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vdXRpbHMvcmVzcG9uc2UuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ3NlcnZpY2Uta2V5cycpO1xuXG4vKiogVGhlIE9OTFkgYWxnb3JpdGhtIGFuIGludGVybmFsIHNlcnZpY2UgdG9rZW4gbWF5IGJlIHNpZ25lZCB3aXRoLiAqL1xuZXhwb3J0IGNvbnN0IFNFUlZJQ0VfVE9LRU5fQUxHT1JJVEhNID0gJ0VTMjU2JztcblxuLyoqIFN1YmplY3QgcHJlZml4IG5hbWluZyB0aGUgY2FsbGluZyBzZXJ2aWNlIG9uIGEgc2VydmljZSB0b2tlbiAoYHNlcnZpY2U6PG5hbWU+YCkuICovXG5leHBvcnQgY29uc3QgU0VSVklDRV9TVUJKRUNUX1BSRUZJWCA9ICdzZXJ2aWNlOic7XG5cbi8qKiBIb3cgbG9uZyBhIGxvYWRlZCBidW5kbGUgaXMgc2VydmVkIGJlZm9yZSBpdCBpcyByZS1yZWFkIChyb3RhdGlvbiBwaWNrdXApLiAqL1xuY29uc3QgQlVORExFX1JFRlJFU0hfSU5URVJWQUxfTVMgPSAzMDBfMDAwOyAvLyA1IG1pbnV0ZXNcblxuLyoqIE9uZSBzZXJ2aWNlJ3MgcHVibGlzaGVkIHZlcmlmaWNhdGlvbiBrZXlzLCBhcyB0aGV5IGFwcGVhciBpbiB0aGUgYnVuZGxlIGZpbGUuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VLZXlFbnRyeSB7XG4gIGtleXM6IFB1YmxpY0p3a1tdO1xufVxuXG4vKiogVGhlIGRvY3VtZW50IGBTRVJWSUNFX0tFWV9CVU5ETEVfRklMRWAgaG9sZHM6IGV2ZXJ5IHNlcnZpY2UncyBwdWJsaWMga2V5cy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZUtleUJ1bmRsZSB7XG4gIHNlcnZpY2VzOiBSZWNvcmQ8c3RyaW5nLCBTZXJ2aWNlS2V5RW50cnk+O1xufVxuXG4vKiogQSBzaWduaW5nIGtleSB0aGlzIHByb2Nlc3MgaG9sZHMsIGluIHRoZSBmb3JtcyBzaWduaW5nIG5lZWRzLiAqL1xuaW50ZXJmYWNlIExvY2FsU2lnbmluZ0tleSB7XG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIGtpZDogc3RyaW5nO1xuICBwcml2YXRlS2V5OiBLZXlPYmplY3Q7XG4gIHB1YmxpY0p3azogUHVibGljSndrO1xufVxuXG4vKiogVGhlIGJ1bmRsZSBjb3VsZCBub3QgYmUgbG9hZGVkIG9yIGRvZXMgbm90IGtub3cgdGhlIGtleSBhIHRva2VuIG5hbWVzLiAqL1xuZXhwb3J0IGNsYXNzIFNlcnZpY2VLZXlFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ1NlcnZpY2VLZXlFcnJvcic7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIHByb2Nlc3MncyBzZXJ2aWNlIGlkZW50aXR5IOKAlCB0aGUgYDxuYW1lPmAgaW4gYHNlcnZpY2U6PG5hbWU+YCBhbmQgdGhlXG4gKiBuYW1lIGl0cyBrZXkgaXMgcHVibGlzaGVkIHVuZGVyLiBgU0VSVklDRV9OQU1FYCBpcyBhbHJlYWR5IHNldCBwZXIgc2VydmljZSBpblxuICogZXZlcnkgZGVwbG95IHRhcmdldCAoY29tcG9zZSwgbWluaWt1YmUsIGVjMiwgZWtzKSwgYW5kIGlzIHRoZSBzYW1lIHZhbHVlIHRoZVxuICogYXVkaXQgYW5kIG1ldHJpYyBsYWJlbHMgdXNlLCBzbyB0aGVyZSBpcyBvbmUgc291cmNlIG9mIHRydXRoIGZvciBcIndobyBhbSBJXCIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJ2aWNlSWRlbnRpdHkoKTogc3RyaW5nIHtcbiAgcmV0dXJuIHByb2Nlc3MuZW52LlNFUlZJQ0VfTkFNRSB8fCAnYXBpJztcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBMb2NhbCBzaWduaW5nIGtleVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmxldCBsb2NhbEtleTogTG9jYWxTaWduaW5nS2V5IHwgdW5kZWZpbmVkO1xubGV0IGVwaGVtZXJhbEtleXM6IE1hcDxzdHJpbmcsIExvY2FsU2lnbmluZ0tleT4gfCB1bmRlZmluZWQ7XG5sZXQgZXBoZW1lcmFsV2FybmVkID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGxvYWRDb25maWd1cmVkU2lnbmluZ0tleShmaWxlOiBzdHJpbmcpOiBMb2NhbFNpZ25pbmdLZXkge1xuICBjb25zdCBzZXJ2aWNlTmFtZSA9IHNlcnZpY2VJZGVudGl0eSgpO1xuICBsZXQgcHJpdmF0ZUtleTogS2V5T2JqZWN0O1xuICB0cnkge1xuICAgIHByaXZhdGVLZXkgPSBjcnlwdG8uY3JlYXRlUHJpdmF0ZUtleShyZWFkRmlsZVN5bmMoZmlsZSwgJ3V0ZjgnKSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IFNlcnZpY2VLZXlFcnJvcihgQ291bGQgbm90IHJlYWQgdGhlIHNlcnZpY2Ugc2lnbmluZyBrZXkgYXQgJHtmaWxlfTogJHtlcnJvck1lc3NhZ2UoZXJyb3IpfWApO1xuICB9XG4gIC8vIHB1YmxpY0p3a0Zyb20gcmVqZWN0cyBhbnl0aGluZyBidXQgYW4gRUMgUC0yNTYga2V5LCBzbyBhIHNlcnZpY2UgY29uZmlndXJlZFxuICAvLyB3aXRoIChzYXkpIGFuIFJTQSBrZXkgZmFpbHMgSEVSRSByYXRoZXIgdGhhbiBtaW50aW5nIHRva2VucyBub2JvZHkgdmVyaWZpZXMuXG4gIGNvbnN0IHB1YmxpY0p3ayA9IHB1YmxpY0p3a0Zyb20oY3J5cHRvLmNyZWF0ZVB1YmxpY0tleShwcml2YXRlS2V5KSk7XG4gIHJldHVybiB7IHNlcnZpY2VOYW1lLCBraWQ6IHB1YmxpY0p3ay5raWQsIHByaXZhdGVLZXksIHB1YmxpY0p3ayB9O1xufVxuXG4vKipcbiAqIFRoZSBpbi1wcm9jZXNzIGtleSBmb3IgYHNlcnZpY2VOYW1lYCBpbiBlcGhlbWVyYWwgbW9kZSwgZ2VuZXJhdGVkIG9uIGZpcnN0XG4gKiB1c2UgYW5kIHJlZ2lzdGVyZWQgaW4gdGhlIGluLW1lbW9yeSBidW5kbGUgc28gdGhpcyBwcm9jZXNzIGNhbiB2ZXJpZnkgaXRzIG93blxuICogdG9rZW5zLiBLZXllZCBieSBOQU1FIChub3QganVzdCBvbmUga2V5KSBzbyBhIHNpbmdsZS1wcm9jZXNzIHN1aXRlIGNhbiBtaW50XG4gKiB0b2tlbnMgZm9yIHNldmVyYWwgc2VydmljZXMsIGFzIHRoZSByZWFsIGZsZWV0IGRvZXMgYWNyb3NzIHByb2Nlc3Nlcy5cbiAqL1xuZnVuY3Rpb24gZXBoZW1lcmFsU2lnbmluZ0tleShzZXJ2aWNlTmFtZTogc3RyaW5nKTogTG9jYWxTaWduaW5nS2V5IHtcbiAgZXBoZW1lcmFsS2V5cyA/Pz0gbmV3IE1hcCgpO1xuICBjb25zdCBleGlzdGluZyA9IGVwaGVtZXJhbEtleXMuZ2V0KHNlcnZpY2VOYW1lKTtcbiAgaWYgKGV4aXN0aW5nKSByZXR1cm4gZXhpc3Rpbmc7XG5cbiAgaWYgKCFlcGhlbWVyYWxXYXJuZWQpIHtcbiAgICBlcGhlbWVyYWxXYXJuZWQgPSB0cnVlO1xuICAgIGVtaXRDb3VudGVyKCdzZXJ2aWNlX3NpZ25pbmdfZXBoZW1lcmFsX2tleV90b3RhbCcsIHsgc2VydmljZTogc2VydmljZUlkZW50aXR5KCkgfSk7XG4gICAgbG9nZ2VyLndhcm4oJ1NFUlZJQ0VfU0lHTklOR19LRVlfRklMRSBpcyBub3Qgc2V0IOKAlCBtaW50aW5nIGludGVybmFsIHNlcnZpY2UgdG9rZW5zIHdpdGggYW4gRVBIRU1FUkFMIGtleS4gT25seSB0aGlzIHByb2Nlc3Mgd2lsbCBhY2NlcHQgdGhlbTsgZXZlcnkgcGVlciB3aWxsIHJlamVjdCB0aGVtLiBTZXQgU0VSVklDRV9TSUdOSU5HX0tFWV9GSUxFICsgU0VSVklDRV9LRVlfQlVORExFX0ZJTEUgKGRlcGxveS9iaW4vc2VydmljZS1zaWduaW5nLWtleXMuc2gpLicpO1xuICB9XG4gIGNvbnN0IHsgcHJpdmF0ZUtleSwgcHVibGljS2V5IH0gPSBjcnlwdG8uZ2VuZXJhdGVLZXlQYWlyU3luYygnZWMnLCB7IG5hbWVkQ3VydmU6ICdwcmltZTI1NnYxJyB9KTtcbiAgY29uc3QgcHVibGljSndrID0gcHVibGljSndrRnJvbShwdWJsaWNLZXkpO1xuICBjb25zdCBnZW5lcmF0ZWQ6IExvY2FsU2lnbmluZ0tleSA9IHsgc2VydmljZU5hbWUsIGtpZDogcHVibGljSndrLmtpZCwgcHJpdmF0ZUtleSwgcHVibGljSndrIH07XG4gIGVwaGVtZXJhbEtleXMuc2V0KHNlcnZpY2VOYW1lLCBnZW5lcmF0ZWQpO1xuICByZXR1cm4gZ2VuZXJhdGVkO1xufVxuXG4vKipcbiAqIFRoZSBrZXkgYHNlcnZpY2VOYW1lYCBtdXN0IGJlIHNpZ25lZCB3aXRoLlxuICpcbiAqIEluIGBjb25maWd1cmVkYCBtb2RlIHRoZXJlIGlzIGV4YWN0bHkgT05FIGtleSDigJQgdGhpcyBzZXJ2aWNlJ3Mg4oCUIHNvIGEgcmVxdWVzdFxuICogdG8gc2lnbiBhcyBzb21lIE9USEVSIHNlcnZpY2UgaXMgYSBidWcgYW5kIHRocm93czogc3VjaCBhIHRva2VuIHdvdWxkIGJlXG4gKiB1bnZlcmlmaWFibGUgZXZlcnl3aGVyZSAoaXRzIGBraWRgIG5hbWVzIHRoaXMgc2VydmljZSwgaXRzIGBzdWJgIGFub3RoZXIpLlxuICogRmFpbGluZyBhdCB0aGUgbWludCBtYWtlcyB0aGF0IGFuIGltbWVkaWF0ZSwgb2J2aW91cyBlcnJvciBpbnN0ZWFkIG9mIGFcbiAqIHJ1bnRpbWUgNDAxLlxuICovXG5mdW5jdGlvbiBzaWduaW5nS2V5Rm9yKHNlcnZpY2VOYW1lOiBzdHJpbmcpOiBMb2NhbFNpZ25pbmdLZXkge1xuICBjb25zdCBmaWxlID0gcHJvY2Vzcy5lbnYuU0VSVklDRV9TSUdOSU5HX0tFWV9GSUxFO1xuICBpZiAoIWZpbGUpIHJldHVybiBlcGhlbWVyYWxTaWduaW5nS2V5KHNlcnZpY2VOYW1lKTtcblxuICBpZiAoIWxvY2FsS2V5IHx8IGxvY2FsS2V5LnNlcnZpY2VOYW1lICE9PSBzZXJ2aWNlSWRlbnRpdHkoKSkge1xuICAgIGxvY2FsS2V5ID0gbG9hZENvbmZpZ3VyZWRTaWduaW5nS2V5KGZpbGUpO1xuICB9XG4gIGlmIChzZXJ2aWNlTmFtZSAhPT0gbG9jYWxLZXkuc2VydmljZU5hbWUpIHtcbiAgICB0aHJvdyBuZXcgU2VydmljZUtleUVycm9yKFxuICAgICAgYFRoaXMgcHJvY2VzcyBpcyAnJHtsb2NhbEtleS5zZXJ2aWNlTmFtZX0nIGFuZCBob2xkcyBvbmx5IGl0cyBvd24gc2lnbmluZyBrZXksIHNvIGl0IGNhbm5vdCBtaW50IGEgdG9rZW4gZm9yICcke3NlcnZpY2VOYW1lfScuIGBcbiAgICAgICsgJ05hbWUgdGhlIGNhbGxpbmcgc2VydmljZSBjb3JyZWN0bHksIG9yIGdpdmUgdGhlIGNhbGxlciBpdHMgb3duIGtleS4nLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGxvY2FsS2V5O1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFZlcmlmaWNhdGlvbiBidW5kbGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5pbnRlcmZhY2UgTG9hZGVkQnVuZGxlIHtcbiAgLyoqIGBraWRgIOKGkiB0aGUgc2VydmljZSB0aGF0IHB1Ymxpc2hlZCBpdCwgcGx1cyB0aGUgdmVyaWZpY2F0aW9uIGtleS4gKi9cbiAgYnlLaWQ6IE1hcDxzdHJpbmcsIHsgc2VydmljZU5hbWU6IHN0cmluZzsga2V5OiBLZXlPYmplY3QgfT47XG4gIGxvYWRlZEF0OiBudW1iZXI7XG4gIG10aW1lTXM6IG51bWJlcjtcbn1cblxubGV0IGJ1bmRsZTogTG9hZGVkQnVuZGxlIHwgdW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBwYXJzZUJ1bmRsZShyYXc6IHN0cmluZywgZmlsZTogc3RyaW5nKTogTWFwPHN0cmluZywgeyBzZXJ2aWNlTmFtZTogc3RyaW5nOyBrZXk6IEtleU9iamVjdCB9PiB7XG4gIGxldCBkb2N1bWVudDogdW5rbm93bjtcbiAgdHJ5IHtcbiAgICBkb2N1bWVudCA9IEpTT04ucGFyc2UocmF3KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgU2VydmljZUtleUVycm9yKGAke2ZpbGV9IGlzIG5vdCB2YWxpZCBKU09OOiAke2Vycm9yTWVzc2FnZShlcnJvcil9YCk7XG4gIH1cbiAgY29uc3Qgc2VydmljZXMgPSAoZG9jdW1lbnQgYXMgUGFydGlhbDxTZXJ2aWNlS2V5QnVuZGxlPik/LnNlcnZpY2VzO1xuICBpZiAoIXNlcnZpY2VzIHx8IHR5cGVvZiBzZXJ2aWNlcyAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgU2VydmljZUtleUVycm9yKGAke2ZpbGV9IGhhcyBubyBcInNlcnZpY2VzXCIgb2JqZWN0YCk7XG4gIH1cbiAgY29uc3QgYnlLaWQgPSBuZXcgTWFwPHN0cmluZywgeyBzZXJ2aWNlTmFtZTogc3RyaW5nOyBrZXk6IEtleU9iamVjdCB9PigpO1xuICBmb3IgKGNvbnN0IFtzZXJ2aWNlTmFtZSwgZW50cnldIG9mIE9iamVjdC5lbnRyaWVzKHNlcnZpY2VzKSkge1xuICAgIGZvciAoY29uc3QgandrIG9mIGVudHJ5Py5rZXlzID8/IFtdKSB7XG4gICAgICBpZiAoIWp3az8ua2lkKSBjb250aW51ZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGJ5S2lkLnNldChqd2sua2lkLCB7IHNlcnZpY2VOYW1lLCBrZXk6IHB1YmxpY0tleUZyb21Kd2soandrKSB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIE9uZSB1bnVzYWJsZSBlbnRyeSBtdXN0IG5vdCBkaXNjYXJkIHRoZSByZXN0IG9mIHRoZSBidW5kbGUg4oCUIHRoZSBzYW1lXG4gICAgICAgIC8vIHJ1bGUgdGhlIEpXS1MgY2FjaGUgYXBwbGllcyB0byBwbGF0Zm9ybSdzIHB1Ymxpc2hlZCBzZXQuXG4gICAgICAgIGxvZ2dlci53YXJuKCdTa2lwcGluZyB1bnVzYWJsZSBzZXJ2aWNlIGtleScsIHsgc2VydmljZU5hbWUsIGtpZDogandrLmtpZCwgZXJyb3I6IGVycm9yTWVzc2FnZShlcnJvcikgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChieUtpZC5zaXplID09PSAwKSB0aHJvdyBuZXcgU2VydmljZUtleUVycm9yKGAke2ZpbGV9IGNvbnRhaW5lZCBubyB1c2FibGUgc2VydmljZSBrZXlzYCk7XG4gIHJldHVybiBieUtpZDtcbn1cblxuLyoqXG4gKiBUaGUgYGtpZGAg4oaSIHNlcnZpY2UgbWFwLCByZS1yZWFkIHdoZW4gdGhlIHJlZnJlc2ggaW50ZXJ2YWwgaGFzIHBhc3NlZCBvciB0aGVcbiAqIGZpbGUncyBtdGltZSBjaGFuZ2VkIChzbyBhIHJvdGF0aW9uIGlzIHBpY2tlZCB1cCB3aXRob3V0IGEgcmVzdGFydCkuXG4gKlxuICogSW4gZXBoZW1lcmFsIG1vZGUgdGhlIFwiYnVuZGxlXCIgaXMgd2hhdGV2ZXIgdGhpcyBwcm9jZXNzIGdlbmVyYXRlZCBmb3IgaXRzZWxmLlxuICogTmV2ZXIgdGhyb3dzIGZvciBhIG1pc3NpbmcgZmlsZSBpbiB0aGF0IG1vZGUg4oCUIGl0IGp1c3QgaG9sZHMgdGhvc2Uga2V5cy5cbiAqL1xuZnVuY3Rpb24gdmVyaWZpY2F0aW9uS2V5cygpOiBNYXA8c3RyaW5nLCB7IHNlcnZpY2VOYW1lOiBzdHJpbmc7IGtleTogS2V5T2JqZWN0IH0+IHtcbiAgY29uc3QgZmlsZSA9IHByb2Nlc3MuZW52LlNFUlZJQ0VfS0VZX0JVTkRMRV9GSUxFO1xuICBpZiAoIWZpbGUpIHtcbiAgICBjb25zdCBsb2NhbCA9IG5ldyBNYXA8c3RyaW5nLCB7IHNlcnZpY2VOYW1lOiBzdHJpbmc7IGtleTogS2V5T2JqZWN0IH0+KCk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgZXBoZW1lcmFsS2V5cz8udmFsdWVzKCkgPz8gW10pIHtcbiAgICAgIGxvY2FsLnNldChrZXkua2lkLCB7IHNlcnZpY2VOYW1lOiBrZXkuc2VydmljZU5hbWUsIGtleTogY3J5cHRvLmNyZWF0ZVB1YmxpY0tleShrZXkucHJpdmF0ZUtleSkgfSk7XG4gICAgfVxuICAgIHJldHVybiBsb2NhbDtcbiAgfVxuXG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGxldCBtdGltZU1zID0gMDtcbiAgdHJ5IHtcbiAgICBtdGltZU1zID0gc3RhdFN5bmMoZmlsZSkubXRpbWVNcztcbiAgfSBjYXRjaCB7XG4gICAgLy8gVW5yZWFkYWJsZSBub3c6IGtlZXAgc2VydmluZyBhIGJ1bmRsZSBhbHJlYWR5IGluIGhhbmQgKHB1YmxpYyBrZXlzIGRvbid0XG4gICAgLy8gZXhwaXJlLCBhbmQgcmVmdXNpbmcgZXZlcnkgaW50ZXJuYWwgY2FsbCBiZWNhdXNlIGEgbW91bnQgYmxpcHBlZCB3b3VsZCBiZVxuICAgIC8vIGEgc2VsZi1pbmZsaWN0ZWQgb3V0YWdlKS4gV2l0aCBub3RoaW5nIGluIGhhbmQsIGZhaWwgY2xvc2VkIGJlbG93LlxuICAgIGlmIChidW5kbGUpIHJldHVybiBidW5kbGUuYnlLaWQ7XG4gIH1cbiAgaWYgKGJ1bmRsZSAmJiBidW5kbGUubXRpbWVNcyA9PT0gbXRpbWVNcyAmJiBub3cgLSBidW5kbGUubG9hZGVkQXQgPCBCVU5ETEVfUkVGUkVTSF9JTlRFUlZBTF9NUykge1xuICAgIHJldHVybiBidW5kbGUuYnlLaWQ7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IGJ5S2lkID0gcGFyc2VCdW5kbGUocmVhZEZpbGVTeW5jKGZpbGUsICd1dGY4JyksIGZpbGUpO1xuICAgIGJ1bmRsZSA9IHsgYnlLaWQsIGxvYWRlZEF0OiBub3csIG10aW1lTXMgfTtcbiAgICByZXR1cm4gYnlLaWQ7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGJ1bmRsZSkge1xuICAgICAgbG9nZ2VyLndhcm4oJ1NlcnZpY2Uga2V5IGJ1bmRsZSByZWxvYWQgZmFpbGVkOyBjb250aW51aW5nIG9uIHRoZSBsb2FkZWQgY29weScsIHsgZmlsZSwgZXJyb3I6IGVycm9yTWVzc2FnZShlcnJvcikgfSk7XG4gICAgICByZXR1cm4gYnVuZGxlLmJ5S2lkO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvciBpbnN0YW5jZW9mIFNlcnZpY2VLZXlFcnJvciA/IGVycm9yIDogbmV3IFNlcnZpY2VLZXlFcnJvcihTdHJpbmcoZXJyb3IpKTtcbiAgfVxufVxuXG4vKipcbiAqIFdoZXRoZXIgYGtpZGAgYmVsb25ncyB0byBhbiBpbnRlcm5hbCBTRVJWSUNFIGtleS4gVGhpcyBpcyBob3cgYSBiZWFyZXIgdG9rZW5cbiAqIGlzIHJvdXRlZCBiZXR3ZWVuIHRoZSB0d28gRVMyNTYgY2hhaW5zOiBib3RoIHVzZXIgYW5kIHNlcnZpY2UgdG9rZW5zIGFyZVxuICogRVMyNTYgd2l0aCBhIGBraWRgLCBhbmQgYGtpZGAgaXMgYW4gUkZDIDc2MzggdGh1bWJwcmludCwgc28gb3duZXJzaGlwIG9mIHRoZVxuICogaWQg4oCUIG5vdCBhIGNsYWltIGluc2lkZSB0aGUgdG9rZW4g4oCUIGRlY2lkZXMgd2hpY2gga2V5IHNldCBtYXkgdmVyaWZ5IGl0LlxuICogUmV0dXJucyBgZmFsc2VgIChuZXZlciB0aHJvd3MpIHdoZW4gbm8gYnVuZGxlIGNhbiBiZSByZWFkOyB0aGUgdG9rZW4gdGhlblxuICogdGFrZXMgdGhlIHVzZXIgY2hhaW4gYW5kIGlzIHJlamVjdGVkIHRoZXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTZXJ2aWNlS2lkKGtpZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHZlcmlmaWNhdGlvbktleXMoKS5oYXMoa2lkKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTaWduIC8gdmVyaWZ5XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBTaWduIGBjbGFpbXNgIGFzIHRoaXMgc2VydmljZSdzIGludGVybmFsIHRva2VuOiBFUzI1NiwgYGtpZGAgPSB0aGUgc2lnbmVyJ3NcbiAqIHRodW1icHJpbnQsIGBzdWJgID0gYHNlcnZpY2U6PHNlcnZpY2VOYW1lPmAuIGBpYXRgL2BleHBgIGFuZCB0aGUgb3B0aW9uYWxcbiAqIGlzc3Vlci9hdWRpZW5jZSBhcmUgc3RhbXBlZCBoZXJlIHNvIHRoZXJlIGlzIG9uZSBwbGFjZSB0aGF0IGRlY2lkZXMgd2hhdCBhXG4gKiBzZXJ2aWNlIHRva2VuIHNheXMuXG4gKlxuICogSGFuZC1yb2xsZWQgKHJhdGhlciB0aGFuIGBqd3Quc2lnbmApIG9ubHkgc28gdGhlIGhlYWRlciBjYXJyaWVzIHRoZSBga2lkYCBpblxuICogdGhlIHNhbWUgc2hhcGUgcGxhdGZvcm0ncyBzaWduZXIgcHJvZHVjZXMg4oCUIGBjcnlwdG8uc2lnbmAgaXMgc3luY2hyb25vdXMsIHNvXG4gKiB1bmxpa2UgdGhlIEtNUyBwYXRoIHRoaXMgY29zdHMgbm90aGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25TZXJ2aWNlSnd0KFxuICBjbGFpbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBvcHRpb25zOiB7IHNlcnZpY2VOYW1lOiBzdHJpbmc7IGV4cGlyZXNJblNlY29uZHM6IG51bWJlcjsgaXNzdWVyPzogc3RyaW5nOyBhdWRpZW5jZT86IHN0cmluZyB9LFxuKTogc3RyaW5nIHtcbiAgY29uc3Qga2V5ID0gc2lnbmluZ0tleUZvcihvcHRpb25zLnNlcnZpY2VOYW1lKTtcbiAgY29uc3Qgbm93ID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7XG4gIGNvbnN0IGJvZHkgPSB7XG4gICAgLi4uY2xhaW1zLFxuICAgIHN1YjogYCR7U0VSVklDRV9TVUJKRUNUX1BSRUZJWH0ke29wdGlvbnMuc2VydmljZU5hbWV9YCxcbiAgICBpYXQ6IG5vdyxcbiAgICBleHA6IG5vdyArIG9wdGlvbnMuZXhwaXJlc0luU2Vjb25kcyxcbiAgICAuLi4ob3B0aW9ucy5pc3N1ZXIgPyB7IGlzczogb3B0aW9ucy5pc3N1ZXIgfSA6IHt9KSxcbiAgICAuLi4ob3B0aW9ucy5hdWRpZW5jZSA/IHsgYXVkOiBvcHRpb25zLmF1ZGllbmNlIH0gOiB7fSksXG4gIH07XG4gIGNvbnN0IHNpZ25pbmdJbnB1dCA9IGVuY29kZUp3c1NpZ25pbmdJbnB1dChrZXkua2lkLCBib2R5KTtcbiAgY29uc3Qgc2lnbmF0dXJlID0gY3J5cHRvLnNpZ24oJ3NoYTI1NicsIEJ1ZmZlci5mcm9tKHNpZ25pbmdJbnB1dCwgJ3V0Zi04JyksIHtcbiAgICBrZXk6IGtleS5wcml2YXRlS2V5LFxuICAgIGRzYUVuY29kaW5nOiAnaWVlZS1wMTM2MycsXG4gIH0pO1xuICByZXR1cm4gY29tcGFjdEp3cyhzaWduaW5nSW5wdXQsIHNpZ25hdHVyZSk7XG59XG5cbi8qKlxuICogVmVyaWZ5IGFuIGludGVybmFsIHNlcnZpY2UgdG9rZW4sIFNZTkNIUk9OT1VTTFksIGFuZCByZXR1cm4gaXRzIGNsYWltcy5cbiAqXG4gKiBUaGUgc2VjdXJpdHkgcHJvcGVydHkgdGhpcyBmdW5jdGlvbiBleGlzdHMgZm9yOiB0aGUgYGtpZGAgc2VsZWN0cyB0aGUga2V5XG4gKiBBTkQgbmFtZXMgdGhlIHNpZ25lciwgYW5kIHRoZSB0b2tlbidzIGBzdWJgIG11c3QgYWdyZWUuIFNvIGBiaWxsaW5nYCBjYW5ub3RcbiAqIGJlIGltcGVyc29uYXRlZCBieSBhbnkgb3RoZXIgc2VydmljZSDigJQgbm90IGV2ZW4gb25lIHRoYXQgaG9sZHMgYSB2YWxpZCBrZXkgb2ZcbiAqIGl0cyBvd24g4oCUIGEgZ3VhcmFudGVlIG5vIHNoYXJlZCBzZWNyZXQgY2FuIGdpdmUuXG4gKlxuICogQHRocm93cyB7and0Lkpzb25XZWJUb2tlbkVycm9yfSB1bmtub3duIGBraWRgLCB3cm9uZyBhbGdvcml0aG0sIGJhZFxuICogICAgICAgICBzaWduYXR1cmUsIGV4cGlyZWQsIG9yIGEgYHN1YmAgdGhhdCBkaXNhZ3JlZXMgd2l0aCB0aGUgc2lnbmluZyBrZXkuXG4gKiBAdGhyb3dzIHtTZXJ2aWNlS2V5RXJyb3J9IG5vIHZlcmlmaWNhdGlvbiBidW5kbGUgY291bGQgYmUgcmVhZCBhdCBhbGwg4oCUIHRoZVxuICogICAgICAgICB0b2tlbidzIHZhbGlkaXR5IGlzIFVOS05PV04gYW5kIHRoZSBjYWxsZXIgbXVzdCBub3QgdHJlYXQgaXQgYXMgdmFsaWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlTZXJ2aWNlSnd0PFQgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gIHRva2VuOiBzdHJpbmcsXG4gIG9wdGlvbnM6IHsga2lkOiBzdHJpbmc7IGlzc3Vlcj86IHN0cmluZzsgYXVkaWVuY2U/OiBzdHJpbmcgfSxcbik6IFQge1xuICBjb25zdCBlbnRyeSA9IHZlcmlmaWNhdGlvbktleXMoKS5nZXQob3B0aW9ucy5raWQpO1xuICAvLyBFVkVSWSBlbWlzc2lvbiBvZiB0aGlzIGNvdW50ZXIgY2FycmllcyB0aGUgc2FtZSBsYWJlbCBLRVlTLiBUaGUgUHJvbWV0aGV1c1xuICAvLyBjb3VudGVyIGlzIHJlZ2lzdGVyZWQgbGF6aWx5IHdpdGggd2hhdGV2ZXIga2V5cyBpdHMgZmlyc3QgZW1pc3Npb24gdXNlZCxcbiAgLy8gYW5kIGFuIGluY3JlbWVudCB3aXRoIGEgZGlmZmVyZW50IHNldCB0aHJvd3Mg4oCUIHdoaWNoIGBlbWl0Q291bnRlcmBcbiAgLy8gc3dhbGxvd3MuIFNvIHdoZW4gdGhlIGZpcnN0IHRva2VuIGEgcG9kIHZlcmlmaWVkIHdhcyBiYWQgKGB7IHJlc3VsdCB9YFxuICAvLyBhbG9uZSksIGV2ZXJ5IGxhdGVyIGBva2AgYW5kIGBzdWJqZWN0X21pc21hdGNoYCAoYHsgcmVzdWx0LCBzZXJ2aWNlIH1gKSB3YXNcbiAgLy8gc2lsZW50bHkgZHJvcHBlZCBmb3IgdGhlIGxpZmUgb2YgdGhlIHByb2Nlc3M6IHRoZSBtZXRyaWMgdGhhdCB0ZWxscyB5b3VcbiAgLy8gc2VydmljZS10by1zZXJ2aWNlIGF1dGggaXMgaGVhbHRoeSB3ZW50IHF1aWV0IGV4YWN0bHkgd2hlbiBpdCBtYXR0ZXJlZC5cbiAgaWYgKCFlbnRyeSkge1xuICAgIGVtaXRDb3VudGVyKCdzZXJ2aWNlX3Rva2VuX3ZlcmlmeV90b3RhbCcsIHsgcmVzdWx0OiAndW5rbm93bl9raWQnLCBzZXJ2aWNlOiAndW5rbm93bicgfSk7XG4gICAgdGhyb3cgbmV3IGp3dC5Kc29uV2ViVG9rZW5FcnJvcihgTm8gcHVibGlzaGVkIHNlcnZpY2Uga2V5IGZvciBraWQgJHtvcHRpb25zLmtpZH1gKTtcbiAgfVxuICBsZXQgY2xhaW1zOiBUICYgeyBzdWI/OiB1bmtub3duIH07XG4gIHRyeSB7XG4gICAgY2xhaW1zID0gand0LnZlcmlmeSh0b2tlbiwgZW50cnkua2V5LCB7XG4gICAgICBhbGdvcml0aG1zOiBbU0VSVklDRV9UT0tFTl9BTEdPUklUSE1dLFxuICAgICAgLi4uKG9wdGlvbnMuaXNzdWVyID8geyBpc3N1ZXI6IG9wdGlvbnMuaXNzdWVyIH0gOiB7fSksXG4gICAgICAuLi4ob3B0aW9ucy5hdWRpZW5jZSA/IHsgYXVkaWVuY2U6IG9wdGlvbnMuYXVkaWVuY2UgfSA6IHt9KSxcbiAgICB9KSBhcyBUICYgeyBzdWI/OiB1bmtub3duIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZW1pdENvdW50ZXIoJ3NlcnZpY2VfdG9rZW5fdmVyaWZ5X3RvdGFsJywgeyByZXN1bHQ6ICdpbnZhbGlkJywgc2VydmljZTogZW50cnkuc2VydmljZU5hbWUgfSk7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbiAgaWYgKGNsYWltcy5zdWIgIT09IGAke1NFUlZJQ0VfU1VCSkVDVF9QUkVGSVh9JHtlbnRyeS5zZXJ2aWNlTmFtZX1gKSB7XG4gICAgLy8gQSB2YWxpZCBzaWduYXR1cmUgYnkgdGhlIFdST05HIHNlcnZpY2U6IHRoZSBrZXkgYmVsb25ncyB0byBgZW50cnkuc2VydmljZU5hbWVgXG4gICAgLy8gYnV0IHRoZSB0b2tlbiBzcGVha3MgZm9yIHNvbWVvbmUgZWxzZTogYSBjcm9zcy1zZXJ2aWNlIGZvcmdlcnkuXG4gICAgZW1pdENvdW50ZXIoJ3NlcnZpY2VfdG9rZW5fdmVyaWZ5X3RvdGFsJywgeyByZXN1bHQ6ICdzdWJqZWN0X21pc21hdGNoJywgc2VydmljZTogZW50cnkuc2VydmljZU5hbWUgfSk7XG4gICAgdGhyb3cgbmV3IGp3dC5Kc29uV2ViVG9rZW5FcnJvcihgU2VydmljZSB0b2tlbiBzdWJqZWN0ICR7U3RyaW5nKGNsYWltcy5zdWIpfSB3YXMgc2lnbmVkIGJ5ICR7ZW50cnkuc2VydmljZU5hbWV9YCk7XG4gIH1cbiAgZW1pdENvdW50ZXIoJ3NlcnZpY2VfdG9rZW5fdmVyaWZ5X3RvdGFsJywgeyByZXN1bHQ6ICdvaycsIHNlcnZpY2U6IGVudHJ5LnNlcnZpY2VOYW1lIH0pO1xuICByZXR1cm4gY2xhaW1zO1xufVxuXG4vKipcbiAqIFRydWUgd2hpbGUgdGhpcyBzZXJ2aWNlIHN0aWxsIHB1Ymxpc2hlcyBtb3JlIHRoYW4gb25lIHZlcmlmaWNhdGlvbiBrZXkg4oCUIGkuZS5cbiAqIGEgc2lnbmluZy1rZXkgcm90YXRpb24gaXMgb3BlbiBhbmQgdGhlIHJldGlyaW5nIGtleSBpcyBzdGlsbCB0cnVzdGVkLiBGZWVkc1xuICogdGhlIGBzZWNyZXRfcm90YXRpb25fcHJldmlvdXNfc2V0e3NlY3JldD1cIlNFUlZJQ0VfU0lHTklOR19LRVlcIn1gIGdhdWdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSZXRpcmluZ1NlcnZpY2VLZXlQdWJsaXNoZWQoKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3QgbWUgPSBzZXJ2aWNlSWRlbnRpdHkoKTtcbiAgICByZXR1cm4gWy4uLnZlcmlmaWNhdGlvbktleXMoKS52YWx1ZXMoKV0uZmlsdGVyKCh2KSA9PiB2LnNlcnZpY2VOYW1lID09PSBtZSkubGVuZ3RoID4gMTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogVGVzdCBzZWFtOiBkcm9wIHRoZSBsb2FkZWQgc2lnbmluZyBrZXksIHRoZSBidW5kbGUgYW5kIGFueSBlcGhlbWVyYWwga2V5cyBzb1xuICogdGhlIG5leHQgc2lnbi92ZXJpZnkgcmUtcmVhZHMgdGhlIGVudmlyb25tZW50LiBEb24ndCBjYWxsIGZyb20gcHJvZHVjdGlvbiBjb2RlXG4gKiDigJQgcm90YXRpb24gaXMgcGlja2VkIHVwIGJ5IHRoZSByZWZyZXNoIGludGVydmFsIGFuZCB0aGUgbXRpbWUgY2hlY2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBfcmVzZXRTZXJ2aWNlS2V5c0ZvclRlc3RzKCk6IHZvaWQge1xuICBsb2NhbEtleSA9IHVuZGVmaW5lZDtcbiAgYnVuZGxlID0gdW5kZWZpbmVkO1xuICBlcGhlbWVyYWxLZXlzID0gdW5kZWZpbmVkO1xuICBlcGhlbWVyYWxXYXJuZWQgPSBmYWxzZTtcbn1cbiJdfQ==
@@ -186,4 +186,4 @@ export function createEnvSseTicketStore(options) {
186
186
  logger.info('SSE ticket store: in-memory backend (single-process fallback)', { keyPrefix: config.keyPrefix });
187
187
  return createMemorySseTicketStore(config);
188
188
  }
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NlLXRpY2tldC1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9zc2UtdGlja2V0LXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQTZEaEQsU0FBUyxXQUFXO0lBQ2xCLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUVELCtFQUErRTtBQUMvRSxNQUFNLFVBQVUsMEJBQTBCLENBQUMsTUFBNEI7SUFFckUsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQWlCLENBQUM7SUFDekMsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWdELENBQUM7SUFFdkUsTUFBTSxLQUFLLEdBQUcsR0FBUyxFQUFFO1FBQ3ZCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QixLQUFLLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksT0FBTztZQUFFLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxTQUFTO2dCQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUUsS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJ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Q0FBQywrREFBK0QsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM5RyxPQUFPLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IGNyeXB0byBmcm9tICdjcnlwdG8nO1xuXG5pbXBvcnQgeyBjcmVhdGVFbnZSZWRpc0NsaWVudCwgY3JlYXRlUmVkaXNSZWFkeUdhdGUsIHR5cGUgUmVhZHlBd2FyZVJlZGlzIH0gZnJvbSAnLi9lbnYtcmVkaXMuanMnO1xuaW1wb3J0IHsgZW52SW50IH0gZnJvbSAnLi4vdXRpbHMvZW52LmpzJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignc3NlLXRpY2tldC1zdG9yZScpO1xuXG4vKiogV2hhdCBhIHRpY2tldCBhdXRob3JpemVzOiB0aGUgb3duaW5nIG9yZyBhbmQsIGZvciBzdWJqZWN0LWJvdW5kIGNoYW5uZWxzLCB0aGUgc3RyZWFtIHN1YmplY3QuICovXG5leHBvcnQgaW50ZXJmYWNlIFNzZVRpY2tldFJlY29yZCB7XG4gIG9yZ0lkOiBzdHJpbmc7XG4gIC8qKiBTdHJlYW0gc3ViamVjdCB0aGUgdGlja2V0IGlzIGJvdW5kIHRvIChlLmcuIGEgYnVpbGQtbG9nIHJlcXVlc3RJZCkuIEFic2VudCBmb3Igb3JnLWtleWVkIGNoYW5uZWxzLiAqL1xuICBzdWJqZWN0Pzogc3RyaW5nO1xufVxuXG4vKiogUmVzdWx0IG9mIHtAbGluayBTc2VUaWNrZXRTdG9yZS5pc3N1ZX0uICovXG5leHBvcnQgdHlwZSBTc2VUaWNrZXRJc3N1ZVJlc3VsdCA9XG4gIHwgeyBvazogdHJ1ZTsgdGlja2V0OiBzdHJpbmcgfVxuICB8IHsgb2s6IGZhbHNlOyByZWFzb246ICd0b3RhbCcgfCAnb3JnJyB9O1xuXG4vKipcbiAqIFRoZSBPTkUgc3RvcmUgZm9yIHNob3J0LWxpdmVkLCBzaW5nbGUtdXNlIFNTRSBhdXRoIHRpY2tldHMsIHBsdXMgdGhlXG4gKiBzdHJlYW0tb3duZXJzaGlwIGJpbmRpbmdzIHN1YmplY3QtYm91bmQgY2hhbm5lbHMgbmVlZC5cbiAqXG4gKiBBIGNsaWVudCBleGNoYW5nZXMgaXRzIEpXVCBmb3IgYSB0aWNrZXQgKHNvIHRoZSB0b2tlbiBuZXZlciBsYW5kcyBpbiBhblxuICogRXZlbnRTb3VyY2UgcXVlcnkgc3RyaW5nIC8gYWNjZXNzIGxvZyksIHRoZW4gcmVkZWVtcyBpdCBvbiB0aGUgU1NFIGBHRVRgLlxuICpcbiAqIC0gKipUaWNrZXRzKiogYXJlIHNpbmdsZS11c2UgYWNyb3NzIHBvZHM6IHRoZSBSZWRpcyBiYWNrZW5kIHJlZGVlbXMgd2l0aFxuICogICBgR0VUREVMYCwgc28gdHdvIHBvZHMgY2FuIG5ldmVyIGJvdGggc3BlbmQgb25lIHRpY2tldC5cbiAqIC0gKipDYXBzIGNvdW50IExJVkUgdGlja2V0cyoqIChpc3N1ZWQsIG5vdCB5ZXQgcmVkZWVtZWQsIG5vdCBleHBpcmVkKSDigJQgcGVyIG9yZ1xuICogICBhbmQgaW4gdG90YWwuIEEgcmVkZWVtZWQgb3IgZXhwaXJlZCB0aWNrZXQgZnJlZXMgaXRzIHNsb3QgaW1tZWRpYXRlbHkuXG4gKiAtICoqT3duZXJzaGlwKiogcmVjb3JkcyB3aGljaCBvcmcgb3ducyBhIHN0cmVhbSBzdWJqZWN0LCBzbyBhIHN1YmplY3QtYm91bmRcbiAqICAgY2hhbm5lbCBjYW4gcmVmdXNlIHRvIG1pbnQgYSB0aWNrZXQgZm9yIGFub3RoZXIgb3JnJ3Mgc3RyZWFtLlxuICpcbiAqIEJvdGggYmFja2VuZHMgc2hhcmUgdGhlc2Ugc2VtYW50aWNzOyB0aGUgaW4tbWVtb3J5IG9uZSBpcyBjb3JyZWN0IGZvciBhXG4gKiBzaW5nbGUgcHJvY2VzcyBvbmx5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNzZVRpY2tldFN0b3JlIHtcbiAgLyoqIE1pbnQgYSB0aWNrZXQgZm9yIGBvcmdJZGAgKG9wdGlvbmFsbHkgYm91bmQgdG8gYHN1YmplY3RgKSwgb3IgcmVqZWN0IHdoZW4gYSBsaXZlLXRpY2tldCBjYXAgaXMgcmVhY2hlZC4gKi9cbiAgaXNzdWUob3JnSWQ6IHN0cmluZywgc3ViamVjdD86IHN0cmluZyk6IFByb21pc2U8U3NlVGlja2V0SXNzdWVSZXN1bHQ+O1xuICAvKiogUmVkZWVtIGEgdGlja2V0IGV4YWN0bHkgb25jZTsgbnVsbCB3aGVuIHVua25vd24sIGV4cGlyZWQgb3IgYWxyZWFkeSBzcGVudC4gKi9cbiAgY29uc3VtZSh0aWNrZXRJZDogc3RyaW5nKTogUHJvbWlzZTxTc2VUaWNrZXRSZWNvcmQgfCBudWxsPjtcbiAgLyoqIFJlY29yZCB0aGUgb3JnIHRoYXQgb3ducyBgc3ViamVjdGAgZm9yIGB0dGxNc2AuICovXG4gIGJpbmRPd25lcihzdWJqZWN0OiBzdHJpbmcsIG9yZ0lkOiBzdHJpbmcsIHR0bE1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+O1xuICAvKiogVGhlIG9yZyB0aGF0IG93bnMgYHN1YmplY3RgLCBvciBudWxsIHdoZW4gbm9uZSBpcyBib3VuZC4gVGhyb3dzIHdoZW4gdGhlIGJhY2tlbmQgY2FuJ3QgYW5zd2VyLiAqL1xuICBnZXRPd25lcihzdWJqZWN0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICAvKiogUmVsZWFzZSB0aW1lcnMvcmVzb3VyY2VzLiBJbi1tZW1vcnkgY2xlYXJzIGl0cyBzd2VlcCBpbnRlcnZhbDsgUmVkaXMgaXMgYSBuby1vcC4gKi9cbiAgc3RvcCgpOiB2b2lkO1xufVxuXG4vKiogQ2FwcyArIFRUTCBmb3IgdGhlIHRpY2tldCBzdG9yZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3NlVGlja2V0U3RvcmVDb25maWcge1xuICAvKiogVGlja2V0IGxpZmV0aW1lIOKAlCBsb25nIGVub3VnaCBmb3IgdGhlIGNsaWVudCB0byBvcGVuIHRoZSBFdmVudFNvdXJjZS4gKi9cbiAgdHRsTXM6IG51bWJlcjtcbiAgLyoqIENhcCBvbiBMSVZFIHRpY2tldHMgYWNyb3NzIGFsbCBvcmdzIChhYnVzZSAvIG1lbW9yeSBib3VuZCkuICovXG4gIG1heFRvdGFsOiBudW1iZXI7XG4gIC8qKiBDYXAgb24gTElWRSB0aWNrZXRzIHBlciBvcmcgKHNpbmdsZS10ZW5hbnQgZmFpcm5lc3MgYm91bmQpLiAqL1xuICBtYXhQZXJPcmc6IG51bWJlcjtcbiAgLyoqXG4gICAqIEtleSBuYW1lc3BhY2Ugc28gaW5kZXBlbmRlbnQgY2hhbm5lbHMgKG1lc3NhZ2Ugbm90aWZpY2F0aW9ucywgcmVwb3J0aW5nXG4gICAqIGV4ZWN1dGlvbi1zdGF0dXMsIGEgc2VydmljZSdzIGJ1aWxkLWxvZyBzdHJlYW0pIG5ldmVyIHNoYXJlIHRpY2tldHMsIGNhcHNcbiAgICogb3Igb3duZXJzaGlwIGJpbmRpbmdzIOKAlCBhIHRpY2tldCBtaW50ZWQgZm9yIG9uZSBjaGFubmVsIG11c3Qgbm90IGJlXG4gICAqIHJlZGVlbWFibGUgb24gYW5vdGhlci4gT21pdCBmb3IgdGhlIGRlZmF1bHQgbmFtZXNwYWNlLlxuICAgKi9cbiAga2V5UHJlZml4Pzogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBuZXdUaWNrZXRJZCgpOiBzdHJpbmcge1xuICByZXR1cm4gY3J5cHRvLnJhbmRvbUJ5dGVzKDI0KS50b1N0cmluZygnYmFzZTY0dXJsJyk7XG59XG5cbi8qKiBJbi1tZW1vcnkgYmFja2VuZCDigJQgc2luZ2xlLXByb2Nlc3MgZmFsbGJhY2sgd2hlbiBSZWRpcyBpc24ndCBjb25maWd1cmVkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1lbW9yeVNzZVRpY2tldFN0b3JlKGNvbmZpZzogU3NlVGlja2V0U3RvcmVDb25maWcpOiBTc2VUaWNrZXRTdG9yZSB7XG4gIGludGVyZmFjZSBFbnRyeSBleHRlbmRzIFNzZVRpY2tldFJlY29yZCB7IGV4cGlyZXNBdDogbnVtYmVyIH1cbiAgY29uc3QgdGlja2V0cyA9IG5ldyBNYXA8c3RyaW5nLCBFbnRyeT4oKTtcbiAgY29uc3Qgb3duZXJzID0gbmV3IE1hcDxzdHJpbmcsIHsgb3JnSWQ6IHN0cmluZzsgZXhwaXJlc0F0OiBudW1iZXIgfT4oKTtcblxuICBjb25zdCBzd2VlcCA9ICgpOiB2b2lkID0+IHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGZvciAoY29uc3QgW2lkLCB0XSBvZiB0aWNrZXRzKSBpZiAobm93ID49IHQuZXhwaXJlc0F0KSB0aWNrZXRzLmRlbGV0ZShpZCk7XG4gICAgZm9yIChjb25zdCBbaWQsIG9dIG9mIG93bmVycykgaWYgKG5vdyA+PSBvLmV4cGlyZXNBdCkgb3duZXJzLmRlbGV0ZShpZCk7XG4gIH07XG4gIGNvbnN0IHRpbWVyID0gc2V0SW50ZXJ2YWwoc3dlZXAsIE1hdGgubWF4KDFfMDAwLCBjb25maWcudHRsTXMpKTtcbiAgdGltZXIudW5yZWYoKTtcblxuICByZXR1cm4ge1xuICAgIGFzeW5jIGlzc3VlKG9yZ0lkLCBzdWJqZWN0KSB7XG4gICAgICBzd2VlcCgpO1xuICAgICAgaWYgKHRpY2tldHMuc2l6ZSA+PSBjb25maWcubWF4VG90YWwpIHJldHVybiB7IG9rOiBmYWxzZSwgcmVhc29uOiAndG90YWwnIH07XG4gICAgICBsZXQgZm9yT3JnID0gMDtcbiAgICAgIGZvciAoY29uc3QgdCBvZiB0aWNrZXRzLnZhbHVlcygpKSBpZiAodC5vcmdJZCA9PT0gb3JnSWQpIGZvck9yZysrO1xuICAgICAgaWYgKGZvck9yZyA+PSBjb25maWcubWF4UGVyT3JnKSByZXR1cm4geyBvazogZmFsc2UsIHJlYXNvbjogJ29yZycgfTtcbiAgICAgIGNvbnN0IHRpY2tldCA9IG5ld1RpY2tldElkKCk7XG4gICAgICB0aWNrZXRzLnNldCh0aWNrZXQsIHsgb3JnSWQsIC4uLihzdWJqZWN0ICE9PSB1bmRlZmluZWQgJiYgeyBzdWJqZWN0IH0pLCBleHBpcmVzQXQ6IERhdGUubm93KCkgKyBjb25maWcudHRsTXMgfSk7XG4gICAgICByZXR1cm4geyBvazogdHJ1ZSwgdGlja2V0IH07XG4gICAgfSxcbiAgICBhc3luYyBjb25zdW1lKHRpY2tldElkKSB7XG4gICAgICBjb25zdCB0ID0gdGlja2V0cy5nZXQodGlja2V0SWQpO1xuICAgICAgdGlja2V0cy5kZWxldGUodGlja2V0SWQpOyAvLyBzaW5nbGUtdXNlIOKAlCBnb25lIHdoZXRoZXIgb3Igbm90IGl0IHdhcyB2YWxpZFxuICAgICAgaWYgKCF0IHx8IERhdGUubm93KCkgPj0gdC5leHBpcmVzQXQpIHJldHVybiBudWxsO1xuICAgICAgcmV0dXJuIHsgb3JnSWQ6IHQub3JnSWQsIC4uLih0LnN1YmplY3QgIT09IHVuZGVmaW5lZCAmJiB7IHN1YmplY3Q6IHQuc3ViamVjdCB9KSB9O1xuICAgIH0sXG4gICAgYXN5bmMgYmluZE93bmVyKHN1YmplY3QsIG9yZ0lkLCB0dGxNcykge1xuICAgICAgb3duZXJzLnNldChzdWJqZWN0LCB7IG9yZ0lkLCBleHBpcmVzQXQ6IERhdGUubm93KCkgKyB0dGxNcyB9KTtcbiAgICB9LFxuICAgIGFzeW5jIGdldE93bmVyKHN1YmplY3QpIHtcbiAgICAgIGNvbnN0IG8gPSBvd25lcnMuZ2V0KHN1YmplY3QpO1xuICAgICAgaWYgKCFvKSByZXR1cm4gbnVsbDtcbiAgICAgIGlmIChEYXRlLm5vdygpID49IG8uZXhwaXJlc0F0KSB7IG93bmVycy5kZWxldGUoc3ViamVjdCk7IHJldHVybiBudWxsOyB9XG4gICAgICByZXR1cm4gby5vcmdJZDtcbiAgICB9LFxuICAgIHN0b3AoKSB7IGNsZWFySW50ZXJ2YWwodGltZXIpOyB9LFxuICB9O1xufVxuXG4vKiogTWluaW1hbCBpb3JlZGlzIHN1cmZhY2UgdGhlIFJlZGlzIGJhY2tlbmQgbmVlZHMgKEdFVERFTCByZXF1aXJlcyBSZWRpcyDiiaUgNi4yKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3NlVGlja2V0UmVkaXMgZXh0ZW5kcyBSZWFkeUF3YXJlUmVkaXMge1xuICBldmFsKHNjcmlwdDogc3RyaW5nLCBudW1LZXlzOiBudW1iZXIsIC4uLmFyZ3M6IChzdHJpbmcgfCBudW1iZXIpW10pOiBQcm9taXNlPHVua25vd24+O1xuICBnZXRkZWwoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICB6cmVtKGtleTogc3RyaW5nLCAuLi5tZW1iZXJzOiBzdHJpbmdbXSk6IFByb21pc2U8bnVtYmVyPjtcbiAgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCAuLi5hcmdzOiAoc3RyaW5nIHwgbnVtYmVyKVtdKTogUHJvbWlzZTx1bmtub3duPjtcbiAgZ2V0KGtleTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPjtcbn1cblxuLyoqXG4gKiBBdG9taWMgbGl2ZS1jb3VudCBpc3N1ZS4gUHJ1bmVzIGV4cGlyZWQgbWVtYmVycyBmcm9tIGJvdGggY2FwIHNldHMsIGNoZWNrcyB0aGVcbiAqIHRvdGFsIHRoZW4gdGhlIHBlci1vcmcgY2FwLCBhbmQgb25seSB0aGVuIHN0b3JlcyB0aGUgdGlja2V0IGFuZCByZWNvcmRzIGl0IGluXG4gKiBib3RoIHNldHMg4oCUIHNvIGNvbmN1cnJlbnQgbWludHMgY2FuJ3Qgb3ZlcnNob290IGEgY2FwIGFuZCBhIGNhcCBjYW4gbmV2ZXJcbiAqIHN0aWNrIChldmVyeSBtZW1iZXIgY2FycmllcyBpdHMgb3duIGV4cGlyeSBzY29yZSBhbmQgZXZlcnkga2V5IGEgVFRMKS5cbiAqXG4gKiBLRVlTOiB0b3RhbCB6c2V0LCBvcmcgenNldCwgdGlja2V0IGtleS5cbiAqIEFSR1Y6IHR0bE1zLCBtYXhUb3RhbCwgbWF4UGVyT3JnLCB0aWNrZXRJZCwgcmVjb3JkIEpTT04uXG4gKiBVc2VzIHRoZSBzZXJ2ZXIgY2xvY2sgc28gZXZlcnkgcG9kIGFncmVlcyBvbiBcImV4cGlyZWRcIi5cbiAqL1xuY29uc3QgSVNTVUVfU0NSSVBUID0gYFxubG9jYWwgdCA9IHJlZGlzLmNhbGwoJ1RJTUUnKVxubG9jYWwgbm93ID0gdG9udW1iZXIodFsxXSkgKiAxMDAwICsgbWF0aC5mbG9vcih0b251bWJlcih0WzJdKSAvIDEwMDApXG5sb2NhbCB0dGwgPSB0b251bWJlcihBUkdWWzFdKVxucmVkaXMuY2FsbCgnWlJFTVJBTkdFQllTQ09SRScsIEtFWVNbMV0sICctaW5mJywgbm93KVxucmVkaXMuY2FsbCgnWlJFTVJBTkdFQllTQ09SRScsIEtFWVNbMl0sICctaW5mJywgbm93KVxuaWYgcmVkaXMuY2FsbCgnWkNBUkQnLCBLRVlTWzFdKSA+PSB0b251bWJlcihBUkdWWzJdKSB0aGVuIHJldHVybiAndG90YWwnIGVuZFxuaWYgcmVkaXMuY2FsbCgnWkNBUkQnLCBLRVlTWzJdKSA+PSB0b251bWJlcihBUkdWWzNdKSB0aGVuIHJldHVybiAnb3JnJyBlbmRcbnJlZGlzLmNhbGwoJ1NFVCcsIEtFWVNbM10sIEFSR1ZbNV0sICdQWCcsIHR0bClcbnJlZGlzLmNhbGwoJ1pBREQnLCBLRVlTWzFdLCBub3cgKyB0dGwsIEFSR1ZbNF0pXG5yZWRpcy5jYWxsKCdaQUREJywgS0VZU1syXSwgbm93ICsgdHRsLCBBUkdWWzRdKVxucmVkaXMuY2FsbCgnUEVYUElSRScsIEtFWVNbMV0sIHR0bClcbnJlZGlzLmNhbGwoJ1BFWFBJUkUnLCBLRVlTWzJdLCB0dGwpXG5yZXR1cm4gJ29rJ2A7XG5cbi8qKlxuICogUmVkaXMgYmFja2VuZCDigJQgbXVsdGktcmVwbGljYSBzYWZlLlxuICpcbiAqIEZhaWwtQ0xPU0VEOiBhIFJlZGlzIGVycm9yIG1ha2VzIGBpc3N1ZWAgcmVqZWN0IChgdG90YWxgKSwgYGNvbnN1bWVgIHJldHVyblxuICogbnVsbCBhbmQgYGdldE93bmVyYCB0aHJvdywgc28gYW4gb3V0YWdlIGRlZ3JhZGVzIHRvIFwibm8gbGl2ZSBzdHJlYW1cIiByYXRoZXJcbiAqIHRoYW4gaGFuZGluZyBvdXQgb3IgYWNjZXB0aW5nIHVudmFsaWRhdGVkIHRpY2tldHMuIGBiaW5kT3duZXJgIGlzIGJlc3QtZWZmb3J0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVkaXNTc2VUaWNrZXRTdG9yZShyZWRpczogU3NlVGlja2V0UmVkaXMsIGNvbmZpZzogU3NlVGlja2V0U3RvcmVDb25maWcpOiBTc2VUaWNrZXRTdG9yZSB7XG4gIGNvbnN0IG5zID0gY29uZmlnLmtleVByZWZpeCA/IGAke2NvbmZpZy5rZXlQcmVmaXh9OmAgOiAnJztcbiAgY29uc3QgdGlja2V0S2V5ID0gKHQ6IHN0cmluZykgPT4gYCR7bnN9c3NlOnRrOiR7dH1gO1xuICBjb25zdCBvcmdTZXRLZXkgPSAobzogc3RyaW5nKSA9PiBgJHtuc31zc2U6dGt6Om9yZzoke299YDtcbiAgY29uc3QgdG90YWxTZXRLZXkgPSBgJHtuc31zc2U6dGt6OmFsbGA7XG4gIGNvbnN0IG93bmVyS2V5ID0gKHM6IHN0cmluZykgPT4gYCR7bnN9c3NlOm93bmVyOiR7c31gO1xuICBjb25zdCB0dGxNcyA9IE1hdGgubWF4KDEsIE1hdGguY2VpbChjb25maWcudHRsTXMpKTtcbiAgLy8gVGhlIGVudiBjbGllbnQgaGFzIG5vIG9mZmxpbmUgcXVldWU6IHdhaXQgKGJvdW5kZWQpIGZvciB0aGUgZmlyc3QgY29ubmVjdGlvblxuICAvLyBzbyB0aGUgZmlyc3QgbWludC9yZWRlZW0gYWZ0ZXIgYm9vdCBpc24ndCByZWplY3RlZCBvdXRyaWdodC5cbiAgY29uc3QgcmVhZHkgPSBjcmVhdGVSZWRpc1JlYWR5R2F0ZShyZWRpcyk7XG5cbiAgcmV0dXJuIHtcbiAgICBhc3luYyBpc3N1ZShvcmdJZCwgc3ViamVjdCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgcmVhZHkoKTtcbiAgICAgICAgY29uc3QgdGlja2V0ID0gbmV3VGlja2V0SWQoKTtcbiAgICAgICAgY29uc3QgcmVjb3JkOiBTc2VUaWNrZXRSZWNvcmQgPSB7IG9yZ0lkLCAuLi4oc3ViamVjdCAhPT0gdW5kZWZpbmVkICYmIHsgc3ViamVjdCB9KSB9O1xuICAgICAgICBjb25zdCBvdXRjb21lID0gYXdhaXQgcmVkaXMuZXZhbChcbiAgICAgICAgICBJU1NVRV9TQ1JJUFQsIDMsIHRvdGFsU2V0S2V5LCBvcmdTZXRLZXkob3JnSWQpLCB0aWNrZXRLZXkodGlja2V0KSxcbiAgICAgICAgICB0dGxNcywgY29uZmlnLm1heFRvdGFsLCBjb25maWcubWF4UGVyT3JnLCB0aWNrZXQsIEpTT04uc3RyaW5naWZ5KHJlY29yZCksXG4gICAgICAgICk7XG4gICAgICAgIGlmIChvdXRjb21lID09PSAnb2snKSByZXR1cm4geyBvazogdHJ1ZSwgdGlja2V0IH07XG4gICAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgcmVhc29uOiBvdXRjb21lID09PSAnb3JnJyA/ICdvcmcnIDogJ3RvdGFsJyB9O1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKCdTU0UgdGlja2V0IGlzc3VlIGZhaWxlZCAoZmFpbC1jbG9zZWQpJywgeyBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgcmVhc29uOiAndG90YWwnIH07XG4gICAgICB9XG4gICAgfSxcbiAgICBhc3luYyBjb25zdW1lKHRpY2tldElkKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCByZWFkeSgpO1xuICAgICAgICBjb25zdCByYXcgPSBhd2FpdCByZWRpcy5nZXRkZWwodGlja2V0S2V5KHRpY2tldElkKSk7XG4gICAgICAgIGlmICghcmF3KSByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgcmVjID0gSlNPTi5wYXJzZShyYXcpIGFzIFNzZVRpY2tldFJlY29yZDtcbiAgICAgICAgaWYgKHR5cGVvZiByZWM/Lm9yZ0lkICE9PSAnc3RyaW5nJykgcmV0dXJuIG51bGw7XG4gICAgICAgIC8vIEZyZWUgdGhlIGxpdmUtY291bnQgc2xvdHMgbm93IHJhdGhlciB0aGFuIGF0IGV4cGlyeS4gQmVzdC1lZmZvcnQ6IGFcbiAgICAgICAgLy8gZmFpbHVyZSBoZXJlIG9ubHkgZGVsYXlzIHRoZSBzbG90IHVudGlsIHRoZSBtZW1iZXIncyBleHBpcnkgc2NvcmUuXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtyZWRpcy56cmVtKG9yZ1NldEtleShyZWMub3JnSWQpLCB0aWNrZXRJZCksIHJlZGlzLnpyZW0odG90YWxTZXRLZXksIHRpY2tldElkKV0pXG4gICAgICAgICAgLmNhdGNoKChlcnI6IHVua25vd24pID0+IGxvZ2dlci5kZWJ1ZygnU1NFIHRpY2tldCBzbG90IHJlbGVhc2UgZmFpbGVkJywgeyBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSkpO1xuICAgICAgICByZXR1cm4gcmVjO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKCdTU0UgdGlja2V0IGNvbnN1bWUgZmFpbGVkIChmYWlsLWNsb3NlZCknLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSxcbiAgICBhc3luYyBiaW5kT3duZXIoc3ViamVjdCwgb3JnSWQsIG93bmVyVHRsTXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHJlYWR5KCk7XG4gICAgICAgIGF3YWl0IHJlZGlzLnNldChvd25lcktleShzdWJqZWN0KSwgb3JnSWQsICdQWCcsIE1hdGgubWF4KDEsIE1hdGguY2VpbChvd25lclR0bE1zKSkpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKCdTU0Ugc3RyZWFtLW93bmVyIGJpbmQgZmFpbGVkJywgeyBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBhc3luYyBnZXRPd25lcihzdWJqZWN0KSB7XG4gICAgICBhd2FpdCByZWFkeSgpO1xuICAgICAgcmV0dXJuIHJlZGlzLmdldChvd25lcktleShzdWJqZWN0KSk7XG4gICAgfSxcbiAgICBzdG9wKCkgeyAvKiBrZXlzIGV4cGlyZSBvbiB0aGVpciBvd24gVFRMICovIH0sXG4gIH07XG59XG5cbi8qKlxuICogVGhlIGRlcGxveS13aWRlIHRpY2tldCBjYXBzOiBgU1NFX01BWF9UT1RBTF9USUNLRVRTYCAoZGVmYXVsdCAxMDAwKSBhbmRcbiAqIGBTU0VfTUFYX1RJQ0tFVFNfUEVSX09SR2AgKGRlZmF1bHQgMTApLiBPbmUgcmVhZGVyIHNvIGV2ZXJ5IGNoYW5uZWwgcGFyc2VzXG4gKiB0aGVtIHRoZSBzYW1lIHdheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVudlNzZVRpY2tldENhcHMoKTogUGljazxTc2VUaWNrZXRTdG9yZUNvbmZpZywgJ21heFRvdGFsJyB8ICdtYXhQZXJPcmcnPiB7XG4gIHJldHVybiB7XG4gICAgbWF4VG90YWw6IGVudkludCgnU1NFX01BWF9UT1RBTF9USUNLRVRTJywgMTAwMCwgeyBtaW46IDEgfSksXG4gICAgbWF4UGVyT3JnOiBlbnZJbnQoJ1NTRV9NQVhfVElDS0VUU19QRVJfT1JHJywgMTAsIHsgbWluOiAxIH0pLFxuICB9O1xufVxuXG4vKioge0BsaW5rIGNyZWF0ZUVudlNzZVRpY2tldFN0b3JlfSBjb25maWc6IHRoZSBjYXBzIGRlZmF1bHQgdG8ge0BsaW5rIGVudlNzZVRpY2tldENhcHN9LiAqL1xuZXhwb3J0IHR5cGUgRW52U3NlVGlja2V0U3RvcmVDb25maWcgPSBPbWl0PFNzZVRpY2tldFN0b3JlQ29uZmlnLCAnbWF4VG90YWwnIHwgJ21heFBlck9yZyc+XG4gICYgUGFydGlhbDxQaWNrPFNzZVRpY2tldFN0b3JlQ29uZmlnLCAnbWF4VG90YWwnIHwgJ21heFBlck9yZyc+PjtcblxuLyoqXG4gKiBCdWlsZCBhbiB7QGxpbmsgU3NlVGlja2V0U3RvcmV9IGZyb20gdGhlIHN0YW5kYXJkIFJlZGlzIGVudiAoYFJFRElTX1VSTGAgb3JcbiAqIGBSRURJU19TRU5USU5FTFNgKTogdGhlIFJlZGlzIGJhY2tlbmQgd2hlbiBjb25maWd1cmVkIChtdWx0aS1yZXBsaWNhIHNhZmUpLFxuICogb3RoZXJ3aXNlIHRoZSBpbi1tZW1vcnkgc2luZ2xlLXByb2Nlc3MgYmFja2VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVudlNzZVRpY2tldFN0b3JlKG9wdGlvbnM6IEVudlNzZVRpY2tldFN0b3JlQ29uZmlnKTogU3NlVGlja2V0U3RvcmUge1xuICBjb25zdCBjYXBzID0gZW52U3NlVGlja2V0Q2FwcygpO1xuICBjb25zdCBjb25maWc6IFNzZVRpY2tldFN0b3JlQ29uZmlnID0ge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgbWF4VG90YWw6IG9wdGlvbnMubWF4VG90YWwgPz8gY2Fwcy5tYXhUb3RhbCxcbiAgICBtYXhQZXJPcmc6IG9wdGlvbnMubWF4UGVyT3JnID8/IGNhcHMubWF4UGVyT3JnLFxuICB9O1xuICBjb25zdCByZWRpcyA9IGNyZWF0ZUVudlJlZGlzQ2xpZW50PFNzZVRpY2tldFJlZGlzPignc3NlLXRpY2tldCcpO1xuICBpZiAocmVkaXMpIHtcbiAgICBsb2dnZXIuaW5mbygnU1NFIHRpY2tldCBzdG9yZTogUmVkaXMgYmFja2VuZCAobXVsdGktcmVwbGljYSknLCB7IGtleVByZWZpeDogY29uZmlnLmtleVByZWZpeCB9KTtcbiAgICByZXR1cm4gY3JlYXRlUmVkaXNTc2VUaWNrZXRTdG9yZShyZWRpcywgY29uZmlnKTtcbiAgfVxuICBsb2dnZXIuaW5mbygnU1NFIHRpY2tldCBzdG9yZTogaW4tbWVtb3J5IGJhY2tlbmQgKHNpbmdsZS1wcm9jZXNzIGZhbGxiYWNrKScsIHsga2V5UHJlZml4OiBjb25maWcua2V5UHJlZml4IH0pO1xuICByZXR1cm4gY3JlYXRlTWVtb3J5U3NlVGlja2V0U3RvcmUoY29uZmlnKTtcbn1cbiJdfQ==
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NlLXRpY2tldC1zdG9yZS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3NzZS10aWNrZXQtc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXBELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBNkRoRCxTQUFTLFdBQVc7SUFDbEIsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQsK0VBQStFO0FBQy9FLE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxNQUE0QjtJQUVyRSxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztJQUN6QyxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBZ0QsQ0FBQztJQUV2RSxNQUFNLEtBQUssR0FBRyxHQUFTLEVBQUU7UUFDdkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxPQUFPO1lBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLFNBQVM7Z0JBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxRSxLQUFLLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTTtZQUFFLElB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LEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzlHLE9BQU8sMEJBQTBCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5cbmltcG9ydCB7IGNyZWF0ZUVudlJlZGlzQ2xpZW50LCBjcmVhdGVSZWRpc1JlYWR5R2F0ZSwgdHlwZSBSZWFkeUF3YXJlUmVkaXMgfSBmcm9tICcuL2Vudi1yZWRpcy5qcyc7XG5pbXBvcnQgeyBlbnZJbnQgfSBmcm9tICcuLi91dGlscy9lbnYuanMnO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IGVycm9yTWVzc2FnZSB9IGZyb20gJy4uL3V0aWxzL3Jlc3BvbnNlLmpzJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdzc2UtdGlja2V0LXN0b3JlJyk7XG5cbi8qKiBXaGF0IGEgdGlja2V0IGF1dGhvcml6ZXM6IHRoZSBvd25pbmcgb3JnIGFuZCwgZm9yIHN1YmplY3QtYm91bmQgY2hhbm5lbHMsIHRoZSBzdHJlYW0gc3ViamVjdC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3NlVGlja2V0UmVjb3JkIHtcbiAgb3JnSWQ6IHN0cmluZztcbiAgLyoqIFN0cmVhbSBzdWJqZWN0IHRoZSB0aWNrZXQgaXMgYm91bmQgdG8gKGUuZy4gYSBidWlsZC1sb2cgcmVxdWVzdElkKS4gQWJzZW50IGZvciBvcmcta2V5ZWQgY2hhbm5lbHMuICovXG4gIHN1YmplY3Q/OiBzdHJpbmc7XG59XG5cbi8qKiBSZXN1bHQgb2Yge0BsaW5rIFNzZVRpY2tldFN0b3JlLmlzc3VlfS4gKi9cbmV4cG9ydCB0eXBlIFNzZVRpY2tldElzc3VlUmVzdWx0ID1cbiAgfCB7IG9rOiB0cnVlOyB0aWNrZXQ6IHN0cmluZyB9XG4gIHwgeyBvazogZmFsc2U7IHJlYXNvbjogJ3RvdGFsJyB8ICdvcmcnIH07XG5cbi8qKlxuICogVGhlIE9ORSBzdG9yZSBmb3Igc2hvcnQtbGl2ZWQsIHNpbmdsZS11c2UgU1NFIGF1dGggdGlja2V0cywgcGx1cyB0aGVcbiAqIHN0cmVhbS1vd25lcnNoaXAgYmluZGluZ3Mgc3ViamVjdC1ib3VuZCBjaGFubmVscyBuZWVkLlxuICpcbiAqIEEgY2xpZW50IGV4Y2hhbmdlcyBpdHMgSldUIGZvciBhIHRpY2tldCAoc28gdGhlIHRva2VuIG5ldmVyIGxhbmRzIGluIGFuXG4gKiBFdmVudFNvdXJjZSBxdWVyeSBzdHJpbmcgLyBhY2Nlc3MgbG9nKSwgdGhlbiByZWRlZW1zIGl0IG9uIHRoZSBTU0UgYEdFVGAuXG4gKlxuICogLSAqKlRpY2tldHMqKiBhcmUgc2luZ2xlLXVzZSBhY3Jvc3MgcG9kczogdGhlIFJlZGlzIGJhY2tlbmQgcmVkZWVtcyB3aXRoXG4gKiAgIGBHRVRERUxgLCBzbyB0d28gcG9kcyBjYW4gbmV2ZXIgYm90aCBzcGVuZCBvbmUgdGlja2V0LlxuICogLSAqKkNhcHMgY291bnQgTElWRSB0aWNrZXRzKiogKGlzc3VlZCwgbm90IHlldCByZWRlZW1lZCwgbm90IGV4cGlyZWQpIOKAlCBwZXIgb3JnXG4gKiAgIGFuZCBpbiB0b3RhbC4gQSByZWRlZW1lZCBvciBleHBpcmVkIHRpY2tldCBmcmVlcyBpdHMgc2xvdCBpbW1lZGlhdGVseS5cbiAqIC0gKipPd25lcnNoaXAqKiByZWNvcmRzIHdoaWNoIG9yZyBvd25zIGEgc3RyZWFtIHN1YmplY3QsIHNvIGEgc3ViamVjdC1ib3VuZFxuICogICBjaGFubmVsIGNhbiByZWZ1c2UgdG8gbWludCBhIHRpY2tldCBmb3IgYW5vdGhlciBvcmcncyBzdHJlYW0uXG4gKlxuICogQm90aCBiYWNrZW5kcyBzaGFyZSB0aGVzZSBzZW1hbnRpY3M7IHRoZSBpbi1tZW1vcnkgb25lIGlzIGNvcnJlY3QgZm9yIGFcbiAqIHNpbmdsZSBwcm9jZXNzIG9ubHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3NlVGlja2V0U3RvcmUge1xuICAvKiogTWludCBhIHRpY2tldCBmb3IgYG9yZ0lkYCAob3B0aW9uYWxseSBib3VuZCB0byBgc3ViamVjdGApLCBvciByZWplY3Qgd2hlbiBhIGxpdmUtdGlja2V0IGNhcCBpcyByZWFjaGVkLiAqL1xuICBpc3N1ZShvcmdJZDogc3RyaW5nLCBzdWJqZWN0Pzogc3RyaW5nKTogUHJvbWlzZTxTc2VUaWNrZXRJc3N1ZVJlc3VsdD47XG4gIC8qKiBSZWRlZW0gYSB0aWNrZXQgZXhhY3RseSBvbmNlOyBudWxsIHdoZW4gdW5rbm93biwgZXhwaXJlZCBvciBhbHJlYWR5IHNwZW50LiAqL1xuICBjb25zdW1lKHRpY2tldElkOiBzdHJpbmcpOiBQcm9taXNlPFNzZVRpY2tldFJlY29yZCB8IG51bGw+O1xuICAvKiogUmVjb3JkIHRoZSBvcmcgdGhhdCBvd25zIGBzdWJqZWN0YCBmb3IgYHR0bE1zYC4gKi9cbiAgYmluZE93bmVyKHN1YmplY3Q6IHN0cmluZywgb3JnSWQ6IHN0cmluZywgdHRsTXM6IG51bWJlcik6IFByb21pc2U8dm9pZD47XG4gIC8qKiBUaGUgb3JnIHRoYXQgb3ducyBgc3ViamVjdGAsIG9yIG51bGwgd2hlbiBub25lIGlzIGJvdW5kLiBUaHJvd3Mgd2hlbiB0aGUgYmFja2VuZCBjYW4ndCBhbnN3ZXIuICovXG4gIGdldE93bmVyKHN1YmplY3Q6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XG4gIC8qKiBSZWxlYXNlIHRpbWVycy9yZXNvdXJjZXMuIEluLW1lbW9yeSBjbGVhcnMgaXRzIHN3ZWVwIGludGVydmFsOyBSZWRpcyBpcyBhIG5vLW9wLiAqL1xuICBzdG9wKCk6IHZvaWQ7XG59XG5cbi8qKiBDYXBzICsgVFRMIGZvciB0aGUgdGlja2V0IHN0b3JlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTc2VUaWNrZXRTdG9yZUNvbmZpZyB7XG4gIC8qKiBUaWNrZXQgbGlmZXRpbWUg4oCUIGxvbmcgZW5vdWdoIGZvciB0aGUgY2xpZW50IHRvIG9wZW4gdGhlIEV2ZW50U291cmNlLiAqL1xuICB0dGxNczogbnVtYmVyO1xuICAvKiogQ2FwIG9uIExJVkUgdGlja2V0cyBhY3Jvc3MgYWxsIG9yZ3MgKGFidXNlIC8gbWVtb3J5IGJvdW5kKS4gKi9cbiAgbWF4VG90YWw6IG51bWJlcjtcbiAgLyoqIENhcCBvbiBMSVZFIHRpY2tldHMgcGVyIG9yZyAoc2luZ2xlLXRlbmFudCBmYWlybmVzcyBib3VuZCkuICovXG4gIG1heFBlck9yZzogbnVtYmVyO1xuICAvKipcbiAgICogS2V5IG5hbWVzcGFjZSBzbyBpbmRlcGVuZGVudCBjaGFubmVscyAobWVzc2FnZSBub3RpZmljYXRpb25zLCByZXBvcnRpbmdcbiAgICogZXhlY3V0aW9uLXN0YXR1cywgYSBzZXJ2aWNlJ3MgYnVpbGQtbG9nIHN0cmVhbSkgbmV2ZXIgc2hhcmUgdGlja2V0cywgY2Fwc1xuICAgKiBvciBvd25lcnNoaXAgYmluZGluZ3Mg4oCUIGEgdGlja2V0IG1pbnRlZCBmb3Igb25lIGNoYW5uZWwgbXVzdCBub3QgYmVcbiAgICogcmVkZWVtYWJsZSBvbiBhbm90aGVyLiBPbWl0IGZvciB0aGUgZGVmYXVsdCBuYW1lc3BhY2UuXG4gICAqL1xuICBrZXlQcmVmaXg/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIG5ld1RpY2tldElkKCk6IHN0cmluZyB7XG4gIHJldHVybiBjcnlwdG8ucmFuZG9tQnl0ZXMoMjQpLnRvU3RyaW5nKCdiYXNlNjR1cmwnKTtcbn1cblxuLyoqIEluLW1lbW9yeSBiYWNrZW5kIOKAlCBzaW5nbGUtcHJvY2VzcyBmYWxsYmFjayB3aGVuIFJlZGlzIGlzbid0IGNvbmZpZ3VyZWQuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTWVtb3J5U3NlVGlja2V0U3RvcmUoY29uZmlnOiBTc2VUaWNrZXRTdG9yZUNvbmZpZyk6IFNzZVRpY2tldFN0b3JlIHtcbiAgaW50ZXJmYWNlIEVudHJ5IGV4dGVuZHMgU3NlVGlja2V0UmVjb3JkIHsgZXhwaXJlc0F0OiBudW1iZXIgfVxuICBjb25zdCB0aWNrZXRzID0gbmV3IE1hcDxzdHJpbmcsIEVudHJ5PigpO1xuICBjb25zdCBvd25lcnMgPSBuZXcgTWFwPHN0cmluZywgeyBvcmdJZDogc3RyaW5nOyBleHBpcmVzQXQ6IG51bWJlciB9PigpO1xuXG4gIGNvbnN0IHN3ZWVwID0gKCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgZm9yIChjb25zdCBbaWQsIHRdIG9mIHRpY2tldHMpIGlmIChub3cgPj0gdC5leHBpcmVzQXQpIHRpY2tldHMuZGVsZXRlKGlkKTtcbiAgICBmb3IgKGNvbnN0IFtpZCwgb10gb2Ygb3duZXJzKSBpZiAobm93ID49IG8uZXhwaXJlc0F0KSBvd25lcnMuZGVsZXRlKGlkKTtcbiAgfTtcbiAgY29uc3QgdGltZXIgPSBzZXRJbnRlcnZhbChzd2VlcCwgTWF0aC5tYXgoMV8wMDAsIGNvbmZpZy50dGxNcykpO1xuICB0aW1lci51bnJlZigpO1xuXG4gIHJldHVybiB7XG4gICAgYXN5bmMgaXNzdWUob3JnSWQsIHN1YmplY3QpIHtcbiAgICAgIHN3ZWVwKCk7XG4gICAgICBpZiAodGlja2V0cy5zaXplID49IGNvbmZpZy5tYXhUb3RhbCkgcmV0dXJuIHsgb2s6IGZhbHNlLCByZWFzb246ICd0b3RhbCcgfTtcbiAgICAgIGxldCBmb3JPcmcgPSAwO1xuICAgICAgZm9yIChjb25zdCB0IG9mIHRpY2tldHMudmFsdWVzKCkpIGlmICh0Lm9yZ0lkID09PSBvcmdJZCkgZm9yT3JnKys7XG4gICAgICBpZiAoZm9yT3JnID49IGNvbmZpZy5tYXhQZXJPcmcpIHJldHVybiB7IG9rOiBmYWxzZSwgcmVhc29uOiAnb3JnJyB9O1xuICAgICAgY29uc3QgdGlja2V0ID0gbmV3VGlja2V0SWQoKTtcbiAgICAgIHRpY2tldHMuc2V0KHRpY2tldCwgeyBvcmdJZCwgLi4uKHN1YmplY3QgIT09IHVuZGVmaW5lZCAmJiB7IHN1YmplY3QgfSksIGV4cGlyZXNBdDogRGF0ZS5ub3coKSArIGNvbmZpZy50dGxNcyB9KTtcbiAgICAgIHJldHVybiB7IG9rOiB0cnVlLCB0aWNrZXQgfTtcbiAgICB9LFxuICAgIGFzeW5jIGNvbnN1bWUodGlja2V0SWQpIHtcbiAgICAgIGNvbnN0IHQgPSB0aWNrZXRzLmdldCh0aWNrZXRJZCk7XG4gICAgICB0aWNrZXRzLmRlbGV0ZSh0aWNrZXRJZCk7IC8vIHNpbmdsZS11c2Ug4oCUIGdvbmUgd2hldGhlciBvciBub3QgaXQgd2FzIHZhbGlkXG4gICAgICBpZiAoIXQgfHwgRGF0ZS5ub3coKSA+PSB0LmV4cGlyZXNBdCkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4geyBvcmdJZDogdC5vcmdJZCwgLi4uKHQuc3ViamVjdCAhPT0gdW5kZWZpbmVkICYmIHsgc3ViamVjdDogdC5zdWJqZWN0IH0pIH07XG4gICAgfSxcbiAgICBhc3luYyBiaW5kT3duZXIoc3ViamVjdCwgb3JnSWQsIHR0bE1zKSB7XG4gICAgICBvd25lcnMuc2V0KHN1YmplY3QsIHsgb3JnSWQsIGV4cGlyZXNBdDogRGF0ZS5ub3coKSArIHR0bE1zIH0pO1xuICAgIH0sXG4gICAgYXN5bmMgZ2V0T3duZXIoc3ViamVjdCkge1xuICAgICAgY29uc3QgbyA9IG93bmVycy5nZXQoc3ViamVjdCk7XG4gICAgICBpZiAoIW8pIHJldHVybiBudWxsO1xuICAgICAgaWYgKERhdGUubm93KCkgPj0gby5leHBpcmVzQXQpIHsgb3duZXJzLmRlbGV0ZShzdWJqZWN0KTsgcmV0dXJuIG51bGw7IH1cbiAgICAgIHJldHVybiBvLm9yZ0lkO1xuICAgIH0sXG4gICAgc3RvcCgpIHsgY2xlYXJJbnRlcnZhbCh0aW1lcik7IH0sXG4gIH07XG59XG5cbi8qKiBNaW5pbWFsIGlvcmVkaXMgc3VyZmFjZSB0aGUgUmVkaXMgYmFja2VuZCBuZWVkcyAoR0VUREVMIHJlcXVpcmVzIFJlZGlzIOKJpSA2LjIpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTc2VUaWNrZXRSZWRpcyBleHRlbmRzIFJlYWR5QXdhcmVSZWRpcyB7XG4gIGV2YWwoc2NyaXB0OiBzdHJpbmcsIG51bUtleXM6IG51bWJlciwgLi4uYXJnczogKHN0cmluZyB8IG51bWJlcilbXSk6IFByb21pc2U8dW5rbm93bj47XG4gIGdldGRlbChrZXk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XG4gIHpyZW0oa2V5OiBzdHJpbmcsIC4uLm1lbWJlcnM6IHN0cmluZ1tdKTogUHJvbWlzZTxudW1iZXI+O1xuICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIC4uLmFyZ3M6IChzdHJpbmcgfCBudW1iZXIpW10pOiBQcm9taXNlPHVua25vd24+O1xuICBnZXQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xufVxuXG4vKipcbiAqIEF0b21pYyBsaXZlLWNvdW50IGlzc3VlLiBQcnVuZXMgZXhwaXJlZCBtZW1iZXJzIGZyb20gYm90aCBjYXAgc2V0cywgY2hlY2tzIHRoZVxuICogdG90YWwgdGhlbiB0aGUgcGVyLW9yZyBjYXAsIGFuZCBvbmx5IHRoZW4gc3RvcmVzIHRoZSB0aWNrZXQgYW5kIHJlY29yZHMgaXQgaW5cbiAqIGJvdGggc2V0cyDigJQgc28gY29uY3VycmVudCBtaW50cyBjYW4ndCBvdmVyc2hvb3QgYSBjYXAgYW5kIGEgY2FwIGNhbiBuZXZlclxuICogc3RpY2sgKGV2ZXJ5IG1lbWJlciBjYXJyaWVzIGl0cyBvd24gZXhwaXJ5IHNjb3JlIGFuZCBldmVyeSBrZXkgYSBUVEwpLlxuICpcbiAqIEtFWVM6IHRvdGFsIHpzZXQsIG9yZyB6c2V0LCB0aWNrZXQga2V5LlxuICogQVJHVjogdHRsTXMsIG1heFRvdGFsLCBtYXhQZXJPcmcsIHRpY2tldElkLCByZWNvcmQgSlNPTi5cbiAqIFVzZXMgdGhlIHNlcnZlciBjbG9jayBzbyBldmVyeSBwb2QgYWdyZWVzIG9uIFwiZXhwaXJlZFwiLlxuICovXG5jb25zdCBJU1NVRV9TQ1JJUFQgPSBgXG5sb2NhbCB0ID0gcmVkaXMuY2FsbCgnVElNRScpXG5sb2NhbCBub3cgPSB0b251bWJlcih0WzFdKSAqIDEwMDAgKyBtYXRoLmZsb29yKHRvbnVtYmVyKHRbMl0pIC8gMTAwMClcbmxvY2FsIHR0bCA9IHRvbnVtYmVyKEFSR1ZbMV0pXG5yZWRpcy5jYWxsKCdaUkVNUkFOR0VCWVNDT1JFJywgS0VZU1sxXSwgJy1pbmYnLCBub3cpXG5yZWRpcy5jYWxsKCdaUkVNUkFOR0VCWVNDT1JFJywgS0VZU1syXSwgJy1pbmYnLCBub3cpXG5pZiByZWRpcy5jYWxsKCdaQ0FSRCcsIEtFWVNbMV0pID49IHRvbnVtYmVyKEFSR1ZbMl0pIHRoZW4gcmV0dXJuICd0b3RhbCcgZW5kXG5pZiByZWRpcy5jYWxsKCdaQ0FSRCcsIEtFWVNbMl0pID49IHRvbnVtYmVyKEFSR1ZbM10pIHRoZW4gcmV0dXJuICdvcmcnIGVuZFxucmVkaXMuY2FsbCgnU0VUJywgS0VZU1szXSwgQVJHVls1XSwgJ1BYJywgdHRsKVxucmVkaXMuY2FsbCgnWkFERCcsIEtFWVNbMV0sIG5vdyArIHR0bCwgQVJHVls0XSlcbnJlZGlzLmNhbGwoJ1pBREQnLCBLRVlTWzJdLCBub3cgKyB0dGwsIEFSR1ZbNF0pXG5yZWRpcy5jYWxsKCdQRVhQSVJFJywgS0VZU1sxXSwgdHRsKVxucmVkaXMuY2FsbCgnUEVYUElSRScsIEtFWVNbMl0sIHR0bClcbnJldHVybiAnb2snYDtcblxuLyoqXG4gKiBSZWRpcyBiYWNrZW5kIOKAlCBtdWx0aS1yZXBsaWNhIHNhZmUuXG4gKlxuICogRmFpbC1DTE9TRUQ6IGEgUmVkaXMgZXJyb3IgbWFrZXMgYGlzc3VlYCByZWplY3QgKGB0b3RhbGApLCBgY29uc3VtZWAgcmV0dXJuXG4gKiBudWxsIGFuZCBgZ2V0T3duZXJgIHRocm93LCBzbyBhbiBvdXRhZ2UgZGVncmFkZXMgdG8gXCJubyBsaXZlIHN0cmVhbVwiIHJhdGhlclxuICogdGhhbiBoYW5kaW5nIG91dCBvciBhY2NlcHRpbmcgdW52YWxpZGF0ZWQgdGlja2V0cy4gYGJpbmRPd25lcmAgaXMgYmVzdC1lZmZvcnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWRpc1NzZVRpY2tldFN0b3JlKHJlZGlzOiBTc2VUaWNrZXRSZWRpcywgY29uZmlnOiBTc2VUaWNrZXRTdG9yZUNvbmZpZyk6IFNzZVRpY2tldFN0b3JlIHtcbiAgY29uc3QgbnMgPSBjb25maWcua2V5UHJlZml4ID8gYCR7Y29uZmlnLmtleVByZWZpeH06YCA6ICcnO1xuICBjb25zdCB0aWNrZXRLZXkgPSAodDogc3RyaW5nKSA9PiBgJHtuc31zc2U6dGs6JHt0fWA7XG4gIGNvbnN0IG9yZ1NldEtleSA9IChvOiBzdHJpbmcpID0+IGAke25zfXNzZTp0a3o6b3JnOiR7b31gO1xuICBjb25zdCB0b3RhbFNldEtleSA9IGAke25zfXNzZTp0a3o6YWxsYDtcbiAgY29uc3Qgb3duZXJLZXkgPSAoczogc3RyaW5nKSA9PiBgJHtuc31zc2U6b3duZXI6JHtzfWA7XG4gIGNvbnN0IHR0bE1zID0gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKGNvbmZpZy50dGxNcykpO1xuICAvLyBUaGUgZW52IGNsaWVudCBoYXMgbm8gb2ZmbGluZSBxdWV1ZTogd2FpdCAoYm91bmRlZCkgZm9yIHRoZSBmaXJzdCBjb25uZWN0aW9uXG4gIC8vIHNvIHRoZSBmaXJzdCBtaW50L3JlZGVlbSBhZnRlciBib290IGlzbid0IHJlamVjdGVkIG91dHJpZ2h0LlxuICBjb25zdCByZWFkeSA9IGNyZWF0ZVJlZGlzUmVhZHlHYXRlKHJlZGlzKTtcblxuICByZXR1cm4ge1xuICAgIGFzeW5jIGlzc3VlKG9yZ0lkLCBzdWJqZWN0KSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCByZWFkeSgpO1xuICAgICAgICBjb25zdCB0aWNrZXQgPSBuZXdUaWNrZXRJZCgpO1xuICAgICAgICBjb25zdCByZWNvcmQ6IFNzZVRpY2tldFJlY29yZCA9IHsgb3JnSWQsIC4uLihzdWJqZWN0ICE9PSB1bmRlZmluZWQgJiYgeyBzdWJqZWN0IH0pIH07XG4gICAgICAgIGNvbnN0IG91dGNvbWUgPSBhd2FpdCByZWRpcy5ldmFsKFxuICAgICAgICAgIElTU1VFX1NDUklQVCwgMywgdG90YWxTZXRLZXksIG9yZ1NldEtleShvcmdJZCksIHRpY2tldEtleSh0aWNrZXQpLFxuICAgICAgICAgIHR0bE1zLCBjb25maWcubWF4VG90YWwsIGNvbmZpZy5tYXhQZXJPcmcsIHRpY2tldCwgSlNPTi5zdHJpbmdpZnkocmVjb3JkKSxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKG91dGNvbWUgPT09ICdvaycpIHJldHVybiB7IG9rOiB0cnVlLCB0aWNrZXQgfTtcbiAgICAgICAgcmV0dXJuIHsgb2s6IGZhbHNlLCByZWFzb246IG91dGNvbWUgPT09ICdvcmcnID8gJ29yZycgOiAndG90YWwnIH07XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ1NTRSB0aWNrZXQgaXNzdWUgZmFpbGVkIChmYWlsLWNsb3NlZCknLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgICAgcmV0dXJuIHsgb2s6IGZhbHNlLCByZWFzb246ICd0b3RhbCcgfTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIGNvbnN1bWUodGlja2V0SWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHJlYWR5KCk7XG4gICAgICAgIGNvbnN0IHJhdyA9IGF3YWl0IHJlZGlzLmdldGRlbCh0aWNrZXRLZXkodGlja2V0SWQpKTtcbiAgICAgICAgaWYgKCFyYXcpIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCByZWMgPSBKU09OLnBhcnNlKHJhdykgYXMgU3NlVGlja2V0UmVjb3JkO1xuICAgICAgICBpZiAodHlwZW9mIHJlYz8ub3JnSWQgIT09ICdzdHJpbmcnKSByZXR1cm4gbnVsbDtcbiAgICAgICAgLy8gRnJlZSB0aGUgbGl2ZS1jb3VudCBzbG90cyBub3cgcmF0aGVyIHRoYW4gYXQgZXhwaXJ5LiBCZXN0LWVmZm9ydDogYVxuICAgICAgICAvLyBmYWlsdXJlIGhlcmUgb25seSBkZWxheXMgdGhlIHNsb3QgdW50aWwgdGhlIG1lbWJlcidzIGV4cGlyeSBzY29yZS5cbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW3JlZGlzLnpyZW0ob3JnU2V0S2V5KHJlYy5vcmdJZCksIHRpY2tldElkKSwgcmVkaXMuenJlbSh0b3RhbFNldEtleSwgdGlja2V0SWQpXSlcbiAgICAgICAgICAuY2F0Y2goKGVycjogdW5rbm93bikgPT4gbG9nZ2VyLmRlYnVnKCdTU0UgdGlja2V0IHNsb3QgcmVsZWFzZSBmYWlsZWQnLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KSk7XG4gICAgICAgIHJldHVybiByZWM7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ1NTRSB0aWNrZXQgY29uc3VtZSBmYWlsZWQgKGZhaWwtY2xvc2VkKScsIHsgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpIH0pO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIGJpbmRPd25lcihzdWJqZWN0LCBvcmdJZCwgb3duZXJUdGxNcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgcmVhZHkoKTtcbiAgICAgICAgYXdhaXQgcmVkaXMuc2V0KG93bmVyS2V5KHN1YmplY3QpLCBvcmdJZCwgJ1BYJywgTWF0aC5tYXgoMSwgTWF0aC5jZWlsKG93bmVyVHRsTXMpKSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ1NTRSBzdHJlYW0tb3duZXIgYmluZCBmYWlsZWQnLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIGdldE93bmVyKHN1YmplY3QpIHtcbiAgICAgIGF3YWl0IHJlYWR5KCk7XG4gICAgICByZXR1cm4gcmVkaXMuZ2V0KG93bmVyS2V5KHN1YmplY3QpKTtcbiAgICB9LFxuICAgIHN0b3AoKSB7IC8qIGtleXMgZXhwaXJlIG9uIHRoZWlyIG93biBUVEwgKi8gfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBUaGUgZGVwbG95LXdpZGUgdGlja2V0IGNhcHM6IGBTU0VfTUFYX1RPVEFMX1RJQ0tFVFNgIChkZWZhdWx0IDEwMDApIGFuZFxuICogYFNTRV9NQVhfVElDS0VUU19QRVJfT1JHYCAoZGVmYXVsdCAxMCkuIE9uZSByZWFkZXIgc28gZXZlcnkgY2hhbm5lbCBwYXJzZXNcbiAqIHRoZW0gdGhlIHNhbWUgd2F5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW52U3NlVGlja2V0Q2FwcygpOiBQaWNrPFNzZVRpY2tldFN0b3JlQ29uZmlnLCAnbWF4VG90YWwnIHwgJ21heFBlck9yZyc+IHtcbiAgcmV0dXJuIHtcbiAgICBtYXhUb3RhbDogZW52SW50KCdTU0VfTUFYX1RPVEFMX1RJQ0tFVFMnLCAxMDAwLCB7IG1pbjogMSB9KSxcbiAgICBtYXhQZXJPcmc6IGVudkludCgnU1NFX01BWF9USUNLRVRTX1BFUl9PUkcnLCAxMCwgeyBtaW46IDEgfSksXG4gIH07XG59XG5cbi8qKiB7QGxpbmsgY3JlYXRlRW52U3NlVGlja2V0U3RvcmV9IGNvbmZpZzogdGhlIGNhcHMgZGVmYXVsdCB0byB7QGxpbmsgZW52U3NlVGlja2V0Q2Fwc30uICovXG5leHBvcnQgdHlwZSBFbnZTc2VUaWNrZXRTdG9yZUNvbmZpZyA9IE9taXQ8U3NlVGlja2V0U3RvcmVDb25maWcsICdtYXhUb3RhbCcgfCAnbWF4UGVyT3JnJz5cbiAgJiBQYXJ0aWFsPFBpY2s8U3NlVGlja2V0U3RvcmVDb25maWcsICdtYXhUb3RhbCcgfCAnbWF4UGVyT3JnJz4+O1xuXG4vKipcbiAqIEJ1aWxkIGFuIHtAbGluayBTc2VUaWNrZXRTdG9yZX0gZnJvbSB0aGUgc3RhbmRhcmQgUmVkaXMgZW52IChgUkVESVNfVVJMYCBvclxuICogYFJFRElTX1NFTlRJTkVMU2ApOiB0aGUgUmVkaXMgYmFja2VuZCB3aGVuIGNvbmZpZ3VyZWQgKG11bHRpLXJlcGxpY2Egc2FmZSksXG4gKiBvdGhlcndpc2UgdGhlIGluLW1lbW9yeSBzaW5nbGUtcHJvY2VzcyBiYWNrZW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRW52U3NlVGlja2V0U3RvcmUob3B0aW9uczogRW52U3NlVGlja2V0U3RvcmVDb25maWcpOiBTc2VUaWNrZXRTdG9yZSB7XG4gIGNvbnN0IGNhcHMgPSBlbnZTc2VUaWNrZXRDYXBzKCk7XG4gIGNvbnN0IGNvbmZpZzogU3NlVGlja2V0U3RvcmVDb25maWcgPSB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBtYXhUb3RhbDogb3B0aW9ucy5tYXhUb3RhbCA/PyBjYXBzLm1heFRvdGFsLFxuICAgIG1heFBlck9yZzogb3B0aW9ucy5tYXhQZXJPcmcgPz8gY2Fwcy5tYXhQZXJPcmcsXG4gIH07XG4gIGNvbnN0IHJlZGlzID0gY3JlYXRlRW52UmVkaXNDbGllbnQ8U3NlVGlja2V0UmVkaXM+KCdzc2UtdGlja2V0Jyk7XG4gIGlmIChyZWRpcykge1xuICAgIGxvZ2dlci5pbmZvKCdTU0UgdGlja2V0IHN0b3JlOiBSZWRpcyBiYWNrZW5kIChtdWx0aS1yZXBsaWNhKScsIHsga2V5UHJlZml4OiBjb25maWcua2V5UHJlZml4IH0pO1xuICAgIHJldHVybiBjcmVhdGVSZWRpc1NzZVRpY2tldFN0b3JlKHJlZGlzLCBjb25maWcpO1xuICB9XG4gIGxvZ2dlci5pbmZvKCdTU0UgdGlja2V0IHN0b3JlOiBpbi1tZW1vcnkgYmFja2VuZCAoc2luZ2xlLXByb2Nlc3MgZmFsbGJhY2spJywgeyBrZXlQcmVmaXg6IGNvbmZpZy5rZXlQcmVmaXggfSk7XG4gIHJldHVybiBjcmVhdGVNZW1vcnlTc2VUaWNrZXRTdG9yZShjb25maWcpO1xufVxuIl19
@@ -47,4 +47,4 @@ export async function sendSystemNotification(notification, opts = {}) {
47
47
  return false;
48
48
  }
49
49
  }
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLW5vdGlmaWNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9zeXN0ZW0tbm90aWZpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBR3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRS9ELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBRW5ELG1FQUFtRTtBQUNuRSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRywyQkFBMkIsQ0FBQztBQVc5RDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxzQkFBc0IsQ0FDMUMsWUFBZ0MsRUFDaEMsSUFBSSxHQUFzRCxFQUFFO0lBRTVELElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsTUFBTSxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLFlBQVksRUFBRTtZQUNqRSxPQUFPLEVBQUU7Z0JBQ1AsYUFBYSxFQUFFLG9CQUFvQixDQUFDO29CQUNsQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsSUFBSSxlQUFlLEVBQUU7b0JBQ2xELEtBQUssRUFBRSxZQUFZLENBQUMsY0FBYztvQkFDbEMsSUFBSSxFQUFFLFFBQVE7aUJBQ2YsQ0FBQzthQUNIO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsNkVBQTZFO1FBQzdFLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsVUFBVSxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQzNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUNBQW1DLEVBQUU7Z0JBQy9DLGNBQWMsRUFBRSxZQUFZLENBQUMsY0FBYztnQkFDM0MsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLElBQUksYUFBYTthQUNoRCxDQUFDLENBQUM7WUFDSCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLGNBQWMsRUFBRSxZQUFZLENBQUMsY0FBYyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgY3JlYXRlU2FmZUNsaWVudCB9IGZyb20gJy4vaHR0cC1jbGllbnQuanMnO1xuaW1wb3J0IHsgc2VydmljZUlkZW50aXR5IH0gZnJvbSAnLi9zZXJ2aWNlLWtleXMuanMnO1xuaW1wb3J0IHsgZ2V0U2VydmljZUF1dGhIZWFkZXIgfSBmcm9tICcuLi9taWRkbGV3YXJlL3NlcnZpY2UtdG9rZW5zLmpzJztcbmltcG9ydCB0eXBlIHsgU2VydmljZUNvbmZpZyB9IGZyb20gJy4uL3R5cGVzL2NvbW1vbi5qcyc7XG5pbXBvcnQgdHlwZSB7IE1lc3NhZ2VQcmlvcml0eSB9IGZyb20gJy4uL3R5cGVzL3dpcmUtdm9jYWJ1bGFyeS5qcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vdXRpbHMvcmVzcG9uc2UuanMnO1xuaW1wb3J0IHsgc2VydmljZUVuZHBvaW50IH0gZnJvbSAnLi4vdXRpbHMvc2VydmljZS1yZWdpc3RyeS5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignc3lzdGVtLW5vdGlmaWNhdGlvbicpO1xuXG4vKiogVGhlIG1lc3NhZ2Ugc2VydmljZSdzIHNlcnZpY2UtdG8tc2VydmljZSBub3RpZmljYXRpb24gcm91dGUuICovXG5leHBvcnQgY29uc3QgU1lTVEVNX05PVElGWV9QQVRIID0gJy9tZXNzYWdlcy9pbnRlcm5hbC9ub3RpZnknO1xuXG4vKiogQSBTWVNURU0tYXV0aG9yZWQgaW4tYXBwIG1lc3NhZ2UgZm9yIGEgcmVjaXBpZW50IG9yZywgb3B0aW9uYWxseSBvbmUgdXNlci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3lzdGVtTm90aWZpY2F0aW9uIHtcbiAgcmVjaXBpZW50T3JnSWQ6IHN0cmluZztcbiAgcmVjaXBpZW50VXNlcklkPzogc3RyaW5nO1xuICBzdWJqZWN0OiBzdHJpbmc7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgcHJpb3JpdHk/OiBNZXNzYWdlUHJpb3JpdHk7XG59XG5cbi8qKlxuICogRHJvcCBhIFNZU1RFTS1hdXRob3JlZCBtZXNzYWdlIGludG8gYSByZWNpcGllbnQgb3JnJ3MgaW5ib3ggdmlhIHRoZSBtZXNzYWdlXG4gKiBzZXJ2aWNlJ3MgaW50ZXJuYWwgbm90aWZ5IHJvdXRlICh3aGljaCBhbHNvIHB1c2hlcyB0aGUgcmVhbC10aW1lIFNTRSBwaW5nKS5cbiAqIEF1dGhlbnRpY2F0ZXMgd2l0aCB0aGlzIHByb2Nlc3MncyBzaWduZWQgc2VydmljZSB0b2tlbiwgc2NvcGVkIHRvIHRoZVxuICogcmVjaXBpZW50IG9yZy5cbiAqXG4gKiBSRVBPUlRTIHdoZXRoZXIgdGhlIG1lc3NhZ2Ugd2FzIHBlcnNpc3RlZDogdHJ1ZSBvbmx5IG9uIGEgMnh4LiBOZXZlciB0aHJvd3Mg4oCUXG4gKiBhbiB1bnJlYWNoYWJsZSBzZXJ2aWNlIG9yIGEgcmVmdXNhbCBpcyBsb2dnZWQgYW5kIHJldHVybnMgZmFsc2UsIHNvIGEgY2FsbGVyXG4gKiB3aG9zZSBub24tZGVsaXZlcnkgY29zdHMgc29tZXRoaW5nIChhIHJldHJpZWQgcmVtaW5kZXIsIGEgbm90aWZpY2F0aW9uIGxvZylcbiAqIGNhbiBhY3Qgb24gaXQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kU3lzdGVtTm90aWZpY2F0aW9uKFxuICBub3RpZmljYXRpb246IFN5c3RlbU5vdGlmaWNhdGlvbixcbiAgb3B0czogeyBzZXJ2aWNlPzogU2VydmljZUNvbmZpZzsgc2VydmljZU5hbWU/OiBzdHJpbmcgfSA9IHt9LFxuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgY2xpZW50ID0gY3JlYXRlU2FmZUNsaWVudChvcHRzLnNlcnZpY2UgPz8gc2VydmljZUVuZHBvaW50KCdtZXNzYWdlJykpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNsaWVudC5wb3N0KFNZU1RFTV9OT1RJRllfUEFUSCwgbm90aWZpY2F0aW9uLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIGF1dGhvcml6YXRpb246IGdldFNlcnZpY2VBdXRoSGVhZGVyKHtcbiAgICAgICAgICBzZXJ2aWNlTmFtZTogb3B0cy5zZXJ2aWNlTmFtZSA/PyBzZXJ2aWNlSWRlbnRpdHkoKSxcbiAgICAgICAgICBvcmdJZDogbm90aWZpY2F0aW9uLnJlY2lwaWVudE9yZ0lkLFxuICAgICAgICAgIHJvbGU6ICdtZW1iZXInLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgLy8gVGhlIHNhZmUgY2xpZW50IHJlc29sdmVzIG51bGwgb24gYSB0cmFuc3BvcnQgZmFpbHVyZSByYXRoZXIgdGhhbiB0aHJvd2luZy5cbiAgICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHJlc3VsdC5zdGF0dXNDb2RlIDwgMjAwIHx8IHJlc3VsdC5zdGF0dXNDb2RlID49IDMwMCkge1xuICAgICAgbG9nZ2VyLndhcm4oJ1N5c3RlbSBub3RpZmljYXRpb24gbm90IGRlbGl2ZXJlZCcsIHtcbiAgICAgICAgcmVjaXBpZW50T3JnSWQ6IG5vdGlmaWNhdGlvbi5yZWNpcGllbnRPcmdJZCxcbiAgICAgICAgc3RhdHVzQ29kZTogcmVzdWx0Py5zdGF0dXNDb2RlID8/ICd1bnJlYWNoYWJsZScsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci53YXJuKCdTeXN0ZW0gbm90aWZpY2F0aW9uIGZhaWxlZCcsIHsgcmVjaXBpZW50T3JnSWQ6IG5vdGlmaWNhdGlvbi5yZWNpcGllbnRPcmdJZCwgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLW5vdGlmaWNhdGlvbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3N5c3RlbS1ub3RpZmljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFL0QsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFFbkQsbUVBQW1FO0FBQ25FLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLDJCQUEyQixDQUFDO0FBVzlEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLHNCQUFzQixDQUMxQyxZQUFnQyxFQUNoQyxJQUFJLEdBQXNELEVBQUU7SUFFNUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM1RSxNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsWUFBWSxFQUFFO1lBQ2pFLE9BQU8sRUFBRTtnQkFDUCxhQUFhLEVBQUUsb0JBQW9CLENBQUM7b0JBQ2xDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLGVBQWUsRUFBRTtvQkFDbEQsS0FBSyxFQUFFLFlBQVksQ0FBQyxjQUFjO29CQUNsQyxJQUFJLEVBQUUsUUFBUTtpQkFDZixDQUFDO2FBQ0g7U0FDRixDQUFDLENBQUM7UUFDSCw2RUFBNkU7UUFDN0UsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxVQUFVLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxVQUFVLElBQUksR0FBRyxFQUFFLENBQUM7WUFDM0UsTUFBTSxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsRUFBRTtnQkFDL0MsY0FBYyxFQUFFLFlBQVksQ0FBQyxjQUFjO2dCQUMzQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVUsSUFBSSxhQUFhO2FBQ2hELENBQUMsQ0FBQztZQUNILE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLEVBQUUsY0FBYyxFQUFFLFlBQVksQ0FBQyxjQUFjLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckgsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBjcmVhdGVTYWZlQ2xpZW50IH0gZnJvbSAnLi9odHRwLWNsaWVudC5qcyc7XG5pbXBvcnQgeyBzZXJ2aWNlSWRlbnRpdHkgfSBmcm9tICcuL3NlcnZpY2Uta2V5cy5qcyc7XG5pbXBvcnQgeyBnZXRTZXJ2aWNlQXV0aEhlYWRlciB9IGZyb20gJy4uL21pZGRsZXdhcmUvc2VydmljZS10b2tlbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMvY29tbW9uLmpzJztcbmltcG9ydCB0eXBlIHsgTWVzc2FnZVByaW9yaXR5IH0gZnJvbSAnLi4vdHlwZXMvd2lyZS12b2NhYnVsYXJ5LmpzJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS5qcyc7XG5pbXBvcnQgeyBzZXJ2aWNlRW5kcG9pbnQgfSBmcm9tICcuLi91dGlscy9zZXJ2aWNlLXJlZ2lzdHJ5LmpzJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdzeXN0ZW0tbm90aWZpY2F0aW9uJyk7XG5cbi8qKiBUaGUgbWVzc2FnZSBzZXJ2aWNlJ3Mgc2VydmljZS10by1zZXJ2aWNlIG5vdGlmaWNhdGlvbiByb3V0ZS4gKi9cbmV4cG9ydCBjb25zdCBTWVNURU1fTk9USUZZX1BBVEggPSAnL21lc3NhZ2VzL2ludGVybmFsL25vdGlmeSc7XG5cbi8qKiBBIFNZU1RFTS1hdXRob3JlZCBpbi1hcHAgbWVzc2FnZSBmb3IgYSByZWNpcGllbnQgb3JnLCBvcHRpb25hbGx5IG9uZSB1c2VyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTeXN0ZW1Ob3RpZmljYXRpb24ge1xuICByZWNpcGllbnRPcmdJZDogc3RyaW5nO1xuICByZWNpcGllbnRVc2VySWQ/OiBzdHJpbmc7XG4gIHN1YmplY3Q6IHN0cmluZztcbiAgY29udGVudDogc3RyaW5nO1xuICBwcmlvcml0eT86IE1lc3NhZ2VQcmlvcml0eTtcbn1cblxuLyoqXG4gKiBEcm9wIGEgU1lTVEVNLWF1dGhvcmVkIG1lc3NhZ2UgaW50byBhIHJlY2lwaWVudCBvcmcncyBpbmJveCB2aWEgdGhlIG1lc3NhZ2VcbiAqIHNlcnZpY2UncyBpbnRlcm5hbCBub3RpZnkgcm91dGUgKHdoaWNoIGFsc28gcHVzaGVzIHRoZSByZWFsLXRpbWUgU1NFIHBpbmcpLlxuICogQXV0aGVudGljYXRlcyB3aXRoIHRoaXMgcHJvY2VzcydzIHNpZ25lZCBzZXJ2aWNlIHRva2VuLCBzY29wZWQgdG8gdGhlXG4gKiByZWNpcGllbnQgb3JnLlxuICpcbiAqIFJFUE9SVFMgd2hldGhlciB0aGUgbWVzc2FnZSB3YXMgcGVyc2lzdGVkOiB0cnVlIG9ubHkgb24gYSAyeHguIE5ldmVyIHRocm93cyDigJRcbiAqIGFuIHVucmVhY2hhYmxlIHNlcnZpY2Ugb3IgYSByZWZ1c2FsIGlzIGxvZ2dlZCBhbmQgcmV0dXJucyBmYWxzZSwgc28gYSBjYWxsZXJcbiAqIHdob3NlIG5vbi1kZWxpdmVyeSBjb3N0cyBzb21ldGhpbmcgKGEgcmV0cmllZCByZW1pbmRlciwgYSBub3RpZmljYXRpb24gbG9nKVxuICogY2FuIGFjdCBvbiBpdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRTeXN0ZW1Ob3RpZmljYXRpb24oXG4gIG5vdGlmaWNhdGlvbjogU3lzdGVtTm90aWZpY2F0aW9uLFxuICBvcHRzOiB7IHNlcnZpY2U/OiBTZXJ2aWNlQ29uZmlnOyBzZXJ2aWNlTmFtZT86IHN0cmluZyB9ID0ge30sXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBjbGllbnQgPSBjcmVhdGVTYWZlQ2xpZW50KG9wdHMuc2VydmljZSA/PyBzZXJ2aWNlRW5kcG9pbnQoJ21lc3NhZ2UnKSk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY2xpZW50LnBvc3QoU1lTVEVNX05PVElGWV9QQVRILCBub3RpZmljYXRpb24sIHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgYXV0aG9yaXphdGlvbjogZ2V0U2VydmljZUF1dGhIZWFkZXIoe1xuICAgICAgICAgIHNlcnZpY2VOYW1lOiBvcHRzLnNlcnZpY2VOYW1lID8/IHNlcnZpY2VJZGVudGl0eSgpLFxuICAgICAgICAgIG9yZ0lkOiBub3RpZmljYXRpb24ucmVjaXBpZW50T3JnSWQsXG4gICAgICAgICAgcm9sZTogJ21lbWJlcicsXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICAvLyBUaGUgc2FmZSBjbGllbnQgcmVzb2x2ZXMgbnVsbCBvbiBhIHRyYW5zcG9ydCBmYWlsdXJlIHJhdGhlciB0aGFuIHRocm93aW5nLlxuICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgcmVzdWx0LnN0YXR1c0NvZGUgPCAyMDAgfHwgcmVzdWx0LnN0YXR1c0NvZGUgPj0gMzAwKSB7XG4gICAgICBsb2dnZXIud2FybignU3lzdGVtIG5vdGlmaWNhdGlvbiBub3QgZGVsaXZlcmVkJywge1xuICAgICAgICByZWNpcGllbnRPcmdJZDogbm90aWZpY2F0aW9uLnJlY2lwaWVudE9yZ0lkLFxuICAgICAgICBzdGF0dXNDb2RlOiByZXN1bHQ/LnN0YXR1c0NvZGUgPz8gJ3VucmVhY2hhYmxlJyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLndhcm4oJ1N5c3RlbSBub3RpZmljYXRpb24gZmFpbGVkJywgeyByZWNpcGllbnRPcmdJZDogbm90aWZpY2F0aW9uLnJlY2lwaWVudE9yZ0lkLCBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=