aws-sdk-backup 1.47.0 → 1.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c67ccdca9ee810cceb5cd067272e15a4c24174b933cc826e08514475bb513550
4
- data.tar.gz: 6f4f7adea2d3fb7d843399913b9c8615e975b174f8f9294ff20c8ce0985ebe25
3
+ metadata.gz: 696eb1a3b9d692dc50a1b4a3c074f21c7a49957f4e514eb5651a589bb5f40b01
4
+ data.tar.gz: 907b7d3f06b5dc0a8ec62a520fc1f8cf08334f6c5066057c2cfd75a731b9eefc
5
5
  SHA512:
6
- metadata.gz: 68252da0224210af6710bdb513496b9710350ddd06fa7fad341a4b472335c6dc6134bdc7970370f2462c7c4c9f20bd893003c4d537d6abaf3eb2f003429c3b9c
7
- data.tar.gz: d146b158d805d507badf1b41daf9f0e43e116b7bbb580a3897b2174a0d9453125c6c6e2b496fb6c2fd6337b07dbca1071b0dc81c7161f272fce5efc277ca4937
6
+ metadata.gz: c9cfc60bd7e340ee1743d68d5f52c9a92c662452d2d413ba2014368783db51a1e8fe546eb79e0f010eb23fa33e81d0b517f2773d30380345298ac1fc15b8c0ef
7
+ data.tar.gz: 95611be52588af2fec8d3b68fcdcf8238fda9d8ec8016dd661124ea91ac1706db7c7c3648c0664d12b07ef0505797b836d25f8178555c85442da41c02ca54c20
data/CHANGELOG.md CHANGED
@@ -1,6 +1,18 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.49.0 (2023-02-08)
5
+ ------------------
6
+
7
+ * Feature - This release added one attribute (resource name) in the output model of our 9 existing APIs in AWS backup so that customers will see the resource name at the output. No input required from Customers.
8
+
9
+ 1.48.0 (2023-01-18)
10
+ ------------------
11
+
12
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
13
+
14
+ * Issue - Replace runtime endpoint resolution approach with generated ruby code.
15
+
4
16
  1.47.0 (2022-11-28)
5
17
  ------------------
6
18
 
@@ -245,4 +257,4 @@ Unreleased Changes
245
257
  1.0.0 (2019-01-16)
246
258
  ------------------
247
259
 
248
- * Feature - Initial release of `aws-sdk-backup`.
260
+ * Feature - Initial release of `aws-sdk-backup`.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.47.0
1
+ 1.49.0
@@ -1206,6 +1206,7 @@ module Aws::Backup
1206
1206
  # * {Types::DescribeBackupJobOutput#is_parent #is_parent} => Boolean
1207
1207
  # * {Types::DescribeBackupJobOutput#number_of_child_jobs #number_of_child_jobs} => Integer
1208
1208
  # * {Types::DescribeBackupJobOutput#child_jobs_in_state #child_jobs_in_state} => Hash<String,Integer>
1209
+ # * {Types::DescribeBackupJobOutput#resource_name #resource_name} => String
1209
1210
  #
1210
1211
  # @example Request syntax with placeholder values
1211
1212
  #
@@ -1244,6 +1245,7 @@ module Aws::Backup
1244
1245
  # resp.number_of_child_jobs #=> Integer
1245
1246
  # resp.child_jobs_in_state #=> Hash
1246
1247
  # resp.child_jobs_in_state["BackupJobState"] #=> Integer
1248
+ # resp.resource_name #=> String
1247
1249
  #
1248
1250
  # @see http://docs.aws.amazon.com/goto/WebAPI/backup-2018-11-15/DescribeBackupJob AWS API Documentation
1249
1251
  #
@@ -1344,6 +1346,7 @@ module Aws::Backup
1344
1346
  # resp.copy_job.number_of_child_jobs #=> Integer
1345
1347
  # resp.copy_job.child_jobs_in_state #=> Hash
1346
1348
  # resp.copy_job.child_jobs_in_state["CopyJobState"] #=> Integer
1349
+ # resp.copy_job.resource_name #=> String
1347
1350
  #
1348
1351
  # @see http://docs.aws.amazon.com/goto/WebAPI/backup-2018-11-15/DescribeCopyJob AWS API Documentation
