rbflagr 1.1.0 → 1.1.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +1 -1
  3. data/README.md +14 -6
  4. data/docs/CreateFlagRequest.md +1 -0
  5. data/docs/CreateTagRequest.md +8 -0
  6. data/docs/EvalContext.md +1 -0
  7. data/docs/EvaluationBatchRequest.md +2 -1
  8. data/docs/ExportApi.md +54 -6
  9. data/docs/Flag.md +2 -0
  10. data/docs/FlagApi.md +2 -0
  11. data/docs/Health.md +8 -0
  12. data/docs/HealthApi.md +4 -3
  13. data/docs/PutFlagRequest.md +1 -0
  14. data/docs/Tag.md +9 -0
  15. data/docs/TagApi.md +198 -0
  16. data/lib/rbflagr.rb +6 -2
  17. data/lib/rbflagr/api/constraint_api.rb +2 -2
  18. data/lib/rbflagr/api/distribution_api.rb +2 -2
  19. data/lib/rbflagr/api/evaluation_api.rb +2 -2
  20. data/lib/rbflagr/api/export_api.rb +56 -7
  21. data/lib/rbflagr/api/flag_api.rb +5 -2
  22. data/lib/rbflagr/api/health_api.rb +8 -7
  23. data/lib/rbflagr/api/segment_api.rb +2 -2
  24. data/lib/rbflagr/api/tag_api.rb +253 -0
  25. data/lib/rbflagr/api/variant_api.rb +2 -2
  26. data/lib/rbflagr/api_client.rb +4 -2
  27. data/lib/rbflagr/api_error.rb +2 -2
  28. data/lib/rbflagr/configuration.rb +2 -2
  29. data/lib/rbflagr/models/constraint.rb +4 -3
  30. data/lib/rbflagr/models/create_constraint_request.rb +4 -3
  31. data/lib/rbflagr/models/create_flag_request.rb +18 -7
  32. data/lib/rbflagr/models/create_segment_request.rb +4 -3
  33. data/lib/rbflagr/models/create_tag_request.rb +208 -0
  34. data/lib/rbflagr/models/create_variant_request.rb +4 -3
  35. data/lib/rbflagr/models/distribution.rb +4 -3
  36. data/lib/rbflagr/models/error.rb +4 -3
  37. data/lib/rbflagr/models/eval_context.rb +20 -7
  38. data/lib/rbflagr/models/eval_debug_log.rb +4 -3
  39. data/lib/rbflagr/models/eval_result.rb +4 -3
  40. data/lib/rbflagr/models/evaluation_batch_request.rb +21 -8
  41. data/lib/rbflagr/models/evaluation_batch_response.rb +4 -3
  42. data/lib/rbflagr/models/evaluation_entity.rb +4 -3
  43. data/lib/rbflagr/models/flag.rb +26 -4
  44. data/lib/rbflagr/models/flag_snapshot.rb +4 -3
  45. data/lib/rbflagr/models/health.rb +184 -0
  46. data/lib/rbflagr/models/put_distributions_request.rb +4 -3
  47. data/lib/rbflagr/models/put_flag_request.rb +17 -7
  48. data/lib/rbflagr/models/put_segment_reorder_request.rb +4 -3
  49. data/lib/rbflagr/models/put_segment_request.rb +4 -3
  50. data/lib/rbflagr/models/put_variant_request.rb +4 -3
  51. data/lib/rbflagr/models/segment.rb +4 -3
  52. data/lib/rbflagr/models/segment_debug_log.rb +4 -3
  53. data/lib/rbflagr/models/set_flag_enabled_request.rb +4 -3
  54. data/lib/rbflagr/models/tag.rb +232 -0
  55. data/lib/rbflagr/models/variant.rb +4 -3
  56. data/lib/rbflagr/version.rb +3 -3
  57. data/rbflagr.gemspec +2 -2
  58. data/spec/api/tag_api_spec.rb +79 -0
  59. data/spec/models/create_tag_request_spec.rb +41 -0
  60. data/spec/models/health_spec.rb +41 -0
  61. data/spec/models/tag_spec.rb +47 -0
  62. data/swagger.yaml +201 -5
  63. data/swagger_ruby.json +1 -1
  64. metadata +28 -13
