From 0b4dc4a1dee8c49f54e8a6cfad456dfcb0010122 Mon Sep 17 00:00:00 2001 From: "fabio.formosa" Date: Tue, 13 Feb 2018 00:10:07 +0100 Subject: [PATCH] first commit --- .../.gitignore | 0 .../pom.xml | 96 +++++----- .../fabioformosa/QuartManagerApplication.java | 0 .../it/fabioformosa/ServletInitializer.java | 0 .../aspects/ProgressUpdater.java | 0 .../aspects/ProgressUpdaterImpl.java | 0 .../configuration/MVCConfig.java | 22 +++ .../configuration/SchedulerConfig.java | 0 .../configuration/WebSecurityConfig.java | 90 ++++++++++ .../configuration/WebSecurityConfigOld.java | 46 +++-- .../configuration/WebsocketConfig.java | 0 .../controllers/AuthenticationController.java | 81 +++++++++ .../controllers/ManagerController.java | 0 .../controllers/PublicController.java | 27 +++ .../controllers/SchedulerController.java | 0 .../controllers/SessionController.java | 0 .../controllers/UserController.java | 82 +++++++++ .../controllers/WebsocketController.java | 0 .../dto/SchedulerConfigParam.java | 0 .../quartzmanager/dto/TriggerProgress.java | 0 .../ExceptionHandlingController.java | 18 ++ .../exceptions/ExceptionResponse.java | 25 +++ .../exceptions/ResourceConflictException.java | 22 +++ .../jobs/AbstractLoggingJob.java | 0 .../quartzmanager/jobs/MisfireTestJob.java | 0 .../quartzmanager/jobs/SampleJob.java | 0 .../jobs/entities/LogRecord.java | 0 .../AutowiringSpringBeanJobFactory.java | 0 .../scheduler/TriggerMonitor.java | 0 .../scheduler/TriggerMonitorImpl.java | 0 .../security/AjaxAuthenticationFilter.java | 0 .../security/ComboEntryPoint.java | 0 .../security/RESTRequestMatcher.java | 0 .../quartzmanager/security/TokenHelper.java | 164 ++++++++++++++++++ .../security/WebsocketRequestMatcher.java | 0 .../security/auth/AnonAuthentication.java | 51 ++++++ .../auth/AuthenticationFailureHandler.java | 25 +++ .../auth/AuthenticationSuccessHandler.java | 66 +++++++ .../security/auth/LogoutSuccess.java | 36 ++++ .../auth/RestAuthenticationEntryPoint.java | 30 ++++ .../auth/TokenAuthenticationFilter.java | 94 ++++++++++ .../auth/TokenBasedAuthentication.java | 43 +++++ .../security/model/Authority.java | 47 +++++ .../quartzmanager/security/model/User.java | 128 ++++++++++++++ .../security/model/UserRequest.java | 56 ++++++ .../security/model/UserTokenState.java | 35 ++++ .../repository/AuthorityRepository.java | 9 + .../security/repository/UserRepository.java | 13 ++ .../security/service/AuthorityService.java | 12 ++ .../security/service/UserService.java | 21 +++ .../service/impl/AuthorityServiceImpl.java | 38 ++++ .../impl/CustomUserDetailsService.java | 70 ++++++++ .../service/impl/UserServiceImpl.java | 78 +++++++++ .../src/main/resources/application.properties | 10 +- .../src/main/resources/banner.txt | 8 + .../src/main/resources/import.sql | 11 ++ .../src/main/resources/quartz.properties | 0 .../src/main/resources/static/css/animate.css | 0 .../static/css/dashboard-bootstrap.css | 0 .../main/resources/static/css/scheduler.css | 0 .../src/main/resources/static/css/signin.css | 0 .../src/main/resources/static/js/app/app.js | 0 .../authentication/authentication.js | 0 .../configurator/configurator-directives.js | 0 .../configurator/configurator-module.js | 0 .../app/components/progress/logs-directive.js | 2 +- .../app/components/progress/logs-service.js | 0 .../components/progress/progress-directive.js | 0 .../components/progress/progress-module.js | 0 .../components/progress/progress-service.js | 0 .../components/starter/starter-directives.js | 0 .../app/components/starter/starter-module.js | 0 .../components/websocket/websocket-factory.js | 0 .../components/websocket/websocket-module.js | 0 .../resources/static/js/lib/bootbox.min.js | 0 .../static/js/lib/http-auth-interceptor.js | 0 .../js/lib/http-auth-interceptor.min.js | 0 .../resources/static/js/lib/sockjs-0.3.4.js | 0 .../static/js/lib/sockjs-0.3.4.min.js | 0 .../src/main/resources/static/js/lib/stomp.js | 0 .../templates/fragments/headerinc.html | 0 .../resources/templates/layouts/standard.html | 0 .../src/main/resources/templates/login.html | 0 .../templates/manager/config-form.html | 0 .../templates/manager/logs-panel.html | 0 .../templates/manager/progress-panel.html | 0 .../main/resources/templates/panelView.html | 0 .../QuartManagerApplicationTests.java | 0 quartz-manager-frontend/.angular-cli.json | 57 ++++++ quartz-manager-frontend/.editorconfig | 13 ++ quartz-manager-frontend/.gitignore | 45 +++++ quartz-manager-frontend/e2e/app.e2e-spec.ts | 14 ++ quartz-manager-frontend/e2e/app.po.ts | 11 ++ quartz-manager-frontend/e2e/tsconfig.e2e.json | 12 ++ quartz-manager-frontend/karma.conf.js | 44 +++++ quartz-manager-frontend/package.json | 56 ++++++ quartz-manager-frontend/protractor.conf.js | 30 ++++ quartz-manager-frontend/proxy.conf.json | 6 + .../src/app/admin/admin.component.css | 0 .../src/app/admin/admin.component.html | 3 + .../src/app/admin/admin.component.spec.ts | 25 +++ .../src/app/admin/admin.component.ts | 16 ++ .../src/app/admin/index.ts | 2 + .../src/app/app-routing.module.ts | 60 +++++++ .../src/app/app.component.html | 5 + .../src/app/app.component.scss | 21 +++ .../src/app/app.component.spec.ts | 65 +++++++ .../src/app/app.component.ts | 10 ++ quartz-manager-frontend/src/app/app.module.ts | 103 +++++++++++ .../change-password.component.html | 18 ++ .../change-password.component.scss | 45 +++++ .../change-password.component.spec.ts | 52 ++++++ .../change-password.component.ts | 65 +++++++ .../src/app/change-password/index.ts | 1 + .../api-card/api-card.component.html | 26 +++ .../api-card/api-card.component.scss | 63 +++++++ .../component/api-card/api-card.component.ts | 45 +++++ .../src/app/component/api-card/index.ts | 1 + .../component/footer/footer.component.html | 9 + .../component/footer/footer.component.scss | 27 +++ .../app/component/footer/footer.component.ts | 15 ++ .../src/app/component/footer/index.ts | 1 + .../component/github/github.component.html | 4 + .../component/github/github.component.scss | 20 +++ .../app/component/github/github.component.ts | 15 ++ .../src/app/component/github/index.ts | 1 + .../account-menu/account-menu.component.html | 2 + .../account-menu/account-menu.component.scss | 0 .../account-menu.component.spec.ts | 53 ++++++ .../account-menu/account-menu.component.ts | 35 ++++ .../component/header/header.component.html | 40 +++++ .../component/header/header.component.scss | 59 +++++++ .../app/component/header/header.component.ts | 39 +++++ .../src/app/component/header/index.ts | 1 + .../src/app/component/index.ts | 4 + .../src/app/forbidden/forbidden.component.css | 0 .../app/forbidden/forbidden.component.html | 3 + .../app/forbidden/forbidden.component.spec.ts | 25 +++ .../src/app/forbidden/forbidden.component.ts | 15 ++ .../src/app/forbidden/index.ts | 1 + .../src/app/guard/admin.guard.spec.ts | 31 ++++ .../src/app/guard/admin.guard.ts | 26 +++ .../src/app/guard/guest.guard.ts | 19 ++ .../src/app/guard/index.ts | 4 + .../src/app/guard/login.guard.ts | 19 ++ .../src/app/home/home.component.html | 39 +++++ .../src/app/home/home.component.scss | 42 +++++ .../src/app/home/home.component.spec.ts | 58 +++++++ .../src/app/home/home.component.ts | 71 ++++++++ quartz-manager-frontend/src/app/home/index.ts | 1 + .../src/app/home_rem/home.component.html | 39 +++++ .../src/app/home_rem/home.component.scss | 42 +++++ .../src/app/home_rem/home.component.spec.ts | 58 +++++++ .../src/app/home_rem/home.component.ts | 71 ++++++++ .../src/app/home_rem/index.ts | 1 + .../src/app/login/index.ts | 1 + .../src/app/login/login.component.html | 43 +++++ .../src/app/login/login.component.scss | 58 +++++++ .../src/app/login/login.component.spec.ts | 49 ++++++ .../src/app/login/login.component.ts | 108 ++++++++++++ .../src/app/not-found/index.ts | 1 + .../src/app/not-found/not-found.component.css | 0 .../app/not-found/not-found.component.html | 5 + .../app/not-found/not-found.component.spec.ts | 32 ++++ .../src/app/not-found/not-found.component.ts | 10 ++ quartz-manager-frontend/src/app/polyfills.ts | 74 ++++++++ .../src/app/service/api.service.ts | 76 ++++++++ .../src/app/service/auth.service.ts | 50 ++++++ .../src/app/service/config.service.ts | 65 +++++++ .../src/app/service/foo.service.ts | 18 ++ .../src/app/service/index.ts | 5 + .../src/app/service/mocks/api.service.mock.ts | 21 +++ .../src/app/service/mocks/index.ts | 2 + .../app/service/mocks/user.service.mock.ts | 5 + .../src/app/service/user.service.ts | 42 +++++ .../src/app/shared/models/display-message.ts | 4 + .../src/app/shared/utilities/loose-invalid.ts | 3 + .../src/app/shared/utilities/serialize.ts | 14 ++ .../src/app/signup/index.ts | 1 + .../src/app/signup/signup.component.html | 56 ++++++ .../src/app/signup/signup.component.scss | 59 +++++++ .../src/app/signup/signup.component.spec.ts | 25 +++ .../src/app/signup/signup.component.ts | 102 +++++++++++ quartz-manager-frontend/src/assets/.gitkeep | 0 .../src/assets/image/admin.png | Bin 0 -> 161826 bytes .../image/angular-white-transparent.svg | 21 +++ .../src/assets/image/foo.png | Bin 0 -> 117304 bytes .../src/assets/image/github.png | Bin 0 -> 1571 bytes .../src/assets/image/user.png | Bin 0 -> 223499 bytes .../src/environments/environment.prod.ts | 3 + .../src/environments/environment.ts | 8 + quartz-manager-frontend/src/favicon.ico | Bin 0 -> 5430 bytes quartz-manager-frontend/src/index.html | 23 +++ quartz-manager-frontend/src/main.ts | 11 ++ quartz-manager-frontend/src/polyfills.ts | 74 ++++++++ quartz-manager-frontend/src/styles.css | 6 + quartz-manager-frontend/src/test.ts | 32 ++++ quartz-manager-frontend/src/tsconfig.app.json | 13 ++ .../src/tsconfig.spec.json | 20 +++ quartz-manager-frontend/src/typings.d.ts | 5 + quartz-manager-frontend/tsconfig.json | 20 +++ quartz-manager-frontend/tslint.json | 116 +++++++++++++ .../configuration/MVCConfig.java | 57 ------ 203 files changed, 4572 insertions(+), 126 deletions(-) rename {quartz-manager => quartz-manager-backend}/.gitignore (100%) rename {quartz-manager => quartz-manager-backend}/pom.xml (83%) rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/QuartManagerApplication.java (100%) rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/ServletInitializer.java (100%) rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/quartzmanager/aspects/ProgressUpdater.java (100%) rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/quartzmanager/aspects/ProgressUpdaterImpl.java (100%) create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/configuration/MVCConfig.java rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/quartzmanager/configuration/SchedulerConfig.java (100%) create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/configuration/WebSecurityConfig.java rename quartz-manager/src/main/java/it/fabioformosa/quartzmanager/configuration/WebSecurityConfig.java => quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/configuration/WebSecurityConfigOld.java (61%) rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/quartzmanager/configuration/WebsocketConfig.java (100%) create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/controllers/AuthenticationController.java rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/quartzmanager/controllers/ManagerController.java (100%) create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/controllers/PublicController.java rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/quartzmanager/controllers/SchedulerController.java (100%) rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/quartzmanager/controllers/SessionController.java (100%) create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/controllers/UserController.java rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/quartzmanager/controllers/WebsocketController.java (100%) rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/quartzmanager/dto/SchedulerConfigParam.java (100%) rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/quartzmanager/dto/TriggerProgress.java (100%) create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/exceptions/ExceptionHandlingController.java create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/exceptions/ExceptionResponse.java create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/exceptions/ResourceConflictException.java rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/quartzmanager/jobs/AbstractLoggingJob.java (100%) rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/quartzmanager/jobs/MisfireTestJob.java (100%) rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/quartzmanager/jobs/SampleJob.java (100%) rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/quartzmanager/jobs/entities/LogRecord.java (100%) rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/quartzmanager/scheduler/AutowiringSpringBeanJobFactory.java (100%) rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/quartzmanager/scheduler/TriggerMonitor.java (100%) rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/quartzmanager/scheduler/TriggerMonitorImpl.java (100%) rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/quartzmanager/security/AjaxAuthenticationFilter.java (100%) rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/quartzmanager/security/ComboEntryPoint.java (100%) rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/quartzmanager/security/RESTRequestMatcher.java (100%) create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/TokenHelper.java rename {quartz-manager => quartz-manager-backend}/src/main/java/it/fabioformosa/quartzmanager/security/WebsocketRequestMatcher.java (100%) create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/AnonAuthentication.java create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/AuthenticationFailureHandler.java create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/AuthenticationSuccessHandler.java create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/LogoutSuccess.java create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/RestAuthenticationEntryPoint.java create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/TokenAuthenticationFilter.java create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/TokenBasedAuthentication.java create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/model/Authority.java create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/model/User.java create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/model/UserRequest.java create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/model/UserTokenState.java create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/repository/AuthorityRepository.java create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/repository/UserRepository.java create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/service/AuthorityService.java create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/service/UserService.java create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/service/impl/AuthorityServiceImpl.java create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/service/impl/CustomUserDetailsService.java create mode 100644 quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/service/impl/UserServiceImpl.java rename {quartz-manager => quartz-manager-backend}/src/main/resources/application.properties (57%) create mode 100644 quartz-manager-backend/src/main/resources/banner.txt create mode 100644 quartz-manager-backend/src/main/resources/import.sql rename {quartz-manager => quartz-manager-backend}/src/main/resources/quartz.properties (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/css/animate.css (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/css/dashboard-bootstrap.css (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/css/scheduler.css (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/css/signin.css (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/js/app/app.js (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/js/app/components/authentication/authentication.js (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/js/app/components/configurator/configurator-directives.js (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/js/app/components/configurator/configurator-module.js (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/js/app/components/progress/logs-directive.js (97%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/js/app/components/progress/logs-service.js (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/js/app/components/progress/progress-directive.js (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/js/app/components/progress/progress-module.js (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/js/app/components/progress/progress-service.js (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/js/app/components/starter/starter-directives.js (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/js/app/components/starter/starter-module.js (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/js/app/components/websocket/websocket-factory.js (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/js/app/components/websocket/websocket-module.js (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/js/lib/bootbox.min.js (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/js/lib/http-auth-interceptor.js (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/js/lib/http-auth-interceptor.min.js (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/js/lib/sockjs-0.3.4.js (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/js/lib/sockjs-0.3.4.min.js (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/static/js/lib/stomp.js (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/templates/fragments/headerinc.html (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/templates/layouts/standard.html (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/templates/login.html (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/templates/manager/config-form.html (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/templates/manager/logs-panel.html (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/templates/manager/progress-panel.html (100%) rename {quartz-manager => quartz-manager-backend}/src/main/resources/templates/panelView.html (100%) rename {quartz-manager => quartz-manager-backend}/src/test/java/it/fabioformosa/QuartManagerApplicationTests.java (100%) create mode 100644 quartz-manager-frontend/.angular-cli.json create mode 100644 quartz-manager-frontend/.editorconfig create mode 100644 quartz-manager-frontend/.gitignore create mode 100644 quartz-manager-frontend/e2e/app.e2e-spec.ts create mode 100644 quartz-manager-frontend/e2e/app.po.ts create mode 100644 quartz-manager-frontend/e2e/tsconfig.e2e.json create mode 100644 quartz-manager-frontend/karma.conf.js create mode 100644 quartz-manager-frontend/package.json create mode 100644 quartz-manager-frontend/protractor.conf.js create mode 100644 quartz-manager-frontend/proxy.conf.json create mode 100644 quartz-manager-frontend/src/app/admin/admin.component.css create mode 100644 quartz-manager-frontend/src/app/admin/admin.component.html create mode 100644 quartz-manager-frontend/src/app/admin/admin.component.spec.ts create mode 100644 quartz-manager-frontend/src/app/admin/admin.component.ts create mode 100644 quartz-manager-frontend/src/app/admin/index.ts create mode 100644 quartz-manager-frontend/src/app/app-routing.module.ts create mode 100644 quartz-manager-frontend/src/app/app.component.html create mode 100644 quartz-manager-frontend/src/app/app.component.scss create mode 100644 quartz-manager-frontend/src/app/app.component.spec.ts create mode 100644 quartz-manager-frontend/src/app/app.component.ts create mode 100644 quartz-manager-frontend/src/app/app.module.ts create mode 100644 quartz-manager-frontend/src/app/change-password/change-password.component.html create mode 100644 quartz-manager-frontend/src/app/change-password/change-password.component.scss create mode 100644 quartz-manager-frontend/src/app/change-password/change-password.component.spec.ts create mode 100644 quartz-manager-frontend/src/app/change-password/change-password.component.ts create mode 100644 quartz-manager-frontend/src/app/change-password/index.ts create mode 100644 quartz-manager-frontend/src/app/component/api-card/api-card.component.html create mode 100644 quartz-manager-frontend/src/app/component/api-card/api-card.component.scss create mode 100644 quartz-manager-frontend/src/app/component/api-card/api-card.component.ts create mode 100644 quartz-manager-frontend/src/app/component/api-card/index.ts create mode 100644 quartz-manager-frontend/src/app/component/footer/footer.component.html create mode 100644 quartz-manager-frontend/src/app/component/footer/footer.component.scss create mode 100644 quartz-manager-frontend/src/app/component/footer/footer.component.ts create mode 100644 quartz-manager-frontend/src/app/component/footer/index.ts create mode 100644 quartz-manager-frontend/src/app/component/github/github.component.html create mode 100644 quartz-manager-frontend/src/app/component/github/github.component.scss create mode 100644 quartz-manager-frontend/src/app/component/github/github.component.ts create mode 100644 quartz-manager-frontend/src/app/component/github/index.ts create mode 100644 quartz-manager-frontend/src/app/component/header/account-menu/account-menu.component.html create mode 100644 quartz-manager-frontend/src/app/component/header/account-menu/account-menu.component.scss create mode 100644 quartz-manager-frontend/src/app/component/header/account-menu/account-menu.component.spec.ts create mode 100644 quartz-manager-frontend/src/app/component/header/account-menu/account-menu.component.ts create mode 100644 quartz-manager-frontend/src/app/component/header/header.component.html create mode 100644 quartz-manager-frontend/src/app/component/header/header.component.scss create mode 100644 quartz-manager-frontend/src/app/component/header/header.component.ts create mode 100644 quartz-manager-frontend/src/app/component/header/index.ts create mode 100644 quartz-manager-frontend/src/app/component/index.ts create mode 100644 quartz-manager-frontend/src/app/forbidden/forbidden.component.css create mode 100644 quartz-manager-frontend/src/app/forbidden/forbidden.component.html create mode 100644 quartz-manager-frontend/src/app/forbidden/forbidden.component.spec.ts create mode 100644 quartz-manager-frontend/src/app/forbidden/forbidden.component.ts create mode 100644 quartz-manager-frontend/src/app/forbidden/index.ts create mode 100644 quartz-manager-frontend/src/app/guard/admin.guard.spec.ts create mode 100644 quartz-manager-frontend/src/app/guard/admin.guard.ts create mode 100644 quartz-manager-frontend/src/app/guard/guest.guard.ts create mode 100644 quartz-manager-frontend/src/app/guard/index.ts create mode 100644 quartz-manager-frontend/src/app/guard/login.guard.ts create mode 100644 quartz-manager-frontend/src/app/home/home.component.html create mode 100644 quartz-manager-frontend/src/app/home/home.component.scss create mode 100644 quartz-manager-frontend/src/app/home/home.component.spec.ts create mode 100644 quartz-manager-frontend/src/app/home/home.component.ts create mode 100644 quartz-manager-frontend/src/app/home/index.ts create mode 100644 quartz-manager-frontend/src/app/home_rem/home.component.html create mode 100644 quartz-manager-frontend/src/app/home_rem/home.component.scss create mode 100644 quartz-manager-frontend/src/app/home_rem/home.component.spec.ts create mode 100644 quartz-manager-frontend/src/app/home_rem/home.component.ts create mode 100644 quartz-manager-frontend/src/app/home_rem/index.ts create mode 100644 quartz-manager-frontend/src/app/login/index.ts create mode 100644 quartz-manager-frontend/src/app/login/login.component.html create mode 100644 quartz-manager-frontend/src/app/login/login.component.scss create mode 100644 quartz-manager-frontend/src/app/login/login.component.spec.ts create mode 100644 quartz-manager-frontend/src/app/login/login.component.ts create mode 100644 quartz-manager-frontend/src/app/not-found/index.ts create mode 100644 quartz-manager-frontend/src/app/not-found/not-found.component.css create mode 100644 quartz-manager-frontend/src/app/not-found/not-found.component.html create mode 100644 quartz-manager-frontend/src/app/not-found/not-found.component.spec.ts create mode 100644 quartz-manager-frontend/src/app/not-found/not-found.component.ts create mode 100644 quartz-manager-frontend/src/app/polyfills.ts create mode 100644 quartz-manager-frontend/src/app/service/api.service.ts create mode 100644 quartz-manager-frontend/src/app/service/auth.service.ts create mode 100644 quartz-manager-frontend/src/app/service/config.service.ts create mode 100644 quartz-manager-frontend/src/app/service/foo.service.ts create mode 100644 quartz-manager-frontend/src/app/service/index.ts create mode 100644 quartz-manager-frontend/src/app/service/mocks/api.service.mock.ts create mode 100644 quartz-manager-frontend/src/app/service/mocks/index.ts create mode 100644 quartz-manager-frontend/src/app/service/mocks/user.service.mock.ts create mode 100644 quartz-manager-frontend/src/app/service/user.service.ts create mode 100644 quartz-manager-frontend/src/app/shared/models/display-message.ts create mode 100644 quartz-manager-frontend/src/app/shared/utilities/loose-invalid.ts create mode 100644 quartz-manager-frontend/src/app/shared/utilities/serialize.ts create mode 100644 quartz-manager-frontend/src/app/signup/index.ts create mode 100644 quartz-manager-frontend/src/app/signup/signup.component.html create mode 100644 quartz-manager-frontend/src/app/signup/signup.component.scss create mode 100644 quartz-manager-frontend/src/app/signup/signup.component.spec.ts create mode 100644 quartz-manager-frontend/src/app/signup/signup.component.ts create mode 100644 quartz-manager-frontend/src/assets/.gitkeep create mode 100644 quartz-manager-frontend/src/assets/image/admin.png create mode 100644 quartz-manager-frontend/src/assets/image/angular-white-transparent.svg create mode 100644 quartz-manager-frontend/src/assets/image/foo.png create mode 100644 quartz-manager-frontend/src/assets/image/github.png create mode 100644 quartz-manager-frontend/src/assets/image/user.png create mode 100644 quartz-manager-frontend/src/environments/environment.prod.ts create mode 100644 quartz-manager-frontend/src/environments/environment.ts create mode 100644 quartz-manager-frontend/src/favicon.ico create mode 100644 quartz-manager-frontend/src/index.html create mode 100644 quartz-manager-frontend/src/main.ts create mode 100644 quartz-manager-frontend/src/polyfills.ts create mode 100644 quartz-manager-frontend/src/styles.css create mode 100644 quartz-manager-frontend/src/test.ts create mode 100644 quartz-manager-frontend/src/tsconfig.app.json create mode 100644 quartz-manager-frontend/src/tsconfig.spec.json create mode 100644 quartz-manager-frontend/src/typings.d.ts create mode 100644 quartz-manager-frontend/tsconfig.json create mode 100644 quartz-manager-frontend/tslint.json delete mode 100644 quartz-manager/src/main/java/it/fabioformosa/quartzmanager/configuration/MVCConfig.java diff --git a/quartz-manager/.gitignore b/quartz-manager-backend/.gitignore similarity index 100% rename from quartz-manager/.gitignore rename to quartz-manager-backend/.gitignore diff --git a/quartz-manager/pom.xml b/quartz-manager-backend/pom.xml similarity index 83% rename from quartz-manager/pom.xml rename to quartz-manager-backend/pom.xml index 12e3f20..e3dea41 100644 --- a/quartz-manager/pom.xml +++ b/quartz-manager-backend/pom.xml @@ -5,7 +5,7 @@ it.fabioformosa quartz-manager - 0.0.1-SNAPSHOT + 2.0.1-SNAPSHOT war quartz-manager @@ -20,13 +20,14 @@ UTF-8 + UTF-8 1.8 org.springframework.boot - spring-boot-devtools + spring-boot-starter-web org.springframework.boot @@ -38,32 +39,25 @@ org.springframework.boot - spring-boot-starter-thymeleaf - - - org.thymeleaf.extras - thymeleaf-extras-springsecurity4 + spring-boot-starter-data-jpa org.springframework.boot - spring-boot-starter-velocity - 1.4.7.RELEASE + spring-boot-devtools - org.springframework.boot - spring-boot-starter-web - - - org.codehaus.groovy - groovy - - - - net.sourceforge.nekohtml - nekohtml - - - + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework + spring-messaging + + + org.springframework + spring-tx + + org.springframework.boot spring-boot-starter-tomcat provided @@ -75,23 +69,45 @@ - org.springframework.boot - spring-boot-starter-websocket - - - org.springframework - spring-messaging - - + io.jsonwebtoken + jjwt + 0.9.0 + - org.webjars - bootstrap - 3.3.6 + joda-time + joda-time - nz.net.ultraq.thymeleaf - thymeleaf-layout-dialect - + com.fasterxml.jackson.core + jackson-databind + + + com.fasterxml.jackson.core + jackson-annotations + + + com.h2database + h2 + runtime + + + + org.codehaus.groovy + groovy + + + + net.sourceforge.nekohtml + nekohtml + + + + io.rest-assured + spring-mock-mvc + 3.0.5 + test + + org.quartz-scheduler quartz @@ -102,11 +118,7 @@ commons-io 1.3.2 - - org.springframework - spring-tx - - + io.projectreactor diff --git a/quartz-manager/src/main/java/it/fabioformosa/QuartManagerApplication.java b/quartz-manager-backend/src/main/java/it/fabioformosa/QuartManagerApplication.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/QuartManagerApplication.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/QuartManagerApplication.java diff --git a/quartz-manager/src/main/java/it/fabioformosa/ServletInitializer.java b/quartz-manager-backend/src/main/java/it/fabioformosa/ServletInitializer.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/ServletInitializer.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/ServletInitializer.java diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/aspects/ProgressUpdater.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/aspects/ProgressUpdater.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/aspects/ProgressUpdater.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/aspects/ProgressUpdater.java diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/aspects/ProgressUpdaterImpl.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/aspects/ProgressUpdaterImpl.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/aspects/ProgressUpdaterImpl.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/aspects/ProgressUpdaterImpl.java diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/configuration/MVCConfig.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/configuration/MVCConfig.java new file mode 100644 index 0000000..8d5c43d --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/configuration/MVCConfig.java @@ -0,0 +1,22 @@ +package it.fabioformosa.quartzmanager.configuration; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; + +@Configuration +public class MVCConfig extends WebMvcConfigurerAdapter { + + @Override + public void addViewControllers(ViewControllerRegistry registry) { + registry.addViewController("/login").setViewName("login"); + registry.addViewController("/").setViewName("redirect:/manager"); + + registry.addViewController("/templates/manager/config-form.html").setViewName("manager/config-form"); + registry.addViewController("/templates/manager/progress-panel.html") + .setViewName("manager/progress-panel"); + registry.addViewController("/templates/manager/logs-panel.html").setViewName("manager/logs-panel"); + + } + +} diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/configuration/SchedulerConfig.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/configuration/SchedulerConfig.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/configuration/SchedulerConfig.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/configuration/SchedulerConfig.java diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/configuration/WebSecurityConfig.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/configuration/WebSecurityConfig.java new file mode 100644 index 0000000..853af29 --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/configuration/WebSecurityConfig.java @@ -0,0 +1,90 @@ +package it.fabioformosa.quartzmanager.configuration; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; +import org.springframework.security.web.csrf.CookieCsrfTokenRepository; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; + +import it.fabioformosa.quartzmanager.security.auth.AuthenticationFailureHandler; +import it.fabioformosa.quartzmanager.security.auth.AuthenticationSuccessHandler; +import it.fabioformosa.quartzmanager.security.auth.LogoutSuccess; +import it.fabioformosa.quartzmanager.security.auth.RestAuthenticationEntryPoint; +import it.fabioformosa.quartzmanager.security.auth.TokenAuthenticationFilter; +import it.fabioformosa.quartzmanager.security.service.impl.CustomUserDetailsService; + +/** + * Created by fan.jin on 2016-10-19. + */ + +@Configuration +@EnableGlobalMethodSecurity(prePostEnabled = true) +public class WebSecurityConfig extends WebSecurityConfigurerAdapter { + + @Value("${jwt.cookie}") + private String TOKEN_COOKIE; + + @Autowired + private CustomUserDetailsService jwtUserDetailsService; + + @Autowired + private RestAuthenticationEntryPoint restAuthenticationEntryPoint; + + @Autowired + private LogoutSuccess logoutSuccess; + + @Autowired + private AuthenticationSuccessHandler authenticationSuccessHandler; + + @Autowired + private AuthenticationFailureHandler authenticationFailureHandler; + + @Bean + @Override + public AuthenticationManager authenticationManagerBean() throws Exception { + return super.authenticationManagerBean(); + } + + @Autowired + public void configureGlobal(AuthenticationManagerBuilder authenticationManagerBuilder) + throws Exception { + authenticationManagerBuilder.userDetailsService(jwtUserDetailsService) + .passwordEncoder(passwordEncoder()); + + } + + @Bean + public TokenAuthenticationFilter jwtAuthenticationTokenFilter() throws Exception { + return new TokenAuthenticationFilter(); + } + + @Bean + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + http.csrf().ignoringAntMatchers("/api/login", "/api/signup") + .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()).and() + .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and() + .exceptionHandling().authenticationEntryPoint(restAuthenticationEntryPoint).and() + .addFilterBefore(jwtAuthenticationTokenFilter(), BasicAuthenticationFilter.class) + .authorizeRequests().anyRequest().authenticated().and().formLogin().loginPage("/api/login") + .successHandler(authenticationSuccessHandler).failureHandler(authenticationFailureHandler) + .and().logout().logoutRequestMatcher(new AntPathRequestMatcher("/api/logout")) + .logoutSuccessHandler(logoutSuccess).deleteCookies(TOKEN_COOKIE); + + } + +} diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/configuration/WebSecurityConfig.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/configuration/WebSecurityConfigOld.java similarity index 61% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/configuration/WebSecurityConfig.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/configuration/WebSecurityConfigOld.java index bbf562f..f3e0dff 100644 --- a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/configuration/WebSecurityConfig.java +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/configuration/WebSecurityConfigOld.java @@ -2,13 +2,9 @@ package it.fabioformosa.quartzmanager.configuration; import javax.annotation.Resource; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.annotation.Order; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.builders.WebSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import org.springframework.security.web.util.matcher.AntPathRequestMatcher; @@ -16,48 +12,50 @@ import org.springframework.security.web.util.matcher.AntPathRequestMatcher; import it.fabioformosa.quartzmanager.security.AjaxAuthenticationFilter; import it.fabioformosa.quartzmanager.security.ComboEntryPoint; -@Configuration -@EnableWebSecurity -public class WebSecurityConfig extends WebSecurityConfigurerAdapter { +//@Configuration +//@EnableWebSecurity +public class WebSecurityConfigOld extends WebSecurityConfigurerAdapter { - @Configuration - @Order(1) + // @Configuration + // @Order(1) public static class ApiWebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable() // - .antMatcher("/notifications").authorizeRequests().anyRequest().hasAnyRole("ADMIN").and() - .httpBasic(); + .antMatcher("/notifications").authorizeRequests().anyRequest().hasAnyRole("ADMIN").and() + .httpBasic(); // http.antMatcher("/logs/**").authorizeRequests().anyRequest() // .permitAll(); } } - @Configuration - @Order(2) + // @Configuration + // @Order(2) public static class FormWebSecurityConfig extends WebSecurityConfigurerAdapter { @Resource private ComboEntryPoint comboEntryPoint; - @Override - protected void configure(HttpSecurity http) throws Exception { - http.exceptionHandling().authenticationEntryPoint(comboEntryPoint).and().csrf().disable()// - .authorizeRequests().anyRequest().authenticated().and()// - .addFilterBefore(new AjaxAuthenticationFilter(authenticationManager()), - UsernamePasswordAuthenticationFilter.class)// - .formLogin().loginPage("/login").permitAll().and().logout() - .logoutRequestMatcher(new AntPathRequestMatcher("/logout")).logoutSuccessUrl("/manager"); - } - @Override public void configure(WebSecurity web) throws Exception { web.ignoring().antMatchers("/css/**", "/js/**", "/img/**", "/lib/**"); } + + @Override + protected void configure(HttpSecurity http) throws Exception { + http.csrf().ignoringAntMatchers("/api/login", "/api/signup").and() // + .exceptionHandling().authenticationEntryPoint(comboEntryPoint).and().csrf().disable()// + .authorizeRequests().anyRequest().authenticated().and()// + .addFilterBefore(new AjaxAuthenticationFilter(authenticationManager()), + UsernamePasswordAuthenticationFilter.class)// + .formLogin().loginPage("/api/login").permitAll().and().logout() + .logoutRequestMatcher(new AntPathRequestMatcher("/api/logout")) + .logoutSuccessUrl("/manager"); + } } - @Autowired + // @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication().withUser("admin").password("admin").roles("ADMIN"); } diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/configuration/WebsocketConfig.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/configuration/WebsocketConfig.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/configuration/WebsocketConfig.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/configuration/WebsocketConfig.java diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/controllers/AuthenticationController.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/controllers/AuthenticationController.java new file mode 100644 index 0000000..9f8bdc5 --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/controllers/AuthenticationController.java @@ -0,0 +1,81 @@ +package it.fabioformosa.quartzmanager.controllers; + +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import it.fabioformosa.quartzmanager.security.TokenHelper; +import it.fabioformosa.quartzmanager.security.model.UserTokenState; +import it.fabioformosa.quartzmanager.security.service.impl.CustomUserDetailsService; + +/** + * Created by fan.jin on 2017-05-10. + */ + +@RestController +@RequestMapping( value = "/api", produces = MediaType.APPLICATION_JSON_VALUE ) +public class AuthenticationController { + + static class PasswordChanger { + public String oldPassword; + public String newPassword; + } + + @Autowired + private CustomUserDetailsService userDetailsService; + + @Autowired + TokenHelper tokenHelper; + + @Value("${jwt.expires_in}") + private int EXPIRES_IN; + + @Value("${jwt.cookie}") + private String TOKEN_COOKIE; + + @RequestMapping(value = "/changePassword", method = RequestMethod.POST) + @PreAuthorize("hasRole('USER')") + public ResponseEntity changePassword(@RequestBody PasswordChanger passwordChanger) { + userDetailsService.changePassword(passwordChanger.oldPassword, passwordChanger.newPassword); + Map result = new HashMap<>(); + result.put( "result", "success" ); + return ResponseEntity.accepted().body(result); + } + + @RequestMapping(value = "/refresh", method = RequestMethod.GET) + public ResponseEntity refreshAuthenticationToken(HttpServletRequest request, HttpServletResponse response) { + + String authToken = tokenHelper.getToken( request ); + if (authToken != null && tokenHelper.canTokenBeRefreshed(authToken)) { + // TODO check user password last update + String refreshedToken = tokenHelper.refreshToken(authToken); + + Cookie authCookie = new Cookie( TOKEN_COOKIE, refreshedToken ); + authCookie.setPath( "/" ); + authCookie.setHttpOnly( true ); + authCookie.setMaxAge( EXPIRES_IN ); + // Add cookie to response + response.addCookie( authCookie ); + + UserTokenState userTokenState = new UserTokenState(refreshedToken, EXPIRES_IN); + return ResponseEntity.ok(userTokenState); + } else { + UserTokenState userTokenState = new UserTokenState(); + return ResponseEntity.accepted().body(userTokenState); + } + } + +} diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/controllers/ManagerController.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/controllers/ManagerController.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/controllers/ManagerController.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/controllers/ManagerController.java diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/controllers/PublicController.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/controllers/PublicController.java new file mode 100644 index 0000000..57cf88d --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/controllers/PublicController.java @@ -0,0 +1,27 @@ +package it.fabioformosa.quartzmanager.controllers; + +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; +import java.util.Map; + +import static org.springframework.web.bind.annotation.RequestMethod.GET; + +/** + * Created by fan.jin on 2017-05-08. + */ + +@RestController +@RequestMapping( value = "/api", produces = MediaType.APPLICATION_JSON_VALUE ) +public class PublicController { + + @RequestMapping( method = GET, value= "/foo") + public Map getFoo() { + Map fooObj = new HashMap<>(); + fooObj.put("foo", "bar"); + return fooObj; + } + +} diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/controllers/SchedulerController.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/controllers/SchedulerController.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/controllers/SchedulerController.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/controllers/SchedulerController.java diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/controllers/SessionController.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/controllers/SessionController.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/controllers/SessionController.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/controllers/SessionController.java diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/controllers/UserController.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/controllers/UserController.java new file mode 100644 index 0000000..79754ad --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/controllers/UserController.java @@ -0,0 +1,82 @@ +package it.fabioformosa.quartzmanager.controllers; + +import static org.springframework.web.bind.annotation.RequestMethod.GET; +import static org.springframework.web.bind.annotation.RequestMethod.POST; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.util.UriComponentsBuilder; + +import it.fabioformosa.quartzmanager.exceptions.ResourceConflictException; +import it.fabioformosa.quartzmanager.security.model.User; +import it.fabioformosa.quartzmanager.security.model.UserRequest; +import it.fabioformosa.quartzmanager.security.service.UserService; + +/** + * Created by fan.jin on 2016-10-15. + */ + +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +public class UserController { + + @Autowired + private UserService userService; + + + @RequestMapping(method = POST, value = "/signup") + public ResponseEntity addUser(@RequestBody UserRequest userRequest, + UriComponentsBuilder ucBuilder) { + + User existUser = this.userService.findByUsername(userRequest.getUsername()); + if (existUser != null) + throw new ResourceConflictException(userRequest.getId(), "Username already exists"); + User user = this.userService.save(userRequest); + HttpHeaders headers = new HttpHeaders(); + headers.setLocation(ucBuilder.path("/api/user/{userId}").buildAndExpand(user.getId()).toUri()); + return new ResponseEntity<>(user, HttpStatus.CREATED); + } + + @RequestMapping(method = GET, value = "/user/all") + public List loadAll() { + return this.userService.findAll(); + } + + @RequestMapping(method = GET, value = "/user/{userId}") + public User loadById(@PathVariable Long userId) { + return this.userService.findById(userId); + } + + + @RequestMapping(method = GET, value = "/user/reset-credentials") + public ResponseEntity resetCredentials() { + this.userService.resetCredentials(); + Map result = new HashMap<>(); + result.put("result", "success"); + return ResponseEntity.accepted().body(result); + } + + /* + * We are not using userService.findByUsername here(we could), so it is good that we are making + * sure that the user has role "ROLE_USER" to access this endpoint. + */ + @RequestMapping("/whoami") + @PreAuthorize("hasRole('USER')") + public User user() { + return (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + } + +} diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/controllers/WebsocketController.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/controllers/WebsocketController.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/controllers/WebsocketController.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/controllers/WebsocketController.java diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/dto/SchedulerConfigParam.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/dto/SchedulerConfigParam.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/dto/SchedulerConfigParam.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/dto/SchedulerConfigParam.java diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/dto/TriggerProgress.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/dto/TriggerProgress.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/dto/TriggerProgress.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/dto/TriggerProgress.java diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/exceptions/ExceptionHandlingController.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/exceptions/ExceptionHandlingController.java new file mode 100644 index 0000000..3e4e308 --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/exceptions/ExceptionHandlingController.java @@ -0,0 +1,18 @@ +package it.fabioformosa.quartzmanager.exceptions; + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; + +@ControllerAdvice +public class ExceptionHandlingController { + + @ExceptionHandler(ResourceConflictException.class) + public ResponseEntity resourceConflict(ResourceConflictException ex) { + ExceptionResponse response = new ExceptionResponse(); + response.setErrorCode("Conflict"); + response.setErrorMessage(ex.getMessage()); + return new ResponseEntity(response, HttpStatus.CONFLICT); + } +} diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/exceptions/ExceptionResponse.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/exceptions/ExceptionResponse.java new file mode 100644 index 0000000..e642282 --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/exceptions/ExceptionResponse.java @@ -0,0 +1,25 @@ +package it.fabioformosa.quartzmanager.exceptions; + +public class ExceptionResponse { + + private String errorCode; + private String errorMessage; + + public ExceptionResponse() {} + + public String getErrorCode() { + return errorCode; + } + + public void setErrorCode(String errorCode) { + this.errorCode = errorCode; + } + + public String getErrorMessage() { + return errorMessage; + } + + public void setErrorMessage(String errorMessage) { + this.errorMessage = errorMessage; + } +} diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/exceptions/ResourceConflictException.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/exceptions/ResourceConflictException.java new file mode 100644 index 0000000..1fd5470 --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/exceptions/ResourceConflictException.java @@ -0,0 +1,22 @@ +package it.fabioformosa.quartzmanager.exceptions; + +public class ResourceConflictException extends RuntimeException { + /** + * + */ + private static final long serialVersionUID = 1791564636123821405L; + private Long resourceId; + + public ResourceConflictException(Long resourceId, String message) { + super(message); + this.setResourceId(resourceId); + } + + public Long getResourceId() { + return resourceId; + } + + public void setResourceId(Long resourceId) { + this.resourceId = resourceId; + } +} diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/jobs/AbstractLoggingJob.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/jobs/AbstractLoggingJob.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/jobs/AbstractLoggingJob.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/jobs/AbstractLoggingJob.java diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/jobs/MisfireTestJob.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/jobs/MisfireTestJob.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/jobs/MisfireTestJob.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/jobs/MisfireTestJob.java diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/jobs/SampleJob.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/jobs/SampleJob.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/jobs/SampleJob.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/jobs/SampleJob.java diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/jobs/entities/LogRecord.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/jobs/entities/LogRecord.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/jobs/entities/LogRecord.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/jobs/entities/LogRecord.java diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/scheduler/AutowiringSpringBeanJobFactory.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/scheduler/AutowiringSpringBeanJobFactory.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/scheduler/AutowiringSpringBeanJobFactory.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/scheduler/AutowiringSpringBeanJobFactory.java diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/scheduler/TriggerMonitor.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/scheduler/TriggerMonitor.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/scheduler/TriggerMonitor.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/scheduler/TriggerMonitor.java diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/scheduler/TriggerMonitorImpl.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/scheduler/TriggerMonitorImpl.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/scheduler/TriggerMonitorImpl.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/scheduler/TriggerMonitorImpl.java diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/security/AjaxAuthenticationFilter.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/AjaxAuthenticationFilter.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/security/AjaxAuthenticationFilter.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/AjaxAuthenticationFilter.java diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/security/ComboEntryPoint.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/ComboEntryPoint.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/security/ComboEntryPoint.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/ComboEntryPoint.java diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/security/RESTRequestMatcher.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/RESTRequestMatcher.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/security/RESTRequestMatcher.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/RESTRequestMatcher.java diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/TokenHelper.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/TokenHelper.java new file mode 100644 index 0000000..ab3a02b --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/TokenHelper.java @@ -0,0 +1,164 @@ +package it.fabioformosa.quartzmanager.security; + +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; +import org.joda.time.DateTime; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.stereotype.Component; + +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import java.util.Date; +import java.util.Map; + + +/** + * Created by fan.jin on 2016-10-19. + */ + +@Component +public class TokenHelper { + + @Value("${app.name}") + private String APP_NAME; + + @Value("${jwt.secret}") + private String SECRET; + + @Value("${jwt.expires_in}") + private int EXPIRES_IN; + + @Value("${jwt.header}") + private String AUTH_HEADER; + + @Value("${jwt.cookie}") + private String AUTH_COOKIE; + + @Autowired + UserDetailsService userDetailsService; + + private SignatureAlgorithm SIGNATURE_ALGORITHM = SignatureAlgorithm.HS512; + + public String getUsernameFromToken(String token) { + String username; + try { + final Claims claims = this.getClaimsFromToken(token); + username = claims.getSubject(); + } catch (Exception e) { + username = null; + } + return username; + } + + public String generateToken(String username) { + return Jwts.builder() + .setIssuer( APP_NAME ) + .setSubject(username) + .setIssuedAt(generateCurrentDate()) + .setExpiration(generateExpirationDate()) + .signWith( SIGNATURE_ALGORITHM, SECRET ) + .compact(); + } + + private Claims getClaimsFromToken(String token) { + Claims claims; + try { + claims = Jwts.parser() + .setSigningKey(this.SECRET) + .parseClaimsJws(token) + .getBody(); + } catch (Exception e) { + claims = null; + } + return claims; + } + + String generateToken(Map claims) { + return Jwts.builder() + .setClaims(claims) + .setExpiration(generateExpirationDate()) + .signWith( SIGNATURE_ALGORITHM, SECRET ) + .compact(); + } + + public Boolean canTokenBeRefreshed(String token) { + try { + final Date expirationDate = getClaimsFromToken(token).getExpiration(); + String username = getUsernameFromToken(token); + UserDetails userDetails = userDetailsService.loadUserByUsername(username); + return expirationDate.compareTo(generateCurrentDate()) > 0; + } catch (Exception e) { + return false; + } + } + + public String refreshToken(String token) { + String refreshedToken; + try { + final Claims claims = getClaimsFromToken(token); + claims.setIssuedAt(generateCurrentDate()); + refreshedToken = generateToken(claims); + } catch (Exception e) { + refreshedToken = null; + } + return refreshedToken; + } + + private long getCurrentTimeMillis() { + return DateTime.now().getMillis(); + } + + private Date generateCurrentDate() { + return new Date(getCurrentTimeMillis()); + } + + private Date generateExpirationDate() { + + return new Date(getCurrentTimeMillis() + this.EXPIRES_IN * 1000); + } + + public String getToken( HttpServletRequest request ) { + /** + * Getting the token from Cookie store + */ + Cookie authCookie = getCookieValueByName( request, AUTH_COOKIE ); + if ( authCookie != null ) { + return authCookie.getValue(); + } + /** + * Getting the token from Authentication header + * e.g Bearer your_token + */ + String authHeader = request.getHeader(AUTH_HEADER); + if ( authHeader != null && authHeader.startsWith("Bearer ")) { + return authHeader.substring(7); + } + + return null; + } + + /** + * Find a specific HTTP cookie in a request. + * + * @param request + * The HTTP request object. + * @param name + * The cookie name to look for. + * @return The cookie, or null if not found. + */ + public Cookie getCookieValueByName(HttpServletRequest request, String name) { + if (request.getCookies() == null) { + return null; + } + for (int i = 0; i < request.getCookies().length; i++) { + if (request.getCookies()[i].getName().equals(name)) { + return request.getCookies()[i]; + } + } + return null; + } +} diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/security/WebsocketRequestMatcher.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/WebsocketRequestMatcher.java similarity index 100% rename from quartz-manager/src/main/java/it/fabioformosa/quartzmanager/security/WebsocketRequestMatcher.java rename to quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/WebsocketRequestMatcher.java diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/AnonAuthentication.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/AnonAuthentication.java new file mode 100644 index 0000000..3b368bc --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/AnonAuthentication.java @@ -0,0 +1,51 @@ +package it.fabioformosa.quartzmanager.security.auth; + +import org.springframework.security.authentication.AbstractAuthenticationToken; + +/** + * Created by fan.jin on 2017-04-04. + */ + +public class AnonAuthentication extends AbstractAuthenticationToken { + + public AnonAuthentication() { + super( null ); + } + + @Override + public Object getCredentials() { + return null; + } + + @Override + public Object getPrincipal() { + return null; + } + + @Override + public boolean isAuthenticated() { + return true; + } + + @Override + public int hashCode() { + int hash = 7; + return hash; + } + + @Override + public boolean equals( Object obj ) { + if ( this == obj ) { + return true; + } + if ( obj == null ) { + return false; + } + if ( getClass() != obj.getClass() ) { + return false; + } + return true; + } + + +} diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/AuthenticationFailureHandler.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/AuthenticationFailureHandler.java new file mode 100644 index 0000000..7585552 --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/AuthenticationFailureHandler.java @@ -0,0 +1,25 @@ +package it.fabioformosa.quartzmanager.security.auth; + +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler; +import org.springframework.stereotype.Component; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * Created by fan.jin on 2016-11-07. + */ + +@Component +public class AuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler { + + @Override + public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, + AuthenticationException exception) throws IOException, ServletException { + + super.onAuthenticationFailure(request, response, exception); + } +} \ No newline at end of file diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/AuthenticationSuccessHandler.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/AuthenticationSuccessHandler.java new file mode 100644 index 0000000..c2b9588 --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/AuthenticationSuccessHandler.java @@ -0,0 +1,66 @@ +package it.fabioformosa.quartzmanager.security.auth; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.core.Authentication; +import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler; +import org.springframework.stereotype.Component; + +/** + * Created by fan.jin on 2016-11-07. + */ +import com.fasterxml.jackson.databind.ObjectMapper; + +import it.fabioformosa.quartzmanager.security.TokenHelper; +import it.fabioformosa.quartzmanager.security.model.User; +import it.fabioformosa.quartzmanager.security.model.UserTokenState; + +@Component +public class AuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler { + + @Value("${jwt.expires_in}") + private int EXPIRES_IN; + + @Value("${jwt.cookie}") + private String TOKEN_COOKIE; + + @Autowired + TokenHelper tokenHelper; + + @Autowired + ObjectMapper objectMapper; + + @Override + public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, + Authentication authentication ) throws IOException, ServletException { + clearAuthenticationAttributes(request); + User user = (User)authentication.getPrincipal(); + + String jws = tokenHelper.generateToken( user.getUsername() ); + + // Create token auth Cookie + Cookie authCookie = new Cookie( TOKEN_COOKIE, jws ); + + authCookie.setHttpOnly( true ); + + authCookie.setMaxAge( EXPIRES_IN ); + + authCookie.setPath( "/" ); + // Add cookie to response + response.addCookie( authCookie ); + + // JWT is also in the response + UserTokenState userTokenState = new UserTokenState(jws, EXPIRES_IN); + String jwtResponse = objectMapper.writeValueAsString( userTokenState ); + response.setContentType("application/json"); + response.getWriter().write( jwtResponse ); + + } +} diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/LogoutSuccess.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/LogoutSuccess.java new file mode 100644 index 0000000..5a757a6 --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/LogoutSuccess.java @@ -0,0 +1,36 @@ +package it.fabioformosa.quartzmanager.security.auth; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.Authentication; +import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; +import org.springframework.stereotype.Component; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +/** + * Created by fan.jin on 2017-05-06. + */ +@Component +public class LogoutSuccess implements LogoutSuccessHandler { + + @Autowired + ObjectMapper objectMapper; + + @Override + public void onLogoutSuccess(HttpServletRequest httpServletRequest, HttpServletResponse response, Authentication authentication) + throws IOException, ServletException { + Map result = new HashMap<>(); + result.put( "result", "success" ); + response.setContentType("application/json"); + response.getWriter().write( objectMapper.writeValueAsString( result ) ); + response.setStatus(HttpServletResponse.SC_OK); + + } + +} \ No newline at end of file diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/RestAuthenticationEntryPoint.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/RestAuthenticationEntryPoint.java new file mode 100644 index 0000000..837e4ee --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/RestAuthenticationEntryPoint.java @@ -0,0 +1,30 @@ +package it.fabioformosa.quartzmanager.security.auth; + +/** + * Created by fan.jin on 2016-11-12. + */ + +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.AuthenticationEntryPoint; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * Created by fan.jin on 2016-11-07. + */ +@Component +public class RestAuthenticationEntryPoint implements AuthenticationEntryPoint { + + @Override + public void commence(HttpServletRequest request, + HttpServletResponse response, + AuthenticationException authException) throws IOException { + // This is invoked when user tries to access a secured REST resource without supplying any credentials + // We should just send a 401 Unauthorized response because there is no 'login page' to redirect to + response.sendError(HttpServletResponse.SC_UNAUTHORIZED, authException.getMessage()); + } +} + diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/TokenAuthenticationFilter.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/TokenAuthenticationFilter.java new file mode 100644 index 0000000..e1aaecc --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/TokenAuthenticationFilter.java @@ -0,0 +1,94 @@ +package it.fabioformosa.quartzmanager.security.auth; + +import java.io.IOException; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; +import org.springframework.security.web.util.matcher.OrRequestMatcher; +import org.springframework.security.web.util.matcher.RequestMatcher; +import org.springframework.util.Assert; +import org.springframework.web.filter.OncePerRequestFilter; + +import it.fabioformosa.quartzmanager.security.TokenHelper; + +/** + * Created by fan.jin on 2016-10-19. + */ +public class TokenAuthenticationFilter extends OncePerRequestFilter { + + /* + * The below paths will get ignored by the filter + */ + public static final String ROOT_MATCHER = "/"; + + public static final String FAVICON_MATCHER = "/favicon.ico"; + + public static final String HTML_MATCHER = "/**/*.html"; + + public static final String CSS_MATCHER = "/**/*.css"; + public static final String JS_MATCHER = "/**/*.js"; + public static final String IMG_MATCHER = "/images/*"; + public static final String LOGIN_MATCHER = "/auth/login"; + public static final String LOGOUT_MATCHER = "/auth/logout"; + private final Log logger = LogFactory.getLog(this.getClass()); + @Autowired + TokenHelper tokenHelper; + @Autowired + UserDetailsService userDetailsService; + + private List pathsToSkip = Arrays.asList( + ROOT_MATCHER, + HTML_MATCHER, + FAVICON_MATCHER, + CSS_MATCHER, + JS_MATCHER, + IMG_MATCHER, + LOGIN_MATCHER, + LOGOUT_MATCHER + ); + + @Override + public void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { + + + String authToken = tokenHelper.getToken(request); + if (authToken != null && !skipPathRequest(request, pathsToSkip)) + // get username from token + try { + String username = tokenHelper.getUsernameFromToken(authToken); + // get user + UserDetails userDetails = userDetailsService.loadUserByUsername(username); + // create authentication + TokenBasedAuthentication authentication = new TokenBasedAuthentication(userDetails); + authentication.setToken(authToken); + SecurityContextHolder.getContext().setAuthentication(authentication); + } catch (Exception e) { + SecurityContextHolder.getContext().setAuthentication(new AnonAuthentication()); + } + else + SecurityContextHolder.getContext().setAuthentication(new AnonAuthentication()); + + chain.doFilter(request, response); + } + + private boolean skipPathRequest(HttpServletRequest request, List pathsToSkip ) { + Assert.notNull(pathsToSkip, "path cannot be null."); + List m = pathsToSkip.stream().map(path -> new AntPathRequestMatcher(path)).collect(Collectors.toList()); + OrRequestMatcher matchers = new OrRequestMatcher(m); + return matchers.matches(request); + } + +} \ No newline at end of file diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/TokenBasedAuthentication.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/TokenBasedAuthentication.java new file mode 100644 index 0000000..4cd60cf --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/auth/TokenBasedAuthentication.java @@ -0,0 +1,43 @@ +package it.fabioformosa.quartzmanager.security.auth; + +import org.springframework.security.authentication.AbstractAuthenticationToken; +import org.springframework.security.core.userdetails.UserDetails; + + +/** + * Created by fan.jin on 2016-11-11. + */ +public class TokenBasedAuthentication extends AbstractAuthenticationToken { + + private String token; + private final UserDetails principle; + + public TokenBasedAuthentication( UserDetails principle ) { + super( principle.getAuthorities() ); + this.principle = principle; + } + + public String getToken() { + return token; + } + + public void setToken( String token ) { + this.token = token; + } + + @Override + public boolean isAuthenticated() { + return true; + } + + @Override + public Object getCredentials() { + return token; + } + + @Override + public UserDetails getPrincipal() { + return principle; + } + +} diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/model/Authority.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/model/Authority.java new file mode 100644 index 0000000..a9e9b3f --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/model/Authority.java @@ -0,0 +1,47 @@ +package it.fabioformosa.quartzmanager.security.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.springframework.security.core.GrantedAuthority; + +import javax.persistence.*; + +/** + * Created by fan.jin on 2016-11-03. + */ + +@Entity +@Table(name="Authority") +public class Authority implements GrantedAuthority { + + @Id + @Column(name="id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + Long id; + + @Column(name="name") + String name; + + @Override + public String getAuthority() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @JsonIgnore + public String getName() { + return name; + } + + @JsonIgnore + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + +} diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/model/User.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/model/User.java new file mode 100644 index 0000000..8226be6 --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/model/User.java @@ -0,0 +1,128 @@ +package it.fabioformosa.quartzmanager.security.model; + +import java.io.Serializable; +import java.util.Collection; +import java.util.List; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; +import javax.persistence.Table; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; +import com.fasterxml.jackson.annotation.JsonIgnore; + +/** + * Created by fan.jin on 2016-10-15. + */ + +@Entity +@Table(name = "USER") +public class User implements UserDetails, Serializable { + @Id + @Column(name = "id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "username") + private String username; + + @JsonIgnore + @Column(name = "password") + private String password; + + @Column(name = "firstname") + private String firstname; + + @Column(name = "lastname") + private String lastname; + + + @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @JoinTable(name = "user_authority", + joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), + inverseJoinColumns = @JoinColumn(name = "authority_id", referencedColumnName = "id")) + private List authorities; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getFirstname() { + return firstname; + } + + public void setFirstname(String firstname) { + this.firstname = firstname; + } + + public String getLastname() { + return lastname; + } + + public void setLastname(String lastname) { + + this.lastname = lastname; + } + + public void setAuthorities(List authorities) { + this.authorities = authorities; + } + + @Override + public Collection getAuthorities() { + return this.authorities; + } + + // We can add the below fields in the users table. + // For now, they are hardcoded. + @JsonIgnore + @Override + public boolean isAccountNonExpired() { + return true; + } + + @JsonIgnore + @Override + public boolean isAccountNonLocked() { + return true; + } + + @JsonIgnore + @Override + public boolean isCredentialsNonExpired() { + return true; + } + + @JsonIgnore + @Override + public boolean isEnabled() { + return true; + } +} diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/model/UserRequest.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/model/UserRequest.java new file mode 100644 index 0000000..f89e4fd --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/model/UserRequest.java @@ -0,0 +1,56 @@ +package it.fabioformosa.quartzmanager.security.model; + + +public class UserRequest { + + private Long id; + + private String username; + + private String password; + + private String firstname; + + private String lastname; + + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getFirstname() { + return firstname; + } + + public void setFirstname(String firstname) { + this.firstname = firstname; + } + + public String getLastname() { + return lastname; + } + + public void setLastname(String lastname) { + this.lastname = lastname; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } +} diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/model/UserTokenState.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/model/UserTokenState.java new file mode 100644 index 0000000..2712742 --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/model/UserTokenState.java @@ -0,0 +1,35 @@ +package it.fabioformosa.quartzmanager.security.model; + +/** + * Created by fan.jin on 2016-10-17. + */ +public class UserTokenState { + private String access_token; + private Long expires_in; + + public UserTokenState() { + this.access_token = null; + this.expires_in = null; + } + + public UserTokenState(String access_token, long expires_in) { + this.access_token = access_token; + this.expires_in = expires_in; + } + + public String getAccess_token() { + return access_token; + } + + public void setAccess_token(String access_token) { + this.access_token = access_token; + } + + public Long getExpires_in() { + return expires_in; + } + + public void setExpires_in(Long expires_in) { + this.expires_in = expires_in; + } +} diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/repository/AuthorityRepository.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/repository/AuthorityRepository.java new file mode 100644 index 0000000..3741ee2 --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/repository/AuthorityRepository.java @@ -0,0 +1,9 @@ +package it.fabioformosa.quartzmanager.security.repository; + +import org.springframework.data.jpa.repository.JpaRepository; + +import it.fabioformosa.quartzmanager.security.model.Authority; + +public interface AuthorityRepository extends JpaRepository { + Authority findByName(String name); +} diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/repository/UserRepository.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/repository/UserRepository.java new file mode 100644 index 0000000..8783be2 --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/repository/UserRepository.java @@ -0,0 +1,13 @@ +package it.fabioformosa.quartzmanager.security.repository; + +import org.springframework.data.jpa.repository.JpaRepository; + +import it.fabioformosa.quartzmanager.security.model.User; + +/** + * Created by fan.jin on 2016-10-15. + */ +public interface UserRepository extends JpaRepository { + User findByUsername( String username ); +} + diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/service/AuthorityService.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/service/AuthorityService.java new file mode 100644 index 0000000..03d0fb5 --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/service/AuthorityService.java @@ -0,0 +1,12 @@ +package it.fabioformosa.quartzmanager.security.service; + +import java.util.List; + +import it.fabioformosa.quartzmanager.security.model.Authority; + +public interface AuthorityService { + List findById(Long id); + + List findByname(String name); + +} diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/service/UserService.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/service/UserService.java new file mode 100644 index 0000000..64a164e --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/service/UserService.java @@ -0,0 +1,21 @@ +package it.fabioformosa.quartzmanager.security.service; + +import java.util.List; + +import it.fabioformosa.quartzmanager.security.model.User; +import it.fabioformosa.quartzmanager.security.model.UserRequest; + +/** + * Created by fan.jin on 2016-10-15. + */ +public interface UserService { + List findAll(); + + User findById(Long id); + + User findByUsername(String username); + + void resetCredentials(); + + User save(UserRequest user); +} diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/service/impl/AuthorityServiceImpl.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/service/impl/AuthorityServiceImpl.java new file mode 100644 index 0000000..20c4d92 --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/service/impl/AuthorityServiceImpl.java @@ -0,0 +1,38 @@ +package it.fabioformosa.quartzmanager.security.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import it.fabioformosa.quartzmanager.security.model.Authority; +import it.fabioformosa.quartzmanager.security.repository.AuthorityRepository; +import it.fabioformosa.quartzmanager.security.service.AuthorityService; + +@Service +public class AuthorityServiceImpl implements AuthorityService { + + @Autowired + private AuthorityRepository authorityRepository; + + @Override + public List findById(Long id) { + // TODO Auto-generated method stub + + Authority auth = this.authorityRepository.findOne(id); + List auths = new ArrayList<>(); + auths.add(auth); + return auths; + } + + @Override + public List findByname(String name) { + // TODO Auto-generated method stub + Authority auth = this.authorityRepository.findByName(name); + List auths = new ArrayList<>(); + auths.add(auth); + return auths; + } + +} diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/service/impl/CustomUserDetailsService.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/service/impl/CustomUserDetailsService.java new file mode 100644 index 0000000..99afb76 --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/service/impl/CustomUserDetailsService.java @@ -0,0 +1,70 @@ +package it.fabioformosa.quartzmanager.security.service.impl; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; + +import it.fabioformosa.quartzmanager.security.model.User; +import it.fabioformosa.quartzmanager.security.repository.UserRepository; + +/** + * Created by fan.jin on 2016-10-31. + */ + +@Service +public class CustomUserDetailsService implements UserDetailsService { + + protected final Log LOGGER = LogFactory.getLog(getClass()); + + @Autowired + private UserRepository userRepository; + + @Autowired + private PasswordEncoder passwordEncoder; + + @Autowired + private AuthenticationManager authenticationManager; + + public void changePassword(String oldPassword, String newPassword) { + + Authentication currentUser = SecurityContextHolder.getContext().getAuthentication(); + String username = currentUser.getName(); + + if (authenticationManager != null) { + LOGGER.debug("Re-authenticating user '"+ username + "' for password change request."); + + authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(username, oldPassword)); + } else { + LOGGER.debug("No authentication manager set. can't change Password!"); + + return; + } + + LOGGER.debug("Changing password for user '"+ username + "'"); + + User user = (User) loadUserByUsername(username); + + user.setPassword(passwordEncoder.encode(newPassword)); + userRepository.save(user); + + } + + @Override + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + User user = userRepository.findByUsername(username); + if (user == null) + throw new UsernameNotFoundException(String.format("No user found with username '%s'.", username)); + else + return user; + } + +} diff --git a/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/service/impl/UserServiceImpl.java b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..3b2e13f --- /dev/null +++ b/quartz-manager-backend/src/main/java/it/fabioformosa/quartzmanager/security/service/impl/UserServiceImpl.java @@ -0,0 +1,78 @@ +package it.fabioformosa.quartzmanager.security.service.impl; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; + +import it.fabioformosa.quartzmanager.security.model.Authority; +import it.fabioformosa.quartzmanager.security.model.User; +import it.fabioformosa.quartzmanager.security.model.UserRequest; +import it.fabioformosa.quartzmanager.security.repository.UserRepository; +import it.fabioformosa.quartzmanager.security.service.AuthorityService; +import it.fabioformosa.quartzmanager.security.service.UserService; + +/** + * Created by fan.jin on 2016-10-15. + */ + +@Service +public class UserServiceImpl implements UserService { + + @Autowired + private UserRepository userRepository; + + @Autowired + private PasswordEncoder passwordEncoder; + + @Autowired + private AuthorityService authService; + + @Override + @PreAuthorize("hasRole('ADMIN')") + public List findAll() throws AccessDeniedException { + List result = userRepository.findAll(); + return result; + } + + @Override + @PreAuthorize("hasRole('ADMIN')") + public User findById(Long id) throws AccessDeniedException { + User u = userRepository.findOne(id); + return u; + } + + @Override + // @PreAuthorize("hasRole('USER')") + public User findByUsername(String username) throws UsernameNotFoundException { + User u = userRepository.findByUsername(username); + return u; + } + + @Override + public void resetCredentials() { + List users = userRepository.findAll(); + for (User user : users) { + user.setPassword(passwordEncoder.encode("123")); + userRepository.save(user); + } + } + + @Override + public User save(UserRequest userRequest) { + User user = new User(); + user.setUsername(userRequest.getUsername()); + user.setPassword(passwordEncoder.encode(userRequest.getPassword())); + user.setFirstname(userRequest.getFirstname()); + user.setLastname(userRequest.getLastname()); + List auth = authService.findByname("ROLE_USER"); + user.setAuthorities(auth); + this.userRepository.save(user); + return user; + } + +} diff --git a/quartz-manager/src/main/resources/application.properties b/quartz-manager-backend/src/main/resources/application.properties similarity index 57% rename from quartz-manager/src/main/resources/application.properties rename to quartz-manager-backend/src/main/resources/application.properties index e8bb65f..53cebd9 100644 --- a/quartz-manager/src/main/resources/application.properties +++ b/quartz-manager-backend/src/main/resources/application.properties @@ -1,5 +1,5 @@ server.context-path=/quartz-manager -server.port=9000 +server.port=8080 server.session.timeout=28800 spring.thymeleaf.cache=false @@ -11,4 +11,10 @@ job.frequency=4000 job.repeatCount=19 logging.level.org.springframework.web=WARN -logging.level.it.fabioformosa=INFO \ No newline at end of file +logging.level.it.fabioformosa=INFO + +app.name: quartz-manager +jwt.header: Authorization +jwt.expires_in: 600 +jwt.secret: queenvictoria +jwt.cookie: AUTH-TOKEN \ No newline at end of file diff --git a/quartz-manager-backend/src/main/resources/banner.txt b/quartz-manager-backend/src/main/resources/banner.txt new file mode 100644 index 0000000..d8bd923 --- /dev/null +++ b/quartz-manager-backend/src/main/resources/banner.txt @@ -0,0 +1,8 @@ + ____ _ __ __ + / __ \ | | | \/ | + | | | |_ _ __ _ _ __| |_ ____ | \ / | __ _ _ __ __ _ __ _ ___ _ __ + | | | | | | |/ _` | '__| __|_ / | |\/| |/ _` | '_ \ / _` |/ _` |/ _ \ '__| + | |__| | |_| | (_| | | | |_ / / | | | | (_| | | | | (_| | (_| | __/ | + \___\_\\__,_|\__,_|_| \__/___| |_| |_|\__,_|_| |_|\__,_|\__, |\___|_| + __/ | + |___/ diff --git a/quartz-manager-backend/src/main/resources/import.sql b/quartz-manager-backend/src/main/resources/import.sql new file mode 100644 index 0000000..7fd55c0 --- /dev/null +++ b/quartz-manager-backend/src/main/resources/import.sql @@ -0,0 +1,11 @@ + +-- the password hash is generated by BCrypt Calculator Generator(https://www.dailycred.com/article/bcrypt-calculator) +INSERT INTO user (id, username, password, firstname, lastname) VALUES (1, 'user', '$2a$04$Vbug2lwwJGrvUXTj6z7ff.97IzVBkrJ1XfApfGNl.Z695zqcnPYra', 'Fan', 'Jin'); +INSERT INTO user (id, username, password, firstname, lastname) VALUES (2, 'admin', '$2a$04$Vbug2lwwJGrvUXTj6z7ff.97IzVBkrJ1XfApfGNl.Z695zqcnPYra', 'Jing', 'Xiao'); + +INSERT INTO authority (id, name) VALUES (1, 'ROLE_USER'); +INSERT INTO authority (id, name) VALUES (2, 'ROLE_ADMIN'); + +INSERT INTO user_authority (user_id, authority_id) VALUES (1, 1); +INSERT INTO user_authority (user_id, authority_id) VALUES (2, 1); +INSERT INTO user_authority (user_id, authority_id) VALUES (2, 2); diff --git a/quartz-manager/src/main/resources/quartz.properties b/quartz-manager-backend/src/main/resources/quartz.properties similarity index 100% rename from quartz-manager/src/main/resources/quartz.properties rename to quartz-manager-backend/src/main/resources/quartz.properties diff --git a/quartz-manager/src/main/resources/static/css/animate.css b/quartz-manager-backend/src/main/resources/static/css/animate.css similarity index 100% rename from quartz-manager/src/main/resources/static/css/animate.css rename to quartz-manager-backend/src/main/resources/static/css/animate.css diff --git a/quartz-manager/src/main/resources/static/css/dashboard-bootstrap.css b/quartz-manager-backend/src/main/resources/static/css/dashboard-bootstrap.css similarity index 100% rename from quartz-manager/src/main/resources/static/css/dashboard-bootstrap.css rename to quartz-manager-backend/src/main/resources/static/css/dashboard-bootstrap.css diff --git a/quartz-manager/src/main/resources/static/css/scheduler.css b/quartz-manager-backend/src/main/resources/static/css/scheduler.css similarity index 100% rename from quartz-manager/src/main/resources/static/css/scheduler.css rename to quartz-manager-backend/src/main/resources/static/css/scheduler.css diff --git a/quartz-manager/src/main/resources/static/css/signin.css b/quartz-manager-backend/src/main/resources/static/css/signin.css similarity index 100% rename from quartz-manager/src/main/resources/static/css/signin.css rename to quartz-manager-backend/src/main/resources/static/css/signin.css diff --git a/quartz-manager/src/main/resources/static/js/app/app.js b/quartz-manager-backend/src/main/resources/static/js/app/app.js similarity index 100% rename from quartz-manager/src/main/resources/static/js/app/app.js rename to quartz-manager-backend/src/main/resources/static/js/app/app.js diff --git a/quartz-manager/src/main/resources/static/js/app/components/authentication/authentication.js b/quartz-manager-backend/src/main/resources/static/js/app/components/authentication/authentication.js similarity index 100% rename from quartz-manager/src/main/resources/static/js/app/components/authentication/authentication.js rename to quartz-manager-backend/src/main/resources/static/js/app/components/authentication/authentication.js diff --git a/quartz-manager/src/main/resources/static/js/app/components/configurator/configurator-directives.js b/quartz-manager-backend/src/main/resources/static/js/app/components/configurator/configurator-directives.js similarity index 100% rename from quartz-manager/src/main/resources/static/js/app/components/configurator/configurator-directives.js rename to quartz-manager-backend/src/main/resources/static/js/app/components/configurator/configurator-directives.js diff --git a/quartz-manager/src/main/resources/static/js/app/components/configurator/configurator-module.js b/quartz-manager-backend/src/main/resources/static/js/app/components/configurator/configurator-module.js similarity index 100% rename from quartz-manager/src/main/resources/static/js/app/components/configurator/configurator-module.js rename to quartz-manager-backend/src/main/resources/static/js/app/components/configurator/configurator-module.js diff --git a/quartz-manager/src/main/resources/static/js/app/components/progress/logs-directive.js b/quartz-manager-backend/src/main/resources/static/js/app/components/progress/logs-directive.js similarity index 97% rename from quartz-manager/src/main/resources/static/js/app/components/progress/logs-directive.js rename to quartz-manager-backend/src/main/resources/static/js/app/components/progress/logs-directive.js index 4f64983..603de69 100644 --- a/quartz-manager/src/main/resources/static/js/app/components/progress/logs-directive.js +++ b/quartz-manager-backend/src/main/resources/static/js/app/components/progress/logs-directive.js @@ -31,7 +31,7 @@ angular.module('progress') var _handleNewMsgFromLogWebsocket = function(receivedMsg){ if(receivedMsg.type == 'SUCCESS') - _showNewLog(receivedMsg.message); + _showNewLo g(receivedMsg.message); else if(receivedMsg.type == 'ERROR') _refreshSession(); //if websocket has been closed for session expiration, try to refresh it }; diff --git a/quartz-manager/src/main/resources/static/js/app/components/progress/logs-service.js b/quartz-manager-backend/src/main/resources/static/js/app/components/progress/logs-service.js similarity index 100% rename from quartz-manager/src/main/resources/static/js/app/components/progress/logs-service.js rename to quartz-manager-backend/src/main/resources/static/js/app/components/progress/logs-service.js diff --git a/quartz-manager/src/main/resources/static/js/app/components/progress/progress-directive.js b/quartz-manager-backend/src/main/resources/static/js/app/components/progress/progress-directive.js similarity index 100% rename from quartz-manager/src/main/resources/static/js/app/components/progress/progress-directive.js rename to quartz-manager-backend/src/main/resources/static/js/app/components/progress/progress-directive.js diff --git a/quartz-manager/src/main/resources/static/js/app/components/progress/progress-module.js b/quartz-manager-backend/src/main/resources/static/js/app/components/progress/progress-module.js similarity index 100% rename from quartz-manager/src/main/resources/static/js/app/components/progress/progress-module.js rename to quartz-manager-backend/src/main/resources/static/js/app/components/progress/progress-module.js diff --git a/quartz-manager/src/main/resources/static/js/app/components/progress/progress-service.js b/quartz-manager-backend/src/main/resources/static/js/app/components/progress/progress-service.js similarity index 100% rename from quartz-manager/src/main/resources/static/js/app/components/progress/progress-service.js rename to quartz-manager-backend/src/main/resources/static/js/app/components/progress/progress-service.js diff --git a/quartz-manager/src/main/resources/static/js/app/components/starter/starter-directives.js b/quartz-manager-backend/src/main/resources/static/js/app/components/starter/starter-directives.js similarity index 100% rename from quartz-manager/src/main/resources/static/js/app/components/starter/starter-directives.js rename to quartz-manager-backend/src/main/resources/static/js/app/components/starter/starter-directives.js diff --git a/quartz-manager/src/main/resources/static/js/app/components/starter/starter-module.js b/quartz-manager-backend/src/main/resources/static/js/app/components/starter/starter-module.js similarity index 100% rename from quartz-manager/src/main/resources/static/js/app/components/starter/starter-module.js rename to quartz-manager-backend/src/main/resources/static/js/app/components/starter/starter-module.js diff --git a/quartz-manager/src/main/resources/static/js/app/components/websocket/websocket-factory.js b/quartz-manager-backend/src/main/resources/static/js/app/components/websocket/websocket-factory.js similarity index 100% rename from quartz-manager/src/main/resources/static/js/app/components/websocket/websocket-factory.js rename to quartz-manager-backend/src/main/resources/static/js/app/components/websocket/websocket-factory.js diff --git a/quartz-manager/src/main/resources/static/js/app/components/websocket/websocket-module.js b/quartz-manager-backend/src/main/resources/static/js/app/components/websocket/websocket-module.js similarity index 100% rename from quartz-manager/src/main/resources/static/js/app/components/websocket/websocket-module.js rename to quartz-manager-backend/src/main/resources/static/js/app/components/websocket/websocket-module.js diff --git a/quartz-manager/src/main/resources/static/js/lib/bootbox.min.js b/quartz-manager-backend/src/main/resources/static/js/lib/bootbox.min.js similarity index 100% rename from quartz-manager/src/main/resources/static/js/lib/bootbox.min.js rename to quartz-manager-backend/src/main/resources/static/js/lib/bootbox.min.js diff --git a/quartz-manager/src/main/resources/static/js/lib/http-auth-interceptor.js b/quartz-manager-backend/src/main/resources/static/js/lib/http-auth-interceptor.js similarity index 100% rename from quartz-manager/src/main/resources/static/js/lib/http-auth-interceptor.js rename to quartz-manager-backend/src/main/resources/static/js/lib/http-auth-interceptor.js diff --git a/quartz-manager/src/main/resources/static/js/lib/http-auth-interceptor.min.js b/quartz-manager-backend/src/main/resources/static/js/lib/http-auth-interceptor.min.js similarity index 100% rename from quartz-manager/src/main/resources/static/js/lib/http-auth-interceptor.min.js rename to quartz-manager-backend/src/main/resources/static/js/lib/http-auth-interceptor.min.js diff --git a/quartz-manager/src/main/resources/static/js/lib/sockjs-0.3.4.js b/quartz-manager-backend/src/main/resources/static/js/lib/sockjs-0.3.4.js similarity index 100% rename from quartz-manager/src/main/resources/static/js/lib/sockjs-0.3.4.js rename to quartz-manager-backend/src/main/resources/static/js/lib/sockjs-0.3.4.js diff --git a/quartz-manager/src/main/resources/static/js/lib/sockjs-0.3.4.min.js b/quartz-manager-backend/src/main/resources/static/js/lib/sockjs-0.3.4.min.js similarity index 100% rename from quartz-manager/src/main/resources/static/js/lib/sockjs-0.3.4.min.js rename to quartz-manager-backend/src/main/resources/static/js/lib/sockjs-0.3.4.min.js diff --git a/quartz-manager/src/main/resources/static/js/lib/stomp.js b/quartz-manager-backend/src/main/resources/static/js/lib/stomp.js similarity index 100% rename from quartz-manager/src/main/resources/static/js/lib/stomp.js rename to quartz-manager-backend/src/main/resources/static/js/lib/stomp.js diff --git a/quartz-manager/src/main/resources/templates/fragments/headerinc.html b/quartz-manager-backend/src/main/resources/templates/fragments/headerinc.html similarity index 100% rename from quartz-manager/src/main/resources/templates/fragments/headerinc.html rename to quartz-manager-backend/src/main/resources/templates/fragments/headerinc.html diff --git a/quartz-manager/src/main/resources/templates/layouts/standard.html b/quartz-manager-backend/src/main/resources/templates/layouts/standard.html similarity index 100% rename from quartz-manager/src/main/resources/templates/layouts/standard.html rename to quartz-manager-backend/src/main/resources/templates/layouts/standard.html diff --git a/quartz-manager/src/main/resources/templates/login.html b/quartz-manager-backend/src/main/resources/templates/login.html similarity index 100% rename from quartz-manager/src/main/resources/templates/login.html rename to quartz-manager-backend/src/main/resources/templates/login.html diff --git a/quartz-manager/src/main/resources/templates/manager/config-form.html b/quartz-manager-backend/src/main/resources/templates/manager/config-form.html similarity index 100% rename from quartz-manager/src/main/resources/templates/manager/config-form.html rename to quartz-manager-backend/src/main/resources/templates/manager/config-form.html diff --git a/quartz-manager/src/main/resources/templates/manager/logs-panel.html b/quartz-manager-backend/src/main/resources/templates/manager/logs-panel.html similarity index 100% rename from quartz-manager/src/main/resources/templates/manager/logs-panel.html rename to quartz-manager-backend/src/main/resources/templates/manager/logs-panel.html diff --git a/quartz-manager/src/main/resources/templates/manager/progress-panel.html b/quartz-manager-backend/src/main/resources/templates/manager/progress-panel.html similarity index 100% rename from quartz-manager/src/main/resources/templates/manager/progress-panel.html rename to quartz-manager-backend/src/main/resources/templates/manager/progress-panel.html diff --git a/quartz-manager/src/main/resources/templates/panelView.html b/quartz-manager-backend/src/main/resources/templates/panelView.html similarity index 100% rename from quartz-manager/src/main/resources/templates/panelView.html rename to quartz-manager-backend/src/main/resources/templates/panelView.html diff --git a/quartz-manager/src/test/java/it/fabioformosa/QuartManagerApplicationTests.java b/quartz-manager-backend/src/test/java/it/fabioformosa/QuartManagerApplicationTests.java similarity index 100% rename from quartz-manager/src/test/java/it/fabioformosa/QuartManagerApplicationTests.java rename to quartz-manager-backend/src/test/java/it/fabioformosa/QuartManagerApplicationTests.java diff --git a/quartz-manager-frontend/.angular-cli.json b/quartz-manager-frontend/.angular-cli.json new file mode 100644 index 0000000..f266ffd --- /dev/null +++ b/quartz-manager-frontend/.angular-cli.json @@ -0,0 +1,57 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "project": { + "name": "angular-spring-starter" + }, + "apps": [ + { + "root": "src", + "outDir": "../server/src/main/resources/static", + "assets": [ + "assets", + "favicon.ico" + ], + "index": "index.html", + "main": "main.ts", + "polyfills": "polyfills.ts", + "test": "test.ts", + "tsconfig": "tsconfig.app.json", + "testTsconfig": "tsconfig.spec.json", + "prefix": "app", + "styles": [ + "styles.css" + ], + "scripts": [], + "environmentSource": "environments/environment.ts", + "environments": { + "dev": "environments/environment.ts", + "prod": "environments/environment.prod.ts" + } + } + ], + "e2e": { + "protractor": { + "config": "./protractor.conf.js" + } + }, + "lint": [ + { + "project": "src/tsconfig.app.json" + }, + { + "project": "src/tsconfig.spec.json" + }, + { + "project": "e2e/tsconfig.e2e.json" + } + ], + "test": { + "karma": { + "config": "./karma.conf.js" + } + }, + "defaults": { + "styleExt": "css", + "component": {} + } +} diff --git a/quartz-manager-frontend/.editorconfig b/quartz-manager-frontend/.editorconfig new file mode 100644 index 0000000..6e87a00 --- /dev/null +++ b/quartz-manager-frontend/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/quartz-manager-frontend/.gitignore b/quartz-manager-frontend/.gitignore new file mode 100644 index 0000000..d3e4582 --- /dev/null +++ b/quartz-manager-frontend/.gitignore @@ -0,0 +1,45 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc + +# dependencies +/node_modules + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +testem.log +/typings + +# e2e +/e2e/*.js +/e2e/*.map + +# System Files +.DS_Store +Thumbs.db + +#package-lock.json +package-lock.json \ No newline at end of file diff --git a/quartz-manager-frontend/e2e/app.e2e-spec.ts b/quartz-manager-frontend/e2e/app.e2e-spec.ts new file mode 100644 index 0000000..2976b66 --- /dev/null +++ b/quartz-manager-frontend/e2e/app.e2e-spec.ts @@ -0,0 +1,14 @@ +import { WebUiPage } from './app.po'; + +describe('web-ui App', () => { + let page: WebUiPage; + + beforeEach(() => { + page = new WebUiPage(); + }); + + it('should display message saying app works', () => { + page.navigateTo(); + expect(page.getParagraphText()).toContain('ANGULAR-SPRING-JWT-STARTER'); + }); +}); diff --git a/quartz-manager-frontend/e2e/app.po.ts b/quartz-manager-frontend/e2e/app.po.ts new file mode 100644 index 0000000..092797a --- /dev/null +++ b/quartz-manager-frontend/e2e/app.po.ts @@ -0,0 +1,11 @@ +import { browser, element, by } from 'protractor'; + +export class WebUiPage { + navigateTo() { + return browser.get('/'); + } + + getParagraphText() { + return element(by.css('app-root app-header span')).getText(); + } +} diff --git a/quartz-manager-frontend/e2e/tsconfig.e2e.json b/quartz-manager-frontend/e2e/tsconfig.e2e.json new file mode 100644 index 0000000..ac7a373 --- /dev/null +++ b/quartz-manager-frontend/e2e/tsconfig.e2e.json @@ -0,0 +1,12 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "module": "commonjs", + "target": "es5", + "types":[ + "jasmine", + "node" + ] + } +} diff --git a/quartz-manager-frontend/karma.conf.js b/quartz-manager-frontend/karma.conf.js new file mode 100644 index 0000000..84b4cd5 --- /dev/null +++ b/quartz-manager-frontend/karma.conf.js @@ -0,0 +1,44 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/0.13/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular/cli'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular/cli/plugins/karma') + ], + client:{ + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + files: [ + { pattern: './src/test.ts', watched: false } + ], + preprocessors: { + './src/test.ts': ['@angular/cli'] + }, + mime: { + 'text/x-typescript': ['ts','tsx'] + }, + coverageIstanbulReporter: { + reports: [ 'html', 'lcovonly' ], + fixWebpackSourcePaths: true + }, + angularCli: { + environment: 'dev' + }, + reporters: config.angularCli && config.angularCli.codeCoverage + ? ['progress', 'coverage-istanbul'] + : ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false + }); +}; diff --git a/quartz-manager-frontend/package.json b/quartz-manager-frontend/package.json new file mode 100644 index 0000000..7a5b277 --- /dev/null +++ b/quartz-manager-frontend/package.json @@ -0,0 +1,56 @@ +{ + "name": "quartz-manager-ui", + "version": "0.1.1", + "license": "MIT", + "scripts": { + "ng": "ng", + "start": "ng serve --proxy-config proxy.conf.json", + "build": "ng build", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@angular/animations": "5.0.2", + "@angular/common": "5.0.2", + "@angular/compiler": "5.0.2", + "@angular/core": "5.0.2", + "@angular/forms": "5.0.2", + "@angular/http": "5.0.2", + "@angular/material": "5.0.0-rc.1", + "@angular/cdk": "5.0.0-rc.1", + "@angular/platform-browser": "5.0.2", + "@angular/platform-browser-dynamic": "5.0.2", + "@angular/platform-server": "5.0.2", + "@angular/router": "5.0.2", + "@angular/flex-layout": "2.0.0-beta.10-4905443", + "core-js": "2.5.1", + "hammerjs": "2.0.8", + "rxjs": "5.5.2", + "zone.js": "0.8.18" + }, + "devDependencies": { + "@angular-devkit/core": "^0.2.0", + "@angular/cli": "1.5.3", + "@angular/compiler-cli": "5.0.2", + "@angular/language-service": "5.0.2", + "@types/hammerjs": "2.0.34", + "@types/jasmine": "2.5.54", + "@types/jasminewd2": "2.0.3", + "@types/node": "6.0.90", + "codelyzer": "3.2.2", + "jasmine-core": "2.6.4", + "jasmine-spec-reporter": "4.1.1", + "karma": "1.7.1", + "karma-chrome-launcher": "2.1.1", + "karma-cli": "1.0.1", + "karma-coverage-istanbul-reporter": "1.3.0", + "karma-jasmine": "1.1.0", + "karma-jasmine-html-reporter": "0.2.2", + "protractor": "5.1.2", + "ts-node": "3.0.6", + "tslint": "5.7.0", + "typescript": "2.4.2" + } +} diff --git a/quartz-manager-frontend/protractor.conf.js b/quartz-manager-frontend/protractor.conf.js new file mode 100644 index 0000000..1c5e1e5 --- /dev/null +++ b/quartz-manager-frontend/protractor.conf.js @@ -0,0 +1,30 @@ +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './e2e/**/*.e2e-spec.ts' + ], + capabilities: { + 'browserName': 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + beforeLaunch: function() { + require('ts-node').register({ + project: 'e2e/tsconfig.e2e.json' + }); + }, + onPrepare() { + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; diff --git a/quartz-manager-frontend/proxy.conf.json b/quartz-manager-frontend/proxy.conf.json new file mode 100644 index 0000000..ffa07ba --- /dev/null +++ b/quartz-manager-frontend/proxy.conf.json @@ -0,0 +1,6 @@ +{ + "/quartz-manager": { + "target": "http://localhost:8080", + "secure": false + } +} diff --git a/quartz-manager-frontend/src/app/admin/admin.component.css b/quartz-manager-frontend/src/app/admin/admin.component.css new file mode 100644 index 0000000..e69de29 diff --git a/quartz-manager-frontend/src/app/admin/admin.component.html b/quartz-manager-frontend/src/app/admin/admin.component.html new file mode 100644 index 0000000..c76de4b --- /dev/null +++ b/quartz-manager-frontend/src/app/admin/admin.component.html @@ -0,0 +1,3 @@ +

+ This is admin page! +

diff --git a/quartz-manager-frontend/src/app/admin/admin.component.spec.ts b/quartz-manager-frontend/src/app/admin/admin.component.spec.ts new file mode 100644 index 0000000..4e4d044 --- /dev/null +++ b/quartz-manager-frontend/src/app/admin/admin.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AdminComponent } from './admin.component'; + +describe('AdminComponent', () => { + let component: AdminComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AdminComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AdminComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/quartz-manager-frontend/src/app/admin/admin.component.ts b/quartz-manager-frontend/src/app/admin/admin.component.ts new file mode 100644 index 0000000..d06c5fd --- /dev/null +++ b/quartz-manager-frontend/src/app/admin/admin.component.ts @@ -0,0 +1,16 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-admin', + templateUrl: './admin.component.html', + styleUrls: ['./admin.component.css'] +}) +export class AdminComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} + diff --git a/quartz-manager-frontend/src/app/admin/index.ts b/quartz-manager-frontend/src/app/admin/index.ts new file mode 100644 index 0000000..415c81b --- /dev/null +++ b/quartz-manager-frontend/src/app/admin/index.ts @@ -0,0 +1,2 @@ +export * from './admin.component'; + diff --git a/quartz-manager-frontend/src/app/app-routing.module.ts b/quartz-manager-frontend/src/app/app-routing.module.ts new file mode 100644 index 0000000..6c2d5a1 --- /dev/null +++ b/quartz-manager-frontend/src/app/app-routing.module.ts @@ -0,0 +1,60 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; +import { AppComponent } from './app.component'; +import { HomeComponent } from './home'; +import { LoginComponent } from './login'; +import { AdminComponent } from './admin'; +import { LoginGuard } from './guard'; +import { GuestGuard, AdminGuard } from './guard'; +import { NotFoundComponent } from './not-found'; +import { ChangePasswordComponent } from './change-password'; +import { ForbiddenComponent } from './forbidden'; +import { SignupComponent } from './signup'; + +export const routes: Routes = [ + { + path: '', + component: HomeComponent, + pathMatch: 'full' + }, + { + path:'signup', + component: SignupComponent, + canActivate: [GuestGuard], + pathMatch:'full' + }, + { + path: 'login', + component: LoginComponent, + canActivate: [GuestGuard] + }, + { + path: 'change-password', + component: ChangePasswordComponent, + canActivate: [LoginGuard] + }, + { + path: 'admin', + component: AdminComponent, + canActivate: [AdminGuard] + }, + { + path: '404', + component: NotFoundComponent + }, + { + path: '403', + component: ForbiddenComponent + }, + { + path: '**', + redirectTo: '/404' + } +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule], + providers: [] +}) +export class AppRoutingModule { } diff --git a/quartz-manager-frontend/src/app/app.component.html b/quartz-manager-frontend/src/app/app.component.html new file mode 100644 index 0000000..d2bb06e --- /dev/null +++ b/quartz-manager-frontend/src/app/app.component.html @@ -0,0 +1,5 @@ + +
+ +
+ diff --git a/quartz-manager-frontend/src/app/app.component.scss b/quartz-manager-frontend/src/app/app.component.scss new file mode 100644 index 0000000..5293b8d --- /dev/null +++ b/quartz-manager-frontend/src/app/app.component.scss @@ -0,0 +1,21 @@ +:host { + display: block; + color: rgba(0,0,0,.54); + font-family: Roboto,"Helvetica Neue"; +} + +.content { + margin: 50px 70px; +} + +@media screen and (min-width: 600px) and (max-width: 1279px) { + .content { + margin: 20px 30px; + } +} + +@media screen and (max-width: 599px) { + .content { + margin: 8px 12px; + } +} diff --git a/quartz-manager-frontend/src/app/app.component.spec.ts b/quartz-manager-frontend/src/app/app.component.spec.ts new file mode 100644 index 0000000..f5a514e --- /dev/null +++ b/quartz-manager-frontend/src/app/app.component.spec.ts @@ -0,0 +1,65 @@ +import { TestBed, async } from '@angular/core/testing'; +import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { RouterTestingModule } from '@angular/router/testing'; +import { AppComponent } from './app.component'; +import { HomeComponent } from './home'; +import { LoginComponent } from './login'; +import { MockApiService } from './service/mocks/api.service.mock'; + +import { LoginGuard } from './guard'; +import { NotFoundComponent } from './not-found'; +import { + ApiCardComponent, + FooterComponent, + GithubComponent, +} from './component'; + +import { + MatToolbarModule, + MatIconRegistry +} from '@angular/material'; + + +import { + ApiService, + AuthService, + UserService, + FooService, + ConfigService +} from './service'; + +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; + +describe('AppComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ + AppComponent, + FooterComponent, + ], + imports: [ + RouterTestingModule, + MatToolbarModule + ], + providers: [ + MatIconRegistry, + { + provide: ApiService, + useClass: MockApiService + }, + AuthService, + UserService, + FooService, + ConfigService + ], + schemas: [CUSTOM_ELEMENTS_SCHEMA] + }).compileComponents(); + })); + + it('should create the app', async(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + })); + +}); diff --git a/quartz-manager-frontend/src/app/app.component.ts b/quartz-manager-frontend/src/app/app.component.ts new file mode 100644 index 0000000..d4c1da7 --- /dev/null +++ b/quartz-manager-frontend/src/app/app.component.ts @@ -0,0 +1,10 @@ +import {Component} from '@angular/core'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.scss'] +}) + +export class AppComponent { +} diff --git a/quartz-manager-frontend/src/app/app.module.ts b/quartz-manager-frontend/src/app/app.module.ts new file mode 100644 index 0000000..e492f88 --- /dev/null +++ b/quartz-manager-frontend/src/app/app.module.ts @@ -0,0 +1,103 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule, APP_INITIALIZER} from '@angular/core'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { HttpModule } from '@angular/http'; +import { HttpClientModule } from '@angular/common/http'; +// material +import { + MatButtonModule, + MatMenuModule, + MatIconModule, + MatToolbarModule, + MatTooltipModule, + MatCardModule, + MatInputModule, + MatIconRegistry, + MatProgressSpinnerModule +} from '@angular/material'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { FlexLayoutModule } from '@angular/flex-layout'; +import { AppComponent } from './app.component'; +import { AppRoutingModule } from './app-routing.module'; +import { HomeComponent } from './home'; +import { LoginComponent } from './login'; +import { LoginGuard, GuestGuard, AdminGuard } from './guard'; +import { NotFoundComponent } from './not-found'; +import { AccountMenuComponent } from './component/header/account-menu/account-menu.component'; +import { + HeaderComponent, + ApiCardComponent, + FooterComponent, + GithubComponent +} from './component'; + +import { + ApiService, + AuthService, + UserService, + FooService, + ConfigService +} from './service'; +import { ChangePasswordComponent } from './change-password/change-password.component'; +import { ForbiddenComponent } from './forbidden/forbidden.component'; +import { AdminComponent } from './admin/admin.component'; +import { SignupComponent } from './signup/signup.component'; + +export function initUserFactory(userService: UserService) { + return () => userService.initUser(); +} + +@NgModule({ + declarations: [ + AppComponent, + HeaderComponent, + FooterComponent, + ApiCardComponent, + HomeComponent, + GithubComponent, + LoginComponent, + NotFoundComponent, + AccountMenuComponent, + ChangePasswordComponent, + ForbiddenComponent, + AdminComponent, + SignupComponent + ], + imports: [ + BrowserAnimationsModule, + BrowserModule, + FormsModule, + ReactiveFormsModule, + HttpModule, + HttpClientModule, + AppRoutingModule, + MatMenuModule, + MatTooltipModule, + MatButtonModule, + MatIconModule, + MatInputModule, + MatToolbarModule, + MatCardModule, + MatProgressSpinnerModule, + FlexLayoutModule + ], + providers: [ + LoginGuard, + GuestGuard, + AdminGuard, + FooService, + AuthService, + ApiService, + UserService, + ConfigService, + MatIconRegistry, + { + 'provide': APP_INITIALIZER, + 'useFactory': initUserFactory, + 'deps': [UserService], + 'multi': true + } + ], + bootstrap: [AppComponent] +}) +export class AppModule { } diff --git a/quartz-manager-frontend/src/app/change-password/change-password.component.html b/quartz-manager-frontend/src/app/change-password/change-password.component.html new file mode 100644 index 0000000..b080f4a --- /dev/null +++ b/quartz-manager-frontend/src/app/change-password/change-password.component.html @@ -0,0 +1,18 @@ +
+ + Change Your Password +

{{notification.msgBody}}

+ +
+ + + + + + + +
+ +
+
+
diff --git a/quartz-manager-frontend/src/app/change-password/change-password.component.scss b/quartz-manager-frontend/src/app/change-password/change-password.component.scss new file mode 100644 index 0000000..d60c8de --- /dev/null +++ b/quartz-manager-frontend/src/app/change-password/change-password.component.scss @@ -0,0 +1,45 @@ +.content { + width: 100%; +} + +mat-card { + max-width: 350px; + text-align: center; + animation: fadein 1s; + -o-animation: fadein 1s; /* Opera */ + -moz-animation: fadein 1s; /* Firefox */ + -webkit-animation: fadein 1s; /* Safari and Chrome */ +} + +mat-input-container { + width: 100%; +} + +mat-spinner { + width: 25px; + height: 25px; + margin: 20px auto 0 auto; +} + +.error { + color: #D50000; +} + +.success { + color: #8BC34A; +} + +@media screen and (max-width: 599px) { + + .content { + /* https://github.com/angular/flex-layout/issues/295 */ + display: block !important; + } + + mat-card { + /* https://github.com/angular/flex-layout/issues/295 */ + display: block !important; + max-width: 999px; + } + +} diff --git a/quartz-manager-frontend/src/app/change-password/change-password.component.spec.ts b/quartz-manager-frontend/src/app/change-password/change-password.component.spec.ts new file mode 100644 index 0000000..5fc506a --- /dev/null +++ b/quartz-manager-frontend/src/app/change-password/change-password.component.spec.ts @@ -0,0 +1,52 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { RouterTestingModule } from '@angular/router/testing'; +import { + ApiService, + AuthService, + UserService, + ConfigService +} from '../service'; +import { MockApiService } from '../service/mocks'; + +import { ChangePasswordComponent } from './change-password.component'; + +describe('ChangePasswordComponent', () => { + let component: ChangePasswordComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + RouterTestingModule, + FormsModule, + ReactiveFormsModule + ], + declarations: [ + ChangePasswordComponent + ], + providers: [ + { + provide: ApiService, + useClass: MockApiService + }, + AuthService, + UserService, + ConfigService + ], + schemas: [CUSTOM_ELEMENTS_SCHEMA] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ChangePasswordComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/quartz-manager-frontend/src/app/change-password/change-password.component.ts b/quartz-manager-frontend/src/app/change-password/change-password.component.ts new file mode 100644 index 0000000..b08085c --- /dev/null +++ b/quartz-manager-frontend/src/app/change-password/change-password.component.ts @@ -0,0 +1,65 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { AuthService } from 'app/service'; +import { Router } from '@angular/router'; +import { DisplayMessage } from '../shared/models/display-message'; + +@Component({ + selector: 'app-change-password', + templateUrl: './change-password.component.html', + styleUrls: ['./change-password.component.scss'] +}) +export class ChangePasswordComponent implements OnInit { + + form: FormGroup; + /** + * Boolean used in telling the UI + * that the form has been submitted + * and is awaiting a response + */ + submitted = false; + + /** + * Diagnostic message from received + * form request error + */ + notification: DisplayMessage; + + constructor( + private authService: AuthService, + private router: Router, + private formBuilder: FormBuilder + ) { + } + + ngOnInit() { + + this.form = this.formBuilder.group({ + oldPassword: ['', Validators.compose([Validators.required, Validators.minLength(3), Validators.maxLength(64)])], + newPassword: ['', Validators.compose([Validators.required, Validators.minLength(3), Validators.maxLength(32)])] + }); + + } + + + onSubmit() { + /** + * Innocent until proven guilty + */ + this.notification = undefined; + this.submitted = true; + + this.authService.changePassowrd(this.form.value) + // show me the animation + .delay(1000) + .mergeMap(() => this.authService.logout()) + .subscribe(() => { + this.router.navigate(['/login', { msgType: 'success', msgBody: 'Success! Please sign in with your new password.'}]); + }, error => { + this.submitted = false; + this.notification = { msgType: 'error', msgBody: 'Invalid old password.'}; + }); + + } + +} diff --git a/quartz-manager-frontend/src/app/change-password/index.ts b/quartz-manager-frontend/src/app/change-password/index.ts new file mode 100644 index 0000000..d71e3de --- /dev/null +++ b/quartz-manager-frontend/src/app/change-password/index.ts @@ -0,0 +1 @@ +export * from './change-password.component'; diff --git a/quartz-manager-frontend/src/app/component/api-card/api-card.component.html b/quartz-manager-frontend/src/app/component/api-card/api-card.component.html new file mode 100644 index 0000000..1d4d0c7 --- /dev/null +++ b/quartz-manager-frontend/src/app/component/api-card/api-card.component.html @@ -0,0 +1,26 @@ + + + {{title}} + {{subTitle}} + + + +

+ {{content}} +

+
+ + + +
+
Path: {{responseObj.path}}
+
Method: {{responseObj.method}}
+
Status: {{responseObj.status}}
+
Message: {{responseObj.body || responseObj.message}} 
+
+
diff --git a/quartz-manager-frontend/src/app/component/api-card/api-card.component.scss b/quartz-manager-frontend/src/app/component/api-card/api-card.component.scss new file mode 100644 index 0000000..903036c --- /dev/null +++ b/quartz-manager-frontend/src/app/component/api-card/api-card.component.scss @@ -0,0 +1,63 @@ +:host { + text-align: center; + max-width: 350px; +} + +mat-card { + text-align: left; + .response-success { + background-color: #dff0d8; + border-color: #d6e9c6; + color: #3c763d; + } + .response-error { + background-color: #f2dede; + border-color: #ebccd1; + color: #a94442; + } + + .response { + max-height: 0; + transition: max-height 1s; + margin-left: -16px; + margin-right: -16px; + border-radius: 4px; + overflow: hidden; + margin-bottom: -16px; + padding-bottom: 0; + } + + .expand { + padding: 15px; + border: 1px solid transparent; + max-height: 999px; + margin-top: 8px; + } + + mat-card-actions { + margin-bottom: 0; + padding-bottom: 0; + } + + pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; + } +} + + +@media screen and (max-width: 599px) { + :host { + max-width: 999px; + } +} diff --git a/quartz-manager-frontend/src/app/component/api-card/api-card.component.ts b/quartz-manager-frontend/src/app/component/api-card/api-card.component.ts new file mode 100644 index 0000000..8082a42 --- /dev/null +++ b/quartz-manager-frontend/src/app/component/api-card/api-card.component.ts @@ -0,0 +1,45 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; + +@Component({ + selector: 'app-api-card', + templateUrl: './api-card.component.html', + styleUrls: ['./api-card.component.scss'] +}) +export class ApiCardComponent implements OnInit { + + @Input() title: string; + @Input() subTitle: string; + @Input() imgUrl: string; + @Input() content: string; + @Input() apiText: string; + @Input() responseObj: any; + expand = false; + + + @Output() apiClick: EventEmitter = new EventEmitter(); + + constructor() { } + + ngOnInit() { + console.log(this.responseObj); + } + + onButtonClick() { + this.expand = true; + this.apiClick.next(this.apiText); + } + + responsePanelClass() { + const rClass = ['response']; + if (this.expand) { + rClass.push('expand'); + } + if (this.responseObj.status) { + this.responseObj.status === 200 ? + rClass.push('response-success') : + rClass.push('response-error'); + } + return rClass.join(' '); + } + +} diff --git a/quartz-manager-frontend/src/app/component/api-card/index.ts b/quartz-manager-frontend/src/app/component/api-card/index.ts new file mode 100644 index 0000000..abb8176 --- /dev/null +++ b/quartz-manager-frontend/src/app/component/api-card/index.ts @@ -0,0 +1 @@ +export * from './api-card.component'; diff --git a/quartz-manager-frontend/src/app/component/footer/footer.component.html b/quartz-manager-frontend/src/app/component/footer/footer.component.html new file mode 100644 index 0000000..8086867 --- /dev/null +++ b/quartz-manager-frontend/src/app/component/footer/footer.component.html @@ -0,0 +1,9 @@ +

+ Hand crafted with love by + Fan Jin + and our awesome + contributors. +

+ + + diff --git a/quartz-manager-frontend/src/app/component/footer/footer.component.scss b/quartz-manager-frontend/src/app/component/footer/footer.component.scss new file mode 100644 index 0000000..a5f4583 --- /dev/null +++ b/quartz-manager-frontend/src/app/component/footer/footer.component.scss @@ -0,0 +1,27 @@ +:host { + display: block; + font-weight: 300; + font-size: 15px; + display: block; + background-color: rgb(33, 33, 33); + height: 236px; + padding: 72px 24px; + box-sizing: border-box; + text-align: center; + a { + text-decoration: none; + cursor: auto; + color: #FFFFFF; + margin-top: 32px; + } + + h3 { + margin: 0px; + padding: 0px; + font-weight: 300; + font-size: 22px; + } + +} + + diff --git a/quartz-manager-frontend/src/app/component/footer/footer.component.ts b/quartz-manager-frontend/src/app/component/footer/footer.component.ts new file mode 100644 index 0000000..da17d82 --- /dev/null +++ b/quartz-manager-frontend/src/app/component/footer/footer.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-footer', + templateUrl: './footer.component.html', + styleUrls: ['./footer.component.scss'] +}) +export class FooterComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/quartz-manager-frontend/src/app/component/footer/index.ts b/quartz-manager-frontend/src/app/component/footer/index.ts new file mode 100644 index 0000000..a50d573 --- /dev/null +++ b/quartz-manager-frontend/src/app/component/footer/index.ts @@ -0,0 +1 @@ +export * from './footer.component'; diff --git a/quartz-manager-frontend/src/app/component/github/github.component.html b/quartz-manager-frontend/src/app/component/github/github.component.html new file mode 100644 index 0000000..b7734af --- /dev/null +++ b/quartz-manager-frontend/src/app/component/github/github.component.html @@ -0,0 +1,4 @@ +

Want to help make this project awesome? Check out our repo.

+ + GITHUB + diff --git a/quartz-manager-frontend/src/app/component/github/github.component.scss b/quartz-manager-frontend/src/app/component/github/github.component.scss new file mode 100644 index 0000000..68d247d --- /dev/null +++ b/quartz-manager-frontend/src/app/component/github/github.component.scss @@ -0,0 +1,20 @@ +:host { + display: block; + height: 236px; + padding: 72px 24px; + box-sizing: border-box; + background-color: rgb(238, 238, 238); + text-align: center +} + +:host h3 { + margin: 0px; + padding: 0px; + font-weight: 300; + font-size: 22px; +} + +:host a { + color: #000; + margin-top: 32px; +} diff --git a/quartz-manager-frontend/src/app/component/github/github.component.ts b/quartz-manager-frontend/src/app/component/github/github.component.ts new file mode 100644 index 0000000..e39ab16 --- /dev/null +++ b/quartz-manager-frontend/src/app/component/github/github.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-github', + templateUrl: './github.component.html', + styleUrls: ['./github.component.scss'] +}) +export class GithubComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/quartz-manager-frontend/src/app/component/github/index.ts b/quartz-manager-frontend/src/app/component/github/index.ts new file mode 100644 index 0000000..d670976 --- /dev/null +++ b/quartz-manager-frontend/src/app/component/github/index.ts @@ -0,0 +1 @@ +export * from './github.component'; diff --git a/quartz-manager-frontend/src/app/component/header/account-menu/account-menu.component.html b/quartz-manager-frontend/src/app/component/header/account-menu/account-menu.component.html new file mode 100644 index 0000000..8334975 --- /dev/null +++ b/quartz-manager-frontend/src/app/component/header/account-menu/account-menu.component.html @@ -0,0 +1,2 @@ + + diff --git a/quartz-manager-frontend/src/app/component/header/account-menu/account-menu.component.scss b/quartz-manager-frontend/src/app/component/header/account-menu/account-menu.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/quartz-manager-frontend/src/app/component/header/account-menu/account-menu.component.spec.ts b/quartz-manager-frontend/src/app/component/header/account-menu/account-menu.component.spec.ts new file mode 100644 index 0000000..8353da3 --- /dev/null +++ b/quartz-manager-frontend/src/app/component/header/account-menu/account-menu.component.spec.ts @@ -0,0 +1,53 @@ +import { async, ComponentFixture, TestBed, inject } from '@angular/core/testing'; +import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { + AuthService, + ConfigService, + ApiService, + UserService +} from '../../../service'; +import { + MockUserService, + MockApiService +} from '../../../service/mocks'; +import { AccountMenuComponent } from './account-menu.component'; + +describe('AccountMenuComponent', () => { + let component: AccountMenuComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + RouterTestingModule + ], + providers: [ + { + provide: UserService, + useClass: MockUserService + }, + { + provide: ApiService, + useClass: MockApiService + }, + AuthService, + ConfigService + ], + declarations: [AccountMenuComponent], + schemas: [CUSTOM_ELEMENTS_SCHEMA] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AccountMenuComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/quartz-manager-frontend/src/app/component/header/account-menu/account-menu.component.ts b/quartz-manager-frontend/src/app/component/header/account-menu/account-menu.component.ts new file mode 100644 index 0000000..509f4ed --- /dev/null +++ b/quartz-manager-frontend/src/app/component/header/account-menu/account-menu.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit, Input } from '@angular/core'; +import { + ConfigService, + AuthService, + UserService +} from '../../../service'; +import { Router } from '@angular/router'; + +@Component({ + selector: 'app-account-menu', + templateUrl: './account-menu.component.html', + styleUrls: ['./account-menu.component.scss'] +}) +export class AccountMenuComponent implements OnInit { + + // TODO define user interface + user: any; + + constructor( + private config: ConfigService, + private authService: AuthService, + private router: Router, + private userService: UserService + ) {} + + ngOnInit() { + this.user = this.userService.currentUser; + } + + logout() { + this.authService.logout().subscribe(res => { + this.router.navigate(['/login']); + }); + } +} diff --git a/quartz-manager-frontend/src/app/component/header/header.component.html b/quartz-manager-frontend/src/app/component/header/header.component.html new file mode 100644 index 0000000..f3c8da5 --- /dev/null +++ b/quartz-manager-frontend/src/app/component/header/header.component.html @@ -0,0 +1,40 @@ + + + + + +
+
+ + + + + + + +
+
+
+ diff --git a/quartz-manager-frontend/src/app/component/header/header.component.scss b/quartz-manager-frontend/src/app/component/header/header.component.scss new file mode 100644 index 0000000..122b0bd --- /dev/null +++ b/quartz-manager-frontend/src/app/component/header/header.component.scss @@ -0,0 +1,59 @@ +:host { + position: relative; + z-index: 10; + color: #fff; +} + +// The menu popup is rendered outside the header component +// so we will restyle a couple things inside a global /deep/ selector + +.app-navbar { + width: 100%; + display: flex; + flex-wrap: wrap; + + .right { + margin-left: auto; + float: right; + } +} + +.app-navbar span { + text-transform: uppercase !important; +} + +.app-angular-logo { + margin: 0 4px 3px 0; + height: 26px; +} + +.greeting-hamburger { + display: none; +} + + +/deep/ { + .app-header-accountMenu.mat-menu-panel { + border-radius: 3px; + max-width: initial; + overflow: visible; + + .mat-menu-content { + max-width: initial; + padding: 0; + overflow: hidden; + display: inline-block; + margin-bottom: -6px; + } + } +} +@media screen and (max-width: 600px) { + .greeting-hamburger { + display: block; + } + .greeting-button { + display: none; + } +} + + diff --git a/quartz-manager-frontend/src/app/component/header/header.component.ts b/quartz-manager-frontend/src/app/component/header/header.component.ts new file mode 100644 index 0000000..c74f625 --- /dev/null +++ b/quartz-manager-frontend/src/app/component/header/header.component.ts @@ -0,0 +1,39 @@ +import { Component, OnInit } from '@angular/core'; +import { + UserService, + AuthService +} from '../../service'; +import { Router } from '@angular/router'; + +@Component({ + selector: 'app-header', + templateUrl: './header.component.html', + styleUrls: ['./header.component.scss'] +}) +export class HeaderComponent implements OnInit { + + constructor( + private userService: UserService, + private authService: AuthService, + private router: Router + ) { } + + ngOnInit() { + } + + logout() { + this.authService.logout().subscribe(res => { + this.router.navigate(['/login']); + }); + } + + hasSignedIn() { + return !!this.userService.currentUser; + } + + userName() { + const user = this.userService.currentUser; + return user.firstname + ' ' + user.lastname; + } + +} diff --git a/quartz-manager-frontend/src/app/component/header/index.ts b/quartz-manager-frontend/src/app/component/header/index.ts new file mode 100644 index 0000000..be62c26 --- /dev/null +++ b/quartz-manager-frontend/src/app/component/header/index.ts @@ -0,0 +1 @@ +export * from './header.component'; diff --git a/quartz-manager-frontend/src/app/component/index.ts b/quartz-manager-frontend/src/app/component/index.ts new file mode 100644 index 0000000..3209f56 --- /dev/null +++ b/quartz-manager-frontend/src/app/component/index.ts @@ -0,0 +1,4 @@ +export * from './header'; +export * from './github'; +export * from './footer'; +export * from './api-card'; diff --git a/quartz-manager-frontend/src/app/forbidden/forbidden.component.css b/quartz-manager-frontend/src/app/forbidden/forbidden.component.css new file mode 100644 index 0000000..e69de29 diff --git a/quartz-manager-frontend/src/app/forbidden/forbidden.component.html b/quartz-manager-frontend/src/app/forbidden/forbidden.component.html new file mode 100644 index 0000000..7303f6e --- /dev/null +++ b/quartz-manager-frontend/src/app/forbidden/forbidden.component.html @@ -0,0 +1,3 @@ +

+ Your access doesn't allow!! +

diff --git a/quartz-manager-frontend/src/app/forbidden/forbidden.component.spec.ts b/quartz-manager-frontend/src/app/forbidden/forbidden.component.spec.ts new file mode 100644 index 0000000..792abc5 --- /dev/null +++ b/quartz-manager-frontend/src/app/forbidden/forbidden.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ForbiddenComponent } from './forbidden.component'; + +describe('ForbiddenComponent', () => { + let component: ForbiddenComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ForbiddenComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ForbiddenComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/quartz-manager-frontend/src/app/forbidden/forbidden.component.ts b/quartz-manager-frontend/src/app/forbidden/forbidden.component.ts new file mode 100644 index 0000000..3dd20c0 --- /dev/null +++ b/quartz-manager-frontend/src/app/forbidden/forbidden.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-forbidden', + templateUrl: './forbidden.component.html', + styleUrls: ['./forbidden.component.css'] +}) +export class ForbiddenComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/quartz-manager-frontend/src/app/forbidden/index.ts b/quartz-manager-frontend/src/app/forbidden/index.ts new file mode 100644 index 0000000..f4ef30b --- /dev/null +++ b/quartz-manager-frontend/src/app/forbidden/index.ts @@ -0,0 +1 @@ +export * from './forbidden.component'; diff --git a/quartz-manager-frontend/src/app/guard/admin.guard.spec.ts b/quartz-manager-frontend/src/app/guard/admin.guard.spec.ts new file mode 100644 index 0000000..e6ca05e --- /dev/null +++ b/quartz-manager-frontend/src/app/guard/admin.guard.spec.ts @@ -0,0 +1,31 @@ +import { TestBed, async, inject } from '@angular/core/testing'; +import { Router } from '@angular/router'; +import { UserService } from '../service'; +import { AdminGuard } from './admin.guard'; +import { MockUserService } from '../service/mocks'; + +export class RouterStub { + navigate(commands?: any[], extras?: any) {} +} + +describe('AdminGuard', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [ + AdminGuard, + { + provide: Router, + useClass: RouterStub + } + { + provide: UserService, + useClass: MockUserService + } + ] + }); + }); + + it('should ...', inject([AdminGuard], (guard: AdminGuard) => { + expect(guard).toBeTruthy(); + })); +}); diff --git a/quartz-manager-frontend/src/app/guard/admin.guard.ts b/quartz-manager-frontend/src/app/guard/admin.guard.ts new file mode 100644 index 0000000..a3ec91e --- /dev/null +++ b/quartz-manager-frontend/src/app/guard/admin.guard.ts @@ -0,0 +1,26 @@ +import { Injectable } from '@angular/core'; +import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; +import { UserService } from '../service'; +import { Observable } from 'rxjs/Observable'; + +@Injectable() +export class AdminGuard implements CanActivate { + constructor(private router: Router, private userService: UserService) {} + + canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { + if (this.userService.currentUser) { + if (JSON.stringify(this.userService.currentUser.authorities).search('ROLE_ADMIN') !== -1) { + return true; + } else { + this.router.navigate(['/403']); + return false; + } + + } else { + console.log('NOT AN ADMIN ROLE'); + this.router.navigate(['/login'], { queryParams: { returnUrl: state.url }}); + return false; + } + } +} + diff --git a/quartz-manager-frontend/src/app/guard/guest.guard.ts b/quartz-manager-frontend/src/app/guard/guest.guard.ts new file mode 100644 index 0000000..f2c8037 --- /dev/null +++ b/quartz-manager-frontend/src/app/guard/guest.guard.ts @@ -0,0 +1,19 @@ +import { Injectable } from '@angular/core'; +import { Router, CanActivate } from '@angular/router'; +import { UserService } from '../service'; +import { Observable } from 'rxjs/Observable'; + +@Injectable() +export class GuestGuard implements CanActivate { + + constructor(private router: Router, private userService: UserService) {} + + canActivate(): boolean { + if (this.userService.currentUser) { + this.router.navigate(['/']); + return false; + } else { + return true; + } + } +} diff --git a/quartz-manager-frontend/src/app/guard/index.ts b/quartz-manager-frontend/src/app/guard/index.ts new file mode 100644 index 0000000..617f1ea --- /dev/null +++ b/quartz-manager-frontend/src/app/guard/index.ts @@ -0,0 +1,4 @@ +export * from './login.guard'; +export * from './guest.guard'; +export * from './admin.guard'; + diff --git a/quartz-manager-frontend/src/app/guard/login.guard.ts b/quartz-manager-frontend/src/app/guard/login.guard.ts new file mode 100644 index 0000000..b120c4f --- /dev/null +++ b/quartz-manager-frontend/src/app/guard/login.guard.ts @@ -0,0 +1,19 @@ +import { Injectable } from '@angular/core'; +import { Router, CanActivate } from '@angular/router'; +import { UserService } from '../service'; +import { Observable } from 'rxjs/Observable'; + +@Injectable() +export class LoginGuard implements CanActivate { + + constructor(private router: Router, private userService: UserService) {} + + canActivate(): boolean { + if (this.userService.currentUser) { + return true; + } else { + this.router.navigate(['/']); + return false; + } + } +} diff --git a/quartz-manager-frontend/src/app/home/home.component.html b/quartz-manager-frontend/src/app/home/home.component.html new file mode 100644 index 0000000..33eefcf --- /dev/null +++ b/quartz-manager-frontend/src/app/home/home.component.html @@ -0,0 +1,39 @@ +
+ + + + + + + + +
+ diff --git a/quartz-manager-frontend/src/app/home/home.component.scss b/quartz-manager-frontend/src/app/home/home.component.scss new file mode 100644 index 0000000..7192410 --- /dev/null +++ b/quartz-manager-frontend/src/app/home/home.component.scss @@ -0,0 +1,42 @@ +app-api-card { + margin: 0 50px 0 0; + &.last { + margin: 0 0 0 0; + } +} + +app-github { + margin: 50px -70px -50px; +} + +@media screen and (min-width: 600px) and (max-width: 1279px) { + app-api-card { + margin: 0 4px 0 0; + &.last { + margin: 0 0 0 0; + } + } + + app-github { + margin: 20px -30px -20px; + } +} + +@media screen and (max-width: 599px) { + + .content { + /* https://github.com/angular/flex-layout/issues/295 */ + display: block !important; + } + + app-api-card { + /* https://github.com/angular/flex-layout/issues/295 */ + display: block !important; + margin: 0 0 12px 0; + } + + app-github { + margin: 8px -12px -8px; + } + +} diff --git a/quartz-manager-frontend/src/app/home/home.component.spec.ts b/quartz-manager-frontend/src/app/home/home.component.spec.ts new file mode 100644 index 0000000..d4ce3a8 --- /dev/null +++ b/quartz-manager-frontend/src/app/home/home.component.spec.ts @@ -0,0 +1,58 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { HomeComponent } from './home.component'; +import { ApiCardComponent, GithubComponent } from '../component'; +import { MockApiService } from '../service/mocks/api.service.mock'; + +import { + MatButtonModule, + MatCardModule +} from '@angular/material'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; + +import { + ApiService, + AuthService, + UserService, + FooService, + ConfigService +} from '../service'; + +describe('HomeComponent', () => { + let component: HomeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ + HomeComponent, + ApiCardComponent, + GithubComponent + ], + imports: [ + MatButtonModule, + MatCardModule + ], + providers: [ + { + provide: ApiService, + useClass: MockApiService + }, + AuthService, + UserService, + FooService, + ConfigService + ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HomeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/quartz-manager-frontend/src/app/home/home.component.ts b/quartz-manager-frontend/src/app/home/home.component.ts new file mode 100644 index 0000000..89d27cd --- /dev/null +++ b/quartz-manager-frontend/src/app/home/home.component.ts @@ -0,0 +1,71 @@ +import { Component, OnInit } from '@angular/core'; +import { + FooService, + ConfigService, + UserService +} from '../service'; + +@Component({ + selector: 'app-home', + templateUrl: './home.component.html', + styleUrls: ['./home.component.scss'] +}) +export class HomeComponent implements OnInit { + + fooResponse = {}; + whoamIResponse = {}; + allUserResponse = {}; + constructor( + private config: ConfigService, + private fooService: FooService, + private userService: UserService + ) { } + + ngOnInit() { + } + + makeRequest(path) { + if (path === this.config.foo_url) { + this.fooService.getFoo() + .subscribe(res => { + this.forgeResonseObj(this.fooResponse, res, path); + }, err => { + this.forgeResonseObj(this.fooResponse, err, path); + }); + } else if (path === this.config.whoami_url) { + this.userService.getMyInfo() + .subscribe(res => { + this.forgeResonseObj(this.whoamIResponse, res, path); + }, err => { + this.forgeResonseObj(this.whoamIResponse, err, path); + }); + } else { + this.userService.getAll() + .subscribe(res => { + this.forgeResonseObj(this.allUserResponse, res, path); + }, err => { + this.forgeResonseObj(this.allUserResponse, err, path); + }); + } + } + + forgeResonseObj(obj, res, path) { + obj['path'] = path; + obj['method'] = 'GET'; + if (res.ok === false) { + // err + obj['status'] = res.status; + try { + obj['body'] = JSON.stringify(JSON.parse(res._body), null, 2); + } catch (err) { + console.log(res); + obj['body'] = res.error.message; + } + } else { + // 200 + obj['status'] = 200; + obj['body'] = JSON.stringify(res, null, 2); + } + } + +} diff --git a/quartz-manager-frontend/src/app/home/index.ts b/quartz-manager-frontend/src/app/home/index.ts new file mode 100644 index 0000000..ab5a522 --- /dev/null +++ b/quartz-manager-frontend/src/app/home/index.ts @@ -0,0 +1 @@ +export * from './home.component'; diff --git a/quartz-manager-frontend/src/app/home_rem/home.component.html b/quartz-manager-frontend/src/app/home_rem/home.component.html new file mode 100644 index 0000000..33eefcf --- /dev/null +++ b/quartz-manager-frontend/src/app/home_rem/home.component.html @@ -0,0 +1,39 @@ +
+ + + + + + + + +
+ diff --git a/quartz-manager-frontend/src/app/home_rem/home.component.scss b/quartz-manager-frontend/src/app/home_rem/home.component.scss new file mode 100644 index 0000000..7192410 --- /dev/null +++ b/quartz-manager-frontend/src/app/home_rem/home.component.scss @@ -0,0 +1,42 @@ +app-api-card { + margin: 0 50px 0 0; + &.last { + margin: 0 0 0 0; + } +} + +app-github { + margin: 50px -70px -50px; +} + +@media screen and (min-width: 600px) and (max-width: 1279px) { + app-api-card { + margin: 0 4px 0 0; + &.last { + margin: 0 0 0 0; + } + } + + app-github { + margin: 20px -30px -20px; + } +} + +@media screen and (max-width: 599px) { + + .content { + /* https://github.com/angular/flex-layout/issues/295 */ + display: block !important; + } + + app-api-card { + /* https://github.com/angular/flex-layout/issues/295 */ + display: block !important; + margin: 0 0 12px 0; + } + + app-github { + margin: 8px -12px -8px; + } + +} diff --git a/quartz-manager-frontend/src/app/home_rem/home.component.spec.ts b/quartz-manager-frontend/src/app/home_rem/home.component.spec.ts new file mode 100644 index 0000000..d4ce3a8 --- /dev/null +++ b/quartz-manager-frontend/src/app/home_rem/home.component.spec.ts @@ -0,0 +1,58 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { HomeComponent } from './home.component'; +import { ApiCardComponent, GithubComponent } from '../component'; +import { MockApiService } from '../service/mocks/api.service.mock'; + +import { + MatButtonModule, + MatCardModule +} from '@angular/material'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; + +import { + ApiService, + AuthService, + UserService, + FooService, + ConfigService +} from '../service'; + +describe('HomeComponent', () => { + let component: HomeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ + HomeComponent, + ApiCardComponent, + GithubComponent + ], + imports: [ + MatButtonModule, + MatCardModule + ], + providers: [ + { + provide: ApiService, + useClass: MockApiService + }, + AuthService, + UserService, + FooService, + ConfigService + ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HomeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/quartz-manager-frontend/src/app/home_rem/home.component.ts b/quartz-manager-frontend/src/app/home_rem/home.component.ts new file mode 100644 index 0000000..89d27cd --- /dev/null +++ b/quartz-manager-frontend/src/app/home_rem/home.component.ts @@ -0,0 +1,71 @@ +import { Component, OnInit } from '@angular/core'; +import { + FooService, + ConfigService, + UserService +} from '../service'; + +@Component({ + selector: 'app-home', + templateUrl: './home.component.html', + styleUrls: ['./home.component.scss'] +}) +export class HomeComponent implements OnInit { + + fooResponse = {}; + whoamIResponse = {}; + allUserResponse = {}; + constructor( + private config: ConfigService, + private fooService: FooService, + private userService: UserService + ) { } + + ngOnInit() { + } + + makeRequest(path) { + if (path === this.config.foo_url) { + this.fooService.getFoo() + .subscribe(res => { + this.forgeResonseObj(this.fooResponse, res, path); + }, err => { + this.forgeResonseObj(this.fooResponse, err, path); + }); + } else if (path === this.config.whoami_url) { + this.userService.getMyInfo() + .subscribe(res => { + this.forgeResonseObj(this.whoamIResponse, res, path); + }, err => { + this.forgeResonseObj(this.whoamIResponse, err, path); + }); + } else { + this.userService.getAll() + .subscribe(res => { + this.forgeResonseObj(this.allUserResponse, res, path); + }, err => { + this.forgeResonseObj(this.allUserResponse, err, path); + }); + } + } + + forgeResonseObj(obj, res, path) { + obj['path'] = path; + obj['method'] = 'GET'; + if (res.ok === false) { + // err + obj['status'] = res.status; + try { + obj['body'] = JSON.stringify(JSON.parse(res._body), null, 2); + } catch (err) { + console.log(res); + obj['body'] = res.error.message; + } + } else { + // 200 + obj['status'] = 200; + obj['body'] = JSON.stringify(res, null, 2); + } + } + +} diff --git a/quartz-manager-frontend/src/app/home_rem/index.ts b/quartz-manager-frontend/src/app/home_rem/index.ts new file mode 100644 index 0000000..ab5a522 --- /dev/null +++ b/quartz-manager-frontend/src/app/home_rem/index.ts @@ -0,0 +1 @@ +export * from './home.component'; diff --git a/quartz-manager-frontend/src/app/login/index.ts b/quartz-manager-frontend/src/app/login/index.ts new file mode 100644 index 0000000..69c1644 --- /dev/null +++ b/quartz-manager-frontend/src/app/login/index.ts @@ -0,0 +1 @@ +export * from './login.component'; diff --git a/quartz-manager-frontend/src/app/login/login.component.html b/quartz-manager-frontend/src/app/login/login.component.html new file mode 100644 index 0000000..0a8ed29 --- /dev/null +++ b/quartz-manager-frontend/src/app/login/login.component.html @@ -0,0 +1,43 @@ +
+ + + + +

Angular Spring Starter

+
+ + +

{{title}}

+
+ + + +

{{notification.msgBody}}

+ +
+ + + + + + + +
+
+
+ +
+ + +
+
+ +

Created by Fan Jin

+

Click below to go to repository

+ + +
+ +
+ +
diff --git a/quartz-manager-frontend/src/app/login/login.component.scss b/quartz-manager-frontend/src/app/login/login.component.scss new file mode 100644 index 0000000..adf75cd --- /dev/null +++ b/quartz-manager-frontend/src/app/login/login.component.scss @@ -0,0 +1,58 @@ +.content { + width: 100%; +} + +mat-card { + max-width: 350px; + text-align: center; + animation: fadein 1s; + -o-animation: fadein 1s; /* Opera */ + -moz-animation: fadein 1s; /* Firefox */ + -webkit-animation: fadein 1s; /* Safari and Chrome */ + +} + +mat-input-container { + display: block; +} + +mat-spinner { + width: 25px; + height: 25px; + margin: 20px auto 0 auto; +} + +button { + display: block; + width: 100%; +} + +.error { + color: #D50000; +} + +.success { + color: #8BC34A; +} + + +@media screen and (max-width: 599px) { + + .content { + /* https://github.com/angular/flex-layout/issues/295 */ + display: block !important; + } + + mat-card { + /* https://github.com/angular/flex-layout/issues/295 */ + display: block !important; + max-width: 999px; + } + +} + +a { + text-decoration: none; + cursor: auto; + color: #FFFFFF; +} diff --git a/quartz-manager-frontend/src/app/login/login.component.spec.ts b/quartz-manager-frontend/src/app/login/login.component.spec.ts new file mode 100644 index 0000000..c8e8502 --- /dev/null +++ b/quartz-manager-frontend/src/app/login/login.component.spec.ts @@ -0,0 +1,49 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { LoginComponent } from './login.component'; +import { RouterTestingModule } from '@angular/router/testing'; +import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { MockApiService } from '../service/mocks/api.service.mock'; +import { ReactiveFormsModule } from '@angular/forms'; + +import { + ApiService, + AuthService, + UserService, + FooService, + ConfigService +} from '../service'; + +describe('LoginComponent', () => { + let component: LoginComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [LoginComponent], + imports: [ + ReactiveFormsModule, + RouterTestingModule + ], + providers: [ + UserService, + { + provide: ApiService, + useClass: MockApiService + }, + ConfigService, + AuthService + ], + schemas: [CUSTOM_ELEMENTS_SCHEMA] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LoginComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/quartz-manager-frontend/src/app/login/login.component.ts b/quartz-manager-frontend/src/app/login/login.component.ts new file mode 100644 index 0000000..bc1fe91 --- /dev/null +++ b/quartz-manager-frontend/src/app/login/login.component.ts @@ -0,0 +1,108 @@ +import { Inject } from '@angular/core'; +import { Component, OnInit, OnDestroy } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { Router, ActivatedRoute } from '@angular/router'; +import { DisplayMessage } from '../shared/models/display-message'; +import { Subscription } from 'rxjs/Subscription'; +import { + UserService, + AuthService +} from '../service'; + +import { Observable } from 'rxjs/Observable'; +import { Subject } from 'rxjs/SUbject'; + +@Component({ + selector: 'app-login', + templateUrl: './login.component.html', + styleUrls: ['./login.component.scss'] +}) +export class LoginComponent implements OnInit, OnDestroy { + title = 'Login'; + githubLink = 'https://github.com/bfwg/angular-spring-starter'; + form: FormGroup; + + /** + * Boolean used in telling the UI + * that the form has been submitted + * and is awaiting a response + */ + submitted = false; + + /** + * Notification message from received + * form request or router + */ + notification: DisplayMessage; + + returnUrl: string; + private ngUnsubscribe: Subject = new Subject(); + + constructor( + private userService: UserService, + private authService: AuthService, + private router: Router, + private route: ActivatedRoute, + private formBuilder: FormBuilder + ) { + + } + + ngOnInit() { + this.route.params + .takeUntil(this.ngUnsubscribe) + .subscribe((params: DisplayMessage) => { + this.notification = params; + }); + // get return url from route parameters or default to '/' + this.returnUrl = this.route.snapshot.queryParams['returnUrl'] || '/'; + this.form = this.formBuilder.group({ + username: ['', Validators.compose([Validators.required, Validators.minLength(3), Validators.maxLength(64)])], + password: ['', Validators.compose([Validators.required, Validators.minLength(3), Validators.maxLength(32)])] + }); + } + + ngOnDestroy() { + this.ngUnsubscribe.next(); + this.ngUnsubscribe.complete(); + } + + onResetCredentials() { + this.userService.resetCredentials() + .takeUntil(this.ngUnsubscribe) + .subscribe(res => { + if (res.result === 'success') { + alert('Password has been reset to 123 for all accounts'); + } else { + alert('Server error'); + } + }); + } + + repository() { + window.location.href = this.githubLink; + } + + onSubmit() { + /** + * Innocent until proven guilty + */ + this.notification = undefined; + this.submitted = true; + + this.authService.login(this.form.value) + // show me the animation + .delay(1000) + .subscribe(data => { + this.userService.getMyInfo().subscribe(); + this.router.navigate([this.returnUrl]); + }, + error => { + this.submitted = false; + this.notification = { msgType: 'error', msgBody: 'Incorrect username or password.' }; + }); + + } + + +} diff --git a/quartz-manager-frontend/src/app/not-found/index.ts b/quartz-manager-frontend/src/app/not-found/index.ts new file mode 100644 index 0000000..d91ce3f --- /dev/null +++ b/quartz-manager-frontend/src/app/not-found/index.ts @@ -0,0 +1 @@ +export * from './not-found.component'; diff --git a/quartz-manager-frontend/src/app/not-found/not-found.component.css b/quartz-manager-frontend/src/app/not-found/not-found.component.css new file mode 100644 index 0000000..e69de29 diff --git a/quartz-manager-frontend/src/app/not-found/not-found.component.html b/quartz-manager-frontend/src/app/not-found/not-found.component.html new file mode 100644 index 0000000..fa63f06 --- /dev/null +++ b/quartz-manager-frontend/src/app/not-found/not-found.component.html @@ -0,0 +1,5 @@ +
+ +
\ No newline at end of file diff --git a/quartz-manager-frontend/src/app/not-found/not-found.component.spec.ts b/quartz-manager-frontend/src/app/not-found/not-found.component.spec.ts new file mode 100644 index 0000000..1acb86e --- /dev/null +++ b/quartz-manager-frontend/src/app/not-found/not-found.component.spec.ts @@ -0,0 +1,32 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NotFoundComponent } from './not-found.component'; + +describe('NotFoundComponent', () => { + let component: NotFoundComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [NotFoundComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(NotFoundComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); + + it('

tag should contains \'Page Not Found\'', () => { + fixture = TestBed.createComponent(NotFoundComponent); + fixture.detectChanges(); + const compiled = fixture.debugElement.nativeElement; + expect(compiled.querySelector('h1').textContent).toContain('Page Not Found'); + }); +}); diff --git a/quartz-manager-frontend/src/app/not-found/not-found.component.ts b/quartz-manager-frontend/src/app/not-found/not-found.component.ts new file mode 100644 index 0000000..c18f379 --- /dev/null +++ b/quartz-manager-frontend/src/app/not-found/not-found.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + templateUrl: './not-found.component.html' +}) +export class NotFoundComponent { + + constructor() { } + +} diff --git a/quartz-manager-frontend/src/app/polyfills.ts b/quartz-manager-frontend/src/app/polyfills.ts new file mode 100644 index 0000000..622efa0 --- /dev/null +++ b/quartz-manager-frontend/src/app/polyfills.ts @@ -0,0 +1,74 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE9, IE10 and IE11 requires all of the following polyfills. **/ +// import 'core-js/es6/symbol'; +// import 'core-js/es6/object'; +// import 'core-js/es6/function'; +// import 'core-js/es6/parse-int'; +// import 'core-js/es6/parse-float'; +// import 'core-js/es6/number'; +// import 'core-js/es6/math'; +// import 'core-js/es6/string'; +// import 'core-js/es6/date'; +// import 'core-js/es6/array'; +// import 'core-js/es6/regexp'; +// import 'core-js/es6/map'; +// import 'core-js/es6/set'; + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** IE10 and IE11 requires the following to support `@angular/animation`. */ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + + +/** Evergreen browsers require these. **/ +import 'core-js/es6/reflect'; +import 'core-js/es7/reflect'; + + + +/** ALL Firefox browsers require the following to support `@angular/animation`. **/ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + + + +/*************************************************************************************************** + * Zone JS is required by Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ + +/** + * Date, currency, decimal and percent pipes. + * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10 + */ +// import 'intl'; // Run `npm install --save intl`. + +/*************************************************************************************************** + * MATERIAL 2 + */ +import 'hammerjs/hammer'; diff --git a/quartz-manager-frontend/src/app/service/api.service.ts b/quartz-manager-frontend/src/app/service/api.service.ts new file mode 100644 index 0000000..88c0ba9 --- /dev/null +++ b/quartz-manager-frontend/src/app/service/api.service.ts @@ -0,0 +1,76 @@ +import { HttpClient, HttpHeaders, HttpResponse, HttpRequest, HttpEventType, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs/Observable'; +import 'rxjs/Rx'; +import 'rxjs/add/observable/throw'; +import { serialize } from 'app/shared/utilities/serialize'; + +export enum RequestMethod { + Get = 'GET', + Head = 'HEAD', + Post = 'POST', + Put = 'PUT', + Delete = 'DELETE', + Options = 'OPTIONS', + Patch = 'PATCH' +} + +@Injectable() +export class ApiService { + + headers = new HttpHeaders({ + 'Accept': 'application/json', + 'Content-Type': 'application/json' + }); + + constructor( private http: HttpClient) { } + + get(path: string, args?: any): Observable { + const options = { + headers: this.headers, + withCredentials: true + }; + + if (args) { + options['params'] = serialize(args); + } + + return this.http.get(path, options) + .catch(this.checkError.bind(this)); + } + + post(path: string, body: any, customHeaders?: HttpHeaders): Observable { + return this.request(path, body, RequestMethod.Post, customHeaders); + } + + put(path: string, body: any): Observable { + return this.request(path, body, RequestMethod.Put); + } + + delete(path: string, body?: any): Observable { + return this.request(path, body, RequestMethod.Delete); + } + + private request(path: string, body: any, method = RequestMethod.Post, custemHeaders?: HttpHeaders): Observable { + const req = new HttpRequest(method, path, body, { + headers: custemHeaders || this.headers, + withCredentials: true + }); + + return this.http.request(req) + .filter(response => response instanceof HttpResponse) + .map((response: HttpResponse) => response.body) + .catch(error => this.checkError(error)); + } + + // Display error if logged in, otherwise redirect to IDP + private checkError(error: any): any { + if (error && error.status === 401) { + // this.redirectIfUnauth(error); + } else { + // this.displayError(error); + } + throw error; + } + +} diff --git a/quartz-manager-frontend/src/app/service/auth.service.ts b/quartz-manager-frontend/src/app/service/auth.service.ts new file mode 100644 index 0000000..0f0d97a --- /dev/null +++ b/quartz-manager-frontend/src/app/service/auth.service.ts @@ -0,0 +1,50 @@ +import { Injectable } from '@angular/core'; +import { HttpHeaders } from '@angular/common/http'; +import { ApiService } from './api.service'; +import { UserService } from './user.service'; +import { ConfigService } from './config.service'; +import { Observable } from 'rxjs/Observable'; + +@Injectable() +export class AuthService { + + constructor( + private apiService: ApiService, + private userService: UserService, + private config: ConfigService, + ) { } + + login(user) { + const loginHeaders = new HttpHeaders({ + 'Accept': 'application/json', + 'Content-Type': 'application/x-www-form-urlencoded' + }); + const body = `username=${user.username}&password=${user.password}`; + return this.apiService.post(this.config.login_url, body, loginHeaders).map(() => { + console.log("Login success"); + this.userService.getMyInfo().subscribe(); + }); + } + + signup(user){ + const signupHeaders = new HttpHeaders({ + 'Accept': 'application/json', + 'Content-Type': 'application/json' + }); + return this.apiService.post(this.config.signup_url, JSON.stringify(user), signupHeaders).map(() =>{ + console.log("Sign up success"); + }); + } + + logout() { + return this.apiService.post(this.config.logout_url, {}) + .map(() => { + this.userService.currentUser = null; + }); + } + + changePassowrd(passwordChanger) { + return this.apiService.post(this.config.change_password_url, passwordChanger); + } + +} diff --git a/quartz-manager-frontend/src/app/service/config.service.ts b/quartz-manager-frontend/src/app/service/config.service.ts new file mode 100644 index 0000000..7de5c30 --- /dev/null +++ b/quartz-manager-frontend/src/app/service/config.service.ts @@ -0,0 +1,65 @@ +import { Injectable } from '@angular/core'; +import { environment } from '../../environments/environment'; + +@Injectable() +export class ConfigService { + + private _api_url = '/quartz-manager/api' + + private _refresh_token_url = this._api_url + '/refresh'; + + private _login_url = this._api_url + '/login'; + + private _logout_url = this._api_url + '/logout'; + + private _change_password_url = this._api_url + '/changePassword'; + + private _whoami_url = this._api_url + '/whoami'; + + private _user_url = this._api_url + '/user'; + + private _users_url = this._user_url + '/all'; + + private _reset_credentials_url = this._user_url + '/reset-credentials'; + + private _foo_url = this._api_url + '/foo'; + + private _signup_url = this._api_url + '/signup'; + + get reset_credentials_url(): string { + return this._reset_credentials_url; + } + + get refresh_token_url(): string { + return this._refresh_token_url; + } + + get whoami_url(): string { + return this._whoami_url; + } + + get users_url(): string { + return this._users_url; + } + + get login_url(): string { + return this._login_url; + } + + get logout_url(): string { + return this._logout_url; + } + + get change_password_url(): string { + return this._change_password_url; + } + + get foo_url(): string { + return this._foo_url; + } + + get signup_url():string { + return this._signup_url; + } + +} diff --git a/quartz-manager-frontend/src/app/service/foo.service.ts b/quartz-manager-frontend/src/app/service/foo.service.ts new file mode 100644 index 0000000..fc926f8 --- /dev/null +++ b/quartz-manager-frontend/src/app/service/foo.service.ts @@ -0,0 +1,18 @@ +import { Injectable } from '@angular/core'; +import { Headers } from '@angular/http'; +import { ApiService } from './api.service'; +import { ConfigService } from './config.service'; + +@Injectable() +export class FooService { + + constructor( + private apiService: ApiService, + private config: ConfigService + ) { } + + getFoo() { + return this.apiService.get(this.config.foo_url); + } + +} diff --git a/quartz-manager-frontend/src/app/service/index.ts b/quartz-manager-frontend/src/app/service/index.ts new file mode 100644 index 0000000..619a227 --- /dev/null +++ b/quartz-manager-frontend/src/app/service/index.ts @@ -0,0 +1,5 @@ +export * from './api.service'; +export * from './user.service'; +export * from './config.service'; +export * from './auth.service'; +export * from './foo.service'; diff --git a/quartz-manager-frontend/src/app/service/mocks/api.service.mock.ts b/quartz-manager-frontend/src/app/service/mocks/api.service.mock.ts new file mode 100644 index 0000000..b4da49f --- /dev/null +++ b/quartz-manager-frontend/src/app/service/mocks/api.service.mock.ts @@ -0,0 +1,21 @@ +const MockObservable = { + mergeMap: (cb) => { + return cb({ id: 123 }); + }, + toPromise: () => { + return new Promise((resolve, reject) => { + resolve('resolved'); + }); + } +}; + +export class MockApiService { + get(path: string) { + return MockObservable; + } + post(path: string, body) {} + put(path: string, body) {} + anonGet(path: string) { + return MockObservable; + } +} diff --git a/quartz-manager-frontend/src/app/service/mocks/index.ts b/quartz-manager-frontend/src/app/service/mocks/index.ts new file mode 100644 index 0000000..217a722 --- /dev/null +++ b/quartz-manager-frontend/src/app/service/mocks/index.ts @@ -0,0 +1,2 @@ +export * from './api.service.mock'; +export * from './user.service.mock'; diff --git a/quartz-manager-frontend/src/app/service/mocks/user.service.mock.ts b/quartz-manager-frontend/src/app/service/mocks/user.service.mock.ts new file mode 100644 index 0000000..cbd0ac7 --- /dev/null +++ b/quartz-manager-frontend/src/app/service/mocks/user.service.mock.ts @@ -0,0 +1,5 @@ +export class MockUserService { + + currentUser = {}; + +} diff --git a/quartz-manager-frontend/src/app/service/user.service.ts b/quartz-manager-frontend/src/app/service/user.service.ts new file mode 100644 index 0000000..a93c693 --- /dev/null +++ b/quartz-manager-frontend/src/app/service/user.service.ts @@ -0,0 +1,42 @@ +import { Injectable } from '@angular/core'; +import { Headers } from '@angular/http'; +import { ApiService } from './api.service'; +import { ConfigService } from './config.service'; + +@Injectable() +export class UserService { + + currentUser; + + constructor( + private apiService: ApiService, + private config: ConfigService + ) { } + + initUser() { + const promise = this.apiService.get(this.config.refresh_token_url).toPromise() + .then(res => { + if (res.access_token !== null) { + return this.getMyInfo().toPromise() + .then(user => { + this.currentUser = user; + }); + } + }) + .catch(() => null); + return promise; + } + + resetCredentials() { + return this.apiService.get(this.config.reset_credentials_url); + } + + getMyInfo() { + return this.apiService.get(this.config.whoami_url).map(user => this.currentUser = user); + } + + getAll() { + return this.apiService.get(this.config.users_url); + } + +} diff --git a/quartz-manager-frontend/src/app/shared/models/display-message.ts b/quartz-manager-frontend/src/app/shared/models/display-message.ts new file mode 100644 index 0000000..fec7fe8 --- /dev/null +++ b/quartz-manager-frontend/src/app/shared/models/display-message.ts @@ -0,0 +1,4 @@ +export interface DisplayMessage { + msgType: string; + msgBody: string; +} diff --git a/quartz-manager-frontend/src/app/shared/utilities/loose-invalid.ts b/quartz-manager-frontend/src/app/shared/utilities/loose-invalid.ts new file mode 100644 index 0000000..73d7f63 --- /dev/null +++ b/quartz-manager-frontend/src/app/shared/utilities/loose-invalid.ts @@ -0,0 +1,3 @@ +export function looseInvalid(a: string|number): boolean { + return a === '' || a === null || a === undefined; +} diff --git a/quartz-manager-frontend/src/app/shared/utilities/serialize.ts b/quartz-manager-frontend/src/app/shared/utilities/serialize.ts new file mode 100644 index 0000000..6ab4e2c --- /dev/null +++ b/quartz-manager-frontend/src/app/shared/utilities/serialize.ts @@ -0,0 +1,14 @@ +import { HttpParams, HttpUrlEncodingCodec } from '@angular/common/http'; +import { looseInvalid } from './loose-invalid'; + +export function serialize(obj: any): HttpParams { + let params = new HttpParams(); + + for (const key in obj) { + if (obj.hasOwnProperty(key) && !looseInvalid(obj[key])) { + params = params.set(key, obj[key]); + } + } + + return params; +} diff --git a/quartz-manager-frontend/src/app/signup/index.ts b/quartz-manager-frontend/src/app/signup/index.ts new file mode 100644 index 0000000..704cf8e --- /dev/null +++ b/quartz-manager-frontend/src/app/signup/index.ts @@ -0,0 +1 @@ +export * from './signup.component'; \ No newline at end of file diff --git a/quartz-manager-frontend/src/app/signup/signup.component.html b/quartz-manager-frontend/src/app/signup/signup.component.html new file mode 100644 index 0000000..bb7d3d3 --- /dev/null +++ b/quartz-manager-frontend/src/app/signup/signup.component.html @@ -0,0 +1,56 @@ +
+ + + + +

Angular Spring Starter

+
+ + +

{{ title }}

+
+ + + +

{{notification.msgBody}}

+ +
+ + + + + + + + + + + + + + + + + +
+
+ + +
+
+ +

+ Created by + Fan Jin + +

+

+ Click below to go to repository +

+ + +
+ +
+ +
\ No newline at end of file diff --git a/quartz-manager-frontend/src/app/signup/signup.component.scss b/quartz-manager-frontend/src/app/signup/signup.component.scss new file mode 100644 index 0000000..0b01b66 --- /dev/null +++ b/quartz-manager-frontend/src/app/signup/signup.component.scss @@ -0,0 +1,59 @@ +.content { + width: 100%; + } + + mat-card { + max-width: 350px; + text-align: center; + animation: fadein 1s; + -o-animation: fadein 1s; /* Opera */ + -moz-animation: fadein 1s; /* Firefox */ + -webkit-animation: fadein 1s; /* Safari and Chrome */ + + } + + mat-input-container { + display: block; + } + + mat-spinner { + width: 25px; + height: 25px; + margin: 20px auto 0 auto; + } + + button { + display: block; + width: 100%; + } + + .error { + color: #D50000; + } + + .success { + color: #8BC34A; + } + + + @media screen and (max-width: 599px) { + + .content { + /* https://github.com/angular/flex-layout/issues/295 */ + display: block !important; + } + + mat-card { + /* https://github.com/angular/flex-layout/issues/295 */ + display: block !important; + max-width: 999px; + } + + } + + a { + text-decoration: none; + cursor: auto; + color: #FFFFFF; + } + \ No newline at end of file diff --git a/quartz-manager-frontend/src/app/signup/signup.component.spec.ts b/quartz-manager-frontend/src/app/signup/signup.component.spec.ts new file mode 100644 index 0000000..43e46a5 --- /dev/null +++ b/quartz-manager-frontend/src/app/signup/signup.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SignupComponent } from './signup.component'; + +describe('SignupComponent', () => { + let component: SignupComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ SignupComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SignupComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/quartz-manager-frontend/src/app/signup/signup.component.ts b/quartz-manager-frontend/src/app/signup/signup.component.ts new file mode 100644 index 0000000..6b256d3 --- /dev/null +++ b/quartz-manager-frontend/src/app/signup/signup.component.ts @@ -0,0 +1,102 @@ +import { Inject } from '@angular/core'; +import { Component, OnInit, OnDestroy } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { Router, ActivatedRoute } from '@angular/router'; +import { DisplayMessage } from '../shared/models/display-message'; +import { Subscription } from 'rxjs/Subscription'; +import { + UserService, + AuthService +} from '../service'; + +import { Observable } from 'rxjs/Observable'; +import { Subject } from 'rxjs/SUbject'; + +@Component({ + selector: 'app-signup', + templateUrl: './signup.component.html', + styleUrls: ['./signup.component.scss'] +}) +export class SignupComponent implements OnInit, OnDestroy { + title = 'Sign up'; + githubLink = 'https://github.com/bfwg/angular-spring-starter'; + form: FormGroup; + + /** + * Boolean used in telling the UI + * that the form has been submitted + * and is awaiting a response + */ + submitted = false; + + /** + * Notification message from received + * form request or router + */ + notification: DisplayMessage; + + returnUrl: string; + private ngUnsubscribe: Subject = new Subject(); + + constructor( + private userService: UserService, + private authService: AuthService, + private router: Router, + private route: ActivatedRoute, + private formBuilder: FormBuilder + ) { + + } + + ngOnInit() { + this.route.params + .takeUntil(this.ngUnsubscribe) + .subscribe((params: DisplayMessage) => { + this.notification = params; + }); + // get return url from route parameters or default to '/' + this.returnUrl = this.route.snapshot.queryParams['returnUrl'] || '/'; + this.form = this.formBuilder.group({ + username: ['', Validators.compose([Validators.required, Validators.minLength(3), Validators.maxLength(64)])], + password: ['', Validators.compose([Validators.required, Validators.minLength(3), Validators.maxLength(32)])], + firstname:[''], + lastname: [''] + }); + } + + ngOnDestroy() { + this.ngUnsubscribe.next(); + this.ngUnsubscribe.complete(); + } + + repository() { + window.location.href = this.githubLink; + } + + onSubmit() { + /** + * Innocent until proven guilty + */ + this.notification = undefined; + this.submitted = true; + + this.authService.signup(this.form.value) + // show me the animation + .delay(1000) + .subscribe(data => { + console.log(data); + this.authService.login(this.form.value).subscribe(data =>{ + this.userService.getMyInfo().subscribe(); + }) + this.router.navigate([this.returnUrl]); + }, + error => { + this.submitted = false; + console.log("Sign up error" + JSON.stringify(error)); + this.notification = { msgType: 'error', msgBody: error['error'].errorMessage }; + }); + + } + + +} diff --git a/quartz-manager-frontend/src/assets/.gitkeep b/quartz-manager-frontend/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/quartz-manager-frontend/src/assets/image/admin.png b/quartz-manager-frontend/src/assets/image/admin.png new file mode 100644 index 0000000000000000000000000000000000000000..d57ddb16ea57aa0bbe5a09532d869d35ee6945a7 GIT binary patch literal 161826 zcmaI61yEeg_brM$1b26b!6CT2I|LgB*Fl04+}+*X-Q6J}xCM6$1b2A(e)7Nfy}IvC zovG>W*=y~!ciX9RIzm-h1{H}A2?7EFRZdn?9RdQH{GTrZ^xu~A+I#)KKLoB)x~>|I z7Or1S!5|1Rb4N1}xtzVJB}g4)YVPSg0TP6OfRVS>)OFQWQWO9>+OwMeW5eoU@AMZ9 z0U;>j;baQ51-X)&fh?^ZgeWh&`Y6e*&4nm+xRuzIoFqV2*0Nq;kcOACCeX_k$Zt+5 zB1|smA@G;L9^`6D?qP4|;3D85MENgXfxqQ{n%OAH|7GH8D@6HkQMyX1EmjE}900%Gme?F9dy@Aaw1k@#^|Ksa# zO^DLU)zwLWjqU5#udH7=SslTaYyf_K{(m?)I9UE#u()_SxSD#fIJi*#mq8Nb0t8z- zxmr6qkpIJIYUb$XDn$8L>Ayp;cT!UNA7TfW|0L>f%Gf+io!9`Z>}>Y-|HSn#YZq5_ z(EpP0f3$Yd^mGETse@b`-N3-V{b51%U+~}D{oft^*U%jJKXy)TV7q_CX%1uq*@5gq z4z4bLMFIY$=&y1C6|nW+4m7osbOgHn^RJww5T%=&wYdPdBnLYmKL-~-r?|AFH~_#8 z;1c8G=4Y4W1aPzSN$~yS>>q;v9r(9})%-7(lZTU^ou3N;;N#*40HnCZ`6PHHImG$7 z#d&!+0OFGW#mYIjxSBcuLH{`Y2W$Pmu}_@^)bqZS0Vb_bbDgB|V3|J4}+*8c|$5*&QoQhWe$Ef5a*=)57zvDOWJ>97w44bmXH$X;FS3P!Lt1oV-6Gm{yT#I zj8hGe^M6Wq*23~2m!VDcl8d>Ux|)Jr{?0BtI}q@n;r;*h^>3noeEpaH zUt<2Z3GrW5e`nc0#s8V!e=Gm9K!6x5Do$9@~h(?ZQUPfN%_$+GRpd8scDx19v|P^-&11F8CX9S zCaB2Bm9>G-MH!D-NuBBG3c58P107F2t*32`R<>Y1+rcg)m^A#C zlCpOR5$72R*O38Noh{}-TO)N%KMSjm;m*bKmdwyb8!M;WnE36~__w~czO1IpK+gq> zFRu1(AIm>((&8FoqsyWb;=-e-gfvQnLr*aYQ-Z_jxg{+OO+It;LSRtp8rh8JtbW?lcKh3E4z{tp1WIGadisfd7OYB6q7l+$`YczFm_)#<>;bO3@N+we z3%gE<+4Oa_wXGA9^?2@U>-Y2DZfF5n)Pf!AE`q#R7@5dFt3UU)rANhFv^CL-Xx$}6 z<%dSsM20~i5Zv~)zYTX25)zq$YCzVFb0#|1mOw*b9W4bV0i(ztWpyYzaR3Y3$NpSq zOgsV!+w*WI9*4q5Vnlviyq{mt$8^ViQe8ri zL{?1fO>AgMSWs?M^hRxqsFWHBn;6gE1zylRJ0|{*y7F^+oS8)(EsvflsMZKrR_*Qy zHZpnYY`hToOevtsD6aRrx5Lb$Ha|Y`69s2>T;g+23lkk(NqFpCN(_aF&Q*x-9}O)G zOsxBqn6sp47(7}89C}(Vt^2fCGs`+!8ru8RzlGZ8-qx4CHlStQeQMlmZ`(_6E6}3u zAuSGQSqrqNHMOXHN{P8ojVVq@cu0%QiHXgNj=4*Xed=qiPfX5?jLwRV`RHt^-WdA0se2%M$LpIm z{_}49RM_|I_^}B6kwW$~^uAN~KL5!N&i^WN^CODQ|HIKc;qqfyW&4fnUU2I}CHK4W zN5tjJugwpY-ix=sH?8iEWxwec|2Mre&sRK^TSsrxk1&;&u-f^lt+$KWpYLCXCvncM zMG_jc7bf*>K}PSUiwBpieT?^g`%fY*HXmBGmE%(%wc}I9xgRYbK2K*iTiG8k*E+Tz zJFot3p8Zq6-;P2b{Zk^welAa?Zy{-8!u}&q&JQl_ul^Pyc`g3u2T?B+XV(kUDxM$j z*Wai8^WH!$##4UxX_xDD6fPghHNWTQ>V^_SJX3j{Ds#`KecJIr@J1Wj!sQU0)cJI*VNU zsXUKeex)w-SMIwz8jG3oHukuGIeTc@``jqfJ++tf;n=tMLK6MP^&p}BVS7ha+k@S> zwY#=8PxkRX7jozHG*Gn_{g!zDOLNf?TA0Yk_CDycjj8b2z@{(E%~ScY(kLS2p|i4{ z@|pLI;vBXsZ|uND=%aaxvwU!k*+>5+Lx!#O&3^XGcHYUs#@ergS6^?~g#(G&P1-jI zLvgQAXV198N3^{k12PFdusy%MO74yC{bktJr}`{z#fJi8R$g3x#~oj5JcJHx8a?x| z)$!lsjWBjwuA}#4KTMr`dcS6sbWC4Sf&Yj-3Y{+@EBOFC14l_ueFH*f9MN^m+2m^n zPV@BMIK7Q;e`)tXMg4RUA#Ia~ZFB#UI%XvJdX?6r;lU9>RfUJP6+b28p;zV0bGLl& z9xIIh>~Yd$dv}UTT$u(Nl7y+^)K~SwS-xrcXvbPd;lwyRc%s^{6+-U-Lku0D6l1C7 zyK?S-uHsi$cG~hQPa6C+JRW5!v)dIXd23)QVD@t`lL*r1uRGW$2bwSQhz@osRNhYy_x((|)e!d$?Ptk< zIs#xC@Xdc?k=e=~@ci~oZdgSgzJ&l^q-#M%L)W3lX zFX4&x6!2Pe(T(J9e^f0T1?etu>!Fa6#RQtzq{fK<2p!?$b5H0raF+Pj7oT!XZcwHy!>+9yBfQ~BeP89MoU%t+yAy>!iG zxJo2dwBKhmRBw8~ro!xVx2+BB+p)I3PTq+URaAGmsk0(m0FN5us2=u?W`D^qGK;!9 zvxIe-%Znt#Z5NEo%TCSGl|cf*7N|>d<-J~MJnzJJNUKYzyj6V%d)!*bY(}4@$EOxD zrpPlgneq3$FD8B|B2Px2~F>oe+#3$^~Bb zF2P=8x?PpKZiKxpGswSr;ScWo=DkPihu3PX{W}NNOvz4WFSYYe&(T04WxAEy4`D70 z{y{(NE^RjWcRs&gyWGcMd(YqIwf9{W7d=??VSLeQaHde~57|P_{Nc1~KMY=hJqg8i za=9}@^0~%%i=2HcqLq<3PRunZEB-Vr>0x?x0}> zui&Y6S8o!k!3q0TPs7j%dCGE&yxP4m&%?OfDlxcfn`6vNF7?5e+et#&{p=SR6l>45 zF?K=Smo{!Fbr@}%3a+!#SUU3MuLaNwxGJ>-NSBBzTAJDz=ddsA73KlyMM#F{9G$-{ zxDDIgZ`H28$qGSk9EHgYAL`Smta#Uq>^Z`o0+bH~-$dt@MJk_)Nx9l*>Qb)6G1+)6Y34@wqHKHLN?%oHQ+89ExEI<$=Qt`#_Hs`=Eu6a> zqH$56zg#>=S6^EDxmq5FNMADjvx(cT^#12xKSfqS*bm*px6bh;5Ra4=dgX!(YIvnE zKD}wEiFSG`HuVM_ZGgvE%hK8q(Y(maV480UsSSUi&!lf6Y}UhR)*0_nB|(H^dgq{e zn1HiF1oHj*G^r5znvg`#5S0Wq3Yyt-U#XGv9B%gz79CQhIOH?uin0d)+Z0AppOWDz4~&S>%7<{@~PjmJa#!($n^=* zT-T!tqu`79O|jG$oHv)*77~N)w^>a`G|ihE-+rZVUJ6fG?3Zl^MZ@Z%+wU`4t9&u? zF3AL6TqHZhQD~9#Cjrok82$SkAChH|;&!A*RkG{Zp z5gIUJn-V7%Ea>%L({t(EBnAuV2BIQVGsNU`>tkEoCZl_6E9la}F_a1y%)@S=aI z)1H3MntH*iwDu*zEUPWS@~lwmiFUn*Cj*@Q?ztxlypPxN;C2RL8wWbnTf;$3K|<0& z!e9_GNmi^L{MjvuuTTh46(r16x17Zi#Z3@G{>{_NhDze=frwLnk#y;}oK=kuz++;| z?+=dXk@lx0q@aFo86F!lVEG0rWFKLv!D>HJ9=t+S&99(Wd4zJY|GgmnEg~P<67r9_ zfG1&%EZXsHPmI|Pj`VbwVg9*M((|Y@64v&B*tt~M9>w`gssUCc;&H7>WDtrH`PCZ?k}lS_y7?Gl#XXcnEM zQ#8`x@5;LUwWuh2);v%ULYhe7@MOgIxX>Es{cF*v=mh--TOkr1D3q0QEz%jH-HP;c zR#Gm7p$m1T44dNDUW@}~vav2Zg*Jh0{No>2sBv2Dd?V&{nj=bt?RhIEd(Ynif7qDI z&ECr3jre0ZbHjZ_orfbD-AxP5Z_I%)%41~p@im&u z{X^x4Gw8lv&sh7ri_rnFo0;@e2XJyN9banC3|U!FQxAN8l%F?YRG84ATGfb{Kcp*! zShY`#RiUBIK93UkR=~yUE5mVeL-cp93}p#(if^;$+Q$f#8e+mNQ3VuUI9$oJ@TB*{ z{XF8j8*>_^9O_?zg)IByROiVn*xVr^nE8;mfB}k`waknOE=+Obg(HS|{}z9dkcx+r zZ|DR|IHwGGLqve)8d3fD%q)SyZt@7%#00|=RyMFAHNp`NFVIC-fLz#adNKRr5fQw% z(-IGv17r8`_Oo{A>PN{D|0GS2fXyXOw{ggH53-85jdzL>Pq=*SpwegIG{vhMaf!!6 z-uj8iT*m8TSWB^f;1zfnGO9%5vA=Mk%o=S)gqeTf5-Y$-)>I%qBm^HuL)UB{BGx7Z zE$Gd@orEai9(L#3J8CYW5rH*%T(R0LcrCkPawO{1rYiXZu4vs`&Xd|6F^UJU?CC3Nhs5L^#y(*^YE3LsgN>F z?q@2|Voy3_^83Qrxnl={oU45?Zso$F-?=xJr+UG_Ay@h62(q>~R=zyE)`O_hgqR*t zrr&|dX(8q!s@b>(aB^e~;N}ol)BXKeZI8lERx+3QvT~67G>P($X`r7Sx3~@a$A(NWFsqgtg&`Ay$p|?>@*7aK;l>B*B`|a+yNwKMS=q`eX@ey+8 zR~6Wh0$TEBcq;tp8bw=1IeoampjtNN+E5I8s^km5$Q0z}88CX*s#;ComXlyeg!o?g zH`o4w6K*(W*;&=?fEC4}o!N%SF$6CV8rTrg6BtfAn)6xq&ml)b!VJU1i*FL?wXcUot!U9Hu!pQS_BQC~V^a%byaRrN zwAoiyJM~&n)VW^Snr@e@UwJDZ+p+eh)ul8f3n2pY9SrlfKIK!q# zz|h^>mhJDp4C-oG_q0xj(w?MbVkh(zGk~g8t}xck`k_o;123%R#+Phe|@W9Ahgw=mh_>j z^elsF^v*jDf-TiulSu!`+T`%eiWY7cdm}SL5~M?D0;leZt0%R9Dn<-~OvM9_QbPyx z1#a)}q0nCqHU)c`HO2;j!}(aXt!<=eb2a26HBKL&({0?tiq#0IC9#G}yk{JiJg8v# z!4A4MVZf{Exe$bXIw6MjQ)7d`mwB~6I6mI_?ZIjE#!>-!EyAb z&%w2lyeGggWa5KKW@U!3i!!g;ByG=dF@3WqR%b-M^t~A`RClN@zKuatL?|GAf>P!e z1j^ZhwQUvGlUbiO#)lAwj8Vb`JIGvA2%Ba~8~@!-U<7@-stt>??L!PYe$+zLNCV^KZnc?>F|QHO#}st=5qcb5|rSg#DE$oa$;aj{##^~Ne)MY zD7SXudfu4Gk8hX?eUNi*?*L-Le* z7@9s$#T-i5dXtR{{_xtyW507DNyz}9n~OihXa;d{7Z znF?)u`dd$Yu}myD{VpFi`iT{pN}8PA8T4#f*`g3(bB83Dmi5K3_NlW!aYRDMr}UBQ z$@yFY3wwo|SXT_({1w-`Mq&jT8KPTFt6ze5UJnM;=4#__*B2!*K>6kkg=`Ox+!zsE{OQXE+KqDmQGF>*0a8qYh$C zU>U@)uRUHpE(Tdc7h5jU0%v?TiLI+sVT!BF%p}3Nt`bh+Fn)n{t|gZUy6R`&phLa9s3~grC}&gO$xydgo>rm@A`%FM>3{%SD)on;_{6l{^hoatPXP2m zOlx%iDN=`=q^x;Hw^(8@VuFI^>ApFnvki*wX+J%@BqWT96DaJqqnlTJ?MFQ(K$amV zz4>JfpO1OD`k>!dHW^nBz4HUMI$3wJ{*Uewe){ZBUR=>-!VSu9j3vI3@9=ZKnH0<6 ztf%%M*Dv21B%SEf&UX}Z7yushD@;htFx4fr154=p%==R;g#=2##w40>`mtf_`dzV? zzqgKXfk)R#x;k^8=mKxxe77y|J{1z>w_Ps;@G0Itq5A`xG1SyFC&`m~yhM_n>?JNU z@61C$Y}Of4st&8J5A2BiY0T8AmlBABim!S+d-P4&>XmTxm@xqvBRSYSJ24WDv7E%O zIy}Or{6uG#i2$u^%%_HWP41==*by{fA_^qId1ODrlIZoMdO6>?X5_8!x9lQ;Z!R+d z4@z8-y;7uUbpSy!@l5<&df%pPL&+j6K<2V%?)R9Hz(GTU+-H7sW(kB%juw0s8gtTy zP_v3uL9Mx-k=;2S1^#W!Vjl5s&N~qNarSWYs-pIf9T=6i>l1eF)D#CJ>SRTXGWnEM zp=-LhrNPWSC7gvIU3P5Wdk9X{IS2W*Bi|a;^vxMWuQ*uT!TeV@n%1db!&-*S;C`A4 zkWdCaTNJJ$y0*m=%-}60qI}H^ff|gQXuh}>*~DpW_`rZSlROv7T9?RJTBssL)PqOylz^o_AtZ zon`I_B$o;k?=plz8f1l{%{NLJ|CE7*TxL0Ub!>WLVKy+ovU*GKG2BZ z6}3H{0ZKWp14LVhL*G!2xGgVI&|`EK5xcy*&z+u$HuJ9D&bU&H;nUl9rk*RP@8<}l z$B4DdqlNM< ziR`jG6QjnK!xDauhKRGu5*+VvL`eMf=aSI2#=L}E;aheuH}y(A-)sqCO6?MNf7X#W zZy@N5q=t(C-b#%?9gPDf$|A(TawlQOGsQv<_9vanZYx~LQ*Vz zRy90Q2TLh^8=HydUP>(um71U!0xc~}wTPhSuOvPPXuk$G`FwjMdNZ14(yFMP<_X_4 z*9!U#84PkkF&$w$UMsC{^^r}ef>iv_r8e$z$;`#R}NcXQb3BXicO548np`tH?P0yu&WO(GOqPa z&Ll>`)jB&J;56~JA2hdm@1H;r-tJK%7e$VxJt+oXoftqQLf?(kFlrm}(?*HJIz}9i zPJEUvw7Qn#36+L?f;(XEzF!LNN?#|k*q&cB04kJ#v=N{4GD9&|7~Bwqsb{zK9)^SJ z&EpL4N(4w}C7qb(e!{MG{szZjGHD%|MhMLfOQU%Gl>t}$?t42?4%g@X{!;pyn$VXk zu2s{DaPlW8rH1gQU7iPTY4}M8I+U>SwxCO6G?}Qt^0iXRFCWcJ7Bhd3Y!s3=mC?KF z0+$$78AH$Wjs>E>@$t&Duv|-ae>vj+djeI2vK@FC5m_y0!Xsa` z8Q55KsTSRKpN|>aXA>l4f=p5-X3UCehuRa?T_*lR8h33{NRCb8ncogVd;Qt5sS0HG zxrAFF_%|Y%Mg@O#*UbHx(-D2!}^* zXbl+xHQx!A@4!q6`H^J;U&|w9#&+!v1zC5d2b^ESHKLUu!~ShP2m5;W-ZtVDaYkN| zHnTr7DiP3gHOyIHAo56 z(Ios`H-yc0njaMWSwD?nU`|ODnFQ1OEX*Fo_O`R|L|g7pJ=fVMTR~mLj%flTDckOZ z%~{k8#U&OcChD)^%smtQiZiqF4ctm+4S&_z*;Wtk!Z>k?~gCcSIUYHWrXWZK#%-3%x z!n-bXrVT>|>h4G7>Y+_3=l8ypJ1W79wuIt!C6JAtLixwE2arBjJNv0cUppE?xF6en z{OpZ{lt{Vyt$%HiPFqnQkwRh-&(r6$BrP~-CPeAd?D;%B;V5PzB_X-EA556ec`kpV zFpV;2+x;F|$=)!$oOvQxS+37yYm4g8k8cWN-8ZYx1NlpW`LP(*@`qeL?o4|>ZVAPo z=4e_Pvrz)tWQM#_nMBj~V7^xLES$~{_I(`1!ky-J6<2gFdX0uK)tK;*K`S+3ZS+Pt z(e5?KYVRgOzON{5MXy!%_G+cCM3lU4i4xcOMbU)9F}mD6WbD8QrgRSfD1Dxn%dZHm zUlrsPFwFaHccTp~aze^ep`etVEQh*5EVihfg5&BbnYsk~byNn@!iF5Y>KpVQ&T}@` zE40n#?4!>q2$lsMP)gx zZ0dU1*)6A4+;2MH$IKHX4>Gt9?aXadH^%w4GY0M#7x)o$(zuZgyMqcDeVWV!u6~ty z>So3?In*~TlYfhGNh!+l`*JLniN-QEBey_+nJ?Da7Ue?9Y#YkDm;)Yl_S19E0!D;h zq#vj6FqOR(TZw^q$*(9}tj1^vF#Fj4zUgxwFnt|{}phwxd#4;%#hQx8YOH+)d*3+g3U%PI!`(4WV3Qz*g|u+&*)9jT!X z=0xr~F}xR@Fg4$+Zk_tH+A4BP0Oq3{ascaAoIXQWA0gscVFET{6K8`%=i%a#PGR|z zCJ_uufAH5Du-0U6u2m+KDCSF5E-G=9ptZq!=J|O>6I`RK?mMTNUpUEMFjRz`&v4V& zGhfZ2nL2dy(L^-GkS7ep+v@5n!Gzq1&U0{?6p>R_23?nM%7j23cN8Xi;MyAY~(R2^~&jh0BFq@})^ zTFRoH>hUm(`|3)j3L-CJXq$RQ_GfNJ7a}9jYS|+i_qm9Kx^r=GZBpRH9m71X zbgesm!rgJ2yU;dS-Oni`b92)s_L9rwQt3ZOwF3|FB|rNq@05Sb#BgaY9S6p198~is z0Bw7^%V4!b({e@s?#CQ(HWhE6!jj1A>tr1Yc_56s+jfa8XF}r>KITTEn-YkWLsES; zgIR*H3@0%L3$D{^+-xARHi!lvyOHLS*I_`nR4AH+<+9y&v`kr({3^l=O@C{cbbgs^qLMkzkJm1N!oK-QoYp-CAy6fOb#|g(~LG$W5X82 zP8Go@5&?v8t5{zn@ImlKsT{PsPru-P*Gm_PK#-OEh;1!@p}zCAC03@Iq(&_qgHazY zKl(CClvQgBAMnnh=0**II9{jGrWa-imB?BzNp95#C*hY4&sELqF&_J{&{?>T$&-mN zYO){O4*o&0TVRg5MNCXj(i2Y^;`|;;5iP^aviyY=a()VMWOw>~+_OFd$_1bOKCM_` za3Mxr0z2oKQKi(QAsGd4CBGO|4CRzLll=y@oEXr+l%6eYaTZd}zlLxi$R!i~ko;Ny zK?${mMSZ5Ms}40I!-iR^;FyuH=lGlRAs?-Ih1%Df6v`u8vg||shurf&ONKlstSu`X zPq!#3dA?>u5XKN=z_Y;LXR}TV$=QUCra$AtW`Dvk2Rx8xP%2uKNqlysUHgdM ztJ}{#Kz38SJJ`cGluN_v%>RXi%PWCYCb_@oM%SwtgYcb?KC8>6lEyo?83?T}{+sj% zO~$QZ?4p`@P+E678O#n(&m5MCli36t(#`(?g^S$*nD zKBa|r5jeIH>@msgkJLF`MlHS#im@X}npi$|)7WP$!Z3^%|5N%Z9j!Tl2Tu`?UD-Ih zFO)*6#7@MqEQI{dpq5wKKymWB5Nc*Nk3W8q#x$?&sWjZ_a!9fXEmcyQWhKr4C}9Ir zD0uzNBQ8q>^>t3(rv}=VDU8^Jf#P?rxaOyB=SArTLl<-T4+7Yakr}Q`9!|xh2!WNx zF2oqH@cv`O4Y8s@Iocj;r$QKpIFDU2yd>k=4;ysD?Ib~T<;xvD^;)PYXycM!L~(F+ z8BLY=5VPrDo$`Wh>EzHRGt?0b^t%a`!zIjSbVTT}x^){f8D#4a#uF^r!)ugFx$Awx zPI^UvwobakR?3*}8MhUCh_sfd>bUz=D;Z68dc`+?4;wOD4_d3B(MBf!mO{BNo5rka zfXfs3WQsw#CwgtYU53{93M@6jJgna7gkTUih+D+}eNNV?R^3}CR>q+20F@^(jE(jw zwd5uzb5eLc5jR={*)ClwLw|>cGj*oO%<}7wWU5j2hWxjKFJ7c2gR>(z_!Ttrv)C}w zTKk0iBh}8MjC3mPy2BJWmDp#EIqvxqt-vT8mT@UD(hJZ}ddLKWi3?>@Zu(L58&og` zr1kNe91{gI@&^DwdE!I0YoyQ*8I}lm`DeF4%I^z^r@oQPfnTkG-)_p!@-`7Ej1i{fC;XENzR;)I*JDU~#T>D( zNtp(7O+iu*y0}cw4qQ_@(NapqV>C;5NMBUSulg*jhc^+M&0rnwme=vco4c1r2hOXX9pQ4clUuA-IR+76p8~ za=TFA%;KT>s9@ljm#6SIKmN%nJ*S$uV4oJ#q~|i&k2naj}jBZzM?{2IyhZQ6h5j#5uT94Ms-;2iFzpH+mB zR85&9n=kFsQA!#htdPDAITZ_0R1vTKj?T$vpUic5Cv+_Fs|=hl5pkV|6bi>`wDYTN z!RkS@G#E>kd}9yEV6MEK`Zhd65z{#w_knhPUehOR3i(Wt&;OX!Tx@S*Ara{bVH}6* zlw7E}gaI5e=YAc(2Umf|K=@00vfxA)3r3j&K3hDDSZYEU0jSMKVp`T6FRKpDMyT|Z z&(-=~a-u`hoQ;aDqI`0Y+O$0^jBEpvbSc`CU%RiBg5e+5n~0c!gGyGmH$v;!TC?1^ zW(q9iN(ZGfGuHUFISo>9`deT*U>X-Iia(op_z!g>=6Dju4O6HFi)y~6GL*h)BkN4A zqTjS44C@gEYnmwVLn(28!*^#((@R$xzcAc;^MzHvt&E)C;=AN+L0 zq|R*4q|RUSLMLaCH-WNlT_>V{RWhN6W^Q9xmj3sNo)Hka={K4Bcl=_T+;aq5)9=<9 zXJ*L_)DCw(i?c1SX1W$#Wyw}#>h)Z};-5d!2lQC)O?3){9ZBEMeM@;!((Q}CdpS*! zQ%MM$O@PrccE>_i4#iN&F*=HEu;z1Hs)X z1b+`H--xeU6y_Eu;%00~yEEWdiKSZ86wd+$PM2q#cEt+qf7kd|v#(Q}&C1pHbK^FR zAcgc>C_T}RE(!n&W(13Wuq{e8l(MDs99AYICMHVTd~Yw+ff9#56jw)3nvLY*kcJ1W z@TClCFWunf1y{eE^>VM%hf~7mX^I~b2uB=>{Gu)nZSFG{WU0()pJ0e`e~kJir;l3F z6C>l%^Y~liYc+*qtYPL1iqzY|aonlsDb*MX!8SJx1`kmuFJujOMvod5OH^$H8rM`1 z`sbqv+Y&F**U6j>KxwqenGEBh@(neTDqOR0QcxH>WH)kB`||<&!IE`=ymVVVyhn5K z52y1n56;jN<@)I~KFd{U#+}B`Obql?qCBWDBh~SLI=Ku`C1IGm%%Y?f+8=tCj8)aw z!t+dkgj?{5McJ+`SmykdC$kY8x|@2(^E5NhQ88tB^w^T!3+UGC(7=H7yZj zD6HEKxfM|TFX*wz)adpxjduQCC^JS@de8=c5>oli&PB`54M2Tk#F@+m8H%D|XGg+F z(9SVJTNH9`?NTJ`WeQ6zC696d5&jW3e=KUH;((a}MRx~Z@wDjyA2z*2J~{8UAdM!` zz#T&aF!GC5!ZX$WYl5wA&r$Qox8Wchop0McR>_rE>DMRfN{$CGh=~#~XlJVT{F(eS zh~6=o3+oC3{G4^(n#S$&D;sHjoXrsG%>GPTGwE|u5I4PsF1`Fd5i~jBv?3SFII>7a z^M!`0$;~_rO}&Q71JxksE7zxjuNvpB5=pb-@V3hpVg^6b(fr2wzLq-l%U1k65zYJ+ z|J4ascjktCB~A|n>STHKAskT$OMZN()FhUm&>I@{(mNzarZRN>JOWsSlXH@ctu!nK zdDUdajS(f3&$M>?s51ilWZR{Vxgo1g3DXUd;=dPY$Cnbq5PD}|}fy<^a zN0)7$_Bz$Pm!8m9Z%vVv`J)<9T@$gF660aFI)ZXcD2ReqkR3KAfhk^IuQZy8h|SNU zsuU0zWaY}2zqdE-Z$iR#~2PX)U|QbKVva4y=E%tfU{KW}(kDBv*^Qa)i@9wA9959@P;FA?iQ zo;bbBmPH32^nR)nC+v5Y*5`A%@pbEMJLuD9`|AhM(TCr|#>1xfWtyY!>qwC?Lpegf zc@rHq7l}&|jWyzC9|JSmkE3u*C=b`JI(00NcX9wa_CiU5aX390e+*LTsv$)%mz)cQ zC(hk~sriISH~=%7u)cyTx!`JCs?n3>s`peM_H z)bfs5&bA@vAhHCjem9OdoDwf$BS?t3L{O;z~^6~Nd`Ssw*IM4U)?32IWCKs9S)$xv_7$0*a=UT1|5zK5{3tH<9 zM2-t%mKREKaf1GmN(ua#MB?TFC#}!sALma=vPb~NxY}f9cywdDTp!f9=|&sA49U46 zwR_A3$&eq<^szE>tfRV~+QC2KlfIHuaAqtFMP!`L6Gs@5K(p9(Hpc`=a*JWG+?a5E zbG0_@vmzYf60v^nmOERvG@~ykx6|&1L(DF;IZ4+dRIXUL*+ zpCgTNU!HX?k!!FY1yaVC3`#@&njbTq;&S*t#3pjU8z=mJ9Ay0Zx_sH)-r4Erw282s zMv_l*o%go(;pOY*=Js^yxb<{;)aS8R6i4=UX~uXGUNeo~sX_A(@EP>n9R%?s7+@Y)_TioonMrK= zY~!SBmwPthz;I12RlfQ0eq8h5cQxS&6y$e|u7VeNUcP(suB#RHzu!r_?75Te)tuhz zSHq?)W&;$wK{4>iHx^9r%C>n{4wvOQPvkMWNH!j*K6b5V;|3J*Q#IMF!dIBe$;(g} z!353oSyONhSI^T9blcE-$i8>UexN0aZ4J10bs)E-CU~%pI z%ofY3p^X!(&|(PmlC7&;R+6jaz9i*{rW(ca1jkwpi4Oxt=6Cc`Q#nJwMHp+?kxSBl z?;%)f%05&oLTPj!T*Yfdj&AG=$_9M=o@Enx{8I(Ld{lF#a~Vn2ta3l(d$$9BDfDd5 zLQn?t#Tf45WX{mtZbGygC!6LEJ*qe;a-PsxdI>$6(#XPtik=?qnx*}1&Cgl11s2D6 zBHqiBg-r0sbQ5C;SQ%Y5JTS3uRjHSVL?g9r%CYMq4xn`|xI*wFrf!3jStXZ6PZi11 zN%8=SnwB}Oe)(}dr z2fSTKKr@jL15O$ND7S5IU6(O#L%B$~_nd2Uu)eQ!Cl7a9M3G`nyPWXpp)u-Hu*H@k49Wb44ZkwE~O3OCHa-5rS2JnSVwnf17#wW<#kIsQwu~ z#|P!DxG6Tli<<*i9dT!JOa2!t=_Ch3$c@oyGxFZRN~7bGRk|fq%e4W>UY9GFlm~fe z6TSZ<(^M%+tf%>uGtC2KdLe0SAgu8HZSRxt)9ZS8-{FrP<@fb8pT_}%KAbd33Ch;| z_S3Q>Th8(nZVCeR{qZ2OWr*cnMM`%K=CJSH4QFaH6A{0cIZFvN(4wda%>gL)+ZuJR z79dBIsY1bWwlHwEsQh%Ujy#*mbV-YOem~dqQZZHflxQwA{-;`3&JcA5WcAwN$DLwB z^fnS~JR``d0!+}SN$NB5Sllmado_d?JhEwtu^=QLSG^ELXmBRWC%RSauXH87nftBQ zyn>sS@sL0L9~Zqv{N3NSTKVDD-QLcp;{3R=0|YyqbgI(<3CdPk^#Yon4T6{BVghoe zF+lwk3FXv^Z{JOadQ+8-z{S2qj05=CDZJVJcMs$ZCDf-9E)Ge{_%2f3V=u47m4+{5 zpm9%kwNuy(r$qo8+^93KmP7NTosoF~$w-Wa3l$b640?uAsaES`KD}=2b=C7%cjLS^ zzmV$63V6Ui5pVN&d)0Igdi3TuU&Uq`!kn^oP&^TGlla+ssIjsRen~g|>R=E;T=u$lRW&S=MRgDq z*TgYhI-I)!01lEO_u6`HNX$Y%usE}2w|$&~fiF0%*e47)^LVBz%yL+0KV82epQfIs z@WVfx{TKD}{kOUVJw^q?s(EpIIK$@WU{T^vNbU4(-*CKod*HBZF6Jup9q3L2So)^B z_6F|!9~Q6h7MG65dS7H6;m!|3zxYpN2OfEZu3RV`6dS{hzDeaCQ(!vq6T0$o7t+u{ z_Dx=Vkpt+W9aM+9=(h_xX8-Dq4<;bJYBrlHxQ8tLEG(TINF@cm1i-wujx5U`F9-{h zl(4Sa80X1K^H>r3SwWGH3o8T)WPRHkH%z7HL3_hw#7~I>|33grK(xQnQI>Bg6OR@} zMZ~cV$!g@QVI>%LMqtmeKp?mso*yd*ahb{kxO6Hh)#F=c93#d9Z+iajqYpp-pWPhp z+du#LNB=Gq%l=yjd#d3Dy*SUTnXqP$PdYY~5vCdROqcMS%q3?L3%gtvX$%MTG2RBfAT6oNLIm8yKTbGmXCLxB!kw@rU^S&aGDI!YL6a%fyMLYJAw&7=Nss$zk*kC@80gN5#>goPrf8 z>Lhd5@h^myPDkpAhQwuWkYd6fYjB^RneT!4%F9>( zfA4*Ab#?vVAL`fj)zv5O{RT{2O72AwW_|-^fdxP0QqGNhgBNXw`{hQ#HWl`*4pF8Z zH4~ty?b$VUD3`F{{^0P{&TfGfC)OX8PYVWQnFE55QVqe(XGwO#8AA zLHTTVlY~Bd!&756oNnkCbI9L1pt^Zr+Q~QNAo!A9PYv$jjDjjf-$}To`Py)TVHgwT z6&2$(hMzw^-$UGz0t{WES6JzkBR+3)u|^)2RZ*O^JC{$ax8Z%d=6+CCQ%)O-SRs$y zVTa|sCSmO(Y&Ua+ws5tsxvdU?nq347x;d~4hvvkzJ;o^445rM3H&@H+>=Tw!o_zfC z>#Kj*?a|%H^(P+%AnUZN=vs$Lg@KR5S8N09l53SD*P{!j=qzej9M9R>aF-BGb(H@r zjiSskvy2H5trvMrc#(L5z*~*rBr+!)S0iY7M2w;TtaSV@UE7xTR;I$Qut7+pA@)#C zi3r~+!dTY`Stxl<$S(;#G~qEh9caT8fx?VrDDvd$)-u}y)n8`uAqv$n(jbj}Fmf-S zaLXQSZ3QnZwmyky4;?XbB$^-!VE*Doj*suH53jEt{Nw++`syR9j7A-C&~Z?UrL;4! zJ;1p_ZbOJ}OI?Jb(uS07v7s8BDI`FcGMrgaK2(JR z9gG<^_X>%XHK_G773@Gm3LNk${dg-1)1K~){YM`=EzJ#EN-$!u)<6!B=iyxVCWJ;M z(`pnM8qT2OlsaMvQaP30wj^5IF>WWRw4H=xH*W-7=-S})CeW;v&HKzB4X{c}W?aZX z36&R%`24<6KK}6f`oTZNudA!C-U|zNIajEblT=#|SAeVA(#0555w0>g1~J{Z{I>8c z=jX-GIgEVvhacq6*`RtcX*Xq-SPhu*1Epp|lEP8R15jPD#cZkpPVPE1XQdzq*mPU*DqScOe+8J+M3xx|bgEe&evlz2!RHNDktYjQorl@PAf+c9O0DkVoU z-k8yFn%$CXnY%1!HI5A5Q58HKJ`ENyRD2(_VU<3!Ni^I+ertyD9pxTF?X=4N#k z*$j6dicNAf0MbHXIFc2optov75Hjb828hN`E%^Uv|#ns^!`S4?t2~!y@$G+phzR=h=WO8Ym`N(B$%kr=@K`QMY z7HBqV@F&i2m$WlijoC4z;c*C)ATuH$ZyL$#DdZT{T%|z?@x6x-%Dcu*Q*onJjucZM zxEtnW@=wvEmv%8!zXliWSy+pp`ZUp!J^v)ra6 z%Y`z$gB!ukEl3{DPp~{p$X!QNuC2t9YRB$LqrSe%16X!p&;*147-oW)Tu+!` z(ILelLR$v!oy(j7aYIk4MbQiL4&lCHUGv@~B}H8gr2}VQ<=OKL(#~mnxfqb1Bcs*p zCx>e=qJEr?b;w_eHTw{2>eZ#ivH{ZNIly`}l}Xx1chqE()rjS#;UuS&=Hrx7ahYdm z<|eUoXfcNQ6?=&|hG5%JtcEw$NU5WjU6n@eqyWQ#MT6-ol4kdYwiY2+O+ zrm<KAj`el)|+5POvahN~N|}(i?9A2HdeUWlpqW_(9FvUZ$6fkqtEIcE9zAkD(I1 zxB`IM6uQh@cM=3u%*aJiopSJgf!Zw0CV+relTzj(f#|54X_}8@VazBkSxo|R49T_0 z`cAG#-9{r97&q|)r4WW;+v~T#_$R(Tuti?HyPWSgtaj|jOLv?qPfL`-4cN7n*+jvU zY!JvRebNK*@;YXP+ZK3gH+9tqL0%kGVH-e|%~kZw!;2813T}Q5ozI%agN`vSM#Pj; zlT*r-$Z-{Ams`-JkDQ+6k?3N#5ksEG!AwC=5ERYwTXy3XayujqTHr4&DJx}o<<5vq z_8@nf&P#R~U*_k-11Xhm5lt3y$*lLQwNxv8-3Qf>PHU@@ilX1`U9Nud)zyQ4{$E!= zf5`Z%mcN)9Cs`f@iFq(-AF(vEl@!=m!6XZ%mcpY#&U(XCG!Laq-&~g_JtR#U-cQa%68X6%!><_(vE+DO zgy0xzyPQ}$(@+$3LA7OyPKcY#NwArNgP+65AO2)ChBooH*5S^tL0ukN4hEelOi6QO zx{cc!c71St{otqY>*~dO2Jn>`Z4)%XfR%?}wIp3Vhof8#qSiD__SnHGIEPCMZ6LOSNcYKWrU2>ze)uKIFkG54mE3z#KV)&9enljF-p|4XhYa zr@nYG|2l!?Rw`y}1jDTfW~Eb5&2b~^tinv3EDx1^BR(|ZD z`5@z=M&2MzkhzCKHIqxJ4-;ZixZyd;llw)&MV_cW&W`7(-`DA(y>M``^bh3+PQ=k z#yKA9{U$3G{cf5iUK}0;g2@hIvZZ)q=DbRhl{4p^zCdMbYP}9hT?rUji+eQtUQ(z~ z$V68%=GK8lU~+0}3>2}>OEB0urM!#!oe!A-_3S5Tr+%puzj$%=;HUHJ>e*ZKLjZnD zcOb*R@|XlOnoM5K4=Tm{PsdvhTnw{1+SWD^qP)eX^#k&|>DdMzyKU6NPU5*nTwf0E z$`}LY@Lpp?A*Um?hS5aG&B=Z+XhIPTmw+GAiLKE=zR2sn+FkfiT*|IH3Il4IKK^i=H z%4S~g{&cR7?$w{X>-`~zaL>j7qbC(*m{rfSn$fRHq;N4<#&{A*2~?5}lPX87fzm zxl%?9LT63W4ou$rFMjb8+aH%pO@Yh!letN&IpM7i>n-LJHcsw5Dxg6O%@<A=5XD-h-#nx6!*u4o%PY08htXJY1SQe zFmO)~Y87n|jO?+lAK7g@6zLJSh7H?RV=)sJ={KxxoBBOSNPo6eC^NNza9x z5Hqitt2(HS6*+SOSc9~;Gr7TWl*cWQ71apq^;thPOzYtN7CU<)Tqg0VBOwa6S457w zC6d#a{!A2-)=hIM^l?c{W*-Xhq~@@;6apw`Aqy5bv~-@eqldLyE13VTLz0O_=O6d+ zpMIMA<5Fh5!Rw=@Pr+bFBdc0Pv_9TBK@WiP!B7I6n+QNEhK-Qdw#v4B3|t+d3sK9O zi(?3`o#Ev0Ir`GDOd8=u+!6GjI3`w$tfCj#eJYiVdpaH+nFp##O~FXE{RjqWYS!e5 zpd1y$R>}0DScgh2Wnxup3Mk1y*E^MCGu9FELVydW^Qozz7|%2KXOsh0nP#eNa?Z6! zUBTgh+Gs7`yS{$#ll^t|@R zZk%Q{1jJI_3jn#-VT2hcvK^bRXSlzcS1c0MI{2~J`_-Ez6>AG*F4SMybcvdO{kU|@ z*6@NWd2P(-pz~k6d-W6EALkwN>)-KxCv(m*TRrR!jK|hcY-7SSv;s9+aCy73CxQ4W zr-?zXX&^qWehFdaG~$@C2>sccv?u;y31yu%o!ECXa&|Q2q%(7HXvDO_~8o{KqBF||#jFpX@jQgU<{?9c9RaNxeil9rF_IPSwgo8;^ zWZm;hR8V-^k|03SC1i}uJL&v%K6vurr~T{d*(1qNk$pmTLE}bci}WfPNbfxYnnpmx zM>1%&ga_W^a?>5krdE@rSVSuQ6SiAqa)%FO@XC9x4zqz|I$$lS2;s~|q6|%QW0?fV zR6?2&SPeKXr7adGq4xZb@3$Ug0b^*x1L?tOM6B>nS;e{9jH;m(7NcM(TR_pLc`)qd zASqhilAagkokK8QJ|AGB+@oB%L z63$=OuhH`N`kjv@T&)=6ZZ>rEz3SROeEGKZe);x?Z$R&sHO#Rf<^jh&#;Bb9$I3%< zpiKLgS%=kzz3~{U&?Z>hJ~&33Bx!lxmk85HM0P#O3OZQ1ujy>lURltCc(l1{B%4^} zGTlcyBwq2^oX14?3S*rqa68i>E~RYNmT|_!_f+oHBnvtGDL8+LJV?!F%uhe?h#ni( zLTw3=4w$Gp#A$%+zjJ@=U2zGzy}JJV^B3cgEZ&$4#GQy$fonPhlf~7;$zaNz(Ot#-=sd?T5_WN=^~ZzFMY^t` zsA&i}p0*~=Ij*Ui@fJ&g7ch>S=ocfqysDVNqrdZ)`}^;|`Q|^qd;0XvH=n-w^y$C;$2Z@9|NYyae){#FpS^g{+vHW3S#RB=h%7iN zFV)VrWU7=1ZVjs?lgj(lTsg)6Yl)#tjnK$auGy1R)yxb{Yod7G5}+B3Up}*(QROmm zT!U|K#9_qzfF-W*Z)NZB`Sl!xv2z^JNl6wkHblIMU;temp7s%|cEZ`xIK8IW7MI(| zod+U3By5Lvp8S|tbX%%nRnDua6yG?aNEtjIc6CvU`MzB+G= z@4tEa=JUtT&%fS0|9Yxl=RaKj^6}&6Pd__vl&}Bg#kW_lc9UE``3R9`y^u&RQjQ9Z zF>~NQO=*f4F{X^NfaVseW%)FBi4~I0Lj0kWKR^V7&rw`kjCI`qS_KWABXfructv_OH{8ex1(0zwN*K?z~sdU-#yJeE;d!&pz** z^;fn-a@?a;yhQ9TqX{#eD?`b-;7rlTOg3c&vyZ4{mn*!KSln zn3A4cISH~ADOr`w+~CtJIzxQyLVjoX(aMfuM}i4k55AF!pRYJz}|;;%GVBsi*0L z7!YROx_<4u9RR`f85=j|LgX2(w5o(IeoY9nK!?G`|D@l zp6jhwxI=mYx-eD>Q%-te&$n5Cf!IryU3xeGqZzs*E@~ShW|m>t2FOb$=viPVgG9XT z8d^Vda6M5Zi-U64v*rZ$|=`9S-T=;*`&*zi*?x1-Ce3I#?DcMl{L+a zShqQhI?PX*PG!o7bc~>sJJU!u>lmO}wEmk@a{4~Ru&d4xDR&UJ=dj2l;hHM8M}K;q z8|1t@-ue3N-(Obxd275pFZ{d9MRB_AeX#%c_Ocyrdsnt#vI0H7Y8jh1$!x8o1 z&q!ev_C-*Ok(6lSKUM3P8pvF`X5^T|50x1`mO;rE-B_}G1-V$|xh6?W#Cs~*gAuRi zNBGt2+#gp@KL5kpPtTj<<_=fH>2iPEsaqO5wg!S<{pb> zqQ(rqS!tcZIJ8T>ZwSmWiv;fO$d!r_KpL6T!7&gC81_p!|Nhd0=n;=;ptwMxE-pI{ zfzldW)UG6@U3N3o6%Dx9maAcgN}O15vuC3NqCyEmdrL4w5y@CvCt8y;iZXO9>A>g`i=A zq6Haiz}|&34MI=EuY;EF+z52dyDx@EMij$YXr9OU)fyJ97{lvKP#j`$!YZ-MGD~_n zQ?=HYuWf%^T|N8s&Bt%{9dLVdGdhgBy<2Xv18y(Z%l;}9U1M{c=0-a2k?%i!_V-^S z*Y7-BvP&O{_kwI`8kojf0br^OZ*vgRHf#$ZzvL_%02nMW(^?@R0c~|jvZ0JVg-wC1 zJE9kIO($Qo%5y{@h*HDi33!@)&SQRNLRmnFRrOtdVk9c{0`u>M@Ni zW15OViavZs#!x4nFtiI`f(H@{_d^U1n^!z`TTr) zJpE%Y?AzOuw#SLJ)~>2<#~=2e&%5LHc5el2rQRfHU(Ox=>FMLg-+%q$@7y9+zvhQb zw~r2i1}`hEZ!LSn)R@QFg}vY3K0pI;LoxG6grSt2`Mh3BVi8iU(E`Cd&F0uLm4I_O zCmN7F)|!P4`Wq(I#yT9E#(Eo!>pX0sN4vyQ_N_@AL;o5%RFydkwuUYgx_v=P-LsfG*0B0S98%C&N)qQg(S>e)EsJj6&ta*8BDrTj4aWiM~w$Y+W|V-5s_PH^%AmeGPrx-9CT(`%mBb`?ko{ zm&4*ElT%wdo#o9i?VlkqmmYC#ArgaK9&?&L zNZ-Y@S=k~?2b>D~RENyr>3KLee&b0k32_8l;fx(>)vz&?U3Wy?MS5%w6QQDKOwzkY zqI?)zc@;6V4Y|?zgYU z9`5>FU7fdwN~*oqPxr=xFM($950}>cq;bfpXCx;*#=eCv1=zk?{&=pm{?09O^+66c zlym2YS5MhObfz@Z4SLCZ4Y&ytja@3U23|-$h$&}p=1GaP2RoWjsh4I#K@S@&nn`7~ zbC+@#$H;C(AXH32NZ1|?GIA=kFaHN$EbMA2XDbvCQMUI@TR6Dgai0*5(kcUKcJNNQ zD0s>~jJ_3nwx;$Tx#hB~Uh-tB#Uxc1%|gj+q0FG898#)5^I;6nYidBw*T4)qei>izxn&O$kj&yDd-q92>s(+tnBTIY^HYl zFAAQLy!dI0?T^@ydldZ?=uf5@HBT}s<46>yL?oenC}ODQA1b9e(UphcOt@=~@lMKQ zXK*ej1+u{AO&!1t*ixfglXq2CjD-qFfO`~iMcAjpeim}&o&l&$k#cB=EMD+-v`0Nj zRpCi!K*&JbJ@zuCO;PsTuD0P91lO!%+*S;lxGav3UP}Y=V^m~YP4GyYL}bj?%d;i`uFrAPaXko1q;0D5Z={qxnkI0z*IEX zD8)|CsfDrzs0J;!(rmmtQA(qB-}%IzsE~^ZsqkbC*$gday00nA+S+jR9qK`gv?wwt zVx$=7i0R!+Z)?)iHtcv63ayD2y@<<{^evL-5g0UFx`Y)EUq=IS{p73PKmP9SC2^_~mi3*k zfIaTGMGJm=Gxi2I$Stp)6Wfv#r|mZr;yT|V-+lemO2cHMo*XIG_r~r zT)4F2G;$gMi7-*1Gp4;m(eYYv*X}j}FTp4gaKlDGkmZqNCw6(rStmB*YB02UN)K|c z#(g$`0DlX3moTEX{c#ioXc%D$qs@70#6{&~#pK8+k34uc9#f{;yQmm;x<>l^u$NhX z!5WSl^ylH_%TGWitTW+QlN$#?B2&-PMaA5Ic=bBK-LIcN{|vXlof_{hr_gTPU`}`% zJ-YwHYvQE&3Cgh>e&X&UnZR$M8$q2^QAacYb7W;u1YZ%j>v1Bny+2+;VxHRf8O(ttuQ%O=4!)Xvi z)8$;z=oGf>VWOJ0s;=Y++x4|Y*Wg1h4Zo8KK4cR98H{$+pZ-GSZ9)&$?T zucMdy!SB91ckAE&$ZqP%7a8!a>J~Vx1hKWVXc~aM6f&V4%nAx_G<51@%yDr$oT*); zmLirKaEx)`uv}pB_tt3_Jy8L^wKl^T?;6=5uyPh%CXn~ZT$CaP!O=eb7wC%>I)+OP z*AknMTec+}s-zgVVmHO2c^Azr6t3Q$Apye#iC%;vrUN0B0k^6q>_i5?*us*haM@dd zU|VGMMukA$qOlk@CZOw2u3kfX{>@`CbWis#g}WQmbWevty2d28d&O(poVujyY2oSQ z4YE1Gd%(W`{Mnn2zyIpTT_V>n{!P5Npf4PG4>6poM(GrEVeYqdkui(LJMEl;F6cD||I`kq*r)X+_F`!pbj+!8#!Co$k{bg*S#Wt4iD4iH;*e3-WEsw!T8s z*s?^J^*jROWL40o%4;L;4drWb)Nb79Ee3dA_19I$X020Hd306BQNf)1|vNW25DPeJYCOB81y zLS|}O+ra=$ZI5LUFpRd$VcM1th=Cj}*{EYsNKQ=9=Pg8QQ5w_8wCr6IG@j->X!IZ6 za-}Dp#(n`!jowH>)x*10(Sir#398vB5fywD%Al^%rt?!p5Gfg1z1)n{A{LPQMM7DgY93!>guNWI- zSREj6P&Cm)Z9mdCIT@^x35&7(A%s3*T#^GAkY`mfR#^-QdJ>HqgLMxW6{;yT1tH%l z=P8a3C#^&shr#(T_6@?2&0?dyfwCHgVpO9@ z6@-SdNMC^s9R}~|lKyNv7kOZ^L?8=l$rx1%=KM${0yM4M!oE^o{fO|%JKsJ3Z1)eB zS>I_61aEF{4q`zut8T}IA>P&OUb-fG*$s*t`rFeO$u~&$$MYrfW8kdotKaR(K`Q=l z&BUdxmOur?xY+p z5ZNF!MzC23d=F|a=gSjWV%w*PF*OZI^3tS3L6%Y>mE?%QK?)9Rz-T#$Q$>H&;WQTk z){IEUMGZfs;LwA(9Fi3<^X%bG8B`wh&VhgNzB7wvOG(KvqLE~d(v@bQY6I91>O=sN zfAQ+~$BTb`{+TI<9ATWqG~~{><@}t4_ijA)u<(|{_Y)uG7X8a$piH0(2=e6*mrmrJ zA2AcT`h-}$uzTabjXAIaE8N8JX;js9{|zv?ntR*9I$Xa~M-&lu}lw?ZzGI$!ZN8 z%2G{O)4Ga*8tVXwOsiu_ zW0gcegiF z9mV2^-1ghsm&Bxo80t>*k((j^xVd{dYbkd9pse&HatPbcm&lJPvz|OeHUU-r2MXJ4 zsKG^GYVZn*+z>ygZlR8jY*sRXxE-0(Akf~=iiM-6fyT`sS4b(phGXHXqyMf#mr^4z z1-a6NGzBI{I@oMK(!-yv3ReP>P~7|v0&xnRnYqeOPf7K40g`3?E1|jOUwfb z2Ai52RP<-h@gtGvoNLAs(9%_$P{7Zb&m69%5LrzG`4lXSDXkvb=E_WAJA>g%`8OsBC)w~&|0X0Nc zo%JCe{$|gIYj|2OD7TckFkxac7Vo9R3U8{&;l<0oAvE;?-o2cVJ%!(e43%OYN>M)r z32j&xxCJ>#OIgDlHb!PdkiwZ9Py&*Za~H4N>JJlL$k18|1=L|jBQ%tp>y203fm}cN z^s!N^+esYR-TLVyrXjD5=Il}hGCB`^>4_AR(*(h0Ywjrvw7RF;-`_lb`RoTbB2PXd zKY>?rD6>|Pz{<|4kaN$x^$SfeqjJRiroOpg2T=0t?*k1USXBqVS!UgoF|)#$lI2zO zx`)YE6VZd**)^-e0~Uwc0^bt~Xb5?!H5ZFQ6uO8h4S|}hb(qm_onkDRBCRnFF+!$0 zqlVQ>m7V(dKF{nqj}g;HK29O1Ow!pzQs|gZz}wIs+A`9}aZ7W$^Sf8wp+EWh@zcRB z85hK10IuHR_H_R$;nYK4b~==4ylGB@;(NG6{L?>s{`~77xeJs_=(H8`j_+|@^3$?OdP>x%v)T05?k#m98ifI}EcPvpQCn?BwC zt+j%r`_jA`W6DU`ys#CKmla=?=xph~SNvKIqJ3}ZnigQ{xyv(;_9IHA)jCQ+Ue>y+ z;KYY0!=lKm((=Nf2Qonn7}Y4Vs&DiDQT4_v?m(XW%kwwydU@X6oyH}grMvyDF3R-X zh>N#A^i=jW;Wv32e>$|}r$ak3FRT8qAJd3j{bCyLN?YsWv(M`a2#iGS4kcU4&MmDg z8L34hQKW1$eNRy~X-(K6TguZz>yTDY9XXVV zk+gGme0Yez&4M4LP2X5tEqSo&$N6q}s4(Q`deShi%{$P-nwXm=Al0I|xzd$6C9D}1UU7r|{o~KrKo5%UJn&B}t8UFh(Tx07 zBMs4aj{`&e=5Fq~Z8+Cpm?c)*K;`D?ZY zJGP-53EKd4AhfE5$w)TI8hW5k40qYFWO-dhlN1gE(YDJ@s8#f`wFWC4az*ZFF~o5W z!vk^5LMqxyE5}rTTzcf)P#^x5N=@BFYG@`5Sa0C?n0W&>k}yO`-Uz@@j`E4} zxVxC(q~<$P#%L5(Bnufr#p0Z>0_jUcKg81pD@W<&)s~APGHx5<5$$w4px^gnBcssE zdDt1C{fD~`N+Q6+K@ZiG$V!7xd73b}c~cD#dCXSYZOGWu!Fhp|dX@&2nr018$9?=$F#WnKVQvw#<>IE$tZ_F9@Mh+DJ`ZxOYOR9_KO6T*iH<|} z=rM>*HWLT)d>B^mzj(DQ#p|oLy8)5wZvW5SX=*-B65CE?EyouxZ$=~E20$l`$ASOu z?&PikFwIVmpfAnkdT4n1!8_#YcZqg$sn*?34J(`M#3(645S>sgF)5` z2v!|QP&0-hOurc1U9I)$;8-B#C6$1RJt>ntpkrA)tyj*&z;qT+O|q9gmtmsDG+jI= zN2^4bT{Y*_p7ARQWCXB}e;SPB7=HJfSW9G@5NG7u0hl=|0qpA z(nh=tlqph3sJtL>MCyDwy2Hl*VgipG!~ONlNe^kg$-Sx(b~To`sq}E5TNN``(20ko z!+Tk!!Ln^`gz&h#P$$}WA*>-txdTzvUJ`gPWgAyyA4M?-h^B{9$N9n4D@J(Vylc4i z_U3edPB`axw{zfO!pMmSKChGsT%9x{KNv6G+}BnO$|5~}Z_jtw-Sg*P{h%H4$W9lK z;g))D(A$-sGZcm(bd0HTs?XSQ+o+C$T94_q$RQTPNu+J!uzn4*^IA+b9xSb;Xa)`} zs}9bZL$7y;BS{${tUAOaw&ZqLJS55L(D*usS%KLl9|zJUW&1hDpR&yjpw_7Wp)WM7 zOa5pxa=_!tA?+V3M&}&1Y#9zEARp#5`!%_-uUU?8M11_W7uT=8z_K5;tV`~04s_hp z90&4iwrXU9x6>BRrPV>O+g#rp7GXCBOW$qY;B19kY_1=8hg^MG473A@HV`SuxdIwn z1CsJWLt5K9c%#X1SCVw`NJ_*(i$AF&BsOotH>mSSHVfFc)1`_lzm9c{q^TtJ$sEO< z>tPbFu$k38NS_1Y6i#eBl|p9VqPEZBC_w-Ww;a%}8cH+VGBtb{L&D^tE8ym)qjWCe z?dAc&j@uzFKFN5w2PuvzE9Eic#l8A!olKtm;qiB-><&HDtp?p3a=biEP6@^ua~nWo z1*)UG;^vH;1(|=2uAGB}YHLd_|M)|9$Rqg_)<`r{Y`Lr%l4o{!Ue_>4tO~@8%sbg}RocH z)Qn{;_zhF|=I>9~2iI5EuN1-h{qsN0M)^=%oyG=fey_%VFHiRO0lcJe>bZjkenu!nHckwVUubo^YjG%1xQFgeia>;`!0SdtF?k?kV?&y+kB`5e( za<0l_QhIrqlV1Hb-CZJVWSoi&1U+4Ipfo2t}yuu5<=4C^eMR59X0 zYQ0(^;ge6#1=hrn&P(6x7ZdW^8yYE|Zj}FVJ9zA;(b)HHPyzMw=03;7d++7##AgZ-9@^@Z>r8u_1`A$s->1cc+ymxs zK$FN+?yO=tmbk-9b|nK)fWF>}z$)gIVN6l5?ra`EzVo675s7dq-WgRFL7)V}HAGts zZwMLdf>aaQ`ptN+^aJ&1sNEGHA`t!>eA2Wy((DEKsNLi#8YGD&wgr*GRzP)L4ojec zO0F;lgfB=x|ySqo1?1G zta%VuK70Jlw}11CzWxxai4k9-($d7rv#MUBeS#A6J7vNmm9>cJ2G_4c6dud)igg< zp$POW=(629WdnDdv5r}5F`gs2B{|*~dAPSYx_IaSJW=VHy8MxgZ#Ls2Ac@Rz=Z{fS zW9=Mq)x)b-+M$2{e2+U?A;>ZKnBa-Pe)+4H9A|h8a&sJbaB-hb!-E$O%1h$qjdZ({ z#yhybyJ5dI1NiRo_kTNc@#;~G8N|{!y@{ihvQXGur%;F+BHBRY%S0z2g zy`I6|!oDoL2gu~42QDd8Omq|*%Id-#o;+*DLzIlNNR4s+2(DYqUzy?^!&0e-QoC*J z)++BE3{IwEGDLmwCf+U@V~?cxxJM)+{uLA3H|Dt zczH9gt(()q`TCxS{k%i|c5d(0&&?Xa5YSmIL}eEVfh=8AXNXRMgo?@;f0o0{ocyGm z@aM`yPz8p@OcV>m5fJPb2|hS*$KtCoJC^EW&g1biDh7c!hZnfSgg_M54z`_fF8q|=ZLWu^o#W;-uTv^@7O`L{5`@HQ~y@7 zjx<`qoJm-6)Hfnrpj--MM%pAtENd24CRTC= zED_a*DHJ3zWDvVyid9K7EzUieqPqtp;BPYDh(T}dgq zZj6zXvWrLs7wU&MIvTBN+V!gq^{YfwPW2KRVtG_(;F-(*M~AIH13{@#F^^6eM<3t)CngyZ(!8+U^5~xX3ktQYU z)G_{z;}-yXjU49`-0(kw!y({}Y;+;%3)>_$M zkwAG$wzc{2AD{ZLcZV;B<#VFJI|i%)GkQQg$Q?_m^r=~gnZeO&N`qVkB&3++u z7yLEq`;>`PkkEQs}TWeQ9nIEyHBT|%J#^+dhv^7z=!LNZU?bcq46ORHTOV;DS$ zi|zJvi@yBCyAMvN+PwvFWKtodFm_BQ(`*=Q_-}!3pR6?=!G!*q#u9x((Qfs>PbO>4 zym?x6_f!1pcXm9=T6wPoae0{gi$T2|pk2njl*U-4CE;YmbtG2OoE-(VSOR1RJIlD8 z&irwPrW>*=6I0#bwXIQmRdoRXc5zE~3cj*PX7G1^8{*Voj0DH=eNZxIAvpIe*kxKZz6)`EAFDRDm~xjqZtL_U8prK!jn%fT_LdQ%916rpFP5L(pnukKEO$0Vo@V;lZ4_&U`%kBJzUdJ&XgevC-Uk;|1Cjtg7m~02F@q+ zJbS?`-b-)Sfq6=&mMs4(miRrYWc*^6fo@c=W067OY78&WiYnjWHGGwtRWjTlLMo%Q zyw5bci=fg3SxkKPgrSfy-9soHVnK8|KCVmCGxcO4@qbi|7rEqzYD6uoam*N{i!a=a zx!9W0RTX#Anbm#0Kr%lesoWEnq!W z(`hn=WJ50cn(5l+gAYEjvp2-@hp_Z3h|z9v^}3!Qpwv@nJbdZ{79NhFb&nV~qEgg5 z$%G#@NfX&N6VZ`~nbA|2$dsh(NR}QRa9(U)y-Ct@X_Ed%Y?Ou{#2IWs%BJ&Pf+SsW zDFq?$22P$x&OyPbS(0#zX+M_KP}<~}V6s*H=T`FC5a1L70SwC>2@riCu&ijdrNA?m zoR7ATiBf$B(k#WD!L!kBL?EY{G=Ou($1=5XBUgBz(d9K*(}6WpfWADpI!^p@BiTgOWBSt=3kDc{~JY?rVkBcOaXM zyQy9e8x+?9=#wlPYilX3FnSU^)te2Vp?36jF*0-$(_tduXT^O{lt6|9cZ>GKX9WF~ zHETn5^ws_57bSxg>1d4})j+S7s$F6-lyT`?*rMkRuOSIX0IYG;JDDH|Ei(%tu;OBB zbW`4cOGF#H$V6f@YzYrUxft7W^;u~2{QkZlZV+X#g9l{#AlXlH`i#Zr;XWkb<(903 z29qGRb+s%cdyy!7#~%mguxPwQV6_Tng~A!>?fF1A_Nv#YlOGx-MVJXm8Z^EQ-yR0pCk%92ombO0ejkV|q;gCWg_pg@1#Eb9P(dLVd2=~zs@A+04=0}){wD9n2a zk<0LDL)kz46k6FWS}4=xgbC%oG5og#qQ@d6jS3&kp)_6)=~Ah+Ekd68jS2pX_jO#O zAZEvZ-yiSa3~TjQ-}-d845mp^vX;SE5d}4+TsNTADW%gJ^f@&zT9%EpP0aX*!GX9r z$&37^x+3K_BjwlL`RH%%-N`k&@(K0m(V1GXs^I=~oO5!%)(b}@gZoOMmNY0^{6D2Q zy~3JG00yBRHc~V-WyGWaAIgG-Q_o~ksTG>Q&}y)aKo17CEx`%1AN*cVcc%bD!?zxu zT4Yxnv*Jn$EcDv|+e$`Y(T4%HH7w1p?&M8JIFH~PA5p|G+(+C>46ZZ;?S57zMQ|~* zJHeWuANa-oWfHF3`!^qj1%xgpzehH+rlbaUvU}KEi}>?NdhVfp-vH_%UoOM0ZyICY zP2ZSLQ$kg`t)`URug#OL-`U};clB}iV3+wZsD%d0YavMq_vk4to^$XY$vw2U>_9*{n_i~cKwj?ih3IB~5nClNdMT$R9H(^_T!GZX7i-?6S8>_kc`}_N zXP1&93o@uap{Ge=7Y}kk;=DPq)a%At5D9~PRJla2ae`h$A)>j`h!UF*D#TPzvXGO^ z;NH8qxjF| z)F@J!7*he~p2vb_YGZ&IQsAy>DDfOGk@dM6!5T_(qp!vcK~b@$H&%_gRP3oHNFcSs zbRKIMw#w`_OOVfEt<)(7aFm&7O4UN5oP+FRBUnf`lEUb6Z0MU1uozMd3;j5+LRoy8 zP#|r>S#+GX{kQ$2nXF#^$Yr&YX`7E0z=pN-2&dCER4hWFufGmOO>ARZ478njK5p)QIKj0Sr1r2`c=WgpdYY8WzhKe51@SvEg%g zeIJ(~|KeMpu5HDzdnia<-?2JECrvWD@ARhW-!?pw$yQKMivya(|JQPE(x4hLb8f?v z5ShR;d3T2gB*cDlmvs3bvJ@ z%u@?&C-c!EbyVeVL5ZtBh=Lp&^tFi|)IV@T4`Oc7qOrxGsxRD-H_m%}d1O=@BxwFU z(wqnHKor!EV1+^)z*HRgG^N5>l^IpE?eP1RPPr2q(AQXEgH_YAi0_gH@QjuHd}K4U9mB?O6QG{CFsUgnjLkL;Ck5V4|;ZCfJU>3pmL_xD$vVFO%J-Q zrDOo&Opx%$3QQcAD~Ke8xtFeV|2;)QH{xWY{(<>=onrZlJbZ_BELd##YzJ>I zw%#c~feS-R;u%xapai7|qYS)dk#NWwhu{2+5M+o&jvtw! z@8gp2)5%(L&~C)jJl$N|;zrMI*c$7Rx|RxgiyT7!o6Y&!Y6`!3Z8q4hOy{%Qa+*Ru zJ$*&DWAkkvTIilwYaj*6vdU64Q$qEifU5ZNl4^YeoJ2emN+Y!(G}(N+IwQoB4<+*v zK_#__rP6px6M!Xx)%+K*J26d#J!}=#>15_Nh%xrvs2{+ZkJ>DelAcBm!c9}Kbqdi{ z%EByZ_S1c{6(m7#6`EiQP!1A-J&wZOlvd5_#3-0r!W855<1`W zj7q%7SPh#GS`<%2VrD=J5|O!X5{g&Q2+T?Z71gvoq6MyghWj_J+dSj2`7_w4B$ULUCZT|cm3b`{mubE%g<&OXUuGaArPx%yim=U z4O4Qik%enrG=(-HWHRtKK*t+*&SLFLI9)QqKh>lJRC-V%yT(6Vq0$>FT0;sggSJiELE% zLKWlRjp~VqTLE{OghR1dN(__z%YB};=qRRQ+?vSM93f>*lq)`n_emf`ToRi>bKeG@ zIPuyo14cRLnl@>-Q)Y)W6p4P1{=v?_3#(6gGFoU^@iIor6vK)oQ5Tgn9!qG2m_pTg z3ljormq=`fIHb-s>=6N1n5K-reR%pD(J976Kk+fIU``f!HA;i8P%h{N)6kI!6J*Qx z1};{v{+WZ0F4!Xf*$bWO0}lM1c#q;j012m+RM)W9B_m}9%32K|V*k$j0i_feYt0bJ z*|4fX?Nwz34mFMmN`+2X$zjr1G`+X7Z!P+b2l=kvOf=BR+`cdEMN*)_q>c1QqukB3 z1DU2N?wppZ#bLMART4sOf-c10dUuG$dzW9ex}z#lg8;!#gSe}YVir$N5yPdpAU0s% z6%rz)2({*L2%HcQle^E&@Oygu>kWxi6r!`uRR}@|go=f{7oHVU=C6Y^5QBi&3Ko2rgX1W=>?}o$7>hv3^DbuhRQyHo7P%`yqFO{F za4zNi;Avow4ycGqD0AXbnbS+}A_*lhvIiX$FlU{-K^tK2iN9Eo4@yZ<21;3y`1~sUy!3v|{=&3p7R!IODbY6c zDgjE1u=Ip`D?TD%N8s776k(NsvtwQ7jes&&M3W7&^d**aghH^aY0^qg3ZgG#Jc4|Th-nJdpK zVshVFkmdJ2y3uHEhsSc-c*M7`8yf!Z+S-jv3vWDmX)_`^YehDlR;|gjQBTb+BZsN7 zYZoVxGBt_A6O#M1!Q6cCqkq_?+P}}656A0Q4Dcp+XxIY8yMq&<{2=PcT!&}rPhkjfJxw|nUWH5S& zQG?~&hrl9gY`}f2QRQ8(9TqT$g05QyZ3x2gA)rC05Nt?8Xe5=Ril(ZrLY?R$ZoRVV zVfMa6xeWzcj-epc=IIyc|NZ@y{ab>(Guc8<%pvL6RuCXM1=y$FA2(iHSbXy8!wZ{p zef)&0j*S#HvewjRb9$8NM&ebY44aUg9Y6b>2X|^nPj}^KKaYUm;x_bJTx%?+G-51a zqSeGFh&$e5Tsdg}By<+)svtzwvwqa8?B{X_tP7EDkF$&!13jMH867LdPDQUEm9 zn(P}YC|!JtB}!~!`c7D6jXPO^xuqJQmVymwj*ttwTuB~C<;BXgR#RN z4{nloXrAb0xgIy>S|%A`_|Tnq1=SCgs8Vxk zZZ<~6Gb<&0?pze2bFoknYVryb7s}TN1y4n22d8_n+RvkMiaQJQ+<<45;Eh_2onR+k zsNGGdB?j_XO4`xL>Q1{Yc4ou5er&(Ygv*ydVxm+Hcb-i1F=>KlC!2W>IGmpwiwkf3 z;LxE%KUjP*nb6aqY7?W}7*+LmPngynev+Js{b86+*4mb3a}s{4ci!F0`M7uGAlHLz zX92=YEppaGndT5&-ynp(1BE(dwpyA$zY5{X*pR#l=DU+hI|MDzhg~9Y2k&qV$vfS? z3>7Jq@hP_29!cPiLY`2x_zanolEM>9_6cISQdKmDY($pe>|cI) zY2hy(UOIH_^FvQAL>oU1^T-qcx#>`&Z6@VNwBjLfym4vq#T%0_Q~5RIo0U!1cg@bn zpYP#(^u9v(B=8vqHiGm$?jU|9T?R|Wp6{xRXSm~j8a<^$#;)iALRa&}VStMmz{ z!8C$PI6;bNKEB7jDJ49e?|oquv~X)F2)-F^5QejnyH=d_tP&d#Z#{|#1{W4V>{6wH z>WCkIz6GOYcafnkL>`KGRzYQp321o;ER;(9!qCFCla|I}MRJ>1+`|S!tQql@=9BjQ zV)Cxs`!^5L?~w(IDbYDepZrFt;*i>WeEZ5$*DW3Y*&zt9uXjv9l@`MH?O2)Gi=iYFVIrL@fK6}An*tx zo_xq!ZG*T&lXXmhvfR*4D=toy;L-TR<^J-DgT1{Umd_{$Fa?@(WUFF3 zT~Zb7{$$((iq1($7DIy18$3hP(DE|gU=8HzcF;>U!xx*23-3Pp(?eIjv-l!)DD5U69`_r&NYB|e zOed*~l3Bqp$ro)UcPfduD^e^igtcTsA?mOaGgwj03F;}=86=!iV$uxroFu+&Be(a2 z1Y_%KL7%XMqzF?7-m08p(Mo|Oy(QBYYGy7Iy{r*7|P8%7%>;Evk^`~o%#ANt^8$GN+R6U<8LF833kS!eu>? zKwR`^!EAROO0pUv>$TQdao_kfN=i=n7}PWDK|F=d{VcWNs-6+p1+l9T#Mn3%TXWo5 z^#4lFOO>xHMKxIH)a?xTr3&1xd7uzX`NK;E>m5%O(je6N7D&mAGiGQ@O;D*rGj|jo z*{31a@+Tj?n|xBi4VkRbQ0V*X$>8Rz3&m(YhV#)K`tCxS!?x>=>7>o)oQ6En@0{6T zTYTxe<11IMcc*7pQNCUp5?%eEcXK}OU4G0;vZMNv$&yk}0p@hxJ6>=aGB`JGICq*u zuGVB-gQAK>5Ocmf{1!0kdkxS*XU^5yPyO-KoPiO0LT1l$Tw6VQC6!VRXP58Y^L2V& zbBQJ7brqV5W9Hk)j0tDcmfdKKH4XS=QUp8S${}yWtk5S(LKz~A>TW6~y-?72N5j$- z*B44kUp5ZE=YA2f`U)%a3pY~8`7p$qZcN&)x_{pf&Bvju{n;3gZ{F-qFTJ$z6%SJ5 ziyD4?y`KVi9V+=cCtiH%J6HSD)^*2@y|n1Za$|n;UO&!VosWB$&jkv%twI=5#N<|m zc21)d(hy=>GXEr%x~ZiI!5Uo6%>;UNln0rzuu=Fz1LwiF$Nph=xw$^=fQeg`|8Wue0)AT9m5Ifx5{kV%B;bI@S%xZRxFH-#Fb|o3_D*RjSpWkKf!) zb-D6=ytG`FVZhv4NxJuHaOH{u_zug(42M}&S#DId*YGK`lt`r>Kc?;qDIsnI#j1c; zo1R+nmvt$bDy+FPft}Tnj*4sp3=+J^7j>$Mch$9DmXauQK_qDtavS6+5%_qa#L`tm z9TpLAzTVc%uh+a)FCJm)sYGyGrA;ODKOW&0$n6Zorjei~MC*t96fCv;-n;LTy5M5> zsDIMPDRhfBeDl!_=VSQW^}a=)PUaaVHQT@gLSl6o1=ggt9&a5w^mPAmX8$)nH1y~+ zAx?Z$t+XM2!*Naj(nARXnvdkqFb6l(t--}+v65XJ}5GZDH2cS9r&|jz$ zY-koNv7*OP+^4`1B{D<>6foAHD~!P|Za!ZfSkOU4XbSU1q4U(7al~rKqTa#jM;^Oc zX~~Wj!hK|LF-Fup5ER$529`y$Q<2xHw`}$M{!>Q7B11DbaX)UopEoh-I4D!zs zDdEh^W55jWjAkXzU3K)sAW48puU7uazZ#x1RaPg>oUj_M9g zkH*o9h}3$`>`(IA^6H34%aQ?&&RU>QYol zf#s-HJVPhqyGoa@f>~syv1F&V*Qao%$S8~$<`P=|=ou_!P>YJjjUcY`9c0D^WQ#K& z=mcc5kZ(lI~S>@&5TgyB}Eh+4=aZhZok! z7@0<9=2nnT+I;x%s`D;neERB33tz6~8Y&;Iv`F_$sc$`A`tH+LuJWMOLaqPn&<_?j zrzuAv_;r&{_vd`vyZoUh9w3K|f?ag5rovmnf{I8P5F9|s65o-$4E0#DrQ3}ETnu`~UY=-7C z1&j#%wt!rSMJk+=98q5eYf`fc!BYFw@L@G2)bZqKj3T`W8eHv+Q!KCV%lWwfuTH!X z&GjZEvy(~0E#q1L!ev*-acgw-fu8->&8t7XbctM`>DGiD4{@t!<*T)!^;o*HbiAI7 z`ceF#bh93PW7_$xX3qsk5Gh~1(BhI} zxMt5MY6>!*r8o%HoasidK86dJMQJz*0PAZr+AV}F&O54#m*~~YzL-H~ z=i}6sk1t(n0Em3+ZzkH?)SHj1ee=KWa?n=-?iONC4{zExZ z_@+2Eir23tW^^5`QW_pxkW5jeV?~;mtQd>CBDexXQeXn+RpJ?i;tM)K4ye!-8!kt4 z!G9nW@UD(Y7bY8YTl%CqGOwL(1)voS9+)oFPZ_faLB0;YKcOmPsuZ;O2)6a>$mqF} zItU*O2y*vkkXe0o>g_|{UDzaDWJ;>fTEuG(5B97k`pTORv(I`Otb?eHy>mr(h`A>Y6Y_U)WVnzt~)O>A;o$XJ1BlD^GYHhcC4;MHgl?qh1k? zfoiggiwh%$KuGt;DxnJas*ge>b`td+jY_}T79m9P(qVXNhW^5>x=uM4%U44Tnyqc1 ztMbXve&ykXF9u1;bec3%Yne%1MO~K`7T>6?M~4HEM#aP5`ZeK3OI93| zzMn3gcrugp=4sCHLvy>!*!lGZ$-WzRunVMSLmVT*NT_~=bbX~gD5(~dqx~8ywG{D`; zoHaJkyrsk#wz}j)sp-rIP3ui$jVPi*BI3D_eJ|cd81qQ1%>tq2Dt}hMPGGcG$f)=G z=GS+-EnEHLQzx!1z5KJq)QwLa8=X?or?vU`_{!C5sEE9?#{0j!di*DgH`2|$Z?lO>igig0>Uvs5=Of*tyM{(0(AiabSW~2zh4`c>vyd;7>0m1nx8~V6S`tb zCr%DjF=sIiKpL}OJaKm=*2?OioIP=TeCXrF7gKIv6IVX<#W|agF(*!Fs_Su?T_877 z+F+BkIi){wap9{cKfc;mX&8ZV6owDg)p^(?Fus1kW)@soIZAl~_2Vs%T`f3|pInt?vOBzVIoSHu7Mid&D^n4_jjjr#0AOV9tT zN_nSA<=&rvOAdzhJaU3IV}NB5WeYVhkfS0o?{uCQ5(JfI`r=KxDxBaU!bEz* zaHS2LAop0hD?}wUFdo&(tHV-mHK{*C7g3*l@75$SM-rRFKvE5=E1UZSy>x-6rUB#d zg*t%Wg18SJxt0&_uEJXVUrwHUzU!{fT9BM6J9YA{Umo0i9FL(@7qSq4w6Dzi{Aonq z_%WG=g8r+)>(P1ZfsO+Q0}J`iH;#*!ayK-oV)%y-E%_z$!&8qeuikx^{@;jFb{dlr zhG2Xt$3O}WUG$mGeReFBfVynJJQc{6ydm)&8{O|ER8IwFUH6m2(XDu?3v5F^S;Y?8 zXG-p{uLB|x?|$T}LLbkzh#P7--~ ztun1{Ol$K2Ng~BpJRAMrmyW&BcOag8Fo~k7?jB?75rePx1F;L~|C*I+o6{EMSkK3C z9H`Gv9bLWqZOH3h=?W70jEgK}6fh1@_}>M^7(;0dG#t{Mh4yP;6S$0&T##{NV&SG% zDi_tbROdcKqH%C%F6(@Y{#S_jpgz#E0Hk`-s~T4lG^Lp+!K~J=kfC^OQIrmeW_=O&Cg( zFBccSd*xVc@2_1y^=Ef|Li(twl9P{0G}XQ)khD=N;p#CAAh?nASj%oKvw z!y9D$dDggt>a;DI_hO-y4P7hXL?s3P#cnVA-s_YWIE3LqK&)snA?PQnPOEB>MKmAR z9lmg=QFkW7)RL6dtPF%Ae+Z;{EI6PK_PvNPc&m7f0kvmAV1R1DS5TUFhR~^Kp{lF? zue(A1EUz9t^?co0e|OuHFJ03g;9+Y^Kr3($Qv-f{a}iEw%(GG459&?XTscl>b12S3;*=-fQ8`1Yj#2o9KPFi z$nvWN>)ZM~)$W-1ntD)B?bb*e?7M|l#4z1Sh#57h(SfP9+Ui!}BAW+9)YMHy-EuK_ zW0+SB6X+ydwRmSo08sdepb;^k*D0f_*Uhj=ubG9G@6V8sL`UN?4#08^U67|*1%6T( zTL{~jruxoh&xt)^5$Ee@A+ea@!JH0T7!u>f!hevojusJd@vHlv@qc}?_a0>RkIue* zZFu00ExojmR8J0jbK2Fc`M5q#(^&t9cx^xs&o>L_OHHJ_{pPJuE)xy{{4rC|J@UJcS4rm`+t2_%K)aDZ7*0z2Xq~_ zABA`jBV4hRD9G>t@jp)m7la{e#uuw5%Y@H^xVD7j7cA{c`mc^ysKJSdh*f!*_yAKA zXnUCz=Z-?G-9#fI#ZnJ|C4*QABp95GuqtU4%nL6)%O+qhax`+-+{WSaUGV3SR_dU3 zaUnorpH#LTZz>bSf6>k*)Xr6Z!tDF|kDu-Re0=}Ffm%0pSKoT~QXT0c0;<0H(R_5V z6O4a|XMFb0FV8NJx~kYp`hzDGI=De7f+)e>ik4 zJ_nq%AD;c^ciD!lJl+JFdC0x+0gz%Ltt)Ze{ax*Tjvko|&BrlsKH|xak!%!NUAHv;Ss$8{AVGC^vhc>N^|;E`0V~CE z8e+xzJj_@97GwgFZ~t*#S~~RdcpP=zn4_#0R_|_(_aVfmw4S>-wZ`^&)hu+z(TnP> zVnQ?e_+Lf2+K3FDG@oafTD;UvoH}J0u!5c!rAyr}OM;|Hq%>$O&};SqLu5l0>m5){ zn9|Ukhdv%I@33QWW$3q?CzFWz73e-*A?+0Qc%!0I5X)(RJtmF4!nYZD*boTuY&pZb%#Dza9N zl#FArW&+~kQSZ+=bETiiSH~U)TGbm~Hv5KH`LG!VFOPDY5WDr$^E=Y(2kP=l4nIm*W5MWVvS1odaf+AF^h%(23VI&&zsK`?Qhn*HB0pGBxOfHQAuxhkQXJAw4OS{G zVeJqI?2VYLD)Z&7sJwu)!Y$S=j9+6q$lR;S^XCksa=)UhY!o8W5?drGPc7d?1Ab6Fk|m3-KS zpLP?*#3vUVB>&ag!e4xRoQdo>tqrrDXDH(IpahSmxNQ2n#v zCIZmh!X07SWicXMkvIsQD)MGftRz8&mp00nf_R@cfz$x5pmktTB^e|){55#e)wlgd z4T~8mVAa@e2tkuL=VGBUs~Z$x*^%AMPe_8^L${aKrUvGL0hkYeuiz`R6!qZyO;~>0 zZK+g}mT>EWj)ZCId&G_|FaMjfKjek5^wvPrMGG;jjXr(&n^%rCVk@W$a~r@%_UgAk zUHod2HYW>jeE0b)gV!S=v(i>@+@)TkxtWF^TKZwX1?i7#A9(ofE7x1UNSE4`arfI( z_uow$^4T{qUv&KQP;6ObgP;dA#0$6&0>zi6I|u1%)Xy7adqx-s;OY=(Z$m=HTnL#@4Wc~^gVc-VmWEBjDC zqOIM>7id0S?z-m2=#o1s7didD?$A#cFAY7+7-!3&QO}{_;&&!A3`e5%TWaY7>7Nm${s1ArN(>B%{Ax@gzw0zHNDhR3w z7}FY0{Y=e7F62<|8_TxP4PpUcrkoi&+(B!svIZ~SQbQHF8W8iM2XQ*8i^72t<#TOJ z;l!>-b5u6L(xg?CShEynF+kpI0g+7G!U$q15oMRD!nu}IOu|D??LDC8wvE%gQV@UYBU(FPDQ++yEzHgDW7WP54i zm?CmrBnd<6_rrsDVw z6X1*l{}XiM*$4dVz1XEzR{!kOZ-8optr3|dg!y>efY7Z*M71%*|@Q=@Z{2=&%3VK;CFdCjAM7~?7=->A*<(nCL&2o zUj5))W}8NCBzE0=wAcjG3S!(|`$>b`qnC{M-iy*L!9KFKuC*@~->O@bFWi`*+;GEU z-BMWbs6V($#BZY@7CBtK|JM~g+6?P3vSs4CB3Qw-;)wC(xEoONPtSpTR zKYK%9x}Px~Ux7ZWUY>CAlWUni(fF;*0ty^5;=q(Wz87$HUtk?iPL8GL-&jn|$IEHe z%~c2c>voXU|KqXQ`MU8{RqI|Q&LK@=(`vD6mwj<9bnL#pCz>7BpMA#-C|QBk(QkpXRj_rl)zP$X(;h-4yTKAuRdTH&;wQV*Z z{uo~C+GEma)w?S{SlGPOt93Efji1?N%X-vo<7V<3Hw~4F4=?nG^_wA1jLl#=rm0nb z`P9GObCLB)+IOhubnuNWmeMMG=8k=sr5agyr&!uwcmo0y13c%9Uk{+Kh>AAvNE{L? zB@%MMSsC89BF!U-6(%2VNl6LZD-0jCHtCU};Ps5SGC(wp=|LsY40YpRAz}rUiRd1E zMYt%YAnK7%Nta{N^nWShIjN*s#wOWt+!jh$BYtm6BuyUMOHJ{$S%HP!EA&`2Inj`uEUx#A)j zeswRvzl%xM6aPD0N|IhY!ZJd z8y4)oHvy!J9l8eZDp9CSMdGRA>KdIk6X3so&$B4p2vWg5Zt!r2at1raG7I7#t4P&g&`M%#o#4CbiBIdGyVIos8tR%t+t2ouc>`!jo65nf9@ zZa>6YytMF7-h8AP(Kut<6ErvOm)SpDKlJ3k|BJr1TIzD+lEf)#`yT$P=0l~Hr~l8@ zM;Ci8cB@MqZy66XpU2-Ger1pA!j*d;*MvR!!9Vb$)!ldKM|%xcZUSbH_~MffM95%zcIW(ljnk<ER^D#S*`h#_k-Yxy~2Ujz1FSSYyrMLkex3 zXBSl>f~FJ$VA&CKicN)X!Hy0#uh4*i=mAVr&653`?aHpuG1v!}CrZ#+J|^u|wy<|DSyez zDusmVqnl4l>wGP)Ua~pYZdQXpM_&mcY6`%CXX_=RXD}g@A}%B?U^%E1#KK;ZC`6=4 zRpS;$PiPK!RKUeDMHUF-)&%-U%UE9LJ0R}BC$1P=`H3})wuV7f!JETm7k*}6FU?Vf zv+UXZA;R={PTSISJd7lG<0$EUYDackRxGc)a`O4Sh3Lkopa0IWL#L0Ax0pUsAK%Cm z^Zuecer&1h#`FG=d{;EL$v9mI!Hdh6QmXQrHoj|AkGZq2KmTt}{cn5g(^t=h`btBH zlnfp5t}An+lM;_m(I5rJgax~Xl+9dsAhotqNjZmP*8+kaxfp<4+fYon4u!*^*kw>1 zAMUQ28C5cB&ZQ=B2?MU+dlRd0RG|gecPur}&;lXppmuo8U2JGB*h!8vZw%m>RpUxr zosUKGgkJ^_dg1Nh0}?|Vmmn7os1$*r4XhY1DKyF5PW z?f9t+Zd{u6W}9DgB{Un9JpD@Y$2_qeCnwchm(n#m#b&)f{JW(+_US9X98gyk08&k^ zK38I;V%UkBC@{$u9=r@rhqcZ7>pJ7HD1``h7fZ1h?179i30MSri6?&oQ4YIAv&2U^S z?an(-u(}o!n(DRGil-JoFUrUB(yMXur*EB`H3F6RmGNn(V>3Q}_WYjQg)6VxpioVO zwptnEfl)XGof>Y?E&+;I50(YF#@~SrPm$ds0A-hrbBv5+zv0?ta7oA5?rvUMq8POL)Q*bRor1y6foLI$Kx zQ|c7AO;z_LmQNRjVSxdQ63nB@xRDrc zRo~84K5Rp7j&q;VQX29XA`3b1g*j;JM^6bZQI00@MUaJj4=pd8_ZM6p?>AcWY2wU}xmq(;PLVbhTs zr#f6h-ldBb5vv}E3C2SyAxEOnC1VC2en536N&38;ZYQu(vF}eg=GY@*NEbqdbgv~s zb)5bL0rFNxBCkX>;v3L3zPh~I5$}n##Tz#o#N1+!n+Cm^8l^Tlt?}kvht=GX1RxGVl-N(m{fI3FQmm4o@Ffk6lU zlDTLGi+9S4!Qeoi5iiiDgoa6_Nk^-tz87y#Mml%gqcbwbqS-y6M@^8^|Ljdf3wHl1&E)EM&d&*PvP!l2?seSf5Fvr>n^zjbHaPKqns8s%O zcUr~OS5Gb_ZD8sN@?IisKgKPnp?x;HIhWwLwVvmmAuFglw+-e-WKN))&r&SXyL?8o zk%a$n?Z8_f?BNPoe%%5jnwre|V$*nHOsqsy8hCTU#Bp@NK|Kh(vk>f_F`QxzG|;iu zuuGW3%@rDVUnbYiU;J_N7jku8K}HMi8Y?A`bPN$}c=}S-n&2?|`cQ(8=w>iP0=uwF z!^GkK7njg8&IfIbe`JeQs*mMhgGWDPXt0#_$r$Sz>oJR63*)DX1Qg#VdB6BW2~AVcJ4?1gj{j8L@8DsD`*X_UuBHXk}ITCm)e+u;!*60GP~;1w6@99i5ZZ zj3r=nUJS+Zdgyt?Qdi5CN9vdt&BYLHAko60l=8#J0YKzg#YM>3HpOOENDx!Y_KiYa za>-8r0&}JZlQ8a(rgAtq-K`7IB`z_e6viajvHtxQdv;d`WOjkP-Pi%UrZdjwrF2R{ zM%z-`(ki~Se&oxdOZcmH?$wCc8!bx%sY}_O&EQ~e){D>i!1H^^L|8soknI;7CWw9* z)|Ug8g7KUn3o#L9xDrH$nqPLtZ8|q6>49;VL@)-ukFAj#&22<3t!g*|^FrDRuLbmlG$8=x56= zBify+@XBMW%wqiLsO7>`TtnuqI_1d}IR`~kthj_2E8MyP?lpcAQj~R;V?-fOulXRH zMc`)PbO303vG7j$HOf1Wes^vVOB%>AWAQY znoTS`(M~e+o<;88bqCVTbE#SjYxc=@ZGd1pAI)9SaDiF_VmI$_8n@A(UE|0~_d!#v z;nd!2)Vz(2ok#Kbfp72O3i)MWqVX_Ol1M?W<%1yYSsFogA)d-ypIV&R1{k%!-^B?6 zRsn+8dl@uc#51boU=7!$#+rZxYQJG3*F)2wAd(S{(KzP3-}>R79pKeQwkP<+!Wh8} zA4-D4x-Ky~1Ck6L3BiuLFyM%xJ+WGPdM0WuJq2%`rn65GcwDa++-@ibO_GG#$69nN zdM&E<`rbxZO~gl|Odro}1e2U&tzGI_YF!(#1f?3dXleh(Yajy-N zP0_0(SiFoqx4IlGrrs%mP(nxp6<0|C_E_e(USg)t0cp9Lc&XLzA9ygf71oU#T3j1Vl@{cAWj<~!QOy9l@y6#Ph&$)$v%5x-t~~K`lnB0TkU;LZ zwMQ*5$>!r&*vKPWwsz4N-)IU!R*3DGUx{ZkZX1tOCIXd2D&-3~B=S}(5JA~r7y%cu zk~YYhc&j?a(vk;HUb7?S&w<#)u%fPsLJm!h_YIlWofyO*{1hj;SwJGlmx%Tv_8i5P z{wYB_E=7FD+&BfHW1iBx{Gt44=P%3E_r7@|Aq+Fitu=kOM~4 zqjSQbZk+xMTMO|NW^M=^|G+Hh5>U;Ok=4R67I<#z?MwaFmR#DygH-A6k)j@1@d@0m z5z9Fj>jVQ8Fu-b|R%}Q{mV&6A!N+(6fV!eijLCpNEg-_Q1&bk_WrY{|6;2zeJ)ZsS zos)T&KX~+HHo(RbyPLCwH~#YmS)DEE4XStCMt$V1V6*0EPDa-l3mXkqHy2sh<{5TP z)wV^jb?xjw+pRBT`SAiouKN2{T9QB$P38&-Ho!SB$x_->eS^BiL6kmRE`jlq1&@R~ zk$MY=Td*}Gi%Bz!T23vx)=B1U@f*1lkr^cTVs=& zvljOMeRJvLtGm2HmLIE25Fr;po%~Y+&>5}+mM#RoiXuB|a4Atf_zsM57Bxv1!b0-4 zuxy9_L5!+-Wg?7kL5wd^i#@$XGM2yKr4k*7Yl&t*7kbV9N2R-0*pXEfTg?qp04Izb zFgI54{?d~7mtmVM6rG5eS@K~*0pO-tDMZk7)oK!!O4ATo=JA5R4WL;7%-VAq{j93{v(vSMIoR9FFI+)aJ#D^V0UN#rQN*mypjl zAE(=bPH99aUDqRkc6mUaA{HIVcMwTbeig>=9$;f7;@LcQQXvQzPQgTj(p*~^%RMuL z)>DbkCy7}Z)r=11iA#3_({v=wZlSVi2^o3tjRe|(v_ggS=J7eb1S=A5;h%iH{V)} zo4!3Q6z9xNiAddU#q$DvYjw0W17W-kC1MU6zYXA_$#Ba$OID00p5J9~;mR4I&nev! zF@x8V9Tp+C^-@4I!Tp#*gI<AG0==ugeExg%-fDB(SArK!J@qltKSX#A}Cbpq! zY){}hvD&1UG;i|xL12%_!SygkA*MnUJ&{i*BK61c=|k~Oi;DVC5ROU-oo{&hlQL4B zCR3X}Vb;1P*^7HdG$p25`l{>KxAOz?uTNcT#!Fq>bf*S6UlH?@*{1(!_+*>zHeDFZTLH+Y_6*)2ic^;* z%zO0fdaZ%0%E38?)J~Hmu<-Eah`n(;tW`>yA?7oWR3XOj{=`$9u@~2tnEQ=>%uD^E zxOD`YGPp=!&*ySPEd{oz=Zs37Wg8fjA;EDyP55JcL`alN^}eL|(jmaXgnL9keXh~r z5(q0IgK`V8oz4no)}kKSd5ivevv+QG4fA&JZVr}^g@NN{PuR$|GUF}9O0{>zcz& zJbg4J^%ffI>&`UC5=1$NSpjui_4X8+vSI;AZy??{K9g`tqsz10|H#dZHM2y|AU3n; z)e5ly#`&_@!JW3~|BN)={K{{xfYiF@?DG7ec6smJto51*!xmnZwJpt=m=`f-UGcaT zuFN}1<{FuXW2XE~{wn=o?rkpe8NO8AbIM|(`F)FFSr0v@%(c|Q| zut+bA2PKCnh(KvU6Z*dt;3Sep)UcC?A=nHOjQ`&EAju@o=^H={{%!{yS2zOGwCi(M z6-DO~z86z|MC>mFC&OsWPl1o*T}8kMP8ViYH=vaQtc`RFS9$cPhg=@pj87 z-14`)AZ(xfahu+}g}K-`6uWT~;n9dx=HsN=SO1*BF-}dR4{KF0-8}jir~1HapY3Lw zzWn2o6TnbpB#JZ}TG-+=nb9o`o+J?Q$;}#u5|+x~wvp_P7dfNdVjqaq5i|`E`bkwG zlYF!!^hwy)Ih-2)K9pDkVpzDdPfNYZR<#Fg%D2z9Vfn#m>6HU!1cdFHX!_rKmRP}~iJS3*J5_LUM(CoW>(u6Ej!(@zeV}H=R z7N=7KZ0Dli=tDdO`ws5LB?Xf+l~e&vO=;{5F!2C+1X4lnq1)wr#+@}6(pja!aZ zUh{Qxo&G$Fq(w0FI^f1dKBt#&EV(yxv(%igxz;Hy9K)P`_TTPio4)eNe~vA90kb+2 za7$V+R|tsL$kj|I9$EvO0QyTrJQ?y~{l;)RU$wIXj^<kjmB_V{DSb_v~+s7&--_h^6Gj81KFHat8(`38s{7y34wxP&&)|N51b-2~F zGOw;(;OWG{;?W6G57%MGTeAUAr`=gv@A5fX2DN)t`cQaWW8XkoQ$Nvf2PInfPZYZxjm zCsJj5hvlY$GXT6aiOrRi)(rNvJF+6Hu!L9LU8s;T)*I&=zDd_eUoOVLTwlZacG5AA z)eTqy+_3Nam1VsCYD5l_(fGiVJ5(@fOWRWKSFAvDsTvWf-nA4vJJcy2XuPnEq_Atrg^diym!Sd`#W2SOu>X0 zE>$!X!YC@Q{k;a)q|&qSk{dDsknv+Jp|KS1=Rj}y1{Q^ZfAH0`gC7h8Tx2h&oGK~4 zjq!+rD);h9lM2q6F-O8mPAY`~8Iiv304OeVk)#bMMv@kDxqLraUBrI33h=zF8qM*? zJ7QO_9z1+{+{{krM^IhEA{po1Ve`Vzf{;c@l6B|JcB1`l8@f-9^t{&1S+ttVW!w&s z+cnD8q4e-mPQ3m7onIj<%g++TAmP;W+d%6kP!xP?gbUPdTs>bf zP#OK^tc^4+ga-w@xNE52ODBZ493b?kjGX7)nQlDa?>Ekp6^&Dw296mxdp z>W(U`v&Wmc=&Gb{%2-1oKEw>Ab@U$z9R#{u(qyGv25{z5wy4w%qWI*iF5-tVFQn>$C$uIV z(-QLsYD6a%(<1H^hhQWMqqNfZ0Rh`$GzsE5tbD655HnpZol?UVMnoH_8Dm9ixT2-+ z#Bh6AxwyQO3hR{vT^`zgeyo42mfm{wk@LU%)8Ebh|LD>4k39P5Yi|z^+KFSQuV=K} zcs#F?n!5*@tDw?%RuRS{Z3XUHA-Rw*F z)8Ea$g146Xb8_r@{k#qz-9?SH@?nljV|0#ZPBL01LEZVN!z4-;PLA1;%s?n9SFoC# zJotrXE%;1Cxg7`?8k3~j(UdVegvSR%TCjX0-U$=BVay9Yi9gUJ@*tN(iJTLtDj`ji zM0{xKNwdbd0?mjdJ)%UMiAB_kx$sP}=qQvc*M*6Kt6_OLWvJye)t?&kvGwJh%&-oe zj&lC#6NgVOy>j&aXO7%=@y*MZ@0tB|`SRrpZ(h9b;JK$Bd*SFKZ=E=Bcy>yzU+eM` zF~94(G%p&r;;vTEo(4~I7Q=4Nr8VA~Jd$ncxSM9T#>vA6PQ3NV(H9fFKES8(C- z@HN!0;K(!gAAMzZN=}@f{p1tJb}`3Vd93gcs)l*OHkh(#v6rqx#`>oBb0ZC)+APAG zkhy1}WpYM>7ye*q#>B~|H3fuCt;$ya0rMC$4>75_z=#s1yb~%p+kvP@M)L0 zbKDPO$ndbV+4fzzgltNk)y)K54?V4tW0!5#ivx2CDo^6hjRgnNM;%_u2^I8=yurb- zbp3vWr=~>J`c2!>0r}e5YyKQwn>{_R9ew@C#mo1+f6wfhN`GCr(Er#ymw$cVxo7_J z{97mbLvpRbt+$xmZf>a6&2thPm3+HtAGg?(hOpI^XUV*EZFX@SKJnK1zkKH0eZQU^ zivA1mui&}op6kDY;fuO>2&zEL5$D>DIKX>2o>Al%}{^_4b&s~^( zdG|eYbm{Pkv;T4zyTWHmj>q#?l?5Llx(Q`;Wa9~GtV9tFRuXKnRtkbbtN;yY*puhI zgn$=Sm(KO7Aq5L%8g}eSHt4GriOOG5_!tw+zu|rmQz#Qlq7l)nRFFKYuF@>nKoV?S zLbVUjsigw6YTlE6KV$=vEKs5p72{;Fk1-%5XxS?H&hr1%AzVzgT|c&i1G4(+iKW@o z`0{TL9Dd-1gZI3D`MHO-`D@htJ!|dL>e*W=u>;2JwbDPh&{W2~-clrH$4!-cfsij@$v7Uy5gzA&Y4CcrzdJz!d}n{eTx#|+SePd}{Yy@bmP42#1sHkE`sD#+oM&^+64 zXnb*M$;|KHGsP={-yMkJhOcx7W8T$2?#<}eP8@#p^^5P{^X6?%M*0CiB$p39cK-O` zlS|!vK3hwA%Zrc(ES<%;sdUQ9#|C@dwPc^+zh-wwcmA=17y5hep&kBp@y&bQzxeur zUFfmSxct@4X`a{T_97%aODfF4S0j|En$Dr3kiv)=Nny8+9##0Vj2owZH+~;*EjX-F>U|}e z#3B4=SEO?YV2tFdiW|{1;*RtkSe`MZ5+LT)BH}shLiCh}B(_FMj3;XHXaL}gX z_up%FI+o5q)>nmZ;&U3^;`;C^k^knx`v;Hg9FTR!noGenk+>NXZSqd` zm#2lvxUp7^w}>ITcJUFS_r9F@(*-oNK!e#Cb3to8NE=&AE> zA3l6w>GZt!X)A7I4ye0LV0xb9HjWQ8D5sZBoIH8pzD7{*(Gw$Eecj5OU4I0+Sre*ISQ< z4-33Z^$CPvZ-TTor;gct3S4pF=9XG*iT>~a*U5jm#F`mQ2 z*ALlmI!-P8PF>x$7V>p9}t}4Al?$S1K719LCR|w=W=DFuZDh~2=q z`|n@Ac;u=3fA`1(v#0s+$pcHrpzLVLS`56&cEg(q-xDp$^<&4DhL1HY$e%f~eu2~6 z(Uvp2%}DyT*U0RPytsbh-aDR<)g!cuCxAHDvhZg}3SSO6Lnd-2t(Gd(QBB?-Bww0Z zju-$Kntp(!%xfn@$?yJh-@C5w|K0glPMugS(e)Rn8Xq>z6&CA2tc74MPV>aWd=9+?S(D94p>{`gA(h_?qIsQ|&kfFJ};xhgq%j}`kt z$d*01QT;MD>f9)|uG2WzZ+U9gov=SEAN=~lZlAFoOo01iGW+Yo`oY;b`Bz6DdGz^S z2jZIA{^>$iK@Wur7W*K@W|1Bb^kNx4z3R$?(&<@J(M2u(XBt5(P*^O zN%e3-Mjx!)@qh?hyE?Fv)T)=lr~oU?Lf0p^)l1}M;uwGtA{fvj;K>-gL_rxyCv7R z+yNZ7^1*2Rxm^sbMz=jHTYjjQKlS>jH`nhwGCL_R{N?Y?Kk~|>54`sI(t!g>h+gIN z{a;H@zxLLnuRL=8cYpW7{m+~^a^L!!RRDJ3&4(Vk?W}5-6W;m1?s!6$j~Lf#^>7H9 zj0o8%k@KC9uzs;S5w2JmyG0Y)**zxybImA46&@<*44TpRP5BZgre=!F93}~PLaiw0 zqv&NLou@dxQ{AfW;JDJbV9{RyE~O;_L;XS4X3QJ&2_`%utVA@NeI;#HTb@<|+*9IH z0RD~y;Mm5hW?B)#QSs(7O+RJ$$J-x}m3v3)qg@`1JN~;ZKliyo=y=cj^+~_De&4|( zN6tL;)HBaK_SoyQzwW<(_P56#d+eE~o;r8#$ie&8FTNQ+{lc5i?e<|G-D0Hh(CF61 z;_TaS`#xm(AcRt!ZdUkyM5-|}GDLDPL#XChKD^0X7GU3RkhPGjQ1>&72P%qfFgX4*nO0V#%qcSa{+caa%U;%Dul{-+LW(yZP2!u~TcJ zQPtGC0R0w!&CbMyL4P}HKbuiJ;G>5|J3OhokOj>8kd@mW5HE8KY%;R?s3i|QHRhBO zyoHo^j!m1nxeYeLNWK*>obgB{O`d5Bu+y;l6>PYPfG+f|B%@FWCxenjN(w&TYM7FS zT?$2t@y4n{Gx4>)8CAG=Cy16j)vE=Q84082K6V=Rc}$S%?hzYpuf5va6*Ic+(>mgycK+Xw_SgoEZrhvOW=pbu z;dayB*$skcBSOD?QLcP(S;F@Xji_iw@aGI1`i?v;#}^>IvrjP46h1yNKclXdX2V*Z z0~|cye~E#La!-hV%W`j34>T}?C9#%bRg1+DQzSkiB8%ECb%=U(fC~|MrLI+#&}&dY ztzJ@oUd(2`2Cj zwQJ~V+P$z>cF(QHpIZh&X^`e3*w*haaSEs*O-6v?<(5LkDexS-x@Sc2*ka5J7%3Zi z1+@n<+8FDKX~UBj3k8V8$w=zlK(1T3JxIupSuEfvz|*0POBOIIDF+zCUo!IP=`y|; z{Lf^#pl=hPv;4&R#nEoo&!eqR-)PHE8_jP~Mq6*7(H)Q3oqqgwYyLeR!qG$PPb}ZA z#A4`;<_&-XX_C8g)cC;VCdM@oRa6uT(rP0b)KLUzR>=TSJ|Kmo9Z=ZlB2`UQc}}U- z5aE{eiTeJ-l`DAkD|*z=q?DwJBtVoS>$xnc25F=~Pf}#eMT%)o$xVwNQG_#KGfr79 z9KA{pfFKqxzRS#?D)1 zGP=_N8SSF5Yj+=`xiW4v+RdFY+V*o=|Me}~kXa8R8vGfq2bh&+47e}ZDHYqlTAa|& zgq}JScao5cDG;`Vfh!q(sUCmGo z(n?E|D*ubuwIKX2-1nhBj|df5M8wj8N;svEK_Zi-cvNRS=B{*?aGIFo_ez|ZDvL}> z(Fn?pjjqZq56G;*+O|Y`XuqzFKhQ7V-EA})?dmsMfA5yxu7kCoz#=VrjHtH^vqr#o ziQmNrMPdW54tP$9v0jIJ^he!VgzI{c|5>n~9OLeaS${Sp2%B6}1~?%wLrS=G)t`uO z<|tElsY$ca0Wl{^g_bjmq(bV_B(bJlCPS)^mQb;X z@qpqYDi{e?ZKI_?RsS4sbwGv!YjlfeZ}bN~Ap0|~y5)RrwC8ho>mqA*Kw=1Aq!1M7 zcxjr*Ee5dhtRUd1neeLwjzHNwrmF`~QkN+iet#D`M!Un`j5+N*g6hRT`T$L$!L)dQ zotL-SH}3gf*rhC3Mv@PiNzCl9P6=%mv`=XYASFYrJ-$Oz=2U=!s56EnMJcWl&*H7v zMUB=k_*^DAYhHZO2|OSwAt7onZUA< z9sVqu?ku2KM1R%Fh_lj5c+ZBx?kB{&2EqiqjvqGF>Em?+zNWUYIIH> zz;4RytO)6Z2LLiEi{MhU?T`ZFS1E%_81pN&=&~eTPbots2M&4gm84COW(VZ#oAvtk zZ^V^fum3?e5$&~d8>R5wPq#*QsGH`k=(p`l`gP%L7KM~V`Ll1dIJ>;n!Mka4iP@>a zA)0It>H%d)f(a^nZR$mX=&Szz)kHM~Dws26h(p}&E^eGCX=zUCjb|(=g9QAoI#`b? zdenkYTEe#O4H0CPktXM$U-k`F+I|T76ywzc@PjrIDRbeNhE#wA;9#!=#8NfBA~82! z)y`~CAxlY@FEqrcOJCpqeDodqt#;R=+g3F@wuo#axZS3Z8|~@5jBd9yxl@67``_ah z%aB=##R5bF2USZ13_4vuUN;+v3{!{rg^~|{P)2i9U=1`dp>(ce)6D2eABS;mLb)GE zK^hS;WUmmD$o0786r16y5FFfLlg{y3NbMEzqCTvKMGN6;>T7nz#;*~J@CWFz7q=(E zN}Ej`DJdioDVdQ1k2`e-P?r_SS`$NNYQ^~ygMtv$$G1NqcO3EF@^KsONd7e1d1W=) z)txfhbJ2Eth5RUudT)I|Bt1}g-&_2_7Neda15g6H6N%tVqs5TbtMYiR!b+jQilF}B zuz<vnxomvWfXjtzJph%4bAtV^a z5%!2eF;WebjPLORy)XON5_1$qdC|5XDi#v-Cb$zb+TyMdeuY>NK5<}fnfs61yFAd z`W>DVz;?l8jQ^7})`AuwL2=BP5Gmwr_#upWr4ke* zZUGbIKOpqa-vJWI>lzrv3f^@UrmyJ?hH+y~f|LkrP)jg)v@Sk|6QO1YD;)_VmBI32 z?!k)G18@EjpkD3nvk&*|c7NO}m)BE`euvfd{>*ak^kbv;VZQSmZD*hMXteFMal3W= z_Jgd|Bd#cc3C??0jxhzXI+#UTfvp@WYlKpF9aZ-v=6(_1 zwgmcDxeo_%+H=iozr>E(g}F3_Fzb*k9~&HnB@;zseS<7`*cb(8yLJWMe)zg0lmKS2 z-4u?LG&qe09i$O?0mrce)RZVl@BgneCYqD zzeabis7AXio3>FOj&^(;wtl>e+wMYU2L$d119#c57GMztdmj{7bQva6$S==o9YX~Oo@83zQTNs2@2N+DUe=5j?y zBrfuwKe6>sd-=Wf(Jcn4dsemYrj;J;OLccQo~}Er)3-e!ERX9uoX8sNr(Ix(Y+6e! z<*cMbX;Zb?g6`aq;>{gl8W{V#To|^1;SJVum1(NPCx~j8_ex-C;WvqV*t%plD20hb z>Djyipde1TeirK2oGPhSW_(4PM$ky;pUg*qN{gjKiTt%Lu}!B|OB0q3;h%6e`cJ`E z>bohP>4C}xH6@IgK7^=dwCWVIzutO4TAS2p=P&Njo}Svh@fH3sy7(Ol1-7+Lt)4S- z`fC~EjW1u^_0a)BREpErk&}@!X1$dWW#w*+%&CZkf{MtoP8?UIs14*jW49<4UJqZE zS#l$$lq;krB!^&PQ`hHwh+tF4s9F{fdtj6p4{s#g+At#~S5h;ehsgqM_poDVz5#YS|POA_XX=xbOJ`BJN6o*+dieE zJ*gZ=`?5Y6-Qp8m-|p5uM;47$j2YbNke?!JkC}mhdIT@cnTCmU;twzu9A;^CqCpQ5 zG~^o5^{*&geHNTm zQi>9|-4N>zQa261k+-greTYf1qRbR(NDoYl6np_1`1qI+SS(P}j6})c?|;dUm$zxr zN4w}1Mmu}#ciTQZv_}@=_MgX&uf1EYbJCn^{gajL(4)rEnDwqycUn#YQIBFSnn)+G zd^?XyBU*+7Ur%2$=Jc2lKSCp1fUDW~P+dRV5<jo5carW9-(u4A6neE7RSADLq4y(P>cVhCPxIj>DFR5G5`a(5;_^}e zo03nRZUK39WxEP%wC{!f=x#sMXivXzw6AT;=+-sXnaIUq)-m$}!pXL-`EDl_akR&;ZfGOo=C*Og3XSCd z;*{jL20{o(-hd45apVd}(h+$jqJCRBJ0vEi;(X@}dh@(=kLVjV_chZUQ&0D5dp=Df zg%*Ld1G~Q=)1z1OD*F~;lzM^eQ8+9U_l8h~2;qkSq3ydD%I$~lOx#?r5fn6#EBx{G z8?CUlC<5G(+g|XNa6gJ+-PsSzg?4|-o_De*oCVf@*NK|WdEZZ)?jN5y{i(W9L_ z)T6un9Cmi|j2_zFoqnc-?huEhHmvY$2&*nkj|8JuaG?#Doe~z;2>D~727ZoY8%6!a zC2~WZ3SkUO!h+a0>maFVc$n~zh)<~MR5jwQT#8i_rm`wV7I4Ex)qaX z*-$QAGE$@0m^D>6a%d^0+wM3KWLcb8!EKW6u@n0y>cshD<`9SAZ!9`(*tyc4u5R4A zaG<9KPD?)Y2}gm$+zg!dO?MJQ`h=6|!KNt?6&&LWjr$;Z7>0l`%--L-o@cH1+q?4+qeC1`6ItYhTPzSSm#9mE_L zzEb|=)5rwB@&1lx2vFF!YZogdktW&i&AA?`X2IZ3*j}L23;`zo%sBn7V?MtN*f70L zLV(Hs=%ZDq{{m=bU-BQirfDZ=HtG@*M03F4!&d*o)d3o)tg-u;3Zq$6& zC~RoCo6Op6Ct^V*J>F%H)dynU$Us}yjkd@{7o%f@-3cCpd#S{ouwI=Y%#dz5 zU^3bD%*!oNQOFXJ%0E+}LHk%3k8vw*#&z)*N*;p{UU<0o@iQE&NF!k;gH-dBH%oh| ziSVjY&ljl6j9H@EHh3LIA_nay_8K!|W4sE*q*^jXV5t(ry~M=R6I1#KG8W*%fi2w~ z`ojLLcq~aW%vb<`*$$6awmdp;Oug_oZ|r-qbPF9t79I8N*R)+=XtJmIquam6=nhyX z%?{IFc)VugQClks4o88xILVLsQ6)lE%?El)l6cUL)#RS4SPBWd*DS)dNxN(B2MHN6G&Q;6b(@$qRuD8H5ZuOC1<>i0 z=O`%e!bj)xcyd}2HkzLwy76B;pdrpiN)@b4Mz!4}T%k|rG4x)BjQsNAGNOM{6p_DU+iu-E<%SkoZ#y=DDS1(yU@xp#M-ucIr zuIsv64MXS-uJqVbo08`Cw?~1p+jpCpguL*=f514lF$-#rB?vuJT-$NH=Wu{-A&V44 zbJuE;W7U6*tSAgNVzdzPwM3#xnm@vQSW@DR2k9ixio&Yl5-2cn`uGFDpZ#o9&qFnD zP@@K?H3YUQ$(qC}P7#*HrtUVRr5-I_Og*5}SEfFiG6TXi7=epV5+GS{JcU!G zgrWs6^y3TH=r^e`Kfv<2Rp&`+94y$N>IO%w0Rgq!rExb?rB4=!m@>4*&neK)DPV|& z8YuJ31G*)=8Dmy5TCSuh9;MD#pn-L*t2N7w?VZ#eMf;$_4ML>|+joDRh+{;2CaEF* z_AY^XZ@NlNlGa60T6k`tO2lUtgAuGwU4;9b8*DWzd5suNhRC?s#mWzdrWX>PQdh%M$iiMctM)71YXKq*a{E|Ve!!b3kPcQB?gXA z%yGYfo~ye`4eee-W=ssRu{XG1iT`$G^OnZN!QKJNFD2WWDoF={)?yuEPKoG+P&`@- z#lp#}FW&u>DJgue0=5|F!$d{(TwP$r=)6t0AV{O}jtIku`#0tHW~A;1X4dX~AnNv* zd35_NrLH@eSL8tBj9WMr4y*JR{^gI<-+eXXc*?>!t{Pi+0cV*tNWxv2M0-Zl92qk+ zKQSRnmz8R(U@_{u()UX8BbFQ`TTar`Dro!SNt4!E)z04eT0%E_Mh; zk<@_143$%Ba&}_TV4Vf&J9=iWWe9th>uto6T~a`wpi|gFZw%V02TEG`z4kO6bM#w0 zK;5?pOl#lIbu&fxO)Zke`ow!`=-W@t%+i1VKe{201-T)pSo3IEQc9%{B`B_gR*$Cx zh3~wCpjSg-p@-@F+E&U-=%q_m5$ z7BWo44{9#j6$)glw5z_+4&9|Vv9@I-WQA2SL7cD8LXyHGd>fc$2fR>9l6qO{V@(ZH zMwm(=JTX{2O)PF$GK^(S6Pp#|heG=x2l~-oil<>orwBA6(&mwnPI@0|d;hLgy`!0^ z0%a)~zfhv-e`ya33-e6oU!vUsgyy%TdE9HG`ppr&_)ooYe$eLqoBu}x!X)0yf&RMQ zGR4zp>gYmpwx9CQPrQhG2qO@~yD#R$KI(C;l!jQ!1T-{+sfi*SH1gUs=qRpsCo9-* z_I-m%Brw?ZMo@FoBSM4`f)Yiy56=x}zZkLL4CP!q3xZc$PNPDQ5|?$fv*2mYg6FEK z#F8|aIyLzT^L#Pr^`3N#7fb*Nvhv66JN?r)Zo?&X@C9gFxwg-Jkj z7syYC3eW%IcSK}DWsRWnsw+n5u1|v{=xHq|A*y-RWT*%a1$kD4nz+FvT4M1YXwHu-K?x=QE`(+zySbmqk~mjWcM7dAcugE( zA%)T#3sY9~s#*0|dh%4tM`PU!5J#yXyPYd=`h5O)kovrN5MR;FyF#)mtJ~-H-`%b% zW1s%O;y=vhU=Z@cA6Jj4DD?#EVFZ z^x(M%YE`!q-PA6Yp)(+wRuY=9XbO0=Rdl<|7!JZI z3+e)M=$vcv4cD|E5d{f`3gvSlWrzv^WmVP-u{0;ai+c*d$ySD!xEx>DD)3jaaZJ7N z?|-et6b;Y?0So(*a+G|eO-AtV@=P0v4i03?Q)Gmjj?&f;9 zx2JbKZ&LWw|CII&5w@dBVy`D9X-TIp#U0vPvb}z>-}jM_3qgE}7N>ElKf#NbVb~m` zcX7EE3D}V&#ZX+oa{T-im_fGz)>76ggRrKlyV?|Ev>p4VbY5+6rB(DMjhv#OA@NZLVXtcQ+P2sE-$6(^Ha<{*hu6~?L zk`7DuA}W3b#SI}{C9$NM-hiPrFjpFuJT8gZj_)88!lZ^#?c9R;PVBtP2UAWJhzS@D zN-3q8ffgWx+|9&Q<#@W}{LrSrw+u0{Fz8rg!cR|y3lhT?2_fUtuQYz!&4p@^o9R&< zjHS@swmN?HMAwC&Z2rpKSFp0V*#h^Tx+lRJTpj53Wr{9_oIUii{ys^H`NV~Rvonfx z3uilLCB$-u2@Bq#=C)e@O&w;TEB2~F->oVKkPtrR5OuET-VYL!^@{T}x=~CBprd-( z(C+R%iq!=y$cCfzTv;PIQLBO@g?e-lOWATrhACi*>aJ*j_wn#){aH`wEdjZOl6h}f zm~)Hzg5=Q`+6A(2N2go3Ht22+PP*`bd>{I5chK*@_^KN&kbiTJ!$jQ>4TDG2y>1A~ zV0E0GEV5*3Pnau8Qgf$LoBA;5zRnRt+OziQXxOPFz=$+xc^}IQPzxocC#DOCcGWu+ zGd3ThXg$LrJi0mxi-^$f+Fw?JXj%~>D`*+kDn!5kroyQa)Vj`NGp0M#5s4mxNGDTvf(kje`Z&n+ZI zu+y5~I(-;XcPPg0)LT732Ii$J0}Bf4c^~Ili5NH(@jVx-D%8)o z0Yw+##l}=ljrqAT-I|kfkitsSt|nhwQrH&3a2gsCw9P^kpZQ0UGK27K{@r3b$X-!s z-TpK2?q(+3-GOfI-NOE;y>m(K+ZPN!yFgxexG;f^-VQ4#>R)2qs$~77AF91SO)n zh32QwRv=(WS!-zEOyUhK30|!hfM~CS!pZH8*f8NC3qu6=Z{JFU;nk&NIAXv2Dp|3> z$H*zRGu)Ve-p4}=a6?`kJFrSBSk+~URg#671a=JHGo)^mXoA7y9=j}dm-?TS9#Om5 zwK#Ddjc^EQ>5-HF`_t#{dhxmEUaNiWepj2m2LB;ve^0wuyCpnzyNj{91$|04!%)cO zM%OK{;k3BZTg4L1m-x@LdH-GA<6nE}x#zy|jpyE%&_1!608@avRwzLX3|&RivY;Fn zPn&caD8Rl9b`$Tnc+7f#lBqKXWjNdP+e$E^G;tNpr{@5r7nHZPp=S5{Wu{rr{34nOyvF+x%P=wF%z(rqqQXLJXUZ0vI>E_On@ zg?(dDP{aZp`)-#u?|+!Qr!PKt_>n80zjpcZ%9Y37cMGcJ#ARuga9XK~1nk68@Yr;X)PdrE|NXg>^jpTo9eljF&s2P&8m8O-Sk~Rb zO2)s@PSRg^<(2<<*Wt%LxVG}awYR4)^3|2g_cE#(%G6p~8st;rK5&r)E5R|Wj@4Pj zqzswrP=(gYyI2u4lP*rvY(S5rcN(ww6Cw^lX`z6fms%!{JnPTX?;wb?Dh*&5Lp`|U zDUjj$UMZbY%d2T14Ue~G`s;fuulMg< z|KBU`uB==+{M>8(WB>dA@xoj!)-D%T*BwNnwQF|lfeu@HcF8DHyiH_=-O;G2(U48) zPrdTg|M;0lj$ErZApf{_?Ii|9dKL$R(23W<9NEzf#mS}SYC#ali$sSrx}BM`sS2Eub$v>{8IO%BU8a=El^>i5K7scUVTW67X^cB zXhO)iiliV9%TZ@+^DpUc?)jy=?>2{}-wp$0w}8DXKk--~PrdTOr@y~;^7UU_ zX+JLCYaAvhv7>_Y$cjR<9E_WDIJ}?lJ$r#y+hb$VuV;vvr?6F=DASw#D28G@oLiQZ z;WYWx5>`ABsvqL@nQ!JXWr`xAFM+0PUW@6YYmHsnuC<`{YQq~?QXnah=uTMVjdm*U z4GXdi0ds*aUUAh&c@Z%S^;oHv5R#7cQlHV(BdR5wh06@eV=Gr?KBn8q`=vAsWY!O| z?*O~o?Kt1voEZ3^f7u;)E86{#*xk2SiUYVmPrdR_|M=m_ldoUD;`?(fki#UU2^>7& zI=jNOUhOWntz1FWtd5he>c1FYSmrYnK!J+$B1r1-3?_um7#!y=43xx_KvEjiVCaz6 zqf9-cKp_%Y&noqZRj=c^mNEGkBY!@*DI@;?NwSuc*GiMg;B$|nmIj3r?50J0Q%+IpMTX#Ye^nJJI|(K(_LvPewV*}F1H=5+{Rdqh|5V)=Ga@ z)8+B`lWSLY`S|nKf>#hDG|slH0BAs$zX0%Q$$Hz^usJD=8=Vs&2&j@_+B(aU!dxdSfXvT&_K02>UMb1n~=B>gmZe1`{tf)EDy{9vZ2O`!rTJ48~Ka1li!Oa0`lmd z-JrPzN!J|ayMx$~W<%GyJr~(xjj8>M_M6hQ^nd%t-@Nk5KTVg%^_hjSz1_dS?>_Px zFmGvJpHg!pn?X^pSZeF7&fBHBV3wMH<8auX|r)Z46#Y-T=_Nz>5C;{mZ4=4FqIg` z!?0Dz4O1vUEu}LQ!#*>tLAGO=y#4NEiG2EBUU^}_uI_HJ@Lh1W-py?n?b}W64!Q;0 zCYwlC2k9^T%Rf#IS68pbU8laHJicCgEEpsvny|9ULj^rLRw*91s3<>55mI1qMDCLz z;d&r@9|hI77#h2u5U%J0NJoPbV*B+hSvzinv*V}JvL6ah1w6b1TmDT zGl~$8V9LW~$Ysz@guvOMB0vpsx8 zuV4O>XJBfGvH@`;;h8BEpowc_&;)CPc6LQO%aVRe>+l?sRZqIms+j#vq-RMYo?7@Vz)W>_ZF3k35kU$DVhK-pg#k+kZiM<> z2CT#qWXH%g;*iBu*eLcVFkK+ick%5x%VYBS>sQxKe*gb_<(2HYJz#y@%~N`G`v{-r zE*(7n$qVN%Ev1k17oJ?mE3(jTcS{@1`OPCIujdzVduDr{cCna$5K>r+afrHE!3ZCb zq}rt+PeQO)!l@WUX!_fUuF^nk#vRjzv7%a%k+grOD)ojOyCO0{Xem z93%yLFe1v^(0)NDU2@?RvFc6?xq~odGH{Ogb|HKnj#!hBCPs2;@PJb0I~+RU&G9Vm zDgb`&T6?FvI&;f={p8v|{BM&|q#cCZVj^aDuzNp$|K#~gTT4qnJ#^>OpZ&yl@3`ZR z?|$O(NAEdwerapz!Y%fKyE!ZIz#mI@zW(}^y+5u#S2a+GNXNO_r)j_>VpP#z7n1ph zU`W+?^*Afl6H;P28`?!RITPF;Xs*PVglWtd5E|jV05_T)Av{N<3??;#j;eVL5+z7j zmbBTI5-z*c!ly7m7X39ogsWIAH-}4B5hyre@T}x4TZnjK!eWfxg4faoYrIn#A;&MS zH#Fy|VPi?t{VGc9P%ga^Ac!SsWMc{Old?-~Yff>&wd<{m1h1 zLl4~l#3$}KKl!`O*;0Lxj&HYTHQycJCtUiIwRh((i?{(@zRNk#2&n|`02%7cL{?2V zz7mKi65|l#WPn!*PUfj<_8dzWRTYWIT0yjj8T4CqqDJ*!N%Z;ftUGlY**`wJa8*+u ze_$4o<&)}I=Nux$|wfUf~@>VF}6}8}22Lg{4ONo|Tq&Zq-$0q?vl0~=a zJ8Uf1@CcUGaB!VPH(KPf9bR5CrjjZ9PbYPBlVAa^3wO$W?#vs<2xxqU}Kf20vtVVY{p73 z&{B|q3Yp9P7?P$9dCeufPG*#&8*x%T6X9(&;d%o@%N)ddt7eKWBE}I4pl%2ZOGekVkHrg~GNEeG_h5!sdXwkxEn~wlu1+YQs**M3Q=D)qo^H?~--z z0t;9{P3ORe`j=Ina(J%=67TKxwYN6U@7K5L_B|;bGQmJ?tlEk`32;?-2pXUi?)u>Z+^J8&u)DAUWtNOd5uV%5k#87op1dPDK$w` zc!h-5M}CP?3!b89uDO954FDX~9cSkdRCVZYLVX(WK5B8$i5X%|_0z~tlv<>#U-JTq zST*edREY7MXjW%xNKEoQ96u|Nt)3Bw>RO0@s}eRSRw!!`GdkC)ZH5yw58vxbH3;O* zO$pi;A=|s03DV8)_1EuQTKIb2)4+5y=BX!_?mhcUUl?`Yz#q6wMx&iG8=rh)>9)%l z_Z@=ror@)kk+%zEU6jQqj#$tX@+<5)Il zHXh&FJjlrMc5X9IF8#yW_2!kEX_~Jbj+|9a^UP9a5?#>^JdPuh2H8Pmxu>;qMz5Nz z;=To0Oxk$SF+mAIaH0W*aM6aFm;90uS`Ujg%gVna6Q&d}E{8~j=RzDwg%lg{EGrG@ zmR0>bI>T@V*1Z<2mCPzmEd)P=)d*{5?K+gg(x&Ea07_F#V<_b*(EWp+TbZ{euFfo$ zwGW@Xu&>`KU-buPxa~SVoSd*Wc6>e5UvS#0N37UNHonv@IPo~%9Ha&Umi?L`Mz8`7r3xp+!cxw1!#r%pWwGLoS|5|3%`2gpl|q(Pjb+Bz zoEN@XY!zCyh7tKk#GbaG%v{Wu6A%uavSd zBiF5lf=a=p2Ep&d3|C^YGTyd??>9g(2w`AigTENHk=DOx?|tyEbJ~*IGw<~4MJ|m64Z5szv(0IeqlbrOkuL=DPz77xz(s?J*|2zTHpN zr%hfLn_4BlBZr^{*}H_$g0oygdB=nRDFI$j#wvEQ#Z(Vh|ECV7NOXq8$@ zJ1r^T**Ji7)ypekWmDqq&sBPEe2JuxV`syYhDp@U{}&jDjTOx@2xvl--((W zHODBLS^nG6_?^{fw{Fjdv0uW~>^&k%kgIRcIi>bGljx?xL|)rROj$}@T1lCi2nfVQ zB_+4|(dTuYxJIgTP58{06bwlo72QfqLc0eJ9nruU0!=G@0B(IQJ>5aT87dJqm?&G# zH7;~}rvD%49-D{_6&@bcWszV%04 zAm6|A+u{J;;--_+_@upK?4CJPx1 zryz5MSbYidek7{4L6l%7Hc}|w$P7XfgW6Bhc)jmwsb8avj)~N7oJSn9lk7mn$^VJp zpr*X=CB+mf9Z4Q_X_^v%yrD2%AYW9AP#rN&72NAi*hsy6B|x9zVbJE4gis7qTX+!# z0r?7f4BXr>DydLd_LgEL-Nat|;Pv^tM?GutGe`dX(D~bN zNAC6#I?l!FZca*cjtA>P7~dGhf*D60G8&~aeX-!3Zeh7_H)nyQ&z(Q?=SSiN+uokB zp{M&^4R|JV4F6ryj|XrUjLg=67X} z;ZUY7C}n)Ao+naEB5|IAH%+I7OuahAIYo?&^?)C#0Xnb%R|vG)CTb4Bn}dd}AXgjpx|e8)SX2_C8~%SZvOI2D5xmeJA+cLm&!ThO`!nc3^1j{t zF8=iT+CMJsq1GLIs@tzZSzL>9;nMvZ;}LtgW3+aCwKP-1@v)6BUAnM~7UULVJolSr z{$p27m~?y-&QsqX>o-7bn7^Q8`?gKD(1E)a&$F2pomtauF*@T&Q5JhOw)zf1bjO z3g;B1o?W#*{|pfdrI}VZawPqM8?+cB=(rOR5AM-YB}KuLxJNPYi+g%Pw)qPiy$co< zdq@8*EScThdV1riFAB`g+3_7?rPN06blW6(h3pCQi+K2lzW~g<2e{G0aPUh z3sQ2;;PD6QbUgH3=?er_6>%jJ5;6!eS)yc*A8@+is?1qv$#4QfT(h{S4-Ny4QZf@^ zZ+N8ubcn!goihsAo^zHy@}J*0fAcYfLt|365Yc4v*$Ycw+Bg=%D<6YEj5UhS*L~&O zYVGvyo3+y(z`FhBo84RmaD3VMH~#aH*#d66(P8CC4+c=in^W7nN?TjwtHmu_BwZ~D zau~)dYeJ+`;#&ccry$G_Zu6YdE+wpY7@H`3L=?U{%Ry4{KE1fy4^jpv91W9|t1kN! zmrr{nrhv4N@rAKU<2&EI@t7@{|zCxN{OOolx-G9@M7a>A98p zN_YI}YCdBvlwaQ6{7Ge|g|+nb@=>;NdBWoHifaX*IKBMz(&hjQ+|4`Ibq6Zh_p$kI zPEJ_+ctI||-*eL;grfBb_eZZ>0~qLu>RE)FC8Za3~TQaFs^nWn$nG7K{P=^lJ4TB##uU(rR`Zg+>)b7 z%_tj1hE_ddp;Ic@WOyJlR~s9~E0|$$erL%JYoTRN8RpD|Q|`O$L31id_Cv|G0zr@t zn$YA}pmV^SXiWNnZDE;SdoNdaSu00gKXhqgQ4?0+-w?n1j-i0 zhz`=ka40c+_XTAXiz6)=R60dQOofAx;wDZqpe>a}Eox$-IpIA7d9jiees8;e`UcE;w;g#6Ep$0d};#gZRIYY0bvOd zChXW{)fxoSEYc;UjL!?f;TrfYd>&9{rXN_j13+=Y3MK17ek86HW9eMwU^FMuH); z8^BZ5`^E!5J->O=t$~}U;Br+b@Rcs_xv`cb+%je4x}Vgf&>$* zB$b^|_`q8~FxNZ~DVj3*{-`caq!)yyLBaXWPbCg!C?q+!f>JFQz_?ZS<1<0YPuA}A z674Ow8tg42NrEv6*$pfKzDuM3Dh;3!MJ&@>VrRswP@B?>9dx^;CU6kYV{se$kOBTH6;IR3vQc$F;PYhkLO~7Vu>>~@Qy0y|0>+%6=xFz(QzDSc=k7qWdC6Y=AOVPo7^f8G$eq8RLb71|IgNcXrSzumVUFC~Ogym-bE?)ZvZ5yaj0YAJ7!2i?2w7ELvhr1O&E zMWMk#YN#jrDlEXzPd&6*7B|wlpiY*Vxn%VHL8<&aO+d=bK|5Ti_&ORCckW{STl_WZQRyFH7@k5krU0};!0 zaPjLiVKps+hc$48RCbeUmO!P=1J&*0rU~E!Lq$TZnTxTiw$?P#l#2zT^T?3Xc@AIOzk~5;F*+>(CPJ4LAFULjYHW$1#CzqlAVzq9lX| zwvf;$kFJ?FspxP)HRk5`svfm@l-^lG!}hjsAqz@g7dPk5YaeYcz46z}JE1Nak9XFW zzx>wApL_Ll{l}}Xe&ppxe!P5fhr38j+NbXHe8}o<^2zSfgP4_Jz3bzn`HtJmhf#DW z6ACrOpcQh`eS%n9MSx%hd@5`eRMS>A2}pu&5)4TVviNn zML6~eGc|=LnEH(BppYEjP<`>D57;^?cc=slUz(EqkDk?I6e|V`DcW;zs33O`1sq@Q zG)h8Bl}q9!t3H#FipvLnguxcFy~}L<$d3+P+FZowbW0Asetlfnx_5fO;*4YG#PT!W z`^c-G`$&9z?$wXHbz*t6!~Pa!i|1DF1!{3ll3Hu>-St^5)WYgEm-3KsUVr@Bn?F;v z6v~?2;YJ{PkZUbRo!98^q+ql_wrdW04O$>Q-+p9K4Qb)PA7#kNMf;cy9F0XJ?qbwL zvK9oNc?dz@XsFNzT%RV;b|Lc(Ut2}~)mUj9`XCWqqZ3gzTTB`C0?j;*P%95r81a_6 z7gnRF7@z37mhYhBsupCX|9t8uUq&fnZySZw|!>*Js z1o-d*{}ov+H6g{>ijr+*f)LP^5B8!fBJ1MF5jKdredHwb4<+4Ro!~rLIQ0DTPRuxt zt*?J?W_k2WQ)HVj}4fScsGGXUr zdA@ARxh%R%MkGr{N{a4w_%YY3?C<41GRUbUzu40CaCl7mJv6{?G|J zLFr5zD(ng!VMs!8D3Bs9RAsV-T;<7m*M)L*?fbPsG@BiD6TYKvx7qdP`Ahe&o(rk& zx%E>ozxt8+AFqCIvO;2Mc-QOe8~0zjw7H=3ec#sA?h8N9K<0YRrYsXn@{4rqB{LZ% zrjaooQDC7EPjO81VcDV*O)$5|@=8ub z#2(sU3?bLBlDjg#zai9v3^j;YcE;TD!aF}T_&F~f*&$L@FToHKs#vPk1UdslR8hzV ze2*pnis6q@iilF0<_2T7dWU4irXIQe`r4;wXAIq<&Z$MUC>OT=8(50d|Lj~`|8TeU z(XWsbJ26i5J?G5X|F$(PL%KZ$CEWokq;Br4=F{_Z?%P9DgPO56vI95=g-B4+C`mrLQ#fL@!X30~b9ywhy>KAL#BasEgvQEHpl;H5_` zgr6z?+xPfy&5G{^*GgFhVW~`Qrt+X48W@X zXHifu98?A-rMNl1|3TiHnHFxxaRKl6)$3~?owa+gJyAtSt)H6Jy{x#=yOB_#m2=sZ zOS0&e_7x#%4nRwYMaY;qFFm#wCkUBib3qTJ$W^mi4+eRO0fjjXDx^K6PwC=Xhb|&ZgQ_IH!?sIJU zXDFdl!WxG^ zL~GU+HWlgTAnxd5`mCv?Nu1M&6RIbx`90YwaU_gkDCA@T%9uh!PS#V)hVfbaBbgV`u6mYb!b=3Vz*DVzMypDrw?p=Jwf3vp7_Y;_F5nx zdG+P>6UnFUy5FyFJn+-KB`4j2Ci!mHSvNwCVNR6lnU>~F(jd~7 zR2-+IW7T3=B}=13qt;;Szph0w^mkH1n{q{H>Lg{6sPR#Wn(&$QiuRZ z-^dZ+;5TgVS*Blk`1nxB(Ji1{pScn5S}<>3TKdxJJ2&EdwX^)lo*T$?g{&=mC+o&I zr0-LA;XaWe2RmgASJ8z@h29rv*RStpw7sjEfcpD4A?G}|lt{J7iJqX~YHj%o-^9%7 zRWPqo@Qo(ndKLVNf;UaYQz@lQI8?IeDExw%3v6p~(xAJH5MImsIYT@t5b*j(l1z|t zuPVtx&b1qj>t!jSM2Ckg73)Fu^=4UL@nGNdm^Kq036((A+9D*RC?f5OA07?#N^!rw z0-&LcGjVU>KF*M@9@+TB*5=JzbqlaeChOz;))SKgoj&x@_~NmBHjv37>*b3lD8>p+ z{F$>)Oha|L?w0C|UB`%!hhT2p-%Q0#M#jy{5Py5{Ld$dt1YIG`xSQ=qQk&^#ot7aN>xLV|-6t z2O`u{!Um20t_CxvFH>Gyxi+^1Y2N)eub)13Xfb2RO~B- z%!(u(ImS2_RehRrU$GeyHx1gJYXp`*Zu~30m(CR*m5ek z&AH^7GSt+7gmN#RsU_RGR@9D1jrD{#iPLw^0|%GNkYeUCVLzV$u12Mw7!mKrAWo=N z9Ij=kcXeu*`W;PY{fKtM8L4()Euhw(Q7r+e;?z5hWiT;B=6W#ZSRc88-@xJ3lxe75 z{)yv|15xa^Bc@hsc$78e8HNt#{RLFLSHF7v?8p0~%kAN%H+SXDC$}EoSU;AB;wScM z@upU9QY~_A9b4aceCx@*#`ya(?7H1fhMVUveTW(Q{QcwVxq<=3Z7UN_ew~6LzG5Gjv?i_p63Lu5h;mR zY`{*?3|Wh$!^2_7P?UA`%GJL+d2#jGtta;#9CV8>ka+0Uqjh~y#y-CIp= zLOHS@}pa`D%=CaH0&1faNm<*MBm;8g>`QZACKJf5-FJ>5=^k&w$Eaz^^!DN zeA6|N(%anDM%P8Wmip+S$?im_7R=~y__0PpTBtHeAfzJo=!6J1VWq+`2sBsqI9KO% z0uHcva<#_ZRd4O0nqE8g2nh5KSj3rzvqlhyVjZhx?MYK-GYm^n>lt(eYQug&!E|uK`3S5SPJPZXl^E&?4pn&@5XAK5 z!rCWj!W{s$fd;xk5DP;-9as!F!TJ8>eo)O8C>^RbYTsg3TfCszlF<5={f(icaDbe}GkjEUJWr zN6sfj2h&<45GT7fdLLeU{@n73L-SWicQbW~e`fQ(t*6)P03@kK7AZk$5pp9_7r}UV zW_kVTt@}22cXV_IOtXy+Z}!>7Sqr4SYf~FxO_%k7f#fzkZcO!Ut|s#;LsH65$hQSC zREy`%3eQH~W)%{JSmjpbE9g#Uh{3h0(s1RGM#O;6&1%ozWg-?60-m}MoWoo-fVO&g zb(Q^s59CS}C6UO>V>~t5#7huO1Vu{R@+~D|hm8!@4sjit^V_vmkwJ_WIdb)O9rKb`&6%Vg`%{6e^oStw#x- zHLMEw#1@^)FsNVfip8hR(bA>!R!z4yg^;^*# zSyQ`MU&N6_F#1r)k9}R!GFD>!b6nm=LL~PK#Ezhz(DLrHd2}fVOw~|`l`MCU7*u>u zGtMM^qRah9b7P&;QnGq?n}@u4<;N$+@6;K?0Ik+7w2kZ{P<(Q_f1Dd9(r*8;x6EWH zH^~llmvZ%c$djA>=%t{PW%|m*^_qciR zEIj>r9$ATikbDWez0Ee(^W*U^&%VEPezTi(nBP=FVc*|bVULp`4J1?iB55RmvO1(VCF<(8^q9PbiDE1Jq7 z6|ewMmqu)fM5|O?X$rrghqxBpMh+ifDvVZ$m^uW1#N9&SBlbzUWB78NhKV{G=kLWd zJ&%nwus-dTzn_MOV4D*CtKpKGfUxB<0 z11fb2&}0jlub_DNgm-xwtO7Ybq7<;&OmP`*W4W&>&K#k2#?^RMfy5&b-0Vf zw|Qp0f3Ew7OLYtFA6s`EU%5U<`g|3^T-UDM6>22OX3&uRY0+U&pt>cAZYWTmi_fw> zUoUq*tB71d!De($vD7N|PHI)XgrCStTcywmUJL^8D3A+5A;t;`?dp2+nUWP-O^l%j zMVt@)l4j`%!hCK3dZnKbo)M36t4d~{@*yLIoqz~zj5vpyaAmYu0u#n|Hqc#!>7f!7 z7~p}sfNkx$d7P{$Nx!<*W2uh$3h8cL{Jy!g^u#Iz?g^YY{lE3&i_Aeja_r(Lk__8n z$n=!8zWT&c!*S>i>LbkSV`J^%>+{S}UZj6;`9-F-_BX~lzzu$&2dYX$gAomdQWHmC zVXxQ{EDf4N4I-k^8w6vwqA+H3r=|!h@0*e7zewf<5H?0Ghu8*@1{pHoYa)B=&W?^V0 z!=|e8Fh<={>FS6*w$P~>$5$nK_?QMLL;cj9fQGnS2JN|DutN}3H_zlH$@Nq}MRulfy_IQ5B4Q~zffj zHuvZ|?2c=_d*`-So<5kMb4fAQQX z*w&$aM+DV)=gjH@ckWrLFSKGdFD?Dm>hkfwn_VE=+pR}F3jnh3c1)b!hkvGP6Fh&j}y2lXBuUPc?v7;qLuav+J2_&~xe9%YHdTeCg z#Y&O5T-4$)&}a?_(R2M0Vfbz&=Xx%Kg#i*|2&=ag^foBBm&|NY3dBSs(E#FHf#EFv z3B&Z>m7WF^DRugVBDwyncF#|reE#9%r)m*=?C9BhFD-5Eg;g6e<7O7f=B2I2*Ei0! zh*9=>dqLHSN2aW}mp}a8TaT=rJpSWno;mi+kAHmpPe_7Youjh%j`i5t0{7 zM^0=tSAP9p%VwL4GF?A<@V63tx$& z3apO?0v98kp!lda*R(|RqQl)p&~J{g!^Uk^>-`!fssRiW3=csh^C~fQnhCy+07YeI zFU|b_>zq>-u7bZiGL;7Qm*BZ~RzG#m+(Kj_?bGB$f9L&ud5-FV@doL*G$};tN6uaA zf92=79?~2o1dqN_CP%`r+_`oBrUIyHtL>got^R6!;@pqEnj5^^In#E!f2aoxAn2m^ z$zqeQttwH3KsmzS`z#TMEM&zQeLcLZR&-UBs5{rq^EWHmK#?}m=iR^uKaH5Cn!MJ! z8j}`>5=t~wfmMhbs9#FzW^MB(fE$UYgF;atf=Pe30%`GduQ5eI62@B^!Rw_h-nJE` zKEx3|^!kO*m#8a6Q^Q%4qC_7dwhK+;>R;7rPeRi~j>lxP+V=2Kvt3*;`yF!wR z;>w#p`tb?gr;lwce|Kq)Kcriv@4K}0iS>=~PP*u$49SH^?n{juYZS9RGqQn=UVJBv z<=@#@|3rSW-2wKJ&84O9E^nM0kDmYXn{TG^U@}Wh_mAi(lBlbxuPQ)~+aOCSoC&GL zS+7ATVtou@=HEpzn&%+0XhK0bi&mVFP56oUoI`4l)4cRIYSjC(pbi%b!)a?RO9_ja zP>Lw-0_=}i(P)6qgZ$v zwQ;T*Mrk|9wFP5yxNmUTq`hN|)V6U(W*u8!{nDY>M7jmc>0R?=C*SDQ@rRQ$>S}8t z^n1UQ#yF}e;~PLx&D?4<>5(DghiFsFPSt9MP|E@nRQ07{{aO;nD+75frDTM!Ni+q> z*bt_e{s+=F>>BJw*R|9S3PWqft+FsjAqlu7S<@piI-<`^f)N*l6SR3FFN@>&!g8#h zyh_>}HAb@-cg8f;)dFy+Aq62Tg-YbErq+PU;d%3r?K(>zMXPC2i2U{AOG^jsmp-|5 z>ATObK6GrbLq_Z+l6cm5jF zKKp;;SkkZKbL*@3-?O!}i*s=P$?MYAonKm=Dk-NCC6gL`&VA$R zl@Bf-X67BHT7IsW&NNERgQ=ZLDGaWF9gYLS@KY7h;4oB_Rm`=`xR$(+Rmb1PXmS%j z*$8SGsj(s6^is&5#57KP2oI6!PzsQWkm_4}lkBT4$Emv9-HBXEH;Vh)L0FW45=)7E zD}m+03{i}ZO~nkee=cNP_4|`}(2my&K*d?=SinY!t)LcBE?fKKkFRtURa4-!!q9FJNru&TDb-x=`zpB(0+DL*IB?XEoLZDh4A2ufsN~34({yljmSIIjRCt?PZtEKH%w@@WH&()ag#%{N z^5Z;dC8u`KR7sSsSrUW+B2l-Fbb8XD3bEUk8(om3Vg8e1L8H-*98hh-P9s29UtC$4 zvxB_(=9iz(0cg`6>iXGF-SNiOE-8kC!`0H(8^8D0tEZ2RcXC5EuK9?=Nxi7t;2IB_ z!HvwF3o1|MN9hnZZD;-U7pG5lb6>A*|77p@R9`C9#r*v7ufCn;9tZ}x{Q0|r%*;?s z>#q^RxG8g`@RkSg3fNeSxLQb}EWrj5#Trg3i(z{LLwnOlv>ld9mb8a0iRvlV7wUK% zxJ{Kc3x&db*8R8ZyI6=KC?UONi%L@3El3a8BD6(36c~WL@Ct=UG7@{TsHU8F(QI9& zTADho;8oKYpX1!AcLAZxOk?b0IkLz#n(sg6g-BMvU+s&KeDt5rs+U*);@Lw>OXv4K z)Nfu`S~~RXmC!Sdyx|lo0I;sS(&G5hNM8YY+WnA(2CK%2t5zZIG80e2sx1Z~b4a5N z9(qpncU`)clxRPDY)+{@DMALy!kPiK`q2AN|8#4*Ms_*RpI_Sg>C^8YofaRXW^xf@ zkZ4SW^l+3e^KqkS&lUPO4qT&*aA=Es-(n_D_9&igE<{orYw~2zKmGng^~rMKO-qoW zPVIx0!>_5NIT!0pkDHVf1_%ihu(ZW@4HJcB8=fEsx)q>&5F1|4F|b`n8x^z?Ps8vG znf@qV190NHcYHbep0GTkTTri3i;-awvD_z9zj+G@D%z`gX##|z(7;}(b3X~Rq#?$g zr^i~jfO0Qs@dWqH=?$*^bO*j8>T!An6{!{-Fo)IFfIx>JY%uu69(h%+50y%lNbeRy zx=^f7pT+wtGfU*FM@A=d>5Qvza@8$=<=LlyxHP%$EC`zQM(o@|cA>7VQmpMLiK<>^Uq zoVK_VlM-aGJlX))M7NPQ2;kHL)h`Af4O>k?phwv6B3LmI6Bc z@CL6JlHhtaf&^SBB{kv&5@=ugNf2{8e7G9HIAJUd2LYlE_`|V~5zf~sijgGuY16l1 zP&dn=E$qO*_t?tovqi`_HIkwv9v@v^UH{4xkKeO-X>y4zU8)~Tliy$J?tJ`-uS{0Z z(Q(_fW%bN~UOq&P$4Q1VoEqk}G;S6bk6h!VSZp5NKiQ4`$=>Pyb{$j*i<3 ze{^a_sd#PW@Oy!>O@t>G8v#4YvA719IVBUQHt)7%6|bRz+3yaLMqj+3F_I4gZ$UI# zgFNLlg4B{+kH8io^z}kU1__x)-n)Ycy$95?dCl^vJz=mQJ||@*N6UrP(t{Lv#xgEA zh0az};Gq@fdwA|Aix3`g0W8Y>Z*%!eOm^!%t?$iAM*FI3{2BkH@iP^B|5|J!+i(>o zXHq+xIJ&&CarA5V{?&Is`}93`9y)aB&O7gU^t;dA`?ZHQHkOYj4EwMi$LXoLW3%&n zW7N8{i}Pwc9c){MxMuv zQVCLv^vi$#KJsBh&?ixqMpK3kIb_w8bmwH?D~5_SVk)R3QQ5|&3$g;vLfQtKkqD=8 z>&8*7Flr%rld`(pfisRMo;HkCf|(dox$U(_Aij=8a`x@OHQ;HxcIjHc)s5xTgP{j!g5!3|(JYw| zALe;^>^$2xPg(TMphK<*i9x+c4M-$oq1;ZWY6%)Ch0xDd^!b5C#-ibUpxGs z)x3%%ur^Wp1%B!CDH0cipE`lF{$uTMTspFVxGl~ysyV=&#wBa1u-kH%IUz4F9;9A$nQ z31->jc-+WN#)I;uKH1a$WXIz{Ei~pla#Di)Wi<6JUq1XInYA3y@ivFd)OyhX>uGeP zS7T4=uOkrC9jSGZxC9nd6o=b7H&Z=mj1{gsXH84urwhXQ%mwG7kmCCL9)rm0ttt#Z zEPeqaP*g%VQ|bbAUvTYW`4iGOYKdcjQ99M;Eu`nB22;3Vy>R5OBFXp5dpOIQ&>j0% z(r9IblhnD8x`sZ{EzM_Ap^q+9U?arBd!rVc}PcS5lrKaa&YB<3XL{llO4 zj@EW9LXr|HdbH!_@=aw$kgG<`A{vdGE1oBx8-x8O$w*rLFO`m548xrwt(f?${0!pX z!4tmGavJ@6opPPY2P-R|Km2}4!YI`UoZ;a%vO9zdpE^=!ih$6dqa0X>1?;bcB&2>R z@9R;l3V<9021@v~4Og_4lHFPv4XV6K>xoCgV^z{DLL$+FJfK30Nu|3txX@IeTbh_~ zT^KIo5}Hkm^iL%`vcDrR_Z?^1>VOr4R@#Ed(x^m95|X60UW^$Eb@!oUo{cm*P$0g?s8A6wZUurXHfwOi zceZp1UpR8oxk51^SIsA+D0_tyaHRzXZ8B}qVL`St4q@oERKi3HDZoNVNlKeetP8U? zgUuoz#eFf%#!inat%y2h=2^%hrk{M`xyPh#MT?Mgv@@Z(4qs{XH zsJXmbt!^5m#{wD8{`;dmhR-tLQ7o%SOGtk`ZYTJob`?$j@A>0joh**)hwpt4Q-zQ# z#2R7$Gw9TaK`tqzLQCTb&G~w0tK`4N;Ryw+n>!?ofF_p0K%z@lup^;fG65aST=m$W z0u^%vqzTB3WYS?MnyyceRCYgz+q6N(yz;6tjgnP6isWQ;|%t^wA=3KA(hm zuSyXRcmbI%Jb2m#N;GOsyu^YlMYBFZNWR4CWtank*X`m7R1s)FMZCa4Ksw1iO6ybn}MFVQX~+OYLS@iw=G zSPa@Kl5;t`$D9VJ-$t`WIWzmZ?Ej`iGA2>|_UuI^u$CD)N&aMQFtGiOquz8uzI5VD zOT%qu4QY7YD7Mm|Zq%yM^PRi7w~z9LJD#zEjE7E=G0zX zI`hm+C3v~e$0ql=7;nQVfWs%p?B;_M&33w>sgKzNbm^EkXo(aI?_pv%;(P<)o{xiw z#r|VaDAbdUupTz%%>)?@S)(OffF*?I)!I$BAxr+=FeSt>Dq@w9uR-rU0(C`lLn^>^ zQhOVKx(!sB5NWZAQ4Px`o-)NFn z3e2tZF4sn2P$>^Qn69rl<;={*bBC$DPG_dxNx?q2)sGw2$vAITIomeX+~e_Zm1eA5 zp26fM*J$Ptm@=!z4}PTpk)-Zp4GEMnx12l~4nM*#6m4Bs#nwJ)wXKT9WEkx*C?6yZ zNfHqure3N1b(^+viPo6hd2LG!djhHJSV+0p(RkKiz-7=;0s2aDxWKW~fcCJ@VNs2T4LP>- z(9&zf(<$#v8ZmC9C<&{m+~F!ItB&~*QR__qxtETfNmtuwAf;`^xXmyjI#=V-U>cJ4 zm+`=V+ms&c8jr`R36;-h3Gdzv?ep5rO|51QGHw?!zQM1Ky~Of6WuN)ISX>)ejeM3G zQ>+OHuVU#!>QizPN*vA%@Nu(bYn{T39n%yX?%^y5V8nn1?Aj zpCKJ;>c2IWyH{<93%|5s9agzL)FKvtTg{2?#*hmAsV-M{tZP8$&BBjD-!BFyoNj|! z4UfJPO*I`-G1aZ@50^h1qIGMYLRAVGs6>kBbx0<$-6`_)M1_gclkf2Hqq*YUNi*zm zo&<{nWj$$*uN5G&M)0_*x7qdX14y-EpdLxGq&NGrVGA-$_ zz+j-%Di*#Xz<3OS>`pWF2_q=K_&RXhxCa_oCZyi>gF!cnHmEkUry~`EbUSI7*}bw6hJm z%=sVB!^CmkMSk`3my&lj4hBvl1KQK@N}GCp%s>oDm=ZxsPHhTTZ-gasA?%}u8@199 z$FxeYtm+7|pwg(UIy$b1YV3Vb=8*ud=q_;9mIMhk&H=O-)t1bHBGy+hIGo4#YYZV4yTn!*Yxq@s+S&MQ^aL>cp_2xFrS7e!0S5fh3OpvXut)r=g{c*9y( zC)<0LQ9SYt;;A;n|z0F9c>jPS>8Ju@D9h#Od{7UZQp7UWp+=Y9|s#Jd}4M`!Qqb;7T(NS60a%5uXC;{No3Fd;8%}WibD&HNS4L8 z5}z{2$O&5S1&7=f1ca@$)(zk=18EPnlQ&3Wf2*!y=sQ&qR1!6*duO24KjBzFRXFf z(`|WLqn0DrOhNLLaIo2>&E=h6y@X5I1#I38MYtFQMvNG!H%lqn95y&DW}u%%av1^S zMgyo7W|p&z4_Rc%z9jIVnP?!z(eIUxkc#GrpR#laa^eDzsTMw947HgkkYHW@#nT<6 zP6;iK8&aoLyki!_?s})KK6D9Ev;^vcqZuEimEzkhTm*n6TNx9^wq zr%oX{zcNsfCy51&dqrKshAyykzTEyPu7Lw6TVCtWShLW!Mw2`6){aI)?Qf&09XB|V z=FrvB;6_8ie53Fkm<>mncs)aJY-j(Ywr?Cgwgsd^leZKRe8*;m$oG}Z^{@+%fvz>kLbowi{PA-)VQRDMZZ^@toArSv2aMOHP`7_ z#*1RJu3bYvn&IYUNhjiy^pGUfF=9!H>YCuC05bNvIEJlyk@l^l0}aTi!K}A|HseGn z$@JYOreK^XiQ_yosp9v+BlAsvM)Wwdc-m(&Xqk zQ&@m!c!3$eon>Ez|0vZDl6~ct<}l_BGDrvGEE=8ak_>tZ3WXviOErpc&Xr<;NTx|J zf5e(We6QojDb|lrad71;Wt{$)H6fCPJqu-rx(T9-O0r%ncOCuZpgPESk<1}Uy7C6~ zuq&Ls)eyE5^?}lGJQRO5=E0qDk~|IvHhJQb3i*u3#!@=-^_QGXo0ZfN%u00$!&Oyh zaAOv?MP*)vQ-5-y>SuI-f`tDra0)rKEZ)yhqgsMi=OSJ#bhNGmskZVG78REVON`ki zB}(O7&Jc;YqY&5xu%}I^F^h{x!XlrE@d$v!znH1&QqQZkLF)`9rs(<|pE*%VlfI>G z$!}yL)DnZoLJX-i*q@N0L0=@`EXJKeF%A*8ZdR2Eha(Tt`_6aNR0Wp8xP)(#=pNjbpirox!a)fp&prO z3{F*TfNLBP!|JKDBPb`oA)|oCtC~yLoa%M=8WLOI-I}3D%rM>VTKGmn3nkbadHy15 zI%I(i8m+|<+#>F8t#tR|7_d4-&{Q-Bl-v6iU`IP6wW73YhzN6U-4VzgL!pOCZYbx8 z>*LYP3K_^vMlJL(8_7p4)u+)7HnaCpyX7?YlTpqSX`@2gCD_=$#)ANb=+Hg*4Fxfm z>P<^oerQ=rVOLS>8)2k@3v(!t7-^Bu5n;q7C~p3Go96RV6(72`uHMnzbMKcz;$m zMrZy4ICeN!OHw;o7DQ;8GKcSsr<){ss`KMEuOkJ}D1hj2OnXPnB;Pa5w_o$Ga7GNsZF&#Zm#|T`()H2;9CCAXsD=fWL7QEq~&dmW^xtUT`kcj z9{hN+k47QFTo<=6lw{qEC?m~!ztZGNc`J+qJRlY{m6j1rV2LwsA)N5^0O7_VxW$X> z_y}(Xhn8_i{pTGciO@nZ&5*iPkogAF;4+k|kZD4U2{nsL)#VIU-&Gp!7it zSzuZhZ!_2M=#X)RlAh^U8j=B1p8rS|<8Hzn#;Vz=10x|q$aw6Hd~T(x!CdJD%7q`v ztg0JbC}e$^-qglzK*wk>iO92xQET8EwMgFa=+wsQ^kZZFMALdoT9MqCJ+WRNzPfy( z5pRv!9Gy{XhtFG3+d^piUeiCm^WaO~1QAi*-K*KuNFEf3=)9}KJ2b}!yyvKuxS#rA z8;1~wen6sCnqZxD(^T3#3kK@U4#9LEFd|8!K~bi(@mup)FNjo3W?weq3i1$BEIF6U z|FHB$&AtnKGl|DQd*#O&ABuQ^A`~Jp{GqOz1dB9y*F&!C`M4a)JJy#aA@5|u?4AVg z*2HJQlIahEG5Dzg)WxxTZr+z_Oi*r#ZrNdGqazy2180U3*twGTws|^WISe7AJ0~{I z-Z=8lfA(Ad{P5b3H_k4P&y5DhpIp=IjF!(XA3yTH|J%vquNRjIL<>L`)Ly|jv19}>zG+dRvyfCJWw3+hW&>t6 z)OLaDuE{x-VjiM(s0m=56qIi5Rp^fq>Z2%xl$k;Bvm_TIv#SSP0`4s@9X->)7RG~I z!1io4njM6+R`BuY=gVhLer&Qj?yet`tN!jEeEE~>KX0{)SWZ8G{_Kx`aQ7FQhktDC z?8eTy(Rel^WYj*T8H8QqNzb~NUwujw7a&x6G20*;t7JV#)A+Sigll35;04u2jv|)A zj2gukvE(HWa^tQ=j9r}GI013jf+l@R%q!DvlL|)T37e@(sHp_c+1Krq&Fd>poL8T- zceFSu5j`^sY~rAT5JdFP*b`EAEok9`B84Hf!F312)p4rQq^kO$N6j>&QVe&J5^9K& zdU|RN-Gw`DWZ{}dbToR}lV9&YI&QMdM*|1PXwW(x{6&jY9G^RJ_HTdioiE&-KPG?t z==#|c=f;iCeflLkI~yB+csExE9{!z=9slI1pSR$vCR1UETgi}y)`wE}sT-3Lowo}s z3DtoUEMt-d8m1Ty!g*WI){;VARp^>%q)lZQ6_ypYmc$jpc8yoQAo&2^13?I|)sCZ1 zp~hN8iph%`7n(?+yA@DjD@1KIk}i?DgMil-++n}fdp;nEBo5xKcW)ubMS~h#4}?|W z9~yQ6hl_mQ!t`?ND$yWAs$i{rFxM;r`?6w5E)Tf?P~jmNbK^ovu8Jf$o)|?O0}t=| zn;=Elu9|CbNm<-B79QQg?_bpKPu*BaaEnokWNav=SZNNWKq z9E(6*y(-W$_Nq5)QqxRf?uAhb_SV#xHAD}_xsQ4;i)=ED94y#WskLM;t41sEh{)L- zmP73r)Gn5B^iAxJuRx)H+$~(u)Jx54ak>rm$wX}AuJLKmZqOdmMYSW^cx!DenZZc2j&_S1jr=NqdZ z9c&-|@rCdF;P@w}wM87(c21pL{^z^rK6qrT`I=%e5qDcD6~FGzu@0n|bbI z5l*b5Y3fx0oWf%qE?8V@64Xz(38GZ>7P1%VehC9=t-M_7ZowcPVQJwPaZdfPI&T$k zEc-QXEqc*~_Yz%k{zU$Qv4iF*ZI%zEE_;DC($bug{w@o!z6*mClsl=z_Y&S8oKabq z)Lzy%j<)XA9HlmD8SLXMg&Hi7Np*g1^>62G2);z_{^;?Ivm2*Q)Q|Ozv+IBN2fIFc z^6<4!K7VdBXrhe=o5YRrxZ(ZGaI@=kd+;tY#G1jh#aP3s9hiul5++D`i2;gZZktuK zX(A>tnjjvI(MZJ^1X~i|EkXu3DGuKd?XOmGEb2Rg$B#tB8>4CPE#Q$bBG%YDQ-zSK zggML#z;O|w;jcrKG$8@TQNGTzaS{{S_Bh51E~`*|S%gtqr3shvqZstK+|cR|PTh+{ z@*!&#=HhBJw~+`@MP9-#dD2O0rf}3dqctp+QeHcEroRSn%yM$uk#;k}9*+j--O287 z_V`b}aQChslda`re|Yl5^2X$2dHFxBee@5$u*ah(d(IzD3X##wTzy!OQ=hmS-+DCu z)$g*H$e~HW-?vm3&;gi^T7g3^!Fv;_C97!|rg>8jC8Xq|Rgerh4NrNW*3fJbRH*b} zxXz19ojE+J+K66ps`ojVlmWjQkI$XM!}4)Mj29ubm-vGXp}jiEQ00h(?CSfHF>*KpMnEATlDETPqDHp$<{Yn`e|Gc3G6SdRSVKS#CTe zx#me}b3pIYQe1*3G@F@4_BsP+W0#STdn6%u(pkA#7aJjZtq}SLbsIAD3T;r={VPv; z)pDDBy8LG1+pvTQ(6T**A5y|r7XC?#8$R);MjS9?Ri&AGs5W{mKlFx;1+|7oL4;u3f-i0j~Vf<)=Y#TN>AW|?q@ z&W#(y>8Od;xiLVd=J06F3LpG<;;FfMC}niiL$UGNkBH46&oaJJEKL=p=#FU@~y_MBxzd6>75}QO(WRKqklpN+qRht&t}udOcqGr zO%`0Tb)4a0&?XV(==l$xRjUIwa6kCBrgmE3joo#9oL=M3p?JcCg8+xgD(pZw?B zzdj}_cX3ke2-`!VQ1>_lQ% z9Rg~X#G`mN06bNr!I(OVfzK9p8{u4v*CnPdM1m?0WkmIUE5IMv4jW3)D0kX=rTc>)kDgzgOVr^5CGiSXGv!jK zdM3@GgmqOZyi0&X(adkajspCgQ{qvi8xT>RX$WGO(oAR^1ru+F+oy3lToQB(G*k5XH$1yZ2pZemS1uN)7E(8R0W%{+?L> zv){=2nAR*mT0Ivd$yR;8lcts9nSc^sF=xL1Qij^r_KYDf%+*+f-XL{#{z#+3Dzrl4 z5awVmlaUAzJC1NrF)8s>WP$pkZ6^}YZUmpkZ`_t$KFB!0X^ZLVO|p$o95ZntP*k+t z_A94KO)6hUktzUVRGJQy#xHD5qK<@CSC}7XmMGMiO-3Uj@`E#(QN6{X&}$_ptp@m1 z4ct7=xT3^Q9gJvc3FMxfN`};j|2PmDXhVPe=#AF4abwh2ahns(kZ>{{ZT#prv_7WY z-s8*Tp&xNPa6~mQl^mHfp7KUP{WkVe6(>+{%mho0nx^Edv65&x4GII49ZR7}-XYX1 z40Qn&axX*NsM#)}4f!wnTZu3Yi)hhIOC!q)9oEQ$C7r?&*gQOU;ZrF-CQmdzi#?-(7r3~{wNk?VaL*ztAUT(R_RN_k1~7X;+W6XW8)s9$;?#|g{p8o* z{AT^H|B63+GyQJzoBS8eZ-1RX>z|qY-%o!16(5A@q zP2HjlspMxP&9LHPk)e(#Kt|knsIw-kE#r#n#gw9p6i0^IbP;0@r)Gbcr1^kA44I>* zLRRN0TBPUN;9OT#Q`Hu35Ilxyr1z3rAv;QGDz8)%F$IP&a95VL8vk>Bv0Ppyk@hQ! z`60RkLQ}0MOy34MixiJm@rW!5!Kj4(#vLBs6^r>`j&?*cd%am^Jf8zkck;%Rg_k6Pwdr zPIw=W25h^Y=zdq&+dKx%Ik*~$NvHzJvPyv1#ecrGKJLDB;ywcyA=3Ym>qLJ6gO zi3ZG6Qn(urrQYxe`-!n>Ak#X1l!HG;O|<#I>@;q(G)JSaZ~XXUfAAYvAHV+f$&H;E z#!!y^Xxj%f4#R1M?)-3zvKB0>)V1BpP zlx~giHz5si=}5#zK`RtBt#N~b7o?$Bi>JPcJ91I_!k`;#t5@^F|A$6uX=yqMn?(>h zDLJZvOlX22BA}UQ5ukx%YfnQ%OA>@I2pjpuNNH3^FGG+J>A$Lxk%QwJi@Z47Y0f52 zaJgKgPyhI{bHB{=knup(8|CmI^TWU7+{TyxuiL*ue*Mk0)v3U7+>#vIUUU}Z-xzr3 z&wM)~vyBy{3t~flu>_y59LL8HlsCE>Pw#Yn(tg19MhBh%e#j>`w zWYAE|O-ic7Db|BGF31v0SOefnsWGm)GV!x_e{`uCg%UV8NouEhCq>_Y;9e~W*;5r^ zK1+b$xAv~w@M6IS7+m%ezASfJcE(kWpT)2q?M;%`YOvRHaGGl1U+#3i?nd@eP#z9wT zxXImneed(SP4JompQg*V`qZk}PG+eLd(oDfJl#9T=fV|Bg?%*+)uOQD4CUO-OkwuljP|;Ac z-b`>F%#on#5!02PJI)^TKmP8udyWk5dAfzDS{s)ACw=n%}w^rOi z;6^J@9tzvPEM_NDL^0FMDg(yWq-zdwemP`UFLpLH7WZy>I;kLQ5ca_&zoqS zZLJB-)Q`zL0J(@8_Qo)VSgU&zroNHRDM27lvP{{c; zM};jvZ9X75sU{NNe&=_uU!T|X%hR#|S@LTa+1B;{{rbU!n~#3+?{qwV^U=>=zyE55 z&!10gV9CmhTab-2a_!qiJye+TIgyRjW>%1yII{sS37bCB7A-F|?MV?SVHP4xqRQ#f z1%lJ?zM501Coc>4AoD{ZFV#RHS*y!xaDZA0nKb1QOC}p$fQV2Svq_KcaQjb;R{-4Y zrRNX3m~>!OA+%&yd|Wpry*Jq}P2VbFRusZp+7=ytEUrPUV+K7xDcCA`3QY14rj7^~ zhM5|TH9~NRkO~^2$Tw&9$#>s5K;#y6?3!kN8*g>FL!P|<+duyMlv#iL=;eb4zdius z&&E7mazdwh%JGgn$>hg~{^~kI@wR}Frc6o+?ird&4F|jA#hWk@PZ460%>{ZbQ%kC< z2}WT43;fd65GWFsgJqXeDd*f+CUlW*iSh{fBo$qzY`>|wDgeIt6t>a5qX&1XNmco< zfl*gf7c*+TJO_ud2&20r`jCU?2R5}{1{F7yLExQTgTb#QG(T(KbF;Av&4L!~Y?S(z zXki!hiSu65&Jl%JB(x=!@~a09Jk@Fc@Q%Zz7WI`Mh!s?2u+LAP{rQLgE@jq7zj^!5 zpZu4FjdfZ)zK1cwAs2cV`hM_tlVKGeObG_8dG}jfUPP9+IyO)_(1BJK+MR-l%%vZC zRAM+g9haHra~)L%J>x<>`s+Zu4|8eb4}vBVD?fxAz?+Wpi@m_9-bd3+QA9Y*MJ2(9 zEiLXTRuLD8*aEBn1DgqnXgF$%EX~4sq7P|Yh}^|7?X8~XQDyipyY#tHLLwZsp5=UC zbsl z%h$)lFW-Os%69o?mO39dn*Jk}cl*Ile+3_S5vGKux>~MLv|B(p0>z-=msUt~Pe740 zTgGP^P(&vE=8lQdYH)hHd3Fj>Z)`4c<4rqKyKPkz2|zp6j7umTLkl}*EBX^BETkSZ z=A@T?W$2$9onqXhu#jJUEn2;rhD3E$;ZB(iN~F%kK&B?7S=8EEav%|3a*p@bmpx6j z>M?=BM-C9vw!);^d(T&?gbArGDp{}Txa2>+v*bOWkC7jzb=K-MtuA;zd2+o(e(}H5 zeSGVS2M<0uue58E8yj?YUFiGv@Ly&FqKpDMnTn=D*T=~|luFhqSr8RY`I=UGD@wz;P;?Rx_;Y#{LUIRbvk+s&x-_QjfkFk>!7f%b3H{Gy&?37y;z>58r?_?Cu$VtYQD|oh2F2w;*17 zEpfGL>hkpx`N7Q}|EG?~<#;^&@crxcu^QhG$>`@}fbL>>+&3V9)qU9hER{Nr5lp49 zroG>$QS{U7k5TaDUL%uQOFo>t4S|}HiHkWoEfspz%2m4?bMf`r1$GcIOAN^Vr+ESd%`TYwLwYo}6 zLut&!knjABST{lRx29i)Ol&%GzY@^+4NZn(ur5L=au@8TgS_nkv6?Rgf5G0-Y0taikP$s{~| zuyUoHw)CMeoGvJrl&D$y_AeTkj+82m0|q%01<&MOV##NeM0=ES{Bj0j@#&dpu$k&K zuRukcC48aQkU(LTe-D#lzD_EvJ53w)C1 zC+Wyjtz!V`;)~!{ufBg?(*iw7cCqU%(vPJ@cy+oQk?mU_{pe4)Mt=0sZytX5;L@C* z4gu3k4dts#&%<@k{OOuUIG_izSZ1($Nai17St<|9@C$AgCbTl;SYj)Ip}I_~ zg^Wfkr#ni#K(k(Qnb>Zo%@N6sNEniq@9OBi^2D1m9^?W{NP_sYpRp;O>DyJAsnl0@bW*OoFBaZ zgYW(Pk01T?_ZC{LTfzEr)(_XS+}QUp!P3UjXTr?Ne$f?p516@ z!=U)Ce7BY*RtL6W!xSl&go)t{GeAo!`XOUpGN^K>xxo|AUrmI)_sJ6F>vN7!D{s+t z%D9|mHe55jrb3z&U>k`)`)txt)dUJCOnd{AT7&td6t~ITo}{l_voCx!1%h7Jc8i`Q zB%2B1N1100{mk^l#~@`Pi9RiK(Z{;&&yFfyLV;& z{||m__4Ak=fMo2|YP?RgFVhLmJz6L+w$}m?@(bX>+y#g+MG{ebp~tGGCe5Z9IK@z1 zrVlV~DlI+AVk^|{!{rvVa}%`=mtH1sx3x}$p0ORTVN+jhGN&hYyjJJB3+^l!*fFI~`HNgIUUDx^96B$izB@|4`5l zKu5_{&@6?+?!Wm$_^Wqbui>5N(@`XN2i##nIm`$7lgAIX_c$Zv$ zM z3^m#LOg2b>0P` zGJpm$fdm{{oXo>GAJ`!WS88;66hmeCJr7#8`XpGeYm_&q?1$ziJ<8ls6%9>{&Zu(K zVrLl6FBEd8fN&F=2L{2{loJO8J4JkbnR2V}OXPI)lDpLJ7D6fz*x1f=it?kBOHGL> zhL=O{OiuH%EWpT8pj6o3N#k!Je8f3ESz(V-fiwlvqLXuEHiqEjMM_ZU91?6w)bqpUibF-d@ z)I`Vu$e7FlNS*5JfBgOT&&%_;$UDv}A828}AC!#hoFBjU;K3DK{ou(zJ^QC8``=yu zdVE@vZ;#O*zOg@@k4=&B&y&-CL1q3CnFacXXXu#~W4@HH)WT zDo6#fgk>z4)!ZfNmm?Lffk0Vq>Lbj@J3T?g)LoOT&OzMVFt%1Xir6dkD%4X|>S4m- zrkSfvmAc*_2}d9mFL+$6I!%ws!rrfxp>iCU7r{ipE)C7r6FibNgAO|+Wn~EksURGb zSq$U0hz0F$2*&c*Qo`beUaiK&v?}7n(!=X8gM@5^imo}_Vf^1PC7)Vk_NftFwi(4e2d6XX z(QzCwNJvkpHOPwn3P(J$WyH0!+_|k?=-AwLYECM+y%x5&fe4kpbPyMb@-!z0?ayl5 zYH;vNg6IetR}Zh5w%Xqigc~IjsMx9Jx}CyaWgZ#KLFSu>lHdJ@cg)Gj9@AC0yDmb! zPg%xIr_-%?+9hw$Wr#=RiXF}K`MiqT4+l@B*cIen1yA(Ozv=R`kbK>))+SA=%57KQ za%TFO2msZ?F&sn5!4w<;%h39TfM^K<$exPzu?^G<#bDA6cGij}<)d;r*bUZif=On8cJ}3jv4={s}SRln$DqHW3ZJ z8|J!nafup0dK$%x9A3Ic;VsxnP_5-_^)~U$G5>39m=d{=^YN$xFG|5<*<)2cusL)6 zV9H}Kbq{RzMDm{hwuB{+X4YE3n)&XeTV?VZecDfsWc2< zguT*%(u=D!XLJBcAH6815g4cUuiiOOfW(J(7oR<)=R@^%w2hkr*t5-z194yhFE*{y zGAvs{3Qyp;|3eIA%i%==cxd91L;?<@C~7w03=+s(b2nL01+q}vCDaNFeB#6m&=Dn_ z7o|#s^Atfr3ZapOwB1&1)(wIj!bpys^G9pQYLM-Q@mYwVhKEy70xlb4=7Z!C#B4$C z9uEjTy*O5ok(b@y z2ln*`-}&zt0!?K?t@~t0=T!O>Nl}#6xOM{%Mq69nuo}ZGxM7Q!l~5y6>6oP+*=y>0 zh?&^bYX!#rvL`n+-V`%m0@XE1Ob03$xFM*_5NaaoanG?ZIcq6$+pmx~Gy zKDvV5Hremb2WRUxTy&!G>g#3u-G}A1HP`3GExzm;%}cwqE$2g{v#cXe2g0Jx z>jyvmR0{}6IVgE|H_jTp0d*+;in5mwm2XDfcXvj?n?Q{gq)VX}Y!duqQG~`U80%s& z)rO~?+y!_y(&h9CXCb2#manRlV3g!Up(X5&bIgk++YAtz*7PEiqR=cQO-EG-Bdj1w zgyRM*XXdP%%h6sM1|m3H|A>z>hMWbWD9kr~%l{ig+S%DqQR*?*8(`46k~7F|UP?t2 zGk+Iod7-dOZt$TMhHNYuC>{9{@e4g}AjM7tTw1 z5B2V=ocFw#q+Wmj%WwDa$PF)?h@*c)Ab?3`6U)3Akjb#~&VjAz_~>+(`Q*n)Cqa`V zt*JcA)+(CbS_O~D9y0AZ4ZLWbm@vqg=-Mvv_Hl08>!8)9(JK#aM*C5Q4Y@ z=!h7MThGp1$664dFnTd59EiExJI~qT7jknf zfbyVG0I;o7)FgQNZ0u&l5~N7*y%#{#SP{&tCCErtGACqq;Q+_dWK|DW46P!$!D2m? z{SGd_bjrF>oA0;1y8n}&w50{}W~bcBP1W*&mH>nPQ#K*v>6NW=q=lmLeNiocBa_Rc z+I4FQ{Fw$%wAnl;CjBnAY)Z@>Ef zYL!}$ZKown_OvFqotNN_g*LZX64yhsVCC1WDE~pD$@Q`Q-3LD$Y{!}Kn8V;7^tajq zJvr>kwd(S>NUe)6E~jlGl>Bt*%feF|ieeijb$2a+ue~s#uhpAXp#i*MjwYiC(v`;1S9%DXt1_0oGv$+;@TQh<_W7=?=n4V;Khg@SWc+i}7`A znNfuGqqXf|F;alBwVYIqF~y$EMNac`JE3=+@LtDmxF7=Xx#)C z$XZ$!b%Uto>9hrjqU;0g;) zC3}H#eMJOAg`4yg7?fuf760rqQ2h^y9jb3a;{nFwk6*9u#xboCnimgaqoI zDvK_i=69*+#||Pd6ANGFgwHJd{e&#;j}_Z?;F}zu;M1Z(aS{FbxIx!6*M6zfaSO7D zB)e|AGU8etAdpKl)q9{*da#C}dZJgZVLFZ=xme8Pm~ZERpGG;7HDt)3kfCQIW|1QP zxlB6ZoN-Tj8J%=B)It$)4M7E%awd2j3x%tc&%h@)gU@!GTgf1vo^*swmjnsHxkeef z(alNpT_o74MfFBn0xrZQ6fbJ$7nP0=8?u3OzfO7F9s-|Y5EWBN`U8&C=xS!_4lUAi znNyX;_!LCbQ_jUGZ>{1Bh2H$4zDeAg|twv zqH~!C+d_j;n?}5G+}x6kAUHO+)bx@Vkih6T5m9-#wjt<3NTVW%~3E6d4A%CVR|Gm_C^`%{sYwaJEeZpPQo` zE8ZGZgny;omdS8Zv;9~*H0QqGeP=;X9lH;!wT>X)#SVB6)V|H~v zGUbyZdw>c+q=MM75J=NcZXnIB#EA$Vgmfy^G!?{N+XnnJQ``b0Ttr&Pqrwa-w4Mc= zpj{~(n7Fr|FiHl40VFURv0>W1Y+B@B{f)MLD@*RYG!N&~qF!HwSF5ZLH^gfdUCv`T z>U3AD@7YtNPFKWF0K3Z*(!K-pPEmMHDnTMJJ&{I3;NJ|Bm+5-$mk>1B_QD>0%z`3R zaX@RrD+GOd&*(=dAT_^~EUB!taPNS?tLYZJCGhzSZjB$yqD~K`32sG zqqD>da@%W@9@=a8Oc>P9a7rq}3KA)Asl}l^Wy4vCxfs-d*{z;iA==Iyn-CJl(64)d zgxUV21q?v4OI*}v)uQlvxw(HhL0lc?@c?B?&BOd^lW1V19p8D!ty0HGa=RCnHr}Nv zCyR44`QmF|y{}%|(;BdQUUiW?MZf>)ACOF+EpC9*8KRwpG!U~!4D&(*5fK>ZbnX3j z9so+kEVGefMq{{S{s*R(7L2#(m1~mz-V0gp^aCk-S&Wh zKMB$&seJbmYszTp!7T9(%?Q4v6^i+ejU+^q1hRv|UI$nCt%+^_YO!#Vip%yH@*IZD z*WkT(F63Sfr@4A08!NWRFy|X?*wr1-+owTVQWh{2U53H#_N(tS$Kk+klYDWB=>99%n6L&tS?RTZi_rLtdf*XoAfEAHpCAth^By@69(W*LQJq@lP z%>C0VgOm;dA8KL7G8S+gV>)7h@74nNSTfO*4S$++A~u`(M6uKCC@f zTJ-s-b6=*wE5GWzLbZ-zgT5(OD&lE5UH!jafB%CizzURy{YNc>=x8d{oo<;ij$Tym zyZRCC5-Ci|i-IN?LJ5vwV#g5yQsRh0w$eU<52Pz&Uq;~k{CT^{Hx$TgHz|BhK z=n)#CEm|>sk#)ro&185~LNG6iYTgzO>P0imH{K#cLu2{=u02aiOE(>X2R9)PrA(Vb zgTl}{GL&~Z*GUERm9!oJ!1Y7``_0nGgQ1dK0q%RhPPHftU(;AR+V_RATu7qYr@Cw0 z!0#9JtDmaMIu5fuqwRc4iM5bJ%`14YKlP8jHY$Wol+Q;&5405HiKKZ}e0|YQZfq`I(3hB5YcdrHM>l&+JwvbrlY|Q%;Dze2jZDFY( zwv?#ofC`_jS$jB^F|6P){gDSvcunRDcHzGe11{EYMIxDh-raMQ!C{N!$Q`^CS1%>aRKU^Y@M z60g<%QpJREY0bJ-P2**?7^3KR)+;+h$U$hUIG8MAM^iqE675aVR-T^48KA@b9Ex5lWH0J~rIFdu7V-Wb9$FdZuWafXaEL!g%A?LLZ0s6xV(D&KN_08T)$zpgB}={x>G zh1fs^FvkuEu|#a5Gz}OY2VNzg{`8&mx(r;}26H>Dc{isO1ZSGuvs>5CZmzX*?)DgL z{^;fY_+k5=rvg10$QlrP1egP($(#gumR;5?$}nLp8bn5#(_v`annTgY#PnA&bY!L} z2hzZko|Ebpy#iABNRy4?>mr41UvZU!%8ORQYEA-F^sSx^5=~3mUP~{;^U2WYfoLnJ zd1o(+_cw0@y2}{0ImIoFLkt`{I`Mkq+77Sk{Rx z@QczF4G^COdxhxdGG`?7A^WHV?;R#l!YvWfhc$J@Hfas%?$oOMblxG0v+uNS!aaU= z;vN>T?vmH+%E$9Tzva-M13n1%)P6qN$^#PrGk$%3M)LCt}q0s;S*$7 zgEP3D50X%2WLK8TShSQCVvfV(ZofJbvx_%!@d#qeWMe@KA}-dVWmak|Z~6x=C*<`K zNq%0y>Sw2wo;{GjmL{i#ZM6)qP6uqtvJW&J*Z!aU{%Qb8@3rCpWy?YREThVX*+2@@ zM2^;n%No)ggKApvdaR)XHC+6Je<5>L$!3V`npjc64G&54cVc+u;cMxQPBLGbNNfRx z<|~cBHu2-6-t{r`RK;{odX+Wg1{t!!E>!hECBcrhDA>~Zs>4BF9rNWXl48~5IbUK^ z*!2e)sk@##Gm4f^#?xlt&og`~ClHkS{|x5B7aEcV@D&VjSp~YJtdQtCum9P8LeBQ= zuHhl4!}Gj8^xmGI*CyrEmyKHc*9Q^&X|3zd-~Zr;!O$Tn4~EK9r{Jdn$i-C?g^f9= zCJz*t&xSDzE!JXh(?ZuuzfU;8F}2oh5pS7s4=O)}S_E}m3e}uTK|CyTjpdV8D*1=N zn++tYpjN3QDzI3NJ^mmVBA_`BuIJD~DcjK(5kYA=jR646&p%jFJ#I_T<+V#tZfUdj`y=%MAnwZ};wMsH zCGB1Z;n9bK{1- zX#`G8e-BMu{zy8d2;E1io$4djDbw)l?SL)FbM`mQU;o+P!Y)wAd(PepNH0GhuC~TU zbUNMCIhCrW+No_wF-6qPE}ufUNyCr3bz_OfKBEyrowf*7q~x9hX(}kS`!#pw2_yds*;kRzuof#+xH<|=e%+S$iWF{T!kg0;B>x? z-*uqSdC77K^ChYR-o=4p{T7#3d0dI9uB#Li$Q4PUBDf5uTGLR$*k`5mf8G&A;Psl8l*i2?pw&IFwpmpYrh=^1eR{`-n zhLV}Bv{qFGYe8D>vFYVqfS#qYSSaZ-UN7(?3q#Z%ZeP3b`I-d9ISxYBnQbx==w4aI zbq+Gu8vA2|jk#5yzCmod(?Sz_aY?~-t-&#&gR_jFou(>r4NUWmzA?P11(AhIHJPoT&E8{ihk%o#jtT}$+y1V=D73gXX#P@j zVY((8J*u?R33?oI(FXsXF^$!d$Y!j=_a1z78;%OnWuOiM$I3Q&nMgqFsZtOv)K@@Y zJi>=`&i=ZDG^Y(?O)^>#5~@54bzq<6Y;8&ZZr#jA1L>*>si-LSDh&XQn7w^@Px`C> z{hd!v=R0WYM{LQG4Yim(mZ0?mYtcm|CT`LF^t<2xaA@k7T1O10bqs!w^gs*kGPEng zk5=hh16ZHgPHWK(@eqb&x2-S_Y$B-W#dx_fTR=p#b*=h8X{IkGtK}hS_)SX?j^4<$ zP#lve%%P*_o$x;*E5W%E1GRrlBKq8Th1R+yzHW$*yL#0>_vs04R*87w;mGvmA zseIQTZih^?wia)UQg+SG{p{r;t1f*O;sn>6BE(F9sW7ux`?&xqU@}BPyGx>c=3N;PsmaNEyRX(@o`$H z*Di6iA=lzLUxiv8b#*x(4?g_g813TZFao8dbpq&%oV8lTeEJM+usLV|ut`2_p`5ED zRjf;jB;Eiq6w22Ig`u<`DN_3MIQ5Wa<)(3QKu4iWA*Cs4rW)QdM2a%U>?T~=<{_TM z9-xz=a;0`C0}Kj5J;#w%YdKQ|)7~)i0B8<9{B0N)jKV?Rca&{EY5^*1>@>o#L?lTh z>a&?71ZS}ZZ`p6Lv@8mn5_9@kKw0>p-f+I`={iP4E7$$M`uO3~$M3z;**LGR^0f~+ zuRHLwXE&b@5ekQ&eo)0 zeLPP^mDrnjP0!(Lxl4nO95a_W@-o{mU9)L~si8davWXKzMCVv57{y#R1>)~Br8Pyi zc2R*QbXGHR+}jja~% z2d$&dwWEUEKOU@U4QsIVSTd~ha**77&ZMyydiWReGA&* zoav4=vl2dj^zh}Y_g;C%l#_M6-B<&r&TB5)A@9>+KQ7I(8tZyK9zOq=FD6bV6hx{} z)!}IOnL@Dy(#|l|xfe-WvSD{B?x8+sMdkI55y2MKclmtzb>L%rBYM7`0DB;$mc9fQ zTriSW!+cwug6TEVUZ7Eoj>S|?^l}T%V^U_LqqZEW8`19YfFER7Xgi(4AWmfzqECu; z*WPyw2{Lv%D=c9}RWrqlqJOq_Eg0<7(~??BFr-ZkdKQy;H`12vE0+G9%kYs=FnF}E zH1I-6kzb^E4)$Kv7;_n;+P6~*PoVpb7>VmS`FOjWkS`xBh-&vjo$pA8K0Aflr@SlI z{j^T9&g(k;)w2h0KYae##}t##p=>~BTS~kG_O?>o!$^-gE$ZEa+jNE8v zq($~05ra8~NL!5zf_6Fsmg|stctdPqPUX`=4z;l1Y`ZNMd{vH*x0~(Z z_Jaot^~Zbka${N3gx5kl6a&o-`Vl z*Epi>I<$b#cK0S_DdhTV0bR^d38iQ4@M=c}SF)O;Ubxb&VhOKyf&v2|JY~Yf;Er-l zj#-%d870rj*EX%(j|S z=>i^g=(qX!(aodJ9zK8f!Q+M6en9=)5u&q%;GUP6@OcSIKP*A!sd@F}$xj~MY&Vx1 z1P@RG5KyTJX&TIhuI*HJJ`3tr@`gkIG!N~!E?V^-iJ>4Z?=wsXmBT2pN$&X$B6rnvmvrpbKvqPpe};Y?%ngDfaY~cbzT*)1)gnTR^H5S~EiT+D%Wwr;_bQ8l z7Ct)UZeH!sgbg+LD2(AdhMFlGBL>(eSxXt1r0wsV%MJ2q+a5mu@WJC(i!ps&YxsEg zK)tqEuLnK%55M+IUH0#<-h1}T%lUY8^V#2zW%9o3%CpU`DQiFXoypRJd^ZIW^`##e z&m?$ohB@bMJQ!hCqTpK$NYb!Z-V+pQ9|f7i5DSI6hjPRpXAMwPR}rldNt}?<%2?O{ zLf(jk?qybmMj?+jXT({j+_pr9qv&E;GB`cbouu4YJ=AzggIo~?lr}(mjD-f2WwA~I z1Ig<$!q`TLUV(innN=lBcl!eI%lAA2e6+xJHb$g5<^h;9CAb!kjxh3 z@&#OPkVlWU=MUd{@a)yH9X#+CmgV~CyZ{jo>Z{W&waIA>?RoXy>FLAk?|V5QiQ!Tj zmdAo}di;<~VZJ_=kuL1lU0%QeDMj4twnTph$Qv)7G}kf`iQEp&=5O|V5gaT^Nlpe+ ze=`EvvZM##<(1IEGD3IQYSeL4j2krqucYvnon`1n)zbeE{U;7(4EL*$LtofEOb8UIFi_eJ6mEpc{iKcz z=7SDUo`~KlQEnS5gpz-hqoUYVLMZAo5P+4LpN?@hHt5tEw$!oJyB14oI-A*r&M6id z!f5Avp{y`#R5q;B14>!QTkuWs?AXNiIsvP|Hg2}Yz0Ay7-s#L(Kpoa5uvR9hN?gLd zlDd1AbX_=hMobOkI4=iZqf4>9dSX+yi-9mkj$LM0RE$0#kG7kKKY4Oph@5;6zGl!m zIm?4US7YI7Has2T+Ai(K>A|}<54ZW7UJgiT8D>p(t@a`=TobvOm{(Tc8pAeXD9;51 zWc2_n0?G#S(p(%yAQ(a{xJ2j0PgJP06Am5sLl@g>h`9qB@F8PyTYE!ElQ^j1y~u z$kbN8!yJPCmU-~_jjK6>9JB+YqsFdK+#w_?85bsoLPi_Df>^O6=ak;eYY&1G^7Pev zhnVz(NS#K&*9-CbLgaKv)48tCpYP{m+k22|Z4N^1N^sh!h4j(m>@gt#u>`M- znbzhA^=<^C2{DX2PeZ^Xpe=R6n#i;+Ui)8$ZJyfJAYFYw4G|zea*ic(dmc1pT&aX6G zWeYia$9gdFfp7o7nmY9v4vp|RDbou{?WfTctqPa8oinr+HaEK_O+6e<{e{G)RHpSP zpS0N&rSs$Kllo}>uZN#q$GsMlek-V830hl$aUM2uT6*;*P2n$|UDt!#Jd=;EH;6Ea zl?F$zz|AnsOr#we6uj7lMlgPj5e3DJ%jGRy7!MX=Y;0_k1o#3(65t0=$_CY7;yxva@lTiOvHY47b_~Ax`b}VR(0^{NWbL- zB~hvZ3ozt&FqV2wj{+)<6x6uPjycj3t`y{*a4XT8&kB(k2DLTLtW%+CSQ^B_O(tMu zEm3=T-=?H2Lrm0i3Au-kj(rdE2!C;yWd^5(Zf$0fl^S%!J)BOrFb?zQe)8nWf5Q3L zoAi&h__PS`*~du=vE0Gwd29NUd39?>pp)eM^c7T1( zs0LPu7{)hYfr6D|2`S;OD%O}c3g|lsT-F9@T7$r%T=s`FdSCx`7b~V?&6%n`AVpi2 zb&ReZ=JZC}Ky^tW=f@(|QzMbq&%~hp?KroUEhf^c$-Wx*Dxd(uMx22|%muegn`$^X z8T==)t%N)}2h@LPmymU%ZB{`H^z?R>{r za1>Q)(!AkER>D2R(|y$NSx^xZ^S0#*lJ7r$4*rmHZ;;tBc5vt7HmMAACvYFUe% z)bp>HS|_+VdY=$5;CO_C?{`9!Hvlw)qpmIM*rvN8L2%{i%+=X~uI2&Y_0V z$Cqi+2aFNr7+|(KKdfIYz{pmwTAC`aBI0xtT#DrYV=0{kupOLOJ0r6 ziYcsYYN2z2w`jV(b*52Bn6h18NMerM&fzLi={=@4vD`LEIR_Ar(|U-Y-z0m-CVj}t zljyp@O`2FUAYdfKBr%SYj~Ues;F5&yeF3*Do|a846iek*EP(0`0p)QIK%xpgSaB-} zr^v^fKd_gs;NjCRA3Q$Dvd)KH`N`69&K|a7yu~GPZEnw>p*_F;Mw|5@nPp>sJg32! zfugK10$#hY`Fpl!0`bb#(?@9%I)JNh0E$`Q^e(1wbeKJQiEL08%x;<&vfD#mnG_c= ze|8zsmv_RyaGjaRcSJvND1r|_pE6ufFGm|e*r6wIOn{w0(9TS`WmaD!5yLWaRM@2l zS2a{DO>oJK;9QKX)*e;5$&GRE;L3GF54xEqia(SJ$U?Roy0>N6`?bgHePk!~} z$=jFqW7|(gS6SB^B!%UknwV59hbb-6bMP#RK;!I|GNme`qC882My}@}5^pq8QJKO! zKCxq?s!%U!;N%JeRMc*Wks{M9OIG5cb6J+K38-X_H36Z9j4Y;W>HDW8v_YD8NV_?w zSh@Pr&9tnXO%65tP^9ycC?#BU1Sye@*j&offgp_xh(yMExT(FC>}zVt0M*4DpBkPD zjS9uov;4%cP>Ws;PV^0SXo}TH2i$QdMTrV7#_I>|2c%!_4=DXz z-&cDvyP*nx2vN>gpT%X-YTXT41m7C+>n17OGyPTSWm-d4+xpcA;yCJD$mXa?W zrlzmBoZ%NbI(8z=aN9wU3NA7P2^WmHY<%$ab(L6_q)7|k492VMhR!0svpTkLrn(EK zk662yBo&0+m&ICk2Z>`nf?OQlSODIE#Si`GtTp% z{@>RgC1u<8^ZAq0d(Yn9ua9lLu3D@(TkEtzhZ4Bc43aYpS_!WKnH^-=Lv@<+R>o8n zMifI0n|p?re6(b}t#Y*em~57HcxHW`42 ziMB&Ho?^bnkV(9TW&a%cMrI3ZSx1(oPo}Ye7Qv6oMP|+o86GgZGqN z`8ntrOD;BvvapSjZk0<&TP7ph|*v>x6nz7d5+;|s}@HTH1X=vgB7pbYo&aU zv_&%TpUh?(7HPQT-++^lu4-}1#ZW-`&gLzApHov}%Ma>XuoSr=ZK9Z2S!w=)K)*sn z!m#mGgB?g{TxrMyiC63LGt%2g8cK645sjm#ej42kivvUQ z{Rqx$Jle*85@CI~RrEGQQ<5GRATUs`iI`jI0|0m%%2x?AcoI{T8jm5~WHIG&$ik>K zYbF&$EQ|olOhEdVMWI>}$xlp^#VOYExnjrOOm2}Frh|+!IRk_svA4!?e4{s;b4f$VqgyP7>%`uOsryWAa+H5$LCJYldo z>ow1G-&X-4(lSr{YSAu{8s-fY7O`pxK;<5MI`jg#&@jEw6v$!wK=B}h2h+7wREhMv zW_D(v%M!LYgefgi_2m=j@jhf^q!Li<*KZE6)BBL*am;Iv@6E&KZ~ywila;6I*=kN8 zJsrXj`rtf!@Z{YW4W!w2LP6Tp{v& z(79c)uxeLHGY?o1zjMIhNfe@p5~a`sgSN~jUH_{W3wO+DB`j8!c#X+0UzRIISTTOi z$Lol9skAPa$ji6BeDA$yiznn5`5~dnXQ#o2<~pjFw*g*VX@91T zaliSSp0H$F5Hu=2!DP5_e>GHT@ZrTDrd1PtKvG8mh0&_{A0`1?0z}{*De9++-;DBl z53TGxy|e)&UtFWoBnV1L%OzxmX0AZ0@1o{4aTuFvNL3My)OAwYAIA&KIj}Hnr_@bR z3%_CV2h~ruqi~(Sdb7U$rw{+)$$L*8uP#D|{TvYQ^CZpF@ssW0)mdws`t__#u_8w} zu0Jgum-HMU8JVpXC(EI@?JXn?Er47(K_o1a8qS6@i&?SM8$?;pGfW0D2W7oCmhDIx z9RznJvzbarH}yFb3MJ5?%#MK^i3)GMGut3mJ+jes~BR4O;`0(A+lglZ2c0DGiHAV!x^T&^$JbCcmlmGngTR(aF9H(Qu>u7L_ z_4lc++eY0ISjd6OP#eY8!+YBJvmhqD{Y>q_3smaJ7)!g{ZEOfjEf$D$IJD9lZBKSx zPdFz!8)SdL;}Appfr4&`3Cd}M)sWtcOORlb#iW5zR`jpYrG5OL8_nqqv)a(nMvz8m(34<9}K$y*=3`|HQoV{-ZHa#H%QXV0Ep zf8fETS^4ta58wXf%j@BwsD0b+{Z;oK#Fc5q$QB64hI_+^G8x<_4{32xmUSjkV?d&m z{HHL-2Ili(=$AV#n`HBf?`^S8U`rPu*z%j&lPIzI<|LrVRpqQfDpmxq_aG__$~02$ z-g2=($u3fEbg6#*?VEH5Q-$a7p)?DdoJSh7mMSy0S)mpM8u}WhICG$KnZkbN6-!|s zrRe2K6U?Oif!f>*Cy5E(l0IgFZ{a<78*=9%LEt z@^7|v?R|OfAKtut@sqbN=i~=pe)$)t>*09(`26cHzx=_wAAb1O7r%V^+4bin>gZmc&A}XQbR)#M9FY5 z=QU{orUHeP_Rj%oODhWIm@b;C%k?}dkQUw^xUssKN}73cjgX&lK>@63#}$jet}8#1 znYS+Cq!x5IecC-@Tt{YB8EmFIvITmMyYvnujKGDyg??>SIqn9tAzPSAL%U`~D z`t;>zkMQF+%Q_Id`R$(T>88bsx;U$I2yEhj7BQQ0iyV-_xIJnWKyt}GBTYy1OcRdgBL0oDdYAC=|yC z?MvzLO+!w>lg^uma_LBu-Fm7rW#Qq9_Ff65$=?OG1R1fv90KyY$#*uKWdoD3KkHwS zEwvLNh#`kAwbtWOT-O0RxrB5THhx_SmWDEze#l-*H<7B>Xw?!Lnuv7|vORiZp{0Ly zb8|f@*CVl?ipyV@A6ft7c>`^mjl^yr!D|l^X(B43tt71&OVCmq?=44e$XKKp^`bVh z8`26wq1t`}OGw&?s{-San2MeL6kC2|K$L<3Gsu(3+G`j*-1K;skO*Q)@;@?rwJlik1L z9|awyE}lu6X&QVH!KUDBP>q(hnQTX>g<<%>*rwT#y3u_F8gUOF+yz#$SEWrulBDFS zasQ%l)!n}NuUjqnw*23_W&r!YYc3W=ZGd{P4F>S1UkFt6`sgUaf(7LGEYSFQTazS? z0eSy=diP){UzC&BI*~<;BJ4!)oQ+EOU6c~Hj&f{jBi=nvdY%BVr)_;RIG*JDct^0i z8$w5}NgMVay>d%G6wo{t z_@o@pokQY!|I(2UI1JKuCs6nU^Dj%O zE!_X)1sE!5itW^MkR+drysj!22=8cRiK%lDSZ<^`W~C#HGg{;k`=%@ym)IHSXwuX8 z(%Ke-z}*qq7#XI~LvVy+wL{`V3p`xWfB>w4uBSZ+z;C<|2W5ixft@TqMnGDeO)^ud zH;l-IDoNk9{u4!LLYXZ*)Sn5+CT4a|V=wkh1Y?s*D#@rHya-y1`w~%29EXAgJO58;%9B03#sAhDa-LN4sqm zmmt3WaAOG|T7Y66-$=YLn=e=MzPTsIzumUGE3xfDy=%@`BU79erfh;ir|X5aqi;c~1~c zmXZU_)y*uA40hKVr@+k_LH9RO#D}B9*b_J1oq101h<7@|{8*u06(}KBRznL1r3OYZ z)5(HiYJ~l36M}WbLRj{>USX;v-eZVgi6QxPnKxoOKm|uynl0p$LAtgU4ZiJ+gxprF z2r34ug$KP%Vyi^Q-rT!g56JelJ;Syhp>3Vk-a22~v7fo`SKj>~&`kH6OD~aq0u{la zRH&DrOHC-y9S39C+%+|Kz>4gjPZwd6{$36F)gwM1ByNgWA~kzpa_D9BNLgZ$QclEs zS3(hu>!+-Gu1_YmoHW;oE5 znM#md*Oj4xk9gbrA1{(ILtYK!JqKj_Cc|Aw;_vM*ZZ#rz=<2WVYRKZa9-V^iC?-Eh zo7+nc+^A(afm}M{8qVQ`NQZBtU zZ6{q`HHQMt=0dKM>?sU@-~Uq!wCNEw(Zvm4&`7SIvqSDpzsI^p7n^r`lVtJETjdS`;-S*I^KP;`hhyHsv`bS&fa#}X zNDbXHoa~A@X;659%=)s9dq6vt79Kw|8q*k6MsEvI>t`pXd=kpxQS4o9CqHmZh7af3 zxR4DjQNWl-`304v9K+d2I_V59sM-0pE@_wd15!?pbV9Y#iP9s|!;sjDKLuTq?7j>~ zFO4)axFFODeD2C|^(x>Or(#B;wq%{wM2ajC6x%i|a~EGGWkv?7LuJ+%2rr9}Ih)r@ z!=sl-PVCQ3-vZn6@NRe3S=*arjkkxtw||w*$77_L(0Rn+2@MN8-OyWheFd^1wNvo( z13lu*HPA7PZCwuY$g%X~nl#lI7CptG7me7tH0MJlfiJdu0np2MN~h*JolW*waTAo1 zEEyk?XJHrSU3!Dkv$xgEjydH3+$SGA#2-6nD;Pm0)axF<3W#U zIx!L`-_o)}?J3`c#nhEKK|{Si9jvrCbzn|NG#m=BWm00-@PWiQLIFF02?wUqeUGz( z!pe$uxC3kUx^jLU5tvz)3QyCI5wkTHg{^m;J>2X{V~~FeaKjjkSDFu8bB*TaDZ+)M zHe;(?@|8!RSqvC@;HC-;Uqc)F(gLxsi=J=Idmys2h~X2f5kj%FI37aDPHb-_1RX<~ zThFOtgbS$g2fOgXsvWXrvUm3d`qM} zh+-0g72Ea-P^9klPBrhgw%PZt2e)ssE$_9+osG@xK~iZ>ZJ;lG;f1$v-~8$ES~f6Y z$%{d^sJxbdX3LX|;!0h573mgv$*^lv!UO`r3V>z`d*SsNuCgyeg4Hl^VToZ?R0*z? z#=$N9Z6~)f9+X6vDdttF-6fVh78+VKHQiCRd}#BizJ~{sHvDoLKrv#Xl2XTZ{OxBa zjPuLsX_oaQlIn1$1baG64X%e7ZknlNhhriY$;X+;k%iOyjgyb zW8<(^Qn#*%`?XfLR)T72wmYk?YY$RJa4*%^eEHbugDHFc`Rzpju}}nYDn|!$BW2BU zs%mFtsNDtEG#G9Jd0rddBm90UH5zOZabIA!RW@jZv&TuDz((UmKHL_k>6^uuTJ^8I zum}rxt?Qz2bZrGC$aHF_8LuQ8ZYHriD)}m|M?l4UKJtql(98BLuMkyyJ<#8(fBQjC@1D!ow%EyLZGkO`e zk5{LEyI(-lEz@@s6h#oJbwUV99ic=+;MF)-Xj9g(tc&8ogwGqY(|Hq>Rwb=|V8XAE za0rK=hb%mPZQm3Wok)``-CtH9qcDa6n+v19V7oiyPA*%aW4_vW9f}nU&obK+jN4`- zm6oz8TVM}O@U}tbLv*&Syk;87#^g~$6F>ialXw)l&cU!B;^ekMnK&cM8kcD^=$xK5 zI!>o$tLSXLKv2z`VtwtFaJ%iHdc(Qd?z5NNAyd8hB0xB?N0ScP4s`g4Tkh{Q+MvbQRd)#60mu%0-{@019uR z%doC$m1(Ys@}`>T;or7q)be%1*u{nNWkXc zoQ@)V70( zDf4BS<@TU1{N}6lH_f>2#{RB7$j4E9A_gOQS#2<&uqjUl{lWoh-9@-j89)z)|Fxck zPj@L|Fv<)aXnhJkYs%eef0bt{hG=C4dSj%$TCqW%^;bcVx(v3s*r-mz9s|CPIpRth zB?pA=zV_>PC$s$a@mixt704m42K(C9MxyaSDjMr9-r!w*YEd#2txE;g95c}EVQIbi zSpnqYo)9r1V?;7^lRy73biQE2!3jZ$Lj!!a2#JLVo!#$1>{ zcCJsGL;?z=WJF0{qLA010PP-xP7S^hI=ghBNkuyQR4#?m31%3iU=w?BI^jgq3^nho zvYcqz#-e9>)sJy6cr$24*A-~vX5)XSU2hQ>fCbM$B157qkd~!HiC$7#(#S9_>4w4#8BiDYR6_3FGwdk31*6mG7j;jGJDmbU z#M+DCDoiE`H6+W0$Pf!N8KQ7kV+0leVUM{sC80Kw-)yK9$nHW_-hc3-=gm@kXq7jP zfS_@`2ifj^_>Z!Yd*O?3JXrT0s{NP0-XIDxl7%B}Z{v9#Wo&w=-KfPV5BxjO!SMYn zn2P$bi_qMaZX#LM6l6~VA7yKC(zOk+LYq39QUkey+7(E0Ax9B3Pn}Xle=1SK{OW=UAzu^A#@SSOCXsUskaONt| z&kK4XFSkamOsz!m}a;V-AS!9Ls{CPi-zm+QzGK(mMVk9`40%3CwFBZPpq zJffD#SajWr1!=OJ4CSgaWdwR)Op!xYRcb<`^nzUr9g_h}vZukz!Gn<{P1OqX2YxetkdNvfAlQad+rEn_R4P%zx zWxz;BgitY(7BhmdTt4Irc8}5$rcp+>8ydy6`8&}5x9G0(V}`Ve28=dyy)jWKubjVW zB&zX%MgWGXl*E9EDlG{>7N<0|*8Eozn1Ja=%5l(lPla^_)I~)Q2|na~Yyf*{7uOp) zAy+2EAN&_as3(*0Bt8c7N-Sl#6|-{1T`GcmO6983<)D>oE;O!C-iv})-(K}?Z@4x# zHS*v1QrYhEq{H@H5%{b)=xse+lvqqC4Z1-|s18Vvo82@s>O-)Qxo$%Z9+VBbz&Qwh zkCHmcCN^!dC~*hU0^aayraG4;cTWa-r(B2tU)fKTGR_){wh{%QNTbPrR__zYuk82( zkc1o0*+>Oy1dIO5Nk>nK>l^!uwY2#8n7A#gU0wI{^&iO*DD!9V;K-{i?s+fNZyc43CcKhTEfW z*0u=w%lHE!T83Nlm+GAv8s(UWlCPn1$bH@4<zSyW56)_@_7Nd^b;+V*l4F{b7?J zQ3-lxEzo3QUfD0Oij+ndq+%z5Vco7yTs?31vi(w;-3@hZyp)G_OUgP-OAD=)>CD_f z2A3!h1gf+2{TX{>NB^7TvMdgw#GOrXd>J&@@dqV{UcuDQvIoppb zfH_S4W0=e@@Xm6obz@QaG%{3vPR2?QUQc+-R0qbAAP)F=mJ0q2w=oZt6C8H8FcY@^ zV!al^CPisKdTY#kT&UmmBlqzWw@0_ac(yxsCf34Sdk~pDm^)r@*-TZ=l+Z*_N;CtS zM0&@vVhI`A7ZIJa+}$Ev#{}MY?i(XCG1tLP8Z0|S6kxtj-|y6!tjnfKqX!jITBoZg z;Ch$&Q#z9>`Ryv5Ttg8=OdLoF;u0mmXn!5^fXMFU_KlQ%QzI>82}KrjhYDXepSP%V z43EtTn_`LSLMz~UA3l?@i{QFQQ&Wj7*53_)nvgkR3IJs$0gRIF1Y{c~o7PzFFKxUU zym3f5uCZ7{lbiHyyM-qa!eqM>d$PSr+`Al^ZM(O~nqoyEcKZcL{i(bF70id~=-9-x zhf<`ZiKrtiJQzB5y<4X6#%ZuHo)Dx&_AL+rE-i8hJvd_)v>p2hSsa=qhlEJrtLc%4 zpe2jKp-!M3J;7&*PA4b=vy)@+VrU)e<;Ny^)Ulcv2FGys;uK>Pc2EpNR-P$M$X%>c zZctjFFWEtqp+I2Jnl-$)g6Ne}RT{;Kv^jf{zzzJjWz%O*L#A&H8~K1CZdmShIP+Kk z>B2iwY;Yft>n44>3+i)wiN1Y}*7t58{5>aV6WyKua-bzb6YGS3k7YY1Pzna`Yt;O* zMQM2T4v@sxYJgBER8@K89z9>ZD=BwhDIM8m4~+wCU2QS0nQNJ_B26V0qNouk-MJr? zN(1kZLYbN*z^8W(dKMG)@6ZOucGyTSVFuJwAnBg^KTNx^xa%=;wyO*`8EY{DQo^G! z3&@>hqHQWK(S6D}OPh%cC2}vh3^C}ea=aP1)cSeDFKIUeTz%5Q(33W9vSyq>PAK|( zy$tpGaomG^4Uu=-ZV?&|;>2&TXqU9N$%=y5%2>lPfBHD}!s>o4f~tKM--z$lemXdf zu?-0hKoK`UeV242<NFMY`<1XS3WfAEDRTElEKn`WZq_zbLyn{ny#H>1l3!v+PW@Ogm3jIwD(yvp z%egD$DvCI}=CtJa;Q68-G2jHt^-vRRJ+Ijy&#d2&Qv^q`Fe4nM553QCU@KehutyqY z)7|f~cx-oor?)%sB-z=(`fAn!6m z!v;4+0l(wkR7VFeEJ4syOH^pd`&x7Lb1wUwo=0pTa>YE2}A#M zCACj&?gWZ%I3S=6Cz>kv6#HgGkqr8Sidcvi(Q|X4b_$d#5ZbD>E>R%@FS}jfugJUa zNkG7)p2BcXWC9jOIVRn`mT;P+v46M+mUOX@CybZ({3Dhb?WqRB4O{79N4lXkP)}^u zmBU>$BnPG3wKQcSdKFXVtHf^}ZB2l(G*w@F*_vR2&6;r-^(}T zgUoHFR_b+T$7STb~`A(*H^aMuwlVYoM><#6d~87IT4p=5u>OlnrBO*ow3 zxJ)S?LtCXNr={tm#=x#O`+@y`Qc}rO2&LHf3_LAO&hmael~wmV%A+-Tdst$wRxznX zVU6LdiY!}%XC2UAL!)@i@iQ3Jgs7NQ|HZd+!AAwX!rcdCTd^kF8`vh>;p*7ls0zMI ziB5}XY?ru!s{~1y5KhhdR5+K`Z((GIjSkZ7Ve%>FnHOjf(8@I(slR6A zrtDuvJ9`B_!IhRLX;>+|Q6OBH1EP-~y@6t7v#jk_$me$VK=;vh=lZ4H<>YAP?qBERc7aPD=xW8@1@sV4H4cv)G?vaIT*8iqCkQWz1L9tum0K+GdML zX)#U{07p2O*e6KE-b(~c!-@-VW{6b)T|lD0vw9;KA;m+1l%7h1Z8P28tdga}GQUvd za-n&>_8`-b5ZnwV34+oKXq4oQDDK8+7&W-OM;-eVplxLl%e+& zKXUM?CU4IINm~=wib#B}Ehvcz%x1FOkeMhot+G{NZ`>(sC}kBEn)i^e1%v&WFm(rY z`dBb+Z{WXgx5?G_4aK%wIqAjfe2^Rmy$~=Nx)(qfsH)+@6deMNBqQ0nf|X1L7UI}! z_1Zxq*oFrXW%|`SN0RYJcqp4|UI=xaVu~#7szlFGzPbVXLu`olmkcB!CDL3PG1xhZ zj9+U_SL4Lc;9n2O-{v~}R@@VIj)90e%X#hx$h_%e2>#8pgtvoWN8~5X9aJ6@AP15i z%QHWMOT%1KjiH;M_nBixMOzK4-ej0(j@9v(G~SKelhPphg~+Fw|KQ^f%Q^JzbIP=A7SnsPe1b)M9%5{USifNtIgiW6SCPy$#fp-9773wuc$z!+Jj^l{3^-s*;5|LN}V?uue zDd-$iuu}d{+dvD~??3>lve|J*_WlH{$tDRf6Dqn20P?%dbGZE4&!4$~+AEbGO2U1P zMG?TUpyTXGXxtCT_9jll_O*QX?U*k0H8~?%q3qBG%GoXL88+D*hF8xe*I3G&9pR@(IAvAk;hlekZG&9ai{vp*=v^l|IMXbOR+IIZD#`( z(#`ITg>f?+2tqt_Q;S+ayZ4|~Gankf2aKEpWW`i~6_T~6ikue^s3b7(4GL?>U}+gu zYaJ5_AgpS5)do+WQhw0a0G7nP0|6*ys%ioxgHCsLUui%&bQ2TGFb4-CgZ<>bCl7|r z*I+7F4xhHW!C=nTyE!bXxhmxc`39$AyQ`1bj_K$3#!KB^x9kyYz^t@AxkVV&kry$n z;Aw!CkVXR9H&By{lDX_~@l;C}qEj=eJ)*b)2IjJvV>ngkJj&FMgZP6j98+_v>D zqZE;h0xi((&SlNOwi1>nq*_JCBut0Tj02qt?gm+-Q$sKS-{yOX(_+Q4WYEk-gJmyx zMM2PDZqO;;bJJ4Bv8+e&1byd{^M>*#IB_~jfOV!_+Xr5$cEpTQgPe^`izsu-Ywr4+>tyil!*i zN*mCfbBu+>CmKprYK3Ifo$f*ff9ktF5fXPs@s84@n3e*8R%Y zNJ{TJHW-0`$34h)J6~;k^bNqH_e33R+da_gOZ3}U)uNft_YpW|W((CKn3J-+{&w2t1jj2O9P=iz@G3RrAT6 z^BqffUJr!F2`13~}qeL%>2~~>pR={r9jy$lv8EX%E@2(T3 zen%9}-Ow(;lWRk9D-aOsrP6M*#2_aD^ciFX4;{Duieng>DDgN@>oU`MnjFjTAkRYJ zj+q${t-c&)_UX4ldg6eF{*YGU29dD_&2D;}9U=nI@bKy6n*&lR+~t8YZhtU)W}yYp zqJIEBR&e(QQdX$JOK==lLQmrLqc6ewn`j_%AstDSScyUbIS!Z$G_eO0jZalk)l(P_ zTz->3y#23Fw|R?f-(+-k=bGJqVEYrea?hW?{D1zCM&L9FMamSh3lF)hjkJ6YG+s4d zF9zt%_5&CC58HyuNqoPX z^ADf@x3@ok@$&ie=i5D2@>?6gRZz0M0U)=%p<}-s%BSD^Z~x&B0{a=pvJ@p1=2$Wa zVDo)AtfNT~i(ub{Sso!gt!a6H)fA2a8LlwC9RC>J9Uo%&Q`W?Fx>A{--0>R<1!U8h z20Ftip`Ux(e^O(wz;#QX6wOW`1oR;61#DXqoO}Xg2yK;_(I^W`h;u3#Ag#50l{kgq z5BG~Mk~$xJ+0mJ9gTpsm;sF>K3E?pgYc1$=^uhKHDi-K>mB<6ID~z5iw6S_xM2m4Q z7>u_5M|$g+D$V%x^Z)Pj&)@#yd$>k!t;pXP0(~p@^9>-Ay-e%>>~bDozWCYOZ~yCm z_(Q*EKcBP#BN<~iNcb;|N2hD2*kTF{PT$_7j3<^A zSZU3Xdvq{b!!c$Sn`?SSd@M(Fq3}vi4k+a@f~Bg)!e|~zBu8_LTZb?hsXQfyb5Urs zP7IUN=To)=XyX-aiYcxGB#3D%L;=Um0EipD-wIl@x>dLMx0p8cP`PzhLj9+3kXfF^ z)`G?e4qlie!mj8hr~Q(tb7%K^C@k+=W(#mk%L&u_LrVNGb~ zsu%JWbh5O~}o}Iat0Y+AFsP8HymXzvPEt=J&8y zJT2g(19TREYl2h(`37sH>XCJTIH*wcWS($ZPzzVDJII=L;ut(@z`wEQD`e0HQH{NG z$;QZ*w>JgS3^^T8c_xibt@)vPde)YVi$+`yw^?NogeC*PFmL!YF6C(1Z;*ex9FZ^H z{vSVk`f_&c>t=oXy4-{95V!WGq1N>fzI^e2zy0?9oBr#6_;hM@*?QpVp++e+RY@ib z6nMG)LV|vWbM2B3q{mEw73+cm?h_bkbrd0U3b7&4DHE^xC{bS1nZPb=SE^1J{*ghi ztms<7TL*aC%>#NHR zVn77c|AAnYAe%*vb@#$T5DWUo%-^2!C01XyK$gdVVu!Ryb2tBVTyRgU$O(p@fWLDU zl)3O@@Qqi!?2Tc5>Df9Z1+p|TY9%>CKJ+e>IELXtOFmBIvbESf>8-_+!=|B?DCwyo z>uFuT_EGObI7yj?1#z}?T5sDl`ui011}8#(H|g4hL(@jTaPEtXvV*)Mq+|sIq6X1L z*qgWB0IHc}R7Qb&+9S%sI;y&!3ubV4OkW}b{Q4nXn)J`@uX#ou@r-Qu&8zMzt+sn8 z4>%mpx6A4H9H-;+{Ra6%bv6KAD$^BP^w-RTQ;0){RT#4{#%`qpS^hc*-amk?SA3O;y%A?YmUO}dN>}veEQ3Ojc^ z8r6}%Rt=kFH^hBkVnNw8m!I8eGwlN-<0&m`Vh!_tusP&>bbm_r5(`PQ0>o6Q1g{Rz zAOSro#vg=@DRwu9#fkvcm}%Y$^LemzqNEtq3|O2MIt0vKkmkq6IgR_w}IKN|N{gkH$ zNzYUbI}j-8$6e84Rkqlsy`h-PFf65#wQMN)xT_9ONiEMKamL5;i+HWGsRa;9}z30#Y`FwqL-|j=QU0?q< zH#bLn;N2!fH$z>I#`Bx)<#5V0U(y33&|19S708?l&}v|vf2bQcah z_CC=iKGWEH;dL#sO7e428+r$dk|tD z_0fp_`|5EWFaVu45`w#0oeBsZ`@>rp#irdiWUZ zq%xS_Hy;*3g_=9c`ce9MVrwjL4p6G#Ws)5q5oSHbY4&rV^7sx|At5$`3ZE&H6- z{WSwGI>1#&gDDocEJHgiF3P$bV=GGyySDG6dl0P|C3R7zTo#>+W}`*!EZu6!Z_w~X zjfMYMx>=0&12SOHz&eI&vY##;?a*q=7_;VkJXSB^i<_x{`Yjh`bd&kyd0G%^3Nzf%4ptKUKKjVGm44k|xvW2TO!v0;_h$ zb8N4@{s^sIN(Ep~=h!Qv+Gh3w!}hRsDFuK-*1z~&SRC5mUkO(Ildm_(vU(sSVM^XP zRz{lu&!Qx2vX4NYNEn!%EB9TRwOLN$WjdqNk!m=1`@$EMuxcIfQ;-2%g`A}22Ee?z-${4 zVvTBGGI6j5@*v$46YeM;nb>$x>cK}2B@}Z99S!P`pn~T1;C|n`*Ym8k_V=Arr=+UV z>5iqUIy!a!eEZ$&&-45q@SD`CjxLcG6_O!Fn{vc3lnNPxLp)t#kTqUoQT9z^-m~rz zTqnC1{^x)3i(kBVa_e`$dpq8K_x{Q5PyLVIJKWan|GOU$W@Shsnnh45G-k=JM%aGR zTxq(wlY=bL^GN%X9083*qn9U*E6S7!8ey>FqaO(cQ_7WTDHJ1(ty_-o^Atu+0!hY- zTbS`;3t4?FDQC-KRj+w+G4eqqsn1gzCI|)!050$bfJMT@k{$akNyx^x6eKo<#KwZZ z4%(7xI^X!Zn1h6gEy&dK15Py~GOSuNo_uviv*0fxRqEbAqcwOm{V>DlYPcBJBx zE{f=y#)qbAiZ@1D@ zp|O*86R-s~YfPCfrJaV!LWw0|3PU#e7(v#w8p80C$i)5)6FeuqnG!s?ur?;D)S@?P zK|X@R%Ij`lYEdTF-1NNt=eR*OwM*Yz_)3}oa6TBDa$XJ{5N1l|kq``Mp5VwCif4|Y zgFsNG%XA!J60w4&b>kqMD+bXAA3^aVW`gm!jSaRzziOI=`dti0K?ef}Y_#5a8}a-V z?8L)OfEi4{d`Iy$g`pOZ7Jf2FtBANZ|I4ukA3X?OM~sV?1c<@62j5jPYke&)L0+&# z%#i$ZYAF-gB6eC(?YAtGp~nDJWyH^Nib1F(pt?{HFtt)MC#E6yU0t<6B~FT3v+zR_ z8S8!l34Dzt`YXYj`z6-qychkQ3$e`|dYSSk8!QT2v}G+>ys@TZDWaA__ejG_)T`Jf z;F%ZZf8ys_iWqEziO|^PXWfrRFtAw)N#v3&ooReTDv8jAFrL|BcyHqon7|2GX9d|- zgEavc7%0(Nh>J{MV>2^)@v#Sq`pusM64Kp}jR<+vGVx7wK#FK7_ggj-hh?}Csjm{; z2ekEEE^5j%(8R||zJ|=h#&^Lu2vL?%_@&mLM+QK-6D$n`1Ekc_xZYe5&l-03!-!4# z{5t;dtdsEJ_C`24x53yPI&ue&%Vw3DAeusA(^JD zv=+hw19*|1ENwbPw6Pajxf{V@gi)5nlx~D>#c7 zdog_}n$_`6JGr}SY&hB+paL9mY~9(#1MTP&wy{`?rVg47FnF+ZbtcMMCPh4Ggb#i2k=yXqS{{D}a8Y7@<5N#hC`k)zi@-ND!9h60 zbKX4fNn9=-nyv_tF``cVgN-ScM;a)xjn3d6QL}@>GYYC<>NY2InUCz0>{=#)inR=e z1YTHN7G=00$KGLm@(CX+I?zR;8FTL>M%M)C_^*&Z;IiPg;1pLONQ+c(XU*d5BgRFc z$Q+WB5f`oyb4RYae>;5UYj{}@jm0yN%}f-Ii-6}eI=Lp zj^Zr?=XYn6%l+$Di~^BEl94>c~iD5YAIot zN7hGanl=#4t%aPx#TukdrW1pURWm(T)3h!;p1}XWhFNEq8s8vAGF78l!Hl{+jIGxP zE1lO&#Yn=PJW1m$AGV0Nb%;bAPsT%I-V43(H}9R-VT>#0j(5z?QAlet4~J1Q5*!?r zVC1XJ$0J3mx0EErfn{8rMwf-Q0{}-jP&9!zotpt_G88|> z*nTH{pXQi2gfNa5szeWlO@KM_l%cyRS$=%)b~lJ6SY;#2h!PxRzj+dkWP>jlhL~eV z8x!G)%#R`&I2-k&DomjkMskWJQ!PSk5_O0oYxX`Td4u@}Kf z1JUG6sMw@$QfGeay}Nt+@SHQXC-kanUUG~$S#VsSmyChKkV3~WgEUW}Bv+!NC}b>z z40Dw@K#P_PQ(QbmrmCqG$vW&)nQlBTcuTw)rf;}FCXpWt79BX0Oruu7=7a-G_nlBm zg$YYqr)m^u#0mml-NHx4&2`>}0q*JSL>g6uOk{t)xQNV<|LGN!WLl(2ij35d)%n6l zC^2LYjunUZ4*q+taSKqFGk%=l!I4Qz!^JU_A>eVet!m5z8&4G}$du5yYw&&tl?maD z#wpevu8Uh|^&Ok{F1}=(KCmBHtIY~%Ap3_KV+ zAW$@U6B6^MK)GYz>V%Ol%tq3KNb$UmXc!(A#BQ3rCYE=VMS5Bg~J;R^Thdw z0(?Zp8?u<;iuD2WQ1dEBE20G(1z>$!oTTm=@ToKtc%)rr- zGce3?`bzGVvY=MVgetLYOFNn64+%qavOy5NZy8Lf9GYc;WL+yEmuQ@$YSzs!&A`yj5{8lvs2q ztk~CjZeV{Xqav(0Da(;~oOY$HMZQ7`l@&PMDL0WsJ{g`bGO)0-YXOj>cP%BJx0GaS zNmAwu7oSj$K?{Woe4a%5kbuFqeahaR5a=7XB$cGSm-M31W!M1{EN|&Zz@frpt9Un%5|K%5f74Sw2 z(TxAiF)NG$vL$sz&is~8uvxlp)^-EfBpG#?dohPp;jJ@DtlEW~q|M;T#X9y2DZ17s zJwg*TLhQL45C+J&VKf0m4A5B9mIuCs%31h>ET29`TH#UC(x|0bDvU!UAzlKZuA>pp z5c1uiHO3fJQXZ_p|3>l%BMA%Lo+ds4+)+g{AJW}MAfAjZl4r!@K|eO>%1tQ#Pr{xV ztQ%TCpgC4#qtJKcafr$puZuZNGL6w9X^@U%noBe)0GzaxGoYC`lr92kc|G9)jVasN zuq0N^2}Z3Y`x(@pYLx!Naj!!0S%$bY^8cm16Ka{UhIu6oXzxua0Q|*1vWz8 z%4b9(m*W0o_##ao4X>#fhPRfsz4VcALqw8yDnmJXmxS@5``vs@tZ5+9GU?2SZI+~O zRt_n6kt_GKrrZh=r4oer-Cz9H=FWbQv&DvIH5=vkPtI;)h8D}2kp?Aii@=Lq4_d3X z3p{=$B{Ids9^HsV@(Q2_w0)4kmAFAn1derWBJ6Nh8qsO~c$A3DW6HQ+*>M52$(n2Q zOD0MM9FtgQ1-!=q;VacSP3@!qcOFBl%hy$sQxGxb^?WlMuw^0Axujn z1IwQK&}Ny>5z&Ke?qWxn6jqx9DwXNoKHQvpKvJZGX)MkoFiVn)pR5^kt*ONl%u)i2 z#UQaUO2{Mz-sY${W3)^TwQQCK1Vn;B^97nRts1_P9xil=;}chq#BG!Og{%=f zT#9-E@W6$#sHP2g%acH$ZP2$cm4|60P)w_X4U~_0A-!5-@7R(S)x~)tL32P1tzUX( zr0!re??2zPH(>ybwOsDgp=D)Sms~R9eh{H@1?q_v7Y5nB8FHz)OJN?%usM^8z@#;( zCrA5gcyS3mzrIVrI3h_-f;_D)&6QCghx5$8$qGL@f^3}l6~jMdO9HoyVpxU?$M;xc z;f!w)LtJtMw2uS{>q^6(?Ry=jn!I<>k?(uw_V(k$+&ZrZd8+})=K+|&Pn+j6a_Hpa z2%LC4$eWwswBU3&Hdk0J{AugoRM>hO9kMZ#Os{G9CIBtayuU87Y!-;XP(W(D$Tfnh zD8n$gq?OLqAh3G0u|b=sNki9CQUt`QVFgBjPF`;`&61nwN$D~RnE*y;p0NPWFv3Le zfh<_XZ5lBI+cR62`LKvj7^M&UK4qT*7o@gK`EEI9G!6O0LYrFnO^DqUNciEYQcFI1 zP4OET-}|smKbj86<}N#rGk1VziGo+H;z{X2jCn4sAha;ZgVf+dL<2ueS-6Onjub^L zI-K0>Yb1hcNMkd|ob`Hcc)~T`!e*_4uqewIE50hs#W5{Jadk!(3wmX_=jRI@0ba%l z3s2K*%afoO84R+br};?BAB+~s$c075U?d5}4x8%?;tbp}Xz*mFa1&mC7CGqQmv1S4 zSqa@uAAlYM2`D`31N2Euz7e4w$ui4YjFK$=SdjgtC<6%Qu$+0Q`8DMw!$$|84WHmd z)L(zNIsZd)gR;`y1Lr0IIRfNM`~gg`xF!)605~we`BIDfITvLpSM3rd58SPse+~VW zz+%?|PVCsbt!(zc|2GTkj2}G(lkAiSz+?SLG0%P*vPRJneH}OZXwgeV7MZC2lwT4?im#)ds z{-+rD5lE-BU|@XdtDPaAvC_+kB+|=JV$gy>24GUgfKw`7rZ)-o8Xhjj9DGJ);ht7%h;3##!78fy;Y*|13p6q_u;966QCr9EpWb z9`e{kY{pOq`t&ia9Ad@DY|~IDu`F#ZZ%9MV6m=yIl2Cfi6b4NLI_KpCLr8Nxq)(2p zEHdMYG_qf`X>Hp>b49-cWN@a02=nto_>QK~&=i2q59Vn26d%m*cqrD4!DT+5J3Phm zW3f3Ky|CGQ(y`acBzMnXGcI4I z2vgd{;;H3j{os^al8I<)Ily&j8GWPaF%UB(QfWhzVf2Zm24*iw2$N7LYY6`v*D01c zK8b4u_55GX{56*7EkSDC3}pc-gM!)M9Y&S{{Dz3cjhT}~<7;r>kT0}e3%hE|jAGIu zlxV_NwNk_F=vl?1vsp`T2}mx6z)mEg1}hC=91W|PVI_fJ9SKt? z-)M4=o@f0zHuCAX9Z;;L2fcN|{ z?`Cs&h;{KkeS1yq4v4gnk^2<_VL{Sj4Qq}V9?*jih-4836T@X|){IHHA&q4}lXEk@ zt`;Jo{97*rp*}nh0-a8aAVRmp@`XNL2=4L_-*uIdH6Pc=c^@O6gqBC@VML1|=7P50 zk)Cdp=mKh&vXLDe7kHpp?v(3>aN=<@ibi;i5%CDJsS|tyMC1jTp`;;;E#y-xKs<85 zG}z#h82n~Zv*{E>Y|XoS*o#Hs+=LQT$ni~rU*F@fI~v)xhKv+1z%9j}VA2L_$mql1 z2g$GW5ASBYyScyt*_>5t{jU)N&0bmE9j^YOtyHR(HT|iSZ9=G`CIAC18e#Yw%`Bu( zLp~u;bsKo+6l~{u+nT0eQDp*oinK#@;7n&Xm772QgbZAX=+)ueqRh)Ic^jPh<8*~k zAQvV`XrR6B91o4%9wflq5cwH!DRhb@4N^`ZBKgp`dVvuGD^(<)u;CR;9fgt}XDzm( zKKhm9nN4CTY=rz7Pv{@CTUmnI5dP3e83eY~^@^4|8)N!OP`ZQ?BWebe;dsi$+edYZ z^+|Sv2i)wNNvpWo9A261Ht9KC*eZM>ZO7@f#2m$%B=9q=)TVp@a2H|R8w>)nMjAL< zcyVzE_m%7qzy{C25)8q7gihd(F}KBEFOodNtt_221*Bo%qY3BIl91Wh42PhpC9OsV z=K6VdMc9H`OF z{&wW#Ftou{vYOyCvFf2+J<;2Iq1U+CP$X0eq;Q4|;!*Q}^@-pYZFHJ};|pZ%ni$C> zFj3?>ukm+;TXFA2<}01SY#W>fhoGBSu4@_9#35YKB55OS4*Nja3=?XDn_I`rl}RZS zjBLMDs(G_x93_;jrJYE!t%gJj+8%!1>-&0v7pos1f{?d>!VhCdMnf3{n3B?8-0c-f zc4LL{uA`4HhfMw4&80!kQ+Wdk`Y1s$Or~v$R;_nSXLf zu{i5UZlz!Ezznl=@#IjizKK1^P-28IR3k~;KqyR%GO|@eSt^lSGgj}yui8izF@vze z5Yxy2uyC3g9)XdoktzGW;gV$Z86TX^CN4v~>>f)DM5H;uD%X7x-X!6~<1)@Hjfk~P zp;m&IokS>-uSHoLHb1+avEWom>`meC}owwP#)fsqT& z#WOOb#ivpla8$JVaKTI3!TDKiK_kKsgv25e3ecq|;XWv!@bn@X&gk7!`n^n3CX8Fj z#69V}y8J1CRM?c>C$U=zA$XKWe4tYD!dWhKE(xja^EFBk#7e$mt}TOfEE)qj4cMD$ zgj5L~be7?wxT0|&gd}v$C=gb}c8{cb!JTz$`VDdi$9Czz*S#@$(;HwR+BIV}U zY_eGKE$YJPM{qrmW!VLb8&{kM06bi8Vfr3yQSVYPS@%h!Saf=hK7zzUEt?N0R}FWS zrdkGQoEll&QWqIcP7S>%8v?N?nTvOOTna*PnnspR7FDK%M4zMi=x)6t*Z2bh<>3Kw z>^z+yXv8cs;HNw zG1uYwqSLiwhLLw7;VHr@m2r<8X@``-R6-{_9@fBGn8ld)-~qXHmdE3c5g`{FhplvX za!NF%+)5JXdAl8?O6=ksj0Isw*e}b|eC@pB*&&ufk7AzD0$@UaikAr~aGPF@q%zmI zrDCYYY#WA)ahqo0B9tu1WlD-L@g7)j60f+;HDn-}Xrw#Mm2$#ya*y51u zmh%@dUKvaqOXVXiyw2N-&4ANNL$2>%^c`=I^XjY3=HSk-UK*Rt*^9?rfR0cF!zndv zsWuh`rre8(`P$YjM~0ZD4g=^BXZjNp*z)Evrz}Sws6>P2sL95`QJPaVfD6MUFO8?a*c^yxPK0!68T5apN1Pa3}g@>x?dkdGruXYDAXW)NV3#I8c;A*jhxC1 zQGl`~rEWW_yG1UDOTB<~9UY8_!?<9&l7^w41w)2tN~X21+eH&{b_b4s3__q)i^u2i z1_6S?X>)KHNU#&?j!@@X!sA$uhj-n@?*1a1_tqV|@RJ}goLq2eesZvTpAx1TWehoR z5S^Q#=L$HS$No0rL>qYy%nQP*hwId0_QX=DMbnBs86XOwXA4X%elF%QN&rSk!J2@7 zrs>zB%n4FVl>#b0u|w!%N)j;9sI3!FC7o~Y+RWmBtYcstTjV#T;x&Z@Sr~RhfZ3SC z5BZ{$6vnqf>bM2W-3RL>#`0Ib7MEDA9vs<5fF%o)_^x+rGMYA!;yeE_p^~866I*2PB_Z9O!Us)p1Zl(|5p9YYl|KzF(xLbeP4GiQ8b}NE zmbuYDY2x=sAiEomv=!DdOKir_=6j#AJ0K^ATkOqwO2y5P{BG_8+S9X<$bnAamx9sRMyk3~b=A?`yoQgnq8 zqZs3(v5nL_;W`XT;uORbWsEjUix(s$6L06+d`W7KhDk1rCISz9b4Q_YfYTU)lj4QA zv&lL@Nz+*Mabg_msyjbu# z##rm7$PLue4%){d3THyZV6Tc?&69kK{G1R*1Zf8mMw$XG6EB1a4mXFY#)~Wc)h=Mo zkujt`C6*?TX$k9vNtY#+RT>@#84O`-=+=qBa-By&t@jb^$sqQ3?m@$Sl&86fS^~7uAwL!@~K#i$m z#Gd$0!+-7;VX|1532b$oOT;c^9Hq4fF-{*)=|NV&u}~tWLD}o|H-9RqP(Y@z6fQE9 zI1>IQr6`nx2q%qOL^Tj(#Fo#eO@_O9h$1m7!`f1ePk2igT^cP4M#$o08jYcb;Yfze z+fo1x7HcVTVf}vmtlS`*bDdEqoBgHw$yxWw=3?m4pS8rMgoqrNBj}tVh!R*g5MXKX zzyZkCU{;H%O;IFZgc%!Kf0Rg@vYLiuML6|K`YEMy)M$TqU{_0E4^1R`p_|jcG-^-O zSNDRz5TR>Bh_+FrOp~EXkgC**P_{UU($EVQ*HYps=0tk|y|e|0KwAk{NkSrx0LYZxmhy_d+Eu&@pZdfmtpj9=LXEYFk!hOkimT4l zQX7IK?;uu*cV2iD7(qQ2A~ZbgA|*--jWMxv#8Ym~GG8}|?5QkIM&yK{3ITlDE0N@o zoAxAH2`NX?QMHf+y4uV~vEg$`8ZB1@_zyP~r^<{7&Z@^4he}192Cg<8d`jTFk05{c z)<1vr$PZro-um{`Q%^nq_$#k`=R03I>+P|xeD#2-Jc0@~hs3y>1G2--tB48evPw|pKopMoOm7wWOFyo{mJ`Ze0}|N7XDB7&vUtY z_3D)?yRYKPpY#u|zHsHrUw`S9?Rk0awMQQLNMi%*H@+aQ*1`caHd2PDTEAvkep|No z0xKnSdniWCTuxa;jkFwA3D-^<%=mxprF9&e;K^`=EE-}&af__cHpGpo3;i)Hf>&3v zKO~y#9h*0)2@Kfs5x%9A445OpfL&rTRLf5RM8}TO4%v7@nq*7Ex7Bvc{C0nu%lILv zNl2cV^^76DOd>8v^=gdl2zFCZqL(a`R}u@z;R*fd2d};M)GOOl@vm2&zp`A}orYz5 z8m@lu0bXkP6}ODvSjLNSS^qs9kdu=;LEaDk3Gfa{k#bURoLln%AkpBr2V}vgxr|TF zKko&f_3pPm_+a~GeQxdFHdeE}1=wS&b%E3n09sy?hAbjM6kfb}?Bj zuQD7Nf*ckY+MK6ciUiLtFd?X@HzWm?q)xr6aVo^_88_CACU;_4Kj{vk5APLtM`w9rG;ZrA;mQ+NwpB-8__FVK*)LwK_?w@Eg|`VVko9HfH^^Ne zd``}mwqN*z@MxtQWJz}(%Psys|2*G^SO4Vd_DXr-$B#et+9SV?aZk+WeKKUtJj-a(n#bOP$?x}%#J9Gz?LJyI?}>n9 z$LB2?BpSENh_EH{RMC+|h&JB6otCKZsz3X|Bj0=cOKVxaYbrX5rOx{yUTUeRU-By~ zZV&%M9+1r)IX<`Y; zKlnA0JYz3lETxc>-Xd#FW2XzT17D&Eq=d<1NIlTIdjedG>;ztfMU!{Ep9ikAJx_UfuFOO^0#3Io=n8HJk(-1N=YQyc@N3VVF zmB+R(gy*mH4|%O6}_J>sJ2Q^zbqg0tJ|XMPk#K$_a6DkhUa5N6N}QJWb|IEQYFvVo+ypw z3^vak9XM+vByU|mghJH9C-0NY7VcER(!^k9aMn!{9i?+?ZXw3(z}1Rqm80zO4cGc| zPOIZF<~4D!9gnOv%DNk{YQEg2!P%kjm^gVWA-=!#>?emJN+7;*O^FW?$9@pbHYfZ> z%A_0B)V&w7Zdo9ewn+At7V}7>Wme3!o9mzc?2*@=dh82Vw!H>gitRs67Zz4{o#Y-Q z9f-~|f?FkZB~fDCx+qO|bI1AA=EDn(vDOdtZ?BFXWctLXDv|eLk18@(W#d0M?aP(j ztl~RQ?b?z?IJ|Onq=i+^S4?Q8{jL`jbCH2Y0!OHxZB1jBVm%YSkW_WZsb!!=|(&?z<8a_{ITs% zeOFQCT7x|}OOYteqaaz*L1B;EV^FmFpEG-q{ayIMDe$dZcSY;nY)(pQA)54_&PeB_ z7+>9z|F@UBh41NS>xHXV{^W)2P4YA7&0-E&*oi6o(g;m5354_*wL`N#CN_c|MI#j& z1DMi(@U`B;<(8b0=2#{u?rCrlP%mABqRF!8+?tl*%dKS@$6)8Qq2{Gsv9UQ4C!-7e zO9AkRYzH!MBMlmdy%?ITap~90!dIawB1q|MH%d|rD1AU)EpT$0Pi{VcWMYf%6ZoPL9fKsy+ zVh@ro27VE&4tr0%Nt$h)t|eDK@c!j~@WQrJd+hPoK5ERuX(VSPQb{ZMNcp#O`m^Qo zUrU5IV-3;)@hz^UWdqqEDY`f5{YJWgBpd2Tr{FdLT^a#aqG@I!f}h7 zpaiTCSbL<=?ox(TwE$Z{q`wNA8n5+>IjsfR?iag@^|)__w{QWglg-|czowf-^=$mZaR z@YbO%`pJd(?jK&nk~_w{`B0QCCzpoP&5?R@K0RW*6-DNRZsHzkPDvWNPy%2D_W&T%Rqw zw}z(6ORSzh;pnTTEqc$_$kNj#(@WEyuH5xk>lt~3@wkRybH3~1G#FnQA=UyxJshaxlOG2J`34M7 zi3x97!$@SOfo>^S5e_htK`(3}bAkyTXm-oNok&_9x*X<$z!r}ygKWY5xns}ejw#VAm%3 zX_)o_3^kEh4Jy-q#)lJVk&Wwe0tLZYlyv2&G2R2}5JBuo?D`;SSvTpzj1{8?J`D$e z@S%VsBI;9=oL^V#Ae*i)Yq?AVZ^*+xz(6qx35g(o9r#2IME@9*Lv%oBv<8u4_eK8b zwO6(k^9!}U4z)$@xpTXnFPRwj#?&j-@#(kHj(Tm!)izO7qdc;&TUE4AkdnC*e74XQxR_@NP^3KtiC z6Eh}H&asS>p^}8W2CxW|qdNjQ=|A$1W3Ec&gviMMC-}`%r~;6h60p_Byn^HhztKR$ z2=;0kpCYLP#6oODNzzAbAM$9EFpGb+(k%_2fuBL)kqEf}{2QhWYZi$BsciAo_Qvgh zdg=KOdRmnA{o1-GNncO$!%~g)(vxt)Rkm*F2%WFR+Uz424%{J|Gg^_8Gf1WHC2^x` zv7*h0vk_BdNqw{(?VdW55_n^OWOV|Y2KO6OD;R6mkVBf2M@?*-Vz=>DJSRTLLU&X+?o%_ zCNB!Bima%T`LZuE-PLk0LY6aiecsyMBCh`O>u~ zucjKDPygxZT6@uSdBkXQN%cza^{DltcJD*1`1Z*KT88plx8A!@n{knuF>a7jEG?;e z>RBO^|KK#YC+VG&QY}ji@L_IlORXP2^;TBMTI4ng^13vEBuG_8(7~w7oeIi_r$juK zvPuKtsYM95alu_U_AY1~zH<$>Z!9{3`P>3o7wbU}Ep^a~hj=OoE--FsN*E!b8COEY znj3fHEx~(IgfuV;2y)PP9GJKhHmP~BsI@G)R3qJxXe2=9T-^8{FTQzv{PE?>y908i z4F98|j-UQ~bJWLZZb{0odS1TgD!m`PLC)OvZ4O)&o4ZO&KYT!XzS`oVOoO^Qnp@Hx zy5s@flJ+QRfsz`!@vc{{{K@05<%p%|T9u#}ivTZw3a=ndg3%?@7Ku>`6j6vEmE2q= zm0LjMQohYh&Q-dODBTqc1U#fH#H2UoRho_X10%LL2FKWQOMDu6>>7PBQCcIh$R|){ zS|CKR8x?)#aXVxg?@ph%)0dsd@lpMi#s+Am{h?FISfCeOV5@jFMC{q552C!UY$dg*zqm#wFDhu&-7 zy}n?QOuV)<>9L#^kn;_4H-_@F-{ZXZDe^{0O(w0t((7#z8sDDVus-_po@%Y0y)U^I zUGl-|{h=TK_J=S2yV7jKAgM?OCLurq*OnFkMZLK|e{ta~=yX7OQP$*nZtqzHQ05f<=5+d(>^bIpEmh~d{r?Yr z>4!ItfBCh4A5KDNR`HUz=reGrNEe4C`FKr?ZPO(yg+R5esh~!QZt2<|h?DZhCOeD{0=VeIR2`-~oFWb{)nH|Wn zc1(|nhhF)Yqy`_W1R=b|SKMZy8y}*T5oL&7;BM`(E(*b!2#tM!AF%UHPQ?Lh8n<9R&aAm_NqHwW7G1JaU6J02p zRxdh^rGkHe{n?kJpRYvRoU2#-@M0y_=Dm~Oeev0R&Wr4%Pp--GBA>r8OHmUnRjtzV zEwsMtqyOo~sBn+o`RUjG1CM@3nR<{}P%T@@gLEVJ6sJg}6!UgchCsu**c5=&f`SDD z(d`*nwHs4?Gq^!Y>|q$}m8#T??jE^{YbAum39eLl02ca=xwh3R&RN{`V z$b%Uo$EFY$+dyfnZ%92nAtxVrMvb~SVf|9Re(m`9QU{U*!{e`c^e=AU$8dD~%NHZlxitwT*6@-JA-BOn6i_wXH<0J~5iw4L$eU~V zUq0D; z-uc#EB2Q)3T4XAfPP4diS@vs_w0(=Q@Yzi|!B!t$WS+IDJchGWizoY)7Rib|ZvmHz zpa`8}?!Zo`|6u85OrA7svr&2X_UQk(5i^pb<2S#Iq{IQ2NBb#|)Q&7|w_OaNn-}UC zC=V_v($WM9UdU$0oYg`FP8=;ki|Br><$OU*!C0~gwBgMsRG1R2L=tiA53);1hIfe# z(bJ710*gPFbYeBH*m3xM=^db>+-5jIo=g>TW{h8Q(-caS=qz9UX`Wo=x1$^1eKLyf zW%|kH$7`C@)KO2}5%!)o&l8y~_b1Pu?@2%TaC3673*T|zPU?xeb?z>GbFgR|oAmVJ zuP~#@fjetzvPrV%t2aa`Q+dUk_|flQ%1^4}E;(Pi(VSgMeym#!n9 zl`PTQO?L9QGxzaJxkJX7mj~ozE~_>rZEEx0-L6Rdmmi)p1t2&sE7q5M%%`IBbg68U zybnzt{36dub8qfZ9{s~h^BsQe8`@G_Go^YK-Z)aujgR8dPFT1(n&V5j3l{}j#a}NP zrXh+*2(C`>&#~_2TAIbZ44IOIX;)JU*4WXF9;9*g(1;E3h%$-iw-XVGgZ352h?p4n zfpcBFTtpBr;>tMj+Le61mo!j{29_iM{Oh?8@duD#=&bKvJ38}tT)zDArSCtN6j)Pv z9ZQd1TkvJJcjPL)>=iQ=VM&E~!TxL}^Xz+vtc9Cf)e3S_|CunP2XYNJ)5MtIxZdj` zBku-#{gb{-RFmXpFW-lLNImbT>d}9?H2(;WufK>NTR6XsuTiNye=16hPi^LR6of9> z9iog|Vo$QxN(gdLvYJ`_TjUq$$g>{Jy9lgBegMbNR1A>x;Yk+^>uMhdA@koimW)33TMvJ*bV2tmatqB4Nn1s9vW#Y~o8|fW5&S(_jZpKn_I)qo2SuGMN zG&Q@4K3xq4doZbSRU)>d(H@2{Oz|qrt4zAmN7Uytw~vo5pZj*{pB}xECYE_iKCP6K zxh|VRiqE#FcYC#a*B1~E$jPSwCZ2s(HYb}q#vc@>U2%ZTbMD@2UzNxvd5xNdp40OH z-=^oExP9r+tmOFij|>Gzgp)C430l3T#it7wp@$e5_6Uv!q?b>r-6g*yb}KFuCIrDk zY8)*>O(lTwDaCPm?X*fwR7>5TWP)*?EIR~;J4_O^B<03qhTx5uWluSlBN*Zt5w326 z$?-a>)qu18d|tkMeEAM31(fg z-7)`aoC^sD3(9Djs><}8 z%5u~EH`87ZB5 zz6N(ClJg7<$R8)sx0X0^+G7{ZKxRn7}7=|ef zZvDM-B((Euonz-VK?|j=`=3N<(PIxG!Gj!r5Ky>{o^}KUdq$y#*CaH_tbSaeCBc_O z3|813O_S*=qTV?^b6F*^Eru-&#={TazQFad`>9-i{Gp;~oqyPgiqoqyH&;@{|B-pV zMa`AiAQc>U82eUdPlwLT$UeVy=wzKt5xEoL;nk$YnzUlQu1$-#Hq}d6c$Eix`%x)L zPVne=Z=C&OIod5n6dbCwR!i2>V7$S#i{^r8g1~%g37Iwmni&SpMSO}fz#`9*#swP+ zX#s?QQWl-T*hP#@x+Gg<6G^+6OxP*;hTH;<4`i*d+Z2g#EvRxs69amcDv~xK{~9%( za@iWGtJ^>S^2f)QFZ6bF<3B%|;i5AIjz{FQ@Y<(qr1w0)D(9(Byv2_AgI7=Pw9BYV z!p-LJ{ZOIqn>$G0H~aAFe1k02>9th+)gHsXO#T9s)a!IFO^RRo{-yJtTkjlwP4Tez z5P}k4n?P^_IlyMY8k-dJU@&bdTUSE5h<%;9T6W6JMF>2W(Tcb~M?nO55Eq<0)U*k1Ik@xnRnv*v2IJu6DZUTF?}f{!NDRw}VJIa zxOwj&B`6};Dpok=wN==jH70epleeEsp5m3@L;vHeht?qF?fUU=zs#&c(BzyO2a>0f zKho%zPLnNdd(W7vOFuv`PWUQ=?d`mHBSJkXT1Ubu1|qGGMYHLw4C@txz#7k|6-@{?Eh zP_uO@n4XM%sRhIyo^}N-PS4-IOc3<72VseIAjSNyf^!ZJcsH9fI1ii60n2Tv9H+T$ z-)~JaDy(b?YoNlE!PS?a{N(nHI~TowhJ|2oK$#ketnWs}6W4F7dWM!;h8#Fd8DlvX zC&JI6ghvF?F@8FN#wEi1Ya8=j{{-AjA3cX35I?r#@>`d78EQojE&axtNR#Y2{DJ@* z%fDjF8NG-C29j6UveDpgDuHC#eF}F`UX3~L6VESuu{cYWtuJ*OSX3#!f=hY^AS|<* zk5BDq@4)80=!WCgS%jcN0qpS`ze9=D`y5TU%=c%XF38l*PmhU-fmE?ayMKS^vEN?c z;dT7WXUvpptU#9I6iBM3!lLVevnljx>_9ZUwyt-znnZ%s8TyZua08QIylKc;IDrzT z!+IC88}sInQ6@GbL6ftlFv4KpA)vMh0^v<0(cnx#n%6v;80aF1JIUJ`U5EwecxYzc zee-UvkJVH7<0mS{XDI{!>YmMk085p&)@>rlA5)exUyJ)vlao8#7q{-5q<-$Oce8J~ z-HTkTp0Ft$sDSb2>24PC)_jQWp2gii-A{POOXT{CBaUx4D1>NV8fZr$9}L}r)HMO~ z2F@ooCw_x4smBPXB7;Ygf6%)ekqF76QY+Sf#iuk*($HeH5I=_W5)dxv&4dxr*4!##b4sRXrlAV>@i(b>MCYNXa3FXMDL8E22cY>ZNm2+hXbilK5RAt?a)BJ zl8m)8PHuH@7uH1~qnC%2&@%kZG~6e+0tJhf2tW6cL3nz-b~HLeC_1sx^wSUJGzLaz zS&|;Vc%kLs)P(%aqsy$-&G5~+=}ZXciO*ZTwo8%G=lg|Z#mzZuat?KGU7+IH@PM3L zOm(t7AkR)%$YsCTu0)@5f|eA>R-zbt4Ie6kv=3hT!%G+ZsT{xgZajRE8SCWnkr_Bh zAik6~7@>TpEG>;=DLn!fq$Rm4rcGm;P-q|;%W_;pO5=#X{(wP6-rFd#(1*t|#H9e@ zXt+XE$YHzK?!+R;A=4aiEBg+p5Pg{#5^+@Hp82!8YdZd`AW>tB@zsv99CV}dLQ zM5pk|U1z(uYd0=`g11Z8o_wJMr7yBaUilR7WAnbte_JBd+sWvp$AD3E4HwCL8`H@dvgI$G9>UZiq$%%L;BJhvk-$ z*G``T3DgZyZA`|n4?!sQiVqE5yJpgR2&`aZ93$;jRfB8>jgU@HK?Ll3_ul`0`}p!F zIv{U8@qE?WRwu*EHCc+XYJ&MLQ-r`2_!+-i$Go>rcoH_#8Q2^;0-O2pd|1*WXiz}$i4M?jMq-3UMQtuy3M0&(CtO`!=3bfbrOat$dK*prrhAf|#< zw=r`;bG9^#K`ecS3=F&8Bn|o5NP~`L{OnwR0XxC`Ygr8Ge~T_1Ty{ZPV+f zG~>McJOy9>_0j))|J z%bX#Pqatxm%pvH+DmW&Ho+RXh#E!#px>iSI7P1(s%UaGf2`U!~IR~RS!rlyiW0eN| z7M7F5R63n*`^R7Z?I%1RE4LwU#fuOxE7r?8?R1F&S1r}6&v0hc;<@_l7r%P4H?iH^ ziI$kQ?dQwcd8cd+|Ix0*s@A4ufB#o!cY9O5J@)YIz?vJl<)!amx~m_}_2X}T!}69J zi)A{Em?U0$Xku@*46z6RA}C1X;g02DgCZqqz8LyBKq$0_0C*@dY+4%9ompGy%3kq3z>LK;LQ#hIr7y8*u;o6C_xE%jDhL0bFz<+~qW(U$&)FQt;A zf<`M^H#2NhgLQPZnHgBqt9*w9+T3xhbzY19Z(sfI zuYT+GWfIG*+OpY0T%fG;hA`76mlB>*LC5}``e5IXe#aAX{SBab0Mu%(=VK=}87Wge zJM5B&DiukmH3K14QN8$wYS?G?+eW4St*?Ck{jYxY{WH3Z&8Kl0o}4Y@x^=SsOMmzI zuY7BHdYJ-DdZE7+4(l?m%;iu%$Z}w2RfZa@T(2DV+uorOdBdB9HNee}1T<0x*@?gp zGP(=*oQ_w&3hNtzoW!Ehm9W6V#W(6SqXcE>U`Kx7+RZ?EV$E8LA4CtL2|vX1&~hk; zl5M0_ftA98%xHs*E0C%Z0wW_)F19(e1`l72J#+NVCqEyTZ@l^X6TRBeCmLe4{S-OM z6tA=t*jkpmS5o|L(EIGu-}=huHedbfVL+Cn<7yXv0g~J;-yI%A37x$9)t|rjxvzZd z>1SVGDs^Jg1@sbDILBNseNMy8S81lXmsR~k-?{5G?&a%8H@*yBFXScOkV?*vMPyCN zHn1Exog$?PPA~*k(dKSp&2zc~6^!XPr3?fy*Y3g(KALn*8B|27tJiU`DEbwa?By1d z-3UxmdRGz!6(ceqT8x|rjd6eqxpdoieCFd%aeoZ_Xc_Z|!RK@-$!cZzS*5)PHjOnS zz3;ibm#4R9JbdeJP=@SaOxnPuqSFsq3 zt|-wkN0Qv4q^#+J85xa!#5DT>K{Q-rEGe=;OktE7yA0R(jvI?7aI6E3d4?cd`7Sex zr!jVj>x_6w=WVU0_nD)2E`OT0qf3ADQjIz9Q;F5Hz`IaMX%;z4kg~TC$Y8CTyEF3o z%`blCbHDic?k3sGr`;*nHx~#2xsyC=JsiK-ULDJ`&p!Qh=9A>OEJhHPA>1KnRQFH6 z=zJ@>I6n#Cmiog>pQuSZzBZP`YYlHg_4gow>=amn3{7$WxA^wiS=bU%CB?u8mCowz z@PdV_xJU^ICnGSuRGc{LA!-?96w>S%D&*kX4J=&BX*2*BJp5)XFU)d~q98fGacmV? z((0-dU4dFd;uv;H{dDye*jP)4YN9?HGZJW-GsR0uRlqleD9CrXnaNVagth(m-68p_ z-67fCB=4V;UC8EaQ(&6!ZqB($PTt>r*w26ND_{K0_V0Om|CZ=AqcKwBaw=VoWQ^3? zlIEM1D*5?=UthVS8RVQ3(g+=8z`6j@Y37!1#QKf-)sRAY0&@ca*C%1>70|$1lW2`N z0Bf9;VfE%OTOXp@*rj+3n&;!Vn%5V6E4grN6TJ?z1R(YQ7D<|H_d$$Ms^n>LZw`ES zMA!P2T9kay@DE>p!@TY5N5`M?d|bY9`=KiZJUjW)%c!>3l$|QwO0&%}`JJ6b6Vr5g z`swYHeRoJcfAaHsN)C>5Pf&E_-el@LHhwmK{@(U*d~16+o_%_m*5(tQr(~Lx20KpG z&1I?0$1>sJGfZ;QHa_vEKfUqEen8i6+)j`+&TEDID&HdtONdq9KPYL$Sb+neOs+@1OfTBQLY$mFK=~L| z)?S|me1{L7`(!N$P6(n2MNqQ)AV*qG%xG{u4VjXY-aT~|FFd7DTN!aPkm=ArAvK`E zY~t?_V*w1Hq9Jdi#8R+HL7bCFeoo#m0kSJj^0+$$`$$G7usHOTot99h?yhq3gDOYB zV^{RcdvHE>O~|9a@6(gMHr6@7U_T9{ka>Ic>@HczvDCdvFEB=YsHfLc^7QtYY;Tj# zef}3G<3<1TS6_Yg{oUIM-?m5R{olR+{@ZWAjrTa&o{a6S@x@>D-3NL4>7@$6vSGFm zv9dz52FevRR&hdA@$Rxm?_Kif`%|hoViIN?kozsu%VyF6FC|I529&ICyI1(G ztNzuuzPP(kKDRq7yIbP@?JW^+?{AxtUwr=ayFdQQ?qK}Y^7?wbo_@MW1(!N=o@w^e zLbFV~=g<1ke|ZKHE2A#@LqGoEr}=5EC&V-(4wP0Z1_~<3(|BFOZ_AvG$Ph_74*EjS zvG{z6`Q5<3N!Pq*MR4<)1#KGORR&I(~^37pX^S`?n+sH z^Iw1Ut8Z=3OM3g(w|@1jzxoZ1)3%;^dYP!x)ga#I<;2v6m%^&1uVoc`omlnMf%$vf zT#A@;H{|{9jgK#X$`i6a(Sbk^hI2%gp#wbyOz2d>kfz=W(V0;)@FAh7hm6SrFKR@& z5&VFi2tqkYRy59t-7X8zn_@KVStgb>iV&8K>#BJky2QD5kGrXYtL#O(icnJ`hyGLd_;4}Mwp4&po_*i~M;x7XLVXUE(4 z#rpfpUN(C+cJ%4Sngt_!pItBR``Ug_HpFEQbJF*8I@|yM!kv&<7dRpR*Dzs#WZ<$B z2bmjXvO=S7(>$5tf)5=A%!KBL2Lshc&W~gU6_vyd;pMTgv?0-2BiMNI1{*gLNi|a4 zeC&pBcO8%-D2@4o$890TXj6|_9AaMDZdWgfC~{5KbMnUV(LFmL*H$^!r0FhM&{@CU z3$CM9Oy!kSlMklXS>8()&C+DGDpyjSKOc}$^*+ZI^pu=c=X6W)4_8P}FBbE;Vk(-< zzE?4p5^en6^PfP7wI^M?Mun^6T~d% zuXzSDR~nx7iB0x+39nNu8sC-KUEa1*A5q}{Dc(g zWj4DU;IH&UBZL}ivgB0wDq5U^LTXyw!8KwD^<4S|fhKp@7=CR$AFT}k2d-Q!Xq!L* zjcvGcSl1&qoLSrsr@im#;rqbBr1$;y z-FiXJI3X`WN=Wyraj{WYS&$=F_9e0^_cI0g9B@PWC&siN~fr43g1Qk~1qCj6cs z154l2`xaJlomE%n(Sgi_tDkDfo1SEUZ%jQVvn?(IbAUUp4nnegwP;Y4a8QK2jznm0 z$WgGt)^&@BpMfC(Gl!cPQ=5kQq(@9xFt&?1Rj zr^-^x6~LsL`ZDw$Hs~&S|H)6LeP3y0^N_Yr{;2#4IUw39A>_T}&Q$qh;dt)XYJEAa zGuJ&#)n2U@C$PlG<)d2s8%4cd^K_QIswvI7N_tiebi?QK(3k$@p8Uj)j^7ygcMz@> zBP`wgst1o1&mwNMxQ53&C|p6NS9uaRD}%gwx-FW#nQIzd%4Qtq?f_hxEy5N}yvjGNgAO{@bHA@U;hY)XQxw}i7^_$6f8L^3UtXUw#n;zepO%n&bllVY!mJ?e z`F!=F73ur@>}8KZl>e|-EB(IdW0`aWxjyX6-q1S!`07jdq{15HUZO!$=0&3ji)IO@ zmuOUEhqPJ>(z7V#hvMX{wU!@qr{SYQ9J^VB7N*!u(-ELEq=MozVa6oT;OF`*5>xoW zRe6##odh9?euB-l0At)M2p`X{k$wQW2zF|CZWpYn5{dN3Ba2!k?J!q$FcWWkd}J&n%vtf%Du8G9{TYQ z@6l5C^7Z34i7yuy_<=yBRL}C#SYJ@GMivhKoVyVTX>hrfv3Ie?tTlmC%g0tj1uvsF zaW;c^6wffw4!XO#+#Dv4QL>q5N_(J>;c@RIxkjEf_95#T7a;NsO}^_Vhl>zq5a$w& z1$i`Qe~mO}S~K%C;yqfUfeOEB-t-3beOp`%mR zSH3{(K891`0y6p#-L31f3z~?H8WZd{Zd|_iZ`&H{+XqUgLNRd{T@~S#NBGQDJcx*2 zmfGCr^vgc^-0SSO272^@(=7$yMEIH(^yMFYM(Sn+j3;NwZk5f;8~J$Zrcq^x8`du_D_d z3|<|B(#&~{^yr50iW|WsB8iAbO8``E5Mxk`jOcYo^dG-Hx*rE*1uUk4(^94|C9bkh zw$l1EokGg`?2YJCjzN7Mk`{`0&-m9^(`Zlumu4?=lrOyWUoPF#AJ#k9|2MRVVfC;~u=YW)tCBoaLxvYh zz-Jp+tY!>r0{I%d5fRVouy{2)$&@B6ZdKNqt@}Zs@-?m~24TdNS%4uT(b;HrcYQnb z!Xp0Z3wZSwO3TQGw(wWA_T~FgU=3&b3v=>$X%6(@Lk!`xtI5 z%RKy=n~Lc*T@@*lq^0kdN)wT|xG)nz#low8Ib)Rd{-_jF|UXiHd-i$pVrDMAUT zYN5f9v^`rBG0p8nB*!NiBV@ZPTuYK&v0=q1V3O!6nl#RBy-agx1FR$1yMwVE%fN(j zfD9&dSdm}Nz-x_6Afm97dOyN?-aR_HKL_N-PyhA_1`OsGac-2$3T~OV?G@9xx0g$^ zu-B@2eUGb9R9%xNxXvb)Wex`_Xp~;L#{J3fe0m+$ z+^D}y`E7E-Lhm#NO&*jB08etF^4V+7Vl=#%h3a(l8IYU6PldEI85fEZ+L46#$A9qk zMxj-t;iv#V(j?Ql{PHo}V~X*?a6m;yoV0Ml_%CE!X9$M}&-eZmSgY~&FJ8JidkD)T zye8M~d7!GZ)eI39(%okeq;4FM*(|lmS~MIaF!zG~Fr- zk7c4v&S!u3|9}5!%(iDf&)$e#b->-QyvBtR$sW8ghJM4dJK<~^Z8^h55)aWLB(cc0 z)U}Ka6SC0^?G6a~k7P_Y2wiqp5RaCl*I`ESnHia+s_?4^i`cIUrv#}XaF^t``&D2K z&HI%-*Ia7Z`_x0!Hf0j6FMFV{fe&{v~o`?QIllFgRGhQ6u{%V)Ci6Y|c#=+-Cg z{=S8FncI^|&^al!=7aN-C*HjG2juAEcb%S)lAwG?hxleqFS|iq!^Fo!I?VN05dOJJ z-Mq}f5Epn8h7us*&1J>(L$&sQ{^0AbJ!gU%KRKTr#Ks$I^syMyJbbD;m*>15@dMUu1DahcoZ(x=Sr_MykuOox?A2(n6?u~o@Q@eir zOJ6aBX5A?W!;(!(yL*d-VkYy4Gs17-|Hyc2=dzhGh+TvsRH6P5U%`OpX8*?{*fRLk zxXUzOJzC58>0EALdn1v*IHY1~OqL!iM~l37Bma7LiCjCreE;6C3dyDUX-+NZC988b z4^1S4r8XIpWOpBEyO*hvA)mRK&w}%UW0-BSrSdD zQO-Z57hd|OOZTHJK7LsvpHe`>@z;yBa8G$6r)9q_GcXCh4V;w`w`E@OnAR1FxnBc4 zhM=O8KTZdPZgPgR8@d>5{8K9qC4iyb5q@SVNnHilIjCgFgxvjSe{|zMo{!5nzWKyY zD*I=txoHPLCzX!AEH#O0YFPSQ&gXq(R-Y7sN@3_ua;l;OUg}L#7vKj{7YnYd*Cgwj zuUKi4lV=3Ke>&xg;9c&Okaz!tyg{=z{je!}#*KDDYD3UN(X9l0!GK&umXpPrt|?_J z+~7G{C`|F=)o%~4mfMiZi)LT!TJVX&h8u@NxL5Rm11uzW1r#8r4HlH}7!KVf@>8_^ z^nP9-mya%e_oXlNBBaO@&}Gj**Lx9fEHlb;&Ry?&J^YlOURK#l#V1Kn^Gmeks){miyvZP<9tk-jM$NJ*oRn4m)*=b9Vt@ZB>4={#NDxlRv z%xg(X>69S9T5Le>5u~6YQCz?1uie)RWLVQnkZpQd)E&s4D7^-H=AmcRGv=YwQh^A| zGH>RJ+J2hd=56{?Hx&mVcYO+?owW2rbv3O>W{q*GB2Q=J%XGuUfA#$RXwm%&x$Sv4 zB2h)L%rb}B#*1m_`Bo+tLUOQsZx;4g*8#Su#ZoYvkt*LZ{u3gQ?E&%NPuD2Axln>w zr<$}R=~_~Efcf3!*T@)tnS>0v#d!g+%ZJ79-p3AowCV3W{^ZSRH#g0DOZsIK%lVuVKo~xihH9tv0nzJ@ zC|R_=@X~iL-M1gxr7x3vg{88;m?=VMl`kcw#)XH%M?7;1TLy=YW}Z7aiG~?nKzW_F z-3_wp*@Z-iwAXXgkA=q^!G{gnFCrS%dlsXhB~D9gh?xR{Vwgj2A78%DZra_4`&7AO8q`a0HlB-Io?43^Xj5&mn>utP#@S1Peywp-aIz zvL@6fX39-HV|X+r{sy=r=9dQLf1)%vmQqlKofoWVZ5_>y{&dSnl6Sy|@% z+P+L~^`*8^)sfYw%O{H#E4jWDgkN~{@f+{lx1ZPbg#1qS7xTY3Kx_&$& zBPaVg*bD_qg+AJ{W;cQv4GYjOA78)!2js>#pM9e640 z{lnlE2w%Z4kxO31MOW=@c@jE0$lZNQt-hg;81o~exi##%MOU@HM8p0cAWa9{y3N5O!yyPI;`UYi@E?4m zGOv*9K1{PiRO~r~!WAIG+0mgJQ?86kFax^5U52i?b7WhpRWX)QvU2` z@y&W9zXtjQ;w)JBypS$0tU2y!StbQo-NT_-1F-o6N^Q%ODpg+ld`R17+7&r}` z$hd6`fJQ?+;`Yz62azmuG%d*N@Dt|PX&_Q!iKx8iMqe%rmm0l2tnBNj{0~P*59EOC zmW4NKct$0gRFqn!-Q?wTKfn%|P@a=9YqG=V?L#FhF4Lf>zRr7L0?&zpb&8yXx6_!e zHu_bjxzs7e9x*a1)8E{$C1L)FUH(URqc<)LpBw@o(cA9OuP?uFF6;@dk;@an05b0o{)N71Viu z_FyiM%hxa6e)Rbw)tjI?eWvpE$y-savty@rbJ=Tpb5XKPAgPqizD#_DIrwmyW(U3R z0UnA)eCg9te~-+&?BOMeA??G0whkmv zW4ewG3$CFOQdIvQ(PJ1ASwy1~<7S?n9z1tHAR65_?u6!-iXq+^d4t&5i09>aE3YsS zD#ei)2#BjPQ-bG@jvvegvb#e56Ko+fZFUOz+&83_79_XU1&gwempVlJU6#5cFN(#Q zvRl#ymr0bE7a<3jbXi7|Exmc~(u+kguA$R-R-7&qq;-9#oyz3n``6qr;`0a|a!KYI`(EWbi_wvb}x-or^(kXvTG_37~Rshi!e z;FArv`0|!))!k24=!dwu2S>kq5m`mAKR4GE|2qwCXX)|;)2`c~zFr`g9>9-mw+wN4 zhA5JzgwrL%Sk+&qhzwM(keHjP-U$1A7##rC7lP@NtjTZELZ|Ca4d0|U9}Socz2bOT z3u2=cglVLG3e1G&{dyWtr%NZ{TgFP!L)Ldk=toBn>H^u(8~*c4Uzh;6l}Wm{@LQ%e z_UzT0`rFCFyA&waQY|6L;lAuC&L>V|&yV`~&ReRuv1kk{VyI@zRYlk`Ay}6xpkFfa zYx(^H=s?0ul{GlSHR6}~toD?u;J7F3=s0iVuU#$dD&v5( zoU@QlYEJ76pm3}v+3trTMro9yv)zT28EN`w#}Dj$?7EOAuT&7hvd=u2BE|b`;4Aqw z^SzP{cNK0`+vR$GraA9{XzIzoIFV8gfF+iGK*dsXs6-fmEq*g&3D2h~D4;DrpSWfzjdKXp9^b^dP1IyY`&K;GgiF z1JD&+i?;Yg0s{~GhX{Oxf5U!E3;;zYk@ ziF0#KNtl8Rr?j(PX$gJ*o%$K{pIMLGmp*ZId!<4YXFGLbs3=yj^d`TG`-b7c4e&ZZxvZ=d{v_4JW*;w1P5VK14B6Nb=SBb&O0!6~Q< z;&v-0!67dlNK?<_VcMc0NL>Y=>DO*N!1J+QAwQ`g+CK68mrD0Jq@(S7FTMSckjXPU zUS~J+6MHEoTPgUaMSJC&R9s_PYW6*xZw~k9ea}pr364uIg8$ipyHvWw1K5FtXz^Wo zn+7jhJVpjlQwmZjpUoyAUxyXkBXic*Z3`_HZjzDlwhn_MGo1je^%HQzl!qsPpVe@w znNdL11|Qh*bz(?6h>|be7HQ8poLWH8t+VKVxc(q7kaeBD^WOFfvtDKaM&|J@`$)q| z!{yD9p?p5L`s(*Y+l*vxIQRMjldikqHDKYfA|<+DC%;0xVurW7yro8W)R zFwNf=mdV+p-qv8Z1IbxNEQtHa8`tWinIBd?kQsa(=+i90Yt!I|T5p@(84%>*xUkm! zvxuVJ^&nzxc6_X(U{0Ggm0C#WH4KD;&1DxJop#ImzIS9UaomJPcY> zo(}CL+r#vYZ4ct3S0Z;kHyvZMW(jdcxSb!=FrT=g#FPRv!hXZhGA^rMKG+LnhkN3bANv60Y2A!)Qg6J)20-O?hA9Zw7&xZF$TQ}w$)NTP3|Eqgp47D z^7HiY8h_A`|3L|Th#NiUEzONvuzJnaib|-wwJ?8Zl3zj)zy1Bczww~Y$Lb5YnO)d* zNVC^*)ZOy3?1dtfT#f3(nCR_GS;v*_TN!#yP@;(!w`Z3+0C}uKxuqWWLTs3>xsvm9 z1_|=p_tgh-=!852Tdh)w=z9bqg`q`Ew2q7qCnGvbRGAWD-dQLowF;kx_`i&N5KqeS z$GZ$a$c}L(ZrD)6uHM;1j`BjR+gkPQJ{fVLBu=a6l2}BMx|dg5%8zRg!bo_a$Xcz1 zz1PUVsaGxfk7WuzTS{u?A--){Z=B{TrnCSPMmsOTPy1e6UQP zQhM&m`^0tVds>0*|2+TFwM!4QFh0Jm$u8mK5I0ASU~zxmhW~s>8CUF@_-fiy4Tk|_ zfEr-DlC(a7>UJ;Fh*6}VBq}Sna)F)t z@Pj`e+i&-c#~=N60qRU4G`;V&uO(QvQm%TPV@17kI>SGgc{eya1^2m%IW4a5u}}I8 znVVqlH4=K6_MoSe!(_60%|u5Yn!kGPK049Q_>sLK^m+S>araO*!)ille!_K9fYD7; zLI-s5WR{BSP&8S3W3wUjz^`gvyo?D!aSB9`*?q~9R9hO(NV*&aDL>?B`xK07mfibZ z`z#K~^-I@YdOmg6r)8N|pV@`DzVu4oU9x7Rf*5-O#PvNFc})u06A}0QN~?qy9{42t zQhD!7y=^8zOkSESC3v@jy>q}WkIc;{9{T2ky+F1H?Rt z7jIlBPDFEIbZ{8MrSXpzM`!Fonk!61NsJf*d1GR&WLdj+5OJ(>Gb*$;DW?imoRUM_?wQF{8Vsm*6% zLcxnH2lJt3+sWKUD&>5n-Gn1Ni?=EWPI#rfEcdjH!)Hw!pqo@J&8n~9##OMb>ABcCB{L1LJ(5S5}(&qO6;mwzm? z=yz(1GAF)nkXj{UZ+a*gZKj6vjh~)?nx&>X^vQOA+{$GAB=~4#<7`yj`4}6*F~VsXp~oc-1LY;qH{# zSxH4Gq{hf!l*S8UoUm&l#sP7K-&mmy;*wy5u!AHwytN7t+%ROxP!HSiW%(f=_0%}U zE*=}K_co;boJBwLS)GryPybEs(rbapo%?0wlIr!14TwaPq}Wr}>u_txIuQ)gQ> z_oweMh?hgBuy|s6=GxB^nfS-ehyL47KZ^@wdqN&2@!ZpDtfhjg@n6}ik5pXs?VKeC zpdtm7{j)0yC+LaCoWobXJ0O8D@r{hH$y2JXiGe*7gokw+y^f>T-krf}zCsZ731*Q9!4;O)28~e3bgwp?^k~{1bTmMLOP1Ho0|!m4Pb z)%{Z=#?yC(yoj(`RMLcYW!u_=_*9k`2E*StE^`eq{DfSsI6W@A9We$=fd@mizxFsU zer6ZQPDFk5*ppwFy6HVaXkA3l=!OGLIbXu3eNtW>aEmPcX6cvnyDU?NbkCq3r&^bV zd7p;3b1ditFYSAw3%#&UdNt_doxbqW<2OE|pW4UA?_&0?KN7Z^#5p z%sE<11zL>%_U1zmeg%?6y~4;Tak-$Ut_dh6m^%6L(0mr0f?~nS!r%zAFlEi95rs$y zuaWLPK4e2@zOscNVxbR8#=9t|0!$z^AM$#c#hffKx+KQKUqAl%Gdv)dk1qX>=f2%5 zekz}hWiRV;O4;diczG|Y#U+E`n)%d2f3;R_12hU) z@9GfQ^$xP`L5x8k>I|VV9`ix7s)Y9`9F7FZ$9~_!k~nN5PK+~gir3dZ%L~Mdtl#vS zOxX`Wa^g^&{{Q5i&1;-jmc|E4fz;yeR1L-oTu5Cck|CIscN5u=gBLDB2*zSeKwvc; zFWO8t)<1BWg}J?$Ca#qhUJiIWcowFY+ITU}N=t(R>HSdM!Ghk+``+_$&pB@~lVM;~ zB@4QfSf5z$se8{k&+~iSIifICOZQT47u1gGkgXfUudWB!E{7jA$DZ8=7OjOWLm^Bt zHz<8b`bmUI#ig(C=JGCBXf3Rr1;Ip^yvw1?g4T`G76fFo4V*&I z8WDk(;!FzBqXZoS&{&_QE(wvxx4Z)hNr=~pV8KZ&wjPev$|t^>PA<1X#uxKv=RTyY z=oAml(zRLVxvWyRn_vZvSu8HN+2{nlG+kpyR(>0YVfWHwcY!Jc@Zu0W;pFj#V<&&U zbD0;c{s{SzuRxI6ttFAJ4|%;Iwdl;$kks-5Pco{cP>3o_kUSjvp>Gid=qN;)7X(q# zCxsrOAdm)I3=)69o5jRU4XyX_Bngagh;2r8<8luWnq>Vv;3}GdXR)f0?4qRfI?zNb zXR|&TzAKx@vN(ucwj5DCTrxMetc5PB$2Z)%>=aujdwprBKxV$}l6bp++`P027Iz^} zaODx%8^t=nz{g0E@hq>*q47*oRQrY~_kL8x$JTOy+{&Vm5$h9-1(G`DyI&<@`twgNNp<1DQQ(}MT7=SJ*<8Zaf?TG1u{7Tk&dkR z!j#V-)I{KDY6b--j*$usd#@&zM3=#I**C0u$vPg5b_SY66 zv33)MEnwPgzzqlaVgqs4iS3C^d_yRT9V4|3JqJ|AC>(=b%`OwR4PL$&E)m);8TU)oS+R{*Yy_d;sH_TQ; z{|sf2O6yVy2gwa)sAd5x*$r}SaIV=hW*dvx{qOw$-6gehS*X0}(MF@IT{@V~p)Ujo zQ3ol|O|7*Ws3SyYAZHt*UYG-X2wn{eO=klP<$MY}Gy}36hNgdsD%x63o7k51ihB3O zIuyvsV*K6g$i$H?%iy)vIQdF8r~@0DN1e^O8o(wr z$q(|Ix)WQiLO4hY(xx12))Qo$#KWT>9_p@UFnGK+XUrDN=$|;_Sj8)^NJ*2OQc47E}=_3ka6j-^j4B z;hUKNO{&FMh^fK4>@A_5_1>CYKhHy`iQRoz^{t&7x$?20YT4K` z^h#T+$W8NJJT1EnP7X66%l;@T*|~qEDRPu-kEl1rsI&q*&(@#;X_{W<>@<>Gi}aJr zerPd+D#=DBUib(HawY;(gy>4uoaACd#63t*@?ZS?!1^jWEGTih5?65Nk=g|;H7I=q z34f229fCr$I(&=A>rx<-#rUgcp0Z91zq`=dLF*c^6h-sNwqq%Nq-z&dW z_zX?ttmQh`xOKG`9AxSm_O>SRs!`rrG$6PN`I5%Asc95R;EO;IW)(`?LD>Z_W! zJIuR4{2L_nO+sl;C|0bo2k3SJ7JLN|ln<`YIWta3i@jTmu5IW)BtB`t2?DkwK*bi%`>OHcZ8}S3W%*F1l&9E4uCN)h*ONpb?PUdK!aK6$;h?J0O%P1`=O^_&+F1 z4ycFezt-KgIY7{%zW2zd^qE+xlD(tW#GRSwfs%c!n)T)Cw2$H*(X7Q)%WUstE}z7~ z+_h=g*SUqkm!ae<`^qsq#z)(qOwUf%RAAjM%Oy()F_%Njw zv(s=Q1Ul6AJzfkZiY15U*1+0BT?j1(Dp1Th&QS( zK5)jBM3mou+Yi_20I7}o%h^rC(JdBzm8}ch@=#1xm5&+8-efLCxXdo+$ws&5JV^H$ z5~z)_OWw6KxWuK+lp7L<><=dKz4+(n*JoSfb$U5Fe8Pbmg6#plEll!^(tRmN{ZLL# zOwGvJywhd_5i{TBC zzwQ@nRv=xY{$O@wr?e&wKx^FXt*AIPd9k6&#fcS-_1*fi1_9K?+tjTz#JUBw3fbko zmF$2&#bpl;po{9gcV>SaFHY8}K=uRf;pmDI8)P>{rD7+AAk(K)CZyEH4~kr})TcH_dffp@XD$OLsIWh67!UKJB!m|IO^d+1bfj z-G|@)f`(TRcM*BPL8K>%({cc!$`ujRr>Ifb{v9N!BXM9`>%V2)SjW7gL;>{^@Nk*0 zQYio%1PSICLX;?U@r$IS1!251jOoSn-DKS=Wc>7XFMZcC5d&j4*4M#IC~MfQO?heL92gBRkx2a#qnO^`bwYXIC(LC<>yn*G|Iz&6Vtle*zp5T&t#Uk@ z9glA?!dP6C_Zp{zwAY%v0=n@WAirN54I@Hoh6FHAS-^_07~#7LE;q! zg+4g6(A+v&d$Mi^2ua`fzIB=APIBQcBib>pliYlorhOrI5$(nTzG~QNTlhgxTef=k zY<0UnYR&NGv?NjM+}q{u&Gzf3>sBBA9E+~%_}~Qqi6M;4Sm-tHz^~YW*a?Y%Y;=th zkQ`_5;EgG@h^QpE_S)*}2sWMpi0?g!RHX?@ERHlWhovD;u`U8(zHm9xz32WK7RY2W z-rw%cAtgJ2s7EpkmV-8_%#C<`wv)cPIdrI5mZOGh>6yIt7B;{=WS24O#Q=WbYnv1c z(#rYK-spJk>SHqf@!z5l4QYu`XR|HwAZgoduiOf1j>Jnqh@58#yn5vJ0ONN+f^{gj zw#nV=1dZf}DKrE%&`ALVM3qj2v!*yc1Q#ag1mPbw(C#v%hTjl}$+Wff1qfA$QbjdrTy^Hm$ zk4k!{d>i)lamq4qE*r5$1sUrg4rKCz2U=M=A_0)oK0>+WxB?;u#htY48Js1MT_sEVvDJvI|fEX_E#hMmK zs}OT~6zA{YDp_VrjdG-D1K?2^9VHuKxpm9B1RF~$F*D$7a@MR_R|n>pv=blgU=!c; zXO*r#Zmnm1^qHQd5ECSB+dCe-*;J9jiEKb(**L3z} zNU90Pj)Ruel+e_COyVgFBps1D;JrtP5!DMz`~U245-wdWJ06Rt^iq9nt!;huzCr?6C-%;U25pFe^@AaaHy6}$j-zg9ltn+>Bia~AgV(0 z>W5l$qO`YMV}9(Xn1XNu_B?pLv)gvNq(h70&3Vugl~t66Y{E|5Ji+0H@iW%DJ|@%Y zizse$lrHkQ5!9Fn$e9kZU&j=KLS;aHK?z-X^8acf>56|vabjUFo<5;Q?MP<~B?z5zMV zb;Kv4fLiEHi{a!rL*A$;F-iAD2pmVQSV~08;S!TOfBh|MYqqK# zk46_E5*G>f7J&Ivkzx_*^p(>+g%^bGL?t`n9SGpQPxM{n2La5}jl7=+0XH;QA_wP$ z!1>Z4HDIa`wUJg2>=UWq{>A0Sg8bSF8GY;GIf~VH_)fRD=3AEmp?8W8gEAsR0IEA)3E!0{KMM?-4+loSL22TJxES_}?=Yyg3TUd^*hvuf7=@@e*D z%?}XVhn&twk1Vw?JG`_r%^LT*jlj&-#O}d7-ujn~+$4K#qBc4fkARn(-xA|Yifh}o z%ibi~$~zwI?d^}J>;4-${0t9>h)p;>gZ;D3U3X$T6^OA9Km$sX*rh1r9Jh|Z{-;0& zT=u-D#37!*;5rEs!L|Z;TntIzzI0kZqm^=!m6po`-uu=fH|N(@$o}5mqvHBs=ZLi{ zZx`e2Q*VodspmmjM)##eBp$ zn;cLhu^Y&~3LKn6&miBvVpK`9$p~+G@C7Y<3gzxex{4T^j$Tp{TEZJJ5rsRT7^00e zDKbY|F%yHN;5ObNNX}v6l^%Lw`2yDOKQMwV;MkVP z*V+=;VnXY#oI(<~`l#DU6!Xp#W@@5<$6bGzyxWKZnVgK@eq6H=%0Q26M^*ZT*seE* zx<=;~cPLWBH!YTzXzd+?6e*v3YrIxfkFw0BIV#yABzk_y?b)@(X4J>z@NPDL7tA7WD3D-EEV^bA z!GtLSM#M&dlW+q7RT~^*0?Zw1>9#oN0_jr(i-j?5cMm6<@>W-dqi+rW%FAwZF-tl} z9nCt<(0AFzqppj|=JBk#QY>=L8sCiy#suML_~{BauYBfCzy3JekouTR4}c#))%)^j ziMAtw?X@`W3Q>gaHA9^~OALX;!wM2)E1q>49OE7Yt+6}~h{8>2Z8}KEZfnu;RH~>_ zMvW%S(@lbVtTl6ga|)zih@9?iKf=SqDhhSbXR)-kQoPB~=?t^esXKz3s}8TOvS86c zq*S&b2|G$K4qbcZ9BqHTzxL}7RUnhUp(QrRg9)lzm&Sqj?4*~f5)t6uB&9|fl_Mqa zik?)9L6+-*pbacfi84sm+^vdeOwv|>%63lF(NN%;N>G5d{lAz_HmE`t zEZ+2OrM%uAXnK2pMmWfW9!@Q@hsBlRKgy=C`9YNfmpDN{Hsj;-o3npD7*9_&=T~$1 zgqT*qF}0Dy&ghX0)C`mLgZAuXuA)|)?*BxrB8D92SJ4m(XaZ0jh0;{VsHzbd&Lwgz zl!LJZM%Y9$y5gUlve>wNkMO6bn^Yi^lXv4EKdtIsi`>?Eot959k%0 zim62+aLX;EU;5XO+Mxs#ixcnlhAGsvU<_Mo3^{1*Yt&jHHyB!+G!J^Q$!Q}1oV#(F z&b_xARUmz%B=$U^4;ITP1%`;qBiwe0!lzCMg~tZJrrajw zI9E5OB+7b3{>t8w*7p3v2{)c%4+wG{d7JXDhm#F^>ss~uqxqkYY($97Zz_Z2XvYdM zy@FGt8?l#*Pd9d0xA1WBR@SoXsYPz3u3cB>KhMA4UzhxkUtb{4|CDqxEUym zAIgJkGc-E5>JR?e*<|A?WHCN?IJ>^%P&vgmz$LF}mdzBnSmmHgWiM_D<}wPh5s5gQ z$`FHPT_M?ow%a{Uf4%zj=|;65SRg0&n0LUSc0NT?RQcsCw-EDl1jHB_SjDtZoW2UZ zih+rep^i;Dv=t-ZqA*bUTNHh8XmRO8|KS;dlCz{p$y9pW9Mk>9Wb@um#*3G;(HqMH za+jxKUhg$-%F#{+(A(mlBhgx^N`fy{mAEpU;k{Wx2 z0d65S{;15iKs|rh%3}hLh<;gB%O4%hQG_i*Se;}$>812>n*YV+GBP(Pv ze*U0R@ROO z?|Ov=vX2iZW#IJp6#^47(nJQbzyhi&QcQw<2WrqkBF&SIwFTaJ2dcgg{_Y-4tvGZi zsjLrLr3VG%rCkhvAM}DyU11^!a4Szb;}_32@&v(Y*4EzkpLdjlsu+-o9iig?FSC(5 zxo*HYT@8xFf*A8K&(N$LU51V_d6~2kbCh*Q$esD$4-iAcGbY8*YB5wie@mFP zC}{T^hm%cxJ2@O5e~eb#VM3r8*xHHkaKLJPRu0K)lw8?fyEL6zYfN&n(bZ1EXupJf z(3{ch!K)2gp1Zeq(-$rJk1(GstmRM~PJN2aL?zuo3oJ+iyO#K!AZ#p_x>Ni?QshQF zE+DBcyPj346-?BTK59Uapd}Y_P1irXaW>i93YpYHewz23|FGS1iCF5w=J%ZYUrVyVXK7r(=r}fpe;xLnZQ`kchG`%+C%t z_&3t`>KEN1@~s9Qsyont+fW8G+3aEm4IQ`G&HKQTZoYu=$vX|O*`t>sfWA7`z$v#WH5srFv`~TqoNg$B`6!UC#%iSKYUxB; zFSCER*}s&&6FImx+dHxt9>Zs|F`LWc`jKJ=X52@MyB zWI{J48Rdd{?o*0_{oz)m9#G9D42+uNM(SeI3#5A+kMDofPki%Aueljz8Ni&rPMO7t z&YRMsU_FZ}Hul2;7M)eMc*>mF^)GjJXAk$spO#d4V}2DBcj#zy;vV&c8_o=9Pe2yXxHN${4tYFB##Le zu~f&S>$B0;VncTy_PTrWhbZdw`VgYA6*vw@j**7qfgpf&L`XLk2r!i$KyFcx7+P8n z1E#y<*CX8``9}h3T|myCnyk(@yad#IR7_le#Dw=+D7?Oh_}8bCtMJw}>&MsTdw0%N zM_^;9d^AoO`ZpZ^-RQT93zjz7=GM(?4lN&H?L_uHmSKDQw+9=$`>-d-^lJhsvRqv~ z-2zSoO+QggtCswU+I9rQqpph0hwKAE1y_YOKofiM)J$@90VIAwZcXZ%#*<~GJZ^E( zl*jX8V+`s4W3xWqe>fW*nHg#^s5r}Lw?Y(?J~#j}=4|CEMHh+{1>z~1+@xN%aecwkbsT?5 zs7|v8M$j?MEa*+xgWRKA6mw3h#D!u$XkLq{gq#IO#6&b<0Vzs=eDc6cN%{h?K}eHd zHP3qc;pem6qh)q;CH2r74uHqlcrI=p{*U5*C>^AB|?Ox8801 z>`E8N7ZRUVA6DF2^e|lz$-63y(A0#H5xhYrPYG8h4P>Uw`iDYec#dU?EA-0uSWC1Z;Ojs4&>IwPuP&BWfu!69_T(l!xB^Fd3Tj@Y>`IH((7dFhBsU(?DNO3#%EXR zZ-4UcAgTZyXl__E=Lw-I$nn6T1e|%(V$7qGCI-$p7n>k~uPGlyk+=97MVNNbS)AgB z56yH42}Xay4h%LfSvPas|>4v<@DBKO6mgKFAZ% zuG-~L*=W6g+9gZxTxw!ZF{mqL-ZeSyCPlG-@A;j*+3OFVU%m3^UAG@#Q$d#@kfd=6 zN>c&PsSymTVT2YG0UCyy7VeBetmjeyiK~^2LS#|1>xqOU4g3&z$;h@5BGK_JD?kh5 zjf4myCQwKhi^=3lmdLBEk7j!}kBX&87tS4n&)$qv0nO^K3`g2dF5gLjjw`F1vbd+XtR`}Wab@0azeuMAa< z)`@OZ^16t;dC(m!j$2Ac(b4Vs_NS+lt63iX-})1L4G%4y6CcgQvO~hGGpe`Fj=;zS z`Eh0;b=m9XzvHS3+)5+w@ zmdIlN+GsYqV}hD3O3TKb8H$N^lek00L~{DTLd$A2wx~O!+3sKV7n`kV|L_0KKT`w~ z8b`?*9hHlTeIE2s2SovuHXcW^+{Xlh_XbgMv9+U8O;A)%szdHC_;gC*j7k)H1$d`x z#&}8iRAv#V zy1hOB_1QzAC!6~o?MIK0gA!q1%#7mZP`w_<^5I+=z*n?ul zWca3hLQ$w8$FK*99YM=s3*bd;7H#-z=PuKQ^x{evNFPfzetP;~uRBK0SH!VtwwvNr z86AAvxjPe};jyb+#Nst7{eK+Y?2fW)r*FqsXKTLt?|VNoW}Wr7_|hE7zDEx;PI;rM z9;H2Dq#&6u? zkb2YVj*(Bc=es{CsbDd|HjaB;iVJWv*ab&5Sr(TRItW`Y<<9PW`*)9z&&G#W{V#iZ zK}cL?EQkP0Y)uLzr=mlmphJOJ3o!~h2>%%rbdGe76re+?Yl$5pe5qm$B&V^-$QL-v zkUJVkGUb)D_F79%HYHu^|FS&nj*++fU%j4h@BUoO^1KYDwO)|!2n;SfH+wy!A8Xad zV|PCP=;i+8svjPB#k!ykHWTAoLLu{bIJFapz4eG8ZV5$g;x1gYSak>+D6&Izi8RY4 zvSLWkklB(o6b_~EP5r{k-Ccwm9N`p-busrvd|uTqlh$!H$z zLwMxMxi)P1Lg>dbA(k2An+Ae+R-YilLYA3pl}IQEy#7 z)?x_+dM8T?2t=ZLyZe6p-ulD8yJ{WW`tFDMd~{Pk>{J!YVe$t*{^w-?m&-mG)@z%xX?9@`5e_8{%z6$J~_BG{M+&n#;u)1mL3$#$t7IOOT7 zXUdm{llSVatC6lBdHmq_-Q#=vrt;&eu4IJ~D!aY-fQW5|yEmWh&9?vk!PdpwzB=Bo zzu?6UWFi109VP&BrGnOi@M}E>h@_U(DLBR?(>$Xl`{72Fw6O$6w9cVWVQ-&iwLsH(q?uz1{oZ1N9H{ z&wKnI`1Z~J;_Y9)`DXw9ERcS%)fdU)V1Mho-#zPI^hdkhjmy~niq)>?6<$QDqo1zd z?$3?AXAi&H+V4+}v&H-Rw>ml8vJaTNsb} + + + + + + + + + + + + + + diff --git a/quartz-manager-frontend/src/assets/image/foo.png b/quartz-manager-frontend/src/assets/image/foo.png new file mode 100644 index 0000000000000000000000000000000000000000..0bc9a89357e11c969ad86e435b0004aee66bdfc9 GIT binary patch literal 117304 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 ShohtYzipXxh2)4xTkJi#rsGYj7`=Vz=K<{^#7g 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%0D{SvPHYNCv%T%`r5xrepAy1-hB(CJ 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 humW;*g7R+&|Ledvc- + + + + Quartz Manager + + + + + + + + + + + + + + + + Loading... + + diff --git a/quartz-manager-frontend/src/main.ts b/quartz-manager-frontend/src/main.ts new file mode 100644 index 0000000..a9ca1ca --- /dev/null +++ b/quartz-manager-frontend/src/main.ts @@ -0,0 +1,11 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule); diff --git a/quartz-manager-frontend/src/polyfills.ts b/quartz-manager-frontend/src/polyfills.ts new file mode 100644 index 0000000..622efa0 --- /dev/null +++ b/quartz-manager-frontend/src/polyfills.ts @@ -0,0 +1,74 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE9, IE10 and IE11 requires all of the following polyfills. **/ +// import 'core-js/es6/symbol'; +// import 'core-js/es6/object'; +// import 'core-js/es6/function'; +// import 'core-js/es6/parse-int'; +// import 'core-js/es6/parse-float'; +// import 'core-js/es6/number'; +// import 'core-js/es6/math'; +// import 'core-js/es6/string'; +// import 'core-js/es6/date'; +// import 'core-js/es6/array'; +// import 'core-js/es6/regexp'; +// import 'core-js/es6/map'; +// import 'core-js/es6/set'; + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** IE10 and IE11 requires the following to support `@angular/animation`. */ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + + +/** Evergreen browsers require these. **/ +import 'core-js/es6/reflect'; +import 'core-js/es7/reflect'; + + + +/** ALL Firefox browsers require the following to support `@angular/animation`. **/ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + + + +/*************************************************************************************************** + * Zone JS is required by Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ + +/** + * Date, currency, decimal and percent pipes. + * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10 + */ +// import 'intl'; // Run `npm install --save intl`. + +/*************************************************************************************************** + * MATERIAL 2 + */ +import 'hammerjs/hammer'; diff --git a/quartz-manager-frontend/src/styles.css b/quartz-manager-frontend/src/styles.css new file mode 100644 index 0000000..dcbd1da --- /dev/null +++ b/quartz-manager-frontend/src/styles.css @@ -0,0 +1,6 @@ +/* You can add global styles to this file, and also import other style files */ +@import '~@angular/material/prebuilt-themes/deeppurple-amber.css'; + +body { + margin: 0; +} diff --git a/quartz-manager-frontend/src/test.ts b/quartz-manager-frontend/src/test.ts new file mode 100644 index 0000000..9bf7226 --- /dev/null +++ b/quartz-manager-frontend/src/test.ts @@ -0,0 +1,32 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/long-stack-trace-zone'; +import 'zone.js/dist/proxy.js'; +import 'zone.js/dist/sync-test'; +import 'zone.js/dist/jasmine-patch'; +import 'zone.js/dist/async-test'; +import 'zone.js/dist/fake-async-test'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +// Unfortunately there's no typing for the `__karma__` variable. Just declare it as any. +declare var __karma__: any; +declare var require: any; + +// Prevent Karma from running prematurely. +__karma__.loaded = function () {}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); +// Finally, start Karma to run the tests. +__karma__.start(); diff --git a/quartz-manager-frontend/src/tsconfig.app.json b/quartz-manager-frontend/src/tsconfig.app.json new file mode 100644 index 0000000..5e2507d --- /dev/null +++ b/quartz-manager-frontend/src/tsconfig.app.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "module": "es2015", + "baseUrl": "", + "types": [] + }, + "exclude": [ + "test.ts", + "**/*.spec.ts" + ] +} diff --git a/quartz-manager-frontend/src/tsconfig.spec.json b/quartz-manager-frontend/src/tsconfig.spec.json new file mode 100644 index 0000000..510e3f1 --- /dev/null +++ b/quartz-manager-frontend/src/tsconfig.spec.json @@ -0,0 +1,20 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/spec", + "module": "commonjs", + "target": "es5", + "baseUrl": "", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/quartz-manager-frontend/src/typings.d.ts b/quartz-manager-frontend/src/typings.d.ts new file mode 100644 index 0000000..ef5c7bd --- /dev/null +++ b/quartz-manager-frontend/src/typings.d.ts @@ -0,0 +1,5 @@ +/* SystemJS module definition */ +declare var module: NodeModule; +interface NodeModule { + id: string; +} diff --git a/quartz-manager-frontend/tsconfig.json b/quartz-manager-frontend/tsconfig.json new file mode 100644 index 0000000..a35a8ee --- /dev/null +++ b/quartz-manager-frontend/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "outDir": "./dist/out-tsc", + "baseUrl": "src", + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "target": "es5", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2016", + "dom" + ] + } +} diff --git a/quartz-manager-frontend/tslint.json b/quartz-manager-frontend/tslint.json new file mode 100644 index 0000000..9113f13 --- /dev/null +++ b/quartz-manager-frontend/tslint.json @@ -0,0 +1,116 @@ +{ + "rulesDirectory": [ + "node_modules/codelyzer" + ], + "rules": { + "callable-types": true, + "class-name": true, + "comment-format": [ + true, + "check-space" + ], + "curly": true, + "eofline": true, + "forin": true, + "import-blacklist": [true, "rxjs"], + "import-spacing": true, + "indent": [ + true, + "spaces" + ], + "interface-over-type-literal": true, + "label-position": true, + "max-line-length": [ + true, + 140 + ], + "member-access": false, + "member-ordering": [ + true, + "static-before-instance", + "variables-before-functions" + ], + "no-arg": true, + "no-bitwise": true, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-construct": true, + "no-debugger": true, + "no-duplicate-variable": true, + "no-empty": false, + "no-empty-interface": true, + "no-eval": true, + "no-inferrable-types": [true, "ignore-params"], + "no-shadowed-variable": true, + "no-string-literal": false, + "no-string-throw": true, + "no-switch-case-fall-through": true, + "no-trailing-whitespace": true, + "no-unused-expression": true, + "no-use-before-declare": true, + "no-var-keyword": true, + "object-literal-sort-keys": false, + "one-line": [ + true, + "check-open-brace", + "check-catch", + "check-else", + "check-whitespace" + ], + "prefer-const": true, + "quotemark": [ + true, + "single" + ], + "radix": true, + "semicolon": [ + "always" + ], + "triple-equals": [ + true, + "allow-null-check" + ], + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + } + ], + "typeof-compare": true, + "unified-signatures": true, + "variable-name": false, + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type" + ], + + "directive-selector": [true, "attribute", "app", "camelCase"], + "component-selector": [true, "element", "app", "kebab-case"], + "use-input-property-decorator": true, + "use-output-property-decorator": true, + "use-host-property-decorator": true, + "no-input-rename": true, + "no-output-rename": true, + "use-life-cycle-interface": true, + "use-pipe-transform-interface": true, + "component-class-suffix": true, + "directive-class-suffix": true, + "no-access-missing-member": true, + "templates-use-public": true, + "invoke-injectable": true + } +} diff --git a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/configuration/MVCConfig.java b/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/configuration/MVCConfig.java deleted file mode 100644 index a1ec413..0000000 --- a/quartz-manager/src/main/java/it/fabioformosa/quartzmanager/configuration/MVCConfig.java +++ /dev/null @@ -1,57 +0,0 @@ -package it.fabioformosa.quartzmanager.configuration; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.ViewResolver; -import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; -import org.thymeleaf.extras.springsecurity4.dialect.SpringSecurityDialect; -import org.thymeleaf.spring4.SpringTemplateEngine; -import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver; -import org.thymeleaf.spring4.view.ThymeleafViewResolver; - -import nz.net.ultraq.thymeleaf.LayoutDialect; - -@Configuration -public class MVCConfig extends WebMvcConfigurerAdapter { - - @Override - public void addViewControllers(ViewControllerRegistry registry) { - registry.addViewController("/login").setViewName("login"); - registry.addViewController("/").setViewName("redirect:/manager"); - - registry.addViewController("/templates/manager/config-form.html").setViewName("manager/config-form"); - registry.addViewController("/templates/manager/progress-panel.html") - .setViewName("manager/progress-panel"); - registry.addViewController("/templates/manager/logs-panel.html").setViewName("manager/logs-panel"); - - } - - @Bean - public SpringTemplateEngine templateEngine() { - final SpringTemplateEngine springTemplateEngine = new SpringTemplateEngine(); - springTemplateEngine.addTemplateResolver(templateResolver()); - springTemplateEngine.addDialect(new LayoutDialect()); - springTemplateEngine.addDialect(new SpringSecurityDialect()); - return springTemplateEngine; - } - - @Bean - public SpringResourceTemplateResolver templateResolver() { - final SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver(); - templateResolver.setCacheable(false); - templateResolver.setPrefix("classpath:/templates/"); - templateResolver.setSuffix(".html"); - templateResolver.setTemplateMode("HTML5"); - return templateResolver; - } - - @Bean - public ViewResolver viewResolver() { - ThymeleafViewResolver viewResolver = new ThymeleafViewResolver(); - viewResolver.setTemplateEngine(templateEngine()); - viewResolver.setOrder(1); - return viewResolver; - } - -}