From ae0b310be925971daf769d0b7e88f2ea05b1711e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=91=D0=B0=D0=BA=D0=B0?= =?UTF-8?q?=D0=BB=D1=8C=D1=81=D0=BA=D0=B0=D1=8F?= Date: Sun, 16 Jun 2024 14:47:12 +0400 Subject: [PATCH] =?UTF-8?q?=D0=B2=20=D0=BE=D0=B1=D1=89=D0=B5=D0=BC...=20?= =?UTF-8?q?=D0=BE=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B0=D1=8E=D1=82=D1=81?= =?UTF-8?q?=D1=8F=20=D0=B2=D1=81=D0=B5=20=D1=84=D0=B8=D0=BB=D1=8C=D0=BC?= =?UTF-8?q?=D1=8B=20=D0=BF=D0=BE=20=D0=B2=D1=8B=D0=B1=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=BD=D1=8B=D0=BC=20=D0=BA=D0=B0=D1=82=D0=B5=D0=B3=D0=BE=D1=80?= =?UTF-8?q?=D0=B8=D1=8F=D0=BC,=20=D0=B0=20=D1=82=D0=B0=D0=BA=20=D0=B6?= =?UTF-8?q?=D0=B5=20=D0=B2=D1=81=D0=B5=20=D1=84=D0=B8=D0=BB=D1=8C=D0=BC?= =?UTF-8?q?=D1=8B=20=D0=BF=D1=80=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B5=D1=85?= =?UTF-8?q?=D0=BE=D0=B4=D0=BA=20=D0=BD=D0=B0=20=D0=B2=D0=BA=D0=BB=D0=B0?= =?UTF-8?q?=D0=B4=D0=BA=D1=83=20=D1=84=D0=B8=D0=BB=D1=8C=D0=BC=D0=BE=D0=B2?= =?UTF-8?q?...=20=D0=B2=D1=81=D0=B5=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20?= =?UTF-8?q?=D0=BE=D0=B4=D0=BD=D0=BE=20=D0=BC=D0=B5=D1=81=D1=82=D0=BE,=20?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=B4=D0=BB=D1=8F=20=D0=B0=D0=B4=D0=BC=D0=B8?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B4=D0=BE=D1=81=D1=82=D0=B0=D1=82=D0=BE=D1=87?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=B2=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=20=D0=BF?= =?UTF-8?q?=D1=80=D1=8F=D0=BC.=20=D0=BD=D1=83=D0=B6=D0=BD=D0=BE=20=D0=B5?= =?UTF-8?q?=D1=89=D0=B5=20=D0=BF=D0=BE=D0=B4=D1=80=D0=B5=D0=B4=D0=B0=D0=BA?= =?UTF-8?q?=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20=D1=8D=D1=8D?= =?UTF-8?q?...=20=D1=80=D0=B5=D0=B4=D0=B0=D0=BA=D1=82=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=84=D0=B8=D0=BB=D1=8C=D0=BC?= =?UTF-8?q?=D0=B0=20(=D0=BA=D0=B0=D1=82=D0=B5=D0=B3=D0=BE=D1=80=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BD=D0=B5=20=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=B6=D0=B0=D0=B5=D1=82=D1=81=D1=8F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/backend/BackendApplication.java | 89 +++++++------ .../categories/api/CategorieController.java | 9 +- .../core/configurations/Constants.java | 2 +- .../backend/movies/api/MovieController.java | 117 +++++++++++++++--- .../movies/repository/MovieRepository.java | 9 +- .../backend/movies/service/MovieService.java | 18 ++- .../src/main/resources/application.properties | 2 +- .../main/resources/templates/categories.html | 6 +- .../main/resources/templates/movie-edit.html | 51 ++++++++ .../src/main/resources/templates/movies.html | 108 ++++++++++------ .../src/main/resources/templates/user.html | 4 +- data.mv.db | Bin 135168 -> 217088 bytes 12 files changed, 301 insertions(+), 114 deletions(-) create mode 100644 backend/src/main/resources/templates/movie-edit.html diff --git a/backend/src/main/java/com/example/backend/BackendApplication.java b/backend/src/main/java/com/example/backend/BackendApplication.java index 96741c9..0b18e99 100644 --- a/backend/src/main/java/com/example/backend/BackendApplication.java +++ b/backend/src/main/java/com/example/backend/BackendApplication.java @@ -8,8 +8,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import com.example.backend.categories.model.CategorieEntity; import com.example.backend.categories.service.CategorieService; -import com.example.backend.users.model.UserEntity; -import com.example.backend.users.model.UserRole; +import com.example.backend.movies.model.MovieEntity; +import com.example.backend.movies.service.MovieService; import com.example.backend.users.service.UserService; // create lab 2 @@ -20,10 +20,14 @@ public class BackendApplication implements CommandLineRunner { private final Logger _logger = LoggerFactory.getLogger(BackendApplication.class); private final UserService userService; private final CategorieService categorieService; + private final MovieService movieService; - public BackendApplication(UserService userService, CategorieService categorieService) { + public BackendApplication(UserService userService, + CategorieService categorieService, + MovieService movieService) { this.userService = userService; this.categorieService = categorieService; + this.movieService = movieService; } public static void main(String[] args) { @@ -32,49 +36,56 @@ public class BackendApplication implements CommandLineRunner { @Override public void run(String... args) throws Exception { - final var admin = new UserEntity(null, "elena", "1234"); - final var vasya = new UserEntity(null, "vasya", "1234"); - final var u1 = new UserEntity(null, "1", "1234"); - final var u2 = new UserEntity(null, "2", "1234"); - final var u3 = new UserEntity(null, "3", "1234"); - final var u4 = new UserEntity(null, "4", "1234"); - final var u5 = new UserEntity(null, "5", "1234"); - final var u6 = new UserEntity(null, "6", "1234"); - final var u7 = new UserEntity(null, "7", "1234"); + // final var admin = new UserEntity(null, "elena", "1234"); + // final var vasya = new UserEntity(null, "vasya", "1234"); - final var cat1 = new CategorieEntity(null, "Драма", null); - final var cat2 = new CategorieEntity(null, "Комедия", null); - final var cat3 = new CategorieEntity(null, "Хоррор", null); - final var cat4 = new CategorieEntity(null, "Мультитк", null); + // final var u1 = new UserEntity(null, "1", "1234"); + // final var u2 = new UserEntity(null, "2", "1234"); + // final var u3 = new UserEntity(null, "3", "1234"); + // final var u4 = new UserEntity(null, "4", "1234"); + // final var u5 = new UserEntity(null, "5", "1234"); + // final var u6 = new UserEntity(null, "6", "1234"); + // final var u7 = new UserEntity(null, "7", "1234"); - admin.setRole(UserRole.ADMIN); - vasya.setRole(UserRole.USER); + // final var cat1 = new CategorieEntity(null, "Драма", null); + // final var cat2 = new CategorieEntity(null, "Комедия", null); + // final var cat3 = new CategorieEntity(null, "Хоррор", null); + // final var cat4 = new CategorieEntity(null, "Мультитк", null); - u1.setRole(UserRole.USER); - u2.setRole(UserRole.USER); - u3.setRole(UserRole.USER); - u4.setRole(UserRole.USER); - u5.setRole(UserRole.USER); - u6.setRole(UserRole.USER); - u7.setRole(UserRole.USER); + final var cat5 = new CategorieEntity(null, "Опера", null); - userService.create(admin); - userService.create(vasya); - userService.create(u1); - userService.create(u2); - userService.create(u3); - userService.create(u4); - userService.create(u5); - userService.create(u6); - userService.create(u7); + final var mov1 = new MovieEntity(null, cat5, "певчая птичка", "null", "null", null); - categorieService.create(cat1); - categorieService.create(cat2); - categorieService.create(cat3); - categorieService.create(cat4); + // admin.setRole(UserRole.ADMIN); + // vasya.setRole(UserRole.USER); - _logger.info("Admin user added"); + // u1.setRole(UserRole.USER); + // u2.setRole(UserRole.USER); + // u3.setRole(UserRole.USER); + // u4.setRole(UserRole.USER); + // u5.setRole(UserRole.USER); + // u6.setRole(UserRole.USER); + // u7.setRole(UserRole.USER); + + // userService.create(admin); + // userService.create(vasya); + // userService.create(u1); + // userService.create(u2); + // userService.create(u3); + // userService.create(u4); + // userService.create(u5); + // userService.create(u6); + // userService.create(u7); + + // categorieService.create(cat1); + // categorieService.create(cat2); + // categorieService.create(cat3); + // categorieService.create(cat4); + // categorieService.create(cat5); + // movieService.create(mov1); + + _logger.info("The program is started"); } } diff --git a/backend/src/main/java/com/example/backend/categories/api/CategorieController.java b/backend/src/main/java/com/example/backend/categories/api/CategorieController.java index a383520..4a33ea1 100644 --- a/backend/src/main/java/com/example/backend/categories/api/CategorieController.java +++ b/backend/src/main/java/com/example/backend/categories/api/CategorieController.java @@ -3,8 +3,6 @@ package com.example.backend.categories.api; import org.modelmapper.ModelMapper; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.example.backend.categories.model.CategorieEntity; @@ -63,8 +61,7 @@ public class CategorieController { @PostMapping("/edit/") public String create(@ModelAttribute(name = CATEGORIE_ATTRIBUTE) @Valid CategorieDTO categorieDTO, - BindingResult bindingResult, RedirectAttributes redirectAttributes, - @RequestParam("imageFile") MultipartFile imageFile) { + BindingResult bindingResult, RedirectAttributes redirectAttributes) { if (bindingResult.hasErrors()) { return CATEGORIE_EDIT_VIEW; } @@ -85,15 +82,13 @@ public class CategorieController { @PostMapping("/edit/{id}") public String update(@PathVariable(name = "id") Integer id, @ModelAttribute(name = CATEGORIE_ATTRIBUTE) @Valid CategorieDTO categorieDTO, - BindingResult bindingResult, RedirectAttributes redirectAttributes, - @RequestParam("imageFile") MultipartFile imageFile) { + BindingResult bindingResult, RedirectAttributes redirectAttributes) { if (bindingResult.hasErrors()) { return CATEGORIE_EDIT_VIEW; } CategorieEntity category = toEntity(categorieDTO); - category.setImage(categorieService.get(id).getImage()); categorieService.update(id, category); return Constants.REDIRECT_VIEW + URL; } diff --git a/backend/src/main/java/com/example/backend/core/configurations/Constants.java b/backend/src/main/java/com/example/backend/core/configurations/Constants.java index fd340f3..5ca3a8d 100644 --- a/backend/src/main/java/com/example/backend/core/configurations/Constants.java +++ b/backend/src/main/java/com/example/backend/core/configurations/Constants.java @@ -6,7 +6,7 @@ public class Constants { public static final String SEQUENCE_NAME = "hibernate_sequence"; - public static final int DEFUALT_PAGE_SIZE = 5; + public static final int DEFUALT_PAGE_SIZE = 10; public static final String REDIRECT_VIEW = "redirect:"; diff --git a/backend/src/main/java/com/example/backend/movies/api/MovieController.java b/backend/src/main/java/com/example/backend/movies/api/MovieController.java index 45aa68e..7abbe47 100644 --- a/backend/src/main/java/com/example/backend/movies/api/MovieController.java +++ b/backend/src/main/java/com/example/backend/movies/api/MovieController.java @@ -2,29 +2,46 @@ package com.example.backend.movies.api; import java.util.List; +import java.util.Map; + import org.modelmapper.ModelMapper; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.example.backend.categories.service.CategorieService; +import com.example.backend.core.api.PageAttributesMapper; import com.example.backend.core.configurations.Constants; import com.example.backend.movies.model.MovieEntity; import com.example.backend.movies.service.MovieService; +import com.example.backend.users.api.UserDTO; + +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; import jakarta.validation.Valid; +import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.PutMapping; -@RestController -@RequestMapping(Constants.API_URL + "/movie") +@Controller +@RequestMapping(MovieController.URL) public class MovieController { + public static final String URL = Constants.ADMIN_PREFIX + "/movies"; + private static final String MOVIE_VIEW = "movies"; + private static final String MOVIE_EDIT_VIEW = "movie-edit"; + private static final String PAGE_ATTRIBUTE = "page"; + private static final String MOVIE_ATTRIBUTE = "movie"; + private static final String CATEGORIEID_ATTRIBUTE = "categorieId"; + private final MovieService movieService; private final CategorieService categorieService; private final ModelMapper modelMapper; @@ -45,34 +62,98 @@ public class MovieController { return entity; } - @GetMapping - public List getAll(@RequestParam(name = "categorieId", defaultValue = "0") Integer categorieId) { - return movieService.getAll(categorieId).stream().map(this::toDto).toList(); + @GetMapping() + public String getAll(@RequestParam(name = PAGE_ATTRIBUTE, defaultValue = "0") int page, + Model model) { + model.addAttribute("movies", + movieService.getAll(0, page, Constants.DEFUALT_PAGE_SIZE) + .stream() + .map(this::toDto) + .toList()); + model.addAttribute("categories", categorieService.getAll()); + + model.addAttribute(PAGE_ATTRIBUTE, page); + model.addAttribute(CATEGORIEID_ATTRIBUTE, 0); + return MOVIE_VIEW; } - @GetMapping("/{id}") - public MovieDTO get(@PathVariable(name = "id") Integer id) { - return toDto(movieService.get(id)); + @GetMapping("/categorieId/{id}") + public String getAll(@PathVariable(name = "id") Integer categorieId, + @RequestParam(name = PAGE_ATTRIBUTE, defaultValue = "0") int page, + Model model) { + model.addAttribute("movies", + movieService.getAll(categorieId, page, Constants.DEFUALT_PAGE_SIZE) + .stream() + .map(this::toDto) + .toList()); + model.addAttribute("categories", categorieService.getAll()); + + model.addAttribute(PAGE_ATTRIBUTE, page); + model.addAttribute(CATEGORIEID_ATTRIBUTE, categorieId); + return MOVIE_VIEW; } - @PostMapping - public MovieDTO create(@RequestBody @Valid MovieDTO dto) { - return toDto(movieService.create(toEntity(dto))); + @GetMapping("/edit/") + public String create(@RequestParam(name = PAGE_ATTRIBUTE, defaultValue = "0") int page, Model model) { + model.addAttribute("categories", categorieService.getAll()); + model.addAttribute(MOVIE_ATTRIBUTE, new MovieDTO()); + model.addAttribute(PAGE_ATTRIBUTE, page); + return MOVIE_EDIT_VIEW; } - @PutMapping("/{id}") - public MovieDTO update(@PathVariable(name = "id") Integer id, @RequestBody MovieDTO dto) { - return toDto(movieService.update(id, toEntity(dto))); + @PostMapping("/edit/") + public String create(@RequestParam(name = PAGE_ATTRIBUTE, defaultValue = "0") int page, + @ModelAttribute(name = MOVIE_ATTRIBUTE) @Valid MovieDTO movieDTO, + BindingResult bindingResult, Model model, RedirectAttributes redirectAttributes) { + if (bindingResult.hasErrors()) { + model.addAttribute(PAGE_ATTRIBUTE, page); + return MOVIE_EDIT_VIEW; + } + model.addAttribute("categories", categorieService.getAll()); + redirectAttributes.addAttribute(PAGE_ATTRIBUTE, page); + movieService.create(toEntity(movieDTO)); + return Constants.REDIRECT_VIEW + URL; } - @DeleteMapping("/{id}") - public MovieDTO delete(@PathVariable(name = "id") Integer id) { - return toDto(movieService.delete(id)); + @GetMapping("/edit/{id}") + public String update(@PathVariable(name = "id") Integer id, + @RequestParam(name = PAGE_ATTRIBUTE, defaultValue = "0") int page, Model model) { + if (id <= 0) { + throw new IllegalArgumentException(); + } + model.addAttribute(MOVIE_ATTRIBUTE, toDto(movieService.get(id))); + model.addAttribute(PAGE_ATTRIBUTE, page); + return MOVIE_EDIT_VIEW; + } + + @PostMapping("/edit/{id}") + public String update(@PathVariable(name = "id") Integer id, + @RequestParam(name = PAGE_ATTRIBUTE, defaultValue = "0") int page, + @ModelAttribute(name = MOVIE_ATTRIBUTE) @Valid MovieDTO movieDTO, + BindingResult bindingResult, Model model, RedirectAttributes redirectAttributes) { + if (bindingResult.hasErrors()) { + model.addAttribute(PAGE_ATTRIBUTE, page); + return MOVIE_EDIT_VIEW; + } + if (id <= 0) { + throw new IllegalArgumentException(); + } + redirectAttributes.addAttribute(PAGE_ATTRIBUTE, page); + movieService.update(id, toEntity(movieDTO)); + return Constants.REDIRECT_VIEW + URL; + } + + @PostMapping("/delete/{id}") + public String delete(@PathVariable(name = "id") Integer id, + @RequestParam(name = PAGE_ATTRIBUTE, defaultValue = "0") int page, + RedirectAttributes redirectAttributes) { + redirectAttributes.addAttribute(PAGE_ATTRIBUTE, page); + movieService.delete(id); + return Constants.REDIRECT_VIEW + URL; } @GetMapping("/countView") public Integer countView(@RequestParam(name = "movieId", defaultValue = "0") Integer movieId) { return movieService.countView(movieId); } - } diff --git a/backend/src/main/java/com/example/backend/movies/repository/MovieRepository.java b/backend/src/main/java/com/example/backend/movies/repository/MovieRepository.java index e8e32fd..a5c68fe 100644 --- a/backend/src/main/java/com/example/backend/movies/repository/MovieRepository.java +++ b/backend/src/main/java/com/example/backend/movies/repository/MovieRepository.java @@ -1,21 +1,24 @@ package com.example.backend.movies.repository; import java.util.Optional; -import java.util.List; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.query.Param; import com.example.backend.movies.model.MovieEntity; -public interface MovieRepository extends CrudRepository { +public interface MovieRepository + extends CrudRepository, PagingAndSortingRepository { Optional findByNameIgnoreCase(String name); Optional findByCategorieIdAndId(Integer categorieId, Integer id); - List findByCategorieId(Integer categorieId); + Page findByCategorieId(Integer categorieId, Pageable page); @Query("SELECT COUNT(DISTINCT v.user.id) FROM ViewedEntity v WHERE v.movie.id = :movieId") Integer getCountViews(@Param("movieId") Integer movieId); diff --git a/backend/src/main/java/com/example/backend/movies/service/MovieService.java b/backend/src/main/java/com/example/backend/movies/service/MovieService.java index 4a0e372..8a35f41 100644 --- a/backend/src/main/java/com/example/backend/movies/service/MovieService.java +++ b/backend/src/main/java/com/example/backend/movies/service/MovieService.java @@ -3,6 +3,9 @@ package com.example.backend.movies.service; import java.util.List; import java.util.stream.StreamSupport; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -27,12 +30,14 @@ public class MovieService { } @Transactional(readOnly = true) - public List getAll(Integer categorieId) { - - if (categorieId == 0) { - return StreamSupport.stream(repository.findAll().spliterator(), false).toList(); + public Page getAll(Integer categorieId, int page, int size) { + if (categorieId < 0) { + throw new IllegalArgumentException(String.format("This %d id is not found", categorieId)); } - return repository.findByCategorieId(categorieId); + if (categorieId == 0) { + return repository.findAll(PageRequest.of(page, size, Sort.by("id"))); + } + return repository.findByCategorieId(categorieId, PageRequest.of(page, size, Sort.by("id"))); } @Transactional(readOnly = true) @@ -58,7 +63,8 @@ public class MovieService { exisEntity.setDescription(entity.getDescription()); exisEntity.setDuration(entity.getDuration()); exisEntity.setImage(entity.getImage()); - return repository.save(exisEntity); + repository.save(exisEntity); + return exisEntity; } @Transactional diff --git a/backend/src/main/resources/application.properties b/backend/src/main/resources/application.properties index fef96e2..6009d1c 100644 --- a/backend/src/main/resources/application.properties +++ b/backend/src/main/resources/application.properties @@ -11,7 +11,7 @@ spring.datasource.url=jdbc:h2:file:./data spring.datasource.username=elina spring.datasource.password=elina spring.datasource.driver-class-name=org.h2.Driver -spring.jpa.hibernate.ddl-auto=create +spring.jpa.hibernate.ddl-auto=update spring.jpa.open-in-view=false #spring.jpa.show-sql=true #spring.jpa.properties.hibernate.format_sql=true diff --git a/backend/src/main/resources/templates/categories.html b/backend/src/main/resources/templates/categories.html index f2c2b83..2bd70d2 100644 --- a/backend/src/main/resources/templates/categories.html +++ b/backend/src/main/resources/templates/categories.html @@ -32,8 +32,10 @@
- + + +
diff --git a/backend/src/main/resources/templates/movie-edit.html b/backend/src/main/resources/templates/movie-edit.html new file mode 100644 index 0000000..713b614 --- /dev/null +++ b/backend/src/main/resources/templates/movie-edit.html @@ -0,0 +1,51 @@ + + + + + Редактирование/создание ФиЛьМа =3 + + + +
+

Редактирование/создание ФиЛьМа =3

+
+
+ + +
+
+ + +
+
+
+ + +
+
+
+
+ + +
+
+
+ + +
+
+
+
+ + Отмена +
+
+
+ + + \ No newline at end of file diff --git a/backend/src/main/resources/templates/movies.html b/backend/src/main/resources/templates/movies.html index e5e0b49..0b96f5b 100644 --- a/backend/src/main/resources/templates/movies.html +++ b/backend/src/main/resources/templates/movies.html @@ -2,47 +2,85 @@ - Вход + Фильмы + - -
-
- -

- Имя пользователя / электронная почта -

- -
- - -

- Введите правильное имя пользователя -

+
+ +

Данные отсутствуют

+ + +
+
+
+ +
+
+
+
+
+ + + + +
+ + +
+
+
+
-

- Пароль -

-
- - -

- Введите верный пароль -

-
- -
- Регистрация - -
- +
+
+
- \ No newline at end of file diff --git a/backend/src/main/resources/templates/user.html b/backend/src/main/resources/templates/user.html index af8e6b8..c60ff1b 100644 --- a/backend/src/main/resources/templates/user.html +++ b/backend/src/main/resources/templates/user.html @@ -6,12 +6,12 @@ -
+

Данные отсутствуют

Пользователи

-
+ diff --git a/data.mv.db b/data.mv.db index 77984f0f24bab2c51e2f12f6d968de39439953b8..c21c6f33d3b182b492d4235ecd87e92e0e86a6d9 100644 GIT binary patch literal 217088 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 literal 135168 zcmeIbdu$}xdLLHJX_7s&%bk7i?DO{ayzk|5>iytVuD3}x$sUqTPP55*e*dIHiz8V*`4BGs=lhOI_EoIojP^C$N7D;b1PTch5-224NZ<>Wz-*!af5A_n zsJ@UuA%Q{yg#-!-6cQ*TP)MMVKp}xb0)+$$34Hz%;7)$cQATf)HP`}f+gHfladY(c zwYAChduyBH(&#Pw!MH4YB8c1Lk|&RDtgqv|?z)H)5OqoN)X~jrw+LMRu4ajv6-5Nl zV%Nxn&2eXRbKOONfGt<|@JB-l-W@z343E@?`ApZ*6mlnT!@QuTQP~I$!lm-t9 zrGWzn4?Xw%$O|Rm{pyJe%Z*NTvfZe68kZ+ln)6dtSyqKwwKno|C4RcPvfOA_o72_S zVyD`;&|K~;S8I*=W~*MSF4yNf)sw2KX{K*Vx^A1Aq`4=nv-RcK>Pf>>Y~R+1;Y+6M zSh6BIo+uJSQ!L##bX``7D!I1ld9tL7s^}8mwk(~PhDr>>(@$3GQwzjYfCE=^UcZHSZ%gB(P+151HvD{Sf}3ZRL?g%vsFnrU9FD%Y}lH~`s8e5 zs@kbf%qI((uCFe(o1MmT?bIRq5Nge-TD95gG-l9v+Va-Q{QM~YX<>1-*|@yT1yo|0 zzaKjNG5xC!e7*YqNHb{CQoFfOZ(pp=H7+Jv6`Z|{vzL`xb+MKBEx|11^Yl;gLcdWx zKJoxh1RUo#4>FyqPA;~VJMB8!mnbzpNh?fnb&6F2X-qXPB(6_$D2zhNp9}Bj%}VFY}Klhv-Ng;k~Vx5l5DnSPHE!l?#I@uFEskRbgHpD z*={c76|RWArQ;dSWEL-L+UY~5g%9w=Z-sAEtBGFBy3}%Y3U5@iHQDKrZ{m3{(O)*Z zxF!+XW z_{EoAe&yBIUVr1rn{U1S&b#k@t@{44<0noEXCRd8dlZV1Cl&s@lM*Sv2#IX%gG5kg zC=ymnKjJWI<(JUhjlDJ(oh&sN#JwQdX;aO98O{Fb(tflXm4^*az9W6Lzfmi{0s%}1 z0!R!nIfF`Wf2U(!`PKZ!O-{G4=KLgQVx6L@#UYv(qF$iGf z>IC1IrTX&n`NcLqLK$OQ&(Jo%IMd7=1|==N_R#6_>yX*C?0&$R?Q1|#DN~Kfxl=XH z`9!00zR_q^#cI7ZRh4Ls?Dz5;c-+_a*56TAs<#I+tpzPkb@LF=j&EIb7$A&pJ&rH1rUqf4em^0ePGspb)Zo^cqI=$F#G-q0LvU;i( zG0^*lY*R?wvUX#-(WbL`XcWa- z(5EzQdSyATD>aJ5VmMW!Lqo3+--i(YU{6BK<*7@EVf|S$%q=5sSEdZZQ8FdMV-Vrh z+>WT#wYt=(%aUl!$&G2FJ=0j6y{JrTK~=f$SJVlD`7ED&mXAY#zn>$(9bdWWxmU^+G{L5EgJn-3p0fFkOA6L1`I(Vog z?5`?3_*_Z&V)bA_sJ-#m%B8>xQ~u>uW`!C2%^$w@+8}I1V?InV|LH5A43=IKhUu~7 zs=;0h_Ij{4g1s5+tzd5ldneet!QKn@KHqy{u$O|p%TGMUt;x2Qxn{#; zwP`yy$(R)^a9IsjvS^k)dV_3@o4ze;vZ#*Uw{MPX#CC1TvaQ68lHAXoitOk_QxtyZ zwKb1C7?YH|I~~&|y5zGuEn8JAB1x$`we9Y-JTL!FW4k*&E2~Z}AX&=0GbJHYR2;=m zaVu}vPEpEiXHaJ@x2ZZ)Pld}?!P+IZV5#SMI;Lf6s+cPwrT2L{yeH5*Em6+DQ}3xW zap$&mn%mvkU1yc`zI$ul`uzHpv7X1`Na+iD+T%z=tc1(2vEBM@vewzK*Y4WxCf0D> zJ(1|#V#YfVJmKT)vYYG9f_=O9DqmF%QMJs|yfAX>_I%Ejc+qrQG^D7!Ht|_`#CC`% z8^N1r5Z~2(k28l_r|iwF7c?kL5K5abzdD4`hc$KV@(AT)EPU@$M_TI0NFK>b@<&PaT=hv-$!)p9>Els)$B2nf%AP<BFF;TuKaheN!}pQb7``dV+pNQ^#?46V zFRb=_RwIlr)^7|1JD?@Lw(A9#6u5 zSr88VhwpuVSU4ygWFCbv&Gtje5hF^9D0%o6*|f*5c|+8jFeX*_&Xf4D%y-&vmI4Qb z?MKTLla2~?^yanuWQjQ~sDt9cxMbkCebk>=aZE}53Nqzzk3aIN^i5lK2+#;T8wzURo8^he(pS`-^eJvI4Kk$}CLXp9#`qXWaRz=W=3 z+P@xfh;{}XTDeM{%9T0`Oobd;&~WLrMf3b{Cc+{XWy|JjKa9HJ?8Wm8+w((ZG}f4D z)!|f((u_~du@Zc$TBv;DDFl4N9Fd5kOe&w8PgzZ<%n}fiqWKk@GU?$o%jBVzz7vI3 z`kt-$zSv`raEKN$O8H=n`l6F$REZf?14j9DFMQ-lD~iko>L#^hO#0G{Iw7MLRgy(b zbCZk`+Y1dTu|&~96O2OsR7mM(>l9ug&eUr43LyIO&kw%0!j+Zf8@z`(#jsU!#^-#hdd2L?ukiW%7C8R2`nLh0MPQ})2*TlJs zZODiccFbYh&HFX8J1{i6<76Li+EPWh3@Cus$FqSNhThIbz9`$anJ49{OC|MI@14D*D_Q|GxklBjtUC&fBK0_f4P_`oqkorFX@h- z(2#RlR>A-v;j0-{w>N_6|A+n;uK$1MQ|SMHMHry_fBmDOSD^nN7(DpbOM^pH|3~ou zmq+j4L*##=kcXqd@%ZFJJ>UW zsH`0qH#L_pvsG8M>ck@A((A46Wi(mQ>bddfR_{WY?IPQgmlxscec4>qB3!))SI=3- z_c-C|MU-$xk8?N?o5WR>b7U0f&5y+ORV`x$ong@=~zI+_&Y z(gDp=@n6G#1OHw8_YzU07{PEx$A1$Mq!@?rpN@Ot+y8h-s6-K@34fOndA_WO!Ww}u zwU;aOb--?$a>^({kZ3aClKbHlCE@E(#K6}9*`}gfWy@mTBU^%;gV06K(+yYZ^&Zi> zW4oQfd>yjwCf!`J7)G<&x|MQsg~38e?-8{ZJ{Wg;LU1EroECVFU@oVgBZ-hGnw9$E zEG-PV9S3Meo^Q@hFl{lWZ3(`RLgoX$5#0!^1N`=O|R66Q^& zYglo>94n1YocRRFH1-7hmteO_LjW$mJuLj<=|O=({0U!gK6>>t;gR_0CmxByH|8F_ z_2^q5wMXhB^RvUk=-EfdAARdH0asuvd@%p$ozD(D`sQcPe>Q;M2Of2X@D?@Ur$r@LcKax62NV& zNV5YfYS~BWv8ZM7@5Jne;kc+S87-8wRBRXL8cQ3?{)6F!hvaISmFCx0dIK}TVrq;D zqH>ArCi#^T;&sEW%;g(~yC#?42H~!1LitA!U_9!v&H?y?aP(uEqeKiTDPBua^{k%k zCOd=6l|?MBPOvMge=`=Z7qH7?u|o4oFSmZeyrP5)Sm_YWn1xOoGRu`aPxDgD8g_4V zZgG{>m>6*KW-QoC7@*F88nB)0X@+Ud)V)p^MWtivXt`}~zuObZ66=zA}_q8=ZqvdWGE>wyb& z0$j|5WpGSXV?+rbYgu!DU3c~0R_8$wv#56v<_**?fafg#5NnrCVMn0BV z`71c`6{88o%+9xR$B&$jW^BDg_X?CR-Dncp8~JDw9PMp1If2n*6yEX^9}2=h8lYo| zApFliN=*fOt^F39A>n+g`)g0a?!LOjg=43e zsYl^d(K78`RL-MV-2F#6sEEP+`9YJ@bGa;ap(3U@$bv@9EhuhVX2@7nFhB)3sD22Q zT!h^fVR!Rg-S7#5bJh-5S=imsp9{j^#Ongx5B=9K9yt<*-3@xr{pE7$h)|)yb&`su zf}F6#kdQ(`4hbbB)R53ZLJtWeB+QVoLc$ISCnVgE@Ir!w1dq~7#RKNW?Y&PC-^L@v zx2|9`d~Brj72Tm$^onHMp4wYNM%-RjY*{x}B}xwNOhPewq68xu;!YUfJch0tlQX_E zE1qpUac2)GXZEdOm?6J4L4^Oy8Ol zX&B#{5>tTNm}Iyo)G)pk&xWq2&0sjFHJ{;BtpPS?vR0U@(%77-S|f1IbX$XH!;Eg4 z=uBa_Vdky*Js1+E>w+`dniCzl3x>PHBh$BbGrS+swoiM6m9Se7ce2U`%?b(v3+sHr+^c zqm*blCc9ijY~~-7M}~k!5__fOm<-)g{W+*|9Zw;GBgSv)UC=TdPuygyAyzBW-en48 zi7)jym<}CJk$1tQ&Pqv=6)T~^8=eXqe7AX&y_*T;i{m%~w=$`*6G`!R=PGkDTxCeE z)Xni@y2@fO6~=y+t4xu_!qE0C7}^3T7IbxLwr4I^AhXEK{LX*l=641sItm~SgzyQ< z1-38!^LJo118k`EGklK;GCjrw8GHD$4|cNPNBThvdD^bocgU2Yz^4$$rg$jDLwOqT zl%D>6*w6U<^ta;a=deHIqX^{c*QG}X2R`^bK&~9i(M(-Qpj~;63V30h>4v=;Hhse| zb&7)(!e5D4gygGU#S#so*bV@&Bp<<1mO5<7l85BD6-%}y13of9Wl4&sDgeR?Ftdg& zgLp*6FUX|p8Isx;h?WLWD$$D3v=ElydZLLlDBP2D6zBP}<$8X_1`3w!*%}BBjX~A6 zNQkW&dc~F$Stq#I2B4QJ5nLRha>=HndlLQ0a||0eVlhsa>N%PU0ocgkp_!uI|5Hq0 zJjDQR8L(#05Z2YUa-bMm{bF;`Ys;ml|DAsZIqc_iQtiU~+XRx~*!=q1l@Ri;klT|% zdwlxk+)sDf_f|Z~N+bV24+BgYbkx}Y?-=+By5j!(|D*bOoMae=$b;{Q9T}=3lNyIP zMYOkG4~@@ftJA_0N68OdJk)Jpw+s7pF*vkAz z3)gO`Yt!{5^TDkgw4u_v&j`oog`W zzw*w|fxk-27CRmb+-wT)LQv%WJD?uI&T6~~+I z?dcVDLYr>Y^~Q4R-1J$op0oWK=hYuY_fWSVtOGxW_&8|A7Z@9v412eK1b*w_kIk+CZs!-@dyQPqFT4 z;=+bLR=+v3dH2@Ua}&CL_5xYFv$@habFW?BXkMQ@FJITDx6XL?7q4HvLRO?}b8|-r zN)0KVrQK{^+M1ueee>qSDSORZkT1!P)I3`NLM5v%@%>oW_NEM<00y`rjfcUo>|nl$y6zIj(^UR*mf^RTX;w?4Wwf6>^u z-IzbOa`Vp2aTK9MMOGt+kCiX-1A;@I6AE7qKJot)X)XfCdulb3bX zy)<*jB+80(|IXwI6rn~%%t+JM&rEvOrK#mJSGFwo%B8!$d~bc~p`y$y7nYYAcP?B+ zVij-W%-LoAj`v_}Qxor;L=jq4#O&I`=DmfF)?H&=d$_fAX6}sb&fc58yERRg&tG|P zan2rF8e6@!&@j|VbM?G?QzO%hr%;3*6|ub0SXjAm_ROW5i`VZ@)zz7`_O%wdxOHAV zvtnBE^-a6&iA!5EceGoJE7#6^)VX#3>iN?s!ib8Pe{kJ>=;;l2VfJ2g@yz1N)v+_v zWagrLdv1Aa)BH&B>dy6Mr`=R-N1W1It1I&lC-F5obL3x^{wn(2freCW$b$`KsG$xw zv`Rxi*f4_0^Z@TbxccC=m;Pu#cr`JnPQX8?@tj(VNh2oBnA{mEqQHmfp7#PD;_vNd z-b;tM2ji*iT#1p7Ev@T+(#sK1%p3@Vl$kVh7Hs$lY>O}tmYrJAn9PI4d8ek@yakN` z?wuZ_sLHh6@^DDbdLEoXydV|d3!WGYrrpGXMk&d8h-&HXz`290W_g@PVUZltQbaai5(A=Y5}lUOVw<-H>Tg;FdcWj%Mvrq~4q z^2ut9e3N?Na*$67UH@6o_0wn~#rprm=dxJ;AA&$JOu1(gv?|j7!^uWUiH`Jtf(el1 zDxahN&yB*N{?GmYbZXYE|8FxBOR#PvQvhPBwMVr-x}Ey}ml*zEnc@HK8U7FD&A#=0 z!2Y4Uz2W^0JUH@C;j1a^5`|sjN!ukV@aOewml*nw-n&{BUQE~}k}LUQvqQFtLVvQh zhQcdYcm>B*v;wcH(|O70sivg9J%Snf|Whb z0OCfjRt~%CB7t*^>uC^85A7XHIX4m(krd~8GB}T8|CvTINxWzj>e#cOj-^+L29vn} z+%Y(Ula+!y21lCAz#YSBpUA)+yH=Mb+_EWf#}BDH7Bj4N0MGV+2JmeE_D>4`zZZDa zo<)Swu1?6hPvQUPiEASVaTR%;8#9e|cXrwkGpXlyq?3IIj`QijalX_>KwbM{b*^!- zT3cEPV9tWGmvQzoT=R>q#BZz3#`!1`vivT5;`i$F9dOX8Ps}%ZFU|9_}|rFIqiOMs5a(gN^A0E(uX&@qGGRKn5;Jf_BZ^iu$U z5Ad`C8kPng`&bZKL0SRtPh#7OTukQ>aU7fJd|642b^T8^(NI~q;?}G~p{r@W&{~zk#Da|?7 z{~gaoVlJ{LB+CVG^9ZtTsOpa z@onMr%Kt|L0roBb-#>lVAJ`WqKGx^W!u|S{KxF-LEy_$Nn1%cG^K!o?g#5H?@xK|n z<97~~=UwOGB}t?r?#22Sksw1OwGwyOSABAKZCZ1$TLkn+Uay- zk7;c<_F-1?!ZmkmT-Ck=>DandFRZf0U!ngO`v0~2WPz@M<1>E4HUk@3V8E7$9)dg+ z`hU`iUabFbEqB^=1S=#01PcFu1WM5F`u|Y>PASo`{_hgQm&AS3qeJC8*8lke(-0I! zXA5E#ntZp%0Fb{}Bf-1P4FJd#PUm7Ysd!lBp7vD#|BJVOLl_t-2}6JODGUJ@*nZ$! zf6Vp=TG;=aj|JhzDmyMe_!YJv{PCZ#{qX(ou>HY*@olyrY5j=p5C0DKxUcj-yv6oq z9eb4j(ho1OaD2_L$i8GrL^3LhD+6x_2*{cO z2bd_!6E{9thR7(JZ^7YNAPGz(T8Pcu!ORFIb52XZ_m zBuzDB7li4$w&oAJw(a?@g%gfwTNt-pn-GE#blAlSV&GDYJ&tNqLU#aZuYvF|f&!P` zbpc2(5scq1v3%c~xxTU0&r>f7+6CDN&qeAVPggND z^VJH{5-C3M9T1xBVK!C4B+j)h%hL*W_U0fFkq))ob4Pmc&dimUCGuo1(mug_L!u4C{gn@ z1%&JRng}+C>qA+`oDX@Jd>M(5i0Epz=8$0!t}YrCBCE1N91Vo!`bfuAA<(XE%d>`I zDq>g@^^S-R~ay zL7C2WLthaH(^M5-toX8G>8`>E$1pt^XFSP6hRlkusJ7^0lIttJY{(cx-?brXbUs1}OxU}8ni01ysbQi@UWiKQy0jW%JTtEv`i@FgE+SghmNxH5J% zw)t-srchE?e^Xr|E6e={UEK!P%&$Aku$Ke(b-})UY~tp+vp_cOV^o-5$opUP?5A*& zQS^k&4`k6-i@sW@MnPD{GcW}agvx)by*?X+42OQU5Sr^3Vsg2@RTi zFs|uly!bqdqZ5O`xG15HN#p4x36u0>Y6DMoQ^=Cid)2)S;<8ZJl#&$5-A^( z`ya&oE2GZMb@#@V(|(c28Zo+O~`ZN@*fR!6{uIh=$#=ro+5OUDBK-d_{yr5$AI1L@-A0(XV(%$aNG=~l{bVia<`|eNi`2X+o`2YX=Q^ffr{vZ2+BY({H z2To!CXCL$Uf1Drug;jQb=-+?B_Lct%@%%V{=-<7=_Aij{u>Fhw7<=5u;{UN{@&CB) zwR8OZQxyNdRK))m@&7v-E&DM(71zYRfGoprA)haod|3Q{t%(0G;{Ts^KVLs1%YMx; zqvc-vUf@@w75grhqQJtzQ8+lB9S2A8zCVTUJB$DSCq?|fRmA^yFMBWE*QfA(Egnko zP`;93(nZHEI`&txV;93&78~?U2E@M3vqMr{s;ff;9!X&wtg%e{8fs?`mylb@^@c&^ROTc z{oyy;LxV2}rGW$G!J*;G!9&kIKk|a`e)YtK+<}}NY+_=zO?krbpjrnG)UaKx6b8+>g3KSL7$NE*>Hi6UPo~+K+muIUd4NtLs zpsxZ`*OVPgRz$}`b{#{*N?G5~bzr%u67T^503+$ZBy|bUQ!JgBhDr>>(@!Gx@j|n8 zw0d;pY{1KMf~&_U7w_RoL7+#y4jjJrHQAz zvq~dZ^i1ZpvZkFrbow|FOWz8m-fE($RhqMExjF@@H(Qe(urSrQkPQLNe!8r8Wt&d6 zq{cbrMNT){%bn9Fkbe3nv(rx}?(8cCHELdAJfGtA1gV#|XZ9po96sBfQ)zG8I6R@# zr_h{-`_vqC?*vDuYP9?w`6n^Tb^Kl(`Pm)1)^vRp9jnt<&)Q3tvadt3&7dzO+L3r1 zN#2#NZj<1WHT)Y8?1OB<#+UZhO;A&Uoj$~>)J7rJPX>avK40ryi~v)O<;iw)DX(xv-1VUG!QKZAv+L=H!mPz|NDdlf`GZDqXJ0)5 zwT1&mR8Q|4mH@fuBb-?igpo_%{C|cA-xLnN_|nU-y!zVfZyb5^t+(HK_r0%G->)4# zcKpOi;S8j5eQ!glY2=BecN{Ih2$^hUzaYDk3F-`m!fNS9AV#hH5}LcQ*XH8OwAe}v z5OFt1cG_f5D8Gzm|8!|T+KtM?h9}>VzS`fYm0y7Xru!c5ayvX7kIMd7=*sR{6XQ{rte15Tw zxlix(CVBax)8*G8v}@TNfpgo}n1GolCS;Ryr)r$_iALvqqtU90)p~2HD$xlQ`@Q@I zp7*uAb$Ha3>h6J1Yk`1L{rpINm)K3~Ajq(j^IH1o-bj7&CK}u5yL0EYi}mfd(2)Ck ze@s)TWOqHg$ly|BaH&ntE#;+^-64ZZ;+c<9wkacSSEdZZQ8FdM8bo+A7@&GZIMIfx zxjL#;wsdiTD6V0=AQJV>>%KaLrr|~Hv9)%G9C`X7pex#@8a#`wX7X3v?ka}O3~?rhE6oZj534V0Sq?YmoXF;~Rfo07G5 z{;s@o?u>m&+E}@N_SWK!J2#{UH_gViS+O;LVPmng>f&{{NLg6KACd_wFrUvM!kyuQWDij-d!S zD&paNr#YuJr|)kq-Z0j#I9l`J`q_Ku6#eeG8^n~ZOwFE|oEiJ*!o$|Gc~QPPudFne z?;S@GN>qe;eeU*3=ZpS`h6rn~%+~4v(a;LAKpIo20ah+J_&omcruPy2~AFRt)Zr%4c7MAW@d}y4t zC*1R$iH>*StUo(({v?Xfq9Ppk-s-K!*>kt+E%%0}FMxUX*5bWOx94uV52u^3PtEq5qHVF-ke+&>s??AX(sGazQL#4pjefZm0ehg#xi@&vW1B;1hjLV|>Z9}t$v7?s&pVOx!Db+$Fw)?{1D zTC;&cuxUFt$(TCoZV-Eu1leWACC4*HZ;-8V6X1`UEUKgT?VIBov5|nsviY6Y);#iH zOv}BKW=qplk=^Op98o=4rNsaS&;Um2vqswp+hV);b&Z+FfLTy0*S{_eA0)5i{Q3ppzVDmr>wL`*!bD zA&Ts2UKqJ`8;F^iS8A56+oB;w<+X{=$|E+-p=bo7hCzV%>U*3y)JkDEdaDf!6NJ)l zU-YA9?e+yqv5ymw<}^SON=|j0Bm+`ey z=|-a)oo-CJvFXO48<%c8x*>EUm8_CpGD}K{-J#HP2HjY6BhrmrVkdmimM93rlNZj6 z2rtE0ah?$&y?I_tl9==(l87-WJr*jQDIVMa?iT$lOA%#6lsUwHmHAHleuR~TPaQ{9 za~O<@5y7ZXT%;uiu*N~v3*pC@IbpfM!y_x%oJNW?`4N!X9sO6e$e= z>fl6ToSJ%y(*n?pj&g{(F_4ba>5-wWJJA?NX*$G7nqws%wyJ$M7~mYD2hSP;N>{4~4_azsvW~XX!EYS?mSjrK6v)eX%JdP)Oi$ zBoN{Mh4_2%G>*ul5&oZ}IW|G6j@={XZGQ)!FJsO~F!{hZ8KVJH{6B^OOh-gIH;+Dh zY+kC0x|W!iA|}#JPC-!|L;sZcR8B)Kk?k4j^H+-hxAgV_;p5X~fd+~SUvEBo^)um- z_~<7diNZJL9=-MGTOhSZ>Lc^B!@}sz1>oWmYU@Lqu|LC314m|qiXU~5&fZqom zjnhXq`__L~`YBpoqNwM(N*d|8^Z9hqDCaNUS{)b|p;4}%3c@b}mk|4bZ&5tLPlW@m z1TG#RCH;go-2?o~?}T&&Bkg!upnU)3=;7?w;-7iGPI&|TH{bqR#&A~070fhb)~(}yK| zw{4_RgrU(uvKkEp&5$kOjP1+1WutBf|7e;R$&rzEMn*Bn>}`oIesV<^dyrEGA;5}< zUqKKeY9h{fvZY%hsv;Dz+XbUULwK-@YX~xh+d3NT%fz*jDMvzj9Tjga2xN{_RfqsN zZd3!AawOl=kaAM3&=lRGE7~AD5!r4W5Wb4L-HI&Bib7PcpV<83nlBerUGcn%=e52; zG8df`edEdW4M8Y>_{N3u06cNBY=}_Fd=RECN{%=T!cZ)&BCD`P5SJ3FD&q44!ckme zk&28&y>N1=!?G@EqAFEn9U0LiM!1$N;#0tjbugA2qD&+WHyOm%L?TvXQ?f->#u?L8 z3`w&pvLz!4n~A$D&DLF{Ck8=$3t5R}3kGn>Q!26zh6wTt%Z@3!mJhxh+jlenjsg(bt|#Un}JN)sr*EkKcItKN}o)6XOTK*)b!;tBciR4xA()9ON`a zmPFb2Y}oM4iXyruCa@sr*rH-=QDhwhk0pWNUS<#;Qi(f$1v6+_k~O2EXg-lmPpl}q z3Y>e#7*-73Fp&9B!PZwi2ZU|l&#EY<3Olw+KzOb%nz+V<1xrG@Zv{!r6(56^VoM^j zn5!UE8+JCZV>=4WXf6n%$(D_~92r@}F*#Lm+Anzdtnao>0*g709tcxMa2u{MEK$TT2ZDR- zD_RgR0K$aPTgAnJ%O8YenW{r78X|%$IE5>)a=DmINfph*xMz!6MI$2OelT%D;1JY) z5w`~cBNfeu`P;HY5MT?VA_#|$W@bf)N^Zzdrgbz}mOO1(ml47NbzN5tLS#oSdf$`j zeNR%(pTkgH9_)Xh?jHO%kqvfiVr!GsH#Y38@FVaf1@a{8`W%FRp#02#B!Q3c%|kQ8 z12q97mt(**C{=VA4rR$QKzNSmNf^`&1ye|gRH$VWK2aM4k)X+n72SqE+J*U4w_%;M z6c2=F>Xzq%AU+Y1id%POk7zCmbTz|JG>o4vT$qZkgYbOJSy2v@O3kn}5Vm9^CpZWM z%Ho>=!t*JdLd6h~{~MnI5Ef`;@-{?bp<1_MAfU#ihFAk}5uPPV6N*XQuU4i53rvY6KK!&**h1+*?;3_KnHY58{L(dO4F=+LRS84CDe5lFktzrSo-<#smF?OZ5SQtM-}eXCZ5@JI zkl`9QFfcGsDgj37*QG}X2R;z^R0NB_7(v(DQNk7_gfdaWfSr{S$Z5<7x=xJ|bRi-q zu&j_1SR@F-ax_GqSD=o|q6NaYcc9w3VqOSUCLLr|B6d7y_y#ULCPLDTjyyx1PWybtO< zBDo}W2!1g`L>ZPNdm<*GFkdLJT%Zt`pb_VVd*R!LUT=ZGoE4_!isdSPl3 zVIX|jf}x^f!{;S?FjBx&jK-j98_sfDGxUm$=rf(*VjC?}B}{K^M5Af&t${EdotjZ_ zuY+l@RIw4Gg`jT-gy(1~1YlzoDlFN0|4(tC)ZevbJn`LJd!Wy92T|;9t}XXj?hwiq zc5!XLZKLJ(%P+mQT-x_nv?y@zvygs1C)F-5DKnJMudiJRO$5*2gXl+Yg;<`{~(VH*)DJ~1k`g*7iQcZ0xMc$eT>+xJ`q>{e{YbBPHB$#zu*(Jr{yHE=UkQlRX} zo~~AGM6W;}bU~OZVrHPN_zJNVIEHOslVykMK|aCi8+b<@N!0+G;ew#*9yBaRhK>Z@ zDh}cZZP&Lz5D_+dTmxJO+jX3ZqahU9N9>|w0XZLQYC!0&57#RQQ^Qgi69gQ>P_BxX zaqllz@7xQIBgMBELdHiGd` zo~x?5jD;8=eAgnLRdIDJNJd;VBV?@g0HLWqf;1|KfJ2Cd?hU)9>zIglb}dCiKzA`M zD^eEHn5*4>NQ#fmm-J&(Jh(6EgDdpsFRA{FnZ*Cr8GnA@ZJ|PR-@;N%s{#N%EV4wf zJu(SmA*JsR6T_1vINON6( zh{PlW9(o(A1K<5~2aX1n|i`-A7fvM{E^nD84AFmX5o8G>)#X zdIq~}F}xPTD_6qgF5fl6cmQp@jAgw5c?H7pu?e900>PJTkTsVaqZ6>NM(6ozwBi{Y zyNV|7eTMN2$`I%l|9-JNBD|0Z#Z9CbXzRnPP;8u-mz^ z1~*jJs^dus0ALZ5*k21c24q3NFy}W!*#`J?gvqWkeq{uoMo87bFAVtgWDa>L=`O?9 z1}=dYq5zw&1~;zN(<5l5VTYhJ11WZFIl-f8|7yS?MKR_g)tE#>4gstkai}s50bdw% zXgQog%?soR&=$s^iXh#P!DkFbnYEvyAv4@$e$)?&GQSepX}kzwnWHEVRTgJ-|KbF$MRedkXGJ_Y~BV?kT7z-BVCcx~HI?bWcG&>7Igm(me(7 zq<^mtQB>vPuaH0?fkFa>1PTch5-224NZ?tJK!pDv;_rvr1B2v`@&5tD11A9K6DGg! z%VPZh?nFuy{~v)4k?t1hY+TpqN|j^+R>6)mAMox3`2RsVA>!^&>H>=Y|L)tUU#q@f zJ9_N+iIc*aL{4p<@jl3#JJnq7G+UFMYImCG$;B`~dXTr)G`dn5N9lfB^@T<)orm{D zRXg>G`9`8G zLF(i~bO4~qyV03DjhRLpDdjt?Uykyh+Kcm$EBgCITo9a_Uz};;F;33b+x5u~?pcMb znyr~rmPk|5r|w^>FE5{8Y@>qhFF$m;{5phoEn8@u+x#rvi5{)eni`XHr)r$_iALvq zqtU90)p~2HDp3a6@8vh}ysz!8!=tWLcMtPX2LeiEdq0xjC3e#~2r}&Cyp}$?w^}Q| ziN-ei?%a9pVtxB9H01u?AJY^n*pQy|Epk)ZGl{+niQdbWXwaCxdOj-Ioj|Qx`8_n_M$j+1N0sThrHM{+p*_8#PH5Au zy53lBotr)@Hk6CO_f6^Q|I_u=#dfpPSgxI_#nMf^246#4f0#4e$G7LVcN?a<63#~q z^u8h66cV>AGvj>lMGD5@a44xliq~_cIA=_)m=k8>d~>OOzSUZqG4v@-n_gLt>q?Cx zu^3L(qAr*c;`}=8ABl-CpjjPV3^- z>Xc-voz?n8^K4zzW`e46zs8eweAUn=8|*z!3Gpa|_(wTH3?B1#-7uG>E(xYM$P#02 zL2=tM#TXS#-!?jqL|?XJkmc1}S!#8yE;Z`N)@sbjjcKDj(^#Cns7z`>eYs;*^g^ZQ zt;Zq9-_Mcbj>FgVTrN9Za*S%vl3{Kkahoz_nEg7Rfc&oH%CFIxIoF<8S!jtf^ZLw; zbndKHKPxHbd|X%Rbq>ErIq&jGi0}6vUwpaTbct`f7df|#xJ8-L%X*QacGX_{Q$W)| z?Si^>;Fng}zWlG2jvN_8hPW{wFyr2f|I-2F+^*1L;Jx|*0mMIk25S`qLJkQfB-D`5 zLP8G-BP7g_utLHP2`41nknlo+goMu+mDyHdTa9gXwl&z+WLqnpL;dlxtXnjh_Bc<% z-J4k+3G!}`t?>|8hvj$=kvf38Y? z55{w)m{a+;>W|N`x$Ujp3=gqBeEBuDTfa@#Ive)dUF6)jw!U`vM52R>8Sh^3fRD4w z5W}}%-|oH2S5*Viu;yuA7`b&D!GD=ohDi>h@(>fq$_rz9nY_X*37k39N)d2+s|^c7 zj^5us`2UqL#PSl+8ObAANggR;>PSu^7C2GwH^r8;Nd|5-rDM zmy3W3@Q44^pzvxOOhx24f=Y==H72!~)ML_!Ni!y`n6w`&9LtgpZmh3w;=66h5oJb{ zHN<|E`A++XyNU{;HslB6si>gHtSm-$Vp_p?kmh>3kRTS)WSXj{^hDpl?rbHE(3vqp zG#)Dv)f5H^Nj#l>oB%hD!Lb?tEE#T?&mMroJx%cX$dH>6L6+i}M-0()xrvA&(U8Tz z7fW0Xf`&N5N)U#X3>xABXV&|W;fPzG3)~KwMZOmN0kJ;}9Rf--RxQ}F9f&uOH?{9) zaGx^zBlw6WWe0Xdf_uaN8!_)%z`LEw%8u}-DBy`_Wyhk3C?X44(D49R65@b)Ct{vu zPsg+HlDUY9(g&{^;}xqW6Rb*JB2X_(AkQ5mQXpoyX(Cp+m@Ryf^Q7!XjIvbjNG>a- z7}fMJ(2WP`0Yux(lCqxc)jYR6R(mEm7mb9F!w5+?SI9E!(T*Q;4!G?uAxGWW;z3fr z<0XUi@>n&Jtnz?JTlEvHN=ib=X3!tJ6su~lkfoT_ZbnHcWI&wLKcvSe$|6Ex$9Ul0pW^pOPlxkAZRl< zLXJZk!WoP?8j>K!N9Z*4i1$7k>`8+*d71P`!t@v(;ZeZn(!D~1E!{kQMfUp!wP35i5B4F)-jy!dl1V%WokEPjcjU`7}e8*!zxT@cZfiuXF$Z zzr|zh^8XM0;k$oY8hk-04IC&B4h>fh9(wNikr#ybt0yijH#${r{kuG|(wv{F$})Ua zwUM6-9Z%HmRc%f)S7+k_q5+nxwZ?q2Rj*Z-;l`<+R8>tgeP9>sSg9##?#b$GeR;Ne z((q{dBaL7orU`H^WRP$?QN$Wh#X_Qcpns`EMJjo`-m;{NDst2L$WyNqWC5isGxd`& zNG~*7N2^Ci&Ib0$<;J;{Mr$(Z+MR7qG}8unvBrZNdi}jxuX`A7_8It>d#{x>?ewA3$6<-R6}0p*gA(9CPnlzr zE#UzYDRcG-m}7r3+ZUI(Gv6_g@I<5L&{f-SAckH$i57>?HsQ@nc&KQ-Ym7#H!RrA=Xa@g0|$mv7u{&%QWh{nf~k`t^@7rkz4T7 z)JnU~gLisg)r{AA7b8G2R3~E`Kq8=?n35d^jSu!dXyp16V>u*!iDUVLM(`N=>ItYd z95AAKdc9qV5hjSXO zVKCU)fJ7O6FrG9Zb+g{T`G~9GY;K!j`*M;K-b{N^a^YuTPYM)>!k$#vlgNY3@z2wq z^mk(OSGdL&)zM|kp@y5ZfAK}ODSNqO_83IryAJJN%p#f@0>9HR;c$Hz@$gCemsBiT zhRw6Ee*tP~xAre?j>)or(M8HIh5h&~G9Ebb3;%!MWX^E07ykb>k31Mt3jcrM|EHfh z8VOMN{{iZCcf9cb6TZGLV{(&n?iK$3*jvJs