@@ -3,10 +3,10 @@
3
3
 
4
4
  #Flagr is a feature flagging, A/B testing and dynamic configuration microservice. The base path for all the APIs is \"/api/v1\".
5
5
 
6
- OpenAPI spec version: 1.1.0
6
+ OpenAPI spec version: 1.1.10
7
7
 
8
8
  Generated by: https://github.com/swagger-api/swagger-codegen.git
9
- Swagger Codegen version: 2.4.0-SNAPSHOT
9
+ Swagger Codegen version: 2.4.14
10
10
 
11
11
  =end
12
12
 
@@ -206,7 +206,7 @@ module Flagr
206
206
  return nil unless attributes.is_a?(Hash)
207
207
  self.class.swagger_types.each_pair do |key, type|
208
208
  if type =~ /\AArray<(.*)>/i
209
- # check to ensure the input is an array given that the the attribute
209
+ # check to ensure the input is an array given that the attribute
210
210
  # is documented as an array but the input is not
211
211
  if attributes[self.class.attribute_map[key]].is_a?(Array)
212
212
  self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
@@ -302,5 +302,6 @@ module Flagr
302
302
  value
303
303
  end
304
304
  end
305
+
305
306
  end
306
307
  end
@@ -3,10 +3,10 @@
3
3
 
4
4
  #Flagr is a feature flagging, A/B testing and dynamic configuration microservice. The base path for all the APIs is \"/api/v1\".
5
5
 
6
- OpenAPI spec version: 1.1.0
6
+ OpenAPI spec version: 1.1.10
7
7
 
8
8
  Generated by: https://github.com/swagger-api/swagger-codegen.git
9
- Swagger Codegen version: 2.4.0-SNAPSHOT
9
+ Swagger Codegen version: 2.4.14
10
10
 
11
11
  =end
12
12
 
@@ -107,7 +107,7 @@ module Flagr
107
107
  return nil unless attributes.is_a?(Hash)
108
108
  self.class.swagger_types.each_pair do |key, type|
109
109
  if type =~ /\AArray<(.*)>/i
110
- # check to ensure the input is an array given that the the attribute
110
+ # check to ensure the input is an array given that the attribute
111
111
  # is documented as an array but the input is not
112
112
  if attributes[self.class.attribute_map[key]].is_a?(Array)
113
113
  self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
@@ -203,5 +203,6 @@ module Flagr
203
203
  value
204
204
  end
205
205
  end
206
+
206
207
  end
207
208
  end
@@ -3,10 +3,10 @@
3
3
 
4
4
  #Flagr is a feature flagging, A/B testing and dynamic configuration microservice. The base path for all the APIs is \"/api/v1\".
5
5
 
6
- OpenAPI spec version: 1.1.0
6
+ OpenAPI spec version: 1.1.10
7
7
 
8
8
  Generated by: https://github.com/swagger-api/swagger-codegen.git
9
- Swagger Codegen version: 2.4.0-SNAPSHOT
9
+ Swagger Codegen version: 2.4.14
10
10
 
11
11
  =end
12
12
 
@@ -29,6 +29,9 @@ module Flagr
29
29
  # flagKey. flagID or flagKey will resolve to the same flag. Either works.
30
30
  attr_accessor :flag_key
31
31
 
32
+ # flagTags. flagTags looks up flags by tag. Either works.
33
+ attr_accessor :flag_tags
34
+
32
35
  # Attribute mapping from ruby-style variable name to JSON key.
33
36
  def self.attribute_map
34
37
  {
@@ -37,7 +40,8 @@ module Flagr
37
40
  :'entity_context' => :'entityContext',
38
41
  :'enable_debug' => :'enableDebug',
39
42
  :'flag_id' => :'flagID',
40
- :'flag_key' => :'flagKey'
43
+ :'flag_key' => :'flagKey',
44
+ :'flag_tags' => :'flagTags'
41
45
  }
42
46
  end
43
47
 
