moov_ruby 0.0.0.pre.dev.24 → 0.0.0.pre.dev.25

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 (138) hide show
  1. checksums.yaml +4 -4
  2. data/lib/moov/avatars.rb +4 -4
  3. data/lib/moov/card_issuing.rb +116 -0
  4. data/lib/moov/client.rb +2 -2
  5. data/lib/moov/enriched_address.rb +1 -1
  6. data/lib/moov/enriched_profile.rb +1 -1
  7. data/lib/moov/institutions.rb +1 -1
  8. data/lib/moov/models/components/achcreditoptions.rb +40 -0
  9. data/lib/moov/models/components/achcreditoptions.rbi +17 -0
  10. data/lib/moov/models/components/achcredittransferprocessingdetails.rb +40 -0
  11. data/lib/moov/models/components/achcredittransferprocessingdetails.rbi +17 -0
  12. data/lib/moov/models/components/achdebitoptions.rb +48 -0
  13. data/lib/moov/models/components/achdebitoptions.rbi +21 -0
  14. data/lib/moov/models/components/achdebittransferprocessingdetails.rb +40 -0
  15. data/lib/moov/models/components/achdebittransferprocessingdetails.rbi +17 -0
  16. data/lib/moov/models/components/asynccreatedrefund.rb +7 -3
  17. data/lib/moov/models/components/asynccreatedrefund.rbi +2 -0
  18. data/lib/moov/models/components/capture.rb +77 -0
  19. data/lib/moov/models/components/capture.rbi +35 -0
  20. data/lib/moov/models/components/{refundcardstatus.rb → capturestatus.rb} +5 -4
  21. data/lib/moov/models/components/{refundcardstatus.rbi → capturestatus.rbi} +2 -2
  22. data/lib/moov/models/components/cardacquiringrefund.rb +11 -7
  23. data/lib/moov/models/components/cardacquiringrefund.rbi +4 -2
  24. data/lib/moov/models/components/cardpaymentoptions.rb +39 -0
  25. data/lib/moov/models/components/cardpaymentoptions.rbi +15 -0
  26. data/lib/moov/models/components/cardpaymentrefundprocessingdetails.rb +32 -0
  27. data/lib/moov/models/components/cardpaymentrefundprocessingdetails.rbi +13 -0
  28. data/lib/moov/models/components/cardpaymenttransferprocessingdetails.rb +44 -0
  29. data/lib/moov/models/components/cardpaymenttransferprocessingdetails.rbi +19 -0
  30. data/lib/moov/models/components/createcancellation.rb +32 -0
  31. data/lib/moov/models/components/createcancellation.rbi +13 -0
  32. data/lib/moov/models/components/createcapture.rb +65 -0
  33. data/lib/moov/models/components/createcapture.rbi +29 -0
  34. data/lib/moov/models/components/createdtransfer.rb +22 -26
  35. data/lib/moov/models/components/createdtransfer.rbi +8 -10
  36. data/lib/moov/models/components/createrefund.rb +9 -5
  37. data/lib/moov/models/components/createrefund.rbi +2 -0
  38. data/lib/moov/models/components/createreversal.rb +3 -3
  39. data/lib/moov/models/components/createtransfer.rb +4 -4
  40. data/lib/moov/models/components/createtransferfacilitatorfee.rb +36 -0
  41. data/lib/moov/models/components/createtransferfacilitatorfee.rbi +15 -0
  42. data/lib/moov/models/components/createtransferoptions.rb +2 -2
  43. data/lib/moov/models/components/instantbankcredittransferprocessingdetails.rb +44 -0
  44. data/lib/moov/models/components/instantbankcredittransferprocessingdetails.rbi +19 -0
  45. data/lib/moov/models/components/merchantcategories.rb +32 -0
  46. data/lib/moov/models/components/merchantcategories.rbi +13 -0
  47. data/lib/moov/models/components/merchantcategory.rb +37 -0
  48. data/lib/moov/models/components/merchantcategory.rbi +15 -0
  49. data/lib/moov/models/components/moovfeedetails.rb +5 -5
  50. data/lib/moov/models/components/paymentmethodswallet.rb +1 -0
  51. data/lib/moov/models/components/pullfromcardoptions.rb +39 -0
  52. data/lib/moov/models/components/pullfromcardoptions.rbi +15 -0
  53. data/lib/moov/models/components/pullfromcardtransferprocessingdetails.rb +44 -0
  54. data/lib/moov/models/components/pullfromcardtransferprocessingdetails.rbi +19 -0
  55. data/lib/moov/models/components/pushtocardoptions.rb +32 -0
  56. data/lib/moov/models/components/pushtocardoptions.rbi +13 -0
  57. data/lib/moov/models/components/pushtocardtransferprocessingdetails.rb +44 -0
  58. data/lib/moov/models/components/pushtocardtransferprocessingdetails.rbi +19 -0
  59. data/lib/moov/models/components/refundprocessingdetails.rb +32 -0
  60. data/lib/moov/models/components/refundprocessingdetails.rbi +13 -0
  61. data/lib/moov/models/components/sendfunds.rb +6 -2
  62. data/lib/moov/models/components/sendfunds.rbi +2 -0
  63. data/lib/moov/models/components/sendfundserror.rb +6 -2
  64. data/lib/moov/models/components/sendfundserror.rbi +2 -0
  65. data/lib/moov/models/components/sendfundswire.rb +32 -0
  66. data/lib/moov/models/components/sendfundswire.rbi +13 -0
  67. data/lib/moov/models/components/sendfundswireerror.rb +32 -0
  68. data/lib/moov/models/components/sendfundswireerror.rbi +13 -0
  69. data/lib/moov/models/components/transfer.rb +22 -26
  70. data/lib/moov/models/components/transfer.rbi +8 -10
  71. data/lib/moov/models/components/transferauthorization.rb +52 -0
  72. data/lib/moov/models/components/transferauthorization.rbi +23 -0
  73. data/lib/moov/models/components/transferdestination.rb +5 -17
  74. data/lib/moov/models/components/transferdestination.rbi +0 -6
  75. data/lib/moov/models/components/transferpaymentmethodswallet.rb +1 -0
  76. data/lib/moov/models/components/transferprocessingdetails.rb +52 -0
  77. data/lib/moov/models/components/transferprocessingdetails.rbi +23 -0
  78. data/lib/moov/models/components/transferrailoptions.rb +48 -0
  79. data/lib/moov/models/components/transferrailoptions.rbi +21 -0
  80. data/lib/moov/models/components/transfersource.rb +9 -17
  81. data/lib/moov/models/components/transfersource.rbi +2 -6
  82. data/lib/moov/models/components/transferstatus.rb +1 -0
  83. data/lib/moov/models/components/transfertype.rb +25 -0
  84. data/lib/moov/models/components/{achtransactionstatus.rbi → transfertype.rbi} +2 -2
  85. data/lib/moov/models/components/wallet.rb +1 -0
  86. data/lib/moov/models/components/wallettype.rb +2 -0
  87. data/lib/moov/models/components/webhookdatatransferstatus.rb +3 -0
  88. data/lib/moov/models/components.rb +26 -10
  89. data/lib/moov/models/errors/capturevalidationerror.rb +68 -0
  90. data/lib/moov/models/errors/capturevalidationerror.rbi +31 -0
  91. data/lib/moov/models/errors/cardacquiringrefund_error.rb +11 -7
  92. data/lib/moov/models/errors/cardacquiringrefund_error.rbi +4 -2
  93. data/lib/moov/models/errors/transfer_error.rb +22 -26
  94. data/lib/moov/models/errors/transfer_error.rbi +8 -10
  95. data/lib/moov/models/errors.rb +1 -0
  96. data/lib/moov/models/operations/createcancellation_request.rb +6 -2
  97. data/lib/moov/models/operations/createcancellation_request.rbi +2 -0
  98. data/lib/moov/models/operations/createcapture_request.rb +44 -0
  99. data/lib/moov/models/operations/createcapture_request.rbi +19 -0
  100. data/lib/moov/models/operations/createcapture_response.rb +48 -0
  101. data/lib/moov/models/operations/createcapture_response.rbi +21 -0
  102. data/lib/moov/models/operations/createreversal_request.rb +3 -3
  103. data/lib/moov/models/operations/getcapture_request.rb +40 -0
  104. data/lib/moov/models/operations/getcapture_request.rbi +17 -0
  105. data/lib/moov/models/operations/getcapture_response.rb +48 -0
  106. data/lib/moov/models/operations/getcapture_response.rbi +21 -0
  107. data/lib/moov/models/operations/initiaterefund_request.rb +6 -6
  108. data/lib/moov/models/operations/initiaterefund_request.rbi +2 -2
  109. data/lib/moov/models/operations/listcaptures_request.rb +36 -0
  110. data/lib/moov/models/operations/listcaptures_request.rbi +15 -0
  111. data/lib/moov/models/operations/listcaptures_response.rb +48 -0
  112. data/lib/moov/models/operations/listcaptures_response.rbi +21 -0
  113. data/lib/moov/models/operations/listissuingmerchantcategories_response.rb +48 -0
  114. data/lib/moov/models/operations/listissuingmerchantcategories_response.rbi +21 -0
  115. data/lib/moov/models/operations/listtransfers_request.rb +6 -2
  116. data/lib/moov/models/operations/listtransfers_request.rbi +2 -0
  117. data/lib/moov/models/operations.rb +7 -0
  118. data/lib/moov/sdkconfiguration.rb +2 -2
  119. data/lib/moov/transfers.rb +434 -5
  120. data/lib/moov_ruby.rb +1 -1
  121. metadata +70 -22
  122. data/lib/moov/models/components/achtransactiondetails.rb +0 -92
  123. data/lib/moov/models/components/achtransactiondetails.rbi +0 -43
  124. data/lib/moov/models/components/achtransactionstatus.rb +0 -24
  125. data/lib/moov/models/components/cardacquiringdispute.rb +0 -40
  126. data/lib/moov/models/components/cardacquiringdispute.rbi +0 -17
  127. data/lib/moov/models/components/cardtransactiondetails.rb +0 -93
  128. data/lib/moov/models/components/cardtransactiondetails.rbi +0 -41
  129. data/lib/moov/models/components/cardtransactionstatus.rb +0 -24
  130. data/lib/moov/models/components/cardtransactionstatus.rbi +0 -11
  131. data/lib/moov/models/components/instantbanktransactiondetails.rb +0 -64
  132. data/lib/moov/models/components/instantbanktransactiondetails.rbi +0 -29
  133. data/lib/moov/models/components/instantbanktransactionstatus.rb +0 -21
  134. data/lib/moov/models/components/instantbanktransactionstatus.rbi +0 -11
  135. data/lib/moov/models/components/refundcarddetails.rb +0 -56
  136. data/lib/moov/models/components/refundcarddetails.rbi +0 -25
  137. data/lib/moov/models/components/transfercapture.rb +0 -36
  138. data/lib/moov/models/components/transfercapture.rbi +0 -15