1349
1352
  #
@@ -1444,6 +1447,7 @@ module Aws::Backup
1444
1447
  # * {Types::DescribeProtectedResourceOutput#resource_arn #resource_arn} => String
1445
1448
  # * {Types::DescribeProtectedResourceOutput#resource_type #resource_type} => String
1446
1449
  # * {Types::DescribeProtectedResourceOutput#last_backup_time #last_backup_time} => Time
1450
+ # * {Types::DescribeProtectedResourceOutput#resource_name #resource_name} => String
1447
1451
  #
1448
1452
  # @example Request syntax with placeholder values
1449
1453
  #
@@ -1456,6 +1460,7 @@ module Aws::Backup
1456
1460
  # resp.resource_arn #=> String
1457
1461
  # resp.resource_type #=> String
1458
1462
  # resp.last_backup_time #=> Time
1463
+ # resp.resource_name #=> String
1459
1464
  #
1460
1465
  # @see http://docs.aws.amazon.com/goto/WebAPI/backup-2018-11-15/DescribeProtectedResource AWS API Documentation
1461
1466
  #
@@ -1504,6 +1509,7 @@ module Aws::Backup
1504
1509
  # * {Types::DescribeRecoveryPointOutput#parent_recovery_point_arn #parent_recovery_point_arn} => String
1505
1510
  # * {Types::DescribeRecoveryPointOutput#composite_member_identifier #composite_member_identifier} => String
1506
1511
  # * {Types::DescribeRecoveryPointOutput#is_parent #is_parent} => Boolean
1512
+ # * {Types::DescribeRecoveryPointOutput#resource_name #resource_name} => String
1507
1513
  #
1508
1514
  # @example Request syntax with placeholder values
1509
1515
  #
@@ -1541,6 +1547,7 @@ module Aws::Backup
1541
1547
  # resp.parent_recovery_point_arn #=> String
1542
1548
  # resp.composite_member_identifier #=> String
1543
1549
  # resp.is_parent #=> Boolean
1550
+ # resp.resource_name #=> String
1544
1551
  #
1545
1552
  # @see http://docs.aws.amazon.com/goto/WebAPI/backup-2018-11-15/DescribeRecoveryPoint AWS API Documentation
1546
1553
  #
@@ -2374,6 +2381,7 @@ module Aws::Backup
2374
2381
  # resp.backup_jobs[0].backup_type #=> String
2375
2382
  # resp.backup_jobs[0].parent_job_id #=> String
2376
2383
  # resp.backup_jobs[0].is_parent #=> Boolean
2384
+ # resp.backup_jobs[0].resource_name #=> String
2377
2385
  # resp.next_token #=> String
2378
2386
  #
2379
2387
  # @see http://docs.aws.amazon.com/goto/WebAPI/backup-2018-11-15/ListBackupJobs AWS API Documentation
@@ -2765,6 +2773,7 @@ module Aws::Backup
2765
2773
  # resp.copy_jobs[0].number_of_child_jobs #=> Integer
2766
2774
  # resp.copy_jobs[0].child_jobs_in_state #=> Hash
2767
2775
  # resp.copy_jobs[0].child_jobs_in_state["CopyJobState"] #=> Integer
2776
+ # resp.copy_jobs[0].resource_name #=> String
2768
2777
  # resp.next_token #=> String
2769
2778
  #
2770
2779
  # @see http://docs.aws.amazon.com/goto/WebAPI/backup-2018-11-15/ListCopyJobs AWS API Documentation
@@ -2901,6 +2910,7 @@ module Aws::Backup
2901
2910
  # resp.results[0].resource_arn #=> String
2902
2911
  # resp.results[0].resource_type #=> String
2903
2912
  # resp.results[0].last_backup_time #=> Time
2913
+ # resp.results[0].resource_name #=> String
2904
2914
  # resp.next_token #=> String
2905
2915
  #
2906
2916
  # @see http://docs.aws.amazon.com/goto/WebAPI/backup-2018-11-15/ListProtectedResources AWS API Documentation
@@ -3008,6 +3018,7 @@ module Aws::Backup
3008
3018
  # resp.recovery_points[0].parent_recovery_point_arn #=> String