@@ -49,7 +53,8 @@ module Flagr
49
53
  :'entity_context' => :'Object',
50
54
  :'enable_debug' => :'BOOLEAN',
51
55
  :'flag_id' => :'Integer',
52
- :'flag_key' => :'String'
56
+ :'flag_key' => :'String',
57
+ :'flag_tags' => :'Array<String>'
53
58
  }
54
59
  end
55
60
 
@@ -84,6 +89,12 @@ module Flagr
84
89
  if attributes.has_key?(:'flagKey')
85
90
  self.flag_key = attributes[:'flagKey']
86
91
  end
92
+
93
+ if attributes.has_key?(:'flagTags')
94
+ if (value = attributes[:'flagTags']).is_a?(Array)
95
+ self.flag_tags = value
96
+ end
97
+ end
87
98
  end
88
99
 
89
100
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -124,7 +135,8 @@ module Flagr
124
135
  entity_context == o.entity_context &&
125
136
  enable_debug == o.enable_debug &&
126
137
  flag_id == o.flag_id &&
127
- flag_key == o.flag_key
138
+ flag_key == o.flag_key &&
139
+ flag_tags == o.flag_tags
128
140
  end
129
141
 
130
142
  # @see the `==` method
@@ -136,7 +148,7 @@ module Flagr
136
148
  # Calculates hash code according to all attributes.
137
149
  # @return [Fixnum] Hash code
138
150
  def hash
139
- [entity_id, entity_type, entity_context, enable_debug, flag_id, flag_key].hash
151
+ [entity_id, entity_type, entity_context, enable_debug, flag_id, flag_key, flag_tags].hash
140
152
  end
141
153
 
142
154
  # Builds the object from hash
@@ -146,7 +158,7 @@ module Flagr
146
158
  return nil unless attributes.is_a?(Hash)
147
159
  self.class.swagger_types.each_pair do |key, type|
148
160
  if type =~ /\AArray<(.*)>/i
149
- # check to ensure the input is an array given that the the attribute
161
+ # check to ensure the input is an array given that the attribute
150
162
  # is documented as an array but the input is not
151
163
  if attributes[self.class.attribute_map[key]].is_a?(Array)
152
164
  self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
@@ -242,5 +254,6 @@ module Flagr
242
254
  value
243
255
  end
244
256
  end
257
+
245
258
  end
246
259
  end
@@ -3,10 +3,10 @@
3
3
 
4
4
  #Flagr is a feature flagging, A/B testing and dynamic configuration microservice. The base path for all the APIs is \"/api/v1\".
5
5
 
6
- OpenAPI spec version: 1.1.0
6
+ OpenAPI spec version: 1.1.10
7
7
 
8
8
  Generated by: https://github.com/swagger-api/swagger-codegen.git
9
- Swagger Codegen version: 2.4.0-SNAPSHOT
9
+ Swagger Codegen version: 2.4.14
10
10
 
11
11
  =end
12
12
 
@@ -94,7 +94,7 @@ module Flagr
94
94
  return nil unless attributes.is_a?(Hash)
95
95
  self.class.swagger_types.each_pair do |key, type|
96
96
  if type =~ /\AArray<(.*)>/i
97
- # check to ensure the input is an array given that the the attribute
97
+ # check to ensure the input is an array given that the attribute
98
98
  # is documented as an array but the input is not
99
99
  if attributes[self.class.attribute_map[key]].is_a?(Array)
100
100
  self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
@@ -190,5 +190,6 @@ module Flagr
190
190
  value
191
191
  end
192
192
  end
193
+
193
194
  end
194
195
  end
@@ -3,10 +3,10 @@
3
3
 
4
4
  #Flagr is a feature flagging, A/B testing and dynamic configuration microservice. The base path for all the APIs is \"/api/v1\".
5
5
 
6
- OpenAPI spec version: 1.1.0
6
+ OpenAPI spec version: 1.1.10
7
7
 
8
8
  Generated by: https://github.com/swagger-api/swagger-codegen.git
9
- Swagger Codegen version: 2.4.0-SNAPSHOT
9
+ Swagger Codegen version: 2.4.14
10
10
 