@@ -0,0 +1,48 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Operations
10
+
11
+ class ListCapturesResponse
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # HTTP response content type for this operation
16
+ field :content_type, ::String
17
+ # HTTP response status code for this operation
18
+ field :status_code, ::Integer
19
+ # Raw HTTP response; suitable for custom response parsing
20
+ field :raw_response, ::Faraday::Response
21
+
22
+ field :headers, Crystalline::Hash.new(Symbol, Crystalline::Array.new(::String))
23
+ # The request completed successfully.
24
+ field :captures, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::Capture))
25
+
26
+ sig { params(content_type: ::String, status_code: ::Integer, raw_response: ::Faraday::Response, headers: T::Hash[Symbol, T::Array[::String]], captures: T.nilable(T::Array[Models::Components::Capture])).void }
27
+ def initialize(content_type:, status_code:, raw_response:, headers:, captures: nil)
28
+ @content_type = content_type
29
+ @status_code = status_code
30
+ @raw_response = raw_response
31
+ @headers = headers
32
+ @captures = captures
33
+ end
34
+
35
+ sig { params(other: T.untyped).returns(T::Boolean) }
36
+ def ==(other)
37
+ return false unless other.is_a? self.class
38
+ return false unless @content_type == other.content_type
39
+ return false unless @status_code == other.status_code
40
+ return false unless @raw_response == other.raw_response
41
+ return false unless @headers == other.headers
42
+ return false unless @captures == other.captures
43
+ true
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,21 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Operations::ListCapturesResponse
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Operations::ListCapturesResponse
11
+ def content_type(); end
12
+ def content_type=(str_); end
13
+ def status_code(); end
14
+ def status_code=(str_); end
15
+ def raw_response(); end
16
+ def raw_response=(str_); end
17
+ def headers(); end
18
+ def headers=(str_); end
19
+ def captures(); end
20
+ def captures=(str_); end
21
+ end
@@ -0,0 +1,48 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Operations
10
+
11
+ class ListIssuingMerchantCategoriesResponse
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # HTTP response content type for this operation
16
+ field :content_type, ::String
17
+ # HTTP response status code for this operation
18
+ field :status_code, ::Integer
19
+ # Raw HTTP response; suitable for custom response parsing
20
+ field :raw_response, ::Faraday::Response
21
+
22
+ field :headers, Crystalline::Hash.new(Symbol, Crystalline::Array.new(::String))
23
+ # The request completed successfully.
24
+ field :merchant_categories, Crystalline::Nilable.new(Models::Components::MerchantCategories)
25
+
26
+ sig { params(content_type: ::String, status_code: ::Integer, raw_response: ::Faraday::Response, headers: T::Hash[Symbol, T::Array[::String]], merchant_categories: T.nilable(Models::Components::MerchantCategories)).void }
27
+ def initialize(content_type:, status_code:, raw_response:, headers:, merchant_categories: nil)
28
+ @content_type = content_type
29
+ @status_code = status_code
30
+ @raw_response = raw_response
31
+ @headers = headers
32
+ @merchant_categories = merchant_categories
33
+ end
34
+
35
+ sig { params(other: T.untyped).returns(T::Boolean) }
36
+ def ==(other)
37
+ return false unless other.is_a? self.class
38
+ return false unless @content_type == other.content_type
39
+ return false unless @status_code == other.status_code
40
+ return false unless @raw_response == other.raw_response
41
+ return false unless @headers == other.headers
42
+ return false unless @merchant_categories == other.merchant_categories
43
+ true
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,21 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Operations::ListIssuingMerchantCategoriesResponse
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Operations::ListIssuingMerchantCategoriesResponse
11
+ def content_type(); end
12
+ def content_type=(str_); end
13
+ def status_code(); end
14
+ def status_code=(str_); end
15
+ def raw_response(); end
16
+ def raw_response=(str_); end
17
+ def headers(); end
18
+ def headers=(str_); end
19
+ def merchant_categories(); end
20
+ def merchant_categories=(str_); end
21
+ end
@@ -38,13 +38,15 @@ module Moov
38
38
  field :authorization_i_ds, Crystalline::Nilable.new(Crystalline::Array.new(::String)), { 'query_param': { 'field_name': 'authorizationIDs', 'style': 'form', 'explode': false } }