3009
3019
  # resp.recovery_points[0].composite_member_identifier #=> String
3010
3020
  # resp.recovery_points[0].is_parent #=> Boolean
3021
+ # resp.recovery_points[0].resource_name #=> String
3011
3022
  #
3012
3023
  # @see http://docs.aws.amazon.com/goto/WebAPI/backup-2018-11-15/ListRecoveryPointsByBackupVault AWS API Documentation
3013
3024
  #
@@ -3116,6 +3127,7 @@ module Aws::Backup
3116
3127
  # resp.recovery_points[0].backup_vault_name #=> String
3117
3128
  # resp.recovery_points[0].is_parent #=> Boolean
3118
3129
  # resp.recovery_points[0].parent_recovery_point_arn #=> String
3130
+ # resp.recovery_points[0].resource_name #=> String
3119
3131
  #
3120
3132
  # @see http://docs.aws.amazon.com/goto/WebAPI/backup-2018-11-15/ListRecoveryPointsByResource AWS API Documentation
3121
3133
  #
@@ -3436,8 +3448,11 @@ module Aws::Backup
3436
3448
  # maximum retention period for future backup and copy jobs that target a
3437
3449
  # backup vault.
3438
3450
  #
3439
- # <note markdown="1"> Backup Vault Lock has yet to receive a third-party assessment for SEC
3440
- # 17a-4(f) and CFTC.
3451
+ # <note markdown="1"> Backup Vault Lock has been assessed by Cohasset Associates for use in
3452
+ # environments that are subject to SEC 17a-4, CFTC, and FINRA
3453
+ # regulations. For more information about how Backup Vault Lock relates
3454
+ # to these regulations, see the [Cohasset Associates Compliance
3455
+ # Assessment.](samples/cohassetreport.zip)
3441
3456
  #
3442
3457
  # </note>
3443
3458
  #
@@ -4429,7 +4444,7 @@ module Aws::Backup
4429
4444
  params: params,
4430
4445
  config: config)
4431
4446
  context[:gem_name] = 'aws-sdk-backup'
4432
- context[:gem_version] = '1.47.0'
4447
+ context[:gem_version] = '1.49.0'
4433
4448
  Seahorse::Client::Request.new(handlers, context)
4434
4449
  end
4435
4450
 
@@ -312,6 +312,7 @@ module Aws::Backup
312
312
  BackupJob.add_member(:backup_type, Shapes::ShapeRef.new(shape: string, location_name: "BackupType"))
313
313
  BackupJob.add_member(:parent_job_id, Shapes::ShapeRef.new(shape: string, location_name: "ParentJobId"))
314
314
  BackupJob.add_member(:is_parent, Shapes::ShapeRef.new(shape: boolean, location_name: "IsParent"))
315
+ BackupJob.add_member(:resource_name, Shapes::ShapeRef.new(shape: string, location_name: "ResourceName"))
315
316
  BackupJob.struct_class = Types::BackupJob
316
317
 
317
318
  BackupJobChildJobsInState.key = Shapes::ShapeRef.new(shape: BackupJobState)
@@ -487,6 +488,7 @@ module Aws::Backup
487
488
  CopyJob.add_member(:composite_member_identifier, Shapes::ShapeRef.new(shape: string, location_name: "CompositeMemberIdentifier"))
488
489
  CopyJob.add_member(:number_of_child_jobs, Shapes::ShapeRef.new(shape: Long, location_name: "NumberOfChildJobs"))
489
490
  CopyJob.add_member(:child_jobs_in_state, Shapes::ShapeRef.new(shape: CopyJobChildJobsInState, location_name: "ChildJobsInState"))
491
+ CopyJob.add_member(:resource_name, Shapes::ShapeRef.new(shape: string, location_name: "ResourceName"))
490
492
  CopyJob.struct_class = Types::CopyJob
491
493
 
492
494
  CopyJobChildJobsInState.key = Shapes::ShapeRef.new(shape: CopyJobState)
@@ -639,6 +641,7 @@ module Aws::Backup
639
641
  DescribeBackupJobOutput.add_member(:is_parent, Shapes::ShapeRef.new(shape: boolean, location_name: "IsParent"))
