cdk8s-aws-cdk 0.0.5

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 (94) hide show
  1. package/.gitattributes +21 -0
  2. package/.jsii +4392 -0
  3. package/API.md +2204 -0
  4. package/LICENSE +202 -0
  5. package/README.md +201 -0
  6. package/changelog.md +2 -0
  7. package/examples/rds-db-instance/README.md +0 -0
  8. package/examples/rds-db-instance/cdk.out/RdsDBInstanceStack.assets.json +19 -0
  9. package/examples/rds-db-instance/cdk.out/RdsDBInstanceStack.template.json +86 -0
  10. package/examples/rds-db-instance/cdk.out/cdk.out +1 -0
  11. package/examples/rds-db-instance/cdk.out/manifest.json +230 -0
  12. package/examples/rds-db-instance/cdk.out/tree.json +171 -0
  13. package/examples/rds-db-instance/main.ts +136 -0
  14. package/lib/adapter.d.ts +37 -0
  15. package/lib/adapter.d.ts.map +1 -0
  16. package/lib/adapter.js +196 -0
  17. package/lib/chart.d.ts +19 -0
  18. package/lib/chart.d.ts.map +1 -0
  19. package/lib/chart.js +63 -0
  20. package/lib/imports/cloudcontrol.services.k8s.aws.d.ts +106 -0
  21. package/lib/imports/cloudcontrol.services.k8s.aws.d.ts.map +1 -0
  22. package/lib/imports/cloudcontrol.services.k8s.aws.js +92 -0
  23. package/lib/imports/dynamotables-dynamodb.services.k8s.aws.d.ts +430 -0
  24. package/lib/imports/dynamotables-dynamodb.services.k8s.aws.d.ts.map +1 -0
  25. package/lib/imports/dynamotables-dynamodb.services.k8s.aws.js +314 -0
  26. package/lib/imports/ec2securitygroups-ec2.services.k8s.aws.d.ts +173 -0
  27. package/lib/imports/ec2securitygroups-ec2.services.k8s.aws.d.ts.map +1 -0
  28. package/lib/imports/ec2securitygroups-ec2.services.k8s.aws.js +156 -0
  29. package/lib/imports/fieldexports-services.k8s.aws.d.ts +159 -0
  30. package/lib/imports/fieldexports-services.k8s.aws.d.ts.map +1 -0
  31. package/lib/imports/fieldexports-services.k8s.aws.js +151 -0
  32. package/lib/imports/iampolicies-iam.services.k8s.aws.d.ts +135 -0
  33. package/lib/imports/iampolicies-iam.services.k8s.aws.d.ts.map +1 -0
  34. package/lib/imports/iampolicies-iam.services.k8s.aws.js +109 -0
  35. package/lib/imports/iamroles-iam.services.k8s.aws.d.ts +143 -0
  36. package/lib/imports/iamroles-iam.services.k8s.aws.d.ts.map +1 -0
  37. package/lib/imports/iamroles-iam.services.k8s.aws.js +112 -0
  38. package/lib/imports/k8s.d.ts +18619 -0
  39. package/lib/imports/k8s.d.ts.map +1 -0
  40. package/lib/imports/k8s.js +14701 -0
  41. package/lib/imports/lambdaeventsourcemappings-lambda.services.k8s.aws.d.ts +280 -0
  42. package/lib/imports/lambdaeventsourcemappings-lambda.services.k8s.aws.d.ts.map +1 -0
  43. package/lib/imports/lambdaeventsourcemappings-lambda.services.k8s.aws.js +183 -0
  44. package/lib/imports/lambdafunctions-lambda.services.k8s.aws.d.ts +343 -0
  45. package/lib/imports/lambdafunctions-lambda.services.k8s.aws.d.ts.map +1 -0
  46. package/lib/imports/lambdafunctions-lambda.services.k8s.aws.js +225 -0
  47. package/lib/imports/rdsdbinstances-rds.services.k8s.aws.d.ts +790 -0
  48. package/lib/imports/rdsdbinstances-rds.services.k8s.aws.d.ts.map +1 -0
  49. package/lib/imports/rdsdbinstances-rds.services.k8s.aws.js +217 -0
  50. package/lib/imports/rdsdbsubnetgroups-rds.services.k8s.aws.d.ts +114 -0
  51. package/lib/imports/rdsdbsubnetgroups-rds.services.k8s.aws.d.ts.map +1 -0
  52. package/lib/imports/rdsdbsubnetgroups-rds.services.k8s.aws.js +108 -0
  53. package/lib/imports/s3buckets-s3.services.k8s.aws.d.ts +2253 -0
  54. package/lib/imports/s3buckets-s3.services.k8s.aws.d.ts.map +1 -0
  55. package/lib/imports/s3buckets-s3.services.k8s.aws.js +1672 -0
  56. package/lib/imports/sfnmachines-sfn.services.k8s.aws.d.ts +203 -0
  57. package/lib/imports/sfnmachines-sfn.services.k8s.aws.d.ts.map +1 -0
  58. package/lib/imports/sfnmachines-sfn.services.k8s.aws.js +174 -0
  59. package/lib/imports/snstopics-sns.services.k8s.aws.d.ts +106 -0
  60. package/lib/imports/snstopics-sns.services.k8s.aws.d.ts.map +1 -0
  61. package/lib/imports/snstopics-sns.services.k8s.aws.js +110 -0
  62. package/lib/index.d.ts +4 -0
  63. package/lib/index.d.ts.map +1 -0
  64. package/lib/index.js +16 -0
  65. package/lib/mappers/base.d.ts +23 -0
  66. package/lib/mappers/base.d.ts.map +1 -0
  67. package/lib/mappers/base.js +20 -0
  68. package/lib/mappers/ec2-security-group.d.ts +9 -0
  69. package/lib/mappers/ec2-security-group.d.ts.map +1 -0
  70. package/lib/mappers/ec2-security-group.js +33 -0
  71. package/lib/mappers/iam-policy.d.ts +9 -0
  72. package/lib/mappers/iam-policy.d.ts.map +1 -0
  73. package/lib/mappers/iam-policy.js +32 -0
  74. package/lib/mappers/iam-role.d.ts +9 -0
  75. package/lib/mappers/iam-role.d.ts.map +1 -0
  76. package/lib/mappers/iam-role.js +34 -0
  77. package/lib/mappers/index.d.ts +9 -0
  78. package/lib/mappers/index.d.ts.map +1 -0
  79. package/lib/mappers/index.js +21 -0
  80. package/lib/mappers/lambda-function.d.ts +9 -0
  81. package/lib/mappers/lambda-function.d.ts.map +1 -0
  82. package/lib/mappers/lambda-function.js +37 -0
  83. package/lib/mappers/rds-db-instance.d.ts +10 -0
  84. package/lib/mappers/rds-db-instance.d.ts.map +1 -0
  85. package/lib/mappers/rds-db-instance.js +65 -0
  86. package/lib/mappers/rds-db-subnet-group.d.ts +9 -0
  87. package/lib/mappers/rds-db-subnet-group.d.ts.map +1 -0
  88. package/lib/mappers/rds-db-subnet-group.js +34 -0
  89. package/lib/mappers/s3-bucket.d.ts +9 -0
  90. package/lib/mappers/s3-bucket.d.ts.map +1 -0
  91. package/lib/mappers/s3-bucket.js +53 -0
  92. package/package.json +129 -0
  93. package/releasetag.txt +1 -0
  94. package/version.txt +1 -0