39
39
  # Optional comma-separated IDs to filter for transfers associated with specific card captures.
40
40
  field :capture_i_ds, Crystalline::Nilable.new(Crystalline::Array.new(::String)), { 'query_param': { 'field_name': 'captureIDs', 'style': 'form', 'explode': false } }
41
+ # Optional, comma-separated transfer types by which the response is filtered.
42
+ field :transfer_types, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::TransferType)), { 'query_param': { 'field_name': 'transferTypes', 'style': 'form', 'explode': false } }
41
43
 
42
44
  field :skip, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'skip', 'style': 'form', 'explode': false } }
43
45
 
44
46
  field :count, Crystalline::Nilable.new(::Integer), { 'query_param': { 'field_name': 'count', 'style': 'form', 'explode': false } }
45
47
 
46
- sig { params(account_id: ::String, account_i_ds: T.nilable(T::Array[::String]), status: T.nilable(Models::Components::TransferStatus), start_date_time: T.nilable(::DateTime), end_date_time: T.nilable(::DateTime), group_id: T.nilable(::String), schedule_id: T.nilable(::String), payment_link_code: T.nilable(::String), refunded: T.nilable(T::Boolean), disputed: T.nilable(T::Boolean), foreign_id: T.nilable(::String), authorization_i_ds: T.nilable(T::Array[::String]), capture_i_ds: T.nilable(T::Array[::String]), skip: T.nilable(::Integer), count: T.nilable(::Integer)).void }
47
- def initialize(account_id:, account_i_ds: nil, status: nil, start_date_time: nil, end_date_time: nil, group_id: nil, schedule_id: nil, payment_link_code: nil, refunded: nil, disputed: nil, foreign_id: nil, authorization_i_ds: nil, capture_i_ds: nil, skip: nil, count: nil)
48
+ sig { params(account_id: ::String, account_i_ds: T.nilable(T::Array[::String]), status: T.nilable(Models::Components::TransferStatus), start_date_time: T.nilable(::DateTime), end_date_time: T.nilable(::DateTime), group_id: T.nilable(::String), schedule_id: T.nilable(::String), payment_link_code: T.nilable(::String), refunded: T.nilable(T::Boolean), disputed: T.nilable(T::Boolean), foreign_id: T.nilable(::String), authorization_i_ds: T.nilable(T::Array[::String]), capture_i_ds: T.nilable(T::Array[::String]), transfer_types: T.nilable(T::Array[Models::Components::TransferType]), skip: T.nilable(::Integer), count: T.nilable(::Integer)).void }
49
+ def initialize(account_id:, account_i_ds: nil, status: nil, start_date_time: nil, end_date_time: nil, group_id: nil, schedule_id: nil, payment_link_code: nil, refunded: nil, disputed: nil, foreign_id: nil, authorization_i_ds: nil, capture_i_ds: nil, transfer_types: nil, skip: nil, count: nil)
48
50
  @account_id = account_id