640
642
  DescribeBackupJobOutput.add_member(:number_of_child_jobs, Shapes::ShapeRef.new(shape: Long, location_name: "NumberOfChildJobs"))
641
643
  DescribeBackupJobOutput.add_member(:child_jobs_in_state, Shapes::ShapeRef.new(shape: BackupJobChildJobsInState, location_name: "ChildJobsInState"))
644
+ DescribeBackupJobOutput.add_member(:resource_name, Shapes::ShapeRef.new(shape: string, location_name: "ResourceName"))
642
645
  DescribeBackupJobOutput.struct_class = Types::DescribeBackupJobOutput
643
646
 
644
647
  DescribeBackupVaultInput.add_member(:backup_vault_name, Shapes::ShapeRef.new(shape: string, required: true, location: "uri", location_name: "backupVaultName"))
@@ -687,6 +690,7 @@ module Aws::Backup
687
690
  DescribeProtectedResourceOutput.add_member(:resource_arn, Shapes::ShapeRef.new(shape: ARN, location_name: "ResourceArn"))
688
691
  DescribeProtectedResourceOutput.add_member(:resource_type, Shapes::ShapeRef.new(shape: ResourceType, location_name: "ResourceType"))
689
692
  DescribeProtectedResourceOutput.add_member(:last_backup_time, Shapes::ShapeRef.new(shape: timestamp, location_name: "LastBackupTime"))
693
+ DescribeProtectedResourceOutput.add_member(:resource_name, Shapes::ShapeRef.new(shape: string, location_name: "ResourceName"))
690
694
  DescribeProtectedResourceOutput.struct_class = Types::DescribeProtectedResourceOutput
691
695
 
692
696
  DescribeRecoveryPointInput.add_member(:backup_vault_name, Shapes::ShapeRef.new(shape: BackupVaultName, required: true, location: "uri", location_name: "backupVaultName"))
@@ -715,6 +719,7 @@ module Aws::Backup
715
719
  DescribeRecoveryPointOutput.add_member(:parent_recovery_point_arn, Shapes::ShapeRef.new(shape: ARN, location_name: "ParentRecoveryPointArn"))
716
720
  DescribeRecoveryPointOutput.add_member(:composite_member_identifier, Shapes::ShapeRef.new(shape: string, location_name: "CompositeMemberIdentifier"))
717
721
  DescribeRecoveryPointOutput.add_member(:is_parent, Shapes::ShapeRef.new(shape: boolean, location_name: "IsParent"))
722
+ DescribeRecoveryPointOutput.add_member(:resource_name, Shapes::ShapeRef.new(shape: string, location_name: "ResourceName"))
718
723
  DescribeRecoveryPointOutput.struct_class = Types::DescribeRecoveryPointOutput
719
724
 
720
725
  DescribeRegionSettingsInput.struct_class = Types::DescribeRegionSettingsInput
@@ -1103,6 +1108,7 @@ module Aws::Backup
1103
1108
  ProtectedResource.add_member(:resource_arn, Shapes::ShapeRef.new(shape: ARN, location_name: "ResourceArn"))
1104
1109
  ProtectedResource.add_member(:resource_type, Shapes::ShapeRef.new(shape: ResourceType, location_name: "ResourceType"))
1105
1110
  ProtectedResource.add_member(:last_backup_time, Shapes::ShapeRef.new(shape: timestamp, location_name: "LastBackupTime"))
1111
+ ProtectedResource.add_member(:resource_name, Shapes::ShapeRef.new(shape: string, location_name: "ResourceName"))
1106
1112
  ProtectedResource.struct_class = Types::ProtectedResource
1107
1113
 
1108
1114
  ProtectedResourcesList.member = Shapes::ShapeRef.new(shape: ProtectedResource)
@@ -1143,6 +1149,7 @@ module Aws::Backup
1143
1149
  RecoveryPointByBackupVault.add_member(:parent_recovery_point_arn, Shapes::ShapeRef.new(shape: ARN, location_name: "ParentRecoveryPointArn"))
1144
1150
  RecoveryPointByBackupVault.add_member(:composite_member_identifier, Shapes::ShapeRef.new(shape: string, location_name: "CompositeMemberIdentifier"))