11
11
  =end
12
12
 
@@ -164,7 +164,7 @@ module Flagr
164
164
  return nil unless attributes.is_a?(Hash)
165
165
  self.class.swagger_types.each_pair do |key, type|
166
166
  if type =~ /\AArray<(.*)>/i
167
- # check to ensure the input is an array given that the the attribute
167
+ # check to ensure the input is an array given that the attribute
168
168
  # is documented as an array but the input is not
169
169
  if attributes[self.class.attribute_map[key]].is_a?(Array)
170
170
  self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
@@ -260,5 +260,6 @@ module Flagr
260
260
  value
261
261
  end
262
262
  end
263
+
263
264
  end
264
265
  end
@@ -3,10 +3,10 @@
3
3
 
4
4
  #Flagr is a feature flagging, A/B testing and dynamic configuration microservice. The base path for all the APIs is \"/api/v1\".
5
5
 
6
- OpenAPI spec version: 1.1.0
6
+ OpenAPI spec version: 1.1.10
7
7
 
8
8
  Generated by: https://github.com/swagger-api/swagger-codegen.git
9
- Swagger Codegen version: 2.4.0-SNAPSHOT
9
+ Swagger Codegen version: 2.4.14
10
10
 
11
11
  =end
12
12
 
@@ -21,16 +21,20 @@ module Flagr
21
21
  # flagIDs
22
22
  attr_accessor :flag_i_ds
23
23
 
24
- # flagKeys. Either flagIDs or flagKeys works. If pass in both, Flagr may return duplicate results.
24
+ # flagKeys. Either flagIDs, flagKeys or flagTags works. If pass in multiples, Flagr may return duplicate results.
25
25
  attr_accessor :flag_keys
26
26
 
27
+ # flagTags. Either flagIDs, flagKeys or flagTags works. If pass in multiples, Flagr may return duplicate results.
28
+ attr_accessor :flag_tags
29
+
27
30
  # Attribute mapping from ruby-style variable name to JSON key.
28
31
  def self.attribute_map
29
32
  {
30
33
  :'entities' => :'entities',
31
34
  :'enable_debug' => :'enableDebug',
32
35
  :'flag_i_ds' => :'flagIDs',
33
- :'flag_keys' => :'flagKeys'
36
+ :'flag_keys' => :'flagKeys',
37
+ :'flag_tags' => :'flagTags'
34
38
  }
35
39
  end
36
40
 
@@ -40,7 +44,8 @@ module Flagr
40
44
  :'entities' => :'Array<EvaluationEntity>',
41
45
  :'enable_debug' => :'BOOLEAN',
42
46
  :'flag_i_ds' => :'Array<Integer>',
43
- :'flag_keys' => :'Array<String>'
47
+ :'flag_keys' => :'Array<String>',
48
+ :'flag_tags' => :'Array<String>'
44
49
  }
45
50
  end
46
51
 
@@ -73,6 +78,12 @@ module Flagr
73
78
  self.flag_keys = value
74
79
  end
75
80
  end
81
+
82
+ if attributes.has_key?(:'flagTags')
83
+ if (value = attributes[:'flagTags']).is_a?(Array)
84
+ self.flag_tags = value
85
+ end
86
+ end
76
87
  end
77
88
 
78
89
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -101,7 +112,8 @@ module Flagr
101
112
  entities == o.entities &&
102
113
  enable_debug == o.enable_debug &&
103
114
  flag_i_ds == o.flag_i_ds &&
104
- flag_keys == o.flag_keys
115
+ flag_keys == o.flag_keys &&
116
+ flag_tags == o.flag_tags
105
117
  end
106
118
 
107
119
  # @see the `==` method
@@ -113,7 +125,7 @@ module Flagr
113
125
  # Calculates hash code according to all attributes.
114
126
  # @return [Fixnum] Hash code
115
127
  def hash
116
- [entities, enable_debug, flag_i_ds, flag_keys].hash
128
+ [entities, enable_debug, flag_i_ds, flag_keys, flag_tags].hash
117
129
  end
118
130
 
119
131
  # Builds the object from hash