49
51
  @account_i_ds = account_i_ds
50
52
  @status = status
@@ -58,6 +60,7 @@ module Moov
58
60
  @foreign_id = foreign_id
59
61
  @authorization_i_ds = authorization_i_ds
60
62
  @capture_i_ds = capture_i_ds
63
+ @transfer_types = transfer_types
61
64
  @skip = skip
62
65
  @count = count
63
66
  end
@@ -78,6 +81,7 @@ module Moov
78
81
  return false unless @foreign_id == other.foreign_id
79
82
  return false unless @authorization_i_ds == other.authorization_i_ds
80
83
  return false unless @capture_i_ds == other.capture_i_ds
84
+ return false unless @transfer_types == other.transfer_types
81
85
  return false unless @skip == other.skip
82
86
  return false unless @count == other.count
83
87
  true
@@ -34,6 +34,8 @@ class Moov::Models::Operations::ListTransfersRequest
34
34
  def authorization_i_ds=(str_); end
35
35
  def capture_i_ds(); end
36
36
  def capture_i_ds=(str_); end
37
+ def transfer_types(); end
38
+ def transfer_types=(str_); end
37
39
  def skip(); end
38
40
  def skip=(str_); end
39
41
  def count(); end
@@ -28,6 +28,8 @@ module Moov
28
28
  autoload :CreateBrandResponse, 'moov/models/operations/createbrand_response.rb'
