@aws-cdk/aws-glue-alpha 2.263.0-alpha.0 → 2.265.0-alpha.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 (43) hide show
  1. package/.jsii +1537 -320
  2. package/.jsii.tabl.json.gz +0 -0
  3. package/.warnings.jsii.js +23 -1
  4. package/README.md +175 -1
  5. package/awslint.json +2 -1
  6. package/lib/catalog.d.ts +259 -0
  7. package/lib/catalog.js +424 -0
  8. package/lib/code.js +3 -3
  9. package/lib/connection.js +12 -4
  10. package/lib/data-format.js +5 -5
  11. package/lib/data-quality-ruleset.d.ts +7 -1
  12. package/lib/data-quality-ruleset.js +4 -3
  13. package/lib/database.d.ts +27 -15
  14. package/lib/database.js +45 -23
  15. package/lib/external-table.js +3 -3
  16. package/lib/index.d.ts +1 -0
  17. package/lib/index.js +2 -1
  18. package/lib/jobs/job.d.ts +5 -0
  19. package/lib/jobs/job.js +5 -3
  20. package/lib/jobs/pyspark-etl-job.js +1 -1
  21. package/lib/jobs/pyspark-flex-etl-job.js +3 -3
  22. package/lib/jobs/pyspark-streaming-job.js +1 -1
  23. package/lib/jobs/python-shell-job.js +1 -1
  24. package/lib/jobs/ray-job.js +1 -1
  25. package/lib/jobs/scala-spark-etl-job.js +1 -1
  26. package/lib/jobs/scala-spark-flex-etl-job.js +3 -3
  27. package/lib/jobs/scala-spark-streaming-job.js +1 -1
  28. package/lib/jobs/spark-job.js +1 -1
  29. package/lib/partition-projection.js +1 -1
  30. package/lib/private/secret-detection.d.ts +22 -0
  31. package/lib/private/secret-detection.js +42 -0
  32. package/lib/s3-table.d.ts +10 -0
  33. package/lib/s3-table.js +26 -4
  34. package/lib/schema.js +1 -1
  35. package/lib/security-configuration.d.ts +6 -0
  36. package/lib/security-configuration.js +4 -3
  37. package/lib/storage-parameter.js +1 -1
  38. package/lib/table-base.d.ts +23 -3
  39. package/lib/table-base.js +37 -7
  40. package/lib/table-deprecated.js +1 -1
  41. package/lib/triggers/trigger-options.js +1 -1
  42. package/lib/triggers/workflow.js +2 -2
  43. package/package.json +7 -7