@@ -123,7 +135,7 @@ module Flagr
123
135
  return nil unless attributes.is_a?(Hash)
124
136
  self.class.swagger_types.each_pair do |key, type|
125
137
  if type =~ /\AArray<(.*)>/i
126
- # check to ensure the input is an array given that the the attribute
138
+ # check to ensure the input is an array given that the attribute
127
139
  # is documented as an array but the input is not
128
140
  if attributes[self.class.attribute_map[key]].is_a?(Array)
129
141
  self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
@@ -219,5 +231,6 @@ module Flagr
219
231
  value
220
232
  end
221
233
  end
234
+
222
235
  end
223
236
  end
@@ -3,10 +3,10 @@
3
3
 
4
4
  #Flagr is a feature flagging, A/B testing and dynamic configuration microservice. The base path for all the APIs is \"/api/v1\".
5
5
 
6
- OpenAPI spec version: 1.1.0
6
+ OpenAPI spec version: 1.1.10
7
7
 
8
8
  Generated by: https://github.com/swagger-api/swagger-codegen.git
9
- Swagger Codegen version: 2.4.0-SNAPSHOT
9
+ Swagger Codegen version: 2.4.14
10
10
 
11
11
  =end
12
12
 
@@ -90,7 +90,7 @@ module Flagr
90
90
  return nil unless attributes.is_a?(Hash)
91
91
  self.class.swagger_types.each_pair do |key, type|
92
92
  if type =~ /\AArray<(.*)>/i
93
- # check to ensure the input is an array given that the the attribute
93
+ # check to ensure the input is an array given that the attribute
94
94
  # is documented as an array but the input is not
95
95
  if attributes[self.class.attribute_map[key]].is_a?(Array)
96
96
  self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
@@ -186,5 +186,6 @@ module Flagr
186
186
  value
187
187
  end
188
188
  end
189
+
189
190
  end
190
191
  end
@@ -3,10 +3,10 @@
3
3
 
4
4
  #Flagr is a feature flagging, A/B testing and dynamic configuration microservice. The base path for all the APIs is \"/api/v1\".
5
5
 
6
- OpenAPI spec version: 1.1.0
6
+ OpenAPI spec version: 1.1.10
7
7
 
8
8
  Generated by: https://github.com/swagger-api/swagger-codegen.git
9
- Swagger Codegen version: 2.4.0-SNAPSHOT
9
+ Swagger Codegen version: 2.4.14
10
10
 
11
11
  =end
12
12
 
@@ -101,7 +101,7 @@ module Flagr
101
101
  return nil unless attributes.is_a?(Hash)
102
102
  self.class.swagger_types.each_pair do |key, type|
103
103
  if type =~ /\AArray<(.*)>/i
104
- # check to ensure the input is an array given that the the attribute
104
+ # check to ensure the input is an array given that the attribute
105
105
  # is documented as an array but the input is not
106
106
  if attributes[self.class.attribute_map[key]].is_a?(Array)
107
107
  self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
@@ -197,5 +197,6 @@ module Flagr
197
197
  value
198
198
  end
199
199
  end
200
+
200
201
  end
201
202
  end
@@ -3,10 +3,10 @@
3
3
 
4
4
  #Flagr is a feature flagging, A/B testing and dynamic configuration microservice. The base path for all the APIs is \"/api/v1\".
5
5
 
6
- OpenAPI spec version: 1.1.0
6
+ OpenAPI spec version: 1.1.10
7
7
 
8
8
  Generated by: https://github.com/swagger-api/swagger-codegen.git
9
- Swagger Codegen version: 2.4.0-SNAPSHOT
9
+ Swagger Codegen version: 2.4.14
10
10
 
11
11
  =end
12
12
 
@@ -23,6 +23,8 @@ module Flagr
23
23
 
24
24
  attr_accessor :enabled
25
25
 
26
+ attr_accessor :tags
27
+
26
28
  attr_accessor :segments
27
29
 
28
30
  attr_accessor :variants
@@ -33,6 +35,9 @@ module Flagr
33
35
  # it will override the entityType in the evaluation logs if it's not empty
34
36
  attr_accessor :entity_type
