reapal 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -0
- data/lib/reapal.rb +2 -0
- data/lib/reapal/api/asset/tender_all_cancel.rb +64 -0
- data/lib/reapal/api/asset/tender_apply.rb +81 -0
- data/lib/reapal/api/asset/tender_auth_cancel.rb +66 -0
- data/lib/reapal/api/asset/tender_auth_query.rb +64 -0
- data/lib/reapal/api/asset/tender_finish.rb +78 -0
- data/lib/reapal/api/asset/tender_repayment_complete.rb +75 -0
- data/lib/reapal/api/asset/tender_repayment_project.rb +70 -0
- data/lib/reapal/api/error_codes.rb +46 -0
- data/lib/reapal/api/money/.keep +0 -0
- data/lib/reapal/api/order/.keep +0 -0
- data/lib/reapal/api/user/balance_query.rb +61 -0
- data/lib/reapal/api/user/bank_card_add_sms.rb +71 -0
- data/lib/reapal/api/user/bank_card_add_sms_again.rb +62 -0
- data/lib/reapal/api/user/bank_card_add_sms_confirm.rb +61 -0
- data/lib/reapal/api/user/bind_card_query.rb +67 -0
- data/lib/reapal/api/user/contract_query.rb +18 -0
- data/lib/reapal/api/user/mobile_query.rb +56 -0
- data/lib/reapal/api/{trust → user}/onekey_batch_contract.rb +8 -26
- data/lib/reapal/api/user/onekey_contract.rb +61 -0
- data/lib/reapal/api/user/undo_bind_bank_card.rb +60 -0
- data/lib/reapal/client.rb +6 -0
- data/lib/reapal/form/business_auth_form.rb +61 -0
- data/lib/reapal/form/find_trade_password_form.rb +48 -0
- data/lib/reapal/form/mobile_modify_form.rb +50 -0
- data/lib/reapal/form/signle_tender_transfer_form.rb +72 -0
- data/lib/reapal/form/tender_invest_form.rb +62 -0
- data/lib/reapal/form/tender_refund_form.rb +84 -0
- data/lib/reapal/form/withdraw_apply_form.rb +54 -0
- data/lib/reapal/http/communicate.rb +45 -20
- data/lib/reapal/http/response.rb +21 -0
- data/lib/reapal/utils.rb +16 -0
- data/lib/reapal/version.rb +1 -1
- metadata +29 -9
- data/lib/reapal/api/trust/balance_query.rb +0 -58
- data/lib/reapal/api/trust/contract_query.rb +0 -35
- data/lib/reapal/api/trust/find_trade_password.rb +0 -41
- data/lib/reapal/api/trust/mobile_modify.rb +0 -42
- data/lib/reapal/api/trust/onekey_contract.rb +0 -77
- data/lib/reapal/api/trust/withdraw_apply.rb +0 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dec4bffac163868bb8653e0a4a8c581805d972ee
|
4
|
+
data.tar.gz: c78c514b8ffaa353fb25cc192f540332863a74e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 95d1285c4361aa039f080c5a743295c21563c127eef94411ed2702f46c564ac94025b70388bcddbbd6e4b80c24c4fddb6f603aa475a985d8cfffccf1255a5051
|
7
|
+
data.tar.gz: f294e4e9588ed898361effef09cfea57b63a54bbe8c4b2b67a58e9872895763d18ff68d7e8248bf3820403c758b6d895a604ddf57721506b7e41ce55612b4567
|
data/.gitignore
CHANGED
data/lib/reapal.rb
CHANGED
@@ -20,6 +20,8 @@ require "reapal/http/communicate"
|
|
20
20
|
require "reapal/http/response"
|
21
21
|
# 自动加载所有 api
|
22
22
|
Dir["#{File.dirname(__FILE__)}/reapal/api/**/*.rb"].each { |file| require file }
|
23
|
+
# 自动加载所有 form
|
24
|
+
Dir["#{File.dirname(__FILE__)}/reapal/form/**/*.rb"].each { |file| require file }
|
23
25
|
|
24
26
|
require "reapal/client"
|
25
27
|
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module Reapal
|
4
|
+
module Api
|
5
|
+
module Asset
|
6
|
+
module TenderAllCancel
|
7
|
+
|
8
|
+
# 3.7 撤标
|
9
|
+
#
|
10
|
+
# @param flow_id [String] 撤标订单号
|
11
|
+
# @param tender_no [String] 商户系统标的号
|
12
|
+
# @param org_order_no [String] 原来投标时订单号
|
13
|
+
# @param busway [String] 设备通道, '00':PC端;'01':手机端(默认);'02':Pad端;'03':其它
|
14
|
+
# @param remark [String] 备注
|
15
|
+
#
|
16
|
+
# @return [ Hash ] 结果集
|
17
|
+
# * :result [String] 业务结果:'S/F/P'
|
18
|
+
# * :request_params [Hash] 请求参数
|
19
|
+
# * :response [Object] 请求返回对象
|
20
|
+
# * :error_code [String] 错误代号
|
21
|
+
# * :error_msg [String] 错误信息
|
22
|
+
# * :data: 具体业务返回信息
|
23
|
+
# * :orderNo [String] 撤销订单号
|
24
|
+
# * :resultCode [String] 结果代码
|
25
|
+
#
|
26
|
+
def tender_all_cancel(flow_id, tender_no, org_order_no, busway="01", remark='')
|
27
|
+
service = 'reapal.trust.tenderAllCancel'
|
28
|
+
post_path = '/reagw/tender/rest.htm'
|
29
|
+
|
30
|
+
params = {
|
31
|
+
orderNo: flow_id,
|
32
|
+
tenderNo: tender_no,
|
33
|
+
orgOrderNo: org_order_no,
|
34
|
+
busway: busway,
|
35
|
+
remark: remark,
|
36
|
+
applyTime: Time.now.strftime('%Y-%m-%d %H:%M:%S'),
|
37
|
+
}
|
38
|
+
|
39
|
+
response = Http.post(service, params, @config, post_path)
|
40
|
+
|
41
|
+
res = Reapal::Utils.api_result(params, response)
|
42
|
+
|
43
|
+
return res if response.http_pending? # 比如超时等操作
|
44
|
+
|
45
|
+
if Reapal::Api::ErrorCode.tender_cancel.include?(response.data[:resultCode])
|
46
|
+
res[:result] = "F"
|
47
|
+
return res
|
48
|
+
end
|
49
|
+
|
50
|
+
# 只有返回码是 '0000'撤标才成功
|
51
|
+
if ['0000'].include?(response.data[:resultCode])
|
52
|
+
res[:result] = "S"
|
53
|
+
return res
|
54
|
+
end
|
55
|
+
|
56
|
+
# 不能确定的错误 ,pending
|
57
|
+
res
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
end # module TenderAllCancel
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module Reapal
|
4
|
+
module Api
|
5
|
+
module Asset
|
6
|
+
module TenderApply
|
7
|
+
|
8
|
+
# 3.1 发标
|
9
|
+
#
|
10
|
+
# @param flow_id [String] 发标订单号
|
11
|
+
# @param tender_no [String] 商户系统标的号
|
12
|
+
# @param tender_name [String] 商户系统标的名称
|
13
|
+
# @param money [BigDecimal] 金额
|
14
|
+
# @param rate [BigDecimal] 利率 10.3表示10.3%
|
15
|
+
# @param debit_term [BigDecimal] 标的期限
|
16
|
+
# @param debit_type [String] 期数类型,年:0,月:1,日:2
|
17
|
+
# @param repay_date [String] 还款日期,格式YYYYMMDD
|
18
|
+
# @param expiry_date [String] 投标截止日期,格式YYYYMMDD
|
19
|
+
# @param debit_contracts [String] 借款方协议号
|
20
|
+
# @param guarant_contract [String] 担保方协议号
|
21
|
+
# @param busway [String] 设备通道, '00':PC端;'01':手机端(默认);'02':Pad端;'03':其它
|
22
|
+
# @param remark [String] 备注
|
23
|
+
#
|
24
|
+
# @return [ Hash ] 结果集
|
25
|
+
# * :result [String] 业务结果:'S/F/P'
|
26
|
+
# * :request_params [Hash] 请求参数
|
27
|
+
# * :response [Object] 请求返回对象
|
28
|
+
# * :error_code [String] 错误代号
|
29
|
+
# * :error_msg [String] 错误信息
|
30
|
+
# * :data: 具体业务返回信息
|
31
|
+
# * :orderNo [String] 发标订单号
|
32
|
+
# * :resultCode [String] 结果代码
|
33
|
+
#
|
34
|
+
def tender_apply(flow_id, tender_no, tender_name, money, rate,
|
35
|
+
debit_term, debit_type, rapay_date, expiry_date,
|
36
|
+
debit_contracts, guarant_contract, busway='01', remark='')
|
37
|
+
service = 'reapal.trust.tenderApply'
|
38
|
+
post_path = '/reagw/tender/rest.htm'
|
39
|
+
|
40
|
+
params = {
|
41
|
+
orderNo: flow_id,
|
42
|
+
tenderNo: tender_no,
|
43
|
+
tenderName: tender_name,
|
44
|
+
amount: money,
|
45
|
+
rate: rate,
|
46
|
+
debitTerm: debit_term,
|
47
|
+
debitType: debit_type,
|
48
|
+
expiryDate: expiry_date,
|
49
|
+
debitContracts: debit_contracts,
|
50
|
+
guarantContract: guarant_contract,
|
51
|
+
busway: busway,
|
52
|
+
remark: remark,
|
53
|
+
applyTime: Time.now.strftime('%Y-%m-%d %H:%M:%S'),
|
54
|
+
}
|
55
|
+
|
56
|
+
response = Http.post(service, params, @config, post_path)
|
57
|
+
|
58
|
+
res = Reapal::Utils.api_result(params, response)
|
59
|
+
|
60
|
+
#非返回类错误
|
61
|
+
return res if response.http_pending? # 比如超时等操作
|
62
|
+
|
63
|
+
# 只有返回码是 '0000'发标才成功
|
64
|
+
if ['0000'].include?(response.data[:resultCode])
|
65
|
+
res[:result] = "S"
|
66
|
+
end
|
67
|
+
|
68
|
+
#确定的错误
|
69
|
+
if Reapal::Api::ErrorCode.tender_apply.include?(response.data[:resultCode])
|
70
|
+
res[:result] = "F"
|
71
|
+
return res
|
72
|
+
end
|
73
|
+
|
74
|
+
# 不能确定的错误 ,pending
|
75
|
+
res
|
76
|
+
end
|
77
|
+
|
78
|
+
end # module TenderApply
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module Reapal
|
4
|
+
module Api
|
5
|
+
module Asset
|
6
|
+
module TenderAuthCancel
|
7
|
+
|
8
|
+
# 3.22 标的授权取消API
|
9
|
+
#
|
10
|
+
# @param flow_id [String] 订单号
|
11
|
+
# @param contracts [ String ] 用户协议号
|
12
|
+
# @param services [String] 授权业务。 02一键投标 ,03 为一键还款 04 一键债转
|
13
|
+
# @param tender_no [String] 标的号
|
14
|
+
# @param busway [String] 设备通道, '00':PC端;'01':手机端(默认);'02':Pad端;'03':其它
|
15
|
+
# @param remark [String] 备注
|
16
|
+
#
|
17
|
+
# @return [ Hash ] 结果集
|
18
|
+
# * :result [String] 业务结果:'S/F/P'
|
19
|
+
# * :request_params [Hash] 请求参数
|
20
|
+
# * :response [Object] 请求返回对象
|
21
|
+
# * :error_code [String] 错误代号
|
22
|
+
# * :error_msg [String] 错误信息
|
23
|
+
# * :data: 具体业务返回信息
|
24
|
+
# * :services [String] 授权业务。 02一键投标 ,03 为一键还款 04 一键债转
|
25
|
+
# * :resultCode [String] 结果代码
|
26
|
+
#
|
27
|
+
def tender_auth_cancel(flow_id, contracts, services, tender_no, busway="01", remark='')
|
28
|
+
service = 'reapal.trust.authCancel'
|
29
|
+
post_path = '/reagw/user/restApi.htm'
|
30
|
+
|
31
|
+
params = {
|
32
|
+
cancelOrderNo: flow_id,
|
33
|
+
contracts: contracts,
|
34
|
+
services: services,
|
35
|
+
busway: busway,
|
36
|
+
tenderNo: tender_no,
|
37
|
+
remark: remark,
|
38
|
+
applyTime: Time.now.strftime('%Y-%m-%d %H:%M:%S'),
|
39
|
+
}
|
40
|
+
|
41
|
+
response = Http.post(service, params, @config, post_path)
|
42
|
+
|
43
|
+
res = Reapal::Utils.api_result(params, response)
|
44
|
+
|
45
|
+
return res if response.http_pending? # 比如超时等操作
|
46
|
+
|
47
|
+
if Reapal::Api::ErrorCode.tender_auth_cancel.include?(response.data[:resultCode])
|
48
|
+
res[:result] = "F"
|
49
|
+
return res
|
50
|
+
end
|
51
|
+
|
52
|
+
# 只有返回码是 '0000'撤标才成功
|
53
|
+
if ['0000'].include?(response.data[:resultCode])
|
54
|
+
res[:result] = "S"
|
55
|
+
return res
|
56
|
+
end
|
57
|
+
|
58
|
+
# 不能确定的错误 ,pending
|
59
|
+
res
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
end # module TenderAuthCancel
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module Reapal
|
4
|
+
module Api
|
5
|
+
module Asset
|
6
|
+
module TenderAuthQuery
|
7
|
+
|
8
|
+
# 3.21 标的授权查询
|
9
|
+
#
|
10
|
+
# @param flow_id [String] 操作订单号
|
11
|
+
# @param contracts [String] 用户协议号
|
12
|
+
|
13
|
+
|
14
|
+
# @return [ Hash ] 结果集
|
15
|
+
# * :result [String] 业务结果:'S/F/P'
|
16
|
+
# * :request_params [Hash] 请求参数
|
17
|
+
# * :response [Object] 请求返回对象
|
18
|
+
# * :error_code [String] 错误代号
|
19
|
+
# * :error_msg [String] 错误信息
|
20
|
+
# * :data: 具体业务返回信息
|
21
|
+
# * :orderNo [String] 操作订单号
|
22
|
+
# * :contracts [String] 用户协议号
|
23
|
+
# * :servicesDetail [JSON] 授权明细
|
24
|
+
# * :services [String] 授权服务。 02一键投标 ,03 为一键还款 04 一键债转
|
25
|
+
# * :authLimit [String] 授权期限日期 YYYYMMDD
|
26
|
+
# * :terderNo [String] 标的号
|
27
|
+
|
28
|
+
def tender_auth_query(flow_id, contracts)
|
29
|
+
service = 'reapal.trust.authQuery'
|
30
|
+
post_path = '/reagw/user/restApi.htm'
|
31
|
+
|
32
|
+
params = {
|
33
|
+
orderNo: flow_id,
|
34
|
+
contracts: contracts,
|
35
|
+
queryTime: Time.now.strftime('%Y-%m-%d %H:%M:%S'),
|
36
|
+
}
|
37
|
+
|
38
|
+
response = Http.post(service, params, @config, post_path)
|
39
|
+
|
40
|
+
res = Reapal::Utils.api_result(params, response)
|
41
|
+
|
42
|
+
#查询类 api,http 没成功都返回 pending
|
43
|
+
return res if response.http_success?
|
44
|
+
|
45
|
+
#确定的错误
|
46
|
+
if Reapal::Api::ErrorCode.tender_auth_query.include?(response.data[:resultCode])
|
47
|
+
res[:result] = "F"
|
48
|
+
return res
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
# 其余 api 错误不知道
|
53
|
+
return res unless response.data[:errorCode].nil?
|
54
|
+
|
55
|
+
#查询成功
|
56
|
+
res[:result] = "S"
|
57
|
+
|
58
|
+
res
|
59
|
+
end
|
60
|
+
|
61
|
+
end # module TenderAuthQuery
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module Reapal
|
4
|
+
module Api
|
5
|
+
module Asset
|
6
|
+
module TenderFinish
|
7
|
+
|
8
|
+
# 3.8 满标 API
|
9
|
+
#
|
10
|
+
# @param flow_id [String] 完成订单号
|
11
|
+
# @param tender_no [String] 商户系统标的号
|
12
|
+
# @param debit_contracts [String] 借款方协议号
|
13
|
+
# @param debit_details [JSON] 借款方分账
|
14
|
+
# *seria_no [String] 商户流水号
|
15
|
+
# *payee_contracts [String] 收款方协议号
|
16
|
+
# *amount [BigDecimal] 金额
|
17
|
+
# *remark [String] 备注
|
18
|
+
# @param invest_details [JSON] 投资方分账
|
19
|
+
# *seria_no [String] 商户流水号
|
20
|
+
# *invest_contracts [String] 投资方协议号
|
21
|
+
# *payee_contracts [String] 收款方协议号
|
22
|
+
# *amount [BigDecimal] 金额
|
23
|
+
# *remark [String] 备注
|
24
|
+
# @param busway [String] 设备通道, '00':PC端;'01':手机端(默认);'02':Pad端;'03':其它
|
25
|
+
# @param remark [String] 备注
|
26
|
+
#
|
27
|
+
# @return [ Hash ] 结果集
|
28
|
+
# * :result [String] 业务结果:'S/F/P'
|
29
|
+
# * :request_params [Hash] 请求参数
|
30
|
+
# * :response [Object] 请求返回对象
|
31
|
+
# * :error_code [String] 错误代号
|
32
|
+
# * :error_msg [String] 错误信息
|
33
|
+
# * :data: 具体业务返回信息
|
34
|
+
# * :orderNo [String] 完成订单号
|
35
|
+
# * :resultCode [String] 结果代码
|
36
|
+
#
|
37
|
+
def tender_finish(flow_id, tender_no, debit_contracts, debit_details,
|
38
|
+
invest_details, busway='01', remark='')
|
39
|
+
service = 'reapal.trust.tenderFinish'
|
40
|
+
post_path = '/reagw/tender/rest.htm'
|
41
|
+
|
42
|
+
params = {
|
43
|
+
orderNo: flow_id,
|
44
|
+
tenderNo: tender_no,
|
45
|
+
debitContracts: debit_contracts,
|
46
|
+
debitDetails: debit_details,
|
47
|
+
investDetails: invest_details,
|
48
|
+
busway: busway,
|
49
|
+
remark: remark,
|
50
|
+
applyTime: Time.now.strftime('%Y-%m-%d %H:%M:%S'),
|
51
|
+
}
|
52
|
+
|
53
|
+
response = Http.post(service, params, @config, post_path)
|
54
|
+
|
55
|
+
res = Reapal::Utils.api_result(params, response)
|
56
|
+
|
57
|
+
#非返回类错误
|
58
|
+
return res if response.http_pending? # 比如超时等操作
|
59
|
+
|
60
|
+
# 只有返回码是 '0000'发标才成功
|
61
|
+
if ['0000'].include?(response.data[:resultCode])
|
62
|
+
res[:result] = "S"
|
63
|
+
end
|
64
|
+
|
65
|
+
#确定的错误
|
66
|
+
if Reapal::Api::ErrorCode.tender_finish.include?(response.data[:resultCode])
|
67
|
+
res[:result] = "F"
|
68
|
+
return res
|
69
|
+
end
|
70
|
+
|
71
|
+
# 不能确定的错误 ,pending
|
72
|
+
res
|
73
|
+
end
|
74
|
+
|
75
|
+
end # module TenderFinish
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module Reapal
|
4
|
+
module Api
|
5
|
+
module Asset
|
6
|
+
module TenderRepaymentComplete
|
7
|
+
|
8
|
+
# 3.15 还款计划更新(API)
|
9
|
+
#
|
10
|
+
# @param flow_id [String] 执行还款计划订单号
|
11
|
+
# @param tender_no [String] 商户系统标的号
|
12
|
+
# @param periods [String] 还款期数
|
13
|
+
# @param comp_principal [BigDecimal] 执行还款本金
|
14
|
+
# @param comp_interest [BigDecimal] 执行还款利息
|
15
|
+
# @param comp_poundage [BigDecimal] 执行还款手续费
|
16
|
+
# @param comp_amount [BigDecimal] 执行还款总金额
|
17
|
+
# @param comp_time [String] 执行还款日期
|
18
|
+
# @param busway [String] 设备通道, '00':PC端;'01':手机端(默认);'02':Pad端;'03':其它
|
19
|
+
# @param remark [String] 备注
|
20
|
+
|
21
|
+
# @return [ Hash ] 结果集
|
22
|
+
# * :result [String] 业务结果:'S/F/P'
|
23
|
+
# * :request_params [Hash] 请求参数
|
24
|
+
# * :response [Object] 请求返回对象
|
25
|
+
# * :error_code [String] 错误代号
|
26
|
+
# * :error_msg [String] 错误信息
|
27
|
+
# * :data: 具体业务返回信息
|
28
|
+
# * :orderNo [String] 执行还款订单号
|
29
|
+
# * :resultCode [String] 结果代码
|
30
|
+
#
|
31
|
+
def tender_repayment_complete(flow_id, tender_no, periods, comp_principal, comp_interest,
|
32
|
+
comp_poundage, comp_amount, comp_time, busway='01', remark='')
|
33
|
+
service = 'reapal.trust.repaymentComplete'
|
34
|
+
post_path = '/reagw/tender/rest.htm'
|
35
|
+
|
36
|
+
params = {
|
37
|
+
orderNo: flow_id,
|
38
|
+
tenderNo: tender_no,
|
39
|
+
periods: periods,
|
40
|
+
compPrincipal: comp_principal,
|
41
|
+
compInterest: comp_interest,
|
42
|
+
compPoundage: comp_poundage,
|
43
|
+
compAmount: comp_amount,
|
44
|
+
compTime: comp_time,
|
45
|
+
busway: busway,
|
46
|
+
remark: remark,
|
47
|
+
applyTime: Time.now.strftime('%Y-%m-%d %H:%M:%S'),
|
48
|
+
}
|
49
|
+
|
50
|
+
response = Http.post(service, params, @config, post_path)
|
51
|
+
|
52
|
+
res = Reapal::Utils.api_result(params, response)
|
53
|
+
|
54
|
+
#非返回类错误
|
55
|
+
return res if response.http_pending? # 比如超时等操作
|
56
|
+
|
57
|
+
# 只有返回码是 '0000'还款信息同步成功
|
58
|
+
if ['0000'].include?(response.data[:resultCode])
|
59
|
+
res[:result] = "S"
|
60
|
+
end
|
61
|
+
|
62
|
+
#确定的错误
|
63
|
+
if Reapal::Api::ErrorCode.tender_repayment_complete.include?(response.data[:resultCode])
|
64
|
+
res[:result] = "F"
|
65
|
+
return res
|
66
|
+
end
|
67
|
+
|
68
|
+
# 不能确定的错误 ,pending
|
69
|
+
res
|
70
|
+
end
|
71
|
+
|
72
|
+
end # module TenderRepaymentComplete
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|