1145
1151
  RecoveryPointByBackupVault.add_member(:is_parent, Shapes::ShapeRef.new(shape: boolean, location_name: "IsParent"))
1152
+ RecoveryPointByBackupVault.add_member(:resource_name, Shapes::ShapeRef.new(shape: string, location_name: "ResourceName"))
1146
1153
  RecoveryPointByBackupVault.struct_class = Types::RecoveryPointByBackupVault
1147
1154
 
1148
1155
  RecoveryPointByBackupVaultList.member = Shapes::ShapeRef.new(shape: RecoveryPointByBackupVault)
@@ -1156,6 +1163,7 @@ module Aws::Backup
1156
1163
  RecoveryPointByResource.add_member(:backup_vault_name, Shapes::ShapeRef.new(shape: BackupVaultName, location_name: "BackupVaultName"))
1157
1164
  RecoveryPointByResource.add_member(:is_parent, Shapes::ShapeRef.new(shape: boolean, location_name: "IsParent"))
1158
1165
  RecoveryPointByResource.add_member(:parent_recovery_point_arn, Shapes::ShapeRef.new(shape: ARN, location_name: "ParentRecoveryPointArn"))
1166
+ RecoveryPointByResource.add_member(:resource_name, Shapes::ShapeRef.new(shape: string, location_name: "ResourceName"))
1159
1167
  RecoveryPointByResource.struct_class = Types::RecoveryPointByResource
1160
1168
 
1161
1169
  RecoveryPointByResourceList.member = Shapes::ShapeRef.new(shape: RecoveryPointByResource)
@@ -9,103 +9,43 @@
9
9
 
10
10
  module Aws::Backup
11
11
  class EndpointProvider
