@gemeentenijmegen/webapp 1.1.5 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (910) hide show
  1. package/.jsii +12 -12
  2. package/lib/webapp/Criticality.js +1 -1
  3. package/lib/webapp/Webapp.js +1 -1
  4. package/lib/webapp/Webpage.js +1 -1
  5. package/lib/webapp/util/Files.js +1 -1
  6. package/node_modules/@aws-sdk/client-dynamodb/dist-cjs/auth/httpAuthSchemeProvider.js +1 -3
  7. package/node_modules/@aws-sdk/client-dynamodb/dist-cjs/endpoint/endpointResolver.js +10 -1
  8. package/node_modules/@aws-sdk/client-dynamodb/dist-cjs/endpoint/ruleset.js +3 -3
  9. package/node_modules/@aws-sdk/client-dynamodb/dist-cjs/index.js +449 -310
  10. package/node_modules/@aws-sdk/client-dynamodb/dist-es/DynamoDBClient.js +2 -1
  11. package/node_modules/@aws-sdk/client-dynamodb/dist-es/auth/httpAuthSchemeProvider.js +1 -3
  12. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/BatchGetItemCommand.js +4 -1
  13. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/BatchWriteItemCommand.js +4 -1
  14. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/CreateBackupCommand.js +4 -1
  15. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/CreateGlobalTableCommand.js +4 -1
  16. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/CreateTableCommand.js +4 -1
  17. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/DeleteBackupCommand.js +4 -1
  18. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/DeleteItemCommand.js +4 -1
  19. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/DeleteResourcePolicyCommand.js +4 -1
  20. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/DeleteTableCommand.js +4 -1
  21. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/DescribeBackupCommand.js +4 -1
  22. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/DescribeContinuousBackupsCommand.js +4 -1
  23. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/DescribeContributorInsightsCommand.js +4 -1
  24. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/DescribeExportCommand.js +4 -1
  25. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/DescribeGlobalTableCommand.js +4 -1
  26. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/DescribeGlobalTableSettingsCommand.js +4 -1
  27. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/DescribeImportCommand.js +4 -1
  28. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/DescribeKinesisStreamingDestinationCommand.js +4 -1
  29. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/DescribeTableCommand.js +4 -1
  30. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/DescribeTableReplicaAutoScalingCommand.js +4 -1
  31. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/DescribeTimeToLiveCommand.js +4 -1
  32. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/DisableKinesisStreamingDestinationCommand.js +4 -1
  33. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/EnableKinesisStreamingDestinationCommand.js +4 -1
  34. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/ExportTableToPointInTimeCommand.js +4 -1
  35. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/GetItemCommand.js +4 -1
  36. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/GetResourcePolicyCommand.js +4 -1
  37. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/ImportTableCommand.js +4 -1
  38. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/ListBackupsCommand.js +4 -1
  39. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/ListContributorInsightsCommand.js +4 -1
  40. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/ListExportsCommand.js +4 -1
  41. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/ListImportsCommand.js +4 -1
  42. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/ListTagsOfResourceCommand.js +4 -1
  43. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/PutItemCommand.js +4 -1
  44. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/PutResourcePolicyCommand.js +4 -1
  45. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/QueryCommand.js +4 -1
  46. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/RestoreTableFromBackupCommand.js +4 -1
  47. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/RestoreTableToPointInTimeCommand.js +4 -1
  48. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/ScanCommand.js +4 -1
  49. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/TagResourceCommand.js +4 -1
  50. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/TransactGetItemsCommand.js +7 -1
  51. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/UntagResourceCommand.js +4 -1
  52. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/UpdateContinuousBackupsCommand.js +4 -1
  53. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/UpdateContributorInsightsCommand.js +4 -1
  54. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/UpdateGlobalTableCommand.js +4 -1
  55. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/UpdateGlobalTableSettingsCommand.js +4 -1
  56. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/UpdateItemCommand.js +4 -1
  57. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/UpdateKinesisStreamingDestinationCommand.js +4 -1
  58. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/UpdateTableCommand.js +4 -1
  59. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/UpdateTableReplicaAutoScalingCommand.js +4 -1
  60. package/node_modules/@aws-sdk/client-dynamodb/dist-es/commands/UpdateTimeToLiveCommand.js +4 -1
  61. package/node_modules/@aws-sdk/client-dynamodb/dist-es/endpoint/EndpointParameters.js +2 -3
  62. package/node_modules/@aws-sdk/client-dynamodb/dist-es/endpoint/endpointResolver.js +10 -1
  63. package/node_modules/@aws-sdk/client-dynamodb/dist-es/endpoint/ruleset.js +3 -3
  64. package/node_modules/@aws-sdk/client-dynamodb/dist-es/runtimeExtensions.js +2 -14
  65. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/BatchExecuteStatementCommand.d.ts +1 -0
  66. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/BatchGetItemCommand.d.ts +27 -27
  67. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/BatchWriteItemCommand.d.ts +32 -29
  68. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/CreateBackupCommand.d.ts +1 -0
  69. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/CreateGlobalTableCommand.d.ts +1 -0
  70. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/CreateTableCommand.d.ts +1 -70
  71. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DeleteBackupCommand.d.ts +1 -0
  72. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DeleteItemCommand.d.ts +12 -12
  73. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DeleteResourcePolicyCommand.d.ts +1 -0
  74. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DeleteTableCommand.d.ts +13 -13
  75. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DescribeBackupCommand.d.ts +1 -0
  76. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DescribeContinuousBackupsCommand.d.ts +1 -0
  77. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DescribeContributorInsightsCommand.d.ts +1 -0
  78. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DescribeEndpointsCommand.d.ts +1 -0
  79. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DescribeExportCommand.d.ts +1 -0
  80. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DescribeGlobalTableCommand.d.ts +1 -0
  81. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DescribeGlobalTableSettingsCommand.d.ts +1 -0
  82. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DescribeImportCommand.d.ts +1 -0
  83. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DescribeKinesisStreamingDestinationCommand.d.ts +1 -0
  84. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DescribeLimitsCommand.d.ts +8 -8
  85. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DescribeTableCommand.d.ts +1 -47
  86. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DescribeTableReplicaAutoScalingCommand.d.ts +1 -0
  87. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DescribeTimeToLiveCommand.d.ts +1 -0
  88. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DisableKinesisStreamingDestinationCommand.d.ts +1 -0
  89. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/EnableKinesisStreamingDestinationCommand.d.ts +1 -0
  90. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/ExecuteStatementCommand.d.ts +1 -0
  91. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/ExecuteTransactionCommand.d.ts +1 -0
  92. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/ExportTableToPointInTimeCommand.d.ts +1 -0
  93. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/GetItemCommand.d.ts +16 -16
  94. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/GetResourcePolicyCommand.d.ts +1 -0
  95. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/ImportTableCommand.d.ts +1 -0
  96. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/ListBackupsCommand.d.ts +1 -0
  97. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/ListContributorInsightsCommand.d.ts +1 -0
  98. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/ListExportsCommand.d.ts +1 -0
  99. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/ListGlobalTablesCommand.d.ts +1 -0
  100. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/ListImportsCommand.d.ts +1 -0
  101. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/ListTablesCommand.d.ts +5 -5
  102. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/ListTagsOfResourceCommand.d.ts +1 -0
  103. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/PutItemCommand.d.ts +15 -15
  104. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/PutResourcePolicyCommand.d.ts +1 -0
  105. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/QueryCommand.d.ts +15 -15
  106. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/RestoreTableFromBackupCommand.d.ts +1 -0
  107. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/RestoreTableToPointInTimeCommand.d.ts +1 -0
  108. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/ScanCommand.d.ts +24 -24
  109. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/TagResourceCommand.d.ts +1 -0
  110. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/TransactGetItemsCommand.d.ts +1 -0
  111. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/TransactWriteItemsCommand.d.ts +1 -0
  112. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/UntagResourceCommand.d.ts +1 -0
  113. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/UpdateContinuousBackupsCommand.d.ts +1 -0
  114. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/UpdateContributorInsightsCommand.d.ts +1 -0
  115. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/UpdateGlobalTableCommand.d.ts +1 -0
  116. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/UpdateGlobalTableSettingsCommand.d.ts +1 -0
  117. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/UpdateItemCommand.d.ts +28 -28
  118. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/UpdateKinesisStreamingDestinationCommand.d.ts +1 -0
  119. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/UpdateTableCommand.d.ts +1 -52
  120. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/UpdateTableReplicaAutoScalingCommand.d.ts +1 -0
  121. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/UpdateTimeToLiveCommand.d.ts +1 -0
  122. package/node_modules/@aws-sdk/client-dynamodb/dist-types/endpoint/EndpointParameters.d.ts +2 -0
  123. package/node_modules/@aws-sdk/client-dynamodb/dist-types/ts3.4/endpoint/EndpointParameters.d.ts +2 -0
  124. package/node_modules/@aws-sdk/client-dynamodb/package.json +35 -35
  125. package/node_modules/@aws-sdk/client-s3/dist-cjs/auth/httpAuthSchemeProvider.js +1 -3
  126. package/node_modules/@aws-sdk/client-s3/dist-cjs/endpoint/ruleset.js +3 -3
  127. package/node_modules/@aws-sdk/client-s3/dist-cjs/index.js +58 -77
  128. package/node_modules/@aws-sdk/client-s3/dist-es/S3Client.js +2 -1
  129. package/node_modules/@aws-sdk/client-s3/dist-es/auth/httpAuthSchemeProvider.js +1 -3
  130. package/node_modules/@aws-sdk/client-s3/dist-es/endpoint/EndpointParameters.js +2 -3
  131. package/node_modules/@aws-sdk/client-s3/dist-es/endpoint/ruleset.js +3 -3
  132. package/node_modules/@aws-sdk/client-s3/dist-es/runtimeExtensions.js +2 -14
  133. package/node_modules/@aws-sdk/client-s3/dist-types/commands/AbortMultipartUploadCommand.d.ts +9 -6
  134. package/node_modules/@aws-sdk/client-s3/dist-types/commands/CompleteMultipartUploadCommand.d.ts +16 -16
  135. package/node_modules/@aws-sdk/client-s3/dist-types/commands/CopyObjectCommand.d.ts +9 -9
  136. package/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateBucketCommand.d.ts +15 -16
  137. package/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateBucketMetadataTableConfigurationCommand.d.ts +1 -0
  138. package/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateMultipartUploadCommand.d.ts +8 -8
  139. package/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateSessionCommand.d.ts +1 -0
  140. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketAnalyticsConfigurationCommand.d.ts +1 -0
  141. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketCommand.d.ts +7 -4
  142. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketCorsCommand.d.ts +7 -4
  143. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketEncryptionCommand.d.ts +1 -0
  144. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketIntelligentTieringConfigurationCommand.d.ts +1 -0
  145. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketInventoryConfigurationCommand.d.ts +1 -0
  146. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketLifecycleCommand.d.ts +7 -4
  147. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketMetadataTableConfigurationCommand.d.ts +1 -0
  148. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketMetricsConfigurationCommand.d.ts +1 -0
  149. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketOwnershipControlsCommand.d.ts +1 -0
  150. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketPolicyCommand.d.ts +7 -4
  151. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketReplicationCommand.d.ts +7 -4
  152. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketTaggingCommand.d.ts +7 -4
  153. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketWebsiteCommand.d.ts +7 -4
  154. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteObjectCommand.d.ts +18 -13
  155. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteObjectTaggingCommand.d.ts +11 -12
  156. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteObjectsCommand.d.ts +30 -31
  157. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeletePublicAccessBlockCommand.d.ts +1 -0
  158. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketAccelerateConfigurationCommand.d.ts +1 -0
  159. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketAclCommand.d.ts +1 -0
  160. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketAnalyticsConfigurationCommand.d.ts +1 -0
  161. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketCorsCommand.d.ts +9 -9
  162. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketEncryptionCommand.d.ts +1 -0
  163. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketIntelligentTieringConfigurationCommand.d.ts +1 -0
  164. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketInventoryConfigurationCommand.d.ts +1 -0
  165. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketLifecycleConfigurationCommand.d.ts +11 -11
  166. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketLocationCommand.d.ts +5 -5
  167. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketLoggingCommand.d.ts +1 -0
  168. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketMetadataTableConfigurationCommand.d.ts +1 -0
  169. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketMetricsConfigurationCommand.d.ts +1 -0
  170. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketNotificationConfigurationCommand.d.ts +1 -0
  171. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketOwnershipControlsCommand.d.ts +1 -0
  172. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketPolicyCommand.d.ts +5 -5
  173. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketPolicyStatusCommand.d.ts +1 -0
  174. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketReplicationCommand.d.ts +12 -12
  175. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketRequestPaymentCommand.d.ts +5 -5
  176. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketTaggingCommand.d.ts +9 -9
  177. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketVersioningCommand.d.ts +6 -6
  178. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketWebsiteCommand.d.ts +8 -8
  179. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectAclCommand.d.ts +29 -29
  180. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectAttributesCommand.d.ts +1 -0
  181. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectCommand.d.ts +45 -31
  182. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectLegalHoldCommand.d.ts +1 -0
  183. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectLockConfigurationCommand.d.ts +1 -0
  184. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectRetentionCommand.d.ts +1 -0
  185. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectTaggingCommand.d.ts +19 -20
  186. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectTorrentCommand.d.ts +18 -5
  187. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetPublicAccessBlockCommand.d.ts +1 -0
  188. package/node_modules/@aws-sdk/client-s3/dist-types/commands/HeadBucketCommand.d.ts +7 -4
  189. package/node_modules/@aws-sdk/client-s3/dist-types/commands/HeadObjectCommand.d.ts +12 -12
  190. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketAnalyticsConfigurationsCommand.d.ts +1 -0
  191. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketIntelligentTieringConfigurationsCommand.d.ts +1 -0
  192. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketInventoryConfigurationsCommand.d.ts +1 -0
  193. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketMetricsConfigurationsCommand.d.ts +1 -0
  194. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketsCommand.d.ts +14 -14
  195. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListDirectoryBucketsCommand.d.ts +1 -0
  196. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListMultipartUploadsCommand.d.ts +62 -63
  197. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectVersionsCommand.d.ts +26 -26
  198. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectsCommand.d.ts +23 -23
  199. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectsV2Command.d.ts +22 -22
  200. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListPartsCommand.d.ts +22 -22
  201. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAccelerateConfigurationCommand.d.ts +1 -0
  202. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAclCommand.d.ts +9 -6
  203. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAnalyticsConfigurationCommand.d.ts +1 -0
  204. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketCorsCommand.d.ts +19 -16
  205. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketEncryptionCommand.d.ts +1 -0
  206. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketIntelligentTieringConfigurationCommand.d.ts +1 -0
  207. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketInventoryConfigurationCommand.d.ts +1 -0
  208. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketLifecycleConfigurationCommand.d.ts +18 -15
  209. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketLoggingCommand.d.ts +16 -13
  210. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketMetricsConfigurationCommand.d.ts +1 -0
  211. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketNotificationConfigurationCommand.d.ts +11 -8
  212. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketOwnershipControlsCommand.d.ts +1 -0
  213. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketPolicyCommand.d.ts +8 -5
  214. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketReplicationCommand.d.ts +15 -12
  215. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketRequestPaymentCommand.d.ts +9 -6
  216. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketTaggingCommand.d.ts +13 -10
  217. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketVersioningCommand.d.ts +10 -7
  218. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketWebsiteCommand.d.ts +13 -10
  219. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectAclCommand.d.ts +11 -8
  220. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectCommand.d.ts +68 -74
  221. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectLegalHoldCommand.d.ts +1 -0
  222. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectLockConfigurationCommand.d.ts +1 -0
  223. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectRetentionCommand.d.ts +1 -0
  224. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectTaggingCommand.d.ts +12 -12
  225. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutPublicAccessBlockCommand.d.ts +1 -0
  226. package/node_modules/@aws-sdk/client-s3/dist-types/commands/RestoreObjectCommand.d.ts +17 -16
  227. package/node_modules/@aws-sdk/client-s3/dist-types/commands/SelectObjectContentCommand.d.ts +1 -0
  228. package/node_modules/@aws-sdk/client-s3/dist-types/commands/UploadPartCommand.d.ts +9 -9
  229. package/node_modules/@aws-sdk/client-s3/dist-types/commands/UploadPartCopyCommand.d.ts +21 -22
  230. package/node_modules/@aws-sdk/client-s3/dist-types/commands/WriteGetObjectResponseCommand.d.ts +1 -0
  231. package/node_modules/@aws-sdk/client-s3/dist-types/models/models_0.d.ts +47 -48
  232. package/node_modules/@aws-sdk/client-s3/dist-types/models/models_1.d.ts +13 -14
  233. package/node_modules/@aws-sdk/client-s3/package.json +50 -50
  234. package/node_modules/@aws-sdk/client-secrets-manager/dist-cjs/auth/httpAuthSchemeProvider.js +1 -3
  235. package/node_modules/@aws-sdk/client-secrets-manager/dist-cjs/index.js +47 -48
  236. package/node_modules/@aws-sdk/client-secrets-manager/dist-es/SecretsManagerClient.js +2 -1
  237. package/node_modules/@aws-sdk/client-secrets-manager/dist-es/auth/httpAuthSchemeProvider.js +1 -3
  238. package/node_modules/@aws-sdk/client-secrets-manager/dist-es/endpoint/EndpointParameters.js +2 -3
  239. package/node_modules/@aws-sdk/client-secrets-manager/dist-es/runtimeExtensions.js +2 -14
  240. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/BatchGetSecretValueCommand.d.ts +24 -24
  241. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/CancelRotateSecretCommand.d.ts +6 -6
  242. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/CreateSecretCommand.d.ts +10 -10
  243. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/DeleteResourcePolicyCommand.d.ts +6 -6
  244. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/DeleteSecretCommand.d.ts +1 -19
  245. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/DescribeSecretCommand.d.ts +1 -48
  246. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/GetRandomPasswordCommand.d.ts +7 -7
  247. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/GetResourcePolicyCommand.d.ts +17 -7
  248. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/GetSecretValueCommand.d.ts +14 -10
  249. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/ListSecretVersionIdsCommand.d.ts +16 -16
  250. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/ListSecretsCommand.d.ts +17 -17
  251. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/PutResourcePolicyCommand.d.ts +17 -7
  252. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/PutSecretValueCommand.d.ts +10 -10
  253. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/RemoveRegionsFromReplicationCommand.d.ts +1 -0
  254. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/ReplicateSecretToRegionsCommand.d.ts +12 -12
  255. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/RestoreSecretCommand.d.ts +6 -6
  256. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/RotateSecretCommand.d.ts +16 -17
  257. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/StopReplicationToReplicaCommand.d.ts +1 -0
  258. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/TagResourceCommand.d.ts +12 -9
  259. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/UntagResourceCommand.d.ts +8 -5
  260. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/UpdateSecretCommand.d.ts +25 -27
  261. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/UpdateSecretVersionStageCommand.d.ts +21 -23
  262. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/commands/ValidateResourcePolicyCommand.d.ts +17 -7
  263. package/node_modules/@aws-sdk/client-secrets-manager/package.json +33 -33
  264. package/node_modules/@aws-sdk/client-ssm/dist-cjs/auth/httpAuthSchemeProvider.js +1 -3
  265. package/node_modules/@aws-sdk/client-ssm/dist-cjs/index.js +225 -220
  266. package/node_modules/@aws-sdk/client-ssm/dist-es/SSMClient.js +2 -1
  267. package/node_modules/@aws-sdk/client-ssm/dist-es/auth/httpAuthSchemeProvider.js +1 -3
  268. package/node_modules/@aws-sdk/client-ssm/dist-es/endpoint/EndpointParameters.js +2 -3
  269. package/node_modules/@aws-sdk/client-ssm/dist-es/models/models_0.js +5 -0
  270. package/node_modules/@aws-sdk/client-ssm/dist-es/protocols/Aws_json1_1.js +4 -0
  271. package/node_modules/@aws-sdk/client-ssm/dist-es/runtimeExtensions.js +2 -14
  272. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/AddTagsToResourceCommand.d.ts +1 -0
  273. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/AssociateOpsItemRelatedItemCommand.d.ts +1 -0
  274. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/CancelCommandCommand.d.ts +1 -0
  275. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/CancelMaintenanceWindowExecutionCommand.d.ts +1 -0
  276. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/CreateActivationCommand.d.ts +1 -0
  277. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/CreateAssociationBatchCommand.d.ts +1 -0
  278. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/CreateAssociationCommand.d.ts +1 -0
  279. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/CreateDocumentCommand.d.ts +1 -0
  280. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/CreateMaintenanceWindowCommand.d.ts +1 -0
  281. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/CreateOpsItemCommand.d.ts +1 -0
  282. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/CreateOpsMetadataCommand.d.ts +1 -0
  283. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/CreatePatchBaselineCommand.d.ts +2 -0
  284. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/CreateResourceDataSyncCommand.d.ts +1 -0
  285. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DeleteActivationCommand.d.ts +1 -0
  286. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DeleteAssociationCommand.d.ts +1 -0
  287. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DeleteDocumentCommand.d.ts +1 -0
  288. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DeleteInventoryCommand.d.ts +1 -0
  289. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DeleteMaintenanceWindowCommand.d.ts +1 -0
  290. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DeleteOpsItemCommand.d.ts +1 -0
  291. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DeleteOpsMetadataCommand.d.ts +1 -0
  292. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DeleteParameterCommand.d.ts +1 -0
  293. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DeleteParametersCommand.d.ts +1 -0
  294. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DeletePatchBaselineCommand.d.ts +1 -0
  295. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DeleteResourceDataSyncCommand.d.ts +1 -0
  296. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DeleteResourcePolicyCommand.d.ts +1 -0
  297. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DeregisterManagedInstanceCommand.d.ts +1 -0
  298. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DeregisterPatchBaselineForPatchGroupCommand.d.ts +1 -0
  299. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DeregisterTargetFromMaintenanceWindowCommand.d.ts +1 -0
  300. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DeregisterTaskFromMaintenanceWindowCommand.d.ts +1 -0
  301. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeActivationsCommand.d.ts +1 -0
  302. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeAssociationCommand.d.ts +1 -0
  303. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeAssociationExecutionTargetsCommand.d.ts +1 -0
  304. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeAssociationExecutionsCommand.d.ts +1 -0
  305. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeAutomationExecutionsCommand.d.ts +1 -0
  306. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeAutomationStepExecutionsCommand.d.ts +1 -0
  307. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeAvailablePatchesCommand.d.ts +1 -0
  308. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeDocumentCommand.d.ts +1 -0
  309. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeDocumentPermissionCommand.d.ts +1 -0
  310. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeEffectiveInstanceAssociationsCommand.d.ts +1 -0
  311. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeEffectivePatchesForPatchBaselineCommand.d.ts +1 -0
  312. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeInstanceAssociationsStatusCommand.d.ts +1 -0
  313. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeInstanceInformationCommand.d.ts +1 -0
  314. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeInstancePatchStatesCommand.d.ts +2 -0
  315. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeInstancePatchStatesForPatchGroupCommand.d.ts +2 -0
  316. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeInstancePatchesCommand.d.ts +2 -1
  317. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeInstancePropertiesCommand.d.ts +1 -0
  318. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeInventoryDeletionsCommand.d.ts +1 -0
  319. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeMaintenanceWindowExecutionTaskInvocationsCommand.d.ts +1 -0
  320. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeMaintenanceWindowExecutionTasksCommand.d.ts +1 -0
  321. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeMaintenanceWindowExecutionsCommand.d.ts +1 -0
  322. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeMaintenanceWindowScheduleCommand.d.ts +1 -0
  323. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeMaintenanceWindowTargetsCommand.d.ts +1 -0
  324. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeMaintenanceWindowTasksCommand.d.ts +1 -0
  325. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeMaintenanceWindowsCommand.d.ts +1 -0
  326. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeMaintenanceWindowsForTargetCommand.d.ts +1 -0
  327. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeOpsItemsCommand.d.ts +1 -0
  328. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeParametersCommand.d.ts +1 -0
  329. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribePatchBaselinesCommand.d.ts +1 -0
  330. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribePatchGroupStateCommand.d.ts +2 -0
  331. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribePatchGroupsCommand.d.ts +1 -0
  332. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribePatchPropertiesCommand.d.ts +1 -0
  333. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeSessionsCommand.d.ts +1 -0
  334. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DisassociateOpsItemRelatedItemCommand.d.ts +1 -0
  335. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetAutomationExecutionCommand.d.ts +1 -0
  336. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetCalendarStateCommand.d.ts +1 -0
  337. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetCommandInvocationCommand.d.ts +1 -0
  338. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetConnectionStatusCommand.d.ts +1 -0
  339. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetDefaultPatchBaselineCommand.d.ts +1 -0
  340. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetDeployablePatchSnapshotForInstanceCommand.d.ts +2 -0
  341. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetDocumentCommand.d.ts +1 -0
  342. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetExecutionPreviewCommand.d.ts +1 -29
  343. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetInventoryCommand.d.ts +1 -0
  344. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetInventorySchemaCommand.d.ts +1 -0
  345. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetMaintenanceWindowCommand.d.ts +1 -0
  346. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetMaintenanceWindowExecutionCommand.d.ts +1 -0
  347. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetMaintenanceWindowExecutionTaskCommand.d.ts +1 -0
  348. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetMaintenanceWindowExecutionTaskInvocationCommand.d.ts +1 -0
  349. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetMaintenanceWindowTaskCommand.d.ts +1 -0
  350. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetOpsItemCommand.d.ts +1 -0
  351. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetOpsMetadataCommand.d.ts +1 -0
  352. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetOpsSummaryCommand.d.ts +1 -0
  353. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetParameterCommand.d.ts +1 -0
  354. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetParameterHistoryCommand.d.ts +1 -0
  355. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetParametersByPathCommand.d.ts +1 -0
  356. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetParametersCommand.d.ts +1 -0
  357. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetPatchBaselineCommand.d.ts +2 -0
  358. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetPatchBaselineForPatchGroupCommand.d.ts +1 -0
  359. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetResourcePoliciesCommand.d.ts +1 -0
  360. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetServiceSettingCommand.d.ts +1 -0
  361. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/LabelParameterVersionCommand.d.ts +1 -0
  362. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListAssociationVersionsCommand.d.ts +1 -0
  363. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListAssociationsCommand.d.ts +1 -0
  364. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListCommandInvocationsCommand.d.ts +1 -0
  365. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListCommandsCommand.d.ts +1 -0
  366. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListComplianceItemsCommand.d.ts +1 -0
  367. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListComplianceSummariesCommand.d.ts +1 -0
  368. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListDocumentMetadataHistoryCommand.d.ts +1 -0
  369. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListDocumentVersionsCommand.d.ts +1 -0
  370. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListDocumentsCommand.d.ts +1 -0
  371. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListInventoryEntriesCommand.d.ts +1 -0
  372. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListNodesCommand.d.ts +1 -52
  373. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListNodesSummaryCommand.d.ts +19 -19
  374. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListOpsItemEventsCommand.d.ts +1 -0
  375. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListOpsItemRelatedItemsCommand.d.ts +1 -0
  376. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListOpsMetadataCommand.d.ts +1 -0
  377. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListResourceComplianceSummariesCommand.d.ts +1 -0
  378. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListResourceDataSyncCommand.d.ts +1 -0
  379. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListTagsForResourceCommand.d.ts +1 -0
  380. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ModifyDocumentPermissionCommand.d.ts +1 -0
  381. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/PutComplianceItemsCommand.d.ts +1 -0
  382. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/PutInventoryCommand.d.ts +1 -0
  383. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/PutParameterCommand.d.ts +1 -0
  384. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/PutResourcePolicyCommand.d.ts +1 -0
  385. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/RegisterDefaultPatchBaselineCommand.d.ts +1 -0
  386. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/RegisterPatchBaselineForPatchGroupCommand.d.ts +1 -0
  387. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/RegisterTargetWithMaintenanceWindowCommand.d.ts +1 -0
  388. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/RegisterTaskWithMaintenanceWindowCommand.d.ts +1 -0
  389. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/RemoveTagsFromResourceCommand.d.ts +1 -0
  390. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ResetServiceSettingCommand.d.ts +2 -2
  391. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ResumeSessionCommand.d.ts +1 -0
  392. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/SendAutomationSignalCommand.d.ts +1 -0
  393. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/SendCommandCommand.d.ts +1 -0
  394. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/StartAssociationsOnceCommand.d.ts +1 -0
  395. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/StartAutomationExecutionCommand.d.ts +1 -0
  396. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/StartChangeRequestExecutionCommand.d.ts +1 -0
  397. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/StartExecutionPreviewCommand.d.ts +5 -5
  398. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/StartSessionCommand.d.ts +1 -0
  399. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/StopAutomationExecutionCommand.d.ts +1 -0
  400. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/TerminateSessionCommand.d.ts +1 -0
  401. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/UnlabelParameterVersionCommand.d.ts +1 -0
  402. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/UpdateAssociationCommand.d.ts +1 -0
  403. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/UpdateAssociationStatusCommand.d.ts +1 -0
  404. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/UpdateDocumentCommand.d.ts +1 -0
  405. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/UpdateDocumentDefaultVersionCommand.d.ts +1 -0
  406. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/UpdateDocumentMetadataCommand.d.ts +1 -0
  407. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/UpdateMaintenanceWindowCommand.d.ts +1 -0
  408. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/UpdateMaintenanceWindowTargetCommand.d.ts +1 -0
  409. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/UpdateMaintenanceWindowTaskCommand.d.ts +1 -0
  410. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/UpdateManagedInstanceRoleCommand.d.ts +1 -0
  411. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/UpdateOpsItemCommand.d.ts +1 -0
  412. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/UpdateOpsMetadataCommand.d.ts +1 -0
  413. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/UpdatePatchBaselineCommand.d.ts +3 -0
  414. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/UpdateResourceDataSyncCommand.d.ts +1 -0
  415. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/UpdateServiceSettingCommand.d.ts +1 -0
  416. package/node_modules/@aws-sdk/client-ssm/dist-types/models/models_0.d.ts +34 -22
  417. package/node_modules/@aws-sdk/client-ssm/dist-types/models/models_1.d.ts +60 -69
  418. package/node_modules/@aws-sdk/client-ssm/dist-types/models/models_2.d.ts +83 -1
  419. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/ResetServiceSettingCommand.d.ts +4 -2
  420. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/models/models_0.d.ts +9 -5
  421. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/models/models_1.d.ts +9 -4
  422. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/models/models_2.d.ts +6 -0
  423. package/node_modules/@aws-sdk/client-ssm/package.json +34 -34
  424. package/node_modules/@aws-sdk/client-sso/dist-cjs/auth/httpAuthSchemeProvider.js +1 -3
  425. package/node_modules/@aws-sdk/client-sso/dist-cjs/index.js +22 -23
  426. package/node_modules/@aws-sdk/client-sso/dist-es/SSOClient.js +2 -1
  427. package/node_modules/@aws-sdk/client-sso/dist-es/auth/httpAuthSchemeProvider.js +1 -3
  428. package/node_modules/@aws-sdk/client-sso/dist-es/endpoint/EndpointParameters.js +2 -3
  429. package/node_modules/@aws-sdk/client-sso/dist-es/runtimeExtensions.js +2 -14
  430. package/node_modules/@aws-sdk/client-sso/dist-types/commands/GetRoleCredentialsCommand.d.ts +1 -0
  431. package/node_modules/@aws-sdk/client-sso/dist-types/commands/ListAccountRolesCommand.d.ts +1 -0
  432. package/node_modules/@aws-sdk/client-sso/dist-types/commands/ListAccountsCommand.d.ts +1 -0
  433. package/node_modules/@aws-sdk/client-sso/dist-types/commands/LogoutCommand.d.ts +1 -0
  434. package/node_modules/@aws-sdk/client-sso/package.json +32 -32
  435. package/node_modules/@aws-sdk/core/dist-cjs/submodules/account-id-endpoint/index.js +13 -15
  436. package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js +3 -3
  437. package/node_modules/@aws-sdk/core/dist-cjs/submodules/httpAuthSchemes/index.js +82 -33
  438. package/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js +4 -4
  439. package/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.js +4 -4
  440. package/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.js +70 -27
  441. package/node_modules/@aws-sdk/core/dist-types/api-extractor-type-index.d.ts +5 -0
  442. package/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.d.ts +0 -3
  443. package/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/AccountIdEndpointModeConstants.d.ts +9 -0
  444. package/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.d.ts +2 -1
  445. package/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts +25 -3
  446. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/parseJsonBody.d.ts +9 -0
  447. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/parseXmlBody.d.ts +9 -0
  448. package/node_modules/@aws-sdk/core/dist-types/ts3.4/api-extractor-type-index.d.ts +5 -0
  449. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts +11 -1
  450. package/node_modules/@aws-sdk/core/package.json +22 -22
  451. package/node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js +3 -3
  452. package/node_modules/@aws-sdk/credential-provider-env/package.json +5 -5
  453. package/node_modules/@aws-sdk/credential-provider-http/package.json +10 -10
  454. package/node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js +9 -9
  455. package/node_modules/@aws-sdk/credential-provider-ini/package.json +13 -13
  456. package/node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js +3 -3
  457. package/node_modules/@aws-sdk/credential-provider-node/package.json +12 -12
  458. package/node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js +3 -3
  459. package/node_modules/@aws-sdk/credential-provider-process/package.json +6 -6
  460. package/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js +3 -3
  461. package/node_modules/@aws-sdk/credential-provider-sso/package.json +8 -8
  462. package/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js +4 -4
  463. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +6 -6
  464. package/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-cjs/index.js +14 -18
  465. package/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/configurations.js +2 -3
  466. package/node_modules/@aws-sdk/middleware-bucket-endpoint/package.json +5 -5
  467. package/node_modules/@aws-sdk/middleware-endpoint-discovery/dist-cjs/index.js +23 -22
  468. package/node_modules/@aws-sdk/middleware-endpoint-discovery/dist-es/resolveEndpointDiscoveryConfig.js +11 -9
  469. package/node_modules/@aws-sdk/middleware-endpoint-discovery/dist-types/configurations.d.ts +3 -0
  470. package/node_modules/@aws-sdk/middleware-endpoint-discovery/dist-types/getEndpointDiscoveryPlugin.d.ts +11 -0
  471. package/node_modules/@aws-sdk/middleware-endpoint-discovery/dist-types/resolveEndpointDiscoveryConfig.d.ts +6 -0
  472. package/node_modules/@aws-sdk/middleware-endpoint-discovery/package.json +6 -5
  473. package/node_modules/@aws-sdk/middleware-expect-continue/dist-cjs/index.js +5 -5
  474. package/node_modules/@aws-sdk/middleware-expect-continue/package.json +4 -4
  475. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-cjs/index.js +18 -21
  476. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/resolveFlexibleChecksumsConfig.js +8 -6
  477. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS.d.ts +9 -0
  478. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS.d.ts +9 -0
  479. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/configuration.d.ts +3 -0
  480. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/constants.d.ts +16 -0
  481. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/crc64-nvme-crt-container.d.ts +1 -1
  482. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/flexibleChecksumsInputMiddleware.d.ts +3 -0
  483. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/flexibleChecksumsMiddleware.d.ts +6 -1
  484. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/flexibleChecksumsResponseMiddleware.d.ts +3 -0
  485. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getFlexibleChecksumsPlugin.d.ts +6 -0
  486. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/resolveFlexibleChecksumsConfig.d.ts +9 -0
  487. package/node_modules/@aws-sdk/middleware-flexible-checksums/package.json +10 -9
  488. package/node_modules/@aws-sdk/middleware-host-header/dist-cjs/index.js +7 -9
  489. package/node_modules/@aws-sdk/middleware-host-header/dist-types/index.d.ts +15 -0
  490. package/node_modules/@aws-sdk/middleware-host-header/package.json +5 -4
  491. package/node_modules/@aws-sdk/middleware-location-constraint/dist-cjs/index.js +5 -5
  492. package/node_modules/@aws-sdk/middleware-location-constraint/dist-es/configuration.js +1 -1
  493. package/node_modules/@aws-sdk/middleware-location-constraint/package.json +3 -3
  494. package/node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js +5 -5
  495. package/node_modules/@aws-sdk/middleware-logger/package.json +3 -3
  496. package/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/index.js +10 -6
  497. package/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/index.js +6 -3
  498. package/node_modules/@aws-sdk/middleware-recursion-detection/package.json +4 -4
  499. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/index.js +39 -32
  500. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3Configuration.js +9 -9
  501. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3Configuration.d.ts +6 -4
  502. package/node_modules/@aws-sdk/middleware-sdk-s3/package.json +11 -11
  503. package/node_modules/@aws-sdk/middleware-ssec/dist-cjs/index.js +6 -7
  504. package/node_modules/@aws-sdk/middleware-ssec/package.json +3 -3
  505. package/node_modules/@aws-sdk/middleware-user-agent/dist-cjs/index.js +11 -11
  506. package/node_modules/@aws-sdk/middleware-user-agent/dist-es/configurations.js +4 -4
  507. package/node_modules/@aws-sdk/middleware-user-agent/package.json +7 -7
  508. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/auth/httpAuthSchemeProvider.js +1 -3
  509. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +23 -24
  510. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/STSClient.js +2 -1
  511. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/auth/httpAuthSchemeProvider.js +2 -5
  512. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/EndpointParameters.js +2 -3
  513. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +6 -7
  514. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeExtensions.js +2 -14
  515. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDCClient.js +2 -1
  516. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/auth/httpAuthSchemeProvider.js +1 -3
  517. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/EndpointParameters.js +2 -3
  518. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeExtensions.js +2 -14
  519. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STSClient.js +2 -1
  520. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthSchemeProvider.js +2 -5
  521. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/EndpointParameters.js +2 -3
  522. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeExtensions.js +2 -14
  523. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/commands/CreateTokenCommand.d.ts +46 -0
  524. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleCommand.d.ts +47 -0
  525. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts +34 -0
  526. package/node_modules/@aws-sdk/nested-clients/package.json +36 -36
  527. package/node_modules/@aws-sdk/region-config-resolver/dist-cjs/index.js +15 -26
  528. package/node_modules/@aws-sdk/region-config-resolver/dist-es/extensions/index.js +2 -12
  529. package/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/resolveRegionConfig.js +2 -3
  530. package/node_modules/@aws-sdk/region-config-resolver/package.json +5 -5
  531. package/node_modules/@aws-sdk/s3-request-presigner/dist-cjs/index.js +4 -4
  532. package/node_modules/@aws-sdk/s3-request-presigner/package.json +10 -10
  533. package/node_modules/@aws-sdk/signature-v4-multi-region/dist-cjs/index.js +4 -5
  534. package/node_modules/@aws-sdk/signature-v4-multi-region/package.json +6 -6
  535. package/node_modules/@aws-sdk/token-providers/dist-cjs/index.js +3 -3
  536. package/node_modules/@aws-sdk/token-providers/package.json +6 -6
  537. package/node_modules/@aws-sdk/types/dist-cjs/index.js +3 -3
  538. package/node_modules/@aws-sdk/types/dist-es/function.js +1 -0
  539. package/node_modules/@aws-sdk/types/dist-es/index.js +1 -0
  540. package/node_modules/@aws-sdk/types/dist-types/function.d.ts +7 -0
  541. package/node_modules/@aws-sdk/types/dist-types/index.d.ts +1 -0
  542. package/node_modules/@aws-sdk/types/dist-types/ts3.4/function.d.ts +7 -0
  543. package/node_modules/@aws-sdk/types/dist-types/ts3.4/index.d.ts +1 -0
  544. package/node_modules/@aws-sdk/types/package.json +2 -2
  545. package/node_modules/@aws-sdk/util-endpoints/dist-cjs/index.js +5 -7
  546. package/node_modules/@aws-sdk/util-endpoints/package.json +4 -4
  547. package/node_modules/@aws-sdk/util-format-url/dist-cjs/index.js +3 -3
  548. package/node_modules/@aws-sdk/util-format-url/package.json +4 -4
  549. package/node_modules/@aws-sdk/util-user-agent-browser/package.json +3 -3
  550. package/node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js +5 -5
  551. package/node_modules/@aws-sdk/util-user-agent-node/package.json +5 -5
  552. package/node_modules/@aws-sdk/xml-builder/dist-cjs/index.js +3 -3
  553. package/node_modules/@aws-sdk/xml-builder/package.json +2 -2
  554. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/.jsii +45 -45
  555. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/README.md +1 -1
  556. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/lib/index.js +7 -7
  557. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/.jsii +464 -138
  558. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/alb-helper.js +2 -3
  559. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/apigateway-defaults.d.ts +6 -6
  560. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/apigateway-defaults.js +11 -11
  561. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/apigateway-helper.d.ts +10 -5
  562. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/apigateway-helper.js +59 -45
  563. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/cloudfront-distribution-helper.d.ts +30 -0
  564. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/cloudfront-distribution-helper.js +87 -3
  565. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/cloudwatch-log-group-helper.js +2 -4
  566. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/cognito-defaults.d.ts +2 -2
  567. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/cognito-defaults.js +4 -4
  568. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/cognito-helper.js +3 -5
  569. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/dynamodb-table-defaults.d.ts +3 -3
  570. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/dynamodb-table-defaults.js +6 -6
  571. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/dynamodb-table-helper.js +3 -3
  572. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/elasticsearch-helper.js +5 -5
  573. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/eventbridge-helper.js +4 -4
  574. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/events-rule-defaults.d.ts +1 -1
  575. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/events-rule-defaults.js +4 -4
  576. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/fargate-helper.js +2 -3
  577. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/glue-database-defaults.js +3 -3
  578. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/glue-job-helper.js +3 -3
  579. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/glue-table-defaults.js +6 -6
  580. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/iot-topic-rule-defaults.d.ts +1 -1
  581. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/iot-topic-rule-defaults.js +6 -6
  582. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/kendra-helper.d.ts +1 -1
  583. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/kendra-helper.js +1 -1
  584. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/kinesis-analytics-defaults.d.ts +2 -2
  585. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/kinesis-analytics-defaults.js +4 -4
  586. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/kinesis-analytics-helper.js +2 -2
  587. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/kinesis-firehose-s3-defaults.d.ts +1 -1
  588. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/kinesis-firehose-s3-defaults.js +7 -7
  589. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/kinesis-streams-defaults.d.ts +2 -2
  590. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/kinesis-streams-defaults.js +4 -4
  591. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/kinesis-streams-helper.js +2 -3
  592. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/kms-defaults.d.ts +2 -2
  593. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/kms-defaults.js +4 -4
  594. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/kms-helper.js +2 -4
  595. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/lambda-event-source-mapping-defaults.d.ts +3 -3
  596. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/lambda-event-source-mapping-defaults.js +16 -16
  597. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/mediastore-helper.js +2 -3
  598. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/opensearch-helper.js +2 -2
  599. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/override-warning-service.js +9 -6
  600. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/s3-bucket-helper.js +7 -1
  601. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/sagemaker-helper.d.ts +5 -0
  602. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/sagemaker-helper.js +10 -9
  603. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/secretsmanager-defaults.d.ts +2 -2
  604. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/secretsmanager-defaults.js +4 -4
  605. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/secretsmanager-helper.js +2 -3
  606. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/sns-defaults.d.ts +2 -2
  607. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/sns-defaults.js +4 -4
  608. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/sns-helper.js +2 -2
  609. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/sqs-defaults.js +3 -3
  610. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/sqs-helper.js +2 -2
  611. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/step-function-defaults.d.ts +1 -1
  612. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/step-function-defaults.js +3 -3
  613. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/utils.d.ts +1 -1
  614. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/utils.js +14 -12
  615. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/vpc-helper.js +1 -3
  616. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/waf-helper.js +2 -3
  617. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/websocket-api-helper.js +1 -2
  618. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/nohoist.sh +11 -0
  619. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/package.json +7 -6
  620. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/apigateway-helper.test.js +84 -6
  621. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/cloudfront-distribution-api-gateway-helper.test.js +11 -11
  622. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/cloudfront-distribution-s3-helper.test.js +467 -1
  623. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/dynamo-table.test.js +9 -9
  624. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/glue-job-helper.test.js +7 -7
  625. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/glue-table-helper.test.js +5 -5
  626. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/kinesis-analytics.test.js +2 -2
  627. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/kinesis-streams-defaults.test.js +2 -2
  628. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/lambda-event-source.test.js +10 -10
  629. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/openapi/apiDefinition.json +57 -0
  630. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/override-warning-service.test.js +25 -26
  631. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/pipes-helper.test.js +2 -2
  632. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/step-function-helper.test.js +5 -5
  633. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/utils.test.js +11 -12
  634. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/package.json +8 -8
  635. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-add-secondary-index.js +1 -2
  636. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-add-secondary-index.js.snapshot/asset.a0c6248ec595d3ceec1177aa5ac5b494fdf4c66f1b88aa48086befd44f193d8c/index.js +21 -0
  637. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-add-secondary-index.js.snapshot/cdk.out +1 -1
  638. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-add-secondary-index.js.snapshot/integ.json +1 -1
  639. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-add-secondary-index.js.snapshot/lamddb-add-secondary-index.assets.json +6 -6
  640. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-add-secondary-index.js.snapshot/lamddb-add-secondary-index.template.json +25 -19
  641. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-add-secondary-index.js.snapshot/lamddbaddsecondaryindexIntegDefaultTestDeployAssert3193B4D9.assets.json +1 -1
  642. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-add-secondary-index.js.snapshot/manifest.json +197 -3
  643. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-add-secondary-index.js.snapshot/tree.json +1 -415
  644. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-deployFunctionWithExistingVpc.js.snapshot/cdk.out +1 -1
  645. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-deployFunctionWithExistingVpc.js.snapshot/integ.json +1 -1
  646. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-deployFunctionWithExistingVpc.js.snapshot/lamddb-deployFunctionWithExistingVpc.assets.json +3 -3
  647. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-deployFunctionWithExistingVpc.js.snapshot/lamddb-deployFunctionWithExistingVpc.template.json +35 -7
  648. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-deployFunctionWithExistingVpc.js.snapshot/lamddbdeployFunctionWithExistingVpcIntegDefaultTestDeployAssertEE08E38E.assets.json +1 -1
  649. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-deployFunctionWithExistingVpc.js.snapshot/manifest.json +476 -3
  650. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-deployFunctionWithExistingVpc.js.snapshot/tree.json +1 -1386
  651. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-deployFunctionWithVpc.js.snapshot/cdk.out +1 -1
  652. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-deployFunctionWithVpc.js.snapshot/integ.json +1 -1
  653. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-deployFunctionWithVpc.js.snapshot/lamddb-deployFunctionWithVpc.assets.json +3 -3
  654. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-deployFunctionWithVpc.js.snapshot/lamddb-deployFunctionWithVpc.template.json +33 -7
  655. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-deployFunctionWithVpc.js.snapshot/lamddbdeployFunctionWithVpcIntegDefaultTestDeployAssert0AB8275C.assets.json +1 -1
  656. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-deployFunctionWithVpc.js.snapshot/manifest.json +404 -3
  657. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-deployFunctionWithVpc.js.snapshot/tree.json +1 -968
  658. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-no-arguments.js +1 -2
  659. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-no-arguments.js.snapshot/asset.a0c6248ec595d3ceec1177aa5ac5b494fdf4c66f1b88aa48086befd44f193d8c/index.js +21 -0
  660. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-no-arguments.js.snapshot/cdk.out +1 -1
  661. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-no-arguments.js.snapshot/integ.json +1 -1
  662. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-no-arguments.js.snapshot/lamddb-no-arguments.assets.json +6 -6
  663. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-no-arguments.js.snapshot/lamddb-no-arguments.template.json +25 -19
  664. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-no-arguments.js.snapshot/lamddbnoargumentsIntegDefaultTestDeployAssert248B75D0.assets.json +1 -1
  665. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-no-arguments.js.snapshot/manifest.json +183 -3
  666. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-no-arguments.js.snapshot/tree.json +1 -386
  667. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-set-billing-mode.js +1 -2
  668. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-set-billing-mode.js.snapshot/asset.a0c6248ec595d3ceec1177aa5ac5b494fdf4c66f1b88aa48086befd44f193d8c/index.js +21 -0
  669. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-set-billing-mode.js.snapshot/cdk.out +1 -1
  670. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-set-billing-mode.js.snapshot/integ.json +1 -1
  671. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-set-billing-mode.js.snapshot/lamddb-set-billing-mode.assets.json +6 -6
  672. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-set-billing-mode.js.snapshot/lamddb-set-billing-mode.template.json +25 -19
  673. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-set-billing-mode.js.snapshot/lamddbsetbillingmodeIntegDefaultTestDeployAssertDAE32272.assets.json +1 -1
  674. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-set-billing-mode.js.snapshot/manifest.json +185 -3
  675. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-set-billing-mode.js.snapshot/tree.json +1 -389
  676. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-use-existing-func.js +1 -2
  677. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-use-existing-func.js.snapshot/asset.a0c6248ec595d3ceec1177aa5ac5b494fdf4c66f1b88aa48086befd44f193d8c/index.js +21 -0
  678. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-use-existing-func.js.snapshot/cdk.out +1 -1
  679. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-use-existing-func.js.snapshot/integ.json +1 -1
  680. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-use-existing-func.js.snapshot/lamddb-use-existing-func.assets.json +6 -6
  681. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-use-existing-func.js.snapshot/lamddb-use-existing-func.template.json +25 -19
  682. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-use-existing-func.js.snapshot/lamddbuseexistingfuncIntegDefaultTestDeployAssert48D284DD.assets.json +1 -1
  683. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-use-existing-func.js.snapshot/manifest.json +183 -3
  684. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-use-existing-func.js.snapshot/tree.json +1 -386
  685. package/node_modules/@gemeentenijmegen/apiclient/node_modules/@gemeentenijmegen/utils/package.json +7 -7
  686. package/node_modules/@gemeentenijmegen/apiclient/package.json +10 -10
  687. package/node_modules/@gemeentenijmegen/apigateway-http/package.json +5 -5
  688. package/node_modules/@gemeentenijmegen/session/package.json +4 -4
  689. package/node_modules/@gemeentenijmegen/utils/package.json +7 -7
  690. package/node_modules/@smithy/abort-controller/package.json +5 -5
  691. package/node_modules/@smithy/config-resolver/dist-cjs/index.js +11 -14
  692. package/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/resolveCustomEndpointsConfig.js +5 -6
  693. package/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/resolveEndpointsConfig.js +4 -5
  694. package/node_modules/@smithy/config-resolver/dist-es/regionConfig/resolveRegionConfig.js +2 -3
  695. package/node_modules/@smithy/config-resolver/package.json +7 -7
  696. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js +41 -0
  697. package/node_modules/@smithy/core/dist-es/submodules/serde/index.js +1 -0
  698. package/node_modules/@smithy/core/dist-es/submodules/serde/value/NumericValue.js +9 -0
  699. package/node_modules/@smithy/core/dist-types/submodules/serde/index.d.ts +1 -0
  700. package/node_modules/@smithy/core/dist-types/submodules/serde/value/NumericValue.d.ts +31 -0
  701. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/index.d.ts +1 -0
  702. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/value/NumericValue.d.ts +31 -0
  703. package/node_modules/@smithy/core/package.json +17 -8
  704. package/node_modules/@smithy/core/serde.d.ts +7 -0
  705. package/node_modules/@smithy/core/serde.js +6 -0
  706. package/node_modules/@smithy/credential-provider-imds/package.json +8 -8
  707. package/node_modules/@smithy/eventstream-codec/package.json +5 -5
  708. package/node_modules/@smithy/eventstream-serde-browser/package.json +6 -6
  709. package/node_modules/@smithy/eventstream-serde-config-resolver/dist-cjs/index.js +1 -2
  710. package/node_modules/@smithy/eventstream-serde-config-resolver/dist-es/EventStreamSerdeConfig.js +1 -2
  711. package/node_modules/@smithy/eventstream-serde-config-resolver/package.json +5 -5
  712. package/node_modules/@smithy/eventstream-serde-node/package.json +6 -6
  713. package/node_modules/@smithy/eventstream-serde-universal/package.json +6 -6
  714. package/node_modules/@smithy/fetch-http-handler/package.json +8 -8
  715. package/node_modules/@smithy/hash-blob-browser/package.json +5 -5
  716. package/node_modules/@smithy/hash-node/package.json +5 -5
  717. package/node_modules/@smithy/hash-stream-node/package.json +5 -5
  718. package/node_modules/@smithy/invalid-dependency/package.json +5 -5
  719. package/node_modules/@smithy/md5-js/package.json +5 -5
  720. package/node_modules/@smithy/middleware-content-length/package.json +6 -6
  721. package/node_modules/@smithy/middleware-endpoint/dist-cjs/index.js +5 -6
  722. package/node_modules/@smithy/middleware-endpoint/dist-es/resolveEndpointConfig.js +5 -6
  723. package/node_modules/@smithy/middleware-endpoint/package.json +10 -10
  724. package/node_modules/@smithy/middleware-retry/README.md +1 -1
  725. package/node_modules/@smithy/middleware-retry/dist-cjs/index.js +5 -6
  726. package/node_modules/@smithy/middleware-retry/dist-es/configurations.js +5 -6
  727. package/node_modules/@smithy/middleware-retry/package.json +10 -10
  728. package/node_modules/@smithy/middleware-serde/package.json +4 -4
  729. package/node_modules/@smithy/middleware-stack/package.json +5 -5
  730. package/node_modules/@smithy/node-config-provider/package.json +7 -7
  731. package/node_modules/@smithy/node-http-handler/package.json +7 -7
  732. package/node_modules/@smithy/property-provider/package.json +5 -5
  733. package/node_modules/@smithy/protocol-http/dist-cjs/index.js +4 -5
  734. package/node_modules/@smithy/protocol-http/dist-es/extensions/httpExtensionConfiguration.js +4 -5
  735. package/node_modules/@smithy/protocol-http/package.json +5 -5
  736. package/node_modules/@smithy/querystring-builder/package.json +5 -5
  737. package/node_modules/@smithy/querystring-parser/package.json +5 -5
  738. package/node_modules/@smithy/service-error-classification/package.json +5 -5
  739. package/node_modules/@smithy/shared-ini-file-loader/package.json +5 -5
  740. package/node_modules/@smithy/signature-v4/package.json +7 -7
  741. package/node_modules/@smithy/smithy-client/dist-cjs/index.js +6 -14
  742. package/node_modules/@smithy/smithy-client/dist-es/extensions/checksum.js +2 -3
  743. package/node_modules/@smithy/smithy-client/dist-es/extensions/defaultExtensionConfiguration.js +2 -8
  744. package/node_modules/@smithy/smithy-client/dist-es/extensions/retry.js +2 -3
  745. package/node_modules/@smithy/smithy-client/dist-types/client.d.ts +8 -0
  746. package/node_modules/@smithy/smithy-client/dist-types/extensions/checksum.d.ts +0 -1
  747. package/node_modules/@smithy/smithy-client/dist-types/extensions/defaultExtensionConfiguration.d.ts +6 -6
  748. package/node_modules/@smithy/smithy-client/dist-types/ts3.4/client.d.ts +8 -0
  749. package/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/checksum.d.ts +0 -1
  750. package/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts +6 -6
  751. package/node_modules/@smithy/smithy-client/package.json +9 -9
  752. package/node_modules/@smithy/types/dist-cjs/index.js +4 -9
  753. package/node_modules/@smithy/types/dist-es/extensions/checksum.js +2 -3
  754. package/node_modules/@smithy/types/dist-es/extensions/defaultClientConfiguration.js +2 -6
  755. package/node_modules/@smithy/types/package.json +4 -4
  756. package/node_modules/@smithy/url-parser/package.json +6 -6
  757. package/node_modules/@smithy/util-defaults-mode-browser/package.json +6 -6
  758. package/node_modules/@smithy/util-defaults-mode-node/package.json +9 -9
  759. package/node_modules/@smithy/util-endpoints/package.json +6 -6
  760. package/node_modules/@smithy/util-middleware/package.json +5 -5
  761. package/node_modules/@smithy/util-retry/README.md +1 -1
  762. package/node_modules/@smithy/util-retry/package.json +6 -6
  763. package/node_modules/@smithy/util-stream/dist-cjs/createBufferedReadable.js +1 -1
  764. package/node_modules/@smithy/util-stream/dist-cjs/createBufferedReadableStream.js +3 -3
  765. package/node_modules/@smithy/util-stream/dist-es/createBufferedReadable.js +1 -1
  766. package/node_modules/@smithy/util-stream/dist-es/createBufferedReadableStream.js +3 -3
  767. package/node_modules/@smithy/util-stream/dist-types/createBufferedReadableStream.d.ts +3 -2
  768. package/node_modules/@smithy/util-stream/dist-types/ts3.4/createBufferedReadableStream.d.ts +3 -2
  769. package/node_modules/@smithy/util-stream/package.json +6 -6
  770. package/node_modules/@smithy/util-waiter/package.json +6 -6
  771. package/node_modules/@types/aws-lambda/README.md +1 -1
  772. package/node_modules/@types/aws-lambda/package.json +2 -2
  773. package/node_modules/@types/aws-lambda/trigger/guard-duty-event-notification.d.ts +1 -1
  774. package/node_modules/axios/CHANGELOG.md +36 -0
  775. package/node_modules/axios/README.md +8 -2
  776. package/node_modules/axios/dist/axios.js +4 -4
  777. package/node_modules/axios/dist/axios.js.map +1 -1
  778. package/node_modules/axios/dist/axios.min.js +2 -2
  779. package/node_modules/axios/dist/axios.min.js.map +1 -1
  780. package/node_modules/axios/dist/browser/axios.cjs +4 -4
  781. package/node_modules/axios/dist/browser/axios.cjs.map +1 -1
  782. package/node_modules/axios/dist/esm/axios.js +4 -4
  783. package/node_modules/axios/dist/esm/axios.js.map +1 -1
  784. package/node_modules/axios/dist/esm/axios.min.js +2 -2
  785. package/node_modules/axios/dist/esm/axios.min.js.map +1 -1
  786. package/node_modules/axios/dist/node/axios.cjs +5 -5
  787. package/node_modules/axios/dist/node/axios.cjs.map +1 -1
  788. package/node_modules/axios/index.d.cts +1 -0
  789. package/node_modules/axios/index.d.ts +1 -0
  790. package/node_modules/axios/lib/adapters/http.js +1 -1
  791. package/node_modules/axios/lib/core/buildFullPath.js +1 -1
  792. package/node_modules/axios/lib/env/data.js +1 -1
  793. package/node_modules/axios/lib/helpers/resolveConfig.js +1 -1
  794. package/node_modules/axios/package.json +4 -4
  795. package/package.json +19 -19
  796. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/.eslintignore +0 -7
  797. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/.eslintignore +0 -9
  798. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-add-secondary-index.js.snapshot/asset.0c3255e93ffe7a906c7422e9f0e9cc4c7fd86ee996ee3bb302e2f134b38463c8/index.js +0 -8
  799. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-no-arguments.js.snapshot/asset.0c3255e93ffe7a906c7422e9f0e9cc4c7fd86ee996ee3bb302e2f134b38463c8/index.js +0 -8
  800. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-set-billing-mode.js.snapshot/asset.0c3255e93ffe7a906c7422e9f0e9cc4c7fd86ee996ee3bb302e2f134b38463c8/index.js +0 -8
  801. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/test/integ.lamddb-use-existing-func.js.snapshot/asset.0c3255e93ffe7a906c7422e9f0e9cc4c7fd86ee996ee3bb302e2f134b38463c8/index.js +0 -8
  802. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/ansi-regex → ansi-regex}/index.d.ts +0 -0
  803. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/ansi-regex → ansi-regex}/index.js +0 -0
  804. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/ansi-regex → ansi-regex}/license +0 -0
  805. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/ansi-regex → ansi-regex}/package.json +0 -0
  806. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/ansi-regex → ansi-regex}/readme.md +0 -0
  807. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/aproba → aproba}/LICENSE +0 -0
  808. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/aproba → aproba}/README.md +0 -0
  809. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/aproba → aproba}/index.js +0 -0
  810. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/aproba → aproba}/package.json +0 -0
  811. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/are-we-there-yet → are-we-there-yet}/LICENSE.md +0 -0
  812. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/are-we-there-yet → are-we-there-yet}/README.md +0 -0
  813. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/are-we-there-yet → are-we-there-yet}/lib/index.js +0 -0
  814. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/are-we-there-yet → are-we-there-yet}/lib/tracker-base.js +0 -0
  815. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/are-we-there-yet → are-we-there-yet}/lib/tracker-group.js +0 -0
  816. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/are-we-there-yet → are-we-there-yet}/lib/tracker-stream.js +0 -0
  817. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/are-we-there-yet → are-we-there-yet}/lib/tracker.js +0 -0
  818. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/are-we-there-yet → are-we-there-yet}/package.json +0 -0
  819. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/color-support → color-support}/LICENSE +0 -0
  820. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/color-support → color-support}/README.md +0 -0
  821. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/color-support → color-support}/bin.js +0 -0
  822. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/color-support → color-support}/browser.js +0 -0
  823. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/color-support → color-support}/index.js +0 -0
  824. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/color-support → color-support}/package.json +0 -0
  825. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/console-control-strings → console-control-strings}/LICENSE +0 -0
  826. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/console-control-strings → console-control-strings}/README.md +0 -0
  827. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/console-control-strings → console-control-strings}/index.js +0 -0
  828. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/console-control-strings → console-control-strings}/package.json +0 -0
  829. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/emoji-regex → emoji-regex}/LICENSE-MIT.txt +0 -0
  830. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/emoji-regex → emoji-regex}/README.md +0 -0
  831. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/emoji-regex → emoji-regex}/es2015/index.js +0 -0
  832. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/emoji-regex → emoji-regex}/es2015/text.js +0 -0
  833. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/emoji-regex → emoji-regex}/index.d.ts +0 -0
  834. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/emoji-regex → emoji-regex}/index.js +0 -0
  835. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/emoji-regex → emoji-regex}/package.json +0 -0
  836. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/emoji-regex → emoji-regex}/text.js +0 -0
  837. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/gauge → gauge}/LICENSE.md +0 -0
  838. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/gauge → gauge}/README.md +0 -0
  839. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/gauge → gauge}/lib/base-theme.js +0 -0
  840. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/gauge → gauge}/lib/error.js +0 -0
  841. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/gauge → gauge}/lib/has-color.js +0 -0
  842. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/gauge → gauge}/lib/index.js +0 -0
  843. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/gauge → gauge}/lib/plumbing.js +0 -0
  844. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/gauge → gauge}/lib/process.js +0 -0
  845. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/gauge → gauge}/lib/progress-bar.js +0 -0
  846. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/gauge → gauge}/lib/render-template.js +0 -0
  847. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/gauge → gauge}/lib/set-immediate.js +0 -0
  848. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/gauge → gauge}/lib/set-interval.js +0 -0
  849. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/gauge → gauge}/lib/spin.js +0 -0
  850. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/gauge → gauge}/lib/template-item.js +0 -0
  851. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/gauge → gauge}/lib/theme-set.js +0 -0
  852. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/gauge → gauge}/lib/themes.js +0 -0
  853. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/gauge → gauge}/lib/wide-truncate.js +0 -0
  854. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/LICENSE.txt +0 -0
  855. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/README.md +0 -0
  856. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/cjs/browser.d.ts +0 -0
  857. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/cjs/browser.d.ts.map +0 -0
  858. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/cjs/browser.js +0 -0
  859. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/cjs/browser.js.map +0 -0
  860. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/cjs/index.d.ts +0 -0
  861. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/cjs/index.d.ts.map +0 -0
  862. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/cjs/index.js +0 -0
  863. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/cjs/index.js.map +0 -0
  864. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/cjs/package.json +0 -0
  865. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/cjs/signals.d.ts +0 -0
  866. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/cjs/signals.d.ts.map +0 -0
  867. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/cjs/signals.js +0 -0
  868. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/cjs/signals.js.map +0 -0
  869. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/mjs/browser.d.ts +0 -0
  870. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/mjs/browser.d.ts.map +0 -0
  871. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/mjs/browser.js +0 -0
  872. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/mjs/browser.js.map +0 -0
  873. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/mjs/index.d.ts +0 -0
  874. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/mjs/index.d.ts.map +0 -0
  875. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/mjs/index.js +0 -0
  876. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/mjs/index.js.map +0 -0
  877. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/mjs/package.json +0 -0
  878. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/mjs/signals.d.ts +0 -0
  879. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/mjs/signals.d.ts.map +0 -0
  880. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/mjs/signals.js +0 -0
  881. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/dist/mjs/signals.js.map +0 -0
  882. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core → gauge}/node_modules/signal-exit/package.json +0 -0
  883. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/gauge → gauge}/package.json +0 -0
  884. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/has-unicode → has-unicode}/LICENSE +0 -0
  885. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/has-unicode → has-unicode}/README.md +0 -0
  886. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/has-unicode → has-unicode}/index.js +0 -0
  887. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/has-unicode → has-unicode}/package.json +0 -0
  888. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/is-fullwidth-code-point → is-fullwidth-code-point}/index.d.ts +0 -0
  889. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/is-fullwidth-code-point → is-fullwidth-code-point}/index.js +0 -0
  890. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/is-fullwidth-code-point → is-fullwidth-code-point}/license +0 -0
  891. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/is-fullwidth-code-point → is-fullwidth-code-point}/package.json +0 -0
  892. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/is-fullwidth-code-point → is-fullwidth-code-point}/readme.md +0 -0
  893. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/set-blocking → set-blocking}/LICENSE.txt +0 -0
  894. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/set-blocking → set-blocking}/README.md +0 -0
  895. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/set-blocking → set-blocking}/index.js +0 -0
  896. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/set-blocking → set-blocking}/package.json +0 -0
  897. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/string-width → string-width}/index.d.ts +0 -0
  898. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/string-width → string-width}/index.js +0 -0
  899. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/string-width → string-width}/license +0 -0
  900. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/string-width → string-width}/package.json +0 -0
  901. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/string-width → string-width}/readme.md +0 -0
  902. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/strip-ansi → strip-ansi}/index.d.ts +0 -0
  903. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/strip-ansi → strip-ansi}/index.js +0 -0
  904. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/strip-ansi → strip-ansi}/license +0 -0
  905. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/strip-ansi → strip-ansi}/package.json +0 -0
  906. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/strip-ansi → strip-ansi}/readme.md +0 -0
  907. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/wide-align → wide-align}/LICENSE +0 -0
  908. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/wide-align → wide-align}/README.md +0 -0
  909. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/wide-align → wide-align}/align.js +0 -0
  910. /package/node_modules/{@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/node_modules/wide-align → wide-align}/package.json +0 -0