package/lib/catalog.js ADDED
@@ -0,0 +1,424 @@
1
+ "use strict";
2
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
3
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
4
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
5
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
6
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
7
+ var _, done = false;
8
+ for (var i = decorators.length - 1; i >= 0; i--) {
9
+ var context = {};
10
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
11
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
12
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
13
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
14
+ if (kind === "accessor") {
15
+ if (result === void 0) continue;
16
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
17
+ if (_ = accept(result.get)) descriptor.get = _;
18
+ if (_ = accept(result.set)) descriptor.set = _;
19
+ if (_ = accept(result.init)) initializers.unshift(_);
20
+ }
21
+ else if (_ = accept(result)) {
22
+ if (kind === "field") initializers.unshift(_);
23
+ else descriptor[key] = _;
24
+ }
25
+ }
26
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
27
+ done = true;
28
+ };
29
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
30
+ var useValue = arguments.length > 2;
31
+ for (var i = 0; i < initializers.length; i++) {
32
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
33
+ }
34
+ return useValue ? value : void 0;
35
+ };
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.Catalog = exports.CatalogBase = exports.DataCatalogEncryptionAtRest = exports.CatalogEncryptionMode = void 0;
38
+ const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
39
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
40
+ const aws_glue_1 = require("aws-cdk-lib/aws-glue");
41
+ const aws_kms_1 = require("aws-cdk-lib/aws-kms");
42
+ const core_1 = require("aws-cdk-lib/core");
43
+ const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
44
+ const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
45
+ const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
46
+ /**
47
+ * The encryption-at-rest mode for a Glue Data Catalog.
48
+ *
49
+ * @see https://docs.aws.amazon.com/glue/latest/webapi/API_EncryptionAtRest.html#Glue-Type-EncryptionAtRest-CatalogEncryptionMode
50
+ */
51
+ var CatalogEncryptionMode;
52
+ (function (CatalogEncryptionMode) {
53
+ /**
54
+ * Encryption at rest is disabled.
55
+ */
56
+ CatalogEncryptionMode["DISABLED"] = "DISABLED";
57
+ /**
58
+ * Server-side encryption (SSE) with an AWS KMS key.
59
+ */
60
+ CatalogEncryptionMode["SSE_KMS"] = "SSE-KMS";
61
+ /**
62
+ * Server-side encryption (SSE) with an AWS KMS key, using a service role that
63
+ * AWS Glue assumes to access the key on your behalf.
64
+ */
65
+ CatalogEncryptionMode["SSE_KMS_WITH_SERVICE_ROLE"] = "SSE-KMS-WITH-SERVICE-ROLE";
66
+ })(CatalogEncryptionMode || (exports.CatalogEncryptionMode = CatalogEncryptionMode = {}));
67
+ /**
68
+ * Encryption-at-rest configuration for a Glue Data Catalog.
69
+ *
70
+ * The Data Catalog encryption at rest and the connection password encryption
71
+ * are independent: enabling one does not require the other, and each may use a
72
+ * different KMS key.
73
+ *
74
+ * @see https://docs.aws.amazon.com/glue/latest/webapi/API_EncryptionAtRest.html
75
+ */
76
+ class DataCatalogEncryptionAtRest {
77
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.DataCatalogEncryptionAtRest", version: "2.265.0-alpha.0" };
78
+ /**
79
+ * Disable encryption at rest for the Data Catalog.
80
+ */
81
+ static disabled() {
82
+ return new DataCatalogEncryptionAtRest(CatalogEncryptionMode.DISABLED);
83
+ }
84
+ /**
85
+ * Encrypt the Data Catalog at rest with an AWS KMS key.
86
+ *
87
+ * @param key the KMS key to use. If omitted, an AWS-managed key is used and
88
+ * the key is not exposed as a grantable resource.
89
+ */
90
+ static kms(key) {
91
+ return new DataCatalogEncryptionAtRest(CatalogEncryptionMode.SSE_KMS, key);
92
+ }
93
+ /**
94
+ * Encrypt the Data Catalog at rest with an AWS KMS key, accessed through a
95
+ * service role that AWS Glue assumes on your behalf.
96
+ *
97
+ * When a customer-managed `key` is provided, the `role` is automatically
98
+ * granted `kms:Encrypt`/`kms:Decrypt`/`kms:GenerateDataKey*` on it.
99
+ *
100
+ * @param role the service role that AWS Glue assumes to access the key.
101
+ * @param key the KMS key to use. If omitted, an AWS-managed key is used and
102
+ * the key is not exposed as a grantable resource.
103
+ */
104
+ static kmsWithServiceRole(role, key) {
105
+ return new DataCatalogEncryptionAtRest(CatalogEncryptionMode.SSE_KMS_WITH_SERVICE_ROLE, key, role);
106
+ }
107
+ /**
108
+ * The encryption mode.
109
+ */
110
+ mode;
111
+ /**
112
+ * The customer-managed KMS key used for encryption at rest, if any.
113
+ */
114
+ kmsKey;
115
+ /**
116
+ * The service role that AWS Glue assumes to access the KMS key, if any.
117
+ */
118
+ serviceRole;
119
+ constructor(mode, kmsKey, serviceRole) {
120
+ this.mode = mode;
121
+ this.kmsKey = kmsKey;
122
+ this.serviceRole = serviceRole;
123
+ }
124
+ }
125
+ exports.DataCatalogEncryptionAtRest = DataCatalogEncryptionAtRest;
126
+ /**
127
+ * Base class for all `ICatalog` implementations. Materializes the single
128
+ * `CfnDataCatalogEncryptionSettings` resource (targeting its own `catalogId`)
129
+ * from the encryption options supplied at construction. Encryption is fixed at
130
+ * construction, so a catalog either carries settings or it does not.
131
+ */
132
+ class CatalogBase extends core_1.Resource {
133
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.CatalogBase", version: "2.265.0-alpha.0" };
134
+ _encryptionKey;
135
+ _connectionPasswordKey;
136
+ get encryptionKey() {
137
+ return this._encryptionKey;
138
+ }
139
+ get connectionPasswordKey() {
140
+ return this._connectionPasswordKey;
141
+ }
142
+ get catalogRef() {
143
+ return {
144
+ resourceArn: this.catalogArn,
145
+ };
146
+ }
147
+ /**
148
+ * Emit the catalog's encryption settings from the options fixed at
149
+ * construction. Subclasses call this once, after `catalogId`/`catalogArn` are
150
+ * assigned. When neither block is configured, no resource is emitted, avoiding
151
+ * an empty settings resource that would reset the catalog on deploy.
152
+ */
153
+ configureEncryption(options) {
154
+ try {
155
+ jsiiDeprecationWarnings._aws_cdk_aws_glue_alpha_CatalogEncryptionOptions(options);
156
+ }
157
+ catch (error) {
158
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
159
+ Error.captureStackTrace(error, this.configureEncryption);
160
+ }
161
+ throw error;
162
+ }
163
+ const atRest = options.encryptionAtRest;
164
+ const password = options.connectionPasswordEncryption;
165
+ if (!atRest && !password) {
166
+ return;
167
+ }
168
+ this._encryptionKey = atRest?.kmsKey;
169
+ this._connectionPasswordKey = password?.kmsKey;
170
+ // Auto-grant the service role access to the customer-managed key it needs
171
+ // to encrypt and decrypt catalog data. Nothing to grant for an AWS-managed
172
+ // key (we don't own its key policy).
173
+ if (atRest?.serviceRole && atRest.kmsKey) {
174
+ aws_kms_1.KeyGrants.fromKey(atRest.kmsKey).encryptDecrypt(atRest.serviceRole);
175
+ }
176
+ // Two catalog instances that target the same catalog id would each emit a
177
+ // settings resource and race to overwrite one another via
178
+ // `PutDataCatalogEncryptionSettings`. Within one stack this is surfaced by
179
+ // CloudFormation template validation (E3019: duplicate primary identifiers),
180
+ // so we do not duplicate that check here.
181
+ new aws_glue_1.CfnDataCatalogEncryptionSettings(this, 'EncryptionSettings', {
182
+ catalogId: this.catalogId,
183
+ dataCatalogEncryptionSettings: {
184
+ encryptionAtRest: atRest
185
+ ? {
186
+ catalogEncryptionMode: atRest.mode,
187
+ sseAwsKmsKeyId: atRest.kmsKey?.keyRef.keyArn,
188
+ catalogEncryptionServiceRole: atRest.serviceRole?.roleArn,
189
+ }
190
+ : undefined,
191
+ connectionPasswordEncryption: password
192
+ ? {
193
+ kmsKeyId: password.kmsKey?.keyRef.keyArn,
194
+ returnConnectionPasswordEncrypted: password.returnConnectionPasswordEncrypted ?? true,
195
+ }
196
+ : undefined,
197
+ },
198
+ });
199
+ }
200
+ }
201
+ exports.CatalogBase = CatalogBase;
202
+ /**
203
+ * The stack-scoped singleton id for the implicit account-wide catalog.
204
+ */
205
+ const ACCOUNT_CATALOG_UID = '@aws-cdk.aws-glue-alpha.AccountCatalog';
206
+ /**
207
+ * A Glue Data Catalog.
208
+ *
209
+ * Use `Catalog.forAccount(scope)` to obtain the implicit account-wide catalog,
210
+ * `Catalog.encryptAccount(scope, options)` to configure its Data Catalog
211
+ * encryption, or `new Catalog(...)` to create an `AWS::Glue::Catalog` resource.
212
+ */
213
+ let Catalog = (() => {
214
+ let _classDecorators = [prop_injectable_1.propertyInjectable];
215
+ let _classDescriptor;
216
+ let _classExtraInitializers = [];
217
+ let _classThis;
218
+ let _classSuper = CatalogBase;
219
+ var Catalog = class extends _classSuper {
220
+ static { _classThis = this; }
221
+ static {
222
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
223
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
224
+ Catalog = _classThis = _classDescriptor.value;
225
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
226
+ }
227
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.Catalog", version: "2.265.0-alpha.0" };
228
+ /** Uniquely identifies this class. */
229
+ static PROPERTY_INJECTION_ID = '@aws-cdk.aws-glue-alpha.Catalog';
230
+ /**
231
+ * Obtain the implicit, account-wide Data Catalog.
232
+ *
233
+ * The account catalog is not a CloudFormation resource; it always exists. This
234
+ * returns a stack-scoped singleton, so repeated calls within the same stack
235
+ * return the same instance.
236
+ *
237
+ * This returns the account catalog without managing its encryption. To
238
+ * configure Data Catalog encryption for the account, use
239
+ * `Catalog.encryptAccount(scope, options)` instead - it must be called before
240
+ * the account catalog is first used in the stack.
241
+ */
242
+ static forAccount(scope) {
243
+ const stack = core_1.Stack.of(scope);
244
+ const existing = stack.node.tryFindChild(ACCOUNT_CATALOG_UID);
245
+ return existing ?? new AccountCatalog(stack, ACCOUNT_CATALOG_UID, {});
246
+ }
247
+ /**
248
+ * Configure Data Catalog encryption for the implicit, account-wide catalog and
249
+ * return it.
250
+ *
251
+ * The account catalog's encryption is an account/region-wide setting, managed
252
+ * through the singleton `PutDataCatalogEncryptionSettings` API. Because
253
+ * encryption is fixed at construction, it must be configured before the
254
+ * account catalog is first used in the stack: calling this after the account
255
+ * catalog has already been materialized (for example by `Catalog.forAccount`,
256
+ * or by a `Database` that uses the account catalog) throws.
257
+ *
258
+ * Configure it in exactly one stack. Configuring it from multiple stacks in the
259
+ * same account and region makes those stacks overwrite one another at deploy
260
+ * time, and the result is order-dependent. Unlike duplicate settings within a
261
+ * single stack (which CloudFormation rejects), this cross-stack conflict is not
262
+ * caught at synthesis time, because each stack synthesizes to its own template.
263
+ */
264
+ static encryptAccount(scope, options) {
265
+ try {
266
+ jsiiDeprecationWarnings._aws_cdk_aws_glue_alpha_CatalogEncryptionOptions(options);
267
+ }
268
+ catch (error) {
269
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
270
+ Error.captureStackTrace(error, this.encryptAccount);
271
+ }
272
+ throw error;
273
+ }
274
+ const stack = core_1.Stack.of(scope);
275
+ if (stack.node.tryFindChild(ACCOUNT_CATALOG_UID)) {
276
+ throw new core_1.ValidationError((0, helpers_internal_1.lit) `AccountCatalogAlreadyInUse`, 'the account catalog has already been used in this stack; call Catalog.encryptAccount() before Catalog.forAccount() or any Database that uses the account catalog', scope);
277
+ }
278
+ return new AccountCatalog(stack, ACCOUNT_CATALOG_UID, options);
279
+ }
280
+ /**
281
+ * Import an existing catalog by its ARN.
282
+ *
283
+ * The ARN must be a Glue catalog ARN, either the account-wide catalog
284
+ * (`arn:aws:glue:<region>:<account>:catalog`, whose id is the account) or a
285
+ * named catalog (`arn:aws:glue:<region>:<account>:catalog/<name>`, whose id is
286
+ * the name).
287
+ *
288
+ * The imported catalog is a pure identity handle and does not manage the
289
+ * catalog's encryption. To manage an existing catalog's Data Catalog
290
+ * encryption, add a `CfnDataCatalogEncryptionSettings` resource targeting its
291
+ * id.
292
+ */
293
+ static fromCatalogArn(scope, id, catalogArn) {
294
+ const stack = core_1.Stack.of(scope);
295
+ const arn = stack.splitArn(catalogArn, core_1.ArnFormat.SLASH_RESOURCE_NAME);
296
+ // Only validate the shape of concrete ARNs; a tokenized ARN can't be
297
+ // inspected at synth time, so we trust it.
298
+ if (!core_1.Token.isUnresolved(catalogArn) && (arn.service !== 'glue' || arn.resource !== 'catalog')) {
299
+ throw new core_1.ValidationError((0, helpers_internal_1.lit) `InvalidCatalogArn`, `expected a Glue catalog ARN (arn:<partition>:glue:<region>:<account>:catalog[/<name>]), got ${JSON.stringify(catalogArn)}`, scope);
300
+ }
301
+ // The account-wide catalog's ARN has no resource name; its id is the
302
+ // account from the ARN itself (falling back to the stack account for a
303
+ // tokenized ARN with no parseable account).
304
+ const catalogId = arn.resourceName ?? arn.account ?? stack.account;
305
+ return new ImportedCatalog(scope, id, catalogId, catalogArn);
306
+ }
307
+ /**
308
+ * Import an existing catalog by its id.
309
+ *
310
+ * The imported catalog is a pure identity handle and does not manage the
311
+ * catalog's encryption. To manage an existing catalog's Data Catalog
312
+ * encryption, add a `CfnDataCatalogEncryptionSettings` resource targeting its
313
+ * id.
314
+ */
315
+ static fromCatalogId(scope, id, catalogId) {
316
+ const stack = core_1.Stack.of(scope);
317
+ const catalogArn = stack.formatArn({ service: 'glue', resource: 'catalog', resourceName: catalogId });
318
+ return new ImportedCatalog(scope, id, catalogId, catalogArn);
319
+ }
320
+ catalogId;
321
+ catalogArn;
322
+ resource;
323
+ constructor(scope, id, props) {
324
+ super(scope, id);
325
+ try {
326
+ jsiiDeprecationWarnings._aws_cdk_aws_glue_alpha_CatalogProps(props);
327
+ }
328
+ catch (error) {
329
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
330
+ Error.captureStackTrace(error, Catalog);
331
+ }
332
+ throw error;
333
+ }
334
+ // Enhanced CDK Analytics Telemetry
335
+ (0, metadata_resource_1.addConstructMetadata)(this, props);
336
+ this.resource = new aws_glue_1.CfnCatalog(this, 'Resource', {
337
+ name: props.catalogName,
338
+ description: props.description,
339
+ });
340
+ this.catalogId = this.resource.attrCatalogId;
341
+ this.catalogArn = this.resource.attrResourceArn;
342
+ this.configureEncryption(props);
343
+ }
344
+ static {
345
+ __runInitializers(_classThis, _classExtraInitializers);
346
+ }
347
+ };
348
+ return Catalog = _classThis;
349
+ })();
350
+ exports.Catalog = Catalog;
351
+ /**
352
+ * The implicit, account-wide Data Catalog. Not a CloudFormation resource; only
353
+ * the encryption settings it carries are synthesized.
354
+ */
355
+ let AccountCatalog = (() => {
356
+ let _classDecorators = [prop_injectable_1.propertyInjectable];
357
+ let _classDescriptor;
358
+ let _classExtraInitializers = [];
359
+ let _classThis;
360
+ let _classSuper = CatalogBase;
361
+ var AccountCatalog = class extends _classSuper {
362
+ static { _classThis = this; }
363
+ static {
364
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
365
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
366
+ AccountCatalog = _classThis = _classDescriptor.value;
367
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
368
+ }
369
+ /** Uniquely identifies this class. */
370
+ static PROPERTY_INJECTION_ID = '@aws-cdk.aws-glue-alpha.AccountCatalog';
371
+ catalogId;
372
+ catalogArn;
373
+ constructor(scope, id, encryption) {
374
+ super(scope, id);
375
+ // Enhanced CDK Analytics Telemetry
376
+ (0, metadata_resource_1.addConstructMetadata)(this, encryption);
377
+ const stack = core_1.Stack.of(this);
378
+ this.catalogId = stack.account;
379
+ // The account catalog's id is implicitly the account id, so the ARN has no resource name.
380
+ this.catalogArn = stack.formatArn({ service: 'glue', resource: 'catalog' });
381
+ this.configureEncryption(encryption);
382
+ }
383
+ static {
384
+ __runInitializers(_classThis, _classExtraInitializers);
385
+ }
386
+ };
387
+ return AccountCatalog = _classThis;
388
+ })();
389
+ /**
390
+ * An imported catalog. A pure identity handle: it emits no resources and does
391
+ * not manage the imported catalog's encryption.
392
+ */
393
+ let ImportedCatalog = (() => {
394
+ let _classDecorators = [prop_injectable_1.propertyInjectable];
395
+ let _classDescriptor;
396
+ let _classExtraInitializers = [];
397
+ let _classThis;
398
+ let _classSuper = CatalogBase;
399
+ var ImportedCatalog = class extends _classSuper {
400
+ static { _classThis = this; }
401
+ static {
402
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
403
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
404
+ ImportedCatalog = _classThis = _classDescriptor.value;
405
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
406
+ }
407
+ /** Uniquely identifies this class. */
408
+ static PROPERTY_INJECTION_ID = '@aws-cdk.aws-glue-alpha.ImportedCatalog';
409
+ catalogId;
410
+ catalogArn;
411
+ constructor(scope, id, catalogId, catalogArn) {
412
+ super(scope, id);
413
+ // Enhanced CDK Analytics Telemetry
414
+ (0, metadata_resource_1.addConstructMetadata)(this, catalogId);
415
+ this.catalogId = catalogId;
416
+ this.catalogArn = catalogArn;
417
+ }
418
+ static {
419
+ __runInitializers(_classThis, _classExtraInitializers);
420
+ }
421
+ };
422
+ return ImportedCatalog = _classThis;
423
+ })();
424
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNhdGFsb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsbURBQW9GO0FBR3BGLGlEQUFnRDtBQUVoRCwyQ0FBc0Y7QUFDdEYsNEVBQTREO0FBQzVELDhFQUE4RTtBQUM5RSwwRUFBMEU7QUFHMUU7Ozs7R0FJRztBQUNILElBQVkscUJBZ0JYO0FBaEJELFdBQVkscUJBQXFCO0lBQy9COztPQUVHO0lBQ0gsOENBQXFCLENBQUE7SUFFckI7O09BRUc7SUFDSCw0Q0FBbUIsQ0FBQTtJQUVuQjs7O09BR0c7SUFDSCxnRkFBdUQsQ0FBQTtBQUN6RCxDQUFDLEVBaEJXLHFCQUFxQixxQ0FBckIscUJBQXFCLFFBZ0JoQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSwyQkFBMkI7O0lBQ3RDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFFBQVE7UUFDcEIsT0FBTyxJQUFJLDJCQUEyQixDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ3hFO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQWM7UUFDOUIsT0FBTyxJQUFJLDJCQUEyQixDQUFDLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztLQUM1RTtJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBZSxFQUFFLEdBQWM7UUFDOUQsT0FBTyxJQUFJLDJCQUEyQixDQUFDLHFCQUFxQixDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUNwRztJQUVEOztPQUVHO0lBQ2EsSUFBSSxDQUF3QjtJQUU1Qzs7T0FFRztJQUNhLE1BQU0sQ0FBZTtJQUVyQzs7T0FFRztJQUNhLFdBQVcsQ0FBYTtJQUV4QyxZQUFvQixJQUEyQixFQUFFLE1BQW9CLEVBQUUsV0FBdUI7UUFDNUYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7S0FDaEM7O0FBcERILGtFQXFEQztBQTBGRDs7Ozs7R0FLRztBQUNILE1BQXNCLFdBQVksU0FBUSxlQUFROztJQUl4QyxjQUFjLENBQWU7SUFDN0Isc0JBQXNCLENBQWU7SUFFN0MsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztLQUM1QjtJQUVELElBQVcscUJBQXFCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO0tBQ3BDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU87WUFDTCxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDN0IsQ0FBQztLQUNIO0lBRUQ7Ozs7O09BS0c7SUFDTyxtQkFBbUIsQ0FBQyxPQUFpQzs7Ozs7Ozs7OztRQUM3RCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDeEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLDRCQUE0QixDQUFDO1FBRXRELElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN6QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxFQUFFLE1BQU0sQ0FBQztRQUNyQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsUUFBUSxFQUFFLE1BQU0sQ0FBQztRQUUvQywwRUFBMEU7UUFDMUUsMkVBQTJFO1FBQzNFLHFDQUFxQztRQUNyQyxJQUFJLE1BQU0sRUFBRSxXQUFXLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3pDLG1CQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFFRCwwRUFBMEU7UUFDMUUsMERBQTBEO1FBQzFELDJFQUEyRTtRQUMzRSw2RUFBNkU7UUFDN0UsMENBQTBDO1FBQzFDLElBQUksMkNBQWdDLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFO1lBQy9ELFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6Qiw2QkFBNkIsRUFBRTtnQkFDN0IsZ0JBQWdCLEVBQUUsTUFBTTtvQkFDdEIsQ0FBQyxDQUFDO3dCQUNBLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxJQUFJO3dCQUNsQyxjQUFjLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTt3QkFDNUMsNEJBQTRCLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRSxPQUFPO3FCQUMxRDtvQkFDRCxDQUFDLENBQUMsU0FBUztnQkFDYiw0QkFBNEIsRUFBRSxRQUFRO29CQUNwQyxDQUFDLENBQUM7d0JBQ0EsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07d0JBQ3hDLGlDQUFpQyxFQUFFLFFBQVEsQ0FBQyxpQ0FBaUMsSUFBSSxJQUFJO3FCQUN0RjtvQkFDRCxDQUFDLENBQUMsU0FBUzthQUNkO1NBQ0YsQ0FBQyxDQUFDO0tBQ0o7O0FBcEVILGtDQXFFQztBQW1CRDs7R0FFRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsd0NBQXdDLENBQUM7QUFFckU7Ozs7OztHQU1HO0lBRVUsT0FBTzs0QkFEbkIsb0NBQWtCOzs7O3NCQUNVLFdBQVc7dUJBQW5CLFNBQVEsV0FBVzs7OztZQUF4Qyw2S0F1SEM7Ozs7O1FBdEhDLHNDQUFzQztRQUMvQixNQUFNLENBQVUscUJBQXFCLEdBQVcsaUNBQWlDLENBQUM7UUFFekY7Ozs7Ozs7Ozs7O1dBV0c7UUFDSSxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQWdCO1lBQ3ZDLE1BQU0sS0FBSyxHQUFHLFlBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUM5RCxPQUFRLFFBQTJCLElBQUksSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzNGO1FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7V0FnQkc7UUFDSSxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCLEVBQUUsT0FBaUM7Ozs7Ozs7Ozs7WUFDOUUsTUFBTSxLQUFLLEdBQUcsWUFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztnQkFDakQsTUFBTSxJQUFJLHNCQUFlLENBQ3ZCLElBQUEsc0JBQUcsRUFBQSw0QkFBNEIsRUFDL0Isa0tBQWtLLEVBQ2xLLEtBQUssQ0FDTixDQUFDO1lBQ0osQ0FBQztZQUNELE9BQU8sSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ2hFO1FBRUQ7Ozs7Ozs7Ozs7OztXQVlHO1FBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxVQUFrQjtZQUMzRSxNQUFNLEtBQUssR0FBRyxZQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLGdCQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUV0RSxxRUFBcUU7WUFDckUsMkNBQTJDO1lBQzNDLElBQUksQ0FBQyxZQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sS0FBSyxNQUFNLElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUM5RixNQUFNLElBQUksc0JBQWUsQ0FDdkIsSUFBQSxzQkFBRyxFQUFBLG1CQUFtQixFQUN0QiwrRkFBK0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUMzSCxLQUFLLENBQ04sQ0FBQztZQUNKLENBQUM7WUFFRCxxRUFBcUU7WUFDckUsdUVBQXVFO1lBQ3ZFLDRDQUE0QztZQUM1QyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsWUFBWSxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNuRSxPQUFPLElBQUksZUFBZSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQzlEO1FBRUQ7Ozs7Ozs7V0FPRztRQUNJLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsU0FBaUI7WUFDekUsTUFBTSxLQUFLLEdBQUcsWUFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQ3RHLE9BQU8sSUFBSSxlQUFlLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDOUQ7UUFFZSxTQUFTLENBQVM7UUFDbEIsVUFBVSxDQUFTO1FBRWxCLFFBQVEsQ0FBYTtRQUV0QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW1CO1lBQzNELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Ozs7OzttREF6R1IsT0FBTzs7OztZQTBHaEIsbUNBQW1DO1lBQ25DLElBQUEsd0NBQW9CLEVBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRWxDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxxQkFBVSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQy9DLElBQUksRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDdkIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2FBQy9CLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7WUFDN0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQztZQUVoRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDakM7O1lBdEhVLHVEQUFPOzs7OztBQUFQLDBCQUFPO0FBeUhwQjs7O0dBR0c7SUFFRyxjQUFjOzRCQURuQixvQ0FBa0I7Ozs7c0JBQ1UsV0FBVzs4QkFBbkIsU0FBUSxXQUFXOzs7O1lBQXhDLDZLQWlCQzs7OztRQWhCQyxzQ0FBc0M7UUFDL0IsTUFBTSxDQUFVLHFCQUFxQixHQUFXLHdDQUF3QyxDQUFDO1FBQ2hGLFNBQVMsQ0FBUztRQUNsQixVQUFVLENBQVM7UUFFbkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxVQUFvQztZQUM1RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pCLG1DQUFtQztZQUNuQyxJQUFBLHdDQUFvQixFQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN2QyxNQUFNLEtBQUssR0FBRyxZQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUMvQiwwRkFBMEY7WUFDMUYsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUU1RSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDdEM7O1lBaEJHLHVEQUFjOzs7OztBQW1CcEI7OztHQUdHO0lBRUcsZUFBZTs0QkFEcEIsb0NBQWtCOzs7O3NCQUNXLFdBQVc7K0JBQW5CLFNBQVEsV0FBVzs7OztZQUF6Qyw2S0FhQzs7OztRQVpDLHNDQUFzQztRQUMvQixNQUFNLENBQVUscUJBQXFCLEdBQVcseUNBQXlDLENBQUM7UUFDakYsU0FBUyxDQUFTO1FBQ2xCLFVBQVUsQ0FBUztRQUVuQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFNBQWlCLEVBQUUsVUFBa0I7WUFDN0UsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNqQixtQ0FBbUM7WUFDbkMsSUFBQSx3Q0FBb0IsRUFBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7U0FDOUI7O1lBWkcsdURBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENhdGFsb2dSZWZlcmVuY2UsIElDYXRhbG9nUmVmIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWdsdWUnO1xuaW1wb3J0IHsgQ2ZuQ2F0YWxvZywgQ2ZuRGF0YUNhdGFsb2dFbmNyeXB0aW9uU2V0dGluZ3MgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZ2x1ZSc7XG5pbXBvcnQgdHlwZSAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB0eXBlICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0IHsgS2V5R3JhbnRzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgdHlwZSB7IElSZXNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgQXJuRm9ybWF0LCBSZXNvdXJjZSwgU3RhY2ssIFRva2VuLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBUaGUgZW5jcnlwdGlvbi1hdC1yZXN0IG1vZGUgZm9yIGEgR2x1ZSBEYXRhIENhdGFsb2cuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2x1ZS9sYXRlc3Qvd2ViYXBpL0FQSV9FbmNyeXB0aW9uQXRSZXN0Lmh0bWwjR2x1ZS1UeXBlLUVuY3J5cHRpb25BdFJlc3QtQ2F0YWxvZ0VuY3J5cHRpb25Nb2RlXG4gKi9cbmV4cG9ydCBlbnVtIENhdGFsb2dFbmNyeXB0aW9uTW9kZSB7XG4gIC8qKlxuICAgKiBFbmNyeXB0aW9uIGF0IHJlc3QgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBESVNBQkxFRCA9ICdESVNBQkxFRCcsXG5cbiAgLyoqXG4gICAqIFNlcnZlci1zaWRlIGVuY3J5cHRpb24gKFNTRSkgd2l0aCBhbiBBV1MgS01TIGtleS5cbiAgICovXG4gIFNTRV9LTVMgPSAnU1NFLUtNUycsXG5cbiAgLyoqXG4gICAqIFNlcnZlci1zaWRlIGVuY3J5cHRpb24gKFNTRSkgd2l0aCBhbiBBV1MgS01TIGtleSwgdXNpbmcgYSBzZXJ2aWNlIHJvbGUgdGhhdFxuICAgKiBBV1MgR2x1ZSBhc3N1bWVzIHRvIGFjY2VzcyB0aGUga2V5IG9uIHlvdXIgYmVoYWxmLlxuICAgKi9cbiAgU1NFX0tNU19XSVRIX1NFUlZJQ0VfUk9MRSA9ICdTU0UtS01TLVdJVEgtU0VSVklDRS1ST0xFJyxcbn1cblxuLyoqXG4gKiBFbmNyeXB0aW9uLWF0LXJlc3QgY29uZmlndXJhdGlvbiBmb3IgYSBHbHVlIERhdGEgQ2F0YWxvZy5cbiAqXG4gKiBUaGUgRGF0YSBDYXRhbG9nIGVuY3J5cHRpb24gYXQgcmVzdCBhbmQgdGhlIGNvbm5lY3Rpb24gcGFzc3dvcmQgZW5jcnlwdGlvblxuICogYXJlIGluZGVwZW5kZW50OiBlbmFibGluZyBvbmUgZG9lcyBub3QgcmVxdWlyZSB0aGUgb3RoZXIsIGFuZCBlYWNoIG1heSB1c2UgYVxuICogZGlmZmVyZW50IEtNUyBrZXkuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2x1ZS9sYXRlc3Qvd2ViYXBpL0FQSV9FbmNyeXB0aW9uQXRSZXN0Lmh0bWxcbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFDYXRhbG9nRW5jcnlwdGlvbkF0UmVzdCB7XG4gIC8qKlxuICAgKiBEaXNhYmxlIGVuY3J5cHRpb24gYXQgcmVzdCBmb3IgdGhlIERhdGEgQ2F0YWxvZy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGlzYWJsZWQoKTogRGF0YUNhdGFsb2dFbmNyeXB0aW9uQXRSZXN0IHtcbiAgICByZXR1cm4gbmV3IERhdGFDYXRhbG9nRW5jcnlwdGlvbkF0UmVzdChDYXRhbG9nRW5jcnlwdGlvbk1vZGUuRElTQUJMRUQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY3J5cHQgdGhlIERhdGEgQ2F0YWxvZyBhdCByZXN0IHdpdGggYW4gQVdTIEtNUyBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgdGhlIEtNUyBrZXkgdG8gdXNlLiBJZiBvbWl0dGVkLCBhbiBBV1MtbWFuYWdlZCBrZXkgaXMgdXNlZCBhbmRcbiAgICogdGhlIGtleSBpcyBub3QgZXhwb3NlZCBhcyBhIGdyYW50YWJsZSByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMga21zKGtleT86IGttcy5JS2V5KTogRGF0YUNhdGFsb2dFbmNyeXB0aW9uQXRSZXN0IHtcbiAgICByZXR1cm4gbmV3IERhdGFDYXRhbG9nRW5jcnlwdGlvbkF0UmVzdChDYXRhbG9nRW5jcnlwdGlvbk1vZGUuU1NFX0tNUywga2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNyeXB0IHRoZSBEYXRhIENhdGFsb2cgYXQgcmVzdCB3aXRoIGFuIEFXUyBLTVMga2V5LCBhY2Nlc3NlZCB0aHJvdWdoIGFcbiAgICogc2VydmljZSByb2xlIHRoYXQgQVdTIEdsdWUgYXNzdW1lcyBvbiB5b3VyIGJlaGFsZi5cbiAgICpcbiAgICogV2hlbiBhIGN1c3RvbWVyLW1hbmFnZWQgYGtleWAgaXMgcHJvdmlkZWQsIHRoZSBgcm9sZWAgaXMgYXV0b21hdGljYWxseVxuICAgKiBncmFudGVkIGBrbXM6RW5jcnlwdGAvYGttczpEZWNyeXB0YC9ga21zOkdlbmVyYXRlRGF0YUtleSpgIG9uIGl0LlxuICAgKlxuICAgKiBAcGFyYW0gcm9sZSB0aGUgc2VydmljZSByb2xlIHRoYXQgQVdTIEdsdWUgYXNzdW1lcyB0byBhY2Nlc3MgdGhlIGtleS5cbiAgICogQHBhcmFtIGtleSB0aGUgS01TIGtleSB0byB1c2UuIElmIG9taXR0ZWQsIGFuIEFXUy1tYW5hZ2VkIGtleSBpcyB1c2VkIGFuZFxuICAgKiB0aGUga2V5IGlzIG5vdCBleHBvc2VkIGFzIGEgZ3JhbnRhYmxlIHJlc291cmNlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBrbXNXaXRoU2VydmljZVJvbGUocm9sZTogaWFtLklSb2xlLCBrZXk/OiBrbXMuSUtleSk6IERhdGFDYXRhbG9nRW5jcnlwdGlvbkF0UmVzdCB7XG4gICAgcmV0dXJuIG5ldyBEYXRhQ2F0YWxvZ0VuY3J5cHRpb25BdFJlc3QoQ2F0YWxvZ0VuY3J5cHRpb25Nb2RlLlNTRV9LTVNfV0lUSF9TRVJWSUNFX1JPTEUsIGtleSwgcm9sZSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGVuY3J5cHRpb24gbW9kZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBtb2RlOiBDYXRhbG9nRW5jcnlwdGlvbk1vZGU7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXN0b21lci1tYW5hZ2VkIEtNUyBrZXkgdXNlZCBmb3IgZW5jcnlwdGlvbiBhdCByZXN0LCBpZiBhbnkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkga21zS2V5Pzoga21zLklLZXlSZWY7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXJ2aWNlIHJvbGUgdGhhdCBBV1MgR2x1ZSBhc3N1bWVzIHRvIGFjY2VzcyB0aGUgS01TIGtleSwgaWYgYW55LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2VSb2xlPzogaWFtLklSb2xlO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IobW9kZTogQ2F0YWxvZ0VuY3J5cHRpb25Nb2RlLCBrbXNLZXk/OiBrbXMuSUtleVJlZiwgc2VydmljZVJvbGU/OiBpYW0uSVJvbGUpIHtcbiAgICB0aGlzLm1vZGUgPSBtb2RlO1xuICAgIHRoaXMua21zS2V5ID0ga21zS2V5O1xuICAgIHRoaXMuc2VydmljZVJvbGUgPSBzZXJ2aWNlUm9sZTtcbiAgfVxufVxuXG4vKipcbiAqIENvbm5lY3Rpb24tcGFzc3dvcmQgZW5jcnlwdGlvbiBjb25maWd1cmF0aW9uIGZvciBhIEdsdWUgRGF0YSBDYXRhbG9nLlxuICpcbiAqIFdoZW4gZW5hYmxlZCwgdGhlIERhdGEgQ2F0YWxvZyBlbmNyeXB0cyB0aGUgcGFzc3dvcmQgYXMgcGFydCBvZlxuICogYENyZWF0ZUNvbm5lY3Rpb25gIG9yIGBVcGRhdGVDb25uZWN0aW9uYCBhbmQgc3RvcmVzIGl0IGluIHRoZVxuICogYEVOQ1JZUFRFRF9QQVNTV09SRGAgZmllbGQgb2YgdGhlIGNvbm5lY3Rpb24gcHJvcGVydGllcy4gVGhpcyBpcyBpbmRlcGVuZGVudFxuICogZnJvbSBjYXRhbG9nIGVuY3J5cHRpb24gYXQgcmVzdCwgYW5kIG1heSB1c2UgYSBkaWZmZXJlbnQgS01TIGtleS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC93ZWJhcGkvQVBJX0Nvbm5lY3Rpb25QYXNzd29yZEVuY3J5cHRpb24uaHRtbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3Rpb25QYXNzd29yZEVuY3J5cHRpb24ge1xuICAvKipcbiAgICogVGhlIEtNUyBrZXkgdXNlZCB0byBlbmNyeXB0IGNvbm5lY3Rpb24gcGFzc3dvcmRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFuIEFXUy1tYW5hZ2VkIGtleSBpcyB1c2VkIGFuZCB0aGUga2V5IGlzIG5vdCBleHBvc2VkIGFzIGEgZ3JhbnRhYmxlIHJlc291cmNlLlxuICAgKi9cbiAgcmVhZG9ubHkga21zS2V5Pzoga21zLklLZXlSZWY7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgcGFzc3dvcmRzIHJlbWFpbiBlbmNyeXB0ZWQgaW4gdGhlIHJlc3BvbnNlcyBvZiBgR2V0Q29ubmVjdGlvbmAgYW5kXG4gICAqIGBHZXRDb25uZWN0aW9uc2AuIFRoaXMgdGFrZXMgZWZmZWN0IGluZGVwZW5kZW50bHkgZnJvbSBjYXRhbG9nIGVuY3J5cHRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJldHVybkNvbm5lY3Rpb25QYXNzd29yZEVuY3J5cHRlZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRW5jcnlwdGlvbiBjb25maWd1cmF0aW9uIGZvciBhIEdsdWUgRGF0YSBDYXRhbG9nLlxuICpcbiAqIEVuY3J5cHRpb24gaXMgZml4ZWQgYXQgY29uc3RydWN0aW9uOiBhIGNhdGFsb2cgZWl0aGVyIGNhcnJpZXMgZW5jcnlwdGlvblxuICogc2V0dGluZ3Mgb3IgaXQgZG9lcyBub3QsIHdoaWNoIGtlZXBzIGl0cyBjb25maWd1cmF0aW9uIGVhc3kgdG8gcmVhc29uIGFib3V0XG4gKiBhbmQgYXZvaWRzIG9yZGVyLWRlcGVuZGVudCBtdXRhdGlvbiBhZnRlciB0aGUgY2F0YWxvZyBpcyBjcmVhdGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhdGFsb2dFbmNyeXB0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBFbmNyeXB0aW9uLWF0LXJlc3QgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNhdGFsb2cuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZW5jcnlwdGlvbiBhdCByZXN0IGlzIG5vdCBtYW5hZ2VkIGJ5IENESyAodGhlIGNhdGFsb2cgZGVmYXVsdCBhcHBsaWVzKVxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbkF0UmVzdD86IERhdGFDYXRhbG9nRW5jcnlwdGlvbkF0UmVzdDtcblxuICAvKipcbiAgICogQ29ubmVjdGlvbi1wYXNzd29yZCBlbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjYXRhbG9nLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGNvbm5lY3Rpb24tcGFzc3dvcmQgZW5jcnlwdGlvbiBpcyBub3QgbWFuYWdlZCBieSBDREtcbiAgICovXG4gIHJlYWRvbmx5IGNvbm5lY3Rpb25QYXNzd29yZEVuY3J5cHRpb24/OiBDb25uZWN0aW9uUGFzc3dvcmRFbmNyeXB0aW9uO1xufVxuXG4vKipcbiAqIEEgR2x1ZSBEYXRhIENhdGFsb2csIGVpdGhlciB0aGUgaW1wbGljaXQgYWNjb3VudC13aWRlIGNhdGFsb2cgb3Igb25lIGNyZWF0ZWRcbiAqIGFzIGFuIGBBV1M6OkdsdWU6OkNhdGFsb2dgIHJlc291cmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDYXRhbG9nIGV4dGVuZHMgSVJlc291cmNlLCBJQ2F0YWxvZ1JlZiB7XG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIGNhdGFsb2cgKGZvciB0aGUgYWNjb3VudC13aWRlIGNhdGFsb2csIHRoZSBBV1MgYWNjb3VudCBpZCkuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGNhdGFsb2dJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBjYXRhbG9nLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBjYXRhbG9nQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXN0b21lci1tYW5hZ2VkIEtNUyBrZXkgdXNlZCBmb3IgdGhlIGNhdGFsb2cncyBlbmNyeXB0aW9uIGF0IHJlc3QsIGlmXG4gICAqIG9uZSB3YXMgY29uZmlndXJlZC5cbiAgICpcbiAgICogVW5kZWZpbmVkIHdoZW4gZW5jcnlwdGlvbiBpcyBkaXNhYmxlZCBvciBhbiBBV1MtbWFuYWdlZCBrZXkgaXMgdXNlZC4gR3JhbnRcbiAgICogYWNjZXNzIHRvIGl0IHZpYSBgS2V5R3JhbnRzYCwgZS5nLlxuICAgKiBgaWYgKGNhdGFsb2cuZW5jcnlwdGlvbktleSkgeyBLZXlHcmFudHMuZnJvbUtleShjYXRhbG9nLmVuY3J5cHRpb25LZXkpLmVuY3J5cHQoZ3JhbnRlZSk7IH1gLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbktleT86IGttcy5JS2V5UmVmO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VzdG9tZXItbWFuYWdlZCBLTVMga2V5IHVzZWQgdG8gZW5jcnlwdCBjb25uZWN0aW9uIHBhc3N3b3JkcywgaWYgb25lXG4gICAqIHdhcyBjb25maWd1cmVkLlxuICAgKlxuICAgKiBVbmRlZmluZWQgd2hlbiBwYXNzd29yZCBlbmNyeXB0aW9uIHVzZXMgYW4gQVdTLW1hbmFnZWQga2V5IG9yIGlzIG5vdFxuICAgKiBjb25maWd1cmVkLiBHcmFudCBhY2Nlc3MgdG8gaXQgdmlhIGBLZXlHcmFudHNgLCBlLmcuXG4gICAqIGBpZiAoY2F0YWxvZy5jb25uZWN0aW9uUGFzc3dvcmRLZXkpIHsgS2V5R3JhbnRzLmZyb21LZXkoY2F0YWxvZy5jb25uZWN0aW9uUGFzc3dvcmRLZXkpLmVuY3J5cHQoZ3JhbnRlZSk7IH1gLlxuICAgKi9cbiAgcmVhZG9ubHkgY29ubmVjdGlvblBhc3N3b3JkS2V5Pzoga21zLklLZXlSZWY7XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgYWxsIGBJQ2F0YWxvZ2AgaW1wbGVtZW50YXRpb25zLiBNYXRlcmlhbGl6ZXMgdGhlIHNpbmdsZVxuICogYENmbkRhdGFDYXRhbG9nRW5jcnlwdGlvblNldHRpbmdzYCByZXNvdXJjZSAodGFyZ2V0aW5nIGl0cyBvd24gYGNhdGFsb2dJZGApXG4gKiBmcm9tIHRoZSBlbmNyeXB0aW9uIG9wdGlvbnMgc3VwcGxpZWQgYXQgY29uc3RydWN0aW9uLiBFbmNyeXB0aW9uIGlzIGZpeGVkIGF0XG4gKiBjb25zdHJ1Y3Rpb24sIHNvIGEgY2F0YWxvZyBlaXRoZXIgY2FycmllcyBzZXR0aW5ncyBvciBpdCBkb2VzIG5vdC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENhdGFsb2dCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJQ2F0YWxvZyB7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBjYXRhbG9nSWQ6IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGNhdGFsb2dBcm46IHN0cmluZztcblxuICBwcml2YXRlIF9lbmNyeXB0aW9uS2V5Pzoga21zLklLZXlSZWY7XG4gIHByaXZhdGUgX2Nvbm5lY3Rpb25QYXNzd29yZEtleT86IGttcy5JS2V5UmVmO1xuXG4gIHB1YmxpYyBnZXQgZW5jcnlwdGlvbktleSgpOiBrbXMuSUtleVJlZiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2VuY3J5cHRpb25LZXk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbm5lY3Rpb25QYXNzd29yZEtleSgpOiBrbXMuSUtleVJlZiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb25QYXNzd29yZEtleTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2F0YWxvZ1JlZigpOiBDYXRhbG9nUmVmZXJlbmNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzb3VyY2VBcm46IHRoaXMuY2F0YWxvZ0FybixcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXQgdGhlIGNhdGFsb2cncyBlbmNyeXB0aW9uIHNldHRpbmdzIGZyb20gdGhlIG9wdGlvbnMgZml4ZWQgYXRcbiAgICogY29uc3RydWN0aW9uLiBTdWJjbGFzc2VzIGNhbGwgdGhpcyBvbmNlLCBhZnRlciBgY2F0YWxvZ0lkYC9gY2F0YWxvZ0FybmAgYXJlXG4gICAqIGFzc2lnbmVkLiBXaGVuIG5laXRoZXIgYmxvY2sgaXMgY29uZmlndXJlZCwgbm8gcmVzb3VyY2UgaXMgZW1pdHRlZCwgYXZvaWRpbmdcbiAgICogYW4gZW1wdHkgc2V0dGluZ3MgcmVzb3VyY2UgdGhhdCB3b3VsZCByZXNldCB0aGUgY2F0YWxvZyBvbiBkZXBsb3kuXG4gICAqL1xuICBwcm90ZWN0ZWQgY29uZmlndXJlRW5jcnlwdGlvbihvcHRpb25zOiBDYXRhbG9nRW5jcnlwdGlvbk9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBhdFJlc3QgPSBvcHRpb25zLmVuY3J5cHRpb25BdFJlc3Q7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBvcHRpb25zLmNvbm5lY3Rpb25QYXNzd29yZEVuY3J5cHRpb247XG5cbiAgICBpZiAoIWF0UmVzdCAmJiAhcGFzc3dvcmQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9lbmNyeXB0aW9uS2V5ID0gYXRSZXN0Py5rbXNLZXk7XG4gICAgdGhpcy5fY29ubmVjdGlvblBhc3N3b3JkS2V5ID0gcGFzc3dvcmQ/Lmttc0tleTtcblxuICAgIC8vIEF1dG8tZ3JhbnQgdGhlIHNlcnZpY2Ugcm9sZSBhY2Nlc3MgdG8gdGhlIGN1c3RvbWVyLW1hbmFnZWQga2V5IGl0IG5lZWRzXG4gICAgLy8gdG8gZW5jcnlwdCBhbmQgZGVjcnlwdCBjYXRhbG9nIGRhdGEuIE5vdGhpbmcgdG8gZ3JhbnQgZm9yIGFuIEFXUy1tYW5hZ2VkXG4gICAgLy8ga2V5ICh3ZSBkb24ndCBvd24gaXRzIGtleSBwb2xpY3kpLlxuICAgIGlmIChhdFJlc3Q/LnNlcnZpY2VSb2xlICYmIGF0UmVzdC5rbXNLZXkpIHtcbiAgICAgIEtleUdyYW50cy5mcm9tS2V5KGF0UmVzdC5rbXNLZXkpLmVuY3J5cHREZWNyeXB0KGF0UmVzdC5zZXJ2aWNlUm9sZSk7XG4gICAgfVxuXG4gICAgLy8gVHdvIGNhdGFsb2cgaW5zdGFuY2VzIHRoYXQgdGFyZ2V0IHRoZSBzYW1lIGNhdGFsb2cgaWQgd291bGQgZWFjaCBlbWl0IGFcbiAgICAvLyBzZXR0aW5ncyByZXNvdXJjZSBhbmQgcmFjZSB0byBvdmVyd3JpdGUgb25lIGFub3RoZXIgdmlhXG4gICAgLy8gYFB1dERhdGFDYXRhbG9nRW5jcnlwdGlvblNldHRpbmdzYC4gV2l0aGluIG9uZSBzdGFjayB0aGlzIGlzIHN1cmZhY2VkIGJ5XG4gICAgLy8gQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUgdmFsaWRhdGlvbiAoRTMwMTk6IGR1cGxpY2F0ZSBwcmltYXJ5IGlkZW50aWZpZXJzKSxcbiAgICAvLyBzbyB3ZSBkbyBub3QgZHVwbGljYXRlIHRoYXQgY2hlY2sgaGVyZS5cbiAgICBuZXcgQ2ZuRGF0YUNhdGFsb2dFbmNyeXB0aW9uU2V0dGluZ3ModGhpcywgJ0VuY3J5cHRpb25TZXR0aW5ncycsIHtcbiAgICAgIGNhdGFsb2dJZDogdGhpcy5jYXRhbG9nSWQsXG4gICAgICBkYXRhQ2F0YWxvZ0VuY3J5cHRpb25TZXR0aW5nczoge1xuICAgICAgICBlbmNyeXB0aW9uQXRSZXN0OiBhdFJlc3RcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgIGNhdGFsb2dFbmNyeXB0aW9uTW9kZTogYXRSZXN0Lm1vZGUsXG4gICAgICAgICAgICBzc2VBd3NLbXNLZXlJZDogYXRSZXN0Lmttc0tleT8ua2V5UmVmLmtleUFybixcbiAgICAgICAgICAgIGNhdGFsb2dFbmNyeXB0aW9uU2VydmljZVJvbGU6IGF0UmVzdC5zZXJ2aWNlUm9sZT8ucm9sZUFybixcbiAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIGNvbm5lY3Rpb25QYXNzd29yZEVuY3J5cHRpb246IHBhc3N3b3JkXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICBrbXNLZXlJZDogcGFzc3dvcmQua21zS2V5Py5rZXlSZWYua2V5QXJuLFxuICAgICAgICAgICAgcmV0dXJuQ29ubmVjdGlvblBhc3N3b3JkRW5jcnlwdGVkOiBwYXNzd29yZC5yZXR1cm5Db25uZWN0aW9uUGFzc3dvcmRFbmNyeXB0ZWQgPz8gdHJ1ZSxcbiAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQ29uc3RydWN0aW9uIHByb3BlcnRpZXMgZm9yIGEgYENhdGFsb2dgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhdGFsb2dQcm9wcyBleHRlbmRzIENhdGFsb2dFbmNyeXB0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2F0YWxvZy5cbiAgICovXG4gIHJlYWRvbmx5IGNhdGFsb2dOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpb24gb2YgdGhlIGNhdGFsb2cuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBzdGFjay1zY29wZWQgc2luZ2xldG9uIGlkIGZvciB0aGUgaW1wbGljaXQgYWNjb3VudC13aWRlIGNhdGFsb2cuXG4gKi9cbmNvbnN0IEFDQ09VTlRfQ0FUQUxPR19VSUQgPSAnQGF3cy1jZGsuYXdzLWdsdWUtYWxwaGEuQWNjb3VudENhdGFsb2cnO1xuXG4vKipcbiAqIEEgR2x1ZSBEYXRhIENhdGFsb2cuXG4gKlxuICogVXNlIGBDYXRhbG9nLmZvckFjY291bnQoc2NvcGUpYCB0byBvYnRhaW4gdGhlIGltcGxpY2l0IGFjY291bnQtd2lkZSBjYXRhbG9nLFxuICogYENhdGFsb2cuZW5jcnlwdEFjY291bnQoc2NvcGUsIG9wdGlvbnMpYCB0byBjb25maWd1cmUgaXRzIERhdGEgQ2F0YWxvZ1xuICogZW5jcnlwdGlvbiwgb3IgYG5ldyBDYXRhbG9nKC4uLilgIHRvIGNyZWF0ZSBhbiBgQVdTOjpHbHVlOjpDYXRhbG9nYCByZXNvdXJjZS5cbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIENhdGFsb2cgZXh0ZW5kcyBDYXRhbG9nQmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWdsdWUtYWxwaGEuQ2F0YWxvZyc7XG5cbiAgLyoqXG4gICAqIE9idGFpbiB0aGUgaW1wbGljaXQsIGFjY291bnQtd2lkZSBEYXRhIENhdGFsb2cuXG4gICAqXG4gICAqIFRoZSBhY2NvdW50IGNhdGFsb2cgaXMgbm90IGEgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2U7IGl0IGFsd2F5cyBleGlzdHMuIFRoaXNcbiAgICogcmV0dXJucyBhIHN0YWNrLXNjb3BlZCBzaW5nbGV0b24sIHNvIHJlcGVhdGVkIGNhbGxzIHdpdGhpbiB0aGUgc2FtZSBzdGFja1xuICAgKiByZXR1cm4gdGhlIHNhbWUgaW5zdGFuY2UuXG4gICAqXG4gICAqIFRoaXMgcmV0dXJucyB0aGUgYWNjb3VudCBjYXRhbG9nIHdpdGhvdXQgbWFuYWdpbmcgaXRzIGVuY3J5cHRpb24uIFRvXG4gICAqIGNvbmZpZ3VyZSBEYXRhIENhdGFsb2cgZW5jcnlwdGlvbiBmb3IgdGhlIGFjY291bnQsIHVzZVxuICAgKiBgQ2F0YWxvZy5lbmNyeXB0QWNjb3VudChzY29wZSwgb3B0aW9ucylgIGluc3RlYWQgLSBpdCBtdXN0IGJlIGNhbGxlZCBiZWZvcmVcbiAgICogdGhlIGFjY291bnQgY2F0YWxvZyBpcyBmaXJzdCB1c2VkIGluIHRoZSBzdGFjay5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZm9yQWNjb3VudChzY29wZTogQ29uc3RydWN0KTogSUNhdGFsb2cge1xuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2Yoc2NvcGUpO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gc3RhY2subm9kZS50cnlGaW5kQ2hpbGQoQUNDT1VOVF9DQVRBTE9HX1VJRCk7XG4gICAgcmV0dXJuIChleGlzdGluZyBhcyBBY2NvdW50Q2F0YWxvZykgPz8gbmV3IEFjY291bnRDYXRhbG9nKHN0YWNrLCBBQ0NPVU5UX0NBVEFMT0dfVUlELCB7fSk7XG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJlIERhdGEgQ2F0YWxvZyBlbmNyeXB0aW9uIGZvciB0aGUgaW1wbGljaXQsIGFjY291bnQtd2lkZSBjYXRhbG9nIGFuZFxuICAgKiByZXR1cm4gaXQuXG4gICAqXG4gICAqIFRoZSBhY2NvdW50IGNhdGFsb2cncyBlbmNyeXB0aW9uIGlzIGFuIGFjY291bnQvcmVnaW9uLXdpZGUgc2V0dGluZywgbWFuYWdlZFxuICAgKiB0aHJvdWdoIHRoZSBzaW5nbGV0b24gYFB1dERhdGFDYXRhbG9nRW5jcnlwdGlvblNldHRpbmdzYCBBUEkuIEJlY2F1c2VcbiAgICogZW5jcnlwdGlvbiBpcyBmaXhlZCBhdCBjb25zdHJ1Y3Rpb24sIGl0IG11c3QgYmUgY29uZmlndXJlZCBiZWZvcmUgdGhlXG4gICAqIGFjY291bnQgY2F0YWxvZyBpcyBmaXJzdCB1c2VkIGluIHRoZSBzdGFjazogY2FsbGluZyB0aGlzIGFmdGVyIHRoZSBhY2NvdW50XG4gICAqIGNhdGFsb2cgaGFzIGFscmVhZHkgYmVlbiBtYXRlcmlhbGl6ZWQgKGZvciBleGFtcGxlIGJ5IGBDYXRhbG9nLmZvckFjY291bnRgLFxuICAgKiBvciBieSBhIGBEYXRhYmFzZWAgdGhhdCB1c2VzIHRoZSBhY2NvdW50IGNhdGFsb2cpIHRocm93cy5cbiAgICpcbiAgICogQ29uZmlndXJlIGl0IGluIGV4YWN0bHkgb25lIHN0YWNrLiBDb25maWd1cmluZyBpdCBmcm9tIG11bHRpcGxlIHN0YWNrcyBpbiB0aGVcbiAgICogc2FtZSBhY2NvdW50IGFuZCByZWdpb24gbWFrZXMgdGhvc2Ugc3RhY2tzIG92ZXJ3cml0ZSBvbmUgYW5vdGhlciBhdCBkZXBsb3lcbiAgICogdGltZSwgYW5kIHRoZSByZXN1bHQgaXMgb3JkZXItZGVwZW5kZW50LiBVbmxpa2UgZHVwbGljYXRlIHNldHRpbmdzIHdpdGhpbiBhXG4gICAqIHNpbmdsZSBzdGFjayAod2hpY2ggQ2xvdWRGb3JtYXRpb24gcmVqZWN0cyksIHRoaXMgY3Jvc3Mtc3RhY2sgY29uZmxpY3QgaXMgbm90XG4gICAqIGNhdWdodCBhdCBzeW50aGVzaXMgdGltZSwgYmVjYXVzZSBlYWNoIHN0YWNrIHN5bnRoZXNpemVzIHRvIGl0cyBvd24gdGVtcGxhdGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGVuY3J5cHRBY2NvdW50KHNjb3BlOiBDb25zdHJ1Y3QsIG9wdGlvbnM6IENhdGFsb2dFbmNyeXB0aW9uT3B0aW9ucyk6IElDYXRhbG9nIHtcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcbiAgICBpZiAoc3RhY2subm9kZS50cnlGaW5kQ2hpbGQoQUNDT1VOVF9DQVRBTE9HX1VJRCkpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIGxpdGBBY2NvdW50Q2F0YWxvZ0FscmVhZHlJblVzZWAsXG4gICAgICAgICd0aGUgYWNjb3VudCBjYXRhbG9nIGhhcyBhbHJlYWR5IGJlZW4gdXNlZCBpbiB0aGlzIHN0YWNrOyBjYWxsIENhdGFsb2cuZW5jcnlwdEFjY291bnQoKSBiZWZvcmUgQ2F0YWxvZy5mb3JBY2NvdW50KCkgb3IgYW55IERhdGFiYXNlIHRoYXQgdXNlcyB0aGUgYWNjb3VudCBjYXRhbG9nJyxcbiAgICAgICAgc2NvcGUsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEFjY291bnRDYXRhbG9nKHN0YWNrLCBBQ0NPVU5UX0NBVEFMT0dfVUlELCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgY2F0YWxvZyBieSBpdHMgQVJOLlxuICAgKlxuICAgKiBUaGUgQVJOIG11c3QgYmUgYSBHbHVlIGNhdGFsb2cgQVJOLCBlaXRoZXIgdGhlIGFjY291bnQtd2lkZSBjYXRhbG9nXG4gICAqIChgYXJuOmF3czpnbHVlOjxyZWdpb24+OjxhY2NvdW50PjpjYXRhbG9nYCwgd2hvc2UgaWQgaXMgdGhlIGFjY291bnQpIG9yIGFcbiAgICogbmFtZWQgY2F0YWxvZyAoYGFybjphd3M6Z2x1ZTo8cmVnaW9uPjo8YWNjb3VudD46Y2F0YWxvZy88bmFtZT5gLCB3aG9zZSBpZCBpc1xuICAgKiB0aGUgbmFtZSkuXG4gICAqXG4gICAqIFRoZSBpbXBvcnRlZCBjYXRhbG9nIGlzIGEgcHVyZSBpZGVudGl0eSBoYW5kbGUgYW5kIGRvZXMgbm90IG1hbmFnZSB0aGVcbiAgICogY2F0YWxvZydzIGVuY3J5cHRpb24uIFRvIG1hbmFnZSBhbiBleGlzdGluZyBjYXRhbG9nJ3MgRGF0YSBDYXRhbG9nXG4gICAqIGVuY3J5cHRpb24sIGFkZCBhIGBDZm5EYXRhQ2F0YWxvZ0VuY3J5cHRpb25TZXR0aW5nc2AgcmVzb3VyY2UgdGFyZ2V0aW5nIGl0c1xuICAgKiBpZC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUNhdGFsb2dBcm4oc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgY2F0YWxvZ0Fybjogc3RyaW5nKTogSUNhdGFsb2cge1xuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2Yoc2NvcGUpO1xuICAgIGNvbnN0IGFybiA9IHN0YWNrLnNwbGl0QXJuKGNhdGFsb2dBcm4sIEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FKTtcblxuICAgIC8vIE9ubHkgdmFsaWRhdGUgdGhlIHNoYXBlIG9mIGNvbmNyZXRlIEFSTnM7IGEgdG9rZW5pemVkIEFSTiBjYW4ndCBiZVxuICAgIC8vIGluc3BlY3RlZCBhdCBzeW50aCB0aW1lLCBzbyB3ZSB0cnVzdCBpdC5cbiAgICBpZiAoIVRva2VuLmlzVW5yZXNvbHZlZChjYXRhbG9nQXJuKSAmJiAoYXJuLnNlcnZpY2UgIT09ICdnbHVlJyB8fCBhcm4ucmVzb3VyY2UgIT09ICdjYXRhbG9nJykpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIGxpdGBJbnZhbGlkQ2F0YWxvZ0FybmAsXG4gICAgICAgIGBleHBlY3RlZCBhIEdsdWUgY2F0YWxvZyBBUk4gKGFybjo8cGFydGl0aW9uPjpnbHVlOjxyZWdpb24+OjxhY2NvdW50PjpjYXRhbG9nWy88bmFtZT5dKSwgZ290ICR7SlNPTi5zdHJpbmdpZnkoY2F0YWxvZ0Fybil9YCxcbiAgICAgICAgc2NvcGUsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFRoZSBhY2NvdW50LXdpZGUgY2F0YWxvZydzIEFSTiBoYXMgbm8gcmVzb3VyY2UgbmFtZTsgaXRzIGlkIGlzIHRoZVxuICAgIC8vIGFjY291bnQgZnJvbSB0aGUgQVJOIGl0c2VsZiAoZmFsbGluZyBiYWNrIHRvIHRoZSBzdGFjayBhY2NvdW50IGZvciBhXG4gICAgLy8gdG9rZW5pemVkIEFSTiB3aXRoIG5vIHBhcnNlYWJsZSBhY2NvdW50KS5cbiAgICBjb25zdCBjYXRhbG9nSWQgPSBhcm4ucmVzb3VyY2VOYW1lID8/IGFybi5hY2NvdW50ID8/IHN0YWNrLmFjY291bnQ7XG4gICAgcmV0dXJuIG5ldyBJbXBvcnRlZENhdGFsb2coc2NvcGUsIGlkLCBjYXRhbG9nSWQsIGNhdGFsb2dBcm4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBjYXRhbG9nIGJ5IGl0cyBpZC5cbiAgICpcbiAgICogVGhlIGltcG9ydGVkIGNhdGFsb2cgaXMgYSBwdXJlIGlkZW50aXR5IGhhbmRsZSBhbmQgZG9lcyBub3QgbWFuYWdlIHRoZVxuICAgKiBjYXRhbG9nJ3MgZW5jcnlwdGlvbi4gVG8gbWFuYWdlIGFuIGV4aXN0aW5nIGNhdGFsb2cncyBEYXRhIENhdGFsb2dcbiAgICogZW5jcnlwdGlvbiwgYWRkIGEgYENmbkRhdGFDYXRhbG9nRW5jcnlwdGlvblNldHRpbmdzYCByZXNvdXJjZSB0YXJnZXRpbmcgaXRzXG4gICAqIGlkLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQ2F0YWxvZ0lkKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGNhdGFsb2dJZDogc3RyaW5nKTogSUNhdGFsb2cge1xuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2Yoc2NvcGUpO1xuICAgIGNvbnN0IGNhdGFsb2dBcm4gPSBzdGFjay5mb3JtYXRBcm4oeyBzZXJ2aWNlOiAnZ2x1ZScsIHJlc291cmNlOiAnY2F0YWxvZycsIHJlc291cmNlTmFtZTogY2F0YWxvZ0lkIH0pO1xuICAgIHJldHVybiBuZXcgSW1wb3J0ZWRDYXRhbG9nKHNjb3BlLCBpZCwgY2F0YWxvZ0lkLCBjYXRhbG9nQXJuKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBjYXRhbG9nSWQ6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGNhdGFsb2dBcm46IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlOiBDZm5DYXRhbG9nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDYXRhbG9nUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5DYXRhbG9nKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG5hbWU6IHByb3BzLmNhdGFsb2dOYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jYXRhbG9nSWQgPSB0aGlzLnJlc291cmNlLmF0dHJDYXRhbG9nSWQ7XG4gICAgdGhpcy5jYXRhbG9nQXJuID0gdGhpcy5yZXNvdXJjZS5hdHRyUmVzb3VyY2VBcm47XG5cbiAgICB0aGlzLmNvbmZpZ3VyZUVuY3J5cHRpb24ocHJvcHMpO1xuICB9XG59XG5cbi8qKlxuICogVGhlIGltcGxpY2l0LCBhY2NvdW50LXdpZGUgRGF0YSBDYXRhbG9nLiBOb3QgYSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZTsgb25seVxuICogdGhlIGVuY3J5cHRpb24gc2V0dGluZ3MgaXQgY2FycmllcyBhcmUgc3ludGhlc2l6ZWQuXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmNsYXNzIEFjY291bnRDYXRhbG9nIGV4dGVuZHMgQ2F0YWxvZ0Jhc2Uge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1nbHVlLWFscGhhLkFjY291bnRDYXRhbG9nJztcbiAgcHVibGljIHJlYWRvbmx5IGNhdGFsb2dJZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgY2F0YWxvZ0Fybjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGVuY3J5cHRpb246IENhdGFsb2dFbmNyeXB0aW9uT3B0aW9ucykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBlbmNyeXB0aW9uKTtcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHRoaXMpO1xuICAgIHRoaXMuY2F0YWxvZ0lkID0gc3RhY2suYWNjb3VudDtcbiAgICAvLyBUaGUgYWNjb3VudCBjYXRhbG9nJ3MgaWQgaXMgaW1wbGljaXRseSB0aGUgYWNjb3VudCBpZCwgc28gdGhlIEFSTiBoYXMgbm8gcmVzb3VyY2UgbmFtZS5cbiAgICB0aGlzLmNhdGFsb2dBcm4gPSBzdGFjay5mb3JtYXRBcm4oeyBzZXJ2aWNlOiAnZ2x1ZScsIHJlc291cmNlOiAnY2F0YWxvZycgfSk7XG5cbiAgICB0aGlzLmNvbmZpZ3VyZUVuY3J5cHRpb24oZW5jcnlwdGlvbik7XG4gIH1cbn1cblxuLyoqXG4gKiBBbiBpbXBvcnRlZCBjYXRhbG9nLiBBIHB1cmUgaWRlbnRpdHkgaGFuZGxlOiBpdCBlbWl0cyBubyByZXNvdXJjZXMgYW5kIGRvZXNcbiAqIG5vdCBtYW5hZ2UgdGhlIGltcG9ydGVkIGNhdGFsb2cncyBlbmNyeXB0aW9uLlxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5jbGFzcyBJbXBvcnRlZENhdGFsb2cgZXh0ZW5kcyBDYXRhbG9nQmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWdsdWUtYWxwaGEuSW1wb3J0ZWRDYXRhbG9nJztcbiAgcHVibGljIHJlYWRvbmx5IGNhdGFsb2dJZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgY2F0YWxvZ0Fybjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGNhdGFsb2dJZDogc3RyaW5nLCBjYXRhbG9nQXJuOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgY2F0YWxvZ0lkKTtcbiAgICB0aGlzLmNhdGFsb2dJZCA9IGNhdGFsb2dJZDtcbiAgICB0aGlzLmNhdGFsb2dBcm4gPSBjYXRhbG9nQXJuO1xuICB9XG59XG4iXX0=
package/lib/code.js CHANGED
@@ -43,7 +43,7 @@ const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
43
43
  * Represents a Glue Job's Code assets (an asset can be a scripts, a jar, a python file or any other file).
44
44
  */
45
45
  class Code {
46
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.Code", version: "2.263.0-alpha.0" };
46
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.Code", version: "2.265.0-alpha.0" };
47
47
  /**
48
48
  * Job code as an S3 object.
49
49
  * @param bucket The S3 bucket
@@ -68,7 +68,7 @@ exports.Code = Code;
68
68
  class S3Code extends Code {
69
69
  bucket;
70
70
  key;
71
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.S3Code", version: "2.263.0-alpha.0" };
71
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.S3Code", version: "2.265.0-alpha.0" };
72
72
  constructor(bucket, key) {
73
73
  super();
74
74
  this.bucket = bucket;
@@ -91,7 +91,7 @@ exports.S3Code = S3Code;
91
91
  class AssetCode extends Code {
92
92
  path;
93
93
  options;
94
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.AssetCode", version: "2.263.0-alpha.0" };
94
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-glue-alpha.AssetCode", version: "2.265.0-alpha.0" };
95
95
  asset;
96
96
  /**
97
97
  * @param path The path to the Code file.