@effect-aws/client-ses 1.1.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/Errors/package.json +6 -0
  2. package/SESClientInstance/package.json +6 -0
  3. package/SESService/package.json +6 -0
  4. package/SESServiceConfig/package.json +6 -0
  5. package/{lib → dist/cjs}/Errors.d.ts +6 -11
  6. package/dist/cjs/Errors.d.ts.map +1 -0
  7. package/dist/cjs/Errors.js +42 -0
  8. package/dist/cjs/Errors.js.map +1 -0
  9. package/dist/cjs/SESClientInstance.d.ts +24 -0
  10. package/dist/cjs/SESClientInstance.d.ts.map +1 -0
  11. package/dist/cjs/SESClientInstance.js +50 -0
  12. package/dist/cjs/SESClientInstance.js.map +1 -0
  13. package/{lib → dist/cjs}/SESService.d.ts +16 -38
  14. package/dist/cjs/SESService.d.ts.map +1 -0
  15. package/dist/cjs/SESService.js +127 -0
  16. package/dist/cjs/SESService.js.map +1 -0
  17. package/dist/cjs/SESServiceConfig.d.ts +25 -0
  18. package/dist/cjs/SESServiceConfig.d.ts.map +1 -0
  19. package/dist/cjs/SESServiceConfig.js +35 -0
  20. package/dist/cjs/SESServiceConfig.js.map +1 -0
  21. package/dist/cjs/index.d.ts +39 -0
  22. package/dist/cjs/index.d.ts.map +1 -0
  23. package/dist/cjs/index.js +56 -0
  24. package/dist/cjs/index.js.map +1 -0
  25. package/dist/dts/Errors.d.ts +41 -0
  26. package/dist/dts/Errors.d.ts.map +1 -0
  27. package/dist/dts/SESClientInstance.d.ts +24 -0
  28. package/dist/dts/SESClientInstance.d.ts.map +1 -0
  29. package/dist/dts/SESService.d.ts +398 -0
  30. package/dist/dts/SESService.d.ts.map +1 -0
  31. package/dist/dts/SESServiceConfig.d.ts +25 -0
  32. package/dist/dts/SESServiceConfig.d.ts.map +1 -0
  33. package/dist/dts/index.d.ts +39 -0
  34. package/dist/dts/index.d.ts.map +1 -0
  35. package/dist/esm/Errors.js +39 -0
  36. package/dist/esm/Errors.js.map +1 -0
  37. package/dist/esm/SESClientInstance.js +23 -0
  38. package/dist/esm/SESClientInstance.js.map +1 -0
  39. package/dist/esm/SESService.js +100 -0
  40. package/dist/esm/SESService.js.map +1 -0
  41. package/dist/esm/SESServiceConfig.js +31 -0
  42. package/dist/esm/SESServiceConfig.js.map +1 -0
  43. package/dist/esm/index.js +27 -0
  44. package/dist/esm/index.js.map +1 -0
  45. package/dist/esm/package.json +4 -0
  46. package/package.json +60 -43
  47. package/src/Errors.ts +119 -0
  48. package/src/SESClientInstance.ts +33 -0
  49. package/src/SESService.ts +1228 -0
  50. package/src/SESServiceConfig.ts +51 -0
  51. package/src/index.ts +44 -0
  52. package/CHANGELOG.md +0 -13
  53. package/docgen.json +0 -8
  54. package/lib/Errors.js +0 -42
  55. package/lib/SESClientInstance.d.ts +0 -31
  56. package/lib/SESClientInstance.js +0 -57
  57. package/lib/SESClientInstanceConfig.d.ts +0 -23
  58. package/lib/SESClientInstanceConfig.js +0 -44
  59. package/lib/SESService.js +0 -159
  60. package/lib/esm/Errors.js +0 -39
  61. package/lib/esm/SESClientInstance.js +0 -30
  62. package/lib/esm/SESClientInstanceConfig.js +0 -40
  63. package/lib/esm/SESService.js +0 -155
  64. package/lib/esm/index.js +0 -5
  65. package/lib/index.d.ts +0 -4
  66. package/lib/index.js +0 -21
  67. package/project.json +0 -77
  68. package/vitest.config.ts +0 -3
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import type { SESClientConfig } from "@aws-sdk/client-ses";
5
+ import { ServiceLogger } from "@effect-aws/commons";
6
+ import { Effect, FiberRef, Layer } from "effect";
7
+ import { dual } from "effect/Function";
8
+ import { globalValue } from "effect/GlobalValue";
9
+ import type { SESService } from "./SESService.js";
10
+
11
+ /**
12
+ * @since 1.0.0
13
+ * @category ses service config
14
+ */
15
+ const currentSESServiceConfig = globalValue(
16
+ "@effect-aws/client-ses/currentSESServiceConfig",
17
+ () => FiberRef.unsafeMake<SESService.Config>({}),
18
+ );
19
+
20
+ /**
21
+ * @since 1.0.0
22
+ * @category ses service config
23
+ */
24
+ export const withSESServiceConfig: {
25
+ (config: SESService.Config): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
26
+ <A, E, R>(effect: Effect.Effect<A, E, R>, config: SESService.Config): Effect.Effect<A, E, R>;
27
+ } = dual(
28
+ 2,
29
+ <A, E, R>(effect: Effect.Effect<A, E, R>, config: SESService.Config): Effect.Effect<A, E, R> =>
30
+ Effect.locally(effect, currentSESServiceConfig, config),
31
+ );
32
+
33
+ /**
34
+ * @since 1.0.0
35
+ * @category ses service config
36
+ */
37
+ export const setSESServiceConfig = (config: SESService.Config) => Layer.locallyScoped(currentSESServiceConfig, config);
38
+
39
+ /**
40
+ * @since 1.0.0
41
+ * @category adapters
42
+ */
43
+ export const toSESClientConfig: Effect.Effect<SESClientConfig> = Effect.gen(function*() {
44
+ const { logger: serviceLogger, ...config } = yield* FiberRef.get(currentSESServiceConfig);
45
+
46
+ const logger = serviceLogger === true
47
+ ? yield* ServiceLogger.toClientLogger(ServiceLogger.defaultServiceLogger)
48
+ : (serviceLogger ? yield* ServiceLogger.toClientLogger(ServiceLogger.make(serviceLogger)) : undefined);
49
+
50
+ return { logger, ...config };
51
+ });
package/src/index.ts ADDED
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import { SESService } from "./SESService.js";
5
+
6
+ /**
7
+ * @since 1.0.0
8
+ */
9
+ export * from "./Errors.js";
10
+
11
+ /**
12
+ * @since 1.0.0
13
+ */
14
+ export * as SESClientInstance from "./SESClientInstance.js";
15
+
16
+ /**
17
+ * @since 1.0.0
18
+ */
19
+ export * as SESServiceConfig from "./SESServiceConfig.js";
20
+
21
+ /**
22
+ * @since 1.0.0
23
+ */
24
+ export * from "./SESService.js";
25
+
26
+ /**
27
+ * @since 1.0.0
28
+ * @category exports
29
+ * @alias SESService
30
+ */
31
+ export declare namespace SES {
32
+ /**
33
+ * @since 1.0.0
34
+ * @alias SESService.Config
35
+ */
36
+ export type Config = SESService.Config;
37
+ }
38
+
39
+ /**
40
+ * @since 1.0.0
41
+ * @category exports
42
+ * @alias SESService
43
+ */
44
+ export const SES = SESService;
package/CHANGELOG.md DELETED
@@ -1,13 +0,0 @@
1
- # @effect-aws/client-ses
2
-
3
- ## 1.1.0
4
-
5
- ### Minor Changes
6
-
7
- - [`eba7346`](https://github.com/floydspace/effect-aws/commit/eba7346d497ef011e90726f56b6a8cb919879042) Thanks [@floydspace](https://github.com/floydspace)! - Destroy client after layer lifecycle to release idle connections.
8
-
9
- ## 1.0.0
10
-
11
- ### Major Changes
12
-
13
- - [#95](https://github.com/floydspace/effect-aws/pull/95) [`89abbc8`](https://github.com/floydspace/effect-aws/commit/89abbc88feac19299345d67bcdf6098c9ee75979) Thanks [@successkrisz](https://github.com/successkrisz)! - implement ses client
package/docgen.json DELETED
@@ -1,8 +0,0 @@
1
- {
2
- "$schema": "../../node_modules/@effect/docgen/schema.json",
3
- "exclude": [
4
- "src/index.ts",
5
- "src/Errors.ts"
6
- ],
7
- "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"."
8
- }
package/lib/Errors.js DELETED
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SdkError = exports.AllServiceErrors = void 0;
4
- const effect_1 = require("effect");
5
- exports.AllServiceErrors = [
6
- "AccountSendingPausedException",
7
- "AlreadyExistsException",
8
- "CannotDeleteException",
9
- "ConfigurationSetAlreadyExistsException",
10
- "ConfigurationSetDoesNotExistException",
11
- "ConfigurationSetSendingPausedException",
12
- "CustomVerificationEmailInvalidContentException",
13
- "CustomVerificationEmailTemplateAlreadyExistsException",
14
- "CustomVerificationEmailTemplateDoesNotExistException",
15
- "EventDestinationAlreadyExistsException",
16
- "EventDestinationDoesNotExistException",
17
- "FromEmailAddressNotVerifiedException",
18
- "InvalidCloudWatchDestinationException",
19
- "InvalidConfigurationSetException",
20
- "InvalidDeliveryOptionsException",
21
- "InvalidFirehoseDestinationException",
22
- "InvalidLambdaFunctionException",
23
- "InvalidPolicyException",
24
- "InvalidRenderingParameterException",
25
- "InvalidS3ConfigurationException",
26
- "InvalidSNSDestinationException",
27
- "InvalidSnsTopicException",
28
- "InvalidTemplateException",
29
- "InvalidTrackingOptionsException",
30
- "LimitExceededException",
31
- "MailFromDomainNotVerifiedException",
32
- "MessageRejected",
33
- "MissingRenderingAttributeException",
34
- "ProductionAccessNotGrantedException",
35
- "RuleDoesNotExistException",
36
- "RuleSetDoesNotExistException",
37
- "TemplateDoesNotExistException",
38
- "TrackingOptionsAlreadyExistsException",
39
- "TrackingOptionsDoesNotExistException",
40
- ];
41
- exports.SdkError = effect_1.Data.tagged("SdkError");
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFvQ0EsbUNBQThCO0FBRWpCLFFBQUEsZ0JBQWdCLEdBQUc7SUFDOUIsK0JBQStCO0lBQy9CLHdCQUF3QjtJQUN4Qix1QkFBdUI7SUFDdkIsd0NBQXdDO0lBQ3hDLHVDQUF1QztJQUN2Qyx3Q0FBd0M7SUFDeEMsZ0RBQWdEO0lBQ2hELHVEQUF1RDtJQUN2RCxzREFBc0Q7SUFDdEQsd0NBQXdDO0lBQ3hDLHVDQUF1QztJQUN2QyxzQ0FBc0M7SUFDdEMsdUNBQXVDO0lBQ3ZDLGtDQUFrQztJQUNsQyxpQ0FBaUM7SUFDakMscUNBQXFDO0lBQ3JDLGdDQUFnQztJQUNoQyx3QkFBd0I7SUFDeEIsb0NBQW9DO0lBQ3BDLGlDQUFpQztJQUNqQyxnQ0FBZ0M7SUFDaEMsMEJBQTBCO0lBQzFCLDBCQUEwQjtJQUMxQixpQ0FBaUM7SUFDakMsd0JBQXdCO0lBQ3hCLG9DQUFvQztJQUNwQyxpQkFBaUI7SUFDakIsb0NBQW9DO0lBQ3BDLHFDQUFxQztJQUNyQywyQkFBMkI7SUFDM0IsOEJBQThCO0lBQzlCLCtCQUErQjtJQUMvQix1Q0FBdUM7SUFDdkMsc0NBQXNDO0NBQ3ZDLENBQUM7QUFvRVcsUUFBQSxRQUFRLEdBQUcsYUFBSSxDQUFDLE1BQU0sQ0FBVyxVQUFVLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQWNjb3VudFNlbmRpbmdQYXVzZWRFeGNlcHRpb24sXG4gIEFscmVhZHlFeGlzdHNFeGNlcHRpb24sXG4gIENhbm5vdERlbGV0ZUV4Y2VwdGlvbixcbiAgQ29uZmlndXJhdGlvblNldEFscmVhZHlFeGlzdHNFeGNlcHRpb24sXG4gIENvbmZpZ3VyYXRpb25TZXREb2VzTm90RXhpc3RFeGNlcHRpb24sXG4gIENvbmZpZ3VyYXRpb25TZXRTZW5kaW5nUGF1c2VkRXhjZXB0aW9uLFxuICBDdXN0b21WZXJpZmljYXRpb25FbWFpbEludmFsaWRDb250ZW50RXhjZXB0aW9uLFxuICBDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQWxyZWFkeUV4aXN0c0V4Y2VwdGlvbixcbiAgQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZURvZXNOb3RFeGlzdEV4Y2VwdGlvbixcbiAgRXZlbnREZXN0aW5hdGlvbkFscmVhZHlFeGlzdHNFeGNlcHRpb24sXG4gIEV2ZW50RGVzdGluYXRpb25Eb2VzTm90RXhpc3RFeGNlcHRpb24sXG4gIEZyb21FbWFpbEFkZHJlc3NOb3RWZXJpZmllZEV4Y2VwdGlvbixcbiAgSW52YWxpZENsb3VkV2F0Y2hEZXN0aW5hdGlvbkV4Y2VwdGlvbixcbiAgSW52YWxpZENvbmZpZ3VyYXRpb25TZXRFeGNlcHRpb24sXG4gIEludmFsaWREZWxpdmVyeU9wdGlvbnNFeGNlcHRpb24sXG4gIEludmFsaWRGaXJlaG9zZURlc3RpbmF0aW9uRXhjZXB0aW9uLFxuICBJbnZhbGlkTGFtYmRhRnVuY3Rpb25FeGNlcHRpb24sXG4gIEludmFsaWRQb2xpY3lFeGNlcHRpb24sXG4gIEludmFsaWRSZW5kZXJpbmdQYXJhbWV0ZXJFeGNlcHRpb24sXG4gIEludmFsaWRTM0NvbmZpZ3VyYXRpb25FeGNlcHRpb24sXG4gIEludmFsaWRTTlNEZXN0aW5hdGlvbkV4Y2VwdGlvbixcbiAgSW52YWxpZFNuc1RvcGljRXhjZXB0aW9uLFxuICBJbnZhbGlkVGVtcGxhdGVFeGNlcHRpb24sXG4gIEludmFsaWRUcmFja2luZ09wdGlvbnNFeGNlcHRpb24sXG4gIExpbWl0RXhjZWVkZWRFeGNlcHRpb24sXG4gIE1haWxGcm9tRG9tYWluTm90VmVyaWZpZWRFeGNlcHRpb24sXG4gIE1lc3NhZ2VSZWplY3RlZCxcbiAgTWlzc2luZ1JlbmRlcmluZ0F0dHJpYnV0ZUV4Y2VwdGlvbixcbiAgUHJvZHVjdGlvbkFjY2Vzc05vdEdyYW50ZWRFeGNlcHRpb24sXG4gIFJ1bGVEb2VzTm90RXhpc3RFeGNlcHRpb24sXG4gIFJ1bGVTZXREb2VzTm90RXhpc3RFeGNlcHRpb24sXG4gIFRlbXBsYXRlRG9lc05vdEV4aXN0RXhjZXB0aW9uLFxuICBUcmFja2luZ09wdGlvbnNBbHJlYWR5RXhpc3RzRXhjZXB0aW9uLFxuICBUcmFja2luZ09wdGlvbnNEb2VzTm90RXhpc3RFeGNlcHRpb24sXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtc2VzXCI7XG5pbXBvcnQgeyBEYXRhIH0gZnJvbSBcImVmZmVjdFwiO1xuXG5leHBvcnQgY29uc3QgQWxsU2VydmljZUVycm9ycyA9IFtcbiAgXCJBY2NvdW50U2VuZGluZ1BhdXNlZEV4Y2VwdGlvblwiLFxuICBcIkFscmVhZHlFeGlzdHNFeGNlcHRpb25cIixcbiAgXCJDYW5ub3REZWxldGVFeGNlcHRpb25cIixcbiAgXCJDb25maWd1cmF0aW9uU2V0QWxyZWFkeUV4aXN0c0V4Y2VwdGlvblwiLFxuICBcIkNvbmZpZ3VyYXRpb25TZXREb2VzTm90RXhpc3RFeGNlcHRpb25cIixcbiAgXCJDb25maWd1cmF0aW9uU2V0U2VuZGluZ1BhdXNlZEV4Y2VwdGlvblwiLFxuICBcIkN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsSW52YWxpZENvbnRlbnRFeGNlcHRpb25cIixcbiAgXCJDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQWxyZWFkeUV4aXN0c0V4Y2VwdGlvblwiLFxuICBcIkN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVEb2VzTm90RXhpc3RFeGNlcHRpb25cIixcbiAgXCJFdmVudERlc3RpbmF0aW9uQWxyZWFkeUV4aXN0c0V4Y2VwdGlvblwiLFxuICBcIkV2ZW50RGVzdGluYXRpb25Eb2VzTm90RXhpc3RFeGNlcHRpb25cIixcbiAgXCJGcm9tRW1haWxBZGRyZXNzTm90VmVyaWZpZWRFeGNlcHRpb25cIixcbiAgXCJJbnZhbGlkQ2xvdWRXYXRjaERlc3RpbmF0aW9uRXhjZXB0aW9uXCIsXG4gIFwiSW52YWxpZENvbmZpZ3VyYXRpb25TZXRFeGNlcHRpb25cIixcbiAgXCJJbnZhbGlkRGVsaXZlcnlPcHRpb25zRXhjZXB0aW9uXCIsXG4gIFwiSW52YWxpZEZpcmVob3NlRGVzdGluYXRpb25FeGNlcHRpb25cIixcbiAgXCJJbnZhbGlkTGFtYmRhRnVuY3Rpb25FeGNlcHRpb25cIixcbiAgXCJJbnZhbGlkUG9saWN5RXhjZXB0aW9uXCIsXG4gIFwiSW52YWxpZFJlbmRlcmluZ1BhcmFtZXRlckV4Y2VwdGlvblwiLFxuICBcIkludmFsaWRTM0NvbmZpZ3VyYXRpb25FeGNlcHRpb25cIixcbiAgXCJJbnZhbGlkU05TRGVzdGluYXRpb25FeGNlcHRpb25cIixcbiAgXCJJbnZhbGlkU25zVG9waWNFeGNlcHRpb25cIixcbiAgXCJJbnZhbGlkVGVtcGxhdGVFeGNlcHRpb25cIixcbiAgXCJJbnZhbGlkVHJhY2tpbmdPcHRpb25zRXhjZXB0aW9uXCIsXG4gIFwiTGltaXRFeGNlZWRlZEV4Y2VwdGlvblwiLFxuICBcIk1haWxGcm9tRG9tYWluTm90VmVyaWZpZWRFeGNlcHRpb25cIixcbiAgXCJNZXNzYWdlUmVqZWN0ZWRcIixcbiAgXCJNaXNzaW5nUmVuZGVyaW5nQXR0cmlidXRlRXhjZXB0aW9uXCIsXG4gIFwiUHJvZHVjdGlvbkFjY2Vzc05vdEdyYW50ZWRFeGNlcHRpb25cIixcbiAgXCJSdWxlRG9lc05vdEV4aXN0RXhjZXB0aW9uXCIsXG4gIFwiUnVsZVNldERvZXNOb3RFeGlzdEV4Y2VwdGlvblwiLFxuICBcIlRlbXBsYXRlRG9lc05vdEV4aXN0RXhjZXB0aW9uXCIsXG4gIFwiVHJhY2tpbmdPcHRpb25zQWxyZWFkeUV4aXN0c0V4Y2VwdGlvblwiLFxuICBcIlRyYWNraW5nT3B0aW9uc0RvZXNOb3RFeGlzdEV4Y2VwdGlvblwiLFxuXTtcblxuZXhwb3J0IHR5cGUgVGFnZ2VkRXhjZXB0aW9uPFQgZXh0ZW5kcyB7IG5hbWU6IHN0cmluZyB9PiA9IFQgJiB7XG4gIHJlYWRvbmx5IF90YWc6IFRbXCJuYW1lXCJdO1xufTtcblxuZXhwb3J0IHR5cGUgQWNjb3VudFNlbmRpbmdQYXVzZWRFcnJvciA9XG4gIFRhZ2dlZEV4Y2VwdGlvbjxBY2NvdW50U2VuZGluZ1BhdXNlZEV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBBbHJlYWR5RXhpc3RzRXJyb3IgPSBUYWdnZWRFeGNlcHRpb248QWxyZWFkeUV4aXN0c0V4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBDYW5ub3REZWxldGVFcnJvciA9IFRhZ2dlZEV4Y2VwdGlvbjxDYW5ub3REZWxldGVFeGNlcHRpb24+O1xuZXhwb3J0IHR5cGUgQ29uZmlndXJhdGlvblNldEFscmVhZHlFeGlzdHNFcnJvciA9XG4gIFRhZ2dlZEV4Y2VwdGlvbjxDb25maWd1cmF0aW9uU2V0QWxyZWFkeUV4aXN0c0V4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBDb25maWd1cmF0aW9uU2V0RG9lc05vdEV4aXN0RXJyb3IgPVxuICBUYWdnZWRFeGNlcHRpb248Q29uZmlndXJhdGlvblNldERvZXNOb3RFeGlzdEV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBDb25maWd1cmF0aW9uU2V0U2VuZGluZ1BhdXNlZEVycm9yID1cbiAgVGFnZ2VkRXhjZXB0aW9uPENvbmZpZ3VyYXRpb25TZXRTZW5kaW5nUGF1c2VkRXhjZXB0aW9uPjtcbmV4cG9ydCB0eXBlIEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsSW52YWxpZENvbnRlbnRFcnJvciA9XG4gIFRhZ2dlZEV4Y2VwdGlvbjxDdXN0b21WZXJpZmljYXRpb25FbWFpbEludmFsaWRDb250ZW50RXhjZXB0aW9uPjtcbmV4cG9ydCB0eXBlIEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVBbHJlYWR5RXhpc3RzRXJyb3IgPVxuICBUYWdnZWRFeGNlcHRpb248Q3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUFscmVhZHlFeGlzdHNFeGNlcHRpb24+O1xuZXhwb3J0IHR5cGUgQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZURvZXNOb3RFeGlzdEVycm9yID1cbiAgVGFnZ2VkRXhjZXB0aW9uPEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVEb2VzTm90RXhpc3RFeGNlcHRpb24+O1xuZXhwb3J0IHR5cGUgRXZlbnREZXN0aW5hdGlvbkFscmVhZHlFeGlzdHNFcnJvciA9XG4gIFRhZ2dlZEV4Y2VwdGlvbjxFdmVudERlc3RpbmF0aW9uQWxyZWFkeUV4aXN0c0V4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBFdmVudERlc3RpbmF0aW9uRG9lc05vdEV4aXN0RXJyb3IgPVxuICBUYWdnZWRFeGNlcHRpb248RXZlbnREZXN0aW5hdGlvbkRvZXNOb3RFeGlzdEV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBGcm9tRW1haWxBZGRyZXNzTm90VmVyaWZpZWRFcnJvciA9XG4gIFRhZ2dlZEV4Y2VwdGlvbjxGcm9tRW1haWxBZGRyZXNzTm90VmVyaWZpZWRFeGNlcHRpb24+O1xuZXhwb3J0IHR5cGUgSW52YWxpZENsb3VkV2F0Y2hEZXN0aW5hdGlvbkVycm9yID1cbiAgVGFnZ2VkRXhjZXB0aW9uPEludmFsaWRDbG91ZFdhdGNoRGVzdGluYXRpb25FeGNlcHRpb24+O1xuZXhwb3J0IHR5cGUgSW52YWxpZENvbmZpZ3VyYXRpb25TZXRFcnJvciA9XG4gIFRhZ2dlZEV4Y2VwdGlvbjxJbnZhbGlkQ29uZmlndXJhdGlvblNldEV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBJbnZhbGlkRGVsaXZlcnlPcHRpb25zRXJyb3IgPVxuICBUYWdnZWRFeGNlcHRpb248SW52YWxpZERlbGl2ZXJ5T3B0aW9uc0V4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBJbnZhbGlkRmlyZWhvc2VEZXN0aW5hdGlvbkVycm9yID1cbiAgVGFnZ2VkRXhjZXB0aW9uPEludmFsaWRGaXJlaG9zZURlc3RpbmF0aW9uRXhjZXB0aW9uPjtcbmV4cG9ydCB0eXBlIEludmFsaWRMYW1iZGFGdW5jdGlvbkVycm9yID1cbiAgVGFnZ2VkRXhjZXB0aW9uPEludmFsaWRMYW1iZGFGdW5jdGlvbkV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBJbnZhbGlkUG9saWN5RXJyb3IgPSBUYWdnZWRFeGNlcHRpb248SW52YWxpZFBvbGljeUV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBJbnZhbGlkUmVuZGVyaW5nUGFyYW1ldGVyRXJyb3IgPVxuICBUYWdnZWRFeGNlcHRpb248SW52YWxpZFJlbmRlcmluZ1BhcmFtZXRlckV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBJbnZhbGlkUzNDb25maWd1cmF0aW9uRXJyb3IgPVxuICBUYWdnZWRFeGNlcHRpb248SW52YWxpZFMzQ29uZmlndXJhdGlvbkV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBJbnZhbGlkU05TRGVzdGluYXRpb25FcnJvciA9XG4gIFRhZ2dlZEV4Y2VwdGlvbjxJbnZhbGlkU05TRGVzdGluYXRpb25FeGNlcHRpb24+O1xuZXhwb3J0IHR5cGUgSW52YWxpZFNuc1RvcGljRXJyb3IgPSBUYWdnZWRFeGNlcHRpb248SW52YWxpZFNuc1RvcGljRXhjZXB0aW9uPjtcbmV4cG9ydCB0eXBlIEludmFsaWRUZW1wbGF0ZUVycm9yID0gVGFnZ2VkRXhjZXB0aW9uPEludmFsaWRUZW1wbGF0ZUV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBJbnZhbGlkVHJhY2tpbmdPcHRpb25zRXJyb3IgPVxuICBUYWdnZWRFeGNlcHRpb248SW52YWxpZFRyYWNraW5nT3B0aW9uc0V4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBMaW1pdEV4Y2VlZGVkRXJyb3IgPSBUYWdnZWRFeGNlcHRpb248TGltaXRFeGNlZWRlZEV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBNYWlsRnJvbURvbWFpbk5vdFZlcmlmaWVkRXJyb3IgPVxuICBUYWdnZWRFeGNlcHRpb248TWFpbEZyb21Eb21haW5Ob3RWZXJpZmllZEV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBNZXNzYWdlUmVqZWN0ZWRFcnJvciA9IFRhZ2dlZEV4Y2VwdGlvbjxNZXNzYWdlUmVqZWN0ZWQ+O1xuZXhwb3J0IHR5cGUgTWlzc2luZ1JlbmRlcmluZ0F0dHJpYnV0ZUVycm9yID1cbiAgVGFnZ2VkRXhjZXB0aW9uPE1pc3NpbmdSZW5kZXJpbmdBdHRyaWJ1dGVFeGNlcHRpb24+O1xuZXhwb3J0IHR5cGUgUHJvZHVjdGlvbkFjY2Vzc05vdEdyYW50ZWRFcnJvciA9XG4gIFRhZ2dlZEV4Y2VwdGlvbjxQcm9kdWN0aW9uQWNjZXNzTm90R3JhbnRlZEV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBSdWxlRG9lc05vdEV4aXN0RXJyb3IgPSBUYWdnZWRFeGNlcHRpb248UnVsZURvZXNOb3RFeGlzdEV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBSdWxlU2V0RG9lc05vdEV4aXN0RXJyb3IgPVxuICBUYWdnZWRFeGNlcHRpb248UnVsZVNldERvZXNOb3RFeGlzdEV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBUZW1wbGF0ZURvZXNOb3RFeGlzdEVycm9yID1cbiAgVGFnZ2VkRXhjZXB0aW9uPFRlbXBsYXRlRG9lc05vdEV4aXN0RXhjZXB0aW9uPjtcbmV4cG9ydCB0eXBlIFRyYWNraW5nT3B0aW9uc0FscmVhZHlFeGlzdHNFcnJvciA9XG4gIFRhZ2dlZEV4Y2VwdGlvbjxUcmFja2luZ09wdGlvbnNBbHJlYWR5RXhpc3RzRXhjZXB0aW9uPjtcbmV4cG9ydCB0eXBlIFRyYWNraW5nT3B0aW9uc0RvZXNOb3RFeGlzdEVycm9yID1cbiAgVGFnZ2VkRXhjZXB0aW9uPFRyYWNraW5nT3B0aW9uc0RvZXNOb3RFeGlzdEV4Y2VwdGlvbj47XG5cbmV4cG9ydCB0eXBlIFNka0Vycm9yID0gVGFnZ2VkRXhjZXB0aW9uPEVycm9yICYgeyBuYW1lOiBcIlNka0Vycm9yXCIgfT47XG5leHBvcnQgY29uc3QgU2RrRXJyb3IgPSBEYXRhLnRhZ2dlZDxTZGtFcnJvcj4oXCJTZGtFcnJvclwiKTtcbiJdfQ==
@@ -1,31 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import { SESClient } from "@aws-sdk/client-ses";
5
- import * as Context from "effect/Context";
6
- import * as Effect from "effect/Effect";
7
- import * as Layer from "effect/Layer";
8
- import { SESClientInstanceConfig } from "./SESClientInstanceConfig";
9
- declare const SESClientInstance_base: Context.TagClass<SESClientInstance, "@effect-aws/client-ses/SESClientInstance", SESClient>;
10
- /**
11
- * @since 1.0.0
12
- * @category tags
13
- */
14
- export declare class SESClientInstance extends SESClientInstance_base {
15
- }
16
- /**
17
- * @since 1.0.0
18
- * @category constructors
19
- */
20
- export declare const makeSESClientInstance: Effect.Effect<SESClient, never, import("effect/Scope").Scope | SESClientInstanceConfig>;
21
- /**
22
- * @since 1.0.0
23
- * @category layers
24
- */
25
- export declare const SESClientInstanceLayer: Layer.Layer<SESClientInstance, never, SESClientInstanceConfig>;
26
- /**
27
- * @since 1.0.0
28
- * @category layers
29
- */
30
- export declare const DefaultSESClientInstanceLayer: Layer.Layer<SESClientInstance, never, never>;
31
- export {};
@@ -1,57 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.DefaultSESClientInstanceLayer = exports.SESClientInstanceLayer = exports.makeSESClientInstance = exports.SESClientInstance = void 0;
27
- /**
28
- * @since 1.0.0
29
- */
30
- const client_ses_1 = require("@aws-sdk/client-ses");
31
- const Context = __importStar(require("effect/Context"));
32
- const Effect = __importStar(require("effect/Effect"));
33
- const Layer = __importStar(require("effect/Layer"));
34
- const SESClientInstanceConfig_1 = require("./SESClientInstanceConfig");
35
- /**
36
- * @since 1.0.0
37
- * @category tags
38
- */
39
- class SESClientInstance extends Context.Tag("@effect-aws/client-ses/SESClientInstance")() {
40
- }
41
- exports.SESClientInstance = SESClientInstance;
42
- /**
43
- * @since 1.0.0
44
- * @category constructors
45
- */
46
- exports.makeSESClientInstance = Effect.flatMap(SESClientInstanceConfig_1.SESClientInstanceConfig, (config) => Effect.acquireRelease(Effect.sync(() => new client_ses_1.SESClient(config)), (client) => Effect.sync(() => client.destroy())));
47
- /**
48
- * @since 1.0.0
49
- * @category layers
50
- */
51
- exports.SESClientInstanceLayer = Layer.scoped(SESClientInstance, exports.makeSESClientInstance);
52
- /**
53
- * @since 1.0.0
54
- * @category layers
55
- */
56
- exports.DefaultSESClientInstanceLayer = exports.SESClientInstanceLayer.pipe(Layer.provide(SESClientInstanceConfig_1.DefaultSESClientConfigLayer));
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU0VTQ2xpZW50SW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU0VTQ2xpZW50SW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7R0FFRztBQUNILG9EQUFnRDtBQUNoRCx3REFBMEM7QUFDMUMsc0RBQXdDO0FBQ3hDLG9EQUFzQztBQUN0Qyx1RUFHbUM7QUFFbkM7OztHQUdHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSxPQUFPLENBQUMsR0FBRyxDQUNoRCwwQ0FBMEMsQ0FDM0MsRUFBZ0M7Q0FBRztBQUZwQyw4Q0FFb0M7QUFFcEM7OztHQUdHO0FBQ1UsUUFBQSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUNqRCxpREFBdUIsRUFDdkIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNULE1BQU0sQ0FBQyxjQUFjLENBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxzQkFBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQ3hDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUNoRCxDQUNKLENBQUM7QUFFRjs7O0dBR0c7QUFDVSxRQUFBLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQ2hELGlCQUFpQixFQUNqQiw2QkFBcUIsQ0FDdEIsQ0FBQztBQUVGOzs7R0FHRztBQUNVLFFBQUEsNkJBQTZCLEdBQUcsOEJBQXNCLENBQUMsSUFBSSxDQUN0RSxLQUFLLENBQUMsT0FBTyxDQUFDLHFEQUEyQixDQUFDLENBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5pbXBvcnQgeyBTRVNDbGllbnQgfSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXNlc1wiO1xuaW1wb3J0ICogYXMgQ29udGV4dCBmcm9tIFwiZWZmZWN0L0NvbnRleHRcIjtcbmltcG9ydCAqIGFzIEVmZmVjdCBmcm9tIFwiZWZmZWN0L0VmZmVjdFwiO1xuaW1wb3J0ICogYXMgTGF5ZXIgZnJvbSBcImVmZmVjdC9MYXllclwiO1xuaW1wb3J0IHtcbiAgRGVmYXVsdFNFU0NsaWVudENvbmZpZ0xheWVyLFxuICBTRVNDbGllbnRJbnN0YW5jZUNvbmZpZyxcbn0gZnJvbSBcIi4vU0VTQ2xpZW50SW5zdGFuY2VDb25maWdcIjtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSB0YWdzXG4gKi9cbmV4cG9ydCBjbGFzcyBTRVNDbGllbnRJbnN0YW5jZSBleHRlbmRzIENvbnRleHQuVGFnKFxuICBcIkBlZmZlY3QtYXdzL2NsaWVudC1zZXMvU0VTQ2xpZW50SW5zdGFuY2VcIixcbik8U0VTQ2xpZW50SW5zdGFuY2UsIFNFU0NsaWVudD4oKSB7fVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGNvbnN0cnVjdG9yc1xuICovXG5leHBvcnQgY29uc3QgbWFrZVNFU0NsaWVudEluc3RhbmNlID0gRWZmZWN0LmZsYXRNYXAoXG4gIFNFU0NsaWVudEluc3RhbmNlQ29uZmlnLFxuICAoY29uZmlnKSA9PlxuICAgIEVmZmVjdC5hY3F1aXJlUmVsZWFzZShcbiAgICAgIEVmZmVjdC5zeW5jKCgpID0+IG5ldyBTRVNDbGllbnQoY29uZmlnKSksXG4gICAgICAoY2xpZW50KSA9PiBFZmZlY3Quc3luYygoKSA9PiBjbGllbnQuZGVzdHJveSgpKSxcbiAgICApLFxuKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFNFU0NsaWVudEluc3RhbmNlTGF5ZXIgPSBMYXllci5zY29wZWQoXG4gIFNFU0NsaWVudEluc3RhbmNlLFxuICBtYWtlU0VTQ2xpZW50SW5zdGFuY2UsXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdFNFU0NsaWVudEluc3RhbmNlTGF5ZXIgPSBTRVNDbGllbnRJbnN0YW5jZUxheWVyLnBpcGUoXG4gIExheWVyLnByb3ZpZGUoRGVmYXVsdFNFU0NsaWVudENvbmZpZ0xheWVyKSxcbik7XG4iXX0=
@@ -1,23 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import type { SESClientConfig } from "@aws-sdk/client-ses";
5
- import { Context, Effect, Layer } from "effect";
6
- declare const SESClientInstanceConfig_base: Context.TagClass<SESClientInstanceConfig, "@effect-aws/client-ses/SESClientInstanceConfig", SESClientConfig>;
7
- /**
8
- * @since 1.0.0
9
- * @category tags
10
- */
11
- export declare class SESClientInstanceConfig extends SESClientInstanceConfig_base {
12
- }
13
- /**
14
- * @since 1.0.0
15
- * @category constructors
16
- */
17
- export declare const makeDefaultSESClientInstanceConfig: Effect.Effect<SESClientConfig>;
18
- /**
19
- * @since 1.0.0
20
- * @category layers
21
- */
22
- export declare const DefaultSESClientConfigLayer: Layer.Layer<SESClientInstanceConfig, never, never>;
23
- export {};
@@ -1,44 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DefaultSESClientConfigLayer = exports.makeDefaultSESClientInstanceConfig = exports.SESClientInstanceConfig = void 0;
4
- const effect_1 = require("effect");
5
- /**
6
- * @since 1.0.0
7
- * @category tags
8
- */
9
- class SESClientInstanceConfig extends effect_1.Context.Tag("@effect-aws/client-ses/SESClientInstanceConfig")() {
10
- }
11
- exports.SESClientInstanceConfig = SESClientInstanceConfig;
12
- /**
13
- * @since 1.0.0
14
- * @category constructors
15
- */
16
- exports.makeDefaultSESClientInstanceConfig = effect_1.Effect.gen(function* (_) {
17
- const runtime = yield* _(effect_1.Effect.runtime());
18
- const runSync = effect_1.Runtime.runSync(runtime);
19
- return {
20
- logger: {
21
- info(m) {
22
- effect_1.Effect.logInfo(m).pipe(runSync);
23
- },
24
- warn(m) {
25
- effect_1.Effect.logWarning(m).pipe(runSync);
26
- },
27
- error(m) {
28
- effect_1.Effect.logError(m).pipe(runSync);
29
- },
30
- debug(m) {
31
- effect_1.Effect.logDebug(m).pipe(runSync);
32
- },
33
- trace(m) {
34
- effect_1.Effect.logTrace(m).pipe(runSync);
35
- },
36
- },
37
- };
38
- });
39
- /**
40
- * @since 1.0.0
41
- * @category layers
42
- */
43
- exports.DefaultSESClientConfigLayer = effect_1.Layer.effect(SESClientInstanceConfig, exports.makeDefaultSESClientInstanceConfig);
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU0VTQ2xpZW50SW5zdGFuY2VDb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU0VTQ2xpZW50SW5zdGFuY2VDb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsbUNBQXlEO0FBRXpEOzs7R0FHRztBQUNILE1BQWEsdUJBQXdCLFNBQVEsZ0JBQU8sQ0FBQyxHQUFHLENBQ3RELGdEQUFnRCxDQUNqRCxFQUE0QztDQUFHO0FBRmhELDBEQUVnRDtBQUVoRDs7O0dBR0c7QUFDVSxRQUFBLGtDQUFrQyxHQUM3QyxlQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDckIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQU0sQ0FBQyxPQUFPLEVBQVMsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sT0FBTyxHQUFHLGdCQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXpDLE9BQU87UUFDTCxNQUFNLEVBQUU7WUFDTixJQUFJLENBQUMsQ0FBQztnQkFDSixlQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLENBQUM7Z0JBQ0osZUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckMsQ0FBQztZQUNELEtBQUssQ0FBQyxDQUFDO2dCQUNMLGVBQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFDRCxLQUFLLENBQUMsQ0FBQztnQkFDTCxlQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBQ0QsS0FBSyxDQUFDLENBQUM7Z0JBQ0wsZUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkMsQ0FBQztTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDO0FBRUw7OztHQUdHO0FBQ1UsUUFBQSwyQkFBMkIsR0FBRyxjQUFLLENBQUMsTUFBTSxDQUNyRCx1QkFBdUIsRUFDdkIsMENBQWtDLENBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5pbXBvcnQgdHlwZSB7IFNFU0NsaWVudENvbmZpZyB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtc2VzXCI7XG5pbXBvcnQgeyBDb250ZXh0LCBFZmZlY3QsIExheWVyLCBSdW50aW1lIH0gZnJvbSBcImVmZmVjdFwiO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IHRhZ3NcbiAqL1xuZXhwb3J0IGNsYXNzIFNFU0NsaWVudEluc3RhbmNlQ29uZmlnIGV4dGVuZHMgQ29udGV4dC5UYWcoXG4gIFwiQGVmZmVjdC1hd3MvY2xpZW50LXNlcy9TRVNDbGllbnRJbnN0YW5jZUNvbmZpZ1wiLFxuKTxTRVNDbGllbnRJbnN0YW5jZUNvbmZpZywgU0VTQ2xpZW50Q29uZmlnPigpIHt9XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgY29uc3RydWN0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlRGVmYXVsdFNFU0NsaWVudEluc3RhbmNlQ29uZmlnOiBFZmZlY3QuRWZmZWN0PFNFU0NsaWVudENvbmZpZz4gPVxuICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoXykge1xuICAgIGNvbnN0IHJ1bnRpbWUgPSB5aWVsZCogXyhFZmZlY3QucnVudGltZTxuZXZlcj4oKSk7XG4gICAgY29uc3QgcnVuU3luYyA9IFJ1bnRpbWUucnVuU3luYyhydW50aW1lKTtcblxuICAgIHJldHVybiB7XG4gICAgICBsb2dnZXI6IHtcbiAgICAgICAgaW5mbyhtKSB7XG4gICAgICAgICAgRWZmZWN0LmxvZ0luZm8obSkucGlwZShydW5TeW5jKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2FybihtKSB7XG4gICAgICAgICAgRWZmZWN0LmxvZ1dhcm5pbmcobSkucGlwZShydW5TeW5jKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3IobSkge1xuICAgICAgICAgIEVmZmVjdC5sb2dFcnJvcihtKS5waXBlKHJ1blN5bmMpO1xuICAgICAgICB9LFxuICAgICAgICBkZWJ1ZyhtKSB7XG4gICAgICAgICAgRWZmZWN0LmxvZ0RlYnVnKG0pLnBpcGUocnVuU3luYyk7XG4gICAgICAgIH0sXG4gICAgICAgIHRyYWNlKG0pIHtcbiAgICAgICAgICBFZmZlY3QubG9nVHJhY2UobSkucGlwZShydW5TeW5jKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0U0VTQ2xpZW50Q29uZmlnTGF5ZXIgPSBMYXllci5lZmZlY3QoXG4gIFNFU0NsaWVudEluc3RhbmNlQ29uZmlnLFxuICBtYWtlRGVmYXVsdFNFU0NsaWVudEluc3RhbmNlQ29uZmlnLFxuKTtcbiJdfQ==
package/lib/SESService.js DELETED
@@ -1,159 +0,0 @@
1
- "use strict";
2
- var _a;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.DefaultSESServiceLayer = exports.SESServiceLayer = exports.BaseSESServiceLayer = exports.SES = exports.SESService = exports.makeSESService = void 0;
5
- /**
6
- * @since 1.0.0
7
- */
8
- const client_ses_1 = require("@aws-sdk/client-ses");
9
- const effect_1 = require("effect");
10
- const Errors_1 = require("./Errors");
11
- const SESClientInstance_1 = require("./SESClientInstance");
12
- const SESClientInstanceConfig_1 = require("./SESClientInstanceConfig");
13
- const commands = {
14
- CloneReceiptRuleSetCommand: client_ses_1.CloneReceiptRuleSetCommand,
15
- CreateConfigurationSetCommand: client_ses_1.CreateConfigurationSetCommand,
16
- CreateConfigurationSetEventDestinationCommand: client_ses_1.CreateConfigurationSetEventDestinationCommand,
17
- CreateConfigurationSetTrackingOptionsCommand: client_ses_1.CreateConfigurationSetTrackingOptionsCommand,
18
- CreateCustomVerificationEmailTemplateCommand: client_ses_1.CreateCustomVerificationEmailTemplateCommand,
19
- CreateReceiptFilterCommand: client_ses_1.CreateReceiptFilterCommand,
20
- CreateReceiptRuleCommand: client_ses_1.CreateReceiptRuleCommand,
21
- CreateReceiptRuleSetCommand: client_ses_1.CreateReceiptRuleSetCommand,
22
- CreateTemplateCommand: client_ses_1.CreateTemplateCommand,
23
- DeleteConfigurationSetCommand: client_ses_1.DeleteConfigurationSetCommand,
24
- DeleteConfigurationSetEventDestinationCommand: client_ses_1.DeleteConfigurationSetEventDestinationCommand,
25
- DeleteConfigurationSetTrackingOptionsCommand: client_ses_1.DeleteConfigurationSetTrackingOptionsCommand,
26
- DeleteCustomVerificationEmailTemplateCommand: client_ses_1.DeleteCustomVerificationEmailTemplateCommand,
27
- DeleteIdentityCommand: client_ses_1.DeleteIdentityCommand,
28
- DeleteIdentityPolicyCommand: client_ses_1.DeleteIdentityPolicyCommand,
29
- DeleteReceiptFilterCommand: client_ses_1.DeleteReceiptFilterCommand,
30
- DeleteReceiptRuleCommand: client_ses_1.DeleteReceiptRuleCommand,
31
- DeleteReceiptRuleSetCommand: client_ses_1.DeleteReceiptRuleSetCommand,
32
- DeleteTemplateCommand: client_ses_1.DeleteTemplateCommand,
33
- DeleteVerifiedEmailAddressCommand: client_ses_1.DeleteVerifiedEmailAddressCommand,
34
- DescribeActiveReceiptRuleSetCommand: client_ses_1.DescribeActiveReceiptRuleSetCommand,
35
- DescribeConfigurationSetCommand: client_ses_1.DescribeConfigurationSetCommand,
36
- DescribeReceiptRuleCommand: client_ses_1.DescribeReceiptRuleCommand,
37
- DescribeReceiptRuleSetCommand: client_ses_1.DescribeReceiptRuleSetCommand,
38
- GetAccountSendingEnabledCommand: client_ses_1.GetAccountSendingEnabledCommand,
39
- GetCustomVerificationEmailTemplateCommand: client_ses_1.GetCustomVerificationEmailTemplateCommand,
40
- GetIdentityDkimAttributesCommand: client_ses_1.GetIdentityDkimAttributesCommand,
41
- GetIdentityMailFromDomainAttributesCommand: client_ses_1.GetIdentityMailFromDomainAttributesCommand,
42
- GetIdentityNotificationAttributesCommand: client_ses_1.GetIdentityNotificationAttributesCommand,
43
- GetIdentityPoliciesCommand: client_ses_1.GetIdentityPoliciesCommand,
44
- GetIdentityVerificationAttributesCommand: client_ses_1.GetIdentityVerificationAttributesCommand,
45
- GetSendQuotaCommand: client_ses_1.GetSendQuotaCommand,
46
- GetSendStatisticsCommand: client_ses_1.GetSendStatisticsCommand,
47
- GetTemplateCommand: client_ses_1.GetTemplateCommand,
48
- ListConfigurationSetsCommand: client_ses_1.ListConfigurationSetsCommand,
49
- ListCustomVerificationEmailTemplatesCommand: client_ses_1.ListCustomVerificationEmailTemplatesCommand,
50
- ListIdentitiesCommand: client_ses_1.ListIdentitiesCommand,
51
- ListIdentityPoliciesCommand: client_ses_1.ListIdentityPoliciesCommand,
52
- ListReceiptFiltersCommand: client_ses_1.ListReceiptFiltersCommand,
53
- ListReceiptRuleSetsCommand: client_ses_1.ListReceiptRuleSetsCommand,
54
- ListTemplatesCommand: client_ses_1.ListTemplatesCommand,
55
- ListVerifiedEmailAddressesCommand: client_ses_1.ListVerifiedEmailAddressesCommand,
56
- PutConfigurationSetDeliveryOptionsCommand: client_ses_1.PutConfigurationSetDeliveryOptionsCommand,
57
- PutIdentityPolicyCommand: client_ses_1.PutIdentityPolicyCommand,
58
- ReorderReceiptRuleSetCommand: client_ses_1.ReorderReceiptRuleSetCommand,
59
- SendBounceCommand: client_ses_1.SendBounceCommand,
60
- SendBulkTemplatedEmailCommand: client_ses_1.SendBulkTemplatedEmailCommand,
61
- SendCustomVerificationEmailCommand: client_ses_1.SendCustomVerificationEmailCommand,
62
- SendEmailCommand: client_ses_1.SendEmailCommand,
63
- SendRawEmailCommand: client_ses_1.SendRawEmailCommand,
64
- SendTemplatedEmailCommand: client_ses_1.SendTemplatedEmailCommand,
65
- SetActiveReceiptRuleSetCommand: client_ses_1.SetActiveReceiptRuleSetCommand,
66
- SetIdentityDkimEnabledCommand: client_ses_1.SetIdentityDkimEnabledCommand,
67
- SetIdentityFeedbackForwardingEnabledCommand: client_ses_1.SetIdentityFeedbackForwardingEnabledCommand,
68
- SetIdentityHeadersInNotificationsEnabledCommand: client_ses_1.SetIdentityHeadersInNotificationsEnabledCommand,
69
- SetIdentityMailFromDomainCommand: client_ses_1.SetIdentityMailFromDomainCommand,
70
- SetIdentityNotificationTopicCommand: client_ses_1.SetIdentityNotificationTopicCommand,
71
- SetReceiptRulePositionCommand: client_ses_1.SetReceiptRulePositionCommand,
72
- TestRenderTemplateCommand: client_ses_1.TestRenderTemplateCommand,
73
- UpdateAccountSendingEnabledCommand: client_ses_1.UpdateAccountSendingEnabledCommand,
74
- UpdateConfigurationSetEventDestinationCommand: client_ses_1.UpdateConfigurationSetEventDestinationCommand,
75
- UpdateConfigurationSetReputationMetricsEnabledCommand: client_ses_1.UpdateConfigurationSetReputationMetricsEnabledCommand,
76
- UpdateConfigurationSetSendingEnabledCommand: client_ses_1.UpdateConfigurationSetSendingEnabledCommand,
77
- UpdateConfigurationSetTrackingOptionsCommand: client_ses_1.UpdateConfigurationSetTrackingOptionsCommand,
78
- UpdateCustomVerificationEmailTemplateCommand: client_ses_1.UpdateCustomVerificationEmailTemplateCommand,
79
- UpdateReceiptRuleCommand: client_ses_1.UpdateReceiptRuleCommand,
80
- UpdateTemplateCommand: client_ses_1.UpdateTemplateCommand,
81
- VerifyDomainDkimCommand: client_ses_1.VerifyDomainDkimCommand,
82
- VerifyDomainIdentityCommand: client_ses_1.VerifyDomainIdentityCommand,
83
- VerifyEmailAddressCommand: client_ses_1.VerifyEmailAddressCommand,
84
- VerifyEmailIdentityCommand: client_ses_1.VerifyEmailIdentityCommand,
85
- };
86
- /**
87
- * @since 1.0.0
88
- * @category constructors
89
- */
90
- exports.makeSESService = effect_1.Effect.gen(function* (_) {
91
- const client = yield* _(SESClientInstance_1.SESClientInstance);
92
- return effect_1.Record.toEntries(commands).reduce((acc, [command]) => {
93
- const CommandCtor = commands[command];
94
- const methodImpl = (args, options) => effect_1.Effect.tryPromise({
95
- try: (abortSignal) => client.send(new CommandCtor(args), {
96
- ...(options !== null && options !== void 0 ? options : {}),
97
- abortSignal,
98
- }),
99
- catch: (e) => {
100
- if (e instanceof client_ses_1.SESServiceException &&
101
- Errors_1.AllServiceErrors.includes(e.name)) {
102
- const ServiceException = effect_1.Data.tagged(e.name);
103
- return ServiceException({
104
- ...e,
105
- message: e.message,
106
- stack: e.stack,
107
- });
108
- }
109
- if (e instanceof Error) {
110
- return (0, Errors_1.SdkError)({
111
- ...e,
112
- name: "SdkError",
113
- message: e.message,
114
- stack: e.stack,
115
- });
116
- }
117
- throw e;
118
- },
119
- });
120
- const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, "");
121
- return { ...acc, [methodName]: methodImpl };
122
- }, {});
123
- });
124
- /**
125
- * @since 1.0.0
126
- * @category models
127
- */
128
- class SESService extends effect_1.Effect.Tag("@effect-aws/client-ses/SESService")() {
129
- }
130
- exports.SESService = SESService;
131
- _a = SESService;
132
- SESService.defaultLayer = effect_1.Layer.effect(_a, exports.makeSESService).pipe(effect_1.Layer.provide(SESClientInstance_1.SESClientInstanceLayer), effect_1.Layer.provide(SESClientInstanceConfig_1.DefaultSESClientConfigLayer));
133
- SESService.layer = (config) => effect_1.Layer.effect(_a, exports.makeSESService).pipe(effect_1.Layer.provide(SESClientInstance_1.SESClientInstanceLayer), effect_1.Layer.provide(effect_1.Layer.effect(SESClientInstanceConfig_1.SESClientInstanceConfig, SESClientInstanceConfig_1.makeDefaultSESClientInstanceConfig.pipe(effect_1.Effect.map((defaultConfig) => ({ ...defaultConfig, ...config }))))));
134
- SESService.baseLayer = (evaluate) => effect_1.Layer.effect(_a, exports.makeSESService).pipe(effect_1.Layer.provide(effect_1.Layer.effect(SESClientInstance_1.SESClientInstance, effect_1.Effect.map(SESClientInstanceConfig_1.makeDefaultSESClientInstanceConfig, evaluate))));
135
- /**
136
- * @since 1.0.0
137
- * @category models
138
- * @alias SESService
139
- */
140
- exports.SES = SESService;
141
- /**
142
- * @since 1.0.0
143
- * @category layers
144
- * @deprecated use SES.baseLayer instead
145
- */
146
- exports.BaseSESServiceLayer = effect_1.Layer.effect(SESService, exports.makeSESService);
147
- /**
148
- * @since 1.0.0
149
- * @category layers
150
- * @deprecated use SES.layer instead
151
- */
152
- exports.SESServiceLayer = exports.BaseSESServiceLayer.pipe(effect_1.Layer.provide(SESClientInstance_1.SESClientInstanceLayer));
153
- /**
154
- * @since 1.0.0
155
- * @category layers
156
- * @deprecated use SES.defaultLayer instead
157
- */
158
- exports.DefaultSESServiceLayer = SESService.defaultLayer;
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU0VTU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9TRVNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7R0FFRztBQUNILG9EQXlONkI7QUFDN0IsbUNBQXFEO0FBQ3JELHFDQXNDa0I7QUFDbEIsMkRBQWdGO0FBQ2hGLHVFQUltQztBQWFuQyxNQUFNLFFBQVEsR0FBRztJQUNmLDBCQUEwQixFQUExQix1Q0FBMEI7SUFDMUIsNkJBQTZCLEVBQTdCLDBDQUE2QjtJQUM3Qiw2Q0FBNkMsRUFBN0MsMERBQTZDO0lBQzdDLDRDQUE0QyxFQUE1Qyx5REFBNEM7SUFDNUMsNENBQTRDLEVBQTVDLHlEQUE0QztJQUM1QywwQkFBMEIsRUFBMUIsdUNBQTBCO0lBQzFCLHdCQUF3QixFQUF4QixxQ0FBd0I7SUFDeEIsMkJBQTJCLEVBQTNCLHdDQUEyQjtJQUMzQixxQkFBcUIsRUFBckIsa0NBQXFCO0lBQ3JCLDZCQUE2QixFQUE3QiwwQ0FBNkI7SUFDN0IsNkNBQTZDLEVBQTdDLDBEQUE2QztJQUM3Qyw0Q0FBNEMsRUFBNUMseURBQTRDO0lBQzVDLDRDQUE0QyxFQUE1Qyx5REFBNEM7SUFDNUMscUJBQXFCLEVBQXJCLGtDQUFxQjtJQUNyQiwyQkFBMkIsRUFBM0Isd0NBQTJCO0lBQzNCLDBCQUEwQixFQUExQix1Q0FBMEI7SUFDMUIsd0JBQXdCLEVBQXhCLHFDQUF3QjtJQUN4QiwyQkFBMkIsRUFBM0Isd0NBQTJCO0lBQzNCLHFCQUFxQixFQUFyQixrQ0FBcUI7SUFDckIsaUNBQWlDLEVBQWpDLDhDQUFpQztJQUNqQyxtQ0FBbUMsRUFBbkMsZ0RBQW1DO0lBQ25DLCtCQUErQixFQUEvQiw0Q0FBK0I7SUFDL0IsMEJBQTBCLEVBQTFCLHVDQUEwQjtJQUMxQiw2QkFBNkIsRUFBN0IsMENBQTZCO0lBQzdCLCtCQUErQixFQUEvQiw0Q0FBK0I7SUFDL0IseUNBQXlDLEVBQXpDLHNEQUF5QztJQUN6QyxnQ0FBZ0Ms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QVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKi9cbmltcG9ydCB7XG4gIFNFU1NlcnZpY2VFeGNlcHRpb24sXG4gIHR5cGUgU0VTQ2xpZW50LFxuICB0eXBlIFNFU0NsaWVudENvbmZpZyxcbiAgQ2xvbmVSZWNlaXB0UnVsZVNldENvbW1hbmQsXG4gIHR5cGUgQ2xvbmVSZWNlaXB0UnVsZVNldENvbW1hbmRJbnB1dCxcbiAgdHlwZSBDbG9uZVJlY2VpcHRSdWxlU2V0Q29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlQ29uZmlndXJhdGlvblNldENvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlQ29uZmlndXJhdGlvblNldENvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVDb25maWd1cmF0aW9uU2V0Q29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlQ29uZmlndXJhdGlvblNldEV2ZW50RGVzdGluYXRpb25Db21tYW5kLFxuICB0eXBlIENyZWF0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVDb25maWd1cmF0aW9uU2V0VHJhY2tpbmdPcHRpb25zQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlUmVjZWlwdEZpbHRlckNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlUmVjZWlwdEZpbHRlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVSZWNlaXB0RmlsdGVyQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlUmVjZWlwdFJ1bGVDb21tYW5kLFxuICB0eXBlIENyZWF0ZVJlY2VpcHRSdWxlQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZVJlY2VpcHRSdWxlQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlUmVjZWlwdFJ1bGVTZXRDb21tYW5kLFxuICB0eXBlIENyZWF0ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlVGVtcGxhdGVDb21tYW5kLFxuICB0eXBlIENyZWF0ZVRlbXBsYXRlQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZVRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQ29uZmlndXJhdGlvblNldENvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQ29uZmlndXJhdGlvblNldENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVDb25maWd1cmF0aW9uU2V0Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQ29uZmlndXJhdGlvblNldEV2ZW50RGVzdGluYXRpb25Db21tYW5kLFxuICB0eXBlIERlbGV0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVDb25maWd1cmF0aW9uU2V0VHJhY2tpbmdPcHRpb25zQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlSWRlbnRpdHlDb21tYW5kLFxuICB0eXBlIERlbGV0ZUlkZW50aXR5Q29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUlkZW50aXR5Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlSWRlbnRpdHlQb2xpY3lDb21tYW5kLFxuICB0eXBlIERlbGV0ZUlkZW50aXR5UG9saWN5Q29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUlkZW50aXR5UG9saWN5Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlUmVjZWlwdEZpbHRlckNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlUmVjZWlwdEZpbHRlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVSZWNlaXB0RmlsdGVyQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlUmVjZWlwdFJ1bGVDb21tYW5kLFxuICB0eXBlIERlbGV0ZVJlY2VpcHRSdWxlQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVJlY2VpcHRSdWxlQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlUmVjZWlwdFJ1bGVTZXRDb21tYW5kLFxuICB0eXBlIERlbGV0ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlVGVtcGxhdGVDb21tYW5kLFxuICB0eXBlIERlbGV0ZVRlbXBsYXRlQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlVmVyaWZpZWRFbWFpbEFkZHJlc3NDb21tYW5kLFxuICB0eXBlIERlbGV0ZVZlcmlmaWVkRW1haWxBZGRyZXNzQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVZlcmlmaWVkRW1haWxBZGRyZXNzQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVBY3RpdmVSZWNlaXB0UnVsZVNldENvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVBY3RpdmVSZWNlaXB0UnVsZVNldENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZUFjdGl2ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVDb25maWd1cmF0aW9uU2V0Q29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUNvbmZpZ3VyYXRpb25TZXRDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVDb25maWd1cmF0aW9uU2V0Q29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVSZWNlaXB0UnVsZUNvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVSZWNlaXB0UnVsZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVJlY2VpcHRSdWxlQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVSZWNlaXB0UnVsZVNldENvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVSZWNlaXB0UnVsZVNldENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVJlY2VpcHRSdWxlU2V0Q29tbWFuZE91dHB1dCxcbiAgR2V0QWNjb3VudFNlbmRpbmdFbmFibGVkQ29tbWFuZCxcbiAgdHlwZSBHZXRBY2NvdW50U2VuZGluZ0VuYWJsZWRDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0QWNjb3VudFNlbmRpbmdFbmFibGVkQ29tbWFuZE91dHB1dCxcbiAgR2V0Q3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmQsXG4gIHR5cGUgR2V0Q3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgR2V0SWRlbnRpdHlEa2ltQXR0cmlidXRlc0NvbW1hbmQsXG4gIHR5cGUgR2V0SWRlbnRpdHlEa2ltQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRJZGVudGl0eURraW1BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgR2V0SWRlbnRpdHlNYWlsRnJvbURvbWFpbkF0dHJpYnV0ZXNDb21tYW5kLFxuICB0eXBlIEdldElkZW50aXR5TWFpbEZyb21Eb21haW5BdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICB0eXBlIEdldElkZW50aXR5TWFpbEZyb21Eb21haW5BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgR2V0SWRlbnRpdHlOb3RpZmljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZCxcbiAgdHlwZSBHZXRJZGVudGl0eU5vdGlmaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0SWRlbnRpdHlOb3RpZmljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgR2V0SWRlbnRpdHlQb2xpY2llc0NvbW1hbmQsXG4gIHR5cGUgR2V0SWRlbnRpdHlQb2xpY2llc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRJZGVudGl0eVBvbGljaWVzQ29tbWFuZE91dHB1dCxcbiAgR2V0SWRlbnRpdHlWZXJpZmljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZCxcbiAgdHlwZSBHZXRJZGVudGl0eVZlcmlmaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0SWRlbnRpdHlWZXJpZmljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgR2V0U2VuZFF1b3RhQ29tbWFuZCxcbiAgdHlwZSBHZXRTZW5kUXVvdGFDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0U2VuZFF1b3RhQ29tbWFuZE91dHB1dCxcbiAgR2V0U2VuZFN0YXRpc3RpY3NDb21tYW5kLFxuICB0eXBlIEdldFNlbmRTdGF0aXN0aWNzQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFNlbmRTdGF0aXN0aWNzQ29tbWFuZE91dHB1dCxcbiAgR2V0VGVtcGxhdGVDb21tYW5kLFxuICB0eXBlIEdldFRlbXBsYXRlQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgTGlzdENvbmZpZ3VyYXRpb25TZXRzQ29tbWFuZCxcbiAgdHlwZSBMaXN0Q29uZmlndXJhdGlvblNldHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdENvbmZpZ3VyYXRpb25TZXRzQ29tbWFuZE91dHB1dCxcbiAgTGlzdEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVzQ29tbWFuZCxcbiAgdHlwZSBMaXN0Q3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVzQ29tbWFuZE91dHB1dCxcbiAgTGlzdElkZW50aXRpZXNDb21tYW5kLFxuICB0eXBlIExpc3RJZGVudGl0aWVzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RJZGVudGl0aWVzQ29tbWFuZE91dHB1dCxcbiAgTGlzdElkZW50aXR5UG9saWNpZXNDb21tYW5kLFxuICB0eXBlIExpc3RJZGVudGl0eVBvbGljaWVzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RJZGVudGl0eVBvbGljaWVzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFJlY2VpcHRGaWx0ZXJzQ29tbWFuZCxcbiAgdHlwZSBMaXN0UmVjZWlwdEZpbHRlcnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFJlY2VpcHRGaWx0ZXJzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFJlY2VpcHRSdWxlU2V0c0NvbW1hbmQsXG4gIHR5cGUgTGlzdFJlY2VpcHRSdWxlU2V0c0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0UmVjZWlwdFJ1bGVTZXRzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFRlbXBsYXRlc0NvbW1hbmQsXG4gIHR5cGUgTGlzdFRlbXBsYXRlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VGVtcGxhdGVzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFZlcmlmaWVkRW1haWxBZGRyZXNzZXNDb21tYW5kLFxuICB0eXBlIExpc3RWZXJpZmllZEVtYWlsQWRkcmVzc2VzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RWZXJpZmllZEVtYWlsQWRkcmVzc2VzQ29tbWFuZE91dHB1dCxcbiAgUHV0Q29uZmlndXJhdGlvblNldERlbGl2ZXJ5T3B0aW9uc0NvbW1hbmQsXG4gIHR5cGUgUHV0Q29uZmlndXJhdGlvblNldERlbGl2ZXJ5T3B0aW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRDb25maWd1cmF0aW9uU2V0RGVsaXZlcnlPcHRpb25zQ29tbWFuZE91dHB1dCxcbiAgUHV0SWRlbnRpdHlQb2xpY3lDb21tYW5kLFxuICB0eXBlIFB1dElkZW50aXR5UG9saWN5Q29tbWFuZElucHV0LFxuICB0eXBlIFB1dElkZW50aXR5UG9saWN5Q29tbWFuZE91dHB1dCxcbiAgUmVvcmRlclJlY2VpcHRSdWxlU2V0Q29tbWFuZCxcbiAgdHlwZSBSZW9yZGVyUmVjZWlwdFJ1bGVTZXRDb21tYW5kSW5wdXQsXG4gIHR5cGUgUmVvcmRlclJlY2VpcHRSdWxlU2V0Q29tbWFuZE91dHB1dCxcbiAgU2VuZEJvdW5jZUNvbW1hbmQsXG4gIHR5cGUgU2VuZEJvdW5jZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZW5kQm91bmNlQ29tbWFuZE91dHB1dCxcbiAgU2VuZEJ1bGtUZW1wbGF0ZWRFbWFpbENvbW1hbmQsXG4gIHR5cGUgU2VuZEJ1bGtUZW1wbGF0ZWRFbWFpbENvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZW5kQnVsa1RlbXBsYXRlZEVtYWlsQ29tbWFuZE91dHB1dCxcbiAgU2VuZEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsQ29tbWFuZCxcbiAgdHlwZSBTZW5kQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxDb21tYW5kSW5wdXQsXG4gIHR5cGUgU2VuZEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsQ29tbWFuZE91dHB1dCxcbiAgU2VuZEVtYWlsQ29tbWFuZCxcbiAgdHlwZSBTZW5kRW1haWxDb21tYW5kSW5wdXQsXG4gIHR5cGUgU2VuZEVtYWlsQ29tbWFuZE91dHB1dCxcbiAgU2VuZFJhd0VtYWlsQ29tbWFuZCxcbiAgdHlwZSBTZW5kUmF3RW1haWxDb21tYW5kSW5wdXQsXG4gIHR5cGUgU2VuZFJhd0VtYWlsQ29tbWFuZE91dHB1dCxcbiAgU2VuZFRlbXBsYXRlZEVtYWlsQ29tbWFuZCxcbiAgdHlwZSBTZW5kVGVtcGxhdGVkRW1haWxDb21tYW5kSW5wdXQsXG4gIHR5cGUgU2VuZFRlbXBsYXRlZEVtYWlsQ29tbWFuZE91dHB1dCxcbiAgU2V0QWN0aXZlUmVjZWlwdFJ1bGVTZXRDb21tYW5kLFxuICB0eXBlIFNldEFjdGl2ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZElucHV0LFxuICB0eXBlIFNldEFjdGl2ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZE91dHB1dCxcbiAgU2V0SWRlbnRpdHlEa2ltRW5hYmxlZENvbW1hbmQsXG4gIHR5cGUgU2V0SWRlbnRpdHlEa2ltRW5hYmxlZENvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZXRJZGVudGl0eURraW1FbmFibGVkQ29tbWFuZE91dHB1dCxcbiAgU2V0SWRlbnRpdHlGZWVkYmFja0ZvcndhcmRpbmdFbmFibGVkQ29tbWFuZCxcbiAgdHlwZSBTZXRJZGVudGl0eUZlZWRiYWNrRm9yd2FyZGluZ0VuYWJsZWRDb21tYW5kSW5wdXQsXG4gIHR5cGUgU2V0SWRlbnRpdHlGZWVkYmFja0ZvcndhcmRpbmdFbmFibGVkQ29tbWFuZE91dHB1dCxcbiAgU2V0SWRlbnRpdHlIZWFkZXJzSW5Ob3RpZmljYXRpb25zRW5hYmxlZENvbW1hbmQsXG4gIHR5cGUgU2V0SWRlbnRpdHlIZWFkZXJzSW5Ob3RpZmljYXRpb25zRW5hYmxlZENvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZXRJZGVudGl0eUhlYWRlcnNJbk5vdGlmaWNhdGlvbnNFbmFibGVkQ29tbWFuZE91dHB1dCxcbiAgU2V0SWRlbnRpdHlNYWlsRnJvbURvbWFpbkNvbW1hbmQsXG4gIHR5cGUgU2V0SWRlbnRpdHlNYWlsRnJvbURvbWFpbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZXRJZGVudGl0eU1haWxGcm9tRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgU2V0SWRlbnRpdHlOb3RpZmljYXRpb25Ub3BpY0NvbW1hbmQsXG4gIHR5cGUgU2V0SWRlbnRpdHlOb3RpZmljYXRpb25Ub3BpY0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZXRJZGVudGl0eU5vdGlmaWNhdGlvblRvcGljQ29tbWFuZE91dHB1dCxcbiAgU2V0UmVjZWlwdFJ1bGVQb3NpdGlvbkNvbW1hbmQsXG4gIHR5cGUgU2V0UmVjZWlwdFJ1bGVQb3NpdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZXRSZWNlaXB0UnVsZVBvc2l0aW9uQ29tbWFuZE91dHB1dCxcbiAgVGVzdFJlbmRlclRlbXBsYXRlQ29tbWFuZCxcbiAgdHlwZSBUZXN0UmVuZGVyVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgVGVzdFJlbmRlclRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQWNjb3VudFNlbmRpbmdFbmFibGVkQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVBY2NvdW50U2VuZGluZ0VuYWJsZWRDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlQWNjb3VudFNlbmRpbmdFbmFibGVkQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQ29uZmlndXJhdGlvblNldEV2ZW50RGVzdGluYXRpb25Db21tYW5kLFxuICB0eXBlIFVwZGF0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQ29uZmlndXJhdGlvblNldFJlcHV0YXRpb25NZXRyaWNzRW5hYmxlZENvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQ29uZmlndXJhdGlvblNldFJlcHV0YXRpb25NZXRyaWNzRW5hYmxlZENvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVDb25maWd1cmF0aW9uU2V0UmVwdXRhdGlvbk1ldHJpY3NFbmFibGVkQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQ29uZmlndXJhdGlvblNldFNlbmRpbmdFbmFibGVkQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVDb25maWd1cmF0aW9uU2V0U2VuZGluZ0VuYWJsZWRDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlQ29uZmlndXJhdGlvblNldFNlbmRpbmdFbmFibGVkQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVDb25maWd1cmF0aW9uU2V0VHJhY2tpbmdPcHRpb25zQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlUmVjZWlwdFJ1bGVDb21tYW5kLFxuICB0eXBlIFVwZGF0ZVJlY2VpcHRSdWxlQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVJlY2VpcHRSdWxlQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlVGVtcGxhdGVDb21tYW5kLFxuICB0eXBlIFVwZGF0ZVRlbXBsYXRlQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgVmVyaWZ5RG9tYWluRGtpbUNvbW1hbmQsXG4gIHR5cGUgVmVyaWZ5RG9tYWluRGtpbUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBWZXJpZnlEb21haW5Ea2ltQ29tbWFuZE91dHB1dCxcbiAgVmVyaWZ5RG9tYWluSWRlbnRpdHlDb21tYW5kLFxuICB0eXBlIFZlcmlmeURvbWFpbklkZW50aXR5Q29tbWFuZElucHV0LFxuICB0eXBlIFZlcmlmeURvbWFpbklkZW50aXR5Q29tbWFuZE91dHB1dCxcbiAgVmVyaWZ5RW1haWxBZGRyZXNzQ29tbWFuZCxcbiAgdHlwZSBWZXJpZnlFbWFpbEFkZHJlc3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgVmVyaWZ5RW1haWxBZGRyZXNzQ29tbWFuZE91dHB1dCxcbiAgVmVyaWZ5RW1haWxJZGVudGl0eUNvbW1hbmQsXG4gIHR5cGUgVmVyaWZ5RW1haWxJZGVudGl0eUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBWZXJpZnlFbWFpbElkZW50aXR5Q29tbWFuZE91dHB1dCxcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zZXNcIjtcbmltcG9ydCB7IERhdGEsIEVmZmVjdCwgTGF5ZXIsIFJlY29yZCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB7XG4gIEFsbFNlcnZpY2VFcnJvcnMsXG4gIEFjY291bnRTZW5kaW5nUGF1c2VkRXJyb3IsXG4gIEFscmVhZHlFeGlzdHNFcnJvcixcbiAgQ2Fubm90RGVsZXRlRXJyb3IsXG4gIENvbmZpZ3VyYXRpb25TZXRBbHJlYWR5RXhpc3RzRXJyb3IsXG4gIENvbmZpZ3VyYXRpb25TZXREb2VzTm90RXhpc3RFcnJvcixcbiAgQ29uZmlndXJhdGlvblNldFNlbmRpbmdQYXVzZWRFcnJvcixcbiAgQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxJbnZhbGlkQ29udGVudEVycm9yLFxuICBDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQWxyZWFkeUV4aXN0c0Vycm9yLFxuICBDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlRG9lc05vdEV4aXN0RXJyb3IsXG4gIEV2ZW50RGVzdGluYXRpb25BbHJlYWR5RXhpc3RzRXJyb3IsXG4gIEV2ZW50RGVzdGluYXRpb25Eb2VzTm90RXhpc3RFcnJvcixcbiAgRnJvbUVtYWlsQWRkcmVzc05vdFZlcmlmaWVkRXJyb3IsXG4gIEludmFsaWRDbG91ZFdhdGNoRGVzdGluYXRpb25FcnJvcixcbiAgSW52YWxpZENvbmZpZ3VyYXRpb25TZXRFcnJvcixcbiAgSW52YWxpZERlbGl2ZXJ5T3B0aW9uc0Vycm9yLFxuICBJbnZhbGlkRmlyZWhvc2VEZXN0aW5hdGlvbkVycm9yLFxuICBJbnZhbGlkTGFtYmRhRnVuY3Rpb25FcnJvcixcbiAgSW52YWxpZFBvbGljeUVycm9yLFxuICBJbnZhbGlkUmVuZGVyaW5nUGFyYW1ldGVyRXJyb3IsXG4gIEludmFsaWRTM0NvbmZpZ3VyYXRpb25FcnJvcixcbiAgSW52YWxpZFNOU0Rlc3RpbmF0aW9uRXJyb3IsXG4gIEludmFsaWRTbnNUb3BpY0Vycm9yLFxuICBJbnZhbGlkVGVtcGxhdGVFcnJvcixcbiAgSW52YWxpZFRyYWNraW5nT3B0aW9uc0Vycm9yLFxuICBMaW1pdEV4Y2VlZGVkRXJyb3IsXG4gIE1haWxGcm9tRG9tYWluTm90VmVyaWZpZWRFcnJvcixcbiAgTWVzc2FnZVJlamVjdGVkRXJyb3IsXG4gIE1pc3NpbmdSZW5kZXJpbmdBdHRyaWJ1dGVFcnJvcixcbiAgUHJvZHVjdGlvbkFjY2Vzc05vdEdyYW50ZWRFcnJvcixcbiAgUnVsZURvZXNOb3RFeGlzdEVycm9yLFxuICBSdWxlU2V0RG9lc05vdEV4aXN0RXJyb3IsXG4gIFRlbXBsYXRlRG9lc05vdEV4aXN0RXJyb3IsXG4gIFRyYWNraW5nT3B0aW9uc0FscmVhZHlFeGlzdHNFcnJvcixcbiAgVHJhY2tpbmdPcHRpb25zRG9lc05vdEV4aXN0RXJyb3IsXG4gIFNka0Vycm9yLFxuICBUYWdnZWRFeGNlcHRpb24sXG59IGZyb20gXCIuL0Vycm9yc1wiO1xuaW1wb3J0IHsgU0VTQ2xpZW50SW5zdGFuY2UsIFNFU0NsaWVudEluc3RhbmNlTGF5ZXIgfSBmcm9tIFwiLi9TRVNDbGllbnRJbnN0YW5jZVwiO1xuaW1wb3J0IHtcbiAgRGVmYXVsdFNFU0NsaWVudENvbmZpZ0xheWVyLFxuICBtYWtlRGVmYXVsdFNFU0NsaWVudEluc3RhbmNlQ29uZmlnLFxuICBTRVNDbGllbnRJbnN0YW5jZUNvbmZpZyxcbn0gZnJvbSBcIi4vU0VTQ2xpZW50SW5zdGFuY2VDb25maWdcIjtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIdHRwSGFuZGxlck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHMgdGhhdCB0aGUgY29ubmVjdGlvbiBwaGFzZSBvZiBhIHJlcXVlc3RcbiAgICogbWF5IHRha2UgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGF0dGVtcHQgaXMgYWJhbmRvbmVkLlxuICAgKi9cbiAgcmVxdWVzdFRpbWVvdXQ/OiBudW1iZXI7XG59XG5cbmNvbnN0IGNvbW1hbmRzID0ge1xuICBDbG9uZVJlY2VpcHRSdWxlU2V0Q29tbWFuZCxcbiAgQ3JlYXRlQ29uZmlndXJhdGlvblNldENvbW1hbmQsXG4gIENyZWF0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZCxcbiAgQ3JlYXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmQsXG4gIENyZWF0ZUN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVDb21tYW5kLFxuICBDcmVhdGVSZWNlaXB0RmlsdGVyQ29tbWFuZCxcbiAgQ3JlYXRlUmVjZWlwdFJ1bGVDb21tYW5kLFxuICBDcmVhdGVSZWNlaXB0UnVsZVNldENvbW1hbmQsXG4gIENyZWF0ZVRlbXBsYXRlQ29tbWFuZCxcbiAgRGVsZXRlQ29uZmlndXJhdGlvblNldENvbW1hbmQsXG4gIERlbGV0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZCxcbiAgRGVsZXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmQsXG4gIERlbGV0ZUN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVDb21tYW5kLFxuICBEZWxldGVJZGVudGl0eUNvbW1hbmQsXG4gIERlbGV0ZUlkZW50aXR5UG9saWN5Q29tbWFuZCxcbiAgRGVsZXRlUmVjZWlwdEZpbHRlckNvbW1hbmQsXG4gIERlbGV0ZVJlY2VpcHRSdWxlQ29tbWFuZCxcbiAgRGVsZXRlUmVjZWlwdFJ1bGVTZXRDb21tYW5kLFxuICBEZWxldGVUZW1wbGF0ZUNvbW1hbmQsXG4gIERlbGV0ZVZlcmlmaWVkRW1haWxBZGRyZXNzQ29tbWFuZCxcbiAgRGVzY3JpYmVBY3RpdmVSZWNlaXB0UnVsZVNldENvbW1hbmQsXG4gIERlc2NyaWJlQ29uZmlndXJhdGlvblNldENvbW1hbmQsXG4gIERlc2NyaWJlUmVjZWlwdFJ1bGVDb21tYW5kLFxuICBEZXNjcmliZVJlY2VpcHRSdWxlU2V0Q29tbWFuZCxcbiAgR2V0QWNjb3VudFNlbmRpbmdFbmFibGVkQ29tbWFuZCxcbiAgR2V0Q3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmQsXG4gIEdldElkZW50aXR5RGtpbUF0dHJpYnV0ZXNDb21tYW5kLFxuICBHZXRJZGVudGl0eU1haWxGcm9tRG9tYWluQXR0cmlidXRlc0NvbW1hbmQsXG4gIEdldElkZW50aXR5Tm90aWZpY2F0aW9uQXR0cmlidXRlc0NvbW1hbmQsXG4gIEdldElkZW50aXR5UG9saWNpZXNDb21tYW5kLFxuICBHZXRJZGVudGl0eVZlcmlmaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kLFxuICBHZXRTZW5kUXVvdGFDb21tYW5kLFxuICBHZXRTZW5kU3RhdGlzdGljc0NvbW1hbmQsXG4gIEdldFRlbXBsYXRlQ29tbWFuZCxcbiAgTGlzdENvbmZpZ3VyYXRpb25TZXRzQ29tbWFuZCxcbiAgTGlzdEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVzQ29tbWFuZCxcbiAgTGlzdElkZW50aXRpZXNDb21tYW5kLFxuICBMaXN0SWRlbnRpdHlQb2xpY2llc0NvbW1hbmQsXG4gIExpc3RSZWNlaXB0RmlsdGVyc0NvbW1hbmQsXG4gIExpc3RSZWNlaXB0UnVsZVNldHNDb21tYW5kLFxuICBMaXN0VGVtcGxhdGVzQ29tbWFuZCxcbiAgTGlzdFZlcmlmaWVkRW1haWxBZGRyZXNzZXNDb21tYW5kLFxuICBQdXRDb25maWd1cmF0aW9uU2V0RGVsaXZlcnlPcHRpb25zQ29tbWFuZCxcbiAgUHV0SWRlbnRpdHlQb2xpY3lDb21tYW5kLFxuICBSZW9yZGVyUmVjZWlwdFJ1bGVTZXRDb21tYW5kLFxuICBTZW5kQm91bmNlQ29tbWFuZCxcbiAgU2VuZEJ1bGtUZW1wbGF0ZWRFbWFpbENvbW1hbmQsXG4gIFNlbmRDdXN0b21WZXJpZmljYXRpb25FbWFpbENvbW1hbmQsXG4gIFNlbmRFbWFpbENvbW1hbmQsXG4gIFNlbmRSYXdFbWFpbENvbW1hbmQsXG4gIFNlbmRUZW1wbGF0ZWRFbWFpbENvbW1hbmQsXG4gIFNldEFjdGl2ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZCxcbiAgU2V0SWRlbnRpdHlEa2ltRW5hYmxlZENvbW1hbmQsXG4gIFNldElkZW50aXR5RmVlZGJhY2tGb3J3YXJkaW5nRW5hYmxlZENvbW1hbmQsXG4gIFNldElkZW50aXR5SGVhZGVyc0luTm90aWZpY2F0aW9uc0VuYWJsZWRDb21tYW5kLFxuICBTZXRJZGVudGl0eU1haWxGcm9tRG9tYWluQ29tbWFuZCxcbiAgU2V0SWRlbnRpdHlOb3RpZmljYXRpb25Ub3BpY0NvbW1hbmQsXG4gIFNldFJlY2VpcHRSdWxlUG9zaXRpb25Db21tYW5kLFxuICBUZXN0UmVuZGVyVGVtcGxhdGVDb21tYW5kLFxuICBVcGRhdGVBY2NvdW50U2VuZGluZ0VuYWJsZWRDb21tYW5kLFxuICBVcGRhdGVDb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbkNvbW1hbmQsXG4gIFVwZGF0ZUNvbmZpZ3VyYXRpb25TZXRSZXB1dGF0aW9uTWV0cmljc0VuYWJsZWRDb21tYW5kLFxuICBVcGRhdGVDb25maWd1cmF0aW9uU2V0U2VuZGluZ0VuYWJsZWRDb21tYW5kLFxuICBVcGRhdGVDb25maWd1cmF0aW9uU2V0VHJhY2tpbmdPcHRpb25zQ29tbWFuZCxcbiAgVXBkYXRlQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmQsXG4gIFVwZGF0ZVJlY2VpcHRSdWxlQ29tbWFuZCxcbiAgVXBkYXRlVGVtcGxhdGVDb21tYW5kLFxuICBWZXJpZnlEb21haW5Ea2ltQ29tbWFuZCxcbiAgVmVyaWZ5RG9tYWluSWRlbnRpdHlDb21tYW5kLFxuICBWZXJpZnlFbWFpbEFkZHJlc3NDb21tYW5kLFxuICBWZXJpZnlFbWFpbElkZW50aXR5Q29tbWFuZCxcbn07XG5cbmludGVyZmFjZSBTRVNTZXJ2aWNlJCB7XG4gIHJlYWRvbmx5IF86IHVuaXF1ZSBzeW1ib2w7XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENsb25lUmVjZWlwdFJ1bGVTZXRDb21tYW5kfVxuICAgKi9cbiAgY2xvbmVSZWNlaXB0UnVsZVNldChcbiAgICBhcmdzOiBDbG9uZVJlY2VpcHRSdWxlU2V0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ2xvbmVSZWNlaXB0UnVsZVNldENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWxyZWFkeUV4aXN0c0Vycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFJ1bGVTZXREb2VzTm90RXhpc3RFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVDb25maWd1cmF0aW9uU2V0Q29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUNvbmZpZ3VyYXRpb25TZXQoXG4gICAgYXJnczogQ3JlYXRlQ29uZmlndXJhdGlvblNldENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUNvbmZpZ3VyYXRpb25TZXRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvbmZpZ3VyYXRpb25TZXRBbHJlYWR5RXhpc3RzRXJyb3JcbiAgICB8IEludmFsaWRDb25maWd1cmF0aW9uU2V0RXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVDb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbkNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVDb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbihcbiAgICBhcmdzOiBDcmVhdGVDb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb25maWd1cmF0aW9uU2V0RG9lc05vdEV4aXN0RXJyb3JcbiAgICB8IEV2ZW50RGVzdGluYXRpb25BbHJlYWR5RXhpc3RzRXJyb3JcbiAgICB8IEludmFsaWRDbG91ZFdhdGNoRGVzdGluYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEZpcmVob3NlRGVzdGluYXRpb25FcnJvclxuICAgIHwgSW52YWxpZFNOU0Rlc3RpbmF0aW9uRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVDb25maWd1cmF0aW9uU2V0VHJhY2tpbmdPcHRpb25zQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUNvbmZpZ3VyYXRpb25TZXRUcmFja2luZ09wdGlvbnMoXG4gICAgYXJnczogQ3JlYXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUNvbmZpZ3VyYXRpb25TZXRUcmFja2luZ09wdGlvbnNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvbmZpZ3VyYXRpb25TZXREb2VzTm90RXhpc3RFcnJvclxuICAgIHwgSW52YWxpZFRyYWNraW5nT3B0aW9uc0Vycm9yXG4gICAgfCBUcmFja2luZ09wdGlvbnNBbHJlYWR5RXhpc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlKFxuICAgIGFyZ3M6IENyZWF0ZUN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDdXN0b21WZXJpZmljYXRpb25FbWFpbEludmFsaWRDb250ZW50RXJyb3JcbiAgICB8IEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVBbHJlYWR5RXhpc3RzRXJyb3JcbiAgICB8IEZyb21FbWFpbEFkZHJlc3NOb3RWZXJpZmllZEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlUmVjZWlwdEZpbHRlckNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVSZWNlaXB0RmlsdGVyKFxuICAgIGFyZ3M6IENyZWF0ZVJlY2VpcHRGaWx0ZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVSZWNlaXB0RmlsdGVyQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEFscmVhZHlFeGlzdHNFcnJvciB8IExpbWl0RXhjZWVkZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVSZWNlaXB0UnVsZUNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVSZWNlaXB0UnVsZShcbiAgICBhcmdzOiBDcmVhdGVSZWNlaXB0UnVsZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZVJlY2VpcHRSdWxlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBbHJlYWR5RXhpc3RzRXJyb3JcbiAgICB8IEludmFsaWRMYW1iZGFGdW5jdGlvbkVycm9yXG4gICAgfCBJbnZhbGlkUzNDb25maWd1cmF0aW9uRXJyb3JcbiAgICB8IEludmFsaWRTbnNUb3BpY0Vycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFJ1bGVEb2VzTm90RXhpc3RFcnJvclxuICAgIHwgUnVsZVNldERvZXNOb3RFeGlzdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZVJlY2VpcHRSdWxlU2V0KFxuICAgIGFyZ3M6IENyZWF0ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlUmVjZWlwdFJ1bGVTZXRDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgQWxyZWFkeUV4aXN0c0Vycm9yIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZVRlbXBsYXRlQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZVRlbXBsYXRlKFxuICAgIGFyZ3M6IENyZWF0ZVRlbXBsYXRlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlVGVtcGxhdGVDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgQWxyZWFkeUV4aXN0c0Vycm9yIHwgSW52YWxpZFRlbXBsYXRlRXJyb3IgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQ29uZmlndXJhdGlvblNldENvbW1hbmR9XG4gICAqL1xuICBkZWxldGVDb25maWd1cmF0aW9uU2V0KFxuICAgIGFyZ3M6IERlbGV0ZUNvbmZpZ3VyYXRpb25TZXRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVDb25maWd1cmF0aW9uU2V0Q29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IENvbmZpZ3VyYXRpb25TZXREb2VzTm90RXhpc3RFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVDb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbkNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVDb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbihcbiAgICBhcmdzOiBEZWxldGVDb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUNvbmZpZ3VyYXRpb25TZXRFdmVudERlc3RpbmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb25maWd1cmF0aW9uU2V0RG9lc05vdEV4aXN0RXJyb3JcbiAgICB8IEV2ZW50RGVzdGluYXRpb25Eb2VzTm90RXhpc3RFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVDb25maWd1cmF0aW9uU2V0VHJhY2tpbmdPcHRpb25zQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUNvbmZpZ3VyYXRpb25TZXRUcmFja2luZ09wdGlvbnMoXG4gICAgYXJnczogRGVsZXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUNvbmZpZ3VyYXRpb25TZXRUcmFja2luZ09wdGlvbnNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvbmZpZ3VyYXRpb25TZXREb2VzTm90RXhpc3RFcnJvclxuICAgIHwgVHJhY2tpbmdPcHRpb25zRG9lc05vdEV4aXN0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlKFxuICAgIGFyZ3M6IERlbGV0ZUN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVJZGVudGl0eUNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVJZGVudGl0eShcbiAgICBhcmdzOiBEZWxldGVJZGVudGl0eUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PERlbGV0ZUlkZW50aXR5Q29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVJZGVudGl0eVBvbGljeUNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVJZGVudGl0eVBvbGljeShcbiAgICBhcmdzOiBEZWxldGVJZGVudGl0eVBvbGljeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PERlbGV0ZUlkZW50aXR5UG9saWN5Q29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVSZWNlaXB0RmlsdGVyQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVJlY2VpcHRGaWx0ZXIoXG4gICAgYXJnczogRGVsZXRlUmVjZWlwdEZpbHRlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PERlbGV0ZVJlY2VpcHRGaWx0ZXJDb21tYW5kT3V0cHV0LCBTZGtFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZVJlY2VpcHRSdWxlQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVJlY2VpcHRSdWxlKFxuICAgIGFyZ3M6IERlbGV0ZVJlY2VpcHRSdWxlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlUmVjZWlwdFJ1bGVDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUnVsZVNldERvZXNOb3RFeGlzdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVJlY2VpcHRSdWxlU2V0KFxuICAgIGFyZ3M6IERlbGV0ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlUmVjZWlwdFJ1bGVTZXRDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgQ2Fubm90RGVsZXRlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlVGVtcGxhdGVDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlVGVtcGxhdGUoXG4gICAgYXJnczogRGVsZXRlVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxEZWxldGVUZW1wbGF0ZUNvbW1hbmRPdXRwdXQsIFNka0Vycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlVmVyaWZpZWRFbWFpbEFkZHJlc3NDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlVmVyaWZpZWRFbWFpbEFkZHJlc3MoXG4gICAgYXJnczogRGVsZXRlVmVyaWZpZWRFbWFpbEFkZHJlc3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxEZWxldGVWZXJpZmllZEVtYWlsQWRkcmVzc0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVBY3RpdmVSZWNlaXB0UnVsZVNldENvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZUFjdGl2ZVJlY2VpcHRSdWxlU2V0KFxuICAgIGFyZ3M6IERlc2NyaWJlQWN0aXZlUmVjZWlwdFJ1bGVTZXRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxEZXNjcmliZUFjdGl2ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZUNvbmZpZ3VyYXRpb25TZXRDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVDb25maWd1cmF0aW9uU2V0KFxuICAgIGFyZ3M6IERlc2NyaWJlQ29uZmlndXJhdGlvblNldENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlQ29uZmlndXJhdGlvblNldENvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBDb25maWd1cmF0aW9uU2V0RG9lc05vdEV4aXN0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVSZWNlaXB0UnVsZUNvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZVJlY2VpcHRSdWxlKFxuICAgIGFyZ3M6IERlc2NyaWJlUmVjZWlwdFJ1bGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZVJlY2VpcHRSdWxlQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFJ1bGVEb2VzTm90RXhpc3RFcnJvciB8IFJ1bGVTZXREb2VzTm90RXhpc3RFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZVJlY2VpcHRSdWxlU2V0Q29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlUmVjZWlwdFJ1bGVTZXQoXG4gICAgYXJnczogRGVzY3JpYmVSZWNlaXB0UnVsZVNldENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlUmVjZWlwdFJ1bGVTZXRDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUnVsZVNldERvZXNOb3RFeGlzdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEFjY291bnRTZW5kaW5nRW5hYmxlZENvbW1hbmR9XG4gICAqL1xuICBnZXRBY2NvdW50U2VuZGluZ0VuYWJsZWQoXG4gICAgYXJnczogR2V0QWNjb3VudFNlbmRpbmdFbmFibGVkQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8R2V0QWNjb3VudFNlbmRpbmdFbmFibGVkQ29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQ29tbWFuZH1cbiAgICovXG4gIGdldEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGUoXG4gICAgYXJnczogR2V0Q3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZURvZXNOb3RFeGlzdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldElkZW50aXR5RGtpbUF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0SWRlbnRpdHlEa2ltQXR0cmlidXRlcyhcbiAgICBhcmdzOiBHZXRJZGVudGl0eURraW1BdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8R2V0SWRlbnRpdHlEa2ltQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0SWRlbnRpdHlNYWlsRnJvbURvbWFpbkF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0SWRlbnRpdHlNYWlsRnJvbURvbWFpbkF0dHJpYnV0ZXMoXG4gICAgYXJnczogR2V0SWRlbnRpdHlNYWlsRnJvbURvbWFpbkF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxHZXRJZGVudGl0eU1haWxGcm9tRG9tYWluQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0SWRlbnRpdHlOb3RpZmljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIGdldElkZW50aXR5Tm90aWZpY2F0aW9uQXR0cmlidXRlcyhcbiAgICBhcmdzOiBHZXRJZGVudGl0eU5vdGlmaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxHZXRJZGVudGl0eU5vdGlmaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LCBTZGtFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldElkZW50aXR5UG9saWNpZXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0SWRlbnRpdHlQb2xpY2llcyhcbiAgICBhcmdzOiBHZXRJZGVudGl0eVBvbGljaWVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8R2V0SWRlbnRpdHlQb2xpY2llc0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0SWRlbnRpdHlWZXJpZmljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIGdldElkZW50aXR5VmVyaWZpY2F0aW9uQXR0cmlidXRlcyhcbiAgICBhcmdzOiBHZXRJZGVudGl0eVZlcmlmaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxHZXRJZGVudGl0eVZlcmlmaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LCBTZGtFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFNlbmRRdW90YUNvbW1hbmR9XG4gICAqL1xuICBnZXRTZW5kUXVvdGEoXG4gICAgYXJnczogR2V0U2VuZFF1b3RhQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8R2V0U2VuZFF1b3RhQ29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRTZW5kU3RhdGlzdGljc0NvbW1hbmR9XG4gICAqL1xuICBnZXRTZW5kU3RhdGlzdGljcyhcbiAgICBhcmdzOiBHZXRTZW5kU3RhdGlzdGljc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PEdldFNlbmRTdGF0aXN0aWNzQ29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRUZW1wbGF0ZUNvbW1hbmR9XG4gICAqL1xuICBnZXRUZW1wbGF0ZShcbiAgICBhcmdzOiBHZXRUZW1wbGF0ZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFRlbXBsYXRlRG9lc05vdEV4aXN0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdENvbmZpZ3VyYXRpb25TZXRzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RDb25maWd1cmF0aW9uU2V0cyhcbiAgICBhcmdzOiBMaXN0Q29uZmlndXJhdGlvblNldHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxMaXN0Q29uZmlndXJhdGlvblNldHNDb21tYW5kT3V0cHV0LCBTZGtFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0Q3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZXMoXG4gICAgYXJnczogTGlzdEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8TGlzdEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVzQ29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0SWRlbnRpdGllc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0SWRlbnRpdGllcyhcbiAgICBhcmdzOiBMaXN0SWRlbnRpdGllc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PExpc3RJZGVudGl0aWVzQ29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0SWRlbnRpdHlQb2xpY2llc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0SWRlbnRpdHlQb2xpY2llcyhcbiAgICBhcmdzOiBMaXN0SWRlbnRpdHlQb2xpY2llc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PExpc3RJZGVudGl0eVBvbGljaWVzQ29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0UmVjZWlwdEZpbHRlcnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFJlY2VpcHRGaWx0ZXJzKFxuICAgIGFyZ3M6IExpc3RSZWNlaXB0RmlsdGVyc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PExpc3RSZWNlaXB0RmlsdGVyc0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFJlY2VpcHRSdWxlU2V0c0NvbW1hbmR9XG4gICAqL1xuICBsaXN0UmVjZWlwdFJ1bGVTZXRzKFxuICAgIGFyZ3M6IExpc3RSZWNlaXB0UnVsZVNldHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxMaXN0UmVjZWlwdFJ1bGVTZXRzQ29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VGVtcGxhdGVzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RUZW1wbGF0ZXMoXG4gICAgYXJnczogTGlzdFRlbXBsYXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PExpc3RUZW1wbGF0ZXNDb21tYW5kT3V0cHV0LCBTZGtFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RWZXJpZmllZEVtYWlsQWRkcmVzc2VzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RWZXJpZmllZEVtYWlsQWRkcmVzc2VzKFxuICAgIGFyZ3M6IExpc3RWZXJpZmllZEVtYWlsQWRkcmVzc2VzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8TGlzdFZlcmlmaWVkRW1haWxBZGRyZXNzZXNDb21tYW5kT3V0cHV0LCBTZGtFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dENvbmZpZ3VyYXRpb25TZXREZWxpdmVyeU9wdGlvbnNDb21tYW5kfVxuICAgKi9cbiAgcHV0Q29uZmlndXJhdGlvblNldERlbGl2ZXJ5T3B0aW9ucyhcbiAgICBhcmdzOiBQdXRDb25maWd1cmF0aW9uU2V0RGVsaXZlcnlPcHRpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHV0Q29uZmlndXJhdGlvblNldERlbGl2ZXJ5T3B0aW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBDb25maWd1cmF0aW9uU2V0RG9lc05vdEV4aXN0RXJyb3IgfCBJbnZhbGlkRGVsaXZlcnlPcHRpb25zRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0SWRlbnRpdHlQb2xpY3lDb21tYW5kfVxuICAgKi9cbiAgcHV0SWRlbnRpdHlQb2xpY3koXG4gICAgYXJnczogUHV0SWRlbnRpdHlQb2xpY3lDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXRJZGVudGl0eVBvbGljeUNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBJbnZhbGlkUG9saWN5RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmVvcmRlclJlY2VpcHRSdWxlU2V0Q29tbWFuZH1cbiAgICovXG4gIHJlb3JkZXJSZWNlaXB0UnVsZVNldChcbiAgICBhcmdzOiBSZW9yZGVyUmVjZWlwdFJ1bGVTZXRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZW9yZGVyUmVjZWlwdFJ1bGVTZXRDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUnVsZURvZXNOb3RFeGlzdEVycm9yIHwgUnVsZVNldERvZXNOb3RFeGlzdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNlbmRCb3VuY2VDb21tYW5kfVxuICAgKi9cbiAgc2VuZEJvdW5jZShcbiAgICBhcmdzOiBTZW5kQm91bmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8U2VuZEJvdW5jZUNvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgTWVzc2FnZVJlamVjdGVkRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZW5kQnVsa1RlbXBsYXRlZEVtYWlsQ29tbWFuZH1cbiAgICovXG4gIHNlbmRCdWxrVGVtcGxhdGVkRW1haWwoXG4gICAgYXJnczogU2VuZEJ1bGtUZW1wbGF0ZWRFbWFpbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNlbmRCdWxrVGVtcGxhdGVkRW1haWxDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFjY291bnRTZW5kaW5nUGF1c2VkRXJyb3JcbiAgICB8IENvbmZpZ3VyYXRpb25TZXREb2VzTm90RXhpc3RFcnJvclxuICAgIHwgQ29uZmlndXJhdGlvblNldFNlbmRpbmdQYXVzZWRFcnJvclxuICAgIHwgTWFpbEZyb21Eb21haW5Ob3RWZXJpZmllZEVycm9yXG4gICAgfCBNZXNzYWdlUmVqZWN0ZWRFcnJvclxuICAgIHwgVGVtcGxhdGVEb2VzTm90RXhpc3RFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZW5kQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxDb21tYW5kfVxuICAgKi9cbiAgc2VuZEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsKFxuICAgIGFyZ3M6IFNlbmRDdXN0b21WZXJpZmljYXRpb25FbWFpbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNlbmRDdXN0b21WZXJpZmljYXRpb25FbWFpbENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29uZmlndXJhdGlvblNldERvZXNOb3RFeGlzdEVycm9yXG4gICAgfCBDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlRG9lc05vdEV4aXN0RXJyb3JcbiAgICB8IEZyb21FbWFpbEFkZHJlc3NOb3RWZXJpZmllZEVycm9yXG4gICAgfCBNZXNzYWdlUmVqZWN0ZWRFcnJvclxuICAgIHwgUHJvZHVjdGlvbkFjY2Vzc05vdEdyYW50ZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZW5kRW1haWxDb21tYW5kfVxuICAgKi9cbiAgc2VuZEVtYWlsKFxuICAgIGFyZ3M6IFNlbmRFbWFpbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNlbmRFbWFpbENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWNjb3VudFNlbmRpbmdQYXVzZWRFcnJvclxuICAgIHwgQ29uZmlndXJhdGlvblNldERvZXNOb3RFeGlzdEVycm9yXG4gICAgfCBDb25maWd1cmF0aW9uU2V0U2VuZGluZ1BhdXNlZEVycm9yXG4gICAgfCBNYWlsRnJvbURvbWFpbk5vdFZlcmlmaWVkRXJyb3JcbiAgICB8IE1lc3NhZ2VSZWplY3RlZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNlbmRSYXdFbWFpbENvbW1hbmR9XG4gICAqL1xuICBzZW5kUmF3RW1haWwoXG4gICAgYXJnczogU2VuZFJhd0VtYWlsQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU2VuZFJhd0VtYWlsQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2NvdW50U2VuZGluZ1BhdXNlZEVycm9yXG4gICAgfCBDb25maWd1cmF0aW9uU2V0RG9lc05vdEV4aXN0RXJyb3JcbiAgICB8IENvbmZpZ3VyYXRpb25TZXRTZW5kaW5nUGF1c2VkRXJyb3JcbiAgICB8IE1haWxGcm9tRG9tYWluTm90VmVyaWZpZWRFcnJvclxuICAgIHwgTWVzc2FnZVJlamVjdGVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2VuZFRlbXBsYXRlZEVtYWlsQ29tbWFuZH1cbiAgICovXG4gIHNlbmRUZW1wbGF0ZWRFbWFpbChcbiAgICBhcmdzOiBTZW5kVGVtcGxhdGVkRW1haWxDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTZW5kVGVtcGxhdGVkRW1haWxDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFjY291bnRTZW5kaW5nUGF1c2VkRXJyb3JcbiAgICB8IENvbmZpZ3VyYXRpb25TZXREb2VzTm90RXhpc3RFcnJvclxuICAgIHwgQ29uZmlndXJhdGlvblNldFNlbmRpbmdQYXVzZWRFcnJvclxuICAgIHwgTWFpbEZyb21Eb21haW5Ob3RWZXJpZmllZEVycm9yXG4gICAgfCBNZXNzYWdlUmVqZWN0ZWRFcnJvclxuICAgIHwgVGVtcGxhdGVEb2VzTm90RXhpc3RFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRBY3RpdmVSZWNlaXB0UnVsZVNldENvbW1hbmR9XG4gICAqL1xuICBzZXRBY3RpdmVSZWNlaXB0UnVsZVNldChcbiAgICBhcmdzOiBTZXRBY3RpdmVSZWNlaXB0UnVsZVNldENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNldEFjdGl2ZVJlY2VpcHRSdWxlU2V0Q29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFJ1bGVTZXREb2VzTm90RXhpc3RFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRJZGVudGl0eURraW1FbmFibGVkQ29tbWFuZH1cbiAgICovXG4gIHNldElkZW50aXR5RGtpbUVuYWJsZWQoXG4gICAgYXJnczogU2V0SWRlbnRpdHlEa2ltRW5hYmxlZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFNldElkZW50aXR5RGtpbUVuYWJsZWRDb21tYW5kT3V0cHV0LCBTZGtFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNldElkZW50aXR5RmVlZGJhY2tGb3J3YXJkaW5nRW5hYmxlZENvbW1hbmR9XG4gICAqL1xuICBzZXRJZGVudGl0eUZlZWRiYWNrRm9yd2FyZGluZ0VuYWJsZWQoXG4gICAgYXJnczogU2V0SWRlbnRpdHlGZWVkYmFja0ZvcndhcmRpbmdFbmFibGVkQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8U2V0SWRlbnRpdHlGZWVkYmFja0ZvcndhcmRpbmdFbmFibGVkQ29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRJZGVudGl0eUhlYWRlcnNJbk5vdGlmaWNhdGlvbnNFbmFibGVkQ29tbWFuZH1cbiAgICovXG4gIHNldElkZW50aXR5SGVhZGVyc0luTm90aWZpY2F0aW9uc0VuYWJsZWQoXG4gICAgYXJnczogU2V0SWRlbnRpdHlIZWFkZXJzSW5Ob3RpZmljYXRpb25zRW5hYmxlZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNldElkZW50aXR5SGVhZGVyc0luTm90aWZpY2F0aW9uc0VuYWJsZWRDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNldElkZW50aXR5TWFpbEZyb21Eb21haW5Db21tYW5kfVxuICAgKi9cbiAgc2V0SWRlbnRpdHlNYWlsRnJvbURvbWFpbihcbiAgICBhcmdzOiBTZXRJZGVudGl0eU1haWxGcm9tRG9tYWluQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8U2V0SWRlbnRpdHlNYWlsRnJvbURvbWFpbkNvbW1hbmRPdXRwdXQsIFNka0Vycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2V0SWRlbnRpdHlOb3RpZmljYXRpb25Ub3BpY0NvbW1hbmR9XG4gICAqL1xuICBzZXRJZGVudGl0eU5vdGlmaWNhdGlvblRvcGljKFxuICAgIGFyZ3M6IFNldElkZW50aXR5Tm90aWZpY2F0aW9uVG9waWNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxTZXRJZGVudGl0eU5vdGlmaWNhdGlvblRvcGljQ29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRSZWNlaXB0UnVsZVBvc2l0aW9uQ29tbWFuZH1cbiAgICovXG4gIHNldFJlY2VpcHRSdWxlUG9zaXRpb24oXG4gICAgYXJnczogU2V0UmVjZWlwdFJ1bGVQb3NpdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNldFJlY2VpcHRSdWxlUG9zaXRpb25Db21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUnVsZURvZXNOb3RFeGlzdEVycm9yIHwgUnVsZVNldERvZXNOb3RFeGlzdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFRlc3RSZW5kZXJUZW1wbGF0ZUNvbW1hbmR9XG4gICAqL1xuICB0ZXN0UmVuZGVyVGVtcGxhdGUoXG4gICAgYXJnczogVGVzdFJlbmRlclRlbXBsYXRlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVGVzdFJlbmRlclRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUmVuZGVyaW5nUGFyYW1ldGVyRXJyb3JcbiAgICB8IE1pc3NpbmdSZW5kZXJpbmdBdHRyaWJ1dGVFcnJvclxuICAgIHwgVGVtcGxhdGVEb2VzTm90RXhpc3RFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVBY2NvdW50U2VuZGluZ0VuYWJsZWRDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlQWNjb3VudFNlbmRpbmdFbmFibGVkKFxuICAgIGFyZ3M6IFVwZGF0ZUFjY291bnRTZW5kaW5nRW5hYmxlZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFVwZGF0ZUFjY291bnRTZW5kaW5nRW5hYmxlZENvbW1hbmRPdXRwdXQsIFNka0Vycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlQ29uZmlndXJhdGlvblNldEV2ZW50RGVzdGluYXRpb25Db21tYW5kfVxuICAgKi9cbiAgdXBkYXRlQ29uZmlndXJhdGlvblNldEV2ZW50RGVzdGluYXRpb24oXG4gICAgYXJnczogVXBkYXRlQ29uZmlndXJhdGlvblNldEV2ZW50RGVzdGluYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVDb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29uZmlndXJhdGlvblNldERvZXNOb3RFeGlzdEVycm9yXG4gICAgfCBFdmVudERlc3RpbmF0aW9uRG9lc05vdEV4aXN0RXJyb3JcbiAgICB8IEludmFsaWRDbG91ZFdhdGNoRGVzdGluYXRpb25FcnJvclxuICAgIHwgSW52YWxpZEZpcmVob3NlRGVzdGluYXRpb25FcnJvclxuICAgIHwgSW52YWxpZFNOU0Rlc3RpbmF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlQ29uZmlndXJhdGlvblNldFJlcHV0YXRpb25NZXRyaWNzRW5hYmxlZENvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVDb25maWd1cmF0aW9uU2V0UmVwdXRhdGlvbk1ldHJpY3NFbmFibGVkKFxuICAgIGFyZ3M6IFVwZGF0ZUNvbmZpZ3VyYXRpb25TZXRSZXB1dGF0aW9uTWV0cmljc0VuYWJsZWRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVDb25maWd1cmF0aW9uU2V0UmVwdXRhdGlvbk1ldHJpY3NFbmFibGVkQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IENvbmZpZ3VyYXRpb25TZXREb2VzTm90RXhpc3RFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVDb25maWd1cmF0aW9uU2V0U2VuZGluZ0VuYWJsZWRDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlQ29uZmlndXJhdGlvblNldFNlbmRpbmdFbmFibGVkKFxuICAgIGFyZ3M6IFVwZGF0ZUNvbmZpZ3VyYXRpb25TZXRTZW5kaW5nRW5hYmxlZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUNvbmZpZ3VyYXRpb25TZXRTZW5kaW5nRW5hYmxlZENvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBDb25maWd1cmF0aW9uU2V0RG9lc05vdEV4aXN0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlQ29uZmlndXJhdGlvblNldFRyYWNraW5nT3B0aW9uc0NvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVDb25maWd1cmF0aW9uU2V0VHJhY2tpbmdPcHRpb25zKFxuICAgIGFyZ3M6IFVwZGF0ZUNvbmZpZ3VyYXRpb25TZXRUcmFja2luZ09wdGlvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVDb25maWd1cmF0aW9uU2V0VHJhY2tpbmdPcHRpb25zQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb25maWd1cmF0aW9uU2V0RG9lc05vdEV4aXN0RXJyb3JcbiAgICB8IEludmFsaWRUcmFja2luZ09wdGlvbnNFcnJvclxuICAgIHwgVHJhY2tpbmdPcHRpb25zRG9lc05vdEV4aXN0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlQ3VzdG9tVmVyaWZpY2F0aW9uRW1haWxUZW1wbGF0ZUNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlKFxuICAgIGFyZ3M6IFVwZGF0ZUN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVDdXN0b21WZXJpZmljYXRpb25FbWFpbFRlbXBsYXRlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDdXN0b21WZXJpZmljYXRpb25FbWFpbEludmFsaWRDb250ZW50RXJyb3JcbiAgICB8IEN1c3RvbVZlcmlmaWNhdGlvbkVtYWlsVGVtcGxhdGVEb2VzTm90RXhpc3RFcnJvclxuICAgIHwgRnJvbUVtYWlsQWRkcmVzc05vdFZlcmlmaWVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlUmVjZWlwdFJ1bGVDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlUmVjZWlwdFJ1bGUoXG4gICAgYXJnczogVXBkYXRlUmVjZWlwdFJ1bGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVSZWNlaXB0UnVsZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZExhbWJkYUZ1bmN0aW9uRXJyb3JcbiAgICB8IEludmFsaWRTM0NvbmZpZ3VyYXRpb25FcnJvclxuICAgIHwgSW52YWxpZFNuc1RvcGljRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgUnVsZURvZXNOb3RFeGlzdEVycm9yXG4gICAgfCBSdWxlU2V0RG9lc05vdEV4aXN0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlVGVtcGxhdGVDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlVGVtcGxhdGUoXG4gICAgYXJnczogVXBkYXRlVGVtcGxhdGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVUZW1wbGF0ZUNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBJbnZhbGlkVGVtcGxhdGVFcnJvciB8IFRlbXBsYXRlRG9lc05vdEV4aXN0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVmVyaWZ5RG9tYWluRGtpbUNvbW1hbmR9XG4gICAqL1xuICB2ZXJpZnlEb21haW5Ea2ltKFxuICAgIGFyZ3M6IFZlcmlmeURvbWFpbkRraW1Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxWZXJpZnlEb21haW5Ea2ltQ29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBWZXJpZnlEb21haW5JZGVudGl0eUNvbW1hbmR9XG4gICAqL1xuICB2ZXJpZnlEb21haW5JZGVudGl0eShcbiAgICBhcmdzOiBWZXJpZnlEb21haW5JZGVudGl0eUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFZlcmlmeURvbWFpbklkZW50aXR5Q29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBWZXJpZnlFbWFpbEFkZHJlc3NDb21tYW5kfVxuICAgKi9cbiAgdmVyaWZ5RW1haWxBZGRyZXNzKFxuICAgIGFyZ3M6IFZlcmlmeUVtYWlsQWRkcmVzc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFZlcmlmeUVtYWlsQWRkcmVzc0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVmVyaWZ5RW1haWxJZGVudGl0eUNvbW1hbmR9XG4gICAqL1xuICB2ZXJpZnlFbWFpbElkZW50aXR5KFxuICAgIGFyZ3M6IFZlcmlmeUVtYWlsSWRlbnRpdHlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxWZXJpZnlFbWFpbElkZW50aXR5Q29tbWFuZE91dHB1dCwgU2RrRXJyb3I+O1xufVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGNvbnN0cnVjdG9yc1xuICovXG5leHBvcnQgY29uc3QgbWFrZVNFU1NlcnZpY2UgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoXykge1xuICBjb25zdCBjbGllbnQgPSB5aWVsZCogXyhTRVNDbGllbnRJbnN0YW5jZSk7XG5cbiAgcmV0dXJuIFJlY29yZC50b0VudHJpZXMoY29tbWFuZHMpLnJlZHVjZSgoYWNjLCBbY29tbWFuZF0pID0+IHtcbiAgICBjb25zdCBDb21tYW5kQ3RvciA9IGNvbW1hbmRzW2NvbW1hbmRdIGFzIGFueTtcbiAgICBjb25zdCBtZXRob2RJbXBsID0gKGFyZ3M6IGFueSwgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucykgPT5cbiAgICAgIEVmZmVjdC50cnlQcm9taXNlKHtcbiAgICAgICAgdHJ5OiAoYWJvcnRTaWduYWwpID0+XG4gICAgICAgICAgY2xpZW50LnNlbmQobmV3IENvbW1hbmRDdG9yKGFyZ3MpLCB7XG4gICAgICAgICAgICAuLi4ob3B0aW9ucyA/PyB7fSksXG4gICAgICAgICAgICBhYm9ydFNpZ25hbCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2g6IChlKSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZSBpbnN0YW5jZW9mIFNFU1NlcnZpY2VFeGNlcHRpb24gJiZcbiAgICAgICAgICAgIEFsbFNlcnZpY2VFcnJvcnMuaW5jbHVkZXMoZS5uYW1lKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgU2VydmljZUV4Y2VwdGlvbiA9IERhdGEudGFnZ2VkPFxuICAgICAgICAgICAgICBUYWdnZWRFeGNlcHRpb248U0VTU2VydmljZUV4Y2VwdGlvbj5cbiAgICAgICAgICAgID4oZS5uYW1lKTtcblxuICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2VFeGNlcHRpb24oe1xuICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIHN0YWNrOiBlLnN0YWNrLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBTZGtFcnJvcih7XG4gICAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICAgIG5hbWU6IFwiU2RrRXJyb3JcIixcbiAgICAgICAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICAgICAgICBzdGFjazogZS5zdGFjayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IChjb21tYW5kWzBdLnRvTG93ZXJDYXNlKCkgKyBjb21tYW5kLnNsaWNlKDEpKS5yZXBsYWNlKFxuICAgICAgL0NvbW1hbmQkLyxcbiAgICAgIFwiXCIsXG4gICAgKTtcbiAgICByZXR1cm4geyAuLi5hY2MsIFttZXRob2ROYW1lXTogbWV0aG9kSW1wbCB9O1xuICB9LCB7fSkgYXMgU0VTU2VydmljZSQ7XG59KTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBtb2RlbHNcbiAqL1xuZXhwb3J0IGNsYXNzIFNFU1NlcnZpY2UgZXh0ZW5kcyBFZmZlY3QuVGFnKFwiQGVmZmVjdC1hd3MvY2xpZW50LXNlcy9TRVNTZXJ2aWNlXCIpPFxuICBTRVNTZXJ2aWNlLFxuICBTRVNTZXJ2aWNlJFxuPigpIHtcbiAgc3RhdGljIHJlYWRvbmx5IGRlZmF1bHRMYXllciA9IExheWVyLmVmZmVjdCh0aGlzLCBtYWtlU0VTU2VydmljZSkucGlwZShcbiAgICBMYXllci5wcm92aWRlKFNFU0NsaWVudEluc3RhbmNlTGF5ZXIpLFxuICAgIExheWVyLnByb3ZpZGUoRGVmYXVsdFNFU0NsaWVudENvbmZpZ0xheWVyKSxcbiAgKTtcbiAgc3RhdGljIHJlYWRvbmx5IGxheWVyID0gKGNvbmZpZzogU0VTQ2xpZW50Q29uZmlnKSA9PlxuICAgIExheWVyLmVmZmVjdCh0aGlzLCBtYWtlU0VTU2VydmljZSkucGlwZShcbiAgICAgIExheWVyLnByb3ZpZGUoU0VTQ2xpZW50SW5zdGFuY2VMYXllciksXG4gICAgICBMYXllci5wcm92aWRlKFxuICAgICAgICBMYXllci5lZmZlY3QoXG4gICAgICAgICAgU0VTQ2xpZW50SW5zdGFuY2VDb25maWcsXG4gICAgICAgICAgbWFrZURlZmF1bHRTRVNDbGllbnRJbnN0YW5jZUNvbmZpZy5waXBlKFxuICAgICAgICAgICAgRWZmZWN0Lm1hcCgoZGVmYXVsdENvbmZpZykgPT4gKHsgLi4uZGVmYXVsdENvbmZpZywgLi4uY29uZmlnIH0pKSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApO1xuICBzdGF0aWMgcmVhZG9ubHkgYmFzZUxheWVyID0gKFxuICAgIGV2YWx1YXRlOiAoZGVmYXVsdENvbmZpZzogU0VTQ2xpZW50Q29uZmlnKSA9PiBTRVNDbGllbnQsXG4gICkgPT5cbiAgICBMYXllci5lZmZlY3QodGhpcywgbWFrZVNFU1NlcnZpY2UpLnBpcGUoXG4gICAgICBMYXllci5wcm92aWRlKFxuICAgICAgICBMYXllci5lZmZlY3QoXG4gICAgICAgICAgU0VTQ2xpZW50SW5zdGFuY2UsXG4gICAgICAgICAgRWZmZWN0Lm1hcChtYWtlRGVmYXVsdFNFU0NsaWVudEluc3RhbmNlQ29uZmlnLCBldmFsdWF0ZSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICk7XG59XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbW9kZWxzXG4gKiBAYWxpYXMgU0VTU2VydmljZVxuICovXG5leHBvcnQgY29uc3QgU0VTID0gU0VTU2VydmljZTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqIEBkZXByZWNhdGVkIHVzZSBTRVMuYmFzZUxheWVyIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNvbnN0IEJhc2VTRVNTZXJ2aWNlTGF5ZXIgPSBMYXllci5lZmZlY3QoU0VTU2VydmljZSwgbWFrZVNFU1NlcnZpY2UpO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICogQGRlcHJlY2F0ZWQgdXNlIFNFUy5sYXllciBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjb25zdCBTRVNTZXJ2aWNlTGF5ZXIgPSBCYXNlU0VTU2VydmljZUxheWVyLnBpcGUoXG4gIExheWVyLnByb3ZpZGUoU0VTQ2xpZW50SW5zdGFuY2VMYXllciksXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICogQGRlcHJlY2F0ZWQgdXNlIFNFUy5kZWZhdWx0TGF5ZXIgaW5zdGVhZFxuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdFNFU1NlcnZpY2VMYXllciA9IFNFU1NlcnZpY2UuZGVmYXVsdExheWVyO1xuIl19