@@ -200,7 +200,7 @@ |
||
200 | 200 | } |
201 | 201 | |
202 | 202 | /** |
203 | - * @param $id |
|
203 | + * @param string|null $id |
|
204 | 204 | * @throws MongoException |
205 | 205 | */ |
206 | 206 | private function createObjectID($id) |
@@ -23,13 +23,13 @@ discard block |
||
23 | 23 | class MongoClient |
24 | 24 | { |
25 | 25 | const VERSION = '1.6.12'; |
26 | - const DEFAULT_HOST = "localhost" ; |
|
27 | - const DEFAULT_PORT = 27017 ; |
|
28 | - const RP_PRIMARY = "primary" ; |
|
29 | - const RP_PRIMARY_PREFERRED = "primaryPreferred" ; |
|
30 | - const RP_SECONDARY = "secondary" ; |
|
31 | - const RP_SECONDARY_PREFERRED = "secondaryPreferred" ; |
|
32 | - const RP_NEAREST = "nearest" ; |
|
26 | + const DEFAULT_HOST = "localhost"; |
|
27 | + const DEFAULT_PORT = 27017; |
|
28 | + const RP_PRIMARY = "primary"; |
|
29 | + const RP_PRIMARY_PREFERRED = "primaryPreferred"; |
|
30 | + const RP_SECONDARY = "secondary"; |
|
31 | + const RP_SECONDARY_PREFERRED = "secondaryPreferred"; |
|
32 | + const RP_NEAREST = "nearest"; |
|
33 | 33 | |
34 | 34 | /** |
35 | 35 | * @var bool |
@@ -198,7 +198,7 @@ discard block |
||
198 | 198 | * {@link http://www.php.net/manual/en/class.mongoint64.php MongoInt64} class. The latter is necessary on 32 |
199 | 199 | * bit platforms (and Windows). |
200 | 200 | */ |
201 | - public function killCursor($server_hash , $id) |
|
201 | + public function killCursor($server_hash, $id) |
|
202 | 202 | { |
203 | 203 | |
204 | 204 | } |
@@ -216,7 +216,7 @@ |
||
216 | 216 | * @link http://www.php.net/manual/en/mongoclient.killcursor.php |
217 | 217 | * @param string $server_hash The server hash that has the cursor. |
218 | 218 | * @param int|MongoInt64 $id The ID of the cursor to kill. |
219 | - * @return bool |
|
219 | + * @return boolean|null |
|
220 | 220 | */ |
221 | 221 | public function killCursor($server_hash , $id) |
222 | 222 | { |
@@ -25,7 +25,7 @@ |
||
25 | 25 | * http://php.net/manual/en/mongoresultexception.getdocument.php |
26 | 26 | * @return array <p>The full result document as an array, including partial data if available and additional keys.</p> |
27 | 27 | */ |
28 | - public function getDocument () {} |
|
28 | + public function getDocument() {} |
|
29 | 29 | |
30 | 30 | public $document; |
31 | 31 |
@@ -18,13 +18,16 @@ |
||
18 | 18 | * @link http://php.net/manual/en/class.mongoresultexception.php#mongoresultexception.props.document |
19 | 19 | * |
20 | 20 | */ |
21 | -class MongoResultException extends MongoException { |
|
21 | +class MongoResultException extends MongoException |
|
22 | +{ |
|
22 | 23 | /** |
23 | 24 | * Retrieve the full result document |
24 | 25 | * http://php.net/manual/en/mongoresultexception.getdocument.php |
25 | 26 | * @return array <p>The full result document as an array, including partial data if available and additional keys.</p> |
26 | 27 | */ |
27 | - public function getDocument () {} |
|
28 | + public function getDocument () |
|
29 | + { |
|
30 | +} |
|
28 | 31 | |
29 | 32 | public $document; |
30 | 33 |
@@ -15,7 +15,6 @@ |
||
15 | 15 | |
16 | 16 | use Alcaeus\MongoDbAdapter\TypeInterface; |
17 | 17 | use MongoDB\BSON\Binary; |
18 | -use MongoDB\BSON\Type; |
|
19 | 18 | |
20 | 19 | class MongoBinData implements TypeInterface |
21 | 20 | { |
@@ -72,7 +72,7 @@ |
||
72 | 72 | protected $readPreference = []; |
73 | 73 | |
74 | 74 | /** |
75 | - * @return Cursor |
|
75 | + * @return \Traversable |
|
76 | 76 | */ |
77 | 77 | abstract protected function ensureCursor(); |
78 | 78 |
@@ -118,7 +118,7 @@ discard block |
||
118 | 118 | */ |
119 | 119 | public function current() |
120 | 120 | { |
121 | - if (! $this->startedIterating) { |
|
121 | + if ( ! $this->startedIterating) { |
|
122 | 122 | return null; |
123 | 123 | } |
124 | 124 | |
@@ -137,7 +137,7 @@ discard block |
||
137 | 137 | */ |
138 | 138 | public function key() |
139 | 139 | { |
140 | - if (! $this->startedIterating) { |
|
140 | + if ( ! $this->startedIterating) { |
|
141 | 141 | return null; |
142 | 142 | } |
143 | 143 | |
@@ -153,7 +153,7 @@ discard block |
||
153 | 153 | */ |
154 | 154 | public function next() |
155 | 155 | { |
156 | - if (! $this->startedIterating) { |
|
156 | + if ( ! $this->startedIterating) { |
|
157 | 157 | $this->ensureIterator(); |
158 | 158 | $this->startedIterating = true; |
159 | 159 | } else { |
@@ -186,7 +186,7 @@ discard block |
||
186 | 186 | */ |
187 | 187 | public function valid() |
188 | 188 | { |
189 | - if (! $this->startedIterating) { |
|
189 | + if ( ! $this->startedIterating) { |
|
190 | 190 | return false; |
191 | 191 | } |
192 | 192 |
@@ -201,7 +201,7 @@ |
||
201 | 201 | * @link http://www.php.net/manual/en/mongocursor.hasnext.php |
202 | 202 | * @throws MongoConnectionException |
203 | 203 | * @throws MongoCursorTimeoutException |
204 | - * @return bool Returns true if there is another element |
|
204 | + * @return boolean|null Returns true if there is another element |
|
205 | 205 | */ |
206 | 206 | public function hasNext() |
207 | 207 | { |
@@ -15,7 +15,6 @@ |
||
15 | 15 | |
16 | 16 | use Alcaeus\MongoDbAdapter\AbstractCursor; |
17 | 17 | use MongoDB\Driver\Cursor; |
18 | -use MongoDB\Driver\ReadPreference; |
|
19 | 18 | use MongoDB\Operation\Find; |
20 | 19 | |
21 | 20 | /** |
@@ -394,7 +394,7 @@ discard block |
||
394 | 394 | */ |
395 | 395 | protected function convertCursorType() |
396 | 396 | { |
397 | - if (! $this->tailable) { |
|
397 | + if ( ! $this->tailable) { |
|
398 | 398 | return null; |
399 | 399 | } |
400 | 400 | |
@@ -435,7 +435,7 @@ discard block |
||
435 | 435 | protected function wrapTraversable(\Traversable $traversable) |
436 | 436 | { |
437 | 437 | foreach ($traversable as $key => $value) { |
438 | - if (isset($value->_id) && ($value->_id instanceof \MongoDB\BSON\ObjectID || !is_object($value->_id))) { |
|
438 | + if (isset($value->_id) && ($value->_id instanceof \MongoDB\BSON\ObjectID || ! is_object($value->_id))) { |
|
439 | 439 | $key = (string) $value->_id; |
440 | 440 | } |
441 | 441 | yield $key => $value; |
@@ -126,6 +126,9 @@ |
||
126 | 126 | ); |
127 | 127 | } |
128 | 128 | |
129 | + /** |
|
130 | + * @param resource $handle |
|
131 | + */ |
|
129 | 132 | private function writeFromRessource($handle) |
130 | 133 | { |
131 | 134 |
@@ -75,7 +75,7 @@ |
||
75 | 75 | $filename = 'file'; |
76 | 76 | } |
77 | 77 | |
78 | - if (! $handle = fopen($filename, 'w')) { |
|
78 | + if ( ! $handle = fopen($filename, 'w')) { |
|
79 | 79 | trigger_error(E_ERROR, 'Can not open the destination file'); |
80 | 80 | return 0; |
81 | 81 | } |
@@ -48,7 +48,7 @@ discard block |
||
48 | 48 | * Returns the address being used by this for slaveOkay reads |
49 | 49 | * |
50 | 50 | * @link http://php.net/manual/en/mongo.getslave.php |
51 | - * @return bool The address of the secondary this connection is using for |
|
51 | + * @return boolean|null The address of the secondary this connection is using for |
|
52 | 52 | * reads. This returns NULL if this is not connected to a replica set or not yet |
53 | 53 | * initialized. |
54 | 54 | */ |
@@ -61,7 +61,7 @@ discard block |
||
61 | 61 | * Get slaveOkay setting for this connection |
62 | 62 | * |
63 | 63 | * @link http://php.net/manual/en/mongo.getslaveokay.php |
64 | - * @return bool Returns the value of slaveOkay for this instance. |
|
64 | + * @return boolean|null Returns the value of slaveOkay for this instance. |
|
65 | 65 | */ |
66 | 66 | public function getSlaveOkay() |
67 | 67 | { |
@@ -73,7 +73,7 @@ discard block |
||
73 | 73 | * |
74 | 74 | * @link http://www.php.net/manual/en/mongo.pairconnect.php |
75 | 75 | * @throws MongoConnectionException |
76 | - * @return boolean |
|
76 | + * @return boolean|null |
|
77 | 77 | * |
78 | 78 | * @deprecated Pass a string of the form "mongodb://server1,server2" to the constructor instead of using this method. |
79 | 79 | */ |
@@ -99,7 +99,7 @@ discard block |
||
99 | 99 | * |
100 | 100 | * @link http://php.net/manual/en/mongo.setslaveokay.php |
101 | 101 | * @param bool $ok |
102 | - * @return bool returns the former value of slaveOkay for this instance. |
|
102 | + * @return boolean|null returns the former value of slaveOkay for this instance. |
|
103 | 103 | */ |
104 | 104 | public function setSlaveOkay ($ok) |
105 | 105 | { |
@@ -111,7 +111,7 @@ discard block |
||
111 | 111 | * |
112 | 112 | * @link http://php.net/manual/en/mongo.setpoolsize.php |
113 | 113 | * @param $size <p>The max number of connections future pools will be able to create. Negative numbers mean that the pool will spawn an infinite number of connections.</p> |
114 | - * @return bool Returns the former value of pool size. |
|
114 | + * @return boolean|null Returns the former value of pool size. |
|
115 | 115 | * @deprecated Relying on this feature is highly discouraged. Please use MongoPool::setSize() instead. |
116 | 116 | */ |
117 | 117 | public function setPoolSize($size) |
@@ -126,7 +126,7 @@ discard block |
||
126 | 126 | * @param string $username A username used to identify the connection. |
127 | 127 | * @param string $password A password used to identify the connection. |
128 | 128 | * @throws MongoConnectionException |
129 | - * @return boolean If the connection was successful. |
|
129 | + * @return boolean|null If the connection was successful. |
|
130 | 130 | * @deprecated Pass array("persist" => $id) to the constructor instead of using this method. |
131 | 131 | */ |
132 | 132 | public function persistConnect($username = "", $password = "") |
@@ -141,7 +141,7 @@ discard block |
||
141 | 141 | * @param string $username A username used to identify the connection. |
142 | 142 | * @param string $password A password used to identify the connection. |
143 | 143 | * @throws MongoConnectionException |
144 | - * @return boolean If the connection was successful. |
|
144 | + * @return boolean|null If the connection was successful. |
|
145 | 145 | * @deprecated Pass "mongodb://server1,server2" and array("persist" => $id) to the constructor instead of using this method. |
146 | 146 | */ |
147 | 147 | public function pairPersistConnect($username = "", $password = "") |
@@ -154,7 +154,7 @@ discard block |
||
154 | 154 | * |
155 | 155 | * @link http://www.php.net/manual/en/mongo.connectutil.php |
156 | 156 | * @throws MongoConnectionException |
157 | - * @return boolean If the connection was successful. |
|
157 | + * @return boolean|null If the connection was successful. |
|
158 | 158 | */ |
159 | 159 | protected function connectUtil() |
160 | 160 | { |
@@ -201,7 +201,7 @@ discard block |
||
201 | 201 | * Creates a database error on the database. |
202 | 202 | * |
203 | 203 | * @link http://www.php.net/manual/en/mongo.forceerror.php |
204 | - * @return boolean The database response. |
|
204 | + * @return boolean|null The database response. |
|
205 | 205 | * @deprecated Use MongoDB::forceError() instead. |
206 | 206 | */ |
207 | 207 | public function forceError() |
@@ -101,7 +101,7 @@ |
||
101 | 101 | * @param bool $ok |
102 | 102 | * @return bool returns the former value of slaveOkay for this instance. |
103 | 103 | */ |
104 | - public function setSlaveOkay ($ok) |
|
104 | + public function setSlaveOkay($ok) |
|
105 | 105 | { |
106 | 106 | $this->notImplemented(); |
107 | 107 | } |
@@ -32,7 +32,7 @@ discard block |
||
32 | 32 | /** |
33 | 33 | * @var MongoDB |
34 | 34 | */ |
35 | - public $db = NULL; |
|
35 | + public $db = null; |
|
36 | 36 | |
37 | 37 | /** |
38 | 38 | * @var string |
@@ -133,7 +133,7 @@ discard block |
||
133 | 133 | foreach (func_get_args() as $operator) { |
134 | 134 | $i++; |
135 | 135 | if (! is_array($operator)) { |
136 | - trigger_error("Argument $i is not an array", E_WARNING); |
|
136 | + trigger_error("argument $i is not an array", E_WARNING); |
|
137 | 137 | return; |
138 | 138 | } |
139 | 139 | |
@@ -234,7 +234,7 @@ discard block |
||
234 | 234 | * @param bool $scan_data Only validate indices, not the base collection. |
235 | 235 | * @return array Returns the database's evaluation of this object. |
236 | 236 | */ |
237 | - public function validate($scan_data = FALSE) |
|
237 | + public function validate($scan_data = false) |
|
238 | 238 | { |
239 | 239 | $command = [ |
240 | 240 | 'validate' => $this->name, |
@@ -123,7 +123,7 @@ discard block |
||
123 | 123 | * @link http://www.php.net/manual/en/mongocollection.aggregate.php |
124 | 124 | * @param array $pipeline |
125 | 125 | * @param array $op |
126 | - * @return array |
|
126 | + * @return null|Traversable |
|
127 | 127 | */ |
128 | 128 | public function aggregate(array $pipeline, array $op = []) |
129 | 129 | { |
@@ -923,6 +923,9 @@ discard block |
||
923 | 923 | return null; |
924 | 924 | } |
925 | 925 | |
926 | + /** |
|
927 | + * @param string $name |
|
928 | + */ |
|
926 | 929 | private function checkCollectionName($name) |
927 | 930 | { |
928 | 931 | if (empty($name)) { |
@@ -127,14 +127,14 @@ discard block |
||
127 | 127 | */ |
128 | 128 | public function aggregate(array $pipeline, array $op = []) |
129 | 129 | { |
130 | - if (! TypeConverter::isNumericArray($pipeline)) { |
|
130 | + if ( ! TypeConverter::isNumericArray($pipeline)) { |
|
131 | 131 | $pipeline = []; |
132 | 132 | $options = []; |
133 | 133 | |
134 | 134 | $i = 0; |
135 | 135 | foreach (func_get_args() as $operator) { |
136 | 136 | $i++; |
137 | - if (! is_array($operator)) { |
|
137 | + if ( ! is_array($operator)) { |
|
138 | 138 | trigger_error("Argument $i is not an array", E_WARNING); |
139 | 139 | return; |
140 | 140 | } |
@@ -181,7 +181,7 @@ discard block |
||
181 | 181 | ]; |
182 | 182 | |
183 | 183 | // Convert cursor option |
184 | - if (! isset($options['cursor'])) { |
|
184 | + if ( ! isset($options['cursor'])) { |
|
185 | 185 | $options['cursor'] = true; |
186 | 186 | } |
187 | 187 | |
@@ -267,12 +267,12 @@ discard block |
||
267 | 267 | */ |
268 | 268 | public function insert(&$a, array $options = []) |
269 | 269 | { |
270 | - if (! $this->ensureDocumentHasMongoId($a)) { |
|
270 | + if ( ! $this->ensureDocumentHasMongoId($a)) { |
|
271 | 271 | trigger_error(sprintf('%s(): expects parameter %d to be an array or object, %s given', __METHOD__, 1, gettype($a)), E_USER_WARNING); |
272 | 272 | return; |
273 | 273 | } |
274 | 274 | |
275 | - if (! count((array)$a)) { |
|
275 | + if ( ! count((array) $a)) { |
|
276 | 276 | throw new \MongoException('document must be an array or object'); |
277 | 277 | } |
278 | 278 | |
@@ -285,7 +285,7 @@ discard block |
||
285 | 285 | throw ExceptionConverter::toLegacy($e); |
286 | 286 | } |
287 | 287 | |
288 | - if (! $result->isAcknowledged()) { |
|
288 | + if ( ! $result->isAcknowledged()) { |
|
289 | 289 | return true; |
290 | 290 | } |
291 | 291 | |
@@ -316,7 +316,7 @@ discard block |
||
316 | 316 | |
317 | 317 | foreach ($a as $key => $item) { |
318 | 318 | try { |
319 | - if (! $this->ensureDocumentHasMongoId($a[$key])) { |
|
319 | + if ( ! $this->ensureDocumentHasMongoId($a[$key])) { |
|
320 | 320 | if ($continueOnError) { |
321 | 321 | unset($a[$key]); |
322 | 322 | } else { |
@@ -340,7 +340,7 @@ discard block |
||
340 | 340 | throw ExceptionConverter::toLegacy($e); |
341 | 341 | } |
342 | 342 | |
343 | - if (! $result->isAcknowledged()) { |
|
343 | + if ( ! $result->isAcknowledged()) { |
|
344 | 344 | return true; |
345 | 345 | } |
346 | 346 | |
@@ -364,7 +364,7 @@ discard block |
||
364 | 364 | * @throws MongoCursorException |
365 | 365 | * @return boolean |
366 | 366 | */ |
367 | - public function update(array $criteria , array $newobj, array $options = []) |
|
367 | + public function update(array $criteria, array $newobj, array $options = []) |
|
368 | 368 | { |
369 | 369 | $multiple = isset($options['multiple']) ? $options['multiple'] : false; |
370 | 370 | $method = $multiple ? 'updateMany' : 'updateOne'; |
@@ -381,7 +381,7 @@ discard block |
||
381 | 381 | throw ExceptionConverter::toLegacy($e); |
382 | 382 | } |
383 | 383 | |
384 | - if (! $result->isAcknowledged()) { |
|
384 | + if ( ! $result->isAcknowledged()) { |
|
385 | 385 | return true; |
386 | 386 | } |
387 | 387 | |
@@ -408,7 +408,7 @@ discard block |
||
408 | 408 | */ |
409 | 409 | public function remove(array $criteria = [], array $options = []) |
410 | 410 | { |
411 | - $multiple = isset($options['justOne']) ? !$options['justOne'] : true; |
|
411 | + $multiple = isset($options['justOne']) ? ! $options['justOne'] : true; |
|
412 | 412 | $method = $multiple ? 'deleteMany' : 'deleteOne'; |
413 | 413 | |
414 | 414 | try { |
@@ -421,7 +421,7 @@ discard block |
||
421 | 421 | throw ExceptionConverter::toLegacy($e); |
422 | 422 | } |
423 | 423 | |
424 | - if (! $result->isAcknowledged()) { |
|
424 | + if ( ! $result->isAcknowledged()) { |
|
425 | 425 | return true; |
426 | 426 | } |
427 | 427 | |
@@ -556,7 +556,7 @@ discard block |
||
556 | 556 | $keys = (array) $keys; |
557 | 557 | } |
558 | 558 | |
559 | - if (! is_array($keys) || ! count($keys)) { |
|
559 | + if ( ! is_array($keys) || ! count($keys)) { |
|
560 | 560 | throw new MongoException('keys cannot be empty'); |
561 | 561 | } |
562 | 562 | |
@@ -565,7 +565,7 @@ discard block |
||
565 | 565 | $indexOptions = array_intersect_key($options, $neededOptions); |
566 | 566 | $indexes = $this->collection->listIndexes(); |
567 | 567 | foreach ($indexes as $index) { |
568 | - if (! empty($options['name']) && $index->getName() === $options['name']) { |
|
568 | + if ( ! empty($options['name']) && $index->getName() === $options['name']) { |
|
569 | 569 | throw new \MongoResultException(sprintf('index with name: %s already exists', $index->getName())); |
570 | 570 | } |
571 | 571 | |
@@ -713,7 +713,7 @@ discard block |
||
713 | 713 | $this->convertWriteConcernOptions($options) |
714 | 714 | ); |
715 | 715 | |
716 | - if (! $result->isAcknowledged()) { |
|
716 | + if ( ! $result->isAcknowledged()) { |
|
717 | 717 | return true; |
718 | 718 | } |
719 | 719 | |
@@ -747,13 +747,13 @@ discard block |
||
747 | 747 | if ($document_or_id instanceof \MongoId) { |
748 | 748 | $id = $document_or_id; |
749 | 749 | } elseif (is_object($document_or_id)) { |
750 | - if (! isset($document_or_id->_id)) { |
|
750 | + if ( ! isset($document_or_id->_id)) { |
|
751 | 751 | return null; |
752 | 752 | } |
753 | 753 | |
754 | 754 | $id = $document_or_id->_id; |
755 | 755 | } elseif (is_array($document_or_id)) { |
756 | - if (! isset($document_or_id['_id'])) { |
|
756 | + if ( ! isset($document_or_id['_id'])) { |
|
757 | 757 | return null; |
758 | 758 | } |
759 | 759 | |
@@ -796,14 +796,14 @@ discard block |
||
796 | 796 | $command = [ |
797 | 797 | 'group' => [ |
798 | 798 | 'ns' => $this->name, |
799 | - '$reduce' => (string)$reduce, |
|
799 | + '$reduce' => (string) $reduce, |
|
800 | 800 | 'initial' => $initial, |
801 | 801 | 'cond' => $condition, |
802 | 802 | ], |
803 | 803 | ]; |
804 | 804 | |
805 | 805 | if ($keys instanceof MongoCode) { |
806 | - $command['group']['$keyf'] = (string)$keys; |
|
806 | + $command['group']['$keyf'] = (string) $keys; |
|
807 | 807 | } else { |
808 | 808 | $command['group']['key'] = $keys; |
809 | 809 | } |
@@ -812,7 +812,7 @@ discard block |
||
812 | 812 | } |
813 | 813 | if (array_key_exists('finalize', $condition)) { |
814 | 814 | if ($condition['finalize'] instanceof MongoCode) { |
815 | - $condition['finalize'] = (string)$condition['finalize']; |
|
815 | + $condition['finalize'] = (string) $condition['finalize']; |
|
816 | 816 | } |
817 | 817 | $command['group']['finalize'] = $condition['finalize']; |
818 | 818 | } |
@@ -866,11 +866,11 @@ discard block |
||
866 | 866 | $options['w'] = ($options['safe']) ? 1 : 0; |
867 | 867 | } |
868 | 868 | |
869 | - if (isset($options['wtimeout']) && !isset($options['wTimeoutMS'])) { |
|
869 | + if (isset($options['wtimeout']) && ! isset($options['wTimeoutMS'])) { |
|
870 | 870 | $options['wTimeoutMS'] = $options['wtimeout']; |
871 | 871 | } |
872 | 872 | |
873 | - if (isset($options['w']) || !isset($options['wTimeoutMS'])) { |
|
873 | + if (isset($options['w']) || ! isset($options['wTimeoutMS'])) { |
|
874 | 874 | $collectionWriteConcern = $this->getWriteConcern(); |
875 | 875 | $writeConcern = $this->createWriteConcernFromParameters( |
876 | 876 | isset($options['w']) ? $options['w'] : $collectionWriteConcern['w'], |
@@ -903,7 +903,7 @@ discard block |
||
903 | 903 | }; |
904 | 904 | |
905 | 905 | if (is_array($document)) { |
906 | - if (! isset($document['_id'])) { |
|
906 | + if ( ! isset($document['_id'])) { |
|
907 | 907 | $document['_id'] = new \MongoId(); |
908 | 908 | } |
909 | 909 | |
@@ -911,7 +911,7 @@ discard block |
||
911 | 911 | |
912 | 912 | return $document['_id']; |
913 | 913 | } elseif (is_object($document)) { |
914 | - if (! isset($document->_id)) { |
|
914 | + if ( ! isset($document->_id)) { |
|
915 | 915 | $document->_id = new \MongoId(); |
916 | 916 | } |
917 | 917 |