@aws-cdk/app-staging-synthesizer-alpha 2.83.1-alpha.0 → 2.85.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.
- package/.jsii +97 -22
- package/.jsii.tabl.json.gz +0 -0
- package/.warnings.jsii.js +3 -1
- package/lib/app-staging-synthesizer.d.ts +1 -1
- package/lib/app-staging-synthesizer.js +10 -10
- package/lib/bootstrap-roles.js +2 -2
- package/lib/default-staging-stack.d.ts +21 -1
- package/lib/default-staging-stack.js +59 -23
- package/lib/per-env-staging-factory.d.ts +1 -1
- package/lib/per-env-staging-factory.js +1 -1
- package/lib/private/app-global.js +4 -4
- package/lib/staging-stack.d.ts +1 -1
- package/lib/staging-stack.js +1 -1
- package/package.json +8 -8
package/.jsii
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"url": "https://aws.amazon.com"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"aws-cdk-lib": "2.
|
|
11
|
+
"aws-cdk-lib": "2.85.0",
|
|
12
12
|
"constructs": "^10.0.0"
|
|
13
13
|
},
|
|
14
14
|
"dependencyClosure": {
|
|
@@ -547,6 +547,19 @@
|
|
|
547
547
|
}
|
|
548
548
|
}
|
|
549
549
|
},
|
|
550
|
+
"aws-cdk-lib.aws_cleanrooms": {
|
|
551
|
+
"targets": {
|
|
552
|
+
"dotnet": {
|
|
553
|
+
"package": "Amazon.CDK.AWS.CleanRooms"
|
|
554
|
+
},
|
|
555
|
+
"java": {
|
|
556
|
+
"package": "services.cleanrooms"
|
|
557
|
+
},
|
|
558
|
+
"python": {
|
|
559
|
+
"module": "aws_cdk.aws_cleanrooms"
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
},
|
|
550
563
|
"aws-cdk-lib.aws_cloud9": {
|
|
551
564
|
"targets": {
|
|
552
565
|
"dotnet": {
|
|
@@ -3466,7 +3479,7 @@
|
|
|
3466
3479
|
"stability": "experimental"
|
|
3467
3480
|
},
|
|
3468
3481
|
"homepage": "https://github.com/aws/aws-cdk",
|
|
3469
|
-
"jsiiVersion": "5.0.
|
|
3482
|
+
"jsiiVersion": "5.0.11 (build 5e2d6be)",
|
|
3470
3483
|
"keywords": [
|
|
3471
3484
|
"aws",
|
|
3472
3485
|
"cdk"
|
|
@@ -4164,7 +4177,7 @@
|
|
|
4164
4177
|
},
|
|
4165
4178
|
"locationInModule": {
|
|
4166
4179
|
"filename": "lib/default-staging-stack.ts",
|
|
4167
|
-
"line":
|
|
4180
|
+
"line": 230
|
|
4168
4181
|
},
|
|
4169
4182
|
"parameters": [
|
|
4170
4183
|
{
|
|
@@ -4193,7 +4206,7 @@
|
|
|
4193
4206
|
"kind": "class",
|
|
4194
4207
|
"locationInModule": {
|
|
4195
4208
|
"filename": "lib/default-staging-stack.ts",
|
|
4196
|
-
"line":
|
|
4209
|
+
"line": 143
|
|
4197
4210
|
},
|
|
4198
4211
|
"methods": [
|
|
4199
4212
|
{
|
|
@@ -4203,7 +4216,7 @@
|
|
|
4203
4216
|
},
|
|
4204
4217
|
"locationInModule": {
|
|
4205
4218
|
"filename": "lib/default-staging-stack.ts",
|
|
4206
|
-
"line":
|
|
4219
|
+
"line": 147
|
|
4207
4220
|
},
|
|
4208
4221
|
"name": "factory",
|
|
4209
4222
|
"parameters": [
|
|
@@ -4228,7 +4241,7 @@
|
|
|
4228
4241
|
},
|
|
4229
4242
|
"locationInModule": {
|
|
4230
4243
|
"filename": "lib/default-staging-stack.ts",
|
|
4231
|
-
"line":
|
|
4244
|
+
"line": 450
|
|
4232
4245
|
},
|
|
4233
4246
|
"name": "addDockerImage",
|
|
4234
4247
|
"overrides": "@aws-cdk/app-staging-synthesizer-alpha.IStagingResources",
|
|
@@ -4253,7 +4266,7 @@
|
|
|
4253
4266
|
},
|
|
4254
4267
|
"locationInModule": {
|
|
4255
4268
|
"filename": "lib/default-staging-stack.ts",
|
|
4256
|
-
"line":
|
|
4269
|
+
"line": 438
|
|
4257
4270
|
},
|
|
4258
4271
|
"name": "addFile",
|
|
4259
4272
|
"overrides": "@aws-cdk/app-staging-synthesizer-alpha.IStagingResources",
|
|
@@ -4282,7 +4295,7 @@
|
|
|
4282
4295
|
"immutable": true,
|
|
4283
4296
|
"locationInModule": {
|
|
4284
4297
|
"filename": "lib/default-staging-stack.ts",
|
|
4285
|
-
"line":
|
|
4298
|
+
"line": 207
|
|
4286
4299
|
},
|
|
4287
4300
|
"name": "dependencyStack",
|
|
4288
4301
|
"type": {
|
|
@@ -4297,7 +4310,7 @@
|
|
|
4297
4310
|
"immutable": true,
|
|
4298
4311
|
"locationInModule": {
|
|
4299
4312
|
"filename": "lib/default-staging-stack.ts",
|
|
4300
|
-
"line":
|
|
4313
|
+
"line": 202
|
|
4301
4314
|
},
|
|
4302
4315
|
"name": "stagingRepos",
|
|
4303
4316
|
"type": {
|
|
@@ -4317,7 +4330,7 @@
|
|
|
4317
4330
|
"immutable": true,
|
|
4318
4331
|
"locationInModule": {
|
|
4319
4332
|
"filename": "lib/default-staging-stack.ts",
|
|
4320
|
-
"line":
|
|
4333
|
+
"line": 197
|
|
4321
4334
|
},
|
|
4322
4335
|
"name": "stagingBucket",
|
|
4323
4336
|
"optional": true,
|
|
@@ -4343,7 +4356,7 @@
|
|
|
4343
4356
|
"kind": "interface",
|
|
4344
4357
|
"locationInModule": {
|
|
4345
4358
|
"filename": "lib/default-staging-stack.ts",
|
|
4346
|
-
"line":
|
|
4359
|
+
"line": 45
|
|
4347
4360
|
},
|
|
4348
4361
|
"name": "DefaultStagingStackOptions",
|
|
4349
4362
|
"properties": [
|
|
@@ -4357,13 +4370,31 @@
|
|
|
4357
4370
|
"immutable": true,
|
|
4358
4371
|
"locationInModule": {
|
|
4359
4372
|
"filename": "lib/default-staging-stack.ts",
|
|
4360
|
-
"line":
|
|
4373
|
+
"line": 55
|
|
4361
4374
|
},
|
|
4362
4375
|
"name": "appId",
|
|
4363
4376
|
"type": {
|
|
4364
4377
|
"primitive": "string"
|
|
4365
4378
|
}
|
|
4366
4379
|
},
|
|
4380
|
+
{
|
|
4381
|
+
"abstract": true,
|
|
4382
|
+
"docs": {
|
|
4383
|
+
"default": "true",
|
|
4384
|
+
"stability": "experimental",
|
|
4385
|
+
"summary": "Auto deletes objects in the staging S3 bucket and images in the staging ECR repositories."
|
|
4386
|
+
},
|
|
4387
|
+
"immutable": true,
|
|
4388
|
+
"locationInModule": {
|
|
4389
|
+
"filename": "lib/default-staging-stack.ts",
|
|
4390
|
+
"line": 113
|
|
4391
|
+
},
|
|
4392
|
+
"name": "autoDeleteStagingAssets",
|
|
4393
|
+
"optional": true,
|
|
4394
|
+
"type": {
|
|
4395
|
+
"primitive": "boolean"
|
|
4396
|
+
}
|
|
4397
|
+
},
|
|
4367
4398
|
{
|
|
4368
4399
|
"abstract": true,
|
|
4369
4400
|
"docs": {
|
|
@@ -4375,7 +4406,7 @@
|
|
|
4375
4406
|
"immutable": true,
|
|
4376
4407
|
"locationInModule": {
|
|
4377
4408
|
"filename": "lib/default-staging-stack.ts",
|
|
4378
|
-
"line":
|
|
4409
|
+
"line": 93
|
|
4379
4410
|
},
|
|
4380
4411
|
"name": "deployTimeFileAssetLifetime",
|
|
4381
4412
|
"optional": true,
|
|
@@ -4393,7 +4424,7 @@
|
|
|
4393
4424
|
"immutable": true,
|
|
4394
4425
|
"locationInModule": {
|
|
4395
4426
|
"filename": "lib/default-staging-stack.ts",
|
|
4396
|
-
"line":
|
|
4427
|
+
"line": 69
|
|
4397
4428
|
},
|
|
4398
4429
|
"name": "fileAssetPublishingRole",
|
|
4399
4430
|
"optional": true,
|
|
@@ -4411,7 +4442,7 @@
|
|
|
4411
4442
|
"immutable": true,
|
|
4412
4443
|
"locationInModule": {
|
|
4413
4444
|
"filename": "lib/default-staging-stack.ts",
|
|
4414
|
-
"line":
|
|
4445
|
+
"line": 76
|
|
4415
4446
|
},
|
|
4416
4447
|
"name": "imageAssetPublishingRole",
|
|
4417
4448
|
"optional": true,
|
|
@@ -4430,7 +4461,7 @@
|
|
|
4430
4461
|
"immutable": true,
|
|
4431
4462
|
"locationInModule": {
|
|
4432
4463
|
"filename": "lib/default-staging-stack.ts",
|
|
4433
|
-
"line":
|
|
4464
|
+
"line": 105
|
|
4434
4465
|
},
|
|
4435
4466
|
"name": "imageAssetVersionCount",
|
|
4436
4467
|
"optional": true,
|
|
@@ -4448,7 +4479,7 @@
|
|
|
4448
4479
|
"immutable": true,
|
|
4449
4480
|
"locationInModule": {
|
|
4450
4481
|
"filename": "lib/default-staging-stack.ts",
|
|
4451
|
-
"line":
|
|
4482
|
+
"line": 62
|
|
4452
4483
|
},
|
|
4453
4484
|
"name": "stagingBucketName",
|
|
4454
4485
|
"optional": true,
|
|
@@ -4465,7 +4496,7 @@
|
|
|
4465
4496
|
"docs": {
|
|
4466
4497
|
"stability": "experimental",
|
|
4467
4498
|
"summary": "Default Staging Stack Properties.",
|
|
4468
|
-
"example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as app_staging_synthesizer_alpha from '@aws-cdk/app-staging-synthesizer-alpha';\nimport * as cdk from 'aws-cdk-lib';\n\ndeclare const bootstrapRole: app_staging_synthesizer_alpha.BootstrapRole;\ndeclare const permissionsBoundary: cdk.PermissionsBoundary;\ndeclare const stackSynthesizer: cdk.StackSynthesizer;\nconst defaultStagingStackProps: app_staging_synthesizer_alpha.DefaultStagingStackProps = {\n appId: 'appId',\n qualifier: 'qualifier',\n\n // the properties below are optional\n analyticsReporting: false,\n crossRegionReferences: false,\n deployRoleArn: 'deployRoleArn',\n deployTimeFileAssetLifetime: cdk.Duration.minutes(30),\n description: 'description',\n env: {\n account: 'account',\n region: 'region',\n },\n fileAssetPublishingRole: bootstrapRole,\n imageAssetPublishingRole: bootstrapRole,\n imageAssetVersionCount: 123,\n permissionsBoundary: permissionsBoundary,\n stackName: 'stackName',\n stagingBucketName: 'stagingBucketName',\n synthesizer: stackSynthesizer,\n tags: {\n tagsKey: 'tags',\n },\n terminationProtection: false,\n};",
|
|
4499
|
+
"example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as app_staging_synthesizer_alpha from '@aws-cdk/app-staging-synthesizer-alpha';\nimport * as cdk from 'aws-cdk-lib';\n\ndeclare const bootstrapRole: app_staging_synthesizer_alpha.BootstrapRole;\ndeclare const permissionsBoundary: cdk.PermissionsBoundary;\ndeclare const stackSynthesizer: cdk.StackSynthesizer;\nconst defaultStagingStackProps: app_staging_synthesizer_alpha.DefaultStagingStackProps = {\n appId: 'appId',\n qualifier: 'qualifier',\n\n // the properties below are optional\n analyticsReporting: false,\n autoDeleteStagingAssets: false,\n crossRegionReferences: false,\n deployRoleArn: 'deployRoleArn',\n deployTimeFileAssetLifetime: cdk.Duration.minutes(30),\n description: 'description',\n env: {\n account: 'account',\n region: 'region',\n },\n fileAssetPublishingRole: bootstrapRole,\n imageAssetPublishingRole: bootstrapRole,\n imageAssetVersionCount: 123,\n permissionsBoundary: permissionsBoundary,\n stackName: 'stackName',\n stagingBucketName: 'stagingBucketName',\n suppressTemplateIndentation: false,\n synthesizer: stackSynthesizer,\n tags: {\n tagsKey: 'tags',\n },\n terminationProtection: false,\n};",
|
|
4469
4500
|
"custom": {
|
|
4470
4501
|
"exampleMetadata": "fixture=_generated"
|
|
4471
4502
|
}
|
|
@@ -4478,7 +4509,7 @@
|
|
|
4478
4509
|
"kind": "interface",
|
|
4479
4510
|
"locationInModule": {
|
|
4480
4511
|
"filename": "lib/default-staging-stack.ts",
|
|
4481
|
-
"line":
|
|
4512
|
+
"line": 119
|
|
4482
4513
|
},
|
|
4483
4514
|
"name": "DefaultStagingStackProps",
|
|
4484
4515
|
"properties": [
|
|
@@ -4492,7 +4523,7 @@
|
|
|
4492
4523
|
"immutable": true,
|
|
4493
4524
|
"locationInModule": {
|
|
4494
4525
|
"filename": "lib/default-staging-stack.ts",
|
|
4495
|
-
"line":
|
|
4526
|
+
"line": 134
|
|
4496
4527
|
},
|
|
4497
4528
|
"name": "qualifier",
|
|
4498
4529
|
"type": {
|
|
@@ -4510,7 +4541,7 @@
|
|
|
4510
4541
|
"immutable": true,
|
|
4511
4542
|
"locationInModule": {
|
|
4512
4543
|
"filename": "lib/default-staging-stack.ts",
|
|
4513
|
-
"line":
|
|
4544
|
+
"line": 127
|
|
4514
4545
|
},
|
|
4515
4546
|
"name": "deployRoleArn",
|
|
4516
4547
|
"optional": true,
|
|
@@ -5022,8 +5053,52 @@
|
|
|
5022
5053
|
}
|
|
5023
5054
|
],
|
|
5024
5055
|
"symbolId": "lib/bootstrap-roles:StagingRoles"
|
|
5056
|
+
},
|
|
5057
|
+
"@aws-cdk/app-staging-synthesizer-alpha.UsingAppStagingSynthesizer": {
|
|
5058
|
+
"assembly": "@aws-cdk/app-staging-synthesizer-alpha",
|
|
5059
|
+
"base": "constructs.Construct",
|
|
5060
|
+
"docs": {
|
|
5061
|
+
"remarks": "It does not do anything, and is not meant\nto be created on its own. This construct will be a part of the\nconstruct tree only and not the Cfn template. The construct tree is\nthen encoded in the AWS::CDK::Metadata resource of the stack and\ninjested in our metrics like every other construct.",
|
|
5062
|
+
"stability": "experimental",
|
|
5063
|
+
"summary": "This is a dummy construct meant to signify that a stack is utilizing the AppStagingSynthesizer.",
|
|
5064
|
+
"example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as app_staging_synthesizer_alpha from '@aws-cdk/app-staging-synthesizer-alpha';\nconst usingAppStagingSynthesizer = new app_staging_synthesizer_alpha.UsingAppStagingSynthesizer(this, 'MyUsingAppStagingSynthesizer');",
|
|
5065
|
+
"custom": {
|
|
5066
|
+
"exampleMetadata": "fixture=_generated"
|
|
5067
|
+
}
|
|
5068
|
+
},
|
|
5069
|
+
"fqn": "@aws-cdk/app-staging-synthesizer-alpha.UsingAppStagingSynthesizer",
|
|
5070
|
+
"initializer": {
|
|
5071
|
+
"docs": {
|
|
5072
|
+
"stability": "experimental"
|
|
5073
|
+
},
|
|
5074
|
+
"locationInModule": {
|
|
5075
|
+
"filename": "lib/default-staging-stack.ts",
|
|
5076
|
+
"line": 37
|
|
5077
|
+
},
|
|
5078
|
+
"parameters": [
|
|
5079
|
+
{
|
|
5080
|
+
"name": "scope",
|
|
5081
|
+
"type": {
|
|
5082
|
+
"fqn": "constructs.Construct"
|
|
5083
|
+
}
|
|
5084
|
+
},
|
|
5085
|
+
{
|
|
5086
|
+
"name": "id",
|
|
5087
|
+
"type": {
|
|
5088
|
+
"primitive": "string"
|
|
5089
|
+
}
|
|
5090
|
+
}
|
|
5091
|
+
]
|
|
5092
|
+
},
|
|
5093
|
+
"kind": "class",
|
|
5094
|
+
"locationInModule": {
|
|
5095
|
+
"filename": "lib/default-staging-stack.ts",
|
|
5096
|
+
"line": 36
|
|
5097
|
+
},
|
|
5098
|
+
"name": "UsingAppStagingSynthesizer",
|
|
5099
|
+
"symbolId": "lib/default-staging-stack:UsingAppStagingSynthesizer"
|
|
5025
5100
|
}
|
|
5026
5101
|
},
|
|
5027
|
-
"version": "2.
|
|
5102
|
+
"version": "2.85.0-alpha.0",
|
|
5028
5103
|
"fingerprint": "**********"
|
|
5029
5104
|
}
|
package/.jsii.tabl.json.gz
CHANGED
|
Binary file
|
package/.warnings.jsii.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
function _aws_cdk_app_staging_synthesizer_alpha_UsingAppStagingSynthesizer(p) {
|
|
2
|
+
}
|
|
1
3
|
function _aws_cdk_app_staging_synthesizer_alpha_DefaultStagingStackOptions(p) {
|
|
2
4
|
if (p == null)
|
|
3
5
|
return;
|
|
@@ -166,4 +168,4 @@ class DeprecationError extends Error {
|
|
|
166
168
|
});
|
|
167
169
|
}
|
|
168
170
|
}
|
|
169
|
-
module.exports = { print, getPropertyDescriptor, DeprecationError, _aws_cdk_app_staging_synthesizer_alpha_DefaultStagingStackOptions, _aws_cdk_app_staging_synthesizer_alpha_DefaultStagingStackProps, _aws_cdk_app_staging_synthesizer_alpha_DefaultStagingStack, _aws_cdk_app_staging_synthesizer_alpha_AppStagingSynthesizerOptions, _aws_cdk_app_staging_synthesizer_alpha_DefaultResourcesOptions, _aws_cdk_app_staging_synthesizer_alpha_CustomFactoryOptions, _aws_cdk_app_staging_synthesizer_alpha_CustomResourcesOptions, _aws_cdk_app_staging_synthesizer_alpha_AppStagingSynthesizer, _aws_cdk_app_staging_synthesizer_alpha_BootstrapRole, _aws_cdk_app_staging_synthesizer_alpha_DeploymentIdentities, _aws_cdk_app_staging_synthesizer_alpha_BootstrapRoles, _aws_cdk_app_staging_synthesizer_alpha_StagingRoles, _aws_cdk_app_staging_synthesizer_alpha_FileStagingLocation, _aws_cdk_app_staging_synthesizer_alpha_ImageStagingLocation, _aws_cdk_app_staging_synthesizer_alpha_IStagingResources, _aws_cdk_app_staging_synthesizer_alpha_IStagingResourcesFactory, _aws_cdk_app_staging_synthesizer_alpha_ObtainStagingResourcesContext };
|
|
171
|
+
module.exports = { print, getPropertyDescriptor, DeprecationError, _aws_cdk_app_staging_synthesizer_alpha_UsingAppStagingSynthesizer, _aws_cdk_app_staging_synthesizer_alpha_DefaultStagingStackOptions, _aws_cdk_app_staging_synthesizer_alpha_DefaultStagingStackProps, _aws_cdk_app_staging_synthesizer_alpha_DefaultStagingStack, _aws_cdk_app_staging_synthesizer_alpha_AppStagingSynthesizerOptions, _aws_cdk_app_staging_synthesizer_alpha_DefaultResourcesOptions, _aws_cdk_app_staging_synthesizer_alpha_CustomFactoryOptions, _aws_cdk_app_staging_synthesizer_alpha_CustomResourcesOptions, _aws_cdk_app_staging_synthesizer_alpha_AppStagingSynthesizer, _aws_cdk_app_staging_synthesizer_alpha_BootstrapRole, _aws_cdk_app_staging_synthesizer_alpha_DeploymentIdentities, _aws_cdk_app_staging_synthesizer_alpha_BootstrapRoles, _aws_cdk_app_staging_synthesizer_alpha_StagingRoles, _aws_cdk_app_staging_synthesizer_alpha_FileStagingLocation, _aws_cdk_app_staging_synthesizer_alpha_ImageStagingLocation, _aws_cdk_app_staging_synthesizer_alpha_IStagingResources, _aws_cdk_app_staging_synthesizer_alpha_IStagingResourcesFactory, _aws_cdk_app_staging_synthesizer_alpha_ObtainStagingResourcesContext };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DockerImageAssetLocation, DockerImageAssetSource, FileAssetLocation, FileAssetSource, IBoundStackSynthesizer as IBoundAppStagingSynthesizer, IReusableStackSynthesizer, ISynthesisSession, Stack, StackSynthesizer } from 'aws-cdk-lib';
|
|
1
|
+
import { DockerImageAssetLocation, DockerImageAssetSource, FileAssetLocation, FileAssetSource, IBoundStackSynthesizer as IBoundAppStagingSynthesizer, IReusableStackSynthesizer, ISynthesisSession, Stack, StackSynthesizer } from 'aws-cdk-lib/core';
|
|
2
2
|
import { DeploymentIdentities } from './bootstrap-roles';
|
|
3
3
|
import { DefaultStagingStackOptions } from './default-staging-stack';
|
|
4
4
|
import { IStagingResources, IStagingResourcesFactory } from './staging-stack';
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.AppStagingSynthesizer = void 0;
|
|
5
5
|
const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
|
|
6
6
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
7
|
-
const
|
|
7
|
+
const core_1 = require("aws-cdk-lib/core");
|
|
8
8
|
const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
|
|
9
9
|
const bootstrap_roles_1 = require("./bootstrap-roles");
|
|
10
10
|
const default_staging_stack_1 = require("./default-staging-stack");
|
|
@@ -16,7 +16,7 @@ const ENV_AWARE_STACKS = new app_global_1.AppScopedGlobal(() => new Set());
|
|
|
16
16
|
/**
|
|
17
17
|
* App Staging Synthesizer
|
|
18
18
|
*/
|
|
19
|
-
class AppStagingSynthesizer extends
|
|
19
|
+
class AppStagingSynthesizer extends core_1.StackSynthesizer {
|
|
20
20
|
/**
|
|
21
21
|
* Use the Default Staging Resources, creating a single stack per environment this app is deployed in
|
|
22
22
|
*/
|
|
@@ -105,14 +105,14 @@ class AppStagingSynthesizer extends aws_cdk_lib_1.StackSynthesizer {
|
|
|
105
105
|
reusableBind(stack) {
|
|
106
106
|
this.checkEnvironmentGnosticism(stack);
|
|
107
107
|
const qualifier = this.props.bootstrapQualifier ??
|
|
108
|
-
stack.node.tryGetContext(
|
|
108
|
+
stack.node.tryGetContext(core_1.BOOTSTRAP_QUALIFIER_CONTEXT) ??
|
|
109
109
|
AppStagingSynthesizer.DEFAULT_QUALIFIER;
|
|
110
110
|
const spec = new helpers_internal_1.StringSpecializer(stack, qualifier);
|
|
111
111
|
const deployRole = this.roles.deploymentRole._specialize(spec);
|
|
112
112
|
const context = {
|
|
113
113
|
environmentString: [
|
|
114
|
-
|
|
115
|
-
|
|
114
|
+
core_1.Token.isUnresolved(stack.account) ? 'ACCOUNT' : stack.account,
|
|
115
|
+
core_1.Token.isUnresolved(stack.region) ? 'REGION' : stack.region,
|
|
116
116
|
].join('-'),
|
|
117
117
|
deployRoleArn: deployRole._arnForCloudFormation(),
|
|
118
118
|
qualifier,
|
|
@@ -155,7 +155,7 @@ class AppStagingSynthesizer extends aws_cdk_lib_1.StackSynthesizer {
|
|
|
155
155
|
* We can think about whether to loosen this requirement later.
|
|
156
156
|
*/
|
|
157
157
|
checkEnvironmentGnosticism(stack) {
|
|
158
|
-
const isAgnostic =
|
|
158
|
+
const isAgnostic = core_1.Token.isUnresolved(stack.account) || core_1.Token.isUnresolved(stack.region);
|
|
159
159
|
const agnosticStacks = AGNOSTIC_STACKS.for(stack);
|
|
160
160
|
const envAwareStacks = ENV_AWARE_STACKS.for(stack);
|
|
161
161
|
(isAgnostic ? agnosticStacks : envAwareStacks).add(stack);
|
|
@@ -171,7 +171,7 @@ class AppStagingSynthesizer extends aws_cdk_lib_1.StackSynthesizer {
|
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
173
|
_a = JSII_RTTI_SYMBOL_1;
|
|
174
|
-
AppStagingSynthesizer[_a] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.AppStagingSynthesizer", version: "2.
|
|
174
|
+
AppStagingSynthesizer[_a] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.AppStagingSynthesizer", version: "2.85.0-alpha.0" };
|
|
175
175
|
/**
|
|
176
176
|
* Default ARN qualifier
|
|
177
177
|
*/
|
|
@@ -189,11 +189,11 @@ AppStagingSynthesizer.DEFAULT_DEPLOY_ROLE_ARN = 'arn:${AWS::Partition}:iam::${AW
|
|
|
189
189
|
*/
|
|
190
190
|
AppStagingSynthesizer.DEFAULT_LOOKUP_ROLE_ARN = 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}';
|
|
191
191
|
exports.AppStagingSynthesizer = AppStagingSynthesizer;
|
|
192
|
-
class BoundAppStagingSynthesizer extends
|
|
192
|
+
class BoundAppStagingSynthesizer extends core_1.StackSynthesizer {
|
|
193
193
|
constructor(stack, props) {
|
|
194
194
|
super();
|
|
195
195
|
this.props = props;
|
|
196
|
-
this.assetManifest = new
|
|
196
|
+
this.assetManifest = new core_1.AssetManifestBuilder();
|
|
197
197
|
this.dependencyStacks = new Set();
|
|
198
198
|
super.bind(stack);
|
|
199
199
|
this.qualifier = props.qualifier;
|
|
@@ -252,4 +252,4 @@ class BoundAppStagingSynthesizer extends aws_cdk_lib_1.StackSynthesizer {
|
|
|
252
252
|
return this.cloudFormationLocationFromDockerImageAsset(location);
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN0YWdpbmctc3ludGhlc2l6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhcHAtc3RhZ2luZy1zeW50aGVzaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw2Q0FhcUI7QUFDckIsNEVBQXlHO0FBQ3pHLHVEQUF3RjtBQUN4RixtRUFBMEY7QUFDMUYsdUVBQXlHO0FBQ3pHLHFEQUF1RDtBQUN2RCxtREFBdUQ7QUFHdkQsTUFBTSxlQUFlLEdBQUcsSUFBSSw0QkFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFTLENBQUMsQ0FBQztBQUNwRSxNQUFNLGdCQUFnQixHQUFHLElBQUksNEJBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBUyxDQUFDLENBQUM7QUF5RXJFOztHQUVHO0FBQ0gsTUFBYSxxQkFBc0IsU0FBUSw4QkFBZ0I7SUFxQnpEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQWdDOzs7Ozs7Ozs7O1FBQzdELElBQUEsNEJBQWdCLEVBQUMsT0FBTyxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFFbkQsT0FBTyxxQkFBcUIsQ0FBQyxhQUFhLENBQUM7WUFDekMsT0FBTyxFQUFFLDJDQUFtQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDN0Msb0JBQW9CLEVBQUUsT0FBTyxDQUFDLG9CQUFvQjtZQUNsRCxrQkFBa0IsRUFBRSxPQUFPLENBQUMsa0JBQWtCO1lBQzlDLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztLQUNKO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQStCOzs7Ozs7Ozs7O1FBQzNELE9BQU8scUJBQXFCLENBQUMsYUFBYSxDQUFDO1lBQ3pDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxvQkFBb0I7WUFDbEQsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjtZQUM5QyxVQUFVLEVBQUUsS0FBSztZQUNq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SUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUM1QztRQUVELE9BQU8sSUFBSSxDQUFDLDBDQUEwQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ2xFO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBc3NldE1hbmlmZXN0QnVpbGRlcixcbiAgQk9PVFNUUkFQX1FVQUxJRklFUl9DT05URVhULFxuICBEb2NrZXJJbWFnZUFzc2V0TG9jYXRpb24sXG4gIERvY2tlckltYWdlQXNzZXRTb3VyY2UsXG4gIEZpbGVBc3NldExvY2F0aW9uLFxuICBGaWxlQXNzZXRTb3VyY2UsXG4gIElCb3VuZFN0YWNrU3ludGhlc2l6ZXIgYXMgSUJvdW5kQXBwU3RhZ2luZ1N5bnRoZXNpemVyLFxuICBJUmV1c2FibGVTdGFja1N5bnRoZXNpemVyLFxuICBJU3ludGhlc2lzU2Vzc2lvbixcbiAgU3RhY2ssXG4gIFN0YWNrU3ludGhlc2l6ZXIsXG4gIFRva2VuLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBTdHJpbmdTcGVjaWFsaXplciwgdHJhbnNsYXRlQ2ZuVG9rZW5Ub0Fzc2V0VG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IEJvb3RzdHJhcFJvbGUsIEJvb3RzdHJhcFJvbGVzLCBEZXBsb3ltZW50SWRlbnRpdGllcyB9IGZyb20gJy4vYm9vdHN0cmFwLXJvbGVzJztcbmltcG9ydCB7IERlZmF1bHRTdGFnaW5nU3RhY2ssIERlZmF1bHRTdGFnaW5nU3RhY2tPcHRpb25zIH0gZnJvbSAnLi9kZWZhdWx0LXN0YWdpbmctc3RhY2snO1xuaW1wb3J0IHsgUGVyRW52aXJvbm1lbnRTdGFnaW5nRmFjdG9yeSBhcyBQZXJFbnZpcm9ubWVudFN0YWdpbmdGYWN0b3J5IH0gZnJvbSAnLi9wZXItZW52LXN0YWdpbmctZmFjdG9yeSc7XG5pbXBvcnQgeyBBcHBTY29wZWRHbG9iYWwgfSBmcm9tICcuL3ByaXZhdGUvYXBwLWdsb2JhbCc7XG5pbXBvcnQgeyB2YWxpZGF0ZU5vVG9rZW5zIH0gZnJvbSAnLi9wcml2YXRlL25vLXRva2Vucyc7XG5pbXBvcnQgeyBJU3RhZ2luZ1Jlc291cmNlcywgSVN0YWdpbmdSZXNvdXJjZXNGYWN0b3J5LCBPYnRhaW5TdGFnaW5nUmVzb3VyY2VzQ29udGV4dCB9IGZyb20gJy4vc3RhZ2luZy1zdGFjayc7XG5cbmNvbnN0IEFHTk9TVElDX1NUQUNLUyA9IG5ldyBBcHBTY29wZWRHbG9iYWwoKCkgPT4gbmV3IFNldDxTdGFjaz4oKSk7XG5jb25zdCBFTlZfQVdBUkVfU1RBQ0tTID0gbmV3IEFwcFNjb3BlZEdsb2JhbCgoKSA9PiBuZXcgU2V0PFN0YWNrPigpKTtcblxuLyoqXG4gKiBPcHRpb25zIHRoYXQgYXBwbHkgdG8gYWxsIEFwcFN0YWdpbmdTeW50aGVzaXplciB2YXJpYW50c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcFN0YWdpbmdTeW50aGVzaXplck9wdGlvbnMge1xuICAvKipcbiAgICogV2hhdCByb2xlcyB0byB1c2UgdG8gZGVwbG95IGFwcGxpY2F0aW9uc1xuICAgKlxuICAgKiBUaGVzZSBhcmUgdGhlIHJvbGVzIHRoYXQgaGF2ZSBwZXJtaXNzaW9ucyB0byBpbnRlcmFjdCB3aXRoIENsb3VkRm9ybWF0aW9uXG4gICAqIG9uIHlvdXIgYmVoYWxmLiBCeSBkZWZhdWx0IHRoZXNlIGFyZSB0aGUgc3RhbmRhcmQgYm9vdHN0cmFwcGVkIENESyByb2xlcyxcbiAgICogYnV0IHlvdSBjYW4gY3VzdG9taXplIHRoZW0gb3IgdHVybiB0aGVtIG9mZiBhbmQgdXNlIHRoZSBDTEkgY3JlZGVudGlhbHNcbiAgICogdG8gZGVwbG95LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBzdGFuZGFyZCBib290c3RyYXBwZWQgQ0RLIHJvbGVzXG4gICAqL1xuICByZWFkb25seSBkZXBsb3ltZW50SWRlbnRpdGllcz86IERlcGxveW1lbnRJZGVudGl0aWVzO1xuXG4gIC8qKlxuICAgKiBRdWFsaWZpZXIgdG8gZGlzYW1iaWd1YXRlIG11bHRpcGxlIGJvb3RzdHJhcHBlZCBlbnZpcm9ubWVudHMgaW4gdGhlIHNhbWUgYWNjb3VudFxuICAgKlxuICAgKiBUaGlzIHF1YWxpZmllciBpcyBvbmx5IHVzZWQgdG8gcmVmZXJlbmNlIGJvb3RzdHJhcHBlZCByZXNvdXJjZXMuIEl0IHdpbGwgbm90XG4gICAqIGJlIHVzZWQgaW4gdGhlIGNyZWF0aW9uIG9mIGFwcC1zcGVjaWZpYyBzdGFnaW5nIHJlc291cmNlczogYGFwcElkYCBpcyB1c2VkIGZvciB0aGF0XG4gICAqIGluc3RlYWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVmFsdWUgb2YgY29udGV4dCBrZXkgJ0Bhd3MtY2RrL2NvcmU6Ym9vdHN0cmFwUXVhbGlmaWVyJyBpZiBzZXQsIG90aGVyd2lzZSBgREVGQVVMVF9RVUFMSUZJRVJgXG4gICAqL1xuICByZWFkb25seSBib290c3RyYXBRdWFsaWZpZXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3Igc3RhY2tQZXJFbnYgc3RhdGljIG1ldGhvZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHRSZXNvdXJjZXNPcHRpb25zIGV4dGVuZHMgQXBwU3RhZ2luZ1N5bnRoZXNpemVyT3B0aW9ucywgRGVmYXVsdFN0YWdpbmdTdGFja09wdGlvbnMge31cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjdXN0b21GYWN0b3J5IHN0YXRpYyBtZXRob2RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDdXN0b21GYWN0b3J5T3B0aW9ucyBleHRlbmRzIEFwcFN0YWdpbmdTeW50aGVzaXplck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGZhY3RvcnkgdGhhdCB3aWxsIGJlIHVzZWQgdG8gcmV0dXJuIHN0YWdpbmcgcmVzb3VyY2VzIGZvciBlYWNoIHN0YWNrXG4gICAqL1xuICByZWFkb25seSBmYWN0b3J5OiBJU3RhZ2luZ1Jlc291cmNlc0ZhY3Rvcnk7XG5cbiAgLyoqXG4gICAqIFJldXNlIHRoZSBhbnN3ZXIgZnJvbSB0aGUgZmFjdG9yeSBmb3Igc3RhY2tzIGluIHRoZSBzYW1lIGVudmlyb25tZW50XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG9uY2VQZXJFbnY/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGN1c3RvbVJlc291cmNlcyBzdGF0aWMgbWV0aG9kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tUmVzb3VyY2VzT3B0aW9ucyBleHRlbmRzIEFwcFN0YWdpbmdTeW50aGVzaXplck9wdGlvbnMge1xuICAvKipcbiAgICogVXNlIHRoZXNlIGV4YWN0IHN0YWdpbmcgcmVzb3VyY2VzIGZvciBldmVyeSBzdGFjayB0aGF0IHRoaXMgc3ludGhlc2l6ZXIgaXMgdXNlZCBmb3JcbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlczogSVN0YWdpbmdSZXNvdXJjZXM7XG59XG5cbi8qKlxuICogSW50ZXJuYWwgcHJvcGVydGllcyBmb3IgQXBwU3RhZ2luZ1N5bnRoZXNpemVyXG4gKi9cbmludGVyZmFjZSBBcHBTdGFnaW5nU3ludGhlc2l6ZXJQcm9wcyBleHRlbmRzIEFwcFN0YWdpbmdTeW50aGVzaXplck9wdGlvbnMge1xuICAvKipcbiAgICogQSBmYWN0b3J5IG1ldGhvZCB0aGF0IGNyZWF0ZXMgYW4gSVN0YWdpbmdTdGFjayB3aGVuIGdpdmVuIHRoZSBzdGFjayB0aGVcbiAgICogc3ludGhlc2l6ZXIgaXMgYmluZGluZy5cbiAgICovXG4gIHJlYWRvbmx5IGZhY3Rvcnk6IElTdGFnaW5nUmVzb3VyY2VzRmFjdG9yeTtcbn1cblxuLyoqXG4gKiBBcHAgU3RhZ2luZyBTeW50aGVzaXplclxuICovXG5leHBvcnQgY2xhc3MgQXBwU3RhZ2luZ1N5bnRoZXNpemVyIGV4dGVuZHMgU3RhY2tTeW50aGVzaXplciBpbXBsZW1lbnRzIElSZXVzYWJsZVN0YWNrU3ludGhlc2l6ZXIge1xuICAvKipcbiAgICogRGVmYXVsdCBBUk4gcXVhbGlmaWVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfUVVBTElGSUVSID0gJ2huYjY1OWZkcyc7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgQ2xvdWRGb3JtYXRpb24gcm9sZSBBUk4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfQ0xPVURGT1JNQVRJT05fUk9MRV9BUk4gPSAnYXJuOiR7QVdTOjpQYXJ0aXRpb259OmlhbTo6JHtBV1M6OkFjY291bnRJZH06cm9sZS9jZGstJHtRdWFsaWZpZXJ9LWNmbi1leGVjLXJvbGUtJHtBV1M6OkFjY291bnRJZH0tJHtBV1M6OlJlZ2lvbn0nO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGRlcGxveSByb2xlIEFSTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9ERVBMT1lfUk9MRV9BUk4gPSAnYXJuOiR7QVdTOjpQYXJ0aXRpb259OmlhbTo6JHtBV1M6OkFjY291bnRJZH06cm9sZS9jZGstJHtRdWFsaWZpZXJ9LWRlcGxveS1yb2xlLSR7QVdTOjpBY2NvdW50SWR9LSR7QVdTOjpSZWdpb259JztcblxuICAvKipcbiAgICogRGVmYXVsdCBsb29rdXAgcm9sZSBBUk4gZm9yIG1pc3NpbmcgdmFsdWVzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0xPT0tVUF9ST0xFX0FSTiA9ICdhcm46JHtBV1M6OlBhcnRpdGlvbn06aWFtOjoke0FXUzo6QWNjb3VudElkfTpyb2xlL2Nkay0ke1F1YWxpZmllcn0tbG9va3VwLXJvbGUtJHtBV1M6OkFjY291bnRJZH0tJHtBV1M6OlJlZ2lvbn0nO1xuXG4gIC8qKlxuICAgKiBVc2UgdGhlIERlZmF1bHQgU3RhZ2luZyBSZXNvdXJjZXMsIGNyZWF0aW5nIGEgc2luZ2xlIHN0YWNrIHBlciBlbnZpcm9ubWVudCB0aGlzIGFwcCBpcyBkZXBsb3llZCBpblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0UmVzb3VyY2VzKG9wdGlvbnM6IERlZmF1bHRSZXNvdXJjZXNPcHRpb25zKSB7XG4gICAgdmFsaWRhdGVOb1Rva2VucyhvcHRpb25zLCAnQXBwU3RhZ2luZ1N5bnRoZXNpemVyJyk7XG5cbiAgICByZXR1cm4gQXBwU3RhZ2luZ1N5bnRoZXNpemVyLmN1c3RvbUZhY3Rvcnkoe1xuICAgICAgZmFjdG9yeTogRGVmYXVsdFN0YWdpbmdTdGFjay5mYWN0b3J5KG9wdGlvbnMpLFxuICAgICAgZGVwbG95bWVudElkZW50aXRpZXM6IG9wdGlvbnMuZGVwbG95bWVudElkZW50aXRpZXMsXG4gICAgICBib290c3RyYXBRdWFsaWZpZXI6IG9wdGlvbnMuYm9vdHN0cmFwUXVhbGlmaWVyLFxuICAgICAgb25jZVBlckVudjogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhlc2UgZXhhY3Qgc3RhZ2luZyByZXNvdXJjZXMgZm9yIGV2ZXJ5IHN0YWNrIHRoYXQgdGhpcyBzeW50aGVzaXplciBpcyB1c2VkIGZvclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjdXN0b21SZXNvdXJjZXMob3B0aW9uczogQ3VzdG9tUmVzb3VyY2VzT3B0aW9ucykge1xuICAgIHJldHVybiBBcHBTdGFnaW5nU3ludGhlc2l6ZXIuY3VzdG9tRmFjdG9yeSh7XG4gICAgICBkZXBsb3ltZW50SWRlbnRpdGllczogb3B0aW9ucy5kZXBsb3ltZW50SWRlbnRpdGllcyxcbiAgICAgIGJvb3RzdHJhcFF1YWxpZmllcjogb3B0aW9ucy5ib290c3RyYXBRdWFsaWZpZXIsXG4gICAgICBvbmNlUGVyRW52OiBmYWxzZSxcbiAgICAgIGZhY3Rvcnk6IHtcbiAgICAgICAgb2J0YWluU3RhZ2luZ1Jlc291cmNlcygpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9ucy5yZXNvdXJjZXM7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1cHBseSB5b3VyIG93biBzdGFnaW5nU3RhY2tGYWN0b3J5IG1ldGhvZCBmb3IgY3JlYXRpbmcgYW4gSVN0YWdpbmdTdGFjayB3aGVuXG4gICAqIGEgc3RhY2sgaXMgYm91bmQgdG8gdGhlIHN5bnRoZXNpemVyLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBgb25jZVBlckVudiA9IHRydWVgLCB3aGljaCBtZWFucyB0aGF0IGEgbmV3IGluc3RhbmNlIG9mIHRoZSBJU3RhZ2luZ1N0YWNrXG4gICAqIHdpbGwgYmUgY3JlYXRlZCBpbiBuZXcgZW52aXJvbm1lbnRzLiBTZXQgYG9uY2VQZXJFbnYgPSBmYWxzZWAgdG8gdHVybiBvZmYgdGhhdCBiZWhhdmlvci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3VzdG9tRmFjdG9yeShvcHRpb25zOiBDdXN0b21GYWN0b3J5T3B0aW9ucykge1xuICAgIGNvbnN0IG9uY2VQZXJFbnYgPSBvcHRpb25zLm9uY2VQZXJFbnYgPz8gdHJ1ZTtcbiAgICBjb25zdCBmYWN0b3J5ID0gb25jZVBlckVudiA/IG5ldyBQZXJFbnZpcm9ubWVudFN0YWdpbmdGYWN0b3J5KG9wdGlvbnMuZmFjdG9yeSkgOiBvcHRpb25zLmZhY3Rvcnk7XG5cbiAgICByZXR1cm4gbmV3IEFwcFN0YWdpbmdTeW50aGVzaXplcih7XG4gICAgICBmYWN0b3J5LFxuICAgICAgYm9vdHN0cmFwUXVhbGlmaWVyOiBvcHRpb25zLmJvb3RzdHJhcFF1YWxpZmllcixcbiAgICAgIGRlcGxveW1lbnRJZGVudGl0aWVzOiBvcHRpb25zLmRlcGxveW1lbnRJZGVudGl0aWVzLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSByb2xlczogUmVxdWlyZWQ8Qm9vdHN0cmFwUm9sZXM+O1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogQXBwU3RhZ2luZ1N5bnRoZXNpemVyUHJvcHMpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5yb2xlcyA9IHtcbiAgICAgIGRlcGxveW1lbnRSb2xlOiBwcm9wcy5kZXBsb3ltZW50SWRlbnRpdGllcz8ucm9sZXMuZGVwbG95bWVudFJvbGUgPz9cbiAgICAgICAgQm9vdHN0cmFwUm9sZS5mcm9tUm9sZUFybihBcHBTdGFnaW5nU3ludGhlc2l6ZXIuREVGQVVMVF9ERVBMT1lfUk9MRV9BUk4pLFxuICAgICAgY2xvdWRGb3JtYXRpb25FeGVjdXRpb25Sb2xlOiBwcm9wcy5kZXBsb3ltZW50SWRlbnRpdGllcz8ucm9sZXMuY2xvdWRGb3JtYXRpb25FeGVjdXRpb25Sb2xlID8/XG4gICAgICAgIEJvb3RzdHJhcFJvbGUuZnJvbVJvbGVBcm4oQXBwU3RhZ2luZ1N5bnRoZXNpemVyLkRFRkFVTFRfQ0xPVURGT1JNQVRJT05fUk9MRV9BUk4pLFxuICAgICAgbG9va3VwUm9sZTogdGhpcy5wcm9wcy5kZXBsb3ltZW50SWRlbnRpdGllcz8ucm9sZXMubG9va3VwUm9sZSA/P1xuICAgICAgICBCb290c3RyYXBSb2xlLmZyb21Sb2xlQXJuKEFwcFN0YWdpbmdTeW50aGVzaXplci5ERUZBVUxUX0xPT0tVUF9ST0xFX0FSTiksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgdmVyc2lvbiBvZiB0aGUgc3ludGhlc2l6ZXIgYm91bmQgdG8gYSBzdGFjay5cbiAgICovXG4gIHB1YmxpYyByZXVzYWJsZUJpbmQoc3RhY2s6IFN0YWNrKTogSUJvdW5kQXBwU3RhZ2luZ1N5bnRoZXNpemVyIHtcbiAgICB0aGlzLmNoZWNrRW52aXJvbm1lbnRHbm9zdGljaXNtKHN0YWNrKTtcbiAgICBjb25zdCBxdWFsaWZpZXIgPSB0aGlzLnByb3BzLmJvb3RzdHJhcFF1YWxpZmllciA/P1xuICAgICAgc3RhY2subm9kZS50cnlHZXRDb250ZXh0KEJPT1RTVFJBUF9RVUFMSUZJRVJfQ09OVEVYVCkgPz9cbiAgICAgIEFwcFN0YWdpbmdTeW50aGVzaXplci5ERUZBVUxUX1FVQUxJRklFUjtcbiAgICBjb25zdCBzcGVjID0gbmV3IFN0cmluZ1NwZWNpYWxpemVyKHN0YWNrLCBxdWFsaWZpZXIpO1xuXG4gICAgY29uc3QgZGVwbG95Um9sZSA9IHRoaXMucm9sZXMuZGVwbG95bWVudFJvbGUuX3NwZWNpYWxpemUoc3BlYyk7XG5cbiAgICBjb25zdCBjb250ZXh0OiBPYnRhaW5TdGFnaW5nUmVzb3VyY2VzQ29udGV4dCA9IHtcbiAgICAgIGVudmlyb25tZW50U3RyaW5nOiBbXG4gICAgICAgIFRva2VuLmlzVW5yZXNvbHZlZChzdGFjay5hY2NvdW50KSA/ICdBQ0NPVU5UJyA6IHN0YWNrLmFjY291bnQsXG4gICAgICAgIFRva2VuLmlzVW5yZXNvbHZlZChzdGFjay5yZWdpb24pID8gJ1JFR0lPTicgOiBzdGFjay5yZWdpb24sXG4gICAgICBdLmpvaW4oJy0nKSxcbiAgICAgIGRlcGxveVJvbGVBcm46IGRlcGxveVJvbGUuX2FybkZvckNsb3VkRm9ybWF0aW9uKCksXG4gICAgICBxdWFsaWZpZXIsXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgQm91bmRBcHBTdGFnaW5nU3ludGhlc2l6ZXIoc3RhY2ssIHtcbiAgICAgIHN0YWdpbmdSZXNvdXJjZXM6IHRoaXMucHJvcHMuZmFjdG9yeS5vYnRhaW5TdGFnaW5nUmVzb3VyY2VzKHN0YWNrLCBjb250ZXh0KSxcbiAgICAgIGRlcGxveVJvbGUsXG4gICAgICBjbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGU6IHRoaXMucm9sZXMuY2xvdWRGb3JtYXRpb25FeGVjdXRpb25Sb2xlLl9zcGVjaWFsaXplKHNwZWMpLFxuICAgICAgbG9va3VwUm9sZTogdGhpcy5yb2xlcy5sb29rdXBSb2xlLl9zcGVjaWFsaXplKHNwZWMpLFxuICAgICAgcXVhbGlmaWVyLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGZvciBsZWdhY3kgcHVycG9zZXM7IHRoaXMgd2lsbCBuZXZlciBiZSBjYWxsZWQuXG4gICAqL1xuICBwdWJsaWMgYmluZChfc3RhY2s6IFN0YWNrKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGlzIGEgbGVnYWN5IEFQSSwgY2FsbCByZXVzYWJsZUJpbmQgaW5zdGVhZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGZvciBsZWdhY3kgcHVycG9zZXM7IHRoaXMgd2lsbCBuZXZlciBiZSBjYWxsZWQuXG4gICAqL1xuICBwdWJsaWMgc3ludGhlc2l6ZShfc2Vzc2lvbjogSVN5bnRoZXNpc1Nlc3Npb24pOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgaXMgYSBsZWdhY3kgQVBJLCBjYWxsIHJldXNhYmxlQmluZCBpbnN0ZWFkJyk7XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgZm9yIGxlZ2FjeSBwdXJwb3NlczsgdGhpcyB3aWxsIG5ldmVyIGJlIGNhbGxlZC5cbiAgICovXG4gIHB1YmxpYyBhZGRGaWxlQXNzZXQoX2Fzc2V0OiBGaWxlQXNzZXRTb3VyY2UpOiBGaWxlQXNzZXRMb2NhdGlvbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGlzIGEgbGVnYWN5IEFQSSwgY2FsbCByZXVzYWJsZUJpbmQgaW5zdGVhZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGZvciBsZWdhY3kgcHVycG9zZXM7IHRoaXMgd2lsbCBuZXZlciBiZSBjYWxsZWQuXG4gICAqL1xuICBwdWJsaWMgYWRkRG9ja2VySW1hZ2VBc3NldChfYXNzZXQ6IERvY2tlckltYWdlQXNzZXRTb3VyY2UpOiBEb2NrZXJJbWFnZUFzc2V0TG9jYXRpb24ge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhpcyBpcyBhIGxlZ2FjeSBBUEksIGNhbGwgcmV1c2FibGVCaW5kIGluc3RlYWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB0aGF0IHdlJ3JlIG9ubHkgYmVpbmcgdXNlZCBmb3IgZXhjbHVzaXZlbHkgZ25vc3RpYyBvciBhZ25vc3RpYyBzdGFja3MuXG4gICAqXG4gICAqIFdlIGNhbiB0aGluayBhYm91dCB3aGV0aGVyIHRvIGxvb3NlbiB0aGlzIHJlcXVpcmVtZW50IGxhdGVyLlxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja0Vudmlyb25tZW50R25vc3RpY2lzbShzdGFjazogU3RhY2spIHtcbiAgICBjb25zdCBpc0Fnbm9zdGljID0gVG9rZW4uaXNVbnJlc29sdmVkKHN0YWNrLmFjY291bnQpIHx8IFRva2VuLmlzVW5yZXNvbHZlZChzdGFjay5yZWdpb24pO1xuICAgIGNvbnN0IGFnbm9zdGljU3RhY2tzID0gQUdOT1NUSUNfU1RBQ0tTLmZvcihzdGFjayk7XG4gICAgY29uc3QgZW52QXdhcmVTdGFja3MgPSBFTlZfQVdBUkVfU1RBQ0tTLmZvcihzdGFjayk7XG5cbiAgICAoaXNBZ25vc3RpYyA/IGFnbm9zdGljU3RhY2tzIDogZW52QXdhcmVTdGFja3MpLmFkZChzdGFjayk7XG4gICAgaWYgKGFnbm9zdGljU3RhY2tzLnNpemUgPiAwICYmIGVudkF3YXJlU3RhY2tzLnNpemUgPiAwKSB7XG5cbiAgICAgIGNvbnN0IGRlc2NyaWJlU3RhY2tzID0gKHhzOiBTZXQ8U3RhY2s+KSA9PiBBcnJheS5mcm9tKHhzKS5tYXAocyA9PiBzLm5vZGUucGF0aCkuam9pbignLCAnKTtcblxuICAgICAgdGhyb3cgbmV3IEVycm9yKFtcbiAgICAgICAgJ0l0IGlzIG5vdCBzYWZlIHRvIHVzZSBBcHBTdGFnaW5nU3ludGhlc2l6ZXIgZm9yIGJvdGggZW52aXJvbm1lbnQtYWdub3N0aWMgYW5kIGVudmlyb25tZW50LWF3YXJlIHN0YWNrcyBhdCB0aGUgc2FtZSB0aW1lLicsXG4gICAgICAgICdQbGVhc2UgZWl0aGVyIHNwZWNpZnkgZW52aXJvbm1lbnRzIGZvciBhbGwgc3RhY2tzIG9yIG5vIHN0YWNrcyBpbiB0aGUgQ0RLIEFwcC4nLFxuICAgICAgICBgU3RhY2tzIHdpdGggZW52aXJvbm1lbnQ6ICR7ZGVzY3JpYmVTdGFja3MoYWdub3N0aWNTdGFja3MpfS5gLFxuICAgICAgICBgU3RhY2tzIHdpdGhvdXQgZW52aXJvbm1lbnQ6ICR7ZGVzY3JpYmVTdGFja3MoZW52QXdhcmVTdGFja3MpfS5gLFxuICAgICAgXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEludGVybmFsIHByb3BlcnRpZXMgZm9yIEJvdW5kQXBwU3RhZ2luZ1N5bnRoZXNpemVyXG4gKi9cbmludGVyZmFjZSBCb3VuZEFwcFN0YWdpbmdTeW50aGVzaXplclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBib290c3RyYXAgcXVhbGlmaWVyXG4gICAqL1xuICByZWFkb25seSBxdWFsaWZpZXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlcyB3ZSBlbmQgdXAgdXNpbmcgZm9yIHRoaXMgc3ludGhlc2l6ZXJcbiAgICovXG4gIHJlYWRvbmx5IHN0YWdpbmdSZXNvdXJjZXM6IElTdGFnaW5nUmVzb3VyY2VzO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVwbG95IHJvbGVcbiAgICovXG4gIHJlYWRvbmx5IGRlcGxveVJvbGU6IEJvb3RzdHJhcFJvbGU7XG5cbiAgLyoqXG4gICAqIENsb3VkRm9ybWF0aW9uIEV4ZWN1dGlvbiBSb2xlXG4gICAqL1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGU6IEJvb3RzdHJhcFJvbGU7XG5cbiAgLyoqXG4gICAqIExvb2t1cCBSb2xlXG4gICAqL1xuICByZWFkb25seSBsb29rdXBSb2xlOiBCb290c3RyYXBSb2xlO1xufVxuXG5jbGFzcyBCb3VuZEFwcFN0YWdpbmdTeW50aGVzaXplciBleHRlbmRzIFN0YWNrU3ludGhlc2l6ZXIgaW1wbGVtZW50cyBJQm91bmRBcHBTdGFnaW5nU3ludGhlc2l6ZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHN0YWdpbmdTdGFjazogSVN0YWdpbmdSZXNvdXJjZXM7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXNzZXRNYW5pZmVzdCA9IG5ldyBBc3NldE1hbmlmZXN0QnVpbGRlcigpO1xuICBwcml2YXRlIHJlYWRvbmx5IHF1YWxpZmllcjogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlcGVuZGVuY3lTdGFja3M6IFNldDxTdGFjaz4gPSBuZXcgU2V0KCk7XG5cbiAgY29uc3RydWN0b3Ioc3RhY2s6IFN0YWNrLCBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBCb3VuZEFwcFN0YWdpbmdTeW50aGVzaXplclByb3BzKSB7XG4gICAgc3VwZXIoKTtcbiAgICBzdXBlci5iaW5kKHN0YWNrKTtcblxuICAgIHRoaXMucXVhbGlmaWVyID0gcHJvcHMucXVhbGlmaWVyO1xuICAgIHRoaXMuc3RhZ2luZ1N0YWNrID0gcHJvcHMuc3RhZ2luZ1Jlc291cmNlcztcbiAgfVxuICAvKipcbiAgICogVGhlIHF1YWxpZmllciB1c2VkIHRvIGJvb3RzdHJhcCB0aGlzIHN0YWNrXG4gICAqL1xuICBwdWJsaWMgZ2V0IGJvb3RzdHJhcFF1YWxpZmllcigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIC8vIE5vdCBzdXJlIHdoeSB3ZSBuZWVkIHRoaXMuXG4gICAgcmV0dXJuIHRoaXMucXVhbGlmaWVyO1xuICB9XG5cbiAgcHVibGljIHN5bnRoZXNpemUoc2Vzc2lvbjogSVN5bnRoZXNpc1Nlc3Npb24pOiB2b2lkIHtcbiAgICBjb25zdCB0ZW1wbGF0ZUFzc2V0U291cmNlID0gdGhpcy5zeW50aGVzaXplVGVtcGxhdGUoc2Vzc2lvbiwgdGhpcy5wcm9wcy5sb29rdXBSb2xlPy5fYXJuRm9yQ2xvdWRBc3NlbWJseSgpKTtcbiAgICBjb25zdCB0ZW1wbGF0ZUFzc2V0ID0gdGhpcy5hZGRGaWxlQXNzZXQodGVtcGxhdGVBc3NldFNvdXJjZSk7XG5cbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSBBcnJheS5mcm9tKHRoaXMuZGVwZW5kZW5jeVN0YWNrcykuZmxhdE1hcCgoZCkgPT4gZC5hcnRpZmFjdElkKTtcbiAgICBjb25zdCBhc3NldE1hbmlmZXN0SWQgPSB0aGlzLmFzc2V0TWFuaWZlc3QuZW1pdE1hbmlmZXN0KHRoaXMuYm91bmRTdGFjaywgc2Vzc2lvbiwge30sIGRlcGVuZGVuY2llcyk7XG5cbiAgICBjb25zdCBsb29rdXBSb2xlQXJuID0gdGhpcy5wcm9wcy5sb29rdXBSb2xlPy5fYXJuRm9yQ2xvdWRBc3NlbWJseSgpO1xuXG4gICAgdGhpcy5lbWl0QXJ0aWZhY3Qoc2Vzc2lvbiwge1xuICAgICAgYXNzdW1lUm9sZUFybjogdGhpcy5wcm9wcy5kZXBsb3lSb2xlPy5fYXJuRm9yQ2xvdWRBc3NlbWJseSgpLFxuICAgICAgYWRkaXRpb25hbERlcGVuZGVuY2llczogW2Fzc2V0TWFuaWZlc3RJZF0sXG4gICAgICBzdGFja1RlbXBsYXRlQXNzZXRPYmplY3RVcmw6IHRlbXBsYXRlQXNzZXQuczNPYmplY3RVcmxXaXRoUGxhY2Vob2xkZXJzLFxuICAgICAgY2xvdWRGb3JtYXRpb25FeGVjdXRpb25Sb2xlQXJuOiB0aGlzLnByb3BzLmNsb3VkRm9ybWF0aW9uRXhlY3V0aW9uUm9sZT8uX2FybkZvckNsb3VkQXNzZW1ibHkoKSxcbiAgICAgIGxvb2t1cFJvbGU6IGxvb2t1cFJvbGVBcm4gPyB7IGFybjogbG9va3VwUm9sZUFybiB9IDogdW5kZWZpbmVkLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGZpbGUgYXNzZXQgdG8gdGhlIG1hbmlmZXN0LlxuICAgKi9cbiAgcHVibGljIGFkZEZpbGVBc3NldChhc3NldDogRmlsZUFzc2V0U291cmNlKTogRmlsZUFzc2V0TG9jYXRpb24ge1xuICAgIGNvbnN0IHsgYnVja2V0TmFtZSwgYXNzdW1lUm9sZUFybiwgcHJlZml4LCBkZXBlbmRlbmN5U3RhY2sgfSA9IHRoaXMuc3RhZ2luZ1N0YWNrLmFkZEZpbGUoYXNzZXQpO1xuICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5hc3NldE1hbmlmZXN0LmRlZmF1bHRBZGRGaWxlQXNzZXQodGhpcy5ib3VuZFN0YWNrLCBhc3NldCwge1xuICAgICAgYnVja2V0TmFtZTogdHJhbnNsYXRlQ2ZuVG9rZW5Ub0Fzc2V0VG9rZW4oYnVja2V0TmFtZSksXG4gICAgICBidWNrZXRQcmVmaXg6IHByZWZpeCxcbiAgICAgIHJvbGU6IGFzc3VtZVJvbGVBcm4gPyB7IGFzc3VtZVJvbGVBcm46IHRyYW5zbGF0ZUNmblRva2VuVG9Bc3NldFRva2VuKGFzc3VtZVJvbGVBcm4pIH0gOiB1bmRlZmluZWQsXG4gICAgfSk7XG5cbiAgICBpZiAoZGVwZW5kZW5jeVN0YWNrKSB7XG4gICAgICB0aGlzLmJvdW5kU3RhY2suYWRkRGVwZW5kZW5jeShkZXBlbmRlbmN5U3RhY2ssICdzdGFjayBkZXBlbmRzIG9uIHRoZSBzdGFnaW5nIHN0YWNrIGZvciBzdGFnaW5nIHJlc291cmNlcycpO1xuICAgICAgdGhpcy5kZXBlbmRlbmN5U3RhY2tzLmFkZChkZXBlbmRlbmN5U3RhY2spO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNsb3VkRm9ybWF0aW9uTG9jYXRpb25Gcm9tRmlsZUFzc2V0KGxvY2F0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBkb2NrZXIgaW1hZ2UgYXNzZXQgdG8gdGhlIG1hbmlmZXN0LlxuICAgKi9cbiAgcHVibGljIGFkZERvY2tlckltYWdlQXNzZXQoYXNzZXQ6IERvY2tlckltYWdlQXNzZXRTb3VyY2UpOiBEb2NrZXJJbWFnZUFzc2V0TG9jYXRpb24ge1xuICAgIGNvbnN0IHsgcmVwb05hbWUsIGFzc3VtZVJvbGVBcm4sIGRlcGVuZGVuY3lTdGFjayB9ID0gdGhpcy5zdGFnaW5nU3RhY2suYWRkRG9ja2VySW1hZ2UoYXNzZXQpO1xuICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5hc3NldE1hbmlmZXN0LmRlZmF1bHRBZGREb2NrZXJJbWFnZUFzc2V0KHRoaXMuYm91bmRTdGFjaywgYXNzZXQsIHtcbiAgICAgIHJlcG9zaXRvcnlOYW1lOiB0cmFuc2xhdGVDZm5Ub2tlblRvQXNzZXRUb2tlbihyZXBvTmFtZSksXG4gICAgICByb2xlOiBhc3N1bWVSb2xlQXJuID8geyBhc3N1bWVSb2xlQXJuOiB0cmFuc2xhdGVDZm5Ub2tlblRvQXNzZXRUb2tlbihhc3N1bWVSb2xlQXJuKSB9IDogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgaWYgKGRlcGVuZGVuY3lTdGFjaykge1xuICAgICAgdGhpcy5ib3VuZFN0YWNrLmFkZERlcGVuZGVuY3koZGVwZW5kZW5jeVN0YWNrLCAnc3RhY2sgZGVwZW5kcyBvbiB0aGUgc3RhZ2luZyBzdGFjayBmb3Igc3RhZ2luZyByZXNvdXJjZXMnKTtcbiAgICAgIHRoaXMuZGVwZW5kZW5jeVN0YWNrcy5hZGQoZGVwZW5kZW5jeVN0YWNrKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jbG91ZEZvcm1hdGlvbkxvY2F0aW9uRnJvbURvY2tlckltYWdlQXNzZXQobG9jYXRpb24pO1xuICB9XG59XG4iXX0=
|
|
255
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN0YWdpbmctc3ludGhlc2l6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhcHAtc3RhZ2luZy1zeW50aGVzaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQ0FhMEI7QUFDMUIsNEVBQXlHO0FBQ3pHLHVEQUF3RjtBQUN4RixtRUFBMEY7QUFDMUYsdUVBQXlHO0FBQ3pHLHFEQUF1RDtBQUN2RCxtREFBdUQ7QUFHdkQsTUFBTSxlQUFlLEdBQUcsSUFBSSw0QkFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFTLENBQUMsQ0FBQztBQUNwRSxNQUFNLGdCQUFnQixHQUFHLElBQUksNEJBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBUyxDQUFDLENBQUM7QUF5RXJFOztHQUVHO0FBQ0gsTUFBYSxxQkFBc0IsU0FBUSx1QkFBZ0I7SUFxQnpEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQWdDOzs7Ozs7Ozs7O1FBQzdELElBQUEsNEJBQWdCLEVBQUMsT0FBTyxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFFbkQsT0FBTyxxQkFBcUIsQ0FBQyxhQUFhLENBQUM7WUFDekMsT0FBTyxFQUFFLDJDQUFtQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDN0Msb0JBQW9CLEVBQUUsT0FBTyxDQUFDLG9CQUFvQjtZQUNsRCxrQkFBa0IsRUFBRSxPQUFPLENBQUMsa0JBQWtCO1lBQzlDLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztLQUNKO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQStCOzs7Ozs7Ozs7O1FBQzNELE9BQU8scUJBQXFCLENBQUMsYUFBYSxDQUFDO1lBQ3pDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxvQkFBb0I7WUFDbEQsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjtZQUM5QyxVQUFVLEVBQUUsS0FBSztZQUNq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QyxhQUFhLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUU7WUFDOUUsVUFBVSxFQUFFLElBQUEsZ0RBQTZCLEVBQUMsVUFBVSxDQUFDO1lBQ3JELFlBQVksRUFBRSxNQUFNO1lBQ3BCLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLElBQUEsZ0RBQTZCLEVBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUNsRyxDQUFDLENBQUM7UUFFSCxJQUFJLGVBQWUsRUFBRTtZQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsMERBQTBELENBQUMsQ0FBQztZQUMzRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQzVDO1FBRUQsT0FBTyxJQUFJLENBQUMsbUNBQW1DLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDM0Q7SUFFRDs7T0FFRztJQUNJLG1CQUFtQixDQUFDLEtBQTZCO1FBQ3RELE1BQU0sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUU7WUFDckYsY0FBYyxFQUFFLElBQUEsZ0RBQTZCLEVBQUMsUUFBUSxDQUFDO1lBQ3ZELElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLElBQUEsZ0RBQTZCLEVBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUNsRyxDQUFDLENBQUM7UUFFSCxJQUFJLGVBQWUsRUFBRTtZQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsMERBQTBELENBQUMsQ0FBQztZQUMzRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQzVDO1FBRUQsT0FBTyxJQUFJLENBQUMsMENBQTBDLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDbEU7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFzc2V0TWFuaWZlc3RCdWlsZGVyLFxuICBCT09UU1RSQVBfUVVBTElGSUVSX0NPTlRFWFQsXG4gIERvY2tlckltYWdlQXNzZXRMb2NhdGlvbixcbiAgRG9ja2VySW1hZ2VBc3NldFNvdXJjZSxcbiAgRmlsZUFzc2V0TG9jYXRpb24sXG4gIEZpbGVBc3NldFNvdXJjZSxcbiAgSUJvdW5kU3RhY2tTeW50aGVzaXplciBhcyBJQm91bmRBcHBTdGFnaW5nU3ludGhlc2l6ZXIsXG4gIElSZXVzYWJsZVN0YWNrU3ludGhlc2l6ZXIsXG4gIElTeW50aGVzaXNTZXNzaW9uLFxuICBTdGFjayxcbiAgU3RhY2tTeW50aGVzaXplcixcbiAgVG9rZW4sXG59IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgU3RyaW5nU3BlY2lhbGl6ZXIsIHRyYW5zbGF0ZUNmblRva2VuVG9Bc3NldFRva2VuIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvaGVscGVycy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBCb290c3RyYXBSb2xlLCBCb290c3RyYXBSb2xlcywgRGVwbG95bWVudElkZW50aXRpZXMgfSBmcm9tICcuL2Jvb3RzdHJhcC1yb2xlcyc7XG5pbXBvcnQgeyBEZWZhdWx0U3RhZ2luZ1N0YWNrLCBEZWZhdWx0U3RhZ2luZ1N0YWNrT3B0aW9ucyB9IGZyb20gJy4vZGVmYXVsdC1zdGFnaW5nLXN0YWNrJztcbmltcG9ydCB7IFBlckVudmlyb25tZW50U3RhZ2luZ0ZhY3RvcnkgYXMgUGVyRW52aXJvbm1lbnRTdGFnaW5nRmFjdG9yeSB9IGZyb20gJy4vcGVyLWVudi1zdGFnaW5nLWZhY3RvcnknO1xuaW1wb3J0IHsgQXBwU2NvcGVkR2xvYmFsIH0gZnJvbSAnLi9wcml2YXRlL2FwcC1nbG9iYWwnO1xuaW1wb3J0IHsgdmFsaWRhdGVOb1Rva2VucyB9IGZyb20gJy4vcHJpdmF0ZS9uby10b2tlbnMnO1xuaW1wb3J0IHsgSVN0YWdpbmdSZXNvdXJjZXMsIElTdGFnaW5nUmVzb3VyY2VzRmFjdG9yeSwgT2J0YWluU3RhZ2luZ1Jlc291cmNlc0NvbnRleHQgfSBmcm9tICcuL3N0YWdpbmctc3RhY2snO1xuXG5jb25zdCBBR05PU1RJQ19TVEFDS1MgPSBuZXcgQXBwU2NvcGVkR2xvYmFsKCgpID0+IG5ldyBTZXQ8U3RhY2s+KCkpO1xuY29uc3QgRU5WX0FXQVJFX1NUQUNLUyA9IG5ldyBBcHBTY29wZWRHbG9iYWwoKCkgPT4gbmV3IFNldDxTdGFjaz4oKSk7XG5cbi8qKlxuICogT3B0aW9ucyB0aGF0IGFwcGx5IHRvIGFsbCBBcHBTdGFnaW5nU3ludGhlc2l6ZXIgdmFyaWFudHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBTdGFnaW5nU3ludGhlc2l6ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoYXQgcm9sZXMgdG8gdXNlIHRvIGRlcGxveSBhcHBsaWNhdGlvbnNcbiAgICpcbiAgICogVGhlc2UgYXJlIHRoZSByb2xlcyB0aGF0IGhhdmUgcGVybWlzc2lvbnMgdG8gaW50ZXJhY3Qgd2l0aCBDbG91ZEZvcm1hdGlvblxuICAgKiBvbiB5b3VyIGJlaGFsZi4gQnkgZGVmYXVsdCB0aGVzZSBhcmUgdGhlIHN0YW5kYXJkIGJvb3RzdHJhcHBlZCBDREsgcm9sZXMsXG4gICAqIGJ1dCB5b3UgY2FuIGN1c3RvbWl6ZSB0aGVtIG9yIHR1cm4gdGhlbSBvZmYgYW5kIHVzZSB0aGUgQ0xJIGNyZWRlbnRpYWxzXG4gICAqIHRvIGRlcGxveS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBUaGUgc3RhbmRhcmQgYm9vdHN0cmFwcGVkIENESyByb2xlc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95bWVudElkZW50aXRpZXM/OiBEZXBsb3ltZW50SWRlbnRpdGllcztcblxuICAvKipcbiAgICogUXVhbGlmaWVyIHRvIGRpc2FtYmlndWF0ZSBtdWx0aXBsZSBib290c3RyYXBwZWQgZW52aXJvbm1lbnRzIGluIHRoZSBzYW1lIGFjY291bnRcbiAgICpcbiAgICogVGhpcyBxdWFsaWZpZXIgaXMgb25seSB1c2VkIHRvIHJlZmVyZW5jZSBib290c3RyYXBwZWQgcmVzb3VyY2VzLiBJdCB3aWxsIG5vdFxuICAgKiBiZSB1c2VkIGluIHRoZSBjcmVhdGlvbiBvZiBhcHAtc3BlY2lmaWMgc3RhZ2luZyByZXNvdXJjZXM6IGBhcHBJZGAgaXMgdXNlZCBmb3IgdGhhdFxuICAgKiBpbnN0ZWFkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFZhbHVlIG9mIGNvbnRleHQga2V5ICdAYXdzLWNkay9jb3JlOmJvb3RzdHJhcFF1YWxpZmllcicgaWYgc2V0LCBvdGhlcndpc2UgYERFRkFVTFRfUVVBTElGSUVSYFxuICAgKi9cbiAgcmVhZG9ubHkgYm9vdHN0cmFwUXVhbGlmaWVyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHN0YWNrUGVyRW52IHN0YXRpYyBtZXRob2RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZhdWx0UmVzb3VyY2VzT3B0aW9ucyBleHRlbmRzIEFwcFN0YWdpbmdTeW50aGVzaXplck9wdGlvbnMsIERlZmF1bHRTdGFnaW5nU3RhY2tPcHRpb25zIHt9XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3VzdG9tRmFjdG9yeSBzdGF0aWMgbWV0aG9kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tRmFjdG9yeU9wdGlvbnMgZXh0ZW5kcyBBcHBTdGFnaW5nU3ludGhlc2l6ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBmYWN0b3J5IHRoYXQgd2lsbCBiZSB1c2VkIHRvIHJldHVybiBzdGFnaW5nIHJlc291cmNlcyBmb3IgZWFjaCBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgZmFjdG9yeTogSVN0YWdpbmdSZXNvdXJjZXNGYWN0b3J5O1xuXG4gIC8qKlxuICAgKiBSZXVzZSB0aGUgYW5zd2VyIGZyb20gdGhlIGZhY3RvcnkgZm9yIHN0YWNrcyBpbiB0aGUgc2FtZSBlbnZpcm9ubWVudFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBvbmNlUGVyRW52PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjdXN0b21SZXNvdXJjZXMgc3RhdGljIG1ldGhvZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbVJlc291cmNlc09wdGlvbnMgZXh0ZW5kcyBBcHBTdGFnaW5nU3ludGhlc2l6ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFVzZSB0aGVzZSBleGFjdCBzdGFnaW5nIHJlc291cmNlcyBmb3IgZXZlcnkgc3RhY2sgdGhhdCB0aGlzIHN5bnRoZXNpemVyIGlzIHVzZWQgZm9yXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZXM6IElTdGFnaW5nUmVzb3VyY2VzO1xufVxuXG4vKipcbiAqIEludGVybmFsIHByb3BlcnRpZXMgZm9yIEFwcFN0YWdpbmdTeW50aGVzaXplclxuICovXG5pbnRlcmZhY2UgQXBwU3RhZ2luZ1N5bnRoZXNpemVyUHJvcHMgZXh0ZW5kcyBBcHBTdGFnaW5nU3ludGhlc2l6ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgZmFjdG9yeSBtZXRob2QgdGhhdCBjcmVhdGVzIGFuIElTdGFnaW5nU3RhY2sgd2hlbiBnaXZlbiB0aGUgc3RhY2sgdGhlXG4gICAqIHN5bnRoZXNpemVyIGlzIGJpbmRpbmcuXG4gICAqL1xuICByZWFkb25seSBmYWN0b3J5OiBJU3RhZ2luZ1Jlc291cmNlc0ZhY3Rvcnk7XG59XG5cbi8qKlxuICogQXBwIFN0YWdpbmcgU3ludGhlc2l6ZXJcbiAqL1xuZXhwb3J0IGNsYXNzIEFwcFN0YWdpbmdTeW50aGVzaXplciBleHRlbmRzIFN0YWNrU3ludGhlc2l6ZXIgaW1wbGVtZW50cyBJUmV1c2FibGVTdGFja1N5bnRoZXNpemVyIHtcbiAgLyoqXG4gICAqIERlZmF1bHQgQVJOIHF1YWxpZmllclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1FVQUxJRklFUiA9ICdobmI2NTlmZHMnO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IENsb3VkRm9ybWF0aW9uIHJvbGUgQVJOLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0NMT1VERk9STUFUSU9OX1JPTEVfQVJOID0gJ2Fybjoke0FXUzo6UGFydGl0aW9ufTppYW06OiR7QVdTOjpBY2NvdW50SWR9OnJvbGUvY2RrLSR7UXVhbGlmaWVyfS1jZm4tZXhlYy1yb2xlLSR7QVdTOjpBY2NvdW50SWR9LSR7QVdTOjpSZWdpb259JztcblxuICAvKipcbiAgICogRGVmYXVsdCBkZXBsb3kgcm9sZSBBUk4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfREVQTE9ZX1JPTEVfQVJOID0gJ2Fybjoke0FXUzo6UGFydGl0aW9ufTppYW06OiR7QVdTOjpBY2NvdW50SWR9OnJvbGUvY2RrLSR7UXVhbGlmaWVyfS1kZXBsb3ktcm9sZS0ke0FXUzo6QWNjb3VudElkfS0ke0FXUzo6UmVnaW9ufSc7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgbG9va3VwIHJvbGUgQVJOIGZvciBtaXNzaW5nIHZhbHVlcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9MT09LVVBfUk9MRV9BUk4gPSAnYXJuOiR7QVdTOjpQYXJ0aXRpb259OmlhbTo6JHtBV1M6OkFjY291bnRJZH06cm9sZS9jZGstJHtRdWFsaWZpZXJ9LWxvb2t1cC1yb2xlLSR7QVdTOjpBY2NvdW50SWR9LSR7QVdTOjpSZWdpb259JztcblxuICAvKipcbiAgICogVXNlIHRoZSBEZWZhdWx0IFN0YWdpbmcgUmVzb3VyY2VzLCBjcmVhdGluZyBhIHNpbmdsZSBzdGFjayBwZXIgZW52aXJvbm1lbnQgdGhpcyBhcHAgaXMgZGVwbG95ZWQgaW5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdFJlc291cmNlcyhvcHRpb25zOiBEZWZhdWx0UmVzb3VyY2VzT3B0aW9ucykge1xuICAgIHZhbGlkYXRlTm9Ub2tlbnMob3B0aW9ucywgJ0FwcFN0YWdpbmdTeW50aGVzaXplcicpO1xuXG4gICAgcmV0dXJuIEFwcFN0YWdpbmdTeW50aGVzaXplci5jdXN0b21GYWN0b3J5KHtcbiAgICAgIGZhY3Rvcnk6IERlZmF1bHRTdGFnaW5nU3RhY2suZmFjdG9yeShvcHRpb25zKSxcbiAgICAgIGRlcGxveW1lbnRJZGVudGl0aWVzOiBvcHRpb25zLmRlcGxveW1lbnRJZGVudGl0aWVzLFxuICAgICAgYm9vdHN0cmFwUXVhbGlmaWVyOiBvcHRpb25zLmJvb3RzdHJhcFF1YWxpZmllcixcbiAgICAgIG9uY2VQZXJFbnY6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRoZXNlIGV4YWN0IHN0YWdpbmcgcmVzb3VyY2VzIGZvciBldmVyeSBzdGFjayB0aGF0IHRoaXMgc3ludGhlc2l6ZXIgaXMgdXNlZCBmb3JcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3VzdG9tUmVzb3VyY2VzKG9wdGlvbnM6IEN1c3RvbVJlc291cmNlc09wdGlvbnMpIHtcbiAgICByZXR1cm4gQXBwU3RhZ2luZ1N5bnRoZXNpemVyLmN1c3RvbUZhY3Rvcnkoe1xuICAgICAgZGVwbG95bWVudElkZW50aXRpZXM6IG9wdGlvbnMuZGVwbG95bWVudElkZW50aXRpZXMsXG4gICAgICBib290c3RyYXBRdWFsaWZpZXI6IG9wdGlvbnMuYm9vdHN0cmFwUXVhbGlmaWVyLFxuICAgICAgb25jZVBlckVudjogZmFsc2UsXG4gICAgICBmYWN0b3J5OiB7XG4gICAgICAgIG9idGFpblN0YWdpbmdSZXNvdXJjZXMoKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbnMucmVzb3VyY2VzO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdXBwbHkgeW91ciBvd24gc3RhZ2luZ1N0YWNrRmFjdG9yeSBtZXRob2QgZm9yIGNyZWF0aW5nIGFuIElTdGFnaW5nU3RhY2sgd2hlblxuICAgKiBhIHN0YWNrIGlzIGJvdW5kIHRvIHRoZSBzeW50aGVzaXplci5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgYG9uY2VQZXJFbnYgPSB0cnVlYCwgd2hpY2ggbWVhbnMgdGhhdCBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgSVN0YWdpbmdTdGFja1xuICAgKiB3aWxsIGJlIGNyZWF0ZWQgaW4gbmV3IGVudmlyb25tZW50cy4gU2V0IGBvbmNlUGVyRW52ID0gZmFsc2VgIHRvIHR1cm4gb2ZmIHRoYXQgYmVoYXZpb3IuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGN1c3RvbUZhY3Rvcnkob3B0aW9uczogQ3VzdG9tRmFjdG9yeU9wdGlvbnMpIHtcbiAgICBjb25zdCBvbmNlUGVyRW52ID0gb3B0aW9ucy5vbmNlUGVyRW52ID8/IHRydWU7XG4gICAgY29uc3QgZmFjdG9yeSA9IG9uY2VQZXJFbnYgPyBuZXcgUGVyRW52aXJvbm1lbnRTdGFnaW5nRmFjdG9yeShvcHRpb25zLmZhY3RvcnkpIDogb3B0aW9ucy5mYWN0b3J5O1xuXG4gICAgcmV0dXJuIG5ldyBBcHBTdGFnaW5nU3ludGhlc2l6ZXIoe1xuICAgICAgZmFjdG9yeSxcbiAgICAgIGJvb3RzdHJhcFF1YWxpZmllcjogb3B0aW9ucy5ib290c3RyYXBRdWFsaWZpZXIsXG4gICAgICBkZXBsb3ltZW50SWRlbnRpdGllczogb3B0aW9ucy5kZXBsb3ltZW50SWRlbnRpdGllcyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgcm9sZXM6IFJlcXVpcmVkPEJvb3RzdHJhcFJvbGVzPjtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IEFwcFN0YWdpbmdTeW50aGVzaXplclByb3BzKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMucm9sZXMgPSB7XG4gICAgICBkZXBsb3ltZW50Um9sZTogcHJvcHMuZGVwbG95bWVudElkZW50aXRpZXM/LnJvbGVzLmRlcGxveW1lbnRSb2xlID8/XG4gICAgICAgIEJvb3RzdHJhcFJvbGUuZnJvbVJvbGVBcm4oQXBwU3RhZ2luZ1N5bnRoZXNpemVyLkRFRkFVTFRfREVQTE9ZX1JPTEVfQVJOKSxcbiAgICAgIGNsb3VkRm9ybWF0aW9uRXhlY3V0aW9uUm9sZTogcHJvcHMuZGVwbG95bWVudElkZW50aXRpZXM/LnJvbGVzLmNsb3VkRm9ybWF0aW9uRXhlY3V0aW9uUm9sZSA/P1xuICAgICAgICBCb290c3RyYXBSb2xlLmZyb21Sb2xlQXJuKEFwcFN0YWdpbmdTeW50aGVzaXplci5ERUZBVUxUX0NMT1VERk9STUFUSU9OX1JPTEVfQVJOKSxcbiAgICAgIGxvb2t1cFJvbGU6IHRoaXMucHJvcHMuZGVwbG95bWVudElkZW50aXRpZXM/LnJvbGVzLmxvb2t1cFJvbGUgPz9cbiAgICAgICAgQm9vdHN0cmFwUm9sZS5mcm9tUm9sZUFybihBcHBTdGFnaW5nU3ludGhlc2l6ZXIuREVGQVVMVF9MT09LVVBfUk9MRV9BUk4pLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHZlcnNpb24gb2YgdGhlIHN5bnRoZXNpemVyIGJvdW5kIHRvIGEgc3RhY2suXG4gICAqL1xuICBwdWJsaWMgcmV1c2FibGVCaW5kKHN0YWNrOiBTdGFjayk6IElCb3VuZEFwcFN0YWdpbmdTeW50aGVzaXplciB7XG4gICAgdGhpcy5jaGVja0Vudmlyb25tZW50R25vc3RpY2lzbShzdGFjayk7XG4gICAgY29uc3QgcXVhbGlmaWVyID0gdGhpcy5wcm9wcy5ib290c3RyYXBRdWFsaWZpZXIgPz9cbiAgICAgIHN0YWNrLm5vZGUudHJ5R2V0Q29udGV4dChCT09UU1RSQVBfUVVBTElGSUVSX0NPTlRFWFQpID8/XG4gICAgICBBcHBTdGFnaW5nU3ludGhlc2l6ZXIuREVGQVVMVF9RVUFMSUZJRVI7XG4gICAgY29uc3Qgc3BlYyA9IG5ldyBTdHJpbmdTcGVjaWFsaXplcihzdGFjaywgcXVhbGlmaWVyKTtcblxuICAgIGNvbnN0IGRlcGxveVJvbGUgPSB0aGlzLnJvbGVzLmRlcGxveW1lbnRSb2xlLl9zcGVjaWFsaXplKHNwZWMpO1xuXG4gICAgY29uc3QgY29udGV4dDogT2J0YWluU3RhZ2luZ1Jlc291cmNlc0NvbnRleHQgPSB7XG4gICAgICBlbnZpcm9ubWVudFN0cmluZzogW1xuICAgICAgICBUb2tlbi5pc1VucmVzb2x2ZWQoc3RhY2suYWNjb3VudCkgPyAnQUNDT1VOVCcgOiBzdGFjay5hY2NvdW50LFxuICAgICAgICBUb2tlbi5pc1VucmVzb2x2ZWQoc3RhY2sucmVnaW9uKSA/ICdSRUdJT04nIDogc3RhY2sucmVnaW9uLFxuICAgICAgXS5qb2luKCctJyksXG4gICAgICBkZXBsb3lSb2xlQXJuOiBkZXBsb3lSb2xlLl9hcm5Gb3JDbG91ZEZvcm1hdGlvbigpLFxuICAgICAgcXVhbGlmaWVyLFxuICAgIH07XG5cbiAgICByZXR1cm4gbmV3IEJvdW5kQXBwU3RhZ2luZ1N5bnRoZXNpemVyKHN0YWNrLCB7XG4gICAgICBzdGFnaW5nUmVzb3VyY2VzOiB0aGlzLnByb3BzLmZhY3Rvcnkub2J0YWluU3RhZ2luZ1Jlc291cmNlcyhzdGFjaywgY29udGV4dCksXG4gICAgICBkZXBsb3lSb2xlLFxuICAgICAgY2xvdWRGb3JtYXRpb25FeGVjdXRpb25Sb2xlOiB0aGlzLnJvbGVzLmNsb3VkRm9ybWF0aW9uRXhlY3V0aW9uUm9sZS5fc3BlY2lhbGl6ZShzcGVjKSxcbiAgICAgIGxvb2t1cFJvbGU6IHRoaXMucm9sZXMubG9va3VwUm9sZS5fc3BlY2lhbGl6ZShzcGVjKSxcbiAgICAgIHF1YWxpZmllcixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBmb3IgbGVnYWN5IHB1cnBvc2VzOyB0aGlzIHdpbGwgbmV2ZXIgYmUgY2FsbGVkLlxuICAgKi9cbiAgcHVibGljIGJpbmQoX3N0YWNrOiBTdGFjaykge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhpcyBpcyBhIGxlZ2FjeSBBUEksIGNhbGwgcmV1c2FibGVCaW5kIGluc3RlYWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBmb3IgbGVnYWN5IHB1cnBvc2VzOyB0aGlzIHdpbGwgbmV2ZXIgYmUgY2FsbGVkLlxuICAgKi9cbiAgcHVibGljIHN5bnRoZXNpemUoX3Nlc3Npb246IElTeW50aGVzaXNTZXNzaW9uKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGlzIGEgbGVnYWN5IEFQSSwgY2FsbCByZXVzYWJsZUJpbmQgaW5zdGVhZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGZvciBsZWdhY3kgcHVycG9zZXM7IHRoaXMgd2lsbCBuZXZlciBiZSBjYWxsZWQuXG4gICAqL1xuICBwdWJsaWMgYWRkRmlsZUFzc2V0KF9hc3NldDogRmlsZUFzc2V0U291cmNlKTogRmlsZUFzc2V0TG9jYXRpb24ge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhpcyBpcyBhIGxlZ2FjeSBBUEksIGNhbGwgcmV1c2FibGVCaW5kIGluc3RlYWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBmb3IgbGVnYWN5IHB1cnBvc2VzOyB0aGlzIHdpbGwgbmV2ZXIgYmUgY2FsbGVkLlxuICAgKi9cbiAgcHVibGljIGFkZERvY2tlckltYWdlQXNzZXQoX2Fzc2V0OiBEb2NrZXJJbWFnZUFzc2V0U291cmNlKTogRG9ja2VySW1hZ2VBc3NldExvY2F0aW9uIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgaXMgYSBsZWdhY3kgQVBJLCBjYWxsIHJldXNhYmxlQmluZCBpbnN0ZWFkJyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhhdCB3ZSdyZSBvbmx5IGJlaW5nIHVzZWQgZm9yIGV4Y2x1c2l2ZWx5IGdub3N0aWMgb3IgYWdub3N0aWMgc3RhY2tzLlxuICAgKlxuICAgKiBXZSBjYW4gdGhpbmsgYWJvdXQgd2hldGhlciB0byBsb29zZW4gdGhpcyByZXF1aXJlbWVudCBsYXRlci5cbiAgICovXG4gIHByaXZhdGUgY2hlY2tFbnZpcm9ubWVudEdub3N0aWNpc20oc3RhY2s6IFN0YWNrKSB7XG4gICAgY29uc3QgaXNBZ25vc3RpYyA9IFRva2VuLmlzVW5yZXNvbHZlZChzdGFjay5hY2NvdW50KSB8fCBUb2tlbi5pc1VucmVzb2x2ZWQoc3RhY2sucmVnaW9uKTtcbiAgICBjb25zdCBhZ25vc3RpY1N0YWNrcyA9IEFHTk9TVElDX1NUQUNLUy5mb3Ioc3RhY2spO1xuICAgIGNvbnN0IGVudkF3YXJlU3RhY2tzID0gRU5WX0FXQVJFX1NUQUNLUy5mb3Ioc3RhY2spO1xuXG4gICAgKGlzQWdub3N0aWMgPyBhZ25vc3RpY1N0YWNrcyA6IGVudkF3YXJlU3RhY2tzKS5hZGQoc3RhY2spO1xuICAgIGlmIChhZ25vc3RpY1N0YWNrcy5zaXplID4gMCAmJiBlbnZBd2FyZVN0YWNrcy5zaXplID4gMCkge1xuXG4gICAgICBjb25zdCBkZXNjcmliZVN0YWNrcyA9ICh4czogU2V0PFN0YWNrPikgPT4gQXJyYXkuZnJvbSh4cykubWFwKHMgPT4gcy5ub2RlLnBhdGgpLmpvaW4oJywgJyk7XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihbXG4gICAgICAgICdJdCBpcyBub3Qgc2FmZSB0byB1c2UgQXBwU3RhZ2luZ1N5bnRoZXNpemVyIGZvciBib3RoIGVudmlyb25tZW50LWFnbm9zdGljIGFuZCBlbnZpcm9ubWVudC1hd2FyZSBzdGFja3MgYXQgdGhlIHNhbWUgdGltZS4nLFxuICAgICAgICAnUGxlYXNlIGVpdGhlciBzcGVjaWZ5IGVudmlyb25tZW50cyBmb3IgYWxsIHN0YWNrcyBvciBubyBzdGFja3MgaW4gdGhlIENESyBBcHAuJyxcbiAgICAgICAgYFN0YWNrcyB3aXRoIGVudmlyb25tZW50OiAke2Rlc2NyaWJlU3RhY2tzKGFnbm9zdGljU3RhY2tzKX0uYCxcbiAgICAgICAgYFN0YWNrcyB3aXRob3V0IGVudmlyb25tZW50OiAke2Rlc2NyaWJlU3RhY2tzKGVudkF3YXJlU3RhY2tzKX0uYCxcbiAgICAgIF0uam9pbignICcpKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBJbnRlcm5hbCBwcm9wZXJ0aWVzIGZvciBCb3VuZEFwcFN0YWdpbmdTeW50aGVzaXplclxuICovXG5pbnRlcmZhY2UgQm91bmRBcHBTdGFnaW5nU3ludGhlc2l6ZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgYm9vdHN0cmFwIHF1YWxpZmllclxuICAgKi9cbiAgcmVhZG9ubHkgcXVhbGlmaWVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZXMgd2UgZW5kIHVwIHVzaW5nIGZvciB0aGlzIHN5bnRoZXNpemVyXG4gICAqL1xuICByZWFkb25seSBzdGFnaW5nUmVzb3VyY2VzOiBJU3RhZ2luZ1Jlc291cmNlcztcblxuICAvKipcbiAgICogVGhlIGRlcGxveSByb2xlXG4gICAqL1xuICByZWFkb25seSBkZXBsb3lSb2xlOiBCb290c3RyYXBSb2xlO1xuXG4gIC8qKlxuICAgKiBDbG91ZEZvcm1hdGlvbiBFeGVjdXRpb24gUm9sZVxuICAgKi9cbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25FeGVjdXRpb25Sb2xlOiBCb290c3RyYXBSb2xlO1xuXG4gIC8qKlxuICAgKiBMb29rdXAgUm9sZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwUm9sZTogQm9vdHN0cmFwUm9sZTtcbn1cblxuY2xhc3MgQm91bmRBcHBTdGFnaW5nU3ludGhlc2l6ZXIgZXh0ZW5kcyBTdGFja1N5bnRoZXNpemVyIGltcGxlbWVudHMgSUJvdW5kQXBwU3RhZ2luZ1N5bnRoZXNpemVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBzdGFnaW5nU3RhY2s6IElTdGFnaW5nUmVzb3VyY2VzO1xuICBwcml2YXRlIHJlYWRvbmx5IGFzc2V0TWFuaWZlc3QgPSBuZXcgQXNzZXRNYW5pZmVzdEJ1aWxkZXIoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBxdWFsaWZpZXI6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBkZXBlbmRlbmN5U3RhY2tzOiBTZXQ8U3RhY2s+ID0gbmV3IFNldCgpO1xuXG4gIGNvbnN0cnVjdG9yKHN0YWNrOiBTdGFjaywgcHJpdmF0ZSByZWFkb25seSBwcm9wczogQm91bmRBcHBTdGFnaW5nU3ludGhlc2l6ZXJQcm9wcykge1xuICAgIHN1cGVyKCk7XG4gICAgc3VwZXIuYmluZChzdGFjayk7XG5cbiAgICB0aGlzLnF1YWxpZmllciA9IHByb3BzLnF1YWxpZmllcjtcbiAgICB0aGlzLnN0YWdpbmdTdGFjayA9IHByb3BzLnN0YWdpbmdSZXNvdXJjZXM7XG4gIH1cbiAgLyoqXG4gICAqIFRoZSBxdWFsaWZpZXIgdXNlZCB0byBib290c3RyYXAgdGhpcyBzdGFja1xuICAgKi9cbiAgcHVibGljIGdldCBib290c3RyYXBRdWFsaWZpZXIoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBOb3Qgc3VyZSB3aHkgd2UgbmVlZCB0aGlzLlxuICAgIHJldHVybiB0aGlzLnF1YWxpZmllcjtcbiAgfVxuXG4gIHB1YmxpYyBzeW50aGVzaXplKHNlc3Npb246IElTeW50aGVzaXNTZXNzaW9uKTogdm9pZCB7XG4gICAgY29uc3QgdGVtcGxhdGVBc3NldFNvdXJjZSA9IHRoaXMuc3ludGhlc2l6ZVRlbXBsYXRlKHNlc3Npb24sIHRoaXMucHJvcHMubG9va3VwUm9sZT8uX2FybkZvckNsb3VkQXNzZW1ibHkoKSk7XG4gICAgY29uc3QgdGVtcGxhdGVBc3NldCA9IHRoaXMuYWRkRmlsZUFzc2V0KHRlbXBsYXRlQXNzZXRTb3VyY2UpO1xuXG4gICAgY29uc3QgZGVwZW5kZW5jaWVzID0gQXJyYXkuZnJvbSh0aGlzLmRlcGVuZGVuY3lTdGFja3MpLmZsYXRNYXAoKGQpID0+IGQuYXJ0aWZhY3RJZCk7XG4gICAgY29uc3QgYXNzZXRNYW5pZmVzdElkID0gdGhpcy5hc3NldE1hbmlmZXN0LmVtaXRNYW5pZmVzdCh0aGlzLmJvdW5kU3RhY2ssIHNlc3Npb24sIHt9LCBkZXBlbmRlbmNpZXMpO1xuXG4gICAgY29uc3QgbG9va3VwUm9sZUFybiA9IHRoaXMucHJvcHMubG9va3VwUm9sZT8uX2FybkZvckNsb3VkQXNzZW1ibHkoKTtcblxuICAgIHRoaXMuZW1pdEFydGlmYWN0KHNlc3Npb24sIHtcbiAgICAgIGFzc3VtZVJvbGVBcm46IHRoaXMucHJvcHMuZGVwbG95Um9sZT8uX2FybkZvckNsb3VkQXNzZW1ibHkoKSxcbiAgICAgIGFkZGl0aW9uYWxEZXBlbmRlbmNpZXM6IFthc3NldE1hbmlmZXN0SWRdLFxuICAgICAgc3RhY2tUZW1wbGF0ZUFzc2V0T2JqZWN0VXJsOiB0ZW1wbGF0ZUFzc2V0LnMzT2JqZWN0VXJsV2l0aFBsYWNlaG9sZGVycyxcbiAgICAgIGNsb3VkRm9ybWF0aW9uRXhlY3V0aW9uUm9sZUFybjogdGhpcy5wcm9wcy5jbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGU/Ll9hcm5Gb3JDbG91ZEFzc2VtYmx5KCksXG4gICAgICBsb29rdXBSb2xlOiBsb29rdXBSb2xlQXJuID8geyBhcm46IGxvb2t1cFJvbGVBcm4gfSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBmaWxlIGFzc2V0IHRvIHRoZSBtYW5pZmVzdC5cbiAgICovXG4gIHB1YmxpYyBhZGRGaWxlQXNzZXQoYXNzZXQ6IEZpbGVBc3NldFNvdXJjZSk6IEZpbGVBc3NldExvY2F0aW9uIHtcbiAgICBjb25zdCB7IGJ1Y2tldE5hbWUsIGFzc3VtZVJvbGVBcm4sIHByZWZpeCwgZGVwZW5kZW5jeVN0YWNrIH0gPSB0aGlzLnN0YWdpbmdTdGFjay5hZGRGaWxlKGFzc2V0KTtcbiAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMuYXNzZXRNYW5pZmVzdC5kZWZhdWx0QWRkRmlsZUFzc2V0KHRoaXMuYm91bmRTdGFjaywgYXNzZXQsIHtcbiAgICAgIGJ1Y2tldE5hbWU6IHRyYW5zbGF0ZUNmblRva2VuVG9Bc3NldFRva2VuKGJ1Y2tldE5hbWUpLFxuICAgICAgYnVja2V0UHJlZml4OiBwcmVmaXgsXG4gICAgICByb2xlOiBhc3N1bWVSb2xlQXJuID8geyBhc3N1bWVSb2xlQXJuOiB0cmFuc2xhdGVDZm5Ub2tlblRvQXNzZXRUb2tlbihhc3N1bWVSb2xlQXJuKSB9IDogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgaWYgKGRlcGVuZGVuY3lTdGFjaykge1xuICAgICAgdGhpcy5ib3VuZFN0YWNrLmFkZERlcGVuZGVuY3koZGVwZW5kZW5jeVN0YWNrLCAnc3RhY2sgZGVwZW5kcyBvbiB0aGUgc3RhZ2luZyBzdGFjayBmb3Igc3RhZ2luZyByZXNvdXJjZXMnKTtcbiAgICAgIHRoaXMuZGVwZW5kZW5jeVN0YWNrcy5hZGQoZGVwZW5kZW5jeVN0YWNrKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jbG91ZEZvcm1hdGlvbkxvY2F0aW9uRnJvbUZpbGVBc3NldChsb2NhdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgZG9ja2VyIGltYWdlIGFzc2V0IHRvIHRoZSBtYW5pZmVzdC5cbiAgICovXG4gIHB1YmxpYyBhZGREb2NrZXJJbWFnZUFzc2V0KGFzc2V0OiBEb2NrZXJJbWFnZUFzc2V0U291cmNlKTogRG9ja2VySW1hZ2VBc3NldExvY2F0aW9uIHtcbiAgICBjb25zdCB7IHJlcG9OYW1lLCBhc3N1bWVSb2xlQXJuLCBkZXBlbmRlbmN5U3RhY2sgfSA9IHRoaXMuc3RhZ2luZ1N0YWNrLmFkZERvY2tlckltYWdlKGFzc2V0KTtcbiAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMuYXNzZXRNYW5pZmVzdC5kZWZhdWx0QWRkRG9ja2VySW1hZ2VBc3NldCh0aGlzLmJvdW5kU3RhY2ssIGFzc2V0LCB7XG4gICAgICByZXBvc2l0b3J5TmFtZTogdHJhbnNsYXRlQ2ZuVG9rZW5Ub0Fzc2V0VG9rZW4ocmVwb05hbWUpLFxuICAgICAgcm9sZTogYXNzdW1lUm9sZUFybiA/IHsgYXNzdW1lUm9sZUFybjogdHJhbnNsYXRlQ2ZuVG9rZW5Ub0Fzc2V0VG9rZW4oYXNzdW1lUm9sZUFybikgfSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIGlmIChkZXBlbmRlbmN5U3RhY2spIHtcbiAgICAgIHRoaXMuYm91bmRTdGFjay5hZGREZXBlbmRlbmN5KGRlcGVuZGVuY3lTdGFjaywgJ3N0YWNrIGRlcGVuZHMgb24gdGhlIHN0YWdpbmcgc3RhY2sgZm9yIHN0YWdpbmcgcmVzb3VyY2VzJyk7XG4gICAgICB0aGlzLmRlcGVuZGVuY3lTdGFja3MuYWRkKGRlcGVuZGVuY3lTdGFjayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY2xvdWRGb3JtYXRpb25Mb2NhdGlvbkZyb21Eb2NrZXJJbWFnZUFzc2V0KGxvY2F0aW9uKTtcbiAgfVxufVxuIl19
|
package/lib/bootstrap-roles.js
CHANGED
|
@@ -52,7 +52,7 @@ class BootstrapRole {
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
_a = JSII_RTTI_SYMBOL_1;
|
|
55
|
-
BootstrapRole[_a] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.BootstrapRole", version: "2.
|
|
55
|
+
BootstrapRole[_a] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.BootstrapRole", version: "2.85.0-alpha.0" };
|
|
56
56
|
BootstrapRole.CLI_CREDS = 'cli-credentials';
|
|
57
57
|
exports.BootstrapRole = BootstrapRole;
|
|
58
58
|
/**
|
|
@@ -93,6 +93,6 @@ class DeploymentIdentities {
|
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
_b = JSII_RTTI_SYMBOL_1;
|
|
96
|
-
DeploymentIdentities[_b] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.DeploymentIdentities", version: "2.
|
|
96
|
+
DeploymentIdentities[_b] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.DeploymentIdentities", version: "2.85.0-alpha.0" };
|
|
97
97
|
exports.DeploymentIdentities = DeploymentIdentities;
|
|
98
98
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLXJvbGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYm9vdHN0cmFwLXJvbGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDRFQUF3STtBQUV4STs7O0dBR0c7QUFDSCxNQUFhLGFBQWE7SUFDeEI7O09BRUc7SUFDSSxNQUFNLENBQUMsY0FBYztRQUMxQixPQUFPLElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNuRDtJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFXO1FBQ25DLG9DQUFpQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQzdELE9BQU8sSUFBSSxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDL0I7SUFJRCxZQUFxQyxPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtLQUFJO0lBRXhEOztPQUVHO0lBQ0ksZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxhQUFhLENBQUMsU0FBUyxDQUFDO0tBQ2pEO0lBRUQ7O09BRUc7SUFDSSxxQkFBcUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFBLGdEQUE2QixFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUMxRjtJQUVEOztPQUVHO0lBQ0ksb0JBQW9CO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBQSxnREFBNkIsRUFBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDMUY7SUFFRDs7T0FFRztJQUNJLFdBQVcsQ0FBQyxJQUF1QjtRQUN4QyxPQUFPLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDekQ7Ozs7QUE5QmMsdUJBQVMsR0FBRyxpQkFBaUIsQ0FBQztBQWhCbEMsc0NBQWE7QUFpRDFCOzs7R0FHRztBQUNILE1BQWEsb0JBQW9CO0lBQy9COztPQUVHO0lBQ0ksTUFBTSxDQUFDLGNBQWM7UUFDMUIsT0FBTyxJQUFJLG9CQUFvQixDQUFDO1lBQzlCLDJCQUEyQixFQUFFLGFBQWEsQ0FBQyxjQUFjLEVBQUU7WUFDM0QsY0FBYyxFQUFFLGFBQWEsQ0FBQyxjQUFjLEVBQUU7WUFDOUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxjQUFjLEVBQUU7U0FDM0MsQ0FBQyxDQUFDO0tBQ0o7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQXFCOzs7Ozs7Ozs7O1FBQzlDLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN4QztJQUVEO0lBQ0UsbURBQW1EO0lBQ25DLEtBQXFCO1FBQXJCLFVBQUssR0FBTCxLQUFLLENBQWdCO0tBQ25DOzs7O0FBdkJPLG9EQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0cmluZ1NwZWNpYWxpemVyLCB0cmFuc2xhdGVBc3NldFRva2VuVG9DZm5Ub2tlbiwgdHJhbnNsYXRlQ2ZuVG9rZW5Ub0Fzc2V0VG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcblxuLyoqXG4gKiBCb290c3RyYXBwZWQgcm9sZSBzcGVjaWZpZXIuIFRoZXNlIHJvbGVzIG11c3QgZXhpc3QgYWxyZWFkeS5cbiAqIFRoaXMgY2xhc3MgZG9lcyBub3QgY3JlYXRlIG5ldyBJQU0gUm9sZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBCb290c3RyYXBSb2xlIHtcbiAgLyoqXG4gICAqIFVzZSB0aGUgY3VycmVudGx5IGFzc3VtZWQgcm9sZS9jcmVkZW50aWFsc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjbGlDcmVkZW50aWFscygpIHtcbiAgICByZXR1cm4gbmV3IEJvb3RzdHJhcFJvbGUoQm9vdHN0cmFwUm9sZS5DTElfQ1JFRFMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgYW4gZXhpc3RpbmcgSUFNIFJvbGUgdG8gYXNzdW1lXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Sb2xlQXJuKGFybjogc3RyaW5nKSB7XG4gICAgU3RyaW5nU3BlY2lhbGl6ZXIudmFsaWRhdGVOb1Rva2Vucyhhcm4sICdCb290c3RyYXBSb2xlIEFSTicpO1xuICAgIHJldHVybiBuZXcgQm9vdHN0cmFwUm9sZShhcm4pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgQ0xJX0NSRURTID0gJ2NsaS1jcmVkZW50aWFscyc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJvbGVBcm46IHN0cmluZykge31cblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhpcyBpcyBvYmplY3Qgd2FzIGNyZWF0ZWQgdXNpbmcgQm9vdHN0cmFwUm9sZS5jbGlDcmVkZW50aWFscygpXG4gICAqL1xuICBwdWJsaWMgaXNDbGlDcmVkZW50aWFscygpIHtcbiAgICByZXR1cm4gdGhpcy5yb2xlQXJuID09PSBCb290c3RyYXBSb2xlLkNMSV9DUkVEUztcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfYXJuRm9yQ2xvdWRGb3JtYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNDbGlDcmVkZW50aWFscygpID8gdW5kZWZpbmVkIDogdHJhbnNsYXRlQXNzZXRUb2tlblRvQ2ZuVG9rZW4odGhpcy5yb2xlQXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfYXJuRm9yQ2xvdWRBc3NlbWJseSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc0NsaUNyZWRlbnRpYWxzKCkgPyB1bmRlZmluZWQgOiB0cmFuc2xhdGVDZm5Ub2tlblRvQXNzZXRUb2tlbih0aGlzLnJvbGVBcm4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF9zcGVjaWFsaXplKHNwZWM6IFN0cmluZ1NwZWNpYWxpemVyKSB7XG4gICAgcmV0dXJuIG5ldyBCb290c3RyYXBSb2xlKHNwZWMuc3BlY2lhbGl6ZSh0aGlzLnJvbGVBcm4pKTtcbiAgfVxufVxuXG4vKipcbiAqIERlcGxveW1lbnQgaWRlbnRpdGllcyBhcmUgdGhlIGNsYXNzIG9mIHJvbGVzIHRvIGJlIGFzc3VtZWQgYnkgdGhlIENES1xuICogd2hlbiBkZXBsb3lpbmcgdGhlIEFwcC5cbiAqL1xuZXhwb3J0IGNsYXNzIERlcGxveW1lbnRJZGVudGl0aWVzIHtcbiAgLyoqXG4gICAqIFVzZSBDTEkgY3JlZGVudGlhbHMgZm9yIGFsbCBkZXBsb3ltZW50IGlkZW50aXRpZXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNsaUNyZWRlbnRpYWxzKCk6IERlcGxveW1lbnRJZGVudGl0aWVzIHtcbiAgICByZXR1cm4gbmV3IERlcGxveW1lbnRJZGVudGl0aWVzKHtcbiAgICAgIGNsb3VkRm9ybWF0aW9uRXhlY3V0aW9uUm9sZTogQm9vdHN0cmFwUm9sZS5jbGlDcmVkZW50aWFscygpLFxuICAgICAgZGVwbG95bWVudFJvbGU6IEJvb3RzdHJhcFJvbGUuY2xpQ3JlZGVudGlhbHMoKSxcbiAgICAgIGxvb2t1cFJvbGU6IEJvb3RzdHJhcFJvbGUuY2xpQ3JlZGVudGlhbHMoKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHlvdXIgb3duIHJvbGVzIGZvciBhbGwgZGVwbG95bWVudCBpZGVudGl0aWVzLiBUaGVzZSByb2xlc1xuICAgKiBtdXN0IGFscmVhZHkgZXhpc3QuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNwZWNpZnlSb2xlcyhyb2xlczogQm9vdHN0cmFwUm9sZXMpOiBEZXBsb3ltZW50SWRlbnRpdGllcyB7XG4gICAgcmV0dXJuIG5ldyBEZXBsb3ltZW50SWRlbnRpdGllcyhyb2xlcyk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIC8qKiByb2xlcyB0aGF0IGFyZSBib290c3RyYXBwZWQgdG8geW91ciBhY2NvdW50LiAqL1xuICAgIHB1YmxpYyByZWFkb25seSByb2xlczogQm9vdHN0cmFwUm9sZXMsXG4gICkge31cbn1cblxuLyoqXG4gKiBSb2xlcyB0aGF0IGFyZSBib290c3RyYXBwZWQgdG8geW91ciBhY2NvdW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJvb3RzdHJhcFJvbGVzIHtcbiAgLyoqXG4gICAqIENsb3VkRm9ybWF0aW9uIEV4ZWN1dGlvbiBSb2xlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdXNlIGJvb3RzdHJhcHBlZCByb2xlXG4gICAqL1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGU/OiBCb290c3RyYXBSb2xlO1xuXG4gIC8qKlxuICAgKiBEZXBsb3ltZW50IEFjdGlvbiBSb2xlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdXNlIGJvb3N0cmFwcGVkIHJvbGVcbiAgICovXG4gIHJlYWRvbmx5IGRlcGxveW1lbnRSb2xlPzogQm9vdHN0cmFwUm9sZTtcblxuICAvKipcbiAgICogTG9va3VwIFJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2UgYm9vdHN0cmFwcGVkIHJvbGVcbiAgICovXG4gIHJlYWRvbmx5IGxvb2t1cFJvbGU/OiBCb290c3RyYXBSb2xlO1xufVxuXG4vKipcbiAqIFJvbGVzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZSBTdGFnaW5nIFN0YWNrXG4gKiAoZm9yIGFjY2VzcyB0byBTdGFnaW5nIFJlc291cmNlcylcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFnaW5nUm9sZXMge1xuICAvKipcbiAgICogRmlsZSBBc3NldCBQdWJsaXNoaW5nIFJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBzdGFnaW5nIHN0YWNrIGNyZWF0ZXMgYSBmaWxlIGFzc2V0IHB1Ymxpc2hpbmcgcm9sZVxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZUFzc2V0UHVibGlzaGluZ1JvbGU/OiBCb290c3RyYXBSb2xlO1xuXG4gIC8qKlxuICAgKiBEb2NrZXIgQXNzZXQgUHVibGlzaGluZyBSb2xlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gc3RhZ2luZyBzdGFjayBjcmVhdGVzIGEgZG9ja2VyIGFzc2V0IHB1Ymxpc2hpbmcgcm9sZVxuICAgKi9cbiAgcmVhZG9ubHkgZG9ja2VyQXNzZXRQdWJsaXNoaW5nUm9sZT86IEJvb3RzdHJhcFJvbGU7XG59XG4iXX0=
|
|
@@ -1,9 +1,21 @@
|
|
|
1
|
-
import { App, DockerImageAssetSource, Duration, FileAssetSource, ISynthesisSession, Stack, StackProps } from 'aws-cdk-lib';
|
|
2
1
|
import * as ecr from 'aws-cdk-lib/aws-ecr';
|
|
3
2
|
import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
3
|
+
import { App, DockerImageAssetSource, Duration, FileAssetSource, ISynthesisSession, Stack, StackProps } from 'aws-cdk-lib/core';
|
|
4
|
+
import { Construct } from 'constructs';
|
|
4
5
|
import { BootstrapRole } from './bootstrap-roles';
|
|
5
6
|
import { FileStagingLocation, IStagingResources, IStagingResourcesFactory, ImageStagingLocation } from './staging-stack';
|
|
6
7
|
export declare const DEPLOY_TIME_PREFIX = "deploy-time/";
|
|
8
|
+
/**
|
|
9
|
+
* This is a dummy construct meant to signify that a stack is utilizing
|
|
10
|
+
* the AppStagingSynthesizer. It does not do anything, and is not meant
|
|
11
|
+
* to be created on its own. This construct will be a part of the
|
|
12
|
+
* construct tree only and not the Cfn template. The construct tree is
|
|
13
|
+
* then encoded in the AWS::CDK::Metadata resource of the stack and
|
|
14
|
+
* injested in our metrics like every other construct.
|
|
15
|
+
*/
|
|
16
|
+
export declare class UsingAppStagingSynthesizer extends Construct {
|
|
17
|
+
constructor(scope: Construct, id: string);
|
|
18
|
+
}
|
|
7
19
|
/**
|
|
8
20
|
* User configurable options to the DefaultStagingStack.
|
|
9
21
|
*/
|
|
@@ -63,6 +75,13 @@ export interface DefaultStagingStackOptions {
|
|
|
63
75
|
* @default - up to 3 versions stored
|
|
64
76
|
*/
|
|
65
77
|
readonly imageAssetVersionCount?: number;
|
|
78
|
+
/**
|
|
79
|
+
* Auto deletes objects in the staging S3 bucket and images in the
|
|
80
|
+
* staging ECR repositories.
|
|
81
|
+
*
|
|
82
|
+
* @default true
|
|
83
|
+
*/
|
|
84
|
+
readonly autoDeleteStagingAssets?: boolean;
|
|
66
85
|
}
|
|
67
86
|
/**
|
|
68
87
|
* Default Staging Stack Properties
|
|
@@ -130,6 +149,7 @@ export declare class DefaultStagingStack extends Stack implements IStagingResour
|
|
|
130
149
|
private imageRole?;
|
|
131
150
|
private didImageRole;
|
|
132
151
|
private imageRoleManifestArn?;
|
|
152
|
+
private autoDeleteStagingAssets;
|
|
133
153
|
private readonly deployRoleArn?;
|
|
134
154
|
constructor(scope: App, id: string, props: DefaultStagingStackProps);
|
|
135
155
|
private validateAppId;
|
|
@@ -1,25 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _a;
|
|
2
|
+
var _a, _b;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.DefaultStagingStack = exports.DEPLOY_TIME_PREFIX = void 0;
|
|
4
|
+
exports.DefaultStagingStack = exports.UsingAppStagingSynthesizer = exports.DEPLOY_TIME_PREFIX = void 0;
|
|
5
5
|
const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
|
|
6
6
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
7
7
|
const fs = require("fs");
|
|
8
8
|
const path = require("path");
|
|
9
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
10
9
|
const ecr = require("aws-cdk-lib/aws-ecr");
|
|
11
10
|
const iam = require("aws-cdk-lib/aws-iam");
|
|
12
11
|
const kms = require("aws-cdk-lib/aws-kms");
|
|
13
12
|
const s3 = require("aws-cdk-lib/aws-s3");
|
|
13
|
+
const core_1 = require("aws-cdk-lib/core");
|
|
14
14
|
const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
|
|
15
|
+
const cxapi = require("aws-cdk-lib/cx-api");
|
|
16
|
+
const constructs_1 = require("constructs");
|
|
15
17
|
exports.DEPLOY_TIME_PREFIX = 'deploy-time/';
|
|
18
|
+
/**
|
|
19
|
+
* This is a dummy construct meant to signify that a stack is utilizing
|
|
20
|
+
* the AppStagingSynthesizer. It does not do anything, and is not meant
|
|
21
|
+
* to be created on its own. This construct will be a part of the
|
|
22
|
+
* construct tree only and not the Cfn template. The construct tree is
|
|
23
|
+
* then encoded in the AWS::CDK::Metadata resource of the stack and
|
|
24
|
+
* injested in our metrics like every other construct.
|
|
25
|
+
*/
|
|
26
|
+
class UsingAppStagingSynthesizer extends constructs_1.Construct {
|
|
27
|
+
constructor(scope, id) {
|
|
28
|
+
super(scope, id);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
32
|
+
UsingAppStagingSynthesizer[_a] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.UsingAppStagingSynthesizer", version: "2.85.0-alpha.0" };
|
|
33
|
+
exports.UsingAppStagingSynthesizer = UsingAppStagingSynthesizer;
|
|
16
34
|
/**
|
|
17
35
|
* A default Staging Stack that implements IStagingResources.
|
|
18
36
|
*
|
|
19
37
|
* @example
|
|
20
38
|
* const defaultStagingStack = DefaultStagingStack.factory({ appId: 'my-app-id' });
|
|
21
39
|
*/
|
|
22
|
-
class DefaultStagingStack extends
|
|
40
|
+
class DefaultStagingStack extends core_1.Stack {
|
|
23
41
|
/**
|
|
24
42
|
* Return a factory that will create DefaultStagingStacks
|
|
25
43
|
*/
|
|
@@ -36,10 +54,15 @@ class DefaultStagingStack extends aws_cdk_lib_1.Stack {
|
|
|
36
54
|
const appId = options.appId.toLocaleLowerCase().replace(/[^a-z0-9-]/g, '-').slice(0, 20);
|
|
37
55
|
return {
|
|
38
56
|
obtainStagingResources(stack, context) {
|
|
39
|
-
const app =
|
|
40
|
-
if (!
|
|
57
|
+
const app = core_1.App.of(stack);
|
|
58
|
+
if (!core_1.App.isApp(app)) {
|
|
41
59
|
throw new Error(`Stack ${stack.stackName} must be part of an App`);
|
|
42
60
|
}
|
|
61
|
+
// Because we do not keep metrics in the DefaultStagingStack, we will inject
|
|
62
|
+
// a dummy construct into the stack using the DefaultStagingStack instead.
|
|
63
|
+
if (cxapi.ANALYTICS_REPORTING_ENABLED_CONTEXT) {
|
|
64
|
+
new UsingAppStagingSynthesizer(stack, `UsingAppStagingSynthesizer/${stack.stackName}`);
|
|
65
|
+
}
|
|
43
66
|
const stackId = `StagingStack-${appId}-${context.environmentString}`;
|
|
44
67
|
return new DefaultStagingStack(app, stackId, {
|
|
45
68
|
...options,
|
|
@@ -60,24 +83,19 @@ class DefaultStagingStack extends aws_cdk_lib_1.Stack {
|
|
|
60
83
|
* Default asset publishing role name for file (S3) assets.
|
|
61
84
|
*/
|
|
62
85
|
get fileRoleName() {
|
|
63
|
-
// This role name can be a maximum of 64 letters. The reason why
|
|
64
|
-
// we slice the appId and not the entire name is because this.region
|
|
65
|
-
// can be a token and we don't want to accidentally cut it off.
|
|
66
86
|
return `cdk-${this.appId}-file-role-${this.region}`;
|
|
67
87
|
}
|
|
68
88
|
/**
|
|
69
89
|
* Default asset publishing role name for docker (ECR) assets.
|
|
70
90
|
*/
|
|
71
91
|
get imageRoleName() {
|
|
72
|
-
// This role name can be a maximum of 64 letters. The reason why
|
|
73
|
-
// we slice the appId and not the entire name is because this.region
|
|
74
|
-
// can be a token and we don't want to accidentally cut it off.
|
|
75
92
|
return `cdk-${this.appId}-image-role-${this.region}`;
|
|
76
93
|
}
|
|
77
94
|
constructor(scope, id, props) {
|
|
78
95
|
super(scope, id, {
|
|
79
96
|
...props,
|
|
80
|
-
synthesizer: new
|
|
97
|
+
synthesizer: new core_1.BootstraplessSynthesizer(),
|
|
98
|
+
analyticsReporting: false, // removing AWS::CDK::Metadata construct saves ~3KB
|
|
81
99
|
});
|
|
82
100
|
this.props = props;
|
|
83
101
|
this.didImageRole = false;
|
|
@@ -90,6 +108,13 @@ class DefaultStagingStack extends aws_cdk_lib_1.Stack {
|
|
|
90
108
|
}
|
|
91
109
|
throw error;
|
|
92
110
|
}
|
|
111
|
+
// removing path metadata saves ~2KB
|
|
112
|
+
this.node.setContext(cxapi.PATH_METADATA_ENABLE_CONTEXT, false);
|
|
113
|
+
// For all resources under the default staging stack, we want to inline custom
|
|
114
|
+
// resources because the staging bucket necessary for custom resource assets
|
|
115
|
+
// does not exist yet.
|
|
116
|
+
this.node.setContext(core_1.INLINE_CUSTOM_RESOURCE_CONTEXT, true);
|
|
117
|
+
this.autoDeleteStagingAssets = props.autoDeleteStagingAssets ?? true;
|
|
93
118
|
this.appId = this.validateAppId(props.appId);
|
|
94
119
|
this.dependencyStack = this;
|
|
95
120
|
this.deployRoleArn = props.deployRoleArn;
|
|
@@ -131,13 +156,13 @@ class DefaultStagingStack extends aws_cdk_lib_1.Stack {
|
|
|
131
156
|
roleName,
|
|
132
157
|
assumedBy: new iam.AccountPrincipal(this.account),
|
|
133
158
|
});
|
|
134
|
-
this.fileRoleManifestArn =
|
|
159
|
+
this.fileRoleManifestArn = core_1.Stack.of(this).formatArn({
|
|
135
160
|
partition: '${AWS::Partition}',
|
|
136
161
|
region: '',
|
|
137
162
|
service: 'iam',
|
|
138
163
|
resource: 'role',
|
|
139
164
|
resourceName: roleName,
|
|
140
|
-
arnFormat:
|
|
165
|
+
arnFormat: core_1.ArnFormat.SLASH_RESOURCE_NAME,
|
|
141
166
|
});
|
|
142
167
|
}
|
|
143
168
|
ensureImageRole() {
|
|
@@ -158,13 +183,13 @@ class DefaultStagingStack extends aws_cdk_lib_1.Stack {
|
|
|
158
183
|
roleName,
|
|
159
184
|
assumedBy: new iam.AccountPrincipal(this.account),
|
|
160
185
|
});
|
|
161
|
-
this.imageRoleManifestArn =
|
|
186
|
+
this.imageRoleManifestArn = core_1.Stack.of(this).formatArn({
|
|
162
187
|
partition: '${AWS::Partition}',
|
|
163
188
|
region: '',
|
|
164
189
|
service: 'iam',
|
|
165
190
|
resource: 'role',
|
|
166
191
|
resourceName: roleName,
|
|
167
|
-
arnFormat:
|
|
192
|
+
arnFormat: core_1.ArnFormat.SLASH_RESOURCE_NAME,
|
|
168
193
|
});
|
|
169
194
|
}
|
|
170
195
|
createBucketKey() {
|
|
@@ -185,7 +210,12 @@ class DefaultStagingStack extends aws_cdk_lib_1.Stack {
|
|
|
185
210
|
// Create the bucket once the dependencies have been created
|
|
186
211
|
const bucket = new s3.Bucket(this, bucketId, {
|
|
187
212
|
bucketName: stagingBucketName,
|
|
188
|
-
|
|
213
|
+
...(this.autoDeleteStagingAssets ? {
|
|
214
|
+
removalPolicy: core_1.RemovalPolicy.DESTROY,
|
|
215
|
+
autoDeleteObjects: true,
|
|
216
|
+
} : {
|
|
217
|
+
removalPolicy: core_1.RemovalPolicy.RETAIN,
|
|
218
|
+
}),
|
|
189
219
|
encryption: s3.BucketEncryption.KMS,
|
|
190
220
|
encryptionKey: key,
|
|
191
221
|
// Many AWS account safety checkers will complain when buckets aren't versioned
|
|
@@ -210,11 +240,11 @@ class DefaultStagingStack extends aws_cdk_lib_1.Stack {
|
|
|
210
240
|
// Objects should never be overwritten, but let's make sure we have a lifecycle policy
|
|
211
241
|
// for it anyway.
|
|
212
242
|
bucket.addLifecycleRule({
|
|
213
|
-
noncurrentVersionExpiration:
|
|
243
|
+
noncurrentVersionExpiration: core_1.Duration.days(365),
|
|
214
244
|
});
|
|
215
245
|
bucket.addLifecycleRule({
|
|
216
246
|
prefix: exports.DEPLOY_TIME_PREFIX,
|
|
217
|
-
expiration: this.props.deployTimeFileAssetLifetime ??
|
|
247
|
+
expiration: this.props.deployTimeFileAssetLifetime ?? core_1.Duration.days(30),
|
|
218
248
|
});
|
|
219
249
|
return stagingBucketName;
|
|
220
250
|
}
|
|
@@ -235,6 +265,12 @@ class DefaultStagingStack extends aws_cdk_lib_1.Stack {
|
|
|
235
265
|
description: 'Garbage collect old image versions and keep the specified number of latest versions',
|
|
236
266
|
maxImageCount: this.props.imageAssetVersionCount ?? 3,
|
|
237
267
|
}],
|
|
268
|
+
...(this.autoDeleteStagingAssets ? {
|
|
269
|
+
removalPolicy: core_1.RemovalPolicy.DESTROY,
|
|
270
|
+
autoDeleteImages: true,
|
|
271
|
+
} : {
|
|
272
|
+
removalPolicy: core_1.RemovalPolicy.RETAIN,
|
|
273
|
+
}),
|
|
238
274
|
});
|
|
239
275
|
if (this.imageRole) {
|
|
240
276
|
this.stagingRepos[asset.assetName].grantPullPush(this.imageRole);
|
|
@@ -279,7 +315,7 @@ class DefaultStagingStack extends aws_cdk_lib_1.Stack {
|
|
|
279
315
|
}
|
|
280
316
|
}
|
|
281
317
|
}
|
|
282
|
-
|
|
283
|
-
DefaultStagingStack[
|
|
318
|
+
_b = JSII_RTTI_SYMBOL_1;
|
|
319
|
+
DefaultStagingStack[_b] = { fqn: "@aws-cdk/app-staging-synthesizer-alpha.DefaultStagingStack", version: "2.85.0-alpha.0" };
|
|
284
320
|
exports.DefaultStagingStack = DefaultStagingStack;
|
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1zdGFnaW5nLXN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGVmYXVsdC1zdGFnaW5nLXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsNkNBV3FCO0FBQ3JCLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0MsMkNBQTJDO0FBQzNDLHlDQUF5QztBQUN6Qyw0RUFBMEU7QUFJN0QsUUFBQSxrQkFBa0IsR0FBRyxjQUFjLENBQUM7QUF5RmpEOzs7OztHQUtHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSxtQkFBSztJQUM1Qzs7T0FFRztJQUNJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBbUM7Ozs7Ozs7Ozs7UUFDdkQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6RixPQUFPO1lBQ0wsc0JBQXNCLENBQUMsS0FBSyxFQUFFLE9BQU87Z0JBQ25DLE1BQU0sR0FBRyxHQUFHLGlCQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMxQixJQUFJLENBQUMsaUJBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLENBQUMsU0FBUyx5QkFBeUIsQ0FBQyxDQUFDO2lCQUNwRTtnQkFFRCxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsS0FBSyxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUNyRSxPQUFPLElBQUksbUJBQW1CLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRTtvQkFDM0MsR0FBRyxPQUFPO29CQUVWLDJGQUEyRjtvQkFDM0YsU0FBUyxFQUFFLGdCQUFnQixLQUFLLEVBQUU7b0JBQ2xD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LEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM3RCxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN2QyxJQUFJLElBQUksR0FBRyxLQUFLLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5RUFBeUUsSUFBSSxRQUFRLENBQUMsQ0FBQztTQUN4RztLQUNGOzs7O0FBclRVLGtEQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuICBBcHAsXG4gIEFybkZvcm1hdCxcbiAgQm9vdHN0cmFwbGVzc1N5bnRoZXNpemVyLFxuICBEb2NrZXJJbWFnZUFzc2V0U291cmNlLFxuICBEdXJhdGlvbixcbiAgRmlsZUFzc2V0U291cmNlLFxuICBJU3ludGhlc2lzU2Vzc2lvbixcbiAgUmVtb3ZhbFBvbGljeSxcbiAgU3RhY2ssXG4gIFN0YWNrUHJvcHMsXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGVjciBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBTdHJpbmdTcGVjaWFsaXplciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgQm9vdHN0cmFwUm9sZSB9IGZyb20gJy4vYm9vdHN0cmFwLXJvbGVzJztcbmltcG9ydCB7IEZpbGVTdGFnaW5nTG9jYXRpb24sIElTdGFnaW5nUmVzb3VyY2VzLCBJU3RhZ2luZ1Jlc291cmNlc0ZhY3RvcnksIEltYWdlU3RhZ2luZ0xvY2F0aW9uIH0gZnJvbSAnLi9zdGFnaW5nLXN0YWNrJztcblxuZXhwb3J0IGNvbnN0IERFUExPWV9USU1FX1BSRUZJWCA9ICdkZXBsb3ktdGltZS8nO1xuXG4vKipcbiAqIFVzZXIgY29uZmlndXJhYmxlIG9wdGlvbnMgdG8gdGhlIERlZmF1bHRTdGFnaW5nU3RhY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdFN0YWdpbmdTdGFja09wdGlvbnMge1xuICAvKipcbiAgICogQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGFwcGxpY2F0aW9uIHRoYXQgdGhlIHN0YWdpbmcgc3RhY2sgYmVsb25ncyB0by5cbiAgICpcbiAgICogVGhpcyBpZGVudGlmaWVyIHdpbGwgYmUgdXNlZCBpbiB0aGUgbmFtZSBvZiBzdGFnaW5nIHJlc291cmNlc1xuICAgKiBjcmVhdGVkIGZvciB0aGlzIGFwcGxpY2F0aW9uLCBhbmQgc2hvdWxkIGJlIHVuaXF1ZSBhY3Jvc3MgQ0RLIGFwcHMuXG4gICAqXG4gICAqIFRoZSBpZGVudGlmaWVyIHNob3VsZCBpbmNsdWRlIGxvd2VyY2FzZSBjaGFyYWN0ZXJzIGFuZCBkYXNoZXMgKCctJykgb25seVxuICAgKiBhbmQgaGF2ZSBhIG1heGltdW0gb2YgMjAgY2hhcmFjdGVycy5cbiAgICovXG4gIHJlYWRvbmx5IGFwcElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4cGxpY2l0IG5hbWUgZm9yIHRoZSBzdGFnaW5nIGJ1Y2tldFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgd2VsbC1rbm93biBuYW1lIHVuaXF1ZSB0byB0aGlzIGFwcC9lbnYuXG4gICAqL1xuICByZWFkb25seSBzdGFnaW5nQnVja2V0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogUGFzcyBpbiBhbiBleGlzdGluZyByb2xlIHRvIGJlIHVzZWQgYXMgdGhlIGZpbGUgcHVibGlzaGluZyByb2xlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmV3IHJvbGUgd2lsbCBiZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBmaWxlQXNzZXRQdWJsaXNoaW5nUm9sZT86IEJvb3RzdHJhcFJvbGU7XG5cbiAgLyoqXG4gICAqIFBhc3MgaW4gYW4gZXhpc3Rpbmcgcm9sZSB0byBiZSB1c2VkIGFzIHRoZSBpbWFnZSBwdWJsaXNoaW5nIHJvbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBuZXcgcm9sZSB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlQXNzZXRQdWJsaXNoaW5nUm9sZT86IEJvb3RzdHJhcFJvbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBsaWZldGltZSBmb3IgZGVwbG95IHRpbWUgZmlsZSBhc3NldHMuXG4gICAqXG4gICAqIEFzc2V0cyB0aGF0IGFyZSBvbmx5IG5lY2Vzc2FyeSBhdCBkZXBsb3ltZW50IHRpbWUgKGZvciBpbnN0YW5jZSxcbiAgICogQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGVzIGFuZCBMYW1iZGEgc291cmNlIGNvZGUgYnVuZGxlcykgd2lsbCBiZVxuICAgKiBhdXRvbWF0aWNhbGx5IGRlbGV0ZWQgYWZ0ZXIgdGhpcyBtYW55IGRheXMuIEFzc2V0cyB0aGF0IG1heSBiZVxuICAgKiByZWFkIGZyb20gdGhlIHN0YWdpbmcgYnVja2V0IGR1cmluZyB5b3VyIGFwcGxpY2F0aW9uJ3MgcnVuIHRpbWVcbiAgICogd2lsbCBub3QgYmUgZGVsZXRlZC5cbiAgICpcbiAgICogU2V0IHRoaXMgdG8gdGhlIGxlbmd0aCBvZiB0aW1lIHlvdSB3aXNoIHRvIGJlIGFibGUgdG8gcm9sbCBiYWNrIHRvXG4gICAqIHByZXZpb3VzIHZlcnNpb25zIG9mIHlvdXIgYXBwbGljYXRpb24gd2l0aG91dCBoYXZpbmcgdG8gZG8gYSBuZXdcbiAgICogYGNkayBzeW50aGAgYW5kIHJlLXVwbG9hZCBvZiBhc3NldHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRHVyYXRpb24uZGF5cygzMClcbiAgICovXG4gIHJlYWRvbmx5IGRlcGxveVRpbWVGaWxlQXNzZXRMaWZldGltZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW1hZ2UgdmVyc2lvbnMgdG8gc3RvcmUgaW4gYSByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBQcmV2aW91cyB2ZXJzaW9ucyBvZiBhbiBpbWFnZSBjYW4gYmUgc3RvcmVkIGZvciByb2xsYmFjayBwdXJwb3Nlcy5cbiAgICogT25jZSBhIHJlcG9zaXRvcnkgaGFzIG1vcmUgdGhhbiAzIGltYWdlIHZlcnNpb25zIHN0b3JlZCwgdGhlIG9sZGVzdFxuICAgKiB2ZXJzaW9uIHdpbGwgYmUgZGlzY2FyZGVkLiBUaGlzIGFsbG93cyBmb3Igc2Vuc2libGUgZ2FyYmFnZSBjb2xsZWN0aW9uXG4gICAqIHdoaWxlIG1haW50YWluaW5nIGEgZmV3IHByZXZpb3VzIHZlcnNpb25zIGZvciByb2xsYmFjayBzY2VuYXJpb3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdXAgdG8gMyB2ZXJzaW9ucyBzdG9yZWRcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlQXNzZXRWZXJzaW9uQ291bnQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogRGVmYXVsdCBTdGFnaW5nIFN0YWNrIFByb3BlcnRpZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZhdWx0U3RhZ2luZ1N0YWNrUHJvcHMgZXh0ZW5kcyBEZWZhdWx0U3RhZ2luZ1N0YWNrT3B0aW9ucywgU3RhY2tQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBkZXBsb3kgYWN0aW9uIHJvbGUsIGlmIGdpdmVuXG4gICAqXG4gICAqIFRoaXMgcm9sZSB3aWxsIG5lZWQgcGVybWlzc2lvbnMgdG8gcmVhZCBmcm9tIHRvIHRoZSBzdGFnaW5nIHJlc291cmNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBUaGUgQ0xJIGNyZWRlbnRpYWxzIGFyZSBhc3N1bWVkLCBubyBhZGRpdGlvbmFsIHBlcm1pc3Npb25zIGFyZSBncmFudGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95Um9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHF1YWxpZmllciB1c2VkIHRvIHNwZWNpYWxpemUgc3RyaW5nc1xuICAgKlxuICAgKiBTaG91bGRuJ3QgYmUgbmVjZXNzYXJ5IGJ1dCB3aG8ga25vd3Mgd2hhdCBwZW9wbGUgbWlnaHQgZG8uXG4gICAqL1xuICByZWFkb25seSBxdWFsaWZpZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIGRlZmF1bHQgU3RhZ2luZyBTdGFjayB0aGF0IGltcGxlbWVudHMgSVN0YWdpbmdSZXNvdXJjZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGRlZmF1bHRTdGFnaW5nU3RhY2sgPSBEZWZhdWx0U3RhZ2luZ1N0YWNrLmZhY3RvcnkoeyBhcHBJZDogJ215LWFwcC1pZCcgfSk7XG4gKi9cbmV4cG9ydCBjbGFzcyBEZWZhdWx0U3RhZ2luZ1N0YWNrIGV4dGVuZHMgU3RhY2sgaW1wbGVtZW50cyBJU3RhZ2luZ1Jlc291cmNlcyB7XG4gIC8qKlxuICAgKiBSZXR1cm4gYSBmYWN0b3J5IHRoYXQgd2lsbCBjcmVhdGUgRGVmYXVsdFN0YWdpbmdTdGFja3NcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZmFjdG9yeShvcHRpb25zOiBEZWZhdWx0U3RhZ2luZ1N0YWNrT3B0aW9ucyk6IElTdGFnaW5nUmVzb3VyY2VzRmFjdG9yeSB7XG4gICAgY29uc3QgYXBwSWQgPSBvcHRpb25zLmFwcElkLnRvTG9jYWxlTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLXowLTktXS9nLCAnLScpLnNsaWNlKDAsIDIwKTtcbiAgICByZXR1cm4ge1xuICAgICAgb2J0YWluU3RhZ2luZ1Jlc291cmNlcyhzdGFjaywgY29udGV4dCkge1xuICAgICAgICBjb25zdCBhcHAgPSBBcHAub2Yoc3RhY2spO1xuICAgICAgICBpZiAoIUFwcC5pc0FwcChhcHApKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdGFjayAke3N0YWNrLnN0YWNrTmFtZX0gbXVzdCBiZSBwYXJ0IG9mIGFuIEFwcGApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3RhY2tJZCA9IGBTdGFnaW5nU3RhY2stJHthcHBJZH0tJHtjb250ZXh0LmVudmlyb25tZW50U3RyaW5nfWA7XG4gICAgICAgIHJldHVybiBuZXcgRGVmYXVsdFN0YWdpbmdTdGFjayhhcHAsIHN0YWNrSWQsIHtcbiAgICAgICAgICAuLi5vcHRpb25zLFxuXG4gICAgICAgICAgLy8gRG9lcyBub3QgbmVlZCB0byBjb250YWluIGVudmlyb25tZW50IGJlY2F1c2Ugc3RhY2sgbmFtZXMgYXJlIHVuaXF1ZSBpbnNpZGUgYW4gZW52IGFueXdheVxuICAgICAgICAgIHN0YWNrTmFtZTogYFN0YWdpbmdTdGFjay0ke2FwcElkfWAsXG4gICAgICAgICAgZW52OiB7XG4gICAgICAgICAgICBhY2NvdW50OiBzdGFjay5hY2NvdW50LFxuICAgICAgICAgICAgcmVnaW9uOiBzdGFjay5yZWdpb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhcHBJZCxcbiAgICAgICAgICBxdWFsaWZpZXI6IGNvbnRleHQucXVhbGlmaWVyLFxuICAgICAgICAgIGRlcGxveVJvbGVBcm46IGNvbnRleHQuZGVwbG95Um9sZUFybixcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVmYXVsdCBhc3NldCBwdWJsaXNoaW5nIHJvbGUgbmFtZSBmb3IgZmlsZSAoUzMpIGFzc2V0cy5cbiAgICovXG4gIHByaXZhdGUgZ2V0IGZpbGVSb2xlTmFtZSgpIHtcbiAgICAvLyBUaGlzIHJvbGUgbmFtZSBjYW4gYmUgYSBtYXhpbXVtIG9mIDY0IGxldHRlcnMuIFRoZSByZWFzb24gd2h5XG4gICAgLy8gd2Ugc2xpY2UgdGhlIGFwcElkIGFuZCBub3QgdGhlIGVudGlyZSBuYW1lIGlzIGJlY2F1c2UgdGhpcy5yZWdpb25cbiAgICAvLyBjYW4gYmUgYSB0b2tlbiBhbmQgd2UgZG9uJ3Qgd2FudCB0byBhY2NpZGVudGFsbHkgY3V0IGl0IG9mZi5cbiAgICByZXR1cm4gYGNkay0ke3RoaXMuYXBwSWR9LWZpbGUtcm9sZS0ke3RoaXMucmVnaW9ufWA7XG4gIH1cblxuICAvKipcbiAgICogRGVmYXVsdCBhc3NldCBwdWJsaXNoaW5nIHJvbGUgbmFtZSBmb3IgZG9ja2VyIChFQ1IpIGFzc2V0cy5cbiAgICovXG4gIHByaXZhdGUgZ2V0IGltYWdlUm9sZU5hbWUoKSB7XG4gICAgLy8gVGhpcyByb2xlIG5hbWUgY2FuIGJlIGEgbWF4aW11bSBvZiA2NCBsZXR0ZXJzLiBUaGUgcmVhc29uIHdoeVxuICAgIC8vIHdlIHNsaWNlIHRoZSBhcHBJZCBhbmQgbm90IHRoZSBlbnRpcmUgbmFtZSBpcyBiZWNhdXNlIHRoaXMucmVnaW9uXG4gICAgLy8gY2FuIGJlIGEgdG9rZW4gYW5kIHdlIGRvbid0IHdhbnQgdG8gYWNjaWRlbnRhbGx5IGN1dCBpdCBvZmYuXG4gICAgcmV0dXJuIGBjZGstJHt0aGlzLmFwcElkfS1pbWFnZS1yb2xlLSR7dGhpcy5yZWdpb259YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYXBwLXNjb3BlZCwgZXZpcm9ubWVudC1rZXllZCBzdGFnaW5nIGJ1Y2tldC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdGFnaW5nQnVja2V0PzogczMuQnVja2V0O1xuXG4gIC8qKlxuICAgKiBUaGUgYXBwLXNjb3BlZCwgZW52aXJvbm1lbnQta2V5ZWQgZWNyIHJlcG9zaXRvcmllcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBhcHAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhZ2luZ1JlcG9zOiBSZWNvcmQ8c3RyaW5nLCBlY3IuUmVwb3NpdG9yeT47XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFjayB0byBhZGQgZGVwZW5kZW5jaWVzIHRvLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlcGVuZGVuY3lTdGFjazogU3RhY2s7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBhcHBJZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0YWdpbmdCdWNrZXROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGaWxlIHB1Ymxpc2ggcm9sZSBBUk4gaW4gYXNzZXQgbWFuaWZlc3QgZm9ybWF0XG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3ZpZGVkRmlsZVJvbGU/OiBCb290c3RyYXBSb2xlO1xuICBwcml2YXRlIGZpbGVSb2xlPzogaWFtLklSb2xlO1xuICBwcml2YXRlIGZpbGVSb2xlTWFuaWZlc3RBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEltYWdlIHB1Ymxpc2hpbmcgcm9sZSBBUk4gaW4gYXNzZXQgbWFuaWZlc3QgZm9ybWF0XG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3ZpZGVkSW1hZ2VSb2xlPzogQm9vdHN0cmFwUm9sZTtcbiAgcHJpdmF0ZSBpbWFnZVJvbGU/OiBpYW0uSVJvbGU7XG4gIHByaXZhdGUgZGlkSW1hZ2VSb2xlID0gZmFsc2U7XG4gIHByaXZhdGUgaW1hZ2VSb2xlTWFuaWZlc3RBcm4/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZXBsb3lSb2xlQXJuPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBBcHAsIGlkOiBzdHJpbmcsIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IERlZmF1bHRTdGFnaW5nU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBzeW50aGVzaXplcjogbmV3IEJvb3RzdHJhcGxlc3NTeW50aGVzaXplcigpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hcHBJZCA9IHRoaXMudmFsaWRhdGVBcHBJZChwcm9wcy5hcHBJZCk7XG4gICAgdGhpcy5kZXBlbmRlbmN5U3RhY2sgPSB0aGlzO1xuXG4gICAgdGhpcy5kZXBsb3lSb2xlQXJuID0gcHJvcHMuZGVwbG95Um9sZUFybjtcbiAgICB0aGlzLnN0YWdpbmdCdWNrZXROYW1lID0gcHJvcHMuc3RhZ2luZ0J1Y2tldE5hbWU7XG4gICAgY29uc3Qgc3BlY2lhbGl6ZXIgPSBuZXcgU3RyaW5nU3BlY2lhbGl6ZXIodGhpcywgcHJvcHMucXVhbGlmaWVyKTtcblxuICAgIHRoaXMucHJvdmlkZWRGaWxlUm9sZSA9IHByb3BzLmZpbGVBc3NldFB1Ymxpc2hpbmdSb2xlPy5fc3BlY2lhbGl6ZShzcGVjaWFsaXplcik7XG4gICAgdGhpcy5wcm92aWRlZEltYWdlUm9sZSA9IHByb3BzLmltYWdlQXNzZXRQdWJsaXNoaW5nUm9sZT8uX3NwZWNpYWxpemUoc3BlY2lhbGl6ZXIpO1xuICAgIHRoaXMuc3RhZ2luZ1JlcG9zID0ge307XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlQXBwSWQoaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGVycm9ycyA9IFtdO1xuICAgIGlmIChpZC5sZW5ndGggPiAyMCkge1xuICAgICAgZXJyb3JzLnB1c2goYGFwcElkIGV4cGVjdGVkIG5vIG1vcmUgdGhhbiAyMCBjaGFyYWN0ZXJzIGJ1dCBnb3QgJHtpZC5sZW5ndGh9IGNoYXJhY3RlcnMuYCk7XG4gICAgfVxuICAgIGlmIChpZCAhPT0gaWQudG9Mb2NhbGVMb3dlckNhc2UoKSkge1xuICAgICAgZXJyb3JzLnB1c2goJ2FwcElkIG9ubHkgYWNjZXB0cyBsb3dlcmNhc2UgY2hhcmFjdGVycy4nKTtcbiAgICB9XG4gICAgaWYgKCEvXlthLXowLTktXSokLy50ZXN0KGlkKSkge1xuICAgICAgZXJyb3JzLnB1c2goJ2FwcElkIGV4cGVjdHMgb25seSBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgZGFzaGVzIChcXCctXFwnKScpO1xuICAgIH1cblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFtcbiAgICAgICAgYGFwcElkICR7aWR9IGhhcyBlcnJvcnM6YCxcbiAgICAgICAgLi4uZXJyb3JzLFxuICAgICAgXS5qb2luKCdcXG4nKSk7XG4gICAgfVxuICAgIHJldHVybiBpZDtcbiAgfVxuXG4gIHByaXZhdGUgZW5zdXJlRmlsZVJvbGUoKSB7XG4gICAgaWYgKHRoaXMucHJvdmlkZWRGaWxlUm9sZSkge1xuICAgICAgLy8gT3ZlcnJpZGVcbiAgICAgIHRoaXMuZmlsZVJvbGVNYW5pZmVzdEFybiA9IHRoaXMucHJvdmlkZWRGaWxlUm9sZS5fYXJuRm9yQ2xvdWRBc3NlbWJseSgpO1xuICAgICAgY29uc3QgY2ZuQXJuID0gdGhpcy5wcm92aWRlZEZpbGVSb2xlLl9hcm5Gb3JDbG91ZEZvcm1hdGlvbigpO1xuICAgICAgdGhpcy5maWxlUm9sZSA9IGNmbkFybiA/IGlhbS5Sb2xlLmZyb21Sb2xlQXJuKHRoaXMsICdDZGtGaWxlUm9sZScsIGNmbkFybikgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgcm9sZU5hbWUgPSB0aGlzLmZpbGVSb2xlTmFtZTtcbiAgICB0aGlzLmZpbGVSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsICdDZGtGaWxlUm9sZScsIHtcbiAgICAgIHJvbGVOYW1lLFxuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLkFjY291bnRQcmluY2lwYWwodGhpcy5hY2NvdW50KSxcbiAgICB9KTtcblxuICAgIHRoaXMuZmlsZVJvbGVNYW5pZmVzdEFybiA9IFN0YWNrLm9mKHRoaXMpLmZvcm1hdEFybih7XG4gICAgICBwYXJ0aXRpb246ICcke0FXUzo6UGFydGl0aW9ufScsXG4gICAgICByZWdpb246ICcnLCAvLyBpYW0gaXMgZ2xvYmFsXG4gICAgICBzZXJ2aWNlOiAnaWFtJyxcbiAgICAgIHJlc291cmNlOiAncm9sZScsXG4gICAgICByZXNvdXJjZU5hbWU6IHJvbGVOYW1lLFxuICAgICAgYXJuRm9ybWF0OiBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZW5zdXJlSW1hZ2VSb2xlKCkge1xuICAgIC8vIEl0IG1heSBlbmQgdXAgc2V0dGluZyBpbWFnZVJvbGUgdG8gdW5kZWZpbmVkLCBidXQgYXQgbGVhc3Qgd2UgdHJpZWRcbiAgICBpZiAodGhpcy5kaWRJbWFnZVJvbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kaWRJbWFnZVJvbGUgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMucHJvdmlkZWRJbWFnZVJvbGUpIHtcbiAgICAgIC8vIE92ZXJyaWRlXG4gICAgICB0aGlzLmltYWdlUm9sZU1hbmlmZXN0QXJuID0gdGhpcy5wcm92aWRlZEltYWdlUm9sZS5fYXJuRm9yQ2xvdWRBc3NlbWJseSgpO1xuICAgICAgY29uc3QgY2ZuQXJuID0gdGhpcy5wcm92aWRlZEltYWdlUm9sZS5fYXJuRm9yQ2xvdWRGb3JtYXRpb24oKTtcbiAgICAgIHRoaXMuaW1hZ2VSb2xlID0gY2ZuQXJuID8gaWFtLlJvbGUuZnJvbVJvbGVBcm4odGhpcywgJ0Nka0ltYWdlUm9sZScsIGNmbkFybikgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgcm9sZU5hbWUgPSB0aGlzLmltYWdlUm9sZU5hbWU7XG4gICAgdGhpcy5pbWFnZVJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgJ0Nka0ltYWdlUm9sZScsIHtcbiAgICAgIHJvbGVOYW1lLFxuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLkFjY291bnRQcmluY2lwYWwodGhpcy5hY2NvdW50KSxcbiAgICB9KTtcbiAgICB0aGlzLmltYWdlUm9sZU1hbmlmZXN0QXJuID0gU3RhY2sub2YodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgIHBhcnRpdGlvbjogJyR7QVdTOjpQYXJ0aXRpb259JyxcbiAgICAgIHJlZ2lvbjogJycsIC8vIGlhbSBpcyBnbG9iYWxcbiAgICAgIHNlcnZpY2U6ICdpYW0nLFxuICAgICAgcmVzb3VyY2U6ICdyb2xlJyxcbiAgICAgIHJlc291cmNlTmFtZTogcm9sZU5hbWUsXG4gICAgICBhcm5Gb3JtYXQ6IEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVCdWNrZXRLZXkoKToga21zLklLZXkge1xuICAgIHJldHVybiBuZXcga21zLktleSh0aGlzLCAnQnVja2V0S2V5Jywge1xuICAgICAgYWxpYXM6IGBhbGlhcy9jZGstJHt0aGlzLmFwcElkfS1zdGFnaW5nYCxcbiAgICAgIGFkbWluczogW25ldyBpYW0uQWNjb3VudFByaW5jaXBhbCh0aGlzLmFjY291bnQpXSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q3JlYXRlQnVja2V0KCkge1xuICAgIGNvbnN0IHN0YWdpbmdCdWNrZXROYW1lID0gdGhpcy5zdGFnaW5nQnVja2V0TmFtZSA/PyBgY2RrLSR7dGhpcy5hcHBJZH0tc3RhZ2luZy0ke3RoaXMuYWNjb3VudH0tJHt0aGlzLnJlZ2lvbn1gO1xuICAgIGNvbnN0IGJ1Y2tldElkID0gJ0Nka1N0YWdpbmdCdWNrZXQnO1xuICAgIGNvbnN0IGNyZWF0ZWRCdWNrZXQgPSB0aGlzLm5vZGUudHJ5RmluZENoaWxkKGJ1Y2tldElkKSBhcyBzMy5CdWNrZXQ7XG4gICAgaWYgKGNyZWF0ZWRCdWNrZXQpIHtcbiAgICAgIHJldHVybiBzdGFnaW5nQnVja2V0TmFtZTtcbiAgICB9XG5cbiAgICB0aGlzLmVuc3VyZUZpbGVSb2xlKCk7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5jcmVhdGVCdWNrZXRLZXkoKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgYnVja2V0IG9uY2UgdGhlIGRlcGVuZGVuY2llcyBoYXZlIGJlZW4gY3JlYXRlZFxuICAgIGNvbnN0IGJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQodGhpcywgYnVja2V0SWQsIHtcbiAgICAgIGJ1Y2tldE5hbWU6IHN0YWdpbmdCdWNrZXROYW1lLFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5SRVRBSU4sXG4gICAgICBlbmNyeXB0aW9uOiBzMy5CdWNrZXRFbmNyeXB0aW9uLktNUyxcbiAgICAgIGVuY3J5cHRpb25LZXk6IGtleSxcblxuICAgICAgLy8gTWFueSBBV1MgYWNjb3VudCBzYWZldHkgY2hlY2tlcnMgd2lsbCBjb21wbGFpbiB3aGVuIGJ1Y2tldHMgYXJlbid0IHZlcnNpb25lZFxuICAgICAgdmVyc2lvbmVkOiB0cnVlLFxuICAgICAgLy8gTWFueSBBV1MgYWNjb3VudCBzYWZldHkgY2hlY2tlcnMgd2lsbCBjb21wbGFpbiB3aGVuIFNTTCBpc24ndCBlbmZvcmNlZFxuICAgICAgZW5mb3JjZVNTTDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmZpbGVSb2xlKSB7XG4gICAgICBidWNrZXQuZ3JhbnRSZWFkV3JpdGUodGhpcy5maWxlUm9sZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGVwbG95Um9sZUFybikge1xuICAgICAgYnVja2V0LmFkZFRvUmVzb3VyY2VQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ3MzOkdldE9iamVjdConLFxuICAgICAgICAgICdzMzpHZXRCdWNrZXQqJyxcbiAgICAgICAgICAnczM6TGlzdConLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtidWNrZXQuYnVja2V0QXJuLCBidWNrZXQuYXJuRm9yT2JqZWN0cygnKicpXSxcbiAgICAgICAgcHJpbmNpcGFsczogW25ldyBpYW0uQXJuUHJpbmNpcGFsKHRoaXMuZGVwbG95Um9sZUFybildLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIC8vIE9iamVjdHMgc2hvdWxkIG5ldmVyIGJlIG92ZXJ3cml0dGVuLCBidXQgbGV0J3MgbWFrZSBzdXJlIHdlIGhhdmUgYSBsaWZlY3ljbGUgcG9saWN5XG4gICAgLy8gZm9yIGl0IGFueXdheS5cbiAgICBidWNrZXQuYWRkTGlmZWN5Y2xlUnVsZSh7XG4gICAgICBub25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb246IER1cmF0aW9uLmRheXMoMzY1KSxcbiAgICB9KTtcblxuICAgIGJ1Y2tldC5hZGRMaWZlY3ljbGVSdWxlKHtcbiAgICAgIHByZWZpeDogREVQTE9ZX1RJTUVfUFJFRklYLFxuICAgICAgZXhwaXJhdGlvbjogdGhpcy5wcm9wcy5kZXBsb3lUaW1lRmlsZUFzc2V0TGlmZXRpbWUgPz8gRHVyYXRpb24uZGF5cygzMCksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3RhZ2luZ0J1Y2tldE5hbWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgd2VsbC1rbm93biBuYW1lIG9mIHRoZSByZXBvXG4gICAqL1xuICBwcml2YXRlIGdldENyZWF0ZVJlcG8oYXNzZXQ6IERvY2tlckltYWdlQXNzZXRTb3VyY2UpOiBzdHJpbmcge1xuICAgIGlmICghYXNzZXQuYXNzZXROYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fzc2V0cyBzeW50aGVzaXplZCB3aXRoIEFwcFNjb3BlZFN0YWdpbmdTeW50aGVzaXplciBtdXN0IGluY2x1ZGUgYW4gXFwnYXNzZXROYW1lXFwnIGluIHRoZSBhc3NldCBzb3VyY2UgZGVmaW5pdGlvbi4nKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgaW1hZ2UgcHVibGlzaGluZyByb2xlIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICB0aGlzLmVuc3VyZUltYWdlUm9sZSgpO1xuXG4gICAgY29uc3QgcmVwb05hbWUgPSBnZW5lcmF0ZVJlcG9OYW1lKGAke3RoaXMuYXBwSWR9LyR7YXNzZXQuYXNzZXROYW1lfWApO1xuICAgIGlmICh0aGlzLnN0YWdpbmdSZXBvc1thc3NldC5hc3NldE5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuc3RhZ2luZ1JlcG9zW2Fzc2V0LmFzc2V0TmFtZV0gPSBuZXcgZWNyLlJlcG9zaXRvcnkodGhpcywgcmVwb05hbWUsIHtcbiAgICAgICAgcmVwb3NpdG9yeU5hbWU6IHJlcG9OYW1lLFxuICAgICAgICBsaWZlY3ljbGVSdWxlczogW3tcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0dhcmJhZ2UgY29sbGVjdCBvbGQgaW1hZ2UgdmVyc2lvbnMgYW5kIGtlZXAgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbGF0ZXN0IHZlcnNpb25zJyxcbiAgICAgICAgICBtYXhJbWFnZUNvdW50OiB0aGlzLnByb3BzLmltYWdlQXNzZXRWZXJzaW9uQ291bnQgPz8gMyxcbiAgICAgICAgfV0sXG4gICAgICB9KTtcbiAgICAgIGlmICh0aGlzLmltYWdlUm9sZSkge1xuICAgICAgICB0aGlzLnN0YWdpbmdSZXBvc1thc3NldC5hc3NldE5hbWVdLmdyYW50UHVsbFB1c2godGhpcy5pbWFnZVJvbGUpO1xuICAgICAgICB0aGlzLnN0YWdpbmdSZXBvc1thc3NldC5hc3NldE5hbWVdLmdyYW50UmVhZCh0aGlzLmltYWdlUm9sZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXBvTmFtZTtcblxuICAgIGZ1bmN0aW9uIGdlbmVyYXRlUmVwb05hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBuYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkucmVwbGFjZSgnLicsICctJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZEZpbGUoYXNzZXQ6IEZpbGVBc3NldFNvdXJjZSk6IEZpbGVTdGFnaW5nTG9jYXRpb24ge1xuICAgIC8vIEhhcyBzaWRlIGVmZmVjdHMgc28gbXVzdCBnbyBmaXJzdFxuICAgIGNvbnN0IGJ1Y2tldE5hbWUgPSB0aGlzLmdldENyZWF0ZUJ1Y2tldCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGJ1Y2tldE5hbWUsXG4gICAgICBhc3N1bWVSb2xlQXJuOiB0aGlzLmZpbGVSb2xlTWFuaWZlc3RBcm4sXG4gICAgICBwcmVmaXg6IGFzc2V0LmRlcGxveVRpbWUgPyBERVBMT1lfVElNRV9QUkVGSVggOiB1bmRlZmluZWQsXG4gICAgICBkZXBlbmRlbmN5U3RhY2s6IHRoaXMsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhZGREb2NrZXJJbWFnZShhc3NldDogRG9ja2VySW1hZ2VBc3NldFNvdXJjZSk6IEltYWdlU3RhZ2luZ0xvY2F0aW9uIHtcbiAgICAvLyBIYXMgc2lkZSBlZmZlY3RzIHNvIG11c3QgZ28gZmlyc3RcbiAgICBjb25zdCByZXBvTmFtZSA9IHRoaXMuZ2V0Q3JlYXRlUmVwbyhhc3NldCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVwb05hbWUsXG4gICAgICBhc3N1bWVSb2xlQXJuOiB0aGlzLmltYWdlUm9sZU1hbmlmZXN0QXJuLFxuICAgICAgZGVwZW5kZW5jeVN0YWNrOiB0aGlzLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogU3ludGhlc2l6ZXMgdGhlIGNsb3VkZm9ybWF0aW9uIHRlbXBsYXRlIGludG8gYSBjbG91ZCBhc3NlbWJseS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3N5bnRoZXNpemVUZW1wbGF0ZShzZXNzaW9uOiBJU3ludGhlc2lzU2Vzc2lvbiwgbG9va3VwUm9sZUFybj86IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHN1cGVyLl9zeW50aGVzaXplVGVtcGxhdGUoc2Vzc2lvbiwgbG9va3VwUm9sZUFybik7XG5cbiAgICBjb25zdCBidWlsZGVyID0gc2Vzc2lvbi5hc3NlbWJseTtcbiAgICBjb25zdCBvdXRQYXRoID0gcGF0aC5qb2luKGJ1aWxkZXIub3V0ZGlyLCB0aGlzLnRlbXBsYXRlRmlsZSk7XG4gICAgY29uc3Qgc2l6ZSA9IGZzLnN0YXRTeW5jKG91dFBhdGgpLnNpemU7XG4gICAgaWYgKHNpemUgPiA1MTIwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdGFnaW5nIHJlc291cmNlIHRlbXBsYXRlIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gNTEyMDAgYnl0ZXMsIGJ1dCBnb3QgJHtzaXplfSBieXRlc2ApO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
321
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1zdGFnaW5nLXN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGVmYXVsdC1zdGFnaW5nLXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0MseUNBQXlDO0FBQ3pDLDJDQVkwQjtBQUMxQiw0RUFBMEU7QUFDMUUsNENBQTRDO0FBQzVDLDJDQUF1QztBQUkxQixRQUFBLGtCQUFrQixHQUFHLGNBQWMsQ0FBQztBQUVqRDs7Ozs7OztHQU9HO0FBQ0gsTUFBYSwwQkFBMkIsU0FBUSxzQkFBUztJQUN2RCxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQ2xCOzs7O0FBSFUsZ0VBQTBCO0FBcUd2Qzs7Ozs7R0FLRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsWUFBSztJQUM1Qzs7T0FFRztJQUNJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBbUM7Ozs7Ozs7Ozs7UUFDdkQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6RixPQUFPO1lBQ0wsc0JBQXNCLENBQUMsS0FBSyxFQUFFLE9BQU87Z0JBQ25DLE1BQU0sR0FBRyxHQUFHLFVBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxVQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxDQUFDLFNBQVMseUJBQXlCLENBQUMsQ0FBQztpQkFDcEU7Z0JBRUQsNEVBQTRFO2dCQUM1RSwwRUFBMEU7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LENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN2QyxJQUFJLElBQUksR0FBRyxLQUFLLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5RUFBeUUsSUFBSSxRQUFRLENBQUMsQ0FBQztTQUN4RztLQUNGOzs7O0FBM1VVLGtEQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBlY3IgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHtcbiAgQXBwLFxuICBBcm5Gb3JtYXQsXG4gIEJvb3RzdHJhcGxlc3NTeW50aGVzaXplcixcbiAgRG9ja2VySW1hZ2VBc3NldFNvdXJjZSxcbiAgRHVyYXRpb24sXG4gIEZpbGVBc3NldFNvdXJjZSxcbiAgSVN5bnRoZXNpc1Nlc3Npb24sXG4gIFJlbW92YWxQb2xpY3ksXG4gIFN0YWNrLFxuICBTdGFja1Byb3BzLFxuICBJTkxJTkVfQ1VTVE9NX1JFU09VUkNFX0NPTlRFWFQsXG59IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgU3RyaW5nU3BlY2lhbGl6ZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCAqIGFzIGN4YXBpIGZyb20gJ2F3cy1jZGstbGliL2N4LWFwaSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEJvb3RzdHJhcFJvbGUgfSBmcm9tICcuL2Jvb3RzdHJhcC1yb2xlcyc7XG5pbXBvcnQgeyBGaWxlU3RhZ2luZ0xvY2F0aW9uLCBJU3RhZ2luZ1Jlc291cmNlcywgSVN0YWdpbmdSZXNvdXJjZXNGYWN0b3J5LCBJbWFnZVN0YWdpbmdMb2NhdGlvbiB9IGZyb20gJy4vc3RhZ2luZy1zdGFjayc7XG5cbmV4cG9ydCBjb25zdCBERVBMT1lfVElNRV9QUkVGSVggPSAnZGVwbG95LXRpbWUvJztcblxuLyoqXG4gKiBUaGlzIGlzIGEgZHVtbXkgY29uc3RydWN0IG1lYW50IHRvIHNpZ25pZnkgdGhhdCBhIHN0YWNrIGlzIHV0aWxpemluZ1xuICogdGhlIEFwcFN0YWdpbmdTeW50aGVzaXplci4gSXQgZG9lcyBub3QgZG8gYW55dGhpbmcsIGFuZCBpcyBub3QgbWVhbnRcbiAqIHRvIGJlIGNyZWF0ZWQgb24gaXRzIG93bi4gVGhpcyBjb25zdHJ1Y3Qgd2lsbCBiZSBhIHBhcnQgb2YgdGhlXG4gKiBjb25zdHJ1Y3QgdHJlZSBvbmx5IGFuZCBub3QgdGhlIENmbiB0ZW1wbGF0ZS4gVGhlIGNvbnN0cnVjdCB0cmVlIGlzXG4gKiB0aGVuIGVuY29kZWQgaW4gdGhlIEFXUzo6Q0RLOjpNZXRhZGF0YSByZXNvdXJjZSBvZiB0aGUgc3RhY2sgYW5kXG4gKiBpbmplc3RlZCBpbiBvdXIgbWV0cmljcyBsaWtlIGV2ZXJ5IG90aGVyIGNvbnN0cnVjdC5cbiAqL1xuZXhwb3J0IGNsYXNzIFVzaW5nQXBwU3RhZ2luZ1N5bnRoZXNpemVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBVc2VyIGNvbmZpZ3VyYWJsZSBvcHRpb25zIHRvIHRoZSBEZWZhdWx0U3RhZ2luZ1N0YWNrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHRTdGFnaW5nU3RhY2tPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBhcHBsaWNhdGlvbiB0aGF0IHRoZSBzdGFnaW5nIHN0YWNrIGJlbG9uZ3MgdG8uXG4gICAqXG4gICAqIFRoaXMgaWRlbnRpZmllciB3aWxsIGJlIHVzZWQgaW4gdGhlIG5hbWUgb2Ygc3RhZ2luZyByZXNvdXJjZXNcbiAgICogY3JlYXRlZCBmb3IgdGhpcyBhcHBsaWNhdGlvbiwgYW5kIHNob3VsZCBiZSB1bmlxdWUgYWNyb3NzIENESyBhcHBzLlxuICAgKlxuICAgKiBUaGUgaWRlbnRpZmllciBzaG91bGQgaW5jbHVkZSBsb3dlcmNhc2UgY2hhcmFjdGVycyBhbmQgZGFzaGVzICgnLScpIG9ubHlcbiAgICogYW5kIGhhdmUgYSBtYXhpbXVtIG9mIDIwIGNoYXJhY3RlcnMuXG4gICAqL1xuICByZWFkb25seSBhcHBJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHBsaWNpdCBuYW1lIGZvciB0aGUgc3RhZ2luZyBidWNrZXRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIHdlbGwta25vd24gbmFtZSB1bmlxdWUgdG8gdGhpcyBhcHAvZW52LlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2luZ0J1Y2tldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhc3MgaW4gYW4gZXhpc3Rpbmcgcm9sZSB0byBiZSB1c2VkIGFzIHRoZSBmaWxlIHB1Ymxpc2hpbmcgcm9sZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIG5ldyByb2xlIHdpbGwgYmUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZUFzc2V0UHVibGlzaGluZ1JvbGU/OiBCb290c3RyYXBSb2xlO1xuXG4gIC8qKlxuICAgKiBQYXNzIGluIGFuIGV4aXN0aW5nIHJvbGUgdG8gYmUgdXNlZCBhcyB0aGUgaW1hZ2UgcHVibGlzaGluZyByb2xlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmV3IHJvbGUgd2lsbCBiZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBpbWFnZUFzc2V0UHVibGlzaGluZ1JvbGU/OiBCb290c3RyYXBSb2xlO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlmZXRpbWUgZm9yIGRlcGxveSB0aW1lIGZpbGUgYXNzZXRzLlxuICAgKlxuICAgKiBBc3NldHMgdGhhdCBhcmUgb25seSBuZWNlc3NhcnkgYXQgZGVwbG95bWVudCB0aW1lIChmb3IgaW5zdGFuY2UsXG4gICAqIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlcyBhbmQgTGFtYmRhIHNvdXJjZSBjb2RlIGJ1bmRsZXMpIHdpbGwgYmVcbiAgICogYXV0b21hdGljYWxseSBkZWxldGVkIGFmdGVyIHRoaXMgbWFueSBkYXlzLiBBc3NldHMgdGhhdCBtYXkgYmVcbiAgICogcmVhZCBmcm9tIHRoZSBzdGFnaW5nIGJ1Y2tldCBkdXJpbmcgeW91ciBhcHBsaWNhdGlvbidzIHJ1biB0aW1lXG4gICAqIHdpbGwgbm90IGJlIGRlbGV0ZWQuXG4gICAqXG4gICAqIFNldCB0aGlzIHRvIHRoZSBsZW5ndGggb2YgdGltZSB5b3Ugd2lzaCB0byBiZSBhYmxlIHRvIHJvbGwgYmFjayB0b1xuICAgKiBwcmV2aW91cyB2ZXJzaW9ucyBvZiB5b3VyIGFwcGxpY2F0aW9uIHdpdGhvdXQgaGF2aW5nIHRvIGRvIGEgbmV3XG4gICAqIGBjZGsgc3ludGhgIGFuZCByZS11cGxvYWQgb2YgYXNzZXRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIER1cmF0aW9uLmRheXMoMzApXG4gICAqL1xuICByZWFkb25seSBkZXBsb3lUaW1lRmlsZUFzc2V0TGlmZXRpbWU/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGltYWdlIHZlcnNpb25zIHRvIHN0b3JlIGluIGEgcmVwb3NpdG9yeS5cbiAgICpcbiAgICogUHJldmlvdXMgdmVyc2lvbnMgb2YgYW4gaW1hZ2UgY2FuIGJlIHN0b3JlZCBmb3Igcm9sbGJhY2sgcHVycG9zZXMuXG4gICAqIE9uY2UgYSByZXBvc2l0b3J5IGhhcyBtb3JlIHRoYW4gMyBpbWFnZSB2ZXJzaW9ucyBzdG9yZWQsIHRoZSBvbGRlc3RcbiAgICogdmVyc2lvbiB3aWxsIGJlIGRpc2NhcmRlZC4gVGhpcyBhbGxvd3MgZm9yIHNlbnNpYmxlIGdhcmJhZ2UgY29sbGVjdGlvblxuICAgKiB3aGlsZSBtYWludGFpbmluZyBhIGZldyBwcmV2aW91cyB2ZXJzaW9ucyBmb3Igcm9sbGJhY2sgc2NlbmFyaW9zLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVwIHRvIDMgdmVyc2lvbnMgc3RvcmVkXG4gICAqL1xuICByZWFkb25seSBpbWFnZUFzc2V0VmVyc2lvbkNvdW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBdXRvIGRlbGV0ZXMgb2JqZWN0cyBpbiB0aGUgc3RhZ2luZyBTMyBidWNrZXQgYW5kIGltYWdlcyBpbiB0aGVcbiAgICogc3RhZ2luZyBFQ1IgcmVwb3NpdG9yaWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhdXRvRGVsZXRlU3RhZ2luZ0Fzc2V0cz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRGVmYXVsdCBTdGFnaW5nIFN0YWNrIFByb3BlcnRpZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZhdWx0U3RhZ2luZ1N0YWNrUHJvcHMgZXh0ZW5kcyBEZWZhdWx0U3RhZ2luZ1N0YWNrT3B0aW9ucywgU3RhY2tQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBkZXBsb3kgYWN0aW9uIHJvbGUsIGlmIGdpdmVuXG4gICAqXG4gICAqIFRoaXMgcm9sZSB3aWxsIG5lZWQgcGVybWlzc2lvbnMgdG8gcmVhZCBmcm9tIHRvIHRoZSBzdGFnaW5nIHJlc291cmNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBUaGUgQ0xJIGNyZWRlbnRpYWxzIGFyZSBhc3N1bWVkLCBubyBhZGRpdGlvbmFsIHBlcm1pc3Npb25zIGFyZSBncmFudGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95Um9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHF1YWxpZmllciB1c2VkIHRvIHNwZWNpYWxpemUgc3RyaW5nc1xuICAgKlxuICAgKiBTaG91bGRuJ3QgYmUgbmVjZXNzYXJ5IGJ1dCB3aG8ga25vd3Mgd2hhdCBwZW9wbGUgbWlnaHQgZG8uXG4gICAqL1xuICByZWFkb25seSBxdWFsaWZpZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIGRlZmF1bHQgU3RhZ2luZyBTdGFjayB0aGF0IGltcGxlbWVudHMgSVN0YWdpbmdSZXNvdXJjZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGRlZmF1bHRTdGFnaW5nU3RhY2sgPSBEZWZhdWx0U3RhZ2luZ1N0YWNrLmZhY3RvcnkoeyBhcHBJZDogJ215LWFwcC1pZCcgfSk7XG4gKi9cbmV4cG9ydCBjbGFzcyBEZWZhdWx0U3RhZ2luZ1N0YWNrIGV4dGVuZHMgU3RhY2sgaW1wbGVtZW50cyBJU3RhZ2luZ1Jlc291cmNlcyB7XG4gIC8qKlxuICAgKiBSZXR1cm4gYSBmYWN0b3J5IHRoYXQgd2lsbCBjcmVhdGUgRGVmYXVsdFN0YWdpbmdTdGFja3NcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZmFjdG9yeShvcHRpb25zOiBEZWZhdWx0U3RhZ2luZ1N0YWNrT3B0aW9ucyk6IElTdGFnaW5nUmVzb3VyY2VzRmFjdG9yeSB7XG4gICAgY29uc3QgYXBwSWQgPSBvcHRpb25zLmFwcElkLnRvTG9jYWxlTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLXowLTktXS9nLCAnLScpLnNsaWNlKDAsIDIwKTtcbiAgICByZXR1cm4ge1xuICAgICAgb2J0YWluU3RhZ2luZ1Jlc291cmNlcyhzdGFjaywgY29udGV4dCkge1xuICAgICAgICBjb25zdCBhcHAgPSBBcHAub2Yoc3RhY2spO1xuICAgICAgICBpZiAoIUFwcC5pc0FwcChhcHApKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdGFjayAke3N0YWNrLnN0YWNrTmFtZX0gbXVzdCBiZSBwYXJ0IG9mIGFuIEFwcGApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmVjYXVzZSB3ZSBkbyBub3Qga2VlcCBtZXRyaWNzIGluIHRoZSBEZWZhdWx0U3RhZ2luZ1N0YWNrLCB3ZSB3aWxsIGluamVjdFxuICAgICAgICAvLyBhIGR1bW15IGNvbnN0cnVjdCBpbnRvIHRoZSBzdGFjayB1c2luZyB0aGUgRGVmYXVsdFN0YWdpbmdTdGFjayBpbnN0ZWFkLlxuICAgICAgICBpZiAoY3hhcGkuQU5BTFlUSUNTX1JFUE9SVElOR19FTkFCTEVEX0NPTlRFWFQpIHtcbiAgICAgICAgICBuZXcgVXNpbmdBcHBTdGFnaW5nU3ludGhlc2l6ZXIoc3RhY2ssIGBVc2luZ0FwcFN0YWdpbmdTeW50aGVzaXplci8ke3N0YWNrLnN0YWNrTmFtZX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0YWNrSWQgPSBgU3RhZ2luZ1N0YWNrLSR7YXBwSWR9LSR7Y29udGV4dC5lbnZpcm9ubWVudFN0cmluZ31gO1xuICAgICAgICByZXR1cm4gbmV3IERlZmF1bHRTdGFnaW5nU3RhY2soYXBwLCBzdGFja0lkLCB7XG4gICAgICAgICAgLi4ub3B0aW9ucyxcblxuICAgICAgICAgIC8vIERvZXMgbm90IG5lZWQgdG8gY29udGFpbiBlbnZpcm9ubWVudCBiZWNhdXNlIHN0YWNrIG5hbWVzIGFyZSB1bmlxdWUgaW5zaWRlIGFuIGVudiBhbnl3YXlcbiAgICAgICAgICBzdGFja05hbWU6IGBTdGFnaW5nU3RhY2stJHthcHBJZH1gLFxuICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgYWNjb3VudDogc3RhY2suYWNjb3VudCxcbiAgICAgICAgICAgIHJlZ2lvbjogc3RhY2sucmVnaW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYXBwSWQsXG4gICAgICAgICAgcXVhbGlmaWVyOiBjb250ZXh0LnF1YWxpZmllcixcbiAgICAgICAgICBkZXBsb3lSb2xlQXJuOiBjb250ZXh0LmRlcGxveVJvbGVBcm4sXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgYXNzZXQgcHVibGlzaGluZyByb2xlIG5hbWUgZm9yIGZpbGUgKFMzKSBhc3NldHMuXG4gICAqL1xuICBwcml2YXRlIGdldCBmaWxlUm9sZU5hbWUoKSB7XG4gICAgcmV0dXJuIGBjZGstJHt0aGlzLmFwcElkfS1maWxlLXJvbGUtJHt0aGlzLnJlZ2lvbn1gO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgYXNzZXQgcHVibGlzaGluZyByb2xlIG5hbWUgZm9yIGRvY2tlciAoRUNSKSBhc3NldHMuXG4gICAqL1xuICBwcml2YXRlIGdldCBpbWFnZVJvbGVOYW1lKCkge1xuICAgIHJldHVybiBgY2RrLSR7dGhpcy5hcHBJZH0taW1hZ2Utcm9sZS0ke3RoaXMucmVnaW9ufWA7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGFwcC1zY29wZWQsIGV2aXJvbm1lbnQta2V5ZWQgc3RhZ2luZyBidWNrZXQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhZ2luZ0J1Y2tldD86IHMzLkJ1Y2tldDtcblxuICAvKipcbiAgICogVGhlIGFwcC1zY29wZWQsIGVudmlyb25tZW50LWtleWVkIGVjciByZXBvc2l0b3JpZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYXBwLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YWdpbmdSZXBvczogUmVjb3JkPHN0cmluZywgZWNyLlJlcG9zaXRvcnk+O1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdG8gYWRkIGRlcGVuZGVuY2llcyB0by5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXBlbmRlbmN5U3RhY2s6IFN0YWNrO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBwSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBzdGFnaW5nQnVja2V0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogRmlsZSBwdWJsaXNoIHJvbGUgQVJOIGluIGFzc2V0IG1hbmlmZXN0IGZvcm1hdFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwcm92aWRlZEZpbGVSb2xlPzogQm9vdHN0cmFwUm9sZTtcbiAgcHJpdmF0ZSBmaWxlUm9sZT86IGlhbS5JUm9sZTtcbiAgcHJpdmF0ZSBmaWxlUm9sZU1hbmlmZXN0QXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbWFnZSBwdWJsaXNoaW5nIHJvbGUgQVJOIGluIGFzc2V0IG1hbmlmZXN0IGZvcm1hdFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwcm92aWRlZEltYWdlUm9sZT86IEJvb3RzdHJhcFJvbGU7XG4gIHByaXZhdGUgaW1hZ2VSb2xlPzogaWFtLklSb2xlO1xuICBwcml2YXRlIGRpZEltYWdlUm9sZSA9IGZhbHNlO1xuICBwcml2YXRlIGltYWdlUm9sZU1hbmlmZXN0QXJuPzogc3RyaW5nO1xuICBwcml2YXRlIGF1dG9EZWxldGVTdGFnaW5nQXNzZXRzOiBib29sZWFuO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVwbG95Um9sZUFybj86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQXBwLCBpZDogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBEZWZhdWx0U3RhZ2luZ1N0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgc3ludGhlc2l6ZXI6IG5ldyBCb290c3RyYXBsZXNzU3ludGhlc2l6ZXIoKSxcbiAgICAgIGFuYWx5dGljc1JlcG9ydGluZzogZmFsc2UsIC8vIHJlbW92aW5nIEFXUzo6Q0RLOjpNZXRhZGF0YSBjb25zdHJ1Y3Qgc2F2ZXMgfjNLQlxuICAgIH0pO1xuICAgIC8vIHJlbW92aW5nIHBhdGggbWV0YWRhdGEgc2F2ZXMgfjJLQlxuICAgIHRoaXMubm9kZS5zZXRDb250ZXh0KGN4YXBpLlBBVEhfTUVUQURBVEFfRU5BQkxFX0NPTlRFWFQsIGZhbHNlKTtcblxuICAgIC8vIEZvciBhbGwgcmVzb3VyY2VzIHVuZGVyIHRoZSBkZWZhdWx0IHN0YWdpbmcgc3RhY2ssIHdlIHdhbnQgdG8gaW5saW5lIGN1c3RvbVxuICAgIC8vIHJlc291cmNlcyBiZWNhdXNlIHRoZSBzdGFnaW5nIGJ1Y2tldCBuZWNlc3NhcnkgZm9yIGN1c3RvbSByZXNvdXJjZSBhc3NldHNcbiAgICAvLyBkb2VzIG5vdCBleGlzdCB5ZXQuXG4gICAgdGhpcy5ub2RlLnNldENvbnRleHQoSU5MSU5FX0NVU1RPTV9SRVNPVVJDRV9DT05URVhULCB0cnVlKTtcbiAgICB0aGlzLmF1dG9EZWxldGVTdGFnaW5nQXNzZXRzID0gcHJvcHMuYXV0b0RlbGV0ZVN0YWdpbmdBc3NldHMgPz8gdHJ1ZTtcblxuICAgIHRoaXMuYXBwSWQgPSB0aGlzLnZhbGlkYXRlQXBwSWQocHJvcHMuYXBwSWQpO1xuICAgIHRoaXMuZGVwZW5kZW5jeVN0YWNrID0gdGhpcztcblxuICAgIHRoaXMuZGVwbG95Um9sZUFybiA9IHByb3BzLmRlcGxveVJvbGVBcm47XG4gICAgdGhpcy5zdGFnaW5nQnVja2V0TmFtZSA9IHByb3BzLnN0YWdpbmdCdWNrZXROYW1lO1xuICAgIGNvbnN0IHNwZWNpYWxpemVyID0gbmV3IFN0cmluZ1NwZWNpYWxpemVyKHRoaXMsIHByb3BzLnF1YWxpZmllcik7XG5cbiAgICB0aGlzLnByb3ZpZGVkRmlsZVJvbGUgPSBwcm9wcy5maWxlQXNzZXRQdWJsaXNoaW5nUm9sZT8uX3NwZWNpYWxpemUoc3BlY2lhbGl6ZXIpO1xuICAgIHRoaXMucHJvdmlkZWRJbWFnZVJvbGUgPSBwcm9wcy5pbWFnZUFzc2V0UHVibGlzaGluZ1JvbGU/Ll9zcGVjaWFsaXplKHNwZWNpYWxpemVyKTtcbiAgICB0aGlzLnN0YWdpbmdSZXBvcyA9IHt9O1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUFwcElkKGlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBlcnJvcnMgPSBbXTtcbiAgICBpZiAoaWQubGVuZ3RoID4gMjApIHtcbiAgICAgIGVycm9ycy5wdXNoKGBhcHBJZCBleHBlY3RlZCBubyBtb3JlIHRoYW4gMjAgY2hhcmFjdGVycyBidXQgZ290ICR7aWQubGVuZ3RofSBjaGFyYWN0ZXJzLmApO1xuICAgIH1cbiAgICBpZiAoaWQgIT09IGlkLnRvTG9jYWxlTG93ZXJDYXNlKCkpIHtcbiAgICAgIGVycm9ycy5wdXNoKCdhcHBJZCBvbmx5IGFjY2VwdHMgbG93ZXJjYXNlIGNoYXJhY3RlcnMuJyk7XG4gICAgfVxuICAgIGlmICghL15bYS16MC05LV0qJC8udGVzdChpZCkpIHtcbiAgICAgIGVycm9ycy5wdXNoKCdhcHBJZCBleHBlY3RzIG9ubHkgbGV0dGVycywgbnVtYmVycywgYW5kIGRhc2hlcyAoXFwnLVxcJyknKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihbXG4gICAgICAgIGBhcHBJZCAke2lkfSBoYXMgZXJyb3JzOmAsXG4gICAgICAgIC4uLmVycm9ycyxcbiAgICAgIF0uam9pbignXFxuJykpO1xuICAgIH1cbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZUZpbGVSb2xlKCkge1xuICAgIGlmICh0aGlzLnByb3ZpZGVkRmlsZVJvbGUpIHtcbiAgICAgIC8vIE92ZXJyaWRlXG4gICAgICB0aGlzLmZpbGVSb2xlTWFuaWZlc3RBcm4gPSB0aGlzLnByb3ZpZGVkRmlsZVJvbGUuX2FybkZvckNsb3VkQXNzZW1ibHkoKTtcbiAgICAgIGNvbnN0IGNmbkFybiA9IHRoaXMucHJvdmlkZWRGaWxlUm9sZS5fYXJuRm9yQ2xvdWRGb3JtYXRpb24oKTtcbiAgICAgIHRoaXMuZmlsZVJvbGUgPSBjZm5Bcm4gPyBpYW0uUm9sZS5mcm9tUm9sZUFybih0aGlzLCAnQ2RrRmlsZVJvbGUnLCBjZm5Bcm4pIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJvbGVOYW1lID0gdGhpcy5maWxlUm9sZU5hbWU7XG4gICAgdGhpcy5maWxlUm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnQ2RrRmlsZVJvbGUnLCB7XG4gICAgICByb2xlTmFtZSxcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5BY2NvdW50UHJpbmNpcGFsKHRoaXMuYWNjb3VudCksXG4gICAgfSk7XG5cbiAgICB0aGlzLmZpbGVSb2xlTWFuaWZlc3RBcm4gPSBTdGFjay5vZih0aGlzKS5mb3JtYXRBcm4oe1xuICAgICAgcGFydGl0aW9uOiAnJHtBV1M6OlBhcnRpdGlvbn0nLFxuICAgICAgcmVnaW9uOiAnJywgLy8gaWFtIGlzIGdsb2JhbFxuICAgICAgc2VydmljZTogJ2lhbScsXG4gICAgICByZXNvdXJjZTogJ3JvbGUnLFxuICAgICAgcmVzb3VyY2VOYW1lOiByb2xlTmFtZSxcbiAgICAgIGFybkZvcm1hdDogQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZUltYWdlUm9sZSgpIHtcbiAgICAvLyBJdCBtYXkgZW5kIHVwIHNldHRpbmcgaW1hZ2VSb2xlIHRvIHVuZGVmaW5lZCwgYnV0IGF0IGxlYXN0IHdlIHRyaWVkXG4gICAgaWYgKHRoaXMuZGlkSW1hZ2VSb2xlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGlkSW1hZ2VSb2xlID0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLnByb3ZpZGVkSW1hZ2VSb2xlKSB7XG4gICAgICAvLyBPdmVycmlkZVxuICAgICAgdGhpcy5pbWFnZVJvbGVNYW5pZmVzdEFybiA9IHRoaXMucHJvdmlkZWRJbWFnZVJvbGUuX2FybkZvckNsb3VkQXNzZW1ibHkoKTtcbiAgICAgIGNvbnN0IGNmbkFybiA9IHRoaXMucHJvdmlkZWRJbWFnZVJvbGUuX2FybkZvckNsb3VkRm9ybWF0aW9uKCk7XG4gICAgICB0aGlzLmltYWdlUm9sZSA9IGNmbkFybiA/IGlhbS5Sb2xlLmZyb21Sb2xlQXJuKHRoaXMsICdDZGtJbWFnZVJvbGUnLCBjZm5Bcm4pIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJvbGVOYW1lID0gdGhpcy5pbWFnZVJvbGVOYW1lO1xuICAgIHRoaXMuaW1hZ2VSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsICdDZGtJbWFnZVJvbGUnLCB7XG4gICAgICByb2xlTmFtZSxcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5BY2NvdW50UHJpbmNpcGFsKHRoaXMuYWNjb3VudCksXG4gICAgfSk7XG4gICAgdGhpcy5pbWFnZVJvbGVNYW5pZmVzdEFybiA9IFN0YWNrLm9mKHRoaXMpLmZvcm1hdEFybih7XG4gICAgICBwYXJ0aXRpb246ICcke0FXUzo6UGFydGl0aW9ufScsXG4gICAgICByZWdpb246ICcnLCAvLyBpYW0gaXMgZ2xvYmFsXG4gICAgICBzZXJ2aWNlOiAnaWFtJyxcbiAgICAgIHJlc291cmNlOiAncm9sZScsXG4gICAgICByZXNvdXJjZU5hbWU6IHJvbGVOYW1lLFxuICAgICAgYXJuRm9ybWF0OiBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQnVja2V0S2V5KCk6IGttcy5JS2V5IHtcbiAgICByZXR1cm4gbmV3IGttcy5LZXkodGhpcywgJ0J1Y2tldEtleScsIHtcbiAgICAgIGFsaWFzOiBgYWxpYXMvY2RrLSR7dGhpcy5hcHBJZH0tc3RhZ2luZ2AsXG4gICAgICBhZG1pbnM6IFtuZXcgaWFtLkFjY291bnRQcmluY2lwYWwodGhpcy5hY2NvdW50KV0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENyZWF0ZUJ1Y2tldCgpIHtcbiAgICBjb25zdCBzdGFnaW5nQnVja2V0TmFtZSA9IHRoaXMuc3RhZ2luZ0J1Y2tldE5hbWUgPz8gYGNkay0ke3RoaXMuYXBwSWR9LXN0YWdpbmctJHt0aGlzLmFjY291bnR9LSR7dGhpcy5yZWdpb259YDtcbiAgICBjb25zdCBidWNrZXRJZCA9ICdDZGtTdGFnaW5nQnVja2V0JztcbiAgICBjb25zdCBjcmVhdGVkQnVja2V0ID0gdGhpcy5ub2RlLnRyeUZpbmRDaGlsZChidWNrZXRJZCkgYXMgczMuQnVja2V0O1xuICAgIGlmIChjcmVhdGVkQnVja2V0KSB7XG4gICAgICByZXR1cm4gc3RhZ2luZ0J1Y2tldE5hbWU7XG4gICAgfVxuXG4gICAgdGhpcy5lbnN1cmVGaWxlUm9sZSgpO1xuICAgIGNvbnN0IGtleSA9IHRoaXMuY3JlYXRlQnVja2V0S2V5KCk7XG5cbiAgICAvLyBDcmVhdGUgdGhlIGJ1Y2tldCBvbmNlIHRoZSBkZXBlbmRlbmNpZXMgaGF2ZSBiZWVuIGNyZWF0ZWRcbiAgICBjb25zdCBidWNrZXQgPSBuZXcgczMuQnVja2V0KHRoaXMsIGJ1Y2tldElkLCB7XG4gICAgICBidWNrZXROYW1lOiBzdGFnaW5nQnVja2V0TmFtZSxcbiAgICAgIC4uLih0aGlzLmF1dG9EZWxldGVTdGFnaW5nQXNzZXRzID8ge1xuICAgICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICAgIGF1dG9EZWxldGVPYmplY3RzOiB0cnVlLFxuICAgICAgfSA6IHtcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5SRVRBSU4sXG4gICAgICB9KSxcbiAgICAgIGVuY3J5cHRpb246IHMzLkJ1Y2tldEVuY3J5cHRpb24uS01TLFxuICAgICAgZW5jcnlwdGlvbktleToga2V5LFxuXG4gICAgICAvLyBNYW55IEFXUyBhY2NvdW50IHNhZmV0eSBjaGVja2VycyB3aWxsIGNvbXBsYWluIHdoZW4gYnVja2V0cyBhcmVuJ3QgdmVyc2lvbmVkXG4gICAgICB2ZXJzaW9uZWQ6IHRydWUsXG4gICAgICAvLyBNYW55IEFXUyBhY2NvdW50IHNhZmV0eSBjaGVja2VycyB3aWxsIGNvbXBsYWluIHdoZW4gU1NMIGlzbid0IGVuZm9yY2VkXG4gICAgICBlbmZvcmNlU1NMOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuZmlsZVJvbGUpIHtcbiAgICAgIGJ1Y2tldC5ncmFudFJlYWRXcml0ZSh0aGlzLmZpbGVSb2xlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZXBsb3lSb2xlQXJuKSB7XG4gICAgICBidWNrZXQuYWRkVG9SZXNvdXJjZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnczM6R2V0T2JqZWN0KicsXG4gICAgICAgICAgJ3MzOkdldEJ1Y2tldConLFxuICAgICAgICAgICdzMzpMaXN0KicsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW2J1Y2tldC5idWNrZXRBcm4sIGJ1Y2tldC5hcm5Gb3JPYmplY3RzKCcqJyldLFxuICAgICAgICBwcmluY2lwYWxzOiBbbmV3IGlhbS5Bcm5QcmluY2lwYWwodGhpcy5kZXBsb3lSb2xlQXJuKV0sXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgLy8gT2JqZWN0cyBzaG91bGQgbmV2ZXIgYmUgb3ZlcndyaXR0ZW4sIGJ1dCBsZXQncyBtYWtlIHN1cmUgd2UgaGF2ZSBhIGxpZmVjeWNsZSBwb2xpY3lcbiAgICAvLyBmb3IgaXQgYW55d2F5LlxuICAgIGJ1Y2tldC5hZGRMaWZlY3ljbGVSdWxlKHtcbiAgICAgIG5vbmN1cnJlbnRWZXJzaW9uRXhwaXJhdGlvbjogRHVyYXRpb24uZGF5cygzNjUpLFxuICAgIH0pO1xuXG4gICAgYnVja2V0LmFkZExpZmVjeWNsZVJ1bGUoe1xuICAgICAgcHJlZml4OiBERVBMT1lfVElNRV9QUkVGSVgsXG4gICAgICBleHBpcmF0aW9uOiB0aGlzLnByb3BzLmRlcGxveVRpbWVGaWxlQXNzZXRMaWZldGltZSA/PyBEdXJhdGlvbi5kYXlzKDMwKSxcbiAgICB9KTtcblxuICAgIHJldHVybiBzdGFnaW5nQnVja2V0TmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB3ZWxsLWtub3duIG5hbWUgb2YgdGhlIHJlcG9cbiAgICovXG4gIHByaXZhdGUgZ2V0Q3JlYXRlUmVwbyhhc3NldDogRG9ja2VySW1hZ2VBc3NldFNvdXJjZSk6IHN0cmluZyB7XG4gICAgaWYgKCFhc3NldC5hc3NldE5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXNzZXRzIHN5bnRoZXNpemVkIHdpdGggQXBwU2NvcGVkU3RhZ2luZ1N5bnRoZXNpemVyIG11c3QgaW5jbHVkZSBhbiBcXCdhc3NldE5hbWVcXCcgaW4gdGhlIGFzc2V0IHNvdXJjZSBkZWZpbml0aW9uLicpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBpbWFnZSBwdWJsaXNoaW5nIHJvbGUgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgIHRoaXMuZW5zdXJlSW1hZ2VSb2xlKCk7XG5cbiAgICBjb25zdCByZXBvTmFtZSA9IGdlbmVyYXRlUmVwb05hbWUoYCR7dGhpcy5hcHBJZH0vJHthc3NldC5hc3NldE5hbWV9YCk7XG4gICAgaWYgKHRoaXMuc3RhZ2luZ1JlcG9zW2Fzc2V0LmFzc2V0TmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zdGFnaW5nUmVwb3NbYXNzZXQuYXNzZXROYW1lXSA9IG5ldyBlY3IuUmVwb3NpdG9yeSh0aGlzLCByZXBvTmFtZSwge1xuICAgICAgICByZXBvc2l0b3J5TmFtZTogcmVwb05hbWUsXG4gICAgICAgIGxpZmVjeWNsZVJ1bGVzOiBbe1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnR2FyYmFnZSBjb2xsZWN0IG9sZCBpbWFnZSB2ZXJzaW9ucyBhbmQga2VlcCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBsYXRlc3QgdmVyc2lvbnMnLFxuICAgICAgICAgIG1heEltYWdlQ291bnQ6IHRoaXMucHJvcHMuaW1hZ2VBc3NldFZlcnNpb25Db3VudCA/PyAzLFxuICAgICAgICB9XSxcbiAgICAgICAgLi4uKHRoaXMuYXV0b0RlbGV0ZVN0YWdpbmdBc3NldHMgPyB7XG4gICAgICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgICAgIGF1dG9EZWxldGVJbWFnZXM6IHRydWUsXG4gICAgICAgIH0gOiB7XG4gICAgICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5SRVRBSU4sXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLmltYWdlUm9sZSkge1xuICAgICAgICB0aGlzLnN0YWdpbmdSZXBvc1thc3NldC5hc3NldE5hbWVdLmdyYW50UHVsbFB1c2godGhpcy5pbWFnZVJvbGUpO1xuICAgICAgICB0aGlzLnN0YWdpbmdSZXBvc1thc3NldC5hc3NldE5hbWVdLmdyYW50UmVhZCh0aGlzLmltYWdlUm9sZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXBvTmFtZTtcblxuICAgIGZ1bmN0aW9uIGdlbmVyYXRlUmVwb05hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBuYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkucmVwbGFjZSgnLicsICctJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZEZpbGUoYXNzZXQ6IEZpbGVBc3NldFNvdXJjZSk6IEZpbGVTdGFnaW5nTG9jYXRpb24ge1xuICAgIC8vIEhhcyBzaWRlIGVmZmVjdHMgc28gbXVzdCBnbyBmaXJzdFxuICAgIGNvbnN0IGJ1Y2tldE5hbWUgPSB0aGlzLmdldENyZWF0ZUJ1Y2tldCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGJ1Y2tldE5hbWUsXG4gICAgICBhc3N1bWVSb2xlQXJuOiB0aGlzLmZpbGVSb2xlTWFuaWZlc3RBcm4sXG4gICAgICBwcmVmaXg6IGFzc2V0LmRlcGxveVRpbWUgPyBERVBMT1lfVElNRV9QUkVGSVggOiB1bmRlZmluZWQsXG4gICAgICBkZXBlbmRlbmN5U3RhY2s6IHRoaXMsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhZGREb2NrZXJJbWFnZShhc3NldDogRG9ja2VySW1hZ2VBc3NldFNvdXJjZSk6IEltYWdlU3RhZ2luZ0xvY2F0aW9uIHtcbiAgICAvLyBIYXMgc2lkZSBlZmZlY3RzIHNvIG11c3QgZ28gZmlyc3RcbiAgICBjb25zdCByZXBvTmFtZSA9IHRoaXMuZ2V0Q3JlYXRlUmVwbyhhc3NldCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVwb05hbWUsXG4gICAgICBhc3N1bWVSb2xlQXJuOiB0aGlzLmltYWdlUm9sZU1hbmlmZXN0QXJuLFxuICAgICAgZGVwZW5kZW5jeVN0YWNrOiB0aGlzLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogU3ludGhlc2l6ZXMgdGhlIGNsb3VkZm9ybWF0aW9uIHRlbXBsYXRlIGludG8gYSBjbG91ZCBhc3NlbWJseS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3N5bnRoZXNpemVUZW1wbGF0ZShzZXNzaW9uOiBJU3ludGhlc2lzU2Vzc2lvbiwgbG9va3VwUm9sZUFybj86IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHN1cGVyLl9zeW50aGVzaXplVGVtcGxhdGUoc2Vzc2lvbiwgbG9va3VwUm9sZUFybik7XG5cbiAgICBjb25zdCBidWlsZGVyID0gc2Vzc2lvbi5hc3NlbWJseTtcbiAgICBjb25zdCBvdXRQYXRoID0gcGF0aC5qb2luKGJ1aWxkZXIub3V0ZGlyLCB0aGlzLnRlbXBsYXRlRmlsZSk7XG4gICAgY29uc3Qgc2l6ZSA9IGZzLnN0YXRTeW5jKG91dFBhdGgpLnNpemU7XG4gICAgaWYgKHNpemUgPiA1MTIwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdGFnaW5nIHJlc291cmNlIHRlbXBsYXRlIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gNTEyMDAgYnl0ZXMsIGJ1dCBnb3QgJHtzaXplfSBieXRlc2ApO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Stack } from 'aws-cdk-lib';
|
|
1
|
+
import { Stack } from 'aws-cdk-lib/core';
|
|
2
2
|
import { IStagingResources, IStagingResourcesFactory, ObtainStagingResourcesContext } from './staging-stack';
|
|
3
3
|
/**
|
|
4
4
|
* Wraps another IStagingResources factory, and caches the result on a per-environment basis.
|
|
@@ -29,4 +29,4 @@ class PerEnvironmentStagingFactory {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
exports.PerEnvironmentStagingFactory = PerEnvironmentStagingFactory;
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyLWVudi1zdGFnaW5nLWZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwZXItZW52LXN0YWdpbmctZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBdUQ7QUFHdkQ7Ozs7O0dBS0c7QUFDSCxNQUFNLGlCQUFpQixHQUFHLElBQUksNEJBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBNkIsQ0FBQyxDQUFDO0FBRTFGOztHQUVHO0FBQ0gsTUFBYSw0QkFBNEI7SUFDdkMsWUFBNkIsT0FBaUM7UUFBakMsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7S0FBSztJQUU1RCxzQkFBc0IsQ0FBQyxLQUFZLEVBQUUsT0FBc0M7UUFDaEYsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDO1FBRTNDLE1BQU0sS0FBSyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JDLElBQUksUUFBUSxFQUFFO1lBQ1osT0FBTyxRQUFRLENBQUM7U0FDakI7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNuRSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1QixPQUFPLE1BQU0sQ0FBQztLQUNmO0NBQ0Y7QUFoQkQsb0VBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IEFwcFNjb3BlZEdsb2JhbCB9IGZyb20gJy4vcHJpdmF0ZS9hcHAtZ2xvYmFsJztcbmltcG9ydCB7IElTdGFnaW5nUmVzb3VyY2VzLCBJU3RhZ2luZ1Jlc291cmNlc0ZhY3RvcnksIE9idGFpblN0YWdpbmdSZXNvdXJjZXNDb250ZXh0IH0gZnJvbSAnLi9zdGFnaW5nLXN0YWNrJztcblxuLyoqXG4gKiBQZXItZW52aXJvbm1lbnQgY2FjaGVcbiAqXG4gKiBUaGlzIGlzIGEgZ2xvYmFsIGJlY2F1c2Ugd2UgbWlnaHQgaGF2ZSBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgdGhpcyBjbGFzc1xuICogaW4gdGhlIGFwcCwgYnV0IHdlIHdhbnQgdG8gY2FjaGUgYWNyb3NzIGFsbCBvZiB0aGVtLlxuICovXG5jb25zdCBFTlZJUk9OTUVOVF9DQUNIRSA9IG5ldyBBcHBTY29wZWRHbG9iYWwoKCkgPT4gbmV3IE1hcDxzdHJpbmcsIElTdGFnaW5nUmVzb3VyY2VzPigpKTtcblxuLyoqXG4gKiBXcmFwcyBhbm90aGVyIElTdGFnaW5nUmVzb3VyY2VzIGZhY3RvcnksIGFuZCBjYWNoZXMgdGhlIHJlc3VsdCBvbiBhIHBlci1lbnZpcm9ubWVudCBiYXNpcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFBlckVudmlyb25tZW50U3RhZ2luZ0ZhY3RvcnkgaW1wbGVtZW50cyBJU3RhZ2luZ1Jlc291cmNlc0ZhY3Rvcnkge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHdyYXBwZWQ6IElTdGFnaW5nUmVzb3VyY2VzRmFjdG9yeSkgeyB9XG5cbiAgcHVibGljIG9idGFpblN0YWdpbmdSZXNvdXJjZXMoc3RhY2s6IFN0YWNrLCBjb250ZXh0OiBPYnRhaW5TdGFnaW5nUmVzb3VyY2VzQ29udGV4dCk6IElTdGFnaW5nUmVzb3VyY2VzIHtcbiAgICBjb25zdCBjYWNoZUtleSA9IGNvbnRleHQuZW52aXJvbm1lbnRTdHJpbmc7XG5cbiAgICBjb25zdCBjYWNoZSA9IEVOVklST05NRU5UX0NBQ0hFLmZvcihzdGFjayk7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBjYWNoZS5nZXQoY2FjaGVLZXkpO1xuICAgIGlmIChleGlzdGluZykge1xuICAgICAgcmV0dXJuIGV4aXN0aW5nO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMud3JhcHBlZC5vYnRhaW5TdGFnaW5nUmVzb3VyY2VzKHN0YWNrLCBjb250ZXh0KTtcbiAgICBjYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AppScopedGlobal = void 0;
|
|
4
|
-
const
|
|
4
|
+
const core_1 = require("aws-cdk-lib/core");
|
|
5
5
|
/**
|
|
6
6
|
* Hold an App-wide global variable
|
|
7
7
|
*
|
|
@@ -17,8 +17,8 @@ class AppScopedGlobal {
|
|
|
17
17
|
this.map = new WeakMap();
|
|
18
18
|
}
|
|
19
19
|
for(ctr) {
|
|
20
|
-
const app =
|
|
21
|
-
if (!
|
|
20
|
+
const app = core_1.App.of(ctr);
|
|
21
|
+
if (!core_1.App.isApp(app)) {
|
|
22
22
|
throw new Error(`Construct ${ctr.node.path} must be part of an App`);
|
|
23
23
|
}
|
|
24
24
|
const existing = this.map.get(app);
|
|
@@ -31,4 +31,4 @@ class AppScopedGlobal {
|
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
exports.AppScopedGlobal = AppScopedGlobal;
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWdsb2JhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFwcC1nbG9iYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBR3ZDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSxlQUFlO0lBRzFCLFlBQTZCLE9BQWdCO1FBQWhCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFGNUIsUUFBRyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7S0FHNUM7SUFFTSxHQUFHLENBQUMsR0FBZTtRQUN4QixNQUFNLEdBQUcsR0FBRyxVQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUkseUJBQXlCLENBQUMsQ0FBQztTQUN0RTtRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLElBQUksUUFBUSxFQUFFO1lBQ1osT0FBTyxRQUFRLENBQUM7U0FDakI7UUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLE9BQU8sUUFBUSxDQUFDO0tBQ2pCO0NBQ0Y7QUFwQkQsMENBb0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBJQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbi8qKlxuICogSG9sZCBhbiBBcHAtd2lkZSBnbG9iYWwgdmFyaWFibGVcbiAqXG4gKiBUaGlzIGlzIGEgcmVwbGFjZW1lbnQgZm9yIGEgYHN0YXRpY2AgdmFyaWFibGUsIGJ1dCBkb2VzIHRoZSByaWdodCB0aGluZyBpbiBjYXNlIHBlb3BsZVxuICogaW5zdGFudGlhdGUgbXVsdGlwbGUgQXBwcyBpbiB0aGUgc2FtZSBwcm9jZXNzIHNwYWNlIChmb3IgZXhhbXBsZSwgaW4gdW5pdCB0ZXN0cyBvclxuICogcGVvcGxlIHVzaW5nIGBjbGktbGliYCBpbiBhZHZhbmNlZCBjb25maWd1cmF0aW9ucykuXG4gKlxuICogVGhpcyBjbGFzcyBhc3N1bWVzIHRoYXQgdGhlIGdsb2JhbCB5b3UncmUgZ29pbmcgdG8gYmUgc3RvcmluZyBpcyBhIG11dGFibGUgb2JqZWN0LlxuICovXG5leHBvcnQgY2xhc3MgQXBwU2NvcGVkR2xvYmFsPEE+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBtYXAgPSBuZXcgV2Vha01hcDxBcHAsIEE+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBmYWN0b3J5OiAoKSA9PiBBKSB7XG4gIH1cblxuICBwdWJsaWMgZm9yKGN0cjogSUNvbnN0cnVjdCk6IEEge1xuICAgIGNvbnN0IGFwcCA9IEFwcC5vZihjdHIpO1xuICAgIGlmICghQXBwLmlzQXBwKGFwcCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29uc3RydWN0ICR7Y3RyLm5vZGUucGF0aH0gbXVzdCBiZSBwYXJ0IG9mIGFuIEFwcGApO1xuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5tYXAuZ2V0KGFwcCk7XG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgfVxuICAgIGNvbnN0IGluc3RhbmNlID0gdGhpcy5mYWN0b3J5KCk7XG4gICAgdGhpcy5tYXAuc2V0KGFwcCwgaW5zdGFuY2UpO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxufVxuIl19
|
package/lib/staging-stack.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DockerImageAssetSource, FileAssetSource, Stack } from 'aws-cdk-lib';
|
|
1
|
+
import { DockerImageAssetSource, FileAssetSource, Stack } from 'aws-cdk-lib/core';
|
|
2
2
|
import { IConstruct } from 'constructs';
|
|
3
3
|
/**
|
|
4
4
|
* Information returned by the Staging Stack for each file asset.
|
package/lib/staging-stack.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2luZy1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0YWdpbmctc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERvY2tlckltYWdlQXNzZXRTb3VyY2UsIEZpbGVBc3NldFNvdXJjZSwgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBJbmZvcm1hdGlvbiByZXR1cm5lZCBieSB0aGUgU3RhZ2luZyBTdGFjayBmb3IgZWFjaCBmaWxlIGFzc2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVTdGFnaW5nTG9jYXRpb24ge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHN0YWdpbmcgYnVja2V0XG4gICAqL1xuICByZWFkb25seSBidWNrZXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcHJlZml4IHRvIGFkZCB0byB0aGUga2V5c1xuICAgKlxuICAgKiBAZGVmYXVsdCAnJ1xuICAgKi9cbiAgcmVhZG9ubHkgcHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIHRvIGFzc3VtZSB0byB3cml0ZSBmaWxlcyB0byB0aGlzIGJ1Y2tldFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERvbid0IGFzc3VtZSBhIHJvbGVcbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFjayB0aGF0IGNyZWF0ZXMgdGhpcyBidWNrZXQgKGxlYWRzIHRvIGRlcGVuZGVuY2llcyBvbiBpdClcbiAgICpcbiAgICogQGRlZmF1bHQgLSBEb24ndCBhZGQgZGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRlbmN5U3RhY2s/OiBTdGFjaztcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiByZXR1cm5lZCBieSB0aGUgU3RhZ2luZyBTdGFjayBmb3IgZWFjaCBpbWFnZSBhc3NldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlU3RhZ2luZ0xvY2F0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdGFnaW5nIHJlcG9zaXRvcnlcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhcm4gdG8gYXNzdW1lIHRvIHdyaXRlIGZpbGVzIHRvIHRoaXMgcmVwb3NpdG9yeVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERvbid0IGFzc3VtZSBhIHJvbGVcbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFjayB0aGF0IGNyZWF0ZXMgdGhpcyByZXBvc2l0b3J5IChsZWFkcyB0byBkZXBlbmRlbmNpZXMgb24gaXQpXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRG9uJ3QgYWRkIGRlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVwZW5kZW5jeVN0YWNrPzogU3RhY2s7XG59XG5cbi8qKlxuICogU3RhZ2luZyBSZXNvdXJjZSBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVN0YWdpbmdSZXNvdXJjZXMgZXh0ZW5kcyBJQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFJldHVybiBzdGFnaW5nIHJlc291cmNlIGluZm9ybWF0aW9uIGZvciBhIGZpbGUgYXNzZXQuXG4gICAqL1xuICBhZGRGaWxlKGFzc2V0OiBGaWxlQXNzZXRTb3VyY2UpOiBGaWxlU3RhZ2luZ0xvY2F0aW9uO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gc3RhZ2luZyByZXNvdXJjZSBpbmZvcm1hdGlvbiBmb3IgYSBkb2NrZXIgYXNzZXQuXG4gICAqL1xuICBhZGREb2NrZXJJbWFnZShhc3NldDogRG9ja2VySW1hZ2VBc3NldFNvdXJjZSk6IEltYWdlU3RhZ2luZ0xvY2F0aW9uO1xufVxuXG4vKipcbiAqIFN0YWdpbmcgUmVzb3VyY2UgRmFjdG9yeSBpbnRlcmZhY2UuXG4gKlxuICogVGhlIGZ1bmN0aW9uIGluY2x1ZGVkIGluIHRoaXMgY2xhc3Mgd2lsbCBiZSBjYWxsZWQgYnkgdGhlIHN5bnRoZXNpemVyXG4gKiB0byBjcmVhdGUgb3IgcmVmZXJlbmNlIGFuIElTdGFnaW5nUmVzb3VyY2VzIGNvbnN0cnVjdCB0aGF0IGhhcyB0aGUgbmVjZXNzYXJ5XG4gKiBzdGFnaW5nIHJlc291cmNlcyBmb3IgdGhlIHN0YWNrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTdGFnaW5nUmVzb3VyY2VzRmFjdG9yeSB7XG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gb2JqZWN0IHRoYXQgd2lsbCBtYW5hZ2Ugc3RhZ2luZyByZXNvdXJjZXMgZm9yIHRoZSBnaXZlbiBzdGFja1xuICAgKlxuICAgKiBUaGlzIGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgdGhlIGBBcHBTdGFnaW5nU3ludGhlc2l6ZXJgIGJpbmRzIHRvIGEgc3BlY2lmaWNcbiAgICogc3RhY2ssIGFuZCBhbGxvd3Mgc2VsZWN0aW5nIHdoZXJlIHRoZSBzdGFnaW5nIHJlc291cmNlcyBnby5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgY2FuIGNob29zZSB0byBlaXRoZXIgY3JlYXRlIGEgbmV3IGNvbnN0cnVjdCAocGVyaGFwcyBhIHN0YWNrKVxuICAgKiBhbmQgcmV0dXJuIGl0LCBvciByZWZlcmVuY2UgYW4gZXhpc3RpbmcgY29uc3RydWN0LlxuICAgKlxuICAgKiBAcGFyYW0gc3RhY2sgLSBzdGFjayB0byByZXR1cm4gYW4gYXBwcm9wcmlhdGUgSVN0YWdpbmdTdGFjayBmb3JcbiAgICovXG4gIG9idGFpblN0YWdpbmdSZXNvdXJjZXMoc3RhY2s6IFN0YWNrLCBjb250ZXh0OiBPYnRhaW5TdGFnaW5nUmVzb3VyY2VzQ29udGV4dCk6IElTdGFnaW5nUmVzb3VyY2VzO1xufVxuXG4vKipcbiAqIENvbnRleHQgcGFyYW1ldGVycyBmb3IgdGhlICdvYnRhaW5TdGFnaW5nUmVzb3VyY2VzJyBmdW5jdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9idGFpblN0YWdpbmdSZXNvdXJjZXNDb250ZXh0IHtcbiAgLyoqXG4gICAqIEEgdW5pcXVlIHN0cmluZyBkZXNjcmliaW5nIHRoZSBlbnZpcm9ubWVudCB0aGF0IGlzIGd1YXJhbnRlZWQgbm90IHRvIGhhdmUgdG9rZW5zIGluIGl0XG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudFN0cmluZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBkZXBsb3kgYWN0aW9uIHJvbGUsIGlmIGdpdmVuXG4gICAqXG4gICAqIFRoaXMgcm9sZSB3aWxsIG5lZWQgcGVybWlzc2lvbnMgdG8gcmVhZCBmcm9tIHRvIHRoZSBzdGFnaW5nIHJlc291cmNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZXBsb3kgcm9sZSBBUk4gaXMgdW5rbm93blxuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95Um9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHF1YWxpZmllciBwYXNzZWQgdG8gdGhlIHN5bnRoZXNpemVyXG4gICAqXG4gICAqIFRoZSBzdGFnaW5nIHN0YWNrIHNob3VsZG4ndCBuZWVkIHRoaXMsIGJ1dCBpdCBtaWdodC5cbiAgICovXG4gIHJlYWRvbmx5IHF1YWxpZmllcjogc3RyaW5nO1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-cdk/app-staging-synthesizer-alpha",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.85.0-alpha.0",
|
|
5
5
|
"description": "Cdk synthesizer for with app-scoped staging stack",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"types": "lib/index.d.ts",
|
|
@@ -84,19 +84,19 @@
|
|
|
84
84
|
}
|
|
85
85
|
},
|
|
86
86
|
"dependencies": {
|
|
87
|
-
"aws-cdk-lib": "2.
|
|
87
|
+
"aws-cdk-lib": "2.85.0",
|
|
88
88
|
"constructs": "^10.0.0"
|
|
89
89
|
},
|
|
90
90
|
"devDependencies": {
|
|
91
|
-
"aws-cdk-lib": "2.
|
|
92
|
-
"@aws-cdk/integ-runner": "2.
|
|
93
|
-
"@aws-cdk/integ-tests-alpha": "2.
|
|
91
|
+
"aws-cdk-lib": "2.85.0",
|
|
92
|
+
"@aws-cdk/integ-runner": "2.85.0-alpha.0",
|
|
93
|
+
"@aws-cdk/integ-tests-alpha": "2.85.0-alpha.0",
|
|
94
94
|
"constructs": "^10.0.0",
|
|
95
|
-
"@aws-cdk/cdk-build-tools": "2.
|
|
96
|
-
"@aws-cdk/pkglint": "2.
|
|
95
|
+
"@aws-cdk/cdk-build-tools": "2.85.0-alpha.0",
|
|
96
|
+
"@aws-cdk/pkglint": "2.85.0-alpha.0"
|
|
97
97
|
},
|
|
98
98
|
"peerDependencies": {
|
|
99
|
-
"aws-cdk-lib": "2.
|
|
99
|
+
"aws-cdk-lib": "2.85.0",
|
|
100
100
|
"constructs": "^10.0.0"
|
|
101
101
|
},
|
|
102
102
|
"publishConfig": {
|