Исходный код вики Дополнительные API методы
Редактировал(а) Андрей Калиновский 2025/09/03 09:18
Скрыть последних авторов
author | version | line-number | content |
---|---|---|---|
![]() |
2.1 | 1 | [[< Основная страница с API запросами >>https://wiki.glonasssoft.ru/bin/view/API/]] |
2 | |||
3 | {{toc/}} | ||
4 | |||
5 | |||
![]() |
3.1 | 6 | == Управление подразделениями == |
![]() |
2.1 | 7 | |
8 | |||
![]() |
5.1 | 9 | === Поиск подразделения === |
![]() |
2.1 | 10 | |
![]() |
4.1 | 11 | (% class="box infomessage" %) |
12 | ((( | ||
13 | **POST /api/v3/Units/find ** | ||
14 | ))) | ||
![]() |
2.1 | 15 | |
![]() |
4.1 | 16 | Пример запроса: |
17 | |||
18 | |||
19 | { | ||
20 | "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ ID подразделения | ||
21 | "name": "string", ~/~/ Наименование подразделения | ||
22 | "parentId": "3fa85f64-5717-4562-b3fc-2c963f66afa6" ~/~/ Идентификатор клиента-родителя | ||
23 | } | ||
24 | |||
25 | |||
26 | Пример ответа: | ||
27 | |||
28 | [ | ||
29 | { | ||
30 | "name": "string", ~/~/ Наименование подразделения | ||
31 | "description": "string", ~/~/ Дополнительное описание | ||
32 | "color": "string", ~/~/ Цвет | ||
33 | "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ ID подразделения | ||
34 | "parentId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Идентификатор клиента-родителя | ||
35 | "deleted": true ~/~/ Признак удаления | ||
36 | } | ||
37 | |||
38 | |||
![]() |
5.1 | 39 | === Добавление подразделения === |
![]() |
4.1 | 40 | |
41 | (% class="box successmessage" %) | ||
42 | ((( | ||
43 | **POST /api/v3/Units** | ||
44 | ))) | ||
45 | |||
46 | |||
47 | Пример запроса: | ||
48 | |||
49 | |||
50 | { | ||
51 | "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ ID | ||
52 | "owner": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Guid владельца | ||
53 | "name": "string", ~/~/ Наименование | ||
54 | "description": "string", ~/~/ Дополнительное описание | ||
55 | "color": "string", ~/~/ Цвет | ||
56 | "extId": "string" ~/~/ extId | ||
57 | } | ||
58 | |||
59 | |||
60 | Пример ответа: | ||
61 | |||
62 | { | ||
63 | "name": "string", ~/~/ Наименование | ||
64 | "description": "string", ~/~/ Дополнительное описание | ||
65 | "color": "string", ~/~/ Цвет | ||
66 | "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ ID подразделения | ||
67 | "parentId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Guid родителя | ||
68 | "deleted": true ~/~/ Признак удаления | ||
69 | } | ||
70 | |||
71 | |||
![]() |
5.1 | 72 | === Редактирование подразделения === |
![]() |
4.1 | 73 | |
74 | (% class="box errormessage" %) | ||
75 | ((( | ||
76 | **PUT /api/v3/Units** | ||
77 | ))) | ||
78 | |||
79 | Пример запроса: | ||
80 | |||
81 | { | ||
82 | "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ ID подразделения | ||
83 | "owner": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Guid владельца | ||
84 | "name": "string", ~/~/ Наименование | ||
85 | "description": "string", ~/~/ Дополнительное описание | ||
86 | "color": "string", ~/~/ Цвет | ||
87 | "extId": "string" ~/~/ extId | ||
88 | } | ||
89 | |||
90 | |||
91 | Пример ответа: | ||
92 | |||
93 | { | ||
94 | "name": "string", ~/~/ Наименование | ||
95 | "description": "string", ~/~/ Дополнительное описание | ||
96 | "color": "string", ~/~/ Цвет | ||
97 | "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ ID | ||
98 | "parentId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Guid родителя | ||
99 | "deleted": true ~/~/ Признак удаления | ||
100 | } | ||
101 | |||
102 | |||
103 | |||
![]() |
5.1 | 104 | === Удаление подразделения === |
![]() |
4.1 | 105 | |
106 | (% class="box errormessage" %) | ||
107 | ((( | ||
108 | **DELETE /api/v3/Units/{unitId}** | ||
109 | ))) | ||
110 | |||
111 | unitId - Guid подразделения | ||
112 | |||
113 | |||
114 | Пример ответа: | ||
115 | |||
116 | 200 ~/~/ Success | ||
117 | |||
118 | |||
119 | |||
![]() |
3.1 | 120 | == Управление группами == |
![]() |
5.1 | 121 | |
122 | |||
![]() |
6.1 | 123 | === Получить информацию группы по идентификатору группы === |
![]() |
5.1 | 124 | |
125 | (% class="box infomessage" %) | ||
126 | ((( | ||
127 | **GET /api/v3/VehiclesGroups/{groupId}** | ||
128 | ))) | ||
129 | |||
130 | groupId - Идентификатор группы | ||
131 | |||
132 | |||
133 | Пример ответа: | ||
134 | |||
135 | { | ||
136 | "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Идентификатор группы. | ||
137 | "OwnerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Идентификатор владельца. | ||
138 | "Name": "string", ~/~/ Наименование группы | ||
139 | "VehiclesIds": [ | ||
140 | "3fa85f64-5717-4562-b3fc-2c963f66afa6" ~/~/ Идентификаторы объектов группы. | ||
141 | ], | ||
142 | "ModelsIds": [ | ||
143 | "3fa85f64-5717-4562-b3fc-2c963f66afa6" ~/~/ Идентификаторы моделей объектов группы. | ||
144 | ], | ||
145 | "Type": 0 ~/~/ Тип группировки: 0 - по объектам, 1 - по моделям объектов | ||
146 | } | ||
147 | |||
148 | |||
![]() |
6.1 | 149 | === Удалить группу === |
![]() |
5.1 | 150 | |
151 | (% class="box errormessage" %) | ||
152 | ((( | ||
153 | **DELETE /api/v3/VehiclesGroups/{groupId}** | ||
154 | ))) | ||
155 | |||
156 | groupId - Идентификатор группы | ||
157 | |||
158 | |||
159 | Пример ответа: | ||
160 | |||
161 | 200 ~/~/ Success | ||
162 | |||
163 | |||
164 | |||
165 | === Получить информацию группы по идентификатору клиента === | ||
166 | |||
167 | (% class="box infomessage" %) | ||
168 | ((( | ||
169 | **GET /api/v3/VehiclesGroups/list/{agentId}** | ||
170 | ))) | ||
171 | |||
172 | agentId - Идентификатор клиента | ||
173 | |||
174 | |||
175 | Пример ответа: | ||
176 | |||
177 | [ | ||
178 | { | ||
179 | "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Идентификатор группы. | ||
180 | "OwnerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Идентификатор владельца. | ||
181 | "Name": "string", ~/~/ Наименование группы. | ||
182 | "VehiclesIds": [ | ||
183 | "3fa85f64-5717-4562-b3fc-2c963f66afa6" ~/~/ Идентификаторы объектов группы. | ||
184 | ], | ||
185 | "ModelsIds": [ | ||
186 | "3fa85f64-5717-4562-b3fc-2c963f66afa6" ~/~/ Идентификаторы моделей объектов группы. | ||
187 | ], | ||
188 | "Type": 0 ~/~/ Тип группировки: 0 - по объектам, 1 - по моделям объектов | ||
189 | } | ||
190 | ] | ||
191 | |||
192 | |||
![]() |
6.1 | 193 | === Создать группу === |
![]() |
5.1 | 194 | |
195 | (% class="box successmessage" %) | ||
196 | ((( | ||
197 | **POST /api/v3/VehiclesGroups** | ||
198 | ))) | ||
199 | |||
200 | Пример запроса: | ||
201 | { | ||
202 | "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Идентификатор группы. | ||
203 | "OwnerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Идентификатор владельца. | ||
204 | "Name": "string", ~/~/ Наименование группы. | ||
205 | "VehiclesIds": [ | ||
206 | "3fa85f64-5717-4562-b3fc-2c963f66afa6" ~/~/ Идентификаторы объектов группы. | ||
207 | ], | ||
208 | "ModelsIds": [ | ||
209 | "3fa85f64-5717-4562-b3fc-2c963f66afa6" ~/~/ Идентификаторы моделей объектов группы. | ||
210 | ], | ||
211 | "Type": 0 ~/~/ Тип группировки: 0 - по объектам, 1 - по моделям объектов | ||
212 | } | ||
213 | |||
214 | |||
215 | Пример ответа: | ||
216 | |||
217 | { | ||
218 | "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Идентификатор группы. | ||
219 | "OwnerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Идентификатор владельца. | ||
220 | "Name": "string", ~/~/ Наименование группы. | ||
221 | "VehiclesIds": [ | ||
222 | "3fa85f64-5717-4562-b3fc-2c963f66afa6" ~/~/ Идентификаторы объектов группы. | ||
223 | ], | ||
224 | "ModelsIds": [ | ||
225 | "3fa85f64-5717-4562-b3fc-2c963f66afa6" ~/~/ Идентификаторы моделей объектов группы. | ||
226 | ], | ||
227 | "Type": 0 ~/~/ Тип группировки: 0 - по объектам, 1 - по моделям объектов | ||
228 | } | ||
229 | |||
230 | |||
![]() |
6.1 | 231 | === Изменить группу === |
![]() |
5.1 | 232 | |
233 | (% class="box warningmessage" %) | ||
234 | ((( | ||
235 | **PUT /api/v3/VehiclesGroups** | ||
236 | ))) | ||
237 | |||
238 | Пример запроса: | ||
239 | |||
240 | { | ||
241 | "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Идентификатор группы. | ||
242 | "OwnerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Идентификатор владельца. | ||
243 | "Name": "string", ~/~/ Наименование группы. | ||
244 | "VehiclesIds": [ | ||
245 | "3fa85f64-5717-4562-b3fc-2c963f66afa6" ~/~/ Идентификаторы объектов группы. | ||
246 | ], | ||
247 | "ModelsIds": [ | ||
248 | "3fa85f64-5717-4562-b3fc-2c963f66afa6" ~/~/ Идентификаторы моделей объектов группы. | ||
249 | ], | ||
250 | "Type": 0 ~/~/ Тип группировки: 0 - по объектам, 1 - по моделям объектов | ||
251 | } | ||
252 | |||
253 | |||
254 | Пример ответа: | ||
255 | |||
256 | { | ||
257 | "Id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Идентификатор группы. | ||
258 | "OwnerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Идентификатор владельца. | ||
259 | "Name": "string", ~/~/ Наименование группы. | ||
260 | "VehiclesIds": [ | ||
261 | "3fa85f64-5717-4562-b3fc-2c963f66afa6" ~/~/ Идентификаторы объектов группы. | ||
262 | ], | ||
263 | "ModelsIds": [ | ||
264 | "3fa85f64-5717-4562-b3fc-2c963f66afa6" ~/~/ Идентификаторы моделей объектов группы. | ||
265 | ], | ||
266 | "Type": 0 ~/~/ Тип группировки: 0 - по объектам, 1 - по моделям объектов | ||
267 | } | ||
268 | |||
269 | |||
270 | |||
![]() |
6.1 | 271 | == Раздел: **Запрос посещений геообъектов** == |
![]() |
5.1 | 272 | |
![]() |
6.1 | 273 | === **Получение списка всех геообъектов** === |
![]() |
5.1 | 274 | |
![]() |
6.1 | 275 | (% class="box successmessage" %) |
276 | ((( | ||
277 | **~ POST /api/v3/gis/find** | ||
278 | ))) | ||
![]() |
5.1 | 279 | |
![]() |
6.1 | 280 | Метод позволяет получить список геообъектов клиента. Возвращает массив геообъектов со всей информацией о них. |
![]() |
5.1 | 281 | |
![]() |
6.1 | 282 | Метод запроса: **POST** |
![]() |
5.1 | 283 | |
![]() |
6.1 | 284 | URL запроса: https:~/~/hosting.glonasssoft.ru/api/v3/gis/find |
![]() |
5.1 | 285 | |
![]() |
6.1 | 286 | В заголовках запроса: X-Auth: Токен авторизации |
![]() |
5.1 | 287 | |
![]() |
6.1 | 288 | Тело запроса: |
![]() |
5.1 | 289 | |
![]() |
6.1 | 290 | { |
291 | "parentId": "3fa85f64-5717-4562-b3fc-2c963f66afa6" ~/~/ Идентификатор клиента, для которого надо получить данные | ||
292 | } | ||
293 | |||
294 | Ответ: | ||
295 | |||
296 | [ | ||
297 | { | ||
298 | "id": 0, ~/~/ Идентификатор объекта геозоны | ||
299 | "name": "string", ~/~/ Название объекта геозоны | ||
300 | "type": 0, ~/~/ Тип объекта геозоны | ||
301 | "unitId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Подразделение | ||
302 | "fname": "string", ~/~/ Имя файла | ||
303 | "parentId": "string", ~/~/ Идентификатор клиента | ||
304 | "beginCalc": "2023-08-01T07:54:54.893Z", ~/~/ Дата начала расчета | ||
305 | "endCalc": "2023-08-01T07:54:54.893Z", ~/~/ Дата окончания расчета | ||
306 | "description": "string", ~/~/ Описание | ||
307 | "area": 0, ~/~/ Площадь, м^^2^^ | ||
308 | "perimetr": 0, ~/~/ Периметр, м | ||
309 | "createDate": "2023-08-01T07:54:54.893Z", ~/~/ Дата создания | ||
310 | } | ||
311 | ] | ||
312 | |||
313 | === **Запрос пересечений по объектам** === | ||
314 | |||
315 | (% class="box successmessage" %) | ||
316 | ((( | ||
317 | **~ POST /api/v3/gis/intersections/vehicles** | ||
318 | ))) | ||
319 | |||
320 | Метод позволяет получить список пересечений выбранных объектов со всеми геообъектами за выбранный период. | ||
321 | |||
322 | Метод запроса: **POST** | ||
323 | |||
324 | URL запроса: https:~/~/hosting.glonasssoft.ru/api/v3/gis/intersections/vehicles | ||
325 | |||
326 | В заголовках запроса: X-Auth: Токен авторизации | ||
327 | |||
328 | Тело запроса: | ||
329 | |||
330 | { | ||
331 | "startDate": "2023-08-02T06:13:18.551Z", ~/~/ Дата начала запроса | ||
332 | "endDate": "2023-08-02T06:13:18.551Z", ~/~/ Дата окончания | ||
333 | "ids": [ ], ~/~/ Массив id объектов | ||
334 | "byTime": 0, ~/~/ Объединение событий по времени | ||
335 | "byDist": 0, ~/~/ Объединение событий по расстоянию | ||
336 | "filterByTime": 0, ~/~/ Фильтрация событий по времени нахождения | ||
337 | "filterByHalfPerimeter": true ~/~/ Фильтрация событий по пробегу половины периметра | ||
338 | } | ||
339 | |||
340 | Ответ: | ||
341 | [ | ||
342 | { | ||
343 | "geozoneId": 0, ~/~/ ID геообъекта | ||
344 | "geozoneName": "string", ~/~/ Название геообъекта | ||
345 | "startDate": "2023-08-02T06:13:18.554Z", ~/~/ Дата въезда | ||
346 | "endDate": "2023-08-02T06:13:18.554Z", ~/~/ Дата выезда | ||
347 | "duration": 0, ~/~/ Продолжительность нахождения в геообъекте | ||
348 | "vehicleId": 0, ~/~/ ID объекта | ||
349 | "vehicleName": "string" ~/~/ Имя объекта | ||
350 | } | ||
351 | ] | ||
352 | |||
353 | === **Запрос пересечений по геообъектам** === | ||
354 | |||
355 | (% class="box successmessage" %) | ||
356 | ((( | ||
357 | **~ POST /api/v3/gis/intersections/geozones** | ||
358 | ))) | ||
359 | |||
360 | Метод позволяет получить список пересечений выбранных геообъектов со всеми объектами за выбранный период. | ||
361 | |||
362 | Метод запроса: **POST** | ||
363 | |||
364 | URL запроса: https:~/~/hosting.glonasssoft.ru/api/v3/gis/intersections/geozones | ||
365 | |||
366 | В заголовках запроса: X-Auth: Токен авторизации | ||
367 | |||
368 | Тело запроса: | ||
369 | |||
370 | { | ||
371 | "startDate": "2023-08-02T06:13:18.551Z", ~/~/ Дата начала запроса | ||
372 | "endDate": "2023-08-02T06:13:18.551Z", ~/~/ Дата окончания | ||
373 | "ids": [ ], ~/~/ Массив id геообъектов | ||
374 | "byTime": 0, ~/~/ Объединение событий по времени | ||
375 | "byDist": 0, ~/~/ Объединение событий по расстоянию | ||
376 | "filterByTime": 0, ~/~/ Фильтрация событий по времени нахождения | ||
377 | "filterByHalfPerimeter": true ~/~/ Фильтрация событий по пробегу половины периметра | ||
378 | } | ||
379 | |||
380 | Ответ: | ||
381 | |||
382 | [ | ||
383 | { | ||
384 | "geozoneId": 0, ~/~/ ID геообъекта | ||
385 | "geozoneName": "string", ~/~/ Название геообъекта | ||
386 | "startDate": "2023-08-02T06:13:18.554Z", ~/~/ Дата въезда | ||
387 | "endDate": "2023-08-02T06:13:18.554Z", ~/~/ Дата выезда | ||
388 | "duration": 0, ~/~/ Продолжительность нахождения в геообъекте | ||
389 | "vehicleId": 0, ~/~/ ID объекта | ||
390 | "vehicleName": "string" ~/~/ Имя объекта | ||
391 | } | ||
392 | ] | ||
393 | |||
394 | |||
395 | === **Обновить информацию по геозоне** === | ||
396 | |||
397 | (% class="box warningmessage" %) | ||
398 | ((( | ||
399 | **~ PUT /api/v3/gis** | ||
400 | ))) | ||
401 | |||
402 | Метод запроса: **PUT** | ||
403 | |||
404 | Пример запроса: | ||
405 | |||
406 | { | ||
407 | "id": 0, ~/~/ Идентификатор объекта геозоны | ||
408 | "name": "string", ~/~/ Наименование объекта геозоны | ||
409 | "unitId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Подразделение | ||
410 | "description": "string", ~/~/ Описание объекта геозоны | ||
411 | "beginCalc": "2025-04-24T12:10:28.751Z", ~/~/ Дата начала расчетов для геозоны | ||
412 | "endCalc": "2025-04-24T12:10:28.751Z", ~/~/ Дата окончания расчетов для геозоны | ||
413 | "settingsData": "string" ~/~/ Параметры отображения в формате XML. | ||
414 | "type": 0, ~/~/ Тип геозоны - линия,полигон | ||
415 | "radius": 0, ~/~/ Радиус геозоны | ||
416 | "shape": "string", ~/~/ Координаты геозоны | ||
417 | "shape_format": "string" ~/~/ Формат xml,json | ||
418 | |||
419 | } | ||
420 | |||
421 | |||
422 | Пример ответа: | ||
423 | |||
424 | 200 ~/~/ Success | ||
425 | |||
426 | |||
427 | |||
428 | === **Получение информации о геозоне по ID геозоны** === | ||
429 | |||
430 | (% class="box infomessage" %) | ||
431 | ((( | ||
432 | **GET /api/v3/gis/{geozoneId}** | ||
433 | ))) | ||
434 | |||
435 | geozoneId ~/~/ id геозоны | ||
436 | |||
437 | |||
438 | Пример ответа: | ||
439 | |||
440 | ((( | ||
441 | { | ||
442 | "id": 0, ~/~/ Идентификатор объекта геозоны | ||
443 | "name": "string", ~/~/ Наименование объекта геозоны | ||
444 | "unitId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Подразделение | ||
445 | "description": "string", ~/~/ Описание объекта геозоны | ||
446 | "beginCalc": "2025-09-03T06:08:58.533Z", ~/~/ Дата начала расчетов для геозоны | ||
447 | "endCalc": "2025-09-03T06:08:58.533Z", ~/~/ Дата окончания расчетов для геозоны | ||
448 | "settingsData": "string", ~/~/ Параметры отображения в формате XML. | ||
449 | "type": 0, ~/~/ Тип геозоны - линия,полигон | ||
450 | "radius": 0, ~/~/ Радиус геозоны | ||
451 | "shape": "string", ~/~/ Координаты геозоны | ||
452 | "shape_format": "string" ~/~/ Формат xml,json | ||
453 | } | ||
454 | ))) | ||
455 | |||
456 | |||
457 | |||
458 | === **Создание геообъекта ** === | ||
459 | |||
460 | (% class="box successmessage" %) | ||
461 | ((( | ||
462 | **POST /api/v3/gis** | ||
463 | ))) | ||
464 | |||
465 | Пример запроса: | ||
466 | |||
467 | ((( | ||
468 | { | ||
469 | "parentId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Наименование объекта геозоны | ||
470 | "name": "string", ~/~/ Подразделение | ||
471 | "unitId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", ~/~/ Описание объекта геозоны | ||
472 | "description": "string", ~/~/ Дата начала расчетов для геозоны | ||
473 | "beginCalc": "2025-09-03T06:13:08.168Z", ~/~/ Дата начала расчетов для геозоны | ||
474 | "endCalc": "2025-09-03T06:13:08.168Z", ~/~/ Дата окончания расчетов для геозоны | ||
475 | "settingsData": "string", ~/~/ Параметры отображения в формате XML | ||
476 | "type": 0, ~/~/ Тип геозоны - линия,полигон | ||
477 | "radius": 0, ~/~/ Радиус геозоны | ||
478 | "shape": "string", ~/~/ Координаты геозоны | ||
479 | "shape_format": "string" ~/~/ Формат xml,json | ||
480 | } | ||
481 | ))) | ||
482 | |||
483 | |||
484 | Пример ответа: | ||
485 | |||
486 | 200 ~/~/ Success | ||
487 | |||
488 | |||
489 | === **Удаление геообъекта ** === | ||
490 | |||
491 | (% class="box errormessage" %) | ||
492 | ((( | ||
493 | **DELETE /api/v3/gis/{geozoneId}** | ||
494 | ))) | ||
495 | |||
496 | geozoneId ~/~/ Id геообъекта | ||
497 | |||
498 | |||
499 | Пример ответа: | ||
500 | |||
501 | 200 ~/~/ Success | ||
502 | |||
503 | |||
504 | |||
505 | |||
506 | |||
507 | |||
508 | |||
509 | |||
![]() |
5.1 | 510 |