12
- def initialize(rule_set = nil)
13
- @@rule_set ||= begin
14
- endpoint_rules = Aws::Json.load(Base64.decode64(RULES))
15
- Aws::Endpoints::RuleSet.new(
16
- version: endpoint_rules['version'],
17
- service_id: endpoint_rules['serviceId'],
18
- parameters: endpoint_rules['parameters'],
19
- rules: endpoint_rules['rules']
20
- )
12
+ def resolve_endpoint(parameters)
13
+ region = parameters.region
14
+ use_dual_stack = parameters.use_dual_stack
15
+ use_fips = parameters.use_fips
16
+ endpoint = parameters.endpoint
17
+ if (partition_result = Aws::Endpoints::Matchers.aws_partition(region))
18
+ if Aws::Endpoints::Matchers.set?(endpoint)
19
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
20
+ raise ArgumentError, "Invalid Configuration: FIPS and custom endpoint are not supported"
21
+ end
22
+ if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
23
+ raise ArgumentError, "Invalid Configuration: Dualstack and custom endpoint are not supported"
24
+ end
25
+ return Aws::Endpoints::Endpoint.new(url: endpoint, headers: {}, properties: {})
26
+ end
27
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) && Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
28
+ if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) && Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
29
+ return Aws::Endpoints::Endpoint.new(url: "https://backup-fips.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
30
+ end
31
+ raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both"
32
+ end
33
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
34
+ if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"))
35
+ return Aws::Endpoints::Endpoint.new(url: "https://backup-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
36
+ end
37
+ raise ArgumentError, "FIPS is enabled but this partition does not support FIPS"
38
+ end
39
+ if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
40
+ if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
41
+ return Aws::Endpoints::Endpoint.new(url: "https://backup.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
42
+ end
43
+ raise ArgumentError, "DualStack is enabled but this partition does not support DualStack"
44
+ end
45
+ return Aws::Endpoints::Endpoint.new(url: "https://backup.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
21
46
  end
22
- @provider = Aws::Endpoints::RulesProvider.new(rule_set || @@rule_set)
23
- end
47
+ raise ArgumentError, 'No endpoint could be resolved'
24
48
 
25
- def resolve_endpoint(parameters)
26
- @provider.resolve_endpoint(parameters)
27
49
  end
28
-
29
- # @api private
30
- RULES = <<-JSON
31
- eyJ2ZXJzaW9uIjoiMS4wIiwicGFyYW1ldGVycyI6eyJSZWdpb24iOnsiYnVp
32
- bHRJbiI6IkFXUzo6UmVnaW9uIiwicmVxdWlyZWQiOnRydWUsImRvY3VtZW50
33
- YXRpb24iOiJUaGUgQVdTIHJlZ2lvbiB1c2VkIHRvIGRpc3BhdGNoIHRoZSBy
34
- ZXF1ZXN0LiIsInR5cGUiOiJTdHJpbmcifSwiVXNlRHVhbFN0YWNrIjp7ImJ1
35
- aWx0SW4iOiJBV1M6OlVzZUR1YWxTdGFjayIsInJlcXVpcmVkIjp0cnVlLCJk
36
- ZWZhdWx0IjpmYWxzZSwiZG9jdW1lbnRhdGlvbiI6IldoZW4gdHJ1ZSwgdXNl
37
- IHRoZSBkdWFsLXN0YWNrIGVuZHBvaW50LiBJZiB0aGUgY29uZmlndXJlZCBl
38
- bmRwb2ludCBkb2VzIG5vdCBzdXBwb3J0IGR1YWwtc3RhY2ssIGRpc3BhdGNo
39
- aW5nIHRoZSByZXF1ZXN0IE1BWSByZXR1cm4gYW4gZXJyb3IuIiwidHlwZSI6
40
- IkJvb2xlYW4ifSwiVXNlRklQUyI6eyJidWlsdEluIjoiQVdTOjpVc2VGSVBT
41
- IiwicmVxdWlyZWQiOnRydWUsImRlZmF1bHQiOmZhbHNlLCJkb2N1bWVudGF0
42
- aW9uIjoiV2hlbiB0cnVlLCBzZW5kIHRoaXMgcmVxdWVzdCB0byB0aGUgRklQ
43
- Uy1jb21wbGlhbnQgcmVnaW9uYWwgZW5kcG9pbnQuIElmIHRoZSBjb25maWd1
44
- cmVkIGVuZHBvaW50IGRvZXMgbm90IGhhdmUgYSBGSVBTIGNvbXBsaWFudCBl
45
- bmRwb2ludCwgZGlzcGF0Y2hpbmcgdGhlIHJlcXVlc3Qgd2lsbCByZXR1cm4g
46
- YW4gZXJyb3IuIiwidHlwZSI6IkJvb2xlYW4ifSwiRW5kcG9pbnQiOnsiYnVp
47
- bHRJbiI6IlNESzo6RW5kcG9pbnQiLCJyZXF1aXJlZCI6ZmFsc2UsImRvY3Vt
48
- ZW50YXRpb24iOiJPdmVycmlkZSB0aGUgZW5kcG9pbnQgdXNlZCB0byBzZW5k
49
- IHRoaXMgcmVxdWVzdCIsInR5cGUiOiJTdHJpbmcifX0sInJ1bGVzIjpbeyJj
50
- b25kaXRpb25zIjpbeyJmbiI6ImF3cy5wYXJ0aXRpb24iLCJhcmd2IjpbeyJy
51
- ZWYiOiJSZWdpb24ifV0sImFzc2lnbiI6IlBhcnRpdGlvblJlc3VsdCJ9XSwi
52
- dHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6W3siZm4iOiJp
53
- c1NldCIsImFyZ3YiOlt7InJlZiI6IkVuZHBvaW50In1dfSx7ImZuIjoicGFy
54
- c2VVUkwiLCJhcmd2IjpbeyJyZWYiOiJFbmRwb2ludCJ9XSwiYXNzaWduIjoi
55
- dXJsIn1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25zIjpb
56
- eyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VGSVBT
57
- In0sdHJ1ZV19XSwiZXJyb3IiOiJJbnZhbGlkIENvbmZpZ3VyYXRpb246IEZJ
58
- UFMgYW5kIGN1c3RvbSBlbmRwb2ludCBhcmUgbm90IHN1cHBvcnRlZCIsInR5
59
- cGUiOiJlcnJvciJ9LHsiY29uZGl0aW9ucyI6W10sInR5cGUiOiJ0cmVlIiwi
60
- cnVsZXMiOlt7ImNvbmRpdGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIs
61
- ImFyZ3YiOlt7InJlZiI6IlVzZUR1YWxTdGFjayJ9LHRydWVdfV0sImVycm9y
62
- IjoiSW52YWxpZCBDb25maWd1cmF0aW9uOiBEdWFsc3RhY2sgYW5kIGN1c3Rv
63
- bSBlbmRwb2ludCBhcmUgbm90IHN1cHBvcnRlZCIsInR5cGUiOiJlcnJvciJ9
64
- LHsiY29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6eyJyZWYiOiJF
65
- bmRwb2ludCJ9LCJwcm9wZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBl
66
- IjoiZW5kcG9pbnQifV19XX0seyJjb25kaXRpb25zIjpbeyJmbiI6ImJvb2xl
67
- YW5FcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VGSVBTIn0sdHJ1ZV19LHsi
68
- Zm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRHVhbFN0
69
- YWNrIn0sdHJ1ZV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0
70
- aW9ucyI6W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3RydWUseyJm
71
- biI6ImdldEF0dHIiLCJhcmd2IjpbeyJyZWYiOiJQYXJ0aXRpb25SZXN1bHQi
72
- fSwic3VwcG9ydHNGSVBTIl19XX0seyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJh
73
- cmd2IjpbdHJ1ZSx7ImZuIjoiZ2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBh
74
- cnRpdGlvblJlc3VsdCJ9LCJzdXBwb3J0c0R1YWxTdGFjayJdfV19XSwidHlw
75
- ZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6W10sImVuZHBvaW50
76
- Ijp7InVybCI6Imh0dHBzOi8vYmFja3VwLWZpcHMue1JlZ2lvbn0ue1BhcnRp
77
- dGlvblJlc3VsdCNkdWFsU3RhY2tEbnNTdWZmaXh9IiwicHJvcGVydGllcyI6
78
- e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In1dfSx7ImNvbmRp
79
- dGlvbnMiOltdLCJlcnJvciI6IkZJUFMgYW5kIER1YWxTdGFjayBhcmUgZW5h
80
- YmxlZCwgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1cHBvcnQgb25l
81
- IG9yIGJvdGgiLCJ0eXBlIjoiZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W3si
82
- Zm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRklQUyJ9
83
- LHRydWVdfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMi
84
- Olt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsiZm4iOiJn
85
- ZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0In0sInN1
86
- cHBvcnRzRklQUyJdfV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29u
87
- ZGl0aW9ucyI6W10sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlv
88
- bnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOiJodHRwczovL2JhY2t1cC1maXBz
89
- LntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQjZG5zU3VmZml4fSIsInByb3Bl
90
- cnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX1d
91
- fSx7ImNvbmRpdGlvbnMiOltdLCJlcnJvciI6IkZJUFMgaXMgZW5hYmxlZCBi
92
- dXQgdGhpcyBwYXJ0aXRpb24gZG9lcyBub3Qgc3VwcG9ydCBGSVBTIiwidHlw
93
- ZSI6ImVycm9yIn1dfSx7ImNvbmRpdGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVx
94
- dWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUR1YWxTdGFjayJ9LHRydWVdfV0s
95
- InR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOlt7ImZuIjoi
96
- Ym9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsiZm4iOiJnZXRBdHRyIiwi
97
- YXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0In0sInN1cHBvcnRzRHVh
98
- bFN0YWNrIl19XX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRp
99
- b25zIjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9iYWNrdXAue1Jl
100
- Z2lvbn0ue1BhcnRpdGlvblJlc3VsdCNkdWFsU3RhY2tEbnNTdWZmaXh9Iiwi
101
- cHJvcGVydGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50
102
- In1dfSx7ImNvbmRpdGlvbnMiOltdLCJlcnJvciI6IkR1YWxTdGFjayBpcyBl
103
- bmFibGVkIGJ1dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBwb3J0IER1
104
- YWxTdGFjayIsInR5cGUiOiJlcnJvciJ9XX0seyJjb25kaXRpb25zIjpbXSwi
105
- ZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9iYWNrdXAue1JlZ2lvbn0ue1Bh
106
- cnRpdGlvblJlc3VsdCNkbnNTdWZmaXh9IiwicHJvcGVydGllcyI6e30sImhl
107
- YWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In1dfV19
108
-
109
- JSON
110
50
  end
111
51
  end