@@ -0,0 +1,280 @@
1
+ import { ApiObject, ApiObjectMetadata, GroupVersionKind } from 'cdk8s';
2
+ import { Construct } from 'constructs';
3
+ /**
4
+ * EventSourceMapping is the Schema for the EventSourceMappings API
5
+ *
6
+ * @schema EventSourceMapping
7
+ */
8
+ export declare class EventSourceMapping extends ApiObject {
9
+ /**
10
+ * Returns the apiVersion and kind for "EventSourceMapping"
11
+ */
12
+ static readonly GVK: GroupVersionKind;
13
+ /**
14
+ * Renders a Kubernetes manifest for "EventSourceMapping".
15
+ *
16
+ * This can be used to inline resource manifests inside other objects (e.g. as templates).
17
+ *
18
+ * @param props initialization props
19
+ */
20
+ static manifest(props?: EventSourceMappingProps): any;
21
+ /**
22
+ * Defines a "EventSourceMapping" API object
23
+ * @param scope the scope in which to define this object
24
+ * @param id a scope-local name for the object
25
+ * @param props initialization props
26
+ */
27
+ constructor(scope: Construct, id: string, props?: EventSourceMappingProps);
28
+ /**
29
+ * Renders the object to Kubernetes JSON.
30
+ */
31
+ toJson(): any;
32
+ }
33
+ /**
34
+ * EventSourceMapping is the Schema for the EventSourceMappings API
35
+ *
36
+ * @schema EventSourceMapping
37
+ */
38
+ export interface EventSourceMappingProps {
39
+ /**
40
+ * @schema EventSourceMapping#metadata
41
+ */
42
+ readonly metadata?: ApiObjectMetadata;
43
+ /**
44
+ * EventSourceMappingSpec defines the desired state of EventSourceMapping.
45
+ *
46
+ * @schema EventSourceMapping#spec
47
+ */
48
+ readonly spec?: EventSourceMappingSpec;
49
+ }
50
+ /**
51
+ * Converts an object of type 'EventSourceMappingProps' to JSON representation.
52
+ */
53
+ export declare function toJson_EventSourceMappingProps(obj: EventSourceMappingProps | undefined): Record<string, any> | undefined;
54
+ /**
55
+ * EventSourceMappingSpec defines the desired state of EventSourceMapping.
56
+ *
57
+ * @schema EventSourceMappingSpec
58
+ */
59
+ export interface EventSourceMappingSpec {
60
+ /**
61
+ * The maximum number of records in each batch that Lambda pulls from your stream or queue and sends to your function. Lambda passes all of the records in the batch to the function in a single call, up to the payload limit for synchronous invocation (6 MB).
62
+ * * Amazon Kinesis - Default 100. Max 10,000.
63
+ * * Amazon DynamoDB Streams - Default 100. Max 1,000.
64
+ * * Amazon Simple Queue Service - Default 10. For standard queues the max is 10,000. For FIFO queues the max is 10.
65
+ * * Amazon Managed Streaming for Apache Kafka - Default 100. Max 10,000.
66
+ * * Self-Managed Apache Kafka - Default 100. Max 10,000.
67
+ *
68
+ * @schema EventSourceMappingSpec#batchSize
69
+ */
70
+ readonly batchSize?: number;
71
+ /**
72
+ * (Streams only) If the function returns an error, split the batch in two and retry.
73
+ *
74
+ * @schema EventSourceMappingSpec#bisectBatchOnFunctionError
75
+ */
76
+ readonly bisectBatchOnFunctionError?: boolean;
77
+ /**
78
+ * (Streams only) An Amazon SQS queue or Amazon SNS topic destination for discarded records.
79
+ *
80
+ * @schema EventSourceMappingSpec#destinationConfig
81
+ */
82
+ readonly destinationConfig?: EventSourceMappingSpecDestinationConfig;
83
+ /**
84
+ * When true, the event source mapping is active. When false, Lambda pauses polling and invocation.
85
+ * Default: True
86
+ *
87
+ * @schema EventSourceMappingSpec#enabled
88
+ */
89
+ readonly enabled?: boolean;
90
+ /**
91
+ * The Amazon Resource Name (ARN) of the event source.
92
+ * * Amazon Kinesis - The ARN of the data stream or a stream consumer.
93
+ * * Amazon DynamoDB Streams - The ARN of the stream.
94
+ * * Amazon Simple Queue Service - The ARN of the queue.
95
+ * * Amazon Managed Streaming for Apache Kafka - The ARN of the cluster.
96
+ *
97
+ * @schema EventSourceMappingSpec#eventSourceARN
98
+ */
99
+ readonly eventSourceArn?: string;
100
+ /**
101
+ * The name of the Lambda function.
102
+ * Name formats
103
+ * * Function name - MyFunction.
104
+ * * Function ARN - arn:aws:lambda:us-west-2:123456789012:function:MyFunction.
105
+ * * Version or Alias ARN - arn:aws:lambda:us-west-2:123456789012:function:MyFunction:PROD.
106
+ * * Partial ARN - 123456789012:function:MyFunction.
107
+ * The length constraint applies only to the full ARN. If you specify only the function name, it's limited to 64 characters in length.
108
+ *
109
+ * @schema EventSourceMappingSpec#functionName
110
+ */
111
+ readonly functionName: string;
112
+ /**
113
+ * (Streams only) A list of current response type enums applied to the event source mapping.
114
+ *
115
+ * @schema EventSourceMappingSpec#functionResponseTypes
116
+ */
117
+ readonly functionResponseTypes?: string[];
118
+ /**
119
+ * (Streams and Amazon SQS standard queues) The maximum amount of time, in seconds, that Lambda spends gathering records before invoking the function.
120
+ * Default: 0
121
+ * Related setting: When you set BatchSize to a value greater than 10, you must set MaximumBatchingWindowInSeconds to at least 1.
122
+ *
123
+ * @schema EventSourceMappingSpec#maximumBatchingWindowInSeconds
124
+ */
125
+ readonly maximumBatchingWindowInSeconds?: number;
126
+ /**
127
+ * (Streams only) Discard records older than the specified age. The default value is infinite (-1).
128
+ *
129
+ * @schema EventSourceMappingSpec#maximumRecordAgeInSeconds
130
+ */
131
+ readonly maximumRecordAgeInSeconds?: number;
132
+ /**
133
+ * (Streams only) Discard records after the specified number of retries. The default value is infinite (-1). When set to infinite (-1), failed records will be retried until the record expires.
134
+ *
135
+ * @schema EventSourceMappingSpec#maximumRetryAttempts
136
+ */
137
+ readonly maximumRetryAttempts?: number;
138
+ /**
139
+ * (Streams only) The number of batches to process from each shard concurrently.
140
+ *
141
+ * @schema EventSourceMappingSpec#parallelizationFactor
142
+ */
143
+ readonly parallelizationFactor?: number;
144
+ /**
145
+ * (MQ) The name of the Amazon MQ broker destination queue to consume.
146
+ *
147
+ * @schema EventSourceMappingSpec#queues
148
+ */
149
+ readonly queues?: string[];
150
+ /**
151
+ * The Self-Managed Apache Kafka cluster to send records.
152
+ *
153
+ * @schema EventSourceMappingSpec#selfManagedEventSource
154
+ */
155
+ readonly selfManagedEventSource?: EventSourceMappingSpecSelfManagedEventSource;
156
+ /**
157
+ * An array of authentication protocols or VPC components required to secure your event source.
158
+ *
159
+ * @schema EventSourceMappingSpec#sourceAccessConfigurations
160
+ */
161
+ readonly sourceAccessConfigurations?: EventSourceMappingSpecSourceAccessConfigurations[];
162
+ /**
163
+ * The position in a stream from which to start reading. Required for Amazon Kinesis, Amazon DynamoDB, and Amazon MSK Streams sources. AT_TIMESTAMP is only supported for Amazon Kinesis streams.
164
+ *
165
+ * @schema EventSourceMappingSpec#startingPosition
166
+ */
167
+ readonly startingPosition?: string;
168
+ /**
169
+ * With StartingPosition set to AT_TIMESTAMP, the time from which to start reading.
170
+ *
171
+ * @schema EventSourceMappingSpec#startingPositionTimestamp
172
+ */
173
+ readonly startingPositionTimestamp?: Date;
174
+ /**
175
+ * The name of the Kafka topic.
176
+ *
177
+ * @schema EventSourceMappingSpec#topics
178
+ */
179
+ readonly topics?: string[];
180
+ /**
181
+ * (Streams only) The duration in seconds of a processing window. The range is between 1 second up to 900 seconds.
182
+ *
183
+ * @schema EventSourceMappingSpec#tumblingWindowInSeconds
184
+ */
185
+ readonly tumblingWindowInSeconds?: number;
186
+ }
187
+ /**
188
+ * Converts an object of type 'EventSourceMappingSpec' to JSON representation.
189
+ */
190
+ export declare function toJson_EventSourceMappingSpec(obj: EventSourceMappingSpec | undefined): Record<string, any> | undefined;
191
+ /**
192
+ * (Streams only) An Amazon SQS queue or Amazon SNS topic destination for discarded records.
193
+ *
194
+ * @schema EventSourceMappingSpecDestinationConfig
195
+ */
196
+ export interface EventSourceMappingSpecDestinationConfig {
197
+ /**
198
+ * A destination for events that failed processing.
199
+ *
200
+ * @schema EventSourceMappingSpecDestinationConfig#onFailure
201
+ */
202
+ readonly onFailure?: EventSourceMappingSpecDestinationConfigOnFailure;
203
+ /**
204
+ * A destination for events that were processed successfully.
205
+ *
206
+ * @schema EventSourceMappingSpecDestinationConfig#onSuccess
207
+ */
208
+ readonly onSuccess?: EventSourceMappingSpecDestinationConfigOnSuccess;
209
+ }
210
+ /**
211
+ * Converts an object of type 'EventSourceMappingSpecDestinationConfig' to JSON representation.
212
+ */
213
+ export declare function toJson_EventSourceMappingSpecDestinationConfig(obj: EventSourceMappingSpecDestinationConfig | undefined): Record<string, any> | undefined;
214
+ /**
215
+ * The Self-Managed Apache Kafka cluster to send records.
216
+ *
217
+ * @schema EventSourceMappingSpecSelfManagedEventSource
218
+ */
219
+ export interface EventSourceMappingSpecSelfManagedEventSource {
220
+ /**
221
+ * @schema EventSourceMappingSpecSelfManagedEventSource#endpoints
222
+ */
223
+ readonly endpoints?: {
224
+ [key: string]: string[];
225
+ };
226
+ }
227
+ /**
228
+ * Converts an object of type 'EventSourceMappingSpecSelfManagedEventSource' to JSON representation.
229
+ */
230
+ export declare function toJson_EventSourceMappingSpecSelfManagedEventSource(obj: EventSourceMappingSpecSelfManagedEventSource | undefined): Record<string, any> | undefined;
231
+ /**
232
+ * To secure and define access to your event source, you can specify the authentication protocol, VPC components, or virtual host.
233
+ *
234
+ * @schema EventSourceMappingSpecSourceAccessConfigurations
235
+ */
236
+ export interface EventSourceMappingSpecSourceAccessConfigurations {
237
+ /**
238
+ * @schema EventSourceMappingSpecSourceAccessConfigurations#type_
239
+ */
240
+ readonly type?: string;
241
+ /**
242
+ * @schema EventSourceMappingSpecSourceAccessConfigurations#uRI
243
+ */
244
+ readonly uRi?: string;
245
+ }
246
+ /**
247
+ * Converts an object of type 'EventSourceMappingSpecSourceAccessConfigurations' to JSON representation.
248
+ */
249
+ export declare function toJson_EventSourceMappingSpecSourceAccessConfigurations(obj: EventSourceMappingSpecSourceAccessConfigurations | undefined): Record<string, any> | undefined;
250
+ /**
251
+ * A destination for events that failed processing.
252
+ *
253
+ * @schema EventSourceMappingSpecDestinationConfigOnFailure
254
+ */
255
+ export interface EventSourceMappingSpecDestinationConfigOnFailure {
256
+ /**
257
+ * @schema EventSourceMappingSpecDestinationConfigOnFailure#destination
258
+ */
259
+ readonly destination?: string;
260
+ }
261
+ /**
262
+ * Converts an object of type 'EventSourceMappingSpecDestinationConfigOnFailure' to JSON representation.
263
+ */
264
+ export declare function toJson_EventSourceMappingSpecDestinationConfigOnFailure(obj: EventSourceMappingSpecDestinationConfigOnFailure | undefined): Record<string, any> | undefined;
265
+ /**
266
+ * A destination for events that were processed successfully.
267
+ *
268
+ * @schema EventSourceMappingSpecDestinationConfigOnSuccess
269
+ */
270
+ export interface EventSourceMappingSpecDestinationConfigOnSuccess {
271
+ /**
272
+ * @schema EventSourceMappingSpecDestinationConfigOnSuccess#destination
273
+ */
274
+ readonly destination?: string;
275
+ }
276
+ /**
277
+ * Converts an object of type 'EventSourceMappingSpecDestinationConfigOnSuccess' to JSON representation.
278
+ */
279
+ export declare function toJson_EventSourceMappingSpecDestinationConfigOnSuccess(obj: EventSourceMappingSpecDestinationConfigOnSuccess | undefined): Record<string, any> | undefined;
280
+ //# sourceMappingURL=lambdaeventsourcemappings-lambda.services.k8s.aws.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambdaeventsourcemappings-lambda.services.k8s.aws.d.ts","sourceRoot":"","sources":["../../src/imports/lambdaeventsourcemappings-lambda.services.k8s.aws.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toJson_EventSourceMappingSpecDestinationConfigOnSuccess = exports.toJson_EventSourceMappingSpecDestinationConfigOnFailure = exports.toJson_EventSourceMappingSpecSourceAccessConfigurations = exports.toJson_EventSourceMappingSpecSelfManagedEventSource = exports.toJson_EventSourceMappingSpecDestinationConfig = exports.toJson_EventSourceMappingSpec = exports.toJson_EventSourceMappingProps = exports.EventSourceMapping = void 0;
4
+ // generated by cdk8s
5
+ const cdk8s_1 = require("cdk8s");
6
+ /**
7
+ * EventSourceMapping is the Schema for the EventSourceMappings API
8
+ *
9
+ * @schema EventSourceMapping
10
+ */
11
+ class EventSourceMapping extends cdk8s_1.ApiObject {
12
+ /**
13
+ * Defines a "EventSourceMapping" API object
14
+ * @param scope the scope in which to define this object
15
+ * @param id a scope-local name for the object
16
+ * @param props initialization props
17
+ */
18
+ constructor(scope, id, props = {}) {
19
+ super(scope, id, {
20
+ ...EventSourceMapping.GVK,
21
+ ...props,
22
+ });
23
+ }
24
+ /**
25
+ * Renders a Kubernetes manifest for "EventSourceMapping".
26
+ *
27
+ * This can be used to inline resource manifests inside other objects (e.g. as templates).
28
+ *
29
+ * @param props initialization props
30
+ */
31
+ static manifest(props = {}) {
32
+ return {
33
+ ...EventSourceMapping.GVK,
34
+ ...toJson_EventSourceMappingProps(props),
35
+ };
36
+ }
37
+ /**
38
+ * Renders the object to Kubernetes JSON.
39
+ */
40
+ toJson() {
41
+ const resolved = super.toJson();
42
+ return {
43
+ ...EventSourceMapping.GVK,
44
+ ...toJson_EventSourceMappingProps(resolved),
45
+ };
46
+ }
47
+ }
48
+ exports.EventSourceMapping = EventSourceMapping;
49
+ /**
50
+ * Returns the apiVersion and kind for "EventSourceMapping"
51
+ */
52
+ EventSourceMapping.GVK = {
53
+ apiVersion: 'lambda.services.k8s.aws/v1alpha1',
54
+ kind: 'EventSourceMapping',
55
+ };
56
+ /**
57
+ * Converts an object of type 'EventSourceMappingProps' to JSON representation.
58
+ */
59
+ /* eslint-disable max-len, quote-props */
60
+ function toJson_EventSourceMappingProps(obj) {
61
+ if (obj === undefined) {
62
+ return undefined;
63
+ }
64
+ const result = {
65
+ 'metadata': obj.metadata,
66
+ 'spec': toJson_EventSourceMappingSpec(obj.spec),
67
+ };
68
+ // filter undefined values
69
+ return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
70
+ }
71
+ exports.toJson_EventSourceMappingProps = toJson_EventSourceMappingProps;
72
+ /**
73
+ * Converts an object of type 'EventSourceMappingSpec' to JSON representation.
74
+ */
75
+ /* eslint-disable max-len, quote-props */
76
+ function toJson_EventSourceMappingSpec(obj) {
77
+ var _a, _b, _c, _d, _e;
78
+ if (obj === undefined) {
79
+ return undefined;
80
+ }
81
+ const result = {
82
+ 'batchSize': obj.batchSize,
83
+ 'bisectBatchOnFunctionError': obj.bisectBatchOnFunctionError,
84
+ 'destinationConfig': toJson_EventSourceMappingSpecDestinationConfig(obj.destinationConfig),
85
+ 'enabled': obj.enabled,
86
+ 'eventSourceARN': obj.eventSourceArn,
87
+ 'functionName': obj.functionName,
88
+ 'functionResponseTypes': (_a = obj.functionResponseTypes) === null || _a === void 0 ? void 0 : _a.map(y => y),
89
+ 'maximumBatchingWindowInSeconds': obj.maximumBatchingWindowInSeconds,
90
+ 'maximumRecordAgeInSeconds': obj.maximumRecordAgeInSeconds,
91
+ 'maximumRetryAttempts': obj.maximumRetryAttempts,
92
+ 'parallelizationFactor': obj.parallelizationFactor,
93
+ 'queues': (_b = obj.queues) === null || _b === void 0 ? void 0 : _b.map(y => y),
94
+ 'selfManagedEventSource': toJson_EventSourceMappingSpecSelfManagedEventSource(obj.selfManagedEventSource),
95
+ 'sourceAccessConfigurations': (_c = obj.sourceAccessConfigurations) === null || _c === void 0 ? void 0 : _c.map(y => toJson_EventSourceMappingSpecSourceAccessConfigurations(y)),
96
+ 'startingPosition': obj.startingPosition,
97
+ 'startingPositionTimestamp': (_d = obj.startingPositionTimestamp) === null || _d === void 0 ? void 0 : _d.toISOString(),
98
+ 'topics': (_e = obj.topics) === null || _e === void 0 ? void 0 : _e.map(y => y),
99
+ 'tumblingWindowInSeconds': obj.tumblingWindowInSeconds,
100
+ };
101
+ // filter undefined values
102
+ return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
103
+ }
104
+ exports.toJson_EventSourceMappingSpec = toJson_EventSourceMappingSpec;
105
+ /**
106
+ * Converts an object of type 'EventSourceMappingSpecDestinationConfig' to JSON representation.
107
+ */
108
+ /* eslint-disable max-len, quote-props */
109
+ function toJson_EventSourceMappingSpecDestinationConfig(obj) {
110
+ if (obj === undefined) {
111
+ return undefined;
112
+ }
113
+ const result = {
114
+ 'onFailure': toJson_EventSourceMappingSpecDestinationConfigOnFailure(obj.onFailure),
115
+ 'onSuccess': toJson_EventSourceMappingSpecDestinationConfigOnSuccess(obj.onSuccess),
116
+ };
117
+ // filter undefined values
118
+ return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
119
+ }
120
+ exports.toJson_EventSourceMappingSpecDestinationConfig = toJson_EventSourceMappingSpecDestinationConfig;
121
+ /**
122
+ * Converts an object of type 'EventSourceMappingSpecSelfManagedEventSource' to JSON representation.
123
+ */
124
+ /* eslint-disable max-len, quote-props */
125
+ function toJson_EventSourceMappingSpecSelfManagedEventSource(obj) {
126
+ if (obj === undefined) {
127
+ return undefined;
128
+ }
129
+ const result = {
130
+ 'endpoints': ((obj.endpoints) === undefined) ? undefined : (Object.entries(obj.endpoints).reduce((r, i) => { var _a; return (i[1] === undefined) ? r : ({ ...r, [i[0]]: (_a = i[1]) === null || _a === void 0 ? void 0 : _a.map(y => y) }); }, {})),
131
+ };
132
+ // filter undefined values
133
+ return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
134
+ }
135
+ exports.toJson_EventSourceMappingSpecSelfManagedEventSource = toJson_EventSourceMappingSpecSelfManagedEventSource;
136
+ /**
137
+ * Converts an object of type 'EventSourceMappingSpecSourceAccessConfigurations' to JSON representation.
138
+ */
139
+ /* eslint-disable max-len, quote-props */
140
+ function toJson_EventSourceMappingSpecSourceAccessConfigurations(obj) {
141
+ if (obj === undefined) {
142
+ return undefined;
143
+ }
144
+ const result = {
145
+ 'type_': obj.type,
146
+ 'uRI': obj.uRi,
147
+ };
148
+ // filter undefined values
149
+ return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
150
+ }
151
+ exports.toJson_EventSourceMappingSpecSourceAccessConfigurations = toJson_EventSourceMappingSpecSourceAccessConfigurations;
152
+ /**
153
+ * Converts an object of type 'EventSourceMappingSpecDestinationConfigOnFailure' to JSON representation.
154
+ */
155
+ /* eslint-disable max-len, quote-props */
156
+ function toJson_EventSourceMappingSpecDestinationConfigOnFailure(obj) {
157
+ if (obj === undefined) {
158
+ return undefined;
159
+ }
160
+ const result = {
161
+ 'destination': obj.destination,
162
+ };
163
+ // filter undefined values
164
+ return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
165
+ }
166
+ exports.toJson_EventSourceMappingSpecDestinationConfigOnFailure = toJson_EventSourceMappingSpecDestinationConfigOnFailure;
167
+ /**
168
+ * Converts an object of type 'EventSourceMappingSpecDestinationConfigOnSuccess' to JSON representation.
169
+ */
170
+ /* eslint-disable max-len, quote-props */
171
+ function toJson_EventSourceMappingSpecDestinationConfigOnSuccess(obj) {
172
+ if (obj === undefined) {
173
+ return undefined;
174
+ }
175
+ const result = {
176
+ 'destination': obj.destination,
177
+ };
178
+ // filter undefined values
179
+ return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
180
+ }
181
+ exports.toJson_EventSourceMappingSpecDestinationConfigOnSuccess = toJson_EventSourceMappingSpecDestinationConfigOnSuccess;
182
+ /* eslint-enable max-len, quote-props */
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhZXZlbnRzb3VyY2VtYXBwaW5ncy1sYW1iZGEuc2VydmljZXMuazhzLmF3cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbXBvcnRzL2xhbWJkYWV2ZW50c291cmNlbWFwcGluZ3MtbGFtYmRhLnNlcnZpY2VzLms4cy5hd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUJBQXFCO0FBQ3JCLGlDQUF1RTtBQUl2RTs7OztHQUlHO0FBQ0gsTUFBYSxrQkFBbUIsU0FBUSxpQkFBUztJQXVCL0M7Ozs7O09BS0c7SUFDSCxZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUFpQyxFQUFFO1FBQ2xGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHO1lBQ3pCLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7SUF6QkQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFpQyxFQUFFO1FBQ3hELE9BQU87WUFDTCxHQUFHLGtCQUFrQixDQUFDLEdBQUc7WUFDekIsR0FBRyw4QkFBOEIsQ0FBQyxLQUFLLENBQUM7U0FDekMsQ0FBQztJQUNKLENBQUM7SUFlRDs7T0FFRztJQUNJLE1BQU07UUFDWCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFaEMsT0FBTztZQUNMLEdBQUcsa0JBQWtCLENBQUMsR0FBRztZQUN6QixHQUFHLDhCQUE4QixDQUFDLFFBQVEsQ0FBQztTQUM1QyxDQUFDO0lBQ0osQ0FBQzs7QUE5Q0gsZ0RBK0NDO0FBOUNDOztHQUVHO0FBQ29CLHNCQUFHLEdBQXFCO0lBQzdDLFVBQVUsRUFBRSxrQ0FBa0M7SUFDOUMsSUFBSSxFQUFFLG9CQUFvQjtDQUMzQixDQUFDO0FBOERKOztHQUVHO0FBQ0gseUNBQXlDO0FBQ3pDLFNBQWdCLDhCQUE4QixDQUFDLEdBQXdDO0lBQ3JGLElBQUks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QyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxRyxDQUFDO0FBUEQsMEhBT0M7QUFDRCx3Q0FBd0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBnZW5lcmF0ZWQgYnkgY2RrOHNcbmltcG9ydCB7IEFwaU9iamVjdCwgQXBpT2JqZWN0TWV0YWRhdGEsIEdyb3VwVmVyc2lvbktpbmQgfSBmcm9tICdjZGs4cyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuXG4vKipcbiAqIEV2ZW50U291cmNlTWFwcGluZyBpcyB0aGUgU2NoZW1hIGZvciB0aGUgRXZlbnRTb3VyY2VNYXBwaW5ncyBBUElcbiAqXG4gKiBAc2NoZW1hIEV2ZW50U291cmNlTWFwcGluZ1xuICovXG5leHBvcnQgY2xhc3MgRXZlbnRTb3VyY2VNYXBwaW5nIGV4dGVuZHMgQXBpT2JqZWN0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFwaVZlcnNpb24gYW5kIGtpbmQgZm9yIFwiRXZlbnRTb3VyY2VNYXBwaW5nXCJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgR1ZLOiBHcm91cFZlcnNpb25LaW5kID0ge1xuICAgIGFwaVZlcnNpb246ICdsYW1iZGEuc2VydmljZXMuazhzLmF3cy92MWFscGhhMScsXG4gICAga2luZDogJ0V2ZW50U291cmNlTWFwcGluZycsXG4gIH07XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBLdWJlcm5ldGVzIG1hbmlmZXN0IGZvciBcIkV2ZW50U291cmNlTWFwcGluZ1wiLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGlubGluZSByZXNvdXJjZSBtYW5pZmVzdHMgaW5zaWRlIG90aGVyIG9iamVjdHMgKGUuZy4gYXMgdGVtcGxhdGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hbmlmZXN0KHByb3BzOiBFdmVudFNvdXJjZU1hcHBpbmdQcm9wcyA9IHt9KTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uRXZlbnRTb3VyY2VNYXBwaW5nLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9FdmVudFNvdXJjZU1hcHBpbmdQcm9wcyhwcm9wcyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgXCJFdmVudFNvdXJjZU1hcHBpbmdcIiBBUEkgb2JqZWN0XG4gICAqIEBwYXJhbSBzY29wZSB0aGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgb2JqZWN0XG4gICAqIEBwYXJhbSBpZCBhIHNjb3BlLWxvY2FsIG5hbWUgZm9yIHRoZSBvYmplY3RcbiAgICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEV2ZW50U291cmNlTWFwcGluZ1Byb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLkV2ZW50U291cmNlTWFwcGluZy5HVkssXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBvYmplY3QgdG8gS3ViZXJuZXRlcyBKU09OLlxuICAgKi9cbiAgcHVibGljIHRvSnNvbigpOiBhbnkge1xuICAgIGNvbnN0IHJlc29sdmVkID0gc3VwZXIudG9Kc29uKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uRXZlbnRTb3VyY2VNYXBwaW5nLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9FdmVudFNvdXJjZU1hcHBpbmdQcm9wcyhyZXNvbHZlZCksXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIEV2ZW50U291cmNlTWFwcGluZyBpcyB0aGUgU2NoZW1hIGZvciB0aGUgRXZlbnRTb3VyY2VNYXBwaW5ncyBBUElcbiAqXG4gKiBAc2NoZW1hIEV2ZW50U291cmNlTWFwcGluZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50U291cmNlTWFwcGluZ1Byb3BzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRXZlbnRTb3VyY2VNYXBwaW5nI21ldGFkYXRhXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IEFwaU9iamVjdE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBFdmVudFNvdXJjZU1hcHBpbmdTcGVjIGRlZmluZXMgdGhlIGRlc2lyZWQgc3RhdGUgb2YgRXZlbnRTb3VyY2VNYXBwaW5nLlxuICAgKlxuICAgKiBAc2NoZW1hIEV2ZW50U291cmNlTWFwcGluZyNzcGVjXG4gICAqL1xuICByZWFkb25seSBzcGVjPzogRXZlbnRTb3VyY2VNYXBwaW5nU3BlYztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdFdmVudFNvdXJjZU1hcHBpbmdQcm9wcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRXZlbnRTb3VyY2VNYXBwaW5nUHJvcHMob2JqOiBFdmVudFNvdXJjZU1hcHBpbmdQcm9wcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ21ldGFkYXRhJzogb2JqLm1ldGFkYXRhLFxuICAgICdzcGVjJzogdG9Kc29uX0V2ZW50U291cmNlTWFwcGluZ1NwZWMob2JqLnNwZWMpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEV2ZW50U291cmNlTWFwcGluZ1NwZWMgZGVmaW5lcyB0aGUgZGVzaXJlZCBzdGF0ZSBvZiBFdmVudFNvdXJjZU1hcHBpbmcuXG4gKlxuICogQHNjaGVtYSBFdmVudFNvdXJjZU1hcHBpbmdTcGVjXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRTb3VyY2VNYXBwaW5nU3BlYyB7XG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgcmVjb3JkcyBpbiBlYWNoIGJhdGNoIHRoYXQgTGFtYmRhIHB1bGxzIGZyb20geW91ciBzdHJlYW0gb3IgcXVldWUgYW5kIHNlbmRzIHRvIHlvdXIgZnVuY3Rpb24uIExhbWJkYSBwYXNzZXMgYWxsIG9mIHRoZSByZWNvcmRzIGluIHRoZSBiYXRjaCB0byB0aGUgZnVuY3Rpb24gaW4gYSBzaW5nbGUgY2FsbCwgdXAgdG8gdGhlIHBheWxvYWQgbGltaXQgZm9yIHN5bmNocm9ub3VzIGludm9jYXRpb24gKDYgTUIpLlxuICAgKiAqIEFtYXpvbiBLaW5lc2lzIC0gRGVmYXVsdCAxMDAuIE1heCAxMCwwMDAuXG4gICAqICogQW1hem9uIER5bmFtb0RCIFN0cmVhbXMgLSBEZWZhdWx0IDEwMC4gTWF4IDEsMDAwLlxuICAgKiAqIEFtYXpvbiBTaW1wbGUgUXVldWUgU2VydmljZSAtIERlZmF1bHQgMTAuIEZvciBzdGFuZGFyZCBxdWV1ZXMgdGhlIG1heCAgICBpcyAxMCwwMDAuIEZvciBGSUZPIHF1ZXVlcyB0aGUgbWF4IGlzIDEwLlxuICAgKiAqIEFtYXpvbiBNYW5hZ2VkIFN0cmVhbWluZyBmb3IgQXBhY2hlIEthZmthIC0gRGVmYXVsdCAxMDAuIE1heCAxMCwwMDAuXG4gICAqICogU2VsZi1NYW5hZ2VkIEFwYWNoZSBLYWZrYSAtIERlZmF1bHQgMTAwLiBNYXggMTAsMDAwLlxuICAgKlxuICAgKiBAc2NoZW1hIEV2ZW50U291cmNlTWFwcGluZ1NwZWMjYmF0Y2hTaXplXG4gICAqL1xuICByZWFkb25seSBiYXRjaFNpemU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIChTdHJlYW1zIG9ubHkpIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIGVycm9yLCBzcGxpdCB0aGUgYmF0Y2ggaW4gdHdvIGFuZCByZXRyeS5cbiAgICpcbiAgICogQHNjaGVtYSBFdmVudFNvdXJjZU1hcHBpbmdTcGVjI2Jpc2VjdEJhdGNoT25GdW5jdGlvbkVycm9yXG4gICAqL1xuICByZWFkb25seSBiaXNlY3RCYXRjaE9uRnVuY3Rpb25FcnJvcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIChTdHJlYW1zIG9ubHkpIEFuIEFtYXpvbiBTUVMgcXVldWUgb3IgQW1hem9uIFNOUyB0b3BpYyBkZXN0aW5hdGlvbiBmb3IgZGlzY2FyZGVkIHJlY29yZHMuXG4gICAqXG4gICAqIEBzY2hlbWEgRXZlbnRTb3VyY2VNYXBwaW5nU3BlYyNkZXN0aW5hdGlvbkNvbmZpZ1xuICAgKi9cbiAgcmVhZG9ubHkgZGVzdGluYXRpb25Db25maWc/OiBFdmVudFNvdXJjZU1hcHBpbmdTcGVjRGVzdGluYXRpb25Db25maWc7XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgdGhlIGV2ZW50IHNvdXJjZSBtYXBwaW5nIGlzIGFjdGl2ZS4gV2hlbiBmYWxzZSwgTGFtYmRhIHBhdXNlcyBwb2xsaW5nIGFuZCBpbnZvY2F0aW9uLlxuICAgKiBEZWZhdWx0OiBUcnVlXG4gICAqXG4gICAqIEBzY2hlbWEgRXZlbnRTb3VyY2VNYXBwaW5nU3BlYyNlbmFibGVkXG4gICAqL1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBldmVudCBzb3VyY2UuXG4gICAqICogQW1hem9uIEtpbmVzaXMgLSBUaGUgQVJOIG9mIHRoZSBkYXRhIHN0cmVhbSBvciBhIHN0cmVhbSBjb25zdW1lci5cbiAgICogKiBBbWF6b24gRHluYW1vREIgU3RyZWFtcyAtIFRoZSBBUk4gb2YgdGhlIHN0cmVhbS5cbiAgICogKiBBbWF6b24gU2ltcGxlIFF1ZXVlIFNlcnZpY2UgLSBUaGUgQVJOIG9mIHRoZSBxdWV1ZS5cbiAgICogKiBBbWF6b24gTWFuYWdlZCBTdHJlYW1pbmcgZm9yIEFwYWNoZSBLYWZrYSAtIFRoZSBBUk4gb2YgdGhlIGNsdXN0ZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgRXZlbnRTb3VyY2VNYXBwaW5nU3BlYyNldmVudFNvdXJjZUFSTlxuICAgKi9cbiAgcmVhZG9ubHkgZXZlbnRTb3VyY2VBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBMYW1iZGEgZnVuY3Rpb24uXG4gICAqIE5hbWUgZm9ybWF0c1xuICAgKiAqIEZ1bmN0aW9uIG5hbWUgLSBNeUZ1bmN0aW9uLlxuICAgKiAqIEZ1bmN0aW9uIEFSTiAtIGFybjphd3M6bGFtYmRhOnVzLXdlc3QtMjoxMjM0NTY3ODkwMTI6ZnVuY3Rpb246TXlGdW5jdGlvbi5cbiAgICogKiBWZXJzaW9uIG9yIEFsaWFzIEFSTiAtIGFybjphd3M6bGFtYmRhOnVzLXdlc3QtMjoxMjM0NTY3ODkwMTI6ZnVuY3Rpb246TXlGdW5jdGlvbjpQUk9ELlxuICAgKiAqIFBhcnRpYWwgQVJOIC0gMTIzNDU2Nzg5MDEyOmZ1bmN0aW9uOk15RnVuY3Rpb24uXG4gICAqIFRoZSBsZW5ndGggY29uc3RyYWludCBhcHBsaWVzIG9ubHkgdG8gdGhlIGZ1bGwgQVJOLiBJZiB5b3Ugc3BlY2lmeSBvbmx5IHRoZSBmdW5jdGlvbiBuYW1lLCBpdCdzIGxpbWl0ZWQgdG8gNjQgY2hhcmFjdGVycyBpbiBsZW5ndGguXG4gICAqXG4gICAqIEBzY2hlbWEgRXZlbnRTb3VyY2VNYXBwaW5nU3BlYyNmdW5jdGlvbk5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiAoU3RyZWFtcyBvbmx5KSBBIGxpc3Qgb2YgY3VycmVudCByZXNwb25zZSB0eXBlIGVudW1zIGFwcGxpZWQgdG8gdGhlIGV2ZW50IHNvdXJjZSBtYXBwaW5nLlxuICAgKlxuICAgKiBAc2NoZW1hIEV2ZW50U291cmNlTWFwcGluZ1NwZWMjZnVuY3Rpb25SZXNwb25zZVR5cGVzXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvblJlc3BvbnNlVHlwZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogKFN0cmVhbXMgYW5kIEFtYXpvbiBTUVMgc3RhbmRhcmQgcXVldWVzKSBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZSwgaW4gc2Vjb25kcywgdGhhdCBMYW1iZGEgc3BlbmRzIGdhdGhlcmluZyByZWNvcmRzIGJlZm9yZSBpbnZva2luZyB0aGUgZnVuY3Rpb24uXG4gICAqIERlZmF1bHQ6IDBcbiAgICogUmVsYXRlZCBzZXR0aW5nOiBXaGVuIHlvdSBzZXQgQmF0Y2hTaXplIHRvIGEgdmFsdWUgZ3JlYXRlciB0aGFuIDEwLCB5b3UgbXVzdCBzZXQgTWF4aW11bUJhdGNoaW5nV2luZG93SW5TZWNvbmRzIHRvIGF0IGxlYXN0IDEuXG4gICAqXG4gICAqIEBzY2hlbWEgRXZlbnRTb3VyY2VNYXBwaW5nU3BlYyNtYXhpbXVtQmF0Y2hpbmdXaW5kb3dJblNlY29uZHNcbiAgICovXG4gIHJlYWRvbmx5IG1heGltdW1CYXRjaGluZ1dpbmRvd0luU2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogKFN0cmVhbXMgb25seSkgRGlzY2FyZCByZWNvcmRzIG9sZGVyIHRoYW4gdGhlIHNwZWNpZmllZCBhZ2UuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGluZmluaXRlICgtMSkuXG4gICAqXG4gICAqIEBzY2hlbWEgRXZlbnRTb3VyY2VNYXBwaW5nU3BlYyNtYXhpbXVtUmVjb3JkQWdlSW5TZWNvbmRzXG4gICAqL1xuICByZWFkb25seSBtYXhpbXVtUmVjb3JkQWdlSW5TZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiAoU3RyZWFtcyBvbmx5KSBEaXNjYXJkIHJlY29yZHMgYWZ0ZXIgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgcmV0cmllcy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgaW5maW5pdGUgKC0xKS4gV2hlbiBzZXQgdG8gaW5maW5pdGUgKC0xKSwgZmFpbGVkIHJlY29yZHMgd2lsbCBiZSByZXRyaWVkIHVudGlsIHRoZSByZWNvcmQgZXhwaXJlcy5cbiAgICpcbiAgICogQHNjaGVtYSBFdmVudFNvdXJjZU1hcHBpbmdTcGVjI21heGltdW1SZXRyeUF0dGVtcHRzXG4gICAqL1xuICByZWFkb25seSBtYXhpbXVtUmV0cnlBdHRlbXB0cz86IG51bWJlcjtcblxuICAvKipcbiAgICogKFN0cmVhbXMgb25seSkgVGhlIG51bWJlciBvZiBiYXRjaGVzIHRvIHByb2Nlc3MgZnJvbSBlYWNoIHNoYXJkIGNvbmN1cnJlbnRseS5cbiAgICpcbiAgICogQHNjaGVtYSBFdmVudFNvdXJjZU1hcHBpbmdTcGVjI3BhcmFsbGVsaXphdGlvbkZhY3RvclxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYWxsZWxpemF0aW9uRmFjdG9yPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiAoTVEpIFRoZSBuYW1lIG9mIHRoZSBBbWF6b24gTVEgYnJva2VyIGRlc3RpbmF0aW9uIHF1ZXVlIHRvIGNvbnN1bWUuXG4gICAqXG4gICAqIEBzY2hlbWEgRXZlbnRTb3VyY2VNYXBwaW5nU3BlYyNxdWV1ZXNcbiAgICovXG4gIHJlYWRvbmx5IHF1ZXVlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgU2VsZi1NYW5hZ2VkIEFwYWNoZSBLYWZrYSBjbHVzdGVyIHRvIHNlbmQgcmVjb3Jkcy5cbiAgICpcbiAgICogQHNjaGVtYSBFdmVudFNvdXJjZU1hcHBpbmdTcGVjI3NlbGZNYW5hZ2VkRXZlbnRTb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IHNlbGZNYW5hZ2VkRXZlbnRTb3VyY2U/OiBFdmVudFNvdXJjZU1hcHBpbmdTcGVjU2VsZk1hbmFnZWRFdmVudFNvdXJjZTtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgYXV0aGVudGljYXRpb24gcHJvdG9jb2xzIG9yIFZQQyBjb21wb25lbnRzIHJlcXVpcmVkIHRvIHNlY3VyZSB5b3VyIGV2ZW50IHNvdXJjZS5cbiAgICpcbiAgICogQHNjaGVtYSBFdmVudFNvdXJjZU1hcHBpbmdTcGVjI3NvdXJjZUFjY2Vzc0NvbmZpZ3VyYXRpb25zXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9ucz86IEV2ZW50U291cmNlTWFwcGluZ1NwZWNTb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9uc1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gaW4gYSBzdHJlYW0gZnJvbSB3aGljaCB0byBzdGFydCByZWFkaW5nLiBSZXF1aXJlZCBmb3IgQW1hem9uIEtpbmVzaXMsIEFtYXpvbiBEeW5hbW9EQiwgYW5kIEFtYXpvbiBNU0sgU3RyZWFtcyBzb3VyY2VzLiBBVF9USU1FU1RBTVAgaXMgb25seSBzdXBwb3J0ZWQgZm9yIEFtYXpvbiBLaW5lc2lzIHN0cmVhbXMuXG4gICAqXG4gICAqIEBzY2hlbWEgRXZlbnRTb3VyY2VNYXBwaW5nU3BlYyNzdGFydGluZ1Bvc2l0aW9uXG4gICAqL1xuICByZWFkb25seSBzdGFydGluZ1Bvc2l0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaXRoIFN0YXJ0aW5nUG9zaXRpb24gc2V0IHRvIEFUX1RJTUVTVEFNUCwgdGhlIHRpbWUgZnJvbSB3aGljaCB0byBzdGFydCByZWFkaW5nLlxuICAgKlxuICAgKiBAc2NoZW1hIEV2ZW50U291cmNlTWFwcGluZ1NwZWMjc3RhcnRpbmdQb3NpdGlvblRpbWVzdGFtcFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhcnRpbmdQb3NpdGlvblRpbWVzdGFtcD86IERhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBLYWZrYSB0b3BpYy5cbiAgICpcbiAgICogQHNjaGVtYSBFdmVudFNvdXJjZU1hcHBpbmdTcGVjI3RvcGljc1xuICAgKi9cbiAgcmVhZG9ubHkgdG9waWNzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIChTdHJlYW1zIG9ubHkpIFRoZSBkdXJhdGlvbiBpbiBzZWNvbmRzIG9mIGEgcHJvY2Vzc2luZyB3aW5kb3cuIFRoZSByYW5nZSBpcyBiZXR3ZWVuIDEgc2Vjb25kIHVwIHRvIDkwMCBzZWNvbmRzLlxuICAgKlxuICAgKiBAc2NoZW1hIEV2ZW50U291cmNlTWFwcGluZ1NwZWMjdHVtYmxpbmdXaW5kb3dJblNlY29uZHNcbiAgICovXG4gIHJlYWRvbmx5IHR1bWJsaW5nV2luZG93SW5TZWNvbmRzPzogbnVtYmVyO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0V2ZW50U291cmNlTWFwcGluZ1NwZWMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0V2ZW50U291cmNlTWFwcGluZ1NwZWMob2JqOiBFdmVudFNvdXJjZU1hcHBpbmdTcGVjIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYmF0Y2hTaXplJzogb2JqLmJhdGNoU2l6ZSxcbiAgICAnYmlzZWN0QmF0Y2hPbkZ1bmN0aW9uRXJyb3InOiBvYmouYmlzZWN0QmF0Y2hPbkZ1bmN0aW9uRXJyb3IsXG4gICAgJ2Rlc3RpbmF0aW9uQ29uZmlnJzogdG9Kc29uX0V2ZW50U291cmNlTWFwcGluZ1NwZWNEZXN0aW5hdGlvbkNvbmZpZyhvYmouZGVzdGluYXRpb25Db25maWcpLFxuICAgICdlbmFibGVkJzogb2JqLmVuYWJsZWQsXG4gICAgJ2V2ZW50U291cmNlQVJOJzogb2JqLmV2ZW50U291cmNlQXJuLFxuICAgICdmdW5jdGlvbk5hbWUnOiBvYmouZnVuY3Rpb25OYW1lLFxuICAgICdmdW5jdGlvblJlc3BvbnNlVHlwZXMnOiBvYmouZnVuY3Rpb25SZXNwb25zZVR5cGVzPy5tYXAoeSA9PiB5KSxcbiAgICAnbWF4aW11bUJhdGNoaW5nV2luZG93SW5TZWNvbmRzJzogb2JqLm1heGltdW1CYXRjaGluZ1dpbmRvd0luU2Vjb25kcyxcbiAgICAnbWF4aW11bVJlY29yZEFnZUluU2Vjb25kcyc6IG9iai5tYXhpbXVtUmVjb3JkQWdlSW5TZWNvbmRzLFxuICAgICdtYXhpbXVtUmV0cnlBdHRlbXB0cyc6IG9iai5tYXhpbXVtUmV0cnlBdHRlbXB0cyxcbiAgICAncGFyYWxsZWxpemF0aW9uRmFjdG9yJzogb2JqLnBhcmFsbGVsaXphdGlvbkZhY3RvcixcbiAgICAncXVldWVzJzogb2JqLnF1ZXVlcz8ubWFwKHkgPT4geSksXG4gICAgJ3NlbGZNYW5hZ2VkRXZlbnRTb3VyY2UnOiB0b0pzb25fRXZlbnRTb3VyY2VNYXBwaW5nU3BlY1NlbGZNYW5hZ2VkRXZlbnRTb3VyY2Uob2JqLnNlbGZNYW5hZ2VkRXZlbnRTb3VyY2UpLFxuICAgICdzb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9ucyc6IG9iai5zb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9ucz8ubWFwKHkgPT4gdG9Kc29uX0V2ZW50U291cmNlTWFwcGluZ1NwZWNTb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9ucyh5KSksXG4gICAgJ3N0YXJ0aW5nUG9zaXRpb24nOiBvYmouc3RhcnRpbmdQb3NpdGlvbixcbiAgICAnc3RhcnRpbmdQb3NpdGlvblRpbWVzdGFtcCc6IG9iai5zdGFydGluZ1Bvc2l0aW9uVGltZXN0YW1wPy50b0lTT1N0cmluZygpLFxuICAgICd0b3BpY3MnOiBvYmoudG9waWNzPy5tYXAoeSA9PiB5KSxcbiAgICAndHVtYmxpbmdXaW5kb3dJblNlY29uZHMnOiBvYmoudHVtYmxpbmdXaW5kb3dJblNlY29uZHMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogKFN0cmVhbXMgb25seSkgQW4gQW1hem9uIFNRUyBxdWV1ZSBvciBBbWF6b24gU05TIHRvcGljIGRlc3RpbmF0aW9uIGZvciBkaXNjYXJkZWQgcmVjb3Jkcy5cbiAqXG4gKiBAc2NoZW1hIEV2ZW50U291cmNlTWFwcGluZ1NwZWNEZXN0aW5hdGlvbkNvbmZpZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50U291cmNlTWFwcGluZ1NwZWNEZXN0aW5hdGlvbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBBIGRlc3RpbmF0aW9uIGZvciBldmVudHMgdGhhdCBmYWlsZWQgcHJvY2Vzc2luZy5cbiAgICpcbiAgICogQHNjaGVtYSBFdmVudFNvdXJjZU1hcHBpbmdTcGVjRGVzdGluYXRpb25Db25maWcjb25GYWlsdXJlXG4gICAqL1xuICByZWFkb25seSBvbkZhaWx1cmU/OiBFdmVudFNvdXJjZU1hcHBpbmdTcGVjRGVzdGluYXRpb25Db25maWdPbkZhaWx1cmU7XG5cbiAgLyoqXG4gICAqIEEgZGVzdGluYXRpb24gZm9yIGV2ZW50cyB0aGF0IHdlcmUgcHJvY2Vzc2VkIHN1Y2Nlc3NmdWxseS5cbiAgICpcbiAgICogQHNjaGVtYSBFdmVudFNvdXJjZU1hcHBpbmdTcGVjRGVzdGluYXRpb25Db25maWcjb25TdWNjZXNzXG4gICAqL1xuICByZWFkb25seSBvblN1Y2Nlc3M/OiBFdmVudFNvdXJjZU1hcHBpbmdTcGVjRGVzdGluYXRpb25Db25maWdPblN1Y2Nlc3M7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnRXZlbnRTb3VyY2VNYXBwaW5nU3BlY0Rlc3RpbmF0aW9uQ29uZmlnJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9FdmVudFNvdXJjZU1hcHBpbmdTcGVjRGVzdGluYXRpb25Db25maWcob2JqOiBFdmVudFNvdXJjZU1hcHBpbmdTcGVjRGVzdGluYXRpb25Db25maWcgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdvbkZhaWx1cmUnOiB0b0pzb25fRXZlbnRTb3VyY2VNYXBwaW5nU3BlY0Rlc3RpbmF0aW9uQ29uZmlnT25GYWlsdXJlKG9iai5vbkZhaWx1cmUpLFxuICAgICdvblN1Y2Nlc3MnOiB0b0pzb25fRXZlbnRTb3VyY2VNYXBwaW5nU3BlY0Rlc3RpbmF0aW9uQ29uZmlnT25TdWNjZXNzKG9iai5vblN1Y2Nlc3MpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFRoZSBTZWxmLU1hbmFnZWQgQXBhY2hlIEthZmthIGNsdXN0ZXIgdG8gc2VuZCByZWNvcmRzLlxuICpcbiAqIEBzY2hlbWEgRXZlbnRTb3VyY2VNYXBwaW5nU3BlY1NlbGZNYW5hZ2VkRXZlbnRTb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudFNvdXJjZU1hcHBpbmdTcGVjU2VsZk1hbmFnZWRFdmVudFNvdXJjZSB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIEV2ZW50U291cmNlTWFwcGluZ1NwZWNTZWxmTWFuYWdlZEV2ZW50U291cmNlI2VuZHBvaW50c1xuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnRzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9O1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0V2ZW50U291cmNlTWFwcGluZ1NwZWNTZWxmTWFuYWdlZEV2ZW50U291cmNlJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9FdmVudFNvdXJjZU1hcHBpbmdTcGVjU2VsZk1hbmFnZWRFdmVudFNvdXJjZShvYmo6IEV2ZW50U291cmNlTWFwcGluZ1NwZWNTZWxmTWFuYWdlZEV2ZW50U291cmNlIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnZW5kcG9pbnRzJzogKChvYmouZW5kcG9pbnRzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmouZW5kcG9pbnRzKS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXT8ubWFwKHkgPT4geSkgfSksIHt9KSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogVG8gc2VjdXJlIGFuZCBkZWZpbmUgYWNjZXNzIHRvIHlvdXIgZXZlbnQgc291cmNlLCB5b3UgY2FuIHNwZWNpZnkgdGhlIGF1dGhlbnRpY2F0aW9uIHByb3RvY29sLCBWUEMgY29tcG9uZW50cywgb3IgdmlydHVhbCBob3N0LlxuICpcbiAqIEBzY2hlbWEgRXZlbnRTb3VyY2VNYXBwaW5nU3BlY1NvdXJjZUFjY2Vzc0NvbmZpZ3VyYXRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRTb3VyY2VNYXBwaW5nU3BlY1NvdXJjZUFjY2Vzc0NvbmZpZ3VyYXRpb25zIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRXZlbnRTb3VyY2VNYXBwaW5nU3BlY1NvdXJjZUFjY2Vzc0NvbmZpZ3VyYXRpb25zI3R5cGVfXG4gICAqL1xuICByZWFkb25seSB0eXBlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIEV2ZW50U291cmNlTWFwcGluZ1NwZWNTb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9ucyN1UklcbiAgICovXG4gIHJlYWRvbmx5IHVSaT86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdFdmVudFNvdXJjZU1hcHBpbmdTcGVjU291cmNlQWNjZXNzQ29uZmlndXJhdGlvbnMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0V2ZW50U291cmNlTWFwcGluZ1NwZWNTb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9ucyhvYmo6IEV2ZW50U291cmNlTWFwcGluZ1NwZWNTb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9ucyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3R5cGVfJzogb2JqLnR5cGUsXG4gICAgJ3VSSSc6IG9iai51UmksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQSBkZXN0aW5hdGlvbiBmb3IgZXZlbnRzIHRoYXQgZmFpbGVkIHByb2Nlc3NpbmcuXG4gKlxuICogQHNjaGVtYSBFdmVudFNvdXJjZU1hcHBpbmdTcGVjRGVzdGluYXRpb25Db25maWdPbkZhaWx1cmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudFNvdXJjZU1hcHBpbmdTcGVjRGVzdGluYXRpb25Db25maWdPbkZhaWx1cmUge1xuICAvKipcbiAgICogQHNjaGVtYSBFdmVudFNvdXJjZU1hcHBpbmdTcGVjRGVzdGluYXRpb25Db25maWdPbkZhaWx1cmUjZGVzdGluYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uPzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0V2ZW50U291cmNlTWFwcGluZ1NwZWNEZXN0aW5hdGlvbkNvbmZpZ09uRmFpbHVyZScgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fRXZlbnRTb3VyY2VNYXBwaW5nU3BlY0Rlc3RpbmF0aW9uQ29uZmlnT25GYWlsdXJlKG9iajogRXZlbnRTb3VyY2VNYXBwaW5nU3BlY0Rlc3RpbmF0aW9uQ29uZmlnT25GYWlsdXJlIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnZGVzdGluYXRpb24nOiBvYmouZGVzdGluYXRpb24sXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQSBkZXN0aW5hdGlvbiBmb3IgZXZlbnRzIHRoYXQgd2VyZSBwcm9jZXNzZWQgc3VjY2Vzc2Z1bGx5LlxuICpcbiAqIEBzY2hlbWEgRXZlbnRTb3VyY2VNYXBwaW5nU3BlY0Rlc3RpbmF0aW9uQ29uZmlnT25TdWNjZXNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRTb3VyY2VNYXBwaW5nU3BlY0Rlc3RpbmF0aW9uQ29uZmlnT25TdWNjZXNzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgRXZlbnRTb3VyY2VNYXBwaW5nU3BlY0Rlc3RpbmF0aW9uQ29uZmlnT25TdWNjZXNzI2Rlc3RpbmF0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXN0aW5hdGlvbj86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdFdmVudFNvdXJjZU1hcHBpbmdTcGVjRGVzdGluYXRpb25Db25maWdPblN1Y2Nlc3MnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0V2ZW50U291cmNlTWFwcGluZ1NwZWNEZXN0aW5hdGlvbkNvbmZpZ09uU3VjY2VzcyhvYmo6IEV2ZW50U291cmNlTWFwcGluZ1NwZWNEZXN0aW5hdGlvbkNvbmZpZ09uU3VjY2VzcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2Rlc3RpbmF0aW9uJzogb2JqLmRlc3RpbmF0aW9uLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4iXX0=