29
29
  autoload :CreateCancellationRequest, 'moov/models/operations/createcancellation_request.rb'
30
30
  autoload :CreateCancellationResponse, 'moov/models/operations/createcancellation_response.rb'
31
+ autoload :CreateCaptureRequest, 'moov/models/operations/createcapture_request.rb'
32
+ autoload :CreateCaptureResponse, 'moov/models/operations/createcapture_response.rb'
31
33
  autoload :CreateDepositAccountRequest, 'moov/models/operations/createdepositaccount_request.rb'
32
34
  autoload :CreateDepositAccountResponse, 'moov/models/operations/createdepositaccount_response.rb'
33
35
  autoload :CreateFeePlanAgreementsRequest, 'moov/models/operations/createfeeplanagreements_request.rb'
@@ -118,6 +120,8 @@ module Moov
118
120
  autoload :GetCancellationResponse, 'moov/models/operations/getcancellation_response.rb'
119
121
  autoload :GetCapabilityRequest, 'moov/models/operations/getcapability_request.rb'
120
122
  autoload :GetCapabilityResponse, 'moov/models/operations/getcapability_response.rb'
123
+ autoload :GetCaptureRequest, 'moov/models/operations/getcapture_request.rb'
124
+ autoload :GetCaptureResponse, 'moov/models/operations/getcapture_response.rb'
121
125
  autoload :GetCardMetadataResponse, 'moov/models/operations/getcardmetadata_response.rb'