@@ -25,10 +25,10 @@ function deployRegionalApiGateway(stack) {
25
25
  code: lambda.Code.fromAsset(`${__dirname}/lambda`)
26
26
  };
27
27
  const fn = defaults.deployLambdaFunction(stack, lambdaFunctionProps);
28
- return defaults.RegionalLambdaRestApi(stack, fn);
28
+ return defaults.RegionalLambdaRestApi(stack, fn, undefined);
29
29
  }
30
- function setupRestApi(stack, apiProps) {
31
- const globalRestApiResponse = defaults.GlobalRestApi(stack, apiProps);
30
+ function setupRestApi(stack, apiProps, createUsagePlan = true) {
31
+ const globalRestApiResponse = defaults.GlobalRestApi(stack, apiProps, undefined, createUsagePlan);
32
32
  // Setup the API Gateway resource
33
33
  const apiGatewayResource = globalRestApiResponse.api.root.addResource('api-gateway-resource');
34
34
  // Setup the API Gateway Integration
@@ -59,7 +59,7 @@ function setupRestApi(stack, apiProps) {
59
59
  }
60
60
  ]
61
61
  },
62
- path: '11112222' + "/" + 'thisqueuequeueName'
62
+ path: '11112222/thisqueuequeueName'
63
63
  });