35
37
 
38
+ # flag usage details in markdown format
39
+ attr_accessor :notes
40
+
36
41
  attr_accessor :created_by
37
42
 
38
43
  attr_accessor :updated_by
@@ -46,10 +51,12 @@ module Flagr
46
51
  :'key' => :'key',
47
52
  :'description' => :'description',
48
53
  :'enabled' => :'enabled',
54
+ :'tags' => :'tags',
49
55
  :'segments' => :'segments',
50
56
  :'variants' => :'variants',
51
57
  :'data_records_enabled' => :'dataRecordsEnabled',
52
58
  :'entity_type' => :'entityType',
59
+ :'notes' => :'notes',
53
60
  :'created_by' => :'createdBy',
54
61
  :'updated_by' => :'updatedBy',
55
62
  :'updated_at' => :'updatedAt'
@@ -63,10 +70,12 @@ module Flagr
63
70
  :'key' => :'String',
64
71
  :'description' => :'String',
65
72
  :'enabled' => :'BOOLEAN',
73
+ :'tags' => :'Array<Tag>',
66
74
  :'segments' => :'Array<Segment>',
67
75
  :'variants' => :'Array<Variant>',
68
76
  :'data_records_enabled' => :'BOOLEAN',
69
77
  :'entity_type' => :'String',
78
+ :'notes' => :'String',
70
79
  :'created_by' => :'String',
71
80
  :'updated_by' => :'String',
72
81
  :'updated_at' => :'DateTime'
@@ -97,6 +106,12 @@ module Flagr
97
106
  self.enabled = attributes[:'enabled']
98
107
  end
99
108
 
109
+ if attributes.has_key?(:'tags')
110
+ if (value = attributes[:'tags']).is_a?(Array)
111
+ self.tags = value
112
+ end
113
+ end
114
+
100
115
  if attributes.has_key?(:'segments')
101
116
  if (value = attributes[:'segments']).is_a?(Array)
102
117
  self.segments = value
@@ -117,6 +132,10 @@ module Flagr
117
132
  self.entity_type = attributes[:'entityType']
118
133
  end
119
134
 
135
+ if attributes.has_key?(:'notes')
136
+ self.notes = attributes[:'notes']
137
+ end
138
+
120
139
  if attributes.has_key?(:'createdBy')
121
140
  self.created_by = attributes[:'createdBy']
122
141
  end
@@ -216,10 +235,12 @@ module Flagr
216
235
  key == o.key &&
217
236
  description == o.description &&
218
237
  enabled == o.enabled &&
238
+ tags == o.tags &&
219
239
  segments == o.segments &&
220
240
  variants == o.variants &&
221
241
  data_records_enabled == o.data_records_enabled &&
222
242
  entity_type == o.entity_type &&
243
+ notes == o.notes &&
223
244
  created_by == o.created_by &&
224
245
  updated_by == o.updated_by &&
225
246
  updated_at == o.updated_at
@@ -234,7 +255,7 @@ module Flagr
234
255
  # Calculates hash code according to all attributes.
235
256
  # @return [Fixnum] Hash code
236
257
  def hash
237
- [id, key, description, enabled, segments, variants, data_records_enabled, entity_type, created_by, updated_by, updated_at].hash
258
+ [id, key, description, enabled, tags, segments, variants, data_records_enabled, entity_type, notes, created_by, updated_by, updated_at].hash
238
259
  end
239
260
 
240
261
  # Builds the object from hash
@@ -244,7 +265,7 @@ module Flagr
244
265
  return nil unless attributes.is_a?(Hash)
245
266
  self.class.swagger_types.each_pair do |key, type|
246
267
  if type =~ /\AArray<(.*)>/i
247
- # check to ensure the input is an array given that the the attribute
268
+ # check to ensure the input is an array given that the attribute
248
269
  # is documented as an array but the input is not
249
270
  if attributes[self.class.attribute_map[key]].is_a?(Array)
250
271
  self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
@@ -340,5 +361,6 @@ module Flagr
340
361
  value
341
362
  end
342
363
  end
364
+
343
365
  end
344
366
  end