122
126
  autoload :GetCardRequest, 'moov/models/operations/getcard_request.rb'
123
127
  autoload :GetCardResponse, 'moov/models/operations/getcard_response.rb'
@@ -230,6 +234,8 @@ module Moov
230
234
  autoload :ListCancellationsResponse, 'moov/models/operations/listcancellations_response.rb'
231
235
  autoload :ListCapabilitiesRequest, 'moov/models/operations/listcapabilities_request.rb'
232
236
  autoload :ListCapabilitiesResponse, 'moov/models/operations/listcapabilities_response.rb'
237
+ autoload :ListCapturesRequest, 'moov/models/operations/listcaptures_request.rb'
238
+ autoload :ListCapturesResponse, 'moov/models/operations/listcaptures_response.rb'
233
239
  autoload :ListCardsRequest, 'moov/models/operations/listcards_request.rb'
234
240
  autoload :ListCardsResponse, 'moov/models/operations/listcards_response.rb'
235
241
  autoload :ListConnectedAccountsForAccountRequest, 'moov/models/operations/listconnectedaccountsforaccount_request.rb'
@@ -266,6 +272,7 @@ module Moov
266
272
  autoload :ListIssuedCardTransactionsResponse, 'moov/models/operations/listissuedcardtransactions_response.rb'
267
273
  autoload :ListIssuedCardsRequest, 'moov/models/operations/listissuedcards_request.rb'
268
274
  autoload :ListIssuedCardsResponse, 'moov/models/operations/listissuedcards_response.rb'
275
+ autoload :ListIssuingMerchantCategoriesResponse, 'moov/models/operations/listissuingmerchantcategories_response.rb'
269
276
  autoload :ListOnboardingInvitesResponse, 'moov/models/operations/listonboardinginvites_response.rb'
270
277
  autoload :ListPartnerPricingAgreementsRequest, 'moov/models/operations/listpartnerpricingagreements_request.rb'
271
278
  autoload :ListPartnerPricingAgreementsResponse, 'moov/models/operations/listpartnerpricingagreements_response.rb'
@@ -88,9 +88,9 @@ module Moov
88
88
  end
89
89
  @language = 'ruby'
90
90
  @openapi_doc_version = 'dev'
91
- @sdk_version = '0.0.0-dev.24'
91
+ @sdk_version = '0.0.0-dev.25'
92
92
  @gen_version = '2.924.0'
93
- @user_agent = 'speakeasy-sdk/ruby 0.0.0-dev.24 2.924.0 dev moov_ruby'
93
+ @user_agent = 'speakeasy-sdk/ruby 0.0.0-dev.25 2.924.0 dev moov_ruby'
94
94
  end
95
95
 
96
96
  sig { returns([String, T::Hash[Symbol, String]]) }