oddb2xml 1.4.2 → 1.4.3
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.
- data/Gemfile +1 -1
- data/History.txt +6 -0
- data/Rakefile +1 -1
- data/lib/oddb2xml/builder.rb +4 -4
- data/lib/oddb2xml/version.rb +1 -1
- data/spec/cli_spec.rb +32 -30
- data/spec/spec_helper.rb +6 -4
- metadata +115 -171
data/Gemfile
CHANGED
data/History.txt
CHANGED
data/Rakefile
CHANGED
@@ -21,7 +21,7 @@ Hoe.spec 'oddb2xml' do
|
|
21
21
|
# gem.add_runtime_dependency
|
22
22
|
self.extra_deps << ['rubyzip']
|
23
23
|
self.extra_deps << ['archive-tar-minitar']
|
24
|
-
self.extra_deps << ['mechanize']
|
24
|
+
self.extra_deps << ['mechanize', '~> 2.5.1']
|
25
25
|
self.extra_deps << ['nokogiri']
|
26
26
|
self.extra_deps << ['savon', '>= 2.0']
|
27
27
|
self.extra_deps << ['spreadsheet']
|
data/lib/oddb2xml/builder.rb
CHANGED
@@ -846,12 +846,12 @@ module Oddb2xml
|
|
846
846
|
price = price_str.split('.')
|
847
847
|
pre = ''
|
848
848
|
las = ''
|
849
|
-
pre = "%0#{int_len}d" % (price[0] ? price[0]
|
849
|
+
pre = "%0#{int_len}d" % (price[0] ? price[0] : '0')
|
850
850
|
las = if price[1]
|
851
|
-
if price[1].
|
852
|
-
price[1]
|
851
|
+
if price[1].size < frac_len
|
852
|
+
price[1] + "0"*(frac_len-price[2].to_s.size)
|
853
853
|
else
|
854
|
-
price[1]
|
854
|
+
price[1][0,frac_len]
|
855
855
|
end
|
856
856
|
else
|
857
857
|
'0'*frac_len
|
data/lib/oddb2xml/version.rb
CHANGED
data/spec/cli_spec.rb
CHANGED
@@ -2,6 +2,22 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
+
# for stdout/stderr on ruby 1.8.7
|
6
|
+
# $stdout.should_receive(:puts).with() does not work
|
7
|
+
module Kernel
|
8
|
+
def capture(stream)
|
9
|
+
begin
|
10
|
+
stream = stream.to_s
|
11
|
+
eval "$#{stream} = StringIO.new"
|
12
|
+
yield
|
13
|
+
result = eval("$#{stream}").string
|
14
|
+
ensure
|
15
|
+
eval "$#{stream} = #{stream.upcase}"
|
16
|
+
end
|
17
|
+
result
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
5
21
|
RSpec::Matchers.define :have_option do |option|
|
6
22
|
match do |interface|
|
7
23
|
key = option.keys.first
|
@@ -15,18 +31,16 @@ RSpec::Matchers.define :have_option do |option|
|
|
15
31
|
end
|
16
32
|
|
17
33
|
shared_examples_for 'any interface for product' do
|
18
|
-
it { cli.should respond_to(:run)
|
34
|
+
it { capture(:stdout) { cli.should respond_to(:run) } }
|
19
35
|
it 'should run successfully' do
|
20
|
-
|
21
|
-
cli.run
|
36
|
+
capture(:stdout){ cli.run }.should match(/products/)
|
22
37
|
end
|
23
38
|
end
|
24
39
|
|
25
40
|
shared_examples_for 'any interface for address' do
|
26
|
-
it { cli.should respond_to(:run)
|
41
|
+
it { capture(:stdout) { cli.should respond_to(:run) } }
|
27
42
|
it 'should run successfully' do
|
28
|
-
|
29
|
-
cli.run
|
43
|
+
capture(:stdout){ cli.run }.should match(/addresses/)
|
30
44
|
end
|
31
45
|
end
|
32
46
|
|
@@ -51,14 +65,12 @@ describe Oddb2xml::Cli do
|
|
51
65
|
cli.should have_option(:compress_ext => 'tar.gz')
|
52
66
|
end
|
53
67
|
it 'should create tar.gz file' do
|
54
|
-
|
55
|
-
cli.run
|
68
|
+
capture(:stdout) { cli.run }.should match(/Pharma/)
|
56
69
|
file = Dir.glob('oddb_*.tar.gz').first
|
57
70
|
File.exists?(file).should be_true
|
58
71
|
end
|
59
72
|
it 'should not create any xml file' do
|
60
|
-
|
61
|
-
cli.run
|
73
|
+
capture(:stdout) { cli.run }.should match(/Pharma/)
|
62
74
|
Dir.glob('oddb_*.xml').each do |file|
|
63
75
|
File.exists?(file).should be_nil
|
64
76
|
end
|
@@ -85,14 +97,12 @@ describe Oddb2xml::Cli do
|
|
85
97
|
cli.should have_option(:compress_ext => 'zip')
|
86
98
|
end
|
87
99
|
it 'should create zip file' do
|
88
|
-
|
89
|
-
cli.run
|
100
|
+
capture(:stdout) { cli.run }.should match(/Pharma/)
|
90
101
|
file = Dir.glob('oddb_*.zip').first
|
91
102
|
File.exists?(file).should be_true
|
92
103
|
end
|
93
104
|
it 'should not create any xml file' do
|
94
|
-
|
95
|
-
cli.run
|
105
|
+
capture(:stdout) { cli.run }.should match(/Pharma/)
|
96
106
|
Dir.glob('oddb_*.xml').each do |file|
|
97
107
|
File.exists?(file).should be_nil
|
98
108
|
end
|
@@ -119,14 +129,12 @@ describe Oddb2xml::Cli do
|
|
119
129
|
cli.should have_option(:nonpharma => true)
|
120
130
|
end
|
121
131
|
it 'should not create any compressed file' do
|
122
|
-
|
123
|
-
cli.run
|
132
|
+
capture(:stdout) { cli.run }.should match(/NonPharma/)
|
124
133
|
Dir.glob('oddb_*.tar.gz').first.should be_nil
|
125
134
|
Dir.glob('oddb_*.zip').first.should be_nil
|
126
135
|
end
|
127
136
|
it 'should create xml files' do
|
128
|
-
|
129
|
-
cli.run
|
137
|
+
capture(:stdout) { cli.run }.should match(/NonPharma/)
|
130
138
|
expected = [
|
131
139
|
'oddb_product.xml',
|
132
140
|
'oddb_article.xml',
|
@@ -161,14 +169,12 @@ describe Oddb2xml::Cli do
|
|
161
169
|
cli.should have_option(:tag_suffix=> '_SWISS')
|
162
170
|
end
|
163
171
|
it 'should not create any compressed file' do
|
164
|
-
|
165
|
-
cli.run
|
172
|
+
capture(:stdout) { cli.run }.should match(/Pharma/)
|
166
173
|
Dir.glob('oddb_*.tar.gz').first.should be_nil
|
167
174
|
Dir.glob('oddb_*.zip').first.should be_nil
|
168
175
|
end
|
169
176
|
it 'should create xml files with prefix swiss_' do
|
170
|
-
|
171
|
-
cli.run
|
177
|
+
capture(:stdout) { cli.run }.should match(/Pharma/)
|
172
178
|
expected = [
|
173
179
|
'swiss_product.xml',
|
174
180
|
'swiss_article.xml',
|
@@ -203,14 +209,12 @@ describe Oddb2xml::Cli do
|
|
203
209
|
cli.should have_option(:fi => true)
|
204
210
|
end
|
205
211
|
it 'should not create any compressed file' do
|
206
|
-
|
207
|
-
cli.run
|
212
|
+
capture(:stdout) { cli.run }.should match(/Pharma/)
|
208
213
|
Dir.glob('oddb_*.tar.gz').first.should be_nil
|
209
214
|
Dir.glob('oddb_*.zip').first.should be_nil
|
210
215
|
end
|
211
216
|
it 'should create xml files' do
|
212
|
-
|
213
|
-
cli.run
|
217
|
+
capture(:stdout) { cli.run }.should match(/Pharma/)
|
214
218
|
expected = [
|
215
219
|
'oddb_fi.xml',
|
216
220
|
'oddb_fi_product.xml',
|
@@ -247,14 +251,12 @@ describe Oddb2xml::Cli do
|
|
247
251
|
cli.should have_option(:address=> true)
|
248
252
|
end
|
249
253
|
it 'should not create any compressed file' do
|
250
|
-
|
251
|
-
cli.run
|
254
|
+
capture(:stdout) { cli.run }.should match(/addresses/)
|
252
255
|
Dir.glob('oddb_*.tar.gz').first.should be_nil
|
253
256
|
Dir.glob('oddb_*.zip').first.should be_nil
|
254
257
|
end
|
255
258
|
it 'should create xml files' do
|
256
|
-
|
257
|
-
cli.run
|
259
|
+
capture(:stdout) { cli.run }.should match(/addresses/)
|
258
260
|
expected = [
|
259
261
|
'oddb_betrieb.xml',
|
260
262
|
'oddb_medizinalperson.xml',
|
data/spec/spec_helper.rb
CHANGED
@@ -49,8 +49,9 @@ module ServerMockHelper
|
|
49
49
|
stub_response = File.read(File.expand_path("../data/wsdl_#{type.downcase}.xml", __FILE__))
|
50
50
|
stub_request(:get, stub_wsdl_url).
|
51
51
|
with(:headers => {
|
52
|
-
'Accept'
|
53
|
-
'
|
52
|
+
'Accept' => '*/*',
|
53
|
+
#'Host' => 'ws.e-mediat.net'
|
54
|
+
}).
|
54
55
|
to_return(
|
55
56
|
:status => 200,
|
56
57
|
:headers => {'Content-Type' => 'text/xml; charset=utf-8'},
|
@@ -60,8 +61,9 @@ module ServerMockHelper
|
|
60
61
|
stub_response = File.read(File.expand_path("../data/swissindex_#{type.downcase}.xml", __FILE__))
|
61
62
|
stub_request(:post, stub_soap_url).
|
62
63
|
with(:headers => {
|
63
|
-
'Accept'
|
64
|
-
'
|
64
|
+
'Accept' => '*/*',
|
65
|
+
#'Host' => 'example.com'
|
66
|
+
}).
|
65
67
|
to_return(
|
66
68
|
:status => 200,
|
67
69
|
:headers => {'Content-Type' => 'text/xml; chaprset=utf-8'},
|
metadata
CHANGED
@@ -1,204 +1,157 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: oddb2xml
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.4.3
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 4
|
9
|
-
- 2
|
10
|
-
version: 1.4.2
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Yasuhiro Asaka, Zeno R.R. Davatz
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2013-02-18 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: rubyzip
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &10008000 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
32
22
|
type: :runtime
|
33
|
-
version_requirements: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: archive-tar-minitar
|
36
23
|
prerelease: false
|
37
|
-
|
24
|
+
version_requirements: *10008000
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: archive-tar-minitar
|
27
|
+
requirement: &10005780 !ruby/object:Gem::Requirement
|
38
28
|
none: false
|
39
|
-
requirements:
|
40
|
-
- -
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
|
43
|
-
segments:
|
44
|
-
- 0
|
45
|
-
version: "0"
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
46
33
|
type: :runtime
|
47
|
-
version_requirements: *id002
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: mechanize
|
50
34
|
prerelease: false
|
51
|
-
|
35
|
+
version_requirements: *10005780
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: mechanize
|
38
|
+
requirement: &10003560 !ruby/object:Gem::Requirement
|
52
39
|
none: false
|
53
|
-
requirements:
|
54
|
-
- -
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
|
57
|
-
segments:
|
58
|
-
- 0
|
59
|
-
version: "0"
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 2.5.1
|
60
44
|
type: :runtime
|
61
|
-
version_requirements: *id003
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: nokogiri
|
64
45
|
prerelease: false
|
65
|
-
|
46
|
+
version_requirements: *10003560
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: nokogiri
|
49
|
+
requirement: &10001120 !ruby/object:Gem::Requirement
|
66
50
|
none: false
|
67
|
-
requirements:
|
68
|
-
- -
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
|
71
|
-
segments:
|
72
|
-
- 0
|
73
|
-
version: "0"
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
74
55
|
type: :runtime
|
75
|
-
version_requirements: *id004
|
76
|
-
- !ruby/object:Gem::Dependency
|
77
|
-
name: savon
|
78
56
|
prerelease: false
|
79
|
-
|
57
|
+
version_requirements: *10001120
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: savon
|
60
|
+
requirement: &9999560 !ruby/object:Gem::Requirement
|
80
61
|
none: false
|
81
|
-
requirements:
|
82
|
-
- -
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
|
85
|
-
segments:
|
86
|
-
- 2
|
87
|
-
- 0
|
88
|
-
version: "2.0"
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '2.0'
|
89
66
|
type: :runtime
|
90
|
-
version_requirements: *id005
|
91
|
-
- !ruby/object:Gem::Dependency
|
92
|
-
name: spreadsheet
|
93
67
|
prerelease: false
|
94
|
-
|
68
|
+
version_requirements: *9999560
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: spreadsheet
|
71
|
+
requirement: &9998780 !ruby/object:Gem::Requirement
|
95
72
|
none: false
|
96
|
-
requirements:
|
97
|
-
- -
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
|
100
|
-
segments:
|
101
|
-
- 0
|
102
|
-
version: "0"
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
103
77
|
type: :runtime
|
104
|
-
version_requirements: *id006
|
105
|
-
- !ruby/object:Gem::Dependency
|
106
|
-
name: rspec
|
107
78
|
prerelease: false
|
108
|
-
|
79
|
+
version_requirements: *9998780
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: rspec
|
82
|
+
requirement: &9998020 !ruby/object:Gem::Requirement
|
109
83
|
none: false
|
110
|
-
requirements:
|
111
|
-
- -
|
112
|
-
- !ruby/object:Gem::Version
|
113
|
-
|
114
|
-
segments:
|
115
|
-
- 0
|
116
|
-
version: "0"
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
117
88
|
type: :development
|
118
|
-
version_requirements: *id007
|
119
|
-
- !ruby/object:Gem::Dependency
|
120
|
-
name: webmock
|
121
89
|
prerelease: false
|
122
|
-
|
90
|
+
version_requirements: *9998020
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: webmock
|
93
|
+
requirement: &9996860 !ruby/object:Gem::Requirement
|
123
94
|
none: false
|
124
|
-
requirements:
|
125
|
-
- -
|
126
|
-
- !ruby/object:Gem::Version
|
127
|
-
|
128
|
-
segments:
|
129
|
-
- 0
|
130
|
-
version: "0"
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
131
99
|
type: :development
|
132
|
-
version_requirements: *id008
|
133
|
-
- !ruby/object:Gem::Dependency
|
134
|
-
name: hoe
|
135
100
|
prerelease: false
|
136
|
-
|
101
|
+
version_requirements: *9996860
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: hoe
|
104
|
+
requirement: &9996000 !ruby/object:Gem::Requirement
|
137
105
|
none: false
|
138
|
-
requirements:
|
139
|
-
- -
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
|
142
|
-
segments:
|
143
|
-
- 3
|
144
|
-
- 4
|
145
|
-
version: "3.4"
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '3.4'
|
146
110
|
type: :development
|
147
|
-
version_requirements: *id009
|
148
|
-
- !ruby/object:Gem::Dependency
|
149
|
-
name: rdoc
|
150
111
|
prerelease: false
|
151
|
-
|
112
|
+
version_requirements: *9996000
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: rdoc
|
115
|
+
requirement: &9995300 !ruby/object:Gem::Requirement
|
152
116
|
none: false
|
153
|
-
requirements:
|
154
|
-
- -
|
155
|
-
- !ruby/object:Gem::Version
|
156
|
-
|
157
|
-
segments:
|
158
|
-
- 0
|
159
|
-
version: "0"
|
117
|
+
requirements:
|
118
|
+
- - ! '>='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
160
121
|
type: :development
|
161
|
-
version_requirements: *id010
|
162
|
-
- !ruby/object:Gem::Dependency
|
163
|
-
name: rdoc
|
164
122
|
prerelease: false
|
165
|
-
|
123
|
+
version_requirements: *9995300
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: rdoc
|
126
|
+
requirement: &9994120 !ruby/object:Gem::Requirement
|
166
127
|
none: false
|
167
|
-
requirements:
|
128
|
+
requirements:
|
168
129
|
- - ~>
|
169
|
-
- !ruby/object:Gem::Version
|
170
|
-
|
171
|
-
segments:
|
172
|
-
- 3
|
173
|
-
- 10
|
174
|
-
version: "3.10"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '3.10'
|
175
132
|
type: :development
|
176
|
-
version_requirements: *id011
|
177
|
-
- !ruby/object:Gem::Dependency
|
178
|
-
name: hoe
|
179
133
|
prerelease: false
|
180
|
-
|
134
|
+
version_requirements: *9994120
|
135
|
+
- !ruby/object:Gem::Dependency
|
136
|
+
name: hoe
|
137
|
+
requirement: &9993160 !ruby/object:Gem::Requirement
|
181
138
|
none: false
|
182
|
-
requirements:
|
139
|
+
requirements:
|
183
140
|
- - ~>
|
184
|
-
- !ruby/object:Gem::Version
|
185
|
-
|
186
|
-
segments:
|
187
|
-
- 2
|
188
|
-
- 13
|
189
|
-
version: "2.13"
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '2.13'
|
190
143
|
type: :development
|
191
|
-
|
144
|
+
prerelease: false
|
145
|
+
version_requirements: *9993160
|
192
146
|
description: oddb2xml creates xml files using swissINDEX, BAG-XML and Swissmedic.
|
193
147
|
email: yasaka@ywesee.com, zdavatz@ywesee.com
|
194
|
-
executables:
|
148
|
+
executables:
|
195
149
|
- oddb2xml
|
196
150
|
extensions: []
|
197
|
-
|
198
|
-
extra_rdoc_files:
|
151
|
+
extra_rdoc_files:
|
199
152
|
- History.txt
|
200
153
|
- Manifest.txt
|
201
|
-
files:
|
154
|
+
files:
|
202
155
|
- .gitignore
|
203
156
|
- .rspec
|
204
157
|
- Gemfile
|
@@ -255,37 +208,28 @@ files:
|
|
255
208
|
- .gemtest
|
256
209
|
homepage:
|
257
210
|
licenses: []
|
258
|
-
|
259
211
|
post_install_message:
|
260
|
-
rdoc_options:
|
212
|
+
rdoc_options:
|
261
213
|
- --main
|
262
214
|
- README.txt
|
263
|
-
require_paths:
|
215
|
+
require_paths:
|
264
216
|
- lib
|
265
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
217
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
266
218
|
none: false
|
267
|
-
requirements:
|
268
|
-
- -
|
269
|
-
- !ruby/object:Gem::Version
|
270
|
-
|
271
|
-
|
272
|
-
- 0
|
273
|
-
version: "0"
|
274
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - ! '>='
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
223
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
275
224
|
none: false
|
276
|
-
requirements:
|
277
|
-
- -
|
278
|
-
- !ruby/object:Gem::Version
|
279
|
-
|
280
|
-
segments:
|
281
|
-
- 0
|
282
|
-
version: "0"
|
225
|
+
requirements:
|
226
|
+
- - ! '>='
|
227
|
+
- !ruby/object:Gem::Version
|
228
|
+
version: '0'
|
283
229
|
requirements: []
|
284
|
-
|
285
230
|
rubyforge_project: oddb2xml
|
286
231
|
rubygems_version: 1.8.15
|
287
232
|
signing_key:
|
288
233
|
specification_version: 3
|
289
234
|
summary: oddb2xml creates xml files.
|
290
235
|
test_files: []
|
291
|
-
|