@rio-cloud/cdk-v2-constructs 8.6.0 → 8.6.1
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
CHANGED
|
@@ -15168,7 +15168,7 @@
|
|
|
15168
15168
|
"assembly": "@rio-cloud/cdk-v2-constructs",
|
|
15169
15169
|
"docs": {
|
|
15170
15170
|
"example": " const appStack = new AppStack()\n const template = Template.fromStack(appStack);\n expect(NormalizedTemplate.from(template).toMatchSnapshot();",
|
|
15171
|
-
"remarks": "The fromTemplate() method works by applying replacements for specific values with a\nplaceholder value. This is particularly useful because elements like the S3\nkeys for Lambda code assets include hash strings that change with every dependency update. Normalizing\nthese values prevents false negatives during template object comparisons.\n\nCurrent replacements:\n- SHA-256 hash strings (64 alphanumeric characters) are replaced with 'dummy-cdk-asset'.\n- Tags with Key 'dd_cdk_construct' are replaced with 'dummy-datadog-version'.\n- LatestNodeRuntimeMap with 'dummyKey': 'dummyValue'",
|
|
15171
|
+
"remarks": "The fromTemplate() method works by applying replacements for specific values with a\nplaceholder value. This is particularly useful because elements like the S3\nkeys for Lambda code assets include hash strings that change with every dependency update. Normalizing\nthese values prevents false negatives during template object comparisons.\n\nCurrent replacements:\n- SHA-256 hash strings (64 alphanumeric characters) are replaced with 'dummy-cdk-asset'.\n- Tags with Key 'dd_cdk_construct' are replaced with 'dummy-datadog-version'.\n- LatestNodeRuntimeMap with 'dummyKey': 'dummyValue'\n- current_account-current_region-HASH with 'dummy-cdk-region'.",
|
|
15172
15172
|
"stability": "stable",
|
|
15173
15173
|
"summary": "A utility class that normalizes a Template object to simplify template comparisons in tests."
|
|
15174
15174
|
},
|
|
@@ -15181,7 +15181,7 @@
|
|
|
15181
15181
|
"kind": "class",
|
|
15182
15182
|
"locationInModule": {
|
|
15183
15183
|
"filename": "src/test/normalized-test-template.ts",
|
|
15184
|
-
"line":
|
|
15184
|
+
"line": 21
|
|
15185
15185
|
},
|
|
15186
15186
|
"methods": [
|
|
15187
15187
|
{
|
|
@@ -15190,7 +15190,7 @@
|
|
|
15190
15190
|
},
|
|
15191
15191
|
"locationInModule": {
|
|
15192
15192
|
"filename": "src/test/normalized-test-template.ts",
|
|
15193
|
-
"line":
|
|
15193
|
+
"line": 22
|
|
15194
15194
|
},
|
|
15195
15195
|
"name": "fromTemplate",
|
|
15196
15196
|
"parameters": [
|
|
@@ -18201,7 +18201,7 @@
|
|
|
18201
18201
|
"assembly": "@rio-cloud/cdk-v2-constructs",
|
|
18202
18202
|
"base": "constructs.Construct",
|
|
18203
18203
|
"docs": {
|
|
18204
|
-
"remarks": "Use this construct when one stack produces between one and three related projects that should share a catalog\ncollection. Shared tags are inherited by every child, while child tags with the same key override them. The RIO\nLanding Zone `team_identifier` tag is always included.\n\nThe files are uploaded after the stack reaches `CREATE_COMPLETE` or `UPDATE_COMPLETE`. In CodeBuild, the build number\nidentifies the upload; otherwise the collection version is used.\n\nExample:\n```ts\nconst apiSbom = new s3Assets.Asset(this, 'ApiSbomAsset', {\n path: 'build/api-sbom.json',\n});\nconst infrastructureSbom = new s3Assets.Asset(this, 'InfrastructureSbomAsset', {\n path: 'build/infrastructure-sbom.json',\n});\n\nnew SbomCatalogProject(this, 'CatalogUpload', {\n collectionName: 'billing',\n collectionVersion: '1.4.0',\n sharedTags: ['domain:billing'],\n children: [\n {\n name: 'api',\n sbom: apiSbom,\n additionalTags: ['component:backend'],\n },\n {\n name: 'infrastructure',\n sbom: infrastructureSbom,\n additionalTags: ['component:infrastructure'],\n },\n ],\n});\n```",
|
|
18204
|
+
"remarks": "Use this construct when one stack produces between one and three related projects that should share a catalog\ncollection. Shared tags are inherited by every child, while child tags with the same key override them. The RIO\nLanding Zone `team_identifier` tag is always included.\n\nThe files are uploaded after the stack reaches `CREATE_COMPLETE` or `UPDATE_COMPLETE`. In CodeBuild, the build number\nidentifies the upload; otherwise the collection version is used. All SBOM catalog constructs in the same stack reuse\none upload Lambda.\n\nExample:\n```ts\nconst apiSbom = new s3Assets.Asset(this, 'ApiSbomAsset', {\n path: 'build/api-sbom.json',\n});\nconst infrastructureSbom = new s3Assets.Asset(this, 'InfrastructureSbomAsset', {\n path: 'build/infrastructure-sbom.json',\n});\n\nnew SbomCatalogProject(this, 'CatalogUpload', {\n collectionName: 'billing',\n collectionVersion: '1.4.0',\n sharedTags: ['domain:billing'],\n children: [\n {\n name: 'api',\n sbom: apiSbom,\n additionalTags: ['component:backend'],\n },\n {\n name: 'infrastructure',\n sbom: infrastructureSbom,\n additionalTags: ['component:infrastructure'],\n },\n ],\n});\n```",
|
|
18205
18205
|
"stability": "stable",
|
|
18206
18206
|
"summary": "Registers a collection of related project SBOMs and optional VEX files in the central SBOM catalog."
|
|
18207
18207
|
},
|
|
@@ -18212,7 +18212,7 @@
|
|
|
18212
18212
|
},
|
|
18213
18213
|
"locationInModule": {
|
|
18214
18214
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18215
|
-
"line":
|
|
18215
|
+
"line": 191
|
|
18216
18216
|
},
|
|
18217
18217
|
"parameters": [
|
|
18218
18218
|
{
|
|
@@ -18238,7 +18238,7 @@
|
|
|
18238
18238
|
"kind": "class",
|
|
18239
18239
|
"locationInModule": {
|
|
18240
18240
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18241
|
-
"line":
|
|
18241
|
+
"line": 190
|
|
18242
18242
|
},
|
|
18243
18243
|
"name": "SbomCatalogProject",
|
|
18244
18244
|
"symbolId": "src/sbom-catalog/catalog-project:SbomCatalogProject"
|
|
@@ -18254,7 +18254,7 @@
|
|
|
18254
18254
|
"kind": "interface",
|
|
18255
18255
|
"locationInModule": {
|
|
18256
18256
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18257
|
-
"line":
|
|
18257
|
+
"line": 50
|
|
18258
18258
|
},
|
|
18259
18259
|
"name": "SbomCatalogProjectChild",
|
|
18260
18260
|
"properties": [
|
|
@@ -18267,7 +18267,7 @@
|
|
|
18267
18267
|
"immutable": true,
|
|
18268
18268
|
"locationInModule": {
|
|
18269
18269
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18270
|
-
"line":
|
|
18270
|
+
"line": 54
|
|
18271
18271
|
},
|
|
18272
18272
|
"name": "name",
|
|
18273
18273
|
"type": {
|
|
@@ -18283,7 +18283,7 @@
|
|
|
18283
18283
|
"immutable": true,
|
|
18284
18284
|
"locationInModule": {
|
|
18285
18285
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18286
|
-
"line":
|
|
18286
|
+
"line": 68
|
|
18287
18287
|
},
|
|
18288
18288
|
"name": "sbom",
|
|
18289
18289
|
"type": {
|
|
@@ -18300,7 +18300,7 @@
|
|
|
18300
18300
|
"immutable": true,
|
|
18301
18301
|
"locationInModule": {
|
|
18302
18302
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18303
|
-
"line":
|
|
18303
|
+
"line": 65
|
|
18304
18304
|
},
|
|
18305
18305
|
"name": "additionalTags",
|
|
18306
18306
|
"optional": true,
|
|
@@ -18323,7 +18323,7 @@
|
|
|
18323
18323
|
"immutable": true,
|
|
18324
18324
|
"locationInModule": {
|
|
18325
18325
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18326
|
-
"line":
|
|
18326
|
+
"line": 57
|
|
18327
18327
|
},
|
|
18328
18328
|
"name": "version",
|
|
18329
18329
|
"optional": true,
|
|
@@ -18340,7 +18340,7 @@
|
|
|
18340
18340
|
"immutable": true,
|
|
18341
18341
|
"locationInModule": {
|
|
18342
18342
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18343
|
-
"line":
|
|
18343
|
+
"line": 71
|
|
18344
18344
|
},
|
|
18345
18345
|
"name": "vex",
|
|
18346
18346
|
"optional": true,
|
|
@@ -18361,7 +18361,7 @@
|
|
|
18361
18361
|
"kind": "interface",
|
|
18362
18362
|
"locationInModule": {
|
|
18363
18363
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18364
|
-
"line":
|
|
18364
|
+
"line": 74
|
|
18365
18365
|
},
|
|
18366
18366
|
"name": "SbomCatalogProjectProps",
|
|
18367
18367
|
"properties": [
|
|
@@ -18375,7 +18375,7 @@
|
|
|
18375
18375
|
"immutable": true,
|
|
18376
18376
|
"locationInModule": {
|
|
18377
18377
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18378
|
-
"line":
|
|
18378
|
+
"line": 90
|
|
18379
18379
|
},
|
|
18380
18380
|
"name": "children",
|
|
18381
18381
|
"type": {
|
|
@@ -18396,7 +18396,7 @@
|
|
|
18396
18396
|
"immutable": true,
|
|
18397
18397
|
"locationInModule": {
|
|
18398
18398
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18399
|
-
"line":
|
|
18399
|
+
"line": 76
|
|
18400
18400
|
},
|
|
18401
18401
|
"name": "collectionName",
|
|
18402
18402
|
"type": {
|
|
@@ -18413,7 +18413,7 @@
|
|
|
18413
18413
|
"immutable": true,
|
|
18414
18414
|
"locationInModule": {
|
|
18415
18415
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18416
|
-
"line":
|
|
18416
|
+
"line": 79
|
|
18417
18417
|
},
|
|
18418
18418
|
"name": "collectionVersion",
|
|
18419
18419
|
"optional": true,
|
|
@@ -18431,7 +18431,7 @@
|
|
|
18431
18431
|
"immutable": true,
|
|
18432
18432
|
"locationInModule": {
|
|
18433
18433
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18434
|
-
"line":
|
|
18434
|
+
"line": 87
|
|
18435
18435
|
},
|
|
18436
18436
|
"name": "sharedTags",
|
|
18437
18437
|
"optional": true,
|
|
@@ -19166,7 +19166,7 @@
|
|
|
19166
19166
|
"assembly": "@rio-cloud/cdk-v2-constructs",
|
|
19167
19167
|
"base": "constructs.Construct",
|
|
19168
19168
|
"docs": {
|
|
19169
|
-
"remarks": "Use this construct when a stack owns one independently versioned project. The files are uploaded after the stack\nreaches `CREATE_COMPLETE` or `UPDATE_COMPLETE`. In CodeBuild, the build number identifies the upload; otherwise the\nproject version is used.\n\nThe construct automatically adds the RIO Landing Zone `team_identifier` tag and grants the generated upload Lambda\npermission to read the source assets and write them to the central catalog bucket.\n\nExample:\n```ts\nconst sbom = new s3Assets.Asset(this, 'SbomAsset', {\n path: 'build/sbom.json',\n});\nconst vex = new s3Assets.Asset(this, 'VexAsset', {\n path: 'build/vex.json',\n});\n\nnew StandaloneSbomCatalogProject(this, 'CatalogUpload', {\n name: 'billing-api',\n version: '1.4.0',\n additionalTags: ['component:backend'],\n sbom,\n vex,\n});\n```",
|
|
19169
|
+
"remarks": "Use this construct when a stack owns one independently versioned project. The files are uploaded after the stack\nreaches `CREATE_COMPLETE` or `UPDATE_COMPLETE`. In CodeBuild, the build number identifies the upload; otherwise the\nproject version is used.\n\nThe construct automatically adds the RIO Landing Zone `team_identifier` tag and grants the generated upload Lambda\npermission to read the source assets and write them to the central catalog bucket. All SBOM catalog constructs in\nthe same stack reuse one upload Lambda.\n\nExample:\n```ts\nconst sbom = new s3Assets.Asset(this, 'SbomAsset', {\n path: 'build/sbom.json',\n});\nconst vex = new s3Assets.Asset(this, 'VexAsset', {\n path: 'build/vex.json',\n});\n\nnew StandaloneSbomCatalogProject(this, 'CatalogUpload', {\n name: 'billing-api',\n version: '1.4.0',\n additionalTags: ['component:backend'],\n sbom,\n vex,\n});\n```",
|
|
19170
19170
|
"stability": "stable",
|
|
19171
19171
|
"summary": "Registers one project's SBOM and optional VEX in the central SBOM catalog."
|
|
19172
19172
|
},
|
|
@@ -19177,7 +19177,7 @@
|
|
|
19177
19177
|
},
|
|
19178
19178
|
"locationInModule": {
|
|
19179
19179
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
19180
|
-
"line":
|
|
19180
|
+
"line": 123
|
|
19181
19181
|
},
|
|
19182
19182
|
"parameters": [
|
|
19183
19183
|
{
|
|
@@ -19203,7 +19203,7 @@
|
|
|
19203
19203
|
"kind": "class",
|
|
19204
19204
|
"locationInModule": {
|
|
19205
19205
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
19206
|
-
"line":
|
|
19206
|
+
"line": 122
|
|
19207
19207
|
},
|
|
19208
19208
|
"name": "StandaloneSbomCatalogProject",
|
|
19209
19209
|
"symbolId": "src/sbom-catalog/catalog-project:StandaloneSbomCatalogProject"
|
|
@@ -19218,7 +19218,7 @@
|
|
|
19218
19218
|
"kind": "interface",
|
|
19219
19219
|
"locationInModule": {
|
|
19220
19220
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
19221
|
-
"line":
|
|
19221
|
+
"line": 27
|
|
19222
19222
|
},
|
|
19223
19223
|
"name": "StandaloneSbomCatalogProjectProps",
|
|
19224
19224
|
"properties": [
|
|
@@ -19231,7 +19231,7 @@
|
|
|
19231
19231
|
"immutable": true,
|
|
19232
19232
|
"locationInModule": {
|
|
19233
19233
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
19234
|
-
"line":
|
|
19234
|
+
"line": 29
|
|
19235
19235
|
},
|
|
19236
19236
|
"name": "name",
|
|
19237
19237
|
"type": {
|
|
@@ -19247,7 +19247,7 @@
|
|
|
19247
19247
|
"immutable": true,
|
|
19248
19248
|
"locationInModule": {
|
|
19249
19249
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
19250
|
-
"line":
|
|
19250
|
+
"line": 43
|
|
19251
19251
|
},
|
|
19252
19252
|
"name": "sbom",
|
|
19253
19253
|
"type": {
|
|
@@ -19264,7 +19264,7 @@
|
|
|
19264
19264
|
"immutable": true,
|
|
19265
19265
|
"locationInModule": {
|
|
19266
19266
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
19267
|
-
"line":
|
|
19267
|
+
"line": 40
|
|
19268
19268
|
},
|
|
19269
19269
|
"name": "additionalTags",
|
|
19270
19270
|
"optional": true,
|
|
@@ -19287,7 +19287,7 @@
|
|
|
19287
19287
|
"immutable": true,
|
|
19288
19288
|
"locationInModule": {
|
|
19289
19289
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
19290
|
-
"line":
|
|
19290
|
+
"line": 32
|
|
19291
19291
|
},
|
|
19292
19292
|
"name": "version",
|
|
19293
19293
|
"optional": true,
|
|
@@ -19304,7 +19304,7 @@
|
|
|
19304
19304
|
"immutable": true,
|
|
19305
19305
|
"locationInModule": {
|
|
19306
19306
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
19307
|
-
"line":
|
|
19307
|
+
"line": 46
|
|
19308
19308
|
},
|
|
19309
19309
|
"name": "vex",
|
|
19310
19310
|
"optional": true,
|
|
@@ -29632,5 +29632,5 @@
|
|
|
29632
29632
|
}
|
|
29633
29633
|
},
|
|
29634
29634
|
"version": "0.0.0",
|
|
29635
|
-
"fingerprint": "
|
|
29635
|
+
"fingerprint": "oyz7p7EyEMFOH3ax+2pSZT1UwUiRvLfKpfUSHyKN+oY="
|
|
29636
29636
|
}
|
|
@@ -60,7 +60,8 @@ export interface SbomCatalogProjectProps {
|
|
|
60
60
|
* project version is used.
|
|
61
61
|
*
|
|
62
62
|
* The construct automatically adds the RIO Landing Zone `team_identifier` tag and grants the generated upload Lambda
|
|
63
|
-
* permission to read the source assets and write them to the central catalog bucket.
|
|
63
|
+
* permission to read the source assets and write them to the central catalog bucket. All SBOM catalog constructs in
|
|
64
|
+
* the same stack reuse one upload Lambda.
|
|
64
65
|
*
|
|
65
66
|
* Example:
|
|
66
67
|
* ```ts
|
|
@@ -91,7 +92,8 @@ export declare class StandaloneSbomCatalogProject extends Construct {
|
|
|
91
92
|
* Landing Zone `team_identifier` tag is always included.
|
|
92
93
|
*
|
|
93
94
|
* The files are uploaded after the stack reaches `CREATE_COMPLETE` or `UPDATE_COMPLETE`. In CodeBuild, the build number
|
|
94
|
-
* identifies the upload; otherwise the collection version is used.
|
|
95
|
+
* identifies the upload; otherwise the collection version is used. All SBOM catalog constructs in the same stack reuse
|
|
96
|
+
* one upload Lambda.
|
|
95
97
|
*
|
|
96
98
|
* Example:
|
|
97
99
|
* ```ts
|
|
@@ -17,6 +17,9 @@ const constants_2 = require("./constants");
|
|
|
17
17
|
const DEFAULT_VERSION = 'main';
|
|
18
18
|
const MAX_CHILDREN = 3;
|
|
19
19
|
const MANAGED_TAG_KEYS = new Set(['account_id', 'team_identifier']);
|
|
20
|
+
const UPLOAD_FUNCTION_UUID = 'd20b9f46-0702-47dd-89c2-9ea4bddaacfc';
|
|
21
|
+
const UPLOAD_FUNCTION_PURPOSE = 'SbomCatalogUpload';
|
|
22
|
+
const UPLOAD_LOG_GROUP_ID = 'SbomCatalogUploadLogGroup';
|
|
20
23
|
/**
|
|
21
24
|
* Registers one project's SBOM and optional VEX in the central SBOM catalog.
|
|
22
25
|
*
|
|
@@ -25,7 +28,8 @@ const MANAGED_TAG_KEYS = new Set(['account_id', 'team_identifier']);
|
|
|
25
28
|
* project version is used.
|
|
26
29
|
*
|
|
27
30
|
* The construct automatically adds the RIO Landing Zone `team_identifier` tag and grants the generated upload Lambda
|
|
28
|
-
* permission to read the source assets and write them to the central catalog bucket.
|
|
31
|
+
* permission to read the source assets and write them to the central catalog bucket. All SBOM catalog constructs in
|
|
32
|
+
* the same stack reuse one upload Lambda.
|
|
29
33
|
*
|
|
30
34
|
* Example:
|
|
31
35
|
* ```ts
|
|
@@ -81,7 +85,8 @@ StandaloneSbomCatalogProject[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.Standalo
|
|
|
81
85
|
* Landing Zone `team_identifier` tag is always included.
|
|
82
86
|
*
|
|
83
87
|
* The files are uploaded after the stack reaches `CREATE_COMPLETE` or `UPDATE_COMPLETE`. In CodeBuild, the build number
|
|
84
|
-
* identifies the upload; otherwise the collection version is used.
|
|
88
|
+
* identifies the upload; otherwise the collection version is used. All SBOM catalog constructs in the same stack reuse
|
|
89
|
+
* one upload Lambda.
|
|
85
90
|
*
|
|
86
91
|
* Example:
|
|
87
92
|
* ```ts
|
|
@@ -146,7 +151,9 @@ _b = JSII_RTTI_SYMBOL_1;
|
|
|
146
151
|
SbomCatalogProject[_b] = { fqn: "@rio-cloud/cdk-v2-constructs.SbomCatalogProject", version: "0.0.0" };
|
|
147
152
|
function createUploadResources(scope, configuration, sourceAssets) {
|
|
148
153
|
const stack = aws_cdk_lib_1.Stack.of(scope);
|
|
149
|
-
const uploadFunction = new lambda.
|
|
154
|
+
const uploadFunction = new lambda.SingletonFunction(scope, 'UploadFunction', {
|
|
155
|
+
uuid: UPLOAD_FUNCTION_UUID,
|
|
156
|
+
lambdaPurpose: UPLOAD_FUNCTION_PURPOSE,
|
|
150
157
|
runtime: constants_1.DEFAULT_NODE_RUNTIME,
|
|
151
158
|
architecture: lambda.Architecture.ARM_64,
|
|
152
159
|
handler: 'handler.handler',
|
|
@@ -154,18 +161,19 @@ function createUploadResources(scope, configuration, sourceAssets) {
|
|
|
154
161
|
exclude: ['*.js', '*.d.ts'],
|
|
155
162
|
}),
|
|
156
163
|
loggingFormat: lambda.LoggingFormat.JSON,
|
|
157
|
-
logGroup:
|
|
158
|
-
|
|
159
|
-
|
|
164
|
+
logGroup: getOrCreateUploadLogGroup(stack),
|
|
165
|
+
initialPolicy: [
|
|
166
|
+
new iam.PolicyStatement({
|
|
167
|
+
actions: ['s3:PutObject'],
|
|
168
|
+
resources: [`${constants_2.SBOM_CATALOG_BUCKET_ARN}/*`],
|
|
169
|
+
}),
|
|
170
|
+
],
|
|
160
171
|
memorySize: 256,
|
|
161
172
|
timeout: aws_cdk_lib_1.Duration.minutes(1),
|
|
162
173
|
});
|
|
163
|
-
for (const asset of sourceAssets)
|
|
174
|
+
for (const asset of sourceAssets) {
|
|
164
175
|
asset.grantRead(uploadFunction);
|
|
165
|
-
|
|
166
|
-
actions: ['s3:PutObject'],
|
|
167
|
-
resources: [`${constants_2.SBOM_CATALOG_BUCKET_ARN}/*`],
|
|
168
|
-
}));
|
|
176
|
+
}
|
|
169
177
|
new events.Rule(scope, 'StackCompletionRule', {
|
|
170
178
|
eventPattern: {
|
|
171
179
|
source: ['aws.cloudformation'],
|
|
@@ -189,6 +197,18 @@ function createUploadResources(scope, configuration, sourceAssets) {
|
|
|
189
197
|
],
|
|
190
198
|
});
|
|
191
199
|
}
|
|
200
|
+
function getOrCreateUploadLogGroup(stack) {
|
|
201
|
+
const existingLogGroup = stack.node.tryFindChild(UPLOAD_LOG_GROUP_ID);
|
|
202
|
+
if (existingLogGroup instanceof logs.LogGroup) {
|
|
203
|
+
return existingLogGroup;
|
|
204
|
+
}
|
|
205
|
+
if (existingLogGroup !== undefined) {
|
|
206
|
+
throw new Error(`Stack already contains a construct named '${UPLOAD_LOG_GROUP_ID}'`);
|
|
207
|
+
}
|
|
208
|
+
return new logs.LogGroup(stack, UPLOAD_LOG_GROUP_ID, {
|
|
209
|
+
retention: logs.RetentionDays.ONE_WEEK,
|
|
210
|
+
});
|
|
211
|
+
}
|
|
192
212
|
function assetLocation(asset) {
|
|
193
213
|
return {
|
|
194
214
|
bucketName: asset.s3BucketName,
|
|
@@ -263,4 +283,4 @@ function parseTagsWithValidUniqueKeys(tags, propertyName, allowManagedTags = fal
|
|
|
263
283
|
function optionalTags(tags) {
|
|
264
284
|
return tags === undefined ? {} : { tags };
|
|
265
285
|
}
|
|
266
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nib20tY2F0YWxvZy9jYXRhbG9nLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBcUQ7QUFDckQsaURBQWlEO0FBQ2pELGdFQUFnRTtBQUNoRSwyQ0FBMkM7QUFDM0MsaURBQWlEO0FBQ2pELDZDQUE2QztBQUU3QywyQ0FBdUM7QUFDdkMsNkJBQTZCO0FBQzdCLDRDQUFvRDtBQUNwRCwwREFBcUQ7QUFDckQsMkNBQXNEO0FBUXRELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQztBQUMvQixNQUFNLFlBQVksR0FBRyxDQUFDLENBQUM7QUFDdkIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7QUFvRXBFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFDSCxNQUFhLDRCQUE2QixTQUFRLHNCQUFTO0lBQ3pELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBd0M7UUFDaEYsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxJQUFJLGVBQWUsQ0FBQztRQUNqRCxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixJQUFJLE9BQU8sQ0FBQztRQUN0RSxNQUFNLGNBQWMsR0FBRyxpQ0FBYyxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUNuRixNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsQ0FBQyxtQkFBbUIsY0FBYyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFGLGlDQUFpQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7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QUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLFlBQVksZ0NBQWdDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsSUFBZTtJQUNuQyxPQUFPLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHVyYXRpb24sIFN0YWNrLCBUb2tlbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGV2ZW50cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzJztcbmltcG9ydCAqIGFzIGV2ZW50c1RhcmdldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgczNBc3NldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWFzc2V0cyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBERUZBVUxUX05PREVfUlVOVElNRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBSaW9MYW5kaW5nWm9uZSB9IGZyb20gJy4uL3Jpby1sYW5kaW5nLXpvbmUnO1xuaW1wb3J0IHsgU0JPTV9DQVRBTE9HX0JVQ0tFVF9BUk4gfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEFzc2V0TG9jYXRpb24sXG4gIENhdGFsb2dVcGxvYWRDb25maWd1cmF0aW9uLFxuICBTdGFuZGFsb25lVXBsb2FkQ29uZmlndXJhdGlvbixcbiAgVXBsb2FkQ29uZmlndXJhdGlvbixcbn0gZnJvbSAnLi9sYW1iZGEvdHlwZXMnO1xuXG5jb25zdCBERUZBVUxUX1ZFUlNJT04gPSAnbWFpbic7XG5jb25zdCBNQVhfQ0hJTERSRU4gPSAzO1xuY29uc3QgTUFOQUdFRF9UQUdfS0VZUyA9IG5ldyBTZXQoWydhY2NvdW50X2lkJywgJ3RlYW1faWRlbnRpZmllciddKTtcblxuZXhwb3J0IGludGVyZmFjZSBTdGFuZGFsb25lU2JvbUNhdGFsb2dQcm9qZWN0UHJvcHMge1xuICAvKiogTXVzdCBiZSBub24tZW1wdHkgYW5kIG11c3Qgbm90IGNvbnRhaW4gYC9gLiAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIFByb2plY3QgdmVyc2lvbi4gRGVmYXVsdHMgdG8gYG1haW5gLiAqL1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHByb2plY3QgdGFncyB1c2luZyB0aGUgYGtleTp2YWx1ZWAgZm9ybWF0LlxuICAgKlxuICAgKiBgdGVhbV9pZGVudGlmaWVyYCBpcyBhbHdheXMgYWRkZWQgZnJvbSB0aGUgUklPIExhbmRpbmcgWm9uZSBjb25maWd1cmF0aW9uLiBEbyBub3QgcHJvdmlkZSBgdGVhbV9pZGVudGlmaWVyYCBvclxuICAgKiBgYWNjb3VudF9pZGA7IGJvdGggYXJlIG1hbmFnZWQgdGFnIGtleXMuXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsVGFncz86IHN0cmluZ1tdO1xuXG4gIC8qKiBKU09OIFNCT00gZmlsZSBhc3NldCB0byB1cGxvYWQuICovXG4gIHJlYWRvbmx5IHNib206IHMzQXNzZXRzLkFzc2V0O1xuXG4gIC8qKiBPcHRpb25hbCBKU09OIFZFWCBmaWxlIGFzc2V0IHRvIHVwbG9hZC4gKi9cbiAgcmVhZG9ubHkgdmV4PzogczNBc3NldHMuQXNzZXQ7XG59XG5cbi8qKiBBIGNoaWxkIHByb2plY3QgaW4gYW4gU0JPTSBjYXRhbG9nIGNvbGxlY3Rpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIFNib21DYXRhbG9nUHJvamVjdENoaWxkIHtcbiAgLyoqXG4gICAqIE11c3QgYmUgbm9uLWVtcHR5LCB1bmlxdWUgd2l0aGluIHRoZSBjb2xsZWN0aW9uLCBhbmQgbXVzdCBub3QgY29udGFpbiBgL2AuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIENoaWxkIHByb2plY3QgdmVyc2lvbi4gRGVmYXVsdHMgdG8gYG1haW5gLiAqL1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYWdzIGFkZGVkIHRvIHRoaXMgY2hpbGQsIHVzaW5nIHRoZSBga2V5OnZhbHVlYCBmb3JtYXQuXG4gICAqXG4gICAqIENoaWxkIHRhZ3Mgb3ZlcnJpZGUgc2hhcmVkIHRhZ3Mgd2l0aCB0aGUgc2FtZSBrZXkuIGB0ZWFtX2lkZW50aWZpZXJgIGlzIGFsd2F5cyBpbmhlcml0ZWQgZnJvbSB0aGUgUklPIExhbmRpbmcgWm9uZVxuICAgKiBjb25maWd1cmF0aW9uLiBEbyBub3QgcHJvdmlkZSBgdGVhbV9pZGVudGlmaWVyYCBvciBgYWNjb3VudF9pZGA7IGJvdGggYXJlIG1hbmFnZWQgdGFnIGtleXMuXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsVGFncz86IHN0cmluZ1tdO1xuXG4gIC8qKiBKU09OIFNCT00gZmlsZSBhc3NldCB0byB1cGxvYWQuICovXG4gIHJlYWRvbmx5IHNib206IHMzQXNzZXRzLkFzc2V0O1xuXG4gIC8qKiBPcHRpb25hbCBKU09OIFZFWCBmaWxlIGFzc2V0IHRvIHVwbG9hZC4gKi9cbiAgcmVhZG9ubHkgdmV4PzogczNBc3NldHMuQXNzZXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JvbUNhdGFsb2dQcm9qZWN0UHJvcHMge1xuICAvKiogQ29sbGVjdGlvbiBuYW1lIHN0b3JlZCBpbiB0aGUgbWFuaWZlc3QgYW5kIHVzZWQgaW4gdGhlIGRlc3RpbmF0aW9uIGtleS4gKi9cbiAgcmVhZG9ubHkgY29sbGVjdGlvbk5hbWU6IHN0cmluZztcblxuICAvKiogQ29sbGVjdGlvbiB2ZXJzaW9uLiBEZWZhdWx0cyB0byBgbWFpbmAuICovXG4gIHJlYWRvbmx5IGNvbGxlY3Rpb25WZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYWdzIGluaGVyaXRlZCBieSBldmVyeSBjaGlsZCwgdXNpbmcgdGhlIGBrZXk6dmFsdWVgIGZvcm1hdC5cbiAgICpcbiAgICogQSBjaGlsZCdzIGFkZGl0aW9uYWwgdGFncyBvdmVycmlkZSBzaGFyZWQgdGFncyB3aXRoIHRoZSBzYW1lIGtleS4gYHRlYW1faWRlbnRpZmllcmAgaXMgYWx3YXlzIGFkZGVkIGZyb20gdGhlIFJJT1xuICAgKiBMYW5kaW5nIFpvbmUgY29uZmlndXJhdGlvbi4gRG8gbm90IHByb3ZpZGUgYHRlYW1faWRlbnRpZmllcmAgb3IgYGFjY291bnRfaWRgOyBib3RoIGFyZSBtYW5hZ2VkIHRhZyBrZXlzLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hhcmVkVGFncz86IHN0cmluZ1tdO1xuXG4gIC8qKiBDaGlsZCBjYXRhbG9nIHByb2plY3RzLiBNdXN0IGNvbnRhaW4gYmV0d2VlbiBvbmUgYW5kIHRocmVlIHByb2plY3RzLiAqL1xuICByZWFkb25seSBjaGlsZHJlbjogU2JvbUNhdGFsb2dQcm9qZWN0Q2hpbGRbXTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgb25lIHByb2plY3QncyBTQk9NIGFuZCBvcHRpb25hbCBWRVggaW4gdGhlIGNlbnRyYWwgU0JPTSBjYXRhbG9nLlxuICpcbiAqIFVzZSB0aGlzIGNvbnN0cnVjdCB3aGVuIGEgc3RhY2sgb3ducyBvbmUgaW5kZXBlbmRlbnRseSB2ZXJzaW9uZWQgcHJvamVjdC4gVGhlIGZpbGVzIGFyZSB1cGxvYWRlZCBhZnRlciB0aGUgc3RhY2tcbiAqIHJlYWNoZXMgYENSRUFURV9DT01QTEVURWAgb3IgYFVQREFURV9DT01QTEVURWAuIEluIENvZGVCdWlsZCwgdGhlIGJ1aWxkIG51bWJlciBpZGVudGlmaWVzIHRoZSB1cGxvYWQ7IG90aGVyd2lzZSB0aGVcbiAqIHByb2plY3QgdmVyc2lvbiBpcyB1c2VkLlxuICpcbiAqIFRoZSBjb25zdHJ1Y3QgYXV0b21hdGljYWxseSBhZGRzIHRoZSBSSU8gTGFuZGluZyBab25lIGB0ZWFtX2lkZW50aWZpZXJgIHRhZyBhbmQgZ3JhbnRzIHRoZSBnZW5lcmF0ZWQgdXBsb2FkIExhbWJkYVxuICogcGVybWlzc2lvbiB0byByZWFkIHRoZSBzb3VyY2UgYXNzZXRzIGFuZCB3cml0ZSB0aGVtIHRvIHRoZSBjZW50cmFsIGNhdGFsb2cgYnVja2V0LlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGB0c1xuICogY29uc3Qgc2JvbSA9IG5ldyBzM0Fzc2V0cy5Bc3NldCh0aGlzLCAnU2JvbUFzc2V0Jywge1xuICogICBwYXRoOiAnYnVpbGQvc2JvbS5qc29uJyxcbiAqIH0pO1xuICogY29uc3QgdmV4ID0gbmV3IHMzQXNzZXRzLkFzc2V0KHRoaXMsICdWZXhBc3NldCcsIHtcbiAqICAgcGF0aDogJ2J1aWxkL3ZleC5qc29uJyxcbiAqIH0pO1xuICpcbiAqIG5ldyBTdGFuZGFsb25lU2JvbUNhdGFsb2dQcm9qZWN0KHRoaXMsICdDYXRhbG9nVXBsb2FkJywge1xuICogICBuYW1lOiAnYmlsbGluZy1hcGknLFxuICogICB2ZXJzaW9uOiAnMS40LjAnLFxuICogICBhZGRpdGlvbmFsVGFnczogWydjb21wb25lbnQ6YmFja2VuZCddLFxuICogICBzYm9tLFxuICogICB2ZXgsXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgU3RhbmRhbG9uZVNib21DYXRhbG9nUHJvamVjdCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdGFuZGFsb25lU2JvbUNhdGFsb2dQcm9qZWN0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgdmVyc2lvbiA9IHByb3BzLnZlcnNpb24gPz8gREVGQVVMVF9WRVJTSU9OO1xuICAgIGNvbnN0IGJ1aWxkSWRlbnRpZmllciA9IHByb2Nlc3MuZW52LkNPREVCVUlMRF9CVUlMRF9OVU1CRVIgPz8gdmVyc2lvbjtcbiAgICBjb25zdCB0ZWFtSWRlbnRpZmllciA9IFJpb0xhbmRpbmdab25lLmdldFRlYW1JZGVudGlmaWVyUGFyYW1ldGVyKHRoaXMpLnN0cmluZ1ZhbHVlO1xuICAgIGNvbnN0IHRhZ3MgPSBtZXJnZVRhZ3MoW2B0ZWFtX2lkZW50aWZpZXI6JHt0ZWFtSWRlbnRpZmllcn1gXSwgcHJvcHMuYWRkaXRpb25hbFRhZ3MpID8/IFtdO1xuICAgIGFzc2VydE5vbkVtcHR5VmFsdWVXaXRob3V0U2xhc2hlcygnbmFtZScsIHByb3BzLm5hbWUpO1xuICAgIGFzc2VydE5vbkVtcHR5VmVyc2lvbigndmVyc2lvbicsIHZlcnNpb24pO1xuICAgIGFzc2VydE5vbkVtcHR5VmFsdWVXaXRob3V0U2xhc2hlcygnYnVpbGRJZGVudGlmaWVyJywgYnVpbGRJZGVudGlmaWVyKTtcbiAgICBwYXJzZVRhZ3NXaXRoVmFsaWRVbmlxdWVLZXlzKHByb3BzLmFkZGl0aW9uYWxUYWdzID8/IFtdLCAnYWRkaXRpb25hbFRhZ3MnKTtcblxuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2YodGhpcyk7XG4gICAgY29uc3QgY29uZmlndXJhdGlvbjogU3RhbmRhbG9uZVVwbG9hZENvbmZpZ3VyYXRpb24gPSB7XG4gICAgICBvcmlnaW5BY2NvdW50SWQ6IHN0YWNrLmFjY291bnQsXG4gICAgICBvcmlnaW5BY2NvdW50TmFtZTogUmlvTGFuZGluZ1pvbmUuZ2V0QWNjb3VudE5hbWVQYXJhbWV0ZXIodGhpcykuc3RyaW5nVmFsdWUsXG4gICAgICBidWlsZElkZW50aWZpZXIsXG4gICAgICBuYW1lOiBwcm9wcy5uYW1lLFxuICAgICAgdmVyc2lvbixcbiAgICAgIHRhZ3MsXG4gICAgICBzYm9tOiBhc3NldExvY2F0aW9uKHByb3BzLnNib20pLFxuICAgICAgLi4uKHByb3BzLnZleCA9PT0gdW5kZWZpbmVkID8ge30gOiB7IHZleDogYXNzZXRMb2NhdGlvbihwcm9wcy52ZXgpIH0pLFxuICAgIH07XG5cbiAgICBjcmVhdGVVcGxvYWRSZXNvdXJjZXModGhpcywgY29uZmlndXJhdGlvbiwgW3Byb3BzLnNib20sIC4uLihwcm9wcy52ZXggPT09IHVuZGVmaW5lZCA/IFtdIDogW3Byb3BzLnZleF0pXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBjb2xsZWN0aW9uIG9mIHJlbGF0ZWQgcHJvamVjdCBTQk9NcyBhbmQgb3B0aW9uYWwgVkVYIGZpbGVzIGluIHRoZSBjZW50cmFsIFNCT00gY2F0YWxvZy5cbiAqXG4gKiBVc2UgdGhpcyBjb25zdHJ1Y3Qgd2hlbiBvbmUgc3RhY2sgcHJvZHVjZXMgYmV0d2VlbiBvbmUgYW5kIHRocmVlIHJlbGF0ZWQgcHJvamVjdHMgdGhhdCBzaG91bGQgc2hhcmUgYSBjYXRhbG9nXG4gKiBjb2xsZWN0aW9uLiBTaGFyZWQgdGFncyBhcmUgaW5oZXJpdGVkIGJ5IGV2ZXJ5IGNoaWxkLCB3aGlsZSBjaGlsZCB0YWdzIHdpdGggdGhlIHNhbWUga2V5IG92ZXJyaWRlIHRoZW0uIFRoZSBSSU9cbiAqIExhbmRpbmcgWm9uZSBgdGVhbV9pZGVudGlmaWVyYCB0YWcgaXMgYWx3YXlzIGluY2x1ZGVkLlxuICpcbiAqIFRoZSBmaWxlcyBhcmUgdXBsb2FkZWQgYWZ0ZXIgdGhlIHN0YWNrIHJlYWNoZXMgYENSRUFURV9DT01QTEVURWAgb3IgYFVQREFURV9DT01QTEVURWAuIEluIENvZGVCdWlsZCwgdGhlIGJ1aWxkIG51bWJlclxuICogaWRlbnRpZmllcyB0aGUgdXBsb2FkOyBvdGhlcndpc2UgdGhlIGNvbGxlY3Rpb24gdmVyc2lvbiBpcyB1c2VkLlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGB0c1xuICogY29uc3QgYXBpU2JvbSA9IG5ldyBzM0Fzc2V0cy5Bc3NldCh0aGlzLCAnQXBpU2JvbUFzc2V0Jywge1xuICogICBwYXRoOiAnYnVpbGQvYXBpLXNib20uanNvbicsXG4gKiB9KTtcbiAqIGNvbnN0IGluZnJhc3RydWN0dXJlU2JvbSA9IG5ldyBzM0Fzc2V0cy5Bc3NldCh0aGlzLCAnSW5mcmFzdHJ1Y3R1cmVTYm9tQXNzZXQnLCB7XG4gKiAgIHBhdGg6ICdidWlsZC9pbmZyYXN0cnVjdHVyZS1zYm9tLmpzb24nLFxuICogfSk7XG4gKlxuICogbmV3IFNib21DYXRhbG9nUHJvamVjdCh0aGlzLCAnQ2F0YWxvZ1VwbG9hZCcsIHtcbiAqICAgY29sbGVjdGlvbk5hbWU6ICdiaWxsaW5nJyxcbiAqICAgY29sbGVjdGlvblZlcnNpb246ICcxLjQuMCcsXG4gKiAgIHNoYXJlZFRhZ3M6IFsnZG9tYWluOmJpbGxpbmcnXSxcbiAqICAgY2hpbGRyZW46IFtcbiAqICAgICB7XG4gKiAgICAgICBuYW1lOiAnYXBpJyxcbiAqICAgICAgIHNib206IGFwaVNib20sXG4gKiAgICAgICBhZGRpdGlvbmFsVGFnczogWydjb21wb25lbnQ6YmFja2VuZCddLFxuICogICAgIH0sXG4gKiAgICAge1xuICogICAgICAgbmFtZTogJ2luZnJhc3RydWN0dXJlJyxcbiAqICAgICAgIHNib206IGluZnJhc3RydWN0dXJlU2JvbSxcbiAqICAgICAgIGFkZGl0aW9uYWxUYWdzOiBbJ2NvbXBvbmVudDppbmZyYXN0cnVjdHVyZSddLFxuICogICAgIH0sXG4gKiAgIF0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgU2JvbUNhdGFsb2dQcm9qZWN0IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNib21DYXRhbG9nUHJvamVjdFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGNvbGxlY3Rpb25WZXJzaW9uID0gcHJvcHMuY29sbGVjdGlvblZlcnNpb24gPz8gREVGQVVMVF9WRVJTSU9OO1xuICAgIGNvbnN0IGJ1aWxkSWRlbnRpZmllciA9IHByb2Nlc3MuZW52LkNPREVCVUlMRF9CVUlMRF9OVU1CRVIgPz8gY29sbGVjdGlvblZlcnNpb247XG4gICAgY29uc3QgdGVhbUlkZW50aWZpZXIgPSBSaW9MYW5kaW5nWm9uZS5nZXRUZWFtSWRlbnRpZmllclBhcmFtZXRlcih0aGlzKS5zdHJpbmdWYWx1ZTtcbiAgICBhc3NlcnROb25FbXB0eVZhbHVlV2l0aG91dFNsYXNoZXMoJ2NvbGxlY3Rpb25OYW1lJywgcHJvcHMuY29sbGVjdGlvbk5hbWUpO1xuICAgIGFzc2VydE5vbkVtcHR5VmVyc2lvbignY29sbGVjdGlvblZlcnNpb24nLCBjb2xsZWN0aW9uVmVyc2lvbik7XG4gICAgYXNzZXJ0Tm9uRW1wdHlWYWx1ZVdpdGhvdXRTbGFzaGVzKCdidWlsZElkZW50aWZpZXInLCBidWlsZElkZW50aWZpZXIpO1xuICAgIHZhbGlkYXRlQ2hpbGRyZW4ocHJvcHMuY2hpbGRyZW4pO1xuICAgIHBhcnNlVGFnc1dpdGhWYWxpZFVuaXF1ZUtleXMocHJvcHMuc2hhcmVkVGFncyA/PyBbXSwgJ3NoYXJlZFRhZ3MnKTtcbiAgICBjb25zdCBzaGFyZWRUYWdzID0gbWVyZ2VUYWdzKFtgdGVhbV9pZGVudGlmaWVyOiR7dGVhbUlkZW50aWZpZXJ9YF0sIHByb3BzLnNoYXJlZFRhZ3MpID8/IFtdO1xuXG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZih0aGlzKTtcbiAgICBjb25zdCBjb25maWd1cmF0aW9uOiBDYXRhbG9nVXBsb2FkQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIG9yaWdpbkFjY291bnRJZDogc3RhY2suYWNjb3VudCxcbiAgICAgIG9yaWdpbkFjY291bnROYW1lOiBSaW9MYW5kaW5nWm9uZS5nZXRBY2NvdW50TmFtZVBhcmFtZXRlcih0aGlzKS5zdHJpbmdWYWx1ZSxcbiAgICAgIGJ1aWxkSWRlbnRpZmllcixcbiAgICAgIGNvbGxlY3Rpb25OYW1lOiBwcm9wcy5jb2xsZWN0aW9uTmFtZSxcbiAgICAgIGNvbGxlY3Rpb25WZXJzaW9uLFxuICAgICAgY2hpbGRyZW46IHByb3BzLmNoaWxkcmVuLm1hcChjaGlsZCA9PiAoe1xuICAgICAgICBuYW1lOiBjaGlsZC5uYW1lLFxuICAgICAgICB2ZXJzaW9uOiBjaGlsZC52ZXJzaW9uID8/IERFRkFVTFRfVkVSU0lPTixcbiAgICAgICAgLi4ub3B0aW9uYWxUYWdzKG1lcmdlVGFncyhzaGFyZWRUYWdzLCBjaGlsZC5hZGRpdGlvbmFsVGFncykpLFxuICAgICAgICBzYm9tOiBhc3NldExvY2F0aW9uKGNoaWxkLnNib20pLFxuICAgICAgICAuLi4oY2hpbGQudmV4ID09PSB1bmRlZmluZWQgPyB7fSA6IHsgdmV4OiBhc3NldExvY2F0aW9uKGNoaWxkLnZleCkgfSksXG4gICAgICB9KSksXG4gICAgfTtcblxuICAgIGNyZWF0ZVVwbG9hZFJlc291cmNlcyhcbiAgICAgIHRoaXMsXG4gICAgICBjb25maWd1cmF0aW9uLFxuICAgICAgcHJvcHMuY2hpbGRyZW4uZmxhdE1hcChjaGlsZCA9PiBbY2hpbGQuc2JvbSwgLi4uKGNoaWxkLnZleCA9PT0gdW5kZWZpbmVkID8gW10gOiBbY2hpbGQudmV4XSldKVxuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlVXBsb2FkUmVzb3VyY2VzKFxuICBzY29wZTogQ29uc3RydWN0LFxuICBjb25maWd1cmF0aW9uOiBVcGxvYWRDb25maWd1cmF0aW9uLFxuICBzb3VyY2VBc3NldHM6IHMzQXNzZXRzLkFzc2V0W11cbik6IHZvaWQge1xuICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcblxuICBjb25zdCB1cGxvYWRGdW5jdGlvbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24oc2NvcGUsICdVcGxvYWRGdW5jdGlvbicsIHtcbiAgICBydW50aW1lOiBERUZBVUxUX05PREVfUlVOVElNRSxcbiAgICBhcmNoaXRlY3R1cmU6IGxhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgIGhhbmRsZXI6ICdoYW5kbGVyLmhhbmRsZXInLFxuICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnbGFtYmRhJyksIHtcbiAgICAgIGV4Y2x1ZGU6IFsnKi5qcycsICcqLmQudHMnXSxcbiAgICB9KSxcbiAgICBsb2dnaW5nRm9ybWF0OiBsYW1iZGEuTG9nZ2luZ0Zvcm1hdC5KU09OLFxuICAgIGxvZ0dyb3VwOiBuZXcgbG9ncy5Mb2dHcm91cChzY29wZSwgJ1VwbG9hZExvZ0dyb3VwJywge1xuICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgfSksXG4gICAgbWVtb3J5U2l6ZTogMjU2LFxuICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gIH0pO1xuXG4gIGZvciAoY29uc3QgYXNzZXQgb2Ygc291cmNlQXNzZXRzKSBhc3NldC5ncmFudFJlYWQodXBsb2FkRnVuY3Rpb24pO1xuICB1cGxvYWRGdW5jdGlvbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgYWN0aW9uczogWydzMzpQdXRPYmplY3QnXSxcbiAgICAgIHJlc291cmNlczogW2Ake1NCT01fQ0FUQUxPR19CVUNLRVRfQVJOfS8qYF0sXG4gICAgfSlcbiAgKTtcblxuICBuZXcgZXZlbnRzLlJ1bGUoc2NvcGUsICdTdGFja0NvbXBsZXRpb25SdWxlJywge1xuICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgc291cmNlOiBbJ2F3cy5jbG91ZGZvcm1hdGlvbiddLFxuICAgICAgZGV0YWlsVHlwZTogWydDbG91ZEZvcm1hdGlvbiBTdGFjayBTdGF0dXMgQ2hhbmdlJ10sXG4gICAgICBkZXRhaWw6IHtcbiAgICAgICAgJ3N0YWNrLWlkJzogW3N0YWNrLnN0YWNrSWRdLFxuICAgICAgICAnc3RhdHVzLWRldGFpbHMnOiB7XG4gICAgICAgICAgc3RhdHVzOiBbJ0NSRUFURV9DT01QTEVURScsICdVUERBVEVfQ09NUExFVEUnXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB0YXJnZXRzOiBbXG4gICAgICBuZXcgZXZlbnRzVGFyZ2V0cy5MYW1iZGFGdW5jdGlvbih1cGxvYWRGdW5jdGlvbiwge1xuICAgICAgICBldmVudDogZXZlbnRzLlJ1bGVUYXJnZXRJbnB1dC5mcm9tT2JqZWN0KHtcbiAgICAgICAgICBldmVudElkOiBldmVudHMuRXZlbnRGaWVsZC5ldmVudElkLFxuICAgICAgICAgIHN0YWNrSWQ6IGV2ZW50cy5FdmVudEZpZWxkLmZyb21QYXRoKCckLmRldGFpbC5zdGFjay1pZCcpLFxuICAgICAgICAgIHN0YWNrU3RhdHVzOiBldmVudHMuRXZlbnRGaWVsZC5mcm9tUGF0aCgnJC5kZXRhaWwuc3RhdHVzLWRldGFpbHMuc3RhdHVzJyksXG4gICAgICAgICAgY29uZmlndXJhdGlvbixcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICBdLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gYXNzZXRMb2NhdGlvbihhc3NldDogczNBc3NldHMuQXNzZXQpOiBBc3NldExvY2F0aW9uIHtcbiAgcmV0dXJuIHtcbiAgICBidWNrZXROYW1lOiBhc3NldC5zM0J1Y2tldE5hbWUsXG4gICAgb2JqZWN0S2V5OiBhc3NldC5zM09iamVjdEtleSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXNzZXJ0Tm9uRW1wdHlWYWx1ZVdpdGhvdXRTbGFzaGVzKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKHZhbHVlKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAodmFsdWUubGVuZ3RoID09PSAwIHx8IHZhbHVlLmluY2x1ZGVzKCcvJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bmFtZX0gbXVzdCBiZSBhIG5vbi1lbXB0eSB2YWx1ZSB3aXRob3V0ICcvJ2ApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydE5vbkVtcHR5VmVyc2lvbihuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHtuYW1lfSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZ2ApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlQ2hpbGRyZW4oY2hpbGRyZW46IFNib21DYXRhbG9nUHJvamVjdENoaWxkW10pOiB2b2lkIHtcbiAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2hpbGRyZW4gbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBwcm9qZWN0Jyk7XG4gIH1cbiAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IE1BWF9DSElMRFJFTikge1xuICAgIHRocm93IG5ldyBFcnJvcihgY2hpbGRyZW4gbXVzdCBjb250YWluIGF0IG1vc3QgJHtNQVhfQ0hJTERSRU59IHByb2plY3RzYCk7XG4gIH1cblxuICBjb25zdCBuYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgYXNzZXJ0Tm9uRW1wdHlWYWx1ZVdpdGhvdXRTbGFzaGVzKCdjaGlsZCBuYW1lJywgY2hpbGQubmFtZSk7XG4gICAgaWYgKGNoaWxkLnZlcnNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXNzZXJ0Tm9uRW1wdHlWZXJzaW9uKGB2ZXJzaW9uIGZvciBjaGlsZCAnJHtjaGlsZC5uYW1lfSdgLCBjaGlsZC52ZXJzaW9uKTtcbiAgICB9XG4gICAgcGFyc2VUYWdzV2l0aFZhbGlkVW5pcXVlS2V5cyhjaGlsZC5hZGRpdGlvbmFsVGFncyA/PyBbXSwgYGFkZGl0aW9uYWxUYWdzIGZvciBjaGlsZCAnJHtjaGlsZC5uYW1lfSdgKTtcbiAgICBpZiAobmFtZXMuaGFzKGNoaWxkLm5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGNoaWxkIG5hbWUgJyR7Y2hpbGQubmFtZX0nIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgY29sbGVjdGlvbmApO1xuICAgIH1cbiAgICBuYW1lcy5hZGQoY2hpbGQubmFtZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VUYWdzKHNoYXJlZFRhZ3M/OiBzdHJpbmdbXSwgYWRkaXRpb25hbFRhZ3M/OiBzdHJpbmdbXSk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHNoYXJlZFRhZ3MgPT09IHVuZGVmaW5lZCAmJiBhZGRpdGlvbmFsVGFncyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHNoYXJlZCA9IHBhcnNlVGFnc1dpdGhWYWxpZFVuaXF1ZUtleXMoc2hhcmVkVGFncyA/PyBbXSwgJ3NoYXJlZFRhZ3MnLCB0cnVlKTtcbiAgY29uc3QgYWRkaXRpb25hbCA9IHBhcnNlVGFnc1dpdGhWYWxpZFVuaXF1ZUtleXMoYWRkaXRpb25hbFRhZ3MgPz8gW10sICdhZGRpdGlvbmFsVGFncycpO1xuICBjb25zdCBtZXJnZWQgPSBuZXcgTWFwKHNoYXJlZCk7XG4gIGZvciAoY29uc3QgW2tleSwgdGFnXSBvZiBhZGRpdGlvbmFsKSBtZXJnZWQuc2V0KGtleSwgdGFnKTtcbiAgcmV0dXJuIFsuLi5tZXJnZWQudmFsdWVzKCldO1xufVxuXG5mdW5jdGlvbiBwYXJzZVRhZ3NXaXRoVmFsaWRVbmlxdWVLZXlzKFxuICB0YWdzOiBzdHJpbmdbXSxcbiAgcHJvcGVydHlOYW1lOiBzdHJpbmcsXG4gIGFsbG93TWFuYWdlZFRhZ3MgPSBmYWxzZVxuKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgdGFnIG9mIHRhZ3MpIHtcbiAgICBjb25zdCBzZXBhcmF0b3JJbmRleCA9IHRhZy5pbmRleE9mKCc6Jyk7XG4gICAgaWYgKHNlcGFyYXRvckluZGV4IDw9IDAgfHwgc2VwYXJhdG9ySW5kZXggPT09IHRhZy5sZW5ndGggLSAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cHJvcGVydHlOYW1lfSB0YWcgJyR7dGFnfScgbXVzdCB1c2UgdGhlIGZvcm1hdCBrZXk6dmFsdWUgd2l0aCBhIG5vbi1lbXB0eSBrZXkgYW5kIHZhbHVlYCk7XG4gICAgfVxuXG4gICAgY29uc3Qga2V5ID0gdGFnLnNsaWNlKDAsIHNlcGFyYXRvckluZGV4KTtcbiAgICBpZiAoTUFOQUdFRF9UQUdfS0VZUy5oYXMoa2V5KSAmJiAhYWxsb3dNYW5hZ2VkVGFncykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3Byb3BlcnR5TmFtZX0gbXVzdCBub3Qgc2V0IG1hbmFnZWQgdGFnIGtleSAnJHtrZXl9J2ApO1xuICAgIH1cbiAgICBpZiAocmVzdWx0LmhhcyhrZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cHJvcGVydHlOYW1lfSBjb250YWlucyBkdXBsaWNhdGUgdGFnIGtleSAnJHtrZXl9J2ApO1xuICAgIH1cbiAgICByZXN1bHQuc2V0KGtleSwgdGFnKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBvcHRpb25hbFRhZ3ModGFncz86IHN0cmluZ1tdKTogeyByZWFkb25seSB0YWdzPzogc3RyaW5nW10gfSB7XG4gIHJldHVybiB0YWdzID09PSB1bmRlZmluZWQgPyB7fSA6IHsgdGFncyB9O1xufVxuIl19
|
|
286
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nib20tY2F0YWxvZy9jYXRhbG9nLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBcUQ7QUFDckQsaURBQWlEO0FBQ2pELGdFQUFnRTtBQUNoRSwyQ0FBMkM7QUFDM0MsaURBQWlEO0FBQ2pELDZDQUE2QztBQUU3QywyQ0FBdUM7QUFDdkMsNkJBQTZCO0FBQzdCLDRDQUFvRDtBQUNwRCwwREFBcUQ7QUFDckQsMkNBQXNEO0FBUXRELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQztBQUMvQixNQUFNLFlBQVksR0FBRyxDQUFDLENBQUM7QUFDdkIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7QUFDcEUsTUFBTSxvQkFBb0IsR0FBRyxzQ0FBc0MsQ0FBQztBQUNwRSxNQUFNLHVCQUF1QixHQUFHLG1CQUFtQixDQUFDO0FBQ3BELE1BQU0sbUJBQW1CLEdBQUcsMkJBQTJCLENBQUM7QUFvRXhEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBQ0gsTUFBYSw0QkFBNkIsU0FBUSxzQkFBUztJQUN6RCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXdDO1FBQ2hGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxlQUFlLENBQUM7UUFDakQsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsSUFBSSxPQUFPLENBQUM7UUFDdEUsTUFBTSxjQUFjLEdBQUcsaUNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFDbkYsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLENBQUMsbUJBQW1CLGNB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QUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFDekMsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksY0FBYyxJQUFJLENBQUMsSUFBSSxjQUFjLEtBQUssR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3RCxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsWUFBWSxTQUFTLEdBQUcsZ0VBQWdFLENBQUMsQ0FBQztRQUMvRyxDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDekMsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ25ELE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxZQUFZLGtDQUFrQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQzNFLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsWUFBWSxnQ0FBZ0MsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxJQUFlO0lBQ25DLE9BQU8sSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0FBQzVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiwgU3RhY2ssIFRva2VuIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgZXZlbnRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0ICogYXMgZXZlbnRzVGFyZ2V0cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzLXRhcmdldHMnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgKiBhcyBzM0Fzc2V0cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtYXNzZXRzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IERFRkFVTFRfTk9ERV9SVU5USU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFJpb0xhbmRpbmdab25lIH0gZnJvbSAnLi4vcmlvLWxhbmRpbmctem9uZSc7XG5pbXBvcnQgeyBTQk9NX0NBVEFMT0dfQlVDS0VUX0FSTiB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHtcbiAgQXNzZXRMb2NhdGlvbixcbiAgQ2F0YWxvZ1VwbG9hZENvbmZpZ3VyYXRpb24sXG4gIFN0YW5kYWxvbmVVcGxvYWRDb25maWd1cmF0aW9uLFxuICBVcGxvYWRDb25maWd1cmF0aW9uLFxufSBmcm9tICcuL2xhbWJkYS90eXBlcyc7XG5cbmNvbnN0IERFRkFVTFRfVkVSU0lPTiA9ICdtYWluJztcbmNvbnN0IE1BWF9DSElMRFJFTiA9IDM7XG5jb25zdCBNQU5BR0VEX1RBR19LRVlTID0gbmV3IFNldChbJ2FjY291bnRfaWQnLCAndGVhbV9pZGVudGlmaWVyJ10pO1xuY29uc3QgVVBMT0FEX0ZVTkNUSU9OX1VVSUQgPSAnZDIwYjlmNDYtMDcwMi00N2RkLTg5YzItOWVhNGJkZGFhY2ZjJztcbmNvbnN0IFVQTE9BRF9GVU5DVElPTl9QVVJQT1NFID0gJ1Nib21DYXRhbG9nVXBsb2FkJztcbmNvbnN0IFVQTE9BRF9MT0dfR1JPVVBfSUQgPSAnU2JvbUNhdGFsb2dVcGxvYWRMb2dHcm91cCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhbmRhbG9uZVNib21DYXRhbG9nUHJvamVjdFByb3BzIHtcbiAgLyoqIE11c3QgYmUgbm9uLWVtcHR5IGFuZCBtdXN0IG5vdCBjb250YWluIGAvYC4gKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKiBQcm9qZWN0IHZlcnNpb24uIERlZmF1bHRzIHRvIGBtYWluYC4gKi9cbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBwcm9qZWN0IHRhZ3MgdXNpbmcgdGhlIGBrZXk6dmFsdWVgIGZvcm1hdC5cbiAgICpcbiAgICogYHRlYW1faWRlbnRpZmllcmAgaXMgYWx3YXlzIGFkZGVkIGZyb20gdGhlIFJJTyBMYW5kaW5nIFpvbmUgY29uZmlndXJhdGlvbi4gRG8gbm90IHByb3ZpZGUgYHRlYW1faWRlbnRpZmllcmAgb3JcbiAgICogYGFjY291bnRfaWRgOyBib3RoIGFyZSBtYW5hZ2VkIHRhZyBrZXlzLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbFRhZ3M/OiBzdHJpbmdbXTtcblxuICAvKiogSlNPTiBTQk9NIGZpbGUgYXNzZXQgdG8gdXBsb2FkLiAqL1xuICByZWFkb25seSBzYm9tOiBzM0Fzc2V0cy5Bc3NldDtcblxuICAvKiogT3B0aW9uYWwgSlNPTiBWRVggZmlsZSBhc3NldCB0byB1cGxvYWQuICovXG4gIHJlYWRvbmx5IHZleD86IHMzQXNzZXRzLkFzc2V0O1xufVxuXG4vKiogQSBjaGlsZCBwcm9qZWN0IGluIGFuIFNCT00gY2F0YWxvZyBjb2xsZWN0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYm9tQ2F0YWxvZ1Byb2plY3RDaGlsZCB7XG4gIC8qKlxuICAgKiBNdXN0IGJlIG5vbi1lbXB0eSwgdW5pcXVlIHdpdGhpbiB0aGUgY29sbGVjdGlvbiwgYW5kIG11c3Qgbm90IGNvbnRhaW4gYC9gLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKiBDaGlsZCBwcm9qZWN0IHZlcnNpb24uIERlZmF1bHRzIHRvIGBtYWluYC4gKi9cbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGFncyBhZGRlZCB0byB0aGlzIGNoaWxkLCB1c2luZyB0aGUgYGtleTp2YWx1ZWAgZm9ybWF0LlxuICAgKlxuICAgKiBDaGlsZCB0YWdzIG92ZXJyaWRlIHNoYXJlZCB0YWdzIHdpdGggdGhlIHNhbWUga2V5LiBgdGVhbV9pZGVudGlmaWVyYCBpcyBhbHdheXMgaW5oZXJpdGVkIGZyb20gdGhlIFJJTyBMYW5kaW5nIFpvbmVcbiAgICogY29uZmlndXJhdGlvbi4gRG8gbm90IHByb3ZpZGUgYHRlYW1faWRlbnRpZmllcmAgb3IgYGFjY291bnRfaWRgOyBib3RoIGFyZSBtYW5hZ2VkIHRhZyBrZXlzLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbFRhZ3M/OiBzdHJpbmdbXTtcblxuICAvKiogSlNPTiBTQk9NIGZpbGUgYXNzZXQgdG8gdXBsb2FkLiAqL1xuICByZWFkb25seSBzYm9tOiBzM0Fzc2V0cy5Bc3NldDtcblxuICAvKiogT3B0aW9uYWwgSlNPTiBWRVggZmlsZSBhc3NldCB0byB1cGxvYWQuICovXG4gIHJlYWRvbmx5IHZleD86IHMzQXNzZXRzLkFzc2V0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNib21DYXRhbG9nUHJvamVjdFByb3BzIHtcbiAgLyoqIENvbGxlY3Rpb24gbmFtZSBzdG9yZWQgaW4gdGhlIG1hbmlmZXN0IGFuZCB1c2VkIGluIHRoZSBkZXN0aW5hdGlvbiBrZXkuICovXG4gIHJlYWRvbmx5IGNvbGxlY3Rpb25OYW1lOiBzdHJpbmc7XG5cbiAgLyoqIENvbGxlY3Rpb24gdmVyc2lvbi4gRGVmYXVsdHMgdG8gYG1haW5gLiAqL1xuICByZWFkb25seSBjb2xsZWN0aW9uVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGFncyBpbmhlcml0ZWQgYnkgZXZlcnkgY2hpbGQsIHVzaW5nIHRoZSBga2V5OnZhbHVlYCBmb3JtYXQuXG4gICAqXG4gICAqIEEgY2hpbGQncyBhZGRpdGlvbmFsIHRhZ3Mgb3ZlcnJpZGUgc2hhcmVkIHRhZ3Mgd2l0aCB0aGUgc2FtZSBrZXkuIGB0ZWFtX2lkZW50aWZpZXJgIGlzIGFsd2F5cyBhZGRlZCBmcm9tIHRoZSBSSU9cbiAgICogTGFuZGluZyBab25lIGNvbmZpZ3VyYXRpb24uIERvIG5vdCBwcm92aWRlIGB0ZWFtX2lkZW50aWZpZXJgIG9yIGBhY2NvdW50X2lkYDsgYm90aCBhcmUgbWFuYWdlZCB0YWcga2V5cy5cbiAgICovXG4gIHJlYWRvbmx5IHNoYXJlZFRhZ3M/OiBzdHJpbmdbXTtcblxuICAvKiogQ2hpbGQgY2F0YWxvZyBwcm9qZWN0cy4gTXVzdCBjb250YWluIGJldHdlZW4gb25lIGFuZCB0aHJlZSBwcm9qZWN0cy4gKi9cbiAgcmVhZG9ubHkgY2hpbGRyZW46IFNib21DYXRhbG9nUHJvamVjdENoaWxkW107XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIG9uZSBwcm9qZWN0J3MgU0JPTSBhbmQgb3B0aW9uYWwgVkVYIGluIHRoZSBjZW50cmFsIFNCT00gY2F0YWxvZy5cbiAqXG4gKiBVc2UgdGhpcyBjb25zdHJ1Y3Qgd2hlbiBhIHN0YWNrIG93bnMgb25lIGluZGVwZW5kZW50bHkgdmVyc2lvbmVkIHByb2plY3QuIFRoZSBmaWxlcyBhcmUgdXBsb2FkZWQgYWZ0ZXIgdGhlIHN0YWNrXG4gKiByZWFjaGVzIGBDUkVBVEVfQ09NUExFVEVgIG9yIGBVUERBVEVfQ09NUExFVEVgLiBJbiBDb2RlQnVpbGQsIHRoZSBidWlsZCBudW1iZXIgaWRlbnRpZmllcyB0aGUgdXBsb2FkOyBvdGhlcndpc2UgdGhlXG4gKiBwcm9qZWN0IHZlcnNpb24gaXMgdXNlZC5cbiAqXG4gKiBUaGUgY29uc3RydWN0IGF1dG9tYXRpY2FsbHkgYWRkcyB0aGUgUklPIExhbmRpbmcgWm9uZSBgdGVhbV9pZGVudGlmaWVyYCB0YWcgYW5kIGdyYW50cyB0aGUgZ2VuZXJhdGVkIHVwbG9hZCBMYW1iZGFcbiAqIHBlcm1pc3Npb24gdG8gcmVhZCB0aGUgc291cmNlIGFzc2V0cyBhbmQgd3JpdGUgdGhlbSB0byB0aGUgY2VudHJhbCBjYXRhbG9nIGJ1Y2tldC4gQWxsIFNCT00gY2F0YWxvZyBjb25zdHJ1Y3RzIGluXG4gKiB0aGUgc2FtZSBzdGFjayByZXVzZSBvbmUgdXBsb2FkIExhbWJkYS5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgdHNcbiAqIGNvbnN0IHNib20gPSBuZXcgczNBc3NldHMuQXNzZXQodGhpcywgJ1Nib21Bc3NldCcsIHtcbiAqICAgcGF0aDogJ2J1aWxkL3Nib20uanNvbicsXG4gKiB9KTtcbiAqIGNvbnN0IHZleCA9IG5ldyBzM0Fzc2V0cy5Bc3NldCh0aGlzLCAnVmV4QXNzZXQnLCB7XG4gKiAgIHBhdGg6ICdidWlsZC92ZXguanNvbicsXG4gKiB9KTtcbiAqXG4gKiBuZXcgU3RhbmRhbG9uZVNib21DYXRhbG9nUHJvamVjdCh0aGlzLCAnQ2F0YWxvZ1VwbG9hZCcsIHtcbiAqICAgbmFtZTogJ2JpbGxpbmctYXBpJyxcbiAqICAgdmVyc2lvbjogJzEuNC4wJyxcbiAqICAgYWRkaXRpb25hbFRhZ3M6IFsnY29tcG9uZW50OmJhY2tlbmQnXSxcbiAqICAgc2JvbSxcbiAqICAgdmV4LFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFN0YW5kYWxvbmVTYm9tQ2F0YWxvZ1Byb2plY3QgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU3RhbmRhbG9uZVNib21DYXRhbG9nUHJvamVjdFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHZlcnNpb24gPSBwcm9wcy52ZXJzaW9uID8/IERFRkFVTFRfVkVSU0lPTjtcbiAgICBjb25zdCBidWlsZElkZW50aWZpZXIgPSBwcm9jZXNzLmVudi5DT0RFQlVJTERfQlVJTERfTlVNQkVSID8/IHZlcnNpb247XG4gICAgY29uc3QgdGVhbUlkZW50aWZpZXIgPSBSaW9MYW5kaW5nWm9uZS5nZXRUZWFtSWRlbnRpZmllclBhcmFtZXRlcih0aGlzKS5zdHJpbmdWYWx1ZTtcbiAgICBjb25zdCB0YWdzID0gbWVyZ2VUYWdzKFtgdGVhbV9pZGVudGlmaWVyOiR7dGVhbUlkZW50aWZpZXJ9YF0sIHByb3BzLmFkZGl0aW9uYWxUYWdzKSA/PyBbXTtcbiAgICBhc3NlcnROb25FbXB0eVZhbHVlV2l0aG91dFNsYXNoZXMoJ25hbWUnLCBwcm9wcy5uYW1lKTtcbiAgICBhc3NlcnROb25FbXB0eVZlcnNpb24oJ3ZlcnNpb24nLCB2ZXJzaW9uKTtcbiAgICBhc3NlcnROb25FbXB0eVZhbHVlV2l0aG91dFNsYXNoZXMoJ2J1aWxkSWRlbnRpZmllcicsIGJ1aWxkSWRlbnRpZmllcik7XG4gICAgcGFyc2VUYWdzV2l0aFZhbGlkVW5pcXVlS2V5cyhwcm9wcy5hZGRpdGlvbmFsVGFncyA/PyBbXSwgJ2FkZGl0aW9uYWxUYWdzJyk7XG5cbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHRoaXMpO1xuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IFN0YW5kYWxvbmVVcGxvYWRDb25maWd1cmF0aW9uID0ge1xuICAgICAgb3JpZ2luQWNjb3VudElkOiBzdGFjay5hY2NvdW50LFxuICAgICAgb3JpZ2luQWNjb3VudE5hbWU6IFJpb0xhbmRpbmdab25lLmdldEFjY291bnROYW1lUGFyYW1ldGVyKHRoaXMpLnN0cmluZ1ZhbHVlLFxuICAgICAgYnVpbGRJZGVudGlmaWVyLFxuICAgICAgbmFtZTogcHJvcHMubmFtZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICB0YWdzLFxuICAgICAgc2JvbTogYXNzZXRMb2NhdGlvbihwcm9wcy5zYm9tKSxcbiAgICAgIC4uLihwcm9wcy52ZXggPT09IHVuZGVmaW5lZCA/IHt9IDogeyB2ZXg6IGFzc2V0TG9jYXRpb24ocHJvcHMudmV4KSB9KSxcbiAgICB9O1xuXG4gICAgY3JlYXRlVXBsb2FkUmVzb3VyY2VzKHRoaXMsIGNvbmZpZ3VyYXRpb24sIFtwcm9wcy5zYm9tLCAuLi4ocHJvcHMudmV4ID09PSB1bmRlZmluZWQgPyBbXSA6IFtwcm9wcy52ZXhdKV0pO1xuICB9XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIGEgY29sbGVjdGlvbiBvZiByZWxhdGVkIHByb2plY3QgU0JPTXMgYW5kIG9wdGlvbmFsIFZFWCBmaWxlcyBpbiB0aGUgY2VudHJhbCBTQk9NIGNhdGFsb2cuXG4gKlxuICogVXNlIHRoaXMgY29uc3RydWN0IHdoZW4gb25lIHN0YWNrIHByb2R1Y2VzIGJldHdlZW4gb25lIGFuZCB0aHJlZSByZWxhdGVkIHByb2plY3RzIHRoYXQgc2hvdWxkIHNoYXJlIGEgY2F0YWxvZ1xuICogY29sbGVjdGlvbi4gU2hhcmVkIHRhZ3MgYXJlIGluaGVyaXRlZCBieSBldmVyeSBjaGlsZCwgd2hpbGUgY2hpbGQgdGFncyB3aXRoIHRoZSBzYW1lIGtleSBvdmVycmlkZSB0aGVtLiBUaGUgUklPXG4gKiBMYW5kaW5nIFpvbmUgYHRlYW1faWRlbnRpZmllcmAgdGFnIGlzIGFsd2F5cyBpbmNsdWRlZC5cbiAqXG4gKiBUaGUgZmlsZXMgYXJlIHVwbG9hZGVkIGFmdGVyIHRoZSBzdGFjayByZWFjaGVzIGBDUkVBVEVfQ09NUExFVEVgIG9yIGBVUERBVEVfQ09NUExFVEVgLiBJbiBDb2RlQnVpbGQsIHRoZSBidWlsZCBudW1iZXJcbiAqIGlkZW50aWZpZXMgdGhlIHVwbG9hZDsgb3RoZXJ3aXNlIHRoZSBjb2xsZWN0aW9uIHZlcnNpb24gaXMgdXNlZC4gQWxsIFNCT00gY2F0YWxvZyBjb25zdHJ1Y3RzIGluIHRoZSBzYW1lIHN0YWNrIHJldXNlXG4gKiBvbmUgdXBsb2FkIExhbWJkYS5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgdHNcbiAqIGNvbnN0IGFwaVNib20gPSBuZXcgczNBc3NldHMuQXNzZXQodGhpcywgJ0FwaVNib21Bc3NldCcsIHtcbiAqICAgcGF0aDogJ2J1aWxkL2FwaS1zYm9tLmpzb24nLFxuICogfSk7XG4gKiBjb25zdCBpbmZyYXN0cnVjdHVyZVNib20gPSBuZXcgczNBc3NldHMuQXNzZXQodGhpcywgJ0luZnJhc3RydWN0dXJlU2JvbUFzc2V0Jywge1xuICogICBwYXRoOiAnYnVpbGQvaW5mcmFzdHJ1Y3R1cmUtc2JvbS5qc29uJyxcbiAqIH0pO1xuICpcbiAqIG5ldyBTYm9tQ2F0YWxvZ1Byb2plY3QodGhpcywgJ0NhdGFsb2dVcGxvYWQnLCB7XG4gKiAgIGNvbGxlY3Rpb25OYW1lOiAnYmlsbGluZycsXG4gKiAgIGNvbGxlY3Rpb25WZXJzaW9uOiAnMS40LjAnLFxuICogICBzaGFyZWRUYWdzOiBbJ2RvbWFpbjpiaWxsaW5nJ10sXG4gKiAgIGNoaWxkcmVuOiBbXG4gKiAgICAge1xuICogICAgICAgbmFtZTogJ2FwaScsXG4gKiAgICAgICBzYm9tOiBhcGlTYm9tLFxuICogICAgICAgYWRkaXRpb25hbFRhZ3M6IFsnY29tcG9uZW50OmJhY2tlbmQnXSxcbiAqICAgICB9LFxuICogICAgIHtcbiAqICAgICAgIG5hbWU6ICdpbmZyYXN0cnVjdHVyZScsXG4gKiAgICAgICBzYm9tOiBpbmZyYXN0cnVjdHVyZVNib20sXG4gKiAgICAgICBhZGRpdGlvbmFsVGFnczogWydjb21wb25lbnQ6aW5mcmFzdHJ1Y3R1cmUnXSxcbiAqICAgICB9LFxuICogICBdLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFNib21DYXRhbG9nUHJvamVjdCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTYm9tQ2F0YWxvZ1Byb2plY3RQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBjb2xsZWN0aW9uVmVyc2lvbiA9IHByb3BzLmNvbGxlY3Rpb25WZXJzaW9uID8/IERFRkFVTFRfVkVSU0lPTjtcbiAgICBjb25zdCBidWlsZElkZW50aWZpZXIgPSBwcm9jZXNzLmVudi5DT0RFQlVJTERfQlVJTERfTlVNQkVSID8/IGNvbGxlY3Rpb25WZXJzaW9uO1xuICAgIGNvbnN0IHRlYW1JZGVudGlmaWVyID0gUmlvTGFuZGluZ1pvbmUuZ2V0VGVhbUlkZW50aWZpZXJQYXJhbWV0ZXIodGhpcykuc3RyaW5nVmFsdWU7XG4gICAgYXNzZXJ0Tm9uRW1wdHlWYWx1ZVdpdGhvdXRTbGFzaGVzKCdjb2xsZWN0aW9uTmFtZScsIHByb3BzLmNvbGxlY3Rpb25OYW1lKTtcbiAgICBhc3NlcnROb25FbXB0eVZlcnNpb24oJ2NvbGxlY3Rpb25WZXJzaW9uJywgY29sbGVjdGlvblZlcnNpb24pO1xuICAgIGFzc2VydE5vbkVtcHR5VmFsdWVXaXRob3V0U2xhc2hlcygnYnVpbGRJZGVudGlmaWVyJywgYnVpbGRJZGVudGlmaWVyKTtcbiAgICB2YWxpZGF0ZUNoaWxkcmVuKHByb3BzLmNoaWxkcmVuKTtcbiAgICBwYXJzZVRhZ3NXaXRoVmFsaWRVbmlxdWVLZXlzKHByb3BzLnNoYXJlZFRhZ3MgPz8gW10sICdzaGFyZWRUYWdzJyk7XG4gICAgY29uc3Qgc2hhcmVkVGFncyA9IG1lcmdlVGFncyhbYHRlYW1faWRlbnRpZmllcjoke3RlYW1JZGVudGlmaWVyfWBdLCBwcm9wcy5zaGFyZWRUYWdzKSA/PyBbXTtcblxuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2YodGhpcyk7XG4gICAgY29uc3QgY29uZmlndXJhdGlvbjogQ2F0YWxvZ1VwbG9hZENvbmZpZ3VyYXRpb24gPSB7XG4gICAgICBvcmlnaW5BY2NvdW50SWQ6IHN0YWNrLmFjY291bnQsXG4gICAgICBvcmlnaW5BY2NvdW50TmFtZTogUmlvTGFuZGluZ1pvbmUuZ2V0QWNjb3VudE5hbWVQYXJhbWV0ZXIodGhpcykuc3RyaW5nVmFsdWUsXG4gICAgICBidWlsZElkZW50aWZpZXIsXG4gICAgICBjb2xsZWN0aW9uTmFtZTogcHJvcHMuY29sbGVjdGlvbk5hbWUsXG4gICAgICBjb2xsZWN0aW9uVmVyc2lvbixcbiAgICAgIGNoaWxkcmVuOiBwcm9wcy5jaGlsZHJlbi5tYXAoY2hpbGQgPT4gKHtcbiAgICAgICAgbmFtZTogY2hpbGQubmFtZSxcbiAgICAgICAgdmVyc2lvbjogY2hpbGQudmVyc2lvbiA/PyBERUZBVUxUX1ZFUlNJT04sXG4gICAgICAgIC4uLm9wdGlvbmFsVGFncyhtZXJnZVRhZ3Moc2hhcmVkVGFncywgY2hpbGQuYWRkaXRpb25hbFRhZ3MpKSxcbiAgICAgICAgc2JvbTogYXNzZXRMb2NhdGlvbihjaGlsZC5zYm9tKSxcbiAgICAgICAgLi4uKGNoaWxkLnZleCA9PT0gdW5kZWZpbmVkID8ge30gOiB7IHZleDogYXNzZXRMb2NhdGlvbihjaGlsZC52ZXgpIH0pLFxuICAgICAgfSkpLFxuICAgIH07XG5cbiAgICBjcmVhdGVVcGxvYWRSZXNvdXJjZXMoXG4gICAgICB0aGlzLFxuICAgICAgY29uZmlndXJhdGlvbixcbiAgICAgIHByb3BzLmNoaWxkcmVuLmZsYXRNYXAoY2hpbGQgPT4gW2NoaWxkLnNib20sIC4uLihjaGlsZC52ZXggPT09IHVuZGVmaW5lZCA/IFtdIDogW2NoaWxkLnZleF0pXSlcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVVwbG9hZFJlc291cmNlcyhcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgY29uZmlndXJhdGlvbjogVXBsb2FkQ29uZmlndXJhdGlvbixcbiAgc291cmNlQXNzZXRzOiBzM0Fzc2V0cy5Bc3NldFtdXG4pOiB2b2lkIHtcbiAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG5cbiAgY29uc3QgdXBsb2FkRnVuY3Rpb24gPSBuZXcgbGFtYmRhLlNpbmdsZXRvbkZ1bmN0aW9uKHNjb3BlLCAnVXBsb2FkRnVuY3Rpb24nLCB7XG4gICAgdXVpZDogVVBMT0FEX0ZVTkNUSU9OX1VVSUQsXG4gICAgbGFtYmRhUHVycG9zZTogVVBMT0FEX0ZVTkNUSU9OX1BVUlBPU0UsXG4gICAgcnVudGltZTogREVGQVVMVF9OT0RFX1JVTlRJTUUsXG4gICAgYXJjaGl0ZWN0dXJlOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICBoYW5kbGVyOiAnaGFuZGxlci5oYW5kbGVyJyxcbiAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJ2xhbWJkYScpLCB7XG4gICAgICBleGNsdWRlOiBbJyouanMnLCAnKi5kLnRzJ10sXG4gICAgfSksXG4gICAgbG9nZ2luZ0Zvcm1hdDogbGFtYmRhLkxvZ2dpbmdGb3JtYXQuSlNPTixcbiAgICBsb2dHcm91cDogZ2V0T3JDcmVhdGVVcGxvYWRMb2dHcm91cChzdGFjayksXG4gICAgaW5pdGlhbFBvbGljeTogW1xuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbJ3MzOlB1dE9iamVjdCddLFxuICAgICAgICByZXNvdXJjZXM6IFtgJHtTQk9NX0NBVEFMT0dfQlVDS0VUX0FSTn0vKmBdLFxuICAgICAgfSksXG4gICAgXSxcbiAgICBtZW1vcnlTaXplOiAyNTYsXG4gICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgfSk7XG5cbiAgZm9yIChjb25zdCBhc3NldCBvZiBzb3VyY2VBc3NldHMpIHtcbiAgICBhc3NldC5ncmFudFJlYWQodXBsb2FkRnVuY3Rpb24pO1xuICB9XG5cbiAgbmV3IGV2ZW50cy5SdWxlKHNjb3BlLCAnU3RhY2tDb21wbGV0aW9uUnVsZScsIHtcbiAgICBldmVudFBhdHRlcm46IHtcbiAgICAgIHNvdXJjZTogWydhd3MuY2xvdWRmb3JtYXRpb24nXSxcbiAgICAgIGRldGFpbFR5cGU6IFsnQ2xvdWRGb3JtYXRpb24gU3RhY2sgU3RhdHVzIENoYW5nZSddLFxuICAgICAgZGV0YWlsOiB7XG4gICAgICAgICdzdGFjay1pZCc6IFtzdGFjay5zdGFja0lkXSxcbiAgICAgICAgJ3N0YXR1cy1kZXRhaWxzJzoge1xuICAgICAgICAgIHN0YXR1czogWydDUkVBVEVfQ09NUExFVEUnLCAnVVBEQVRFX0NPTVBMRVRFJ10sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgdGFyZ2V0czogW1xuICAgICAgbmV3IGV2ZW50c1RhcmdldHMuTGFtYmRhRnVuY3Rpb24odXBsb2FkRnVuY3Rpb24sIHtcbiAgICAgICAgZXZlbnQ6IGV2ZW50cy5SdWxlVGFyZ2V0SW5wdXQuZnJvbU9iamVjdCh7XG4gICAgICAgICAgZXZlbnRJZDogZXZlbnRzLkV2ZW50RmllbGQuZXZlbnRJZCxcbiAgICAgICAgICBzdGFja0lkOiBldmVudHMuRXZlbnRGaWVsZC5mcm9tUGF0aCgnJC5kZXRhaWwuc3RhY2staWQnKSxcbiAgICAgICAgICBzdGFja1N0YXR1czogZXZlbnRzLkV2ZW50RmllbGQuZnJvbVBhdGgoJyQuZGV0YWlsLnN0YXR1cy1kZXRhaWxzLnN0YXR1cycpLFxuICAgICAgICAgIGNvbmZpZ3VyYXRpb24sXG4gICAgICAgIH0pLFxuICAgICAgfSksXG4gICAgXSxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldE9yQ3JlYXRlVXBsb2FkTG9nR3JvdXAoc3RhY2s6IFN0YWNrKTogbG9ncy5Mb2dHcm91cCB7XG4gIGNvbnN0IGV4aXN0aW5nTG9nR3JvdXAgPSBzdGFjay5ub2RlLnRyeUZpbmRDaGlsZChVUExPQURfTE9HX0dST1VQX0lEKTtcbiAgaWYgKGV4aXN0aW5nTG9nR3JvdXAgaW5zdGFuY2VvZiBsb2dzLkxvZ0dyb3VwKSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nTG9nR3JvdXA7XG4gIH1cbiAgaWYgKGV4aXN0aW5nTG9nR3JvdXAgIT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU3RhY2sgYWxyZWFkeSBjb250YWlucyBhIGNvbnN0cnVjdCBuYW1lZCAnJHtVUExPQURfTE9HX0dST1VQX0lEfSdgKTtcbiAgfVxuICByZXR1cm4gbmV3IGxvZ3MuTG9nR3JvdXAoc3RhY2ssIFVQTE9BRF9MT0dfR1JPVVBfSUQsIHtcbiAgICByZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFzc2V0TG9jYXRpb24oYXNzZXQ6IHMzQXNzZXRzLkFzc2V0KTogQXNzZXRMb2NhdGlvbiB7XG4gIHJldHVybiB7XG4gICAgYnVja2V0TmFtZTogYXNzZXQuczNCdWNrZXROYW1lLFxuICAgIG9iamVjdEtleTogYXNzZXQuczNPYmplY3RLZXksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGFzc2VydE5vbkVtcHR5VmFsdWVXaXRob3V0U2xhc2hlcyhuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCB8fCB2YWx1ZS5pbmNsdWRlcygnLycpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke25hbWV9IG11c3QgYmUgYSBub24tZW1wdHkgdmFsdWUgd2l0aG91dCAnLydgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnROb25FbXB0eVZlcnNpb24obmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICh2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bmFtZX0gbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmdgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUNoaWxkcmVuKGNoaWxkcmVuOiBTYm9tQ2F0YWxvZ1Byb2plY3RDaGlsZFtdKTogdm9pZCB7XG4gIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NoaWxkcmVuIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgcHJvamVjdCcpO1xuICB9XG4gIGlmIChjaGlsZHJlbi5sZW5ndGggPiBNQVhfQ0hJTERSRU4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGNoaWxkcmVuIG11c3QgY29udGFpbiBhdCBtb3N0ICR7TUFYX0NISUxEUkVOfSBwcm9qZWN0c2ApO1xuICB9XG5cbiAgY29uc3QgbmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgIGFzc2VydE5vbkVtcHR5VmFsdWVXaXRob3V0U2xhc2hlcygnY2hpbGQgbmFtZScsIGNoaWxkLm5hbWUpO1xuICAgIGlmIChjaGlsZC52ZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFzc2VydE5vbkVtcHR5VmVyc2lvbihgdmVyc2lvbiBmb3IgY2hpbGQgJyR7Y2hpbGQubmFtZX0nYCwgY2hpbGQudmVyc2lvbik7XG4gICAgfVxuICAgIHBhcnNlVGFnc1dpdGhWYWxpZFVuaXF1ZUtleXMoY2hpbGQuYWRkaXRpb25hbFRhZ3MgPz8gW10sIGBhZGRpdGlvbmFsVGFncyBmb3IgY2hpbGQgJyR7Y2hpbGQubmFtZX0nYCk7XG4gICAgaWYgKG5hbWVzLmhhcyhjaGlsZC5uYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjaGlsZCBuYW1lICcke2NoaWxkLm5hbWV9JyBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGNvbGxlY3Rpb25gKTtcbiAgICB9XG4gICAgbmFtZXMuYWRkKGNoaWxkLm5hbWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlVGFncyhzaGFyZWRUYWdzPzogc3RyaW5nW10sIGFkZGl0aW9uYWxUYWdzPzogc3RyaW5nW10pOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gIGlmIChzaGFyZWRUYWdzID09PSB1bmRlZmluZWQgJiYgYWRkaXRpb25hbFRhZ3MgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBzaGFyZWQgPSBwYXJzZVRhZ3NXaXRoVmFsaWRVbmlxdWVLZXlzKHNoYXJlZFRhZ3MgPz8gW10sICdzaGFyZWRUYWdzJywgdHJ1ZSk7XG4gIGNvbnN0IGFkZGl0aW9uYWwgPSBwYXJzZVRhZ3NXaXRoVmFsaWRVbmlxdWVLZXlzKGFkZGl0aW9uYWxUYWdzID8/IFtdLCAnYWRkaXRpb25hbFRhZ3MnKTtcbiAgY29uc3QgbWVyZ2VkID0gbmV3IE1hcChzaGFyZWQpO1xuICBmb3IgKGNvbnN0IFtrZXksIHRhZ10gb2YgYWRkaXRpb25hbCkgbWVyZ2VkLnNldChrZXksIHRhZyk7XG4gIHJldHVybiBbLi4ubWVyZ2VkLnZhbHVlcygpXTtcbn1cblxuZnVuY3Rpb24gcGFyc2VUYWdzV2l0aFZhbGlkVW5pcXVlS2V5cyhcbiAgdGFnczogc3RyaW5nW10sXG4gIHByb3BlcnR5TmFtZTogc3RyaW5nLFxuICBhbGxvd01hbmFnZWRUYWdzID0gZmFsc2Vcbik6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCByZXN1bHQgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IHRhZyBvZiB0YWdzKSB7XG4gICAgY29uc3Qgc2VwYXJhdG9ySW5kZXggPSB0YWcuaW5kZXhPZignOicpO1xuICAgIGlmIChzZXBhcmF0b3JJbmRleCA8PSAwIHx8IHNlcGFyYXRvckluZGV4ID09PSB0YWcubGVuZ3RoIC0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3Byb3BlcnR5TmFtZX0gdGFnICcke3RhZ30nIG11c3QgdXNlIHRoZSBmb3JtYXQga2V5OnZhbHVlIHdpdGggYSBub24tZW1wdHkga2V5IGFuZCB2YWx1ZWApO1xuICAgIH1cblxuICAgIGNvbnN0IGtleSA9IHRhZy5zbGljZSgwLCBzZXBhcmF0b3JJbmRleCk7XG4gICAgaWYgKE1BTkFHRURfVEFHX0tFWVMuaGFzKGtleSkgJiYgIWFsbG93TWFuYWdlZFRhZ3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtwcm9wZXJ0eU5hbWV9IG11c3Qgbm90IHNldCBtYW5hZ2VkIHRhZyBrZXkgJyR7a2V5fSdgKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdC5oYXMoa2V5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3Byb3BlcnR5TmFtZX0gY29udGFpbnMgZHVwbGljYXRlIHRhZyBrZXkgJyR7a2V5fSdgKTtcbiAgICB9XG4gICAgcmVzdWx0LnNldChrZXksIHRhZyk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gb3B0aW9uYWxUYWdzKHRhZ3M/OiBzdHJpbmdbXSk6IHsgcmVhZG9ubHkgdGFncz86IHN0cmluZ1tdIH0ge1xuICByZXR1cm4gdGFncyA9PT0gdW5kZWZpbmVkID8ge30gOiB7IHRhZ3MgfTtcbn1cbiJdfQ==
|
|
@@ -11,6 +11,7 @@ import { Template } from 'aws-cdk-lib/assertions';
|
|
|
11
11
|
* - SHA-256 hash strings (64 alphanumeric characters) are replaced with 'dummy-cdk-asset'.
|
|
12
12
|
* - Tags with Key 'dd_cdk_construct' are replaced with 'dummy-datadog-version'.
|
|
13
13
|
* - LatestNodeRuntimeMap with 'dummyKey': 'dummyValue'
|
|
14
|
+
* - current_account-current_region-HASH with 'dummy-cdk-region'.
|
|
14
15
|
* @example
|
|
15
16
|
* const appStack = new AppStack()
|
|
16
17
|
* const template = Template.fromStack(appStack);
|
|
@@ -15,6 +15,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
15
15
|
* - SHA-256 hash strings (64 alphanumeric characters) are replaced with 'dummy-cdk-asset'.
|
|
16
16
|
* - Tags with Key 'dd_cdk_construct' are replaced with 'dummy-datadog-version'.
|
|
17
17
|
* - LatestNodeRuntimeMap with 'dummyKey': 'dummyValue'
|
|
18
|
+
* - current_account-current_region-HASH with 'dummy-cdk-region'.
|
|
18
19
|
* @example
|
|
19
20
|
* const appStack = new AppStack()
|
|
20
21
|
* const template = Template.fromStack(appStack);
|
|
@@ -24,6 +25,7 @@ class NormalizedTestTemplate {
|
|
|
24
25
|
static fromTemplate(template) {
|
|
25
26
|
const replacements = [
|
|
26
27
|
[/\b[a-f0-9]{64}\b/gi, 'dummy-cdk-asset'], // Match any SHA-256 hash string
|
|
28
|
+
[/(current_account-current_region-)[a-f0-9]{8}\b/gi, 'dummy-cdk-region'], // Match the current_account-current_region hash string
|
|
27
29
|
[/("Key":\s*"dd_cdk_construct",\s*"Value":\s*")[^"]*(")/g, '$1dummy-datadog-version$2'], // Match dd_cdk_construct tag added to lambda functions
|
|
28
30
|
];
|
|
29
31
|
let normalizedString = JSON.stringify(template);
|
|
@@ -40,4 +42,4 @@ class NormalizedTestTemplate {
|
|
|
40
42
|
exports.NormalizedTestTemplate = NormalizedTestTemplate;
|
|
41
43
|
_a = JSII_RTTI_SYMBOL_1;
|
|
42
44
|
NormalizedTestTemplate[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.NormalizedTestTemplate", version: "0.0.0" };
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplZC10ZXN0LXRlbXBsYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3Qvbm9ybWFsaXplZC10ZXN0LXRlbXBsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBYSxzQkFBc0I7SUFDMUIsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFrQjtRQUMzQyxNQUFNLFlBQVksR0FBdUI7WUFDdkMsQ0FBQyxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLGdDQUFnQztZQUMzRSxDQUFDLGtEQUFrRCxFQUFFLGtCQUFrQixDQUFDLEVBQUUsdURBQXVEO1lBQ2pJLENBQUMsd0RBQXdELEVBQUUsMkJBQTJCLENBQUMsRUFBRSx1REFBdUQ7U0FDakosQ0FBQztRQUVGLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLElBQUksWUFBWSxFQUFFLENBQUM7WUFDaEQsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BELElBQUksY0FBYyxDQUFDLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxDQUFDO1lBQ2xELGNBQWMsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLENBQUM7UUFDNUUsQ0FBQztRQUNELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7O0FBbEJILHdEQW1CQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSAnYXdzLWNkay1saWIvYXNzZXJ0aW9ucyc7XG5cbi8qKlxuICogQSB1dGlsaXR5IGNsYXNzIHRoYXQgbm9ybWFsaXplcyBhIFRlbXBsYXRlIG9iamVjdCB0byBzaW1wbGlmeSB0ZW1wbGF0ZSBjb21wYXJpc29ucyBpbiB0ZXN0cy5cbiAqXG4gKiBUaGUgZnJvbVRlbXBsYXRlKCkgbWV0aG9kIHdvcmtzIGJ5IGFwcGx5aW5nIHJlcGxhY2VtZW50cyBmb3Igc3BlY2lmaWMgdmFsdWVzIHdpdGggYVxuICogcGxhY2Vob2xkZXIgdmFsdWUuIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBiZWNhdXNlIGVsZW1lbnRzIGxpa2UgdGhlIFMzXG4gKiBrZXlzIGZvciBMYW1iZGEgY29kZSBhc3NldHMgaW5jbHVkZSBoYXNoIHN0cmluZ3MgdGhhdCBjaGFuZ2Ugd2l0aCBldmVyeSBkZXBlbmRlbmN5IHVwZGF0ZS4gTm9ybWFsaXppbmdcbiAqIHRoZXNlIHZhbHVlcyBwcmV2ZW50cyBmYWxzZSBuZWdhdGl2ZXMgZHVyaW5nIHRlbXBsYXRlIG9iamVjdCBjb21wYXJpc29ucy5cbiAqXG4gKiBDdXJyZW50IHJlcGxhY2VtZW50czpcbiAqIC0gU0hBLTI1NiBoYXNoIHN0cmluZ3MgKDY0IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzKSBhcmUgcmVwbGFjZWQgd2l0aCAnZHVtbXktY2RrLWFzc2V0Jy5cbiAqIC0gVGFncyB3aXRoIEtleSAnZGRfY2RrX2NvbnN0cnVjdCcgYXJlIHJlcGxhY2VkIHdpdGggJ2R1bW15LWRhdGFkb2ctdmVyc2lvbicuXG4gKiAtIExhdGVzdE5vZGVSdW50aW1lTWFwIHdpdGggJ2R1bW15S2V5JzogJ2R1bW15VmFsdWUnXG4gKiAtIGN1cnJlbnRfYWNjb3VudC1jdXJyZW50X3JlZ2lvbi1IQVNIIHdpdGggJ2R1bW15LWNkay1yZWdpb24nLlxuICogQGV4YW1wbGVcbiAqICAgY29uc3QgYXBwU3RhY2sgPSBuZXcgQXBwU3RhY2soKVxuICogICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhhcHBTdGFjayk7XG4gKiAgIGV4cGVjdChOb3JtYWxpemVkVGVtcGxhdGUuZnJvbSh0ZW1wbGF0ZSkudG9NYXRjaFNuYXBzaG90KCk7XG4gKi9cbmV4cG9ydCBjbGFzcyBOb3JtYWxpemVkVGVzdFRlbXBsYXRlIHtcbiAgcHVibGljIHN0YXRpYyBmcm9tVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlKTogVGVtcGxhdGUge1xuICAgIGNvbnN0IHJlcGxhY2VtZW50czogW1JlZ0V4cCwgc3RyaW5nXVtdID0gW1xuICAgICAgWy9cXGJbYS1mMC05XXs2NH1cXGIvZ2ksICdkdW1teS1jZGstYXNzZXQnXSwgLy8gTWF0Y2ggYW55IFNIQS0yNTYgaGFzaCBzdHJpbmdcbiAgICAgIFsvKGN1cnJlbnRfYWNjb3VudC1jdXJyZW50X3JlZ2lvbi0pW2EtZjAtOV17OH1cXGIvZ2ksICdkdW1teS1jZGstcmVnaW9uJ10sIC8vIE1hdGNoIHRoZSBjdXJyZW50X2FjY291bnQtY3VycmVudF9yZWdpb24gaGFzaCBzdHJpbmdcbiAgICAgIFsvKFwiS2V5XCI6XFxzKlwiZGRfY2RrX2NvbnN0cnVjdFwiLFxccypcIlZhbHVlXCI6XFxzKlwiKVteXCJdKihcIikvZywgJyQxZHVtbXktZGF0YWRvZy12ZXJzaW9uJDInXSwgLy8gTWF0Y2ggZGRfY2RrX2NvbnN0cnVjdCB0YWcgYWRkZWQgdG8gbGFtYmRhIGZ1bmN0aW9uc1xuICAgIF07XG5cbiAgICBsZXQgbm9ybWFsaXplZFN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHRlbXBsYXRlKTtcbiAgICBmb3IgKGNvbnN0IFtyZWdleCwgcmVwbGFjZW1lbnRdIG9mIHJlcGxhY2VtZW50cykge1xuICAgICAgbm9ybWFsaXplZFN0cmluZyA9IG5vcm1hbGl6ZWRTdHJpbmcucmVwbGFjZShyZWdleCwgcmVwbGFjZW1lbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRKc29uID0gSlNPTi5wYXJzZShub3JtYWxpemVkU3RyaW5nKTtcbiAgICBpZiAobm9ybWFsaXplZEpzb24uTWFwcGluZ3M/LkxhdGVzdE5vZGVSdW50aW1lTWFwKSB7XG4gICAgICBub3JtYWxpemVkSnNvbi5NYXBwaW5ncy5MYXRlc3ROb2RlUnVudGltZU1hcCA9IHsgZHVtbXlLZXk6ICdkdW1teVZhbHVlJyB9O1xuICAgIH1cbiAgICByZXR1cm4gbm9ybWFsaXplZEpzb247XG4gIH1cbn1cbiJdfQ==
|
package/package.json
CHANGED
package/version.json
CHANGED