64
64
  // Setup the API Gateway method(s)
65
65
  apiGatewayResource.addMethod('POST', apiGatewayIntegration, {
@@ -107,6 +107,7 @@ test('Test override for RegionalApiGateway', () => {
107
107
  Name: "LambdaRestApi"
108
108
  }
109
109
  });
110
+ template.hasResource("AWS::ApiGateway::UsagePlan", {});
110
111
  });
111
112
  test('Test override for GlobalApiGateway', () => {
112
113
  const stack = new aws_cdk_lib_1.Stack();
@@ -132,6 +133,7 @@ test('Test override for GlobalApiGateway', () => {
132
133
  Name: "HelloWorld"
133
134
  }
134
135
  });
136
+ template.hasResource("AWS::ApiGateway::UsagePlan", {});
135
137
  });
136
138
  test('Test ApiGateway::Account resource for RegionalApiGateway', () => {
137
139
  const stack = new aws_cdk_lib_1.Stack();
@@ -181,6 +183,17 @@ test('Test default RestApi deployment w/ ApiGatewayProps', () => {
181
183
  Name: "customRestApi"
182
184
  });
183
185
  });
186
+ test('Test suppress UsagePlan', () => {
187
+ const stack = new aws_cdk_lib_1.Stack();
188
+ setupRestApi(stack, {
189
+ restApiName: "customRestApi"
190
+ }, false);
191
+ const template = assertions_1.Template.fromStack(stack);
192
+ template.hasResourceProperties('AWS::ApiGateway::RestApi', {
193
+ Name: "customRestApi"
194
+ });
195
+ template.resourceCountIs("AWS::ApiGateway::UsagePlan", 0);
196
+ });
184
197
  test('Test default RestApi deployment w/ cloudWatchRole set to false', () => {
185
198
  const stack = new aws_cdk_lib_1.Stack();
186
199
  setupRestApi(stack, {
@@ -188,6 +201,7 @@ test('Test default RestApi deployment w/ cloudWatchRole set to false', () => {
188
201
  });
189
202
  const template = assertions_1.Template.fromStack(stack);
190
203
  template.resourceCountIs("AWS::ApiGateway::Account", 0);
204
+ template.hasResource("AWS::ApiGateway::UsagePlan", {});
191
205
  });
192
206
  test('Test default RestApi deployment for Cloudwatch loggroup', () => {
193
207
  const stack = new aws_cdk_lib_1.Stack();
@@ -230,7 +244,7 @@ test('Test addMethodToApiResource with action', () => {
230
244
  });
231
245
  // Add Method
232
246
  defaults.addProxyMethodToApiResource({
233
- path: '11112222' + "/" + 'thisqueuequeueName',
247
+ path: '11112222/thisqueuequeueName',
234
248
  service: "sqs",
235
249
  apiResource: apiGatewayResource,
236
250
  apiGatewayRole,
@@ -321,6 +335,28 @@ test('Test for RegionalRestApiGateway', () => {
321
335
  }
322
336
  });
323
337
  });
338
+ test('Test supporess usage plan in RegionalRestApiGateway', () => {
339
+ const stack = new aws_cdk_lib_1.Stack();
340
+ const regionalRestApiResponse = defaults.RegionalRestApi(stack, {
341
+ restApiName: "HelloWorld-RegionalApi"
342
+ }, undefined, false);
343
+ // Setup the API Gateway role
344
+ const apiGatewayRole = new iam.Role(stack, 'api-gateway-role', {
345
+ assumedBy: new iam.ServicePrincipal('apigateway.amazonaws.com')
346
+ });
347
+ // Setup the API Gateway resource
348
+ const apiGatewayResource = regionalRestApiResponse.api.root.addResource('hello');
349
+ defaults.addProxyMethodToApiResource({
350
+ service: 'iotdata',
351
+ path: 'hello',
352
+ apiGatewayRole,
353
+ apiMethod: 'POST',
354
+ apiResource: apiGatewayResource,
355
+ requestTemplate: "$input.json('$')"
356
+ });
357
+ const template = assertions_1.Template.fromStack(stack);
358
+ template.resourceCountIs("AWS::ApiGateway::UsagePlan", 0);
359
+ });
324
360
  // -----------------------------------------------------------------------
325
361
  // Tests for exception while overriding restApiProps using endPointTypes
326
362
  // -----------------------------------------------------------------------
@@ -738,4 +774,46 @@ test('Specifying application/json content-type in additionalRequestTemplates pro
738
774
  };
739
775
  expect(app).toThrowError('Request Template for the application/json content-type must be specified in the requestTemplate property and not in the additionalRequestTemplates property');
740
776
  });
741
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpZ2F0ZXdheS1oZWxwZXIudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFwaWdhdGV3YXktaGVscGVyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOztBQUVILDZDQUFvQztBQUNwQyxpREFBaUQ7QUFDakQsa0RBQWtEO0FBQ2xELDJDQUEyQztBQUMzQyxxQ0FBcUM7QUFDckMsdURBQWtEO0FBRWxELFNBQVMsd0JBQXdCLENBQUMsS0FBWTtJQUM1QyxNQUFNLG1CQUFtQixHQUF5QjtRQUNoRCxPQUFPLEVBQUUsUUFBUSxDQUFDLHFDQUFxQztRQUN2RCxPQUFPLEVBQUUsZUFBZTtRQUN4QixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLFNBQVMsQ0FBQztLQUNuRCxDQUFDO0lBRUYsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBRXJFLE9BQU8sUUFBUSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsS0FBWSxFQUFFLFFBQWM7SUFDaEQsTUFBTSxxQkFBcUIsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN0RSxpQ0FBaUM7SUFDakMsTUFBTSxrQkFBa0IsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzlGLG9DQUFvQztJQUNwQyxNQUFNLHFCQUFxQixHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQztRQUNuRCxPQUFPLEVBQUUsS0FBSztRQUNkLHFCQUFxQixFQUFFLE1BQU07UUFDN0IsT0FBTyxFQUFFO1lBQ1AsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLG1CQUFtQixD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QUU1RCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFO1FBQzdELFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsQ0FBQztLQUNoRSxDQUFDLENBQUM7SUFFSCxNQUFNLGtCQUFrQixHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFFOUYsTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFO1FBQ2YsUUFBUSxDQUFDLDJCQUEyQixDQUFDO1lBQ25DLE1BQU0sRUFBRSxPQUFPO1lBQ2YsT0FBTyxFQUFFLFVBQVU7WUFDbkIsV0FBVyxFQUFFLGtCQUFrQjtZQUMvQixjQUFjO1lBQ2QsU0FBUyxFQUFFLEtBQUs7WUFDaEIsZUFBZSxFQUFFLElBQUk7WUFDckIsMEJBQTBCLEVBQUU7Z0JBQzFCLGtCQUFrQixFQUFFLElBQUk7YUFDekI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFFRixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLDZKQUE2SixDQUFDLENBQUM7QUFDMUwsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIGFwaSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheSc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tICcuLi9pbmRleCc7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gJ2F3cy1jZGstbGliL2Fzc2VydGlvbnMnO1xuXG5mdW5jdGlvbiBkZXBsb3lSZWdpb25hbEFwaUdhdGV3YXkoc3RhY2s6IFN0YWNrKSB7XG4gIGNvbnN0IGxhbWJkYUZ1bmN0aW9uUHJvcHM6IGxhbWJkYS5GdW5jdGlvblByb3BzID0ge1xuICAgIHJ1bnRpbWU6IGRlZmF1bHRzLkNPTU1FUkNJQUxfUkVHSU9OX0xBTUJEQV9OT0RFX1JVTlRJTUUsXG4gICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChgJHtfX2Rpcm5hbWV9L2xhbWJkYWApXG4gIH07XG5cbiAgY29uc3QgZm4gPSBkZWZhdWx0cy5kZXBsb3lMYW1iZGFGdW5jdGlvbihzdGFjaywgbGFtYmRhRnVuY3Rpb25Qcm9wcyk7XG5cbiAgcmV0dXJuIGRlZmF1bHRzLlJlZ2lvbmFsTGFtYmRhUmVzdEFwaShzdGFjaywgZm4pO1xufVxuXG5mdW5jdGlvbiBzZXR1cFJlc3RBcGkoc3RhY2s6IFN0YWNrLCBhcGlQcm9wcz86IGFueSk6IHZvaWQge1xuICBjb25zdCBnbG9iYWxSZXN0QXBpUmVzcG9uc2UgPSBkZWZhdWx0cy5HbG9iYWxSZXN0QXBpKHN0YWNrLCBhcGlQcm9wcyk7XG4gIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheSByZXNvdXJjZVxuICBjb25zdCBhcGlHYXRld2F5UmVzb3VyY2UgPSBnbG9iYWxSZXN0QXBpUmVzcG9uc2UuYXBpLnJvb3QuYWRkUmVzb3VyY2UoJ2FwaS1nYXRld2F5LXJlc291cmNlJyk7XG4gIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheSBJbnRlZ3JhdGlvblxuICBjb25zdCBhcGlHYXRld2F5SW50ZWdyYXRpb24gPSBuZXcgYXBpLkF3c0ludGVncmF0aW9uKHtcbiAgICBzZXJ2aWNlOiBcInNxc1wiLFxuICAgIGludGVncmF0aW9uSHR0cE1ldGhvZDogXCJQT1NUXCIsXG4gICAgb3B0aW9uczoge1xuICAgICAgcGFzc3Rocm91Z2hCZWhhdmlvcjogYXBpLlBhc3N0aHJvdWdoQmVoYXZpb3IuTkVWRVIsXG4gICAgICByZXF1ZXN0UGFyYW1ldGVyczoge1xuICAgICAgICBcImludGVncmF0aW9uLnJlcXVlc3QuaGVhZGVyLkNvbnRlbnQtVHlwZVwiOiBcIidhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXCJcbiAgICAgIH0sXG4gICAgICByZXF1ZXN0VGVtcGxhdGVzOiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCI6IFwiQWN0aW9uPVNlbmRNZXNzYWdlJk1lc3NhZ2VCb2R5PSR1dGlsLnVybEVuY29kZShcXFwiJGlucHV0LmJvZHlcXFwiKSZNZXNzYWdlQXR0cmlidXRlLjEuTmFtZT1xdWVyeVBhcmFtMSZNZXNzYWdlQXR0cmlidXRlLjEuVmFsdWUuU3RyaW5nVmFsdWU9JGlucHV0LnBhcmFtcyhcXFwicXVlcnlfcGFyYW1fMVxcXCIpJk1lc3NhZ2VBdHRyaWJ1dGUuMS5WYWx1ZS5EYXRhVHlwZT1TdHJpbmdcIlxuICAgICAgfSxcbiAgICAgIGludGVncmF0aW9uUmVzcG9uc2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0dXNDb2RlOiBcIjIwMFwiLFxuICAgICAgICAgIHJlc3BvbnNlVGVtcGxhdGVzOiB7XG4gICAgICAgICAgICBcInRleHQvaHRtbFwiOiBcIlN1Y2Nlc3NcIlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHN0YXR1c0NvZGU6IFwiNTAwXCIsXG4gICAgICAgICAgcmVzcG9uc2VUZW1wbGF0ZXM6IHtcbiAgICAgICAgICAgIFwidGV4dC9odG1sXCI6IFwiRXJyb3JcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZWN0aW9uUGF0dGVybjogXCI1MDBcIlxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICBwYXRoOiAnMTExMTIyMjInICsgXCIvXCIgKyAndGhpc3F1ZXVlcXVldWVOYW1lJ1xuICB9KTtcbiAgLy8gU2V0dXAgdGhlIEFQSSBHYXRld2F5IG1ldGhvZChzKVxuICBhcGlHYXRld2F5UmVzb3VyY2UuYWRkTWV0aG9kKCdQT1NUJywgYXBpR2F0ZXdheUludGVncmF0aW9uLCB7XG4gICAgcmVxdWVzdFBhcmFtZXRlcnM6IHtcbiAgICAgIFwibWV0aG9kLnJlcXVlc3QucXVlcnlzdHJpbmcucXVlcnlfcGFyYW1fMVwiOiB0cnVlXG4gICAgfSxcbiAgICBtZXRob2RSZXNwb25zZXM6IFtcbiAgICAgIHtcbiAgICAgICAgc3RhdHVzQ29kZTogXCIyMDBcIixcbiAgICAgICAgcmVzcG9uc2VQYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgXCJtZXRob2QucmVzcG9uc2UuaGVhZGVyLkNvbnRlbnQtVHlwZVwiOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHN0YXR1c0NvZGU6IFwiNTAwXCIsXG4gICAgICAgIHJlc3BvbnNlUGFyYW1ldGVyczoge1xuICAgICAgICAgIFwibWV0aG9kLnJlc3BvbnNlLmhlYWRlci5Db250ZW50LVR5cGVcIjogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgfVxuICAgIF1cbiAgfSk7XG59XG5cbnRlc3QoJ1Rlc3Qgb3ZlcnJpZGUgZm9yIFJlZ2lvbmFsQXBpR2F0ZXdheScsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBsYW1iZGFGdW5jdGlvblByb3BzOiBsYW1iZGEuRnVuY3Rpb25Qcm9wcyA9IHtcbiAgICBydW50aW1lOiBkZWZhdWx0cy5DT01NRVJDSUFMX1JFR0lPTl9MQU1CREFfTk9ERV9SVU5USU1FLFxuICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoYCR7X19kaXJuYW1lfS9sYW1iZGFgKVxuICB9O1xuXG4gIGNvbnN0IGZuID0gZGVmYXVsdHMuZGVwbG95TGFtYmRhRnVuY3Rpb24oc3RhY2ssIGxhbWJkYUZ1bmN0aW9uUHJvcHMpO1xuXG4gIGRlZmF1bHRzLlJlZ2lvbmFsTGFtYmRhUmVzdEFwaShzdGFjaywgZm4sIHtcbiAgICBoYW5kbGVyOiBmbixcbiAgICBkZXNjcmlwdGlvbjogJ0hlbGxvIFdvcmxkJ1xuICB9KTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlKCdBV1M6OkFwaUdhdGV3YXk6OlJlc3RBcGknLCB7XG4gICAgVHlwZTogXCJBV1M6OkFwaUdhdGV3YXk6OlJlc3RBcGlcIixcbiAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICBEZXNjcmlwdGlvbjogXCJIZWxsbyBXb3JsZFwiLFxuICAgICAgRW5kcG9pbnRDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIFR5cGVzOiBbXG4gICAgICAgICAgXCJSRUdJT05BTFwiXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBOYW1lOiBcIkxhbWJkYVJlc3RBcGlcIlxuICAgIH1cbiAgfSk7XG59KTtcblxudGVzdCgnVGVzdCBvdmVycmlkZSBmb3IgR2xvYmFsQXBpR2F0ZXdheScsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBsYW1iZGFGdW5jdGlvblByb3BzOiBsYW1iZGEuRnVuY3Rpb25Qcm9wcyA9IHtcbiAgICBydW50aW1lOiBkZWZhdWx0cy5DT01NRVJDSUFMX1JFR0lPTl9MQU1CREFfTk9ERV9SVU5USU1FLFxuICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoYCR7X19kaXJuYW1lfS9sYW1iZGFgKVxuICB9O1xuXG4gIGNvbnN0IGZuID0gZGVmYXVsdHMuZGVwbG95TGFtYmRhRnVuY3Rpb24oc3RhY2ssIGxhbWJkYUZ1bmN0aW9uUHJvcHMpO1xuXG4gIGRlZmF1bHRzLkdsb2JhbExhbWJkYVJlc3RBcGkoc3RhY2ssIGZuLCB7XG4gICAgaGFuZGxlcjogZm4sXG4gICAgcmVzdEFwaU5hbWU6IFwiSGVsbG9Xb3JsZFwiXG4gIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2UoJ0FXUzo6QXBpR2F0ZXdheTo6UmVzdEFwaScsIHtcbiAgICBUeXBlOiBcIkFXUzo6QXBpR2F0ZXdheTo6UmVzdEFwaVwiLFxuICAgIFByb3BlcnRpZXM6IHtcbiAgICAgIEVuZHBvaW50Q29uZmlndXJhdGlvbjoge1xuICAgICAgICBUeXBlczogW1xuICAgICAgICAgIFwiRURHRVwiXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBOYW1lOiBcIkhlbGxvV29ybGRcIlxuICAgIH1cbiAgfSk7XG59KTtcblxudGVzdCgnVGVzdCBBcGlHYXRld2F5OjpBY2NvdW50IHJlc291cmNlIGZvciBSZWdpb25hbEFwaUdhdGV3YXknLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IGxhbWJkYUZ1bmN0aW9uUHJvcHM6IGxhbWJkYS5GdW5jdGlvblByb3BzID0ge1xuICAgIHJ1bnRpbWU6IGRlZmF1bHRzLkNPTU1FUkNJQUxfUkVHSU9OX0xBTUJEQV9OT0RFX1JVTlRJTUUsXG4gICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChgJHtfX2Rpcm5hbWV9L2xhbWJkYWApXG4gIH07XG5cbiAgY29uc3QgZm4gPSBkZWZhdWx0cy5kZXBsb3lMYW1iZGFGdW5jdGlvbihzdGFjaywgbGFtYmRhRnVuY3Rpb25Qcm9wcyk7XG5cbiAgZGVmYXVsdHMuUmVnaW9uYWxMYW1iZGFSZXN0QXBpKHN0YWNrLCBmbik7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6QXBpR2F0ZXdheTo6QWNjb3VudCcsIHtcbiAgICBDbG91ZFdhdGNoUm9sZUFybjoge1xuICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgXCJMYW1iZGFSZXN0QXBpQ2xvdWRXYXRjaFJvbGVGMzM5RDRFNlwiLFxuICAgICAgICBcIkFyblwiXG4gICAgICBdXG4gICAgfVxuICB9KTtcbn0pO1xuXG50ZXN0KCdUZXN0IEFwaUdhdGV3YXk6OkFjY291bnQgcmVzb3VyY2UgZm9yIEdsb2JhbEFwaUdhdGV3YXknLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IGxhbWJkYUZ1bmN0aW9uUHJvcHM6IGxhbWJkYS5GdW5jdGlvblByb3BzID0ge1xuICAgIHJ1bnRpbWU6IGRlZmF1bHRzLkNPTU1FUkNJQUxfUkVHSU9OX0xBTUJEQV9OT0RFX1JVTlRJTUUsXG4gICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChgJHtfX2Rpcm5hbWV9L2xhbWJkYWApXG4gIH07XG5cbiAgY29uc3QgZm4gPSBkZWZhdWx0cy5kZXBsb3lMYW1iZGFGdW5jdGlvbihzdGFjaywgbGFtYmRhRnVuY3Rpb25Qcm9wcyk7XG5cbiAgZGVmYXVsdHMuR2xvYmFsTGFtYmRhUmVzdEFwaShzdGFjaywgZm4pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkFwaUdhdGV3YXk6OkFjY291bnQnLCB7XG4gICAgQ2xvdWRXYXRjaFJvbGVBcm46IHtcbiAgICAgIFwiRm46OkdldEF0dFwiOiBbXG4gICAgICAgIFwiTGFtYmRhUmVzdEFwaUNsb3VkV2F0Y2hSb2xlRjMzOUQ0RTZcIixcbiAgICAgICAgXCJBcm5cIlxuICAgICAgXVxuICAgIH1cbiAgfSk7XG59KTtcblxudGVzdCgnVGVzdCBkZWZhdWx0IFJlc3RBcGkgZGVwbG95bWVudCB3LyBBcGlHYXRld2F5UHJvcHMnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIHNldHVwUmVzdEFwaShzdGFjaywge1xuICAgIHJlc3RBcGlOYW1lOiBcImN1c3RvbVJlc3RBcGlcIlxuICB9KTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpBcGlHYXRld2F5OjpSZXN0QXBpJywge1xuICAgIE5hbWU6IFwiY3VzdG9tUmVzdEFwaVwiXG4gIH0pO1xufSk7XG5cbnRlc3QoJ1Rlc3QgZGVmYXVsdCBSZXN0QXBpIGRlcGxveW1lbnQgdy8gY2xvdWRXYXRjaFJvbGUgc2V0IHRvIGZhbHNlJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBzZXR1cFJlc3RBcGkoc3RhY2ssIHtcbiAgICBjbG91ZFdhdGNoUm9sZTogZmFsc2VcbiAgfSk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoXCJBV1M6OkFwaUdhdGV3YXk6OkFjY291bnRcIiwgMCk7XG59KTtcblxudGVzdCgnVGVzdCBkZWZhdWx0IFJlc3RBcGkgZGVwbG95bWVudCBmb3IgQ2xvdWR3YXRjaCBsb2dncm91cCcsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgZGVwbG95UmVnaW9uYWxBcGlHYXRld2F5KHN0YWNrKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlKCdBV1M6OkxvZ3M6OkxvZ0dyb3VwJywge1xuICAgIFVwZGF0ZVJlcGxhY2VQb2xpY3k6IFwiUmV0YWluXCIsXG4gICAgRGVsZXRpb25Qb2xpY3k6IFwiUmV0YWluXCJcbiAgfSk7XG5cbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkFwaUdhdGV3YXk6OlN0YWdlJywge1xuICAgIEFjY2Vzc0xvZ1NldHRpbmc6IHtcbiAgICAgIERlc3RpbmF0aW9uQXJuOiB7XG4gICAgICAgIFwiRm46OkdldEF0dFwiOiBbXG4gICAgICAgICAgXCJBcGlBY2Nlc3NMb2dHcm91cENFQTcwNzg4XCIsXG4gICAgICAgICAgXCJBcm5cIlxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgRm9ybWF0OiBcIntcXFwicmVxdWVzdElkXFxcIjpcXFwiJGNvbnRleHQucmVxdWVzdElkXFxcIixcXFwiaXBcXFwiOlxcXCIkY29udGV4dC5pZGVudGl0eS5zb3VyY2VJcFxcXCIsXFxcInVzZXJcXFwiOlxcXCIkY29udGV4dC5pZGVudGl0eS51c2VyXFxcIixcXFwiY2FsbGVyXFxcIjpcXFwiJGNvbnRleHQuaWRlbnRpdHkuY2FsbGVyXFxcIixcXFwicmVxdWVzdFRpbWVcXFwiOlxcXCIkY29udGV4dC5yZXF1ZXN0VGltZVxcXCIsXFxcImh0dHBNZXRob2RcXFwiOlxcXCIkY29udGV4dC5odHRwTWV0aG9kXFxcIixcXFwicmVzb3VyY2VQYXRoXFxcIjpcXFwiJGNvbnRleHQucmVzb3VyY2VQYXRoXFxcIixcXFwic3RhdHVzXFxcIjpcXFwiJGNvbnRleHQuc3RhdHVzXFxcIixcXFwicHJvdG9jb2xcXFwiOlxcXCIkY29udGV4dC5wcm90b2NvbFxcXCIsXFxcInJlc3BvbnNlTGVuZ3RoXFxcIjpcXFwiJGNvbnRleHQucmVzcG9uc2VMZW5ndGhcXFwifVwiLFxuICAgIH0sXG4gIH0pO1xufSk7XG5cbnRlc3QoJ1Rlc3QgYWRkTWV0aG9kVG9BcGlSZXNvdXJjZSB3aXRoIGFjdGlvbicsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgZ2xvYmFsUmVzdEFwaVJlc3BvbnNlID0gZGVmYXVsdHMuR2xvYmFsUmVzdEFwaShzdGFjayk7XG5cbiAgLy8gU2V0dXAgdGhlIEFQSSBHYXRld2F5IHJvbGVcbiAgY29uc3QgYXBpR2F0ZXdheVJvbGUgPSBuZXcgaWFtLlJvbGUoc3RhY2ssICdhcGktZ2F0ZXdheS1yb2xlJywge1xuICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdhcGlnYXRld2F5LmFtYXpvbmF3cy5jb20nKVxuICB9KTtcblxuICAvLyBTZXR1cCB0aGUgQVBJIEdhdGV3YXkgcmVzb3VyY2VcbiAgY29uc3QgYXBpR2F0ZXdheVJlc291cmNlID0gZ2xvYmFsUmVzdEFwaVJlc3BvbnNlLmFwaS5yb290LmFkZFJlc291cmNlKCdhcGktZ2F0ZXdheS1yZXNvdXJjZScpO1xuICBjb25zdCBnZXRSZXF1ZXN0VGVtcGxhdGUgPSBcInt9XCI7XG5cbiAgLy8gQWRkIE1ldGhvZFxuICBkZWZhdWx0cy5hZGRQcm94eU1ldGhvZFRvQXBpUmVzb3VyY2Uoe1xuICAgIGFjdGlvbjogXCJRdWVyeVwiLFxuICAgIHNlcnZpY2U6IFwiZHluYW1vZGJcIixcbiAgICBhcGlSZXNvdXJjZTogYXBpR2F0ZXdheVJlc291cmNlLFxuICAgIGFwaUdhdGV3YXlSb2xlLFxuICAgIGFwaU1ldGhvZDogXCJHRVRcIixcbiAgICByZXF1ZXN0VGVtcGxhdGU6IGdldFJlcXVlc3RUZW1wbGF0ZVxuICB9KTtcblxuICAvLyBBZGQgTWV0aG9kXG4gIGRlZmF1bHRzLmFkZFByb3h5TWV0aG9kVG9BcGlSZXNvdXJjZSh7XG4gICAgcGF0aDogJzExMTEyMjIyJyArIFwiL1wiICsgJ3RoaXNxdWV1ZXF1ZXVlTmFtZScsXG4gICAgc2VydmljZTogXCJzcXNcIixcbiAgICBhcGlSZXNvdXJjZTogYXBpR2F0ZXdheVJlc291cmNlLFxuICAgIGFwaUdhdGV3YXlSb2xlLFxuICAgIGFwaU1ldGhvZDogXCJQVVRcIixcbiAgICByZXF1ZXN0VGVtcGxhdGU6IGdldFJlcXVlc3RUZW1wbGF0ZVxuICB9KTtcblxuICAvLyBFcnJvciBzY2VuYXJpbzogbWlzc2luZyBhY3Rpb24gYW5kIHBhdGhcbiAgdHJ5IHtcbiAgICBkZWZhdWx0cy5hZGRQcm94eU1ldGhvZFRvQXBpUmVzb3VyY2Uoe1xuICAgICAgc2VydmljZTogXCJzcXNcIixcbiAgICAgIGFwaVJlc291cmNlOiBhcGlHYXRld2F5UmVzb3VyY2UsXG4gICAgICBhcGlHYXRld2F5Um9sZSxcbiAgICAgIGFwaU1ldGhvZDogXCJERUxFVEVcIixcbiAgICAgIHJlcXVlc3RUZW1wbGF0ZTogZ2V0UmVxdWVzdFRlbXBsYXRlXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBleHBlY3QoZSkudG9CZUluc3RhbmNlT2YoRXJyb3IpO1xuICB9XG59KTtcblxudGVzdCgnVGVzdCBkZWZhdWx0IFJlc3RBcGkgdy8gcmVxdWVzdCBtb2RlbCBhbmQgdmFsaWRhdG9yJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBnbG9iYWxSZXN0QXBpUmVzcG9uc2UgPSBkZWZhdWx0cy5HbG9iYWxSZXN0QXBpKHN0YWNrKTtcblxuICAvLyBTZXR1cCB0aGUgQVBJIEdhdGV3YXkgcm9sZVxuICBjb25zdCBhcGlHYXRld2F5Um9sZSA9IG5ldyBpYW0uUm9sZShzdGFjaywgJ2FwaS1nYXRld2F5LXJvbGUnLCB7XG4gICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2FwaWdhdGV3YXkuYW1hem9uYXdzLmNvbScpXG4gIH0pO1xuXG4gIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheSByZXNvdXJjZVxuICBjb25zdCBhcGlHYXRld2F5UmVzb3VyY2UgPSBnbG9iYWxSZXN0QXBpUmVzcG9uc2UuYXBpLnJvb3QuYWRkUmVzb3VyY2UoJ2FwaS1nYXRld2F5LXJlc291cmNlJyk7XG5cbiAgY29uc3QgdmFsaWRhdG9yID0gZ2xvYmFsUmVzdEFwaVJlc3BvbnNlLmFwaS5hZGRSZXF1ZXN0VmFsaWRhdG9yKCdkZWZhdWx0LXZhbGlkYXRvcicsIHtcbiAgICByZXF1ZXN0VmFsaWRhdG9yTmFtZTogJ2RlZmF1bHQtdmFsaWRhdG9yJyxcbiAgICB2YWxpZGF0ZVJlcXVlc3RCb2R5OiB0cnVlXG4gIH0pO1xuXG4gIGRlZmF1bHRzLmFkZFByb3h5TWV0aG9kVG9BcGlSZXNvdXJjZSh7XG4gICAgc2VydmljZTogXCJraW5lc2lzXCIsXG4gICAgYWN0aW9uOiBcIlB1dFJlY29yZFwiLFxuICAgIGFwaUdhdGV3YXlSb2xlLFxuICAgIGFwaU1ldGhvZDogJ1BPU1QnLFxuICAgIGFwaVJlc291cmNlOiBhcGlHYXRld2F5UmVzb3VyY2UsXG4gICAgcmVxdWVzdFRlbXBsYXRlOiBcInt9XCIsXG4gICAgY29udGVudFR5cGU6IFwiJ3gtYW16LWpzb24tMS4xJ1wiLFxuICAgIG1ldGhvZE9wdGlvbnM6IHtcbiAgICAgIHJlcXVlc3RWYWxpZGF0b3I6IHZhbGlkYXRvcixcbiAgICAgIHJlcXVlc3RNb2RlbHM6IHsgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGFwaS5Nb2RlbC5FTVBUWV9NT0RFTCB9XG4gICAgfVxuICB9KTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpBcGlHYXRld2F5OjpSZXF1ZXN0VmFsaWRhdG9yJywge1xuICAgIE5hbWU6IFwiZGVmYXVsdC12YWxpZGF0b3JcIixcbiAgICBWYWxpZGF0ZVJlcXVlc3RCb2R5OiB0cnVlXG4gIH0pO1xuXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpBcGlHYXRld2F5OjpNZXRob2QnLCB7XG4gICAgUmVxdWVzdE1vZGVsczogeyBcImFwcGxpY2F0aW9uL2pzb25cIjogXCJFbXB0eVwiIH1cbiAgfSk7XG59KTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRlc3QgZm9yIFJlZ2lvbmFsIEFwaUdhdGV3YXkgQ3JlYXRpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG50ZXN0KCdUZXN0IGZvciBSZWdpb25hbFJlc3RBcGlHYXRld2F5JywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IHJlZ2lvbmFsUmVzdEFwaVJlc3BvbnNlID0gZGVmYXVsdHMuUmVnaW9uYWxSZXN0QXBpKHN0YWNrLCB7XG4gICAgcmVzdEFwaU5hbWU6IFwiSGVsbG9Xb3JsZC1SZWdpb25hbEFwaVwiXG4gIH0pO1xuICAvLyBTZXR1cCB0aGUgQVBJIEdhdGV3YXkgcm9sZVxuICBjb25zdCBhcGlHYXRld2F5Um9sZSA9IG5ldyBpYW0uUm9sZShzdGFjaywgJ2FwaS1nYXRld2F5LXJvbGUnLCB7XG4gICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2FwaWdhdGV3YXkuYW1hem9uYXdzLmNvbScpXG4gIH0pO1xuXG4gIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheSByZXNvdXJjZVxuICBjb25zdCBhcGlHYXRld2F5UmVzb3VyY2UgPSByZWdpb25hbFJlc3RBcGlSZXNwb25zZS5hcGkucm9vdC5hZGRSZXNvdXJjZSgnaGVsbG8nKTtcblxuICBkZWZhdWx0cy5hZGRQcm94eU1ldGhvZFRvQXBpUmVzb3VyY2UoXG4gICAge1xuICAgICAgc2VydmljZTogJ2lvdGRhdGEnLFxuICAgICAgcGF0aDogJ2hlbGxvJyxcbiAgICAgIGFwaUdhdGV3YXlSb2xlLFxuICAgICAgYXBpTWV0aG9kOiAnUE9TVCcsXG4gICAgICBhcGlSZXNvdXJjZTogYXBpR2F0ZXdheVJlc291cmNlLFxuICAgICAgcmVxdWVzdFRlbXBsYXRlOiBcIiRpbnB1dC5qc29uKCckJylcIlxuICAgIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2UoJ0FXUzo6QXBpR2F0ZXdheTo6UmVzdEFwaScsIHtcbiAgICBUeXBlOiBcIkFXUzo6QXBpR2F0ZXdheTo6UmVzdEFwaVwiLFxuICAgIFByb3BlcnRpZXM6IHtcbiAgICAgIEVuZHBvaW50Q29uZmlndXJhdGlvbjoge1xuICAgICAgICBUeXBlczogW1xuICAgICAgICAgIFwiUkVHSU9OQUxcIlxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgTmFtZTogXCJIZWxsb1dvcmxkLVJlZ2lvbmFsQXBpXCJcbiAgICB9XG4gIH0pO1xufSk7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUZXN0cyBmb3IgZXhjZXB0aW9uIHdoaWxlIG92ZXJyaWRpbmcgcmVzdEFwaVByb3BzIHVzaW5nIGVuZFBvaW50VHlwZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG50ZXN0KCdUZXN0IGZvciBFeGNlcHRpb24gd2hpbGUgb3ZlcnJpZGluZyByZXN0QXBpUHJvcHMgdXNpbmcgZW5kUG9pbnRUeXBlcycsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgdHJ5IHtcbiAgICBkZWZhdWx0cy5SZWdpb25hbFJlc3RBcGkoc3RhY2ssIHtcbiAgICAgIGVuZHBvaW50VHlwZXM6IFthcGkuRW5kcG9pbnRUeXBlLlJFR0lPTkFMXVxuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZXhwZWN0KGUpLnRvQmVJbnN0YW5jZU9mKEVycm9yKTtcbiAgfVxufSk7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUZXN0cyBmb3IgZXhjZXB0aW9uIHdoaWxlIG92ZXJyaWRpbmcgTGFtYmRhUmVzdEFwaVByb3BzIHVzaW5nIGVuZFBvaW50VHlwZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG50ZXN0KCdUZXN0IGZvciBFeGNlcHRpb24gd2hpbGUgb3ZlcnJpZGluZyBMYW1iZGFSZXN0QXBpUHJvcHMgdXNpbmcgZW5kUG9pbnRUeXBlcycsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgbGFtYmRhRnVuY3Rpb25Qcm9wczogbGFtYmRhLkZ1bmN0aW9uUHJvcHMgPSB7XG4gICAgcnVudGltZTogZGVmYXVsdHMuQ09NTUVSQ0lBTF9SRUdJT05fTEFNQkRBX05PREVfUlVOVElNRSxcbiAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXG4gICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KGAke19fZGlybmFtZX0vbGFtYmRhYClcbiAgfTtcblxuICBjb25zdCBmbiA9IGRlZmF1bHRzLmRlcGxveUxhbWJkYUZ1bmN0aW9uKHN0YWNrLCBsYW1iZGFGdW5jdGlvblByb3BzKTtcblxuICB0cnkge1xuICAgIGRlZmF1bHRzLkdsb2JhbExhbWJkYVJlc3RBcGkoc3RhY2ssIGZuLCB7XG4gICAgICBoYW5kbGVyOiBmbixcbiAgICAgIGVuZHBvaW50VHlwZXM6IFthcGkuRW5kcG9pbnRUeXBlLlJFR0lPTkFMXVxuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZXhwZWN0KGUpLnRvQmVJbnN0YW5jZU9mKEVycm9yKTtcbiAgfVxufSk7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUZXN0IGZvciBJbnRlZ3JhdGlvbiBSZXF1ZXN0IFByb3BzIE92ZXJyaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudGVzdCgnVGVzdCBmb3IgSW50ZWdyYXRpb24gUmVxdWVzdCBQcm9wcyBPdmVycmlkZScsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCByZWdpb25hbFJlc3RBcGlSZXNwb25zZSA9IGRlZmF1bHRzLlJlZ2lvbmFsUmVzdEFwaShzdGFjayk7XG5cbiAgLy8gU2V0dXAgdGhlIEFQSSBHYXRld2F5IHJvbGVcbiAgY29uc3QgYXBpR2F0ZXdheVJvbGUgPSBuZXcgaWFtLlJvbGUoc3RhY2ssICdhcGktZ2F0ZXdheS1yb2xlJywge1xuICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdhcGlnYXRld2F5LmFtYXpvbmF3cy5jb20nKVxuICB9KTtcblxuICAvLyBTZXR1cCB0aGUgQVBJIEdhdGV3YXkgcmVzb3VyY2VcbiAgY29uc3QgYXBpR2F0ZXdheVJlc291cmNlID0gcmVnaW9uYWxSZXN0QXBpUmVzcG9uc2UuYXBpLnJvb3QuYWRkUmVzb3VyY2UoJ2hlbGxvJyk7XG4gIGNvbnN0IGludGVnUmVxUGFyYW1zID0geyAnaW50ZWdyYXRpb24ucmVxdWVzdC5wYXRoLnRvcGljLWxldmVsLTEnOiBcIidtZXRob2QucmVxdWVzdC5wYXRoLnRvcGljLWxldmVsLTEnXCIgfTtcbiAgY29uc3QgaW50ZWdSZXNwOiBhcGkuSW50ZWdyYXRpb25SZXNwb25zZVtdID0gW1xuICAgIHtcbiAgICAgIHN0YXR1c0NvZGU6IFwiMjAwXCIsXG4gICAgICBzZWxlY3Rpb25QYXR0ZXJuOiBcIjJcXFxcZHsyfVwiLFxuICAgICAgcmVzcG9uc2VUZW1wbGF0ZXM6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IFwiJGlucHV0Lmpzb24oJyQnKVwiXG4gICAgICB9XG4gICAgfV07XG4gIC8vIE92ZXJyaWRlIHRoZSBkZWZhdWx0IEludGVncmF0aW9uIFJlcXVlc3QgUHJvcHNcbiAgY29uc3QgaW50ZWdyYXRpb25SZXFQcm9wcyA9IHtcbiAgICBzdWJkb21haW46ICdhYmNkZWZnaDEyMzQ1JyxcbiAgICBvcHRpb25zOiB7XG4gICAgICByZXF1ZXN0UGFyYW1ldGVyczogaW50ZWdSZXFQYXJhbXMsXG4gICAgICBpbnRlZ3JhdGlvblJlc3BvbnNlczogaW50ZWdSZXNwLFxuICAgICAgcGFzc3Rocm91Z2hCZWhhdmlvcjogYXBpLlBhc3N0aHJvdWdoQmVoYXZpb3IuV0hFTl9OT19NQVRDSFxuICAgIH1cbiAgfTtcbiAgZGVmYXVsdHMuYWRkUHJveHlNZXRob2RUb0FwaVJlc291cmNlKFxuICAgIHtcbiAgICAgIHNlcnZpY2U6ICdpb3RkYXRhJyxcbiAgICAgIHBhdGg6ICdoZWxsbycsXG4gICAgICBhcGlHYXRld2F5Um9sZSxcbiAgICAgIGFwaU1ldGhvZDogJ1BPU1QnLFxuICAgICAgYXBpUmVzb3VyY2U6IGFwaUdhdGV3YXlSZXNvdXJjZSxcbiAgICAgIHJlcXVlc3RUZW1wbGF0ZTogXCIkaW5wdXQuanNvbignJCcpXCIsXG4gICAgICBhd3NJbnRlZ3JhdGlvblByb3BzOiBpbnRlZ3JhdGlvblJlcVByb3BzXG4gICAgfSk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OkFwaUdhdGV3YXk6Ok1ldGhvZFwiLCB7XG4gICAgSHR0cE1ldGhvZDogXCJQT1NUXCIsXG4gICAgQXV0aG9yaXphdGlvblR5cGU6IFwiQVdTX0lBTVwiLFxuICAgIEludGVncmF0aW9uOiB7XG4gICAgICBJbnRlZ3JhdGlvbkh0dHBNZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgSW50ZWdyYXRpb25SZXNwb25zZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIFJlc3BvbnNlVGVtcGxhdGVzOiB7XG4gICAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogXCIkaW5wdXQuanNvbignJCcpXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFNlbGVjdGlvblBhdHRlcm46IFwiMlxcXFxkezJ9XCIsXG4gICAgICAgICAgU3RhdHVzQ29kZTogXCIyMDBcIlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgUGFzc3Rocm91Z2hCZWhhdmlvcjogXCJXSEVOX05PX01BVENIXCIsXG4gICAgICBSZXF1ZXN0UGFyYW1ldGVyczoge1xuICAgICAgICBcImludGVncmF0aW9uLnJlcXVlc3QuaGVhZGVyLkNvbnRlbnQtVHlwZVwiOiBcIidhcHBsaWNhdGlvbi9qc29uJ1wiLFxuICAgICAgICBcImludGVncmF0aW9uLnJlcXVlc3QucGF0aC50b3BpYy1sZXZlbC0xXCI6IFwiJ21ldGhvZC5yZXF1ZXN0LnBhdGgudG9waWMtbGV2ZWwtMSdcIixcbiAgICAgIH0sXG4gICAgICBSZXF1ZXN0VGVtcGxhdGVzOiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBcIiRpbnB1dC5qc29uKCckJylcIlxuICAgICAgfSxcbiAgICAgIFR5cGU6IFwiQVdTXCIsXG4gICAgICBVcmk6IHtcbiAgICAgICAgXCJGbjo6Sm9pblwiOiBbXG4gICAgICAgICAgXCJcIixcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcImFybjpcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgUmVmOiBcIkFXUzo6UGFydGl0aW9uXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIjphcGlnYXRld2F5OlwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBSZWY6IFwiQVdTOjpSZWdpb25cIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGA6YWJjZGVmZ2gxMjM0NS5pb3RkYXRhOnBhdGgvaGVsbG9gXG4gICAgICAgICAgXVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfSxcbiAgICBNZXRob2RSZXNwb25zZXM6IFtcbiAgICAgIHtcbiAgICAgICAgU3RhdHVzQ29kZTogXCIyMDBcIixcbiAgICAgICAgUmVzcG9uc2VQYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgXCJtZXRob2QucmVzcG9uc2UuaGVhZGVyLkNvbnRlbnQtVHlwZVwiOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFN0YXR1c0NvZGU6IFwiNTAwXCIsXG4gICAgICAgIFJlc3BvbnNlUGFyYW1ldGVyczoge1xuICAgICAgICAgIFwibWV0aG9kLnJlc3BvbnNlLmhlYWRlci5Db250ZW50LVR5cGVcIjogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9KTtcbn0pO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGVzdCBmb3IgTWV0aG9kIE9wdGlvbnMgT3ZlcnJpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG50ZXN0KCdUZXN0IGZvciBNZXRob2QgUmVxdWVzdCBQcm9wcyBPdmVycmlkZScsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBnbG9iYWxSZXN0QXBpUmVzcG9uc2UgPSBkZWZhdWx0cy5HbG9iYWxSZXN0QXBpKHN0YWNrKTtcblxuICAvLyBTZXR1cCB0aGUgQVBJIEdhdGV3YXkgcm9sZVxuICBjb25zdCBhcGlHYXRld2F5Um9sZSA9IG5ldyBpYW0uUm9sZShzdGFjaywgJ2FwaS1nYXRld2F5LXJvbGUnLCB7XG4gICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2FwaWdhdGV3YXkuYW1hem9uYXdzLmNvbScpXG4gIH0pO1xuXG4gIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheSByZXNvdXJjZVxuICBjb25zdCBhcGlHYXRld2F5UmVzb3VyY2UgPSBnbG9iYWxSZXN0QXBpUmVzcG9uc2UuYXBpLnJvb3QuYWRkUmVzb3VyY2UoJ2hlbGxvJyk7XG4gIGNvbnN0IG1ldGhvZFJlcVBhcmFtcyA9IHsgJ21ldGhvZC5yZXF1ZXN0LnBhdGgudG9waWMtbGV2ZWwtMSc6IHRydWUgfTtcbiAgY29uc3QgbWV0aG9kUmVzcDogYXBpLk1ldGhvZFJlc3BvbnNlW10gPSBbXG4gICAge1xuICAgICAgc3RhdHVzQ29kZTogXCI0MDNcIlxuICAgIH1cbiAgXTtcbiAgY29uc3QgcmVzb3VyY2VNZXRob2RPcHRpb25zID0ge1xuICAgIHJlcXVlc3RQYXJhbWV0ZXJzOiBtZXRob2RSZXFQYXJhbXMsXG4gICAgbWV0aG9kUmVzcG9uc2VzOiBtZXRob2RSZXNwLFxuICB9O1xuICBkZWZhdWx0cy5hZGRQcm94eU1ldGhvZFRvQXBpUmVzb3VyY2UoXG4gICAge1xuICAgICAgc2VydmljZTogJ2lvdGRhdGEnLFxuICAgICAgcGF0aDogJ2hlbGxvJyxcbiAgICAgIGFwaUdhdGV3YXlSb2xlLFxuICAgICAgYXBpTWV0aG9kOiAnUE9TVCcsXG4gICAgICBhcGlSZXNvdXJjZTogYXBpR2F0ZXdheVJlc291cmNlLFxuICAgICAgcmVxdWVzdFRlbXBsYXRlOiBcIiRpbnB1dC5qc29uKCckJylcIixcbiAgICAgIG1ldGhvZE9wdGlvbnM6IHJlc291cmNlTWV0aG9kT3B0aW9uc1xuICAgIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpBcGlHYXRld2F5OjpNZXRob2RcIiwge1xuICAgIEh0dHBNZXRob2Q6IFwiUE9TVFwiLFxuICAgIEF1dGhvcml6YXRpb25UeXBlOiBcIkFXU19JQU1cIixcbiAgICBJbnRlZ3JhdGlvbjoge1xuICAgICAgSW50ZWdyYXRpb25IdHRwTWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIEludGVncmF0aW9uUmVzcG9uc2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBTdGF0dXNDb2RlOiBcIjIwMFwiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBTdGF0dXNDb2RlOiBcIjUwMFwiLFxuICAgICAgICAgIFJlc3BvbnNlVGVtcGxhdGVzOiB7XG4gICAgICAgICAgICBcInRleHQvaHRtbFwiOiBcIkVycm9yXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFNlbGVjdGlvblBhdHRlcm46IFwiNTAwXCJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIFBhc3N0aHJvdWdoQmVoYXZpb3I6IFwiTkVWRVJcIixcbiAgICAgIFJlcXVlc3RQYXJhbWV0ZXJzOiB7XG4gICAgICAgIFwiaW50ZWdyYXRpb24ucmVxdWVzdC5oZWFkZXIuQ29udGVudC1UeXBlXCI6IFwiJ2FwcGxpY2F0aW9uL2pzb24nXCIsXG4gICAgICB9LFxuICAgICAgUmVxdWVzdFRlbXBsYXRlczoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogXCIkaW5wdXQuanNvbignJCcpXCJcbiAgICAgIH0sXG4gICAgICBUeXBlOiBcIkFXU1wiLFxuICAgICAgVXJpOiB7XG4gICAgICAgIFwiRm46OkpvaW5cIjogW1xuICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJhcm46XCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFJlZjogXCJBV1M6OlBhcnRpdGlvblwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCI6YXBpZ2F0ZXdheTpcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgUmVmOiBcIkFXUzo6UmVnaW9uXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBgOmlvdGRhdGE6cGF0aC9oZWxsb2BcbiAgICAgICAgICBdXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9LFxuICAgIE1ldGhvZFJlc3BvbnNlczogW1xuICAgICAge1xuICAgICAgICBTdGF0dXNDb2RlOiBcIjQwM1wiXG4gICAgICB9XG4gICAgXSxcbiAgICBSZXF1ZXN0UGFyYW1ldGVyczoge1xuICAgICAgXCJtZXRob2QucmVxdWVzdC5wYXRoLnRvcGljLWxldmVsLTFcIjogdHJ1ZVxuICAgIH1cbiAgfSk7XG59KTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRlc3QgZm9yIEFwaUtleSBDcmVhdGlvbiBvZiBSZXN0QXBpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudGVzdCgnVGVzdCBmb3IgQXBpS2V5IGNyZWF0aW9uIHVzaW5nIHJlc3RBcGlQcm9wcycsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgZ2xvYmFsUmVzdEFwaVJlc3BvbnNlID0gZGVmYXVsdHMuR2xvYmFsUmVzdEFwaShzdGFjaywge1xuICAgIGRlZmF1bHRNZXRob2RPcHRpb25zOiB7XG4gICAgICBhcGlLZXlSZXF1aXJlZDogdHJ1ZVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gU2V0dXAgdGhlIEFQSSBHYXRld2F5IHJvbGVcbiAgY29uc3QgYXBpR2F0ZXdheVJvbGUgPSBuZXcgaWFtLlJvbGUoc3RhY2ssICdhcGktZ2F0ZXdheS1yb2xlJywge1xuICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdhcGlnYXRld2F5LmFtYXpvbmF3cy5jb20nKVxuICB9KTtcblxuICAvLyBTZXR1cCB0aGUgQVBJIEdhdGV3YXkgcmVzb3VyY2VcbiAgY29uc3QgYXBpR2F0ZXdheVJlc291cmNlID0gZ2xvYmFsUmVzdEFwaVJlc3BvbnNlLmFwaS5yb290LmFkZFJlc291cmNlKCdoZWxsbycpO1xuXG4gIGRlZmF1bHRzLmFkZFByb3h5TWV0aG9kVG9BcGlSZXNvdXJjZShcbiAgICB7XG4gICAgICBzZXJ2aWNlOiAnaW90ZGF0YScsXG4gICAgICBwYXRoOiAnaGVsbG8nLFxuICAgICAgYXBpR2F0ZXdheVJvbGUsXG4gICAgICBhcGlNZXRob2Q6ICdQT1NUJyxcbiAgICAgIGFwaVJlc291cmNlOiBhcGlHYXRld2F5UmVzb3VyY2UsXG4gICAgICByZXF1ZXN0VGVtcGxhdGU6IFwiJGlucHV0Lmpzb24oJyQnKVwiXG4gICAgfSk7XG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgLy8gQXNzZXJ0aW9uIHRvIGNoZWNrIGZvciBBcGlLZXlcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpBcGlHYXRld2F5OjpNZXRob2RcIiwge1xuICAgIEFwaUtleVJlcXVpcmVkOiB0cnVlXG4gIH0pO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OkFwaUdhdGV3YXk6OkFwaUtleVwiLCB7XG4gICAgRW5hYmxlZDogdHJ1ZVxuICB9KTtcbiAgLy8gQXNzZXJ0aW9uIHRvIGNoZWNrIGZvciBVc2FnZVBsYW4gQXBpIEtleSBNYXBwaW5nXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6QXBpR2F0ZXdheTo6VXNhZ2VQbGFuS2V5XCIsIHtcbiAgICBLZXlUeXBlOiBcIkFQSV9LRVlcIlxuICB9KTtcbn0pO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGVzdCBmb3IgQXBpS2V5IENyZWF0aW9uIG9mIExhbWJkYVJlc3RBcGlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG50ZXN0KCdUZXN0IGZvciBBcGlLZXkgY3JlYXRpb24gdXNpbmcgbGFtYmRhQXBpUHJvcHMnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IGxhbWJkYUZ1bmN0aW9uUHJvcHM6IGxhbWJkYS5GdW5jdGlvblByb3BzID0ge1xuICAgIHJ1bnRpbWU6IGRlZmF1bHRzLkNPTU1FUkNJQUxfUkVHSU9OX0xBTUJEQV9OT0RFX1JVTlRJTUUsXG4gICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChgJHtfX2Rpcm5hbWV9L2xhbWJkYWApXG4gIH07XG5cbiAgY29uc3QgZm4gPSBkZWZhdWx0cy5kZXBsb3lMYW1iZGFGdW5jdGlvbihzdGFjaywgbGFtYmRhRnVuY3Rpb25Qcm9wcyk7XG4gIGRlZmF1bHRzLlJlZ2lvbmFsTGFtYmRhUmVzdEFwaShzdGFjaywgZm4sIHtcbiAgICBoYW5kbGVyOiBmbixcbiAgICBkZWZhdWx0TWV0aG9kT3B0aW9uczoge1xuICAgICAgYXBpS2V5UmVxdWlyZWQ6IHRydWVcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgLy8gQXNzZXJ0aW9uIHRvIGNoZWNrIGZvciBBcGlLZXlcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpBcGlHYXRld2F5OjpNZXRob2RcIiwge1xuICAgIEFwaUtleVJlcXVpcmVkOiB0cnVlXG4gIH0pO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OkFwaUdhdGV3YXk6OkFwaUtleVwiLCB7XG4gICAgRW5hYmxlZDogdHJ1ZVxuICB9KTtcbiAgLy8gQXNzZXJ0aW9uIHRvIGNoZWNrIGZvciBVc2FnZVBsYW4gQXBpIEtleSBNYXBwaW5nXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6QXBpR2F0ZXdheTo6VXNhZ2VQbGFuS2V5XCIsIHtcbiAgICBLZXlUeXBlOiBcIkFQSV9LRVlcIlxuICB9KTtcbn0pO1xuXG50ZXN0KCdBZGRpdGlvbmFsIHJlcXVlc3QgdGVtcGxhdGVzIGNhbiBiZSBzcGVjaWZpZWQgb24gYWRkTWV0aG9kVG9BcGlSZXNvdXJjZSBtZXRob2QnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IGdsb2JhbFJlc3RBcGlSZXNwb25zZSA9IGRlZmF1bHRzLkdsb2JhbFJlc3RBcGkoc3RhY2spO1xuXG4gIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheSByb2xlXG4gIGNvbnN0IGFwaUdhdGV3YXlSb2xlID0gbmV3IGlhbS5Sb2xlKHN0YWNrLCAnYXBpLWdhdGV3YXktcm9sZScsIHtcbiAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnYXBpZ2F0ZXdheS5hbWF6b25hd3MuY29tJylcbiAgfSk7XG5cbiAgLy8gU2V0dXAgdGhlIEFQSSBHYXRld2F5IHJlc291cmNlXG4gIGNvbnN0IGFwaUdhdGV3YXlSZXNvdXJjZSA9IGdsb2JhbFJlc3RBcGlSZXNwb25zZS5hcGkucm9vdC5hZGRSZXNvdXJjZSgnYXBpLWdhdGV3YXktcmVzb3VyY2UnKTtcbiAgY29uc3QgcmVxdWVzdFRlbXBsYXRlID0gJ3t9JztcbiAgY29uc3QgYWRkaXRpb25hbFJlcXVlc3RUZW1wbGF0ZXMgPSB7XG4gICAgJ3RleHQvcGxhaW4nOiAnYWRkaXRpb25hbC1yZXF1ZXN0LXRlbXBsYXRlJ1xuICB9O1xuXG4gIC8vIEFkZCBNZXRob2RcbiAgZGVmYXVsdHMuYWRkUHJveHlNZXRob2RUb0FwaVJlc291cmNlKHtcbiAgICBhY3Rpb246IFwiUXVlcnlcIixcbiAgICBzZXJ2aWNlOiBcImR5bmFtb2RiXCIsXG4gICAgYXBpUmVzb3VyY2U6IGFwaUdhdGV3YXlSZXNvdXJjZSxcbiAgICBhcGlHYXRld2F5Um9sZSxcbiAgICBhcGlNZXRob2Q6IFwiR0VUXCIsXG4gICAgcmVxdWVzdFRlbXBsYXRlLFxuICAgIGFkZGl0aW9uYWxSZXF1ZXN0VGVtcGxhdGVzXG4gIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkFwaUdhdGV3YXk6Ok1ldGhvZCcsIHtcbiAgICBIdHRwTWV0aG9kOiAnR0VUJyxcbiAgICBJbnRlZ3JhdGlvbjoge1xuICAgICAgUmVxdWVzdFRlbXBsYXRlczoge1xuICAgICAgICAnYXBwbGljYXRpb24vanNvbic6IGB7fWAsXG4gICAgICAgICd0ZXh0L3BsYWluJzogJ2FkZGl0aW9uYWwtcmVxdWVzdC10ZW1wbGF0ZSdcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufSk7XG5cbnRlc3QoJ0RlZmF1bHQgaW50ZWdyYXRpb24gcmVzcG9uc2VzIGFyZSB1c2VkIG9uIGFkZE1ldGhvZFRvQXBpUmVzb3VyY2UgbWV0aG9kJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBnbG9iYWxSZXN0QXBpUmVzcG9uc2UgPSBkZWZhdWx0cy5HbG9iYWxSZXN0QXBpKHN0YWNrKTtcblxuICAvLyBTZXR1cCB0aGUgQVBJIEdhdGV3YXkgcm9sZVxuICBjb25zdCBhcGlHYXRld2F5Um9sZSA9IG5ldyBpYW0uUm9sZShzdGFjaywgJ2FwaS1nYXRld2F5LXJvbGUnLCB7XG4gICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2FwaWdhdGV3YXkuYW1hem9uYXdzLmNvbScpXG4gIH0pO1xuXG4gIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheSByZXNvdXJjZVxuICBjb25zdCBhcGlHYXRld2F5UmVzb3VyY2UgPSBnbG9iYWxSZXN0QXBpUmVzcG9uc2UuYXBpLnJvb3QuYWRkUmVzb3VyY2UoJ2FwaS1nYXRld2F5LXJlc291cmNlJyk7XG5cbiAgLy8gQWRkIE1ldGhvZFxuICBkZWZhdWx0cy5hZGRQcm94eU1ldGhvZFRvQXBpUmVzb3VyY2Uoe1xuICAgIGFjdGlvbjogJ1F1ZXJ5JyxcbiAgICBzZXJ2aWNlOiAnZHluYW1vZGInLFxuICAgIGFwaVJlc291cmNlOiBhcGlHYXRld2F5UmVzb3VyY2UsXG4gICAgYXBpR2F0ZXdheVJvbGUsXG4gICAgYXBpTWV0aG9kOiAnR0VUJyxcbiAgICByZXF1ZXN0VGVtcGxhdGU6ICd7fScsXG4gIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkFwaUdhdGV3YXk6Ok1ldGhvZCcsIHtcbiAgICBIdHRwTWV0aG9kOiAnR0VUJyxcbiAgICBJbnRlZ3JhdGlvbjoge1xuICAgICAgSW50ZWdyYXRpb25SZXNwb25zZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIFN0YXR1c0NvZGU6ICcyMDAnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBSZXNwb25zZVRlbXBsYXRlczoge1xuICAgICAgICAgICAgJ3RleHQvaHRtbCc6ICdFcnJvcidcbiAgICAgICAgICB9LFxuICAgICAgICAgIFNlbGVjdGlvblBhdHRlcm46ICc1MDAnLFxuICAgICAgICAgIFN0YXR1c0NvZGU6ICc1MDAnXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gIH0pO1xufSk7XG5cbnRlc3QoJ0NhbiBvdmVycmlkZSBpbnRlZ3JhdGlvbiByZXNwb25zZXMgb24gYWRkTWV0aG9kVG9BcGlSZXNvdXJjZSBtZXRob2QnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IGdsb2JhbFJlc3RBcGlSZXNwb25zZSA9IGRlZmF1bHRzLkdsb2JhbFJlc3RBcGkoc3RhY2spO1xuXG4gIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheSByb2xlXG4gIGNvbnN0IGFwaUdhdGV3YXlSb2xlID0gbmV3IGlhbS5Sb2xlKHN0YWNrLCAnYXBpLWdhdGV3YXktcm9sZScsIHtcbiAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnYXBpZ2F0ZXdheS5hbWF6b25hd3MuY29tJylcbiAgfSk7XG5cbiAgLy8gU2V0dXAgdGhlIEFQSSBHYXRld2F5IHJlc291cmNlXG4gIGNvbnN0IGFwaUdhdGV3YXlSZXNvdXJjZSA9IGdsb2JhbFJlc3RBcGlSZXNwb25zZS5hcGkucm9vdC5hZGRSZXNvdXJjZSgnYXBpLWdhdGV3YXktcmVzb3VyY2UnKTtcblxuICAvLyBBZGQgTWV0aG9kXG4gIGRlZmF1bHRzLmFkZFByb3h5TWV0aG9kVG9BcGlSZXNvdXJjZSh7XG4gICAgYWN0aW9uOiAnUXVlcnknLFxuICAgIHNlcnZpY2U6ICdkeW5hbW9kYicsXG4gICAgYXBpUmVzb3VyY2U6IGFwaUdhdGV3YXlSZXNvdXJjZSxcbiAgICBhcGlHYXRld2F5Um9sZSxcbiAgICBhcGlNZXRob2Q6ICdHRVQnLFxuICAgIHJlcXVlc3RUZW1wbGF0ZTogJ3t9JyxcbiAgICBpbnRlZ3JhdGlvblJlc3BvbnNlczogW1xuICAgICAge1xuICAgICAgICBzdGF0dXNDb2RlOiBcIjIwMFwiLFxuICAgICAgICByZXNwb25zZVRlbXBsYXRlczoge1xuICAgICAgICAgIFwidGV4dC9odG1sXCI6IFwiT0tcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9KTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpBcGlHYXRld2F5OjpNZXRob2QnLCB7XG4gICAgSHR0cE1ldGhvZDogJ0dFVCcsXG4gICAgSW50ZWdyYXRpb246IHtcbiAgICAgIEludGVncmF0aW9uUmVzcG9uc2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBSZXNwb25zZVRlbXBsYXRlczoge1xuICAgICAgICAgICAgJ3RleHQvaHRtbCc6ICdPSydcbiAgICAgICAgICB9LFxuICAgICAgICAgIFN0YXR1c0NvZGU6ICcyMDAnXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgfVxuICB9KTtcbn0pO1xuXG50ZXN0KCdTcGVjaWZ5aW5nIGFwcGxpY2F0aW9uL2pzb24gY29udGVudC10eXBlIGluIGFkZGl0aW9uYWxSZXF1ZXN0VGVtcGxhdGVzIHByb3BlcnR5IHRocm93cyBhbiBlcnJvcicsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgZ2xvYmFsUmVzdEFwaVJlc3BvbnNlID0gZGVmYXVsdHMuR2xvYmFsUmVzdEFwaShzdGFjayk7XG5cbiAgY29uc3QgYXBpR2F0ZXdheVJvbGUgPSBuZXcgaWFtLlJvbGUoc3RhY2ssICdhcGktZ2F0ZXdheS1yb2xlJywge1xuICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdhcGlnYXRld2F5LmFtYXpvbmF3cy5jb20nKVxuICB9KTtcblxuICBjb25zdCBhcGlHYXRld2F5UmVzb3VyY2UgPSBnbG9iYWxSZXN0QXBpUmVzcG9uc2UuYXBpLnJvb3QuYWRkUmVzb3VyY2UoJ2FwaS1nYXRld2F5LXJlc291cmNlJyk7XG5cbiAgY29uc3QgYXBwID0gKCkgPT4ge1xuICAgIGRlZmF1bHRzLmFkZFByb3h5TWV0aG9kVG9BcGlSZXNvdXJjZSh7XG4gICAgICBhY3Rpb246ICdRdWVyeScsXG4gICAgICBzZXJ2aWNlOiAnZHluYW1vZGInLFxuICAgICAgYXBpUmVzb3VyY2U6IGFwaUdhdGV3YXlSZXNvdXJjZSxcbiAgICAgIGFwaUdhdGV3YXlSb2xlLFxuICAgICAgYXBpTWV0aG9kOiAnR0VUJyxcbiAgICAgIHJlcXVlc3RUZW1wbGF0ZTogJ3t9JyxcbiAgICAgIGFkZGl0aW9uYWxSZXF1ZXN0VGVtcGxhdGVzOiB7XG4gICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzogJ3t9J1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIGV4cGVjdChhcHApLnRvVGhyb3dFcnJvcignUmVxdWVzdCBUZW1wbGF0ZSBmb3IgdGhlIGFwcGxpY2F0aW9uL2pzb24gY29udGVudC10eXBlIG11c3QgYmUgc3BlY2lmaWVkIGluIHRoZSByZXF1ZXN0VGVtcGxhdGUgcHJvcGVydHkgYW5kIG5vdCBpbiB0aGUgYWRkaXRpb25hbFJlcXVlc3RUZW1wbGF0ZXMgcHJvcGVydHknKTtcbn0pOyJdfQ==
777
+ test('Test CheckApiProps', () => {
778
+ const apiWithKeyProps = {
779
+ handler: {},
780
+ defaultMethodOptions: {
781
+ apiKeyRequired: true
782
+ }
783
+ };
784
+ const apiWithNoKeyProps = {
785
+ handler: {},
786
+ };
787
+ const noErrApp = () => {
788
+ defaults.CheckApiProps({
789
+ apiGatewayProps: apiWithNoKeyProps,
790
+ createUsagePlan: false
791
+ });
792
+ };
793
+ expect(noErrApp).not.toThrowError();
794
+ const app = () => {
795
+ defaults.CheckApiProps({
796
+ apiGatewayProps: apiWithKeyProps,
797
+ createUsagePlan: false
798
+ });
799
+ };
800
+ expect(app).toThrowError('Error - if API key is required, then the Usage plan must be created\n');
801
+ });
802
+ test('Correctly generate a SpecRestApi', () => {
803
+ const stack = new aws_cdk_lib_1.Stack();
804
+ const myApiDefinition = api.ApiDefinition.fromAsset('./test/openapi/apiDefinition.json');
805
+ defaults.CreateSpecRestApi(stack, {
806
+ apiDefinition: myApiDefinition
807
+ });
808
+ const template = assertions_1.Template.fromStack(stack);
809
+ template.resourceCountIs("AWS::ApiGateway::RestApi", 1);
810
+ template.resourceCountIs("AWS::ApiGateway::Deployment", 1);
811
+ template.resourceCountIs("AWS::ApiGateway::Stage", 1);
812
+ template.resourceCountIs("AWS::ApiGateway::UsagePlan", 1);
813
+ template.hasResourceProperties("AWS::ApiGateway::RestApi", {
814
+ BodyS3Location: {
815
+ Bucket: assertions_1.Match.anyValue()
816
+ }
817
+ });
818
+ });
819
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpZ2F0ZXdheS1oZWxwZXIudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFwaWdhdGV3YXktaGVscGVyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOztBQUVILDZDQUFvQztBQUNwQyxpREFBaUQ7QUFDakQsa0RBQWtEO0FBQ2xELDJDQUEyQztBQUMzQyxxQ0FBcUM7QUFDckMsdURBQXlEO0FBRXpELFNBQVMsd0JBQXdCLENBQUMsS0FBWTtJQUM1QyxNQUFNLG1CQUFtQixHQUF5QjtRQUNoRCxPQUFPLEVBQUUsUUFBUSxDQUFDLHFDQUFxQztRQUN2RCxPQUFPLEVBQUUsZUFBZTtRQUN4QixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLFNBQVMsQ0FBQztLQUNuRCxDQUFDO0lBRUYsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBRXJFLE9BQU8sUUFBUSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLEtBQVksRUFBRSxRQUFjLEVBQUUsa0JBQTJCLElBQUk7SUFDakYsTUFBTSxxQkFBcUIsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ2xHLGlDQUFpQztJQUNqQyxNQUFNLGtCQUFrQixHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDOUYsb0NBQW9DO0lBQ3BDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDO1FBQ25ELE9BQU8sRUFBRSxLQUFLO1FBQ2QscUJBQXFCLEVBQUUsTUFBTTtRQUM3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LENBQUMsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsQ0FBQyxlQUFlLENBQUMsNkJBQTZCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0QsUUFBUSxDQUFDLGVBQWUsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RCxRQUFRLENBQUMsZUFBZSxDQUFDLDRCQUE0QixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFELFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQywwQkFBMEIsRUFBRTtRQUN6RCxjQUFjLEVBQUU7WUFDZCxNQUFNLEVBQUUsa0JBQUssQ0FBQyxRQUFRLEVBQUU7U0FDekI7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgYXBpIGZyb20gJ2F3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5JztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGRlZmF1bHRzIGZyb20gJy4uL2luZGV4JztcbmltcG9ydCB7IE1hdGNoLCBUZW1wbGF0ZSB9IGZyb20gJ2F3cy1jZGstbGliL2Fzc2VydGlvbnMnO1xuXG5mdW5jdGlvbiBkZXBsb3lSZWdpb25hbEFwaUdhdGV3YXkoc3RhY2s6IFN0YWNrKSB7XG4gIGNvbnN0IGxhbWJkYUZ1bmN0aW9uUHJvcHM6IGxhbWJkYS5GdW5jdGlvblByb3BzID0ge1xuICAgIHJ1bnRpbWU6IGRlZmF1bHRzLkNPTU1FUkNJQUxfUkVHSU9OX0xBTUJEQV9OT0RFX1JVTlRJTUUsXG4gICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChgJHtfX2Rpcm5hbWV9L2xhbWJkYWApXG4gIH07XG5cbiAgY29uc3QgZm4gPSBkZWZhdWx0cy5kZXBsb3lMYW1iZGFGdW5jdGlvbihzdGFjaywgbGFtYmRhRnVuY3Rpb25Qcm9wcyk7XG5cbiAgcmV0dXJuIGRlZmF1bHRzLlJlZ2lvbmFsTGFtYmRhUmVzdEFwaShzdGFjaywgZm4sIHVuZGVmaW5lZCk7XG59XG5cbmZ1bmN0aW9uIHNldHVwUmVzdEFwaShzdGFjazogU3RhY2ssIGFwaVByb3BzPzogYW55LCBjcmVhdGVVc2FnZVBsYW46IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gIGNvbnN0IGdsb2JhbFJlc3RBcGlSZXNwb25zZSA9IGRlZmF1bHRzLkdsb2JhbFJlc3RBcGkoc3RhY2ssIGFwaVByb3BzLCB1bmRlZmluZWQsIGNyZWF0ZVVzYWdlUGxhbik7XG4gIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheSByZXNvdXJjZVxuICBjb25zdCBhcGlHYXRld2F5UmVzb3VyY2UgPSBnbG9iYWxSZXN0QXBpUmVzcG9uc2UuYXBpLnJvb3QuYWRkUmVzb3VyY2UoJ2FwaS1nYXRld2F5LXJlc291cmNlJyk7XG4gIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheSBJbnRlZ3JhdGlvblxuICBjb25zdCBhcGlHYXRld2F5SW50ZWdyYXRpb24gPSBuZXcgYXBpLkF3c0ludGVncmF0aW9uKHtcbiAgICBzZXJ2aWNlOiBcInNxc1wiLFxuICAgIGludGVncmF0aW9uSHR0cE1ldGhvZDogXCJQT1NUXCIsXG4gICAgb3B0aW9uczoge1xuICAgICAgcGFzc3Rocm91Z2hCZWhhdmlvcjogYXBpLlBhc3N0aHJvdWdoQmVoYXZpb3IuTkVWRVIsXG4gICAgICByZXF1ZXN0UGFyYW1ldGVyczoge1xuICAgICAgICBcImludGVncmF0aW9uLnJlcXVlc3QuaGVhZGVyLkNvbnRlbnQtVHlwZVwiOiBcIidhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXCJcbiAgICAgIH0sXG4gICAgICByZXF1ZXN0VGVtcGxhdGVzOiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCI6IFwiQWN0aW9uPVNlbmRNZXNzYWdlJk1lc3NhZ2VCb2R5PSR1dGlsLnVybEVuY29kZShcXFwiJGlucHV0LmJvZHlcXFwiKSZNZXNzYWdlQXR0cmlidXRlLjEuTmFtZT1xdWVyeVBhcmFtMSZNZXNzYWdlQXR0cmlidXRlLjEuVmFsdWUuU3RyaW5nVmFsdWU9JGlucHV0LnBhcmFtcyhcXFwicXVlcnlfcGFyYW1fMVxcXCIpJk1lc3NhZ2VBdHRyaWJ1dGUuMS5WYWx1ZS5EYXRhVHlwZT1TdHJpbmdcIlxuICAgICAgfSxcbiAgICAgIGludGVncmF0aW9uUmVzcG9uc2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0dXNDb2RlOiBcIjIwMFwiLFxuICAgICAgICAgIHJlc3BvbnNlVGVtcGxhdGVzOiB7XG4gICAgICAgICAgICBcInRleHQvaHRtbFwiOiBcIlN1Y2Nlc3NcIlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHN0YXR1c0NvZGU6IFwiNTAwXCIsXG4gICAgICAgICAgcmVzcG9uc2VUZW1wbGF0ZXM6IHtcbiAgICAgICAgICAgIFwidGV4dC9odG1sXCI6IFwiRXJyb3JcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZWN0aW9uUGF0dGVybjogXCI1MDBcIlxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICBwYXRoOiAnMTExMTIyMjIvdGhpc3F1ZXVlcXVldWVOYW1lJ1xuICB9KTtcbiAgLy8gU2V0dXAgdGhlIEFQSSBHYXRld2F5IG1ldGhvZChzKVxuICBhcGlHYXRld2F5UmVzb3VyY2UuYWRkTWV0aG9kKCdQT1NUJywgYXBpR2F0ZXdheUludGVncmF0aW9uLCB7XG4gICAgcmVxdWVzdFBhcmFtZXRlcnM6IHtcbiAgICAgIFwibWV0aG9kLnJlcXVlc3QucXVlcnlzdHJpbmcucXVlcnlfcGFyYW1fMVwiOiB0cnVlXG4gICAgfSxcbiAgICBtZXRob2RSZXNwb25zZXM6IFtcbiAgICAgIHtcbiAgICAgICAgc3RhdHVzQ29kZTogXCIyMDBcIixcbiAgICAgICAgcmVzcG9uc2VQYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgXCJtZXRob2QucmVzcG9uc2UuaGVhZGVyLkNvbnRlbnQtVHlwZVwiOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHN0YXR1c0NvZGU6IFwiNTAwXCIsXG4gICAgICAgIHJlc3BvbnNlUGFyYW1ldGVyczoge1xuICAgICAgICAgIFwibWV0aG9kLnJlc3BvbnNlLmhlYWRlci5Db250ZW50LVR5cGVcIjogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgfVxuICAgIF1cbiAgfSk7XG59XG5cbnRlc3QoJ1Rlc3Qgb3ZlcnJpZGUgZm9yIFJlZ2lvbmFsQXBpR2F0ZXdheScsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBsYW1iZGFGdW5jdGlvblByb3BzOiBsYW1iZGEuRnVuY3Rpb25Qcm9wcyA9IHtcbiAgICBydW50aW1lOiBkZWZhdWx0cy5DT01NRVJDSUFMX1JFR0lPTl9MQU1CREFfTk9ERV9SVU5USU1FLFxuICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoYCR7X19kaXJuYW1lfS9sYW1iZGFgKVxuICB9O1xuXG4gIGNvbnN0IGZuID0gZGVmYXVsdHMuZGVwbG95TGFtYmRhRnVuY3Rpb24oc3RhY2ssIGxhbWJkYUZ1bmN0aW9uUHJvcHMpO1xuXG4gIGRlZmF1bHRzLlJlZ2lvbmFsTGFtYmRhUmVzdEFwaShzdGFjaywgZm4sIHtcbiAgICBoYW5kbGVyOiBmbixcbiAgICBkZXNjcmlwdGlvbjogJ0hlbGxvIFdvcmxkJ1xuICB9KTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlKCdBV1M6OkFwaUdhdGV3YXk6OlJlc3RBcGknLCB7XG4gICAgVHlwZTogXCJBV1M6OkFwaUdhdGV3YXk6OlJlc3RBcGlcIixcbiAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICBEZXNjcmlwdGlvbjogXCJIZWxsbyBXb3JsZFwiLFxuICAgICAgRW5kcG9pbnRDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIFR5cGVzOiBbXG4gICAgICAgICAgXCJSRUdJT05BTFwiXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBOYW1lOiBcIkxhbWJkYVJlc3RBcGlcIlxuICAgIH1cbiAgfSk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlKFwiQVdTOjpBcGlHYXRld2F5OjpVc2FnZVBsYW5cIiwge30pO1xufSk7XG5cbnRlc3QoJ1Rlc3Qgb3ZlcnJpZGUgZm9yIEdsb2JhbEFwaUdhdGV3YXknLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3QgbGFtYmRhRnVuY3Rpb25Qcm9wczogbGFtYmRhLkZ1bmN0aW9uUHJvcHMgPSB7XG4gICAgcnVudGltZTogZGVmYXVsdHMuQ09NTUVSQ0lBTF9SRUdJT05fTEFNQkRBX05PREVfUlVOVElNRSxcbiAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXG4gICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KGAke19fZGlybmFtZX0vbGFtYmRhYClcbiAgfTtcblxuICBjb25zdCBmbiA9IGRlZmF1bHRzLmRlcGxveUxhbWJkYUZ1bmN0aW9uKHN0YWNrLCBsYW1iZGFGdW5jdGlvblByb3BzKTtcblxuICBkZWZhdWx0cy5HbG9iYWxMYW1iZGFSZXN0QXBpKHN0YWNrLCBmbiwge1xuICAgIGhhbmRsZXI6IGZuLFxuICAgIHJlc3RBcGlOYW1lOiBcIkhlbGxvV29ybGRcIlxuICB9KTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlKCdBV1M6OkFwaUdhdGV3YXk6OlJlc3RBcGknLCB7XG4gICAgVHlwZTogXCJBV1M6OkFwaUdhdGV3YXk6OlJlc3RBcGlcIixcbiAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICBFbmRwb2ludENvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgVHlwZXM6IFtcbiAgICAgICAgICBcIkVER0VcIlxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgTmFtZTogXCJIZWxsb1dvcmxkXCJcbiAgICB9XG4gIH0pO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZShcIkFXUzo6QXBpR2F0ZXdheTo6VXNhZ2VQbGFuXCIsIHt9KTtcbn0pO1xuXG50ZXN0KCdUZXN0IEFwaUdhdGV3YXk6OkFjY291bnQgcmVzb3VyY2UgZm9yIFJlZ2lvbmFsQXBpR2F0ZXdheScsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgbGFtYmRhRnVuY3Rpb25Qcm9wczogbGFtYmRhLkZ1bmN0aW9uUHJvcHMgPSB7XG4gICAgcnVudGltZTogZGVmYXVsdHMuQ09NTUVSQ0lBTF9SRUdJT05fTEFNQkRBX05PREVfUlVOVElNRSxcbiAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXG4gICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KGAke19fZGlybmFtZX0vbGFtYmRhYClcbiAgfTtcblxuICBjb25zdCBmbiA9IGRlZmF1bHRzLmRlcGxveUxhbWJkYUZ1bmN0aW9uKHN0YWNrLCBsYW1iZGFGdW5jdGlvblByb3BzKTtcblxuICBkZWZhdWx0cy5SZWdpb25hbExhbWJkYVJlc3RBcGkoc3RhY2ssIGZuKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpBcGlHYXRld2F5OjpBY2NvdW50Jywge1xuICAgIENsb3VkV2F0Y2hSb2xlQXJuOiB7XG4gICAgICBcIkZuOjpHZXRBdHRcIjogW1xuICAgICAgICBcIkxhbWJkYVJlc3RBcGlDbG91ZFdhdGNoUm9sZUYzMzlENEU2XCIsXG4gICAgICAgIFwiQXJuXCJcbiAgICAgIF1cbiAgICB9XG4gIH0pO1xufSk7XG5cbnRlc3QoJ1Rlc3QgQXBpR2F0ZXdheTo6QWNjb3VudCByZXNvdXJjZSBmb3IgR2xvYmFsQXBpR2F0ZXdheScsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgbGFtYmRhRnVuY3Rpb25Qcm9wczogbGFtYmRhLkZ1bmN0aW9uUHJvcHMgPSB7XG4gICAgcnVudGltZTogZGVmYXVsdHMuQ09NTUVSQ0lBTF9SRUdJT05fTEFNQkRBX05PREVfUlVOVElNRSxcbiAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXG4gICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KGAke19fZGlybmFtZX0vbGFtYmRhYClcbiAgfTtcblxuICBjb25zdCBmbiA9IGRlZmF1bHRzLmRlcGxveUxhbWJkYUZ1bmN0aW9uKHN0YWNrLCBsYW1iZGFGdW5jdGlvblByb3BzKTtcblxuICBkZWZhdWx0cy5HbG9iYWxMYW1iZGFSZXN0QXBpKHN0YWNrLCBmbik7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6QXBpR2F0ZXdheTo6QWNjb3VudCcsIHtcbiAgICBDbG91ZFdhdGNoUm9sZUFybjoge1xuICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgXCJMYW1iZGFSZXN0QXBpQ2xvdWRXYXRjaFJvbGVGMzM5RDRFNlwiLFxuICAgICAgICBcIkFyblwiXG4gICAgICBdXG4gICAgfVxuICB9KTtcbn0pO1xuXG50ZXN0KCdUZXN0IGRlZmF1bHQgUmVzdEFwaSBkZXBsb3ltZW50IHcvIEFwaUdhdGV3YXlQcm9wcycsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgc2V0dXBSZXN0QXBpKHN0YWNrLCB7XG4gICAgcmVzdEFwaU5hbWU6IFwiY3VzdG9tUmVzdEFwaVwiXG4gIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkFwaUdhdGV3YXk6OlJlc3RBcGknLCB7XG4gICAgTmFtZTogXCJjdXN0b21SZXN0QXBpXCJcbiAgfSk7XG59KTtcblxudGVzdCgnVGVzdCBzdXBwcmVzcyBVc2FnZVBsYW4nLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIHNldHVwUmVzdEFwaShzdGFjaywge1xuICAgIHJlc3RBcGlOYW1lOiBcImN1c3RvbVJlc3RBcGlcIlxuICB9LFxuICAgIGZhbHNlKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpBcGlHYXRld2F5OjpSZXN0QXBpJywge1xuICAgIE5hbWU6IFwiY3VzdG9tUmVzdEFwaVwiXG4gIH0pO1xuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoXCJBV1M6OkFwaUdhdGV3YXk6OlVzYWdlUGxhblwiLCAwKTtcbn0pO1xuXG50ZXN0KCdUZXN0IGRlZmF1bHQgUmVzdEFwaSBkZXBsb3ltZW50IHcvIGNsb3VkV2F0Y2hSb2xlIHNldCB0byBmYWxzZScsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgc2V0dXBSZXN0QXBpKHN0YWNrLCB7XG4gICAgY2xvdWRXYXRjaFJvbGU6IGZhbHNlXG4gIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKFwiQVdTOjpBcGlHYXRld2F5OjpBY2NvdW50XCIsIDApO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZShcIkFXUzo6QXBpR2F0ZXdheTo6VXNhZ2VQbGFuXCIsIHt9KTtcbn0pO1xuXG50ZXN0KCdUZXN0IGRlZmF1bHQgUmVzdEFwaSBkZXBsb3ltZW50IGZvciBDbG91ZHdhdGNoIGxvZ2dyb3VwJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBkZXBsb3lSZWdpb25hbEFwaUdhdGV3YXkoc3RhY2spO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2UoJ0FXUzo6TG9nczo6TG9nR3JvdXAnLCB7XG4gICAgVXBkYXRlUmVwbGFjZVBvbGljeTogXCJSZXRhaW5cIixcbiAgICBEZWxldGlvblBvbGljeTogXCJSZXRhaW5cIlxuICB9KTtcblxuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6QXBpR2F0ZXdheTo6U3RhZ2UnLCB7XG4gICAgQWNjZXNzTG9nU2V0dGluZzoge1xuICAgICAgRGVzdGluYXRpb25Bcm46IHtcbiAgICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgICBcIkFwaUFjY2Vzc0xvZ0dyb3VwQ0VBNzA3ODhcIixcbiAgICAgICAgICBcIkFyblwiXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBGb3JtYXQ6IFwie1xcXCJyZXF1ZXN0SWRcXFwiOlxcXCIkY29udGV4dC5yZXF1ZXN0SWRcXFwiLFxcXCJpcFxcXCI6XFxcIiRjb250ZXh0LmlkZW50aXR5LnNvdXJjZUlwXFxcIixcXFwidXNlclxcXCI6XFxcIiRjb250ZXh0LmlkZW50aXR5LnVzZXJcXFwiLFxcXCJjYWxsZXJcXFwiOlxcXCIkY29udGV4dC5pZGVudGl0eS5jYWxsZXJcXFwiLFxcXCJyZXF1ZXN0VGltZVxcXCI6XFxcIiRjb250ZXh0LnJlcXVlc3RUaW1lXFxcIixcXFwiaHR0cE1ldGhvZFxcXCI6XFxcIiRjb250ZXh0Lmh0dHBNZXRob2RcXFwiLFxcXCJyZXNvdXJjZVBhdGhcXFwiOlxcXCIkY29udGV4dC5yZXNvdXJjZVBhdGhcXFwiLFxcXCJzdGF0dXNcXFwiOlxcXCIkY29udGV4dC5zdGF0dXNcXFwiLFxcXCJwcm90b2NvbFxcXCI6XFxcIiRjb250ZXh0LnByb3RvY29sXFxcIixcXFwicmVzcG9uc2VMZW5ndGhcXFwiOlxcXCIkY29udGV4dC5yZXNwb25zZUxlbmd0aFxcXCJ9XCIsXG4gICAgfSxcbiAgfSk7XG59KTtcblxudGVzdCgnVGVzdCBhZGRNZXRob2RUb0FwaVJlc291cmNlIHdpdGggYWN0aW9uJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBnbG9iYWxSZXN0QXBpUmVzcG9uc2UgPSBkZWZhdWx0cy5HbG9iYWxSZXN0QXBpKHN0YWNrKTtcblxuICAvLyBTZXR1cCB0aGUgQVBJIEdhdGV3YXkgcm9sZVxuICBjb25zdCBhcGlHYXRld2F5Um9sZSA9IG5ldyBpYW0uUm9sZShzdGFjaywgJ2FwaS1nYXRld2F5LXJvbGUnLCB7XG4gICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2FwaWdhdGV3YXkuYW1hem9uYXdzLmNvbScpXG4gIH0pO1xuXG4gIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheSByZXNvdXJjZVxuICBjb25zdCBhcGlHYXRld2F5UmVzb3VyY2UgPSBnbG9iYWxSZXN0QXBpUmVzcG9uc2UuYXBpLnJvb3QuYWRkUmVzb3VyY2UoJ2FwaS1nYXRld2F5LXJlc291cmNlJyk7XG4gIGNvbnN0IGdldFJlcXVlc3RUZW1wbGF0ZSA9IFwie31cIjtcblxuICAvLyBBZGQgTWV0aG9kXG4gIGRlZmF1bHRzLmFkZFByb3h5TWV0aG9kVG9BcGlSZXNvdXJjZSh7XG4gICAgYWN0aW9uOiBcIlF1ZXJ5XCIsXG4gICAgc2VydmljZTogXCJkeW5hbW9kYlwiLFxuICAgIGFwaVJlc291cmNlOiBhcGlHYXRld2F5UmVzb3VyY2UsXG4gICAgYXBpR2F0ZXdheVJvbGUsXG4gICAgYXBpTWV0aG9kOiBcIkdFVFwiLFxuICAgIHJlcXVlc3RUZW1wbGF0ZTogZ2V0UmVxdWVzdFRlbXBsYXRlXG4gIH0pO1xuXG4gIC8vIEFkZCBNZXRob2RcbiAgZGVmYXVsdHMuYWRkUHJveHlNZXRob2RUb0FwaVJlc291cmNlKHtcbiAgICBwYXRoOiAnMTExMTIyMjIvdGhpc3F1ZXVlcXVldWVOYW1lJyxcbiAgICBzZXJ2aWNlOiBcInNxc1wiLFxuICAgIGFwaVJlc291cmNlOiBhcGlHYXRld2F5UmVzb3VyY2UsXG4gICAgYXBpR2F0ZXdheVJvbGUsXG4gICAgYXBpTWV0aG9kOiBcIlBVVFwiLFxuICAgIHJlcXVlc3RUZW1wbGF0ZTogZ2V0UmVxdWVzdFRlbXBsYXRlXG4gIH0pO1xuXG4gIC8vIEVycm9yIHNjZW5hcmlvOiBtaXNzaW5nIGFjdGlvbiBhbmQgcGF0aFxuICB0cnkge1xuICAgIGRlZmF1bHRzLmFkZFByb3h5TWV0aG9kVG9BcGlSZXNvdXJjZSh7XG4gICAgICBzZXJ2aWNlOiBcInNxc1wiLFxuICAgICAgYXBpUmVzb3VyY2U6IGFwaUdhdGV3YXlSZXNvdXJjZSxcbiAgICAgIGFwaUdhdGV3YXlSb2xlLFxuICAgICAgYXBpTWV0aG9kOiBcIkRFTEVURVwiLFxuICAgICAgcmVxdWVzdFRlbXBsYXRlOiBnZXRSZXF1ZXN0VGVtcGxhdGVcbiAgICB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGV4cGVjdChlKS50b0JlSW5zdGFuY2VPZihFcnJvcik7XG4gIH1cbn0pO1xuXG50ZXN0KCdUZXN0IGRlZmF1bHQgUmVzdEFwaSB3LyByZXF1ZXN0IG1vZGVsIGFuZCB2YWxpZGF0b3InLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IGdsb2JhbFJlc3RBcGlSZXNwb25zZSA9IGRlZmF1bHRzLkdsb2JhbFJlc3RBcGkoc3RhY2spO1xuXG4gIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheSByb2xlXG4gIGNvbnN0IGFwaUdhdGV3YXlSb2xlID0gbmV3IGlhbS5Sb2xlKHN0YWNrLCAnYXBpLWdhdGV3YXktcm9sZScsIHtcbiAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnYXBpZ2F0ZXdheS5hbWF6b25hd3MuY29tJylcbiAgfSk7XG5cbiAgLy8gU2V0dXAgdGhlIEFQSSBHYXRld2F5IHJlc291cmNlXG4gIGNvbnN0IGFwaUdhdGV3YXlSZXNvdXJjZSA9IGdsb2JhbFJlc3RBcGlSZXNwb25zZS5hcGkucm9vdC5hZGRSZXNvdXJjZSgnYXBpLWdhdGV3YXktcmVzb3VyY2UnKTtcblxuICBjb25zdCB2YWxpZGF0b3IgPSBnbG9iYWxSZXN0QXBpUmVzcG9uc2UuYXBpLmFkZFJlcXVlc3RWYWxpZGF0b3IoJ2RlZmF1bHQtdmFsaWRhdG9yJywge1xuICAgIHJlcXVlc3RWYWxpZGF0b3JOYW1lOiAnZGVmYXVsdC12YWxpZGF0b3InLFxuICAgIHZhbGlkYXRlUmVxdWVzdEJvZHk6IHRydWVcbiAgfSk7XG5cbiAgZGVmYXVsdHMuYWRkUHJveHlNZXRob2RUb0FwaVJlc291cmNlKHtcbiAgICBzZXJ2aWNlOiBcImtpbmVzaXNcIixcbiAgICBhY3Rpb246IFwiUHV0UmVjb3JkXCIsXG4gICAgYXBpR2F0ZXdheVJvbGUsXG4gICAgYXBpTWV0aG9kOiAnUE9TVCcsXG4gICAgYXBpUmVzb3VyY2U6IGFwaUdhdGV3YXlSZXNvdXJjZSxcbiAgICByZXF1ZXN0VGVtcGxhdGU6IFwie31cIixcbiAgICBjb250ZW50VHlwZTogXCIneC1hbXotanNvbi0xLjEnXCIsXG4gICAgbWV0aG9kT3B0aW9uczoge1xuICAgICAgcmVxdWVzdFZhbGlkYXRvcjogdmFsaWRhdG9yLFxuICAgICAgcmVxdWVzdE1vZGVsczogeyBcImFwcGxpY2F0aW9uL2pzb25cIjogYXBpLk1vZGVsLkVNUFRZX01PREVMIH1cbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkFwaUdhdGV3YXk6OlJlcXVlc3RWYWxpZGF0b3InLCB7XG4gICAgTmFtZTogXCJkZWZhdWx0LXZhbGlkYXRvclwiLFxuICAgIFZhbGlkYXRlUmVxdWVzdEJvZHk6IHRydWVcbiAgfSk7XG5cbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkFwaUdhdGV3YXk6Ok1ldGhvZCcsIHtcbiAgICBSZXF1ZXN0TW9kZWxzOiB7IFwiYXBwbGljYXRpb24vanNvblwiOiBcIkVtcHR5XCIgfVxuICB9KTtcbn0pO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGVzdCBmb3IgUmVnaW9uYWwgQXBpR2F0ZXdheSBDcmVhdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnRlc3QoJ1Rlc3QgZm9yIFJlZ2lvbmFsUmVzdEFwaUdhdGV3YXknLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3QgcmVnaW9uYWxSZXN0QXBpUmVzcG9uc2UgPSBkZWZhdWx0cy5SZWdpb25hbFJlc3RBcGkoc3RhY2ssIHtcbiAgICByZXN0QXBpTmFtZTogXCJIZWxsb1dvcmxkLVJlZ2lvbmFsQXBpXCJcbiAgfSk7XG4gIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheSByb2xlXG4gIGNvbnN0IGFwaUdhdGV3YXlSb2xlID0gbmV3IGlhbS5Sb2xlKHN0YWNrLCAnYXBpLWdhdGV3YXktcm9sZScsIHtcbiAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnYXBpZ2F0ZXdheS5hbWF6b25hd3MuY29tJylcbiAgfSk7XG5cbiAgLy8gU2V0dXAgdGhlIEFQSSBHYXRld2F5IHJlc291cmNlXG4gIGNvbnN0IGFwaUdhdGV3YXlSZXNvdXJjZSA9IHJlZ2lvbmFsUmVzdEFwaVJlc3BvbnNlLmFwaS5yb290LmFkZFJlc291cmNlKCdoZWxsbycpO1xuXG4gIGRlZmF1bHRzLmFkZFByb3h5TWV0aG9kVG9BcGlSZXNvdXJjZShcbiAgICB7XG4gICAgICBzZXJ2aWNlOiAnaW90ZGF0YScsXG4gICAgICBwYXRoOiAnaGVsbG8nLFxuICAgICAgYXBpR2F0ZXdheVJvbGUsXG4gICAgICBhcGlNZXRob2Q6ICdQT1NUJyxcbiAgICAgIGFwaVJlc291cmNlOiBhcGlHYXRld2F5UmVzb3VyY2UsXG4gICAgICByZXF1ZXN0VGVtcGxhdGU6IFwiJGlucHV0Lmpzb24oJyQnKVwiXG4gICAgfSk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZSgnQVdTOjpBcGlHYXRld2F5OjpSZXN0QXBpJywge1xuICAgIFR5cGU6IFwiQVdTOjpBcGlHYXRld2F5OjpSZXN0QXBpXCIsXG4gICAgUHJvcGVydGllczoge1xuICAgICAgRW5kcG9pbnRDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIFR5cGVzOiBbXG4gICAgICAgICAgXCJSRUdJT05BTFwiXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBOYW1lOiBcIkhlbGxvV29ybGQtUmVnaW9uYWxBcGlcIlxuICAgIH1cbiAgfSk7XG59KTtcblxudGVzdCgnVGVzdCBzdXBwb3Jlc3MgdXNhZ2UgcGxhbiBpbiBSZWdpb25hbFJlc3RBcGlHYXRld2F5JywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IHJlZ2lvbmFsUmVzdEFwaVJlc3BvbnNlID0gZGVmYXVsdHMuUmVnaW9uYWxSZXN0QXBpKHN0YWNrLCB7XG4gICAgcmVzdEFwaU5hbWU6IFwiSGVsbG9Xb3JsZC1SZWdpb25hbEFwaVwiXG4gIH0sIHVuZGVmaW5lZCwgZmFsc2UpO1xuICAvLyBTZXR1cCB0aGUgQVBJIEdhdGV3YXkgcm9sZVxuICBjb25zdCBhcGlHYXRld2F5Um9sZSA9IG5ldyBpYW0uUm9sZShzdGFjaywgJ2FwaS1nYXRld2F5LXJvbGUnLCB7XG4gICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2FwaWdhdGV3YXkuYW1hem9uYXdzLmNvbScpXG4gIH0pO1xuXG4gIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheSByZXNvdXJjZVxuICBjb25zdCBhcGlHYXRld2F5UmVzb3VyY2UgPSByZWdpb25hbFJlc3RBcGlSZXNwb25zZS5hcGkucm9vdC5hZGRSZXNvdXJjZSgnaGVsbG8nKTtcblxuICBkZWZhdWx0cy5hZGRQcm94eU1ldGhvZFRvQXBpUmVzb3VyY2UoXG4gICAge1xuICAgICAgc2VydmljZTogJ2lvdGRhdGEnLFxuICAgICAgcGF0aDogJ2hlbGxvJyxcbiAgICAgIGFwaUdhdGV3YXlSb2xlLFxuICAgICAgYXBpTWV0aG9kOiAnUE9TVCcsXG4gICAgICBhcGlSZXNvdXJjZTogYXBpR2F0ZXdheVJlc291cmNlLFxuICAgICAgcmVxdWVzdFRlbXBsYXRlOiBcIiRpbnB1dC5qc29uKCckJylcIlxuICAgIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKFwiQVdTOjpBcGlHYXRld2F5OjpVc2FnZVBsYW5cIiwgMCk7XG59KTtcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUZXN0cyBmb3IgZXhjZXB0aW9uIHdoaWxlIG92ZXJyaWRpbmcgcmVzdEFwaVByb3BzIHVzaW5nIGVuZFBvaW50VHlwZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG50ZXN0KCdUZXN0IGZvciBFeGNlcHRpb24gd2hpbGUgb3ZlcnJpZGluZyByZXN0QXBpUHJvcHMgdXNpbmcgZW5kUG9pbnRUeXBlcycsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgdHJ5IHtcbiAgICBkZWZhdWx0cy5SZWdpb25hbFJlc3RBcGkoc3RhY2ssIHtcbiAgICAgIGVuZHBvaW50VHlwZXM6IFthcGkuRW5kcG9pbnRUeXBlLlJFR0lPTkFMXVxuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZXhwZWN0KGUpLnRvQmVJbnN0YW5jZU9mKEVycm9yKTtcbiAgfVxufSk7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUZXN0cyBmb3IgZXhjZXB0aW9uIHdoaWxlIG92ZXJyaWRpbmcgTGFtYmRhUmVzdEFwaVByb3BzIHVzaW5nIGVuZFBvaW50VHlwZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG50ZXN0KCdUZXN0IGZvciBFeGNlcHRpb24gd2hpbGUgb3ZlcnJpZGluZyBMYW1iZGFSZXN0QXBpUHJvcHMgdXNpbmcgZW5kUG9pbnRUeXBlcycsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgbGFtYmRhRnVuY3Rpb25Qcm9wczogbGFtYmRhLkZ1bmN0aW9uUHJvcHMgPSB7XG4gICAgcnVudGltZTogZGVmYXVsdHMuQ09NTUVSQ0lBTF9SRUdJT05fTEFNQkRBX05PREVfUlVOVElNRSxcbiAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXG4gICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KGAke19fZGlybmFtZX0vbGFtYmRhYClcbiAgfTtcblxuICBjb25zdCBmbiA9IGRlZmF1bHRzLmRlcGxveUxhbWJkYUZ1bmN0aW9uKHN0YWNrLCBsYW1iZGFGdW5jdGlvblByb3BzKTtcblxuICB0cnkge1xuICAgIGRlZmF1bHRzLkdsb2JhbExhbWJkYVJlc3RBcGkoc3RhY2ssIGZuLCB7XG4gICAgICBoYW5kbGVyOiBmbixcbiAgICAgIGVuZHBvaW50VHlwZXM6IFthcGkuRW5kcG9pbnRUeXBlLlJFR0lPTkFMXVxuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZXhwZWN0KGUpLnRvQmVJbnN0YW5jZU9mKEVycm9yKTtcbiAgfVxufSk7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUZXN0IGZvciBJbnRlZ3JhdGlvbiBSZXF1ZXN0IFByb3BzIE92ZXJyaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudGVzdCgnVGVzdCBmb3IgSW50ZWdyYXRpb24gUmVxdWVzdCBQcm9wcyBPdmVycmlkZScsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCByZWdpb25hbFJlc3RBcGlSZXNwb25zZSA9IGRlZmF1bHRzLlJlZ2lvbmFsUmVzdEFwaShzdGFjayk7XG5cbiAgLy8gU2V0dXAgdGhlIEFQSSBHYXRld2F5IHJvbGVcbiAgY29uc3QgYXBpR2F0ZXdheVJvbGUgPSBuZXcgaWFtLlJvbGUoc3RhY2ssICdhcGktZ2F0ZXdheS1yb2xlJywge1xuICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdhcGlnYXRld2F5LmFtYXpvbmF3cy5jb20nKVxuICB9KTtcblxuICAvLyBTZXR1cCB0aGUgQVBJIEdhdGV3YXkgcmVzb3VyY2VcbiAgY29uc3QgYXBpR2F0ZXdheVJlc291cmNlID0gcmVnaW9uYWxSZXN0QXBpUmVzcG9uc2UuYXBpLnJvb3QuYWRkUmVzb3VyY2UoJ2hlbGxvJyk7XG4gIGNvbnN0IGludGVnUmVxUGFyYW1zID0geyAnaW50ZWdyYXRpb24ucmVxdWVzdC5wYXRoLnRvcGljLWxldmVsLTEnOiBcIidtZXRob2QucmVxdWVzdC5wYXRoLnRvcGljLWxldmVsLTEnXCIgfTtcbiAgY29uc3QgaW50ZWdSZXNwOiBhcGkuSW50ZWdyYXRpb25SZXNwb25zZVtdID0gW1xuICAgIHtcbiAgICAgIHN0YXR1c0NvZGU6IFwiMjAwXCIsXG4gICAgICBzZWxlY3Rpb25QYXR0ZXJuOiBcIjJcXFxcZHsyfVwiLFxuICAgICAgcmVzcG9uc2VUZW1wbGF0ZXM6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IFwiJGlucHV0Lmpzb24oJyQnKVwiXG4gICAgICB9XG4gICAgfV07XG4gIC8vIE92ZXJyaWRlIHRoZSBkZWZhdWx0IEludGVncmF0aW9uIFJlcXVlc3QgUHJvcHNcbiAgY29uc3QgaW50ZWdyYXRpb25SZXFQcm9wcyA9IHtcbiAgICBzdWJkb21haW46ICdhYmNkZWZnaDEyMzQ1JyxcbiAgICBvcHRpb25zOiB7XG4gICAgICByZXF1ZXN0UGFyYW1ldGVyczogaW50ZWdSZXFQYXJhbXMsXG4gICAgICBpbnRlZ3JhdGlvblJlc3BvbnNlczogaW50ZWdSZXNwLFxuICAgICAgcGFzc3Rocm91Z2hCZWhhdmlvcjogYXBpLlBhc3N0aHJvdWdoQmVoYXZpb3IuV0hFTl9OT19NQVRDSFxuICAgIH1cbiAgfTtcbiAgZGVmYXVsdHMuYWRkUHJveHlNZXRob2RUb0FwaVJlc291cmNlKFxuICAgIHtcbiAgICAgIHNlcnZpY2U6ICdpb3RkYXRhJyxcbiAgICAgIHBhdGg6ICdoZWxsbycsXG4gICAgICBhcGlHYXRld2F5Um9sZSxcbiAgICAgIGFwaU1ldGhvZDogJ1BPU1QnLFxuICAgICAgYXBpUmVzb3VyY2U6IGFwaUdhdGV3YXlSZXNvdXJjZSxcbiAgICAgIHJlcXVlc3RUZW1wbGF0ZTogXCIkaW5wdXQuanNvbignJCcpXCIsXG4gICAgICBhd3NJbnRlZ3JhdGlvblByb3BzOiBpbnRlZ3JhdGlvblJlcVByb3BzXG4gICAgfSk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OkFwaUdhdGV3YXk6Ok1ldGhvZFwiLCB7XG4gICAgSHR0cE1ldGhvZDogXCJQT1NUXCIsXG4gICAgQXV0aG9yaXphdGlvblR5cGU6IFwiQVdTX0lBTVwiLFxuICAgIEludGVncmF0aW9uOiB7XG4gICAgICBJbnRlZ3JhdGlvbkh0dHBNZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgSW50ZWdyYXRpb25SZXNwb25zZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIFJlc3BvbnNlVGVtcGxhdGVzOiB7XG4gICAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogXCIkaW5wdXQuanNvbignJCcpXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFNlbGVjdGlvblBhdHRlcm46IFwiMlxcXFxkezJ9XCIsXG4gICAgICAgICAgU3RhdHVzQ29kZTogXCIyMDBcIlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgUGFzc3Rocm91Z2hCZWhhdmlvcjogXCJXSEVOX05PX01BVENIXCIsXG4gICAgICBSZXF1ZXN0UGFyYW1ldGVyczoge1xuICAgICAgICBcImludGVncmF0aW9uLnJlcXVlc3QuaGVhZGVyLkNvbnRlbnQtVHlwZVwiOiBcIidhcHBsaWNhdGlvbi9qc29uJ1wiLFxuICAgICAgICBcImludGVncmF0aW9uLnJlcXVlc3QucGF0aC50b3BpYy1sZXZlbC0xXCI6IFwiJ21ldGhvZC5yZXF1ZXN0LnBhdGgudG9waWMtbGV2ZWwtMSdcIixcbiAgICAgIH0sXG4gICAgICBSZXF1ZXN0VGVtcGxhdGVzOiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBcIiRpbnB1dC5qc29uKCckJylcIlxuICAgICAgfSxcbiAgICAgIFR5cGU6IFwiQVdTXCIsXG4gICAgICBVcmk6IHtcbiAgICAgICAgXCJGbjo6Sm9pblwiOiBbXG4gICAgICAgICAgXCJcIixcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcImFybjpcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgUmVmOiBcIkFXUzo6UGFydGl0aW9uXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIjphcGlnYXRld2F5OlwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBSZWY6IFwiQVdTOjpSZWdpb25cIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGA6YWJjZGVmZ2gxMjM0NS5pb3RkYXRhOnBhdGgvaGVsbG9gXG4gICAgICAgICAgXVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfSxcbiAgICBNZXRob2RSZXNwb25zZXM6IFtcbiAgICAgIHtcbiAgICAgICAgU3RhdHVzQ29kZTogXCIyMDBcIixcbiAgICAgICAgUmVzcG9uc2VQYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgXCJtZXRob2QucmVzcG9uc2UuaGVhZGVyLkNvbnRlbnQtVHlwZVwiOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFN0YXR1c0NvZGU6IFwiNTAwXCIsXG4gICAgICAgIFJlc3BvbnNlUGFyYW1ldGVyczoge1xuICAgICAgICAgIFwibWV0aG9kLnJlc3BvbnNlLmhlYWRlci5Db250ZW50LVR5cGVcIjogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9KTtcbn0pO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGVzdCBmb3IgTWV0aG9kIE9wdGlvbnMgT3ZlcnJpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG50ZXN0KCdUZXN0IGZvciBNZXRob2QgUmVxdWVzdCBQcm9wcyBPdmVycmlkZScsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBnbG9iYWxSZXN0QXBpUmVzcG9uc2UgPSBkZWZhdWx0cy5HbG9iYWxSZXN0QXBpKHN0YWNrKTtcblxuICAvLyBTZXR1cCB0aGUgQVBJIEdhdGV3YXkgcm9sZVxuICBjb25zdCBhcGlHYXRld2F5Um9sZSA9IG5ldyBpYW0uUm9sZShzdGFjaywgJ2FwaS1nYXRld2F5LXJvbGUnLCB7XG4gICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2FwaWdhdGV3YXkuYW1hem9uYXdzLmNvbScpXG4gIH0pO1xuXG4gIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheSByZXNvdXJjZVxuICBjb25zdCBhcGlHYXRld2F5UmVzb3VyY2UgPSBnbG9iYWxSZXN0QXBpUmVzcG9uc2UuYXBpLnJvb3QuYWRkUmVzb3VyY2UoJ2hlbGxvJyk7XG4gIGNvbnN0IG1ldGhvZFJlcVBhcmFtcyA9IHsgJ21ldGhvZC5yZXF1ZXN0LnBhdGgudG9waWMtbGV2ZWwtMSc6IHRydWUgfTtcbiAgY29uc3QgbWV0aG9kUmVzcDogYXBpLk1ldGhvZFJlc3BvbnNlW10gPSBbXG4gICAge1xuICAgICAgc3RhdHVzQ29kZTogXCI0MDNcIlxuICAgIH1cbiAgXTtcbiAgY29uc3QgcmVzb3VyY2VNZXRob2RPcHRpb25zID0ge1xuICAgIHJlcXVlc3RQYXJhbWV0ZXJzOiBtZXRob2RSZXFQYXJhbXMsXG4gICAgbWV0aG9kUmVzcG9uc2VzOiBtZXRob2RSZXNwLFxuICB9O1xuICBkZWZhdWx0cy5hZGRQcm94eU1ldGhvZFRvQXBpUmVzb3VyY2UoXG4gICAge1xuICAgICAgc2VydmljZTogJ2lvdGRhdGEnLFxuICAgICAgcGF0aDogJ2hlbGxvJyxcbiAgICAgIGFwaUdhdGV3YXlSb2xlLFxuICAgICAgYXBpTWV0aG9kOiAnUE9TVCcsXG4gICAgICBhcGlSZXNvdXJjZTogYXBpR2F0ZXdheVJlc291cmNlLFxuICAgICAgcmVxdWVzdFRlbXBsYXRlOiBcIiRpbnB1dC5qc29uKCckJylcIixcbiAgICAgIG1ldGhvZE9wdGlvbnM6IHJlc291cmNlTWV0aG9kT3B0aW9uc1xuICAgIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpBcGlHYXRld2F5OjpNZXRob2RcIiwge1xuICAgIEh0dHBNZXRob2Q6IFwiUE9TVFwiLFxuICAgIEF1dGhvcml6YXRpb25UeXBlOiBcIkFXU19JQU1cIixcbiAgICBJbnRlZ3JhdGlvbjoge1xuICAgICAgSW50ZWdyYXRpb25IdHRwTWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIEludGVncmF0aW9uUmVzcG9uc2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBTdGF0dXNDb2RlOiBcIjIwMFwiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBTdGF0dXNDb2RlOiBcIjUwMFwiLFxuICAgICAgICAgIFJlc3BvbnNlVGVtcGxhdGVzOiB7XG4gICAgICAgICAgICBcInRleHQvaHRtbFwiOiBcIkVycm9yXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFNlbGVjdGlvblBhdHRlcm46IFwiNTAwXCJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIFBhc3N0aHJvdWdoQmVoYXZpb3I6IFwiTkVWRVJcIixcbiAgICAgIFJlcXVlc3RQYXJhbWV0ZXJzOiB7XG4gICAgICAgIFwiaW50ZWdyYXRpb24ucmVxdWVzdC5oZWFkZXIuQ29udGVudC1UeXBlXCI6IFwiJ2FwcGxpY2F0aW9uL2pzb24nXCIsXG4gICAgICB9LFxuICAgICAgUmVxdWVzdFRlbXBsYXRlczoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogXCIkaW5wdXQuanNvbignJCcpXCJcbiAgICAgIH0sXG4gICAgICBUeXBlOiBcIkFXU1wiLFxuICAgICAgVXJpOiB7XG4gICAgICAgIFwiRm46OkpvaW5cIjogW1xuICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJhcm46XCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFJlZjogXCJBV1M6OlBhcnRpdGlvblwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCI6YXBpZ2F0ZXdheTpcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgUmVmOiBcIkFXUzo6UmVnaW9uXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBgOmlvdGRhdGE6cGF0aC9oZWxsb2BcbiAgICAgICAgICBdXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9LFxuICAgIE1ldGhvZFJlc3BvbnNlczogW1xuICAgICAge1xuICAgICAgICBTdGF0dXNDb2RlOiBcIjQwM1wiXG4gICAgICB9XG4gICAgXSxcbiAgICBSZXF1ZXN0UGFyYW1ldGVyczoge1xuICAgICAgXCJtZXRob2QucmVxdWVzdC5wYXRoLnRvcGljLWxldmVsLTFcIjogdHJ1ZVxuICAgIH1cbiAgfSk7XG59KTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRlc3QgZm9yIEFwaUtleSBDcmVhdGlvbiBvZiBSZXN0QXBpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudGVzdCgnVGVzdCBmb3IgQXBpS2V5IGNyZWF0aW9uIHVzaW5nIHJlc3RBcGlQcm9wcycsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgZ2xvYmFsUmVzdEFwaVJlc3BvbnNlID0gZGVmYXVsdHMuR2xvYmFsUmVzdEFwaShzdGFjaywge1xuICAgIGRlZmF1bHRNZXRob2RPcHRpb25zOiB7XG4gICAgICBhcGlLZXlSZXF1aXJlZDogdHJ1ZVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gU2V0dXAgdGhlIEFQSSBHYXRld2F5IHJvbGVcbiAgY29uc3QgYXBpR2F0ZXdheVJvbGUgPSBuZXcgaWFtLlJvbGUoc3RhY2ssICdhcGktZ2F0ZXdheS1yb2xlJywge1xuICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdhcGlnYXRld2F5LmFtYXpvbmF3cy5jb20nKVxuICB9KTtcblxuICAvLyBTZXR1cCB0aGUgQVBJIEdhdGV3YXkgcmVzb3VyY2VcbiAgY29uc3QgYXBpR2F0ZXdheVJlc291cmNlID0gZ2xvYmFsUmVzdEFwaVJlc3BvbnNlLmFwaS5yb290LmFkZFJlc291cmNlKCdoZWxsbycpO1xuXG4gIGRlZmF1bHRzLmFkZFByb3h5TWV0aG9kVG9BcGlSZXNvdXJjZShcbiAgICB7XG4gICAgICBzZXJ2aWNlOiAnaW90ZGF0YScsXG4gICAgICBwYXRoOiAnaGVsbG8nLFxuICAgICAgYXBpR2F0ZXdheVJvbGUsXG4gICAgICBhcGlNZXRob2Q6ICdQT1NUJyxcbiAgICAgIGFwaVJlc291cmNlOiBhcGlHYXRld2F5UmVzb3VyY2UsXG4gICAgICByZXF1ZXN0VGVtcGxhdGU6IFwiJGlucHV0Lmpzb24oJyQnKVwiXG4gICAgfSk7XG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgLy8gQXNzZXJ0aW9uIHRvIGNoZWNrIGZvciBBcGlLZXlcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpBcGlHYXRld2F5OjpNZXRob2RcIiwge1xuICAgIEFwaUtleVJlcXVpcmVkOiB0cnVlXG4gIH0pO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OkFwaUdhdGV3YXk6OkFwaUtleVwiLCB7XG4gICAgRW5hYmxlZDogdHJ1ZVxuICB9KTtcbiAgLy8gQXNzZXJ0aW9uIHRvIGNoZWNrIGZvciBVc2FnZVBsYW4gQXBpIEtleSBNYXBwaW5nXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6QXBpR2F0ZXdheTo6VXNhZ2VQbGFuS2V5XCIsIHtcbiAgICBLZXlUeXBlOiBcIkFQSV9LRVlcIlxuICB9KTtcbn0pO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGVzdCBmb3IgQXBpS2V5IENyZWF0aW9uIG9mIExhbWJkYVJlc3RBcGlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG50ZXN0KCdUZXN0IGZvciBBcGlLZXkgY3JlYXRpb24gdXNpbmcgbGFtYmRhQXBpUHJvcHMnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IGxhbWJkYUZ1bmN0aW9uUHJvcHM6IGxhbWJkYS5GdW5jdGlvblByb3BzID0ge1xuICAgIHJ1bnRpbWU6IGRlZmF1bHRzLkNPTU1FUkNJQUxfUkVHSU9OX0xBTUJEQV9OT0RFX1JVTlRJTUUsXG4gICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChgJHtfX2Rpcm5hbWV9L2xhbWJkYWApXG4gIH07XG5cbiAgY29uc3QgZm4gPSBkZWZhdWx0cy5kZXBsb3lMYW1iZGFGdW5jdGlvbihzdGFjaywgbGFtYmRhRnVuY3Rpb25Qcm9wcyk7XG4gIGRlZmF1bHRzLlJlZ2lvbmFsTGFtYmRhUmVzdEFwaShzdGFjaywgZm4sIHtcbiAgICBoYW5kbGVyOiBmbixcbiAgICBkZWZhdWx0TWV0aG9kT3B0aW9uczoge1xuICAgICAgYXBpS2V5UmVxdWlyZWQ6IHRydWVcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgLy8gQXNzZXJ0aW9uIHRvIGNoZWNrIGZvciBBcGlLZXlcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpBcGlHYXRld2F5OjpNZXRob2RcIiwge1xuICAgIEFwaUtleVJlcXVpcmVkOiB0cnVlXG4gIH0pO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OkFwaUdhdGV3YXk6OkFwaUtleVwiLCB7XG4gICAgRW5hYmxlZDogdHJ1ZVxuICB9KTtcbiAgLy8gQXNzZXJ0aW9uIHRvIGNoZWNrIGZvciBVc2FnZVBsYW4gQXBpIEtleSBNYXBwaW5nXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6QXBpR2F0ZXdheTo6VXNhZ2VQbGFuS2V5XCIsIHtcbiAgICBLZXlUeXBlOiBcIkFQSV9LRVlcIlxuICB9KTtcbn0pO1xuXG50ZXN0KCdBZGRpdGlvbmFsIHJlcXVlc3QgdGVtcGxhdGVzIGNhbiBiZSBzcGVjaWZpZWQgb24gYWRkTWV0aG9kVG9BcGlSZXNvdXJjZSBtZXRob2QnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IGdsb2JhbFJlc3RBcGlSZXNwb25zZSA9IGRlZmF1bHRzLkdsb2JhbFJlc3RBcGkoc3RhY2spO1xuXG4gIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheSByb2xlXG4gIGNvbnN0IGFwaUdhdGV3YXlSb2xlID0gbmV3IGlhbS5Sb2xlKHN0YWNrLCAnYXBpLWdhdGV3YXktcm9sZScsIHtcbiAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnYXBpZ2F0ZXdheS5hbWF6b25hd3MuY29tJylcbiAgfSk7XG5cbiAgLy8gU2V0dXAgdGhlIEFQSSBHYXRld2F5IHJlc291cmNlXG4gIGNvbnN0IGFwaUdhdGV3YXlSZXNvdXJjZSA9IGdsb2JhbFJlc3RBcGlSZXNwb25zZS5hcGkucm9vdC5hZGRSZXNvdXJjZSgnYXBpLWdhdGV3YXktcmVzb3VyY2UnKTtcbiAgY29uc3QgcmVxdWVzdFRlbXBsYXRlID0gJ3t9JztcbiAgY29uc3QgYWRkaXRpb25hbFJlcXVlc3RUZW1wbGF0ZXMgPSB7XG4gICAgJ3RleHQvcGxhaW4nOiAnYWRkaXRpb25hbC1yZXF1ZXN0LXRlbXBsYXRlJ1xuICB9O1xuXG4gIC8vIEFkZCBNZXRob2RcbiAgZGVmYXVsdHMuYWRkUHJveHlNZXRob2RUb0FwaVJlc291cmNlKHtcbiAgICBhY3Rpb246IFwiUXVlcnlcIixcbiAgICBzZXJ2aWNlOiBcImR5bmFtb2RiXCIsXG4gICAgYXBpUmVzb3VyY2U6IGFwaUdhdGV3YXlSZXNvdXJjZSxcbiAgICBhcGlHYXRld2F5Um9sZSxcbiAgICBhcGlNZXRob2Q6IFwiR0VUXCIsXG4gICAgcmVxdWVzdFRlbXBsYXRlLFxuICAgIGFkZGl0aW9uYWxSZXF1ZXN0VGVtcGxhdGVzXG4gIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkFwaUdhdGV3YXk6Ok1ldGhvZCcsIHtcbiAgICBIdHRwTWV0aG9kOiAnR0VUJyxcbiAgICBJbnRlZ3JhdGlvbjoge1xuICAgICAgUmVxdWVzdFRlbXBsYXRlczoge1xuICAgICAgICAnYXBwbGljYXRpb24vanNvbic6IGB7fWAsXG4gICAgICAgICd0ZXh0L3BsYWluJzogJ2FkZGl0aW9uYWwtcmVxdWVzdC10ZW1wbGF0ZSdcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufSk7XG5cbnRlc3QoJ0RlZmF1bHQgaW50ZWdyYXRpb24gcmVzcG9uc2VzIGFyZSB1c2VkIG9uIGFkZE1ldGhvZFRvQXBpUmVzb3VyY2UgbWV0aG9kJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBnbG9iYWxSZXN0QXBpUmVzcG9uc2UgPSBkZWZhdWx0cy5HbG9iYWxSZXN0QXBpKHN0YWNrKTtcblxuICAvLyBTZXR1cCB0aGUgQVBJIEdhdGV3YXkgcm9sZVxuICBjb25zdCBhcGlHYXRld2F5Um9sZSA9IG5ldyBpYW0uUm9sZShzdGFjaywgJ2FwaS1nYXRld2F5LXJvbGUnLCB7XG4gICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2FwaWdhdGV3YXkuYW1hem9uYXdzLmNvbScpXG4gIH0pO1xuXG4gIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheSByZXNvdXJjZVxuICBjb25zdCBhcGlHYXRld2F5UmVzb3VyY2UgPSBnbG9iYWxSZXN0QXBpUmVzcG9uc2UuYXBpLnJvb3QuYWRkUmVzb3VyY2UoJ2FwaS1nYXRld2F5LXJlc291cmNlJyk7XG5cbiAgLy8gQWRkIE1ldGhvZFxuICBkZWZhdWx0cy5hZGRQcm94eU1ldGhvZFRvQXBpUmVzb3VyY2Uoe1xuICAgIGFjdGlvbjogJ1F1ZXJ5JyxcbiAgICBzZXJ2aWNlOiAnZHluYW1vZGInLFxuICAgIGFwaVJlc291cmNlOiBhcGlHYXRld2F5UmVzb3VyY2UsXG4gICAgYXBpR2F0ZXdheVJvbGUsXG4gICAgYXBpTWV0aG9kOiAnR0VUJyxcbiAgICByZXF1ZXN0VGVtcGxhdGU6ICd7fScsXG4gIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkFwaUdhdGV3YXk6Ok1ldGhvZCcsIHtcbiAgICBIdHRwTWV0aG9kOiAnR0VUJyxcbiAgICBJbnRlZ3JhdGlvbjoge1xuICAgICAgSW50ZWdyYXRpb25SZXNwb25zZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIFN0YXR1c0NvZGU6ICcyMDAnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBSZXNwb25zZVRlbXBsYXRlczoge1xuICAgICAgICAgICAgJ3RleHQvaHRtbCc6ICdFcnJvcidcbiAgICAgICAgICB9LFxuICAgICAgICAgIFNlbGVjdGlvblBhdHRlcm46ICc1MDAnLFxuICAgICAgICAgIFN0YXR1c0NvZGU6ICc1MDAnXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gIH0pO1xufSk7XG5cbnRlc3QoJ0NhbiBvdmVycmlkZSBpbnRlZ3JhdGlvbiByZXNwb25zZXMgb24gYWRkTWV0aG9kVG9BcGlSZXNvdXJjZSBtZXRob2QnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IGdsb2JhbFJlc3RBcGlSZXNwb25zZSA9IGRlZmF1bHRzLkdsb2JhbFJlc3RBcGkoc3RhY2spO1xuXG4gIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheSByb2xlXG4gIGNvbnN0IGFwaUdhdGV3YXlSb2xlID0gbmV3IGlhbS5Sb2xlKHN0YWNrLCAnYXBpLWdhdGV3YXktcm9sZScsIHtcbiAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnYXBpZ2F0ZXdheS5hbWF6b25hd3MuY29tJylcbiAgfSk7XG5cbiAgLy8gU2V0dXAgdGhlIEFQSSBHYXRld2F5IHJlc291cmNlXG4gIGNvbnN0IGFwaUdhdGV3YXlSZXNvdXJjZSA9IGdsb2JhbFJlc3RBcGlSZXNwb25zZS5hcGkucm9vdC5hZGRSZXNvdXJjZSgnYXBpLWdhdGV3YXktcmVzb3VyY2UnKTtcblxuICAvLyBBZGQgTWV0aG9kXG4gIGRlZmF1bHRzLmFkZFByb3h5TWV0aG9kVG9BcGlSZXNvdXJjZSh7XG4gICAgYWN0aW9uOiAnUXVlcnknLFxuICAgIHNlcnZpY2U6ICdkeW5hbW9kYicsXG4gICAgYXBpUmVzb3VyY2U6IGFwaUdhdGV3YXlSZXNvdXJjZSxcbiAgICBhcGlHYXRld2F5Um9sZSxcbiAgICBhcGlNZXRob2Q6ICdHRVQnLFxuICAgIHJlcXVlc3RUZW1wbGF0ZTogJ3t9JyxcbiAgICBpbnRlZ3JhdGlvblJlc3BvbnNlczogW1xuICAgICAge1xuICAgICAgICBzdGF0dXNDb2RlOiBcIjIwMFwiLFxuICAgICAgICByZXNwb25zZVRlbXBsYXRlczoge1xuICAgICAgICAgIFwidGV4dC9odG1sXCI6IFwiT0tcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9KTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpBcGlHYXRld2F5OjpNZXRob2QnLCB7XG4gICAgSHR0cE1ldGhvZDogJ0dFVCcsXG4gICAgSW50ZWdyYXRpb246IHtcbiAgICAgIEludGVncmF0aW9uUmVzcG9uc2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBSZXNwb25zZVRlbXBsYXRlczoge1xuICAgICAgICAgICAgJ3RleHQvaHRtbCc6ICdPSydcbiAgICAgICAgICB9LFxuICAgICAgICAgIFN0YXR1c0NvZGU6ICcyMDAnXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgfVxuICB9KTtcbn0pO1xuXG50ZXN0KCdTcGVjaWZ5aW5nIGFwcGxpY2F0aW9uL2pzb24gY29udGVudC10eXBlIGluIGFkZGl0aW9uYWxSZXF1ZXN0VGVtcGxhdGVzIHByb3BlcnR5IHRocm93cyBhbiBlcnJvcicsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgZ2xvYmFsUmVzdEFwaVJlc3BvbnNlID0gZGVmYXVsdHMuR2xvYmFsUmVzdEFwaShzdGFjayk7XG5cbiAgY29uc3QgYXBpR2F0ZXdheVJvbGUgPSBuZXcgaWFtLlJvbGUoc3RhY2ssICdhcGktZ2F0ZXdheS1yb2xlJywge1xuICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdhcGlnYXRld2F5LmFtYXpvbmF3cy5jb20nKVxuICB9KTtcblxuICBjb25zdCBhcGlHYXRld2F5UmVzb3VyY2UgPSBnbG9iYWxSZXN0QXBpUmVzcG9uc2UuYXBpLnJvb3QuYWRkUmVzb3VyY2UoJ2FwaS1nYXRld2F5LXJlc291cmNlJyk7XG5cbiAgY29uc3QgYXBwID0gKCkgPT4ge1xuICAgIGRlZmF1bHRzLmFkZFByb3h5TWV0aG9kVG9BcGlSZXNvdXJjZSh7XG4gICAgICBhY3Rpb246ICdRdWVyeScsXG4gICAgICBzZXJ2aWNlOiAnZHluYW1vZGInLFxuICAgICAgYXBpUmVzb3VyY2U6IGFwaUdhdGV3YXlSZXNvdXJjZSxcbiAgICAgIGFwaUdhdGV3YXlSb2xlLFxuICAgICAgYXBpTWV0aG9kOiAnR0VUJyxcbiAgICAgIHJlcXVlc3RUZW1wbGF0ZTogJ3t9JyxcbiAgICAgIGFkZGl0aW9uYWxSZXF1ZXN0VGVtcGxhdGVzOiB7XG4gICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzogJ3t9J1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIGV4cGVjdChhcHApLnRvVGhyb3dFcnJvcignUmVxdWVzdCBUZW1wbGF0ZSBmb3IgdGhlIGFwcGxpY2F0aW9uL2pzb24gY29udGVudC10eXBlIG11c3QgYmUgc3BlY2lmaWVkIGluIHRoZSByZXF1ZXN0VGVtcGxhdGUgcHJvcGVydHkgYW5kIG5vdCBpbiB0aGUgYWRkaXRpb25hbFJlcXVlc3RUZW1wbGF0ZXMgcHJvcGVydHknKTtcbn0pO1xuXG50ZXN0KCdUZXN0IENoZWNrQXBpUHJvcHMnLCAoKSA9PiB7XG4gIGNvbnN0IGFwaVdpdGhLZXlQcm9wczogYXBpLkxhbWJkYVJlc3RBcGlQcm9wcyA9IHtcbiAgICBoYW5kbGVyOiB7fSBhcyBsYW1iZGEuRnVuY3Rpb24sXG4gICAgZGVmYXVsdE1ldGhvZE9wdGlvbnM6IHtcbiAgICAgIGFwaUtleVJlcXVpcmVkOiB0cnVlXG4gICAgfVxuXG4gIH07XG5cbiAgY29uc3QgYXBpV2l0aE5vS2V5UHJvcHM6IGFwaS5MYW1iZGFSZXN0QXBpUHJvcHMgPSB7XG4gICAgaGFuZGxlcjoge30gYXMgbGFtYmRhLkZ1bmN0aW9uLFxuICB9O1xuXG4gIGNvbnN0IG5vRXJyQXBwID0gKCkgPT4ge1xuICAgIGRlZmF1bHRzLkNoZWNrQXBpUHJvcHMoe1xuICAgICAgYXBpR2F0ZXdheVByb3BzOiBhcGlXaXRoTm9LZXlQcm9wcyxcbiAgICAgIGNyZWF0ZVVzYWdlUGxhbjogZmFsc2VcbiAgICB9KTtcbiAgfTtcbiAgZXhwZWN0KG5vRXJyQXBwKS5ub3QudG9UaHJvd0Vycm9yKCk7XG5cbiAgY29uc3QgYXBwID0gKCkgPT4ge1xuICAgIGRlZmF1bHRzLkNoZWNrQXBpUHJvcHMoe1xuICAgICAgYXBpR2F0ZXdheVByb3BzOiBhcGlXaXRoS2V5UHJvcHMsXG4gICAgICBjcmVhdGVVc2FnZVBsYW46IGZhbHNlXG4gICAgfSk7XG4gIH07XG4gIGV4cGVjdChhcHApLnRvVGhyb3dFcnJvcignRXJyb3IgLSBpZiBBUEkga2V5IGlzIHJlcXVpcmVkLCB0aGVuIHRoZSBVc2FnZSBwbGFuIG11c3QgYmUgY3JlYXRlZFxcbicpO1xufSk7XG5cbnRlc3QoJ0NvcnJlY3RseSBnZW5lcmF0ZSBhIFNwZWNSZXN0QXBpJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IG15QXBpRGVmaW5pdGlvbiA9IGFwaS5BcGlEZWZpbml0aW9uLmZyb21Bc3NldCgnLi90ZXN0L29wZW5hcGkvYXBpRGVmaW5pdGlvbi5qc29uJyk7XG5cbiAgZGVmYXVsdHMuQ3JlYXRlU3BlY1Jlc3RBcGkoc3RhY2ssIHtcbiAgICBhcGlEZWZpbml0aW9uOiBteUFwaURlZmluaXRpb25cbiAgfSk7XG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKFwiQVdTOjpBcGlHYXRld2F5OjpSZXN0QXBpXCIsIDEpO1xuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoXCJBV1M6OkFwaUdhdGV3YXk6OkRlcGxveW1lbnRcIiwgMSk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcyhcIkFXUzo6QXBpR2F0ZXdheTo6U3RhZ2VcIiwgMSk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcyhcIkFXUzo6QXBpR2F0ZXdheTo6VXNhZ2VQbGFuXCIsIDEpO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OkFwaUdhdGV3YXk6OlJlc3RBcGlcIiwge1xuICAgIEJvZHlTM0xvY2F0aW9uOiB7XG4gICAgICBCdWNrZXQ6IE1hdGNoLmFueVZhbHVlKClcbiAgICB9XG4gIH0pO1xufSk7XG4iXX0=