From ae3457e68b32cd5f681bfd4a43334c41a9c56fef Mon Sep 17 00:00:00 2001 From: nwb Date: Tue, 24 Jun 2014 15:42:28 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=A0=81=E8=AF=84?= =?UTF-8?q?=E5=AE=A1(CodeReview)=E6=8F=92=E4=BB=B6=202.=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=AF=84=E5=AE=A1=E6=8F=92=E4=BB=B6=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile.lock | 1 + app/controllers/attachments_controller.rb | 2 +- app/controllers/repositories_controller.rb | 2 +- db/schema.rb | 52 + doc/Redmine插件Code Review使用介绍.doc | Bin 0 -> 434176 bytes plugins/redmine_code_review/GPL.txt | 339 +++++++ plugins/redmine_code_review/README.rdoc | 35 + .../app/controllers/code_review_controller.rb | 398 ++++++++ .../code_review_settings_controller.rb | 119 +++ .../app/helpers/code_review_helper.rb | 37 + .../app/models/code_review.rb | 175 ++++ .../app/models/code_review_assignment.rb | 80 ++ .../app/models/code_review_project_setting.rb | 77 ++ .../app/models/code_review_user_setting.rb | 50 + .../app/models/review_mailer.rb | 122 +++ .../views/code_review/_add_success.html.erb | 27 + .../views/code_review/_body_bottom.html.erb | 82 ++ .../_change_attachement_view.html.erb | 35 + .../_change_entry_norevision_view.html.erb | 39 + .../_change_repository_view.html.erb | 41 + .../_change_revision_view.html.erb | 73 ++ .../app/views/code_review/_history.html.erb | 84 ++ .../views/code_review/_html_header.html.erb | 30 + .../_issues_show_details_bottom.html.erb | 56 + .../app/views/code_review/_new_form.html.erb | 121 +++ .../app/views/code_review/_reply.html.erb | 36 + .../app/views/code_review/_show.html.erb | 187 ++++ .../views/code_review/_show_error.html.erb | 24 + .../code_review/_update_diff_view.html.erb | 77 ++ .../code_review/_update_revisions.html.erb | 49 + .../app/views/code_review/index.html.erb | 101 ++ .../code_review_settings/_filters.html.erb | 117 +++ .../views/code_review_settings/_show.html.erb | 163 +++ .../assets/images/closed_review.png | Bin 0 -> 508 bytes .../assets/images/review.png | Bin 0 -> 498 bytes .../assets/javascripts/code_review.js | 354 +++++++ .../assets/stylesheets/activity.css | 4 + .../assets/stylesheets/code_review.css | 97 ++ .../assets/stylesheets/window_js/MIT-LICENSE | 19 + .../assets/stylesheets/window_js/alert.css | 119 +++ .../stylesheets/window_js/alert/bottom.gif | Bin 0 -> 70 bytes .../window_js/alert/bottom_left.gif | Bin 0 -> 49 bytes .../window_js/alert/bottom_right.gif | Bin 0 -> 49 bytes .../stylesheets/window_js/alert/left.gif | Bin 0 -> 84 bytes .../stylesheets/window_js/alert/overlay.png | Bin 0 -> 2829 bytes .../stylesheets/window_js/alert/progress.gif | Bin 0 -> 1542 bytes .../stylesheets/window_js/alert/right.gif | Bin 0 -> 84 bytes .../stylesheets/window_js/alert/top.gif | Bin 0 -> 70 bytes .../stylesheets/window_js/alert/top_left.gif | Bin 0 -> 49 bytes .../stylesheets/window_js/alert/top_right.gif | Bin 0 -> 49 bytes .../stylesheets/window_js/alert_lite.css | 88 ++ .../stylesheets/window_js/alphacube.css | 150 +++ .../window_js/alphacube/bottom-left-c.gif | Bin 0 -> 60 bytes .../window_js/alphacube/bottom-middle.gif | Bin 0 -> 50 bytes .../window_js/alphacube/bottom-right-c.gif | Bin 0 -> 61 bytes .../alphacube/button-close-focus.gif | Bin 0 -> 699 bytes .../window_js/alphacube/button-max-focus.gif | Bin 0 -> 765 bytes .../window_js/alphacube/button-min-focus.gif | Bin 0 -> 472 bytes .../window_js/alphacube/frame-left.gif | Bin 0 -> 64 bytes .../window_js/alphacube/frame-right.gif | Bin 0 -> 64 bytes .../window_js/alphacube/left-top.gif | Bin 0 -> 171 bytes .../window_js/alphacube/right-top.gif | Bin 0 -> 168 bytes .../window_js/alphacube/top-middle.gif | Bin 0 -> 97 bytes .../assets/stylesheets/window_js/behavior.htc | 51 + .../assets/stylesheets/window_js/darkX.css | 121 +++ .../window_js/darkX/button-close-focused.png | Bin 0 -> 904 bytes .../darkX/button-maximize-focused.png | Bin 0 -> 882 bytes .../darkX/button-minimize-focused.png | Bin 0 -> 839 bytes .../darkX/frame-bottom-left-focused.png | Bin 0 -> 142 bytes .../darkX/frame-bottom-mid-focused.png | Bin 0 -> 142 bytes .../darkX/frame-bottom-right-focused.png | Bin 0 -> 142 bytes .../window_js/darkX/frame-left-focused.png | Bin 0 -> 142 bytes .../window_js/darkX/frame-right-focused.png | Bin 0 -> 142 bytes .../window_js/darkX/titlebar-left-focused.png | Bin 0 -> 180 bytes .../window_js/darkX/titlebar-mid-focused.png | Bin 0 -> 175 bytes .../darkX/titlebar-right-focused.png | Bin 0 -> 180 bytes .../assets/stylesheets/window_js/debug.css | 25 + .../assets/stylesheets/window_js/default.css | 155 +++ .../window_js/default/bottom_left.gif | Bin 0 -> 187 bytes .../window_js/default/bottom_mid.gif | Bin 0 -> 68 bytes .../window_js/default/bottom_right.gif | Bin 0 -> 187 bytes .../window_js/default/bottom_right_resize.gif | Bin 0 -> 201 bytes .../window_js/default/center_left.gif | Bin 0 -> 52 bytes .../window_js/default/center_right.gif | Bin 0 -> 49 bytes .../stylesheets/window_js/default/clear.gif | Bin 0 -> 1014 bytes .../stylesheets/window_js/default/close.gif | Bin 0 -> 1012 bytes .../stylesheets/window_js/default/inspect.gif | Bin 0 -> 556 bytes .../window_js/default/maximize.gif | Bin 0 -> 1024 bytes .../window_js/default/minimize.gif | Bin 0 -> 1023 bytes .../stylesheets/window_js/default/overlay.png | Bin 0 -> 2818 bytes .../stylesheets/window_js/default/resize.gif | Bin 0 -> 138 bytes .../stylesheets/window_js/default/sizer.gif | Bin 0 -> 201 bytes .../window_js/default/top_left.gif | Bin 0 -> 358 bytes .../stylesheets/window_js/default/top_mid.gif | Bin 0 -> 149 bytes .../window_js/default/top_right.gif | Bin 0 -> 357 bytes .../stylesheets/window_js/iefix/blank.gif | Bin 0 -> 49 bytes .../stylesheets/window_js/iefix/iepngfix.css | 3 + .../stylesheets/window_js/iefix/iepngfix.htc | 54 + .../assets/stylesheets/window_js/lighting.css | 960 ++++++++++++++++++ .../window_js/lighting/background_buttons.gif | Bin 0 -> 70 bytes .../window_js/lighting/bottom-left-blue.png | Bin 0 -> 335 bytes .../lighting/bottom-left-darkblue.png | Bin 0 -> 334 bytes .../window_js/lighting/bottom-left-green.png | Bin 0 -> 347 bytes .../window_js/lighting/bottom-left-grey.png | Bin 0 -> 346 bytes .../window_js/lighting/bottom-middle-blue.png | Bin 0 -> 156 bytes .../lighting/bottom-middle-darkblue.png | Bin 0 -> 154 bytes .../lighting/bottom-middle-green.png | Bin 0 -> 155 bytes .../window_js/lighting/bottom-middle-grey.png | Bin 0 -> 156 bytes .../window_js/lighting/bottom-right-blue.png | Bin 0 -> 397 bytes .../lighting/bottom-right-darkblue.png | Bin 0 -> 392 bytes .../window_js/lighting/bottom-right-green.png | Bin 0 -> 390 bytes .../window_js/lighting/bottom-right-grey.png | Bin 0 -> 424 bytes .../window_js/lighting/button-close-blue.png | Bin 0 -> 308 bytes .../lighting/button-close-darkblue.png | Bin 0 -> 308 bytes .../window_js/lighting/button-close-green.png | Bin 0 -> 305 bytes .../window_js/lighting/button-close-grey.png | Bin 0 -> 320 bytes .../lighting/button-maximize-blue.png | Bin 0 -> 218 bytes .../lighting/button-maximize-darkblue.png | Bin 0 -> 212 bytes .../lighting/button-maximize-green.png | Bin 0 -> 226 bytes .../lighting/button-maximize-grey.png | Bin 0 -> 218 bytes .../lighting/button-minimize-blue.png | Bin 0 -> 164 bytes .../lighting/button-minimize-darkblue.png | Bin 0 -> 172 bytes .../lighting/button-minimize-green.png | Bin 0 -> 172 bytes .../lighting/button-minimize-grey.png | Bin 0 -> 184 bytes .../window_js/lighting/left-blue.png | Bin 0 -> 144 bytes .../window_js/lighting/left-darkblue.png | Bin 0 -> 143 bytes .../window_js/lighting/left-green.png | Bin 0 -> 144 bytes .../window_js/lighting/left-grey.png | Bin 0 -> 144 bytes .../window_js/lighting/pngbehavior.htc | 67 ++ .../window_js/lighting/right-blue.png | Bin 0 -> 146 bytes .../window_js/lighting/right-darkblue.png | Bin 0 -> 146 bytes .../window_js/lighting/right-green.png | Bin 0 -> 146 bytes .../window_js/lighting/right-grey.png | Bin 0 -> 155 bytes .../window_js/lighting/spinner.gif | Bin 0 -> 2037 bytes .../window_js/lighting/top-left-blue.png | Bin 0 -> 336 bytes .../window_js/lighting/top-left-darkblue.png | Bin 0 -> 360 bytes .../window_js/lighting/top-left-green.png | Bin 0 -> 339 bytes .../window_js/lighting/top-left-grey.png | Bin 0 -> 352 bytes .../window_js/lighting/top-middle-blue.png | Bin 0 -> 200 bytes .../lighting/top-middle-darkblue.png | Bin 0 -> 226 bytes .../window_js/lighting/top-middle-green.png | Bin 0 -> 208 bytes .../window_js/lighting/top-middle-grey.png | Bin 0 -> 185 bytes .../window_js/lighting/top-right-blue.png | Bin 0 -> 423 bytes .../window_js/lighting/top-right-darkblue.png | Bin 0 -> 451 bytes .../window_js/lighting/top-right-green.png | Bin 0 -> 440 bytes .../window_js/lighting/top-right-grey.png | Bin 0 -> 495 bytes .../assets/stylesheets/window_js/mac_os_x.css | 333 ++++++ .../stylesheets/window_js/mac_os_x/B.png | Bin 0 -> 268 bytes .../stylesheets/window_js/mac_os_x/BL.png | Bin 0 -> 5068 bytes .../window_js/mac_os_x/BL_Main.png | Bin 0 -> 5068 bytes .../stylesheets/window_js/mac_os_x/BR.png | Bin 0 -> 5068 bytes .../window_js/mac_os_x/BR_Main.png | Bin 0 -> 5068 bytes .../stylesheets/window_js/mac_os_x/B_Main.png | Bin 0 -> 268 bytes .../stylesheets/window_js/mac_os_x/L.png | Bin 0 -> 133 bytes .../stylesheets/window_js/mac_os_x/L_Main.png | Bin 0 -> 133 bytes .../stylesheets/window_js/mac_os_x/R.png | Bin 0 -> 133 bytes .../stylesheets/window_js/mac_os_x/R_Main.png | Bin 0 -> 133 bytes .../stylesheets/window_js/mac_os_x/T.png | Bin 0 -> 218 bytes .../stylesheets/window_js/mac_os_x/TL.png | Bin 0 -> 360 bytes .../window_js/mac_os_x/TL_Main.png | Bin 0 -> 444 bytes .../stylesheets/window_js/mac_os_x/TR.png | Bin 0 -> 3818 bytes .../window_js/mac_os_x/TR_Main.png | Bin 0 -> 3818 bytes .../stylesheets/window_js/mac_os_x/T_Main.png | Bin 0 -> 218 bytes .../stylesheets/window_js/mac_os_x/close.gif | Bin 0 -> 1012 bytes .../window_js/mac_os_x/maximize.gif | Bin 0 -> 1024 bytes .../window_js/mac_os_x/minimize.gif | Bin 0 -> 1023 bytes .../stylesheets/window_js/mac_os_x_dialog.css | 160 +++ .../window_js/mac_os_x_dialog/B.png | Bin 0 -> 2861 bytes .../window_js/mac_os_x_dialog/BL.png | Bin 0 -> 3046 bytes .../window_js/mac_os_x_dialog/BR.png | Bin 0 -> 3073 bytes .../window_js/mac_os_x_dialog/L.png | Bin 0 -> 133 bytes .../window_js/mac_os_x_dialog/R.png | Bin 0 -> 133 bytes .../window_js/mac_os_x_dialog/T.png | Bin 0 -> 218 bytes .../window_js/mac_os_x_dialog/TL.png | Bin 0 -> 360 bytes .../window_js/mac_os_x_dialog/TR.png | Bin 0 -> 3818 bytes .../window_js/mac_os_x_dialog/bg.gif | Bin 0 -> 65 bytes .../window_js/mac_os_x_dialog/close.gif | Bin 0 -> 1012 bytes .../window_js/mac_os_x_dialog/maximize.gif | Bin 0 -> 1024 bytes .../window_js/mac_os_x_dialog/minimize.gif | Bin 0 -> 1023 bytes .../assets/stylesheets/window_js/nuncio.css | 164 +++ .../window_js/nuncio/bottom_left.png | Bin 0 -> 616 bytes .../window_js/nuncio/bottom_mid.png | Bin 0 -> 3617 bytes .../window_js/nuncio/bottom_right.png | Bin 0 -> 660 bytes .../window_js/nuncio/center_left.png | Bin 0 -> 6606 bytes .../window_js/nuncio/center_right.png | Bin 0 -> 6509 bytes .../stylesheets/window_js/nuncio/close.png | Bin 0 -> 772 bytes .../stylesheets/window_js/nuncio/minimize.png | Bin 0 -> 693 bytes .../stylesheets/window_js/nuncio/overlay.png | Bin 0 -> 40803 bytes .../stylesheets/window_js/nuncio/top_left.png | Bin 0 -> 971 bytes .../stylesheets/window_js/nuncio/top_mid.png | Bin 0 -> 5944 bytes .../window_js/nuncio/top_right.png | Bin 0 -> 1245 bytes .../assets/stylesheets/window_js/spread.css | 108 ++ .../window_js/spread/bottom-left-c.gif | Bin 0 -> 60 bytes .../window_js/spread/bottom-middle.gif | Bin 0 -> 50 bytes .../window_js/spread/bottom-right-c.gif | Bin 0 -> 61 bytes .../window_js/spread/button-close-focus.gif | Bin 0 -> 699 bytes .../window_js/spread/button-max-focus.gif | Bin 0 -> 765 bytes .../window_js/spread/button-min-focus.gif | Bin 0 -> 472 bytes .../window_js/spread/frame-left.gif | Bin 0 -> 64 bytes .../window_js/spread/frame-right.gif | Bin 0 -> 64 bytes .../stylesheets/window_js/spread/left-top.gif | Bin 0 -> 273 bytes .../window_js/spread/right-top.gif | Bin 0 -> 265 bytes .../window_js/spread/top-middle.gif | Bin 0 -> 152 bytes .../redmine_code_review/config/locales/bg.yml | 64 ++ .../redmine_code_review/config/locales/de.yml | 63 ++ .../redmine_code_review/config/locales/en.yml | 65 ++ .../redmine_code_review/config/locales/es.yml | 63 ++ .../redmine_code_review/config/locales/fr.yml | 63 ++ .../redmine_code_review/config/locales/hu.yml | 63 ++ .../redmine_code_review/config/locales/ja.yml | 65 ++ .../redmine_code_review/config/locales/ko.yml | 65 ++ .../redmine_code_review/config/locales/nl.yml | 63 ++ .../redmine_code_review/config/locales/pl.yml | 63 ++ .../config/locales/pt-br.yml | 63 ++ .../redmine_code_review/config/locales/ru.yml | 63 ++ .../redmine_code_review/config/locales/sk.yml | 63 ++ .../redmine_code_review/config/locales/sv.yml | 63 ++ .../config/locales/zh-TW.yml | 63 ++ .../redmine_code_review/config/locales/zh.yml | 64 ++ plugins/redmine_code_review/config/routes.rb | 22 + .../db/migrate/0001_create_code_reviews.rb | 46 + .../db/migrate/0002_add_updated_by.rb | 27 + .../db/migrate/0003_add_lock_version.rb | 27 + .../db/migrate/0004_add_status_changed.rb | 29 + .../0005_create_code_review_user_settings.rb | 35 + .../db/migrate/0006_link_to_issue.rb | 33 + .../db/migrate/0007_rename_user.rb | 27 + ...008_create_code_review_project_settings.rb | 37 + .../db/migrate/0009_add_hide_tab.rb | 27 + .../db/migrate/0010_add_action_type.rb | 34 + .../db/migrate/0011_add_auto_relation.rb | 27 + .../db/migrate/0012_add_attachment_id.rb | 27 + .../db/migrate/0013_add_file_count.rb | 27 + .../0014_create_code_review_assignments.rb | 42 + .../db/migrate/0015_add_assignment_tracker.rb | 27 + .../db/migrate/0016_add_changeset_id.rb | 27 + .../db/migrate/0017_add_auto_assign.rb | 27 + ...18_add_lock_version_to_project_settings.rb | 27 + .../db/migrate/0019_delete_old_fields.rb | 33 + .../0020_add_tracker_to_review_dialog.rb | 28 + .../db/migrate/0021_add_diff_all.rb | 26 + plugins/redmine_code_review/init.rb | 93 ++ .../lib/code_review_application_hooks.rb | 22 + .../lib/code_review_attachment_patch.rb | 38 + .../lib/code_review_auto_assign_settings.rb | 215 ++++ .../lib/code_review_change_patch.rb | 88 ++ .../lib/code_review_changeset_patch.rb | 172 ++++ .../lib/code_review_issue_hooks.rb | 118 +++ .../lib/code_review_issue_patch.rb | 38 + .../lib/code_review_projects_helper_patch.rb | 44 + .../test/code_review_object_daddy_helpers.rb | 26 + .../test/exemplars/code_review_exemplar.rb | 33 + .../test/fixtures/code_review_assignments.yml | 35 + .../fixtures/code_review_project_settings.yml | 27 + .../fixtures/code_review_user_settings.yml | 34 + .../test/fixtures/code_reviews.yml | 175 ++++ .../functional/attachments_controller_test.rb | 69 ++ .../functional/code_review_controller_test.rb | 327 ++++++ .../code_review_settings_controller_test.rb | 198 ++++ .../test/functional/issues_controller_test.rb | 108 ++ .../functional/projects_controller_test.rb | 326 ++++++ .../repositories_controller_test.rb | 93 ++ .../redmine_code_review/test/test_helper.rb | 119 +++ .../redmine_code_review/test/test_runner.rb | 37 + .../test/unit/code_review_assignment_test.rb | 104 ++ .../unit/code_review_attachment_patch_test.rb | 45 + .../code_review_auto_assign_settings_test.rb | 381 +++++++ .../unit/code_review_change_patch_test.rb | 129 +++ .../unit/code_review_changeset_patch_test.rb | 219 ++++ .../unit/code_review_project_settings_test.rb | 108 ++ .../test/unit/code_review_test.rb | 129 +++ .../unit/code_review_user_setting_test.rb | 56 + .../images/closed_review.png | Bin 0 -> 508 bytes .../redmine_code_review/images/review.png | Bin 0 -> 498 bytes .../javascripts/code_review.js | 354 +++++++ .../stylesheets/activity.css | 4 + .../stylesheets/code_review.css | 97 ++ .../stylesheets/window_js/MIT-LICENSE | 19 + .../stylesheets/window_js/alert.css | 119 +++ .../stylesheets/window_js/alert/bottom.gif | Bin 0 -> 70 bytes .../window_js/alert/bottom_left.gif | Bin 0 -> 49 bytes .../window_js/alert/bottom_right.gif | Bin 0 -> 49 bytes .../stylesheets/window_js/alert/left.gif | Bin 0 -> 84 bytes .../stylesheets/window_js/alert/overlay.png | Bin 0 -> 2829 bytes .../stylesheets/window_js/alert/progress.gif | Bin 0 -> 1542 bytes .../stylesheets/window_js/alert/right.gif | Bin 0 -> 84 bytes .../stylesheets/window_js/alert/top.gif | Bin 0 -> 70 bytes .../stylesheets/window_js/alert/top_left.gif | Bin 0 -> 49 bytes .../stylesheets/window_js/alert/top_right.gif | Bin 0 -> 49 bytes .../stylesheets/window_js/alert_lite.css | 88 ++ .../stylesheets/window_js/alphacube.css | 150 +++ .../window_js/alphacube/bottom-left-c.gif | Bin 0 -> 60 bytes .../window_js/alphacube/bottom-middle.gif | Bin 0 -> 50 bytes .../window_js/alphacube/bottom-right-c.gif | Bin 0 -> 61 bytes .../alphacube/button-close-focus.gif | Bin 0 -> 699 bytes .../window_js/alphacube/button-max-focus.gif | Bin 0 -> 765 bytes .../window_js/alphacube/button-min-focus.gif | Bin 0 -> 472 bytes .../window_js/alphacube/frame-left.gif | Bin 0 -> 64 bytes .../window_js/alphacube/frame-right.gif | Bin 0 -> 64 bytes .../window_js/alphacube/left-top.gif | Bin 0 -> 171 bytes .../window_js/alphacube/right-top.gif | Bin 0 -> 168 bytes .../window_js/alphacube/top-middle.gif | Bin 0 -> 97 bytes .../stylesheets/window_js/behavior.htc | 51 + .../stylesheets/window_js/darkX.css | 121 +++ .../window_js/darkX/button-close-focused.png | Bin 0 -> 904 bytes .../darkX/button-maximize-focused.png | Bin 0 -> 882 bytes .../darkX/button-minimize-focused.png | Bin 0 -> 839 bytes .../darkX/frame-bottom-left-focused.png | Bin 0 -> 142 bytes .../darkX/frame-bottom-mid-focused.png | Bin 0 -> 142 bytes .../darkX/frame-bottom-right-focused.png | Bin 0 -> 142 bytes .../window_js/darkX/frame-left-focused.png | Bin 0 -> 142 bytes .../window_js/darkX/frame-right-focused.png | Bin 0 -> 142 bytes .../window_js/darkX/titlebar-left-focused.png | Bin 0 -> 180 bytes .../window_js/darkX/titlebar-mid-focused.png | Bin 0 -> 175 bytes .../darkX/titlebar-right-focused.png | Bin 0 -> 180 bytes .../stylesheets/window_js/debug.css | 25 + .../stylesheets/window_js/default.css | 155 +++ .../window_js/default/bottom_left.gif | Bin 0 -> 187 bytes .../window_js/default/bottom_mid.gif | Bin 0 -> 68 bytes .../window_js/default/bottom_right.gif | Bin 0 -> 187 bytes .../window_js/default/bottom_right_resize.gif | Bin 0 -> 201 bytes .../window_js/default/center_left.gif | Bin 0 -> 52 bytes .../window_js/default/center_right.gif | Bin 0 -> 49 bytes .../stylesheets/window_js/default/clear.gif | Bin 0 -> 1014 bytes .../stylesheets/window_js/default/close.gif | Bin 0 -> 1012 bytes .../stylesheets/window_js/default/inspect.gif | Bin 0 -> 556 bytes .../window_js/default/maximize.gif | Bin 0 -> 1024 bytes .../window_js/default/minimize.gif | Bin 0 -> 1023 bytes .../stylesheets/window_js/default/overlay.png | Bin 0 -> 2818 bytes .../stylesheets/window_js/default/resize.gif | Bin 0 -> 138 bytes .../stylesheets/window_js/default/sizer.gif | Bin 0 -> 201 bytes .../window_js/default/top_left.gif | Bin 0 -> 358 bytes .../stylesheets/window_js/default/top_mid.gif | Bin 0 -> 149 bytes .../window_js/default/top_right.gif | Bin 0 -> 357 bytes .../stylesheets/window_js/iefix/blank.gif | Bin 0 -> 49 bytes .../stylesheets/window_js/iefix/iepngfix.css | 3 + .../stylesheets/window_js/iefix/iepngfix.htc | 54 + .../stylesheets/window_js/lighting.css | 960 ++++++++++++++++++ .../window_js/lighting/background_buttons.gif | Bin 0 -> 70 bytes .../window_js/lighting/bottom-left-blue.png | Bin 0 -> 335 bytes .../lighting/bottom-left-darkblue.png | Bin 0 -> 334 bytes .../window_js/lighting/bottom-left-green.png | Bin 0 -> 347 bytes .../window_js/lighting/bottom-left-grey.png | Bin 0 -> 346 bytes .../window_js/lighting/bottom-middle-blue.png | Bin 0 -> 156 bytes .../lighting/bottom-middle-darkblue.png | Bin 0 -> 154 bytes .../lighting/bottom-middle-green.png | Bin 0 -> 155 bytes .../window_js/lighting/bottom-middle-grey.png | Bin 0 -> 156 bytes .../window_js/lighting/bottom-right-blue.png | Bin 0 -> 397 bytes .../lighting/bottom-right-darkblue.png | Bin 0 -> 392 bytes .../window_js/lighting/bottom-right-green.png | Bin 0 -> 390 bytes .../window_js/lighting/bottom-right-grey.png | Bin 0 -> 424 bytes .../window_js/lighting/button-close-blue.png | Bin 0 -> 308 bytes .../lighting/button-close-darkblue.png | Bin 0 -> 308 bytes .../window_js/lighting/button-close-green.png | Bin 0 -> 305 bytes .../window_js/lighting/button-close-grey.png | Bin 0 -> 320 bytes .../lighting/button-maximize-blue.png | Bin 0 -> 218 bytes .../lighting/button-maximize-darkblue.png | Bin 0 -> 212 bytes .../lighting/button-maximize-green.png | Bin 0 -> 226 bytes .../lighting/button-maximize-grey.png | Bin 0 -> 218 bytes .../lighting/button-minimize-blue.png | Bin 0 -> 164 bytes .../lighting/button-minimize-darkblue.png | Bin 0 -> 172 bytes .../lighting/button-minimize-green.png | Bin 0 -> 172 bytes .../lighting/button-minimize-grey.png | Bin 0 -> 184 bytes .../window_js/lighting/left-blue.png | Bin 0 -> 144 bytes .../window_js/lighting/left-darkblue.png | Bin 0 -> 143 bytes .../window_js/lighting/left-green.png | Bin 0 -> 144 bytes .../window_js/lighting/left-grey.png | Bin 0 -> 144 bytes .../window_js/lighting/pngbehavior.htc | 67 ++ .../window_js/lighting/right-blue.png | Bin 0 -> 146 bytes .../window_js/lighting/right-darkblue.png | Bin 0 -> 146 bytes .../window_js/lighting/right-green.png | Bin 0 -> 146 bytes .../window_js/lighting/right-grey.png | Bin 0 -> 155 bytes .../window_js/lighting/spinner.gif | Bin 0 -> 2037 bytes .../window_js/lighting/top-left-blue.png | Bin 0 -> 336 bytes .../window_js/lighting/top-left-darkblue.png | Bin 0 -> 360 bytes .../window_js/lighting/top-left-green.png | Bin 0 -> 339 bytes .../window_js/lighting/top-left-grey.png | Bin 0 -> 352 bytes .../window_js/lighting/top-middle-blue.png | Bin 0 -> 200 bytes .../lighting/top-middle-darkblue.png | Bin 0 -> 226 bytes .../window_js/lighting/top-middle-green.png | Bin 0 -> 208 bytes .../window_js/lighting/top-middle-grey.png | Bin 0 -> 185 bytes .../window_js/lighting/top-right-blue.png | Bin 0 -> 423 bytes .../window_js/lighting/top-right-darkblue.png | Bin 0 -> 451 bytes .../window_js/lighting/top-right-green.png | Bin 0 -> 440 bytes .../window_js/lighting/top-right-grey.png | Bin 0 -> 495 bytes .../stylesheets/window_js/mac_os_x.css | 333 ++++++ .../stylesheets/window_js/mac_os_x/B.png | Bin 0 -> 268 bytes .../stylesheets/window_js/mac_os_x/BL.png | Bin 0 -> 5068 bytes .../window_js/mac_os_x/BL_Main.png | Bin 0 -> 5068 bytes .../stylesheets/window_js/mac_os_x/BR.png | Bin 0 -> 5068 bytes .../window_js/mac_os_x/BR_Main.png | Bin 0 -> 5068 bytes .../stylesheets/window_js/mac_os_x/B_Main.png | Bin 0 -> 268 bytes .../stylesheets/window_js/mac_os_x/L.png | Bin 0 -> 133 bytes .../stylesheets/window_js/mac_os_x/L_Main.png | Bin 0 -> 133 bytes .../stylesheets/window_js/mac_os_x/R.png | Bin 0 -> 133 bytes .../stylesheets/window_js/mac_os_x/R_Main.png | Bin 0 -> 133 bytes .../stylesheets/window_js/mac_os_x/T.png | Bin 0 -> 218 bytes .../stylesheets/window_js/mac_os_x/TL.png | Bin 0 -> 360 bytes .../window_js/mac_os_x/TL_Main.png | Bin 0 -> 444 bytes .../stylesheets/window_js/mac_os_x/TR.png | Bin 0 -> 3818 bytes .../window_js/mac_os_x/TR_Main.png | Bin 0 -> 3818 bytes .../stylesheets/window_js/mac_os_x/T_Main.png | Bin 0 -> 218 bytes .../stylesheets/window_js/mac_os_x/close.gif | Bin 0 -> 1012 bytes .../window_js/mac_os_x/maximize.gif | Bin 0 -> 1024 bytes .../window_js/mac_os_x/minimize.gif | Bin 0 -> 1023 bytes .../stylesheets/window_js/mac_os_x_dialog.css | 160 +++ .../window_js/mac_os_x_dialog/B.png | Bin 0 -> 2861 bytes .../window_js/mac_os_x_dialog/BL.png | Bin 0 -> 3046 bytes .../window_js/mac_os_x_dialog/BR.png | Bin 0 -> 3073 bytes .../window_js/mac_os_x_dialog/L.png | Bin 0 -> 133 bytes .../window_js/mac_os_x_dialog/R.png | Bin 0 -> 133 bytes .../window_js/mac_os_x_dialog/T.png | Bin 0 -> 218 bytes .../window_js/mac_os_x_dialog/TL.png | Bin 0 -> 360 bytes .../window_js/mac_os_x_dialog/TR.png | Bin 0 -> 3818 bytes .../window_js/mac_os_x_dialog/bg.gif | Bin 0 -> 65 bytes .../window_js/mac_os_x_dialog/close.gif | Bin 0 -> 1012 bytes .../window_js/mac_os_x_dialog/maximize.gif | Bin 0 -> 1024 bytes .../window_js/mac_os_x_dialog/minimize.gif | Bin 0 -> 1023 bytes .../stylesheets/window_js/nuncio.css | 164 +++ .../window_js/nuncio/bottom_left.png | Bin 0 -> 616 bytes .../window_js/nuncio/bottom_mid.png | Bin 0 -> 3617 bytes .../window_js/nuncio/bottom_right.png | Bin 0 -> 660 bytes .../window_js/nuncio/center_left.png | Bin 0 -> 6606 bytes .../window_js/nuncio/center_right.png | Bin 0 -> 6509 bytes .../stylesheets/window_js/nuncio/close.png | Bin 0 -> 772 bytes .../stylesheets/window_js/nuncio/minimize.png | Bin 0 -> 693 bytes .../stylesheets/window_js/nuncio/overlay.png | Bin 0 -> 40803 bytes .../stylesheets/window_js/nuncio/top_left.png | Bin 0 -> 971 bytes .../stylesheets/window_js/nuncio/top_mid.png | Bin 0 -> 5944 bytes .../window_js/nuncio/top_right.png | Bin 0 -> 1245 bytes .../stylesheets/window_js/spread.css | 108 ++ .../window_js/spread/bottom-left-c.gif | Bin 0 -> 60 bytes .../window_js/spread/bottom-middle.gif | Bin 0 -> 50 bytes .../window_js/spread/bottom-right-c.gif | Bin 0 -> 61 bytes .../window_js/spread/button-close-focus.gif | Bin 0 -> 699 bytes .../window_js/spread/button-max-focus.gif | Bin 0 -> 765 bytes .../window_js/spread/button-min-focus.gif | Bin 0 -> 472 bytes .../window_js/spread/frame-left.gif | Bin 0 -> 64 bytes .../window_js/spread/frame-right.gif | Bin 0 -> 64 bytes .../stylesheets/window_js/spread/left-top.gif | Bin 0 -> 273 bytes .../window_js/spread/right-top.gif | Bin 0 -> 265 bytes .../window_js/spread/top-middle.gif | Bin 0 -> 152 bytes 442 files changed, 14177 insertions(+), 2 deletions(-) create mode 100644 doc/Redmine插件Code Review使用介绍.doc create mode 100644 plugins/redmine_code_review/GPL.txt create mode 100644 plugins/redmine_code_review/README.rdoc create mode 100644 plugins/redmine_code_review/app/controllers/code_review_controller.rb create mode 100644 plugins/redmine_code_review/app/controllers/code_review_settings_controller.rb create mode 100644 plugins/redmine_code_review/app/helpers/code_review_helper.rb create mode 100644 plugins/redmine_code_review/app/models/code_review.rb create mode 100644 plugins/redmine_code_review/app/models/code_review_assignment.rb create mode 100644 plugins/redmine_code_review/app/models/code_review_project_setting.rb create mode 100644 plugins/redmine_code_review/app/models/code_review_user_setting.rb create mode 100644 plugins/redmine_code_review/app/models/review_mailer.rb create mode 100644 plugins/redmine_code_review/app/views/code_review/_add_success.html.erb create mode 100644 plugins/redmine_code_review/app/views/code_review/_body_bottom.html.erb create mode 100644 plugins/redmine_code_review/app/views/code_review/_change_attachement_view.html.erb create mode 100644 plugins/redmine_code_review/app/views/code_review/_change_entry_norevision_view.html.erb create mode 100644 plugins/redmine_code_review/app/views/code_review/_change_repository_view.html.erb create mode 100644 plugins/redmine_code_review/app/views/code_review/_change_revision_view.html.erb create mode 100644 plugins/redmine_code_review/app/views/code_review/_history.html.erb create mode 100644 plugins/redmine_code_review/app/views/code_review/_html_header.html.erb create mode 100644 plugins/redmine_code_review/app/views/code_review/_issues_show_details_bottom.html.erb create mode 100644 plugins/redmine_code_review/app/views/code_review/_new_form.html.erb create mode 100644 plugins/redmine_code_review/app/views/code_review/_reply.html.erb create mode 100644 plugins/redmine_code_review/app/views/code_review/_show.html.erb create mode 100644 plugins/redmine_code_review/app/views/code_review/_show_error.html.erb create mode 100644 plugins/redmine_code_review/app/views/code_review/_update_diff_view.html.erb create mode 100644 plugins/redmine_code_review/app/views/code_review/_update_revisions.html.erb create mode 100644 plugins/redmine_code_review/app/views/code_review/index.html.erb create mode 100644 plugins/redmine_code_review/app/views/code_review_settings/_filters.html.erb create mode 100644 plugins/redmine_code_review/app/views/code_review_settings/_show.html.erb create mode 100644 plugins/redmine_code_review/assets/images/closed_review.png create mode 100644 plugins/redmine_code_review/assets/images/review.png create mode 100644 plugins/redmine_code_review/assets/javascripts/code_review.js create mode 100644 plugins/redmine_code_review/assets/stylesheets/activity.css create mode 100644 plugins/redmine_code_review/assets/stylesheets/code_review.css create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/MIT-LICENSE create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alert.css create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alert/bottom.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alert/bottom_left.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alert/bottom_right.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alert/left.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alert/overlay.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alert/progress.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alert/right.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alert/top.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alert/top_left.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alert/top_right.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alert_lite.css create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alphacube.css create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alphacube/bottom-left-c.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alphacube/bottom-middle.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alphacube/bottom-right-c.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alphacube/button-close-focus.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alphacube/button-max-focus.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alphacube/button-min-focus.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alphacube/frame-left.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alphacube/frame-right.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alphacube/left-top.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alphacube/right-top.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/alphacube/top-middle.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/behavior.htc create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/darkX.css create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/darkX/button-close-focused.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/darkX/button-maximize-focused.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/darkX/button-minimize-focused.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/darkX/frame-bottom-left-focused.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/darkX/frame-bottom-mid-focused.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/darkX/frame-bottom-right-focused.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/darkX/frame-left-focused.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/darkX/frame-right-focused.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/darkX/titlebar-left-focused.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/darkX/titlebar-mid-focused.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/darkX/titlebar-right-focused.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/debug.css create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/default.css create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/default/bottom_left.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/default/bottom_mid.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/default/bottom_right.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/default/bottom_right_resize.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/default/center_left.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/default/center_right.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/default/clear.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/default/close.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/default/inspect.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/default/maximize.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/default/minimize.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/default/overlay.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/default/resize.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/default/sizer.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/default/top_left.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/default/top_mid.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/default/top_right.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/iefix/blank.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/iefix/iepngfix.css create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/iefix/iepngfix.htc create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting.css create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/background_buttons.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-left-blue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-left-darkblue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-left-green.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-left-grey.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-middle-blue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-middle-darkblue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-middle-green.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-middle-grey.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-right-blue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-right-darkblue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-right-green.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-right-grey.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-close-blue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-close-darkblue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-close-green.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-close-grey.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-maximize-blue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-maximize-darkblue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-maximize-green.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-maximize-grey.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-minimize-blue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-minimize-darkblue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-minimize-green.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-minimize-grey.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/left-blue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/left-darkblue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/left-green.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/left-grey.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/pngbehavior.htc create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/right-blue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/right-darkblue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/right-green.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/right-grey.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/spinner.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/top-left-blue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/top-left-darkblue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/top-left-green.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/top-left-grey.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/top-middle-blue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/top-middle-darkblue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/top-middle-green.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/top-middle-grey.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/top-right-blue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/top-right-darkblue.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/top-right-green.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/lighting/top-right-grey.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x.css create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x/B.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x/BL.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x/BL_Main.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x/BR.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x/BR_Main.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x/B_Main.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x/L.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x/L_Main.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x/R.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x/R_Main.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x/T.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x/TL.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x/TL_Main.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x/TR.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x/TR_Main.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x/T_Main.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x/close.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x/maximize.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x/minimize.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x_dialog.css create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x_dialog/B.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x_dialog/BL.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x_dialog/BR.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x_dialog/L.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x_dialog/R.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x_dialog/T.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x_dialog/TL.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x_dialog/TR.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x_dialog/bg.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x_dialog/close.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x_dialog/maximize.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/mac_os_x_dialog/minimize.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/nuncio.css create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/nuncio/bottom_left.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/nuncio/bottom_mid.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/nuncio/bottom_right.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/nuncio/center_left.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/nuncio/center_right.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/nuncio/close.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/nuncio/minimize.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/nuncio/overlay.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/nuncio/top_left.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/nuncio/top_mid.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/nuncio/top_right.png create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/spread.css create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/spread/bottom-left-c.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/spread/bottom-middle.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/spread/bottom-right-c.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/spread/button-close-focus.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/spread/button-max-focus.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/spread/button-min-focus.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/spread/frame-left.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/spread/frame-right.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/spread/left-top.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/spread/right-top.gif create mode 100644 plugins/redmine_code_review/assets/stylesheets/window_js/spread/top-middle.gif create mode 100644 plugins/redmine_code_review/config/locales/bg.yml create mode 100644 plugins/redmine_code_review/config/locales/de.yml create mode 100644 plugins/redmine_code_review/config/locales/en.yml create mode 100644 plugins/redmine_code_review/config/locales/es.yml create mode 100644 plugins/redmine_code_review/config/locales/fr.yml create mode 100644 plugins/redmine_code_review/config/locales/hu.yml create mode 100644 plugins/redmine_code_review/config/locales/ja.yml create mode 100644 plugins/redmine_code_review/config/locales/ko.yml create mode 100644 plugins/redmine_code_review/config/locales/nl.yml create mode 100644 plugins/redmine_code_review/config/locales/pl.yml create mode 100644 plugins/redmine_code_review/config/locales/pt-br.yml create mode 100644 plugins/redmine_code_review/config/locales/ru.yml create mode 100644 plugins/redmine_code_review/config/locales/sk.yml create mode 100644 plugins/redmine_code_review/config/locales/sv.yml create mode 100644 plugins/redmine_code_review/config/locales/zh-TW.yml create mode 100644 plugins/redmine_code_review/config/locales/zh.yml create mode 100644 plugins/redmine_code_review/config/routes.rb create mode 100644 plugins/redmine_code_review/db/migrate/0001_create_code_reviews.rb create mode 100644 plugins/redmine_code_review/db/migrate/0002_add_updated_by.rb create mode 100644 plugins/redmine_code_review/db/migrate/0003_add_lock_version.rb create mode 100644 plugins/redmine_code_review/db/migrate/0004_add_status_changed.rb create mode 100644 plugins/redmine_code_review/db/migrate/0005_create_code_review_user_settings.rb create mode 100644 plugins/redmine_code_review/db/migrate/0006_link_to_issue.rb create mode 100644 plugins/redmine_code_review/db/migrate/0007_rename_user.rb create mode 100644 plugins/redmine_code_review/db/migrate/0008_create_code_review_project_settings.rb create mode 100644 plugins/redmine_code_review/db/migrate/0009_add_hide_tab.rb create mode 100644 plugins/redmine_code_review/db/migrate/0010_add_action_type.rb create mode 100644 plugins/redmine_code_review/db/migrate/0011_add_auto_relation.rb create mode 100644 plugins/redmine_code_review/db/migrate/0012_add_attachment_id.rb create mode 100644 plugins/redmine_code_review/db/migrate/0013_add_file_count.rb create mode 100644 plugins/redmine_code_review/db/migrate/0014_create_code_review_assignments.rb create mode 100644 plugins/redmine_code_review/db/migrate/0015_add_assignment_tracker.rb create mode 100644 plugins/redmine_code_review/db/migrate/0016_add_changeset_id.rb create mode 100644 plugins/redmine_code_review/db/migrate/0017_add_auto_assign.rb create mode 100644 plugins/redmine_code_review/db/migrate/0018_add_lock_version_to_project_settings.rb create mode 100644 plugins/redmine_code_review/db/migrate/0019_delete_old_fields.rb create mode 100644 plugins/redmine_code_review/db/migrate/0020_add_tracker_to_review_dialog.rb create mode 100644 plugins/redmine_code_review/db/migrate/0021_add_diff_all.rb create mode 100644 plugins/redmine_code_review/init.rb create mode 100644 plugins/redmine_code_review/lib/code_review_application_hooks.rb create mode 100644 plugins/redmine_code_review/lib/code_review_attachment_patch.rb create mode 100644 plugins/redmine_code_review/lib/code_review_auto_assign_settings.rb create mode 100644 plugins/redmine_code_review/lib/code_review_change_patch.rb create mode 100644 plugins/redmine_code_review/lib/code_review_changeset_patch.rb create mode 100644 plugins/redmine_code_review/lib/code_review_issue_hooks.rb create mode 100644 plugins/redmine_code_review/lib/code_review_issue_patch.rb create mode 100644 plugins/redmine_code_review/lib/code_review_projects_helper_patch.rb create mode 100644 plugins/redmine_code_review/test/code_review_object_daddy_helpers.rb create mode 100644 plugins/redmine_code_review/test/exemplars/code_review_exemplar.rb create mode 100644 plugins/redmine_code_review/test/fixtures/code_review_assignments.yml create mode 100644 plugins/redmine_code_review/test/fixtures/code_review_project_settings.yml create mode 100644 plugins/redmine_code_review/test/fixtures/code_review_user_settings.yml create mode 100644 plugins/redmine_code_review/test/fixtures/code_reviews.yml create mode 100644 plugins/redmine_code_review/test/functional/attachments_controller_test.rb create mode 100644 plugins/redmine_code_review/test/functional/code_review_controller_test.rb create mode 100644 plugins/redmine_code_review/test/functional/code_review_settings_controller_test.rb create mode 100644 plugins/redmine_code_review/test/functional/issues_controller_test.rb create mode 100644 plugins/redmine_code_review/test/functional/projects_controller_test.rb create mode 100644 plugins/redmine_code_review/test/functional/repositories_controller_test.rb create mode 100644 plugins/redmine_code_review/test/test_helper.rb create mode 100644 plugins/redmine_code_review/test/test_runner.rb create mode 100644 plugins/redmine_code_review/test/unit/code_review_assignment_test.rb create mode 100644 plugins/redmine_code_review/test/unit/code_review_attachment_patch_test.rb create mode 100644 plugins/redmine_code_review/test/unit/code_review_auto_assign_settings_test.rb create mode 100644 plugins/redmine_code_review/test/unit/code_review_change_patch_test.rb create mode 100644 plugins/redmine_code_review/test/unit/code_review_changeset_patch_test.rb create mode 100644 plugins/redmine_code_review/test/unit/code_review_project_settings_test.rb create mode 100644 plugins/redmine_code_review/test/unit/code_review_test.rb create mode 100644 plugins/redmine_code_review/test/unit/code_review_user_setting_test.rb create mode 100644 public/plugin_assets/redmine_code_review/images/closed_review.png create mode 100644 public/plugin_assets/redmine_code_review/images/review.png create mode 100644 public/plugin_assets/redmine_code_review/javascripts/code_review.js create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/activity.css create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/code_review.css create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/MIT-LICENSE create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alert.css create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alert/bottom.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alert/bottom_left.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alert/bottom_right.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alert/left.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alert/overlay.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alert/progress.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alert/right.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alert/top.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alert/top_left.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alert/top_right.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alert_lite.css create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alphacube.css create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alphacube/bottom-left-c.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alphacube/bottom-middle.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alphacube/bottom-right-c.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alphacube/button-close-focus.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alphacube/button-max-focus.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alphacube/button-min-focus.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alphacube/frame-left.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alphacube/frame-right.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alphacube/left-top.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alphacube/right-top.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/alphacube/top-middle.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/behavior.htc create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/button-close-focused.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/button-maximize-focused.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/button-minimize-focused.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/frame-bottom-left-focused.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/frame-bottom-mid-focused.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/frame-bottom-right-focused.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/frame-left-focused.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/frame-right-focused.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/titlebar-left-focused.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/titlebar-mid-focused.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/titlebar-right-focused.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/default/bottom_left.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/default/bottom_mid.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/default/bottom_right.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/default/bottom_right_resize.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/default/center_left.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/default/center_right.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/default/clear.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/default/close.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/default/inspect.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/default/maximize.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/default/minimize.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/default/overlay.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/default/resize.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/default/sizer.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/default/top_left.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/default/top_mid.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/default/top_right.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/blank.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/background_buttons.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-left-blue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-left-darkblue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-left-green.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-left-grey.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-middle-blue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-middle-darkblue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-middle-green.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-middle-grey.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-right-blue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-right-darkblue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-right-green.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-right-grey.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-close-blue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-close-darkblue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-close-green.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-close-grey.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-maximize-blue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-maximize-darkblue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-maximize-green.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-maximize-grey.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-minimize-blue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-minimize-darkblue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-minimize-green.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-minimize-grey.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/left-blue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/left-darkblue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/left-green.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/left-grey.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/right-blue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/right-darkblue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/right-green.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/right-grey.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/spinner.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/top-left-blue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/top-left-darkblue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/top-left-green.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/top-left-grey.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/top-middle-blue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/top-middle-darkblue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/top-middle-green.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/top-middle-grey.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/top-right-blue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/top-right-darkblue.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/top-right-green.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/top-right-grey.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x.css create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x/B.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x/BL.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x/BL_Main.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x/BR.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x/BR_Main.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x/B_Main.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x/L.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x/L_Main.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x/R.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x/R_Main.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x/T.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x/TL.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x/TL_Main.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x/TR.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x/TR_Main.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x/T_Main.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x/close.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x/maximize.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x/minimize.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x_dialog.css create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x_dialog/B.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x_dialog/BL.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x_dialog/BR.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x_dialog/L.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x_dialog/R.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x_dialog/T.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x_dialog/TL.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x_dialog/TR.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x_dialog/bg.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x_dialog/close.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x_dialog/maximize.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/mac_os_x_dialog/minimize.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/nuncio.css create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/nuncio/bottom_left.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/nuncio/bottom_mid.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/nuncio/bottom_right.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/nuncio/center_left.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/nuncio/center_right.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/nuncio/close.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/nuncio/minimize.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/nuncio/overlay.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/nuncio/top_left.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/nuncio/top_mid.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/nuncio/top_right.png create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/spread.css create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/spread/bottom-left-c.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/spread/bottom-middle.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/spread/bottom-right-c.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/spread/button-close-focus.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/spread/button-max-focus.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/spread/button-min-focus.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/spread/frame-left.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/spread/frame-right.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/spread/left-top.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/spread/right-top.gif create mode 100644 public/plugin_assets/redmine_code_review/stylesheets/window_js/spread/top-middle.gif diff --git a/Gemfile.lock b/Gemfile.lock index 189cbabce..1767afd4e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -185,4 +185,5 @@ DEPENDENCIES sass-rails (~> 3.2.3) seems_rateable! shoulda (> 3.3.2) + therubyracer uglifier (>= 1.0.3) diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb index 65206350e..ae8c322f7 100644 --- a/app/controllers/attachments_controller.rb +++ b/app/controllers/attachments_controller.rb @@ -120,7 +120,7 @@ class AttachmentsController < ApplicationController end if @attachment.container # Make sure association callbacks are called - @attachment.container.attachments.delete(@attachment) + @attachment.container.def attachments.delete(@attachment) else @attachment.destroy end diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 70f7572a8..3b97802f5 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -568,7 +568,7 @@ class RepositoriesController < ApplicationController project = Project.find(params[:id]) if !User.current.member_of?(project) if project.hidden_repo - render_403 + #render_403 end end rescue ActiveRecord::RecordNotFound diff --git a/db/schema.rb b/db/schema.rb index e9028261d..231347cd3 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -174,6 +174,58 @@ ActiveRecord::Schema.define(:version => 20140618020535) do add_index "changesets_issues", ["changeset_id", "issue_id"], :name => "changesets_issues_ids", :unique => true + create_table "code_review_assignments", :force => true do |t| + t.integer "issue_id" + t.integer "change_id" + t.integer "attachment_id" + t.string "file_path" + t.string "rev" + t.string "rev_to" + t.string "action_type" + t.integer "changeset_id" + end + + create_table "code_review_project_settings", :force => true do |t| + t.integer "project_id" + t.integer "tracker_id" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "updated_by" + t.boolean "hide_code_review_tab", :default => false + t.integer "auto_relation", :default => 1 + t.integer "assignment_tracker_id" + t.text "auto_assign" + t.integer "lock_version", :default => 0, :null => false + t.boolean "tracker_in_review_dialog", :default => false + end + + create_table "code_review_user_settings", :force => true do |t| + t.integer "user_id", :default => 0, :null => false + t.integer "mail_notification", :default => 0, :null => false + t.datetime "created_at" + t.datetime "updated_at" + end + + create_table "code_reviews", :force => true do |t| + t.integer "project_id" + t.integer "change_id" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "line" + t.integer "updated_by_id" + t.integer "lock_version", :default => 0, :null => false + t.integer "status_changed_from" + t.integer "status_changed_to" + t.integer "issue_id" + t.string "action_type" + t.string "file_path" + t.string "rev" + t.string "rev_to" + t.integer "attachment_id" + t.integer "file_count", :default => 0, :null => false + t.boolean "diff_all" + end + create_table "comments", :force => true do |t| t.string "commented_type", :limit => 30, :default => "", :null => false t.integer "commented_id", :default => 0, :null => false diff --git a/doc/Redmine插件Code Review使用介绍.doc b/doc/Redmine插件Code Review使用介绍.doc new file mode 100644 index 0000000000000000000000000000000000000000..db12c7a9ebb00250c2994e28188c28b4d61f113f GIT binary patch literal 434176 zcmeFa2S61|mOtF&tbl+D3Me2bNr@5!Q8EGok~2t7k~0@k(j|j}fRb~R90kcqQGy^K zIZBWWmw3Or`j~Ov?3Nt)Pj^*UpDsRrAel%mqMU?&=Y${(=opCy zVgHnl1Hv*Gza5E!ObJ2gAj=i_DEIgH^q^ec1qez3gmN?xqyyrw0R1Ht zgWtImIh@q{yKLwr{f~SU-=EzHzZ3tY|0iWoaV{X2IzWf&GR|-GzxPq~9fS7&p3m>& zDEa*CPWb$s_VzrkOTxlFpl*!c-HBcapNAlPka9xz zTQ+0}%hnbqZ3t3d2%*7cm_eq_nSKWb)MM zGGqrCK@TA-$PBUuAzjE2vH@{a2$kam(v2Wz=rZJQv?Ir-E@X6F@h>T!I?+Pxpqvq) ze+X#pKL?>8t0<|kuLH?llN%4Y7K&r)k@8@-FPc;T)u^p#lU z;0CXa_H~{*{l~nH74d!b2&nlf^y z9-wM+d|?ptF2W$@h8CqfrTV@Cs=Yr`Jazif0#yG|EhPX_K(+U};tAK277`-i1}8GW z3nw=Ck6TKJbW#|Q`<###gpw}$bzJ07*t-aJ;|Udhxn9E^IY~PflP%-dMt*YQ^6bV^ zmJ~`T9ZI$w4?*>i!~kwE6t)nKt%#D|;^TE~R0))nQF?-B0>wNIeCkAC(xtQ;gwkKp z=pB#_H*kYYAvVYr=!PZq*V@SXC;k0dd*4Mob+QCnWDRukhrZ$ccD7J5*nIrZf)I(4 zV6f&Vixcg@1KI(TXL2NhZa_amvWg!K*^N=>^@1fCKm0G5YqhF=bQ4(kj{4>MmK1{oO2xM;U9%-^Y? zLFA_P%GnUb_v4*wXm_R0K=R;WPyqlG(gB`6NV1ZIFs%U|nWDPoh>ONZVY+@l6uK@= z2K|oegyct2PzzHf^v~7;s1p?b6>4X;e}x*=*MCwzbU)Z z!rye@9Plpy9bf^t4!{rK0}ucZ48Q{P;U>U!aQ>wMPwODkhu|WD&ZL0}IsmIEgeKbxN z!RVSCio#c+N|W$UrQby?DpAVw8D%N90WPWGsQdVjk&g@1&!mbPQSJroDxqot_ww%} z(ScQxVslV+&_!A>5*ZdeBSfNF^8|23jad5%ukBIgEYxBZQ1{5w`VHXzzo$7GByM^# zV*RLr8`OZ}6|6~YaOwg2^*zmJU^GS5_AcTFp9{38p8psp|D(G2boUh~6=e-jbv<=D zsqN3ToQ&c;pr)a)YjUWzP|DAO(e&H%7cWrlH_$x|c)Ye}QbnblRWuD?1*6l1%0r9s zkUQV!KJ1VVYwE0kXHpQpBS#rN>x_22+zw4| z%b3qd$~{r>$Q#v~lXmcecFZYJsDBPyRhpGU%?wUP?C-MtKCgHef$H;Z13WORJIQ?= zq^$ch9|1ijc_WjpAVM%wU;92r>%`pD@pe~M!k3dVK#j>vs;Ds>k~6YE;i*$`(5ljr z_vbK5c|4P9xpx{Q29K2Il>NZWpKK&LUxQ3Za)z|??{{QC@m!c^T7tR{hx8nX)PpB*g$wX*BKLS5dB z@h{Z0Cn!E0WJeP0yxnDHxNeY zfHwe22mAm~IuHyH3UHza|HDS>xu11#^5@9EG3PH>|3&2I2K-B5uy+63XbvU||KRvf z!2{h0zlp|iA06U4~`@d5*%?M?C*m zkA-xi_w}TZP&!BlA_Qj<<#J9XiCuMbc*B@0Rb@uG07P+a&mIQ(`V07 zkewqXBPT;KLBjwvm{@pNSa@Va1Vm*2utUCuNN}NHv<3{c%MdyV8U_g(vKa#JKG3j0 zYf%mU&7q-#He%!8;^7m30%gPyIvNHBIwl6H)u6N|$cHdVut+c65Wzm9ppSFemW<&wkf0 z63{PnOiT<+98|y1(47G=NHDQ3-M}UlQNYo+J#(4kF)rDih~%OMJUULrHF5*H9()RV zu1SVIu_e z7sRHfr)u6yZ}fI@UJ2Y86d$FJ#FG@>Y%iq4M900Nl}}%vKls&o;l(Z5*^$G;=PZJ;~fi1yviF^gWA> zDp?IV=7aG)_PvB%7|beN?TgOXmlhKf8!B1umZqnn^a|0&hHoKsDM7*qZbBuQ2>*K( z{SLWHRxVbX`5Nx0yJ~r$Ahah`OgLJtwHoCOXFXxT3F*XUk6GxOxbdn3371(FWg= zKdoan5LZy7pP_Beu}5)VN1I;Wk&%X8y7{cN1VL1Lz6PReCl`^L?;=0_p)qUqY!g3O zIj?gC1@CTL@Gfycx(L3MBTdxV=LwH6eeG~f#ITl})z*EZLyRV)*LNS+(W@^VUwy^W z%X+r8VCO8a9pSUbN-AiV`S$K&-N(I{L+2_H>s+x==X^x)Je5s#7zrhQHTKk3AE2h| zb<~!*-(df*x3aK{lrf*bsje)=BzKx9)UR}D`h#yGfg}4lv5dA!7@R-N z&GG$c3sA(;qRU@3nkipKL_FJA8E{!=f{k__NGCNI6&5VBYIL>^kA7pQaWPbT-_n3B zB?(zuB@wk{zr|oo%AGA9ge|SDjH*Yuzu`G9_3}L6XdzQjyssce2K^g=rlj)8a_bh` zszSfDLGkO-z>I_`C;SNURF-%0w;}Gm$pc;wuF7@Zz?5}{`p4Yw?VB<>m3?-4SGHcr zcJ$9ipC49CwH5>SBK4r}J)|9^rt4$d{+!X5 zm*g{dJY`{FYOG!-uJSzC{n>T>O6Lm~Je80To>=1HdOvJU-5v?GE+C<&DIbnq7KITk zRY+*sQE7LOc@@@*gdBI4RlF{>!**HcZ)wGI2*@sd$y1ep(!Qzt{+z-&SISW zkVH_e{Pa#qzZEYoftZnHl$Io2v@-sAV$lV7EXE9ZpI0X(hAA}-Lfh4ItzKlEC#vB5 zJE1FmTjczqVYU}GEFew99VYWmY{Y6oVzAB9b6&=D0a!;M*lRPa?ifAPWBXx1=Mo32Ue0u@!*Ua@= zp$lxp9>!a?t)Q{f?V21_RqESj9;MKHFCoV^plZJmC0L%`dZBfWC1U~-kZixu_wCyj z!I4~>Vs-D8s(wq}qsVVo6i(6OE=_yZ2A$Rrh7Si0_e({UdKu4-Oq+O(dIWE;Rp-v~ z@sT2o9!TFij1!@s?lRbbgid+LCcA7l+q>Ayeq2pprD<7lG#w=Unj;b_72L&QetSiZx-lpoGPw@Y#{YicHZbs^#m}iBku@)%_+uS~5mif~wLLM3=2U z(~%ToqmiLS?0z_8pnz?*DIlQ+qYp@kD)pE&NO*5L3kgjW&m*CbkKe|*w-24hS4%vp z#>KgMRmx-bY}~zqfU2lYZhvU_KyoO$emX=@CTBtDT#r>+DZKkMLXt5`BTC_O?ycU@ zmPd>?{KJzyiiP^Fs1m;4%?KgNuZu9c7`*EE@HMTEE1S-2nry1YdF|LVdcAK3Qj1dW zm4BzN4zNZA6C@<)NOMS`g@o3tYjV|Lx`Pv?L+8`;$G4BX*p+nP?f)53WQZFx-S0Zr z^ZP3WnK}~sa8UvYVZ{g^T6=RZ9351z z&dVYp;WJ2Rd;kei3VyAhpMo9ik5Aves7>DK+6Vj4jD&W#>s!P4ZT1j}$Hx_jk2tDg zb_ovSo9n_yM>gxJ-SNj>j7X?H|CkHyQ;$~WE8fFHc_akWJT(1P*?)r=Hw#IRdxUV; z{OZAIS`lEw>PW9(hW64|nb zRt35mU+$*AGHcB?bJg={CMIg#>mh54+I`%n^zp*o0f*S_pNgHhI?Vq7+Lw+tMS077N@~sqO|o9d03`)*^F)H zw}32<$Tq%cApva6345R$zEu;eEA`7Z2stj;N?569*n#kYF?*@&LAk4r&e6!OM~&^v z_27>gei3p(l825bwp^dUA|61+bts&?-!@ z2agdWlJSLo57n)5rF%+Sdj&FNo{4$-CSYF{r3yH21btJyNk>av^?yo#;n0^s;TbB% zgAOE=41b${WPdDD469AtKbMCOF{Qx&B`{B(9uD1rb<7-7+$$PuQ8ly+gm`5avWq zCpA5G$(MjI+v+i%TjFGQeF}nCe$YeA)pbgQCu)iyghr;mFX`h^tk|Z-M2n(j^mde<%r!Aacg#q22c~Z2#XUEEKX^nNhz#-*G zNSx|g?O0keJR&LOImf5)BF8%5k%Ud&A<*_=2cOe8I(xENqbivM zD}-;f$Ze)e-opJ=8-bYDw@#|mkmzu;$Sq*S>dhjr{Z znAGtGIy|lDXQO&hBFQxwKSb?FV9tYc^p$aD57#FC00u8_BOSIi07Ts!eQ7AY1o+= zMcC0fU+>>4h%q5d^t!1)MV)+`+q^O@(uyvHsPpRU6!=v#G6gZ{-wlnQ&s9#D%>%6b z>-@2FG>H9vU89(T`mAg*4$5mb#a&0^{R%tku$q0i!KIXp1D5*HBQcuqC6aJWv+KIp zcVP+=Lq^A|i%jUhBY^zi@yo?X$a$O0Gg|lCaflkkO=6i$>B_ig9$L~pD~VJcedZhf|o4$s2(&$QQhp9Ra3-(Na= z9IVl}R^fw$CeN>*4dRwB_sl$S+ZPyT?i`x2tbkvv>KILAc6!7=ec|C(afP6$$gi3C zgM~5?3er+cyN4`C{GZ#a5cT>tIbHY*`(@n`HXhYR-Svczj^I?0Q^G7yn4TBWU89g3 zA`is!8yFFKv(8<6BVWWK$3;`KtT&_9ul3d=Dk)aN$k&n^*?cdsogQ=q=p{VjE4VYg z<51+^dN!`bx8i9Ud{cq{Sz*45I(r%JtjTG{=Z^DNdTJP)Q=c*V+{R~Kf|Udm6d_VS&IpDYZ>YKW;XdG1HJ4ysm9;^nkDYI!~yjSf@ z**jaL_C&tcTCAsvt+AzM59z9#t8#u8F%rieHBv9f|an~ckYsi2Uod;9=nr$sf+!H0l`8-6tO8>UD zbBj|9?_iURmfBbBv2)Sg%U`^6`f5D(hV9yL7&FMYUT@giIjO3STM5$yZQ=3vD9x(6 zjaaX)m4zm(PQ5Je)fkePSS8k8>U}$CZyL@WQCaHECl;y7dztuL_HZuUjfOohl{V$c z6}Jy9l;nPeneDxw$8X0Fmn4f{Yofd6iqlX1{OzF(;*#O?_!$kvW4*Pb*7S=>MUld1 zOl5L4xkS3MMLEQKDvfPk2;mywzr3n5-xx=8NT+k5Z|hCD)Q*~{yTj5AGs_#pH}75# z@jS~&otdxCZu~W)j%|1k3B5fo|74#NBJ5v3x<9_gos|Ng=fP)6@&0#$+5FF!OWr40 z*>VlPr9eYr#D32X650{gfGWfu9Ka4}@@Z_4kl}WwzSdtRq%_!#k}Itsp=Ga9&-$aV zfgr3d2W9yRBvf?5g5@l0kFwDCaodu_2om~yWcvCSkN>yw5c8QbuV0^mEv3QsDF>e% zN)&%$5xhI4t=i0^!&b94sBmx%ey9ys7g!R&rU~RSC=)Z8NdElXJW?WJKJKpW{dP^!hnV z_}J4=eD=aiHr#v1#>xh>RP0M@u!wg$hZ_BQYad!zrF#YV+I*+SGX+v3_>cUUy^Z$# z?7F?ajolcJYyRZL>e5Xmf6;=c{xgXgHR<&(hWwVi_qUdf2dDyxrLPd2(f`bB`N*zH zp)`8cLuSpQ5p<=Wjaz^qR=CuFc&x!DTU&Evlt~+IGkdP196^-S zF(vE%pntZeKYv@Gl1=FzZw!eBE&N>SgJ`Un&cqi_j74wx-zp9T{RNE+Ta9T>=MYI&+9U0$Zj~u?Uq5;)^-z^j#*j_(L=p z4l?89h#-xDD>a{#RNwe*9^4%LB4%2rr9i8$r|yxx7r>)^`u=rW%>-J6`efpnC8F#_ z9!?p1+CUS@LK8oNKHrCn2jW7lOgT;!h8RFt|HYt2d8 zXovTfS|evd&vxm()Fcf5vx~qzO0T%Vd~+(hpp`pQ>oMNf3ps1BAVQ{_7yYjkKbO2| z$6!^>HoUY{xJQx9z;I=?erl_)Z{PS0nSxf^?SI3&pr79_p;>^X<}mP1RU6>rK+dQ4 zqS)p4-Od|=nd2Z`)}b!KHcj`7+PKSn6OU^72A7himIcpx$C)QSdFc(9)VN&YY#L%( zc4o{KhAAn95`?6!1uq=*&Z}$EKKb}WhMriAN`Q@Agnni#ZL|Wju;>n4{*?K?Y7iF{ zk%@H7iiXt|v#pKLpzJ~u?TQ}mJ~5H$Q8fFv@G}6tnpXM{|;#|RjL^$A14bh<>~Ixoxpd$`Y} zFGjdTcQ;OTF17L|T0P`dXu5jbX5=Eu7A#$-I%{O>N2`+WAINj4AJ=W=e&DsCt+K<; zd~cn*J)xI`tj4gqXGm0v&;@V)Y8UUb!&Sb09{9pe&yL5-HjCl)P@U}U3Z)rxG(yLRjqW+L~d*h%H&QxHpmjY*k{>?xy|C6xI-z)w6 zcvx^&6A>CsdDI$|wm?|{=Vq4d)od?Kwhl6-dC}Bi%OzFiC#h_#hb;;DSl_U7677_} zw!CG|?2|Yp@4xkmO1586Bx?jAzcLY!?;&D)@nu8X*ga0Y*TSRp)VTD-vi0OH(@n>C zC86^=gIuGOSDkS+6>39Ajr2InWFn%rGA0>5N}IiUPCiG81D;_{j~)uG&BM!%WMtR! z>&mPytV?8@le9jLb+%OXOm3(4_GC_3mxo&(GECl5YUY(;Xz@!lV_5e2%q-9fS6l9Y zB5}^sy7xW5+ECeHxw1)SE^c=7%{Koq^ZP^gbq---i}0^!>u5e5^1qD1eidd@vb6I0%K2sUn~-$8Iwysa}*UR?C!V6hw1To zhSK_3Us-*A{jFP~IgQd^k&x!GgpHW(G41-Tf&dEk@~^gI(E)puzH8-2Bb`Oxa4as& zzD_-7+&E)$$y(52a!H=#ZjyYVS@=?4mT74fJDp}WHeP45rtLY*H37=!c-#(fdl~z} zl&TlCchlu}VC+gIQ7dOjHJZvNPsejuk5g`T6-MtVw0|C2FmDM>wa9MlQ~%QBOxnJF zo;IA{U;NslvjRmWmW2a9V}v-;}J4j>EY^+@=I(`L$b$wKTe4w-KZT*|JFA&y(!zY@T*7xd_fM?yyUrmIdW;;PdN(2}FsSl;z%Bt-V&OR_e?2qyo<) zG92zi;*s$MmlLWr1#{o;@gSeF@mC$j1k?3hp&O#C}MRHf7kmhcBhgmg5SJr2S3Tno0UeqNEA)jZe zWUfM~UQ<&txOLTGbwyxlx4Qb{H^Drj;`dj>M{4wz??_ksU{hVyd^>*1QJ`yynVt0O zG1CEeL6~hC%?ciu&GM|Dm{{aZu@shfnO)j7pB|m1$7peXMJ6aZ?7W18a1NL6nTiY6 z7Jye@kB=qSNY(~h)1txc6C>QsnikdK%c&sp=Y4$$W4akr8Sv0c5q7eut*^cBVTU z650nZKQ7l9xVThqj3Ob`Bl^MQi8?xj{FJMQ>XfI9d|9ZB702{}bCW_@V__nUF>+IU z{0nBoWov7m(fZ^%h>-_o{hOv(Xf_WN2V~3C0~~JNmwNk19zAPse5(_7um;v$ zG`SvpNu}yWLK(nPW!xVL;R~+r8wnpFU~BntV4!T>tpEB9yk49{LXBYp$FV>-UNncy z#&9-@8?`4TQ-7u(N(u4}w)s<0rk@y;o2E<}{;KRxviT)OpiBR~3i4g4kwc91e{6P6 z&nS*HkMRu{f&Xpyd$V)YCPx2}**W-f^&c=h=L3e`M&FIgZ-S7)cf)dHU?##*UKogbBt3A41wYZ3;!nF$~oN-S|p?l(or_qHQ)n+6SH$!koH$4|2LSOYoNdU zWp@7Eoc@2m+4=oVU~!rdwAV8amh5hw-OS5LF0dFj@#Cu6zGbLT+UxL{XRjirFYkI= zl~2LE0n|l|Ew6|LIV3p1HhWxN(ImcaWoc z>Zx{ZJXoxAYJtRg@rxn_-QL_DKS&&0feGCQvBM?&&f^h9-}KTd_##83r26EeMS6*= zmq~>KwbdmT@xxuo)O1J8%XtRNRd491e`zfdv9+F@j^=@Kb5EU@r1iN;`w@Hf70uz6 zZg&{J@ZLiGD}9Ee(wIJVhIg{Agl1gPixce;RgXfu`kBwoKnZx_ZFj|wk*x*ylz z(5Jr=CKHD0FIK-~_2bI=?^cFOo8!lxvxkF72wre^>Kz5|7(wVo>1l<&)EJfCUaFAm zcdRc}@%vU*JYpd96&+Kz%=JjFWQ4C+Ft!L$^wpZAbfudY$*{hR6uUvO%Q4bkEOxDn zDldYgy11GSJ?#PWz`tFKn${T`Kp|c-r)z=GljNE0i9Nn#?_m}IRu0HHviRBWIu_=;Xua=o9<^9SR ze2w=7rpVLK8{fhY$<{&&Qk`wBGLHNPrse$aQ5rpo*OVk>4zyNOO9?WSdRoGnmpU&F zCErmiLt8uBwChD%JHQ<@s;OOFGi)T2n@q@Y2CMc=AYFx8^n+JctnVVEsV^JuDTwIZ z7OZcG=I7$K2`Gc%ne~WF1z4sR_kF9SnGh&E&DqXoC}ou(Q<^Y3lnH0*;x{HPxiO4U zyk2*%__$|HwQ)pNx~tLc)672WGa=nT5Avhjtf3()s*wP7Y65RYaSOa=+slFI)vMU| zR`+2IxUj3Y$j{|TN0bj4g=cnb;9X$jty|>hZ8)O3 z9n=v1`O9bnj_*#bLQ131=(W#BzE`UBsplQNpJPdf#$sOcMw_J}P3fUum+(E5%`($0 z2#Y9bD<3vod@Vnh#!R#0S!?D*_b!9;Y~07?=M`-`5%gc#rPipL+#LM_%JNlCV|AsE zYl~lw*LA;YHLxC~=X`mabk8Urk1m<>?u%X551i7PY3srb%r>Mtnp|ECpGvKGdWZ7z z9YXl~WGTWm1utJ^ZIm*dope;b!e}hp>2LZu-m#WoZOR5?-25y~OWas>MX!{tAb*Ow z{=8lN8+P(qI|}?1ZY+2X*6m~kbZ^HG%*@1>oT-xvgq5V`>kkjQ_6m^@xst+d;=NTQ zB(!mCfrMHVe&zgD+?$eB+<*i1zs{53*b1w1)S2k%G8RJ$|pJ&YWlq>WSz4zr;#ZNDjaX4#@XQVh=H zd{Y@Ka0|WGeR9019--pK?!A?*^*&1|X_r5Er6X=-d6iOy5m9wXa zi&d6a8KIYYlqmTc6R$t6z36|~b4=voV9Gy38RKt5&dtZh6(5klBCW0^mdF=Q57+XhO1ei?Szxn*o$V7{v%8vf>; z&%n}qeWwKq2jjhGbgv02d?EaO`18{G?G374mE#K73^1^x{YTA6IBTWAYyL*z$x)>T z8+AQ9RO;3q`6JHDcSh`=1W%uDD7dyc^?WD6`nX3wO*Go)u3$)(wq>wH=UQhuE>E#w4k$##ICaa~Hwjp;(kjGOqi}#?JqVhekE+Qq5ZY7T$n?0BK zW{${L9s{%BlvDwn>y!FM$I$t1xocmkJ0^55R0IbH)0R-YH?e|Q*&8}-wh1b6CCh&x zGm_j0JGZKY$edyeoLCWWlkeBrmswhvi5?q~?_(=Wa|q6I8o{)_jWrk*nv#uBl6xYx z?v-t1LF_XyE?pFQ?wOv%xwy4!j~B3^ebrmjtN4p!w1|dDyse|V$~~<4Tlr$f{afvq zq71pBM+}YQt`b`hHxoWwz9~rAutXm{d@LKsT6T*{{L{ps!)KfP)N1&7k!uyvk;9$W zCHGRED-UKqy5&Y$ql2|>)998q#@a`vx>0*~^7B@D1zcOVvBbsO^R;BF6y;b?DoK00 zVRM4I?sM;}FNI8k9GvUdcKx*qyCr6(`d$cq&FD=byjCC^QPCK~Tb&P#?73d(^%rbOSLM@!9tu zM&q4v{wRZFu9pe38_YsY&m{>dKnO zbdMCLMk)CU$S;QP36zvc`|5AdNFvD7Lg=IiB5{TcStp{YZhG)KCTnVXtzfY5>=M2& zeLf~VDZ}Y}B|hY3j17Xue-Hlv*rKk%Xf|*0!`qhzh zP60PKfju=kHe8SmuCJ)BM z>QB2epNw7Lf^&RZRd|Q2zkaLSZBw3_Yo8{dR>po(Ao0AJ4r9%Y;?EkUeyh^`1u6_` zX=XY&q1^h#y!u=>NoHS*Pj?NB4{q=7Q!&_&C_l;4v%_uYD%(s9@yks&O+3#P^a@9< z_EW9I=~tNrG3j5lMTAy_m|oyT;9osW6;jaIh5>!k+SDlU&sd@iYhF5c$nBnkm@QbL z>#?5dork^F^7I>g802)OtNhvoC+UKu$jeDF#ZMz0!ktUAwhpq}$Az0hMJaVE>pVf3 z7CM&@g%1;`YX)i^_I-;@D|YrDZm_;;`@B*v9iva^)S`uBpe=>Z`I0GrH6Y<^W%YoE zIXC<1aSI{VS{ePxTRJ1M(T*jT8I*_Ya#TL1zl{`U=?H&2>yO5&=-CU44yx%FE|k}$ z8|PkeYHOloI4;couw%vFic?t`Zz$B>Puhl$cN1De|&oI5ug{4G@MROY#My32KL z>+Fr>>)J7`@jYfA{#>r0Zg2U^;?V$rlaf}cZ)&kP5I$VL_@#z-Cu z-b$+Qw-TXtOkLP8d-}e}`9|RMowlSgG@OfaSMyanglpw9UxClFVY+K=hGJxjf6{3c zq7UAJH(YI5TiX1&0_UHSx){Te1QTLKl14>1v8TI&?8-Z5F$`-<)=Ar=9fi;lQH_ zu~LmU-A{Of6X2j$$gMeKP+7fUR8h&(9qKnc+jiB43Z0UCb*zSlOlOJTE867a*1<*T zubS+ql09|;h|#4^g?CD|U$DZ6YH#Dbl2Xw6d`rBAd|n6#k)FL&hf}g{T$6MqHeFY< z$<~Y_gms|Mp;6?e;Emy2wwtrgp;fJX17TBxzH>cP4`fE7eXWn*T8Ssx@ATM)jL8pq z)C+ixCtAN-*{fUSmQ^p^M;}y@kz70NCwMDQYjIfDpX(K`aup$CT}cuA>g<<>c>5eb z%h#AQ8{!sjwWD?H!&)vScj3dP$!oJ?vDrGKqq-wq7Th%&9i-QdV$6cs_IPo$4pTF| zR>cNb%Z{!MDwJ%7rKNVG=o zy4tY5X_gWsO%9bzyWhDejvwwq8+t=cc&$K?0SVoy3j!aEBVdTQl4&dPX~{L~H=bs| zvbl&zWx+XVy|HJX+H*8(9n?-Y;p`(|_gQo>s+i1zVC>TTGkLWOXVuf1g+hSLHe1PZ-do{aY>yX&(9 zsmF$8!b%!0D6DKU#Az2OU~glX-(cyy(Q%2pbGfxll|P3$RQ|#k!d<$$c0D83D%mpO zCMyyu{+8D7JLG|-_FP{|Lw1M?)1?1QH={0`n#zVqs^F+v`E}^@vSo+~$Csdx2GJ{D zGGEP+iqj2M&JbTWL;IwlV>GE7!sC{`?mL$`r)H)hmrd^bB1W#t@0-<{=%j2-VO;Oo z2%nrJdaJj$Da;bsN}}gwqm9*!uFDd=FD>tDqJ>r>uPSSwI#C(oTEBLEu-Rdcaqqd`;V#n1P;6?$ix! zU)1N1M8g*I5|KMLWh`G!HyNI-T9B=T6y0jSi!bTSgxgKUl6qc0!aPbFHUWz}XjmBb z6rL#Td8JI=ok(M9l{qw;fBd=7hQ2SqOXSL2)m>VbPOC5YFVebiLznp4xWla0Ekw%J zzWKU4W_RSuWDf;Z#!K|F&AO(%eb+e59j!Lqfx-Tk9^GDSKXmleB7D|HhzX(5*toNA zWk6n1(r5T-wo=(izF24_G8^*8F?>{Y>*kD!uKYS%e9mHwhGY82%9?T?s#s-mc%I$2 zjqYVDzRzvY{5g6^T)Vz->0>++(skY|d_(D=Aa=?3?@)NMGOIIkgZTsFO0UcM^;Ah& zR3GK#P+?-DJwD$+Cp1?Ko78fVIrjBD3%-yB?||32dwOn@m#*;iNtT56whmA+t8Eq& zxHOwq(Z6JZ2qWdERZM|pbiPG~`sXj&@>XV8wY$~~m61%1rQKvqCbUMOpA@1#qYdW) zF8K~!0#rfSEBUk)2`kMNq+;h(VjF!4X9$aib2!`~0p&QRBy{-iP+K8Z6C}}Z6SvW% z$U)Fm?LnXV?4Dak9U`8*#ib=VBjS1sP`~!cjbqT-suR_xjWS3+(KV)dV4e%M5 zwbPOOz6qhb)*fSfDVpX*uAg$pQ0c^tJXX$$fqJ9KQ5~vyBHsHowS#>seq%PI z=0Zl*1P=l%`<=gJ!H256dQE!@l zvA{KEwhER_Sy&S_$ND{RJ8`y3R=424k`=Q<>A+heW5cm0PZq@5;Hxgfk|&}T+M6m+ zY#YPgI8Gu%Wifxif=EMzaIa^?XL~iGj|Ay5c5m#ObauHWsE)rKfp70KX$TZ9ne4MK zPHd0&%@*#}FShyX9G+We44@n2z9=n2AgeRoOuQ6b?q;3sNai9VR&J`X$QAm4-e#}I z6Hk#Nvl^j4Nl=eJVjkw6c{lUR*cX<<*`>j_CYh)B=jW=G^&Ua^*pR}9OdBzdQY;9dvJFWMeArZrs{`+r6 zG&2uRZ|L^v9W9L))FH3*7oGjVg#nHC07px*~;WGPB zjV+`-e;yMv3F|2Xn~?~t&VxtgZB;?P)rtI;| zM~hV7E)lJ*Jg?%#*Ww_I>qV{OajUmX!1KLvrO5`x4bp0P+^<^tMJDO_yz1`PN0 zAC9^0;85mKl+{=Eqhr{5>cN$fUfly=U^T7El!OoaMe<8xzZB;GkJrm-1C!PRa3o-$#A0%Oq-dN|c$90oVtU>wAb3>3=sEdidRh=fq5i6V(3iF%#nWzE>q`m&$*=wSR3Ug#MeE&=*6L znGh4c^++>fjn3z}k9|(;bs8j83DQw!LQ{(1@Z0W`uR+>hmHb~|CWKChe)*S~(EkxL zA9mw1V_^{Ov=l=+7$W7c1+N8b1?KQy_>!5kN}6M|4CdPmIL9EKkg z@6=n}Qp5DN<4eO@-AKR(%R!O@6BjVee49v+XH+`yu!ptm;_c76T6f751>O!+5E@b& z+{B6{en_}a5{Ce`zU(a*-6weA5B)W3V(x3If8!>yY5G8v)2=htIntr0ae19&P7+PA zrZ(@PNAo)x&PX?gedhWquUi!t1}_I`j2|x7pV{KQgJ_wcAv1q%7RMWM$d|jQG~ZeB z`cwXV+&%O*bLPlLXo9D_`@NVET@zvGU=Kx+b;iIvE+Xm0PlcB#UnZIaP7#$xa83!% zBb=>QgH@xNJ!IE0c485pQ(3iV3rvM*iaxH2wajG=_?|Z+m|eLp&(tB{rFhr56^-un zP9}V{NtjfSb1L)95W|-2WV}qx#ru9y-6|0&kzo1NDu%h}-oqmLN40TwwXW_pg)Qm3 zrFF+sA?fd}p4ZclPmF(Y=SnPPZ){IBu?Z9+y(B`d5WoE1;0UMeV;TtoLSvO_AIa?N|>Luhggo84s9>%q0r{nICKK{ z8r7n{xhVao9kwZ@oXpXL)T&a~AvCq;!d71Iy>LDWQF)wMYxCRoE05f0#ilmOi{$4o zDame*5bu0+n5`A87o|$}QtOQ{)$vu$dC%S|*3#bXL)QIqoq@%zEwIj&mh^A_M(1yR z1B5Z3IC7_TQ(OtC9iB9X-`DfrCegKimeg2+c+TXp@`tXJ?TVw~O5 z?dNWP^u_6$kC1~A+AG(WuL>`qWr3-Bm(B4lg)W!My4vwzSJ=cc)~0!)g%{}@_!Y=cVMm0|7GvJ@HiXt+(JDY>$W;dz#jw~F?mwW=#IuI$aP zs2Z!UJemAJYQD>F5|~t3r;8A0e_!1gbh&0P%!I}6isV5y6YUIL=;=P#h;!l=)DK&o ztpH!(rXE;t9(z-U9UYc~CxcIEV?~M-yW_Yiq`*O-*`e5AQ*vEypbsrXF;F6c`7;jP@BKToN zn{-zmN6;f^dS*B4 zw|DV!OAjcwR3vsr=Z_$6nu9$nu+2)=@d)@nBncasBEnef5!+JYZ^$E#DqNA!Z6b-| zV@=rlqVQkH`1XIw0`z7w!v}?@lQVVROFYja{Asw)d&jPkLA9F72wblWP_;_~# zcbEGeEWIh$E#o&%UYCxk^%jIJi z(36POvMyJz203*&u2r;T&52=1S4G`uZ?`MrJoVs7@Z*S&!9KY3svmj~i{o;AEGu%k z&gKp)XXGN)eEUBJb3ch?{`T4qPAmeE|Z7=@OL&7tdpwi69TgrYZa49^3{J$mIhPN*R9rO=!FD$P-vCEcEAp0IUA(nZWj7 zFc^I6#+n6zy;|>zfU)8Vc;)FG0c;Xn#!}bkCo^IvM=l!c;+Yd!xmxcso;4y%k8YfNWKKm-X6cWz=23?#=2-F%qPhS?xpw=94K1u&N3p6a!j`Mjx z3|>o+Zk}+Vr21oOnYJT4gWuGqjOK$18Pna)zCa&ALu*L}*QK`&Sso%6s8RNcLm;aW32y(5F%2>3HKXZF5hnN_s!MfO zkx<8tb=cA4RpBj}!7f`wNi&bC(3#5es+vkq0%>-moi{?FJkfohCC-cK_IjK<9M6A`>o`u~?R2h<{H;qGr z;GNR-6SSIgbzo*?l5o8k`-a21q|#r{@t%#3I%N5JPwo`oH_kS5YIdMz@!|;Esi60E z$8C+wL|bm}r^k?xafj_SiE<7@zx(gr({pg783mj_H}gpz-Q2CEEwmQso=|ey;sX1K zcF(G#Onzw1Lrr72Kx}-sZbZC;=3Bb|kG;15i>q7Gg&PTw5P}5v;6W3DLy$m_5JDih z26qVVf#9wI0t5)|5Tt3`-QBHmYg`&@?*7jF=le4E9+@+9XU^Q`pXPzy?7e$I?NzH* zRjqf`OBca}vOpzQ2}v52F4hb07$-IiLl$vsIMUVy08wi?6C%5ly0@SyLEDRBuic%c zJCJ0ygAPz(BHCRE=m2%EQxs8h>q5fFjO~P^a2U9f$0@3zebg1Hisq>?A1Kxv8)RG^ zDj%wYHU4>lA~n&|)7@et+Q=lcN2t6&P^!l1>3fo>FZHFCu#$w8w3}EeV02AWp4@>X z8a#qsOR@0I9ELl7B~DLYm1=N=qjrZlPD!uW>?bjiZ`4L`krij}8?&5gtvT&&Csm>ngV1-4 zF&O(7Hca@P#NW$EKql0Y8fzPkM?BGov297HL{|;x6$PS^t}7O%^o@ki-we>=9Nm97 z0D1mYysNh(^WKZW&;6wP#Xq(*9J7whlS;l6yudIF=`^5B_(T`|CVnO`L^M4#lOX(< zMAcRw>6Gj**_y(CrN5ijf7qIm&|i$cDN0Q3m?aEm9RHG?B_9`)756omhX`rNl0bo)yZNLR}yitpkwXQU4J|%bz51R8=Up|u*L!F1`-ht@4fZh7% z=zxDa!l6SC<#-53Z0xo|szhd&rlqctO|wFkap&lhG??l>U?;t(IVZQ|pIvNvhVHe( z5iX2A%oYAvNtSVZkK3U(X4c)pG!s>6yHH<7gWgB4XbFeH!b{kc!}E~3o5kn2g@ZLKUkSqYPZt9(rN@u8&> zF9PDpz8#VRNthBN$3!2oPGht(xFa_W?TbgFeCmkA7 zLRL`E$Iuga_w>ufFg*Upz2!5kA;-)t%x`d(<53@nMM#Q~9AZ;#r9Q4aVucmB2!2S~ zXZc!_{C0$JaE9xa=Xt`3K~=m8-DODsG4X|=m1*np`J@0^q{*SYwmO?7TP4O3%MPzf ze9>%p{o76^*%=+Cc%x`#kJg^*D4v*pQ5(w$?&7Nm6w=u6UCMAm_@{_U|zi1dp_0o&Cf_kS~gLqdXtv? zZsc!cqIPksa*Nu2@Km_FJK73ri&>B8%55a{>Un+`c>84! zCoTt1JR%ll#aP)7o0PzCFe|6^|O0p$D^Y2zDR>Lyri@(?U=*N>kKG5 z=gpD=xt`KJJF^8U*XejaL3I5D3NEwQT%R^UrOsal-dt*WEoB2+p)cz?gqe;cQwnww z6cv-)D9#x>&Kj%I?8G%?(wQ-QYOyhX-IDja`odHyDf!29hM`BCS_|457OBr8CI|Ts z*l}qp??qXvt!Wt+;^i{C=Xc;<6mQyeWM4uqo+Z?Ir9qu9=`T_*ZX!nQybR)l=lpMKNF_Jea**yBhHwHYHtM&rPN338saE6g{$uGc%7Zyfhsc# zlDclfUU*FviCmFaB5fi#k1l*~F!RKW3SNcUQma$wS1!^76%}th?_#+QMk8WtzI4s! zIw0I~D{kX%^mR#k>vRV)OIB|f>qyCx0VmT9l}+n$zF}dSuc3v6BSxJCJaZ$g=M>7W zHTt0I0gJj-JvQg=zUQNnV3*kaa+tx5+9tyf_!G|(NV{eo=B@4rO*e1l?-G)v4^X0`& za)tl$+K~n%^~IrbPO{Bshzikp0+D{}Q?72|xyI#uJz|`~lsQS;NO=WaVGoI>Bh}!~ z%v&1Y8YXVI-Hhtxm|NvIS5zw042VVO4COYT3Eq@3DH+Xciz;kU5#79YUGYMOzuVhZ zy<#tDqz+*$tBZi@u=x9USec5(NMC#m42%)bD+i(5*sK;KTkKX-wF&IuidXd2#1F%&1m+REpfxxD%5$vf$GOd$r+%(_4+r zy)n%pPj?f~lGnDZ73|x_E*XLGe3#-`68=5?cT(_axI#_MGgI01Gzh$;p{OKvRk02>19XeAa zBxXPd`!SH+hd+cGUmKp(MN|IW5I4?I2xqH5i?RmwA=M+7CGn$o!O&ZsuC|0xv)TSp z(O9++kr{RMuOx9KA%&bcd(qtrRms0lCtfIthT6drTT!$tf5lm~gl6{9X2t3ZJbiJ%TW^5=xWs+j6_FDxG|tU0a_ouBa8ueL(rC$jZ~VNSYYv7 zEvm;Lb~fHCqe{-1L=|~7@9oX?A~)laCYPGUnx~Nnc@akEF7&OW+h_B{sGs)13BnrphK7i;fkaL#8>bcflxnEz*#63qLd`8(GO9aEk z{r#jPnWpL9Ub6yxiNnSM8{-dW;)0FK?N)11CoZ=5MQr*Z(ZB)GDZp~?}|9UdD=tG%Ip?8sfJWD||mK4dxZ zWMA;#maE5Mq$3flkjy(9*XPQCC&5h^aI$v66foHV&ddx?=F5{y$crwvmJlgC&1du~ zaz5I}-n7ayZA_pm9UwZ@KlzAKzq@oa=5iFjH;5$ z=4plHePkPCXR(vheg&hZ&Gbue^fCFISP&eVxwoNraLKkPVvIW?UNUC*VK(_hFrS2LRXQRP^1-2 zLGdV_%m;5Yi<}H^q5WO;;nHH`s+z{JeYOp8@}GTNmH>fGA@V0NbX3wz8*E?Lle!Sp zVQ9!cKBQW@ow-6HxQzCb@Uh>es1Q=uo8Q1?eI9A(cOZLlAg?O2w;u&$P)lzBXk3Zc zp68NzuE`G%k+C%yHirW&O(DCit>G4Hf5W$XpG2VvjOcki9d2j%NSm=PzOqh`xqS61 zc0GgO;pO}Iu~R=lX{}W^QY$YR-yfdmTUZpRYc0rIuqudQwF-9c`7syx#>h~E1g3zx z%mhPfH$sOc->l`*0vz1M?X9gCpQ%ZtTGD~^EjjxAkm7_sv7~2sbBaK5hP{4@{A?=Y zI@puHLc5I-sqnnL1MM6^4m=hFP9}54Z}_uzRh@V>A`*5CS^h)>KK!<$;>LR?ZDH~cv1JA`HL+HU21FoE`nu*VHnJ`I>|~YRTZtQ zvVETppo-!iQxK)J%3p%pYm~+GDO8Uh?5%et+Bh8bkS+Ug7Ds&&6?xADX*yibK3mu$ zBGuwea2Fo2CF?Ag`>DtKbNweD$rj6~=?`qC^06D-oCOW7nK@HJ2%+i7oE+*W+U6p) z@^tb%`uQl4`o)}5UEt3sU5m_FbJaCfyoCVU7s)OaOBbT;M*`kqtQj{jgn&+Z>cz6_ zG-2aKb41U|+P6NThREy=gXE!_wZQh=Q<+M(H+*NI=+Uq&W#!seGR&Vq0}kWw(UZ-c z5#*CahUMcx+t>WI8=4D3c9L-FutGy}9PIH2KF^^{rBCX_GP1`x`?x-o#!%2D+*%Ym zKD-09OR+6+@8AP%m?a>{M=TA>$4a>BF!?Ih=Vt3|I}_=?GcN;h$?+sEAe4V(TJ?O! zY>HId|GWAz45q`k`Zner!6!5s#vM5~xxb+=5JzCk=2on!##h^2LTuVO>4HKBzZj)u zq@?Ycu5CmDiyFT@x$k02ysQF>~{G9I+O(g83e(<^Z)BFLvfowx4uI zSO9}J^Q!rt2s;`Y8ej8i={sP&1jwN`Kh}`4U`T;Ns=`1~m4xf~$a^5Ij~{!UT-CWH z8I=Y!QcN$1+goM3=r67i;l1WkIp5i8UgM17#Gs`PIR|v7-@#0X1=^=lHL5E$3R~z8 z$4U&rXBE8{r1fwaDNRo~LH_WSwv1iXEb_dJ9VGHu1Qtvnp5^IFS)V;|N3uwvq%$`r zly2CmJd%dm!i<<6wA*t3+%sd5&uWstiah5G1T$^$o<>>VNYS+Ru{NEI zeA!uoQJOFK9|WA{R9iefE##^BI>7&BMVvLTuuAxZ>cfDWGCoqbi%t9N%i5*OT5y== zzB9x1SF*qa;_jX`LtHp%egQl|I#xSgV!|@%g%w@^5r(9=O!W8b$icb-z(`HI$ef`! z>1BXV`pAduJYs33LzKxOioHd>*zfP76!VNyp#$~cK3+4MIxWp0Or~$5A9yDB-+|QE zSNE-Z1_6ZZjuN1~TDow%{j1S)_i%QLKDj%PNpEHW$!{ z<`Ud)^lJYcGn}2QuOZE}I($`~VftC}wB0oM!&Cg))TSJ{oP{pRY|~>Q_JTrzm_OO; zQKlacBjK{AR99HrOK>78_!JosYRg8xt&kconuy20_jU_IP>RChH$%amC`4XQhgOx<_6=Zq}Xkn$`VyxOpC#avll39IlUPZS%~cC4Aa4Fe_U1A!3%M zm(e0OM2XbXoK+1v{dU%!ZKc?wPdJ)y|LKbu8wm>k&L=Ng?E!qGE_gx*Dc5f9rA9+o zvb8f$-&a0LC11ugMG=9{@q-)wVznNlym>R{bGy}kNUh6S_@NkyN;e-hRo=fm@4sWV zzyNy|W$YbDOqSyYL;k1)0T@UM0r>~pM5+lq*qJk0I!%d=+%+M*Ddq1rY41g-N4#@O z(}+g^c>AQ>8N{4z_QGwFQFY*u%TjOL=e^L>FwRd>wA{aSHPXLsx}etR4iw0xNxWCN z8_wQ3$a?8?UP^A8Bg6Qh8ig+QjNxw@XKj-k`YY^Pw9|td%*Y!Hoe)qrkQr?HEdjj< zB%r?lA$d5}VZxTkDcM-lA-l*?F<>YFs<2yhgs+=3;$9bmOQiuHNy8m(m36$3{24`0 zAvwYmy)4JeLi4u_>Sx^>X7Is{UmBu@@x*Pga>`-u_T3#w4m{3g?MNZgcWspQqEObV z!C7j9nqRINj}uLb#+#=JT-*Ri)x?3o|DzoiB8e%7CA{sZ9SzBJi-PSj>*JEWT=k6D zhe|L6$xF&N_ZIQr@@TP|H;8ClE8Hepmr|DTC5ruOdR? zfmEQYIin7gzIAp^z+-(j*HSoFA5%xpToBkp7X>1ZF-2+ky-kJNVyj(_+e@#*BFzS8 zxu4^ETyw>*Cg&8!g@(#zMh63@?c^W&l4s-Q| zbx$Wvv)Tv*wPnyzaXz{EFripnYs^jRUIP*V2@)`*sOe%IaBQnnY*rvX9^Cl@IXj5w z!(7FZ6pdEd`}wGxU2zY2X`j(j`)~^2SlIvl$M^%Q6lP(g?sWk4pg+~@7aFkM-a#+CL^P1K0FG)M^^Q)-3R@x;>6WlbEsSY2U=2PftY5uFNc1!>= zi(gZn$ERE5-j+jIVT}_49h-xfGkDgt_EnGY?LK{C8a-R!)w(u0w@$an^NfJ*?SJkQ z=v#aDZRs(L(V|3B>6nxAuRWOj2?`tSF%Rw>xqS00|B|>|amYYjLyBIA&`*V$X>U$x z6vlkyzp8cD&T@!3L?>bxjF<*oAd!ljvumm7I+Nt}O{ak+_B{h36K;Zw;8Rb|ot@be zm9oleaHW8M`-}MuA)e+alTYtdo+$^MbfKp*p?Lkpeyi!zCE8N0b;{1u+;wy82uM1X z@^mDaw<0L)Fzc*@Op)0Edl{KrPR7C$i#4T30~kXGpjX6k z-5}plZvm=*tlu2o-y8a$PyE|-{QqyyN@?o{I{^L57$e|AvPutc2suH*Q=D&*=cG*L@CuDJ!J7uJQQcw-7Q?Yyf1QVC%mt&s9=<2e0(7%hJ88*VZ=cnJT{ zl~fukBs2=-ldj)b(X&++T1c}Mzc1%aB)32xU^vC9eYN@>M~OMC^dX`@iRjB&U5ZH? z<&&w?m-^=mAIG`xxoh@?Za&oBh>^{s|9JfT;RKY z;u?IO>t&iNS{w;_7EFp$oWVM3Oc}zuojQ-H2PgU>qg`)luRkJ&-QL={Xi><~MyfU( zBC@z~jczk$s)+iB)xQakQ($t>ww)V4a>6;f96A+hs^|>lXzNQu3s=0FlBpS|9cRb# zPfasEF2^?t_v6V+c79Dp_<$US@_8vfTX!ZGS_`i^JAg|#*w=PgdR071wmN?jjCtA0 z!EtN0P+9eP3x)hWdKkQ~<1_X69mq-^W4nyZ9e(Qh3PFacnLxOWZ)bX5E_>Y`{_T5x z80VvRM9hz**bX(DYva?epTLvb1s3zq8}MCJl`BRoQCTPR*N1HR>k_G$ttD15y3xj8 zua#YX4zig6vXHuuO^znh3oMcXexCH$KOk$dq9`nvqBP*yCX1r+r){f4u9+u}G0*iA zG4eu%i>t+NEAFa|MWisqJqj)iVz>MOb|0$3X#EBeo(X0ieerXMZW#yZ_`tVbayB4) zxtQ7N)tQ4Q-gRpgDO-G$z^>DUMFB-dZ)f+lZlxT}U85)qkgrT3Z|UvwEDJ!6>F(PxhfS&vuMZj9hFx~sKC?tz>v~FwUCYm8G)$J*WY`FEuw7sVMwOt; z`E%OVIe{qrgh|WBiX5f6f@p@b#|`6GEK&p(>7wSPpG~3SGar9?w5igALJchTuB72? zX;?>IzW`_tKaRmHom_S_xv#k}DW_=~DvvXWQP$)Rz;5gt%_Q8@E*V`CNAjUU=mjqC zmNY68Iw^%Kj!;RBGlFfbY^@A1lT##TpG300iHLdp6tBA&kRNo=g&b=A)E8j$$Hr=xNqCk{oFb8B<*nUVzyqc zIQQat5?ZB6-Ph)$N-MmcC$GZ4Dmk%BgoO?vx+f8A4M&Lde6vZr9ZEbeyq%_5x5NqK z<5hd)Z{6XJ_i3wH`)iCN^pR8^_p~vN>2SiO(8K9Q*mI8<>T-8x<>CgyG;&htaJBeS z4Aiq2dzi~{aoT7~M*EdeDvJOl!3(|RIsk?PC7j|O!ZNe#pz+e5)slJ{ruaOremb){ zLYLn6t)`{X`>%4{%{ZdM*l>gFX)UkTxRc5SX0J*wtIIo(>EX)-VEqj8c}dU!8-~@? zwrj^uVsuFrDhpA|l(dc(Lk13iUn zW_bt-G*%+;%A!+Oda`_-eqeRi+~@M4SVl+1X6pPTO?N1HeG%+DO;vrZg6f^QQlnom{9YVhwX83KsnN!Y`c-m{%$`mIu zI)-(P`$@;dC3NN9_4H5)(@A>VlL`xc@xGm;Wb-l)ysD8UT_C=S(8bo7Q=jJzW=mhP zJAbt}wb#n>v#PryH(s1oo+Dnly&N5Vw+RiH13`!M=Oqp>29|Kf4`EU~k$H2P3(aWy z)^za<-@}Is_srB$@LI%L0P3#_XJ4=lOx?zyHcg@SIHpZORl0pMGi&mSgOd{7^w(t>wYGm=ZdLoeX2<@44f@ zwBPSPdhSL+?Po z7+&y#$x+7!K^=%iI45FC;fq%1=1J%@yEF z@5gDzav5BGr`z)?RgHP7o;8>0#2x6MvQB+wVDBGv#IPF*Z@={!i;XyIc*B`Z zT;q6Cm)L18mp#0*RU+60!7Zs-mgQ&DPqE=1^-*CjpZm6Fy@~y}5IO7HE8h1bJv7gr zbe9s3-MqG4QDfu2sGRV4nKwW0VxZ}*0q;_1fW*uxj<;JqZboRy981xBYvt5yChquX z>iPV&hq!RaPxxvFr82m57Q7p58GEhT3gN^^P@06zF0QORJ%!_6T99W0scPm#ng`!N z`Mw`UD%rfC3&joK+<;T~k1#d$nHK2NoETX-Ns5Qu$DI(oXAQovDDSy7S8NnU25;f@ zj7Hf*zELQ=FMFOv!C-GJ!R&G zqwePs)%k7xB2}cu^|Q+BPa~V0m*Q~y^QMn4rpQgmRTZF~XuA@m-xDBFi&{(CnDG|w z_Q(uRLa5VaYqoLthur2f@_YK6=whbZj<5r~AYhw^OP;yih>mfcJ5b;8h3i}~JKMPl zt<8;x^^k}?@g{BjL?f128GU%Ezhxyh#&(xNdDHl6`G~Sn{WV*^Do#edo#f+h(|CQ1 zk3OOEpK35my7+ljY?N9RnL|c)XYWm&r!>v%e|Ud*Ga6Iu`f~3mKz4d4mhOVnI=H-; z^flRKvU-|50$;hY#`fM+Ft><+O9?yUGndc&4t-`q+iW>>`AO=uwzg*Y*UK@ijVsLw zc8K3n%#(qKPHgD!Bb7owTuT;HR=DO%37toO)pQRH&bF}1MBO8LvG=vi!PSuZQc(ue zuGVXB$vx+WfBc4*D%?8kD&RZUCHC}$r5K^@^yT8K>bSJMGG>_TtjLRtRGnA;=T}U~ z5eeCMAS2J8n0VWVu8Ga`z&M@7yn~2i()%9)J}%)qC{Q}F3z5Cgz7R$ z^~g-Bon~C)HvO#T&8n%~_2-_8bF9SEo8894fY>~e5VL?F>Jd52+j_m8V8G;sYeSfx_3Q82+7Y8Ru{2!H| z7T?B?ZE!qfe*&CAp4mD&8r!yWS~^-1vj^>h4cH>v7fumTm$=q(ylRQIw7hZW;lX|n z(6I|$e3d7JNZgCI7pZGUxwf6y8glYiE#UNHsfaG|=i06_#;IgxC2J;lINtK#v6@vI z;aTxb)&gMVerQ)(;8^Zkdn8MCh_UhksKiVl%4KkjnTJ-3{Q zwgj+M+%Axd%?mGl6Kty+X_o~rRLHaH%9kB}@`Xj}U z8t^Y-;B{Kyno3<_ZLRram(J|}n=xlRZ4N3D-JA$Gfp1BfEr8>qfdqB#1 zuKTfUB34fOk>Es~JO5gpteH5C)FZ~9j#2Sn9keL=Q_jB}+FeVJCo9z?%Qx0oIjtP+ zMJ7eb8c$8}@*wnj7GBmZ3@}rC!F;Az7sC<+Cl)cL@VI$Caq8X%)m%`#eg}bQx?1-6 z)%eQG36sd}b`F){>Od8!rPRsu63pzDDHjem#U)B#i-gB>3Xm)%Opd7RetW}JR=<>SsbtDA_2yxiBTS5c^ zO7pbEa<^wqC%Hk!wO_+%aUG)woS&~=H*m5{BPb6duiem6S4^ReVUq0Z+0{&>gEPH_ z-LeGpdy?{Qqe|<<`7aZhW$I{4GU|6%btCl;b%Jx}B8j$j9yUx^V->l@=b}0bzlmen zD3TMBfJH<5R$j|B*ILf+w!w8*Qj{u4z~V@n`{2?u{J$yOdQ>R6wGKe>>cUM%)8>2vj}wAcJ`LL$3%}5Q9*#c06Vn#(rw!s6d`(a8> zLPO_1hdGc{-9WdT*vy$ew=wkvj%c&b=M@7lT1Q@em&LcD+T*+CTKrjY;ompP`DTPs5b$Xy-@7VfZRWR4*1k z52SJ&p?g~amJf#pW)f%W(GtQkq zDj7hgDQ#4KVx1G`Ej>)eY8c+NmDBK{83KXOY6P60yPsINMR(Bmw$mwDsL{`QWGnNT zkwu9J9EFQOcS<{CIdFFb;=%6F-KX!eZPFV<^8`Bbh$ls!%LMu%i5CEc9Y29cN(~Ml z8G7N&vo-V+o|t3kT`O0{@9k8@cT1}iXp%(-*iKK$DZhIj;#&vgwi3E~$p;$s7KM-I zTpo<}Zo$2jCzorgLxvl_O}6#Ms~ZFm=y8ptrOGIaX?^k0G~K9KdgP&Wgt9Zs8+aqO z%x2!D-4J1>VQT!7r;|84g14GlyMmh1gVlg+#yRc-`$AU++~3piitdVH!@mG1WR>h% zO!jV!+Ga^Y)v{nLUON4fe7T32u;qTuPnML!^oe@f6%zU*<$(0Oo!LsKcyXPv)obOd z_JwuL?r6zK64iL37h;cDRJnWMFR5s#xIWASj3)KB$G>%GhG z?Qha8_wUz4bcR(;>W8k?a`=F4ke1*pOJWsAnT?q%1ofV>(h2elwumq0qrHlk@l=aL ztm{b_T?2&u1sOl~K4VPp5(ai2@2Xsl^YUu!^hcIv7tHtj%2$ZC&my1!3SWugm!Cd= z97o#z3gF^^a?1adZ{Z8XEBQN+R_tX1XWFlW^Pl2u{3S=^uR0(_9K_}cZo;9P)8ABf z0J3yLi=h6XMyqyPLS_<~W;@&HQE#5SQlhCw&K*jU!}YA_-{Hm>#;S86Hpz8sJ;?u% z!!}o&zTJEoS*aWksqJZ(7VfSnY2`mjv3^tNUzE!(4R>F!;&9xV2rmogb-vlL3~LyH z!s|V{7%{YT#Zu^CcBFrnBLY@9go(6~GY zYbc0)WVrXe9@$uN-}jK^jvME#%2fHtJzlbZ$pm;!;PHd*k|XN-lo+LFcx6(Y@}!+1B`x@!Ett<+utKh|+u~;z zibHc6^31N{piy5F-u-mvYyGJAMrbs~zIuNi4TE@ka!ei~MhD?sS}352!6&~BtuaE`VW~V!3n~#3qx`{M z{1Kcq2>mExRP&;X+EhPI?YYEDdK6-q&VA=)4kDMau324wa0-e3;k}e`xAr6-$-eV% znc*IV{P>%!^b2*@ZCGEv=qxPznI7D{50fz(*GEmQxyCAXn8+oy4NsYyS|8gmy3fz+ zU}dgx77*#0qp>KzHjw|$s#r{tMn=MlVg8G^Q)a64;4}WB?nWB8oyie%PT^zT0ANcf z+cD&dWB+E*Wplmf(tbGNM@TQcCs${|h14C!KB@`Rl&lU^sjTvsm3h%ZZBP1TycS(l zaKDtU`cSfl%*Badq-4RvmNXJ48YS8U@y&)@K7#1^fGs-Trs;NvU9omO>|$?erE%57 zu=L~_a>I%^nLWd%(lm2RjWlu0)otZ=hZ-0OvbxhVEaWaq-u6~Y>L!X?Q#q4Q-Xz%N zq~EKZk*DLNtC|&pU9jL`ay`O{}D3RuqZ>wg<{WqyGbGa1B;o(&nwhPq4QWc;Zt-cuV7VX?mdMa`PpiM zQ5WZS*%f?X;&@f_GilJ)hLu;6vn9-on!0m8iy+$lYOI1_z>Ni4>!|Syw6NOBQBG&F z)0KaQ%iGmrU7qI>TY9VyTy1sWe>?VYP5;N?X1n|&m)1*IC4~x`l|fkdMUox3BPmMs zdGc4ZCyf2My-Q7ISP*os00#$UV#m6tXLSuU{19`Vs>6kWM*tB*T(;UAUrUdVg0~&d zNm$srOXP}_Up>(R*7oM5`hrK z5qhugBbT%{lO{3q+PCqOFj6Ru;AfLi!LfT^ae6W6P<%TamHyq@_8-;mKeV+UevJ@S zSvtob^E$11uwDB5dg0{fvdr1tS@#*8%=(Ah47718AG@LB0k4R0dUL5Gz9Jo;R~Qul zdpsQj+ej+S_9{Qv5+KqG3S+Sr6Y(+&tea;KIJ(>5Z`kjzO%3ayM)uYnaeic9cty|} zh7^kV&KIl>1jLwcJB7!J4G?V!O*d|p4)WMDE^aJAdy_V&!5)`7D;qKkOXfMU-Th0B z_>M4b0t@%o#My>T!bO8P>sCwl8}hTC7coo8;EC+);6h1CTx>Ij?`(2q)tYjSRa%z? zqk2Dxn1#}B4E$^SCoIRORys*$-8+Q>;WStZgD|93P&~(1Tw@>>T0IFiyIzTGv zE5*x4wHkjyOqX`~sdC?ydqgD^SR{X`yFPN$4;6NT4R2d>6c;mqL)?SX<9EcdYNeqX zCK!XtNY`EZf*ef1mzXQ77agP13+g*OS9U=Q4uv%>XkM|5V)^lr=*x_d!?eK9*oW~o zD=Exs044^DK~DIEmxXJN>8DP|j1mQFnEGn}rzgitYsQ`jxY%o#cG}nAe@ceoe+vYS zTzna zm%?@$YUsx&DanlkDK(oEFElAB50BxV9A0DAj`vF$uO%uLFxm)lvpyn`(s&bc!*(@J z-=k55-8?Z`ExuP7{z@~CO=D$tt>G&SH9b9*Kh`qzgk6IhHUA-!;G6HblDp8etgDNF z(u~I1va$M?Cu&d0LLnTC>ibWWQu%45`?4hNiHb$?_jT)#9r(C?PKQzmiX~`H$WNb zPF>d(H$x6sS4W#o2C};cYAKrny!gw)PC_no_NqRXrl5Dd&N-{JC z)Q1P^q5jN;WE`?70yTikA_BsJ3NmOo04sxXan`PzQ-k#ssnKmoCUQ-9c4eZ``)SmC zX6Zo;z6*RLr@vA7|KF0&{l9U~zsd=lbS)ht1Eni|<|N;NvVW?|{gO5VBF~J0(rvWK z#dS7D%~1ECjTlbI8L{hi4~hY@B9I3nsG)&+8$UibI}#69YM>b zhpq7@@J_v2Pgts>HcK$sQyxsiUw z_M@aQr1s+maNKf?+9F3BY&y=+>$zX9&8YB8xbdRE%nDnTBIdn#Jk?o_vm2!OV_<+&JN&#YeXNC*QGwLA@KwLhKm9h#CtZ#ay(H9;pr1IP*6SoW^GRaTE4-*wP zC2B);$I0GTOi9+c=gE^}3IA9bl$B@m$><<{&Sm;W^3gQBtt<-U()9&QMQ$O2@6d47 z*<>#y5O&3$UKEN?m_T@L-)qR3v2EK{E(wXI?U<{_a`>c{NYI#53XFsR4PaXpHDVqy zbq5O0y`dACo4W&*6^U%#fnc9iQ`T;C_YnuqX$Rp=b)`1{G|%JLk?`LgEcmNk>h+MS z3OH#~n46b~ZDG&O?V?j;GIHeo>4PDJBSrkU^5yfCEw9b>WhZ|#`yRJ{0?Fa5=Jc zhVA;Qy$$mm3Er!Eh|gIQ5j=T?D5%6>1dJsxBtND26n2(k&Ns>8%C*ZjoP`q_wD#o7 zcaM>ewf?aev3czkvrMJmxY9`4Ru&}HO^&2OZwxZ$EQ(EaG7b zQ6W{T5L zSNElr)p&boXqnLK6m)=sY4|R+xWez^=Q7-UMUyUg49Aq5=V>)xUCZ9= z(tJ{RO~Ti6u=Oik^uOx(j~Q?mvy)VNu`J_~kcO}}VrO!la7CPyH_nzkTlStlCr;S% zS@GPT(>tAg3aCXVK^@EDxMEb1x>N z=mO*6U~7k356!1h@}lH_fdQt59+I_caJ0+9+?HB($RHKh6d}`eq?Ro7;PDq)^|4GC z$ar*+wx{!NwN}k1D0I&~#@M-22=~X{PsTHW=LU2x-!*xHI@+C${O;q2L`QS?+I_h% z3QY{ZBJ;9g+^?s);+&;O^po&)ck!0*4c@Mk6#F5u`thlzy?U}E{d_22%VOf10T z_f`a$&U;3D0%gQx)6?jil@^_z6Ry^xSmQ179kW88o6C&m&S5Hb=93Nk9n zy?dyD-XVDc*FmVb_wb%P7ejljpodOli_iHbIvs=dRapyx;>aQ03w=AE`ws|-h)GE4 z85o(KGIMeB@bd8sh)cYdl#-Tt^Fc{jMO95*!@$tU*u>P#+}^>_$=Su#&DYOAATTI6 zBqsK2TztZ}#H5VOtn8fJy!?Xlib`-5q`IcIwXMCQv#YzOcXVugVsdJFW)`}#y0*Tt zxwXA>bbNApc76fBy!uTpBoNBKhz0!oi*n%tav`IlqM)MxCKnR2^KXLVqTYM*91TxQ z0bS4bF%9Pz4E$Ho>18eVX!m4i)pvnp7?0%D<_$uxB<#+ z2}Ts!k}py%>VO#eEgUH6{i+n9WF-QJ=?R>gHL4FVZUChU$CK*yXHSI!LV!)!hC?As zr_6Vtb;&WnLm2_M{1T5e5&pV2d9z+evqQTsUYD0t4Mb<=z%G2mhAS4q?$TjT8bQ;R z@*Su*JogSnk%=IAu>!e$&~&L#3GiT4dfH&$fkbF8eq4dQ*1YV2KeKh?e0b7Mg~jdS z(1d4p2bzJ5HnS^o2=LpJ7{8y9)SDnS;9sff-44s-9w2hiW2&x`Q3ps(m8Adog*eqL z#E>x7$c^if>f4dC5&T*QU_0>ns8F7Xk^hXchOiha`dVHqZjAJYjfw50iiCC+n}8*J zD{eON_X5_@+~5xIUdCgF_nqoQ4~p6@@^O2^j)q7|EagSY(iqO2c+>k}21DSH)3;4! zM1B$3M&v|p^HuDlY~u&{ugb;4_LzLe1AB=14d)OeD~)brjpVm=EsHeO)x)q#cMFzv zJvdlHa=s5N?ZdMW&uA=q#ql1#eOUPZXiozMtQM4VW7?ul62|A} z^xH*z9U=Ut<_r`KL!?tm*mu zFZSL$s_Cx#7Yw3;Q~~KIARsDDdX)%B7a~Ov0z@g&iS$me(3^mOfDjar4pKvp^bXRc z_udj}fDq^V+?n6HkMFGaoi(#&?!9Zx^B2ptgp=&E&pvza^Vy#dJF;MkAmj(B#UkHt zJCH;krm2h#Yn4}25C5pIN!edzc;Pg-R<3X(l3OtH#p2z5>;oAL0BuHpBku_F*0$O2wMqDYIGzyG>8IfVw(23IbGnYJy~4 ziydRkU_tWi!;OqRi?TO~)f-2$#`GZj;=e&mP>4O7;?)mj5J!PB@1XD)f#gqDI+?h~ zuPu}W(QT&FjR_$&qR%w%u}F>-;i2EACMRjzrSR+1!W^AN!Lwf#qH>rlwh@@>0A_&P zru&@aI1Pp8ivjPzexWhJQwZzRIjf0PZ{*g=9zlo?+;SpscOV4vv%u^|%+Cllv!LED zp@*YJ4q!d*eqU!7jgorkYA;fZ%!O4eh>7|9vi7z4x^nnc`RoK5*i9>k4Jr-rIvd(z z(sA(GjmDJqbmX!v-WW%3m5Gzp!t#a)9?pIL<>jhbKgy-<^aLep(us`-Z4C>IR-Nho zaD9c5OP(I4;-`$OT+l>^%<}&{j56FgK4Fki3CdJB_BL2?+_s9H^i8yUPH<5-eg9d; z=`m;NL7K<>j4H_vyfJBZ3|7={qVerp1JWtIknd*zxfkza>|SW4fUI$C+&wz2L`Ru1 z)^&&3vqKqvgC6euo}}qVOApV8&HT+!=OVbAW_c=HkbKS(V^wfB-@~zTlS%Q8B$x8$ z&Q5x!f*`{dknmQYeW**+Jt;GSivA5#wLHgFpRuCzhkhbMZgARqNtUY09GuUly1SNk zyOI2a4a1eTtQU{QPDpyE`xPQvnLR%c4J6`}77SwY{AkDJ)ZKG!A-QrN7B`_ah(*=w zpH-8;zL%|!k5kMG&3!CX&vx&43o&W`;|vv6PhT*H3ttqqmd`!8=Dx5#tLe4E&k@<3 zog$D|>U#BngS~#L&nxMDBcEa;r9S{0X-z7%Gn90h&F&iwDuYg#igX8zohSlA#^1Qx ziSM^>#a#{rsm7>onG|W9)XrYaoO#14Q?xJqHPD8u29<^99tK-$aOlqPpgZ_o`qi>h z%$0l`%m5v)uSI2Bxg*0DpQE*=T{_J_tj_U^+u+JG^Qh5q*Wk&&1W11%E&+s+7Ee3t5E*1&$%X`H4+nm%XqvsVnOyCO*=hMhE+*7Kb> z;#%9wOvDSVTrZd5r;Xodg!gyTvJS5DymD`PTBp7QFShToAC{NK6)0l0=H4;3ob204 z)WU-KE4r*wW-{CpMenRwNrUE#J<5gTgxl?Vw`N)neD5CYt$H1u`e&~E;v18{g%_yC z=Ct67cj~2qfk)59E5k)r6{A|&Yh6y(DR+!$GK4=RgrmDRm(sTO$K%H<@N&2T>K4fR zNgrF6Dac}h5WRYys)Z*-5e>@sDoW7EBf40HnD{fBc@Eu6q6Ld^KaR)^djsda~n#J0A0l1wT_igxE~t8Lz=ehE?$W~B*U<2c;f#^M=qN+oup z9Sd9jBs#(UTRV(8P&-3I6lG4~eUldYhAG+3S1;a#7mKJS;`DewDPU8EO>r-arp&fd zAR*#)5n8NIhWHOV;UmA=ti5)*;}lEY=AXB4m0!<{nr7D>2ivk=+ikbX((O#4CESX6|MQ z*n^HaOldvrW!^HcsQ?r2Azx36e18QXtZw-a z+(rpiB;9E;+rr4se@vIcw6*65y>s$YI8N^SsHa)bm`Y#aBz#=aSI6H7%?jL!?UZAJ zT*f^E9)h+{vBXWc$T9tO@IpJqaXoZtE$V}r?O=t26eQBuMo_=I#mRh)?;!6vg zi4P=3bbHRo3X*m-&M1HeHQb-`b=q4duQq&2Rnkv+MT9p+P(aT$qjNUyuIz8ns2kr6 zLK#-_q{iu_0liSisP~KiVa00MvP17H`TG^ttT{y7t>qE$FG_D z3JoE)H_C`>UV4u))62D~-*6Ist4ezh#Qtg&{i=?VvE?iz)Er~l)}M2EpV<%Wy(k{t z+|E#S@HkEzt2o5}WRo;nSKiD@$_~31XvU2he_!tk&-V)7)zqQ*P(k7FHJyIyeqCL; zD&H5fPq2HEi7(_jgN+;Jpch~Kt}uqkxo7;cy9D3aqBPinbCn4zA14P!Gl4X{Cel8_ zZMpR-7M{fUFDxu(hdwLPlC_;XL|`B=id-33J&@iD0SK-@XBo&3b$C7a>*m-bdx)SQ zol<3eV|mJ&LG8iN%D}|#WeKczgdkU}sjjLvxr4$xeS#?d&afOMrq;gZFpZ(3jUk;Y zMl0=*FLi?Bx$(dNsdCTf(&mmWzaVQ3O+rk=bezkE#PUkm>wBwhv zGey<$0iZY$&K%!KdMSh|Uu0k9>b!!K_$G`dfC~p*Vn7}zKJ*b{WNmyNpk!q)6+syyUGQ0WUVLuZXJYjlfaSK zP8cwnp^W+#bY&ZEDS)~Bq0=I$BgLr8WuTs<3H)FHJJ$-MvWF4B#9RdD92Xh+sR;G5 z|GIAbJY>5!wF;UT)@XiJ6E5BUAY)vPfzzPQY23%&-gB~j|5z{~&ai9;z3NqYL&t1z z<)&dE;iesohTSMeGkuhIn4f#ZGI(La`1vsFdoNvb7b$KkpRsuy<)X#H9LW~fc9i2{ zL`8Yoqg^vebH(JVy?3Q}-+JA=&;CYUybMF#y2GnK$|Gz`xeA3nFnGD#8T35COzrZ! zKx*xTy<4of(|JC2`pqiOl=o2!{tU9ra#DScqVU97l1O}=OLoN3iw0@&Rdaj8Z17C` zX4lT@uvwk>f$X|owyr$B@CbUMnY7|Nx9oL@xD(SQH2*I2S`V;(FK|Ozz6kNn2E#KbVjP zxfd_}n4>?`gcDD-6mFVnm-0qC9!-Vf!&t9V2CIwYt6rAuNt=CJJ8%>K3ImBeawI#R zG9YxC61SP3Zx>u%y{R&hZD3z`S?Z(Tv;-A7(Fj@Jv)1;nk@5D{-%?dg>rgnS)wp4G?KobOJ#;xd;AoJ6y1v?yfY=b))esM%28md@}(z{Zuii zrWx?IsNJ}{__+zzl&O$^R6s23W9>!p^h`(1Zo*|NgeQyNuUC$lOy&(a_m4f%R^w~K zN56)tyLwM|;POa8^e{Cw{_0O&!0B_mXoYBggPdBdW#tRFnr>ETmwxU1*=jIfS0kJG zLZZS_^hJ<^(Iy)aj`vj3R1=!u5gkaVj>L zkoJl)oaxdz`N7wwB7k|s8qm3#Y+Kk;4)>2Q*J{wE7N{yFJ#c+@;$3{NgXSJDvqW4> z!kk1cwCW;hX`Dp)PF7<5tiRaSi8tYvwD%?BnE?t(K$1tGT>A;Aowozu)&M1;H~rGM zJd16BNmA0RaNXeIcw+ZW116_$)R)Y840ZFaC4^FSs&QL&E;cHaRN%$WmGIJlXl;co z)KRgk9`Z8Bc-`74UNbF|hFiG2t6GJ}OR0c}y}Nhb+8p`7+vr{4NB^k3m9zBdYr0Nm zV`B#w)R%EV^O|5v(~WngnC*0u!Ifwmfnv9*+@rdJng!vG2cIvpxpYg=vJ7&xhPLg7 z6}Yf-@cJz(9Av@NXP260Bj$W>M|O0`BGGkK3V5=#37oxxYQ|^UN^_G;w%*IeDlLKE z`$4dDkFYYfnXP8GDuY!bn#-@2o{M*Vs*f|FEK?Rr={5N@&=*8Y{V`0kUitiq7eWUE z3E`-(9QD%^Xttx-G8W9tBVsnPHjL?Ww#(msz;Y*~=fMt{)cpKPgk5~N?-p*O7#)yQ z8Kv98t0Pg5rkeX!)zA-H@chxozDV*8T&3gSB`#+nuDyM_A?X>)uy%+hd)ulfY5r8gbk^4xtd4{?1p&4I+z< zXacjkK|;W!f^K|tzV7Y?_KcDu8yGq6Cd)x?MZPdWfm`>;9s9XrF1z3BW_+3^nTyi9RLr%?VomL;dB#Bj!YYIv=N z_V|8ul&c@Qn~)Q#1E@^hG8*v{$02g@TG;5cjE&CuX*IM>jXp)y_g$hDhYt^G*k~nb z^8sPRp9C(PI)I&4#H@uM`S!6Y4{h)GsY)bVL$*rN%6V)#b(WTmIyyP=OhPSfMam^W-1C=S6NzsmB5vS?3cR*jYuUrU z#_Que3%pVs?N}omv09Ft32*xXiN)YFzt&aeb6gyqgZHt*MfW2T8ue@8jSZd;Ddh50 zZtWYwOTHnwROeAm1JqvVN3|onZc&=hlsWwvRaA9Vin`l*4Yz-ZY#W=-z>TNv*ly3x zR4mGc_7QT?x+%1xBzQ7tTb?H7@fd%-iQD@|C3iR+NZ9gT&)KF8a(QdSJov8jV`f~k zUf^8O3;csXiXDG%UN%zcD6@H>7xOrD*Iv0iS+RwVA%RDqTiD@c@O}VRYRQqnfwLQ! z&xsVvb*Ly3dX6Rkm1P_dEtIx&U3*A$TD+x}C{W_`31r}aifY#VC`4yKzqqiz5#XYR z{G2->ONmY@KPN2JU|`!*R!b#xkHobuL8y!%_V)Z$XOf{@HPyotAj4P+_iKpU?&Rp zIxWb<81B$5bjrD7x-~=5jFDX6&Zs$1o~fbNBu{G{01ml49`QhqxP} zihji^z3J3_m4_YCzd?3T->BO+Wt!*C&2B=PS~MELj`ff-v(CaYzp`@fx~uXo*;C*x zwa${{trC)*8fbpe38CmSuEfeMuMW@}RcBWTXh!cFiX+a6`T&R`12Fg$jR!j>&zm*%D?0P4e~TAJazqn zu8Ikh(_FfDm}cO}t}-0AP?)Nl`k0gBQ}VIc#K`y9&;?r2doM`c`!99Q-1dWG_gdMB z=lU`>k3Ve6z$16XTJpR+AJ^5Q(8B_YioM@teX(?%!(4n1xQL^spmGBMkJ~Fqm^=qY z=>6f9@?is38g817i!ZPAAaqcTGKpUm>umR8KQvBQanC1w2;3U>nrcBa$a$ZO+RKxU z;IDQS54h5&rz9FC+Ov5W>>Jm+n264>&&p4z?(U0x&VPFi3(;SaXYw<}wJk!f%Z<<8 zMI$wa#BmPdcP%iZeNBmXJuXTgz0>Hf2zsOJ8Lsx@{-!#W{7gygAp!sZLU3&hUI~{2gi{G%b=8Z&g}By8{wUC@p{^PxxW5J(eKR%Fl_3!VaaY}|jr_RsDZ9A4;kYC zCO;z&=1O`>SSqkO;F*8_TI>Jvog1K!FNzv(*&DEEbtEs6s~>5KBH-4N!IdNlUv!e( zg`3wm8)le4`iz`0?x@bA>AiZI({BxOj=S?>x%K+2a({y?rlFG#VVa_hX%_tT7H)R) zY?hIu2-_v0o`I6D2mAY$7fR$#PNolGr>B{n=znX9v)ypm+5C?EUVaU-`#kfVcnSFn^Q>>uk%cq06OlG7HBiR8Jn-wd4BY&Y!FeTCGauU2?38S$+5(C`w7XImN{Pi*4z0a$h$h4bg!KYC9*bC|KP_0Aqr!zO!rRyx>`CPy0L3mN zmOrsJ0t)eVUTJl|V;Oxz(a7NL)2iFVPAhV3EEo4nKGd^gV%m2+vD(`>r>*VUkZ^I$ zR8er0yD3d}SSs0uy(1lWcq{GAP@&=7Al}x5k(%+xbN#^E=vyCbc?{p?5S}^yT-?tb z_ikw}WITYfeAof6=g;sK6=#=n+~7>#8@%vMmt0Km^gTV(<#rIrH^v>Oj6s=VP}}2~ zUX1!F-E&Ya;T=JiXK|~f_;&NBq07Ls=K-oFG%eSOuxu=g677F0G1;bK^OwZ*#Ma z2a5$43RdYi8MQ|ae}gDzysV9o>eUJ2FKzi5N||ZCpw2xSZ)SXSm}4ola|v+KL+V~6 zxxK=kbaWlv6xkf=(7y@*c3b#&tvaTC#nsOz)FG+&Uw%P_o@We_=fvN`y~C12$Lfg} z1OgM*p4dC)abf`g?mo3nNv)4#%w{#X8YS7ZeFrv$U7Ip%eay1tiQzkY}bNJu(P z^Ci5g^(0UL^yEwQCCVU6{~Vy{nBkNLPc6;xuV^+Hw>K-??AvLmfA2)jpPv+;!xVDxTX1a&d(pjo}2h*LO6* zXjofuDD+QvM>?H@tWZ^Xr0cQgvo2cxK3Y&=X5a#=oa08iQ;f*o?^!ENYh^5lj7mi?#n_T1z zZJIRZr64-&JPSWS6MJ>{ERqBjR$j>5TPUxaTge{E@06(H?9^3#_VCQSc8~0020~~= zAAfWs%JwXH{!5LkrU8Ze5Y=RrpdY*S);|hp=>A;`voOknpu&va8e_kpGCn}F_`MjG zySW$zR-U-}#aYg^%azR#qb!i|Sk-ik?|xKwTcfqvjo7+ukk8!T%@Ol=gL{EnAd|G? zi&T03_JXk&36yDto-Q+0nQ(4r6$}3D`LgfNq)c)h7+72V?>8jvaK7|jfKzO?sHUxr zR&sw&ADin-b|jW9_G=9diMQh;RbdOcO!49abq08WYY4G^&k7L2yhaeW8#Q@7_g=n@^?p6mH^J!`0s|YABPOW@bsv3`i3}W+;h>LbA}RhtPfS)Mo4>`90rHzyPRp5wt#L)E z9n$82H(s+oT&=!>LPGJUQ>t{+)QKu@IOtgD?~Z9)(SSlnb~!rJx4zgBpbG|_S^6tG z%Scqhizh4FDm}{+exu4Dx&ts_(R8bf{nQ zERox;Z@7LOj5iw0&Fqym^2tCCZKvlIFw`!!qda2kp4T1h*TZct^&2$U z=qbS5K3yznm1F@TI{Xi(cpJguRzQ749$g5@YP&nF2N|mTB)IIKAGu!GE^f={)qT%N zV!reRA8RwXVm!zXQZW5oi{Hlvnmoi;m-;^XDoU%-q<84ll9~KE*VA5!xYyDd)Ij(D zeGDLBn30`CxXgLuFmxJmOGSuL6^@gFDP9n!T87r0AGFK+!@<5;N95s z$^U*Bct9rq@iQ0Rzf0`-ZymZO^+LBtLoNMypIj_aIas1P;i+8I$y3Yyj_;dxeIR&8 z$ws_dY)784T(n|-;ifuo2C=w@IxW+z`b}N2E6JbcK{9dn(beZ;=%XX}Z&0Rg?Oy_XD1-Rlulx{U6w;EykX>L>7z2Ol$TL!K{Yv-OL{0?`YvRaQGtV!6uJ9Ws zb`mn+AorW9`c+0*(WJ!!LlVjfi;8<(fCk#{F8JKfTcAPjieDNk)Q8m);84 zHShABC~9y25Lx`UWZ97*LoX_L}0Td?L|poAW*Z>S5HJlOwdrU~(uB{fe(6 z)^!ILA*bZP=+03y;)3ix2yo&5;L*i=tumvlAv_~oP3OED8I0tJigdVDlwB8ceEFsHg4hnpl;8V@#?K^_7b;cfg_KL3>)pk zYZ+AS(zG^1YBOe%L`9!8Db;5V*!TA$& zp&3uN1(i<2K21DbFfw?u?C_%xR;ExU%vJq#K4P16>(eHTSJ?e;;8(|8QTGG__6xr$h4`+)cuOF zV=VXfekc8#QAS>Cm;Gt-?DCuod*nP)A|5*~J(`;sC;l)*E5CNG zbO1c|RwNPp#o6(UCJ5{eqJ_C@mE`Qy_{Sssf^O@F@eE-+cvReEi%rD!wa0JI`V42 zL}8?szr{rs`d|ZCaK3iwHz+joTph7CtOLxQxC6(H<`En9_TiZum}1ARPkz(4WV@gs zRrZ~`6KCw51EUFzf?5o>*|T5QRXLUc()yAaKtXm3AYZUmeU6ya{0)*%i6M{|gK^iS=j(es5U$bg?bUQBx<7v~S`N^hEQ6=iRQtmkR^T z8)giERAN!l-Vvomi)RS5VW`kaz!G}d&^lywpL#EAj*H)FMapEG^KHo(_>V6O{$uO9 z{caB9!C5$#v4Q5Z<&@nhx^gA{GL=0lyqbk$Xtp-Y*^o6Df9nBBChotN4Tazx9zfDl zOBLwwkF(>IO@E4iDl|A5s2ZW`L-s;&NhWM1i4o~^(fUUj*TiE^nO*^@#B;=Li$f^5bX32@N-jVU_R?9Nk5q6$kBSCBpeU^;uSupH+)!E zKwep9zj39q(4*V3R+3J&VSHe@;ND&Hr!{kRp@2T2n%D(v3&Il95EJP(!)BJ|v)`c} z?3}ynT_5Wx(98u{`GlD@B5;$VGtLbE+%DB);MHZ|8-Uz+yA?yY9Vi8xIO`YSTX0Iw z&OT%u-Z(Isn*PM_cz@+!Cek79w#)+x5oU$GpKtx4f2%QG0*)wzKeGel1ginK(EZ&v zg>B}jM*pgebO(YtqP2E@#jnBy^Vub*2&7(!=xmX^@M!@kjC)|h0Y42D;h}~LZ#48^bi&lu$%K61cRMx z$h7>i`OjvEjl$dDe&>z~aufJgz^UAux=(Ft7Nk}n#-R8=1E3cUJwG)U%1(deNUWVm z3Kzt)QzxE0>0z46%lw>h`A~1Fm~XaH;F+L!vUT*Zj!jg(4ePngybFt>Dxg_r6X4GN zFMBWVFzok`{SDzh&J$8Ma+oIQF;Y3B@w_7Sqx;ay#BNb0M{KTE{`;sd6d9FptjWWM zr7f1kOv+;Z}EzUT#g`m_fYjX{&kNG8uZK#f8*q@8V{CVs^ zep^{`K8QefP1!z}cAXZy)l+mv$-3BYyeWmA0aID8*CV3FEE!m;M*Jc$D<0Y+}7pJ@94Jodp^)&`VnzQLYQ9miA{*~8RS3vyu39I1!#xE zuDho_u{ZcMxGnU`J{8B$Ea*)tfGTj&&Q8);mR@bj=AV0XMps25&HUp z9Ey46p;`vDDDHsqSH18zuOKD(PjO90g>VYgM>g(v8V8q5V6V^oE_;tSre)~3n z9Gs?z%OdJ^BWlG%Yl8vYPw;lBKMKSdJ73q{gFg4*SopCa2NUl5_&QQZEd& z$vRvMy#n^HIO-V=?S7#x115Zxow&VfJDFK~iS6Xc>fq#2=MSE55!ioLY;94B0BP2v zG3KDXRA;iH`X263K@ONGk3@c9cy~#HZuXB!`QSfdiO!$tMh10^A1q_WKc+1}ru=*O z9wfw|;ap(5)<3(g@T=yJ#@8N6ZtqCUgTo&)^So{?yAZ;(sK%>RqM%2{<^`YTfn}(_2%sp zuTA7OvO7>NXQ}r21|#s|OElECnh7tS`gSh+l4rVE0dB27&gUP7d`i-Di^UU@ z6tgSj<}ri^lX)SHhSx^KNqY@+6bR84LCG4yKh&Q%!*!~y-u;^+@=8n^s#>(K;Nt<1PRRwOn$4#*#k-@rB z9Pd6TEB)t9x~UohUN##7c4bWH0;Dew@Unhzm^-@g27tpN&mOYEP-TPLj;p8<2Adbr zk~-g}*&aM4?R;{}A0XHWUWmK-;52kFS$Uqu+45|Ei<;w0!p=))W>-xMerFnu+n*5WB_$(6jqS zKxph3WqiATgX&Ae86=~*!@9_Zs8b#-k=VRqg$#=U*%+)G8ORM|@G3D*F_rNc^3%%u zm0y{)@-rb)_J{F&mhAVyxabxAybtd>K5if`#+}ZIAK;H~o3tqTe{u`7o1C$zq2;2=^U(;%A8!KJ*_9+P z-YEvB0l>f4qW{V#dyoXlM=Xc`e4hU=?2|$1b6_307vH;4^LBXa-w&3`QP zk0<CoZ$m^dHQ z=nm?;%H%lh{kUA}8m7GX6|K_j-XWDr`U47NrF_xCKnTlNQPD*-oXN=8xIUf1|LTEe zO1DuKDT_*?k=%NdbT?7@RfU()u1lV+2zp$>JgRkux0OZiYxCF~B)!8#i|Rxpc+I_4 z-cp6{E7S$``WM${vYc--I~NF8sIseA9RWRl81vnxBpD!qniOiQs$B~cgOk~CJ(Xt+ zZU=vlVmKo>sxLpY1tn6){kq&g%;DH-okLvulW@;#cu_S9Z>?W7T;yqWA-H_c*7HJsZX9VbnOkz@BH0~5zjccPmm)rQ z{Z5Ik#Uiv$YQf8DhV`C__mcyu=ybpR<3QpI;)8?nz`Ls9$WZmd1#k%I)BO?c6O%s6a-{(coq0(QnVR z)11F-0eDFPo=bbs@D&M%w-PaZu~r@)J;K%`-PHuXJC6%d-5q?>z!H_ zf$S8RD{D8V2B-wHjlEt#AMX`HwVZjDhraj$)M5B6VA#wgy?TwfU7pd;aKuj%3vX*A z`#IE234vi}Gll@h4_)!X2N{>Y23gJlGuNgqIS-ZZp7#lEZUF`BYe$zFkKdp>zd@Sp zR)a7xW5N(YXxvZ1Um|27X{5qeh$fA}RAlOLWBT&cmnj}#_;{M@D#z)Q8sY-a;>-oZ zHlbU1WnAoH-JJ@|@+~^dG0HQ0fP;}7aXUj^M(Rc>5SYJM04}r%I zsKDW&0hAck5cBULy5nuV`*y}z5HSf%b86`G*d-BJ>+>b1y>w~tb-XEdB`H!|h!n_s znx#_OLl!oUW)um&>a(-!A-9>nglZSvdU~n17snk)%4}P!nY>f7;CnHK$k?7*ImA08 z&AIum(C>qz&^9;Wi+k_fXZRkMejltrVZI(NyeoWXo=&Uj^FQS`$YL6a?Jd-ZTw-P$9y-|o=I~&@ zLFxhM6yu3v^hFW+FniQ(+jA3Lw$-)5Xqz#I(@lM<><=M|qs;nxZot`Q#SD&w~NdF+dY1`$} zrBt+ix6!I^1u=3g!?y~%P8bZ3s~pE`W!lP67Jn)5GUL0uTj)?>st7>kHCB}=rNW;# zLM@3sTJD?T9F&-37usRnrF!`cnbAp zL(>;pJnLTsJV{VJL;+>t(IKH0sj36xvHuNXU|nF0X%x24X-RP$2rYCJv$3qL@=ajW z8(=B6G>9EhiFCPizZ7&yUAkxozO>ewM%Qvn3=N@b@~gcefjXYd9uGO96q($;dS8%h zznD!bPA-vx>21FDBz++gFNqhgY1p zr|qr8zQg)P>_Kl-2rK5m@(S7O9Ny|}@qwrSJ`B3`o?8rEcG7#fhooh}H=WiV)iqR( z6mt{z0TM0=0tAa7TBr7F7LzGjQv+w`coa`Xygzy#VK}7%xXJ*|l|Wmv6XkjCd(M8& zHvrp?+1`^J*njPM9Q7L{h+krr+A_Vu3D7?NPZQH+Jo@kVTWO`1i~tOh-tU<%^-4E# z3`Gm=COH>T>E84oc?Xq2;@>#|U4Z!CATIs8(^Rz7Z)UHBkDI*pXFP|TJMn}(O*NuPx@Z|gcV%)d z!=nq+@ELG1a=CH&we^C78QW;3mUWY^u@}NOU zh-^x_5GAfo?|{EvwFu{G@N?I~ONhVd@Y=k0rqz9YS+h9zY_17mf@_l%5Z$m$x- zK2ybGgqn=GaLz?;b&)t1b)F%=3ysZ}Hm1*>b9h5~f|&FY*gg>5$;3i_uwU{Tcsg1l z?#Q6NGFo4P%907{r7>l~u2jT!+|Cr4e;GQ^;6qPuXm0G_EOXL?B*n!W)r>kFZY-i} z-v|_c`#vJ*Kp1Da82zkt``RNmzlG|h9D3uudGMPO^E!1m(bOW?xsST;zFPtuy;deu zZ8K1I{b2$6Yuqq=3kt;2rvx;4fUysoz(5n2)Wq&&GVYh@B*gzU%Fy|_U6M!DiRit{ z>ijesrFFDKJRf)WQcxC{{o!VVGyE)-rWT#SSc&!*Pgj4o@lthJ_O#vrms=`c22ZJ_ zc1-7=PjRYR78a#OPY zPwgLddCF?>taG34cf)!U8ZCOto!|VVu(g-*j9MG{=Fi(I&t5j%FPAIi#=Og8cGXi2 zRT{j;`<~5tz<4t^6Y#cqDd=3V{Su$O(oz_|dz41={6Nko3qK=^{#eaZQgw!v<;y3N z^E8psqR)=NfdM3=J4G*RhKiq0O=-OnJ~LdD2(%`c#$sD)Bx&L+$#KQ`bhyryf^7Cw!J&BThS_XC28apGFTq$#oo?R9Fk+} zleV11GM`-0j#RHlg<~FPuL$>WYeZELf0oSHRAwJvzhybgg`=NG+~^{nUH`@q0+G>( zlG*pY?f`UEX5Q0s*x=5KVzpD}L*7|NC_k_0iMZxw5BdIl#&$AlG`rW}H|U_V??wby zj-Mz^97NZq0f)uRwrJLkSYqcwEGsH?hbkL$DEdx}-sWdAyyAqCWt6{|XZeMJwZh5q z%B7M4%;Sd_PCU`lmQd-@<@ajW6z==4ceVHx6LrT%zEeFq{S8Vz|Al~!Pd6^z0h8iN z6v7{ZTV!^FzO8#~(oT-+4DOcXC`5bq!#{MYcXgQ@^!p^WVV2H44F)SqnB~)o?Q7Zg zwX$b6s>*+5R~6%(7Qx;jiX|Ge+v$7!|^ znBaI-dRippy5B8KNtk<2gZXCn?v!5r8^_{Zw?2){rs7OCAl9g*zasiEmoBxTJxZX) zfz1Fy(xVHd$I)wsKXojIi_MI{uM4`PzEm|*bG??5i?+{7sI<+Ab>J^t4Hmi4&^Ps1 z{f8V8ozK~@UkNSZr=$kZcKe9L$7l&cp*crq==#1b^wEWpf5*dIJSQfg#D5XmvqQz& zg;%F|YS-vnSJeDin7tcnNB^Vg5!EB<&OS*9PGP}crbnlOVf-Xh_=sZ=+wfmZLp z#i2D0L(k3&1&sAbJ6@L44|^W6}FYWA|IV)%djAK$J9(IZ#9;(^H^LjnZ=X^RND7H{)gpak;=t{ims#DQd=@TEhFY;^xeNyYrvI+qAJ0Gq)S`fM3MqK%TF z^MD@`dxRSBzPRH5rNE`U>P10`7!qefAgPpj8S*Ud{PEiZeMgPw=GEWh_E-7}OJhEA zB+ghKJW%6s-VXPO`7_;Hj+JR0?zA)DQ`wm`VLBpINdb_eg?UAaW=_3|~X zRwQ{H2;c;gKd8oh3-erLHTCglhoqWTMz+B7y6mD{$!`A0*HBqum&H)Yzd91{wLxF1 zzqU~K@amL0W}C(4=kDZLv%R`ywAZTD4(st$vXEx|M)fNAj7;5OSoSs$DmWQw% zqo<*3tKdwkMrM< z;O!=-eUw2q3&v>0w8F2=;XL)?o(;o?dur6wu0B7AXXd6QTGvQ;Iq~t}IpQ*bX2Opa zLmv`!cs@}gP!y}l_%v@d;g)>{cUc&_TaeMzl}_CoAlXSiaqas~U(F5-&`EHmBJ-_6 z+2(rzJB{{kjpIjE>2F(nQk;-^Go8$tffa>}dE_kdG2Qj{3mtd?p<6i3CM2x@-ZECR zIKotWtI0EQtS74}XCPQuRRo$^Qo+q%$ZczM>lr+j<_E-X_={#J{A&V(TDoFkqzKcE zrwa7Tw^(q*ivtw4DMIfZ<+*ztF>@-_!I}axJzDnu7Tbdlyb7~M43=yIujhJ9Wku1x zx1};leZC>!S2R_$x0N$}+*lunb2~sI_&sEoDVj?+*sG^D{Z5fTzW+SW? zBR*xYIIbL(br1je^r=5PVBoc67p+P=1KAp1-TSJG{HrBc>K4iUjmfq51h&2ff9qD- zxh;>xMFH)}|Bb!(fQsUY`b39}0+O?UWEIId3rH3bR1gq`oQIs#Ac$lT5Rj~7L_p$@ zN3uvx0}NrvIn0p5fUp1Gx8d9K-k$gEzTLO)oVV4dtE;QJt8Z6VcURqefA^tqW{(sDJ()AX{( z`aRRZauOYl#dT|ovuyPbxOLXtwY=;zjADGcF}gT)Ias@sj*c$#X)b@dE@pZdKNogcmngVwGVl^PjqZwo)N1N*s?=NO(*iiW} z2RhEs5YvGJCiYW9DSaq3`8kg7Z=I$l;9;y2N-)dB(gS#7#~l}MA&(C5Y4W&A$XnIX z6IZTQUmGa-ot8GLHm1RlC(b%$qY2XgVTiZh?@iURertHXD1U{#-fo}f$+~p`tO>6} zb6T?Zpml}0v}oVR5{zp^eTMi6dOx>q<@ZUfUu)I9p2y4UjhePb5`@~}HSAB`n|m0( z&ya&&>s&agUU*hGf&9Xz_7A+}C6o#~oVafaj5?l-&p#d;<;n3xxMtCO^~L=|HI zYbMe5gQC+O=34ww@jQynrwTI%d?fE1y5d{)qU7( z3JGkV%{%NkrzzR6cKSqnEz9F1zQWg6c+7M+f8x+}V=vvQWiK%RjcCl}L2sn~PMe%uL9Yu_q#AA+trbDQ!SQe2UYI*^lgFYBD9b3w|V zc8h**m?n85)J&&u=;1Q|ZS)gfnL_(_O6AhKU(Inw4f!yf%Z48mgzOEj1mlCGOD?js zU~Si`rWNsx&t65t%afhRs@qb&A~61 ziN7FuKywgYaVrKiiVmo1;o^ zVbP+CJR1Joodb+PfDA&)Tpk>RbFNsfh@(knI4RZl=eR$O_t`R%~6}= zT5XFBd*PsMHK@RLJ7#z*2PV|L_dcIHFRD0GLdY-w4sR`Gegh(6RV`UJYa>CvN9~T> zN}Jk9Upv!e{aifNNVm+J4VY`o@Pv7L^numfIZTb&tuH8n@7D=D+)OBeJTyrm8Y~@{Ie!-s{5lXmj6w$;wtqAX`fdt=p>F(rkhk^d>$9*?tRcF&uQziK z3H|V(B{$IT>!kO?DWg>%({j!a_@6#3k&n<;p;cBsT?_z#)s+jBW1E za`O1@zuR;HymIH>vSP_G)9;rqtiGfC%pm$YMAv3~Z9K@c>EY0M(J#fyM?WChp-+Pn z6jHaKwTs`1v3D9FLHtW~oAFY!Kb5E-VmddIydKPVadQkU{s{sBng zmuN;cJOL%R2&i}!-#r*Vyf9~6IChCG z+F4wYV#dk9jC1Pbvh@wX38zinhz&04avXdoG9Wsfzs`bV-XU^NsJ%$#4XaDb&Dg}c ze=y2jo_T%y)?*qChN4c3%mI!ng`D8B_STbn!0!x`{Mrr^U$FA+L#|KMp>Iszb8_DI z{ox7tL}`>#qzHOKe)F*ce$jj!%-nS~{2s&EcgtIi?uJr|kuxeeh)0}8oPLW_OZqG{ zu&DuWk)s%k#$i~>eQ4Y-kcY^dHV@#r%IyvET&~AFL~mmVKg&H0aNs#ptiJ&SW;-yK zYq;c#?2}6RmAw5s--4tOV*IQKQ$;TsxdHglaX-(6W-Bb=2&bH5hHU_rfc|68i_Dlb^^emiq` zIEJY6*I&?#^CPGpr@hfcfF5@3NuXr11&`vwcdbn4kIUC^+pV93gHj#1Uw7= z6K$zvr7sf${4JjMUR&|ji?BuI(lkyTij}tN6byVfDsLM~26x-Oe|4CyGxu50L!D)} z4=aq$_RCuxNoaNTEp}-B82)``1|E631UYE<^YeR#`GZ<^d|YNcDF&Vb;<9Ygy&D9&h*+*7#|lm|4PTLuoC9?QD2Uf3SZ={CYJbSd)f1=0;QX|h`x0!8@Y_pK#Z z-s3~wRJ{k{U^E2E0B|}%@x+2f~8h!++Z&Mze=dYM_t`WA^>MW2lk9i^D zq_T|q#qw$y+9Uf&TpR|wuv>mx>Fq?Ob$|hBXH+aFyj;$DT&izK`V>!k#IbZ19;kYw zIG~HMe_q)zeFfXJ+n&EF%)Wc9OLRMyi;GFZFov7eOstGn<|0=h%14V_NwlfYFiGr# zPX@o=U*&ploQH1xN1Jj?2@Siw_s=_xd4p!_At%4^UD*ewp_k65EKsv_!wK7$AAkxEk_22SJ8&g` z`=p#f5J`la9e^4*0+;ch0o3{rBYU0&%r*rd~1AnxAgxDMs0AQuK$KU#;-6ENB|A;w`&HD0>h}soD1Lo>BaQF%Bk$s=*U0510*dwz{0r(U zFUSuS_0lDu^$XyO+C#XWL}e-EO(X}tH1U;nR@I{`!a|8)2NRt8n$ z>IylTlRh{U;Ha+)lSp&ebW7@u5g8ox1A#Poi<}()^ElCev$yJ!vt0&2CbFF0Mg_zq zuZ5>uzvCPcXWcX`aWu&6iD)~Gn3QZVB<2D%UzNB#*w;jUa!~}UJ`GYSB6G7Zc~#5Q zAGy!@;#xWQYfrX+u9+`ngtwlo>kB=ft2zQWDJ9;s;s1I7=XqZdE)XBm@LN0Nz|0TaAxIWAu&z{@r^44lt zIQ|f42RYmXOv{z8yM^ZFc9Sm%+UHmb%bqCf`E)eY0Aigu^b661$xE;#-@){J5o}m7 zswpK=WG`=V75+zkBCdm`mf}01raXbC2UZ*Xfr-?3EthYMbIj)RTwiHJ0da#rp+}g` zoVJ_au%ANem=@l%rBJ0;pVXA9BIK9>%v3By0rXDd+f5R8Z`1eU1&+>P;{D^dJq2PzUhNjQ~ z!*f2x+;r}``fXrZ>)JkYT78lhvBJXF!xVtpLgwUFSq|#C{BWVNk0!z=)K^p5)mY>j ze`TseS+C8F$YrY&$abOLC!=$3RnM98ARZP5^I)YhuHB+&-Hv8NIIi)94_}2Alu~DT zz*J&*N6N}~#xlmfn}LD*XG@m-nssK@tBWZ)Gl>R_!F$j&r2>m?`P@+XwogBltK4lj z!#YOXya2yOt>fMu7T;GXdegvA>VhPF%aE@n5qvwVeyY%x->#FsDjAQJEKy~^$oeJg z82+O6OW*e}n&WeTX?*yobYH8OL&LP@qqN?!H&Nh{YmXwMlOkmhf8p*G2C;XFB2=xC zkFkE~ zD6b11pDQvQ!XBjP=dF1t_h{vCU%b8nv0fLL->}oeZPQQ}+0UKMfO_~K_XD0OxKl8S zRj}dWy~8p%+R%8YB-VAQxizelW}a7uu{*63 z4H4|ZjNe9%lK!W+=jCXtN|9fIuE`DatJKLe|yQ)ncUtPqw-ZS2A@YU;LZttRbrS{-g2Y3 z!_6}@gQFn;$8(MH9Rg+&B7v=}4E9$IYJp;$`fhmu*BGWG+HGy)9Ah@)=HYt?gdpC{ zw*nOZ%$Lg^aLCjVh$N|nMVH0*T7TZeFY&~L zAE{V^hEGlbuOA!0YvcE-jt)Ewy2rle@AM1UCZ7hA*KJkFU%dLhV_d%(4StOYE{4k) z=4y`fSL8?6g++|^_At~E@ijgFBI_QvDXz8JZJd^eaq4|UJLq9zw*dl(N{))u5mq;rq}V6xwOoZJ9=_zGjL z?zCNBmMz4Rx@ym3{>*(Q07+=bu?YMHRZ!okR3z%$b-Ef-eiwi^hfl^ z)|~Q4oKQ##IchMM^T#(DvnK22zYPgY{iPoS6TLu!hf!gFLBe1Y0@}4Pta}p-JrWh9 zTec;Eghq;$x5Ufy%6t`_*JYWWomdlotj;VUa`<3w_;u;L(-yprzoCHe`v_}z&=q)= zwS%{<3_0{DeqF?0L#3y#h5e<((nslE+Kc~)=b+r>qpsSh;>e$4W)9!6nhCD- z+dgcwDQzWKF1A@Auxe?m)={i9PZCm`A&DlO6~RS^kA7+J&t$`apRXsEW8AqSPdQND z%okRp9ULHC&uyOYXPWN4qSp^jd6o?A2R8UQ`O~hu&!$nqvf&fZUFeZr&6t_G-Ssnv zVI+7?tpCYso_1qfTlxrT!>ev?p4o)4G!Ep}!78gR=f>)UoP6oL;}v06u&@0Sfy#=4 zOcN#EjJ4W_+>+)l9a6)D?rMP6X4R$Q&aV?6C<3(+f0u7i&H|%MPH>UZqgpq6U_E}4 z#oUm3xMt$Pll!*A9&JFQT(tJ(5hR0)CG?Hvt#rTLQqgot19~rMpsX^7>@+V55zK{~ z)jC^+FCDE!#!C9^a7ISRQF8%&wTSwHtc9HdEDugZX_Y*>uSdFm$ga!S`N}({z1Ai$ z0A}n`3Tx#JAm_8s zJpyj@I6^{1EW-LZQ&-R~XeP74#4sxFl66Ye??nFt6rM}? z$`rHvR~&Fgg$fxDP%VkEo9NDDo2jT*9p}-kpIMzEU9^wR zmF53X=eR%l`^Oujuq2o_*Fw4>v}5j=yT$bEFDOzzE#{b?Xq6`S!9|4o^6w`nQR9n8 zftp{lj9*V#QI@kw%`$wnw4`@>@*&mR*&7c&E&h76PDe#QRlCp5mAmWVj`AZ*MJ-eqtK>E_EhcWVjhV5yZ0xoO0^fpP$Eou0qcSuX4I&i~3NtUO?<<`$#h#EFciCuqj zWgBj($=f^9`N^C0W&D|CL8z8S2437I!}bdVm9NZQz7aX~@8CJC1G*x$eh_Y(r8>DD zs3OWG@;lLyqLGo2`3qsk1K~d7V-#IbV3si&9$#lKASQL{Cnp_TI*0Pp?S>*1RG#7f zO!}ZFCqNoy2-+n3%{PczXx>9DK#%y(AkdB@Us1-(ZB*6=tCrbK`A_}H_c|Kc=!<8v$5AFz7AelygmZ^ zxOBGCT>JMkmzh_3)&dUW3{0tr)PruIdztkK@OxbV`neE$fs5NR~*Sd zBuR0-gDfzPgPl4#ADWAk;|u%Gu60!RJID-XqeIHb)0bi@U|~()%!}Q z8F+;&^EMJ+=l|m#?kr`TU+#@Uc8xvMvSEr|BZFt!D)F_*Wj>GJUIW!wIqVfj^&8u} zY75A5tUIh8QFkM-spWT2gs2qDYD@V@7nKlAv!BXHC3g1pp77==yNCXHg$o?5I7D_0 zgX>->u8rvC{|q8q318JEHFi>-G*I=pzYca4HfN&qB&}cJ(#EFy;rF4GNJT+V8i@&<UA3{&@iw^m!!0o7wk0+=r6gB}FbF3H_ zfT%A79u4`l${#S2~+W{5nS_*CAqmgD74hI8Rcb89rJ7QmfKOLFG`Nv$(?yi zCO$Hza6;UPPqr_Uk>;(Ah{YLuvV=i2`nOP5v7s1$2w-Mr8l&Qf@&-gPibn>4rnKuw z^4^TY;qcNO<0njZALUdw{(@|F_(E*5BjVRpY zf7=R7rKxPE&_&8M2Xan*QqZbl{IK5iDKKXhD2f;wxYRkbpL3yR?-yh+kN7DI#`lYH zrM`t#w6Q%}&ZbZuNXzd1{VF{+TkHg1E%4Djh2&&%fcS_l`GFe0OSc zLaQeE?HkJkqo9v7M~tNJX{6R)6I)xV^WMc_6j#w~nrapHw&CxdXv;qC!T+fvmlDR6 zWMyEGnlY8SAT_Uqk0vIJ^`;%s%Kr+tOp_!nEGM1`lS$y~4wA>%>7f%l@^Bq}VY#eL zY3CXVMgnrLR$i5ixIcWVp*-5ZQ9Z)-b1m+4NC#1I0$YV1Jsv`$fS+<;1?@7EUH2iC z)1q|i6jrpTvZC13Pxr-C%Ja!ngF20%-bU9?Tpneqp>MWukRpJ5WEyI}&x(*Ib(paK zH1OR)&*||Z4`MYosx6fdm{oU7n8FqxBj zUhNw5c7wRxGR=OKJ(bupV97-itH^9}{Pe^y1R4P_ByuZM{nNv4B~(_O+E@|OntlR; z2L}bok19d-ko;(ygjMDc3l1GeWlW-M+1yB>sRl=V#&532)S+&=tZikQM|~Mr@q8^* zV`lVDmi!FZ8+#jnT>%1?k#Zw`| z19lji3j-28`%Hda6BF6F_YVym_#uPOUPLjhUB+mu?GQd4nltgQKbNJ3{@EyNoWFk$6e9r)xzfH}B z+;iXg2o`%b!jjf$Ebg;oZSeR7 zn&S)B8V=MR@T;ugjnB`#Gb-o7Nh(s4OZ?!I(ylS`-wKWaWog^%<;3uMjXkS2bZ(?i zn$S(|nB9bhyDL5RIF9zx@FwZKo+I=Qmb@Z3{aU4?oeh5dgv819EJxsu+!w=x-mFji zdMOe2@9u1UCFO_y3Sq*S)>pK{mKXSp!bT}w>Au;}?B07yWbV!G2XfzfTru6%#_}L) z3o+_v^)hVMxuRa4r+3PQzoN_K$V%kd4n;P$#l4@CD06%3E1;qKD|4Z3Qe*%_-wksw z_~_(caq=@6t=O+HFgQySU~@7pj>$bL*-94yKcSd+GNe?e-KgfSd*ti?)8cs* z(*tLmQ4o9HHBShf!)vb%ym-k>O=~p zmxCSCj8!9wOQ4DMiyh9<;=MBd34~zQHAE4OKj9{~H#+iHdP7dllUSdY0^Ql7Jz(^!gJ%!qVLTR}| zjl`y=VM?r=&%zVp!t9&En9Qrkb}j2Z0%CP4&JUFuaK&+YIp4#DqLkD2r)so=<<4mz zt-thF`wz{WOI%^X2D-4)z8$(|ixkV!-Rn)-3yNh(*^B4B>Y}4x zYuL%aVZ-c&x>8;1{Qg;#*l+#k&8eP^0v>-f6uy3PWOj{cXC18&nCL`$r-xO!ywN*l zBi}}R8mSYK4Y4=UklOkafC(S+o_tBf?69Qcvbe)&a}m2@(m2*7-io+-s|k`Tht!aT zk1mC8scQe)Xx24`?bkyMWP2Y3zzzR*@_YlA&YV9v^sVC0H_b?~@a|Ebw8uYEN* zy02rAZ&CqOaiOb%5RCb7ZSbwQORhy-scABsTx%P+JlUII(MtYw9il?q*hNdcFtug#PE75uStzeANF#SY(+aP%ebFiQph@d(=aKS`nv?`CQ!P&6vJ&iu8{T}VFK@tiKEe)o!-B%0kkD^IB+KzC&!_inB=h;5-k6## zBP^P@NE!MV`Hp%~tpxtRGhc+bNP1VO^fp|5uHL$39Tluw#~a8!H_b&FEZGTHWWRUw zAiTc@^4pU6{>b?Uyn+gw%zAKmh1eva4|S=}s!(}1DNq?Cy&|tRzBp|44Hdl#d&`ro zfs{-pn16BHC`0>TAE~Bk0*(ml{j+C$QDWLKbttHMgQ%yhr>Aa=Ql?!!k_&6Wjq^8s zExE{C-jtuH3!o}2ZbIm=iE`jD1YMGYzC-gyRiPt-+?)5TzG^npe`p|DK(0HPF81EC z2?^8w0|-*&P6?J~!Yi2P&zugzJBv*D&(6*PnFV)@cD2rq~- za^q@4cGm!w{M>Y4V~BOu!tX4dB)ry*nDC(KMCK8{1YljWYPV^VE)U(xjyVSWkIz@77%PBjh<)CS4;l5aOQr3nA$Paef?4dnFUCeeAiSS1MFN2T z63!pL+U3fmRZ|^7afzlN2Ux%>C7Kq><)+yU>-R0b2ff6cWxI1ZEf@3-<$XTQeKA2w z6^tjbIh4k0NcFY3k@dqF4wzEQxi+AoyeVfjVPE8uHw`|9`W>7=r*)6O?w#9;cf_up zva;gsUQY%Y${{@+*z2JWh%49#HBukMaCa^H3KJwuG5+dNQS9Ul{<0ysI4Q!m|u zrHO2>{8_FLCUt2Mso`%-$}kMIwmXINWuDx9)aH8&FNe3CQ=LPA3vL0ZEd52lbKRs0 zFMt#5=dsaAz1|@{5>?5Ox_X~ahCi0T67-w&sr-=9SP+373p}cDvZA}zFCz_N@Ox-; zuAJE`Vl}>jlLi@{2Fgx(pM9?;h85NhBRH5#*S=r%F^JrIxurA%Yf`y`py;-Ud@)H@ zuF8a_-_)Qpd`yVrYZ;K8>%{!xf_Zs?w^RSZ2cdnjXFbI+rJd3Bhb!joT8z+O31w-F zROjl4m!i2&qgy4ufu{fl0Xk?fj+(am_xEV<+Y9lpP63gzRd#{hO&I<{pLAWCU;fPW zj{W3pTzOCIeC4{c-Axy0C3H;IkM`ay9Nze1Po4Z={}hP$F5XFON12u~80eQ_ zO(+b*!>f}1bx`^p0`rAmMmtz1&`mGD4c$rC2R=bfh{KgIyb4hhRZmj4-`4RIs<_Y8 zHi8b-<{83MR{+7Iai@ua&$PH_C5xuG>;CeYg^vK8AeTf3c~T3Iw4&sYS){7q zE(X34eud?~wD(^x>ClltPV1w7>`KZM9Tc!u+*FBG2Y)B2i?*avZ(wJ*d>s~XmtwHR zC#N2IE!wk454%&eAQ;b+F`y$E?M?I39t3*a%kLcXQ&Cv@W$=j0cns*cO}FFr!9|$Y zrJOPcI(0G04~7gzeLPid1DvQQODqaFr-J6#Z|Q~ut+FK8h`a(NC+w1sU$(W^Pgx_1 z+nW3a(_w-n%Flm2FwK{^OG^tPZamCAh>@7Pngc*9yr_c#)Pw}1(u!uvECs(r2n>Pd* z(VgE*M?iPy@*}>=zwqpCXUx)T3)lOZ{P55c%)gqa@b34$*L3&G^fgIE&%aP8tuP0Z z8%!Nm@FLp#ArSkO*R^%2#m8K1?zw8umURbd1m98lb?n%GCDftFW#qI}Zcdfj9r7Pa z|8>nmH?0$?hGA_fVAc`gXVv64n?>#*IeO@HC5Y~-onICZhgfY1Z;R>IKmp!(HNfNr zPbbT@vxPPokho-mV}eu)`dH&#ziBljI_mV)v3I)I!E6n0R&5F%`>!%ov{Xg-P~?c8 zkm>57KcCS(DpnUrS*s3w4Y>27uISb;Cy-`uIACC)K&*#C@>$lnm zrU|rI#xg&BY>^po1UEZ95?TUr^afSXXB0OUJ@hMo#WY|-`po$gsj>}ZNp}q_NY`#?(;ND1I6V)ZQ9AGZQXnf$KQbIDgINuj0tgJ=XYGdv%(l-JK zOfu!;uH)#H=Hxf(&CcbPZZY2n+Bj3}?@FqD0g)Qo0r=5oNAg$E?H4+Qi}OyB+P+W- zv~)+dNDF6K%^G?}o@8LZ~gf?-$ldDLl}3yV@x{Mx=N zSvNDIkz4`3@b^!Dn7K7aLcZ*86+!qXuKt3!WLr>Wzm?E{57$;5|CL}4l+RD3vBOWK zj$*1)y|kIKu<}g2QK)O0*yW2wOF#RJ989)#!Ov?&%6I2C>O;yNR*=T-o0=LN^;1 zZ_7oh^~V_c88#mm+V3ioe4X~D39JZw3%RfB>fyzY7XOw^^-+W|U-SVPlkgpmFs0v@ zS@QKX2Zuw`Zbx#6>m{?CK(0{$TCY@TvUTJb`y-x-ksmQD@N8Gwd{OgrxyGG`)_lkJ zaUyzQSiV*z?%iYuYwdkoipm>NXItG94VFFy{)e{Z{^h+Iw8}o-!yxV1R-) z28yywY?uR-sQuuF)h3fK3CZUGDd=V^_EAijRrb_uY< z?LAhZ_MhnK$W~r1_j&cwi}db~-A_b>C|XPQM(*337ZZK)cazCH{eD@{bCp|0zZd>p zb$M1Wy*vEZJu%c?H7~Mf`poqpC^=6u1MafWy2-E+3aA8h*GlY8kj z^FOYrnv*+>!|m%ZMA1*MiUkXP^zRS{-?R&Vjt3cvul2j2qsLcNV|wCV);UMm2AB4} z{VeQYMYeF^+nZU0ivAc;X^*&qOd>qYkRujBE=#GLe&cVr^P^Kg4^Z}w6T7q;_U6^5 z$BJjb?MWKhF(F@rq|1yIN_>mHHZ;Lnb5Tm@ZauAOQWrbt*lmW?*3ZHpIX9#P#&4WT zOp8!GisT{^OJb1MUVT{DL@D0b7T`;1kE;x5tVayHdnrk}VPPpkz z>f)GpFG#dPsYpH8M!sviW=4m00Q@dE-?k>Hu#TSkj@&?Mf|>*F;Be7Q6G2mz15ma4 zSLjGz6ck-N3BTk>ym%czgvI(r{srBIX#WKzKg8=h(Z#>;?Me^OLFAQO(#yOlno6zf z^=HAhWLRdd7us6dBpaD0sHf=+4>HD59hkt-*2S*TGL)Qbn1@pu=d2;wqL<;9OgqqJ zy)Cw5%nBR!QN7@;Mg`lwAjMHEU#TwC%GK@sxSKt&Wq03k= z1)KnS-}M8C;dmerF31uj4bWu^#1N(x9xfP{dQ6-W{! z0_;lyd$#|QFA2n=Kz+9c>K+e(<3J#LkQcDHfn-2}z+w$@1_^*1fE*i;Kd=e_b-02c zK#4bSj5Cn70FDs^;(yMv07~tFQX7y9uqOyyOA@G43b>jSu=hWTS^10o=hkq}@a2&cAC%7j0+3(f+D#I`^_(1aig!++xM_r9vJpv{21 z|I?9wXZ|jMD74fx)j&AFGqna5(BC}}1jzxOjv_#6af1hW}Uq+%z6O0U;3u2nQcX;t>(uCBVbQ$0fl9;Q$4c zRP5A*!g@4HNn;%PDYVJs6R!)2=q=t?FN=6^zFM{UrmP}H=Pt^HepBS0Vh11RPugcR-0p2~q@Af(wI$|0C7^9oy$r`R1>m-;I8+C-j(y;91=B z2L_fp$`3>TXNBVK^s?*fzo5e)=)o+Yf8#)(1z4$A$wN#RVA?N&H*eSm0l#5zfvRx@ zhW~yV!ly&1gO`Az57@rqBz9oq%H&qy*7&AxS#pv5cIqq!rIG7e1YhxYI%oTU@>9Gv zMDhi5__wD49v9ZD=KsyP(f^#vn+A8k&^ZUjZuPQ@nzM~@jHArz#^p)}zX8A6{+ znz|WL>K+zW{LJ-dwQyfn5>Zb*r+t6drrb=)OlQ9tMmF`B0weRt@GYIznei`Z z(Cw4#Rpk}h`BbJ2O#NbEMjVo+ni_-&X8qIZS)4&EGZ~xZ!f>gtJNQXGiTsZBWJW{y zzC3XY^Hd0*r1hly0dqlfh!Z0}pQd0~ndKzq0^C5-lkSwW-T>FZVrFwUNlQiwGgpbY zJipaBiE}sz__1w7ufy^EIaEg{X$UY*iQjGBLq_WJqSXFMks{fuVY5?&gU**{KbTo{ z@wU~(Ir#Otw9#1RO{<~QVaraFSuSM}zkMzB`U_&xz56Rd1a=u;ADQEY#((f_BHmt` z%A0)Wf-T=~sYWcur;z7W73r>E)(`0n%KTzZpRAV|HVN_+PV}&3z=WKm;y(xA;;f6Cl?C)0h%RuNBg;3&Yfl+d)ZVsn(?H5WUjFN!6O{oJ*+&Ab4Oa} zthOr4cio$ZPg-TxRrzn zoALcwE72E1GB&xpkk6OB@3DPSV8&JhesNOrJY6eiSG;)Sx#5f2q3DFM0S0*=_ED~Y z&SAo97>%u*&vsv=LKV2I%6D%nM^>zY&&yX!HM}AOAtQ;`ZBTQRWJHE2@u3pU)uweM zuKfh(`_lc+Ypibi^R4RX(D-8f=YE}O7T(zIlRX4Sp^!=BM$SefGx-B;Q$Eo7S-^TEm^kJp&XI7oBQHf!D4%J0{y zAAe2rG5fRM`E&r9`Vt#1>uv_f(fGDA8V>FuZWYA7tfY*a%8p*%%g&#;;2fU)_`A-B z|Gvwa|J>u~4?dvTDDY1XU!J4d?dA}5gKO6>Gi|a@nvo;(@6RL0Q-xovP2GL7JCX3~ zb#mXW{Rr1S<^2!Bv%c})g5?cy<-L}I%fYeJ&D(_~;3D-fu<}n#^ns&Lb)Cb=D7KUA%(IqxHP}EZO(xrh~oUJeScKv-P=EKv#Tb8|_)Z zB=Xzj2}>dYY1&%+w|)d2g9DpDaQG8$=_n1sZ&I~eE5k@ku*r0Eq0UL(&5seSFWmx< zydqVsniFMX{`52Uy?7p|&(}c6>GtLA9=x1ej~~A!(5SJN8vO)(Nx#)#>E2t};01{- z<`J6NpOn878%gfyYYxIWEbbSzWdLg1u~vWLf#9z5&BLQ@Y=2xR0eBKKs?NH zcszn-(KUsK4~L?v)wE969ml5IC;Xbsk)75a2J1b;{$h}B!LAPhj_tmg?YwuE&Mqj0 zlZ(?;ay2SKtsd%CVHdk8-Pgkkm)dS+9tY;THmK&EXhk_1 zJ*yjF;-&hwI(@U>%D(e3uEizXASm0jF4d>un8bRpQvmWSQh&MlM=e{5w-sA>2&qf? z2H%bx$Gv*OZ*Os$xIRq>`}R|i7SFTkfD$A^ED{o54t8+ zJ-U5Yahv@ym5Xr{+zT-R>sE`oyI97)?9p<9jnJw;BrP`)(m5EQM(Vs@nRY32?57)2B#Oji z_H@O#MKTrPij6TyGNwE6)^AiraRpVWn|+t+EgWC7`8`fDLL-#&+0rzBPr&8*A|n1T zNVO3gGc*;W$6Fv{39WZqcqX^VO6nzckB{obxl??&17E-C`vL4%eYek0?CMVQv~F4D zZh?nRUBet~%Ak3_{Ie>4uUkZ6uj`xfw=eSQ4TkkkCXAe4#!X{z2v^c@C2^(Vo+!JF z#a1)Qijt>Bw*<9?)SnH183}}ImpJ#>?K@;|$MMUE@xO*!Wu-50-=$mrNKNej1LVW) ze-`zreK{#o+4e}JjkR@Xrq}3?cYq!pq6)$Wh>o7APc~xZj_#PnHHl7aGS@eDri<-K zskbgkewkB}X7Gt^acm8-Dlc}KIT_I|sm$v?DzCSw;8Q1Stc;DN9>CM;94T*@b_k=I zj!dcpznIOKRgZzFn^Z{ryzzodTvuh>tb1?1Ha~{wk`syCt?T2o{@9vwl?Ay&+AZ@_ zwf$i|5AvqHAxh??&r|`-Y4Yyc=(kaV#&-+$z7e%=$S|rjzl~ZspP}CjU50UePNE9q z3k4tUm0b@FTgpt3L|5~Od{LBK@itydeuiDLty3-ZRbajX^*<(l7p4?%aTNi8g~$~gkWyP;gB6bz zwt~(WY%^beq+ z7Xp{K?VHG@5DzTsMh9`3Gy2~*G(_y$?@mnZZZ}&QunuMi1V8S!h#62k5B}I==YSAy zxVYS}r=ZIeWVBuj<-!ZS_t27|(}+owR}vDK<5_!TyK8sfs+Om6>)CUCA-h{j?PZ`1 z0j%jC%q=xIei9?MpLeFXcM*a*f-V3`pnuXs)D)qAK{0*WoUCDa!+a6Z6K@xoJ*~HFAZ& zkYWi{tz_(v%zUB=iseV^5}p^ovHc|F;F2;#1}P7b-T-(Z@|$$7jHUawr)#K8U*ET< zP#pS%Y;&hVE|ToOhSKS<^>J}NTLru4=`%+rnvIFe(S3*H6C=9|V*MoBq{<>mRs5*{ zH^47n%SRCBlux{8ebbUUqus%1#9#I7VNkODML%j;O_6@pfl#r9J zmlI|CKd!p2`2=(FBv@^}3Wb02ktt=sHp(pKCFLiYnRX?kv+#22b6Z`ibL-x`B52sE ziiD?7pm=ty!M*-D$y%X|PTnBi{*|&?O{b*?Ej`%b4fEf_)5q$Ls`>zesBUV#XwTvF zaw!x9xwfaAYMCeZWt60f)0nB?3TTKB$$0P!GsK1kwMi{Cu799Byuq{Sld#8L%w(#? zeo5o9h##3qN8{FWfr&gwzg)TdSXyU7954ylgHWsY+)jVN`(vzm_LP(X@X*zX#;=p| zi^rsEy2ADxiGM|a(r_OSfe&`Q>UWqD=aQ7+E{_6dmrh2%cbh7s=sqQ*phWA1XM zr)St2dA>Z;XixNlYRq_bs9ZploJUY%u|n>(qCxM${6hD{Ja&cwwZfICHJ8Wj*&-)c#n8L5>Sb9yKIgX`9g!}1h^Nu zbI+Ic7k*83%r&f$wYsKf)d%yl>wenYZIq@y8l&Lh=(BLtuGmg;$})yxA%Jk>_NpS` z)S2{SUw2RT_W2@DnyRwEW8{VxWhT4?48c!t5$~lgOtUrlG(|=V%+U{{(w{rOXsr5r z;wepFv0O$w@7JE6^sKzZgc3k0u%Ja(o#N8XWbYXDB ziSq**9v!q^<%;-a*Ht(+P6D6tn0i8f)o4!p2{NtE`xM3GNB>4^8ge19)T^Rd!9+CS z#aDLLtUGnaUtSmr=FgCEcN)I?Uga^d{uD?x$ro9?DUn7@nFHQX(~2%)TOwQQ=X7k8 z6JTHfyOWvYW2I5%F01}n&`m!s&o06SZ5k{3L4KooOR~%^YzWog+_Pd_^?mF4L3K4( z6hmqj@|1zzvB!-NGP@A~fjO_5lF1Rup6z98_?mw86{Zd8ok+7Oti#XXS-htzqZOV; zcVV|j2HJc;PeDg_0?jcBeLWK+8-a)DPuJ3$W{-NbEvhFB={DftiE7la_Yg1-`1phY z(B-}mH%{MuDP}pgJNUW<-&`gV+RM0e1l*UT2v({IOC56RH3d-`Z^?smYBh9Wdbr}q z_Ny3M>ONuCsoY5C!`%6ZHbI@`-i+eC#a-o22L4L*_i;NNi3yMs3T06r%#X*fv>9m0 zC!p~3=1c0=0n)fDc3)+DXF29^3aZ4Cz6gM{C>Bz`0Wh&o)>4+)L ztS0u0vZXC8Paq-f%sis8%k?bhgJN#>G4$7vDVcLbn|(k+I?va`C^1BcX!#>8b!rVB zWS&maHxHl}qL6|xwlN3eHyRH{_6}bdR~?ba&_a{;=|NZLYM$8AVjl6m>OgGv&#UFV z7O|6CmN7#$r#){+_>>9H!z-wfe9P7myHj+IaFK_pCgPi7R{z*Xn=Snk4jH!`7CD_L znL_V@5DHIBxA~SH{jlJ84>RnA@}O+rJi><^u>*8S3abd4^|(eD1z)r=zY z8dE$pEy-tJ`ty5g75>ZSD9BLKlWdJVG6W=>m$=Qk-#u1boLv%k<4%*(Mao(oddjh$ysxbX2t$JVXfO5qX5#zllr>UPfN zPhw3$2c)dgX)cG~vv8pyy$-Fx6;~Qk?14P*0o53BEfp@b9yP|wY5s{z0dcz}llG>? z=e7|Sf$TIlJ;2fJhGtcrq-t?`%p;60Cz{VpU|#O@m@}?@WPK#jEszNkM-tyx^;Qx90fgyT8U9T z@iT9(s+3wU12z{%S#R6P8}piTCS(eVe)L?qM~?ZQ{sU%LJ$WN!K9#E@)}To^KJ^)Rp~{`Iub3LutZn6cXuYhFN&O zGZQ}}%Rp|1(5T$#0!D^6-F4mn+@jd?D-@RSd4pUN8*T7w_W9xn)#F8x6Pzi6g?P`h zyg}l8xaT(J>jzG_-+`;!(Us)w@1~2phH$5;$>5T&Ncqs6RAet_L#EJM);U7C_m1Pj z9yD7zQgxGsYcEy$evD~jQChvZu`#s<5zDOMqin%0sDR2-M>Eo7 zgJGw&VZ-xS`|e|tvNsT+w+)x9>VLR%{k5C-%PZsyH@Y8D4F{VZxxzRFH$J@i$k*|S zSM`f;u~gsNtj4}*IPF<}_HCW*rA`gP@qGhM{ewrf5@?iR zrQS%85V2tK6=s#Tf>Q zV4f!)h1_vbQn`c%9tC<^?#Vsj+}tI4#UIUU-{4eNs|~-gYd#_!um3PN-xRdlG??GF zEvxeG$9ca2vX5=qJJTt4+xEqB(MLA7*Cr%=J?<~j4Ww*eR(>Z5+Xt*R$%DqTb$~N! z?F9Kc!|ahQc}-eFh3q_UexnI(IbZ4ab*`OD@I?JayYfnxkd8R?@4S)770qLu-h-=2 z*SDRFcgo7;M_iabADnKMlC&fLk+TB!-b1?|K6)940TJkkXY2E)zAYTu(Le9&4>@Ro z*`g-m{-Xkh5L3JQV#04Uzt!JpUSq$}>J-|R(|@Cp+&8w<#$R+FNN?U-ADO;Csrp8E z&}nsFdu{S*sK4dMvC#tIKVI>T7e+rszd4wbF3&@yZ~im+UxfLm=>BXr|9M>oYesj(ujenCg8s+#&VKj(yYyJb zBOa{55BA3`REu7jd3y`r;OD3Cw_BTm+NVoSO{={Jl9vzeE_U;$P4YF?R~J^-TAFD; z&@KnU?ySxTOeFi0H+}@71qIx&o~2BQdSB2eX9xdd0`))Q`*1s9{lL0dt_{+ce3PEw z`e*V#MfYd3`LoOXsV@F~s`58lAWGGKJi`lILh0V_{U0@32d%W1_a;=Gy>03d6hXm1 zul!n)NP?P%C0{OAS**|8j<}v5d2HSbW!^MPmZ4m`-b)SrBm`_!8X^U*uU3M4(POaw z(@*LC68Inf=RfH`s7QRj(X>D5as;8+L1yl7o_^H%V;N17&cT|jzx~0-6J4<=7Z0W; zHk0nzd2nSvle@|!cqS1e%23V`B$ef5zh<<;L9Kpk%&=_?yf?*U+`-xN6wJ$qCJvkN z70Fd=^-dO!*~YJO+w45Ee~0y%GW=WS9F#h@*`pEQ4E4|g3*GTKIQCVUUU<3}m-+uV z9kDMMUvTZ@I&Rz(tcY)(+arnSy?-~Q2NiS_`a)~n6p=LuiDeIGLA+Ok1s^3Rlu2+(ZcS#1=B&C-gn{#yhnK>*FL!n?ba^ONp!%NbuT4$%0x!3Mu7o&mlQvj z+4Y*bVs;Dyic3uZxoDeI zNnJBz8O1wP-!jyRz8N~B)i`@ERkn2>@g+Zjkg5K);>r0ZT>iOg@gkcrfLDS(w&&i$ z{;hbvCZDh>f73>f4rk0S9(@`+lccSrh8c>)T5~?xE4G~{&X)Y^_9S?|q>F+R_0B`c z>l^^X!ia$WJw&2P`^S+`4T7JvMTmd$m<@~j&4waGXz`U|7GI>i=do( zhR4NH9xK*#fF;&@0BT=7s)<#)q_P||26xn~8DCOxz3WUUiVWUZ$JhNiqwk{gjMPEs z=E>QNl8ic~$1$3A?Fqg^z~`{_7)8ZXGxs$_E^73X-If_kt6(z+`cj+)yrchdL_71GCNhj z3zW*jqHDF^y(7!#ea=<`(cbgvZ9SJC=A<>LgFupwoJjBhWd_cO(JvQywabd6DveuI;BPzOE zM_y?&v)q!>_;Ar4-0wjuEIHMZbsRTAD9nK78g?w+dH31t5%^kox8C8F`qa9kzBm0H zix`pcywSQi)vdbz!s-MZ6Qx(UYJ2ZOpVG-d_9HK;KB2W|L&^LNICiXi|V7p zr!{*^nK{I050M+Ir>egz!u*ZKe}`w7y)iuUezv1!OQlpt#h9u@e;+de&vgth=g7s~ zE!I4552_dyWaELDw~tLl&BhiH`Ky!+<%Li=2>+^*VB|b}|Kb=O?-N%n`umK`A^U0= z>(hs>u4mz}`e|7r4^6uwmpI|CxmPwgJ5J(^6ccnPH=g|3U~i;&;(x6?#8B0 z$LWS-&evMw2D2Q4=ZAeNobR%sZdX~^p-`J$tld`Z3~+f#YDo7K#DnL36?Nv3m%XCa z(92=}YC!FHpX^&A@K0fU!}I!;(A@o|@0!T-h+7MzG|Nk;SK)(w(^10sAjdT=?7bOx zvafs4kdW=RpAtlBcq+u$8TB7Dv-t$X`5sg!rqeK}j4r*Gr`VPUbk|3+MWHpH1=w|8$Lrp`q@2&IioyI2V{GXSdaH6n~I)O>(KM>NHC|>uhy3;6H%rCb?(zl5G z;#Ze~>KppM(KgEO81T2h32r3Qv11Db3-iB8om+(EzZPaa27MJ<_>Jbsv){R?@t1Kd z(Xca#=-8w^=B}y@H+dW?NZft8n7Ll3o8BJtjw`7};i==ocPIkD;>5Yzyj|=medLjC z@0oW2{tPk+YuOfN8t|ky=<9}eo8QV_u$1W|e?VhvL>fljg=!1mv>+I9Nf}W z76nY9c2FKEkf_56=#Z?W>s^QZ3TXw26Qq`%u?yLuCL^ zI@D{?u#l0fz4PZrD}TDa6mIFs9eb2(omR?p3v=`jY&Rmjust%a_yI4d6iiv(;>XG= zq^au5%Z@!mo1cyiwG7Lv27XKM0|tjQ_5JJTLN=)=x{474=Y)-ZcAT~q03+R#XrY0D z%rhtI@&%7|+G9hS<m?wyam>3@_O(gC@ET+s*7x-m zoGbOYiMdnP^Ox$G?)y_pvyJ3oPq$a+%xqRsXmLf8k|+Qe3tZQHCZti;yM{PN_Lgd+ zW->b9drr( zDvqQ$;dMVUCnV8H`u6#OkhEZQXnP zNc-s_i`v;*5QVbB@;XqpVM zZX54avqz!x=Hx=qnf`aLd~MHV4NqNlIbcXAhM>3)S=>*YJrO5!QlW?ZPmp6R%>u$H zb|=duTc)P#N`56v4Xp!ldsQSa1a~@7$_lUN2($93!a+lWyZz{}Y1=T;e!g()Dn%fU zbro*3uOINs-SKY31ED#socXY?8?A{aW^SenYwV&nuq1%?Kn1FQovQ-EJHsiy9 z(TBqaOS=ok+#?P#vf^yB|9;%Szb|EIX2yr4lU=QTcrw|yhLjWBbLZrH% zGKjKu3G_^CUQ_csnIv4PHYp&_#lfAmou-$|XF6AEC8!FAi3URCH+(zKKkm$X4cs~T zYJ}Jd%-RlBGZ#|l4Hpbus{gpx_LLScFD~BZ@cF!L1Vh+G zj)=SWz!7!HVEEz(7O-5N3?qI2TM29O*f=8w`Zy1+WmQg(9izE4&iK)Mwr=*6kmnS$ zUt(dfG*Rl-;MMp(L)S5jHz87{6`ko2-s{oH$8R~(#*#;Dv$wQ4#tc5oNPck|pls65 zEwm-n1v!pjzoA8a)7c0UEJ^6%fZ}6fs!$uxFRA}VJDQTd^X#=`-VUO@?NDb$WYncs zt|zlO>OF~xhvGlFV5DD%kDxgwS6+R3$oIf2$~!3#Mr5O*ym?I?E3jrG`KD(KwHesz z5qwCN{-F!s^kZv6x~S*E6b=q`JVz9(V7}RJB`Gz@H}zXP0`ZZlyB?Rhu`0Xn*+yl< zsZCPHWWp>94)gU3VzJRuUf<3dgKoeHH_PYe(tANQcb_{Cexu!)uHUN;_Dz^c?_1rW zm;+as<+cBClu||BE#$Y*ZoMRLxks8V291X_p&%?FKQTCDCJ#*p=G-fV`NbIrhz5H$ z#$)^FR%CZMIS;n$1njHQ-zQ~tPwZ@9&-+3Uz%E=%v3n8CKfh^5hJ7@;q9|anVB1%?Lwa7 zO6@H+GF`6v^e4=`FpdGd?urH=BK`Oh0GP;bYH_lTwE*Xn_1t-Nwi7BPPC}*0RDQXV z)`(K_Dyz*(xFx)#n2!~I($R*km^pU~uH%cDm7`qY(HC>7F^3@w(9w+{3lYc6qf8R#r*rJLZEk zQ&@?h`EJ7D6;1f1yH^FRZsWmmLns-10!Bpoz64B+^N=wOO0Wrw5_Bcvek683bEk{i zW1JSnX!9G5tYqrQv5D4kdHv$xHhX`>S@M=T=2*7|P(H4LK~+8Ann+G8{v;8)`Fi(S zTQZQ-Y4g-C5iHMnrenriM_ z5&yGprix{a+cau)mxClBJr@0r}-e;)Ss?|t2d zYJ$9EQUzw;M_3J%*QS0REcjP3L*xH-NjSj0@f#zIb$sFi0)&>tbv{old*<%#uOi2T zS5P$8g16n9ua1O*vhK}K>AbV0M}l~-pGc_YZ**n^VAHUSotO?wg%J`1uc|g^Ut>kr z-Oij4enS7hn1hJHQ182xmHqG_BD$HX5w`A3zMWd$g^}hVwTBC)0|Vlh|M=3cV!!Yu zBcCT(+ru1+)0$uLcO6TNIzA>dWWm0pPWv)%e}B`zkd(BKErLWQqYkm7#?7cZGnhkA{< zkm8xw96A@5dU!t=dWK3`^361V)z+LE0IA{XV*7tau^RM zNO1_uQQ2Oqsz@rncbwh2uv3p~qLp+TR>kf8Sd@_qr}sRgu5NR$X!EY^$^YWE!vCt> z5$&%Re$v}pYJK*izl`5!P-K-_F}#UFK)~*x$PShNKWFgs$h!^n;po$9OCV#HQ$j9m zu`Y86?lrPhx%YA=qP3uxvtD-xqgD9zqQ2nz*aLYc>rWyba8j=T>iPiMrjY-k`pD#e-CDrW%W(H;-N)E3-Faqs7|E%I*~j2#7;FF|D5QdtNB@)627J zu6DfwQJ_`m0G|RU=H`ZUyn+~TtNuS!h5v8X$KM-NsJDjLKgL;lu1!vtSXP@Gusk!F?*_M zwADQFoR&R6dH%jxnk2TVF7}vCeEu}=PD1-@Jg2})t=%+!9dpWwAGN8+!uD@E4QVq_!VP?^V|u*4Dod1V zU<)5Tq^Ev+=cpLEhg!UvW;eIlW^`6HHz?2KwC;O;@WjoT+n%O!f8J^VZ$3A}P|nSX zP4fA}zZD1xFY@h$)k|x^WE_%)N9~Wjf0nwYzmVqWKp77-|pFG?0-FhneTPQ zS)9w7P~%LmhUfJHt1PLEODkl=qLh#*4*sm@iR*0NzNSF)kr%aw2By7m-u7tJ;0TpR zn?q)IS9FhGL|HgdrI&@fW1oSuSKO?EagOO==;EommU>=S+XemeIfHjY@?09!0}Krh z91~?xli0cOjVW~kTaZo?vP~)Ji-e@1>6?N6{%4=C*HHkCMF@=VJAPR$si-BzNlO_F z?g;|RQ)A@oAi8NiFTd8DvB(@wTjG4ybO^k88C}Y)nL$^gQWZSeP-S*mrr$GPur7NV$g}Q26aU}=R`AVwyHb@(tZ5B}h7V)%DABNa zO(OYvfDAr(t}Xd zoW3xnuM|Yuqi`%QPsFI>JISj|skgG`GEA&OXC>7Tvnxl>xXr|=hAowW`g#kIk~yY% zs?%R@!Z(*imhUdhy+6F6g5TU&w~rj1&yOfVhMw%>8I&78%gQ?v%o$i;h3VA=s@Raf z;UmXu+({5@_?UAh*(198~yKZUXtlLmADq7Uz4}brihHlJ&jQ9+N+hHXZc{TdC+j_LtBFd^G%zY{c0?z zCInkKxBBwRJN6mlK(~UCsaA=bQln38f`cIoKOlgdQZxo7rZZ5 zp~nJb|CVFK{QO-%W4%e$3rTE@i^eQU3~uLs<-9J*=0JMDrM!?#i`QU>*7FsC9-WYI z_bNW@L5arTQu4+v`axz0*5bdFxJ9uaWmu%&hh8gU`Q`s*?FcqU(8TQk_mlUucQ9%H z&dXd(5)7qi6!`2bUG%e%5S72`-H#Ok@x-!6=(K~NA{z+23DqmEcxD8LyMZuZ&XU$LAFEp#Dm1=f|LeR)j zpG~my4|S-|CdlSun+E7_*PE()>5HWiUD$GsWOcC-Qe=xp8V7G)&%pHoCL`a(g3@cQ zO0|{YO_FPi3MxcgE-vvDZplbHIDYjoMYW;#7ag4&I+y-H5&go-sLFn*asa!@@;i-f zTrvlkkU;Ja6fxZcNdH)LVR|j!$0h-%v*G~Uy2wXlQP>ja&V_swad9oUvL-A_6H{bt zJHteAZdBP_;(RLNizRd*ub}s*fSDM47fGD3ZX|fNEv-U#Lr@^!EZjWfZSnK7oiM>q zi*;Ib@lm-^P3KwANf7mB{KR(6qz#ZpZPcog54<eiH zyzS$l#uOk^r!r$T%_5M`T9E3IKq{y*G!ES5M89P_mMFpRhHkEzsgH#Y%55 zd>KT7x$;AbR2VE}$Q#>Oe(MQZom&X0y;$s2UZ^If@*+3bvI3N!Gbh*ADMB-ctJswZ z;2TnV1!HBHURI>W!f?I&yf2bU%=B+0qaCG1d*Wk&Kzbi?y)o677D)s3Ki11I-dR8Azl?Y!v#G)hbZz;RcY^Faxq2WtL|PO?M9X<0 zn3CBqw>!HExu0&2`a1*EUp4DLP6^z*h`%#ouF&rH9qY~4 zrcnxlO8BRKo{VMpt(1Od#l6b@>ScroOH}TvE2wr9kDmyL}68wbh@WT~W zZwxXq5lB2&)54mv!~}84>g8)rTncq2`L^ng%u{WUx;FTrsh}CDW`v*a0Uh;kNH@qE zH*Pc9gHQNVZPt2s2{RK#`TWo~tO!(0zFlRar;t@k0bc!iJ`xD*taY^`SZ|$n)CzQp)6pem{!J;x2RH4mojj z5?6`iv1gQC^w{%WE23sG3f*#KAPX-2=FUgjaVEOdA2%*-IOSn*P)rG+6xsj>MuVwQ z;Glk|Rv!(wp;5tAhF!Qeje%6rA`sA_O_N56_r4`R2`d+NhWmyC+@VcTmCbI6NL1@L z6=eo^kkz?VwLm>&*14_LaTYv(e#L#Eo3jc8$uOvVh*P^8U}N5vr&#bjE|}a1luK}F z#Xc1av6R+-w7QLD0YE%T8}-fF4%Ha5yZg+0^=rBGGY_Bc^KPNf+|P+*@)R!U+~ix( zlO+eJlJ;M%CAeWR`6Y@nE(F79)(HM1Zt@M#tPv7W4^VwTWl!jacZ~I)`LzGB5EM3+ z@F;;!zdAZMi*u~u0jj_BY^=XDyZe1`PS)A&b=UimjopG9W*j_g8R#vQ@$Hrujx3fMZ`@V^ z%&Y0} z?|U9n=NG<`PgJl4d{BRk^k@X3alBse*2c4bvu@aAAcX{~iX6ffC>&HhpaG;w_Zg{q( zIJ6_QG{@BBtQ!&!Z)$*-kTjA)2txkGfcf_>5sF>}(+kV57l0{#nF1*6>7A40=3k?lS}dI9ne#dL9x-*}NCX3_KqqECNtB3qNIj|2FU{5x!FFMhP> ztm=w<8PAFzV5~42RzWJRNAM>5P+_^_h=8-@y};JynV#TMttCp~R53?xbymEZ@qT?E zrrks^z6~?b#np!@XC!xSZp^+D(oHt6cW1F+tf=E*ZOE8c?nlY_vvoC_CzC<``IsYhLOL~ z5Ys%Lh&Y3TW1kQ|kv12oYufPAVPR7>he8tjT7xE7W30lHyUmZQ<3z>YA9PbVW0&_l zjYdhgUPX+2 z*&`bVNn>hD(Z1=wmG6FgM4%gal#Lpi7CY02|M2-XE_$GB1xH2l*cLCk3d;ICRS~<8 z0jB5`1oVlHLCxEQ8Mrp~KAh;xV*<-}29micW*0JUWE8|eAWy|~tDorbY}Khxrg#Kh zxS|j{OA7=K!OwdPUXmqWo5Gw4!T<0jWfMuaeNR~zf{*hxk_MZX7{QHSNbt>t5D+Ey z>~nZ?E56(=&pqIkUv=F*oNlVBi>q=&CK&cg{aYrMTnq7)hV@?0lFlo8S82;yyk`T3 z4Ra4FU*Bs};zuplj9c%b`)Ig}Cq<$l0&cvWsfix;NuYwU*x2?&U{C*2D4`R}o|jBy z6DexQM0aBioTBt@hR$J{^f(~5L-Czhk881FP;qIdjCVgw7Y4n+YtNV;49#2)^HWST zoO+@A-<;j1~D&;zhw2>iL+F zfkc5!146h-#CD^hfI7-64RchXwaNXG1nePn-6r8ER?vZ${vYwKovf$}tDg#E$xOg9 z6K%&5j0I(?2Y6;Th5n_LDl;6kkiU<$#q|8Izt$mKNh#Ekd21HTOl~%u2F=^MHH8=e)E-^|rcLbuv^^Em-En>FmQ!~sq^=pOJ%|*> z#0cAO5nJ^P&#nxTvZpP8-1dj$%dj;RRpQTnL;~`7ZmNPM-yM2ZxE z`+aL_-34+;8!iY`C~N-OTjyQRbt%odi`T!^XM&37bB|)5N%Zy&!aOp)KrJBjCk*{{ z>?2<~Mtw_rlP!3>*te zQ!O{I>LJ4!;KaKp6;G$P4Xi1;6d*o$nl;OQQfswCj zT{qL(c(d@hC_%zRs@ECIOW6h0v+NC-Vm+SVp2(WI3MalfZ#a9{{nr0?OU13-H+9Mpo*^gxgY>1Cy}XafSPGJdgO=9rzKe4kQp zz6!%kU*0z7iO*=s5X{KbzTo8Yb`7qG+~nf4E_>ieJ^r>XH^&TwIFrGm%&&Hbig!eD z0fvWr7K|~c`Q0T0^e+plzI?3jyM`8Ih{7^XK{DBy(N_kst=OLKr1`ptao22V>k_!G zOnpl>A!%zX!LvFY(0MB^d7TjL;O5J^ylVW?%HVh6=JTi|GuPm6G;#Z(?VRh;=&`N1 zc0P)x4db5a>}=_F*ylVd=HJI(A5Al^>~HdlW)sfthpK~TZC@hBRq=ZE#kMy&_I{Pe zWeK$6oVnF05>#%YCucTHEIz`y4jET1tt!MR%E>91(cP7KPPHDHG_NZ&?J$xQNU-_R ze?9WJmEdsw7i!5WHPi4&Q)t20&aB$uYw-dL0a7Kv!a*UStK3bZfEeC#^~&?Q&m!ZE zYPZJPYIXJs#`7)DR{2HeA6WP1o+8ldQjQxCX#syr_)aT9HAYb z8QzZ=xUKAm`cXg(Gcy-48l@S{KA|dxdW=~l_DBZ*gj86XOlD}c@wuv?2k{#|ad2zv z`CNMj~k2+svU0cZ!*iLx$Y$&n=GIN&&i6Mj!=e8C1a^E!H-H{(-h203(!Vdk4- z95@V?z?IG9634VKyuY&7Su>B?&`<5-Vv5(Id|u6kXId?{fTv{LQ=o;DwhB_(8Pf#i z?yPE}of&D~F*|*E4G0g+aLN^C|J?3g!Pxm#?WsV`RvB>5W#43oGnOkV^2M~#rboS} z)4LX-*N7Vui!5w{e)`TxVIEDd2sZuGwZ??`-m{sA+*L@Q$B)J1#Vvj%e)7{GL zYBMzo-&0}WzJ|w*h(n2cPDDP&t*sn8u6~EU)SrU$sfM5H)EP}K7adi_raV7Z9Y{Xt z!ET`5L$rmsCcREOLx0dm4qAP&ZRZ=5rX|@T|RbP29hwNk6eia4W+_?LEaR%_Qnxk&!>WdT9Ed2>nYPgvPo z`*Hmi1?^PTlR_}Gey<88!L2D5OnT%5c1{=*ztl#WzQ|6Ky;Ky7$GO;@?!f%OOU?N~ z1A8sq4}*Fub0*Kb7}+0j`^E?CACPaZqg0B5uzTFHkHS76-Yxvx}%fLi+ut3@d zl5_Z8wuQ4bmM6p_|EWj<0arW`_AQ%lQk&WC4fY#*5z?$DP)C+2#oXLE!_xA3$0tV_ zx6NnVy6j#e3{@778`$Fns7hsY3|WU$W7zbtvj(mU*Gm(2SX5;puBa)^iPaOq%69`p zq++=Rb*4nskBP`@9OE!Ih$Z$N@S*OoCN)aWvvK9EUHn0c+je*rhJj9>$aepuV>PQi zyTvbn^h_$h$M2w(-`xNK`uVC)43^4PFy`hPFhouV@Sx{Deu+jHT-6Q}H%~N{x19Vd z{irW5=#t)*wa_AdxY$=4Th1#NB$Rl)fq zTKi0ZGEbM4^w@>*Q1FsdGMR+S-lha+rhDarNt%>K=04&p?hp@ZVUhDcVh;8zk6J_I zP)BW&e7uBrwI^cOX{~a@WmRk)$^}V=CA+fE-C|M3qHdP~`b?TZ(8Rbx3O>8*EGk8Q zsB)8P0_wegZCyn-|B*)@cXp0x9I7bfff=c5i$gpD1<4{f`t|GSnd5J3CXX}iCQwIS zkq<;Lmrz2$di8B&J+5suG_0Ld&alOK!-E>DjLGKwczJkJv>*NyXMepjbKEnf3=jI? zb~H5FV;Fh(NA&8`+j7nY)T`p>mleC-MV^Q~-U;BbS`L%lyQvKI4^q(!n;T?szK$(8 zO?4fk6e`>+#G5a5BZwO$AGzz=mCMgOR3&eQr@sR|0| z4G*fKEyIUXPydjWOm>MwlHCLu%!Bx=87uawH>?vS$yvph|4>$AL5nwt zB9w5uPkSR109TjwO2F8|J~~UyC(cl zcYp640I|6IhGpddatM5NIB}8RCY=-fv*=j|FHKCRD9 z_tgN+bE%Vy$dg2gmjS;H2!GLe+uV#T(T@I^{7=#S*=+voGXFKy1qGN63*_kO1pv9Z z1yCA`8{drE|JB?DVSK>eT(9+Y?6YEUFT7@{CIw;_-|r+_&R4(k3p_Bx7FNjW^H`XM z2C~x|Qde4ou3KI$DJ#enO8d$or-O{lb=17Us3pTlEL8_*%Y81F#r<5&Mivt~I2cU+NYPfIGX0)KG#7I@pYzq-n%Pzo>+^=~A* zSC=BA1s7^_z|-VFhYcGnV$%cR%YnrX&#R#w<(oVmhm@>YQc0UhaYr8RzpRg+tWoyq zc^_F2_mb4UwaUrTrB;XtxXWvVW_FcEn0{%696XQG%L5A?D66McDAT!6e)j^>SGx3S z@AlItzM)XErYi1+@Y!~|sCLd=NsKM@h>Cm69RT|bgiPw?e}0NEOi+5mAP^8fBxD9; z1qmaW^(x}FBn+oZ3`(-#`XAORH5+1em_B==Ik@?Yzh$hiG$3)^ zR$-zw-pcz@BCYU9)S+#zt=w;WgQ@?0J!xUq>(m^A2E7nOKu+z0#G?3Rr;UllL>(DR zw%=%;{rSCTsSB~IHH~Xk-u60CoVoI;-%7y?#Of`LFRgC-7P_J5`P$T7Dkpc-hTD`B z^NmjPTXWpJPY_`Yc?SObR?H^YfTs_Ch-Gh~xG<=(P~g?G1T_t(^7(l z3M)jvJrY0f^pdfnIQpv#5VE zHUDe;i~N-*H1wymZ${3N^B4CP@>r89hkN4O&5S8O75y@&jS`LHGf z&nm2HpIv)jyHi+-c+WRnN3WF+BZ@0Dqh}v>Z?iHjjA<}fvO0-**^vtwNTk2DzUR?8|<9+_@WG>CQ=!`Io44K?WU2~8OXy$#OD8iU1DdB;=aCGcS9)C`Q zknMkC@2#WaYPNk*5(tpsK^u4X#x(@jU}>BH4c%DdG!{sL1(zVf6Wpb7Xb8dGT@&01 z5Fkh(ud}~z@4LTq&c5Tkci$a%+%YzP(5tIzRn3}fuIiFGf4^oz?5puF_9wmjp{rYs zN0U0!XL59fh+EO{-O^c!8Y*5os@OesaVZbMZf>w)E*ocWzF9jWeF~3eoo!69f61r= z*E=eU35CbGmxPdB9Y+2o55g<(+~Uy2pBx7=+c@x*He3AkU1 zHKi*NF!*lXv^Pqd-J;f5uDXhGD8AWb-gNuZU=&w3LrSrbJduFyfinX?e;dt`r1ncM z5{fcs-FiAMZ9Dz4IqCunNBMm3?7}dSMiC}Uw=GTKc1&`tFAT6(hP5u&Sj&pU?bel` z{!Tde`SrC&qEXX>j1%Gc5z1_Kp;6q|o6TL^3z0BZJiwUz&EzikEpO1scJ=(D2DgTs zVp^57+8CW6)2P7mhvt^H4)?@9g%FVhk0@LtVFaF0yIO^v+v*%@ha6V@bMB+yK!Dwh zh%4m81-;+3V^Z=JaU@20!C{`{l620$I_vyDla4PcyQqFsc}@5ST!txqnCm8We@EAS z{JW2dtVhEe&;SSfUuf?Y@IfZ~!nf_Wf>>NU=V^Ce?^4l|lCOtfxxCVNGcf26X={`% zc(Q5pspiEJ-6XwR^%tYcBZA#HaU?LYVDrEmol2Cb2$nVl>M_QnuvFXj;?`lpk(pOuhR%1JYBoDxQb7A zxdTc4oV{;s5g~$5rjF@2VAh4fUPbUME?mR+%D=$0GUKP)6x;kV@hf&sLp~PE^Jz^N z3vafQoTMfPZrmtlE}ucB&zwfM$jVVhPLmQ}f=?g6!tc7+Us#Yj?{ugqowZq`l!_?Rf**$k_V+_iQZJED-t<#sux` zedilrq$K_M?Y-X|(LCu4bU`rG2JZT;HA-x$p`|Dpqu?%KUTwi0fTb3$aGI6S?O#k z4aJ5l`c`edc+D|nj<(pLRAz-;CgWd+HT=t*KqOy$pN_?^TnWH_O&E}0)r&(F^G_{v`RCYhXNbQLp>fj|R^VZ8?cvO;m0S-aM6JT9X`Tu-Yb%LQNX)7 z>M%-ix~pI;scNM~gg;B~26<(e@&Z2NWlj5x>PKb*Vu~fk?&L>K(RtR``bQ*eGpaOb zKJB4>bTTBgD_y}lIwd_QF2O#i&A@*RdOYj=gv6m+nc|++magc#@3?M#W8LVTztDmi ztg{R^Tsh7t&f#uymJxePxi-zEfHY)m83jYZnDq){B@XFa#$3TeZrZZmT0>(cw}V*& zx%<5<(F3EAC8Q_wlCzLfEpV}$OU3s^@h2?71I1Bs4mb!xfEd}w!=k-a?z>a*c<|v= zEX7<)2sBM9>F4`5!DWg}-9khdbywSnMYC@dk-xXXFwE0#dIoIJ0faxPI3NcN#3J(QU+@3`!$8iFYgs||eUgx>*FtfHOz>Z5&zug)#dnsyzQpb$ z7QWojVHL_?c)K@T8T^O{m^#$B$=Trx*1fFIBiF6h^4ikpcObB$*sz+yD?^_4r(D=d znR*i=Pt0<2Z4hT)*HIXyRr{Xh*A?aI#YCt6n0GRvPqU}m%q5>&Po`pY^gPHG5LsnK z#r4<0P@HmR1?B-CbdNIj>Yvjc%f!&~TRBX<|5?vT5R&0{F^tnozqdqZ2S;(#%8Myjqz+vVE7>2IILX#3Ooqm(m_Naa5%D+CTP>|!{-MPITgF+7 zcZz*E6fl31lm+BbX1n)Hqc8a3dK@!)=o3~5Pa#PTCjOenL6^kN!Qn!kv+iPRrL0M| zmzJH^)g>#B_&;_LrLb1;IUO=BCy2?&G*)C9x?b8?M2O#OibGc(^1~n`C|jsMg_*U! zFj10wcpOOQ?a$^+Gx5%1Z}#$SbOwD9{m+3#t1TK1R?G2o$d;u2w~traK2mR$Y%nE# zW~ifsT1D*EUb`lslgySRnq;*_rrClM(^ZB(TFq)Xmm%9RDxqG9HhWn;@0`K&(zq5@mzFvJ@-=??~?H8$Fp1K z;JpYsubJ$Qd3N4u2H)D|fXX0r05rVM=P3vRrO{Z*i37~vLdLN&WA9C0`uR&^O2j;k z5fiKn9TFaZ2RkIj=+?%E8Za|a?H5aSb*`8z6IB1x56pl2^1HO1DfS8c6F@rLeq=*j zEl*SU9>bijGPRu0WRnwQqgD~{s`O(u0nKEH{RfkCe6``Su>D@hkgsI8krd zqw(b4+$zlpAZzwfG1Gv-vsbz%H(f~n$#TjRs&6!scA_|<-!Ph~V}spC>$l<>*<37=MXS}g&<@KCy! zhbiKzXwsGINgQ^_qLy@2P(RjkgHGo}E1w>lxibkMjG;!CV$ax?L#jsQv=3~$9IU46 zU#-fliPUwHRFEFkzWrjuXSVyccLP(5U*1WaE&Zk7VFm^xMG);7AjMF`7K@7i;%IGz z7J4-Jn@VgI1zfaM{vq@&;DmrErg|n9K_{C^2#Zi<4sVeB<{#g^cjEu88*5G*<_s}RA^GhV_%aWXOKbk;8L@ji+FE{x@Q&XvUZg>Mbw%$+&>AO>wbDl&^v(Kr(^#lB(Bu3M-u&+?fEx{F8_#U~IKSJsf=Sawy(~w;-mmK z@+kMbp*O$pyA7}=zzi5eaVuw|chJ?!uJ8OVE{dv_HoM{K?N5Jffz`+blqgS*Lk@qp zCdJ_=e}}?E!Zjbe`ZD%rRsC;mOY2_zE{kXMRLR$*?+xP#F{brTmZ$eY}=Akt7yVuZ* zwHQa#{UPR`xj{07e>VMxC~yAS3;y#z6)}29@Zp?(^tU>D zQ5rxA^ji-3zjgHwrK6<(YZZUC5b<{np!)dzE>FHww)Srt`0$5@^Z%w{Xb1Tp&*4vn zqq_22;n?P=r?mf_-uo{)Wvux_NXCCWroU7o7yIb2w zp50mgRyOV>%6L!@ke2Yb&Cos7mtwg2qt!ob1CzE`^yyw2$VZVAd28b=HNi*F*$E_!e^@ZykeLXGP$AZLW`vhDl4nYAyU+J0Ma zPj5))SGF};^J1jJLS|!iWj$U71&dfq&>-nBGw^-f(Ah2CC zb4mQpQzDS#vuroZ@4{W#)`~-V%R4^<*X}ILS=$7ov!~R6? z`VBvB@OQO^4x&gB;jXtXk@lLE_Dj99R4Mg#km9*Oqos9_%twdqRdl{%)KcXj=-v6k zx~`l1{OH#HPfee6&(#LStYjeRq0?pFZqzE{;lZX%9^ z_b#d~Uc-&lsj2Cp@x{7AEr``3^e8R=%04RFLh%(xdVjClS>jqYwSJG`oMxJjDI_HY zFH2A${If!sSxEn-tW`W|!~t@nwnyxu7&5wL2O3f|Vf3M3L}*2Gmxq0Y;)oR5vSDsw z5cZ8ZJ-*GtIAZ=OX3xqyi9(QI4Jck~?4BQzPaCkv|72htT1K|JQb(<2q1S?F93V}r zN(q;5sYlPZ*v_Nv%1`D=-5~#B$)_Tb6cpY2LRw!cLm5O4W6nH~DHzYNTj<=IVl-k!6G$OsVN$jRsk93`$ z$;A%;I;2!t=(nis%)}E8K6a*Y#(yja+aPyK{NWV7c1RP|aq}T)KWF#^!IPMBk(8$7 z{;rK<29C%y)SIj2n|Py!c(xaNJTk9!GCDNr9@%oA%Is_^b-vCxC2u0&FkD=rN1Zoh z0O}kHUKa$8J~*s;`uSd8sPXX#;isAN3~{7s=JN8-W-ba7$8RF7PZJ9;|FIK;IUcY` zuc0-xQ^_<1XyTIG*$KPU_*u^kL4}W8X{5GeZlS_AxtI0C4Hrgki`afzwF6};0)G&= zsTws%;1sZpV|qzoZa-Ptp~^&e|LEj_Hxi^5Kj$g;;8a4rj$Y&8IgO{BUh+^K$p3`` zDZeLhz!&&2ll7HFeML~zvPvg$auMU?UWGN%i$0T0y9y~%BmkBJ-1ih9vONm4 zJtvmjEx|R~<9Smmfj#CapU_4^*+1>rTTmpxr-#HW+Yy(WR#03BwDsiur2o)2GX$wk zzXzA)#E1Kqfq6vf7w`+W@XK~sXGfe*KkoP>Ll5OBM;uc;$>j(o0+j-IgNn}CHlH{Z z!WQfUpPZvhI+S2fdaAs!E5RS%UQzi0{5S>78@X=ASDt<<2=kI-yHnt!MR~-6_dsrw z`T&_c%YZ4YJ;-Do=E*t!H%|PwSrDfw(wXb*PQ)0PZfa8~YGg-R(V@&@v;+@k;=Ksc zF@FB(RF?etV@OREb)5FXo?MJs^G8{om|;)3Jb&e;vuVtUb7HI{3O+-*ywB;!%te52p<{eT0EUAlx{R;f)56vAX7BnYD+Ox6mgZFgHv}) z9)37=g{-Lv-fBpCE(IC-zW1>!dHCgVT#!5c8#e7k<=RY)lGGzhpnc#GKs*T9ia$-R zvuRvm03eWFjS9@$1IW2`BZv(M_mohZP)X`lI{)elfnbYQv0Sk4uRuq#$t@`S8*8-p2eh+m)8MQAz-ZT zb`!O6BTYCDwU061UCx;> zhK5EfSoA=9Xn6Piqjt-!)uR=P=Bs;8i(VuVzRsv~&YIe;trGngwSK_rt!E zgO5D-?xZ|i?Y^<+Sw0W&7w7HhH#+|i2hY7$Hl?LhR{g8 zscR&Ikj7%n)K3{oYHL0IVV=~3f$s|ql97YlF+-A(7F~EB(IWXHfj~I-vY672(_G%r zH$#r^h7pQ{)lE@OoHd4hhLk6%Lax9Q4i>l73)V7yV%SE93B9+#9R)hEf_iW+`}_09(BD1>>dZ+hI7V6-unLO zlBA64+km1^CO!%nq^U1Sd;ktcF;i!J`YY2%&o`x_1Z#v|uM4>=JT*~V4x>|sz~P<@ zrr=#i7qH!W!@zS+t(hp5kd>|>8{XY7&gEs@LvR`@cR#7e0hgJ@nGliY!N_E%oFEop z0_L~nj??Ma4&_dGQsds9Lp`RR1A+H%SH zDIS&ePKS<=h_Q&J6XbG4XA1DT2_hL%>&Yb3vjt&KO88u_*i_q1sU`gd zXp2~R6h2#P40;S1pYH{MSQCh^L+#GS7hbAsqCz^|`h=SgO%fm564@ay5h7W6u|sRd zZD1GO)Q(vysOR(XGf(kH{Wea4GqdDFOpEnO(s5}Z19!i zKr~hDgcFEPokLPySaHUZN7p{K*Vy4X&`z0el)x4hm=V_+F2VLbFpEz&fXdnNJY1f? z{J6^^u0~T46!KCd>S#xNP}g?j^y5B{YF-EyXG)WYzY&I{cYhDe!-Fd6;RHAhn zKfOy8OG3n!Z}*qdaMNniHcQ}tx7vEe^zrNEAnt8UpoaIAp%G^HQ!hHs zN65LW51}zZFSSH0lRhZR9Tc^**VqS@AB*Av6kQ5&gSzb=ZxM@`CDO_>gjd077Ez!K zWhqE>vNQ>NVZ;T+WzENZNYu9t55fcOs?~y+piEQ!>kA3If^HO-kOa<4e-26>nmCWN z4CD(X55i6w0pep1>PS*>dg= z$=}_R!XI4<>a*b(9`Pazn4+Y$V=0{pG;8x z8dyEe#r+a6X0X(~6emf8ju%=Btl#pW?U3@Rs*!lKv?Ze)8ASiFI65=>QUd>U?U48w zDmR3f=|YL&)w^Ey9k85ix+C<1{2(%QZ zOHk5wi=oDWxW@KqxMapl&rR9NEJKEM3MglvNZfAu8XBSUx#;}^>^=_UHKXt@~ znsPfovV#0|C6aMS9BUJ^9!nX<>i-F8d+ob$tee!1T7*lUy;o}`>-|X?``S)?g}76` ze`~kl6(3~z+GV+**+pwAihpI3K+Cw2JAg{qt(85zNo*&lH`*oY#dI)LhqDC)R=$4( zIo&I_Pt1X};Nu^P?JV}rAk-MGV#=y|Tpx;*bqT~Z)?ANvr)u&jG|NZze0HH0W{4{3 zIR?>3DXxW_&4?|hPZ8*}g2o%+Jg|xxyI`iJ-HMD>5*@Q{{W?-Fwm|XyZu*{6nS!rf z%$-e(29pf~H5A?OK|Qg&WJy{j$nzYgxLhFHJuk+P`87s=u|`SX3KY27h5@%O|66Pc zzk4qjeZ&OnEc^O4PR+2H0O5ld8Tpn=*H@kaoIMo8QQZG(O2#u5{LrBt(lULZ1e6mM z6wirIdEFI07aVd)h?I#LZJ%d-Jh(Nl`>Jc@ZTTepj^I#l^ZU+wuRCDk%hu+EUuYQX zOV5gr#=-3$)+Nlph?AqXG$^+hRd0Wx4f|0X-+Gx`u87jTLt%^@$xs@b{BS|d0!Hd; zoRDpYWUU#JMuo-o4(-Bcyd#TchZPkhv5_)N6=ik=Z+h3gUfp~PPyWWIC3|=!EV^It zz`m?8t))ipzQpA9s?$n|?j(Q6r?M%WKo0jWv@#HnGI6jS z@pW<9MEZKT?cF`oEB^7U<3lYEXmcyJkU{Z(9+3{CJFLd-3wopQV4;tnAFT~j4xz-n zAW6Ty$}npNz&ykjjmI3qT@L#@28~?LP!!rx(1`I+FLg8hwy5^&-ijiz=^=S1&HU~M zhrZJpM)TwQ;ED)NX_r8+@%iLbujE9+pmZR6rL?mshMuE8p$Byt0d0}Q^ZpK- zx;S|1>;4Z4RO#I$#z^{bG9@xmCv0)Uz8N3D2L-Y-hH@##Yf%y!9=%FjCtpDVSzf1F zL9yenLHAP28GHy0K}d5g6zI?<3A6D|pu8e>?_8g_l6DPpCn#!mjd&dMopp|-Tp2lI z;+dSM`J*H5Ye8HM;dOtrRMN*Lbs;TbVKCpO{<%ILt~z%-qf{(FVI|=3YaLmQ;1=BS z$Ux2Bak8UxE+0=*>N%XZ$3V3hY%XSl=V6l?nxk{%?foHAP=T2Jn-xuS4UbNy242{b z-{a6iCW_dYaCu#GnOd#uoxF~&GH99@`g2Cgl6%&?f^>U3exYs3RdzC57-8Ps=Mfsm66}8ZtV`R8gb{N* z74r^XT9VLR%8~iHu^Ow>a#FKM=u%(eZUFBE5zZ&15k`tV1}s+)f0RnnHc%+#GWxO_ z{}oPTU!MrI2Y5p+sJr7?cbp@|&RayB$Fa^2`Z2`Vdj~<>mx6dg3w=cEmiMPa;#5%B zf%w4j7|{4U7FyR6zET|ey}3F6L<(+Gf;*60%1PB*i)#E83ZY2_Y8)z@D(4$W4JVy;C0Rh$zjY(ov zDbA`9hc;>&6;vT^j9&lnF8Hr6L}D-IF|Flt{^D_i-OxV3204;jtxj|#IXW0!2ozs; zq?WMV5$Og)WBkoBu_}vk%Z8VN%6Fo2$5Ry*ib2}`pllY-J{4`r07a~jzBRUYiwVHp z68!F{D*hUv1b)hp|Lgat`xymL zrig8WA#M-p<01Eb|I*LKIy3b~8)iaa_W?0xGM;S(gu*?@pD-@~Kc@CGg<~<~_)0wT ztA+YB0zYoEO87^&k9p=k)e)JFdoddb8pmv~SA(@H>dyBVxviGqfxAYQyh|c|Ng-(C zV~KuZyCeQf9%hWDTL6j2w!=C4xqA5`%R(xNxk2mOv*w(8>~+1hA0^GKY#QHECvg<; z7}?LOz9s5a5!l%kOmsVTCy3`vR0+(8Su$b;F-Tw!u!JY)P+HR`+n(82sT#CLCmNj_ zr>Ex1_i7wnGplI_QHf<$mejE~=4*D(FI(9Zg`|r_=L|Z2{BQdu{I%dh+wHEbhpZ}d zsly*&Cy)N{^Lxb@F3#n&QMAsUIanc&qdqtzwvn=w_uc}#moPP*Rw#5REM zbl9-4bBTPIc@)nq$fp|{9+Vz5&*yC^o`@A#Ri_-3yCGDr;=>c&9^UJwSCPVIj*&yZ z@61J5Q#M@tx&C^n;1GXH*QqBGATmcg$XW3D!U)~MkNZuPbn=rqnxQx@x2rO9mTW&K zzil>bhCqO$hSSi73BzmVxD=y0FU#?kQc3@kbv``{rXGX-*64E{B%Zmxn>u&F_4OO< zhZ;(YFI@PYXy`yN8sl62MGm#~rkN2)(o6YGHF0xHBKq((_5wChOElYj+dhr(Iiv9O zSbMuX6r$ayF6S$+XP@MXTHZxf0%zfV%nuR*${P4=!X{ScXf{X(nTyEsuSUS_xw6QS!`*J17z zU7&6-I5^Ie@0nreaBAp=?%JvkrMhKlZ<)eZKeP1N^K_-fif^nXpm<$@Q7}pukptgb zn9@~EQ=oy~kaBi$kyW<{ml!20r{2ZfQes2ZUg@wa{Nml8p0oM(R)9CTK2erwD%p1G zwo>2GsI`v*Ml40~r6ZKY98GfEVR3to!Z_VeE$etbMzM(PO*GgA;XS;=@#%WMr&~z~n3DzmjAF)eMn6p)^-4 zska9xS1f-P0f!73U7}Ei>`_3s^?5zCv-a~Xni=_J8pIF3H5%@r#9RKN6zj^ zJ&3BZvS^@g$S)Di2?O+LA;`w#m?3i---gidZM> zfejB7wxZ>-bg?+l6WWV=(7vWVts1+VRM3Ak2X8$v`xr)p@v%p~plqmUU7A8Z zvPdjwdREg&XF0d%wh#EVRF(#SrLz9oTO>>*eigoOO&{v9i`+XHK$|WYu80as&7}7i zhCQbu2;t>E2x?R{HPJLe?*=(hR^vU~BR=vcv`IrXLFh;Xdc2wwgzW!4v8se1uZ*ym z5PIgkeS(wEC;NiDw<~UA`l6SzXZy<4_@7~>eG1o&LZ1~KuT@L*vPVe5S=0np*RXW+ z@7o$R?j*6V554)K^(ZFS{4vZZl~d;}w)|TRWgxrJlyS}QTSc81Yr1$W+w8E$8g>N< zZ|x(saw;L*<*0~7l;ZTo)&5z7D%5%Se^KfGhXh-}&%+CSjAnfX#gHWT`y6~4$4@?^ zV7V0B;>ju&aB!V_+Y~upru1z%Xvc7{+!sx=b?70gk!%`ry#LcIU2fL> zrISG=D7#D$tOZ+m2`1EDMKK ze(6I+jBj(R?YjpkEXKc*s4lCDus4Sw^20Z+ON|k_>UhY{(LpKL%s%&@{d~4w zBM{_@-+Q=PT5ckQOy%w0-d(?bxAl0~-nCyw&}6f(JSEGUErD(jHlFd8CK8uL<`7e7 z>Eyby@WF&rSl)=ADJ=ZDb~8lA)_VwUC6o1T_%f2zi!P~M zK2}z8EGJ5`^6umUD-NOvyN;as-Bv=w!Lg?#sv|Gman|eH03%wogE|5Bs?Y6OfsBRO!(V&XM!% ztIrvifwCE%{}w#$ytv3 zsot5i0ZR#yg8--e4@WfPW6K1b28%r z{Zik>-1u@x26Y{&uYP)+mf=nEWru&CA_(OgkWlcGrZSAyxhFa~@CDxL%8l8!ccwV^ zA$e&-z~Pe6Y1tW+3IYeU=oLpTOYSQ6$g;8c8ht8ySNr3o!iZ4m^XRQKwP~}}Ffba_ z>kI1@;3m?%n@im%E$n)WjVHn=yCJFD+U*%laSfI*4jHF3m**1)-Rj9``)?5TM^;2D zN4I&;=C}`d8Y5ny*ypGmx<70#io>1FtsIkLa)zKiI67eCO#9W5aw`sNu}41EE|v7S z8$*-W^>6lNF{f1`G%nt2mF6(n=nFA6x#tShGbMHTB6;H=U&E(y4>yMT9-5%xI6yIi#P2SpA{9y|RI04Z4)}>4>P;7U6Y^ ziGCDpvYv)l+NE=(YVJ~Sby}wrmjw3QAzN3E!2EGy`%fYzHU@#(C6A>AxIW?PQu9Ks|Pf{X!|FJUrS3S7 z)J2_Ebj8YaN2J9qyL6k>Hhs^Plpo&-hg%SeYka1@kgTe)m28YR3eTH_k#U5$g|@Oq zj*jnhl{-`6`8vl|u-Hoi4eeOA=i&xaJWCOMHe89BX)XbhjfVMb9^<@s!XupV?trO; z^O>iPu&^D2_f#OJI%y+r0b+G9C@jqoO@ku!3y61S8o6O&n39oSk^jZH)eM|d*`1t> z`>>UZqM2e20l>MhMA>z*mZFiG?su9$-Q7~b`%}m`wWlWS1)Zax!7^#srT*0bqQmt$ z72;A?1iqytR2q~ndAE{>F`{_~ds!+VtN01!qgl5{htQwTxl}R_CaI8dSW;ya=ZLb9EVE?6qdvOT>CIs5BJ=M zAC6-UyQNA7!Me;)=e^BMRD8tt-%y9Z@X5#%50Y6ovQU5FfGHF`vJnLe9MN{ZRLfkS z+Iq-jOVs|M^Sg!t=vtr?9fNf~40Sf1B&qduD3BHcrud>jYw9>M(MJ9xfx}ABi8pYa z%FS;5XAuj(A-R{owp<M2?9ju2!*o`9bPR zW+qbG$}geCxTYE3doY>yh0!urUf`;WHMR3noXNC~ezIFV)mu^w?@FUDP3OjncQOZW z=}2`RZC+j7n3$2RQKZ^2f8QDHW)Ct-P{=m$UeO(Yuz8OabK1%zc$)HmzN_-jxt3!- zE4f{eie((J)5_*nqqRUu%AN0qVsqiQstO*#xJFCr;jZK`qwlTe26R8%Qwn3Tt#hNA zAH?~=1>Ox1J!elV{e0h?Hdug2AR)csEhK;v*+vQxOc?=0BRP}6M>j$g;l;WQgpISM zAT;vLdrHLp(nYP_<+!f>Ll%~s>0*%&MIx4E&5H)@dxjGpW&)*Y6MK^xmqg76RrFM8 z)I`c>utcDip~fDZvx|jg2SoM3-zsU$%$}pLt0z4S!iRr4SQBli?Hb}7Nft&lPI)s# zh|)tLU$Rr|hZmL%q=7_)GlkU84R+HBpe!W0%qO+HVmr>(5&b;}oAyhH&k7R>lKhDM zx;ls;>a1=5dTFQ|dLE%#Ry%Wq~`f*{s_1;b7Ib-Z9ZP zEZGuq8ec>B6t_S0WB}zKbi`Oh(i3Y;F4#qC$5>fdRgy3jz3x#O`qpR&-#I*VGBCMm z9PC&7JXILeBV781CrVSC$-WT7^U7j^x|S6kp44}d1cjM>FjLHAb<_MNKbgu6rw!2{ zQjX^${e|}W*;n3v?DT{^1`AF(^e$c#gdDw z3;Wt@ajF6a9yCwP#k$llnq3pS$s!6)@*}rjpw8{aMDJRTzw>I^XS`D&{O&k%s$@08 zzJU?O=pS|Sp!a8GwnR5V-44-|@yf8kWCyo+SOD~CylU8VSHs!{_-d_JZK@ijX!XA6 zE9ZhJt)tr(?)Bh}_={b}9o5BBhmDtb6t1=Pco4>jsc343YO*Ni0%8OBczBwmiQ?s< zmzQyP1u*T|V*U}R3E4WV!+$iS{xUPNw(e{k&XuD1)Aib^_L$JA<~``H#oKh_z* zE}ab&qmQx-WUz>#CqsFTj|VF@q7JWtTw9E)Z_N%8t_U@NtqHw>QO+bMUvsHvW))68 z=G!ETJfp>q!aKa0?5)jiY6)LA)?QiItBj?9CuX-M#)7c~yH~ zY}tuce-h5eJ1C5PfcKw!^Is$ZtftS58%m9`mGCZkhWm=!p0GsTq)zJ{^ zvX~Z2n^|_euJK~c^LlB`Eg_Otkgq@g`ORR7{bQ!jK|#QR z>@i?9#8CPU|`L3hz5+Hg^_S^I>{KBsQh2+3pw&RPciAfuHx-chW-St>k^} zl~_N2ThDPIqZo29aN;O4N>M`HNGf8h1TC?r-stH?2xI5Q!pu^IvEdT1%>;OOxh~Ug zn@;MyaCC3}`jIBs`Lc{x<3`U&*==_&MaWW9kxH)vm#reaEayT@F?Uj7Mn@;UtG4%d zg4ox$PBHyux$zz?%*KbBHZ?X9ho(jBlg*oUQiR&hnKTYo#+r9jlUogs!O22 zU$D($$RAuqFZsl1rxyA;CWE-kuueq45=Q1(PPLad6IxuBUE;uQpEf{QQ2l@Mi#YeF zZV1K7pbR$&IAx(Q7G-qtGgz#iQhxRdRH-j$7xJELZ>#JpjN1zQD2yfzZ7 zxn!9Q2XS@Hnv$uWX|r!Am4PTndIZ7;Qg9_jWCe!2Yfksg1WyYtCtK z-+%nT7v*F$9F(VSLxNhgXd)IW#j_gX)1{+2^qN?uVDgZui&Y9OSltReMQ0YV(qe?a z+0x(qlbse_kkuJF+lwX5p~J=$1H)D?6BEp1Hk;-2vX0jsg$U^Javyzm6OT+TJ6JMQ zMl9whFP6M2h7$|aL3v?EXNQlb4i-+DxOifH*eoLEs1?llUa`DJTaN)qTfmxk>u$)b z7GJ8|m2EnH3!V3I7yDU9s|9fYRhkmTK02P=@YVtgbrx<3e4# z=U15r1E=0uPapR}}KNX2Jn1K5aCuMkbcXBt^?I%r*E+|4(?N?foqA%Th}K0J{BOWg5mFjc%re7OCP!fl4xje(}fUPFEHixRNgI+ioTiy}8M z_4n3&!KC}9mG-W|ERc-+sCAhqPw|J2kI3gMX=osfLbKQ9<0|1RMZ;U}C_g}!zR5mP zLtoh2geQOcDC@cpJP|jF&YN4R!2{GCsxwMSI^9jLa*@s0hD>ETNOM$QFpnsQeE?9q zTOEI|#U;=2#)LBZC};Q$53p{e9J;QTmO5+kYh?)?`YG2WBAAbru|k4N?@jl`<9_Is z9{PIh@@jR5rTdJ>p_@s5rlf$6NUANEHDW54g2h2#ip&pMuWZ42zTbA7J85P% zzjV{h;S});&H3FjF^Sv0)QnYp2Svh!nk(%ydMb<+wdp0p(i7-{o)a564W0I((eCbu zTgW2OZS@cOP2Z6bV5wTyMbI4w4P`fYnr=0-I&&R?Vhfq|#+0tOwufyR*Ut^OBN?H) z;VXz8(*oa1hzyWP>eze&+Ym#Xf6yGzfwizw(>uJdadhVW1Un1IbSjN4rA*y)!m<5e1c zl=i~adS+g6E-Sw6E@XvHLvn8L95*1-Gmus9(RQ$LO^E}Zo}qnOr~V9OLDjS{YLs?Q zy)^*wD&jRo*^DRG;fpvY>NsqIcuB#jiP4MZkEU!+3!C2MBDS#6&2)1Kw{hn$^A*j8 z&N^kH_H`Ilwrwc9B#U*@{8bcuCG+~y{GV!Q4DIPVxXZ|q9qQ&h;4Khmv-CPGWty4p zd)PCwPwX-rxj;~o7A)7-pIeY^2IaS8O)Iyj-W=|4sN)36v$_op<@KF=8byeB*@U<1 ziV(Ot;FT3rjVH}e3Zkykdh}=b4@S~D9ayWz%`9_Ss}}mpM5=%13{VQD^%x09?WOe) zn+Br#Y5Ld8f9kWarsaQD#Q)!kW?=k%pr>-io<`~Ofpv!MQ*d;ddDUW=@snUm!mt#I zu!do4Au@6=_;~7L7A| zfYI&*WPZf$Ds=)5yOLJc*y6D{`NLyZF!9-MkKK-;1J}zG`+>CsV|yJ@GJjzwF5qO8 zq)L*1R(TVq#aCaVPn?oGTI!?XLM=UI7g2$jVJWX4)Oz^<&S#ZO55m%|yz2Oqg7#Fa zK`RgKT0!qxyto|b`(B2d&55t^)C1X2fr(5|NPxuNVEK$)C77~$>q^1~2*7qDTz5@k ztn*&y812$}o)SfW22{Lif`E6_8m5)OVXzJEXZtUCq^_(J}#jwezvD zH?m+Y3hGf>JY);4>evKH;Cx!+#A(WaR(nd*WfR}Yp9+ZP-3APa+JMkWw=rEZGSHCsxjd=8`RHZ~MVn`Y`ko6B?`Bso}U*2e_Yy(1tqORniOMHHbC2KIw4z zf3YYYJ5Jep_a>yH?LkR7p*nTX<_!;Go!%lY*ODJ@xw=#*?YFfz1hSOkva0PUH5GX* zWnsvgwb=XcLJcm3}7uDkA9cmI*S_UvKrnc1^LX6EyL zy@z;@>|NjpM}*aV607^H&0fFk{5qhH;;J<^49LtxnnJA!O^mJZcu}gsZH&y%_!7O` zaLp+}gL{0gX%(-Q(f%jjGA*{H9;D@BQZSI1MK9Qm;m+37SP(RY14>cKD^YUN#+?Xk zw1KT2l^Z`P71049{ErqZ-J^z$H~EBzeZ_8c1g4f#K-7G`Z}zcytuMNc_|Yc~Rpmc@ zL@i$K7PGwnAr=%}c1I)`-_CJ3ahHe_hiQhd9nb@TuBr5lN0Q@g-Bah?$fnFh*-+1w> zk>e}a>~*=%dB}$HCG1dZq^73^9j1p|`a-oRVeO&t#;pGy))#kF6GJd)Jjj}PV;X7>vQ z@`^9#t==#fwW9{T6*?C6j2X$S)dR^J4ALh+GIxR@!n`jvw%>kTK>=H7D9yY8MjNe* zMZ+#3z4R|Q!V=}mTOq#=U@T+4b0SF_@kQAz2qG#7-?q_v*}y>jOdb?&ddpqNsMOs_ z!aAeYIcVqOYA*>+E?HEvp=TGP1h$LadEuFq>LKs>Q*|Nt zuP|CH_upZ(fzu{#R(5$h1e4UQmKE#tMou(@%R_Ga8NAdZV6jzHkwZg*;~&=&>470> z_ki&po6a&TdW^$?e3N@=b*Y|7otdKrgX^LfWtcVGYYGlMgNVm$pN@bFw$Ja$JQOh#J|ef>1+tv<^&PEr{WWZmt!rj9m@80KxoL3QeEM7{UexW1UNiH*U!bB?nZGll_*PpX z9}O20<2``xk|TBx9|qGD6GCpom|%3LIS=ail^Y*oMkhs3N6>Q-+B$A#BSX1XWpBK{ z)=#U*`NhWfSe#i9G7HM+y^_els(0P^_KOUXVnHHdMT6Qo>o^9c9-VBEb2SZ+K(3h9 zjMKc|o%6OsRQghv95Z#@Ry1;UlskoKhsPy%_letQrgW~uB1*)Q8bmALLf|zA@lnB-;=lJbUtB9^j4(n( z6xrNA1G7p!m1H3z~dEo4@*2Ca{D!c+I26B87ykyED}3JFFeflC zp?$FO)m)_^HNBB;9gt_HDM^79O7Jf}TF>ZBXDpTr$+znmqSyz&=S9(CX?9>w4Dk@j z_{?e(N7qzjrd8ag@VJIIv#+pSA>W70=WH}o0J-(tx zH>=aU|4qAs!K+5g*HYY;cr|lLop&aSd_SMxy>Yh@;{8Y|6MguSO2-81d+E}p!%AyQ z2?V7TV2xN3)p`51#u5ma><3@rdsolC2Z$$n^?O4lk!V=-c;3j9Vao>D;RaBUr!Gl2 zmu~|{5>uqMkjed@0uV0#-*(TKyc+rZyp~WvN;o`Rj77p5VYCh##hRRDwx}eDndsCu%b$w5SM5Cx)K^qM0 zqlx-Ku8$us!FR&QK+bM#%_D#SNUeOwOGS+t9Y1Drh%<&$Jzqj`Vb+a}r7YxULEgim zf-lIGn2Tu;+;l#%w%kXu0HB)TT{mX|yAWC1*VXD5(W40d7OCtk;Q4c0OPzwe&lZkF zk}-v`YvX4>95&j#%{V}YR^rgp{rKc*d>uzD=~JdABcXZR=H$Gl<8}TEj^=5Pdk`Dh z+I8XuL7l$a7_WoAk z*b(`&#h2yB7gCNI^3r;Iwc+e_*9u41D_=cE|2qnCb_lJ!mzzT9K9y|(0iNnf|xYLjsziv_d+jPfx3c|?itl_>_JNo`+G)H+MSR2Clbfj#q-dJF z+wbVgx0N%vM%SRWM{N0N**w9h!A%*EZA(CQYy$w`!B9C0Z~s1ltcB&Rar?vZr&QDw z@ycG4R$F9zYs>q6AlFnyNxor|bU{f4r`b&a$+=c@-oq_ET8Z(cCzgmd;Qp$4!l*g2 zU-7LTBG8h_=x+Le@tb~`;^dI5veX`BLEaH=>TApVjxh_bbe30}fXT_{BHFbH`f!2{ z61n#|Z9|%6AG0WWq>_$r7c8iCX^{db;hX&&E`A_EAF2cegPtSox~f7Lh5j|OKtx2E7CwSDNcfD*M+X#q6TfseIRocZ%0VrA zMVkigl7$16f}9`wZCtFvYAULV^+U0)iy~{8wvZY>WO}b?o5QEdSo6g~Rx|e?XM?J> zOu7F&^eyPqTEU+VR~WnnFez=x%RHqbjV@@@3-Kr#+w5Zy2JD&Q2mtnNBI6Y5PcCCn*eds_mr)_z^Hjmee((q=Gvz2EiO!iYD z%K`QG&7U%s>Y%MuqA-Tj;l^O{dD%cCs%l>7YZo|PMf%M^UR20iR`Xp+oUnUktOajn z%*)3VYnk4meSFsLg{+{7oRR?<(xb*!@>LK3os7S6Mt)Kh9A{54$hMjnPxQa>mDq%VPlGmFY+ z^zh19`Ll+=%2=syuTPv+q|Q#iHNIs9g?g$U5(-@zP6zu_=#y`nH9sw%>5{{KE4kzTgZsP3#ab#Fb(d7E{W?57MtCIzCutCf>FXz(61rY@jVMGVGeu7Ln2(@d|fPu*6d zH67UqL>QIPXGn-gjM0iwv-b$C9Z0nk_zBImBv{9gs9Wh78>J2v-mp=9q4y58dF#?p z)(4MiOt3ATvUvAYh4jU7GsUES6$jUHk&5Lr^~V%7`s+$wk`~@s29cYiTdmrG&_Mjc z!<>BPMFJ2)Z11=Knd&52tpC-wRB})`=@Mpzkg2AM*-wg`!3+>Ch}(L@*A&!Ef?=Q zx3A+1`l4UVKh!N~_7TDtMWFy%@gQ!n|7Xq@tmPT|!xx*b9#(na_XWu;S3X73>WiEA z*-{d{;7hoNWhm(W@4}Eq>u1j#5@;LvGkoKvMtC)d8*uTP!HzszO-~`8j!=!QT7vv8 z9^jBxMiSo>F4gP>WZIxJ%5kN3Rmr1{1WR6RlSq5v#pVI9j5yNw^Ib_$0*y-rgX6Tp z+IPqk-GFU_`s)*@-5NQeM+Ekc@AEe9vJ8;q-`Zo*zqH4aw4fE0_ZGKtxW~b{j@w%9 z4_@3<#nmoc6Y>!X;KuU!reH~^CkDQpxf@*@_7UJ%0Ola&FmF=xxTC=z43451I9HPNg);woI|D%#xK32fb!hmrL)JJQ4%GlX_J4V_RA7D zw(p99J;PlXqzt_B{bti@kcQ-&vHd-PZjQ-;x9OwpklhPQ<`HI=WuJpiUOKsT*?@y? zp4mmZ3B(d#W{g2V$xsSJF!XxQ3HveEtji;z)FVk;Epw&B+|Wj~71O5U@T{o|!VYzb z{V+I%qfn+2023jUj@Ip5Bvx%D8mK7lFQEK+$LK!nm_&$=Q^Ca3|eW) zm>`P=DASDpd~9%|%Vc_%FU#TNF0Svpj`WWP*cvz0mE7=+IsP-Bckv!iX?sV!1Gn8J z?#MPX|0;OqVzgIzcXZzo{Cnn8I-+WZ=*8g2*BlOoBYN<4%B6Mk`Q~IIWVHUm#tSl& zr60Bm@UmZWxQ3tMFdL)WO=$wEB6-;qz6Eh&pg~<3<_A2pTdjhL7F(>EXysW{eL$R6 z4!b(n_0iE$OiXjmZ^dWxaRu$e)9i`kayo*!?--2-=OfwhuDvR08ob1VkR8PbtnR-0 z-}mT`plj7*z$15`oWrYX*DpmT%m%CdD{PrZnd?KwSrl9OigiB6h#8h#=QG8zYlIAvNNPNg^5`yVvVfRXD!I0|zZ$Y*Z@b!NX@HB$ z049jrmROCR=@}jq9QEc1Go7t=ASi3oUI~g~>PqE_*}@Q)sZGXs1|x5*3Hn9{ed-t9 z$WA^Uaafbb)g!wgv3JcmJ*&7@!*x&N8ktsdr=iC==+zWi?`@_?9-2eRH4X?M5evl1 z)h?DD9tr^p@y@>!6Z!FS=Yh#OrLw}J(XvP2+D(&u+#MNSg}&~75EK%4erhURh<_Wt zI@~u;!f0VVB#Cn!VX~_K40b4HA~zTTHW%W8?AFeR$jh`1PxWTV(H}Knvi_m}3^wN{0cO5SNm)eC8*JbR_#a=CJ1b91U zti3ntd8W67oV43PJq)mW*{aFK#sRBiMK$eJ-_qeyvLyNxHM!=&;kj7+&a3aA8e!VT zXYGQOUU4ea>kaGNtp>(UT)oNp#s&k?hv6+9JPoN!emonYuQH2yDiPvdf$Nciu`Qol za(AO<)++NMOku`03qaBF-*&V?c{s`Kvn$H++$m=QRo4w{$FoI{&DS`#xh)3PzIQ?ha)}3sXX0MXIpNu z)}A(J4$3q0goYX0>O(C)zSHEQlx1ve{1HH~pce&ieqSs;(G;X;+mAfC>;N|2{IO%7 zs7)Z7ME360z7ZO*cHs;vUXw9v+QX5#@~6H$FHTeeaXn_+jXdF;V9CRf^e8rm8JpX= zB^$C8&#?J$vAt0o608$?qu8_@{)Ol)_sZB!pcVXOy;^R?^JQ|iSh{S(bJ6?zA8dbC z$D98IeGSBGh9uau!>X$@{`E}$hkazW{4}HQIYZifAq7_h{&sXkOLU_SFP0)AUePyN zH$LAsNZIv3W&&d&6Modtw%?%jYS6k|9F%-uRl~@#vZ)ZN+$!#V&SI@b-69vRTD`)U zq@2cC8@BT0SGAehoy^hOiP_7>R(ibV6CB=5bnL{j}oFoAOz$^KoeFCG!juR4A4 zn?1VUv9g$Cdse7%#yKTX=Z=EN#?|$sAL1K}ql;%Cxd$><%#Sv3kCl%%NC@TmHrn>45s*ljBlv=)!TXU2h7 zE_`7Vy*|v;vT#7G@2JiZtFjuiAbdr?Adf6zNJEfeaxzOyYKT6Mo}wUk)H>wd79D&J zgHNXL_Z}Mdis?6?!f!P>p;B_D6a78$ie>%Il=beKn~Mixg#}6b*rvhD=EUd6OU$XY z>M2<0RvKn~cq`}4sF!VO)KlRDMi~0q;&V#Bdz{Zq!%2i3#V&-zdHSbu8!s8{78SNV zVyIqm9ZRbQxsqIW{$Y4cUm45k#?kmL@X|I*vR2J6wZH7ce6nM5^X9psrfK^Cl=V{> zj{j|Em(Ac|gB0El^+lVBGH8UaZz3UPJ(8BCB)Z5Fp0OUsPrbfrs0@zDFId3J;4$&Y z)xIUG>2@-aZ_Y0UF<$;@eqx;`V+w8yt6!nPo6B+s^Q2*$-xVnDg^Z=@7S3*a_}jHh zf7Gz|EXYnRb3M#-5x$?}NQCZ@;IJPnj*eg_L40ghQO>F!)n*`QYbZG?j#7<7Yfe8OO%4^8>&f>@{A|UTT$F#nwc~S}t>?m`Ls#L(*7|^Z`$XuL@ zXz-35^#Bnx_On#B{da^`*J(yIduwY)H%Cu4@%pDlAzwTEC|k8HuS{5XxHrug%<`Y7 z>M{19{T@B;Hy`0V{QRgrrJ^_Yd8)8W{FvId@dSZIlxi&w{Zkf1-=_fuLitl09GQX# zmWN0T41K;y=Ruh&|D?|JOTAS1fh7K~YNRL*EDsXu=R`xuOGd~*s-eLL4U(U~5>&P<8RY1{zb#D$Nb#v(zkj$Z>^W1def*v0hBadG)YzZ<<}&M&g^ma*=i+{p&&^F0 zyA&^3cV+J>GQM)N=bQ}mJU7o0mEB589!yZgt{7W@Q5F-HQ`bfDtetTJQ~}5~Wu7E4 zEv%if=PKvYEL{DA@E-Pbiqr{Zj!g-OWjkw4y>4H_v)4^xQe*yTFseQYL=b~wLC?i_ zHpFEJ6bhbHD-Z3(rbY@QI5v3&OhWOxig*7z&#tU{y<0bF>U7O0zFFO#k$-7EDs_YJ z4t{~Iu4lvL(=Y|EsT`+_g{{*-zfoU>igqET&tZwzIm?8>XN=;n$SHn^z#4ekH0nJXncNa<@|65j7e@=$I0b?ICe_+ zkjl$ASN_3Ec&DNN=~fV?(3qz3(QF+uvi^v}Po2)l{-#_LyAeYS)$%b|bBF7zQ2Ygx z&>GHbsM7S#MY^i3!w%r;Hg5gtWVr_02VANsaHYp2b&b=3_2xkA3l|{(^VaUMe*f|l zt=Zkg60wX!-p($u*2h% z=C=KjG8|OMc6;9@w0~H&PMcXsJXx&QENTs2NPW2*sv4}A8od2 zKm6_kKLNKsh3cK-9k3Zu)KRP`8sVMcOZzUmg*p}gBPmdH3G3@^^1e+C0WT#=wZhsO zh?s2t(N%iPG~L%)(I=r<{I{amCeiW$5$cq zFwa>gHpebCrxi*G8qt{6852@^ZrUvmTS~C!r$m{QCi;ioD&G~6qqmweaK%yk)-?U0 zU+Oy=GVWTk3%wgM%OAxg*LTmiQt#@$H9i2LzZ^Bg*e&yKg3_}`QYs|M_v!1SJbLH+ z_kK+Q7Q3D_dNd|}^)xgce=eBq`tg=se{7Rls)_|SQjyyc799UR=2Dq7dC?mjmn4h5 zaybTK^0$`sMkV9c_efWP z{x)h~J-~QY9mZ{TR*gz?7XZtyc7;IIjG~A6Y^TqB<_^8^l_5uy@O#c>8A+;NRn~oT z5=nM3v!k%F2X=+;R#tX3CwkvP-M^M8l27yuWp0hVHIu-h4G%T7P_4|*MYFUZ^F^&} zKhsVsu0DKGy=PbD$f$q%`%2QJfq$cs#-eZ0e-F?k}(pQqRGLDSQ- ztv+-;RvFj$%Jpcjg8b2qoCLi?|E;ZSI^=%N39duvrmR$orz@4rpDbfnq+RvM zwEoIX!!z2~&6-)%YY>#RV^+x!AH8n?UHIC(f0N<(;#g0aQ~B)kr5z}y zpn8u;rG?$EAfBIRZt;~VOm^B%wtwg&bpWJ8b@!Fg8}DD53oN<%Z=cY`4_IQU3=Ki0 zIcSm&ujf{|#>C6E@Fv1SsecEgsbjN4s&(}XcVN&S;5>lQ%_$fyr(4z}w*O;0s~}iV z2tT6jCl7zh@BQfcMvLk@Cg(%*%+x>c-k*(h>h}^)-$`-DE$W#oiuF78f$GeazH-i) zIR%rCw`)ciVc?%}DppV!V@=1~+~Rf*U`pctt}4xKUCune;f=;h*))>7MCpw?i@S2-1urFJ{cn@;s;$!ODm_SPT&dmV zAIq%&(8{dtXSkfEj=L;A;)oqRslJ)`t#aFSd{>I;P$p!5mu^#Btp-)RC3rw%R~r@B z;0W#Lpxy@;J)TqNJ<;zULlKxmL+zoQWI|m)Vl1|}He2Ez(7=wAQsiFh3K^)&g^-{8 z_U5slKcU1{u^JQnmVtAcv`Z3hW$VY0`oZi1hu=FWU}^QexE0b1Y5LAFRL3nFLmgq{ z3Q5xcs@|Vk{yn^+HvXgO_*b?6S^NK2I}$F(>dJN|?Si;!t0o#HN~VQ_e$#t#LTpn& zAW7|Uw@ld~k7mze(>=)e*FtOME)zdaV(2Xa#^1sMOeN)li2&Se) zy+!v4+)}~}PDm255Le?MI+l!yZ0!?3i7zN+tf7JVhTE&sy&2ox)*|y|$t)#v*>sf5 z%*;$vx;=Yw!|Q;ub5WueQ4+!PQ<)7ha*mE3zUAhUV)#_5o&-(ogz_f?<5H_i zZR+5sbgzc+qE|QTm(k~RDop&W>O=8g!YcX}TSG7vA_^U51LmbxqSLWTm=b(xB%M71 zys|Q{2}ZWP?TQb;=N>)s?BTQKV&(`CtnmLN3g<`&nP5?Yo-=Luk-^F~jZoND=JoV2 zH?6q-#?>sz@|&+sGw3W(T%B#aM9BdB%175kpj_?uQ!hN;7qvI~;U%dlR({0xN&aaKQL0zoh{PugvN$zyQvo8Cr9)Ui6Z)Gy0h~wYO zZ7%(Ad6UlQ28Xj!$|7eAB$9lCf&i#$Bu@m$MIV(`6*OCYw`-W!_mU*5ORBuVc5LWO z?b<`@3y1ppkV5CQkF2kNSpZB;ZDH?n`;7y0(Rr+m(JgnY`&)#C$Rz<@Urz2s*I(5( z3Ulr&jNM2ng(_+F^t2?%kcKj((}c*7zqBQaKY1HQu@rS>TG_qqYUx4dR+5Asq~=Jk zZ(_ZMZHs5hZEH&3omi;Gi2QiH(P3G6mY#7rYNrIuX&aJo<&PdD1WMb!&|1O3{7uy) zELk$9USC@fd%ysLs=IC$#I&XmW8>Q0P>FCFJ`Stq7s-Fchf zYszhjS%2MS{HLr|4*ETVgWLFEA2CFoHVq1OuD{{qcXXJm0uG-T-k z=C`M(Bm$8zhh?v^1Ewhl{7*#QYv;MN=c#-k!+-0J5kr6cCW;7t6GjBTiGS;_RMDD( zsNE>=OHhEx_W5PpA$>c~Mq8duJ)^r4fD2N& zPmyCWlX4v*7{UkX-2KH}b~|E^5(RKn4$Yv-?1M^eGv6uFlrKwCZY4Ak)A|#&ak6Up z7j4ossh?zyoH&1zi>t=*=}wRC)W!+m5DLAn#fwU}uZ->MJ)KdF)J3FAGEjAN5GgE( zXY%v`){fS59txkDEk~xcw~t4o0AHpKP>mF& z5wKj>DC+4H?EVpsOrtw?3_Zv*G>zCoNmEGKYuY6899jY3hxemycJr&nNgm+pSyKY0 zh&5RkcL4-84{015k86~Y66u_JGz~c$&-kDENkx>9#&IZ5%G_5ksEuOd;c<=VCYAO2 z!a79?C$xapzcoWK%%8e8;y+sEe@>zz**Av`OMcaRNiclp)7GC#HVJHWPmrnZn(Dfn z(hNUYdt-wU${(Shjn(DWhQjnC2sUq17=OgRg}W3CN;e5^c7T2wT^UXFhi0e``)@Og zjd<3o)qH*V_>pzA&;r(ADKH*3XQ%|PSVZIO-auS8_LFSGT-_}=ZFy>m86d~svGtUH zzTV!E3;}hwxHt8xhVBk#Mwr?$e<%+)VPfX`_Sn#GF{Hk;lklDLSCsCh6 z167_cU4{pW6)qn?N%&3r`|*+dDc-5s=bzBAa@wJfAF(-Z; zw7-_7u$DfX)N)X<$|eT1DfKTGn$O*NI+j1WkPo*`>_z6{QFA1Yy(+R-T=dTfav$6} zSt^}Z@J&08W|%6JQKEnSP#hVHG%Op=Hd)&k7@S($eCzL-7neSt;xP*4Ii6_dRj{%f zNX)9~emQGH&{ctU%hTVgxmAFvYM@Ww~3h|QM7jB<59VvmjhqbTAs#Pvsej>ivA=J#^P zeU>aN!YlTPc1PrP8aR-aLqkc)lYP7_PX~kU1Cj>w9`<3NeBl$|j~M6>{^3&KkQm}P z=I!lS?N;MW?`+ATG!~E9_Qx|DQ**zPOu|D zq7UAgIk|1#M61eI3cZNF!T2({-a5U|lxTPqCe%OgP?7t!EUe=j+J-*LwhpvKDFXNL zj0vS-UH8Zm)_J(FT$0>ZelMOM`JO+u%ZhJh@%uYcC-|0#7l2{xz^UjCqhS)K-}PQV@kHt`YZ( zj$+9)5PJ`djXl!msNGn*~~FgZ(>N( z?E%0V((eT_=DW#!3tjARllw8%Tl0DT=a@(E4qFhk-%JIglN57c-8uo!_S^SVE_Pie zFVYb@|9b3=JQ~>^U3%EM+O@0yN9)7>m)2*AMEp8Oj&mK=8s*Vb@W%G;Us|8rYV!pL znElRN0S(W;lywAg-TnLO$zYn2kxWP!t#&tbybm!Rc_0zC78SUuzM1!C6b*AZ zFK)QZFB?7Fy?Z*Hfmkf=BB0(}9CNN$QyP@e6PR z1gh?)_eo!zFvdH-roB0+Qma!%%4$pCr@iSTa0#V=Q}poSHAz^j>v&XiaKsX-IMY&u zBc_CsH;b9@pKVJu?nQtT?JEIs$zOva5&;i%Bv*_BU%u&!vh-(vKDaiAN%57eNJ=y? z4hSzxin23)YV+p0j{1BP0#`!uAcr~^TfD{OT$b&jMCpnqqV!Rx3|0Tm?wOo*7FR0{S;26ZC&jVFT1BKfebYR8y%Jva&}N&oqT_B>FzoDihP0N&99Jiv)1~1;@HYSpHr(x)##Wj%Ay1>&CQVTPGTElOXcvgKL!&zFp!&zxwC2w1KZ46RZZny}As!+a=N0<p(<5STAN)B zI*RvPFpzd9u4R5S|B34#-2d4e$hyOgettZBC}0@sOZzdA9Z|`Mtt9aN=@mh7e|Z1( z34eJ1qy*l7m|YvN)NA(&J;7+Z5<(j_Ul=b-OfmdAy2MP+BB@k<6H7_rRLtxVuaWW4uOF|VR}#%AJjRv}eoPXNaPe*>JOfVu z1^Z8E_$TZ?S%UwQexFU7LjCsxI*CVRcELbQ&@Dy*uuVPD|8t9Pbo4;4ZCO*kz*5_T14eLvi<-yRo!k)|C3QR>xx4OK!TjD#6ThDT zv$rEPcXGulO57&vp1(Xmw-ocL)768u`Et*Z#ZazM!1F^N5KmF^k-Y`&B9k9+ORVYL zrgeV(7_ik;JpgJC^gn|GOlIA#48+gJT%ez+ zi9@Gh~aA+ml|E&=^E?5wB^QwIF zzga|km#UecneA#2@+Ml|({VEy0w_ccyo*X{OBtot);P3_R_(M&06~s%`Kdg+hwP?l zwHidDDxbShKqn26VclgbHXY6=7A&!p+R@lT9Hz(U?F}D8z*g$f=Mp?LI*r6U9tb0(=C;RXu(N zKUBzQ96s!AYaze3%g5J42p3sqg+kjrlag#02Cno544x@7J+mowRwvBy>El2yB&;GR zFeOO%ab*{388sZtA_#RO>UZ5nM7Jcq{S+=fKExt=>!)0tc`2tdyvll@vz$ho4^he2 z_yetyB&bp4_{pw4Hznmqn<6xpS*(5%7{JZP zC*nQAc8q;p-@-n~oiq9hCf0Bc&puu-V4$Ti;E$I-OLRF4XJC}r;APz^eM?}j_76tigY;Z?IPJa!D`sAD19c1fYJT6wR!)}w5sI~eOh=O? z*oR44u4Yo|S{*C(Llt0;zDYh8Q&$)Pqkn`2;qxL_ronaRt79Snx-^h-C0kJv@|>y0 z=_&buke-*00x1Aa06fLZ1pxlXx+R*+G2(sgVyH=;vc$RmOlV} z8p)H|>Tz9t6X^o>N4#D$<-Yik1ya(Xspt|{&t}h_iu4TtNEn zVjy}cyWhHo^!|P6jAG$Mc0S@JUHOPXLL> z@022LZ=0{>S2)Hwo0o2dDF zL9Y}YCHumK#)42R*yMh4y$8%p({|&Z)jB#-Uv^^Ie19$$l5qTn4p44X6O?PM!m#^$&a>h#8b(9xxCx_AHq%F2Ldlip(2vErlnqF0=z z%MgAajPg)*gGfWhpRoGBHqu79lEbLM08)k{daN}0r3&j@YQe&d78fo*%f+z)O)e$L z{Ct=fAzGKLIFafPD}U7DPE4LTGxhvG!#*MfPkp12DWM1Q3HfM6;5~P$nST8#xY`>5 zlPY_HuIh{WZZ7luSPA*ueqP@XFj=7zuz_H|#507*FQ3y;Z{FGW*LMT@)PAF8;_oCUK z^8q)oC6_1Lh+8<1r|o9r?jS(+f%keORmP*NhbrMl?7#)W)WZzt15U?`(a~KQ4%M!J z^(fQsWj~jxNrObSW!xt_ie9@pMfDlTCI zt$dl91cL?)yKx0%Vr>g?Poj#aS(7sa*2g1{m16rRN^a>UaW*t5QS1^%e*e4eRtdQ! zAZMhMXSs?xHAB%9@kepAkE_o?UT}`p79;{W^iI{)UhUnfV0c8KzNh_EJm4|S`VDaGT1MIvH*r$*=}fOj5_qX)o-QyQo`9s%e7@=#y+6%ezDop7#yqA%c;bWVoliF0r|#Uhw*5M}V-wTImI$PIua!jtX}+pZ zgaBuy$!mRVf4YFh?DiQ9_2ZaSJfbyzqj|oyE#s^c>1^hO=grAc;xOZaW;Prlt$5U#1J^8*N?R* zoBB1s`*_1I?0%>ud~IUk@11VD`IpG3>MxPe7jJD~diIf`UT^!w`Tl<2^o@M8fxkgV z>i=N|$+UknKb9ac%g8!rMG#9)tPKeCZ;4~CX)8n%G?C3vsC6R5Yg;lGm^@-Rc;D>( zEI)#x`=>rVUIL7~u+QhaN7 ztz_19c!NzXpXCD&MeDabjb%U;cB@!EL`hCud^Ax>W(lt}pM!&tmueN@QB@1L#e*{{ zfQF-q`v!YMmPKi>VM^BCH8PL(hrL*64G-39+Rw+Ce?I|Tnr-=MfNzFtG=C?%*DsfK z6>CuWtFp0sZT{i{-hRB&Yp{HK*;_K#Vw!ixU)Wk$JfmZP(kkWsO>H_6QsG{EFKI=C zFGK{IA@^{(+v6VJQR%S_>=B+}s?WjAunvOlpd?DR922?hH@}xKzHy#^Lh9R$8PpDPiFKbQ zPWNIKMw4id8sLh&UTp@vN%-->2Lb2bRBEDl)%NAcN-Bps}r6Rh+J3ehWuhV%QP%+5T8d9|8j!bzoQI1tn;?*VcGn)i2%HXW4r}EoUrkvCr0CyD>l|H8!nbfs=M$TmqkpYJL#4i`IPVk+|>q zSZ~Op)-NW7G&|KDlMriiP;tr*=-U?m$vFUWnSL_dGHj!b|DEE}<72|Fbs}6Z$#n=M#UznO*jYuE~FPcJ*c_Lm299oLtHm7cKLTL*0~bf6@9@ zX4QzeN)8HHV`)jt=i{m`@siMdS*?K38S08$o+7)FPZc)3Y-d1|69s-_vcJfa zN{k178jT#}efgBsi4LYqLPdxhs|o#OFFC7Te_;WG?+*%whFqr(aAKo@w14ktq;Xjj zkeDdpzbo-@X)s|PW=7xwn+|@sJsn9kky6tHn%1OS8=MO~=Q#wsmv*nDc$|s8+H&IL zA2j!pD4~9P&z#!}9rfBtY@F@XpF>-(naImCBPlT!n& zvFIA5#-+B&mie$~FbY(9%a=N~OyegjnU4bj7wwbVZ2EheXMKM0@E_M22bE+M2&UfZ zRmRbIi9C~l$;AE9D6B9zlb8pdG=+_N=AGDwt8OJEfGd4kdPg-oDd&OGa7TT4>yPS`W{ms~SpLtRMe zRGsv?+Pa-5IB36e`tG){Ww5>3Md;z< zq)W?WWohcV_KO9U^G_ zf5M?sPpuT1zMk5N=Onfx_f>xBaccQdLopA>J#AYPQ*G|boX-CfILz^tL@#WSsWP5KQNuibpJ#__sn19}6HZaE)QdarUloib2u z!10#wL5UrJp0UWSVlS_%km0H}{G@oKJE5IRuXsB3WI0WWUV6r<-WfZW%x!6Tp^N-> ztERU>X&UTNnct(hfik?(RsET64Xvqwjx~L&38<7b1@o4C?HLQ~a;~g3)zRciLAT@2TR!F1XlI!LYg8wI%AV@@$L6Z%F9Z&C3a*jZcIQ7Rya_HQ z(1kaBRZwP78h0j7d!6RGlH_BIMOuyba`dW$l1x8d&CXJ$G`7l^nOfNU1*v?vQ??)AD|jw zdSi*I>ZKb32^3|~?HI?J7Tt(K;T8_BlTqG_pvF{$+u~le1Qs+P+0+~0fE{BLy`oLV zk?%d66>=+$Ri@PyQ{lJPhKlg7@P6i2hlZ)zaoZ`sZNrAymfX?rQq6&iCqF!!`9Iiu z%dj|_c3pG`uE8CG1ef6M?g{P?7#M;Lt_dUog1gJ$?(P^|2l0Uiq%PErY)=yFu$mYIQGKU6>e7_tELRQJG8@-= z)ENE3g!Z%TUaMJQa%a4%+~?G79bzt>N>6He(19eQF!Pj86Dfh>O)FPI=t0ima>C*A zi~-Dfb$*YxWbY_4a`9k0-^|3rKx6JoqZf~_iJvs8Fi5UHEc43p#L-w|RjZa;Se;5F zWmfSQ!SLt7q-09GPT})Jm+386Vx%$t$Vz#xG+u$PyUOJeuhW*+8m6HK>GN)?XS1Kp zF3o7qwIPQ=Ohgv#6uR`5(C649o1I|*YnT>^4da5=!blvzFnpO(q`au~kMWIV$rUT| z#qTN78{bNgg(b$H$saV;k2`+L>73}OG=>Ab!6D(Q@=l5i>d(vphT({F>HV5F0K+im z^|5r~A3Z5N9-I@*gO$98*suFKLr!LOs7&{EUI1FrDoz$*Ygf`tePe^ggcJt#Y=Dhi z14z6KVAa=S#}$rbzj_t{ha>xuRl0c}2FyTRcqIu*Ju~w+%g|!@D@|K+LY_Os)t^hd zNZIT(+hMYDZ~=xyFqdbQ?x~RVpAoh{vU`XpYV7l<5y`YESkIrC!^oHe6EFjuNIg9~ zs6#?-;3)bGV&FjOuYQIBSIH+C^CS(@2!9`*M^y+K{@=*crP50oK*}P zcuP)Yv)Qo5#PW5{H5ETuq0d?g6;LMlJnEq%u zxk1n7sF$M>x=zM$xjNUTPi;`{yml`3Azi9m0p9lhf>#uaXExsmyG`H|Zd3!4pZB@G z-m{4m!*ATjd;WZzNIr-y*AK4OX8TR-I&cSYq$b9@Ww_uO&EW%S1+qrDqXfF&?0T1m z<>@H_s^G^D`g(^7q;_7&FbRp&ZOv_wv`!WsBz=llUGWg^eE zxS2^b_}-#g+*U9Ht)=OlisIT_MsF3;U1FF$e<|$yM8u45Bb}5}%niv9lnlw5RWo{{ zriOL39pr&aI<#o|6%!|2EUH|T=(_9lVn(|L&I+!rv|CgK6KP2Sbiul}E|DP|WN(HG zUBwGcm)4f9R@o1D<0$mMi^dOH?CbO-8a~LXzfkJH9;PL5^OIx3h?P2z=$fX*Bc|em zSeK>)W;3)??m9Zb)DO*jvlRMUD|WMFP{_6u3xqa(*mXPlDIZ&&kjXZ?K_Qk~wS_aB zLE&r24%F|oVT$-yC|#EAS+|V4DsJ*1Tt$$pmx|0c&>?nXh@!^~V~X0b+Y(-T0I?e| z5fS#pm(4b5wC1UQ2kBdv-Eq)ze)_&j0qH}#_JJj{PwX14+0)g(u^zgR`3 zf0K$jhcTZkZ~|nY1d=}ll?Bu$;v>bRR=o?^R0?gw#iqeWVhcsPA5JLvu47)j#t`otgM9PN zZ^@3>UvAUKay8N>j8^h$s}Fxj=y#eBJ|e~qWYD4Y-dv%$U`3glVZM$yj%t`vbOw~V z8m-bQEf|FgTthByXRK|=gk^7aQU~#QZQ{jGE5^0xF(~8iyWDY}{m`WWqI65un0w_U zOkW+&2RlzPi>^uSguE>DOca*=c&Oo?lo0O;^iu8Wu&MMo%) zw|6L?JEi4^KBRzW+ZMCYp~6qYsvHO9DCv6OmT+KaGNn)Iq!@`*Ob1IuB9y*~y1uIe z_l39J@-41vb<`V04KxOM1!8}4niMK&>H%r$6Vd`FLu9p7m7se*>G5xNtrBfKINP&R zT>HmEA`2h%qpl!UCGj^y*+V%i@8vl1_e(YfcpjWe_td}}7Xoksqu#uXh2DJI`6!2H z-J>fAzmzW7U_(6WK^i)Db_Aw7U5w>jZ2~1C;;b7Y0B<`^l-uz%Dmu5W^38r=j>X1G zuN*?Jd{qh8jR9ImdQM%ToP{GY(s(F^AuAsf@reg3kBFpYKBovx@5yH=8_u7eV@XzQAKB_8!Q2t*2?-B6`!EF`+K)%N+VNDUg_;$Xy_O12 z&n1=VQY2SY@2bDy0!x_rx3MNPIfrU;!jWv-R_SOeFX=S-OP0M0m?58BM@WQjBV`E= z*-c@(by}ZbgFC7up+n&P>EMc5E0xHvT!~iRiUtZY^_v!C!;$j0zM=_EPKK8oZ9hSV zu)-0#6jQaWXj7u6#TR~0EQ79$#<;CcZ&ZA6({Ym((!r7HMc7uJ)C?sF5lvMq@9e92 z4chI+nZq*jczRr>Kv#jh%3HzZ@GjX6R*A!;uf2p(l*l=DPr7|xWAX7k(bsq~TKXf7$*5h6cj(Dho_1`wa`v1cd9-0N`=CD8B$w0sP{+V zbfgoCRK_8IfxW^eiOIO^z_qQ#AypErHl`qt)N+w>FU z)zS?fN#r<}oglL72VH?a2xoq?4pc=nJUn*ZCKx{4pA|eazoxpgc}mv&(W3_b6BILi zNa{kSDtw=80)8cKLry+sBzLauZyg{pu>7TcK;|AjFa`&c`+EDnOWm=+25NRiwd$tb zV|_YPuxNs#G9W>mOWOGQ{xv@LQk`@3z`IZ3>IIXz4#ck0SC9h-wKa#Qj^NI;c8med zexKlhXT@;gF$EsH;xJa-$H|rI_JdSmS$y>1=Qti_<#wPte=fOA@;zS^yr!cZJ@Qd6XmU#gB(pi)MBo;PlC; zRnWV)BRvF%0NcgGYD;+IECE@ggS@Sz{gekoM}ZLRcxs1YKt9ZeW?+D3riT}+deYM7 zv539N*|43X3DEwoOZ!C^I3x$0GTC|`NvbfoOW5XCU%6C7&KH+gy?;d|@T`Z+URzfRzmZtsDBHu_O>bHgWnlwq*S;Y>C$T@48Tr6D3Li*>eNt?ZU4uro8=2yZIg; zqtRXN$@JCL6PG-3^DGE&s$3213$`3yUMU9@PI9wc@%&6t^Ly~x1xmy*1(C?6WBIJG z$q*H!eg|;flCC4#FziVHYTsC|^Xw0BB;h&@8jZk-$+`Hb%(gQ)a)WTZ5ZQejO@xHq zbNG~Vj3kSs9k$~Y)?12mX#%Rbx?zFneGZ0+3<4MF3}GK??6G|s?J)y-PcL`;$K9eS zcG!hus(`)G9I$U>L56+XLsPBAA*_J>5?3ZOK^N)W=ZB)moas6BF(r?w_@!<2AG-xt z1bQ~I;m7ldO>$g%=^;_1T{tayXyQN%V!;c#MC8=PiIeKjlxnjQWlf)1X8CGEIRgo< zuyTCu0$<0BNLQ6Gz{iI+`={&-TaDx>FUU%bI1Hy;2KNf%vh}6m7X)H!9k>SKw=x{h zTqx%%%SEtIEcFu_k$2gHb5>$i(zp3urXic$cBbc4W{6q6qLQ|V85M5lEerFiGs%G` z=iyr;xfX%TIc#mTxp!hl4mIuO)mnMlv;el+Sf2<*EelJ1aDOs|V;)N6+kBcAL*zXF zZGlj(Z!{Nc`oOf9)sw#1a*TAJ-Pop@jN&H2q7svr3t)yI7tK{Z`xp#z0IA)KENL|%6rv7luhSh zox!A$NEF}}^|d*wZuj{jo4j?j(q=f7j|*bqv{*EwQ*CntW#HonMVz7_ROkdABW>?mfsfeTAgj1FD2 z5oHFUECsh3QMq&l>WPQDyAI!RS5K4s9%fJ>X4os9rYVvDQJhvx1_b! zw|^@-DHkXW=?R1Ri$`8D9KW%))xsosp_Pi3bt;j+61TTX$DJldoF6KX(B2wozrzUe z(;JXPse=8&w3ymFipnA_0x&J(e=sfYE`MQKGE0@rT`tD^FQ-${m$KA0wY}`J`ahOd zeB}{3;1NVwJ)5!r$^s+au0}%UO?)OFlNzMr0~4gug5oTnli0g!Sqf&{0fSyq3^M?2 zNdllPgKgRtv|ct|&Z|sBmf)qLJ@3HiU(gnl@wyA)$QU#ILF}7?8Z(jA=^N*&V_nuT zrDwR2Iu`^T@mvvj$^;P)vGdI8#*Onk?K@x6Pvyux$tD&n&Vm!bwug)lFeC#5-fxc7w!=){T&~ZaMmk+#_5)+o9ozF}S%|aqN0Sgtsp)GI4q>o_l_)&uuc%e_Qb2omJ z*e!R4g$?j9`bRIc{1>V~Z3(2|cLrl-DrvgIx&gahv0)pvq@&aoPWi_Ip78GdicOKQ z@OG_2nJ9xptzgzhOL$%Y9_f3-b$ttj>5Pb5qKYv%M-*R>&zUzH-$Z5^kxl927;e3I z(h<7Eu%W1)rT*dJwYAFyov`%839o`@`O$-O7>P8&g$7r<3vW=E2lZY3a@g6I+Yi6- zBvll0DXmf+7q-Z1XE<)2@Z@%g7fF4jo~3bmXd5dS@{$1~cc<1nvhX!_e5u(Lgi#=1 z%!2thw&fQNCjr^y#G=OYd^4t5p)nlK@kQwr`lghjrSbn)pY~k12 za|LCuT*AvV*}wdx4&Kb_`~_$+a{L8o$wM~=z%jVQU;tzio?;!Xcu}SxNEF)t{^~r5 zZMsUnBe#+ius@jwgGs+@^n`4c%Dqa_aG%#2G92DI_*hF?qsWm;m)d6tfSDqdm(teO z6|~5cug_B1Ql59(MH!Qnot(`V2JL;F;y2_e!3zX%rur!ixk&$k zp?Lm+vP}HYg(^kG)jpyM>H$+b1wSj7KNc1HY{a~|Cu*OcH9$473`|Wc(FajdCo&Ey zbaugH5yc8_B#6lkcrsR;$ETc9?5E51&U%e`6PJrQ<&-nyl+W=ej=v1Ck11@i)9sz~ zWxi{0d=(nM`;;o8NKWTS)^NyxY72xd9~$-Uy589`HbUd8*G1lF1(z;h3y%2%59~Gp zmn$Oe1c0)vH{8i*=wI-R8DI7haIW-rCI@?kGz?MnE?Z#(FC@y@bsD1gOSQNE`eFhJ z`tPVRQLxkcmr%1tH)V!J+iA8Vd$8T$X-N0U{1vi|s2Mm3D-z$u04U3c2u$9bhFmoZ zC>nd(iX65fqMj5ymfz~HfGs^Y4@Nm*{|+1lrzy8FR;D(_3l(}vNZ@{#xYEsvY2=;q z+`_+)s`B~!yp7dodi{a4OdA2>_k_XAyfiT}2TSw`rnrW~K}??R6vU4|inr0sH(~c& zO(UiB6Wrp;b%w8^ zhFruG)=wQBV7%Z3SJpvyk*94hM~vH`Y}d8MSbs{;6gk4mE-pwz+(vWcgh@Y`&x0b0 z1@2iwHKr1?GTIM(amLtN6v`kSOlw8aMV5IbJ#b1IE>0FJU-~Xtk`A3CJj1_@rY?e7 zo_fX#&!#Uybbp9GSVS+W#aa5LUYvs!{zOsj$um8}51-+hgd%=RH+AS9E)U7-bCT>S z#)+*p-dNSBn$*DH=lwUwX7{k=<|7c)f=s}|D}un z>FfWKfOORO$G07#OU&FIFPBuFQ-pMO9H=3SpC%lzzsqlq?FFA2CumrQ9mxW>Tus|F zUVdb08R1Py#xd-MLGBigWWbK$>;;_+iZ=4w(TfbWn9|r6Uam%S+~f708BL$@SE}Y0 z1ir4nQBlAEjE#xfz&jZLYf~)1I9g}t z6ss14eQLV0@G&#}1(!Mf1DBygH*vzb)>9IUdFeA%3e*|D;xo>*JTR=%?BPs4zq|&x z=h7zMZte~_gkDeJ{RHi(Z*Eb$pHLq#EHU;_-DO^PBX?!C zRnLrn)vV$zF>-jE_OejTE+QeafjwzI5;dfpiIs$Y{qO|O%WGq~8@aTOqb+j9vy6W0 zTLMQ?ulKS+j(wD!U7^-X4pN0FCCxZx=0W${Lj2=k6l-dc?nezZOsEbW8z!ZRD2&AgN)rGS-kHu-SNIq(B!K)%VAapyWTz^!4y4Yz5K8+tB-MsyP}sgrnwS_BzTTJyDJyCI8m7?2nwfyc_OX?H zO8jMVekGEYj$rg4PY>_60QH=fz&N{AzO9k%6BgKOBM#0_HaJ%ASa{l zcTIMCj!I@=;fAu-x|Y^RtVfqXTxcJ`G^d5C)AN><=gqj8J;JMKfymn@1VRH36#VL6 zoH~dAgxc}zWt`bZ8Vt5dKSsVDshZ=`lH(-{hy_{}r1VLK+YT?Kb_hO!jw?q1{E0S| z#lT8u!(KH~m#vw3`iDJpmUCmiS~$3IlWp+v8_2mm--TnOnJM-gIZ)(xMGn5@bX;7Tn|7-KkuF(&14uD+~m=)1)wz>fQZJQG^4d=&7VkV$@AD7hgr6^dIjAdp-7>g^p_1EVU=sk#MJx*Uk>j zp%pm?*wo_nO6)x#!w}gmCzRvl#4fgXmP?fy^>|n2wlmQPs*nD_C1Esdusb3WsN#ra zQg2I1C&097QGNzxHJVRgm=~~5R`5+dZw~JjYSNgLOyT7n;HBsxVP952E5P@gLFtUF zIy~W+U`gNj!mrXFp5##g6NfnDnxQmM&v zwq_0dAGW^Tp;8>JwxhVC+&$diJVH1)C>N4vc%Cj6e7*QZ=|brJW-+SsoAC%QD!ys+ zInT-!QRB-Lo#to#{uU*=mZi2w?{^%W*iCAZg&QD_krr&C52+|d;`r(~Ra1t!e}hdznFVUIQs3FI}SJpfa|C33oX`;qPi0j*KeVml+m$V2?-_-$?#Hs{ow^01$ZQ%HpJo~N#QxKq)L_TJ)=PiBQhD9Aeqzu7%?C#z16 z9F@cOXL)3alty}e7?|l0Y0VfJa7fnQ8-TG|rS{wgj?8CxV{#w*_#R5)X+`x=5ErE) zFw~}JO}cyVZ5WEpAub4xit$~RvN%7Ffmn~xzfYgdkY=fzCy)PCId9IgS#GGRqV(+c zSS{q+)KPhKd)$%lvgPy@@SNzd2%mqi2-J}C zJ<6jm*%uELSPdkv!*W)^IvnC{m5v%Ku^ZyVN94 z{|+IxNu#uG(ulg=4}k)@zU!UD3f}@NE?IQ4ShRE3j~g64cQ5(1pH&Q9je|J`(lcvP4FDwx`Y6{(Cczza+!Fu=bZs}>B&yYValb}U@j}(EBWahUpGcW~5tbiU z2=)m^1Cus@KiYKs&CjaGo7L+jIP4TTsx`dea}d|^w!;;vRvGDyV}1)vE0k0srYeY| z+y#nJ&l}F3srfF3b1^>sDOraF2TkTC8Jch&vM7SgZ+h1HgB`8;&mX92TkkbgWTT^k zGkco3xe^ef+nhqzQmwJQg%wWO@A=^dL1{Kjut6|2SA$k!J#UAzet^9;ZgfUWk_m%& zB*4yEH2;g8bso&0^6*vc;Nd{zP_(q*mA9dU6O69br8&SK8IM$gX>TEC!#g>6}Mhu^i|5&}^gT^4%tCq<$niE%= z7%dCOi52fsq-JQ7#d*PkX%ySQKJ)_31lqWPL{!@C>U zP91GV>1fwql;OkJ-)`FBzTkyyO%qafHoF*%Mm;vjt8lET-Q*HD!Y;+D#4RLetQSl|3`q|rgfB(HM%`ctq^l?f|J#m=M0+cCQ^mkhb7H}(($G9jE#Oi|fh#MU!U zLJMnaN7ys+pxL_@in+6y=Aj2i?&k}6^>K~9w&^b!xf`6-xycBvscfLOm`6tnTaUlh zJ3-8yidRh38!2Qa zq;Z$o4Nw$w>H}o0ivU^c$6sWv=;e(7S!)lW-0?~Jua7=nYcsm4eMiZ(#e^uMWg=Y^ ze{r?uVXkbWEjA5;Mm{h)oWDmbIk+=_@XtLp4l{r#@@gOLkcpL0vVMW zm768|E*Qrm0=A1wAPk$Vij$a!lD8!gHu;2wuThqzi?hrz%zC*rD-^zT@~+dd4)B4X zCY^NlpnJ(8hSu^T#vY!oy2I(*`_vqmD2fEDYFawVAx|K#xkv&I{m2G(@WfA`aMakZ zVj+|`a*Awc&mjO)t79aiSHX9ku*J$T_W@5s-Xvymrw|X~bt18uAp(7`Ap5a%IT|o$ z?Z5>49ytl>MqzDm=J@z!|758M)kRZbFxrDk)i_1$yL0natRn9Eh%oJU0q7B62g`WH z>2||K&vJ^iX7KcgaBljPo?X684i%URxr`;%VK-WzcKi(UR_PHR{o;7TnJ!a3{u#0qoVcVPHwlH(6Dna zDx1p*$k!KSR?qyjcN5CEyr(gKDC!LH+G;)c0QQH*d2ojP=;mYnj%;_&+dIdL1UuBR zOT2o_m6D;NoVjD^OhUEETz~LUeW~BQU8EjQ)iDZgzHv6QUAeo%Y0h|6n^l9-7HMHb z>X`uGTaF0M07l;@alCaLs}UZIc6GnLr{C_E;tXkKBZ<8CX-+O*@To{1?PjTAIAlSG zx;fd2faaYYte>LpA%hpT^|9U9_Y(1kPvObLkjK=pmt-ivnT2q1<-0gFMR^_)`3LQ? z9h9N*ShAmW;Gs95lkmUwsvRfj>H0&Svg9KpvcL5n!@(zhKs|oebN5N2F(}8`=a{&OC-}v zQ%;;bkZqviM8b>i(^G1>NV#lw6M^u#h2-U&*uM}rfoME$0?`2P-*aKYEMNTiwK-^& z`M&hfFNowlixrqk{2=Q|fQaw9i?Y)*IWMOw@ZAoQ%MfVpCs~6lLaxqdoE@gaWV+pgVZ0C4U zOizV|xhOm+&LCI`wz!COJa0J*>;%$8G_?VS5m~Z6fWJm|L3u6(cwRuNIWibbf~AUy z_m|4tl%r+dE%MX3I(j5cDr|f#Zx<`V)+aPx_aYq&LK4Po;xrVMU_UhoPaN1Cej#uX zU8}$R9=rIgnfKgAITBn~>M+B=OJQD8`xZr{h?jb?ZDKlT+#xq^du>3m8XGrA{U^w_ zk1E6q#ZRbGmyWV76ES!g%nJS_Olhai5W35Jq#@@fOjzZz6#T;6MY-x1E$b04wp_dZ zK8%m}JXty{n+UTPiDp_Jow(|Rr5{&;qJJpVvmR4ewBD}KVdfz7SiP}{7L(1+6D_PNe_8ofg^T!yTt z&)#w=(Cf$<3H66aq00!MBX_^>_T=Ctv$gp_A=eh__GKylrHg3C15F+5fGwF1GlNK; zN@QV6L4}^L+1RvPXD)Srf<7zX<$hDPHvZRz0_P;6W>*~-ca7Zz#&?CgN0c_)t*V^w z@uF#YnOqqm5UZvoWyh%DnW6V??+Fy}62kb)X8#~bYVZh}VwT7A%pLj|05Aw{lzwTO z=LDl#hgYtH6+|<0*c^DnA8}l*^BRH;H|Yjb9N__JDojX?R+}0b~`dBeFC$QyucERFSQxG1SsKoF#00QHq?! zh=+jAlh_iny_}|wmfo*0xv|cFrrC^Voz9b5iq5SB5;YxK^jIoa;#_H17)ss_ADfAd zkkq$eTeEXR9@-HOE*UbotHd0EyvLgD5X+>@R^V7>d8AYDoj=9?yL4o()zK2zCYm@) zE1D<4o-mNoqJeBITH6mKXKwmvbcJ7w(Tjb6dnKiHgu48_s@85Z>}W6s!uHkN8`R+Cg|+|c|uZH}pTg&xp@ovcLV6V40&oE!Hj8TLdHGi$3bqrH*Tn zhuU{jToW{$IfVq*KGQWKWy=$R1jSihq(fAsbfFg|^)GH{COQ5?8Ayq;5tZTr9nR;) zk}vb8I_Ol{>N*I`>Vx{zC^515RWKsT$KBEEgX+&Tg5erwl|`WlzU5soLUL7c@mJwd zAM604VCiL1BISmSz{Gi$h+A9-UieZqHX&KKZ_qb^@TgEW(OW`NuFCr8@M!MN=N!gz zR6p3v1ZVZ0K^N>tfXs0iGs)>Zc~%CCFAZbe#oVm`e%_tMP{W@f>m(`)3IZSCSz)1f zhMGAR7O3!d(rdNT&2b3l=iPu;E9yzJbMu1g%EgKznibEH)KIe?Y~gfK!euZNabLo< zSkfMgN`~82G4wbHizA;^V7G*_Q1-t?GwR>cu6hnRu_}r1qBScF*BwJE=;ZCeM8w=b z!5fh?YJb7b-A#P4UvFX|pd2@(mrJRog7oS(x0+O8yc{<0{s}<#N984Yw74pCrm~IK zX+vic_2MGwydC}6Alz_iDXmY21c6C#LC?#_ScB5L&@KDui!uz{$p8Ljnm{Qq4hq2O zu-~o@%L^c$PsdU!E?H~2%3!?%j|@lQdS#Ky^aYQtkXqA$96c7?I^=h>S`%PQ4mf+d z>Tg$vxEn;%q(@ljVt4WIZ9I*c8sC>YyqsmQ1J*U>J zj^$Did(`5ZM+I>Pt$%Eq1vGzuG#0R_L?|w^IMa7gr(3yL$`HJ^q0lox)@n{^%%N(kG5^8ff!MVGU7Y(!cNN*jx>AzAdSo1u zK=mRlG{X46VlI6*z-w)o!X3)lQS;Qyw?+}^Y$?EKj|U`hf})AaxP2$v+dBUf#AxZ8 z6zq$qqKcs5=SPWZU$C60qu(1PpX3);93Q%$El?ah zb<=k+>=3A<(imiikgiG{;hekJR;h7LfXjV*vE&=WT7)TX=Y$q`j}{_GK@4zJm1TOj4KvG zOR(+qj9e;BkNXkSWJK528^Z38Gv77NeuFmobzRfdV~(kPwkfG6JFm85cM7aDlkhOc zQ)hXvJxYu01F~U+q{=ruG`!iq~`JUFfXn`sfS-yNm9DlWHd9R=;& zYxAjdDUQ*FdRUNnEhzZ2y60=8t!cTm9elhrptk-2pf)Ujqc*e(p4j~dY9my+!N>x_ zL~P^duA;@%&`kl%lC(bMw4-@=vXm^>+LRb}kv!&7XJ;5Mr82D>!#bB86PwctJQ(&UyZdi3+UG}suw>eB< zqod=P>#RrbQe-q(E~NI}m*cjw0ow&1YrE#JPB>OTcI0#Ha|P}C6lYrI*G#K9q7Gnv ztrhd4OfeX#qb;FFPoa%r4tQk4&kML?k7Q<421zrM(Tp5(iDFfK)Il~bpM zNWLyP+Buz^EQ~4UH~7Tv5or>y{(OsWo=uA~XpF1Al?(0gp5M>&l=H(0V2r_7DKs*# zs+l`eS<++&GO!r^&eo;TQdAor{~NmTBC7BWQcr|FJfgADdL-5K)cp`#{IRNbT5xMr z6$j~K;!PXrVl5daodS8^^;W7{TE@$ZLU?~i73V#lDRiv;=5C>rB;=La?Q#!#zi!n4 zTxn?~jdZ38$KmOnZ!CeZ;BDi@Vd3iqhnN2Bohpf%&;DMvmM-Y7+ZWT> zWoVlgp+i0T3RdKKDsApwA!c1vB4&DXdXsW;B7G=g4;x##l0HJMjkW%xwS~lOoa{&Wv6Im(Md@#5JEs&2ps7Pyi;;Msw*wQ@?3!>M@N%TWOuS9*#rc zot&V-EQ%WHG8>LFjU4C1idN5GoD$tell)nbUSUCpT1^`!({i8Ob0L`@OhivrV`P=XVw1)*B3coG8IF{OI<`!e2#;VMTS*3xLc_K2U z8|*soYO8^Jkcsnz zA~_SI@%rFM6v;7H^k`5Y*t?h0vR;OUzZC9{atII$GhsvU8+1R{CyznmMvUdHcbXdG zhnzs!GHX>W$t&%)!^^(&S{(1>B}IELqf)vH*2!CKd%8A44L0a(l`~Tfu9lbU$pnv2 zUBbR=rcGXjE9g`D$-BPW7}Ou$LVAqOee0Z6&8f)!LuetZA!9s9ImA0U>W(2-B>9tM z8T;jyEzW0-6%psZxkx^;u&NU~~(+!#7N3Xqv zeOMOB6VDe1nw=SH!-^j}>TE=Jv!lqS2feqNX{Da2I4Q3`Dyc6xHdwwC7yb>Vcn|Zz zuQk6x`tjg6Hmp@5kN80Wu9(bjgOZ&5yNuf8s`PpXP0iH1wr()xL*w2omGM7d3JSat zElTIaWY%@dXnby$$lR53s3UrsWuhHm9kcDhhB!tsS2XRxyI1{Q;uosJvAf|dgf3E) zQM0(oZ$ttem&ZOAs~e29&K@+^mH4c;A7AaW$?)iB;Q&|)ZDBezpC%h0dTx6{*9UTV z5(9n#TkCb-2&z24*W=Vn>RcBY?PHaWbL(|Y*NmGSs99Na{RC|ds?61ia@DF1Mcq0T zMQWUW?_l2!+Qm{_Du~Es7u3@qx*_M#{TE+_+>Si< zf(iQCdp4X^^Wwh?g9Y2;tT#QP{oz_J+$wF{+e3-VrzwqABaf@tfMgtq7C{_2 zwn~d zG4*#n@uHF`qR)V)#OL(>)kb>ce9=F}ut=@^UCciX)9A_k)ApqQ)CW?37x`cG(f=x5 zI9>y?P}pMebjlL(afzC96% zEGr^63;NivqJn9tEL?c82l+m+&d`*wY*UJ{K#PNt#m4E5A;w@DB!T^pR%8xRyq3MNxZFlUh^$dUdPVy!s&^IhlsHS)Y|8vH#V5C;^0dCIHC0K}f$2Y2;sVJt}}N z2}n^u-GGk=`U&`Gpf|lh2GHBy3c&9Mp7;R73)IRABm@G3EP<03!~qfp34*Kv2?ucZ zOU4I;gaD}}$l|vQ@>|XY;sT`BKv)2X5dzBlp{M9d1Kfc?FF@|V;S3T1Jpm3YkOPPl zWD7{FK|a9A36$vsas*;LfHV$3*aArN1n__5vH)UV0I}8}C~)@#!~@iZA1I$22t5Iw z_TN)mPLLh&Y#X4iAQ0}^uZ{$I?Tr=)^-N422qW``8p4qtDSm*@crp}hzuNiv4*T37-%|cu{J8S|dnHg(B+Y2US+k0vubVx-|**{yO^ol>7* zp9%53I=ncl9`_$uc>dg#^py>pnZ%=d3f{HUBf4^~+T$t>iBI)mLKx>aH)`*3OGB2V%@6OTI2{hBk)Wsz~BUdSLAwr~XIx{|+HYNr6CERp5YP ziII!_+Kr3F;R-XAmI3WZv$h5P$8(1X{v{GwwxutoShia!gw-4>?(CXKz3=RFKIoQO zEiX5%L$$K{a+-RaoRn4dXd-yu?b?i~ilW9xQwe?u|HA5hxMEG|GhwT1Rg{lCvOor{ z@{^c|jCG6N@)?8Li1HlY8#{kt>fX%{vto~4WIZzbGMw(KAW^+pIoT^sbQFE^)y(Pe zRgs(zwIPc_#`hAqo)~r8AbBNZqaeFX3s(3@vWBc z!Y;lpzd@%J&Ap~Q&;C65-8$Lx?CBG=o2)(w-tV_RK^5bZuk9w;Gs*5h(MR>2x021D z!dx~_)kPo2hkt=}8iThN6t5^-Z+~R9W)od|-kZg!9(uzEZep{-Q_?WvjH?{Gk=o8?&ZR?CCbm4g4hkID{?F507m3QNyft zlG`qy`$Rk9`$CQ0WLe{yT6KSY=VN%OBAS>mg|m>MHh=OFfw~JCvn-`bHlV6=g*Zit zSn%M@KSlj-2FUIw$3Dl53cZ@F^{PEB+Uz!PTrW0lyE&KxGg`%j41PYU={8S!0+G;T z!WOZu7R7G`!=dWs%3xc^6nPDN7Y*a12{;P5q59q!CthF1~n z@)V!yvYb2nhmJeycVmB9ZFITe5cvr@yZPZ2ICU~P?&IUH{?h)(`DIsA+d-6s{rc*v z)8zK{Rd$ZIUd>Msi{j?sX%6H6*bmNFW@cm>w!NlZRyxo0mh*ASpW=oa5?am1u6o!H zVO4}(MBln6&(nEVK4E*)r z|Hs1rH^UQqw)%z`Moj~YDUOas=>g*g8B@~Tp+iNZ4YuaWyQO{3axWUp|Ubw6_ zJ)u=Q84Q-QFrKc6v_IeZW?y0PiZwAg%SD~^qdHUn4Ef34LAfZb%A`{N>}q`0uV!ZT zT~X@rjk1r%BwyRT7{ARY&#R8C{Op7C$q@65d%w(c*j>BCVDZZS((vo;Z~SM@hdmz# zdrL=j!3!AWZob0j;}9 zSv3=}WA1N<4OI;*DozFCfxQSX7+BX8B9N{wW~;D|s@{EI-SN_mJs>LQnaA&Kt-PLf z_N`&~%3HVU80Zp{&Mu$9a~d4CP-d#s0_pk$bEQ)EM$#NPH7PrVdy@xzWO7}17dIut zuUMKe#z=_KBZ5?!>1#FIsRgjL+8^4{NIN;N5mmiYD^YE))AmEuWfb&W7d(`&O>=FO z*ltzSiL5m4-z#<$_n#v2VP72@V11&loK+mS=HsPXJK-oe@KV-(*@jD5>L+Ei`dE|@oHZ!!oy2_rn0GFDjyua>u=dPyU%<+^l44E*5!^p zP>{E^s;Hl^5i_L1Y@?gbSZqs2Fco?wN{GuEAkxJ1L$ei4 z)@LX9Jzp2vr$fO7s3eDdh&kg|C#S%DZf@^Y^@&ymz42B!`iqoT=8{i(7S#oJ*Q+}_DNGSYc{RMx%5=>nKF$u^n%mDW>( zuF^v_a2Z&fsQA6MaH&KaF(&uck&*3=S`pEwo)3D$&0D(FY|Z-%TGA)Z9wjZsTLv*t z-j?>-bLtYDq*J=nrr4dpUMMSbmSFoHJgbx)!bm>X(a=!$up**eNj=L*^c6689D}SC z5#dkI9C2$yF>Xh~rgPR(6A%&Zi{RSfdlbA_i7O{bOTr?!r%;z`3=^dnm z&|9bpL3#(@oO{o?-*fIg_uTt^pZE92Z~HviGi!!%t+i**>{+wcXZBI|%yn5N#qc(t zpX<|Cm{e6aL}vA0yR$x&HLJzGm)N0iztC6|`mhmhQ|5SHrkstb^BJq{H)eQJ0tI0t z_Py?fZ!LgE3_#d#TMVqEeo``5=z8W0JBPuWthbTR!eE>nUYF%PZr$RZ8rQ}gd8bc& z^ohAw znE$A8Vf9qff6q(|n|L?Yp~HzNS$tg)f082I)w#3)q85Ff&t1?~>?zMC$$b_+5+9jc zDqnO=l8HmQ4)saR0QV29j-+QI-VqM$$?t9q;;x-H>k%O>70`aVh`Ls6W*0t7g)}Zy z%JOb3-rvF-t2$U3hy^5MZ(Hp5;g>QeGT(rCUi-NI!F9hcYzT?N)K0mHt zFr)5!DpOn|zuG6}xP37l5@{yVa6toOrS0*eAy+<*>$5X);6K{9Mnv@eciI0!0fZ_7 zgwIe5T{gcT6q!k#2Vf?i=$d0u6}4j+7wpF)t9;d-JQv1T^fYz#CU78q5|SHpuhlDdjEw4tUbW@=nPglQ|B;Q8lu^SV;v4R^3^@|%k+Wg zRRA}tclS^HR|em_w&)S@Ix^%+TZ?&ayr(5JZ0jIzi;hrg`Lcy%#JfbqI~t$Xoij#r zt%ALy>MKGSV3)3M|^$>)=GDi!*8eO_Stq;i$B zcwvj0v^z2vR1b z>CcikjUa~I9Yd;o7D%1cv!Zj3&By_4F;F1<&XY{bZ)x**tV^*bJm;g9Ur;2nhq8=kPOecQ#t<8il+7 zkY@F1r-@dTA}mme`sv|gaY-gd3iV}OG{zXO>TAHSCZkWlx}!;mzz^~+ z26@*?!HoB=)iQ82W)6H$P!h5B>2SDG%4}@!EPgC9x!p6r6lr{HaC1-cZyQ zcyOxhKn|o-3{=An7fw3L#5OyjepLFDZ}?o|5|}dBvd(AKt2vNc18Q&Z0DRdv3vG#= zY)9E-)r%L<1BUaH4hNHlbA%XRVMjGa;U8NugUReAItoyLaRX^7EC#Uaxo48Lu&})6 z+u*agb%yRc0y-bNq#1K?6JGSSGw?L5s0c=mqH3;@SGXIl9%-5s&aafE)Wqx`qT;;i z1WzkkW?W)F6+0U-UW4o^|6cAnDhRSxJ@pmZhCIb0^0Aeyj9K53dUM50HX z67A%U5J~vbS*?n(=Vpt-0hnD~2>MHZI=$ zuK64N5R)vG&YM5jVkhal@K+3V4DHP>&osQ&sP@t_mnnUkXt@Z6gfz0R?uSNDQF}S^ zr~&W1-codQ*Rqbw2fmODi%;hiPV)(7eAYVdi#7fcS}^#Fwe{a#7t(v1UCI&j9BA=j zS0)D^(I)s6gycwe(KbqWm(mzlYA>T1x$b>9!zLNgu_(@_;9WLtpTXFWZ#UZGH#U;b z#f+59n~7-YQB4CML0mE0Q`OF5(XzKfI~F)wX5U6#*9GbnEvJ?Os1-%Cla}g$Qr@2y zC$SExvy_Z+UT(&bkVn}!S*Y4%L;nzn7Zv)!@Qp z8MM|$xacBVyJ=N+`1c!}tyxt$rh&=kuEU+zW#ppz4ZXig!9;0w_FN@_?Pxxv-) zw^kG7xSFglQ@%Ev*n?=k_B68O^u|A9YMW9JS{Ox*1htFaih5}SXdQh{2yw9{P~Oqj z*n4%n=y-m4cTO8)-N;|6-ZXG!t!B17&_6BWg#Fsu7_OP)g0PTWZq6(E@=*Q# zq#OogVO0sSlABWK5G{s6qKcbgJ^FwGQl;=#C*3Or4B73bZPr z9|dOIjns)XxbWB3g!^8GwnfJ!)gV|A7NH55P><9ssTDb9PBzXKqpmq?nLH9pUdC*D zCcnY>o3Ym6(zSQdXkj+0T^uS~H>QU=%`5&jxZdPp^!8VQ)t>eUP~xsW?Sq^+2XXnT zBDEscW3%N|8+cjrl>bj6rr-eb5T4rcySBM3#czhsmT>z46__Q={HCJ^W*@`9l}_HFNRX-Cqm~mp=bl;h)k3Yb&c1zi;c7`PcMVZOL?Gk75{g zLke@Z%$nSea{UcsC;d>}TT}Zw0e2*h{B?TWw=5h5@~93g&hN9A*X6AEnqjBywTuwL z@Q%rRwxqRl@l#`-n$sPdeVLew8soWEBf=E9xiQf9K~?(5zi(VK((H8i*w$eW)Q zGK6b#81*%jHr$>rJ1g`25h7eH+pT^GIw?SQ4f6k~kbfjT_{)*xk9CQNa=YZnx;r$( z+)S2id`(((WVQ$1qwDN${>E(4FuV+psL{8ST7c^; z-JfC^bc^to3EkbqFUN?AG#H?MH7iA_CPokrL;5|NViSthyNb56Nr8Z<_?W~PV^!g= zjSORjC^xX?`>f+a1;xtY!_O>4m$glR71gAgswwvI5SA-26wm9$IEZWVL^RYm6<0uy zz*-l10L^WSDwiZ#N6hZm8#-l~C|!KQlsT`HxQNsyO-IXu~JXx$_;g45xSb$b3|TUI$)w#A*+I>6h8f=4h`TU7@PXWnrX`^t zb5L0$9$ap)c0Vg^(*QmfheArcebhjJ5-Q7q7Zl>keS{oJr29lR*7n`dstD`Lfdma* zRz1eV-V{oMU^vBC5QEy{KFrykVyGgKn0N6`5| z1CUKF+Bk!`vuEL?qxwj~zK%qMx2VCyFR9&?2Ru*xJ-+%es!vsd1r5t!&7pn%`zP@q z(t@?048;}54Y&8ZBNF%qmCQ5xSgLltWe|eWyp`!(JDwgSo`&r^wRF7lQ*cK45zY2( zcXj2BWT>V2YSAZMT8wU_aXX~SIQRR3ms@}B!OD>oJZ^8xZr=*LvW#)zW9^MR^}YR* zD50%8Nf65U%9b`Up&fDNR=amjvx>;>!&Yr?sZ_01^}w(0Z#!UEX+1xUdxy?VN`*nP}684M6f4k^z9&N18?TAxpI;bD5`+7Nc&TUjobaaQKj&rGS9QpIKv_;1E z42~BVC1>etQ>Mti@RIP%*{sYM3i9rj_e@1PNo5( z+tdf{(>3Mk=jV)UjpRBxpR>&|H_KV%7};8#A$u)(h2N~z5|ptdSYB_)u-c6r41#cI z_j9lpbgS?&JL1wR_j4xm{31_{`QBI5diBc&FWA5(Y5Ay4x2fQ!`5gs=a*%Y#P7?!- zNVt!)KW0>bkDSnrmXA;Q147nMr;L{?c#mDq9X%{w8s$(@lobb0PTNj$X>ALJM`l%v zuEiM|kL8)^Z@%%ET!_lJRw*7W8TUcQgl8wAT_AE5yf~4xT8Xd#izm9G`{BDneeJeC zK>GuXX_LOmj8PpJRj>OFMIk`Y`+TkYHfq{gjz-rrzj*;wb$Ckc{ zV8rdd+VRrp#IZfYTV$>KSO~jwr^Y^}%mKzD6XlwA_>+kGj3R(xIhtT35(i1W_YsIp z<7~q&BSWaDp{WROf~ab8T1#k`4;$`zJIp+nEc zS)gv?jyTFRHK+=xBz~$6|C7jFyKCRyx5j>Q0|UzBchEa^iI&!bX*RV(%tVbGhl07X za>bfEs<}+#cGD)8547Uphx;cecKnRKdpbl0a4TKPWP}deuDKvRh7nqiMDd+pRM+8Q z(R`-*^nHCw3^%F6I+Vth+lJk~1 z0u|5PtCI2*SZa{-5h)>)=<%Cd`6030Xl`lysJJhqE0O{aW5q_HaXwiyjTW-^a4so$ zs~%QH(FrO#RZEAs`9lO81Fm&EcVbvKxMRrd|kc9HpKP3J`ztenuYgg6pi@iy0|FL(S`V$ zZ4S$(pg~q?JH+a$a=4BzWx6R_Z_Npi85 zcbZ-bM0g9K0R>%>Wvh7J>8!e<>@W-#`iPSfefwoL?W5GV$e}gnR5W1OaofHf(W`x` z%>Kp<9T5Vg8mnT3<`pG8yg%unz#pdsMP~_CyW_l<+=hWxYM1ypOx2|#Bfi}HT;*h* zbDoosGkJW^ex;{JC<%WKtM@f@3d=W$D;#$KRYUF4UBVOC?oT8bpoB(tZD5FGV0n@d z!436qyNTJ_ki0(#ccIy;bwBt?#!|q|im8dFcazE)czBv}ISgAPPQ_XBfa z_dFix8Lajbxvzd2(7iaUn$2+<2#YiBoNH)aHvev7r%MmyB)afr`=xm*b{nOb2#ug}0X`9IZ>$OJ#7p`q5f0)ZZnQ zpUV%^8n;mC+a2t)S;@kBpx@!$+6K~OgQ8Yi;f|kdozvSQ2>8mnDmCMJqEhzt%2DB+ zhFPHKuMlj~5=(aEM1X!zoS(Gi(V>%-3SXKJ|EP!7k{$F@lG+`!N#*!bkySW?qr?wk zfXzQEWkb)!^xJgxVZC4oUpg1$n#<{|ZbbZQSA8R8kP|IMq_S-pXyJ?e-6+>4+mSa^ zx#UpPu99m0sxX=)ov^Z(()nSLfWQ2<;IS72vw~ctckg zi@1}j`dVqq+VF^%Z_TIel`XFy`PKSxqiRpbNhm2;XJt`MkT0<-S_fFA?I@&Gq^_+{ z)9wN>Bfo+%Lt|G#OO3kGc2+I)p39QE`jL8D9UHQW(zqIAafvJ#fatE?diSOiw4k%XdLCV+3lX#5C!&UfT97T2Dq zfj^h-YUY7Q>FQRwZ3>H3^@tuY1pFB1`$@Et9*j9fb_9$U5mfD;5SM$_kqJ+;_sc)> z$lqpk3RoJO-BV{HX8n5BY*LEc+K~yxZUz2@HVH-C>jJg?w&&u6A?vLNOG>;5v@Oqd zbRPh)his(3+HJ#T!^-`ngzW^1V|+{bwyA`s*1(OdSkPKKB*C!yr~sdkjpQk;RV?vl z`%-M#rN3ilRIsvhIwLD-d_{_T`*FUd6iX+RIh$&x#9gsvGHxi-f(?s9x+%ET)<7E- zZ8=YV1Xt8qOoBSwy+|XImSV4oy1L`ksxWnm4XL;_zgw&pe1K@ix*acnLs3eSDCd^e znJ@8i75ppWO)ORIz4BU`X~Xg^aWPP*SfN^UufuQv=RPGUzeO!}i8GqH2r=bTn5ARE z2Zk=mMH$)!Cy95!E^j^xwwc;d7WLN zZ8rqYnjXfQ>b*M1)0VNlaP(m z4U?q4wib*LKfgyiwK$g`gA3%Ip^<&7R+~6dNLSne2k(rBHJA>B5110v(Xnf@EtRX@ znyzaY<0ka7H)p-*=vB7P#Joi`I3|x1*@wJ0Qn^3y=5+qs$$cP~<9h*t?4audw5$|> zM|~o?4&V}f&7{TQGUj15APrl^j8$VTU0q8=##IJK&gyQ#@`o`hNoGrEdJEfusGrkR^mPb@DY(=HUN>F_bk ze1UB}iV%G7MZY#VHa^(YiNKbx(5!2#QL@Umz*V>%&{^*dhrmwujEX|-@gjL>s)LdR z7p=wZ+A-3Ih^Al{NO3UXgu{ek&;i$bHj~Zcm$hA@MK)eN{)~c#s>SD$^)=^88PLdP z)ozFO3J&vrQLV) z!FNxe1{kGmA;}$tan{Pd4j}mGsZg4{9Z=kw#WYL%=lvua$7Esxu;W3KQ*L_W^nK>e z0%eEwsReFox5xyef)X@e-hb2N+rNjAe7&3eA&go~dWVE7GpUnvIlB2}i6Ki(B;Uxk$oc1F|1DTPhCV=2}pt1IN zil|d}BmTsuoit`0pffX*sZf06AO9V+>ELl*a_&fgnU7gK0J{K}5d+Cam2Un4>KpxZ zg0`c-8uX3QHBxG@h?DG%2Zn2TLYd~2cpH5<70@_{73p1&!<0%wcrvta_Fg0VZ z6?Dd17ctZF8mV9i*ExBtOB#*x$Rn-)U@6aGvg(7 z3M)ff)nJ3VyE6^nytH+D=|4Jx%ZSC@uUrR#Li@B!njy|#S@(V1vqnD3$5APVBhK%wy5VX**nxDuwLDxp5D6bZJR z=WrMt%b7_RqIGL!3%8g!>tdL0o}ceEt)1_O?@+w%+bCt|)PH`TDgI8K9}=d5?3p`G zg-a@}^H1-NZFNSGcRT`>?~!ke8__!_RPMce3{DGoY7!S|V0H2j-n4{CKJptm;%HKc z^p#EO$SADs#@)w{O6;m@wJ4k#nva@Jo{gQ}L13mc+bkifs#4VoT06*onQmw>T|mVZ zygtRj_(nd$Cw|y&wQ^O8AHS~GKY!?tX*!w>h-+zF1}1A(+?=R35vfe5>aOsm$h5GY z#Xn>f-cCBzInlBhheVr@B({TVKj~LZe%#^zNi=5;jT(5ks0h?fq2#gyCrv}`CRa)| zwK@#_3YNx_2j2TiR7ABjcXmcW66pfywz#@FUP=~%qLrsuco2lMsE6}1sjZaBa;pQH z1n`baF;1^HH<$ShThkq8EpN}PnoZtffA=2z1?~i|R)N?0GHUAMI2DHm7T6E0ZcXcI zx{ETL9f1$GvJR2NjyF!KsO%^859-(NTe39Yrm6-VxpCX^Glkjn zXvyh_v3T?eHy+Lu`gqGS2Ol}3kQVz7F+O$~9m|hhT*QrhA^x&7QxXNG#9IB@lX&EC z*`gjiUsjxfb%J~COwe%9|oOdz6meB^sc_<I zo-)@J7w)t+YsY93^OGn%pbw6X-Jg{qsA|6fa2^!(lL$eQ3y+?Sm-LR7TG+zHz@1Qq z&0AupYNWw!m~PGNtDnqJTtYJ#EiKKYFxF$YL2E}-59j5j`m`C9I@Ch#UykntlWXtF z&3P{FxX4G4T+u8=-jeFmyLwAHx(=Z7+CsEY?v1v*T#70c;laH6?p~k2esKRZKK8Cq zSmiIK2S}{eElqc;B9GB<@94P6(&*rXzSIV#;0@xXfxcz26-%1V=6wcMU=4Z!N6WaC zD<$dRQ6ta8B+NoB6P6B7Jz}Zq>2pA+R>|5P0HD>^FO2uZGJEA zc=4Ya`F*1TCqcxJv5tF(J_)lbs7d;rk{Y;yw<<$HW3CYESfP0_%eXIF&+;(0%~&nF zLh+cUKLG2f4m}W zghl!9z|A$zi(O5gx-U-PM;C`fe*CMi57cFA^(z0RUkq!FH<4apS{ja zqd*s^4l5|oy_|hro;gnGc^ptksZ)@lIq=U~`8TxQ6@jhI>ZQdVOBrcOefyz=)JUL1 z6;H(5%+q=_FjP}KPqc0)hOWKKsz*xm@vZBsrkhknLGP+bROD7el2m=R^-pqiyz3v$C z8{jIF7L-}u$!k>YEfxNFAai}bRVq+7`9tyP#tb|_y>GWFlekgTBzb&)g>W9*ne17Z zxX1~Ta8i-UHR5`1ZeIyVu8y#C9$d5-Viz81lo6quh251oV5E;p>+0hAZ9`8q>G40u z8vKhsE_@R_;#x9BF{Fk<^-8)EW<#HUbN!cE|DHhY*JNpQ-{J%IsL}FAvOckT;eeil zCP>4^*HyXPP2jL!FnHrOU4x-a{##mck~aWiuUblx?4oLofpn!uBxXaTkw&J+IUbXa z(UjT^qjLf^r@V5IUPRf9u}Po$Z9~7Kk%VkMW1Z*Z$^EL*7UqUZLm44_+HAb>hG_bU zxwWdvmL_CaMEk-r;QcO%l$jlKDxe{Oa z{`cyH$fpZL*`J9pL>GP~{jCns#eAlt`hXVr4;^NGb+V$DlsV{9?Y`QHa>@AEp4J5c zhi|H0py(-20N@{Pb046qGET*N72$n?QKgPCPFZtkzm<_ADFZ6Oo(u}9oi{W)ELsdI z&fe`JH6>dSC~N|P4SGEArDaqKGX0MpAS_ui_vyi}%>CP&^G*25uySSmqtD6wk*NlI z7IJi1iQO{FH56Zxjq=N6a_#{wyQdn6v^o~a!&ORzF16Nrzk#L=URXHyp+LY3Z390< zFSld@cylStdWJcyGv!FM!DGW^O-hB=th#imrA?meF&S;pqDK&(;bcqL1W}zmd4^1$ z=MSk>)(UR8hz$;-7M`MdFb%1D7Z_BD9lRdsl>|61G}RQ^4nD7R@f_8y)6j}hN^L#M zA=hN8v5QL8Mcq|20htOVEG9HuAp<~K6Dl=s?$#Cqc#4#?sJ)WKBdc(8;Pi0B3?AaTM+I?5o-1F5o`><5R%)r)XM(_)|_&tPA z8Rw$*#W}_CSSto;0JUrE~UXH@$eus(_H9%Hd6-6&0D?sA11X`E?8+?}Hbs^0= z;0=5@@MfUd`j(K@u*(q1D~@eCXnUDF&kJ&wu|5`Y8@5FaX_yoBfa7QHQUV}h#*{hy z!uYnc2FUn11wT03)lK33aU5|VAsEOJTR~B;WZ&DB!NA$xd9aO*e~*pH)^E2FrAXF7 zzjgcZ9m%xQPx5Km->L>T$DPT~4xoOmZEUv4Z!=wNC7hfrF||I7=5$jxV9rHrV-Y>9 z#z6P-Qo?F#Dn`)hPR}z=>RR-|cCz{ni)k&G+mA?#E5epz-38bQ6@W=aVaq74WE3bn zI6MSw$eXbmnFk#?{n43F#ULD2N|7A$40EhD>4sUXuX9^$48erd1*kj5zZh})No4M) zWH-QU@avv(h-<}-cLd4)^14RUy!=&wCkY!`j6H-jf_W8pc_?MnIK@eAyw$-GHDlGq zQQMo$G~jm$uKpKe0c@1^BBPb))*!CL1-?3Zg@(v%{!Q_jb~MynnQM4bzuPAxw<<5n z*V2_aDdwpL;7yyQ9DYqECrHl7Z>T+~(cv?HW3r3LfWn@+)*(d4PpC#(zrG?w&@&P@ zPcLjhty@&%i+qC=Newi=+4E>}xKq0gxV@au&p97tFDGRi3P zUpN72p0{f|^r}Iui9>i z-f_{GL6pDIF87qGZENOOeW)#)B%v+!pIr^n#QD`KVn*oObLyKO$sC~SBIMt<{t*ot^d@X6h??n_%O`Xw$ zy!xBMOdY5)*FBqss|vbT%u5o6{e0i*k2+I35nL7HZ!Q7h2~Zo+nq2!$Bj8wJ9Yb+- z1rwy5{6N2$qM*CX5q~;vNS)UaT3ut5n3o~pnGpTPS)bfOl6frH$TO*(VDfpzmPLL4 z)s(Kz)#%$LiHhS3S3VP>|CHh)a}%QzAbu2k26lw#t~|Er%M65o+qTRT#%XG#fIf+1 zz{0@U-Sahzq;y}DZhRj!x&_X8VmYs61Tp;rJ+4yZW26{5R+WNO#26jc9sA#@b>GI# zm<1uK8%vLy@o71{99qi+>=Shw*dE!xoaY& zfp_lSfzCadXt=^r<$Il0_uEy}CcAau>a!=qX}aGY#2sFkzI!!(`w}5Tj5i??&pN!& zVMM#hd?$8T3g{dtXSx)ycT^?3P?V_@9g3j)n zzJAgtU4|ij<1wuOS*Fna5vC4vC0H3S z`VLjC$n;Huvr(;Cf2jV)rCT)7vE`zeh5kFWEc-M&V#i^-l{>~|Fa|Z@im@eZhT~KQ zAubFfG@i_Uob*4gm;{5r=8ln((M)!7pFab~zKQ6PTgSq2Me^#JXr}1WG2E^Q0gZA~ zcnl+rd~=wd`!`2SJMPwR|LIv13y`F4a7TVZK7?gH32zQz z>ugpJN6Q^n7zi&}a@}8?)t-|NW$IiWPr@bDUGOO$G|E~Lt4_s|tFguPVn;HTSnxiV?0(reBW0T3@5!7^I}krmCC&RUtdx zQ0sNvaqqUn@@Rnlrc;awFWP3-5%1a6%=tJ=ov=WNbZ5zL;%TijoNO!J#qMnkoD!C{ zWoHYTw|?CZdG+xR-m!lw;QVFE`9Y7#=-j*KiD4(VzFdR9jX7Z_CiwN$fx}0#<1vLG z8y?}Cd55>%E6phi7eLSwfbFW5av2BVpzf>(8T^XY^+b!Kg`YWi1sdJ@fo^vd8Dz<2 zVh!HT4ucvkF0klTY41}6Gw`+qS7;=Eq+st{xS zbxPZN-k2kQw%9CvI)4Z11UXf~>WGK-Ow92haFC5O1H$*}@sU*NQr=Yr2oLauj{d|tn9!^$msI1gqrl$X2;xdLxg_btghok)mP9u!QZd_ zPyPJ@^bf?`wmbTlC;R>pQc*Zs=KZ|wcXIw|@>0+0)8Oudi_LH|IXBK6pN3i$dEVkI zr{!BLtZ{>PJv%lyoIokoDF<{qNSV)%S~qS?y2fulDd|2=1H!=H=`HEt5TY$d&KmySD)w&&&95fO%2zc_R-29#> z;1f15;loei+hB~ZacJh;s5%zT%(a`xuCfm0`rCEwhk&Ir4FCSlNp%G##qW4WsHK+=xy@kjkc&8XKvEM;W@vUCV$JCI=nnF`Te?yLy6mnI%+ba@1qAJ+^-N`8uoIm zrG5Wl)HBK$zi~LJI zEhB*{`JyonJ^^a5hc31CtOn=v(bTM1!<9EbeEeS<0AKw#F)Ww3YTzd(E!}#8M?NEh z%vmTE#BQ4AE|SqiS1mMsn4Xcm4P0NbC>a#JBo2v`aOTQqO>_J}*{`h{=dLfVt+nN@ zs}_<9N^Z{-XJCn*W9fT-)gpRa{&!I01xvmyqf+o4tN^ zP1cY%6=Pg2yjHz4dDd_zQrW&9@*}k~f1GA$aq8Ahg{zi#$#Jp~i&AnR{;d{v(+C%T!_DpK1E{G`dT-QaU=* z!&-FSRWLA^#;xu?k~UE=M%X)j$r8+OUY3+@O$nQ}?R_j*y*4s!$uZsv7Dxl3?g<-+ z)#xW+Y?v2&I01to|CO%^qmf#nJGRyOq@c~mCD+;Te9<31D3j^`(6SM+FTHF5{QZCX zZ_zx*DM z-;tKE*(I{2*&BW(Ijr{iy1Us)Dvtgq(H))7%7K6Fwf=Vo7=Mm;&i{L)n|^+4MzKqx z|7)b1%fDcz5d0qg8R_O1@_&zX^9#m}IRRIOfVe_HnfV3F#*E04fGYC~zKtNk&SFVG zwD|@7<`=Y?Us8gE@?Q{f_z5*E2q^(V4N=0s-;i#8N&SC=bR$GSy7_;_?Y|=3T>Ta4 zhGy;;q#M82Lalx;$XSCgkcA8sy(d_W_h$)#myn_qISXFX$PNi@xV zXBPCFs>S?$B`fJKm^YUQ_&JxaT)KSW7u1^z7YQw1;(x0CF=E^4MEm>^Ypqxh2 zmf*Z8n2Ef+S@S-{A3<-9gP4x|N(h%wo(;|&i+DZM|I|NKrPp6x zHK=QSlozKObs<~Br{!EaBRFDPCpDLAyr5~Z{~1#vl!u?rmBk#?PrD$6tZNnSFpE%l zUt1^TAo0|wVPHy4#!@D96@TDAQLmlTdZvFydrVpu-%Im-u#S5Ct81-$?}2l#T?!WR zM=Y>dqMWYVk5E?nemcD!`cdxy-{_|I%UVCwQ~;kT+7QKl8PwkZSZcA=PK~_ZP_}e# z;|X2xRdxos_H$d}=(Y-M+)G`a-lh@FZN1~}x=Kcq(;v@WC{e27!yRpH?iv-XfE<(r zzZ$w>2Y&_!=06?$w(66n9p$E)8Mpm}COy!Btv0J|MY)P}++3hdNI8kE`bCblD_H0q zS}5wN4ej*@*z1Osb{|ZAO7%Buw55s*i#(bE%2gCc6_+%*dsQNcEshv(JA}&fUm3mB z%j8$gy;Z|E3F{MqlEQARB@Kyx`Pj)6Tk5Jhl_2!a0RJ72w)yVrEWxmhl2S8kY>PGC z_ApDeejT=>!eko$*yxDinZb7nMYh)rUCLHjR^5Ao(GfB1A1ye>vL-jhhfrQy44pFz z^T=AL9&NoL?E9P$lOw`G$LyZl`^xB?{s$W7?Vrd6r!<5k>CFg}UhC_03I4J4k58G0 zuGPj?);5dC06t#LcZ(!;iSZP==Mx?)(JFAM^v78@vjP*hV=AfS8v&u0%e4yv3R`wB zh@G7jiE1wTq(URR1VekPl8!1a{7q(FOF2LbttqMUQ@6mK>$7&Zq#SSU<0@2&6sjjG z$jGO8(tWgxzjhg0sQ0FwK^ySO{gP3*Ad zhq+I`xv;A7>!y^AlzDM*1L3BkJt3q|-h>A|vENZ*BZ=&5*qeHCtNsjNt?u zF=7!8t9z?T{bg&WN3c`uwE~)Ajnvu3{XA{*8)?4BXTH9ZS*xCnlE`(;`9^%^(&OWL zqlAUX9vhvjx^KUhm6++5l{g}7rq?DEB~_s~5J>(Jms%d(XjO^B@HA`YK;I_Q{uELW zR;*CQz`}q3Hz4A_-LuNY zzQ!cA=Dzb0=9a_wgztx0k<_fz4qf%^kN(E|=u2{{SHYX+(z8iVgIX4iUE6VDVk8rgcB6{A|4`_&RrxTz!;1&$)| z&2O7?t5a*-3Zpk7K74II03bvahfO`+ryN-=j9Gx*<*wfzo6%2gYNuZwAkAUC&G$jC z&r-sNwEikWA${~P)s;S#2cXX?qxd0Q;#1ueIx~bmBD!7A_}zV+M*ARY zL77*w0Uyveh)Y0gH$i^w|3YkYnRNYbh5skLjE#GF z*C=%pc+AQ_y)>#*l|W6($aNKrE!9%AEAO`(qaVMZd6w(!6862yaTLuAu*`hq1)i2- z!FwH&>%#yW3GMo_DfTxhD#a z?VPp>3JNsM^Hb;gWV*!%f?mj`&%bm0_3r2)qPRn`Fx{f2qAMlMdDxfQ1}nh%z4=WQ z%g$>F5o=}Gm)Jt!0FL4@)*b7ulPBB_P?qrI7n0>wg-t@O& z*p@q#f45aw+QZ$Z)+2$ny~$O-Wfm@#VE%5}MwLF%>4obEHCL!rZ2yC#uGbf7R1XL- zY{#rQeukem>tlUi3wriO6N^s3HApq4n!ni9I186)J&gGnBk%IekO_IvfClDk=C7QN z$EYo?&VA_B3&DWKNM6Z%e|yLN<*rc2{m836_e5Z){58TbJ1G|^+-<^DwJ|yqWmbyO zAsLY{`aENhk$6~et2tqF?sNG=3`oqd*g~Bx3W=;CvYd9^$aCR((azRPDGlBS@4uwg z=HD@h%Xtj(MST#5MO$_P+3wkeMEAX|gWS0xbJSuPif!%aA)S{wU_n(R$2LHrSl{B0 zGu_wPNCR?4nFHtHzP-lNFGh$M3sGw-JegZ-$9uMJFs7obf|nqL19!S1_IUeY1A;GQ zq^tJyt*Tw{ZF67((dZA5k*f#NG1VqjfrEdlp}N=gc@x-QJ6S;VONU;YFF2>E z0`wv^cjOWyS9VpUxe_9zidOqs@fn5@;*K;LXjd0+uEp?Y%ucXz%ddE&&Q!XgeWx1N zK(`kV<$;XFb~9c3bw6=)i!f|6&I~lA^8G-#m-sf17tvuo;A(oRtq%cShHTzSueH+o z%@6%$k0mqMI`?gsB!(`kwel;eS0${|THhptM?9d1$HxICUz?39ocNaHaLt-es<*jBUHB9f<%o43}f6~>}C zo7~&$efYnPDzWBkHf$QK*ecYiz3g9IBin|J&5}(Ex_1CG6!9E_DVd8kk!?QNqmAT+ zR^hiuyI8=qg3ss|;)JiwI$W#G>vN;$>WPV~PinK$!;u(nf_3c&lw4K6G_a+4zVk4f zxEho@(~}Hy;p2e&cXj^X&3^y8zaq?)z`xCvtN^z7P-1QsIr}#4*H839 z-zcua!`fZkB#^N7Xu-nT^Iq(?b)N zgZfzOd~y$!27boAT~D#B;S@Y7;>LTZf>Ls-$Ht=ZIPVM5pc`hcc6!5v*>WcE28bCp zYk|jisKC=t<43){U8M)=;LJLWlSTypC!K{~r_DOS86UB1MU?O#r_Ddiq5sb^Pb~r4 zCnlO~ZR{S-;~Bbj3EeG@%I`t)2JTA6dId;0ChD`(w;ofK*m@jt+xw%dBxNHbD>_-0 zVO1fwGj_DQMZA6m!#SJAVUV0HCZ(62bN2`ip{G@X7+iiGz4l_c4fKJpCB=16yb3^`eMG8yEF%XVdGUM!`zg9*DCPq3tn!*ZlD1Ah{Myj2DBb?o>d z06ojk%MD(k*Hp&Zzdv2`@MBZ#e*WAV68_&I|FhmM_*_);;=AGxu1zwU#dO!Zckg*O z(T}LM?%)4}<*a(}`N0F$3j#L+)gENrdv5gKcf@~m!lyTk%){<^n@Mm36gbvJSmRze z26^?ne;XY2I3$kq<%*y2neg$plMrodtGff>jqKSlU!RKip*K~Kq^$P^_s!C8*f2Z* zeHXI(GHkNL$5%b$#dT6K)ISj5C|wy27@(e7=!$K{reIf<@^F@xE1XF@W( zLpr7gNsTPWZyDGUu@>8V`q4;hF*v1Vin6Xl4tbieHu{N%=%tyN+<6m1 z->-K&er!TxfGg*N5)VU!O(Wa==&<7-3e)thQGItL#4-X)RithwdZjV4l8^gbZqZX@ ze&W2cKq+D+H|lI2E`Av8JUt)UH8VE7k?4RToMB%oZuWg0D8g#-GG3&rHdAMq_BM=W zqX$VfHI44z{Vw#8?&)`ymAkyjX@uiL?X+v+1W=!_@USa22Xsd?%`6uw5lk5D43h!c ze&Pbk$W?jokb5};+%d(WJfak?N^d#6e98YP$AonZsNlR--8Il)d zl*q^=g(Uv8Y<0vli8>v#bMa6tq>QY~2;oCDiO#Wel%T@Nb7hP^zctN1^AMsk_f5z$ zFpzj=BVu9u3?c5t<*$~;n7^GoR4Rr3KkU7ASe(tWFFFYX2^K;^a0wQIyIV+*UK&gABnvc+dd`*C2ztySuyRPQE1T?)9zv+`aGF`yP4DnSYqKdAsJ1F*$EE4NZ4bD+Y<@#E<=* z`bDUdj@ex$h1My;doR&5xaxg2u=i5`2N%4AHo1gUyl&OyjygZ6XBEbsj!NiZnS)G{ zk3k&JCDSy@cr?regrdz4S3u0jtWgkWRUdOG25^;6U+Ss?E4Um~4IrKF z)O$XfKPvxHSn{;^G*YTXIGYx?ei%UX08$AB+JCWk0PNA7Xp zyuL+vU4j;tw+k-VV_%dty;?#ad??3rt*A3*su0pXR)8kTMGCCYbt@6Bw5sZjo&3~$ zAU-*-SR?yeiSWKlB|vIHTKsbv;z+3?9b^AllLVR z9QmM|OJLkORpB=upk`mA#zzx&?5BE%2B)}qaKOi7pL4CgI~+vo$FY;;Mm5isx>T9c z!@?o6CG_d>4DkA;N0+XW6(~gWJ#Fh4)8vRV5(fd;V0S0lT;8ivVS zx}{su)n??(K2t~Iv!s0k)n=(1bjU-y>=8XFiw*H0IcU>3LcIUTz64X2%1V-ElHPNu ztXyOfupxwuMlWTX%x?o0UDn$&TiajLE7Xx{V@K@Pdh<;!?%7vlP<@I`kB5KBcA^Z= zQx$|b<14Ak-RliEU8?WmX(UbmFf;DBHLXmg<>+r`^`R)jk4E`T9ShbtsTD z6YZ^;pL1-jO7lSV&OLKl5Ue&zi!|0@6SnAw8maK8u&rzklr`&^96b@214_xN6_Il! zC<=k$bI41-FWbyQiQ*i0J1r_@LmjoluU$^uw7To2)yttM4qHUyXi9+e^W!GD@^BsQ zgr-dGA6=}(LcCHgS&6hyEZ#?VxMD?rE#5l5XYS8{Im4CZMmA9pEfUH$jl&k=b8G3C zD`Mcz+-BhUZ2X#!OZ&U7Wgf@dhVXXYW&c*=j`XJ%5)gc~GR;1cJK0^ryT|7 zRW$9 zm%HM|AT@}9_d>H)(Kt(vCNi~6rUM4$fNq|pB$|O8reIS%yXVyuoBIoA_%5*yM^}uC z1#HMz?Y?ve8JYLyHNvEtj|J&^CvAVk(&}Y8OignK(R)}vn-$68xQiR zA*~4oyVe3VvNxAh!zLFgUy8}-S1js@jZvF*pqlX}K7$&MUL98Ao}1sF7fAV1x~jUE zUvH)l=+QaU^fyN7*Tc?)mQh@o;Uh8XE#;>cgmo0r}r>E^V~Eqvc1h18Td5_|$$5%-8JnRw)W+#|6`v~% zc3fAbdqQJXD|=ads+dwk8?7=Mg_g5{aI18y_$}DolUfl(MH&Phze;1NbhLF1;|uf8Mc-JiBl`ddzE z%fG+m-T5s+4e#G2-`xKQoAN&@WizhnwxHjVAH?n4|D^+if2xOjrTtA!()@nwPaNm} z3JOzX`x+wl&USN@p?RyT*eklW>HZNXEUoTJG+Sdqs(qTZuKQWhDm0VxON*5F^}KD+($}xP zPHd0t1cnhzbpgT8Oq@Rx-SULeEJbyjJ*|YahOvr}wl+)TqEG21oWWPt>dX-Q=NpGV z02Eao6quPnt|3Iq`o!B@oY&X<6P2>F;ZU+Qes8k1N<3nOV)AJd%)=VAW43d?6qH1B zFw@u5#T)IcQ^Wn2t@o7z%;BHF2bQ6;s=vr^mI~m)oCE;2QN;aLdx0HbL*cX7-hq5(I=Wm~EfSLV zFSbTgconrjIcVZ(Jy)l|(H_YXi@!@x;aBEHv|m6$@Dc_`s1FR%^=3o0p-R4rNE zfg)Wz*1qa9jq>U;rTi*xWic=rc|+EPp3PDwTYM$9pG)h+tzp;F0xO(p_dRb*2yk<( zsJ5M)$Z=@Vd7e+9My>a({_=PwcK=*>dMqI?%!I!}tji_jBVGAdXy#kf_ObdAH`4sL zL9`tThOl(_WKqf0ryY;T{`r-}y1dXQvxz1TE{Qu3iaOTZ9M7fA*geeMb(^d-Tz&Nu~AXBlA&5O`yRwpM&q0(M+6XUv2awN(6b) zIT-{MPRsdt7S@ETp0EtB5|$S_ZcmV02)1>X8gcsjYg913OBRxMGm55eBzT3&5^)Ic zS!iWsO=j>O1}F298FR&3EEUZ06zX*j&c;wXb`w$sf5}>e@5GxCbA7GS>1MNG1*K09 zTbZI{M)cdIyC8?YB>^{r(A5wv=E0)J{HE3L&hvnL;+GKwq?#Ruj>pzvFJ$S^glVsP zZ|z}W(f$U6H{B`RZ~8d~8Iy~bN{*kKnMMi8hqx1dxN+UvL)m1Wzg zQiuE_P?ibDuzx~Y{+ht}b?Vm%vYzKdz>G|;rHCWb!GS7@txPu~Jc*SL=Nv2+ap=or z6stm>j#`gr@E2rNg`V;o#TCnv#x<~WR!#0D?F8^%|NkbT|ES=-P0UaUiXr#0`Q_r9 z2prA|P#U=<1{-%)H~pUfKaE+(g!Q?|i?h-ex-?hFUgg!t8JA{;cTdqXXqJHD(g8fH z^=E)eG)PTy-|G=Jj`MW{1L5{9XQt=dR<*9aSYJ$FyM{BgyP(E`SDH^}fL7}&6eQ8l zT~>zUZ3-tV&$o=*7_WFt4<>i3&>9sCIqWksFe$5JNi>B;R=+r)#98IDk|CwfEbJ#A zGoAS?4NBW(9vvBlZ`YVq=Y!AISOMgt7U*vW_dYOXv}yF1 zz+8Rmju7}X#7zSY^c~D^)An7HM3;!{P_LTLDREJJ{9z)8UhLXg`EudJ`t($%KFgRr zAP4_CbNM&hURUgU<#_(^!Task=iV6@i z`L7HFg|oo<#j+r5%P#YJsr!fHRx4RTpSd}``J^8{J++(}m$4bPpsB9%K$K=P@5UtM zMMUr4M&cw8-#?`*9PG@u#wF56wMuG7dX}6%&>aW|9aCWid&H(xy^@bC(`S{AiU z-rOA%EJucf5udfYFNutxjGgz@ORf>`rv9UB7*B6W^a3x@q}pfe+GLLUDCF#o$e-Hi zf0!?Ra?7_*ZAv*(CZ8PoZ2r|icHq-J$h(s@ABlarfcQ+vv;}1 zU94TotPehF1W3_DMSv<1+>HpFMsAzgv#B?VM!R}pG@`Q6R8K6Lam-ehQ0g8#$($$D z)K&B8=&!xGBe?U7hpp+57_t*MFzjA#p&i}B1RW~AC=`~}?}KTouYwK1n%aYhbNGG= zL_H`#|AgrM@zXbH#=NS)l`ojg)lOAMog10p<+wwcGeKFhMeRk0XAJ*)X~2JXEtgQ# zDApnMGQeGp8}UKSKwdib&mTfVFIM=8(s?F+_vGsJJ*`_m1DB_<-JR3YYQ z-8Cqa?zGDZ^2n_2>*cvS$x|`?-SU;Lz1m7VSBTpa^wiczQuGhoHZ?H?acUkIl!6|s zYVJ=&W6+l^k*jBbi8i#+GGS%mx;sLC${C=cZ^yFplEc>COc(Z&K6r2I0g>bZ$=i>! z+om3plt}XXOG|Quz^|ai>!(6aI%9m*LuF3N42~IXGlZ=m0-makSKJS^^GPg5fw4v* zGCcYb-g|t`mLxt!wlq3!#BC3q*>6bQ@5uCTMf&|DUSzauqrb`5NRY3e9Np3Md3|ag zQxHG5@pH}`Kq;uH>E~bZ`DP>@s=wZQz|Vd{I*&m{LqZbU}ZJQ)Af;b5eY{&|Z-g@>ONUT5dn3rJr7k|{fILhD4HS9`U zgXT5Pi`PY<4N2Xo%IpG*iMU;St{3y0tRZ9W@iAz%HL8$;{=!fS_0ONhD8T1U^ppbD z@uo)k^L@wi2Zn`bwF(LP4sa>uhu~*BJN}9 zxC3;oZofo>M1we@wS}Vqn{u`PiMjp6w}qm6d@qrEr%wADH$Ci$4EbojQph_TSpaO# zfxTM}(G2S96o`6*K{7sd9#Uz!$X7|m+G;<$)Uou}<|F2Fnn{V}+6B`U95XL2uv`D@l!qzu59yTcgl&e&HuxpcmdSs9H?DJMTvafq5A zaJF8ofA$ogqt8w8D4w)PcFcT+W+ljJBp4(XSykG59)G>2_9X?!4_a}jl&m1cmERPX zR$ygv>(Ip1%&G=+#5l6rSgbYA4FA9$b9(z=)(){IV1C26Upp1q30A0S>TXitG7fq@ zSp8y$(I=e-i1rE5N@C8Z7|#zc$JJqqNe4Ru1wvYg*(;kPJKE)_kv_U+Vr*8U`N0&`&uN7ZFjYO2I?_C6jr*xJh5aCAL=+vM21;G@mC&AUi z&exKro_5yWeU@G8#`Ly$DMSfo*T1HMV~SwB?$Y@%GxS8IPniKXN-F`W_N7XeRa%Za zit`t=P?>QaTL6G$)So96Kmx#QqGZ`x!t6R}L0;tWs&*u{#n4N|g}x4JWLHVq!q4&* zYJSv#koQ0aMBi3_BwK$dO%b!ZCw}FUg~H|-Zqg|g${^5n&MfNaX$tRFV;?Q~^kwEl zygwm4pVd&oA^r#>?(o%=_8lkLG4Tw=8A2e7^~TC}s9sW4(6P&ui^XHK=GO_!?(~?M zEOSvi7WmDWEHvV)02v`!5~kPgks>=A{+1`wHw~K`+efUb6yQ8>W89X?iFq#BL^ENG zX_Nql=J#{xC4sJ4nab=Y zy#`AesC<^^?;F52mL_d~Y`$!+pg3flSdE2W&ETyoLl*|{mX>PW;5vLMyeR4>v=ZI& z&&J1p%M)SG5!*S#q-;o>OY%d+-F$2ErrYQ8`H}^#Yw6P$N{^m*8G@snB>mv`WZvr} zu4b&!%aPY7StR8T*lswdfETt`SQR0d7?wTbr#DXfX>LpN5aCT37k=& zBf7U?T|FDKu)?Xb#Tu?{wCFM$nl|XT9znch618B3vQ)Og=6sg+?Bu>@F! z9-YTD0p3@&hy3FagLjRA+AsCfKD8FG9F&JU?1JE);AxMFvmMggl-;nygE@J3O0}?L zcpO6g*b->GY#CyfE{@ZW<_+iv3>4!C1#gW;BuYjb(>rW2ORv$NW1mhJg0uaNxkDUm zg~#?NuLgAe+div-WT^za9}Y_Nhc1vxoW8)YZd{x*7qW)zR$ytj=L>4chgifvffvmU zqgz451s{X5lpVs_PtcytJPA=e9w7cyUI{&T`D&`wSK(%-XQ6Pn8U#14_RJIPTkhN3 zym7g{zJc3Ls44_xax3{;F-N=}?4WTU5-2nyA*{;0d?3;9o5l6b1lzutsG27|?=_!l z-h-#lsG;ghrnFF!w%R*oTg6OVNpARurI*zWx?V`{09T<3dLHOx4e1CN!s2u-|5d8{ zDNJ>2s}JcV$Q@2%{!{wYjkYcO_sauHzh6lG^Iwz^_~p?B(vLtOSH$MzUu`MF`#(hf_vHy^T^f9Ppb(-DsD#?1R4Wd8K;vXaR@DPi z==hr*lX#s~Er$8<^;s2gdxA=0)b3e^ukXlW`e+f6DibDE<1RjTgAH*KwGCA#4Pl4B z{~}MBEiMDq=gcVA5x}K*_ReD9{l9TY{)|K0`Wc7z9LEXs2LS1hyC#nU`=R6f`3{Op zB>3vjcPBTl@lLKNtKSd6{XUuQ&K4y@GEddaD>WvyWJw+do>Ewo_xik(wy>_R=0aNk z_WF?d!Qxt|oMmWls5QuwKYwbY;$`aKST9y^=oW7h&xVsTk6UlGKo*$a*8S%=(eKJE z#@Xj9lJSH=!`D?Nt{3<4nZCbUg!ueeAlXud%pz17-F=sP<7%{+!?hFdYw5Wb`6rao zHy)2uzK?HH{VDp0ry+5y>V*X?_St$S8q~L7;rKwr2z@}~nkDo*dVcC9lh`NNxcJEz z%2y`)!KK+sZ@-DdAEc8pxr# z-4~}hORf6*^5|Zvd)F=IX}HTA6GT7w)GG-0HW+Pw+}C)^t(`Qz*7p-cgc=~#G%b#8 zD(LO|Pc!$g9Slx)<&Ty5eSC%-F5fCIIQF~9r#PB)V3VUu9mozZCsTzK&EXxpxupzlAU?;3>1>!#DlhvJ)L&7uWO@k>d8F?%`WBE zZIog8rHin4>j$fll*^h>ix_5sR9R+-sVTT@9f#r>$+1)CrEcHkZ4a-K)i(GlL65XP z{#Zs#fUnV{d}V~BE18C*G8uFhcC#+>kTTAsiDD4fN@=)IE{t{BFix|F4Km0(m!Zbf z9KSw0~PKPF^|IKKfdHaOYD~=uieqe@UU@8Lwx?PzR8saHW>J z{4gvE#>qUAO|<0uM2_|_?ET$w&H47=Mk-laOVM+x$>pj%27kn&q7wF%Mm{`S`SX(i z*kk_#QtVR)f?58y=>6waEtM!mL3cJJidO0!S3^PuIp-L4A44`kk`cabbo(Xra?Q5I zZHC5fhWY#FnHFx#(bj;$T>=z5cF(UN9*X)gq%7K7u%e(Es+JDjo=!(&ypOLO6QjQ! zkZ*9HwY6tjlvG{Qw~_Unp^e43r1QlhW*6saTa9y&M_EB?zN~y6q68%PAkyhNh(`ZB#rt<&xF_^@jO1#N!4g#~gMJK2w$ zwl^Hm3||fPs`6<+?B$iWIOWuEId?KwDKH<_GM$WlrMY3`I;|vI*tW$Km*Lue3X88x zBZ&9`P_ff)jv|^Ot8p!&gcxIG3}E{w=xUH!OOkgHyf3D=h^kb)*XwTWxW#8^C=oQb z8S09CJ(96}9YVBi%rk*Kl&|zTR7Q*Y6P*5G4edCpP?Y6?Q&R2VD7g>Xm{5;Ej)4A! zlO)6Q4xAiNy>J0_EL64kwE00$ImOoWnw)Sq(B8!{b+ZTKnE#g7%Un82hA5+%Ehsp)amF+4Hg{@y3yk1m$2B#ydzww5hb><)UHAP2v1952hFfj>e5M_NqS3aS{>8 z$i6F`&iJ)Q(X1djT7tu!Mtv`}i#3`}T)Il?lU~LPflBT4ZbE(~ldl_(w1xC8WBW2| zG?os~wmc(p1mzJT;2|%?3#~+sU4#V1>nu+BA-YVvV_*0D;{}tn(IR0xfqcSD7ptS> zol%Z-wI_g{AY^ED-Ir`-?2iNo3}Io9lT}u+Rd8(fw@53P`)KiHsPPu|%07!Z)D4px zCEKlRTS`y$8o^>azYoKo#%sYax)yB@$Sz(|mw3)GJ3aQSooQev$y2Q+OJ zM#JVqa4eSl#qzYUwyw8e>IW%N5TvR_O>srp6MH(Z64|H=M>ApFs}V3;%w`qc369;E zFwh_+{m7vtJ|4~Q9c@N-p8k}m+b6>wtpTq`dv!Y*b98UXYKgNdG4x@}TOdQGJ``xs z(7;6N_+kr7etZVNJPe=Q7JA^y`Tx4lfq^`9H)WyYpc5^b`G?ea`0LfSB$YUzf%LR#_sw{Yrsy3nTIU^$}-qUUWLFJ zshRq!z@uBXGI`iQvHeXzRe*D(gm-7IW?i{Um@*bohfXzlb^lrTKrtg( z%JUwfQ!9Oc404*(oTv7Mtl@3rlSuCgI8kC!RuHO|%z!5^C5l}ueM9gAufTaTwp*${q#NTD9La&qLOf0qlnh>NaQ*?94Larze8BEgD|rWCmOIhUGw#>N z2E6F?G%bqp#~yy4?(3}EvrQc5YXaM`psLztMiV1ym#gL$d9Es|5yoV8@ztFMy!QM^ z6ilPWs6@;)g^mA;#bm~Ukc=;dHUwl4Rg6dUD(^f2W0>da5u!(o;L1Rlu}eFy8z(KI z0Q}^UvIb0QoR5sCXWfV`3UVx@O19YNjv((}qa-qexvptma~>hovPH_1yA*P1sLR*w ziJ!ws)8Hl0BAcn>VE^gXG)<;S8Q)BcQoC(mpZdn(Ku1*kE+u_;y*9@_yc8?8 z!>ko$e9^odUFvKENIRzw%9ypUIjqL6T~po0UNJqi)9oxJcO3~yy7tg|(U`UE(1{%> z@1}hK^gL#v2aFLkFcGzn?-GIC^K4|hW5qOD1Y?k5B}ow? z-idc)#&(W3f|pnv_wXS|!#yVv?zzW30|ODDNur0R2j>wiBPuvP%oOp;#BPp;yYiUv zJMn5)I^#o8;!mrld}?k)T5F<;$JS>M9gq{?onZ1%LYAfUuR}ERmN?@r(Z)3H6X5jY zIQrpAo0+?KiC$@k4gI2lH*8`B9`C;|Tt?hRY*0XIY8q}B8d~Niin6zgZoO^|@SJbt zTM*q(E)+FPx@)kwwkN7yz%ePw*h>kVkk=q^8)rlYCSKt;ua`nQ95|}c&lk|CFQwb9 zTENkKY#>SzzR8o2X%+u$Y`g@iCXH|f3f8FVx29-RKaUV=LE&; zyeE_bk@46C#5D1vPo1sRlcUBO1c8#7=A~toLT;5z|^33wKcGF^5@{L?a$G+ES1djWCPxEQ2SiW98|# zW>ci2lL)0s7yOBIAl+J3T=GzDgv+>0&1 zs${n(v&6Qgq!+FgKnnwSe&%O+1G5VOiVd=PNgc*}?fhAXBa>Cvl4gcr_Qefg!APjO zjr$3igAX(tt%l|#hPc4(sVx~_IXiLsvtWB4B&kT_ue@#=c^EI2cK3 zlp&~{!ILY}181=u{k}n2SVKaz{D3O0M>UB#)*LLSQ)RJjH-`u@$!ew9@#hq!e_JBe z**D`v)`sY)ZCmFarlb(`S`WJQx=|jD1wno+a!+GtBFbsRpSmp#H?;s$B$zQ7@p+ca8MQ!=&vX` zRRyCzVRz=L`2UFyEi88C7hB_Wmw=w#swhxjl3c9NV zBuWt;5rC8uJqyC94i&ZVpvj>?0{&fuRgoL2nr2%Bu^A54 z2F$h3k*%=LUyGTIdBwP~$>7-yCCBGg;Z-$q-Ff#nJ&1Ng1CSAQ=1!<<1(^nu#0*`D zRr^5YwX?Z)(WVItIA)WQY9Qs($&K&c_Ov99tN!~4HJ(H6+#Xsh_mkz~q4mBXsXd&d zT0{w-z~Wb3@bRu`Dbd9?(8j4WhO>nN|ElxZKcDE}?K@F#^aFr;B_n(kRd3EVar;cn0y#aiAXb+jJoH*N9{e4qFnR@3XVRemNxeEYcLp z)*)<;Cb-?fwxM-8RZk#VGM!BVq?wZe@L3v(B5A2%IGgE+lNX^}j6o4;3QaT7oEL*) zQvYb^R+wAWpjy{e*tFSB?vbYmIT;y&%lSD-!0AbNfi<1$aN&X>EpY3djZi-hX{>S@e7uOULbWA0ioFP@5E;m8#hC$+uLG!ja2~W;#Lj)?sX`8)Q(IJwd0ul45 zm))WI{fNtbb9%v0=F^r^KSz5S&OdZEwVXVNPU3mx9yuw#q%>y@b(0}8yV^NaGDG=~ zRK5S3FyU)GW~)#M(j{jWH?r>%sHPJ4CLc)K%43{&K02`fnjVs;3n9AmV7LIwAkZ7S zNYq9MuZ}Ei8iX^3XuT_B{tHzp0Re5BiDJ-!$zRa*K7)h*0?+iZFYOm#D3!iDeupus zQqYqLZ;@if^(Hq``he6!L#Dn)?K@pCojwJa1KdOyvtdx2Tq-&3V>IgEQ(PNipRwh4;9Cg0bKF?o4p{RJYo} zz{2iRV}|1!&1wb57sEx73CK=^(NO!1P8RMNwZ{tc*SL#*RC*G;zm>zQcoBIuoSBjE0vvrCLaHki5 zGn(w}@#V>-u*cbj6*At7LiFmo!YzjptyTm#TUz+81B3V>+Mw?^H7E_z3+@V*VDOld zrG($R4Wsn9)v6mNRKn824h1EXk;n+`j*H*qu%_rz_`S`G#U$}db4E9n(31|U{{di` z-9%4E%y~ucIot~i;gkuME3fp$N|Yci6hXbhcz*g>u?_0vq-~E1k)f$Y;&J^O9u}aa ziJOE_O@ZJ;#gCD5qTlaxvR}}#vX0LKaBToqWydJnsSN{5dktMq)jsP7XLBnxGZHd9 z3+oPo0`mm9g6QGAUoia(AsOLV0fG-PNkc_wkO76i5uyC9=sVNcF;1eB1`5Ol2MiN# z40?RQX}p*v(@6!%;DEh{V?g~LAO8g!BgViW_d{_T6lGZy+w6?n;YUIAb(y`av{g&M zX*8b}9PcX()???Zy~7z~u-)%=QPDOL3(1<&CPVEpSllGDfwDq1g@SjbGVo_bJMT+9 zZ(oB$W2(8*Cuwb2L>5uXDJLVfUz&Dnc>RXVm8Y)E>)(Cq>*Sgsi##AWvqP9CME;h`4$n(QYi@M9QS!zPvRQ)q`i@$imA& z2o<-%a~3q`9^qOspnk||xg3}ON|Wq{*h2AujJ@R8XwNMGq}~?D0}d1f@IvFIRShPr z_)r)=m^pqbq!s9;d83srd-_)4UpP#%RduVDu0OJ8v^fH!NZ9YOgw<7hFXU!%kY*W?zO=rZtBT)@^=u)Asvi(%>9o!@c?e1>n zIwncDwDZ+7_5+mQ5E~^LlEuN(&VEc#u+Clvx;}|Ll_d8=g+@1{Af1_2_#r_p4^?zk zn6n^$87N004uX@kgSxw0wk|99P|5uYgJn=;BZa9;6LF{TDjqOnwo4egiR~E?ay8_B zfII?$gLvOTk6^uXr+w|Akb;vIQ{d1kI*WosH)~xS)!65>;q^6d#f)_d@yT~mFaLP~ ze2+zpIYQ)KZa_e+OsH=J)>CE4JPNQ$M;3|siOa8O?Z3zc89Hu)_+q9 zdgEX7>&PnJzNPBcuU_PM(thg`%bysERwKDS6$aHv_i#rR0|s(M7LYjxeJ}c0^7P_z z0?Xh;@^S5kc5tH%n$VB=p#shB(lHgz{*~Ldru{K|CXj3yri6*Bl-ZE#n>l!>;GltL zetBAmVI-ROKy`EKxS)28U@w_UY>0je5ur}A$>Uy-WYe@~(eU<|f@^ao`m0O2guIv=o)&fA?Xx5TJ)FRN z2<=0jUAp9pOITV{zF^7|1;=fP$)-KLX0NtqOjt6$C|yD&tJs_Xc_|(}6i91( zHh#Lv(;uj{gnQ~&?dxcFAFuNeX7N_c?l?JAQqu|eh?!ht)~djGpj799HT~KCHP?Z* zx7RS&yx5dEF53xOAFraBY7;PpE|w**l8`Qs+zr<9UAqT+C#vxwdD;gO$ZH(wjcgIY zTRjf{urG(swI81lvzjw>$d6`SEP#MEbIAhTcID*zG#`&Qc}?HAB9l1Z`~V>1Fxnqn zUDOku7f7t~XT4ul8kq&=B^o+`7SaM^Ckaq!S#V7kWt(kTSVyL0$!A{Rz5K49vjBrF z<**}^8D!RDmkQUTrC)1ePE}(albi|V(Eec^Td(APUyB{?i=OW6Gf`~^lWNVi`(288 zba80`GF!MG>(UCs(XA>JyqzxJ*tth_yVN}X0Z`0JpfOg7tBVhN+Cj^SnV=C}DbYIB zJCI1Yeh1}kVf>E77V=uJx0H=u<-=&m6@278*OVO|#VYQHRg#qK#I5iGE7cm}=u+K+ zF|9-;Eb62PScsV!t|{nv@}Nj|($A}NLQ-s#<=e3fWCGjpaaNIeX7F2?4c1mBDLCk^ zv7y8G7{{RSd9MhoCUwwT#t;;+mlY z69)QSaa+i6P2#NjQz9t8bTmAMw5wFmP32cGRfMP?3DHFr8SfT+*|Wq&PxYPoD2O+h zn5=9J#${vV2`pGFu?qBW=_w;cEpBCI3GD~*7qB?q7Mg;c%BayTwQhv<0B#cZlrH_< z(XT8e(&D1B!sy6qYv@)n6Y8`BbQy#Y(q&ri9Hw&~u$h?zwF)+wk(HP7EW(B^0hD-8 zWdpxh@2=<&(tV|T;J2h&%Dm+4oJ@nKIQPW-VD}`>0p&*W7Dc4uDXd+_cY?(Cj$oNU zi+h4A$#*iP;z7(^OU-o7wE_u6cLxTI6f`2px2nscrj34~~c77SDDU-MlX z_?BERi(y|&Q>|8o#XVmvEnBKeXt{LJ@5OmxFM zi!Z6?HfhfBPA3ESZeFG!<4?nF$q+s74~Evh>8+A^n7vZF|D}$%PDrcw(<-mjh2h=W z_^QH183gwxo>c2rm#amHu$i2b4Q19f!f{Ou$RrzCCv45NC&|ZSVE4A>^&!8ta{erL zHGa;FDC0qBW9{B3``Msi-6UHg(&`Qv!S4jG+TGGn1~>>kR6U-qbzqi7RY;tF9Ds4M{TB-?FNx3gmT>7m_Iy>C$Y-LqbL(FV$yfr)LDM zA5jGUU6U}3IKDh**N(A0>eDZNIa)1CnbF5O1M%6lK{2DUAb-X)>XIHa^N216|qmtJ$~d0)4kybAa5yn?X*IX zz{F)5bPPRhky8Vu*m84NcdSssLcdMjEtM|_l@{nV!4JhLya)jKH`S$0Z~k;4j)N}|28kU*)wkU-Fe+V#1l#N43xS(Hcm28vnVHSrr*Y`(1y2Q zlG3t3tDM0+RtZa1L!}0$`rURFG;8c}GR$(}2=!cS#X{=Ps0A)+mWf9XCp)w)nCC!b zn&V|QR`E`flDOZkz3`gF9(SZ6k2cCN`8m_}e<#$7foYiKDmXv|-QE4o?OM4<=18ZT zNdxThLc-M-2QjH2@$~-09F@Ylyjm(Mes*qym{y8wqOwL{bsBwlsKBlbh=}Bl;GKQ~ zNlcnwvktvKhR5|Bw!3PUKiRJJ@e$^io>Kma9bie%2gvEVToY6Z$EQdr`)yWFyt$x? zB+e?+6S>D>pDAVi1^e$34ax=5wf2G&oq`kB_$wpJl5*4hO+^;Yt=pLKwGcU(i8Mho7&m+16Gppywoe24rfr*ji{h)Q zABpC2gu1Ddnc(C!FXD+TbZ)M*{drqo$CRozNY#rw`nPN zZl{p^lPebBWbCcjb_&{iY=pBcb6!(n1Z{`PHeZDF>y>+#pZen zsS0E>M)<_=!K~Fx!LT{6Ib4g&yzB>Ha00DAPdV9jmJ#kZ`3l1fP0XdWS#_$&wy}(y z2Y2|mMg?`XOeG`rKqufSY~H=mJO@l~g(re{Bs!{qU|`H{*N1>@Y&rR8uFf?trw# zV(exA_iHxRrTtZ}m(km`9y31x3JrF*3Dp}_8+LtFd*!=kbu;UjX&=|Ta>9Pv-=-g| zF9Su9h7!F$Nn*+~13TV1^VX0rb{#dflN0g~^)?6&DNGIaNMW3Jx6IrTsfr)Fc}bF= zmTtX+4oB3jN(-*k@EPK=;PlH`$tI7k&$*J3;P&${rhUw*x3l&arBRW@a4bIGj(na_ zd;nqcjC%)Ns1jDR0k&;eRil%Ce&d$L%|4#xkJ{giV|{$!erE@@|9ke0q$tWwIkNNc z2^~^c^U?GWGudPp7(_*@yM69ZkL_uoZ0{YF8MGfRJ8MEkR*lKK#1gvw0m*7)+1-8w zj#Q6S8W$Q_;0@LC(q69gP*DT?`o%&@xtrORo|c!|mjktCP*)=4)5^wj3@O%!#ppOc z`Haf8F?f6&ZKODA;W~=$=GnsO@zNy?WmvF7rhdKOET#VsK!}mXEOv_DnTSVyO8=S5c*BLYKgk=m z9{CWG&~!wv`uq^f;dvLqqD$6!MkyBA*k_UN;+MT{wK{j0QJmgpWxH@-=0>cL61*wG zvQ{#0m6Dk}WtM4QK`r+8VSa1Pr%W=qkJUJddpct2_YT8_V(7xcAYW2Z)-WYt!P@o2 zb;qj4p9s}{aoDf=rDXt)?4%>HX9q6L`fZTzF$@-5ShPW8B&(>dKE{CTU6Jpg6VW_f;!NvOh>TA}LQ zO6Rrd!9}fgEkNthQrhSlg5GtUc$RrX`_Q?FUP#k4JNY6!ZTCPbW3!ake-ZNSs72)I z?`Z8eaV~32*TZ_H*YBz429WOamVe$nKt2&2ip5M`W?w63yrf-Uo9T*mTJ|u!_MnNt z#eJe+OkCmJFBH572bdM+y|2s5211|OMQD-h=9kK;5>Z7DRYvPQq7IF?F~gv$n(Y|Q zO+ij zIrgSJ!7LX}Kvpx!Kn84CYaZtO06a(lc2v)b{JVshmC<_ z|As#pq&2G-wYTqmT^f|jedzUv*55fH@^tOWbu3Ey{Nogb!sx+fUB#ii)s~Ip`}8v z)qrBwVliAFA?W#ALb)4H#HL1Tzlr^(tun~!RZ-yb&MQCxwmf4^kvHM=v{8~>brN@m z`nkuz+84JW#I20(6hTbo@<K%mk?Uy9k`H< zo${h>+pR#iEFcGnhNJue6IK)9eCM3W3dJha<0;P{UDo(_IQOk&=JcV4PuZZOIi(D_ z*l!+5Pt_k{?eiu|^~h}yWH0{Kw0}>abuo6#s9g6fQ+Ec6GSC|S$Ob3jBh0ou~^lHiat5d0r5-Tmo2(O4Os{G>H7IyZbT(Vut z0pnkT)bPJRK>UGVfE>h-?a8ZPfEZ@QV&_M(&v9L=l;x!N>xR4LK_cb4fk+)+!wFU(|K$!o5ob-}4IM z-a9zt=_Vn6qbQ*u?QxH9YEDA>b<^M*{`?`GH}8u;)wnrK-_X+T6-Gb=ANu+`BV@&w z5QPcN@1FSHzl(O{wocky@0+l*mzoQ9TW3KYJC-F+Oxac7p>oUko~)N(?>GR=GZ zGtC-tYO6kaG_h>v!pV z>jPj?LgRDyNx5a9OPy-~Z36AgSz@A!NVe5P9rO=c&reSrhgM+yZEI(jJ{yGyg2E zPSG)yKcx+4c^M_7j1SR5kD1E@c64nZnstmlVP2VT;UcdiCfQd%cw9{eW&?-MQYASP z_UA*3kx=)pnpq}R;N8jAj@)#s4#iC}X4`>sAGrsZ>aKJ12UrI&k8)<{hxIDJ6kaZD zG(j9(V)>N9z5|HGs&Vu=|G75_G)KKQ!jyT^FB`);ZH15>$lcsz1vRrk&&~Jd>Ra2E z1k}mDbZ(&mX;7J-PhR^cGB`3dLOq??K@mNi3vGL@8z1DUw}$EBaREp{4u#(KbAHnx zUo>*lua=wHt>M$mkJy%?T$jR9IIT@28G#m7HTI2WO=LsoMA*xgt|_!#l;JFVC0^SK z+%Fuyh61}o+f}z11~VhKP-iacSy*EkXVQ3>DzqOQ555`gDE73qIb~Xiae?p_zRGLd z1;-n0Kfac8dapXU^&)Ry-|ZAW4oe-zorW>^mhp%P6UoK&Qu-J1mY>WvpIj`NY?BZX ziUCh%JT@W5XEoW^mXa7*m{Dh1#o7bP@Z!m~3WEJbCNwvhE~}VqEx3P*9S<5SoS1gm z<2m!Dc1;Oylw{6rMNN?-(G2I+@rVcg>*`u&my~m0ujTXLCZFC>|Jd`PQiaa^JzcNh z#xVnaI1#SC`W%3ghf>f$HiEy4OI3P}lHB&grhYTt>*B-j{MB&IlP5c(NgOdpFw zB(}t<%~LK#HIL}PVzLVUpC7orod8B~o0xu4A5ADKWUaBk#*p*- z_|anh^?~z+T#qy;jLV@ofsg0bECWonT4#1LcOSXoR!H8%1K{0xcde@~Br~n$U>V0` z&rm%aHxkzfMtyf5K%qHSYhMl^2^ zCdah1@k+g;NU`D5N6YXv9_l5n=g>S6y-v%xeK`J$dOmspbB@_;9L((D;=~ld@42%^p!FJ9)UgpOuKPf@uu(6@MYm1)H;->5jwGE#aP2% zZq)7;>qtQxAo@Ziq=e9RD&JJb^`BoVqQ~~CHZFXGR!i`Wfy2ON`2eH{|D;}=#l1I# z(}BFeX&#wv*3uEw_OF1HN(8sQ0CdtVl52I?7|6L9hUNAxU9>SvAEvqLg9~oo=%CCj z(LyORt)iMDMCJ_j();!|Z$Bo54X9jwmc#Y{ULo1H=pMCPuMa*)r{=l9X9V9|w|TRY7`V_Sz@9y4`3; zbq{3!+sneC+tH;V@SZP_d7A~`QZSR6a0_73Wd-q)8&%5OHgNlgl}L5WRM>hJ9FZoJai4BdRg)aaMFdM3DDQwTC(gq z!?sMURK8gX&{Y~xk{D%`KTEtOtmLLPj(H9X-PX2ml% zI;@;BY{GlS#Wd%8%RX4HmZ>X8?%`r&X{8ZIfX+>336xs0QhZ{b_uZxtIL9jvs=K6%StUeka@mpB}?)M6g_S8m}7a zI7g6B$E5iXVu%A2RZMmDoHwNXvDFJ6PL8A;9-y45rlxMJ_ofgKS9<*0v!45OPo-Mc z!e=|DM-qKTFV#w^4xTofwYLLud`ssRx!=AJq64_pTqPe%P-Z$#?(z8CjM~aLlQT`c z;ZnEd&cG!B4rzBvSD8`a6DWiGHJL3_q|oZBC^y(@2GUs~2`I!3dKMVThlIXNP}l&- z-wndasqi(hzV_<&xFnBNQXrz1q6KwJaB(Wx>ba|e%p!}8li%Qu0oB?V3@cv|XLscL zj;hx6BH1*vy<<}cVVMdxkth~nH?{hw^FJkCPN<=rEh+FXT|$OY?YJv}Yd=*2 z!{1Gdjj2X4Owl%b9bFyke$UR8jk;}~o|Hb7*=^^w19k=t8K1@KPmcvQG1x0=&sMT8 zP?!X?P3RGqTyrvGxj7dDbTagS0_7S%GeO#QB%>=v&Y3(v)R>>7w+K$p8I>+Y^CoB# zy*T2kvL*A`)jnJwQ>ZWe-g1NJI=MEvRj>XNiQ90&Szv%Vt-mNv@Him4XRK!c#!L=1 zd-o?2mrui+oI#C;UQI4Gsn#Isd4c45Mb%ZocO1AZ$Ro&R$R4j1Ty%;WxBpo*$XDgR z!GT+^l;D!D(yA%*+Em;tR?mo}Kc{Vc+<>?_5@t!w0#tUu>DD~$$YB2g7_Cd-gQ#p? zQ;Z=ecukiET~PZ(wgJo!S>pDbFU!^uk!NAo@*L$YXMeQqOr%unR*j&x9%&M z4)E)`~pgK_Y@QgG|8nx@BI$0gSo_9Z~oyxJkos(qMmHnD*~pO4(->NzTK` zRzJ{fvSdm~BPxCqmzfcJ&HIU)&}9Tb#@v0p=c;o{Ud3&F#~U}j+ro4fCj~Z%!Bda* zsF=$d`1o$RaOX@~KF)>GXfE0?PBU#p@WST72cS2@1ulsupR;M3!^UktAr_n@4f-_O zx;Rpne0^A@*H4-TQZhwSY-#vDGte`Iy$keq@73<|SFgU)n;6u)Ve$80u_a#0!U;cX z6Erg$DbjZ)#10= z(`m+pF)uMqyP@jKZeW(uZMylBYd1eZ6jWr&kZ`hcdrp)`pI) zr;j^!0@`ZsWBTS1h7;zu7dDopocuV1{R%OBURaTJ?YsDh62c?k$@IVqDW(L^1M(oj zfNi+}V66=y*q*pZK}NR5f8d(F7&=k%1}hwO-6(d5Ai+7I-TBb@2!^E=F@Ad&G2WnC zZUrteI#aJi?UD;2hh@1XmJrSt;w2hvnTSDZ{fx}W;3?Jurl`lMMuR%V%-DehlNpiF z@`e|^^lVuVhex{%s17Pzw7Da&3HSK8vfZ;YUkkZyFf@)j(ALWdOsszB2I&rg;9}28 zshZ8GE|N;Zn;O!gnVkp{^d5|aOI@J|t>p8@T$?-kvIBWHD^=&5JbE)n=qabq4o^83qYZMdXD_M?Y zqxX-61VBynw9H$ZkHF*QsM7 zHb=R7K0yDTNw=3VbYop>r=yM!T<1oNXo{w$V4Hm-HplV?k%_v~GPQRPLx^{v4Y#LFe*8UnH0Br`GE$&V?JLb8r^h0*th5@*Z zWNuj4sQqlgRC#4tzu}MqDmNg~ujgf&x_Y^B7yV7@-864EVmo)9zG~|oDQKjecpGe;?)+W}t8mJBV=43{u>R-5XHB~fNJQ3ga*4e_mlbI-=m8mid zg3rpt(@8ts-jck47ElyVZu}`9W2hAKwwrbtZcmgNRrWnr^zw&1;^*#pc_q?hbC@s- z&?EMveLPsQRn^gD4?-U0P7b8x^Dkqk7O=;Pl zbj9AyI8ntX&z(Y2^oeZy$T3ylB!cH#@nm77UpcDC0~)uz<{}}#=U&~CARf?}E6|#AnSYi(ZF^IW1A$J^L z>Sp%y-kP#)z1&Fa9*rv&aHi{8h-cz!V&KjJ7d6X#4R*oaC*p*Z@Ygp>HfTi7yqCAX z&gG1(?_peXm?(L; zjY64b(#GScOEMN|^K~z5E!!B zK=0cxU*zSy+?B;CS;vCg-(O^I$|*#$_#Bbjocq7Km)OcNgnQL}ud*;Mza9v5Scs!Y znsmK08Su{v4A$N5ZUi(7Usn+od4JkI@J^lE3cUVcnn0V zdb0D2snv78cgc!W*hMb*;-I&n$nz#C)r{e6iWw%;q|tm>7@u1nSF3VxrhtgB^44z5 zs+);ya0R6zaq9NpC_6F?5ZY8y3fOHNV;ojLoL8mk6s-HkdK{Oc#{IAmuN@<~qx^-D zFmz@K6B@~fEwK@I7LhZOFL24S9k5q!a@em}is90lH)AEFnF&J@1AFRZ4=h^F={?64 zUcZjN=zkU6Ar|V5hMZtUoXqQ5YE&dOO9>lty5^;?cqLq&X{C-CsDXAk;Wy3M%;K*8 z2f)stK%-K$giVTw!ba!=EUAdKOP0b&5yGjk11+BYVrDBmfu&@n^mne0zdux7y14)1 z|Jp*W@_}_Z28|`CagUQ|EQWY!85tj8*VOUub&g6r+$qv@Q0A<+V zBU-+u`j6^_2K%^N5E}84FKUjylo=xS?dr#5%|P9!uiP>%=vAXQ4;BT{Kd2CC;f&_7 zYG>m6uV3L9e%13z=EG5&sY9Q@%45(WoiTa|nslI2M4>U+uYWB4k!#hW3Pi${hlZsI z<} z2#Dg`7Rz-q&b5?$iN0v|f_;8i1jXNJSNWNZHyTIOf|}OOW=4gJ$ef>51sB&bX~0AB z#0sc(0i|9`t1Ahl@G+FjxV#SgCgGWlb;(B#$g|eDu9HjuWfAFYE4i1>tPzX zDm1L%m%K@B4RZyoDVx^9)7cNlwhCFW^fKs;48jEUj+v${%4DhBOb8mIv&d5OL`-B6MO|vNopdB3P=oE1$=JcQGbd~HzTO?&`@3t!<>8BSlG4%=Iy^cKJ?I!OdKQ@Cu#k4ORl`k~2k?TPri(Pz0zRSc>?-L* z1e|tf#=e$oa?7R+#Kr$Z&N%*P@0CS5t2)t%@XWKGnGvrv=JoDS9I4(f*Ot7{U2+q3 z-~bVZ9JBqjMJD^nWf;<20b2{!ORTIXL}URTXzm&uRjHwm)!G(~l7}8zpvyY5?Wafz zGqB0h0I&o-sE?;b)jmKPn#br95z56{?c)-x*TE1i?k!c%SI4N~T%U!ZR%mhZrC#{~52dEfcjf;?qCXt0 zmC^q-N7kAGt7mErAZo6pwu85zh$!hE5>6&(pQ8rJ13rGeC-x>xy7%%{3Ei=%-#ou> z@Elc|kzmJrFzX!G6Ne9#FaB1S|IIFG?#0MIsNw(BJN#gXv-%l{tB@60pV#hP(42_% z`+ka>s8i9&<{a}2gEoh*lovk+90L&ZrE$imeh?AX9B!6ET#PA_@XZG@g) z=6LC_pT~Hjdf4cV=1O9&H-!B1%~$bXzkm6D;#25HlRJPo$=_cw|MlZv*IGri!4JfW zO|QznOELMM^)zRBDiz=7n4Mv(^%&_rT8G1;xupTA09lgP4!k~r@Uf@mO~wg3i}ek+ zYK7`EnomUYmL}~BNn`lUMR+UFx*I2eON#6!O)*4hVk4jXdK@ZGk=^(`!ZeMsx762* zT(fp6CNA{Z2nJ}~y7kv4sJL7K=RGb|baYrHqNd%X#k*Q+7aNesJ$E(Wy@?KH4Tki1 zW41InbYjaSTBd3AFD8V3Av<0~YuHxmu?&1JF~5j&OFz@QSM@V_rr5sf{TO z>}kDo(dN^AQ|4xgJ%znOrazI2p8tt7KZ!bx$cg;fUQUCS;`p3WI&yHbZ>+x;*qo|A znIp6F$VhEwt4gHkr5)2U73UGtM6^VMh6W+?Ondu+{ZZg!U~FV*d=XW(>RP@rs4GS? z(spl+?3^o~RQlcS;~PWFI*_$_LvALl|Spx_X;;g_&8vnBrQ>Q4GwzJ%>)m2$@4aby4b;V)K=t)uCdYP3&zMZ%UE0Q1>$5wWP5aWx(%Rb+ndr&okv*Fh{kq*CbSCt<4wu3A0DV}}lkeiCx=fBjq2m3ts3WlsfzdgKvOH=)C zUw|opEWi_YavGU~a7QNP@=9rvl|}7s4nOXsH6WLZm@nF_W>D5w=j!w74!{84PRUb> zQkE~5d*`1iWX}dhOH8IdYU&?UJDZUnqN~Q13`}7!PRfNfS?fZBEPUUPcSY7J1iVw2 z6d~!{dB-QPQ}k$?9W|X}zrb(at&R*qRumN3pFem4;8P~HFfmAyA9T)O@=qgKTp#i4 zv8vE>@dyrvGY034sA`E5PsMS-_A10o)mxKTj&3mbFdVeq>wof-b*%9TjxK!LbdEw? zsV17aQ0s3D+V;7Oh&nTEJ=(|mfcg3n6k&sx_R}JnPJ+5XWtOcg-57mnF=LnAeU@Ik zRwXcD3Y=`w__TwPi8|rum;BtMLcO z;tqUZ?Pe22h#GIZ+ti3m;^O|t?Qz4UZu7pC+~NB1*!!&JSYFHS#FII7-$>ye&8hOD znW`pR9*84bd18907$r6?0U zU)#BIAc;(ZSKu!&g8_?>*u%#q>so@LR*Fi!p~KW*ncj+uAURMoj$@RMB6Dmbdl;>u zmP_80fo8|>pteGoEV!O^oveZMI&IA85t*rdj5bOjgq}frfwL|X#oWcqlJQHwt4DO; z-eV{ODek~KGp#MWSw&52Hek^_uOk%!R1m&XooA)t zug?~_0(lDc1*WV)xYI=n{C(;Ouq6Q^v$G7g6cbtUh!E5I?livw(CGXgztCbx5j%Cc z`}}Jcs1XRbxfI#FCC)S@kMs-}H~IuvM6!d}RYUp9%V05uVX3uQJ6uThLd$I&CHsg? zw%~gZY1-A|FqL{!-TD6gVB&ReGeQadG9w|;?rX~L^t*o>-lF?4d_v%@TAQLbnLTi! zEs2h&-KG#Nn{(>b>H(8;Qk_EWZGqiNgK1lZp@86>i?mX?_MoXScT=m^aeH*h4BW{h zAz0X^42DH>9Jr4oE5b;%+Z=Tdg#|k^o>RtF86$u2DaU2NmRL2ww!b9Ez_XjhK(+2g zCo3raJ$>jwLob1cu6llGkJJD1K)x#-spUMB3{Bj%`c;%F=aHgtye(s6FOj*dV0%-WI%uvqwN3&X`zy!UUAau_ z4wrk7dQ|f7D{pM9TQ}<&M0z6kN+!?L)GQ%UjI*|{8#ud25-1RIsPtzuo#1yxw zL~A*SG;Z%gb00kei=M*T?7`nqTc67iKr5;eAszd#m@Q_NtdLTZ-5rfbSu8c=nJQA? zav8e2Zz92Kg$J`EeoHCNo2q71GA1)%A<**>(cy*)GwZ;@q14ei;pg)iNDX=XJ~AhM#8^wU-(SWoa<}$O?oo2$jpj4 z0S4^sCbNRDL(pP)Y*k_t!EKoCtuB4)MqI?YWww`eY=_O- zrZYNch1Qt^gJf~+j+b&AVZKA~&p(C42uaRam?L;nGLHC=i( zZ%u|DW;yM?8oh9Jqw6M)8!JM%;0*q9!HxfN!D&pbt%bf;|0KtIXsJD)ZT@>**GzRX zkDQsg7oytB0#XxFMqJo zI;9&3TG}$^l$hk?%Pj07qh7G>=p)b9+7!TXy$fWt3FRFICt_hQxddA8S`t{3WPRTI zCR-HdG?!X{d1=-Uv@%1}-z(#Wn6U^?3%IsYMY8FT#=>)haUT?x5f{S!vjS)cs0X@z zYkEo7q(Pky33_`Cf!y3;pQFQZRv4ku0A($`z^XM)&?7#e5t}%Y<&9c2QC1;&4JqF< zzc*GAZ;@@wiXyiKWnbYBp$My>8wX|=tkhu@4CDX`m}5u$X=QN6&QX~s6Hzj04g2Mk zM(W#$DD{?Niz*h5hL`?CqWRP$mxEXF!%LAUL?>>+s0`~3o`IoBh>}F|gMCJheF>s8iCS@mvODn3=g2WWr`>GJu1Pe}4P^abUxY7c`qK2Oi0tRdrBRMRz50Mw0BW57Z^`vV9+VIYzTB6e7mhN!JR z5EM03Apz~(Mov|=ir4Gul&XXT92Xz(k&6+L9M!|&kjM{7-H412LkdLkOYx7M&d>1M z|ICER{5=z93rhq?e^-l7IEgZS*V;VpWo^jLp@!r}4Sf*L+e%OiMojqd7GzEbrc5}C zoS3|7I<8C*x?jz!tR<|Uy5FYmjH0{x!xOB+wY%XX)=tfAr>1&umV?V%JoDiXq;K1j zxEzQH`}DY^Pn#y&uwew{xz1cq$2<+UJ!lnt2qovg<-&e6$x+we^9g!wH^8Kd`QHc? z|AuAEJL8#w_KUwnzuKUG+sWH@ZS+=2=!JHRI^8RV-jg?vSx?qp+LZjc&uc+Qgg^u=PAxAKO>l+OVR>AMAD-OI*~mitOkP z5$SK?w;I~1;^)tQmYVsKWys_=6o{q9P!a%vSXtNSZ^*JE3-V>ChqG|_u1bCF=M4eah2Gh%mg zsH!-Ve3`3JZ600!2Qj`gZ!wM~#sY>*FP2A`6IE2n$oAZ@XV#cz6VVW}5o`V*%$KQ#ix`>`JJ?=nA4}H(I)xs+ zU!zFs2D#NolIxD3x=3n*KNiPF`~c;gvi-FZ*$@4(G;txjA`+|gRWS`?e$Cm%OCt2u zQY$1ZG~z}Dy+EMEh(Ghn!r~ECuuYeSV}H+_Qfv@Db`Zo&#$Qn8GwKdOu*%{iD<~C7 zQSdstDhCqRL-Fn>x>0#MBJqMgIT6WA=Ao=GeDN}fZI%Y}h@J~- zM~08e&z0$$Jk0lyjlAXMQ*iC&p{`TQe$}}o4!yh9vDssG*{e+r#Yh~exK|(u3HO`HwoW_* z`s(G}8Qj-5$rzlZ=rIy6QrA8>1!v|`I}r6GC~S<@mp(g!XYmevQgX)0ro#hq>RZlL zmX7Qk$-3`Za|@n>e4|$J|k0)LmP4 z6IYsRqiXm@mKTGy%8PC4kr#L8r1=#ZG^STqazPZaj%Uk|VwYcz4R?i@0!7K+aQxr6 zY0^PMY?_3>WmudRa-@>7_PJVxD~a}|w!E;3aE%%ZBHgb|BXPbs+Rb!FZ6&be<1~FQ z3u075Cp#uvG{`#^FUtJlrx(NV(vpId9zC5G@i|35iyD}3)AnkolwO$5ppeDt(y{D8 z+9`?-x8q7>wFf+tcoSF+hv#$}=;$)h6&|>V<{`!dQ~?c5ov|_j0cEIZsrXW6wreJF zQ{P3^vdh=4I_?hn@cWr^crSrck!EP3PbW29B%F(6<*DV=b_|&KV(U!nRjZEp zXrNplSf=0RItI7Z%Rr4^j+pL!N**=PQ%AI^9sUflQa_E;4tr);VaP@42S(`_A*Oi3 z7-?C5X|etjbrp<_qjQGrL3QHGIc|A4Dy>y#`!0%@3aSWxiRl1iy7 z`B5XV2fKgUzxY+|+u&* zjD1UTjw&ehX(q2#^4mJ%HyeHE`~WN9Aq+wCj|sm3npKZ07f7{8q^W1!( z`K8g8rQ%PSuhb&h<7WpK&gS8yA#dHEw&Oqt~WaReC=YMdt9sT!0}&c3k>Ev1T? z4cX#NeTLVI>417nAkDA2qj|!oz3sm+u6oy?4L@X@kEYN%<4#m(y5{zm#xgVGKepeo zd}Y(1cm!}4;$9S52NIRA_u704H&|?Mt9SYn$>=xwLhJd7zDCf{Br!C{8vu`X`Rd^F z?h5|zFftEs@nnu#ZeylTM|Y3C7S6;i=Oct#4rV|7nq%A$hr~b8>i<25{P*GKAJZoB zAJe8nFS+quH#B-9Hs)aag>GrU26PCT4W-}(wucdph3MU zglb+S&dV6dTlt-B6;kvmP(9o@JYq8V$e$<+D_@KG963=+jA26A zxL#_nDHS-3;_imM5%Sj@QY-eYf}{{=eJmgQJv&qIq2Czfm`+9Wb2V>bRy2OpUvtQR zP-L(CR%F+<|JRCabt9RtA;+IQn!Zm5?wXHn{Afc(bcxgx|M!V83gr#rJx30Wc_tb$ zY#GmpqD;qtU2tj%BAlXUq!j}t&C`bb!TVUsB$I@TI|T*e>fE)1 zRQVV0o%ipXZqy*CF)su)X0iN+<3``KpC~j+HI%-r;!zcUxx`2pRGLAgZ#6(hD zfu#J1JWl)Dj)C*JL;#J1Te=l=v=8HRNO>&;LLYp-zMA-bh~%SM5I$Xqp~z^ag^%52@VK~ySeQ>42hU;oglR`fW1_lYaS+dnSh45+ zt>qphy;WCEdJ#|tQNH9JP2%D*@=ft2bZqap>ctw|97nb2XGWl-|s<1A`ij!FE-y4kJ^+S^E?{s6Xc8_l50+N$X8n0+4(HESSZ0!d#but(JA*=M_-en(`4`zC5Zah?ppkRFRP8l z8`TCr`_?XVA*%T)Gr1(Gda;}13dnh4#m`07@Wd}OIO|;@K&#MO`OxfP2X@R6S>o^6 zNVRvJVN_-hOPyPI?3J$W%sLn)LVD4RBlndiT=pu0YiL;a+!ZeO+RDkjVvtGGvW+R%p0W9b7>M#_ z3`bk{*l15J*)yM1h1<$$7Ln*3l?c`D;`m=vWbsB_0(so++sowLf5Ek7uaN;0C)m+% zL5cs!OzTY>Y;Kwb&3uVc+)%~9Ip&W47W1GG^u}t({FNf;9@Sahe59lB43Td6ClU%j zeaWoQ+uh|AQ)6nbzFwm=F2WEaHxi_-;ICAvNF-I*$6jjlFC-c4Ak(#fBFWCb?(k=_ zyU_S~TMV~h%BA_x@jkvLklMUo7sPppxN=>Nbfne5bDAS;75_x)Jj@7DGGQVOMI;sM zdYBn%5l8k2?9A2l?(XIZ)@FnlT@;lrGJP|@`%Dy7b9{`0=- zzz?e;=09F4^ItC&tHQHoyrp%h4`6itKKH$E>PN2LzaI6%I%e}e74bHe=4tzXzW0n8 z#rPYSZ^W}=R-ay89G|dP1pfd3=>N-~(eS;;g-|;`-N$)GihLww4j<%nlG=(A`HIrd zsT}Om8J9Y>Sy2{U^M^W{YbmXZpsi+{v0;GCCeA-W7v#&f^rmE1>#OQ4V9Gd{`! zaF7$LMX{z`n1vSlKauePww2+_z1XEh6P3uz@D#Spd#%<0o8u7CBgsHQsmsTB&LPjo z167KF5+GEMA~C{BN`dKR3A45DMD#A7mNejKbd1*}AV%@8H6*U0RD16AEcdd$Wuv`{ z*%F{(`$|t(%mqj!JjoZyT-a_<;v)gobMo2piyRc6jx##EwGaSq_d9NMaWNQAg%1~v ze@PJCU9&k~v)W7{6u^!Pidh&}v+U+sd@iF%r4Vur7@df47hXZcu#sSYUvMWGo-bKO znrnW(D6|U1pMP7jNO_8Vg#CPB5-tA31ey{keiknu?P=>|Cx!@kK>J&!SMfhFy@EfO z-qPn5rjwPw=XZ-F5W6A%-@qh7ETpY^<|vg29SPT+-^cn#-R_X>ea%>IWKvcFTqkoI zR=DL@kO(5!32zw73@8uc9l~C6E?(TB+NqQtlrDPRZXJ84)V{u!3HICPJe-F0Ct~=N zjS8iJX3~hJ%e!59+g1=U7-Iy-XY-h+9da69B{Od-VU_*YRuk1;PwP&mMHJjXz_XCB z4?y9acH&N^8O>`Xfb4qHOg!)72acoo#P=UomfXssXYgnre^UFc4%nr|qe?1jgF#a@(7 z>-ioe9J*itPrAE(3F>ybv3e2iTGT9ml{EW&4cC91&f2#`kcytuEzM(I&(|r zJVrvUm8|kk3rBWoYW`cAi82jrjDF!(m`tgN(BXAD<5qD|)3UuoIArga^0?r?p=Umezh^={(qh;5E!T zr-Ra{vc55T<{d=Aaqfh>dRL`-7&zH@d+o&QE!nq`k%1Xcw0AOQZHb>XQ60m=xh9oH z1iae?zq5ZYCefBpZZmf#pXSM@f>UsY>Yet46&5ga&L#g@^Pq#O1W^jrzZoj3#T$oO zcg(@_Z7!}3^<$O!`kD$$P~UR48}KEETAyGwDZ?lr)<)wcgL0L1dLeWgn5ne&c~B<`Llu{KZM!Vx%r+8)nO_%?n5Ymsc0SCY zJGEg~orny0r+X)y z*}hWBS4_-zm!(sf$IpRw(P?ES8HYflL5USk|M@Ux1F++M9sr zl%iwFV``hUsppng6TiE5-7{h4G+m*-0L?IKy;>!~=$LWZ0jPAGJA9RCr-reVPd!Zuw zj$kd9=&5oWh{L*pX0YS4yTKHocKjr^!T zk=7Bh_1ORXz;F88M2Ln@+DnLM4jmE=K4L|9*x*AYNGQ!RSXplp!A9kZEzb}!RM167 z-7!w=2Uw3NZ89EyANQhc#5zc?UOh$<-0%?@fA_#YZ|4#HziLqV{k;FXJ*x1dqZ&=F zwlj#B$~r22HxC;y2SO)-I;S6-Z58spdbTGjm2}(47!)jn)2SnaQwjdRf)^Jhq_(wZk(UmAb=yJZ0BJaH5vKyGy z1TOh~V06msNKQIbiXHE74{mA1u>cQq4%xlhRI`hfq+#TNeK0PcF#G&jx2H{G8#^Q_ z0G?DbE(uAG*^P4fo>Ul>{MTS82h(^9xHtsw(;bH9YQ@p5>v%t&N-^)J&8|_8m;MqT zczINXG(sf1;51^ksHlPVOpdo{nrb=|U*Bx2=eiyWIFsvMY_UKCKi6<*F#j^Rlk3-w zN!ZYd?a~*uZk{f4I`wrxQlTQHF(t~AZ$C!AeqBF>U3|SM&NR}l6%`ga<)6m0T7>cJ>pfPs8G?Wi{W}8U@a@|mzZ6KQT7SRSSoQL+y5U_u zg?vHaPXpqGf$U9khsfTLh`TEr?$qD(W-xo3gG^!DKmeOKJFUbVqII=y^Aexg_J_Sig^bKon*q zc5S<9$1XGwtFE63MKMeAg5!w|U5(ObHlsZ~NT}kSC8LPKxg~j^9HXc~7jF`_TT)vk z4k}+tzhW8&(*oVTC&t&0#E=50>*Iut=|tj$iHZ4T1M9iXJn$AkgG2~Cc*)(3$lCr? z@0U=Ey5ZP#?)B*`MIuL{w@~9rY+3)=a=rFUMF||sO$*w+DI7;I0s%U*K%ma0 z>~P;!L9~l$Zf2dBg2mLBing>3u7~+XNv5*;8zVATe46G>$;ZKslC9wq*y~`hPQ8CV zOjv)!9UTdF^BT$wpkQ4H3Txc?#81|(?lIHdPK(+Vs98(?(Ann*S{71EKXuP0W zWn5{f6Z*b(88X-;$;a+t!*@gL_yLH`GJcTBvPZSMBB5tvW*iMzA)gE0ji@5!x&+$cz8bW)W=^lh-_7kfLVp zFg_u;l2Uo+*qr?-bQ?LH{>wl`yUL`UF6yLlLf~FlHiWEqEPcZCG-loob6Pwu^79w% za1LueCK=adc0(1jL~&i0yAi)`BIV6xk( zT@MCO%g({I#G4GPAqdck(JxjhBDAvHB>?*t#mOt=daVTUt8mV_tC)=HDxOf3H_#<% z?pGqp<`NOMB~Dn~Kb;X0rkd2$keehZ*&YuzitrcBq55Yp^~bF_p7p)n{0kob?!Iwb zOnEnO_KZkFzBP<8v{+@Jq2UNeUN1aBvI@1aV;hxckK_>D(uavWv$pqk)%c8ew($)B zO#YU^DZEpA%!88{&ochlC`EgUWTeHJZBZ8WviK!7b~K}L&{n?5OD&_C{E_Gw9ZU%V z-pjYo;*80M6OQU8BLWwl-YqRTUIp%0+Ii-J@nSps7W}C@R!*7Q*Y=1WRZzMXHc?&j zz>Hv1!6R%0$W4nPlOwJ!tRsSZE{OBpIT}+!cp%PH{}91Y-9ujkb2+?I9gbPFqYq&$ zwT2ci>!`|2v@1nK5#>FbS;p3;<%3UbVBvxA%^O?GJcX`zwqwy3%{6YH7`vsT6C*pu zn2*?A986*3)^Jr2%@c)+kTHSL`4==~a3ptYX?o+M4-bq50vr{Z_$EuHjB_P+Oe+N{ z?XB!}uV%cOc7eylLpJAODNe|h8v}T5w(*}k?8##SIPHwvFeAW9kbR3qkjEBeLDPCIn++xTWxSv8w zgg&B|!>5gOV!t{ow+`s{;XdF$8UXlb=4Zv6fjpWtY zM3qZpk>u5x`4gv+9io$@qi50zJEymZEQyFtrA7MuU+jGcSQN|FV8f6kNKk?#$sltCK{7}dl`J4RCqY4SP=bQM_JH1deeb?~Z~uSy`*y#z z=j-aKQ>Us${FS0fmoAfBXXLd)k%+-VIcAQ{s@s`2D4UBNgY-XiP zlDUs#NSuuJ9~Rge7>MLNr4QeKRI}gB|FNxnMu5>Pjt)OkkT-HP=waglbx`I0TGh#X z^*zV>`z`wxY(Mr(OjA;96#jc-oLhe}#<~0NjB%>mWf$Y=^B2vf9HuOaD?)R#oqN7I zGD%lrry2M8QA!1W)6PU-DTmd}>@<01*Re>-(Z9NsNA0AaCH&*-5BjPC@HgWzN`Ji0Y*H_#F;@iRb z%uNae)kmWL#o5u{pzDkEbRm0X#MM{&)rS5;=@X3P(M!DL^_TJoN)W+06Wa(5wx=C% z`^Pwsh3OQ1^=v)N#uZ}F6s^(TG}@a#YnM`R-FsBmw8&`EJ=HrI-W32D8hmbZi!+!_ z(0Nuw?N0nlgQuT#MRJ$3VGXo)ZCl}=3uo?>bi)M9S1$N*(VFbUZysoL#^7{k4(~=j z4>zObOWY#5Fw~gKT5Yeig7S`8I?s^G)-KU%r~vzlOs{@)lj)N8B6+Z=zKGX`$g4or z=v!^gm+{>5xkxu(SU6s)S0k+39RrVg?kY?fvo-svYuNO@`(0g3Jck90;N9D=_0trQ zIu6zmPMuhH@R&pgs0R%M+&)-0OpmxZeQq`B>uuqe$?DR@{&x3`qNXxyy4pLvYbo?$ z!S(J0Bcgl{a@^Suxy!WTN(?9z06jtkLy)S5_t(ajz{` z(4owRKRkgcRJi9{k7YSR7Vgbqrk}$P@Xd;Vdc5124G%2~`&jl>1o`hi{~Q5_{0{!+ z#($|ZpqG}ydt4EgPq4;3*T+tQH@OjPi*|fuMXjB*=1}W}HVR2{K87@MUJB)rr|$iC zGNGOiB{bkKI#h|xW;C>V33>fGYO`~zAHY0nqa_#;3;Sa3RXKVLUeH~&nVOoUsWM>= zc68WKF@G2!V$?gm8a z6tfap7Wf%5zYNuR9Ea3nh$%xEyzS}RQQ2SK)uq?&oTZaC$wzj5=1Gt&o0i^^;IcyJ zhg3-I=lv~$F{ZD(A>&JRxz(*Aw(fTH(ofwz*N;6!T#W*W^sn*kV667$Gmd10 zk@?CLz7Mh#=Ol54B;jNd&#*XDO-@fRxM#+NSj5E6U^(=&D=yu zA0xWn<#$;+q^T(oz1wcL2ow{FsZ%4w|aZ_5&xSRA^i{A9~kZGOP7>srxRKAWrmi5YjjZDZs zldipEm7N-~xo0<_eA6?DQQa2n@cY3;4CE;NnUzAywtU_6E4pz((Rr-9-0^7&!%Tb% z@o^ne19|<0Ervd6@8~fCo);Qtj)MxKr$BPZs>_c}IeHd6{UQnFoSlbV!`7*fXy2?n zZxN(%c-S`Pt-_DkwbKioy^<_dY{@a76uB1z9oCQJ;#~0FkP}fZxSnF> zXg-w&FP|wNvyApuxMfNahKP&mT%kNa;AG+-4mgo6%IGSNA^V&;ho5mTm}=A>B0jhU z@4kN^2~8Rm`Jo<)|G&8@#g+JT@i`XLW-kjLG`G=s#77VA->slRi2g@6if17j@5XO%bHTm z`UE~8;~q(PkymOZ{}vmKEn@j5hohIcS$1HD8b+3?VP{hS@lQoAJcHrsvA|F^PG%o3 z$JZ^eHgtX1qt+Ik?vEh?<(c6tPE>mdj;irp0_ynDra z&A;&5PCy?ZSjE}s-o8Vw;px4Rpz3+rp|c}DAoDcR931X_2|oaJJngo%KSgfJMMqAW zGu?Au9Z9mjFJ$mlGD4xEJMEoeRkum;n44UDyts`kn>?d+g0$KP29)}*Z&~ZE&74`? zWq;ceUz*l?bP~rEMcNjdZFenjJ)_Ef)GrMiq??-gKE;o5MGMwWUieT5M}SH@i~9 z(5C+DW|~$@;qu_}&$sj>gVr!|tX5pi>hjiq3~xo1{_Cb<{x&6Ml*Rh^& z2OhdTP%1A1{M5XpY>ZOUd#;rHgvp^@l0L48!<7=jXzu(DW!lTz88&6Z?0whWAcaXUblI>GX1s6 z*8@LjIb*DF3@>k7?5E@pb6*+C#+Q7W_?&K*b6Gs)&_8S0J)fs5*2>IaAfJV)g^LKZ zxx&C1eX~7*`ayP<2$znHz>9-Owd+-!wrM4=@*f||8b8u6l^|;R_EkS?^Ri5PalG=Y zrL;$7@-~9AbcC3G@Wa*tpE`of{OpUFv7=yl3DWy5gRN)0@zXQP@Kb=R%jPMQMggO< zsSvzhj={Xzf@{oE1fej7v0>;l7tVE+R6u~C<6}3!wt#F(xrzulL^G1H#q~-S&THsI z>p*vuwJy6#k}NbBIrL1qfy7#`M_>|2IHH7d(AARGXHa zr1@8(`7s=2OTzKS$Lt~2R%qe#Tf4cDYisixFHtcXG>D2m@2-ccmlVF5Rn3;7tq2c@ z(q%}CCvV3mq)|$SF`zdMg40zO&)~#mQM&%BLT7T{$ ze#gmGL;UM5V!AI+EOFO^TF$MyTuXWph1c_rghy7+h(1{$ai)RBYPfn5QonJvYD%g98;@ z7q6tVuui1PFp;+#GpII&p?N4i*eX>}v!L^adAI4pm##DDc5>gY zn$y>L(o1}kTHZ{Y@tqTT@%YS5XS4&NMvug#@TgHm7t;Y__6fG)0)l&fuXBT{c&Sz> z&$Psbj)F#ZUM?Px?e7qWIXXmr8oJo*`1+-@*!sinuP~W+k~H6N^15ya)C2FA=WWT) zjN@sOia5&m+o5|D33sTJ27U%{{nzP?`DGm9#8T76qv~ z9PeV<4x`nJ!T1jH^AyLlQh^S-Q8Cpynb~j6(zj$eHKs_b5pUYd&tNkxA(+e#Wwrx4Nsi|BJ5E@x_hDHO9bw8Z_(HH;ycOT zR1)!g_(C$nfJg6r)h z6v<}OJg8(4`3Qt;RRSopnshkeGc>qfPUiZ>sW(1cCc0VBtWwkEv%JxjVx9V~8I;(U zEt0=(T9-(@*L=7X+SQWM)+p@$QxmTIhbElS!UEZ75dIe{oN8gak$Z6e2X|KIV#Bm_u@>GR4HDoi>p=;d}zuvEbx%~Z&RgCrY zjt58i6u+bXf8)kO;>SsP7ua>8%Ed1!=0+Vs^n~SwGe1$ejLKfqetcot>_c)B^Xh9# z?-uvo^e^u+XbGp9s>0mM-@7yx1?LdUnUq3k0`N&#CdpnGFf5Ngz{p+ARhG?OD5_w2 zV3WgpZh638_YV7vC^nYmC5^^rgpGG$beTyJs&X0&OAn(~w8vdlxUss{7M+BWP1Gyi zJ5pK-&!gsB?XlTd?##?=veGt_>JE~|hbiDFvr=7L?vG=Td!}-81~vc13>nh+Kz0r; zqe?$8PDm<-Z#ZcqObEwz&<~MsIr5Y9<6-Bsu(~-(V7YhCaFPGbBJ)qHP^uST!>>wp zd%A9%n}tdv$CMYHKLx1!B))uHEH-ne=s<3H`+F;#XItKWTH!pm3*~lZ7i#cq%Uj-N zMep{Njk-T%#a&+*Ek(ooJ+SdOwf8JjRs|o~sL~)DrJ?&zv4mDm0V6RLdSU(`?g$Ht zs}2vZ9vtl9eDmSz89zecZ*8rTe*SKpRKCA_b#88$Yw>F{%xt4ythqVgxO>OPqGKx4 z*Vk92Ibq>@Z$!<_larGyU#_-qDOVl*j*pKePK-mp@ZXq$93347es3mSvb$f8`8)gn ztC@qj_Gy)n<}L=i?F={A1Fqn&HLqfkCwoS~Y&RlJ#7d{X^4)m+`07bmM$N74cJQn+ zQc>!V+ESS1#>krkBk;hH2cKT>Uedm_WOrQA^QN`<>H%gSbM_17o{1wj3qq%3pHDN0 z-CMVlD)+l+K`YRh>3cJ~1~Sd+mK%{8KFwcNCYEb6z|10z=El-}eWgLn>ite4pT;jo z7$wghANx}j!0xi2x~ zsRghN+~&~q0qcQh;T|s#>!5jFFi)=GXVDfNCOH;q?DjQj-cv@skLVS_6M1|K*r)Mw z0;6UHNOd+U9dZygi^kJqs?%GU37E&PeKKD%)hh@FHSSiIPde@MC#7uAM9+;y3}fO+ zUzY`$(8=m+2p&9pb9kuLE5+FEA?Cp;kX|izXrSDzX}J-N3u-fc#z~hw1*%)uX1=kB z+2vy69|e92dp6*F!=`VFRgvAeH1&vPB+eP+%K(@kr^i~KSk0V9>o+hv|M|nMLw}j< zbo!pjBXhEu!=t`lVRFwjpS-@Bc5%@7SuN+?i$ep>!pBM(FT`bi!Nx>6Nw_q$%kMKm ztOYhMz9?aS(c>>*kkI%Ph@?DtcKD<1j!%J4y<&r=_j)s4$oYYKxK5N`@egmQo&vje z$MrbIhf}>{8Ccbdmv?Yl%PRw|1n$4wjo;aI-;x{4+*rAVR|4DPqUQ~}G?+!u|a&wt?=w_s1*5Z^i2`|iHc|3EId;e?i@{qK=y&D#tQnWv_L(}AC zG8t3UZ4_+?apNw5pny>vcn|{e;DkZqE6a-}$b%CSFPX=c*Ld!-T*KXnwHcAS*#!^O z4q6$^leuanpyfBC_iFMrOO)Tt9w8zcgSU1UohP6Ah2PZc@R63Qmi%=mkvyyl9nDEHqkA}?!n;0$2e7oQh-an5 zBr7*Og8ItTTZ`hG@9A0fhggmF!AqydHiR zsLi2@`2N^b2Boe)3+wsEP`pHepnKSln+HhvK;gBy$@O4(MM6B)%C7Chsj>oADs=vcLDI<0J(zGl_5aN%{zE}ePJuY|oC{c| z01J5PPumC<_0!No0{vAozA-1;BLc%!o%(#t3xvpMTPGFX^*iFe1vy}a({B{wx|+Pl z8`&VIX`fb7n|VKwc{74gOF78jAKVSS3cg9~o&=a&T2#2yXrxalX{>7rG)(BI@NVug z=&jWgXb%tUsi+T^yGdXcn674)BAvU*H$cYy$Q`rb0|<%d1R>eTD5M9(d3J^fg0Y`m zzj-uFMAzOv_c=2G&!TEA`+`WA2$r~$6%`ga8s6wZq=5eH%^9kXcmuOH2Ou~7GLeDH z(+>43)#xf`agJW-B_RTMSU2r%S@ollT8VUGiJeYlRG|P;fH`n}Vf}cXKTbKWUAhPH zg8Tyfn*ct5wylQ(02OH1+sGUsXrO})05Jg0Ha`e&2GEc{ab!m5uN6R741{6;&7eyN zoPsVE@Sp`u0Qj{$2i;~65f$JEEWjHI@BnbY4E%9`VY4#`2LJ$9%?xO8?bCkkX8U7*hVrE z6968l0hrr66(|5Yx*Rnjqx6HmVTh>v`$q0NVW&VZ2nSgR9JV6)TX->3hHASFg#8od z>GoV2LMwP zia-1|C@ep4P(ef}*jfNU3EnO!JZJvPpg%m=8fpBn*U}ZUDGvbuyMz0#Hvkfs1D$!2AI+<>?d<0N{cOP8YCnFI>PS#KFcP zB*w?Z#V01abcy)VB{D+Xv+Kv>Jn)Y$3LXv)-bFluix&wlU%YtnGSazt`8)~Xf0DuJ zD}WFSkOVRzD0BcSAqs>L<#YzDHuh;NiWo>G`uQRHaD;;u66k1 z?$heFk;OeN3-_S-ycg}GOZx({+Lj){3D0Ue#y%Yo0;s4UwP*#t4NYU`k9$J2(zl&4J(o+9wa-Clvz0cNQhx%ELNRFAon1jc& zqx4<8ofS>+h|N#T3WxOt>{-LE-G+F!=^a(^@j6|_i@p0oy&eVL?n0a2`@ZsiJ(d)m zEuAdjlk9wE@oCf2QkPEv{@AFxbmB;5RS*+(D4!1NGt1RGt&hgtV7qA_8V(|FOj!nI zEM5KXZ){)rrtb^>i8wKHB_>Jdbjt=xHsyRKh17;e!(`01^VLf_LuHK3K7#@@_h0nk zi1mnlLwor%v4Wil&XpyDH@BoVJrW+iOsHAOJHlX)X@PuG-uSS2^T zuLl32n<>uD)7-knUiZjTAg9dUqX^`h>$2Eg1$Q>MU6c;Qc^IECODzg2{MAFpv!s4b z^~$DFK0@%3YsDlai-l<8KW{UsFg@5g?onuU#7^U*)^N9%Dos z?fj%xoHiWeI7D+-`TYFNxoP5OjfK9ma&E=Cie~h z=qchb7WHMtl)-)_!4==!aSl9(ZPpZu`i|*!M|Izd`X(urlgfQ)?bv?iH}_7OGSUV! zj|PWNK955*Q$J0w8XN9a?t+Rh!||`_2i)7QsxN2sd;5MEV6jlF@~W?RwNtlLL1{=~ ze8{u4bP7PF;AYtmaz?@|3j{c3b0#eKN5voDo`k*dnEUo(>bQCP@y^_^sQ6m^U8zQE zidS=%*@o3qVu`yqLVYq$Fw7#XImN8XFy;IzlB?XT7y z^?GdjzK>@b-&U0GD5=h|UGokL=R6eFZrHu$*bff$Z=cMZ0`+gN@ZUF?idw$wx{6=9 z+BGh!G*v^@oI53ZTxYq-VKceJ&G(L<@LM~>@mqOkPsWb&Q$WXK5xZCa!c{o4onPHl z&D!QMb=&pey@|$t-Kz2&s*)*Cs*|&)lzfc;=|!LNI3#s4aovhDh$@Nv z=w(ceRt%5u=JtRRrybR1_0gT)z%a|)v90~X8^`H=U!@D94UDi|b)&{`9^DsQcUXWt z?5>*L?hty}x9yWM^SyZhR2Ejpm>QdF3b(&pMKn4o`i}cBd#TcA?sos)%+blS6THG` z?f1{Ph>vYI_!=0-_O0-|;SC?PH_L)B@3Tj(Pgs6&)RW$Lh<4jrO`gs%JGu7?-KgN~ zkd74z%;M?n@jJ5vybOirxf924)`>8>%(V&nZ+(`72R@E<4PvtETG0yMFZZ_!nY;)| z(ob5QC`uJi+x+ZO+hUTTn)Q+ZjtTizB=+I?DNy86_Pp5lbYPb~c^byi&|h4PI|hB1 z!24j#e)q*O#<5slyei7@rA$)p=zEOp$!5Ym5tU{3B{wEN*^CF<@pkl^-_1~B&&0{c zRB^aNb1-tTSsXkpt0Y6MyT7x+HNP|ev2aN8S7z6wP1}iGkCBrX%tzFAD{jsu>5q0i zK(juveMk0&g~`@v8tr9*o9+WdrUD}0j7E6p>^xXs1STdu4d9tfK6cNLBW!um*Zk#v zh~~n_s_UYAjgj|ZD}Gho5e+k24sY6hO$_C^>^!c$2p<2u_-WMcY9>0z{_2M#(9EQ5 z;@sh+EIy}L`W=t&>SkY>;~KssotVCiHh|P=X4>E6#pEUh7#^Ty_$TD{?V4?36)q2$Zqmt< z`>%-^n(_}=tBhjA1|n)1*vvbhL$;9_%GPPtC3*FTrDaQ^X57%Kp;Wx(_l4z*Zpn!?HdE*e20$N`ilDF`EcOw|I z5SeJaf9(5>xB1gmQ1I4$i|fdz`FpYgVo*2ZOGMTwu$V`B+-!WJ#PzMCA51xfb23*7 znyZga;|0n1uPc8$MR{v#Rn%qP0@KgbZ%IVAg3Xo7!;EHQQ^w-R%d^U$G4VLO#82{aP4h! zaE43H)Oek!iSpG&pp8kgdbpDbdsls*%PYJy%4xfPS#3$*KHRq3k3saENK^B{SWyxl z6XsLJl)e?Jmhj-3O@?QuLt7P1T$Ap;Pj@>8_xM|DR(vPT?`166rA1Yp0wTL!R~2o( z#WB<$V;(f`8qa9oF50pj%sA>f1zunB2?cj>W_+dF)`(W$GR_7^_Le7D3Cqo2bir-0 zTzK{C8fBYX~hP=F;Qx|i@eB@JlOjXpPCV#tnY~R=Nd)Qor{6bqWOS7_mev_(ZPErVm^-pP%d5It7}qEpF`DXH?wE z_~hYmC^k?3rFkoKsWn>tbmDY_km1kKKa7(b5R{NtLSsA|dJ>$ue{qm;kc}U4cfcn& z)JV(5E>r zeZcA8UXW#E^xsCE{&(Wec!7n?8$i|-oZFz@JimYNjT(dkXLF)+K9VDY5KYiIuMaW^ zAm>{ULeN71&WO3eIr#b9`}~QVBcI2^s_h+Oa$JTX90PszvPW+=>i(#`UQmH z=wfYY?ErUhvj@}QN~zgM;bdo(OqYISr*- zrjCww$PBT5f`382VCCp?SKQ9p@+YV8&nqwY6AY%rG>2Q5xY;2aG?D(oprcb2&@=tqLN=xEMR5VoRpXX}_WI!Y=ul8!EL z8eUEwP96?3ZhjaIAB+>m$HULV%TB|?%`M2qEx-li=756hwLHR5!Jh~4(t+iu4Gf9W{iv3QhX3`-R1$Q-b zv35dOJ37!Hb2I^G{0LDxkk<1`*gO4^?cZ|iC!)F8A9zmSr1q?Eb2Bcu9o!!7fN%vl z3q>;EEK{eSE7X4^`6cT=qR*P+XCjcfN=kp9;AhL(+y7C7D?-{Gtj7PWon4U=R4z5R ztD~EX8C=>OB$NJUVF+uBKiT;Uambio=z@cb{eNE&GUg9dCt*n!xCsKB7K2mspB>;& zVclPr>X9`3z=lhKk_u5ePH;;)nm?LG_-rN*mJE^yJ0n9$Nm$;& z6=C9F2A7u-r3350X>DyTECuBgml1->NXrOHNXbB<65LYak}xS52|-C14@^ezXId#o zGdE;U`I#2n04^-W{hy^hm++X_{nzq9wx}?e1z5NV@-+~pgVNEQ0dP1P;S&IFLGTu02VZ`69syqP z24RA{?0hh8@P>kZ5H1K~=Mmy(hjByMVNgNv7Gme)0dE)&2m|vG;0A9HR{$C21LMIP z#tY*S;TPhQgo?{ZO7Teu2|&g9`J|z|Fg__MsFWZ#4>ydDjt1FXg;lIQ;dVMw)?ib( zp7BCJ@RumvzeK@!1b(DC>kR7PM-%J~{Cs?Wo=$@qonad011!IveNG<4|Lj=zJf=E{gq!V<{aD@0k zzW@&sE&w(J=z`6~3l#$MM7qedLW0P&LV`#fAweXLkkA>95cJHC%uVPlHz6Tpi9%<2 z3Lz;0-+X>{uu0j$ZotmZF2F9xF2oM91`1_|@~}f;>`-2Iu!%t=r~o_IA9z4qu$O?H z1nfV2U{?Zr0@!K5z97O4m4@>1@=EdZ3djiZ3h?kiWnkRgGUDPq+ya7964J;>Kp~ zu$;9k_?`0l@fV{GcmCnCv!*%wtO}c$oxc)h$S)e)obCtM`tM%vfLi>S%%RFmZv4TY_)v|NJY;^{=RQHF5tpH2>RA*8eG*e=yR_%EZAE4vsgt z=#aJGLjEtGHv`u{w$NGJU;e{?qJskir1y_8$&H^Qhu_cN9Qe(F-yHbOf!`eX&4K@q zIPj-b1MUD0Ej&P(#a}e4Zz9DdXByRiYxL^xfq$_C1Nr0n3o25781;{c|I~A)QH>%C zA%viSD#(9oRGWbs)fh+-4g?)3DEfJU`q39qkc!jTD4^mB1X=vgC}i+lp&Ha~Ktn@C z#l*+EfQ^ZbgLMW6qcI7wh%VDYFM&rSjftxc(9x^M4r|7dYA29gFafoz)p8hkH9n5S zCxYtMjC}4dbjT%Ot}#+>O#IB)+pk?D&CF%zO{23ba$Boq1a?|J1XM}G1A}U=_`ew( zLRdVL^XOn9L~4A4)L~&k&@s@^k+h={5`miBNJZ{T7~3Z0bUe;}S!(o`i7}&I4@eBc z)JaVJ8RlKGB^h@r-k9-XMY}$fTBy|EWBMFJ+G38#mHu_1@n|0}^JoWySIwGGasj)W z^Mn7#7sJ#t8!1%zM+Rw|QSxdJ7d|9c7i(ag0uL`g3>qU&HBYRelDQMRqrm9zhiFm9 zqGtllYWcdX`C&`j`|1b;2Fl=>D0_+>WCin3H2bu zg;M45r3-QH&+VI=KK3P;(HQWfcn8Zo%14)mI+wl($C-7{7&n6zF#Fpa-@5jFa31`L05;eSmlR^!5JgDNjv%ta?Ux%xP_wCamCe?uIFTc<&i!BL$V`bZDp=A^HjbFE7& z$&H_fvCLjlJ6e6MJ`IC(>1QUU*HNH(JC&b0OR_SN>6*OcQ@Hft$w5VIz! zhNkgST-tyU(Al|m(b?EKbFEQme_N5<)$K)7+a;uVj3!4XPJ|UH<1)9enq~a7nfFymMrUF_=j%{;d728QPm3jf(z8al$+pfaqJ`*KZ7!+A zz6sF}Zz55iUuJJC0QVFxW8QM+A&+p?qkT`?8^n#EGh@pln-dMIDY9E_WRnml?o4?c zMIRWNbS>0%OM>RrywyG%-`K?RUSqhskr_vcMM^=PYr}y_E3dTN7y1xK-zanG>xo3mCX9Of<(DmeMs=b6%Qi`y!(wf}fW5bO0? zvIvWB<3m9_d%`##D(K1SQP0Q?2&CmypM1YbJ`{MnjyVMC*G)#ukl4KO@d%b!1G_yK zD6t-6IWg=Z0q@G3eEXHO+VR*;-LlIUchAKS6{L23{JA-n#>y`;Lm{+iq8EA9@L zrUo(XIZ-8FS2U}le3uJS&xdL`T+YEQ4ZB zJgfPmeQR1B@X1g5Y%RK`A9mj>5>E6mQ z_?xPO#wURag&(I@+T%!HmA)Q0zz?=^DJV`Uy1hRBl=ip5Sfl-Fg*XW^weI8G*hX_pZV{tyTm=?I0qLQgCSrf1Eo8s8YS z+D63`(cUL5g+#VoY^Ba|&UnxI?s`)}ihOkEHRf1J=L-E1%{I|`or3JgvI+^XhK!<; z_8~z{_L4o34kvq7k`TPM*(-sPgtI$AkFMii)_=g}^LE_8*ovgM=Acluh)-wx=_`_O zN^vNij=u?TOA7T_f~%OD+*C@CP218;M3VVu`!$KOQ=mzqeS?jWiz8(7C`7($pVL`u zcH*D{y-DJIS;`HSqTb9;ns8L>rb@ACvV@1O z2}aRqSE(-L6e&~R`!~XM8Vv#SjBcW&?%!kPg`5_RJG+9)6`o7#&^~wgR5ar%k*0qv zy0iKC6qxzE`&nFHrdl3K_AR#BnA29MyP9KRV!*nDpW2>pEnO8igkCAwZf!uijwGtr zN~sW4(hTa=ev=SQ_Klx^Tw4!D&2W}FapwS+B=%u_U?`{E#zW_uP)|wWx_W`#~t`p7b{>j2JdhXb+*_7lN-A!56vAU zLMK1e>0`3lJib;x_^s?(Eq#AZeR_^jx2W>!%hKK+SIM>Z>HaKGtuWp4!DW zkj$WGm~8ItTIwAr^}JBFIJ!R3#v6Kl`K@I5j%Wt{r4n@0E+*9yJvCj;1%!GJ!RRGT zoV4~(OPLo*&-5EbX46@dhk+-!oAXf`B18~`vC(xo>C>p%_^Drzo>7FWg~b+Ydv&f3v#jd# z6(y7Vk{M#hKLEE4C|-MF!qt!%O;2utD&|XLre54RoTT`$rNm^N=^~mU*^U`*=9Y|& zcXbab-Yb(Phul)j#eAP74khAM)$uU}(<}G6HwNWhOl-&ki5zUNY!A{mt^17<#|*3V zqDb#8s%DL>ZthUL<+HJlwYMHdt>%`N#J|FalkEIZALEsHK)X&Nk(Tv!)w&Tb>aGIK zd4=&sHn`}zfvIylMfq!8|F(r%_h;Ae5dPY3*Fs8VVPgyJkxdu()*HZoq-mSUwYs|l zQ%iFfKTNpRj=Ck|ENiW2dpf!`^00<tgCQ^+^-f`x2X! z$GoLguk2Wqc=L4S>3$+2Pn*5OIU1JlvsIb=Zpb6rP0$!!ec(aB)BfluwWQH&iIQ{@ zj~Dn7t}7f?x5wChxRI&98BXI(E1k7BPk=5T;LGbjE?!BTcD?h6xgIq}vbHX@l_Fl~ zFx>^F`VtPi=37x}G+sSZm+heLKGkjW+Q*<;|J6bFUKRcQQL3#Ge+PyaN>$Qt8=~f1 z2_^#c_d=5~R-e|*#wNGf=Cf%-wdz($Rf-f!8uBLxo-rj!q1?Vy-L!t&x9!p_v(sx$ zS266aIA6ZN@5Vwz@ZgiHH&`WK3dPrIy58$I(YrS``EeJuhW}M%0{dObmot?0wimc6 zIcnIRzt(5^+qy@4=^x&YUweYPtc;L;Vhrd^M>Z2~{T zZANB6Q#yTi`UhKZNc2Q0rqw|Ju4$j*)MV~x+!lA8FH4RvEL#(_>GQ2X zDau0paV6|Yj`Z!jLzAx)F**g4msk2A5pZIdk~ot~z6z&YwTouHt&S#Nl@jeIYMO%C z0Omkh{KaU32dILV5;YA`?YU?ZJgQiISr4AQfrh?%ud*9iu^FQ^k=C$M_{cn%9k`!j zqoy5?&F5%VKHej#L?iFatAG+6ilMH^)0^p_fy*$)LmX$jRINQ}1yMIM(<-q%s>T62 zYu?aD_OU$BOmJz|9x2WZY-q#sJ+f!UCw-LIx;~j5d#}4j-hAMFmRV)6W1+}~5!{yK z?sT51vazwHm43~p<0zT`VO{*-P(@6#UP@c!e98McH1pO=3hkhE5wpUynVPMFkn3&T z$+nmk&)H%|IIcZ7yxYvU#L5Ml=*gy(`1H%NjU`NL4P9*wV57 zR4_VUMbgckP^HK2rqKl268TM@%BiX4wVUW_^}x!39vsJ*X(4~@y1LS zfjTld8Dh@t+417d?7HvGmnbFAXx<(3C@YbUaVm-7ov412;FJ1mX=j%d|RdR{zz0!fda9SnS9g}XY?hjM>ox>(%alq-0f`0ZeVsTcdi>z&4`G` zyX$FD>pSTCDIe5Kum{~W(&|B}Iig*&9>m+WzqaVACjaPLZB~txt*PJWf~Zvo>S<>swjFO zLRvtm{mWe8zZYme?f)@r71XrmmR!K07J62J?n*h;!0&7_=Rp=0Y!*frnq}HoQb|$5 z_tD9;hOgbZ%`%%lWrr?tJ(bg-T$NYD&AGHzt5o9UW`^4)pVKV9rK+aki7FL83(35> zeViNn5l>fhssL4IpUL12ag6M++AgQUOOC0EEa93ZvnQ`={O1TAvWZ9Dvhd;16voZG z6dSg3pjy@2NU3%$#)CG>RSgsxs}U>evK=ML(*hR)s1n0%-|4$-z2Rk>K}n9-D-L)v z{}qxUax^4Vl2pP>DrF9RZ3wX#opO(HnX8JlC&XrPFQ^kQbx_PFv@1@x%)HDJuBf4) zsb{Ea%!1886k_Yv`mV~>`RQ|qfmcm0!7sT!p0-A1`nNAZT3i%pSW%e*U!74Q?4+4P zRZA=USMdk-h@>6J|n4#9dJx4v*G3Clax+n}_a< z5>3Y<5kA#9qSe;}^v2sNQk4a%-WP4IU{@*idUWU_nC{WG1OP-47Ar{sH(OvKL-)cC zP|Us#<3FRT)?3d_$=jo$I1M@E{5byg!Uzjp%AJ2P>0}_Z%fO@b zN}uh#zx{?*I&($^-1d}TaOHLZ3v?CHa*w8)@HGFn!kWqT6asd5i@rm366QEv-(70cKj<__nU-ytrpIUns9$I_{@RFcNVx zNR+O57xuKuwWEsF$i~}7qnYP9Z9LJ38VKP>J&ew~jh!=%JTrP3tks+L^rB)Y-(Plo z8e8*!^TA zvV|?e$Iw13Nk;aK2toK1UQ^ll9)FI}K&oC`0f`*Ng$c4=LXv}*>vi+#(iX8>jrC7e zzmS`h-J@lH!(0yw*EdO?37RXSP|m+FkMjO-6obHjirZT8fvdaZNQkFel^$-=-iN&{ z$#9!-_0Pd@^&|n)Sp}n&LIEzH5>g3SCNmh>in9c)c<#)wzUMrAVjX$_-eEab;b&mHRaFzMEU!Smxv_@!iKQA(Z8413rw!-kb zf{_;4?MWqmyVrftOsMh6gaXfd{=@(Ye=qV)50R|Rh35u&eIG2%dhI*6U8%th$Ev(m zV>cR&RyP`Jo9d-=>ArovBSW6#)3#D9ru%4 zF0bC_=NP3a+NL}cI1DBX62ZNmV2yj`j?lGk z#`iZSnr~^muq#Mcr9wj1tGDJ%Un2mDg^* zGOjQYs#kq?ylvCoHYB{Eu+!ktEjsQus*hg1N9lGDEKHr$&^79+W_qe%1bY88o14=Hy)9GUOt~g-YobPop6SRGe=zoV`2Px1^V)u^&moTJ<-kMr%?;?C}c`39aPbW8m!R>@ABim1OJP!y36|}I&96- zh@sQAw)L-vu%lm3C|&bwG3S{eF4xVRH0rR+*y50NFy3C0?zLi8t8qF>%ZiTRb?xJZ zvDSxQrw1o<^`6uZuQD0ha5nHij`L1I*L6H}=<0u5+fNl3nB=_4_gpJ`-kue;#qAa) z|Lfsyr|<*LnB05Cc($4l#5L`&ZR8MQ-5C982b)J@cH1|M{s((+85PI-t%){)1PL14 z0>M3Kkf-JLk--b3dG!FLT%YKGj;) zwf64X_13#~?Pu@j+3zy_xrkq1W%!}^#kS`feL68CS(*UNTNQe-ytKU}76S<5cm|*M zo+>R%-f4lfm70kADgxMGut&mQm1wNni%i==)=>F^48W1mL)(SU&N;}JWJqDIgfqZg zPwJz7$r}F$+iy6QQsB}If4z*b zkY@^km0~^aSiX?OD|3%^tqwactWq1*#~UA!{tB(C|FqEfKbJhb4B0>23{cKVBWby~ zvt?D++hJ*A%r&D6T6}kb{Y;j0-4s$Gj-bcyS!u-huFIp%ad~-B%=5}a0U^MHq!z5S z7L5?QnxSUnS?1xy-hfay;$#p;dsdHe;CWVFR$uk%XyglslUz!K$VtCxcNU3zU3x4+lwQAL{dhLZya+p%QkX9`p<;#g7>j;`0`PJv&fV&gq|Sg;5~$B9?P zA0{qt!c^28AL*f#s-LoaZ6y=;Qp)1mJ>;_1Vw`g`nNaEe0_d}DvF%6(`+1D2&%7^| zhf1|}{CV!H@|>+OjrUY^xcOFY;Tw!RZxc}lOl`UuXFk=4@=g(DP^Q|k7fWvt}Fp*)Wh{QY0H*7wP(2%QiL)v^dIeVsTspAZ3X=EG%@Ie$;Jf zJqyKp7ZiY&v0iX?Tyfbn)*4U;cg|vbVp)g7O0>Ur;{Kf3JH``US*^{}o)$6RAJqEc zufB2Wg;wmW&nL7_iY#FoVS#zIS=k(LylZslR~7aCDW&s_SkPrloqJ(5RSY}MqiWeS z{Wr{@f@c-dY+m!CFS7m1k%_~BEZQ$hmIJB0sxCb~NGe@6V;r$~Iw8J^TO}=@(q!1I zs9s|pOXcZVgyRC7!tl60qg!IL*oZk3{gV1fE0_P za>{Hj4nABN%$@;)@ZS!wY^t+kd(sPWVQT}2O&VG6`H`fqaKGsaByX$q1U-GdVPF6H zF*WdJi)8TLw$_+sPwNpp0u;(A+7CD?&{6I!?&lF+i_yHwS#!%#tHwWJI}u*y>-q#h z&YOjlk2%6R^88C(oVv-ZP8S#0F^X61^yVZBj-x-U_LWUTV@D`7lgAypVwN_#i$ek4 z4_mF_gY7Md_@yqNXOrE_4dAZ(anZ3G1MGb3RA;Meux=`u#&^%PkihIjQOV2+$&ddD zpz>c{QU4<%^S@|7^6&J+?RREt9XUmz%YYeRdbTTs_m!gX#E{z6!C|c)H3azE9-St~ zOp$G7ZvCFnMYZ%)WqpBaGk_s z(|t+Vdq&0U8|hB%xH^9Ppwfa_`7xxvyZCsk-f;=0p+W#*)Uo+Pe(?R2YpjSGzKCCA zL<$ye_t%k{ww=TCDK>nFmrOJ()59j`Go)FxDL^~khw#6#pc}C-bz_3fM5nwe8ZMss z2!*uJi*NYej7iPy%K1uvRN0&^R+DR(WW5Oont0FHNd2@%x{*!S!3~dF;+NmaVl_|V zzex89He9!Dv146c6e8~BgJ4ijYh`^J6v+GesXkenYJGjN1ICzOr|!WN0o8(Y*^t-x zg7o(7M{F`1~eBfjF>D4$q}OZ<8VTT9o_{@jw$|1cjSLrJjdr?!`nEV5-aE9TEuW$p z`RA=$iru#wRi=!rGpDrUq^$@WOSL^M9anwCNcer8nDIO6YSP=bK(Ts53A@ENDRR5* zu8Su83z9v!UZ1Rqf|E&8dLdt6}~O<5_b?Yq#2BeS71NXAx5iFM1QcbtA5=Y2yj*%nVB3;mB(x=;%{L?)Oo* zQrtEal#|9DkB-lryCVVSBt>ZavxJiw5oD~gZhH0oq+dhxTh@QMco{^51+EWsEDuxfSd~`!X$hT?B~N{qn8jG*~p$M zPVJP>60&0_55rf}XN6#F>6m>Pna6WjI)ke(4mQf`M5BU>9sf%FGBPTS;ar&+hBg0E$P9!Oxu&j?b5b>}d!o0U zOp4|^Dz+X_p;#^pU(ODa^5)h>}PyZ@(f(n}^x9 zY(}+@BP390v2U6IpBCJnX>%1B!oOk85*=a=2!6P6iL_SzSgy7ld+|Z^Oq$@1l9z(1 zti6{M#11T+_D27}O|jZTzTi429Mx0UAu)BH;F=kw#!y5@Q<7e3*wFqNv(&Oct}jwW z&LcxPsiZDI_m`cW1X>2Cb*`d}f=WT<1j$q;~)Zs`v&);z>|Fgra#hKx?R?JqHJnuPyP5<)33a6Fq+@ER}zsZ9Y22=Zay< zl1}rPSWd-Xa!mFu<+=7t)6L&h1g`l|^QQdHR5X+U8sokOAuKog5>0eTdEr@xAS-17 z=?uEd>S4t4Ui&d?HocCvpCU^&(XpAi{{pVpM&pxg|Eu{=)L-bs4NQWG>^m=QT;`yv zFOfi}WP~e4#TN|v4L4}Ub*)HGR`Z-tEwe%_VBCUa)bus!SD7=!rN|-h8-NH(mPW^k zxaUeifyF8VVs)|YRGWM1OY*F9Io4tG?uj&}^)lF3$I7uh0G`r#!`Q7fL!hZ&X|QuF z{ly7YJj|QdZjxMaitfq_?Yo<$4}!+*LE8%@m$$GnJe{7+b!>3#iCPTW?Da%&2T|l0 zEDuAQJaLJl;6DM|Wn@o&zf@g!iPnVu$MX70XWSHqW<#r9uh;Z$bYdXp1mV>#$9^_7qo9LS|?h^{n zItHr+>$BRq>U}L1{^qo{qYWb8=`-*v{1qzTXRzv2gDu&pmp5ngK#oFXry+18YMzIr zXd7l&eCSRYQK@oJ{}da7!&64?nNvIQoem;iHGM6BEiqf-u^2EYhLS#m*{VFh_Zj#9 zToaP9@(kl+e#Sg=z~Bf&oaU7Mq|7-KoS%dv{6ypDDfs^Pin*#SKOrenOHU~txZVt^ zriUW92C&iiNELbRymbYd}3Yf+F1Fyi+YGDe)lK`lAGk zNgS+#MPhmELPi*r1Ex1L2)Un7!R`uj$(1ECNf}?Ew0y8)gWmmOv-d3fN}424#hQ26 zWcHdG@4ma4oFE(R%h4$jvQZ#yd@wY}a1HrfaSIaA2+9e2&zy%UpRc>p!;$!1pGb^W z?IC&pxY&Dot<42b8lG-}y!DEhrt7BHD$bMLz$XK|ZM$RpTwmemkMVuaS)XwP`^{TR z@5s7Az>>uDy+FgE86*f$bQ@fF;+R&6QXziR_fAyt3HWQ-4ziVxfgGmTpf z({~Gsz=?M0V*A6Aynmk*Q?P_%FB|mC*TNSjhAZLF1E}vIcr`j4+ztNev7~bkX67&U zY&ppQ^+oq;FxN~fF}fI-sZO@@kB=@T@#EoP50i0JP?zEXt;?=hO@gLL_sY!uG@D7r z`XQ!S)JvE}#|K8rDLRJ5w%XGHercinkO6wnm0ki%nB6`JIk8!9kjG-T@9v`$}!U3rkYv-oVrIRC)E!LP4!ky6z{je&A(8 zgcl`~trijcn?aswNHJ~zU|6}@wqbe3vU1Cx4X(K8wzxdO0;fIc=x7b?%lVnd6l>2_ zyZKW6LxsbTi5(bn;JVcwOIs95PPOjWH$Fo|=open` z8|OY{SB^M8{ssrHY*K>10Ct|L8Gbtr8>|B9IKofi3bR;mYx}~`5lFAge<@lodAcNw zYgo1N*L+1~RMjw&|0E$METB60s0HobAl@giA(#2}2y05O9#yE1cvq5-*Evr=5;Jc}Of z0~u&|@P4EsmLYCn?D6ouF>)3%}w=i0VH521c(8oXK0 z!>?ZX_YLiJRN2*x(3;wI%WT*3l6EJ2%c~Knu=|n1zu?Gvzj}>BuPcOy8+~BaIAZpV zVC7(Psnn(yYJ(G3G6D4>hnl_Zk%Y0W$c%UJh zu{qwt^@+tTJmg|GE);vQt+h6Ve(~DHs%>cDQ`U;TI-6w#@Gn4|FOb#44o2?ZFx&Kd zh(D3r!FG$DflKTBm<`PxjmEZLvE>sCzqe!p3Iai?4IL`#P8ZJy%!GSv9obI2vRv8n zIk-rOfBbL1ZiW7V#279Z8RV+Lutg#eBNw~9 z7}F3`t?|I5I;@xP#?fVB6`aeJ@~&0cCZJ&C2J3`#ekL^_*G&%)x16m0YQmhNXsB-d zhbcL6lnTr2@D`50vSMb=9#-57bQ1dejakOIf4(qUfETk1vY%6X)t2YX*u zrc>W95y!xoa+`wgB{ z<+K}i+J`F=<;6ZpB%>+J&FSad+1=iTgyLtvRO&7`4lkAYnank370DQgfOI3IN|m)b zO)Bi>wtM{rUJrQi)C(XOu`cI@KDX?Gr$yK^=g}y{2KbZaSoH-OYk0P-`nSACtLT5v z1gL)2`l05kw*X21MwSlU{rawL&4M!O*Z>&@3#5q=bs=QS#c~z!_~ujQ8kR9PyK|$d78h zWzj#=z6EoxW0vF&q2;uHEGrP>QwIvo5~v=PdZe2ls<5f}xW6ELGZcU_+uXSGjmPHBpRNEtum{)R*hD!G4s#fZ$DgN8 zYT4yB8##n{NPjQ7XndO?p^3wn>--6g0N12}2IVB;Y-ZR_psL;$!u0wXM=J(pQyW(K zR`Q0Kw4C4gs{uoUZ>XCR?k3T`Df=10poMlmc*oIc_A*OdW0EmF*)uP6I~L_z$tL6a z4YIx0PH>2PE|S)qCB(6l?t|b?wZp0#=zw&tXXLBq3rqkju7qb?`pc`Wk*lSgaZLI% z)t5FT_1@Nh2+k$#i{(exW%)GNk5VPL=HevQvm|%zIfpxv(DsJytZ$d>H#`zlVtG7; zUoA0YCvP^K_EDobe}F-^p`GMX0e7Cky6|&@V==gRs%|&M^fgD3QxYMymRlI^=;WFt zW|2WqKHb0CY+f`T)njJ8Ora$%u?RAe@@n|W0XZ1e?eK0%vGWdcr3gDRdo6K^&&ArV zlr`&2HhL|C_lt6})I&KhS&$C96-v%jCsF0gLy>DMkbEQ&rUDVf2Py9xM{B)MS%ZvJ z^STSB7zu(R6zTulseI3R2HQq$ukSr3LjiZh;U4y+iFN`IX=S@7z6((ZcUJ0Oz$$ZK z#`AcRk7TSqTfM%Yz_s?ze0YfX1x5TD;R!#n1VcB&yrhg1Bp=4(6{P;Tv8Kvrrw0Me z9TGM|{Bmx?)!R(=k!PINQmf2DQsp)Ufj|g{$8EpU-M=nj*;o<1_d?-VRZP9?{|qJn zycs^48wDO<4jh`QW|#taNxhT4>l{5qL7(V40(Fx*tNAQlgN@{k<8AG zXR>*!?f*DqCi!>v;iiXugA*P9*GhSGwNvKXs|i;8vDPv+=$Y$cd47!@iXz z*!OAa;6uPMv#=@KHd8e{Fuu}<_Gt{9mmFgg@rwIk6i&=LLmrdnC zMFZnrUxcMDoX?Iw|Ikx2)>lo7j^KJX^(kF029WxBKoE1Dt&_o);BkI29YhVx9t>^T z6dVL_pt~!ecG(M3X|~~*a)LQe8oe;)wd%(*6fW5A8f<3p6eqP@T88liWXdNuiy{P6 zoJ~0-7}A(hgz|M1@mX~k5X=&JI)^%`FaH8EM0p*ZnqSmMiC(IA@sRVD9=}^FDK(;jxn6 z-}X|1xyja1Qh`~M9oeW2SFsmOXqOu31+|Og$gX+rEwpxJv&s&jOdX&mP2TiSAa=*!YB#yDG$ov^_;)*Hr%4m7Qu7OcFIc)11uZ!D$}|^n zZq>$eBnSG9EJrUP3RFxA!L~{praZOp%vXk1}z#@|->o9A`jhe`! zmso#+;j*vVm3wIaMzhZ(ibVTGp*1NBePXRl`QUVGg!T7Giz*swxURf@pph-`G&@pv zLZEG3RjLuSaCIE?dfHvV@qp24I7uGVz7sV`5hm4%R{he<-7sg+vJuC&^A~V~FES44 z=(^|P%1Ju7G<`D5eeJ7Ih)diToiH=4ZGhD-wOY<7zl#D9gD zB~M+}!>et`xA%13x$NXnKB~&lntf;OFJQiW23l=)u_$!caa5j{XK!n{INoL;J5Beq zS;O(D-}k*OA-8KPQ@V^4Pm0vOY%=VFupZLrY!zoBC*CLq+ETa*(OMnE&R;eA*;=tD z%%z$*I9i6U7X>kUl%Oifb?jY2`+mno+_TY_TPq#KPER`)U0rtn;K0Lu&#Et_5ERxt zE0>~&rauQIaLRIyg||YHhTp9tQUDR_Ml!%R(@+oN)c~y4!Cm9bzW@Qq+OL$%q7~6k zBnftrXLOrc4Xk*BYk5Z4n*)4Ux280;7?gHp|Oj51AJ`?(mz=K>E=(aNuPp_))$-X;q$K7@i+F@`p(>XS- z0ERJtc!SJeMYO)YNw#_=z>$m{ZjVmIWkd)|q3ulYDN(ZtMts@yPzDDcw}@CMtWJ25 zsx+TRdF)Q-t36oB+eN*O*bF#f8%1ZQGAB(0-xg+3o)f-mKzf5g2O0u^zo2KQUbzXezH9BnEdEjsa(Tk~jFw%d#3m%gUA32(D zl%*N|o^j=J;-gFW<1-P+;(W-jCy^PgYg<7_(FsS73Sv;j<)-Wk4$EM!IFcI9`e{_} zv+nfX^YrW0(P%>HaO}gS&o*(Z^AQ)_`Y+*MA=e|cQmZ_q!>}LFMgLr;Huz5wQ^==Y z9DGgd$S#(#w}EMPp%>~(Lsn*Pxr+_NgF4P-dgwb9OKqb~8M>5wed8S}`a5;^c2i-g zRm6IhbIIPEUa}|73DC$T~&-(kK-4`cXj-S?lTR99loPeNT)a$jA@4BS(f zk{1|6V%P8wHkL1J37I1E0=uU@$)oN}#O)x__bO{~k0sUoIn8x{>~OgV-!JT(9=orO zA?SA!TUgZLIUE%$F+A|tuEtr}AR;lO6qYn2X_Y**ERDIaL=gkKzPvvtXlU*kB{2F~ z^)z!C5$KJxDXK@bl=&)aE z)cb@Jo%u&l&ADVv<^+k4zIbz(cSiSCl`A)$ci%?8gDSM@s{1p+WevK7Z@I^$l*}jR z$9Y4@wf)2WI|4%#+;(!>@@%WT{6E89G*|n+; zls#{EmrEAj1QRdTcgzsdgdUqH@j;AmWhpXM&rA}q<%4WZrn9WJ2~`_db| z9l2Vf8-fLW;awaV@&iVDkbBc~V+>!EkEn*SDrae#qbTw+ul3z7x6N|G_~LqJ>$Jf` zL-dMPz3cnp*Qq%0C+1n#)2GIf1kzhV0nwE9iDzNB1)T@EP+Q1vx-3eioD)ghCA1Kf z$zAvl)DIWbwqV7Xw*q=DiA#N=_CXWqXJXdhT%$ikj%n-bOf^Fx1d4LU>dNmv&|#kT zZDIR$*DTju7ICf&pD1C z(;cW|gdVr!TkG#BYb1upS1l0^!%fAxv<-KaHd@nJeH-8_u(y*aTi(=ZZcK%|YLRu~ z_x4zt17}-)Yvn2Skm2g%&8j>@T=i*{3(ZE4C@ zcQq?>iD;=@t!|FPujid6IImi?#H1|=d~?YItUkY*$x(NzO(3;29JXO(4U`}I2HsU_ znxoCnuE@?DwA<9!xIo>#iX^#o)ti*-$X%TA)}&fJq+7cQeOsnSD%IVGD&z9}hqIDJ z_|Y{7LI}$j{QlH3oX?=2fGKjwkf8q$WixI1_bdV6I`ctW{4SZbkInhrN z8n9F;Vo~#zzp06kin49=mQGv7#*JCw!TxhTzLE^xBF$jdT#oUj9&#%xN7aZd~moGe` zHluTmwI9V7kAu0%oxCpXiF6q4)vY!E!)JlMgU*R~DZE4M!LT)V!G1Jyo^!RugVSJt zwGp9i>5A#XbHk#Oz-NjHWnf>0J3HTcGC#EBFCZ0mscQ`*Y5ar*U$+U||4tDqI2dVE zvfZq$?ZIY1>o{Ir^AYn_P?;Vkwu>ugG3iaAGcprY`~gBJhwFjyR=ue?BSlYhE-vcZ z{8wgdBxpaEp|l2O<8OFZ&Rn}Rfm2`fq5~OM-yJuZQskef zaEnUfZOQRVPux!=3*MwGHPk=bF++4lIeNFa!St3ayY+9xWv?$KC7Qzyt^2O=p|+P{VDmXNuIDWg8<;>pH45k z5am^GdZ-IMyh1+Zs+G`W*#{mZ9}$1HC-h@K3DQO=b~6+nnEN6^Qic3ocgnF}Djhs= zZYOLJ6{Ww1VbJ}nD3YX7yF~jV1@2w@IkODR(LE5jm(T0PitGKTP&91uARpS;!-|)F_b7z=Ba^Yy;{4ykeHE4GDI#0oc&jH`Eq1#ja{a}()x?Ka*Kru{x1G;Wan;>n= z#HUzyGn5@J*<9un)*VB_ZKD;#miMVm^BlY_-pp(Gg;O3tDJ=RT=lRsxQ##e`((nh9 z4`F(iX|G9WE zz$-;2pS2S4kJEn(Z=U>fU$H+?i9!`F;ur4|N4<~l@6mLs?6RHGq98uONUSPYMOc?3 z-N_dRBy*dUZaOmu$AUk;p0NoVy#!qH?$?OCF*~#8)Ar|0h&=`RQcm)2LPXaxQ>u5; zoQdTLN5$b_W5v;k6B)L$p16{GeYv(%c?zele{xA-px*%;?bu!VZG;Q_nne+s_hvAE zmzps}~gQi zv886z#*!2%P5RLec#`lnIr^He{N6c&PJpfg!yIO87|G3X*q{xg>-ng~BaUPZO_mC9 zdfA;NbIO~QEUS5|bHSD46EJ!ROhiMs4+G7uYpPb<_b$Y3FQb+O)sc3vd_KX0Iq$RS z@37RR;#35;pd8d>xh~yt)Dx45)i?yKwlN{zhY*ryWN-0Z&ozQ!$<2UEAe(W=Y;Vk(T&4K+gq4_AD z0llgaqfuSlt9m@%F;DyVu{Zg73<8EPd_=`5Gitx&v}UIFR6a`mK*OZ{Q$7zC zRZF=2=Y9ESXZQ~r@01&p-}RdH)5ZuN=&9gmt4OF+bMd z+_zc7wFLrMn;-l2cJEzLPg`e#e)C=3Y9`}lRA~rUPv=gEs=LIU?qI+ttLkEQybPm& zF;?0rc=^+T@rLan^mGm;amVEdbAX4?itBj^eY26>IbqqSG8qM0xpe+&mCC|&Wb^av zunV&X*q_nz4y|p$4vYW;w#^Q$Ha))?UKksrD*jjijy(yyO^EER6!Rqo>;7Zu@ETil zipp*jr{ao$!*p%g`}cFnTFwr{Au%6|J3P$K5NIEp3ty0i_qaQ;4)&py67fM7Whcr@#Kj6??=h z%WaiLn|7#?4Jhc~Q1tU766DS1Sy-^_#Hl#noQ^zS?1uadv6tFZ6Y6_aDyQ|x*K=s_ z`1$s!P>{Kk`MpF=;h^^sGeKjRqIvZ-6#E{X_kCAIdZ@}r9^CL2W%4k^Plywz~XWYBD1H|8OD z-8FC9=q+4c*f?5RhIebJ{)X2BZRU@5t}Y2CG()ZtEiIuLwIHlQ>4HKC$QtLJ9h=G3 zy|vftdQF^W>`l2uI^XMTRPZ*+E4xgXsruEv*JtMoO<{7DbkS}hfwhCjbv+>(In5cK zA7gL^C)eB80o7uVq@xAdbh~}Eb!hOzWHvt*Dxc%U73*6)%NY-@+26jJT?r;ybWe~! zHY?>(Jgn{YO$4x#W=5y7t%}|=wV4W1cV<41?US&;FP(&J+M2voUn!iIy-+x38fF)> znkcTM(n=qNcokNPtOt+dF>3Yk42-jFnLB)Rt=7=~Bn6+mEm?9E#@0I;E+X|3+v6n( z8389@k}+5>QLTySvfl8Y49o;zgDY*@<+Yd1T4t%vVdv|-Xun=E)<{+4qjw`%ZAhNX z*(P|^b`E}86J%bQwq?t&_2R_$cA<}y248ld!V*1VIt7U{WZJJ?exE=+aBiEExFiFV zn?pwy`@aLu3#LSa^pCfEeG2qeKd?QO zT##OFi~6YUQ*>n?^A@M`RBpaIS&ZZ8R1&{QdLRFY`p>2RMBtwY{1btHBJjU$1gg+< zRlypGs=v!P$#zDVvn#|Re(@)c5^v#+CMsy@q^uWZ$>tKBXi*T6aSWz`XKP_Cgw^r+ zIOorRGB*_F_h}lHT4s#FLQ5J^>+d`3I2KDNTo)F7O}90gdJ)n`x#;XsCkJuh#<%`W zwX!nU|B*_!^It?2k#GcT6^mMjEW9Y|&d&-lLy#m#>FbnFBXX8xjmrk}wF{U(!5~z8 z_hn{5`@lkGYjr9TzE4Gb1WaYF@j+DvUL=!C)3(1SfE$a1Oiu|ChkpTP{l5NLj-k>H zJ59~R&P^Mx2@4C~q#idUH**S>d9S<6xG=D1RyDUAYe1 zaX*fn&HUQ=+tN0oeh~CG8zq#Ej(O&>1UeA*yT!1fxJY2lz*0M1E5D?KW{V%j6KtsT zy2zCr_l8{?!TxAp-|D+AcKX!!dgy4Xh|Q<|cZCSD=68B|bruaghoWba&mW~ieBx3> z+3pZ`!dTR{SH&7`16d)*ei=Mt-tFTb-3r{aDpd)8nNT2*At4cV&ia%a!LluyXL;1I zyfG+VVE7cp`oW;+E98~;U&kCvQq$|w3uEijKUpCb7_XW7K7KB z&nAOFC(^#PoR^<}cJc>2x9sD{QF;S+-QnJK9tnfb_TNGA)<{-A}@Q5gbt zQifcjOuDUVR99kpwnpCvWC z{~)2qN-ea_$y~K;fnaRt@P|FYzczu0T$UpT!GI;sLApHMn!kV!RPfX+FULh#CvxZI zQZxuc$lkD;k)_~%(XXW+{(YFAtYlGO*zx-nmeF0wPdzpjkf^}d2@k5xc}G&L>;A?n zk}{49BTHCDhIVp|@- z`y9{Kxc}(1K~DJSHWbzJ6(6kbL0`WVap65-814;tX{LdJSQfnafjzAQp)uTN2KLPv z_U5+{Yo?ibmd~$M+lKT^=u-T~6z(8mP?5al2-$kwfjltzb7#`VnJI;+z19i0od7~? z^H;jTv|aUd>@NP7Zi)V};O1)mMm7&}S4TGb`DtPw9j~krp*Pw{b56?K_<;^Akd}Ir zt*Tyepseh=zwqbrwicL&@QVD^6q=kY-S^hYy@pK}GRkBH+aR%gI}OIx84|otc3LED z>J4^+>r*pO;I-!ATsoap68`| zEARZ=Ux51S$>Yo-kw&-PDTcww%W&`G%rGU$JoY@9uuNG&)PPP!BLHDOs0M(DW{<;g zX#RS71(fbmOu4VXXKjz-AP)l0n}Xr}J;R`_k{bWJCPb{(7y~n2|CinYJy!!7pE z^RpvD7w|GHtu{pLhj{Un+sc!;^!XPorg%Hs;fz!0XM&Pird@|e`0Js__k3j zD!h3ZI5MOcgV_4=LP@!NTTO6yQ&c0YBa>uY_B!4D2o`qwc-dcC@JsW-`YREILJIe1 z2dibJ%BzfXfc1TU3bENw*w{Ev<09jIrishLv5f(kPIGZ{?Rqyd@bNV)u|s45N-}d~ zbS-l-b)q)4tmcYtm*~Y0Any6-jv}H>KDQ4_=UdYCrT%gciw%fff|KsRFa(t2eiEx- znIJD{1InA9n}Ud;B1H(bH=gTD(o33!x+PL8XE_VEle$&>XxpLZwNFzYqlSO^k&{gaCWyNt#3BRPEBfWL=5sQiMa_Z%-Qr(>0zn@XYNM$c)I|O?Wgw3B`P@De-Ub7r zu{WQNCiap^`fA;?4M>*Ucm9X^odLZ&I>BbW_1*y;Ke%ZT za9|g}yS#4~K9iDC8BRVX59dR$KLJl2mTBqoeO!OwdxS(GK`I>NX+0+7K?^;`>L%rI7Vcrjf$ENaS>4gcAE~YH4Se%{h1(g~LeYxj&O@2drE zfn&m|SEQN^owNG>cWF0+tN;ykg)KBgj0PKa<=>6<0^rdzn zz0Mj~-t=(6_1L*F!UFVx>M%lbr`=fxMisv9lFgA#kA#l^$0v|7KE!sJPXp}j4+kKf z?`m(#QrR6Y-Mghg#-1TUN~f61E^CdW4eFINQ%K!4xaQFrf^z?nzodG;a!J9cUjB9wO0NjpnH+~o zzyHZ!!I{~}i|=pa|LUz=A}rem2^g$QUgh|{#4W#E>(tTU>}B0}-gRV7Zrx{S--CT6 z2wHOiPn$ONCyxEknNSIH8=Y?M4X5SHki+}`nJiP8rQC=O&I{J zk_~HmDNZR`0ZZweQ?Xd*{u6}@27J9I{yMB+lvuKb24{>4{s%#Q6$j}>aBtB5Y*Ed5|`dvG(5LrpD*XsUko?;;%e-A#BcV`M)MWcA7 zjh1Ro=`+mf`54zXnBYC@k(G^P=QK*!MvG%Xj$WG(5JY(A&&NvJqZ_Ilh-@Mp?b9mg zLT@lzt(iEuy@lTBLsjCzAr?cTdc3tnQRx;-DTr%&lOOqGh6&;1E=SegG!2CkK(rOg zXU6Ad?g=Ivc8D#A7FGUTfTLN6E;eVLF0>kA%iaZJN1U6ga6fGglJ;sP}uVY`SqJN%>B{aa7?~8qpC&)On`w_3i^22io^u6Iilaxd`d!N z)g44`o711eR0&y6{{l{Xi_luCgak&{FlRslzSQ9tp3m1J6;_qDPM!D&M~m~!wAV>F z2jUY1lfPsU$!oekiGRrmci0rV<$DyESVVl{;J@3N^=F{GZduOseVE~SfzX=3ki zVYP6*S=OC=?Upm-xyE;%gr;IX)^Kut*>4AY7amH4vH{-;{j=IbxAbM2BrBoMv^V3= zDybh02$#tB(l1?LfA3@ru+#ov#%%h(}BoqOCa! z1S^z3X{Y8rDZS{bbN^TJu(?#*779D-C<2UMi^xyS+_YyRTXt~^9*k~uh5QehLI*Qfe_)8FiW3s+=EE-eskoazDX$eWDF z)1BG1o_KpvybU7P&C639&lDg;Wvv6C|C%Xf`*s-0w{JqUPWtX>E80=Bkd-0j zplV}~-n(t0n0!ME))M@qonHBqcc@A%HEyi;x;FPB=iaa&(H0o|%rL{_XkRpaOpK$3 z(}#sg&2atW7qRMSD}6VG5;?n`Db4&kU-Yecjc9Z9l7WknHx*`S&iSDC!@El0ay|Fc zTJ@g6)CL%CisPUcOO*L_get>k^PN3FSoy|`&O1T_l=X%Z)=`_e4MwT_^eNzm>uJ7C zgEN#}qL9{rlFKo3oy>WWj6LPcabF3f-YF(WLH~Vf$t&{kk*AZo_lf(BN?-GC5Xs|= z9jRbE>0zxWj~x4vi635g`Y)eqFF%s2pZ9*e_<6JE*C6af|LpyIGY_c(vasxg$5?Dy z=NZ|$+1cz5+8m2>FLKAE{2b%|GW|<|NuE{(^&1C(%o%4XuDZQz%1K2}{v%7|FSz?P zvehTdFU?q5JgZhnA!rgP>YP0cYMlR0G5hg_n(YRmkMf7UT8oRill1mg8N-lz2rBnk zZc&NUx6OX*@UIfvd9i;4=awQGYKuer)fYJWYYhYk6axQL++6vc1hPgl4q5+S0AfI$ zzwdix+%6yBGWcPGu*4XH3`QFi?rtmF>Gqbw&Sth~HgGtTI2_<)mNCz~wBABn9bIQ< zo4>2v&;0TwYi(g{c*eXbKf)mH>@apQB*gE_V&1J%>6eyv?V~Vc&@lsvFdIJPnP=XD zw`;$ASr&EIXB$hUoTlmCJB&`)BdC;euZ22JH93sSLWwW~lT5gAEbRKh$^c}ps+UOh zeym`o;T{K=zGYYC%j*pnNzzUBn{eq(P9UQP7#K?WPIhFE5XhDE&QbYO%zW#h^RBGQ ztZ340=~gW!l+rl9cLBy@h-hZUz9h6^7@LXSGJSbxzpLH59`dysV(QOJeO?_p!Njr! z(3DN$&oR6&l2b3QLrSA?J+)pZ_&k_plloDV@obw3r2vWX^wjEG1{N;678vY0AsG-(d6SO*H;!{tBAJ#U`5rqY7RE2Y5`2$8^KG{%@`cv9N{<@l<${Gdi#YD$(`81_ zBgHNg3!fLXO(|<}aD-cA{Vgo~!@je$k!oCwWuyxqWzJmN09?x&=q0#r308AHW7i4b z^)j`+sYF`I&vVJ?

0+YSR>}Qn=y(6{BZd`BTi?p~~8QT~kSuQJSE-XA+U&6H*j= z%&hjmh{7H0{2zGD5~$_QbJBH=aJ|tfRu8psr@^TQx84s5dcD^$8e9?_(K&@eBGHT# zWs&UpXPY*vmW5iS%Jf$iZ@d%%Y2{{-9=D9XXwn$zE2hgk0Gk7ajxq#Y5}}i;T&AW3``%3n&$Ul>aJ*n z!@V;{(7bOfb5nKgQ=42J4L-|-j5ay1Eg$RG?rWd6D068RTKoG z$_`nltaBG4SzNfA5`2#jhR4)8+qZ~21P+Sv2OIDXu35D@}% ze*i%6#Y`#@l`|c%24$VYmqys8Tr`VHqjDIeE}MlI%ZUQmop&IYxC^KS1n#)tNo5*8 zD~S3b9qBcRngztLZWVF;=wtJ53_}nm>Da!=>>~`7ds?tkr#(>###t%uf)YtJO22x5 zN+XPDSE?wxtLfdbNrGY*&o#o%+M82442z9>?+xY4D_-CuI<5X&Y*UpWvJJ69Xq2vb zohEFv@o%24i+JH|G9EV-US0~369_A%N+eU=&XOAD06mv3>Gdxxu4zz@#vU4PGX9hY zIMB_(mAKT};tP7li#Qg8zJ;|oVu1yY~96f z-K#xr?qfmvg>#$E=87_*D}vTdHi(AnG9`ejqNzst!>R|{8cGGKgvka>%xNshRW4(z z(HPcukUnP^67*~-H{{xxOt#f2fZKHw(UGJ zt#4PaPHnv>iEksPp5rAp9!pg(vsl||SDS=eYKb>#Ytiw46dqEaMBIdHn0G4b-xul| zj;~AT9L=RN-&MG#(eD5T{{YL)fSsr5R?1y;<^nKxZVLQ87PK$Hwr*xzH__plS2>3U zYwm>B%6!VV*IBMQ){K<|aAdBxSq^43yE@B5auhXExThzjrX?0LMqn&JknZ#&fv?bG z`5%>AO@v&}aTAa07+^>lZa!6_`mAp|b3F@M2pQ`FqkFuk}2l<^1;OCYHb_=6ax{ZB4oQ4&6nCvov*RyHEc37&3#$kA>3dxqq z6y-M+1eFSiNs8(Ql9JR_$=pu=d({43u&``pS8V9|Who!Sr40DDM>9l`jR~J#c zG;J$ZIf;EP199wE!=DWNS$u@r!%y3iWXkKsY`VQGRcX;GOb(lr;6@|{&K3h&nv9K> zqkIlhFs`y@T~#cu8x_n|E=b3bw`aa{9<^*Sk<@_tA=G@)^X9wMDM6N@(G74rJme2H z-oGI=mQ?c)cJpNV&}M4u)@L!Qye%?)%6%IsXj`my!C)$6^0B$ixfT>=L`6y@SZkTA zWZ;2drXn?j17p;4t&?o}S*wYThO)_Wrc9GEX&u0dZ2Dq^k{vHrfQg2S5sD~Off3o&{hn@+TMig>`+WZZ+OT5z&C|sL z(m0Qk;=YqBwAi%FJ80;1<^torE#6M6*GGF4DhCo6$xn2Qq^7W~=|=i_vW8XF+(kt! z1Zt=26jV1FBkJ@kdwpAx_5NUfo$RT)h_&{IyiIdXzD1+~fcA|s`!ZPWFB$WXJY=^`}_6jPes z+dB(x5JJgRsQN zc0t(SwWwBY)t;A75swhWW_!eA)*-YHK5E&_=U)8=c<<&_T1?EbE~c&mD`Q zZqVB9ryoXGZTm6$6ls;Lz-N`1g=Dg#er&$e%%bXgjrXj=&R%M7YvV9xGV-weavTP7 zxwgJp1c6J8me(3($(T`dFDeu)PN{<_JB13wNcZlvmfmXDbzvWd2AcW*0G`Ox`@$I$ z+@Euy70ah^OWx^-ZSnR4{{SoVc1QmJ6r*%tukSrq?&jrw*Q#IQ7cSkhZEHV*Nv`y@ z?6mD5JC?MnjQt8S_p^m6(@k69PlWRlA(R|R;cUq=16h*@{baNB;Wd8PN-;#pH= zD^fmQg%tYQ{CW#(YHiVOsGU6gZnK*we8al&5eV?{X*rROIjU*~)V$?7Oaf;6&lV67 zh!RHwmSY1Pu!_qTN^T|Pxi%iYVV>7Yt@lB^iF7WlpkyWG=`Su%21|JAP~&XMlv=%y zloisajg+J*3JOb_12t-u#a!tMXc+-+6;xH#XjRq%g?ihCea#}vPk$%Ws5NqJYl3It zKe|~{9_(U3b4b}7@mpNb!EdK>h;_JgE)C2;F!zGjumW5JX>d!S0|5Br5EUHI&Sr1h zH(9|lRghS-4}8N{d$^qpjNRsr=e}(IP*~OxRVb~)%n8Or!oXT#NVBdoP9YMN+m|nb z%7-^P1-AhyxCAuaBTc%{s!yy&*4f@8N%_=yJ{g0CBn_e)fLl6~TSHO340Bystz@O3 z0dd_C$}OeC0tanE2{9#RX%^#OCuNnjFPm1}%T3{Ux*Le9PX#2q{_<*BgJumS>8Y<; zm+NxJ-gO6p0rilaNr9Bof(3BWuU2ioUocV@Hx%?{=e{SX{{R*_ocgg`tv0Q zoMK6Ikl!?}#shZZGlm8y2p3B_nX<2aZ-#KIG7wGWf6@4c7On4X?PhVW8YQN>H{HbM zM<~9$RamB6+jCvBwxo-Kl6tB#(`2$?Gh@4#Ja_ks-hq@YsoUIY;ta>koon2FmRt1|YY)2g&`@Npfr zm<-#`!sO)F>La@Ct=q@t{I^t3r6VjHYnM59Ez6BMQ-`&Bv`!Fl6;|G}Ck)UnSe+V0 z!iSgUI@GkfH|8V@FwVcsE%NV%+_qx1bO(#p*Q^X&;vf&7bO+PA027MCUB=IAvD0qy z&f&{GceCzY%b1I-l-VoccO!PW)Rd6ON0ngZ&NAIAY4Ruumu>FdkswQzAkJM~05@CV z9|xjhy$@Uade+mNbUROhLA4uHpKf+iarKGMaZtOfQs0#|txQ6DV@Dmat67W~07gXp z*Bqdwhwg1G68mAGNalTgDHjcsb8l;2z*kUV<=L@fs1vv+*TkI3Ca)SUN9+TM5c6?G zBt=;vy5-?a#c5Tcs2rd*=thp2%l5bWu86~+m^{}106hKH5 zw+bh3v~zG9Hsgbaei-ABtoc5!R#<%>caiaI?n{tveWbOh(>CsNq=P-k=}}iiQf{T1 zaJY#cYlAIeb;4R|!gB<&<%Vk0jS3Vn3_PB*dcjVVGBL-0gl^sB+PfMJ3Nt{4Kg4r`qy_jsvcDkIv zVVg-N+$^%wXIqPEbv@LgOxEtGT}eC*mNp|pa4(`XW6s{Pj+vqI!{Pm1$Gqbc_bNjy zMn|hCVpiLoH!$mZbUT*ZAMw*``n>pSXOA##L(pLQ$*B6lq=R zT(O`(^X@(CD4)w?>fi<$4UQ2z&I@-}faT3+QfG?T(b?V~($R8xXeMT$_W zAzF^yS#PH_)sMsWey3lRL=tW1*$naAJlU(*sc{D>*#bmz*3AP-_B{*Qi7MIK%bHu1 z!nbYf&v4b)rrehKEYsOw+ciAl2Pl-?%5RF9m2*U~6Ux=53de&-T&6A9z}pOS{LQ#; z>9J!#9`RVVq|Ry10F(3#`r(KXBM=pTW;0fWM=G{b`{vf>Wy;MsZVD-BSC!K*BN9t2 zao%rzClsbVz&QADHkUNWBh@ez2repUjVizu>xCh$8(hPuw%X;b8IksNm8GIwI_}iG zh~jecpEk&1rqqnYSQibsS-frQ#<>DT?4MM<6L zDBate%&6P?h%{fhpUbl#!=<>A^J~&~-n(+!sN-j>jN+8&ZvxAmI96K(y>L)3F65hef`! zB{!*fUFVO=-ULNCPEZo2HH}=x?N0&ef;I2$YE!#oCcwjYS6TZHnO9A~h_02kyjGI* zAsckr+oNu7(`bUdbR+B5$?n>Jq7qmvRH4HuXBAqi3d9R2NKEA#!dzww;Vo)&2w_ko zZvMg4t!cVD0NK^o^+&H2hdK_$QVlH7<)!@hsce{;im{JNmqN19TGs8Uc34g~%_B|8 zjqrf9%|vC@2L`s^5|x1Dx~?U68k@ctMYdKBscPq!L;>}AeLqUg(_K!zHn>3b{hgb= z3&O9QT%;5{Sdq-rWyG1&&V@EfLPoEBv7mIz%^bo>Rfcggl^oK}anPD=V4SAN1}4i1 z%2>)9tt@ELw3po7I1`ZS{6lE_HYwh`(6{0k!w#74j6TAkTSJ@Y4aLn~XIQ4*8CN}) zTQJ0KIU6tbE%IVIZYpZQBBi_~h1qT-+*LEIlqT|lWdh=5MJWuiO-MSq?bfcZ(bM$T z)X?i)x)I0y=xihERcZ}1FKj9IyW#N!K*RugVldBgoDg%Tlb2fZD^atXEVMY?ZWGDr zt)|iq_qFQFjs+!g0_iDfDFj_L6c!Ju%wRQI1?8G!Blt0;VWYaev+JBlKWK-De{R)V z>&tC#R~a2NGKK~iZ-<#cxuEovSj?>E8o*`E?xx$Ky?E6R)pqp{&Y z6D{$U`m#LAgjUn4D4e2rYZlgJ)acc$7=R3N@3iW#)rTdI&*BCTECo&AL=1m3%K~7w zIewqSs#3cHxagDQ7(k3LIYJo|*9q`i9F2M)qKT1sODh} z-v0nqWIhv|b?$(@lHSWM6+#y2rg374a8GciYH4zpDkrGYuS*#Eg*`IapEbF5(xLu{ zHn+SE_9xwHI+oe6aB1#fW8T9*8q2p<`CZMo&7=*$Hs+h)45VFAYk)9^csSr;;W!*& zlPslXvb(=Aw=%;h=JLX3m5ymB)6T@aStN{w(KkSel1ASQN29vlvXb(~^gC~fIFs~f zH%&_5Do(XC3PeM8-KhB{X!RSX!sN#4-fll!&Lx={aA=2eZoF5cySZn**g1_2rEncC ze|4fHZGnt?(E7!zuRE>_=Q=rn%Y)m}Re5c0UF}ms&o&kvhLrMuX|5v1W-nTS=UYP9 zvaVTNx;DaM0>f`r#W;uK^Ct&!)&_`HqB}YzH|jbydy9Y1xgY8Iceqb*xdJc)!UwjO z0~&FH&a&od_dKI|8X(Vk;>IKp=>sq^gd-6kF*)y1t=h~^U`^$-(pPa%vrn32B>bSf zUDh$CzGXuu=fdMYN=lBFq^5AAFC-S_z`!J!dDfqX_c?dds@1^36BGil>RqYKH7o&Mfz8{19MZOvE_g#zQXmiF7pTO+4pYNUYKQB|2|#%zJxrRikLaVTf_d zAs7toW%P@sGR4`%_rsxe>hUXVnR2=vjxZ}K+WUutNy4tCttm9*$u-)i=BhY}X=Weu z*w)5jb7cW(UYlEqEg1Q{r!V&7g7X};UDp7Vriq7OM;>4gt|1%>qFYut zW>;yBCbQeIaz#pM1V|!56m<1>l5G$(H1$f;J4l^%3YCr+nu>B!Dq(;rt4&B{(I=;f zP@#_QZny|i*ri&vA3x2U<)`w0EIVB0mwTRxG@<5dqGIp|c9S1d#RzwE%M4dbOVFum zw{8K)hZcvxMB)qp6F1c+A`NUJNF)OS7z0$Y!eCcba<$)loyFdE0Hs z9W6->*Hp830D)2qDiWLouAp4WlqzIQR{=3rt!ldbnSXc8x&h|4JKs4hk{al6V;9QO z8bfX|c>qS3hyarUN%wy^v`$9l&U(4i{$E}i)}nu{UIr8Q?f63BOmact$y z1OY2;!#-KOyE$QcTjchOw#ua;zfnxiSsnh_w?>>mpp55kC9f(KR=K(A%2H{xNl@K% zOls-n6!kGDRUd z(x_r?X8Db;=vo|HEa}pJ zSrsTX#CuBA#7U3dK484fK5RDJkE3gD@!Zv_5As!WaDz$93|q4TaaX&Q+t|B&n~sMf z)Sbpf#(fEj z>Mp#YE6KXYIM%6^A!osCiY>vV=>~T9m8F}zip;llp>*@6W z0Ajc-%3UQ}KW5#}mj3TeeL7@vNVVzOtBZOl6h5xJK_){=mh#wCAn{sH2~E_*3z{ec zusg70v*I~ZPWYAU+C)UZY<9I~;;CatP0G@(K5g!O$85R_5|IX*#XY#@UPxYZz#6>)L;mQ}k|U`QTGQmiO(zU1=V4VvsAOJnIR{Z6dQdWT-~ zwWAid013nXWMDUUC68Hh$a1IUhF|9)@6h*bdCpJ#@%`_ydMk~K3>F~eGRe)V(@oOS zZXjuY_EL&tkF6hDc@3l^lF|ZWhHE0M8?4`}Qks0mWtOCX5{{I>8zHgHidg2m$cF<1 znx3V1A&nucuTjwe#BixEMh|dq5y2MfPSiTo#;k{^jDfH-Zj#~a;~9(qB^N&k(&jHQ znr3NFPF<0jS>+J+1~TI;B8$$X^GT^ZvITm0%sMjk!Lm5v&y4O^j@4CCt0ieAsVIQU zFk%A)4h3?-Wgv+JU;oql_7KElAgqIeu$;oH-A44!RqI~3&_Wcap%YId?n^^-FT$uc zJQ+7}CdRcEk%J;=0XfQ#uX^ISCUg( zl0BL%a7Z|$y*bp^LxPbE3+rae?ln5S6BM_2_&?7}{cn}-uQ__w+>4qZ$r8cF4r~E~ zgM~31K`t{4VgmJ_Der1?Hh?*`&zix{Eop%6!R3#13tC+Q(g-Zw07fdTwGEZEljN=y z%Wc#m>ZdqSZl)ZhT!Bk;hy>3PHk^ooD9b5z#S#YqxufD30cy2q7wQ35T=-A@zx;yK zc?@cwH9l!xd&kVpRQp3CX^K?ZUqy`q(&DA7xRhjhEu_aZ8C~9(pRMzEIa3t>0B`cy zj)Fj&FzW7rCC@b&AKW*g7pdy-(`(+;A;T?F7oRzBSQy8Y!Sl(sim+Q^{ar_9v9CF+6A7gOGwg;){F$W_wym1v2(Koc%mS15egqF@Ad6% z+NU*Ytd{EO^uQj>pJpTxEe&sltSyTG$i>ks9+}Zj^nECzWJw#*%U>__GX`@qwvvk+ z-G-GCt;HtKkv^oS&Rvs@(c$jyo^%q78sSlZQxg;njd2>(jz`kIT36=#UT(Y8K44ax zNqskqfaXvm^4!)(f(zWzU;tp2SVy?Lk2l-$T`!mV)wd(i9~5b!?%}4qVs0rKnAS3r zB>p^O;qO2!faZ@Yo{_7mn`YJMw@X zJ!0r49TR1d%oc65`ZTsF6<&!JaPkZb607y0qG;S z=x7#&#!a7aZ!)WWH6by|w&A6A0IPhp&RkSUTLEaUTGr!O%@qW)#sgb21q{$o>JjZe zW?FK!Th2<+MZ2ij!mC`#s=OGvkHNwf0h#WMUn~fhCoeb3zaOQ{yzOa4jWwI@f%wyo zG+bMO!Vo3|9L6}oT3bDzmMpclGBKL$pI-L;;Lcm!?!ZR4nRc9owtE;?R(={daqK}J z-;!&QU9pFo$BkA%Nv}W(;8Lw1BU=HjT*uSJ{cUGc)P7#;76Q|dolF5%aPro&n5-fP zwm#K@25~5Xa3UdiOR;GFP_^c}CI@qkv!h9|bRz2QrufYYKa@|2hc4+4fnP}PFaDl0 zdPXf!yaBr>q$|OR(YBI*X#404P2+uQdgk;Gf*t(cE&J8C%klQ7j^Wfd82n9Y>23Le zw($2b>LTyUG2v(4@x~l2u$u@k(znyP(?**kIib7m%@6SSu#6?fWsoI_l)*7Zqj)~ItfdCrR5-#SfBZN?I1Dm|U6@A7b+UikUrOE0p?2;)dxLo2ITUK#YsjdI zvf!Y@;kw24Styu-(rKMPDH05;dekUY8NMb?@`GcpJMvu9F zjJ)B8lWE<8(&h_%K3&`&^G)=Bk<{THgBU3(bTIVoFu-}9js@Sp{kkd5{y5a-x^i;2 z%n`PTv4`{5sr7k$%I$KrwRskde>SD>_$kpnGV`pBJo5W&-l$1Usf#`shzP4o%f%Dy zjo!N%d!b!n%&28u#C2Q1OXA$lw>pyHs^`q>;$#HfdbRM~>sFY2?OK8L+U~xeX^Pur zLLhd9il#P4v!>5~UWJE)p+@#H9j~hA?9*uHrL)pMXK31X0V4-XB)3f!M7MV#dD6V1 zKuVZZP*GktF1L*W)F>AL-MvLS;QMB_Y`ni>rmZnh_eV~jTBH3QHt`2Cx4SUca_rfZ zkW$LFU&5Gz0_Bb&ZZOiNtet9v-c&YJ8t}PJIr<(s+zR zi|bQmT9!L9JC*tA3F?+-`@V5YP}+Lt~21R>$yd&1+1&IbrFcD4Ti?2rzG z`^mnW&G^q+!(ZzAv~aY#x0JbNr^DF}MQh_)oJKD%5=H0R{%i@C2#kBHV^eikTxnL< zwIQe;C%Te00MlCm-Gq|DbC-c%v#HqLV>R5bS7M<=CbLxyRnFsEKU;7jkb;b!Wl>pB zQ3m zb0p!67tG#muN|HB zWm(h&o3ue#&IK3F8aGsTY6Z$F7p?8N3WZ%KQT?%~y!i&6feuG9@VpfQ=v!`Mu*fnjO_4nJx4@73%qV zsG+UeRXGX2+;C8SP(sT80Q7OQUU9q6;3v%}zlELr-#tTt8^U*lIPWj?gI?4=DZT#y zjdiWdR`^Ea9{&L5Wy>$Ms`W-JEoY&iZVSWmO&XTkEu|)S!=L{1yuP0{)pr>s9Ikn= z+Yd6(A{lN1juE!|-@^f;hYTECBi4K&06#VU77B*7zJChR$C-q4xu)k+W~>IHKh+>6 z@MS2M!X@zT#u?(bY}_te9g)YT9U#1%&^_}CY~ymoWu2g)LgHNlN(L447U)9PZ1!DP z#LY@gVd8KM&Yl+v@69owpwwrV91WTseMY?m;&u0aUY}>CUEj^97-@fh$FLGSBtA24 z$#!YfZ5dqbT0J-qE(Z@TSu9wR%N44zzLUJ3SX4ww9jz5CpJp~&h;jKytEFP`t-I8! z4aRz1V@mX@%=KNkXO0+|R1AQXn|1>GjHRhiq8`4&`qNP5f1MhI%K_4!-6&BJFo>-7 zIK&3O#v1562zW$9W9D^QH#9E(Ue=`V^%GkBRCXQ_PKjWFgGY7G@Z*e0I0b*1e9E=$ z%Kl&;DAwZRpeST1+T1X*+_DbE7XqW^#N9I{ippgQ&Koj}e3=^{phTb<1bXVSl}k5X zuBt|lSFc};>)Q163ylWmq;+}{nkNAONPC+A4Ko&ZV)q>5feWj5N|jdW_O{gJ)9KB{ z9<!vO`1o0XT_g_~=w>4ARPo$#LGvz}Q~Y30Gfkg}SHc{2Y1WtEai z;Hp)=;XI(q)E78uIwG{#BLpg)gCbWtiW*D@0NOP zPH&@3{_2sfs(X-gW)vxaVrdC!2F4V@Fz-d(<@6A*m+L08X&bgt&uT5}+S4-9Tga_z zcK2qt-OW_g_K^t^Te6jJxrnK!YiViavImSw-hh6li#?Y=5P;m zN(;N+yd(kDrAVh!+JS6RgU@w@wlici}TpXcg=Pqfv zcfI%j05kTDcH`YfBTmFB-K!pjM)VuF^COjBb>7Ql>13xi53?BV*2Q&ag2by7*$7|kdSXLv*i2pkBEU~$1#`6(#rC!D!$&63SKHkHwLsMoofq|B?NP2Pf8 zfv(O`Bv;JqDr&dYb;EG(WvR6&sV54nyUMOi;KG$725Zm)WXOjyh3y+|RMfAlQ{r;% zo2iW9@5Zf3N&Q=IcBw2N9mXU=4T)T>b*`Gf=R_mC@HRGyFZg_R%& ziq-M%f=(w<%_SbLt zcrl0HX3{!F8LmeuJ+|7#onqtNCob;HqqJ|sydpO&(E2{8IE?x@vZF<$rjU;1ua+xs zMZT=OgmKV@n6WcBjH!nf8>Cm6CznX49m85KT}3iuAOnGlI$N}KK4)BNm)zf8_-XKI zWk2&7vYSU%?cZwR@^c$QL$;#t6I}lQOWb<*tTL%(f&A*u*Q6EcbsQGMG;doD!OOGs z`W?y26aMozpQ`R#VR9uvY}?GUT6_C#nkSDo(1N-`K)8y&)k}qHMgaX20&=~5J8SDJ z4Fbnev$6Nfi}=EX=9d)GsUaLf2&cnwj!h1PF&K|oe@dNZ^4-15?^R;S4GIWpMu2FDiR$V4x%%F+;g?kD-RYkY4X2|9ajS5_m|XYS?EdV&9^t7r zW?Yw;boG8Kd#F?3YI>2S!?T#bjxEDOoNgNmbofk-SUfg=2qdi9U-m9-t*%8>Y-&1H zl9FPUi!ukV<@8`7AzPNAMoIy9BDpEqHb|N#pi1yxbTwfxtE-ma@&c~vZ5$hP?k{_KR5?s>0OJ2acP8b!FnAiGRESCwO5+Am7)W%W?mC0i%bEB zh(|aQv8w*FE6ILA?h|H}YY6W8xb6|`Ir8?)Qs?Kk`qnqJ4Isx%@4Zf&jtv319i;tBSLM^)scK)~Kj&!g*j`lxt|8KU}p?p%rr-=8b2o^BsHoFo?IA(?7okG&T)r zGQf~9&oi}o{#vB#Ei*{8aD{kOm6%}%66iP*9fx`(#~!8N=c3g=-&bQI_YDOQt!sUk ztimbX+s^J)bF-T0Hu->z!&@eG&aX3>Z7BKTWOeNz-ufm)ytJx~d;?}Yrh%ze(RrUm z)HN$$+X_OseR+YJdM{%=lLMR}Tp8URWad|T@{qmdPGHm6Azrz+;nT+s9cI1#^WBW1 zXc$5S0CHFnR9*cl4908on?6;Cz^{JJuc+ zz7k;=f+dIXDtTy!R?{qr_66`22bAJjfzJ&0oY%@FwInJzO!OQP;JwXyg?s6k`f|1` z`|H7-%vbzpa+7G6@I(Dv-1pzOTEUr=#3#mX~)1Xp_B{^33M&eAy;XQ|X+zt)?a&Ow< z3^j9xH_204HWe%D74hBUTbF2G+-iR+D#yJ=+LU}bI-OW<-g1vx(dLR|SbXWU4FtZH zmIgTCTGhu7HgUtx1N3j{0c5rAj#jQMpn5G_*6Ib<1cq_d`%`1Cc3|B}#lcjQi0sm` zEi+ln;U-A(dw!{4P%u~u6f$C#BQ)EM3g0kmJ?5dL*2To&KT~PP2_OV<#Ow>!Y3~#+ zjafl}+CbS1H<%r#&ajTW;2??VAj{cgtjPLAg(WkyguE z*&OtIkUr;RD3T;P+Q$SG^;19k){pNa^er}keGiybMMCCW)3XdPhZ0G_5W+}!VqqA> zFF908Lz4uc8Z~ao+u{`9U5VHskiZN!oT2(P6UwnsZ_T?-v{|ZSA}U@tE$l$JS))Qh zLtDL6E}_#!TrU!-4Q4gDC2Y^k>}e<%;EIY_RbpvI)6dqHjRiU-%5d*3+Rj6((%q68r8+K;bGew{fKkbZa=qrQH(KL+;|| z3GoIQdhv`quv@kcWh?zHwb~5|lgu$Nm7Uo6OfrDq5U$?wTUrkvL@K#Vzz`{U-wjNZ zt-q#UyGW=nXA*7KC1Tc%mw6O4br@wT_CPqPT7gA*Lw!SJW-(aBYSrrM^XMP z8X0d(fxz3HDrLvN5;2MIoMYVsC86@)jqaKtc_O7px_BJK@4&+`0f+({Nx~}*u1ns1 z57F!Boyz@sHU)~#%z{FQJ98D8OJ>izHtNezV>oF5s;0DVVI>P)GpR{Ez-Y9!*0CrB zYE_~GKx^xz{ns#Qtkr&M>a4qP8eOeACCwr{a_ey^m=OA0HxNuCJg_hXuQSVc15WvG zajx1tnzbD)0U$%(IA&l$2LfT;5YH0=Do;f-Hr>?E*Q5h1G_M7w%&nlfd3|n|b2=?G zwzn2~)?82{BYC#04O?kx4vPeudwiY2P)#^x5J0K3b5$@sUa-cc;I`(zN7b*d9Sb@z zG+6`eLtozSHbYa10pbQjlJ08NYI6SoGV(pmkS#TR=4@ezWiSRaMl-r2C`1vIDcf^w zvk7%B>jTiEa#Pk6EPht+8r9&q_ZZcB;1?e%4Z~>eYbS5cVK7UoITzP}wA()f(JBT1 z04CRsof7KXRnzpZoVPVYb)6tw0d7N#OJDU<uP!}-!5s^E z7-faGWkTIr9LRbe7!1qNnYKNLC1`WBy)C77-1wy?{>nso03#vRLQE+{3Zi&@A? z;Id#q$&#Q~b=EPjKr0uo?Rm27P}MmHU(vhz<0;(2pN3~XoR9B38e&F7_((B;fyHqx zTTX>eeRPBN{n4~D!ye?Z{{Wgjydp4;eh~xhxG(zSyCU9`+cjh?mRlHCI@fq2Q@Ynr z(coa{<<99_H!_(r&c$X?LLs7tMY(O!ju%zj44DN&+vi@r3Ij;&a<8b-)NZ*4RMzT8 zmzZwN)kqQU=1?dJX^~d960=(0W(aI1e{w6Q%k?T+a}{bW0CNRKO={B)@ohI3VnL=L z%wbXnFqBL%%RW#F`Ws4<%7rTvS1Bg1O)@CbTB9xM%*xq>tnD{%9HOmW-~xE~Lz#DY zfkRveAZV6V8bCXd{YWDIX}Q!b??|-~qDFnuux}B|cc8B^qFI`}siv~#F=2c%fF`TA z9p@8=Rw~|o3psAEuQM6Sz0XTSZ{F8gzn^QcjM#j<8c0sH#(8#h$gVc=hB=jzN&?F~ zL224@xEW3ori_l{Be6z|Xu75DpUM1!>JE)+KK&8h`}MHSBO|guO77~_9jSAtH`T5^ zl}~kt^3Z5GLueVp=uyokV?~vp&rO?kl-O>x5Q8MB>hhvC5z^bKa;&&)@o( zNy*@O#ImVe`MTmGF_U$w*RQi%7~xQ_b7}H3P-UlztD{U|vhX$8h-`6*hfstUcC|WR zygpUxb)H>!P1mKwl1w2?3~>hzsEoWpSp#5w8S?rNrx)ccuGP)JTlal53T^SW-gMp) z{3y8s-vO{i{?x>d8{8(u&%rl?;~xhY_kS=dYwhN%n?6ox;#QE;{Jfb-rT+k*hR0?{ zRB&E%lmo18FR0!+8huO;Sc9P%V(jqPe9=?RWf_dN?e+8@Iy02gw~2L^?Af;dWSv*V z5wS8#@|$wq+tP&-uVVYzK6K?%jny@IwiZkX7CBb5*iq6PZ_-_2{{WfaGU{79{U)Bg3(>Bn-e4WjV^4sNg1j5>R2RoxUF-NTn$yV7JHj}T7kU{;^or| zltA6j*8#6ywGBt+T9&VMXK&6|I>3&k9dE)IWjwCMfU^b`j_}84dMn>@^(q>Mr=#g~ zN%(PXQE)$4aL*4O>#6YE34C%3X=gpq`J)Ez{3rF(=Y zn+7--LkPrpUQ5$#^-fNs%NO0YD-4|1A85=3z~nq82K?-XbSy>pXXV{( zrurZ*Ov^G{POE&^qFGIB_U^<>D0bzfuNy`sGI|l~czEC^o!w`51iUE%U0vcG*0~rQ13T*&)K=Z7ZKeB@SP`9_b-Xdk!(m=g$GaY#q?+xO& z53AAWuVgY#x*l$%Rc8zHhK+U0k#qpL<9AaeeO~cGew`!NeRK2laX17#Q0fHuC*;|2d;j{)4 zPm%&8#9rs2<=Jv>4oBM8Cg)tY{n1#sw<7Sl5tZ&bp;g7icDXx{;%v8&%N-^`I-IG} zkwDf;m!JYvup1f$f{AdVUX7f~Y&6#nRtNIPKS&i}ncwUE5rXE~f7RUAbYS>)blHN+ zUXS2Q&eHa9=tqt%k*2Bpko4fUSxE37Oy*D4yAcI6f+P_jiqGBFV&YsEOMbhKyE!eM zokY5`jWCMB^6~}f(aRl1hqlIgU=V6sSElT0F||AFsfTmJpSaUGxw=J##hYoyrAA5|Ak!!w z5JO3BIQK~JIv@j;(xwtHNUW6WpD?FbWz(Luexd?6gt!(hh=EB%oE*@Px9ghC9$*aB zEWMo;{$0Kn?6;*}MWEL9o8(DKX`j@5TP z^Nm4`yl3}UMb{B-{{RGcBkI&b1vYoat3mmo`jIR@Z~U4t+f>1ixxrbA`_plyPi=q9Ai)Kh2Kv(n()4WU%M;^x@eFqlRw?xH2}HwFSmQVa=mD& zJ?2w%({MWS<<5mSpeqrvY|7ZRn)sC+6P$3O_L|asW;whq=4|}Q40)9jnMi;dGoc;S zlc8<{23>zl-lyUlr6||NN!b1pU!pTrg7f<|E-f3LS^W@a4IZmYAhV>q%%5|@;DIk;v*^v*LK)dZHjhIk)b z)a}G7s__puYMVpA`K)XyEsi&Q0?Dby4Eo50?wOCbI(8+a2am z?&5u`j@AU}x%a@UFlb5KJ8|8gN>7H8-HvL?{Il8>8Ao}}s8;5@r1`2UVS*Jr1bO+G zy5!4j%T$SMQa(YNW6V%zbNa5mmXweGEWbP=B#2C75rS;T*hjC4N}RVlw9gdi6j-O= zfq2GJhW4fu<#t=O5N2q+H{l+!JIH2iGtSZxtqvBSh#O!k zal_)KcAhIc4Q+N_x9RPBEouCPDfdm@i$NrxaOawRJbSuVaE>?+=tIRYj09=mdW1r2 z$aHqi?tipGEy1AgWD-fmk!|nsSp5B`4%jfhZ^N;w zQvELW;D@D#-f+)Dv5S@k)qQl zGU}`l4}X9JRTYT)uHT(~z-}k`{G)!SYXIF*=YUuiE1rVE7j%xB7Q0iCQ^~pNeqGMm?_B#LA&|^7MC2163KP4v#B=itfE(El{eOS z%bd(oH~!K0@SLdnK1eLmYWRcb-QLBEG)C}i4#dzm)^?Wvc6jwJCHpj7UQ%avhhfR% zRO==wACA>*<9wI|xu1HdZlCtPYG$;aF0rtPS=VXwAjpqArr%NTG5 zLYFz{@TrZPF|AK?w6slP*41~RtFBd-TT3rvka1|DnkpI_P%zUxF0x-9{@&;sTkVNH zNm%}U&xlljfD}M0$CIGXyeT!`_GHj9w=6hYWI(b{sqPxGVU;vbOL$I?z!Md%{vlc@ zYd*xQkbC~SXL+Pv$I48t|CFa#LMvL^rzVO&fCi|v@_wd$wsgiGO2FsDsVM7BaZl%^ z<+RITgR9PZH@5vw_zs5nn( zTkYGSJ|vfX$gcln(9?I2e6)XIf#%IkxvH}?$keQmzaNJzx4%(?|@o}Vl zWiUN`%lJ8LS5jFxN!UuE;&8j^U>YHtTHDep$-q2tt!8KOoAR{b){vMdYtliV21i2w zpn5xN`VPmY`!%n4;5cLD7v)o|^bTIXsVjE1iC)4C?CZ3=6k~8A(h@l2#=s-V`__uNg z@Q;nCX3n(S8&>2%4&)UgY~>bliI-=qqyTt*Am87)%I`-VoR7)u#C_CX4XqhsF1>~o zRtRx8Ao(Wl-38~*f|PGx^CIi8(a0zCgXh88ri|VmLd=B{P$mXpcgF^Fd;4#A=@=nb zzJV;3?B>WEAnAr>l3oNB^6L;*Awmg*lORU@61V zIj%OB+!>PBSniPR^gL9i4;y!&EA2SknwP4k{8^i(%5fH@pTKVUIEEj4od#;C1ZM+6 zO~dz1Zc<{#-x3Phkd9jn%J}SZ7+SZgqi?q-bGI|Y#m-;rjp~m(h-0HBz;Hz&^W4^2 z9f;t3y2gyuDM5K6HWwbbwzD$|MSFMUWoDs@iw?zZulYhKuPYXEKRz9nM-qowr1C+y zgZ76-o)Ijc0}E2T_6PedN-?iB4^ui07dJE>88~y3 zVFZ^OYJxy76|OUFmIYXD-7uEI2~(~X;1-6kh;lxk6V+HZ1F8v`j-n$m-Riz4zZNO3 zLo%m!78+xRI9hHH=7!)sYh+iA?%K2%W*v2AO?E(um#_;W6$ibT(*@Ca8&(y#?I+W# zl*>C7&{I^@t3{WHUiUQbXtCgOJ|ps6a6t~J2GG9m!+D7GT0#ZxgkVLK6&^v7NR3tr zSG4c&Qe%~J11mZNfq97Y-?|``S z^ZA_v;T*c|@UF*=tsR5;>{7rsC~n@lxU*#W|0Is zwNBsm1NsIY8}f{kY9^(#S?!{bW+{okq`ym%TK-Bp3OazJB?Vbn>}`g&O$Zx zg$s6G3O!#)?T*fYGP4s*Nw)228{Z1a(rbaC;~2xCL-BcAqZ@FA&DyOK!%yAC$<{p- z?$C4zhwpo)rchoOK;<1z)|NdAavVvi!aNY(_<%W00ikfapR(A(69*%g!g#rgMP} zLU(PomPspvg5H?F{S@OcGjhfF>Z<2?kcosbK%?ZFiIf8BrGWx3Jx=Uq^JMPvp4_PP zm`xI&?d^h;>Q>7^uQFy@g)Ry_lwQx2Bp^vySfQZ@Q~MTKlKmX4KHNU{d6u^yxA2dJAtQ>8#pEh;gj&8h=Sm;8RhB*QON)gnve zszcPDf$a{5vu>Td{({ERmAr1yCM|Bt_f2K3t>9HaMoU87GHfKaU|?5_G46tq!@|gC zAfV8~^+IvEyGk`%L`eI@w=edMh|1O&&krnJ?z82rozr&BgHMTbp8#YeR%kL3^9%%3 z=lWe_+S5m?wnk2$ZeX(uHioPGhDS~mvwnm*OfFL|q;EjB>oNoHH^nw~y1=Du9_4H< zMm5-Y8FKWSL6)#&etS@6S2VAoP>rBD`YRWjT}ay!Kkrd>_o=*y2qF`3JKI0#vCvqf zVjBf@kr!~YMZI&UVv1=xzb8$mY`JKqXjYJBbH|U^0(@jP5l$mW%lk+)CdfH{EM4nD z_*0nIO7ZTi6Pd3`kDGT3i_$zFQ7FHLQ5nh`?*u1>52`(t)ux~=qo($n0&#q+D1aO; z9p%u5jbpDEp(>S|JiUWd1b7UQdyQTx;{Eif(S%;8M+bakj;MaVQHTUTBZY(_Ui9oM zc?SxPo-ML3gM=`Fy%zpMQ|F_1C@JiDD{T^Lh zRU)19zAl!6TJv-TNqP26^ied2x-jP07(Z3QXtuak?}Tx|(OG{ovLR|hg>@T{Rg1_G;ZcQ@j%hM_+0LD&2F^WvO{RF zb1KpK@c4_+IQ8_q3vU65$+lxFe}2CCVP7<+hI;{%D+lpKZx(K93Ub@L6Je)l0_>^w zcU;Ukr@PdYn#YtEkxCvA+CvSMiN#>7udOvbFX)q>dtBSnX%}g?UCNHRmCl8}nGu^2 z8u+N*dSGyp%ESuZeLIy$Frd&UK&vub3CJ4w=zmd^@I9-`MYd{5gmcmIh@^I7dM=>o zo2HKUE-ZRxiBdxOfV%I>b81y&X)E?f`9V3ap+c-vzs{I7lpL;-;IzHIzIiHa`eUHB z8e@w^`Q+x)yo)p^TCE7rHL6NZ2p;+US&Hk~@FozcA6$ea>fzj(I8M+?kqoiXd22wv z?rY-vVH-_>OTtLL?vGa^p=mefnc#+Yn}%qCYqP~ahHj3e~o z)<@oj-BIsTPMM|6cY9j4BCRe{cG^h{T6@2XLv_tTC%Q_7Q|VJNzLKr0pxoR_V9u|h zD~FiTgEzn2m94wNwdujd;Ab>&mYWcP6p=`c*M=qb1JuSgHkoBJ+TK=<6d(O5J9acm#^pQuTwZB+!ELB&odJ-cIqO8x2UggAyw-ZTR7p3KU@2?ulnHKH*n~VM3`SH< ztn%~nM>dyPCORVWje5amZ8yrD9F}{=QThd5b~?OgucnhwsEjajVO1A&&cC^ub5lip zt4R0U=|xDf+Ed===coH5-uq5L0~`9j_pFSCHThhkAy_j$=44ks+`7MbxmupWS3~L?QTXq){VAaeHp-#!zvz~HD@c{$Z z6vUh7N7-2p!Y+Ejr!?4{)Qo zU6>1QlsHUDNwd07wWXjREkZd26Sq69pK@ul*gU2Z)1O?Bf$Q@4#hrj{wSQN3k#n#l z76{dySpAgjtZzSRGB#ahp8^kS31S*^fuIBkx*S0CKBAyt-DSZJQ%bY9dusy{THT^S z<@($Cz@5JTC`ho~~?83P}VFZ}quPY}LiK_J!D1ZKK|-Kz~H^x&&z`Q%1NpX`F}<2}}Zk@qw~ z75>%1X8E>m4wxN|i2<>~zuD#x-=kY}Vnu0Qbm{1ecsWzT>Cw1*nT@$yzq_IHduX|AfH`JFK_!-lJKh5C8oe#UFmKxt*~ z*&KA^H+Z`0`vwb+%u-#k;nt{*VnW?_xi*2fzluF+JzEYG6-iaLvwvC$Ip(#=7OLg5 z5n%s0mH)6AGd*d-)8c9EvOTTZYmdL<`9w#D{IO1J=+7**T|*I9reDOu2vV)E%#8%a z1zKw%t{|P&#{?2~*F*+FL>)plAeOKmcgKprvGGe^rTh|+;X8bbSZ7MP*$7o@QBu-D zeQ#&>`8GSO&W$t&A-=5auF4-?0qbuG*U$ib`Z}CTDy(lZZc;v=nD9`#SAA@(eZOg`03!0L#Gzu(4uOC~G}RHY}9 z)#dR>(Qokbv8pXKU0s6pXn4KXUo6rJ4^-v<6gtK7{w`)vrp=X$e1%kEyxXE{ZJ5?7 zOMHZPD*LNo;T+SgWmeNK2k)bUEf7V{5_l7Ge%cl5iw8UwT7TumkQX+cWrW?>6=`PH zycW4-8}euZ5*}X@ zGM|Gt{9NMC&9`ilE8jLI`T54}ZkwL0`Q7pnm)bS)l~cNByimiGr_M#K{FjD&UP>T| z0iK*Iyg4cerKMaJNe!*gm17+H&oGC#v2B2r{cXe?s}kcC*a99e*O0v};@)Yu zxPZE8WvQN@K-vCZzMoPef9@!a6^8*8$ELrn)$$o&>&5qma9DEx-* z$QACYiwjlV%60Vg?%y7NJd}GUq9fiZ>#6~34Ww-IL>?L-Ch)H2R-P^hl3@zfFL#IB z0R*<>kV8r^u8EMQy?~kfjEEA`auC`HG-%Knf%f;Z*qw)fXKUyuSYXcx3PIM+Abaox>sqE^>;tp4ORA41d zD2H`YDh*op^zFAtwDoAV=gE(=-S8c?}*ETrySvZfbdeEi4 z8Hs#Jbz1ux+2(a=>zS6JsOwqER!Fa6%&*FXG!x6iLt|qIsFLc6H zVk>zO=qL(9PPEu58#-9(%t4C!l=_xu&`b3wnd_J$nK-n*-;hC#BJSIM=CC6vOw|!O zKHR2;a7Flj^B|JXsCGf~cgrfl6!J_S5?y7IIB$MHtAqSdA~1TpO?Pi;0L(x(Gk~WJ zw!I$Hzyxx2X21eA9wR!ED8|6_+}PHnSgNuLT6nmzL-d^;#AU1ND|@Y%f}Q3Y#|h^s zdh9~bCDHx~*X!n4V{Eo-ehUen5LTLuJ~rFN@(McTB9VP^ICsM<;oqSS=uYbf z(b9|`t3DK$2T@;YPq}U*k;1Wq`rDdFDu=r$k`N14$A0pXOp8Z#7N+fG+P;xqN^NCvATGcW}eO3S+jN3135PP`g9gsc6S zD1ht5_*Av&+Oj9<@b}Hu_rDJt8&9<{Uv=g4O_l63VI4D0{#r8!+P)%Fym@MmmB=Tc zfy_+9#ePG=xKEsoY@r~~!X3GMf~&xf95C9dAk0ZZFsbpEfX7YH6WS3$?%j6;6Rp`k zlydX~Njzp2yeN56i>xF3o%cPhrq1<)%T~=U!yfl$9P;PwQ%`(8Qy`t#$$m8?m-c4; z)&(lkyJizSRK+F$>B@t4n|~yw6rv!9*sp?K0SweNA?BQ`KPNwMm|4)$cYIS_42-pG zt1Hj-otf?nROHmnK4D3Xk#eX^kd&LQ9DN=%wEeTz;%Dz;tG=P9udUn16=1(=$u3}OCz-XDT{&(gv4tczH_$Bf8p zEn#1P7Bz9jYeJqR;F4JTA&2${sVW2U_+&37STwB$vpCC1%d_R%-PA0jzt7y_dosH< z@o7f_Bh_D^%cbF)G#7yZ8BN!6ueCjjZC>#BQ(?~NCD3ennOo2&z+yN`LQ@hAD`Xv~ zvbB0e3>#hx1Lz!`(9y988-X>!P&D zV=A@MvDir&l>{PXThmxnRcEETz+}gMNj*hycyn#9)5-Bv*%O747- zX&}Aei~>mW(tutBlNi+d37OCOq5mx_6Ok~V0|^flSc8SIC1x;N1GZI#*_6E%wIP`TBkZ#KXTzOh@Q_66I zkvSMBZ1)w|9OkUtgekf++%acKtZ`Kftk%6uhkRTbKwh&XpI_PI0SF*u@r;Zyef*U* z>xWnMC89dJGUdy*j%YrJPSO$FF<%xAN@gNog?lfWx&OJek*2d+Zw%7xGWa;+7(N62kn;4-5jMm9;LI z(O-i-%vT482Y=IZO$?K|jq0)XVAt@usaN(`Y2Z=k2!$gYM^OYA(egT-8fkUgNNB9@ zY9=&}?(m+s_Uwm@Nm>yFUeYdMezK&cc>mYh=ArR4ZNdF7aZO)IS2Gz`4_(ZiR8XLT zEql%8W9;boPf*1ZN;}V>D;{>S&Tsd;Oty`e7r>3u*|Tr`FypurJSMN6YpDqJSmSh3 zxWvVZh@893QaL;X!4+@q9{{DniaXFKZV9k9K(BiQeg`&;1?^E@yVA~Y%yDkzG$Lr+ zPXFJs0<2`-B?}o4;88P@$FM|rHJ7%U12dLQZs*Pjs?)8O$n&M?gMNC(ILx878*C_J z-Hy-9rCu>|I{SVRg`t$2p^3UedX|j!z3OQ#dAcES#+?Qo2L6n=CE*cPP)u`#fV2#h zp7v;Vuq}ZZfkgqmeOSh%`Q-aYK{nLf4mRFn1Flc+bGcp@Zcs*xS`r;+3BskE3QN>p z0@Y!cUmAZ}?N`pl`4oAr5hS@+t*3-k8dhzt=v3F-x_r?|>{%IUh^nl-3+~#m6Lw5X z4(Yfc36@cp-u)3eW0ocs0D!cT@T~&)lU|zSANb1??l{_vrg?qUmC3PM3AnMyZ{`v* znOO}{nHF8HH#8^(ooT!+h&PYdu>C zlz)8^5c$B)+V}U!ORaUToC(xc7q#HlW3v9z=SW}NQE|n??fFLh@ZLn-^#k)SVf}B@ z>@MDOWn<9`Z>C)rEuYAfsx{%YhK=BOcEPqIw-^BSh0FN&4L!Ck(WlbZ<6@QU>_- zjGw%a$RtNsgR0dwDLg(cgpXgo(Ehly zj~D;!hbWrAFT!fw&e^JF-Dyv(f%R@W4q$!wQ?Pr977Bj=ttUT8j_kD^F2Nl3%2sh` z*2|Hw3xZ28Z#FhIXpu-ZFF=X20m553;FAZRq^iVW|Jb4s`lujbDB{v477~U1zzFa7 zGxZKtU*k8t`fUa6wsPy~K$~JXSy7X3ec1T|QFjogGz{3H1)u;AycA$bJwEln`&oDd z>Ev7nf4CiA1Cl>uIoMCn!Sa?t>#~0@*JyN%{*>bTl>1pOm>u9Te$M|qRJLLym$DUj z0R{ya9>7B%M3LI)>p)eN26(N%K95Rb`g%PB%N;J=_%=3QwUPF|;mpSuLe9OwWWg+J z6>mxo+9))f6zm3D0Ya}0yPm;q^xVsW;sdU9F@LYu#0k}SZn3}`$izK%6pjPO!E49= z0PJO=T5CUhd-kgF^0m96}QnWO##K&ADGkURG;9J8W1dOq4-7uV^{EXoWvc$O+l;I{@|5E8vEhf~!1KT38?xf)4aHHWA{U`6W=B0M_?|itogyQ(W25cn8 zS3|ht#{XqV&|UT>2aH(!{$e>2KKJibDtMhr&jq0yczOQ)wMIi9wqA&_iPNe2#8&$M z`=jJhmmgn!Dd%vJ*JgngoPJY3AzU36Z}Q)V@bw+yy4xW-<&q;QZlIqmuzoI=e*nwh za267NgQ^vS;_<7)0*nq;cK@hLU6Ka=dn%Uw(|@`wdbG|fdM)k0u3GpnPyCOm^Ix9$ z|CJ}8%0?8fatl@?Trae-x3>0qtl)GtjL?IqxTGfCNm;&>EDt+IJcN-qsPNcCV6~#3 zuRp#iOtbE@fz4kJ>OXIN#y!(t8G3^QzUvx08@Nq>%lk;)L;4RufnxXJ6;^J&3AqG) zip)ZJpF>dI{F3X}Um@$PJV)WF%>#HNG%A+^1*6g8PSVD!BJu)qs}SbUWYAyWzyr1lc1yvwQFaz$@)oORvzr0~uukd(q_3x6z^L~OBb z$BnrAl$(exhJ=-T!DJOOpVSu#94x;Y|IU%^t2D=Wzt()K!{$pR%sG=!x!+-k*I$*I z+W3(^!!;~4f)5yK@v{z|e&2)HcvE+E!=y9E|`*%PaVFqaW6{h$DJnQ_)rE8JxX#djFm zsgx?o(&4xP!R<-6%TK=Wi+W~CT6@QY^1& zcnXx`78q?&3ha8ykLtP-j7Jh-?CdL#CJ(DnijeK;dfOr93!9J6rbzGBi?$xoZ+?IaK zWn}oFm9u4`20$dolPq4f*x#Sv{uTZre-&!tzGd#kGvM{yF6)s`=9XnL?Nr(4vN_rC z*S0~$v`oA?V_(@@aOE|zH;JUfB!Y)i%UqNZdyr{A%j=0$W|v5KOPA|j9Tt(6(5jbZET^EI!<_Af&B=o> zZbd0XFDNPvkFC~3T>0gBC;pj(#k4)Mslrww=#%qyG@MfR``o8Yf9C5{b^?-ga)T+s zirR#96`%v61-b4$+jMEjEN5rb2-vOd<${61jMO4sA)WusXeC>%0RaO5whL!VRB(~^ zxU#GdMT*rkW>eQg%FbHFr(g2zP)%VH#~Y_xg$WL6WU?hv;@9G5@HxF%GV0VM_X_J1 z^8Z}^IiQ^8+wh`fat0e3-LUQv_$$7SS|GB|!6A(IGDPyQt* zOeGZezD4aOjU72IpIw5>Um)TQ0|_uME8lCHlm1r1c%SNOH%a0XI~RLO6`+^=f`L&3Y4?4XE=8oE_LxN(L?3^`$kOne<*>-eIj|>4FD|VaTO%_gP6<_6T^t<5w3YeuIdz*YG~pN& z0#&+Qjt>d0_x9fPe!iN^3fV7TV*GmJQBJW7B_qFA9WyU*3xeF*4|~HWa~_ya1$I0( zoAQnri&5gV>v|G$t(*}&5kv16Yff0Nm}I^T#p!aB=4{o>s`r(cZ5W#>ozrm~wJz z#EZ*~ZA-6?qIHS7(>uuVJxsKBTJPM8ou8}l3YK(Y$Z#@UB|OjV-4Cws)=67ZrV=@I zWD?qDuTxP|lAHA>ztIFBG0ud9AX8ceXnpH5Q*a}|rK9Phd76{7hjM(jZ0mBjl1dVP zZW`^&p{Z0_<-Xdu5ZJ1?>RF`KZwhUn`9JVf*|q ztJkw&4e%|Q*E3<@*4HFpA%|iNYe!H>z28VvQ-Vw$)mS?YlpmQ0Q0_HBVAHq7&JwdF zKv%b?gg=@PBRrie8HhH|YHknpx>Wj>WBH*gxw^3m9n@q#U4@bM#Wc;h=qP9;YwpXF zX=X(;wSHw{a;!{4rX<3sBV)8@1>%;+T$|c&B$hb*riq{a6R(~*twj3z)o_=q z%evm0YUB3LCq|p~J1Tk&5oKL2MTyx%^d8OHN9sUjf%+9qU3x7U89P?}oX**L0I-T4 zfi=Pr*xp~YsPJ1t>kJKYOp%ef!|E#|J4CC;T_~RM;*MsGAXdAst z<;WPiKo796Grvf>tOq_v7eI4bSNEHy>&SVa-8lIO{gB+!U&47BhGw z@;#yq8`qV(V3i8AT%!dwg*tlKXIFQ_8?_tuWl}!}f3V~a9$hRFq*8kostV1KBApC( zw+8Vb(TW{d)(f03m1XLjCG3GK3RNlvFaGw`=m7lqSYW%hD9JI zHCa9V_5*!XaPa>d>gzSx!1d`j^BBPoHqlI80+cB#>U*n{C`;k2Ww*9O+mTM0hqmD) zUP|)%nt59JH%-C~L4EE&0Bd7Rx1dib~EyqtubD>oo(}*tYR-o{of8i&L2ju0eFp zPgFuoXd7~taogHYuy$HOicuLEwdpo71fh+Z^;J8sI(9Iz82eWbwh!OPXhJyu2u0i} zGjJY|Mgaiy3{6PUv)-F|zIl;7;}L3SNZ+3y-zikLZbQ$1c<}75_MF{08@&EhKWUxC3alFG&b(zz8J#9?JiugbUhn=P~QbB-Q=MD^OwkAIRV^4MSrdRWCq zIv#TrHky$OfP=*5o9;H+bWZZV@G{`nD1J= z;MgUfpJ6(fpYLaY(U{K1nlL*geUuHo8Kc>dqi%iad#9jjYDE}hK55syT#;4Pj@b>P1AhEP zNl0^*BT-joz-x>t?;*8M;99@F;S-mzChTf4zb70ftXvgc6|Ut0&195wyozn#%xey( z=K%XxKH}{gRV$+_-~D*mo6lsSQS-`2_T9F%c2$^huPiHup-G$@9&;KvqW+c;rOV6T zJR`kKM7A9s@3~zNUGG5=SnoPx_;F*pnG&ht42j!Zx1~aW>>;>^f zBHiJQH6C!73C6^$7WBuqLxLShp<=J|yB~+ScLGFxRx0`>>}J9L0L+W`ricH0eXC#T zPP@J;uKmD+oi6BQTw@a}YUYc6egtk+H41K4p*r z`Q*M;+DKdnai>y&4smTD=J;6FIWW$zeKp0eciNZgB;n_C(B3z2ngz8V){@?=EPtu5 z1(FibXsCrzkdzMaA*>B|ihGLKw7Fbp>NOkquR7Ij{FoZEyu1`-L=rpo1(!YB#yi= zsT?g_li>Fk_5GA*u%^1n?U65+i@0^lcWH0~4TC2)0({l<*=f=SmstfCqBXNG?Agj6 z+z{L3PTc{wXPoD*>b1jIju=Hb1DDB1m$vnl%N)=36z(Vencq%UyGRDknK0yg-SGAV zHPbwM+wGplu((g^D%@WC*7ev{8IsZQGEMyGc~DfHfediixPdO@8$=Eoc5Jq6^#+Ni zC!y_xL>UBX?BoJxYklrQMGv%GoAHZf zrpp2a4(yGiz#g@R4KI_p2HQn#@}Y6`9AUDnZuef6PAMA_Oq-8%%>8vXMnQxQ7c{6y z7=!XqgDqfx%~m1f`vGsxvsduo+Fz8ZV+dTa%dc^nnp+u7vnkdIYGeB{uU&jCo+IEQ z>o}Wff1w7yMg?x=8YKnYY^&pOnwM6TP0BbS!Dn1We7(07cGyFyukh}%r`6#FBKK!$ zy}`iuhg*!X8y!@sMhBS@{}~g>{hvIjefXak?UC|7FxtxhE=HSwd5k-!l#>6}>|V%% z4U;XY*8aBb=+o{g%pKCoT6-+(Bh(Mq(G zx8wzxFV}fR*v!@KR?YY=D9C{~##@e*eU*!q?t@E>B0IlK5q94a8e`Mg0A9ZM(`#58 z4J3R`Qh8_S*G1xTm*w2kb+Mi)h7)a5&E3?XH1VRH7tT8)*CHxZmL3Z_ZeTM;Wn;l( zV1`e{CjQl1saaa#xFFSs{yO=)*QH>v{44n}n9CGngV!nF(*v1zh})cJU-whMgdpW2 zTQ6}}=fIw1=xw@@i>c<(MWK8#%1-MAxoW~so%$b|AEC)X136!44*>Mq+=z>tN8*85 zR>4G*4V^1EQ)MT>Dv;wXH+8zAQfMT9dBc>FunDw|1b|p63!sV6gPL}P{$jZ`OZ%&F ztGAL|339(`FcE|=!`EE5HehP+ET11naWL7zefc4^I1J6q)Vl?KMZ0;|Y-ZcZ_aJkj zOn{=39Fi*KO7jpm0ckr=cpw*s-tqXF^R|&ntB^oj5)&wA(Tz|jsBvUONYnNjk236z zyVlNUJnR=l47U~)oepVlK+GZ<=ztt4Ef&n){tuww>)-g-ASAip|6>sH?B5`y^uIyK zYntNkuP~Fk&~egpGapq_Z@u28YMRa>aJc{5rcY`$Pm4YcQ~)1Gyky9}v6|A2Z)ItB ze5a1fjy^Q&m-TH_$bQ>KoL)jH89K4I{f6^4upFCrtG<9B?^lnfzXH z0QNk9Tru@r+&BQw$`2j>IttP)`e@sCvMwO{Y{S!WJ=P}8k9)aw4>ISB1RQ&KU-Ul; zcbh^Q&fH!*aIAfd)o+}78o^vCZVpK^?)vA*-Jf6Ay0!p{k~8%~wbD5X|MoW5jndYl zT;#N;?gO4lgZtWrFT}0i4;}UcJ$eUCG`lBS@#M!Fetsh?W#v`}CuPKSBQyt=tAx#nK!)uND$FBOcHw3B=sS@*m zOG9}4lzUXzEyw(nL%lw?humAX@g}y-<7(yZjBO3dRMs$U!Hqc^+bNZSI>vDv+*CpH zkI2@giQDfd%lZtEe8w%`Z{A-J+p`$HuI7pj=BvI=YuXCZfPCiWncRrt;V}p~o zZwp;WRt2d6Ii!j_6yj^o?suF)Eq7~Kho)ugW>(rZ5EP3dVEjj=Q=*AaVlEo~aZIKy z=dG}q)IteE+hJ%mg#rSClAx4#xL9X)gJjioz7zUTqeE5 z!9y3<$X?Bckc3T<8xk$K>=&-KGVh9tb!8C;F4IW#H29Ia&>M~%{3ygkP*OT@%d}sl z#lWT=$#2HnV!eUA>p2-QB)ewnW1xJKf>V^+MCiV70sChi>$1HekB3yjoy+M9f)M+1cld7X?CybBJ7> zQS<$)&f_tq678AQaK>S%#IM_RZYMl`-dU)GqiBo_zxOxV_YlKx`Rc|gz@i74YD5 zsGaMHWJn2QR}t3VeeQlMw(P?^@&OGz{@b)_e)Pd?&{Py-xD@mIFHb|XE5n4q#RkQNY{;#@ za`dDk<{4dAR#lDw?;eM&9YF=5(D?EYbGix)?B>vaU2pLlA9db63zqSn(x^HBuOqho zgSr!mP}uR~;Jd__@!fm_0D-!Azq4$(BiAxWdW>m&JE(BU!f)@ zCx;{**vkRQ>A(ACk*YB0J4qahoeNaur=ff8ibsQOT=l`@}AbP@o>GP*nF*u+ckU(_V_Yt4K2ewnw< z2R^WOm;HBD?b=m8@$E>4wCo(AQ@!x&UB?5<4-y3A_iZa=x5q-$Ue+iB8?9qYdC^Va zeS@WZ{kgVAc~cp*S=P)f*Dx-muCkZzhF5h+dLAB0Fj5xlx2^ofs^C$cd-O8%WaC|k z_=Lp`6+`EDsu8^Z+1us+WfP~#@bI7whc~L0I@~DPV70xrO~#qA!PjXT7`cy-l)8J7Rk_2I@o94l-? zgk*Jos26E5&8B_6g;@ORQnhyip^?SUaG$(~9aby}b`}OsmhxF7o4G|OC}t*rgvRQc zCQ+jK(P@sYF$bdxJtI^YHdLU}PXpIjtSm%&7e)75hHgPoL~Cldd9((+Eu1ej&t*qX zsRvLyB>`9EZs3mMWO0SRQx?FV4-?CwIuBmLZzmlR3=-Uq9h_cQ+&Y-yC}YSRHYA%z zkl=B~6~=BU=l(V=GXW<}6YMUCO6Fsb<2mw~x}ChnjW%tnv37iAz3dM_xbd|)Y$A2f zP0Y+L7Harez%uk5Und{psrC`6)YIpIU;blt7&pv?1}~=C8})`fmdB-iE?++LV`tD&(_Mev3El^C)! z(N>8}?VJ8>ActgF(?Ugk6=Ff(8MpFCnPcnW6@DDA|JZfqSEjk$UjllLFr5-ftHVKC zuArua9w$-hX40lL*cl#+=IlWvtM9nxxm!;U5bQiN)M!)HKAs&lzl?Ps&_kRnyU+6D zCTlKN1PR!J5Gp68m0gQajC2>XzVR*?+p^MD*Gf^U+n_&JDJmX18s5X;RxOi@@w|Nm zWz)EQK7}*%>p9{it6x7v`C>fAyVe2KUygxs1t!^l3v<-bvb%&ao*8@lQmdz5lYzVk zcGCY|l|^r(rR$m|OT(!zU6wDS?m&wrS7eyw3InYRHtRr?$t*NcEd&;=K|B&Voi)&z ziaX9diN&`ox7!w~Iv=+O{s2(S63CUQN83$iV=T+hJ*$tD2;@|jF6C0Bu{G{H)GcSj zQs0~wvbfD?L=9SK|9$iS$RK1yR6dzyJbm}O6J96l_$OXQ--{TJ{+vo+UHCva276poCU9_&6L**8W-OFvU;EQqJQR}gV~ z^6a~mwh#8cTdC!K@VR37P*7@v9-d^@x=OQ-9w{-3erEhAL2{3Ma{dC*vvG(oTEPc} zy;F!>hwHx&#}aIWG?S`f$m7JtCy<$dyz#D+L&?g;rRG zsjsgnQlkluP9Bob=X)7)9C1mEeZ4-C7iFnU2vtypKb-LXAwfV8XQ0*a6$8J}PbFjG z*TYu}w>SRb;*AfI2frl8SpkSC5yV>9L$*c6rPhv<;CNMTxtI>2gh@Vawfp8J`7U`z zxfDYj+C?v}W0U8?=R9LaN=5`e2ahu_&g&t>!mNkU=f$X_{+8{CWduXFZqMiLlxv4T$JP<#6pveujRdXHtH!t)hN{Wp3~GiLddP1$0Gce=y8 zD6_Dr08(HSx5eRy&HdZA*g~0s`C6GXKBKDqBHJ&iIeDsUK27iKwUiq{S-SBOaA-(o znb}oBq*5G`nRf;7D4BJ-y^g3prV_j2gK?2jV3a zW9E%xp4&V+;nlrlkjpyRH`5L>qSd#Nj(joa9y%pQBG+FpWCY64w(lv7%RHwLmp|EHJir7z@kcE* zEljlVYW_an9QeFayy@~D1AhVJZExd+_m3iT26nZ)9s+5y+EWG$guo!@?`V$)Tja>q zJxw?7H|2I~^EM1X2av*?F~YUBSAQitmHb$mx?)-X3CW!=vcKy3;%~+Nrwrfc{A&|- ze^hn6h+-=(Kw_{t)DZ{?4(*R$T1IbQqiN4n&>XJzHhU=ewo|#_j>;DhajFU=-qX+dNjy#RwDJnfNt9aZQ zulg+wcA4qwH&$pzJz!jRcCI2FVRIY-yJ3UN0M-%gZ(I%A)y0GD--B5?@?X;lKj%jF zNNhH2{PUw97oQl9_~#4%m|A5d{(qo14kQch#M$*MED)m^sYLcn>?kyOlS*X!$E2yS zs5xS2DPg0wl5`<|dJv;+{J&mY#gzucn39I0 z`(L-7wQ~-f!6@Xz1pxwBdYTGByD2DWr%W{TI4LHoXAz90SLBOcw4&G_N+&{?U9Fq; z7)|lax;fJzUlRXY2*Zn>&vS-&1r z4nfqgZZ5|&t2PKeIeY!zJv6)lud9@=U4m&T(NeOzGZcvEiToVLgPS~_zynmtH(^9W7$wMc z76eOi#yw3JzX6v*#KXsLr`aj&4qjz5iCYgvs+E!vSkXV-*Q(2){6Kwlm>EcAYZx7m z0$)AZ$FxqrqKjC4Ad_M#KO3^=ox;AAArX%1PRsMF0Hc1`w$*|dt1$6)uyL+)Cr1VC zH$5WclGRA(kUTGG8SI*Rm3%Z9M2i;nI+qjIlgT?DPW?#%I z%-tf8P06-RB4bDAIVIeZSNy5U=r;~oX1Ii0Y1#ZIP$tCVZs2Ux%N<~YG;EZYm&Z~Y z$J-FghEi#$+8#$lCGrJ5lc|@0mkhP@>5fUR0gdAi1P>#f=NIu(L$QCbny6z}blRWB z=z*~*TrCHXLFyHFLoAz1v%BK?-uv_+*1U#)A*Wq9Hc18({qsu~V%0;Mwf=0>4;jxn zJO<2%DNZJbUx;JSLf$7A7(zC7g81%d?N=+~Pr)&lB1cD{IoezT&Z7r*h2c+RQ&)B-toFbI)9^qVyM8lK^(fpoOHSmLb=`C-N! zNNW{qASbdROmVK(wQ{}-n#J|(r8ZLga%{{}gIlkg$&*Oqa|-Bjz??>Fy58T=&1MOg zTasbsw^a`byz24(1+0!*iXo z7|V@*KZIwJ^snF8|CN6ez<=%4t( zJoztme*g@Z`hd7}U4jQUt8Fa;C}<(IXVbkj_ZIgB4KH}rYca7k+**tvvWMHrl5 zmr;xU5R#SeS36~M=qUbXQlBBp&X2)=~jNmevalCM~$0o~R`{ zr{A*iSZT6d0=fhXvhY2@t#7D~Her|WUM^LcqL=5?8Ee5la!m$`-^=34A%#_H$nc!u zHm8VP1ggyZb};c@eM<2d+lch)s~-=$F<~-h2{_By$8wdAs##8u=1jTJ!|=*_3?;dqgy>gTB<8VkHSpiI9Ol!|Hj z|8zwB51z_@91;H~P34@VEx3`6wQJmmRUqlAX%^ydV5U};8k$wpt1sPQ*nuRnu@S8k z-RQWv2SUBA7Njb&i~*-}yA&5>>rM~{DH%uNDD@PVYE{;DH53|t1n1IR<%JzbhIz=q z*=Jw;eth!zESlrK<)D*#$60C5B9$(p{gajx=baJ0Rf}AJtNP`(!Q3Kviq~;O8(7GF zWpxx_e7KsCRkZak5*c~?|1dlreG_Z=O^!@aD>mduva>fpYAGCY`(tf86F(my`om?6CaVIX3!$Hj6b z*kP353H0JIe6wqki)o8F95izN($Ad5dKq_u7MjiNwA8=xDfv*_)Mn5+K$P_7YH91DTCRUIWG?qQ{V)=kzvih8%$WP3q!G+16&F0n;W#M}G05(J?_ z?(-znE3|Xbo*_~s*mvrPwK}DSLxD8W|y5P3KoKlCz8S>!a}tCM(W`np$z3JxCeGPzqHan z=AK)7*gI%OU(X4_A&~{>vkZurYTNrub`f#Yt2r@Ub^MFs&|((B5-8DveFP zB|CQ-an=&`&NL}GSJo~?;oC80*YTWcl%PvPCGAD)S;d5d^B`N zr^wUF?!Geb!j|T)J^Qxy>9%#feFo#mFL-qw*PHd-I$Gh!_&FUVnb{PrZ{-Gjj>|}Q zOd>{6-G$VMEyGlCx&-pOJ3a=pPd3-LeYs02?^B&Mbo6a1!N}RQzXmGIz>gkZb0!e(e}Pk9@}u*-Z_3IrLt2ktJH;D2(TC%Plk%^$f{n%x4v*Zdb|PWa z)BRdpw9fYh1Wqn>e(4NgBxZE*2qj)BTwt0`t5&PUl$NL`@M&MhP_Lz}FPukcztx#p zx|?7Mp9t_jBJZwtI;bvM1l8EHGETK{F+4@J%r)041PrIE6$H8VSKQvI8F`@iw;zaU z)il-^NjXlb(aFz!| zq7QT>_(Z$jC%`Z`2vvwZJs5#MF_mg{oa23qAJdX`B-iu$)8xc!-45tyicMVW_EpdpJdnk_`2*7vI(;qM@bHJb>N50pr1xXE$PZIU zOyMOhg%CBjtd`DOvmK5}xtHfECGE3&`Ag(CKxE1pTAJNhv}xRMSSzrahIG*?3|)ge zuvUO3B8<*4x&>@w`TcrrdaE$^J!{%tQ~Y^)UPiLh0}5SZk@X*TIVO(JR5 z6v#w`rj?OxY{q;uctkoY(Mq$#q9k#8hGDtT0o32YcF=DGN)*Y=$>W9jQ?a(sF98N3 zW{7-as&0^>#M^_%a7P0Wq#FyaESd`>Kjs9EDGM$0W!e$>YM1=_g(gyS#^?QevO0rf z;==^15L-xJ*#j^il}blz@IpdG-jn0Yc|qG{O9zOptf=~R%7{xP*%EIaUkRLSMlm*< z6L-qHO(!30frc+~Y516T_^9!j6{3kvkbM2yB4R=qrCe{)v(SGyy)RiD3kEN$pa1G? zGYn4*owMoPi$rrAO-fukby!QZZ*p0oyRO0`u6s(l9qLhRt>Tz`Akc}uM3BZp$eub? zhr=ZgesFf+eu6+)ynENgM7L6@^|`|=UgRCuns`K#L`|*X$81`mA3mh6KhYaPKnU`m z3b|N4r&8*kxlSuOoiSMj60_Woloy*;nGp2QVN-m(H9!YV1x1}MXD_?8T6Jm(Mq`S1L7 zO@jykrA%Tv)nzkkXp|aB7_sRGMYQE%q9dEQX;+7#* za2ht)Y5r&V?FG_-p80GdPIqO(aS-Z{ar5L`-=uF-oXG1?YZAst}<0eBa#b~;kl z{0yg9;n_P595aR3{mBT|=g?3e1TC52)JvPL;|B=rNg?Kx@W5#eca=yKT^lnwT|BXC zcrYeS)>&MItXB|)YgDH!j+GYR(z`4*fHQ0481T-A=bWM~w2g1aA1{0iS`^tMmGgLO z%48CC{yRZWQacO~A%;N6Hz&I1$hU*(-)E46vMSaD%!tn`-L4MsX4t7{&B#%_`8 zO2x2cweRoFqb=wUs?v$>j??8%mxwgROK<>)==@;;?gqofn`otO)?A3p18X4apuIG# zdSxGtvShswvq2gpNr2~wg((#aKoI#19MNY~Xa#*FNmHsVca(uD28)2v5wRd$G0~%p_ve*!$V(cR(1GS2w&$IOq3a3}iB94olgvYg*tonE324J`rC}94 zsi_nR*L{OY$l-GdldT375x-a&KOSS1+n3-vLocG)^?AGRGrYTN_>6BUk{5pf=KZ5D z_%7ADaV6ZFt&BHVwvE_aqOz4a(UvB9W!AGI2U&(Ws`HWbHG|Uo-K%6SA+5hSQR%aP zho=>Hoe>{**w5ar=UML^8yv@Lubt%$w|%<$v@)q2YtnB|FngW&z>=P8XvRFu+&3sO z09*rdJJ@X*5(glc?C)XU@LMWUU&Vir8QPCb3bXkUp6O86THj8l**LYtz5Qa{GCe_PIOnl^@G-JY5f)C&_$)LY5HK)eZcBlv*mGgI&xTPl3wb zk6T}vD^Yy()5BsdRi)#=)c2dPNamFRiD$@c$J(i)mr*51IYJzZJLIJ17=`j%^Rhha z`Xc`aEt>X%+yM4q?H?({mE+=J?PbR*E(3@oJ$%b|pDhDWpi@xIyNYXQsX~*R+T@ZK zL@xLjxre#W1UKaP57@td@U%E4jKGh>#3jrwS4p_$^j=FV>HzjA2y2_A_J4xuh$6;V*5*grc&vts`A5$xU=#8c3Vic~4T=u9UYmqGH@akR5z0}guSk<FbTb5Eq- z-kQ+Cy03!#0u^!V!RXj4IukfuFbrq@vC9t?MfH0t9od;9?7gr2GU*!d=t0k=!|2*7 zt>r1^og70<$71h+8dX?&u5`3zbMi0>4NY1SeL9;M2cUGhIRWaI560>o@j~pzCj(4} zp?o`95v;YP{I%9OR^O1Z+VAqt4a7*mM=ZHvV>c&UzCLV*yJ*2_w&Z&CFJor_Ym1MX z;@_eWgBF}BGYAC9oar*kT*Mzq#vZdTXsMZFeHgOG?V3{vzgrVsa;MMxFrbF&)p?Kk z3@AOEz6+6*D=Nz6OjfmKHju1{mY0a&4n?su)^NFb##n(D!c{67KES1a`Su`w+={8k zM?0zS7dL6Qz@}9^`Qw>@_uQ+3{oljEcQf)3W4l8Cb+wcq%)4Z;1 zmh2&?Gf6o+n{?#qD~1l>I6cPXU`(_*L}6HZlAT+JVS4g1uO*Sya?a7SSw(SJ*WeHO zW}>R|k<$^kF5i2PD2pvLo0*DcB7-zn!kn+`_dY}#?hgR*MYIt`BUr)9d9A}XOKt4j zN~*hNZQLr@nW=f2hOuQ4^J24IL2yG`8i%u>ih_h{JN1n6ph3t$vrbpse7#l?!P1oN zibLc!@=-=PPp-E_5LZKhSvbL`V}_Nudtxn8;iN66`6WQiU*1l9rY$8^m#U_x!HHuuWa60*6jI z*gV{Jmf5fi*&rVI9r6xbYz8Ya6mw$)F=l&r*)8A?;N#gUT#WK`pvcz?&Hd5jaqwj+ zuTme7_iNl@yE{rf_m(X%A!4o1Z5V}=QOgX#6*hGCob7b@_Pp~L_O4PfmZDHEBI|W!Myym!^ zOhdyRUS)eV_zr}u7>hO}ZqKr)BxjkmCsq>Fs{Wg0 z43lo~5QjWC;(OXvd)VDJ8kTe=gqGuiHJ2VGfP-zqVkx7p?iWr33}$fug4@XWUapq* z9G6FfGl-C_G_E*-!*-#v38~%3Y~F5S#LSSEB@N6e_dVNgn^TEa7~fm@hQh2Y+%UFu z0xmiwt9PIFJ&32Yfht)$h=>y&byqxL>RkxMdW_OlhQ#FCms@jfLy68jK?ltoYSyQK zR%E%chq=Mk7yoY|*=9(DT8R#Xj#}@-G$OUq63S@EBqfx1<@i?*Q#=N{ppc<0H_dvb zYt2Z{d`oHJqko=>TKam_+N?LM^eF|f39TnsLbM%qX0!)4fpfQAVCn7q065xn<&3<` zeuyMz^$7!?zI*4j6Bg*r=J)oynB~ZD`@NmLR|k{Ur_Sz?Eeo7j<>vbNCzDmC+R(y;xZ99dfi#7Ra7nX zWox_A-WXF7%0z(BdVCHdwC9E^=%F4XAy@YGqm(Mrbxb%mBJi-1RCQ|)3Ap3EkQ(CK z5v+daB^N24Cg74J($A!%%sNpgWPr$g+Wdv4WHYHv-)+co%pMg4FH$j>1+JpWI)GaPx4ssi3YtrM0>mW9oa=El zDeED)`rYPl74iv&3UuYs>OAmjgbi~?&o?cDSBxhKSf5&Pd&@KIVqk&k)rQuDV!Sdo z>+#~Faaybn(^*J|!{Y7?3i4&RGy`P=mcAUeP*o2K=q;zoN)AJqs$;=U;;tB?-b8?ue^mpmv;m=;=Ik8W)!j~LQeLY8NEXB`-zZC^pJqAT z@44&j51?)+4XD39AK?3lRjM&0uMyTw_A8o$e;0K}tFBmnGZ9oG+#-%f1b$n=f8oMP zHQ1u|R)gzpPaj(auf%)l_peevLQUk)NL5nJJ;g{ZYXjup*}ACM+Uek_GDg^lDj52ZxM?>`gi51*h z2B%bCsotID@pLzVkxJq=fWe@2K)1XEY3F(a9E}7RXB3Dg8!Jkr1^&aD_ zBhlVS7*=<0(qu68b7=h~toUXpC*7d?>9JJqK)iN;bWFs8L6l5_CSVgSM_QTNyll8v z(X>ylJeOCXh$AxAYwrf@_&K#K$dKy0)oxTX(e5Lr`X9icD%H$$9Q7Ij{gmw>2oUu5 z9yif`q%a)Ys}(%lJ&8&)6IEgL9zPv4VJJjog$M!$0;`YwjwH;kKTAs?4d=(4*o!sk zL^3Kzs`_21#s#}0!4|{f^n>Ohm$v#j+!|dOmh)H9(lxXRu-~qyLLFWI2W7?(e2+JF zhdPb0itZbu@Y`r_gvmRiw;lOQSrv^XQF*UNI;hoLReP^+rslnFp$WeO++446Xu@Df z1@t!|KjR!_3nO$=4_*mcoJL=L@cJqzbWL&pGmCljaR%Turb(&$;Dl0@&+G3-s*nJ z^zq~icetz%cRLC~(U(p?N*;2lW$uOHgw~gS!*cOMO2IY(4o_SY@|O&)YXn_%)APIx zW~{m79rL}*1W`5P2{FZ>1>Qgcfu;kxPR+d*vuFhWN2*>ezwRfwskjKlTNvS zav1f($wTwNX2_+_|GWgHUNCw{cdqY3n)WwfDMHE|BcIQ3v;L<0N7l5Sx%}5};wgFO zUeJX8s`iiJY|T3+8Wv-NZ}!TtO@FHh3B-_etx+2C#3r!U^KX>*6fXHY7b?#o75e*V z{uwN!3Pl?xocmgS?D4;klOdoSd#`g>;91-B^4u8G+M<7C)!SY;dMLC$AB?&MX>5Pm znyccnXhi@L|5h%d^*?aFa+Dnlu>@oh+_=?9 z`5R&kf28)gB~MZ~+`>}7t5}~Gne6J()5{d%!v2VtMBnnj+QFEVGZ&&AC6o*4BBf9l2)l@j+kH4b*m<3W2Y*s z5%uvVB;-Oo*=`$-hvMNeHE3BvYTZvyoH8R42=*ri5Q8~)B>^yep))8wr4 z)i5!kpfF#+(k?FQFa&8wwJd2;1+=IW*xyNJR}h2D;2EXHvUyy;Akzguoqy;4G02WN za%G11A!)-+Jxo%Ia(5E698ec#cXRsO$M3Y!^H+*4s;!CYn?s*rMtC)Tb!FpLYgOeC zS=cYjold?O1Cm~|)(?arWtY-`OKPJ1uSDix)j}j&e8oXUk|HYecx0aaLPrNOA~DD= z_bj-L`8|4;2h)4XQ(~{SRbKvcHWu1*!;WR=dZh)%X}?W?MU&k63oRXB@78zMTfmLn z*Jb?1Cjx?Wq$*WP6_9<3If%XY{hfcFvRZVuF=}Cu1y26}b{vv5=ofiiiL2rdS?(ZI zQa6KnPr?7rr}5`mBJKLRp36O&&eku|hjx*3935Wxge&1E(FpT;+La@uG%scg=tmqi z)*&&l_V4gPR-+}$79L4UN8PgLbe86PSKx=eO39m5jPRvW6Qccas9z(~0WPoQ9X<1o zEgv%Bv&iqe zmg@Uk?OT|D^rF{FWFoVnuH^&0pNW2z3TivI@3{QZtg@13b)RuiX`T>^ZkT=_U0H=R z|D*+aJ^FlSGzzObH)%7N+Vgh}rLPDa(qBpmG(n~O13<-{Jr>+HJihGHt+ZpnB5*vW%zlxVC8h|V`7&06qfMcf$ z;B$p2OZ28ZXQ|kd-L?$J(Tp5BPY6(U-a9udR+V?#*q0c*m4vf z^VrPBqr`Z$RBgCMxtCJv$Qv>7bDy~u=9=v8(-sov+UNzxZRp!-Ba^-W#{kj}zx$e!v;Hn+P3uH9{8M_2R;=`U1 zkGy5KO$3O~9PbD!N3=RDA8t(82;AkS4_#J|iFoQF9g=G*#QSdr>R58^1{ZH{7d5TY z$`j?zpb%~ghxJxO3= z&!3sUGwobagTe5StH`E(vq1*!kF{|4+k@;O+!sh^ayr|wTjf)WE9A#!?J&C9(o@Fd zhPQ%JM2aCSmF^X`KkWamf4=jrTp;*K}i@Q~wi6k``TjwE3q6x(T=^QJAwV*Ruy zrsKWZvb0&W0lIuoEGZsCQ|+YcU{G`hYk(5DdIE=BoVtjumAc4^5OueH&KfZMDht`0_7MqSLX2>MefC?5e-04Qd7l!lVii$h1@&W7@>A9sGH zmYmW!8JdCUY(81{B!1KEbcl#hbc$7l-1{F+m~bX1&ML^2Er=F|G&FWSNO`2u-#)-L zgyw9I&i3xOe6P09x&!hqs7PmhzzT|+y54go*xydr$=UlSJwyn*(D--WNRR$({#w2` zi-Y;9G93x}53NV{aDCdNj{TZ;91+ajegKk8llw$Jg;~}Ruv_{isNvNPVg8GLtr{y# zgd#IvNlj{jvQmIV6+u-7__NkV=Bw<_3{J#`q3oV$dWiIj$r@rB$TuZ#slH{ndUK)i z+U@6Q#`#P^cD46~)z=P2+fpWuLqexlX*=#*& z2LyDFh4c2DSlvBDA$)o@N7qt>s31GXE!Xu3)tH|NRwm5lEN51gd>ICKp35aQ%dXVx zDR>FnI%XyO_R(EtJ`BZb0E5$WEx@58wI<4#rI&tY)G4ZU-lcP3soo>oV}wk^Ns=__ z4&oM9qVdmSAGnX%~~b1nd<0T8{>Mp~;hx5ctfgbkTu0h;XUa1|DRU$ehaRL8FDN!(m`Y z$4hZlj+hh+24snyc3e5={4!(H3|np*%==?4M zsF(RBlNC{B*w2(A82UY!LN=~zX){!9B2Ne7UbSKxmI-LpBp5U@YhvRCQ?CSpYIbXs zkZ4Y;W1?ia_bEz^Q~&_=<6d7Xt|hiPh=^YGo}nPGS+`|29WXFr4y+U`VSQwj+}ap$<){;JwwhV)@+U-+RD{wD_j zGuiQrF0HN@%fPv$lf7N@+ukO~W$~j!*OD0l&MQ2Nke_D7I`Gl!9i!kB8%L~-C%;*o zBqicAzTs%mLF@vrUEQI4`uC{WB_>Ud#6A=}rq^#Lh`(=|p_+)+$|_536Bk(Sg`V8k zUFLr8Pe&nO06x7+S`i#HSQw}tNmw|mkNg3AXHuca1H(&I20m8~T2Q63`Cu~xo( zzwY3*BAaAMVvs8PP1WI#Ld0#Z88Hc7oRD|qpLFXj%0Kqyw=C9-)=a`;RGsbe4R?IM z=_bku;jT>~oA8R5p83~~Et6fEeEekKvO*NHu`%ygnYmajsm(Jr-?sk9>R;u`yba5j8NQWhy`e270(T|E%LJ*Yo$z$T^4d zWJrph1SJtSP|9#E(V^;DvOqJ$E*mkOqdfa)WznO(RO%Np}wEj*+% zXh>=#55C;zK4o8AKBYCGo_OYbe(GGp5f>0c6fw0VlSR9oMyvJtDO<-li~g<%J6;LN znzXhP!bnht`q&#eWW@V6dmPz-tFQop5<#>%NP~tce!37N^U*U~9Wx{b)CuA&ez7{X zIYV(C%+}G&iGTgsT5bQZ-M9WJAgdjj^EsqPyn1z%+BR z$`^x>QEs=;>0%3OO?}Ty{mmhMg)*Zvru2xI6(4HETGw-#=W^&pHO-L~Vx+DFzTzB* zvLm_nQ&rx$elc6107^E>M?5g%%5PQ@ET7otNn9B2*XW=5PEXPTbuJ&z8_Hh3WI**> ziFyz1us?o$of8eA@vl#FKRzYGADfO|8%V2}D!#7G5n++ZamB;Y^-~vRblwluws4zT zoM^IP@^J+U4mBF@(yadc{z$66^Hp8bgC`GKi=+xFxmPhHlZ6FSinqXUC)1EoaO?2p zVG{B6=?}ow5F(4KlrU{gQ3)nu`?e(P++$h;M?`wVh0|s zmFeidMeO@#YcJD$v}L*6Hm_M-Z8D!6@A-|3$R?IrLM6O;Qot0R1;?5?<_q=KEXc~w z7vyfx&%J}vsTLg}xr;$L>2lVg(b7^3yqft|rnqPAMeA;m!0JB5(YyPlkDBp+NCk{C{D}F!HzD1cECZu-kP_;5$84nc#{b|x6uGN14 z7|Nx$KGrPp8W88crmQ;8lF8xMe$y3I99rvl$==HxRkO?nUNyqpFL{D)K*W=AdQ&JO z@MfV2g47_S&*}#u}>x_i2blkE2t__Q>A?4 zU(gZHQWL|K^X2+oF^_imFNQkhBGr4LuFo`<5v(6I{74b2r)qXvK0~_qG{^>VNZ5~5_h08to?Z!atP$c zQu3_QR%$Fd-_1qh35{Uv2XVrqgNT-r!rF3ko;R!$X%ku)TCXLaucm~HQ(kkc6D=`tsSY9=*Z&FArfBgC zFtCg2e5{uS8-*wpFU)!yXE+A`mq?@YZfYFChQihTiI0&*?r`KlQ(N^=6WG0_O57L| zGo_v2Sj1fR3JX#42*2&HTYT}UKD~w2cD6QL#e;l7Bd?YR5Cto6?a;_m=TEeCM>CjI zdbv-xoG$SP5LoYd;oEb@VDJ*o`WEYt-s@7NkQaO{@~QLD)3j4~+@Th@k|UJB(gi%M zWy*P92J5nkeHxuXAiz7{ zS!J7|CCSny^0FTdN+V15e!)$(wl9SaCbU@^2g=F9n<5=xt)S(4y2e=0M~wmoL%Qx> zYSu)23klIQ=F0@REV#k&#N@ur=vfW)rl`28z>OqbaAp$3KSH}0rg57(+OVzgX6W7sU*fI8d)mDzqty44I{@xe**4LDf`d zxSUlkEPEy(z`LOgEn*Qblhpxc;eHpNiT2#&FV}PpF?K^7)s=CO?ea*vk(+!<3U)rh zhH79EsouHvCt*nQMh59s-LUPo5C^nHV~7ujYHFSa0!G$gk-QO(%mfTw5ocC7^$aXEVdfVl)_tD;i@mpis-tPsMH_e7xVyW% zySoGp?(UG_uEAY{Zrm*)!5xA-1P`7B4Z-ft_m7>Cwa(0)d(W(U|E}FqZ+A&ob=B^E z>#66xON=o)82;g=LBcll9;qJY!>*rqSl;BS∾flPs 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 iii!qL4_exiXJ2Loxee}HebY__kKD;d + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/plugins/redmine_code_review/README.rdoc b/plugins/redmine_code_review/README.rdoc new file mode 100644 index 000000000..bd59da014 --- /dev/null +++ b/plugins/redmine_code_review/README.rdoc @@ -0,0 +1,35 @@ += Redmine Code Review Plugin + +This is a plugin for Redmine which lets you annotate source code within the repository browser. + +http://www.r-labs.org/wiki/r-labs/Code_Review + +=== Plugin installation + +1. Copy the plugin directory into the plugins directory + +2. Migrate plugin: + rake redmine:plugins:migrate RAILS_ENV=production + +3. Start Redmine + +4. Add code review module into your project. + +5. Go to code review setting tab in the project setting page and select tracker. + +=== Language contributors + +* de.yml - Michael Diederich, Sebastian Bernhard +* fr.yml - Thomas M +* hu.yml - Péter Major +* ko.yml - Ki-yong Kim, Ki Won Kim +* nl.yml - Stefan Verstege +* pt-br.yml - Alessandro Hecht +* zh.yml - Marshall Wu +* zh-tw.yml - Andrew Liu +* ru.yml - Mykhaylo Sorochan +* sk.yml - Milan Freml +* es.yml - Ignacio Carrera +* pl.yml - Rafal Grzymkowski +* sv.yml - André Jonsson +* bg.yml - Ivan Cenov, jwalkerbg diff --git a/plugins/redmine_code_review/app/controllers/code_review_controller.rb b/plugins/redmine_code_review/app/controllers/code_review_controller.rb new file mode 100644 index 000000000..33f5a203a --- /dev/null +++ b/plugins/redmine_code_review/app/controllers/code_review_controller.rb @@ -0,0 +1,398 @@ +# Code Review plugin for Redmine +# Copyright (C) 2009-2013 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +class CodeReviewController < ApplicationController + unloadable + before_filter :find_project, :authorize, :find_user, :find_setting, :find_repository + + helper :sort + include SortHelper + helper :journals + helper :projects + include ProjectsHelper + helper :issues + include IssuesHelper + helper :code_review + include CodeReviewHelper + helper :custom_fields + include CustomFieldsHelper + + def index + sort_init "#{Issue.table_name}.id", 'desc' + sort_update ["#{Issue.table_name}.id", "#{Issue.table_name}.status_id", "#{Issue.table_name}.subject", "path", "updated_at", "user_id", "#{Changeset.table_name}.committer", "#{Changeset.table_name}.revision"] + + limit = per_page_option + @review_count = CodeReview.count(:conditions => ['project_id = ? and issue_id is NOT NULL', @project.id]) + @all_review_count = CodeReview.count(:conditions => ['project_id = ?', @project.id]) + @review_pages = Paginator.new self, @review_count, limit, params['page'] + @show_closed = (params['show_closed'] == 'true') + show_closed_option = " and #{IssueStatus.table_name}.is_closed = ? " + if (@show_closed) + show_closed_option = '' + end + conditions = ["#{CodeReview.table_name}.project_id = ? and issue_id is NOT NULL" + show_closed_option, @project.id] + unless (@show_closed) + conditions << false + end + + @reviews = CodeReview.order(sort_clause).limit(limit).where(conditions).joins( + "left join #{Change.table_name} on change_id = #{Change.table_name}.id left join #{Changeset.table_name} on #{Change.table_name}.changeset_id = #{Changeset.table_name}.id " + + "left join #{Issue.table_name} on issue_id = #{Issue.table_name}.id " + + "left join #{IssueStatus.table_name} on #{Issue.table_name}.status_id = #{IssueStatus.table_name}.id").offset(@review_pages.current.offset) + @i_am_member = @user.member_of?(@project) + render :template => 'code_review/index.html.erb', :layout => !request.xhr? + end + + def new + begin + CodeReview.transaction { + @review = CodeReview.new + @review.issue = Issue.new + + if params[:issue] and params[:issue][:tracker_id] + @review.issue.tracker_id = params[:issue][:tracker_id].to_i + else + @review.issue.tracker_id = @setting.tracker_id + end + @review.safe_attributes = params[:review] + @review.project_id = @project.id + @review.issue.project_id = @project.id + + @review.user_id = @user.id + @review.updated_by_id = @user.id + @review.issue.start_date = Date.today + @review.action_type = params[:action_type] + @review.rev = params[:rev] unless params[:rev].blank? + @review.rev_to = params[:rev_to] unless params[:rev_to].blank? + @review.file_path = params[:path] unless params[:path].blank? + @review.file_count = params[:file_count].to_i unless params[:file_count].blank? + @review.attachment_id = params[:attachment_id].to_i unless params[:attachment_id].blank? + @issue = @review.issue + @review.issue.safe_attributes = params[:issue] unless params[:issue].blank? + @review.diff_all = (params[:diff_all] == 'true') + + @parent_candidate = get_parent_candidate(@review.rev) if @review.rev + + if request.post? + @review.issue.save! + if @review.changeset + @review.changeset.issues.each {|issue| + create_relation @review, issue, @setting.issue_relation_type + } if @setting.auto_relation? + elsif @review.attachment and @review.attachment.container_type == 'Issue' + issue = Issue.find_by_id(@review.attachment.container_id) + create_relation @review, issue, @setting.issue_relation_type if @setting.auto_relation? + end + @review.open_assignment_issues(@user.id).each {|issue| + create_relation @review, issue, IssueRelation::TYPE_RELATES + watcher = Watcher.new + watcher.watchable_id = @review.issue.id + watcher.watchable_type = 'Issue' + watcher.user = issue.author + watcher.save! + } + @review.save! + + render :partial => 'add_success', :status => 200 + return + else + change_id = params[:change_id].to_i unless params[:change_id].blank? + @review.change = Change.find(change_id) if change_id + @review.line = params[:line].to_i unless params[:line].blank? + if (@review.changeset and @review.changeset.user_id) + @review.issue.assigned_to_id = @review.changeset.user_id + end + @default_version_id = @review.issue.fixed_version.id if @review.issue.fixed_version + if @review.changeset and @default_version_id.blank? + @review.changeset.issues.each {|issue| + if issue.fixed_version + @default_version_id = issue.fixed_version.id + break; + end + } + end + @review.open_assignment_issues(@user.id).each {|issue| + if issue.fixed_version + @default_version_id = issue.fixed_version.id + break; + end + } unless @default_version_id + + + end + render :partial => 'new_form', :status => 200 + } + rescue ActiveRecord::RecordInvalid + render :partial => 'new_form', :status => 200 + end + end + + def assign + code = {} + code[:action_type] = params[:action_type] unless params[:action_type].blank? + code[:rev] = params[:rev] unless params[:rev].blank? + code[:rev_to] = params[:rev_to] unless params[:rev_to].blank? + code[:path] = params[:path] unless params[:path].blank? + code[:change_id] = params[:change_id].to_i unless params[:change_id].blank? + code[:changeset_id] = params[:changeset_id].to_i unless params[:changeset_id].blank? + code[:attachment_id] = params[:attachment_id].to_i unless params[:attachment_id].blank? + code[:repository_id] = @repository_id if @repository_id + + changeset = Changeset.find(code[:changeset_id]) if code[:changeset_id] + if (changeset == nil and code[:change_id] != nil) + change = Change.find(code[:change_id]) + changeset = change.changeset if change + end + attachment = Attachment.find(code[:attachment_id]) if code[:attachment_id] + + issue = {} + issue[:subject] = l(:code_review_requrest) + issue[:subject] << " [#{changeset.text_tag}: #{changeset.short_comments}]" if changeset + unless changeset + issue[:subject] << " [#{attachment.filename}]" if attachment + end + issue[:tracker_id] = @setting.assignment_tracker_id if @setting.assignment_tracker_id + + redirect_to :controller => 'issues', :action => "new" , :project_id => @project, + :issue => issue, :code => code + end + + def update_diff_view + @show_review_id = params[:review_id].to_i unless params[:review_id].blank? + @show_review = CodeReview.find(@show_review_id) if @show_review_id + @review = CodeReview.new + @rev = params[:rev] unless params[:rev].blank? + @rev_to = params[:rev_to] unless params[:rev_to].blank? + @path = params[:path] unless params[:path].blank? + @paths = [] + @paths << @path unless @path.blank? + + @action_type = params[:action_type] + changeset = @repository.find_changeset_by_name(@rev) + if @paths.empty? + changeset.filechanges.each{|chg| + } + end + + url = @repository.url + root_url = @repository.root_url + if (url == nil || root_url == nil) + fullpath = @path + else + rootpath = url[root_url.length, url.length - root_url.length] + if rootpath.blank? + fullpath = @path + else + fullpath = (rootpath + '/' + @path).gsub(/[\/]+/, '/') + end + end + @change = nil + changeset.filechanges.each{|chg| + @change = chg if ((chg.path == fullpath) or ("/#{chg.path}" == fullpath)) or (chg.path == "/#{@path}") + } unless @path.blank? + + @changeset = changeset + if @path + @reviews = CodeReview.where(['file_path = ? and rev = ? and issue_id is NOT NULL', @path, @rev]).all + else + @reviews = CodeReview.where(['rev = ? and issue_id is NOT NULL', @rev]).all + end + @review.change_id = @change.id if @change + + #render :partial => 'show_error' + #return + + + + render :partial => 'update_diff_view' + end + + def update_attachment_view + @show_review_id = params[:review_id].to_i unless params[:review_id].blank? + @attachment_id = params[:attachment_id].to_i + @show_review = CodeReview.find(@show_review_id) if @show_review_id + @review = CodeReview.new + @action_type = 'attachment' + @attachment = Attachment.find(@attachment_id) + + @reviews = CodeReview.where(['attachment_id = (?) and issue_id is NOT NULL', @attachment_id]).all + + render :partial => 'update_diff_view' + end + + def show + @review = CodeReview.find(params[:review_id].to_i) unless params[:review_id].blank? + @repository = @review.repository if @review + @assignment = CodeReviewAssignment.find(params[:assignment_id].to_i) unless params[:assignment_id].blank? + @repository_id = @assignment.repository_identifier if @assignment + @issue = @review.issue if @review + @allowed_statuses = @review.issue.new_statuses_allowed_to(User.current) if @review + target = @review if @review + target = @assignment if @assignment + @repository_id = target.repository_identifier + if request.xhr? or !params[:update].blank? + render :partial => 'show' + elsif target.path + #@review = @review.root + path = URI.decode(target.path) + #path = '/' + path unless path.match(/^\//) + action_name = target.action_type + rev_to = '' + rev_to = '&rev_to=' + target.rev_to if target.rev_to + if action_name == 'attachment' + attachment = target.attachment + url = url_for(:controller => 'attachments', :action => 'show', :id => attachment.id) + '/' + URI.escape(attachment.filename) + url << '?review_id=' + @review.id.to_s if @review + redirect_to(url) + else + path = nil if target.diff_all + url = url_for(:controller => 'repositories', :action => action_name, :id => @project, + :repository_id => @repository_id, :rev => target.revision, :path => path) + #url = url_for(:controller => 'repositories', :action => action_name, :id => @project, :repository_id => @repository_id) + path + '?rev=' + target.revision + url << '?review_id=' + @review.id.to_s + rev_to if @review + redirect_to url + end + end + end + + def reply + begin + @review = CodeReview.find(params[:review_id].to_i) + @issue = @review.issue + @issue.lock_version = params[:issue][:lock_version] + comment = params[:reply][:comment] + journal = @issue.init_journal(User.current, comment) + @review.safe_attributes = params[:review] + @allowed_statuses = @issue.new_statuses_allowed_to(User.current) + + @issue.save! + if !journal.new_record? + # Only send notification if something was actually changed + flash[:notice] = l(:notice_successful_update) + end + + render :partial => 'show' + rescue ActiveRecord::StaleObjectError + # Optimistic locking exception + @error = l(:notice_locking_conflict) + render :partial => 'show' + end + end + + def update + begin + CodeReview.transaction { + @review = CodeReview.find(params[:review_id].to_i) + journal = @review.issue.init_journal(User.current, nil) + @allowed_statuses = @review.issue.new_statuses_allowed_to(User.current) + @issue = @review.issue + @issue.lock_version = params[:issue][:lock_version] + @review.safe_attributes = params[:review] + @review.updated_by_id = @user.id + @review.save! + @review.issue.save! + @notice = l(:notice_review_updated) + lang = current_language + Mailer.deliver_issue_edit(journal) if Setting.notified_events.include?('issue_updated') + set_language lang if respond_to? 'set_language' + render :partial => 'show' + } + rescue ActiveRecord::StaleObjectError + # Optimistic locking exception + @error = l(:notice_locking_conflict) + render :partial => 'show' + rescue + render :partial => 'show' + end + end + + + def destroy + @review = CodeReview.find(params[:review_id].to_i) + @review.issue.destroy if @review + render :text => 'delete success.' + end + + def forward_to_revision + path = params[:path] + rev = params[:rev] + changesets = @repository.latest_changesets(path, rev, Setting.repository_log_display_limit.to_i) + change = changesets[0] + + identifier = change.identifier + redirect_to url_for(:controller => 'repositories', :action => 'entry', :id => @project, :repository_id => @repository_id) + '/' + path + '?rev=' + identifier.to_s + + end + + def preview + @text = params[:review][:comment] + @text = params[:reply][:comment] unless @text + render :partial => 'common/preview' + end + + def update_revisions_view + changeset_ids = [] + #changeset_ids = CGI.unescape(params[:changeset_ids]).split(',') unless params[:changeset_ids].blank? + changeset_ids = params[:changeset_ids].split(',') unless params[:changeset_ids].blank? + @changesets = [] + changeset_ids.each {|id| + @changesets << @repository.find_changeset_by_name(id) unless id.blank? + } + render :partial => 'update_revisions' + end + + private + def find_repository + if params[:repository_id].present? and @project.repositories + @repository = @project.repositories.find_by_identifier_param(params[:repository_id]) + else + @repository = @project.repository + end + @repository_id = @repository.identifier_param if @repository.respond_to?("identifier_param") + end + + def find_project + # @project variable must be set before calling the authorize filter + @project = Project.find(params[:id]) + end + + def find_user + @user = User.current + end + + + def find_setting + @setting = CodeReviewProjectSetting.find_or_create(@project) + end + + def get_parent_candidate(revision) + changeset = @repository.find_changeset_by_name(revision) + changeset.issues.each {|issue| + return Issue.find(issue.parent_issue_id) if issue.parent_issue_id + } + nil + end + + def create_relation(review, issue, type) + return unless issue.project == @project + relation = IssueRelation.new + relation.relation_type = type + relation.issue_from_id = review.issue.id + relation.issue_to_id = issue.id + relation.save! + end +end diff --git a/plugins/redmine_code_review/app/controllers/code_review_settings_controller.rb b/plugins/redmine_code_review/app/controllers/code_review_settings_controller.rb new file mode 100644 index 000000000..1f0464dd3 --- /dev/null +++ b/plugins/redmine_code_review/app/controllers/code_review_settings_controller.rb @@ -0,0 +1,119 @@ +# Code Review plugin for Redmine +# Copyright (C) 2010 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +class CodeReviewSettingsController < ApplicationController + unloadable + layout 'base' + menu_item :code_review + include CodeReviewAutoAssignSettings + + before_filter :find_project, :authorize, :find_user + + def update + begin + @setting = CodeReviewProjectSetting.find_or_create(@project) + + @setting.safe_attributes = params[:setting] + @setting.updated_by = @user.id + params[:auto_assign][:filters] = params[:auto_assign][:filters].values unless params[:auto_assign][:filters].blank? + @setting.auto_assign_settings = params[:auto_assign].to_yaml + + @setting.save! + + flash[:notice] = l(:notice_successful_update) + rescue ActiveRecord::StaleObjectError + # Optimistic locking exception + flash[:error] = l(:notice_locking_conflict) + end + redirect_to :controller => 'projects', :action => "settings", :id => @project, :tab => 'code_review' + + end + + def add_filter + setting = CodeReviewProjectSetting.find_or_create(@project) + @auto_assign = setting.auto_assign_settings + filters = params[:auto_assign][:filters].values unless params[:auto_assign][:filters].blank? + filters = [] unless filters + filters << params[:auto_assign_add_filter] + + @auto_assign.filters = filters.collect{|f| + filter = AssignmentFilter.new + filter.attributes = f + filter + } + @auto_assign.filter_enabled = true + render :partial => "code_review_settings/filters" + end + + def edit_filter + setting = CodeReviewProjectSetting.find_or_create(@project) + @auto_assign = setting.auto_assign_settings + num = params[:num].to_i + filters = params[:auto_assign][:filters].values unless params[:auto_assign][:filters].blank? + filters = [] unless filters + i = 0 + @auto_assign.filters = filters.collect{|f| + filter = AssignmentFilter.new + if i == num + filter.attributes = params[:auto_assign_edit_filter][num.to_s] + else + filter.attributes = f + end + i = i + 1 + filter + } + render :partial => "code_review_settings/filters" + end + + def sort + setting = CodeReviewProjectSetting.find_or_create(@project) + @auto_assign = setting.auto_assign_settings + filters = params[:auto_assign][:filters].values unless params[:auto_assign][:filters].blank? + filters = [] unless filters + num = params[:auto_assign_filter][:num].to_i + move_to = params[:auto_assign_filter][:move_to] + + if move_to == 'highest' + filters[num][:order] = 0 + elsif move_to == 'higher' + filters[num][:order] = filters[num][:order].to_i - 15 + elsif move_to == 'lower' + filters[num][:order] = filters[num][:order].to_i + 15 + elsif move_to == 'lowest' + filters[num][:order] = 999999999 + end + + @auto_assign.filters = filters.collect{|f| + filter = AssignmentFilter.new + filter.attributes = f + filter + } + + + render :partial => "code_review_settings/filters" + end + private + def find_project + # @project variable must be set before calling the authorize filter + @project = Project.find(params[:id]) + end + + def find_user + @user = User.current + end + +end diff --git a/plugins/redmine_code_review/app/helpers/code_review_helper.rb b/plugins/redmine_code_review/app/helpers/code_review_helper.rb new file mode 100644 index 000000000..2086c33ea --- /dev/null +++ b/plugins/redmine_code_review/app/helpers/code_review_helper.rb @@ -0,0 +1,37 @@ +# Code Review plugin for Redmine +# Copyright (C) 2009-2011 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +module CodeReviewHelper + unloadable + def show_assignments(assignments, project, options = {}) + html = "#{l(:review_assignments)}:" + assignments.each do |assignment| + issue = assignment.issue + html << link_to("##{issue.id} ", {:controller => 'issues', :action => 'show', :id => issue.id}, + :class => issue.css_classes, :title => "#{issue}(#{issue.status})") + end if assignments + + link = link_to(l(:button_add), {:controller => 'code_review', + :action => 'assign', :id=>project, :action_type => options[:action_type], + :rev => options[:rev], :rev_to => options[:rev_to], :path => options[:path], + :change_id => options[:change_id], :attachment_id => options[:attachment_id], + :changeset_id => options[:changeset_id]}, :class => 'icon icon-add') + + html << link if link + + html + end +end diff --git a/plugins/redmine_code_review/app/models/code_review.rb b/plugins/redmine_code_review/app/models/code_review.rb new file mode 100644 index 000000000..0c5e986ab --- /dev/null +++ b/plugins/redmine_code_review/app/models/code_review.rb @@ -0,0 +1,175 @@ +# Code Review plugin for Redmine +# Copyright (C) 2009-2012 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +class CodeReview < ActiveRecord::Base + include Redmine::SafeAttributes + unloadable + belongs_to :project + belongs_to :change + belongs_to :issue + belongs_to :updated_by, :class_name => 'User', :foreign_key => 'updated_by_id' + belongs_to :attachment + + validates_presence_of :project_id, :user_id, :updated_by_id, :issue, + :subject, :action_type, :line + + STATUS_OPEN = 0 + STATUS_CLOSED = 1 + + safe_attributes 'change_id', 'subject', 'line', 'parent_id', 'comment', 'status_id' + + def before_create + issue = Issue.new unless issue + end + + def is_closed? + issue.closed? + #self.root.status == STATUS_CLOSED + end + + def close + issue.status = IssueStatus.find(5) + #self.root.status = STATUS_CLOSED + end + + def reopen + issue.status = IssueStatus.find(1) + #self.root.status = STATUS_OPEN + end + + def committer + return changeset.author if changeset + end + + def path + begin + return file_path if file_path + return @path if @path + if attachment_id + @path = attachment.filename + return @path + end + repository = changeset.repository + url = repository.url + root_url = repository.root_url + if (url == nil || root_url == nil) + @path = change.path + return @path + end + rootpath = url[root_url.length, url.length - root_url.length] + if rootpath == '/' || rootpath.blank? + @path = change.path + else + @path = change.path[rootpath.length, change.path.length - rootpath.length] + end + rescue => ex + return ex.to_s + end + end + + def revision + return rev if rev + changeset.revision if changeset + end + + def changeset + @changeset ||= change.changeset if change + end + + def repository + @repository ||= changeset.repository if changeset + end + + def repository_identifier + return nil unless repository + @repository_identifier ||= repository.identifier_param + end + + def comment=(str) + issue.description = str if issue + end + + def comment + issue.description if issue + end + + def before_save + issue.project_id = project_id unless issue.project_id + end + + def validate + unless issue.validate + false + + end + end + + def user=(u) + issue.author = u + end + + def user_id=(id) + issue.author_id = id + end + + def user_id + issue.author_id + end + + def user + issue.author if issue + end + + def subject=(s) + issue.subject = s + end + + def subject + issue.subject + end + + def parent_id= (p) + issue.parent_issue_id = p + end + + def parent_id + issue.parent_issue_id + end + + def status_id=(s) + issue.status_id = s + end + + def status_id + issue.status_id + end + + def open_assignment_issues(user_id) + issues = [] + assignments = [] + assignments = change.code_review_assignments if change + assignments = assignments + changeset.code_review_assignments if changeset + assignments = assignments + attachment.code_review_assignments if attachment + + assignments.each {|assignment| + unless assignment.is_closed? + issues << assignment.issue if user_id == assignment.issue.assigned_to_id + end + } + + issues + end +end diff --git a/plugins/redmine_code_review/app/models/code_review_assignment.rb b/plugins/redmine_code_review/app/models/code_review_assignment.rb new file mode 100644 index 000000000..75c45e162 --- /dev/null +++ b/plugins/redmine_code_review/app/models/code_review_assignment.rb @@ -0,0 +1,80 @@ +# Code Review plugin for Redmine +# Copyright (C) 2010-2011 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +class CodeReviewAssignment < ActiveRecord::Base + unloadable + belongs_to :issue + belongs_to :change + belongs_to :changeset + belongs_to :attachment + validates_presence_of :issue_id + + def is_closed? + issue.closed? + end + + def path + file_path + end + + def revision + return rev if rev + changeset.revision if changeset + end + + def repository + @repository ||= change.changeset.repository if change + @repository ||= changeset.repository if changeset + @repository + end + + def repository_identifier + return nil unless repository + @repository_identifier ||= repository.identifier_param if repository.respond_to?("identifier_param") + end + + def self.create_with_changeset(changeset) + project = changeset.project + setting = CodeReviewProjectSetting.find_or_create(project) + auto_assign = setting.auto_assign_settings + assignment = CodeReviewAssignment.new + issue = Issue.new + issue.subject = auto_assign.subject + issue.subject = l(:code_review_requrest) if issue.subject.blank? + issue.subject = issue.subject.sub("$REV" , changeset.revision) + issue.subject = issue.subject.sub("$COMMENTS" , changeset.comments.split(//u)[0..60].join) unless changeset.comments.blank? + issue.tracker_id = setting.assignment_tracker_id + issue.project = project + issue.author = User.find(auto_assign.author_id) + issue.assigned_to_id = auto_assign.select_assign_to(project, changeset.user) + issue.description = auto_assign.description + issue.description = issue.description.sub("$REV" , changeset.revision) unless issue.description.blank? + issue.description = issue.description.sub("$COMMENTS" , changeset.comments) unless changeset.comments.blank? + + issue.save! + + assignment.issue_id = issue.id + assignment.changeset_id = changeset.id + assignment.save! + assignment + end + + + def diff_all + path.blank? + end +end diff --git a/plugins/redmine_code_review/app/models/code_review_project_setting.rb b/plugins/redmine_code_review/app/models/code_review_project_setting.rb new file mode 100644 index 000000000..aa69ae692 --- /dev/null +++ b/plugins/redmine_code_review/app/models/code_review_project_setting.rb @@ -0,0 +1,77 @@ +# Code Review plugin for Redmine +# Copyright (C) 2009-2011 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +class CodeReviewProjectSetting < ActiveRecord::Base + unloadable + include Redmine::SafeAttributes + include CodeReviewAutoAssignSettings + + belongs_to :project + belongs_to :tracker + belongs_to :assignment_tracker, :class_name => 'Tracker' + + validates_presence_of :project_id + validates_presence_of :tracker_id + validates_presence_of :assignment_tracker_id + + before_save :set_assignment_settings + + safe_attributes 'tracker_id', 'assignment_tracker_id', 'hide_code_review_tab', 'auto_relation', 'tracker_in_review_dialog' + + AUTORELATION_TYPE_NONE = 0 + AUTORELATION_TYPE_RELATES = 1 + AUTORELATION_TYPE_BLOCKS = 2 + + def self.find_or_create(project) + setting = CodeReviewProjectSetting.find_by_project_id(project.id) + unless setting + setting = CodeReviewProjectSetting.new + setting.project_id = project.id + return setting if project.trackers.length == 0 + setting.tracker = project.trackers[0] + setting.assignment_tracker = project.trackers[0] + setting.save! + end + setting + end + + def auto_assign_settings + @auto_assign_settings ||= AutoAssignSettings.load(auto_assign) + end + + def auto_assign_settings=(settings) + @auto_assign_settings = settings + end + + def issue_relation_type + return IssueRelation::TYPE_RELATES if auto_relation == CodeReviewProjectSetting::AUTORELATION_TYPE_RELATES + return IssueRelation::TYPE_BLOCKS if auto_relation == CodeReviewProjectSetting::AUTORELATION_TYPE_BLOCKS + return nil + end + + def auto_relation? + issue_relation_type != nil + end + + private + def set_assignment_settings + if auto_assign_settings + self.auto_assign = auto_assign_settings.to_s + else + self.auto_assign = nil + end + end +end diff --git a/plugins/redmine_code_review/app/models/code_review_user_setting.rb b/plugins/redmine_code_review/app/models/code_review_user_setting.rb new file mode 100644 index 000000000..f4058ad65 --- /dev/null +++ b/plugins/redmine_code_review/app/models/code_review_user_setting.rb @@ -0,0 +1,50 @@ +# Code Review plugin for Redmine +# Copyright (C) 2011 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +class CodeReviewUserSetting < ActiveRecord::Base + unloadable + belongs_to :user + + validates_presence_of :user_id + validates_presence_of :mail_notification + validates_uniqueness_of :user_id + + NOTIFCIATION_NONE = 0 + NOTIFICATION_INVOLVED_IN = 1 + NOTIFICATION_ALL = 2 + + def CodeReviewUserSetting.find_or_create(uid) + setting = CodeReviewUserSetting.find_by_user_id(uid) + return setting if setting + setting = CodeReviewUserSetting.new + setting.user_id = uid + setting.mail_notification = NOTIFICATION_INVOLVED_IN + setting.save + return setting + end + + def mail_notification_none? + mail_notification == NOTIFCIATION_NONE + end + + def mail_notification_involved_in? + mail_notification == NOTIFICATION_INVOLVED_IN + end + + def mail_notification_all? + mail_notification == NOTIFICATION_ALL + end +end diff --git a/plugins/redmine_code_review/app/models/review_mailer.rb b/plugins/redmine_code_review/app/models/review_mailer.rb new file mode 100644 index 000000000..3975f9bbc --- /dev/null +++ b/plugins/redmine_code_review/app/models/review_mailer.rb @@ -0,0 +1,122 @@ +# Code Review plugin for Redmine +# Copyright (C) 2009 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +class ReviewMailer < Mailer + + def review_add(project, review) + redmine_headers 'Project' => review.project.identifier, + 'Review-Id' => review.id, + 'Review-Author' => review.user.login + + recipients get_mail_addresses(review) + + subject "[#{review.project.name} - #{l(:label_review_new)} - #{l(:label_review)}##{review.id}] " + review_url = url_for(:controller => 'code_review', :action => 'show', :id => project, :review_id => review.id) + + body :review => review, :review_url => review_url + + return if (l(:this_is_checking_for_before_rails_2_2_2) == 'this_is_checking_for_before_rails_2_2_2') + # 何故かrails 2.2 以後は以下の処理が必要 + + content_type "multipart/alternative" + + part "text/plain" do |p| + p.body = render_message("review_add.text.plain.erb", :body => body, :review=>review, :review_url => review_url) + end + + part "text/html" do |p| + p.body = render_message("review_add.text.html.erb", :body => body, :review=>review, :review_url => review_url) + end + end + + def review_reply(project, review) + redmine_headers 'Project' => review.project.identifier, + 'Review-Id' => review.id, + 'Review-Author' => review.user.login + + recipients recipients get_mail_addresses(review) + + subject "[#{review.project.name} - Updated - #{l(:label_review)}##{review.root.id}] " + review_url = url_for(:controller => 'code_review', :action => 'show', :id => project, :review_id => review.root.id) + body :review => review, :review_url => review_url + + return if (l(:this_is_checking_for_before_rails_2_2_2) == 'this_is_checking_for_before_rails_2_2_2') + # 何故かrails 2.2 以後は以下の処理が必要 + + content_type "multipart/alternative" + + part "text/plain" do |p| + p.body = render_message("review_reply.text.plain.erb", :body => body, :review=>review, :review_url => review_url) + end + + part "text/html" do |p| + p.body = render_message("review_reply.text.html.erb", :body => body, :review=>review, :review_url => review_url) + end + + end + + def review_status_changed(project, review) + redmine_headers 'Project' => review.project.identifier, + 'Review-Id' => review.id, + 'Review-Author' => review.user.login + + recipients recipients get_mail_addresses(review) + + new_status = l(:label_review_open) if review.status_changed_to == CodeReview::STATUS_OPEN + new_status = l(:label_review_closed) if review.status_changed_to == CodeReview::STATUS_CLOSED + + subject "[#{review.project.name} - Updated - #{l(:label_review)}##{review.root.id}] Status changed to #{new_status}." + review_url = url_for(:controller => 'code_review', :action => 'show', :id => project, :review_id => review.root.id) + + body :review => review, :review_url => review_url + + return if (l(:this_is_checking_for_before_rails_2_2_2) == 'this_is_checking_for_before_rails_2_2_2') + # 何故かrails 2.2 以後は以下の処理が必要 + + content_type "multipart/alternative" + + part "text/plain" do |p| + p.body = render_message("review_status_changed.text.plain.erb", :body => body, :review=>review, :review_url => review_url) + end + + part "text/html" do |p| + p.body = render_message("review_status_changed.text.html.erb", :body => body, :review=>review, :review_url => review_url) + end + end + + def get_mail_addresses(review) + mail_addresses = [] + review.root.users_for_notification.each{|u| + mail_addresses << u.mail + } + committer = review.change.changeset.user + if committer + setting = CodeReviewUserSetting.find_or_create(committer.id) + mail_addresses << committer.mail if setting and !setting.mail_notification_none? + end + + review.project.members.each{|member| + user = member.user + setting = CodeReviewUserSetting.find_or_create(user.id) + next unless setting + mail_addresses << user.mail if setting.mail_notification_all? + } + mail_addresses.compact.uniq + + end + +end diff --git a/plugins/redmine_code_review/app/views/code_review/_add_success.html.erb b/plugins/redmine_code_review/app/views/code_review/_add_success.html.erb new file mode 100644 index 000000000..ba46d1532 --- /dev/null +++ b/plugins/redmine_code_review/app/views/code_review/_add_success.html.erb @@ -0,0 +1,27 @@ +<% +# Code Review plugin for Redmine +# Copyright (C) 2009 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-%> +<%= javascript_tag do %> + +var line = <%= @review.line %>; +var review_id = <%= @review.id %>; +var file_count = <%= @review.file_count %>; +hideForm(); +setShowReviewButton(line, review_id, false, file_count); + +<% end %> \ No newline at end of file diff --git a/plugins/redmine_code_review/app/views/code_review/_body_bottom.html.erb b/plugins/redmine_code_review/app/views/code_review/_body_bottom.html.erb new file mode 100644 index 000000000..6c295f17c --- /dev/null +++ b/plugins/redmine_code_review/app/views/code_review/_body_bottom.html.erb @@ -0,0 +1,82 @@ +<% +# Code Review plugin for Redmine +# Copyright (C) 2010 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-%> + +<% +is_target = false + +if project and controller and project.module_enabled?(:code_review) + is_target = true + is_target = false unless User.current.allowed_to?({:controller => 'code_review', :action => 'update_diff_view'}, project) + setting = CodeReviewProjectSetting.find(:first, :conditions => ['project_id = ?', project.id]) + is_target = false unless setting + is_target = false if(setting && setting.tracker_id == nil) + action_name = controller.action_name + is_target = false unless action_name + is_target = false unless (controller.class.name == 'RepositoriesController' or controller.class.name == 'AttachmentsController') + if (is_target == true) + context = {:project => project, :controller => controller, :requrest => request} + %> + <% if (controller.class.name == 'AttachmentsController') %> + <%= render :partial => 'code_review/change_attachement_view', :locals => context %> + <% elsif (action_name == 'show' or action_name == 'revisions') %> + <%= render :partial => 'code_review/change_repository_view', :locals => context %> + <% elsif (action_name == 'revision') %> + <%= render :partial => 'code_review/change_revision_view', :locals => context %> + <% elsif (action_name == 'diff' or action_name == 'entry' or action_name == 'annotate')%> + <%if (controller.params[:rev].blank? or controller.params[:rev] == 'master')%> + <%= render :partial => 'code_review/change_entry_norevision_view', :locals => context %> + <% else + changeset = @repository.find_changeset_by_name(controller.params[:rev]) + %> + <% unless changeset %> + <%= render :partial => 'code_review/change_entry_norevision_view', :locals => context %> + <% else + parameters = request.parameters + rev_to = parameters['rev_to'] unless parameters['rev_to'].blank? + review_id = parameters['review_id'] + rev = parameters['rev'] + path = parameters['path'] + + + repository_id = @repository.identifier_param if @repository.respond_to?("identifier_param") + url = url_for :controller => 'code_review', :action => 'update_diff_view', :id => project, :repository_id => repository_id + %> +

+ + <% end %> + + <% end %> + <% end %> + <% + end +end +-%> + + + diff --git a/plugins/redmine_code_review/app/views/code_review/_change_attachement_view.html.erb b/plugins/redmine_code_review/app/views/code_review/_change_attachement_view.html.erb new file mode 100644 index 000000000..afaed4c79 --- /dev/null +++ b/plugins/redmine_code_review/app/views/code_review/_change_attachement_view.html.erb @@ -0,0 +1,35 @@ +<% +# Code Review plugin for Redmine +# Copyright (C) 2010-2012 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-%> +<% +parameters = request.parameters +id = parameters[:id].to_i +attachment = Attachment.find(id) +return '' unless attachment.is_text? or attachment.is_diff? +review_id = parameters[:review_id] unless parameters[:review_id].blank? +url = url_for :controller => 'code_review', :action => 'update_attachment_view', :id => project +-%> +
+
+
+ + \ No newline at end of file diff --git a/plugins/redmine_code_review/app/views/code_review/_change_entry_norevision_view.html.erb b/plugins/redmine_code_review/app/views/code_review/_change_entry_norevision_view.html.erb new file mode 100644 index 000000000..096a1a47d --- /dev/null +++ b/plugins/redmine_code_review/app/views/code_review/_change_entry_norevision_view.html.erb @@ -0,0 +1,39 @@ +<% +# Code Review plugin for Redmine +# Copyright (C) 2010-2011 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-%> +<% +parameters = request.parameters +path = parameters['path'] +rev = parameters['rev'] +repository_id = @repository.identifier_param if @repository.respond_to?("identifier_param") +unless path.blank? or path.empty? + changesets = @repository.latest_changesets(path, rev, Setting.repository_log_display_limit.to_i) + change = changesets[0] + + if change + link = link_to(l(:label_add_review), {:controller => 'code_review', + :action => 'forward_to_revision', :id => project, :path => path, :rev => rev, :repository_id => repository_id}, + :class => 'icon icon-edit') + %> + + + <% end %> + +<% end %> \ No newline at end of file diff --git a/plugins/redmine_code_review/app/views/code_review/_change_repository_view.html.erb b/plugins/redmine_code_review/app/views/code_review/_change_repository_view.html.erb new file mode 100644 index 000000000..6c7932b42 --- /dev/null +++ b/plugins/redmine_code_review/app/views/code_review/_change_repository_view.html.erb @@ -0,0 +1,41 @@ +<% +# Code Review plugin for Redmine +# Copyright (C) 2010-2012 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-%> +<% + +if @changesets + changeset_ids = '' + @changesets.each { |changeset| + changeset_ids << changeset.revision + changeset_ids << ',' + } + + repository_id = @repository.identifier_param if @repository.respond_to?("identifier_param") + url = url_for :controller => 'code_review', :action => 'update_revisions_view', :id => project, :repository_id => repository_id +%> + +
+ + + + +<% end %> \ No newline at end of file diff --git a/plugins/redmine_code_review/app/views/code_review/_change_revision_view.html.erb b/plugins/redmine_code_review/app/views/code_review/_change_revision_view.html.erb new file mode 100644 index 000000000..6f09ea904 --- /dev/null +++ b/plugins/redmine_code_review/app/views/code_review/_change_revision_view.html.erb @@ -0,0 +1,73 @@ +<% +# Code Review plugin for Redmine +# Copyright (C) 2010-2011 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-%> +<% +repository_id = @repository.identifier_param if @repository.respond_to?("identifier_param") +if @changeset + urlprefix = url_for(:controller => 'repositories', :action => 'revisions', :id => project, :repository_id => repository_id) + + '/' + @changeset.identifier + '/entry' +%> +
+ <%=h l(:review_assignments)%> + <% @changeset.code_review_assignments.each do |assignment| + issue = assignment.issue %> + <%= link_to("##{issue.id} ", {:controller => 'issues', :action => 'show', :id => issue.id}, + :class => issue.css_classes, :title => "#{issue}(#{issue.status})") %> + <% end if @changeset.code_review_assignments %> + + <%= link_to(l(:button_add), {:controller => 'code_review', + :action => 'assign', :id=>project, + :rev => @changeset.revision, + :changeset_id => @changeset.id, :repository_id => repository_id}, :class => 'icon icon-add') %> +
+ + +<% end %> \ No newline at end of file diff --git a/plugins/redmine_code_review/app/views/code_review/_history.html.erb b/plugins/redmine_code_review/app/views/code_review/_history.html.erb new file mode 100644 index 000000000..c464a4442 --- /dev/null +++ b/plugins/redmine_code_review/app/views/code_review/_history.html.erb @@ -0,0 +1,84 @@ +<% +# Code Review plugin for Redmine +# Copyright (C) 2009 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-%> +<% for journal in journals %> + + + <% if not journal.initial? %> + + + <% + header = <<-HTML +

+ #{authoring journal.created_at, journal.user, :label => :label_updated_time_by} + #{content_tag('a', '', :name => "note-#{journal.anchor}")} +

+ +
+ #{avatar(journal.user, :size => "40")} +
+ HTML + + if not journal.notes.blank? + if User.current.logged? + editable = User.current.allowed_to?(:edit_issue_notes, journal.project) + if journal.user == User.current + editable ||= User.current.allowed_to?(:edit_own_issue_notes, journal.project) + end + end + + links = [].tap do |l| + if editable + l << link_to_in_place_notes_editor(image_tag('edit.png'), "journal-#{journal.id}-notes", + { :controller => 'journals', :action => 'edit', :id => journal }, + :title => l(:button_edit)) + end + end + + css_classes = "wiki" + css_classes << " editable" if editable + + content = '' + content << content_tag('div', links.join(' '), :class => 'contextual') unless links.empty? + content << textilizable(journal, :notes) + + header << content_tag("div", content, :id => "journal-#{journal.id}-notes", :class => css_classes) + end + %> + + + <% + details = '' + if journal.details.any? + content = journal.details.collect do |detail| + if d = journal.render_detail(detail) + content_tag("li", d) + end + end.compact.join(' ') + + details = content_tag("ul", content, :class => "details journal-attributes") unless content.empty? + end + %> + + + <%= content_tag "div", "#{header}#{details}", + { :id => "change-#{journal.id}", :class => journal.css_classes } %> + + <% end %> + +<% end %> diff --git a/plugins/redmine_code_review/app/views/code_review/_html_header.html.erb b/plugins/redmine_code_review/app/views/code_review/_html_header.html.erb new file mode 100644 index 000000000..bc277caf5 --- /dev/null +++ b/plugins/redmine_code_review/app/views/code_review/_html_header.html.erb @@ -0,0 +1,30 @@ +<% +# Code Review plugin for Redmine +# Copyright (C) 2010-2012 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-%> +<% if @project and @project.module_enabled?('code_review') %> + <% + baseurl = Redmine::Utils.relative_url_root + + -%> + <%= javascript_include_tag(baseurl + "/plugin_assets/redmine_code_review/javascripts/code_review.js") %> + <%= javascript_include_tag(baseurl + '/javascripts/jstoolbar/jstoolbar.js') %> + <%= javascript_include_tag(baseurl + '/javascripts/jstoolbar/textile.js') %> + <%= javascript_include_tag(baseurl + "/javascripts/jstoolbar/lang/jstoolbar-#{@project.current_language}.js") %> + <%= stylesheet_link_tag(baseurl + "/plugin_assets/redmine_code_review/stylesheets/code_review.css") %> + <%= stylesheet_link_tag(baseurl + "/stylesheets/jstoolbar.css") %> +<% end %> \ No newline at end of file diff --git a/plugins/redmine_code_review/app/views/code_review/_issues_show_details_bottom.html.erb b/plugins/redmine_code_review/app/views/code_review/_issues_show_details_bottom.html.erb new file mode 100644 index 000000000..e60198fff --- /dev/null +++ b/plugins/redmine_code_review/app/views/code_review/_issues_show_details_bottom.html.erb @@ -0,0 +1,56 @@ +<%# +# To change this template, choose Tools | Templates +# and open the template in the editor. +%> + +<% +unless User.current.allowed_to?({:controller => 'code_review', :action => 'show'}, project) + return +end + +%> + +<% if issue.code_review %> +<% +review = issue.code_review +%> + + <%= l(:code_review) %>: + + <% + label = URI.decode("#{review.repository_identifier + ':' if review.repository_identifier}#{review.path}#{'@' + review.revision if review.revision}:line #{review.line}") + -%> + <%= link_to(label, + :controller => 'code_review', :action => 'show', :id => project, :review_id => review.id, :repository_id => review.repository_identifier) %> + + +<% end %> +<% if issue.code_review_assignment %> + <% + assignment = issue.code_review_assignment + repository_id = assignment.repository_identifier +%> + + <%= l(:review_assigned_for) %>: + + <% if assignment.path %> + <% + label = URI.decode("#{repository_id + ':' if repository_id}#{assignment.path}#{'@' + assignment.revision if assignment.revision}") + -%> + <%= link_to(label, + :controller => 'code_review', :action => 'show', :id => project, :assignment_id => assignment.id, :repository_id => repository_id) %> + <% elsif assignment.revision %> + <% + repo = project unless repository_id + repo ||= assignment.repository + %> + <%= l(:label_revision) + " "%> + <%= link_to_revision(assignment.revision, repo) %> + <% elsif assignment.attachment %> + <%= link_to(assignment.attachment.filename, :controller => 'attachments', :action => 'show', :id => attachment.id) %> + <% end %> + + + +<% end %> + diff --git a/plugins/redmine_code_review/app/views/code_review/_new_form.html.erb b/plugins/redmine_code_review/app/views/code_review/_new_form.html.erb new file mode 100644 index 000000000..81feda16e --- /dev/null +++ b/plugins/redmine_code_review/app/views/code_review/_new_form.html.erb @@ -0,0 +1,121 @@ +<% +# Code Review plugin for Redmine +# Copyright (C) 2009-2013 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-%> + + +
+

+ <%= l(:label_line_number, :line => @review.line) %> +

+ <%= form_for @review,:as => :review, + :url => {:controller => 'code_review', :action => 'new', :id=>@project}, :html => {:id => 'review_form'} do |f| %> + <%= error_messages_for 'review' %> + <%= error_messages_for 'issue' %> + <%= error_messages_for 'relation' %> + <%= f.hidden_field(:change_id) %> + <%= f.hidden_field(:line) %> + <%= hidden_field_tag(:action_type, @review.action_type) %> + <%= hidden_field_tag(:rev, @review.revision) %> + <%= hidden_field_tag(:rev_to, @review.rev_to) %> + <%= hidden_field_tag(:path, @review.path) %> + <%= hidden_field_tag(:file_count, @review.file_count) %> + <%= hidden_field_tag(:attachment_id, @review.attachment_id) %> + <%= hidden_field_tag(:repository_id, @repository_id) %> + <%= hidden_field_tag(:diff_all, @review.diff_all) %> +

+ + <%= f.text_field :subject, :size => 70, :required => true %> +

+ + <% if @setting.tracker_in_review_dialog %> +

+ + <%= select :issue, :tracker_id, @project.trackers.collect {|t| [t.name, t.id]}, :required => true %> + +

+ <% end %> +

+ + <%= f.text_field :parent_id, :size => 10 %> + <% if @parent_candidate %> + <%= raw l(:label_parent_suggestion, {:issue_id => link_to_issue(@parent_candidate)}) %> + + <% end %> +

+ <% @issue.custom_field_values.each do |value| %> + <% next unless value.required? -%> +

<%= custom_field_tag_with_label :issue, value %>

+ <% end %> +

+ <%= f.text_area :comment, + :cols => 30, + :rows => 12, + :accesskey => accesskey(:edit), + :class => 'wiki-edit' %> + +

+

+ + <%= select :issue, :assigned_to_id, (@issue.assignable_users.collect {|m| [m.name, m.id]}), :include_blank => true %> +

+ <% unless @project.issue_categories.empty? %> +

+ + <%= select :issue, :category_id, (@project.issue_categories.collect {|c| [c.name, c.id]}), :include_blank => true %> +

+ <% end %> + <% unless @issue.assignable_versions.empty? %> +

+ + <%= select :issue, :fixed_version_id, (@issue.assignable_versions.collect {|v| [v.name, v.id]}), :include_blank => true, :selected => @default_version_id %> +

+ <% end %> + + <% + @allowed_statuses = @issue.new_statuses_allowed_to(User.current) + -%> + <% if @issue.new_record? || @allowed_statuses.any? %> +

<%= f.select :status_id, (@allowed_statuses.collect {|p| [p.name, p.id]}), :required => true %>

+ <% else %> +

<%= h(@issue.status.name) %>

+ <% end %> +

+ <% + submit_url = url_for(:controller => 'code_review', :action => 'new', :id=>@project) + %> + <%= button_to_function l(:button_apply), "$('#review-form').load('#{submit_url}', $('#review_form').serialize2json())" %> + + + <%= preview_link({ :controller => 'code_review', :action => 'preview', :id => @project}, 'review_form') %> +

+
+ <%= wikitoolbar_for 'review_comment' %> + <% end %> + +
+ + diff --git a/plugins/redmine_code_review/app/views/code_review/_reply.html.erb b/plugins/redmine_code_review/app/views/code_review/_reply.html.erb new file mode 100644 index 000000000..7fccf0aa3 --- /dev/null +++ b/plugins/redmine_code_review/app/views/code_review/_reply.html.erb @@ -0,0 +1,36 @@ +<% +# Code Review plugin for Redmine +# Copyright (C) 2009 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-%> +

+ + <%= authoring reply.created_on, reply.user %>. +

+ <%= avatar(reply.user, :size => "32") %> +
    + <% for detail in reply.details %> +
  • <%= show_detail(detail) %>
  • + <% end %> +
+ + +
+ <%= textilizable reply, :notes %> +
+ + +
\ No newline at end of file diff --git a/plugins/redmine_code_review/app/views/code_review/_show.html.erb b/plugins/redmine_code_review/app/views/code_review/_show.html.erb new file mode 100644 index 000000000..560447b96 --- /dev/null +++ b/plugins/redmine_code_review/app/views/code_review/_show.html.erb @@ -0,0 +1,187 @@ +<% +# Code Review plugin for Redmine +# Copyright (C) 2009-2012 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-%> +
+ +
+ + + <%= error_messages_for 'review' -%> + <%= error_messages_for 'reply' -%> + <% if @notice -%> +
<%= @notice -%>
+ <% end -%> + <% if @error -%> +
<%= @error -%>
+ <% end -%> + + +
+ + +
+ <% if authorize_for('code_review', 'update') -%> + <%= link_to_function l(:button_update), "$('#update-form-#{@review.id}').show();return false;", :class => 'icon icon-edit' %> + <% end %> + <% if authorize_for('code_review', 'destroy') -%> + <%= link_to(l(:button_delete), + {:controller => 'code_review', + :action => 'destroy', + :id => @project, + :review_id => @review}, + :update => "show_review_#{@review.id}", + :remote => true, + :confirm => l(:text_are_you_sure), + :success => "deleteReview(#{@review.id})", + :class => 'icon icon-del') %> + <% end -%> +
+ + +

+ <%= link_to h(@issue.tracker.name) + ' #' +@issue.id.to_s + ' (' + h(@review.issue.status) + ')', + :controller => 'issues', :action => 'show', :id => @review.issue.id %>: +
+ <%=h @review.subject %> +

+ + +

+ <%= avatar(@review.user, :size => "64") %> +
+ <%= authoring @review.created_at, @review.user %>. + <%= l(:label_updated_time, distance_of_time_in_words(Time.now, @review.updated_at)) + '.' if @review.created_at != @review.updated_at %> +

+
+ + +
+ <%= textilizable @review, :comment %> +
+ + + +
+ + + <% journals = @review.issue.journals.sort {|a, b| a.id <=> b.id } %> + <% if respond_to?('render_journal') %> + <% # ChiliProject -%> + <% if journals.length > 0 %> +
+

<%= l(:label_history) %>

+ <%= render :partial => 'history', :locals => { :issue => @review.issue, :journals => journals } %> +
+ <% end %> + <% else %> + <% # Redmine -%> + <% if journals.length > 0 %> +

<%= l(:label_history) %>

+ <% end %> + <%= render :partial => 'reply', :collection => journals %> + <% end %> + + + <% if authorize_for('code_review', 'reply') -%> +

+ <%= toggle_link l(:button_reply), "reply_#{@review.id}", :focus => 'reply_comment_' + @review.id.to_s %> +

+ <% + message_form_id = "message-form-#{@review.id}" + -%> + + <% end %> + +
+ +
diff --git a/plugins/redmine_code_review/app/views/code_review/_show_error.html.erb b/plugins/redmine_code_review/app/views/code_review/_show_error.html.erb new file mode 100644 index 000000000..7b9c2db9e --- /dev/null +++ b/plugins/redmine_code_review/app/views/code_review/_show_error.html.erb @@ -0,0 +1,24 @@ +
+

Error

+ +

change not found.

+ + @path = '<%=h @path %>'
+ @changeset = <%=h @changeset %>
+ @rev = <%=h @rev %>
+ <% if @changeset %> +
    + <% for change in @changeset.changes do%> +
  • + '<%=h change.path%>' +
  • + <% end %> +
+ <% end %> +
+ + \ No newline at end of file diff --git a/plugins/redmine_code_review/app/views/code_review/_update_diff_view.html.erb b/plugins/redmine_code_review/app/views/code_review/_update_diff_view.html.erb new file mode 100644 index 000000000..0d38e3ae6 --- /dev/null +++ b/plugins/redmine_code_review/app/views/code_review/_update_diff_view.html.erb @@ -0,0 +1,77 @@ +<% +# Code Review plugin for Redmine +# Copyright (C) 2009-2012 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-%> + +
+ +
+ +
+
+ +
+
+ +
+ + + + diff --git a/plugins/redmine_code_review/app/views/code_review/_update_revisions.html.erb b/plugins/redmine_code_review/app/views/code_review/_update_revisions.html.erb new file mode 100644 index 000000000..48b9289ec --- /dev/null +++ b/plugins/redmine_code_review/app/views/code_review/_update_revisions.html.erb @@ -0,0 +1,49 @@ +<%# +# Code Review plugin for Redmine +# Copyright (C) 2009-2011 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +%> + + + + diff --git a/plugins/redmine_code_review/app/views/code_review/index.html.erb b/plugins/redmine_code_review/app/views/code_review/index.html.erb new file mode 100644 index 000000000..c82a9c0b3 --- /dev/null +++ b/plugins/redmine_code_review/app/views/code_review/index.html.erb @@ -0,0 +1,101 @@ +<% +# Code Review plugin for Redmine +# Copyright (C) 2009-2012 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-%> + + +
+

+ <%=h l(:code_reviews) %> +

+ + <% if @all_review_count > 0 %> +

+ <%= form_tag({:controller => 'code_review', :action=>'index', :id => @project}, :id => 'optionform') do %> + <%= check_box_tag 'show_closed', 'true', @show_closed, :onchange => "change_option($('#show_closed').is(':checked'));"%> <%=h l(:label_show_closed_reviews) %> + <% end %> + <%# observe_field 'show_closed', :with => 'show_closed', :update => 'content' %> +

+ <% end %> + + <% if @reviews == nil or @reviews.length == 0 %> +

<%= l(:label_no_data) %>

+ <% else %> + + + + + + <%= sort_header_tag "#{Issue.table_name}.id", :caption => '#' %> + <%= sort_header_tag "#{Issue.table_name}.status_id", :caption => l(:field_status)%> + <%= sort_header_tag "#{Issue.table_name}.subject", :caption => l(:field_subject)%> + <%= sort_header_tag 'path', :caption => l(:label_code_path)%> + + <%= sort_header_tag "#{Changeset.table_name}.revision", :caption => l(:label_revision)%> + <%= sort_header_tag "#{Changeset.table_name}.committer", :caption => l(:label_code_author)%> + <%= sort_header_tag 'user_id', :caption => l(:label_code_reviewer)%> + <%= sort_header_tag 'updated_at', :caption => l(:label_date) %> + + + + <% for review in @reviews %> + + + + + + + + + + + + + <% end %> + +
+ <%=h l(:label_code_line)%> +
+ <%= link_to review.issue.id.to_s, {:controller => 'issues', :action => 'show', + :id => review.issue.id}, :title => review.issue.subject %> + + <%=h review.issue.status %> + + <%=h review.issue.subject %> + + <% + review_path = URI.decode(review.path) + codepath = review_path + if (review_path.length > 55) + codepath = review_path[0, 15] + '...' + review_path[review_path.length - 35, 35] + end + -%> + <%= link_to(raw(codepath), {:controller => 'code_review', :action => 'show', :id => @project, :review_id => review.id}, :title => review_path) -%> + <%=h review.line %><%=h review.revision %><%=h review.committer %><%=h review.user.name %><%=h format_time(review.created_at) %>
+

<%= pagination_links_full @review_pages, @review_count %>

+ + <% end %> + + <% content_for :header_tags do %> + <%= stylesheet_link_tag "code_review.css", :plugin => "redmine_code_review", :media => "screen" %> + <% end %> +
diff --git a/plugins/redmine_code_review/app/views/code_review_settings/_filters.html.erb b/plugins/redmine_code_review/app/views/code_review_settings/_filters.html.erb new file mode 100644 index 000000000..ec06aa1fc --- /dev/null +++ b/plugins/redmine_code_review/app/views/code_review_settings/_filters.html.erb @@ -0,0 +1,117 @@ +<% +# Code Review plugin for Redmine +# Copyright (C) 2009-2012 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-%> + +

+ + <%= check_box_tag "auto_assign[filter_enabled]", true, @auto_assign.filter_enabled?, :onchange => 'setAutoAssignSettingFiltersEnable();' %><%=h l(:button_activate)%> + +

+
+
+
+ <%= link_to_function(l(:button_add), "$('#add_filter_form').show('blind');", :class => 'icon icon-add') %> +
+ + + + + + + + + + + + <% @auto_assign.filters.each_with_index do |filter, i| -%> + <% tr_class = cycle('odd', 'even') -%> + + + + + + + + + + + + + + + <% end -%> + + + + + + + + + +
#<%=h l(:auto_assign_filter_assign)%>/<%=h l(:auto_assign_filter_drop) %><%=h l(:auto_assign_filter_expression)%> <%=h l(:button_sort) %>
<%= i + 1 %> + <%= hidden_field_tag "auto_assign[filters][#{i}][accept]", filter.accept? %> + <%= hidden_field_tag "auto_assign[filters][#{i}][expression]", filter.expression %> + <%= hidden_field_tag "auto_assign[filters][#{i}][order]", (i+1) * 10 %> + <%= filter.accept? ? l(:auto_assign_filter_assign) : l(:auto_assign_filter_drop)%> <%= filter.expression %> + <% + name = 'auto_assign_filter' + url = {:controller => 'code_review_settings', :action => 'sort', :id => @project, "#{name}[num]" => i} + -%> + <%= + link_to(image_tag('2uparrow.png', :alt => l(:label_sort_highest)), :remote => true, :url => url.merge({"#{name}[move_to]" => 'highest'}), :method => :post, :title => l(:label_sort_highest), :update => 'auto_assignment_filters', :submit => 'code_review_form') + + link_to(image_tag('1uparrow.png', :alt => l(:label_sort_higher)), :remote => true, :url => url.merge({"#{name}[move_to]" => 'higher'}), :method => :post, :title => l(:label_sort_higher), :update => 'auto_assignment_filters', :submit => 'code_review_form') + + link_to(image_tag('1downarrow.png', :alt => l(:label_sort_lower)), :remote => true, :url => url.merge({"#{name}[move_to]" => 'lower'}), :method => :post, :title => l(:label_sort_lower), :update => 'auto_assignment_filters', :submit => 'code_review_form') + + link_to(image_tag('2downarrow.png', :alt => l(:label_sort_lowest)), :remote => true, :url => url.merge({"#{name}[move_to]" => 'lowest'}), :method => :post, :title => l(:label_sort_lowest), :update => 'auto_assignment_filters', :submit => 'code_review_form') + -%> + + + + <%= link_to_function(l(:button_delete), "$('#auto_assign_tr_#{i}').remove();")%> + + <%= link_to_function(l(:button_edit), "$('#auto_assign_tr_#{i}').hide();$('#auto_assign_edit_tr_#{i}').show()")%> + + +
+ +
+

+ + <%= select(:auto_assign, :accept_for_default, [[l(:auto_assign_filter_assign), true], [l(:auto_assign_filter_drop), false]]) %> +

+ +
diff --git a/plugins/redmine_code_review/app/views/code_review_settings/_show.html.erb b/plugins/redmine_code_review/app/views/code_review_settings/_show.html.erb new file mode 100644 index 000000000..74454d49b --- /dev/null +++ b/plugins/redmine_code_review/app/views/code_review_settings/_show.html.erb @@ -0,0 +1,163 @@ +<% +# Code Review plugin for Redmine +# Copyright (C) 2010-2012 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-%> +
+ + + <% + @code_review_setting = CodeReviewProjectSetting.find_or_create(@project) +%> + + <%= labelled_form_for :setting, @code_review_setting, + :url => {:controller => 'code_review_settings', + :action => 'update', :id => @project, :tab => 'code_review', + :partial => 'code_review_settings/update', + :setting_id => @code_review_setting.id}, :html => {:id => 'code_review_form'} do |f| %> + <%= error_messages_for 'code_review_setting' %> +
+ <%= f.hidden_field :lock_version %> +

<%= f.check_box :tracker_in_review_dialog %>

+ + <%=h l(:select_tracker_for_code_reviews)%>: +

<%= f.select :tracker_id, @project.trackers.collect {|t| [t.name, t.id]}, :required => true %>

+ + <%=h l(:select_tracker_for_code_review_assignment)%>: +

<%= f.select :assignment_tracker_id, @project.trackers.collect {|t| [t.name, t.id]}, :required => true %>

+ +

+ <%= f.check_box :hide_code_review_tab %> +

+ +

+ + <%= f.radio_button(:auto_relation, CodeReviewProjectSetting::AUTORELATION_TYPE_RELATES) %> + <%=h l(:label_review_issue_relates) %> + + <%= f.radio_button(:auto_relation, CodeReviewProjectSetting::AUTORELATION_TYPE_BLOCKS) %> + <%=h l(:label_review_issue_blocks) %> + + <%= f.radio_button(:auto_relation, CodeReviewProjectSetting::AUTORELATION_TYPE_NONE) %> + <%=h l(:label_review_issue_do_nothing) %> + +

+
+ +

+ <% + @auto_assign = @code_review_setting.auto_assign_settings + @auto_assign.subject = l(:code_review_requrest) if @auto_assign.subject.blank? + -%> + + <%= check_box_tag "auto_assign[enabled]", true, @auto_assign.enabled?, :onchange => 'setAutoAssignSettingFormEnable();'%><%=h l(:button_activate)%> +

+
+

+ + <%= select :auto_assign, :author_id, + (@project.users.collect {|user| + [user.name, user.id] + }), :selected => @auto_assign.author_id, :required => true %> +

+

+ + <% @project.users.each do |user| %> + + <% end %> +

+

+ + <%= text_field(:auto_assign, :subject, :size => 70) %> +

+

+ + <%= text_area :auto_assign, :description, + :cols => 30, + :rows => 12, + :accesskey => accesskey(:edit), + :class => 'wiki-edit' %> +

+

+

+ <%= render :partial => 'code_review_settings/filters' %> +
+

+
+ +
+ <%= submit_tag l(:button_update) %> + <% end %> +
+<%= wikitoolbar_for 'auto_assign_description' %> diff --git a/plugins/redmine_code_review/assets/images/closed_review.png b/plugins/redmine_code_review/assets/images/closed_review.png new file mode 100644 index 0000000000000000000000000000000000000000..1365932539cfecadd5e7f04f80204e5a1be30b85 GIT binary patch literal 508 zcmV-OYkujS9+nf5JA+WHW8XYj*GG3G8yQ% znse^`aV~R|h)^w3`@@duI7n?27h_!PngMQEE?`Y6{ zj7sU#tNDJ|HYl*!dx(w$(Pq~^DwSr{w*3)Df8f`8wCOzq?IEMU=ER6J8VhfWtE=G` z#uu&Y_HwRej_tg>`=T6Q*&IwJ2b5B#87<$+r+g20d@7@}(@I2mecsus~I97+Sg33J7-U zOl8co;1~#j++69(?FGOBw7n;|WF|bJ??SV*f`6^Ek4zQ@r^l$4!v<{KJK8$UE4Vsw zmUj=f-gs-(PQ%pyvUro?vhM0JnOAUiR}UL&^&g)n{ABv#|E($!DSiL?{OObC)$zk0 ygI(pm^aY(-!#d&)q|<2;0g$L9CWj;YLH+@(T;c<_>JvTy0000KL2B(EB2hAv|~?ij9S zeij;!dq=*j)3@{KoI@z3NGD)C;ooyqgDWPKQmpi$ocqW9c(;Ak=pUJ30f6J-?Zw3& zp6?60Ynq{_B5Rv|fCT^$K!CFj4p(8oRtjDJlx+Sd;$k1ktHMA_H^Bb{2q2(sfaY>r zJBe7#TufA%j=DEff`IU9Bzk@L-0ATI2q8a#OePatTCkfFO6v{T<|=l{vTRC_B~!?^hFS$K9}koP04NaK-RLsHL;XI8 zPTWQ'); + th.html(title); + header.append(th); + $('tr.changeset td.id a').each(function(i){ + var revision = this.getAttribute("href"); + revision = revision.substr(revision.lastIndexOf("/") + 1); + var review = review_counts['revision_' + revision]; + var td = $('',{ + 'class':'progress' + }); + td.html(review.progress); + $(this.parentNode.parentNode).append(td); + }); + } +//add function $.down +if(! $.fn.down) +(function($) { + $.fn.down = function() { + var el = this[0] && this[0].firstChild; + while (el && el.nodeType != 1) + el = el.nextSibling; + return $(el); + }; +})(jQuery); + +function UpdateRevisionView() { + $('li.change').each(function(){ + var li = $(this); + if (li.hasClass('folder')) return; + + var a = li.down('a'); + if (a.size() == 0) return; + var path = a.attr('href').replace(urlprefix, '').replace(/\?.*$/, ''); + + var reviewlist = code_reviews_map[path]; + if (reviewlist == null) return; + + var ul = $('
    '); + for (var j = 0; j < reviewlist.length; j++) { + var review = reviewlist[j]; + var icon = review.is_closed? 'icon-closed-review': 'icon-review'; + var item = $('
  • ', { + 'class': 'icon ' + icon + ' code_review_summary' + }); + item.html(review.url); + ul.append(item); + } + li.append(ul); + }); +} + +function setAddReviewButton(url, change_id, image_tag, is_readonly, is_diff, attachment_id){ + var filetables = []; + var j = 0; + $('table').each(function(){ + if($(this).hasClass('filecontent')){ + filetables[j++] = this; + } + }); + j = 0; + $('table.filecontent th.filename').each(function(){ + filenames[j] = $.trim($(this).text()); + j++; + }); + addReviewUrl = url + '?change_id=' + change_id + '&action_type=' + action_type + + '&rev=' + rev + '&rev_to=' + rev_to + + '&attachment_id=' + attachment_id + '&repository_id=' + encodeURIComponent(repository_id); + if (path != null && path.length > 0) { + addReviewUrl = addReviewUrl + '&path=' + encodeURIComponent(path); + } + var num = 0; + if (is_diff) { + num = 1; + } + var i, l, tl; + for (i = 0, tl = filetables.length; i < tl; i++) { + var table = filetables[i]; + var trs = table.getElementsByTagName('tr'); + + for (j = 0,l = trs.length; j < l; j++) { + var tr = trs[j]; + var ths = tr.getElementsByTagName('th'); + + var th = ths[num]; + if (th == null) { + continue; + } + + var th_html = th.innerHTML; + + var line = th_html.match(/[0-9]+/); + if (line == null) { + continue; + } + + var span_html = ''; + + if (!is_readonly) { + span_html += image_tag; + } + span_html += ''; + th.innerHTML = th_html + span_html; + + var img = th.getElementsByTagName('img')[0]; + if (img != null ) { + img.id = 'add_revew_img_' + line + '_' + i; + $(img).click(clickPencil); + } + } + } + + +} + +function clickPencil(e) +{ +// alert('$(e.target).attr("id") = ' + $(e.target).attr("id")); + var result = $(e.target).attr("id").match(/([0-9]+)_([0-9]+)/); + var line = result[1]; + var file_count = eval(result[2]); + var url = addReviewUrl + '&line=' + line + '&file_count=' + file_count; + + if (path == null || path.length == 0) { + url = url + '&path=' + encodeURIComponent(filenames[file_count]) + '&diff_all=true'; + } + addReview(url); + formPopup(e.pageX, e.pageY); + e.preventDefault(); +} +var addReviewUrl = null; +var showReviewUrl = null; +var showReviewImageTag = null; +var showClosedReviewImageTag = null; + +function setShowReviewButton(line, review_id, is_closed, file_count) { + //alert('file_count = ' + file_count); + var span = $('#review_span_' + line + '_' + file_count); + if (span.size() == 0) { + return; + } + var innerSpan = $('',{id: 'review_' + review_id}); + span.append(innerSpan); + innerSpan.html(is_closed? showClosedReviewImageTag : showReviewImageTag); + var div = $('
    ', { + 'class':'draggable', + id: 'show_review_' + review_id + }); + $('#code_review').append(div); + innerSpan.down('img').click(function(e) { + var review_id = $(e.target).parent().attr('id').match(/[0-9]+/)[0]; + var span = $('#review_' + review_id); // span element of view review button + var pos = span.offset(); + showReview(showReviewUrl, review_id, pos.left + 10 + 5, pos.top + 25); + }); +} + +function popupReview(review_id) { + var span = $('#review_' + review_id); // span element of view review button + var pos = span.offset(); + $('html,body').animate({ scrollTop: pos.top }, + {duration: 'fast', + complete: function(){showReview(showReviewUrl, review_id, pos.left + 10 + 5, pos.top)}}); + // position and show popup dialog + // create popup dialog + //var win = showReview(showReviewUrl, review_id, pos.left + 10 + 5, pos.top); +// win.toFront(); +} + +function showReview(url, review_id, x, y) { + if (code_reviews_dialog_map[review_id] != null) { + var cur_win = code_reviews_dialog_map[review_id]; + cur_win.hide(); + code_reviews_dialog_map[review_id] = null; + } + $('#show_review_' + review_id).load(url, {review_id: review_id}); + var review = getReviewObjById(review_id); + + var win = $('#show_review_' + review_id).dialog({ + show: {effect:'scale'},// ? 'top-left' + //position: [x, y + 5], + width:640, + zIndex: topZindex, + title: review_dialog_title + }); +// win.getContent().style.color = "#484848"; +// win.getContent().style.background = "#ffffff"; + topZindex++; + code_reviews_dialog_map[review_id] = win; + return win +} + +function getReviewObjById(review_id) { + for (var reviewlist in code_reviews_map) { + for (var i = 0; i < reviewlist.length; i++) { + var review = reviewlist[i]; + if (review.id == review_id) { + return review; + } + } + } + return null; +} + +function formPopup(x, y){ + //@see http://docs.jquery.com/UI/Effects/Scale + var win = $('#review-form-frame').dialog({ + show: {effect:'scale', direction: 'both'},// ? 'top-left' +// position: [x, y + 5], + width:640, + zIndex: topZindex, + title: add_form_title + }); +// win.getContent().style.background = "#ffffff"; + if (review_form_dialog != null) { + review_form_dialog.destroy(); + review_form_dialog = null; + } + review_form_dialog = win; + topZindex += 10; + return false; +} + +function hideForm() { + if (review_form_dialog == null) { + return; + } + review_form_dialog.dialog('close'); + review_form_dialog = null; + $('#review-form').html(''); +} +function addReview(url) { + $('#review-form').load(url); +} + +function deleteReview(review_id) { + $('show_review_' + review_id).remove(); + $('review_' + review_id).remove(); + +} + +function changeImage(review_id, is_closed) { + var span = $('review_' + review_id); + var new_image = null; + var dummy = new Element('span'); + if (is_closed) { + dummy.insert(showClosedReviewImageTag); + } + else { + dummy.insert(showReviewImageTag); + } + new_image = dummy.down().getAttribute('src'); + //alert(new_image); + span.down('img').setAttribute('src', new_image); + +} + +function make_addreview_link(project, link) { + var alist = $('#content p a'); + if (alist == null) { + return; + } + var a = alist[0]; + var p = a.parentNode; + p.innerHTML = p.innerHTML + " | " + link; +} + +function call_update_revisions(url) { + var changeset_ids = ''; + var links = $$('table.changesets tbody tr.changeset td.id a'); + for (var i = 0; i < links.length; i++) { + var link = links[i]; + var href = link.getAttribute('href'); + var id = href.replace(/^.*\/revisions\//, ''); + if (i > 0) { + changeset_ids += ','; + } + changeset_ids += id; + } + new Ajax.Updater('code_review_revisions', url, + { + evalScripts:true, + method:'get', + parameters: 'changeset_ids=' + encodeURI(changeset_ids) + }); +} + +$.fn.serialize2json = function() +{ + var o = {}; + var a = this.serializeArray(); + $.each(a, function() { + if (o[this.name]) { + if (!o[this.name].push) { + o[this.name] = [o[this.name]]; + } + o[this.name].push(this.value || ''); + } else { + o[this.name] = this.value || ''; + } + }); + return o; +}; \ No newline at end of file diff --git a/plugins/redmine_code_review/assets/stylesheets/activity.css b/plugins/redmine_code_review/assets/stylesheets/activity.css new file mode 100644 index 000000000..e3cdc3d55 --- /dev/null +++ b/plugins/redmine_code_review/assets/stylesheets/activity.css @@ -0,0 +1,4 @@ + +dt.code_review { + background-image: url(../images/review.png); +} \ No newline at end of file diff --git a/plugins/redmine_code_review/assets/stylesheets/code_review.css b/plugins/redmine_code_review/assets/stylesheets/code_review.css new file mode 100644 index 000000000..11939ae79 --- /dev/null +++ b/plugins/redmine_code_review/assets/stylesheets/code_review.css @@ -0,0 +1,97 @@ +/* +# Code Review plugin for Redmine +# Copyright (C) 2009 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ +#review-form-frame { +height: 100%; +} + +.autoscroll table.filecontent th.line-num { + white-space: nowrap; + vertical-align: bottom; + padding-top: 0; + padding-bottom: 0; + text-align:left; +} + +table.filecontent th.line-num img{ + padding: 0; + margin: 0; + cursor: pointer; +} + + +.code-review-form-title { + background-color: #002059; + color: white; + padding-left: 2px; + padding-right: 2px; + cursor: default; +} + + +.code_review_viewer { + + min-width: 300px; + /* + max-width: 60%; + */ + /* max-height: 400px; */ +} + +.code_review_viewer .issue{ + +} + +.code_review_body { + background-color: white; + + padding:2px; + +} + +#code_review_list table.list td { + text-align: center; +} + +#code_review_list table.list td.path { + text-align: left; +} + +#code_review_list table.list td.subject { + text-align: left; +} + +.icon-review { + background-image: url(../images/review.png); + background-repeat: no-repeat; +} + +.icon-closed-review { + background-image: url(../images/closed_review.png); + background-repeat: no-repeat; +} + +.icon-settings { + background-image: url(../../../images/changeset.png); + background-repeat: no-repeat; +} + + +li.code_review_summary { + list-style-type: none; +} \ No newline at end of file diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/MIT-LICENSE b/plugins/redmine_code_review/assets/stylesheets/window_js/MIT-LICENSE new file mode 100644 index 000000000..5bcdad1bd --- /dev/null +++ b/plugins/redmine_code_review/assets/stylesheets/window_js/MIT-LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2006 Sébastien Gruhier (http://xilinus.com, http://itseb.com) + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/alert.css b/plugins/redmine_code_review/assets/stylesheets/window_js/alert.css new file mode 100644 index 000000000..432d14e36 --- /dev/null +++ b/plugins/redmine_code_review/assets/stylesheets/window_js/alert.css @@ -0,0 +1,119 @@ +.overlay_alert { + background-color: #85BBEF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.alert_nw { + width: 5px; + height: 5px; + background: transparent url(alert/top_left.gif) no-repeat bottom left; +} + +.alert_n { + height: 5px; + background: transparent url(alert/top.gif) repeat-x bottom left; +} + +.alert_ne { + width: 5px; + height: 5px; + background: transparent url(alert/top_right.gif) no-repeat bottom left +} + +.alert_e { + width: 5px; + background: transparent url(alert/right.gif) repeat-y 0 0; +} + +.alert_w { + width: 5px; + background: transparent url(alert/left.gif) repeat-y 0 0; +} + +.alert_sw { + width: 5px; + height: 5px; + background: transparent url(alert/bottom_left.gif) no-repeat 0 0; +} + +.alert_s { + height: 5px; + background: transparent url(alert/bottom.gif) repeat-x 0 0; +} + +.alert_se, .alert_sizer { + width: 5px; + height: 5px; + background: transparent url(alert/bottom_right.gif) no-repeat 0 0; +} + +.alert_close { + width:0px; + height:0px; + display:none; +} + +.alert_minimize { + width:0px; + height:0px; + display:none; +} + +.alert_maximize { + width:0px; + height:0px; + display:none; +} + +.alert_title { + float:left; + height:1px; + width:100%; +} + +.alert_content { + overflow:visible; + color: #000; + font-family: Tahoma, Arial, sans-serif; + font: 12px arial; + background: #FFF; +} + +/* For alert/confirm dialog */ +.alert_window { + background: #FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.alert_message { + font: 12px arial; + width:100%; + color:#F00; + padding-bottom:10px; +} + +.alert_buttons { + text-align:center; + width:100%; +} + +.alert_buttons input { + width:20%; + margin:10px; +} + +.alert_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background: #FFF url('alert/progress.gif') no-repeat center center +} + + diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/alert/bottom.gif b/plugins/redmine_code_review/assets/stylesheets/window_js/alert/bottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..9870f5224ab4a6c73dd6047a53b59b3fc02d4768 GIT binary patch literal 70 zcmZ?wbhEHbjACGAXkcKlWMKIJ|G(l-76uT|0TCb>1}52_{*|ZS@-LpV`3md)8_61||-knwbYVt~)U@SOWkI9SQ~j literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/alert/bottom_right.gif b/plugins/redmine_code_review/assets/stylesheets/window_js/alert/bottom_right.gif new file mode 100644 index 0000000000000000000000000000000000000000..230ba12bedb5e82cbe13af02c4ea60fac1c7187c GIT binary patch literal 49 xcmZ?wbhEHbWMyDwXkcLY|Np-w1B2pE76uT|0TCb>1||-cqPBzCw;~uBtN{&_3S9sI literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/alert/left.gif b/plugins/redmine_code_review/assets/stylesheets/window_js/alert/left.gif new file mode 100644 index 0000000000000000000000000000000000000000..4a3fab520239d0d923d95d3128e1b035dbb89381 GIT binary patch literal 84 zcmZ?wbhEHbWMznAXkcKlWMKIJ|G(l-76uT|0TCb>1}1Hnnwc4EWW!oEUHZN0c5r!K jrDDg#q@PO{cdg6gp1;X+^XAz7+vgqs`|j{cE(U7=I!+)L literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/alert/overlay.png b/plugins/redmine_code_review/assets/stylesheets/window_js/alert/overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..2f3344e5cbba86538a03e06e171d119ac2da0139 GIT binary patch literal 2829 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 literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/alert/progress.gif b/plugins/redmine_code_review/assets/stylesheets/window_js/alert/progress.gif new file mode 100644 index 0000000000000000000000000000000000000000..529e72f45a2395e2eddb0487edbe79b306c92c3a GIT binary patch literal 1542 zcma)+ZA?>F7{_}rw{MqAdn^?TGVN^(w7}TqO{+3&F9nJ+R*E<<0&OXdX^es|GZF{4 zEl^%(9lp{U!Tk6YH4YyudgpHEiEi8)M~XPNk&IU z<2VigpuIfr-T(i>=Y2DhH)SO$HOVnigb(Dsi9bi^OfNlh;gy9lX!QL;2?>26z1K#P zV&uBmc3ztB!JQGe3%xin-RaY+qK3d98fkvdQN;t{oK0gq+21S5uC5%{i0Rkv4w<&D zJMjZD7~PJ7Ws}GES&9V@nF^RLDT|DSF@(;5sRA*CvH-&fm&e1b*w01Co_GW)!WWmq zeOZb@C}{*uR%lI>L5yacs>LSc&yub>OO|tgQr{&M!Pxk;eM1c&ROwWXCzb>?PAMLC z1GC6JXDUc(-m@u3aTC6;$74tGFI<-5LO#4LoR#vKh>|j7m0)u&+#r4f3us)g0tH^I zt;E*mux|86(!S&sVn}Jx(E{rR@KAZe3V3OQgh*I9umtZKPs|XRegw&V z*XWil!;da!)+BwsQ-QH9Pg^G5XT1P$nS_y40Tsy z{=wwwR=Ec@H0)=_Eu4eUa{DduV&e41fhwT}-kHt$uA zb}g8vv`P8=DavZKF<526AnGep^efD4R7poT41ZImDN+S_C?KFCwamgWUZJk`!~ zT#=Z`F1h2n%sgVJokp-VKc_!QT=Ag>&W4N}ZVs1IETePLkb?bUKWr#oNjnpyd9k)?!4M?%;92?~PwtjZ=-!&#>4sNe7_}r$O zson-Y-4)nvlJpZQC&U&6uKs?SCVNj09n8wAFu|P76)3h_vPe_N8`*{Q?^VX)r(?M%vvE=b?K;_!f8 z85)&S&2)|t3TrI%&F?Itlg^Dg1pG215&^1RM0`E5g%-D^w{1v;Ej@GFf#$mhQ?td50gdL-SzT{X6={H?<9MQh zTO&IDmziQe=nz0T8Ju01Xm47?mb69O*PU)%;OZFgx!P8>>(A#M=fWq3vBN`3q^FtF zv|HfcX=>^}AYVq9-PJrn@MXK6`Md#U4{x3jGJ<^XDaW#fs!Er#ODIP}1U_W7@EKVI zd^M_Eg2^QQ6DZ*yoe{9k_B%akiPtknp;_KPPaEMp_N?@h(ODHk$K`ainr|-+$frDT zQKU?@eheS0B!m-{o=?N*C;UFVSv* literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/alert/right.gif b/plugins/redmine_code_review/assets/stylesheets/window_js/alert/right.gif new file mode 100644 index 0000000000000000000000000000000000000000..85ba9e2a56a93527dde4f14eccfe386e6af2e2b7 GIT binary patch literal 84 zcmZ?wbhEHbWMznAXkcKlWMKIJ|G(l-76uT|0TCb>1}1Hvg0>lZW=WNNJegg5cgy+y j!UfM-RV};Hs#d+=+P}$ryIJ?~QoH-R?mxcD#b6BpMUEfb literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/alert/top.gif b/plugins/redmine_code_review/assets/stylesheets/window_js/alert/top.gif new file mode 100644 index 0000000000000000000000000000000000000000..8f6193664b77e0b385df5400b8fe25ef43a24201 GIT binary patch literal 70 zcmZ?wbhEHbjACGAXkcKlWMKIJ|G(l-76uT|0TCb>1}52-{*|ZS@+Z#Na;tmuy*=MK U+8#+%J?mWd>eRM%p$rVx0MDfv9smFU literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/alert/top_left.gif b/plugins/redmine_code_review/assets/stylesheets/window_js/alert/top_left.gif new file mode 100644 index 0000000000000000000000000000000000000000..fabb33a189bcf331976100f954a125f1a3a10e8c GIT binary patch literal 49 xcmZ?wbhEHbWMyDwXkcLY|Np-w1B2pE76uT|0TCb>1}2Uke$I_2xE&c8tN{qv32XoW literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/alert/top_right.gif b/plugins/redmine_code_review/assets/stylesheets/window_js/alert/top_right.gif new file mode 100644 index 0000000000000000000000000000000000000000..9fec6fa2b34647940d7aa1143ea58f448667f128 GIT binary patch literal 49 xcmZ?wbhEHbWMyDwXkcLY|Np-w1B2pE76uT|0TCb>1}2UkUQY4ZcVjddtN{pp3AX?M literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/alert_lite.css b/plugins/redmine_code_review/assets/stylesheets/window_js/alert_lite.css new file mode 100644 index 000000000..c2ad538ca --- /dev/null +++ b/plugins/redmine_code_review/assets/stylesheets/window_js/alert_lite.css @@ -0,0 +1,88 @@ +.overlay_alert_lite { + background-color: #85BBEF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.alert_lite_sizer { + width:0px; + height:0px; + display:none; +} + +.alert_lite_close { + width:0px; + height:0px; + display:none; +} + +.alert_lite_minimize { + width:0px; + height:0px; + display:none; +} + +.alert_lite_maximize { + width:0px; + height:0px; + display:none; +} + +.alert_lite_title { + width:0px; + height:0px; + display:none; +} + +.alert_lite_content { + overflow:auto; + color: #000; + font-family: Tahoma, Arial, sans-serif; + font-size: 10px; + background: #FFF; +} + + +/* For alert/confirm dialog */ +.alert_lite_window { + border:1px solid #F00; + background: #FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.alert_lite_message { + font-size:16px; + text-align:center; + width:100%; + color:#F00; + padding-bottom:10px; +} + +.alert_lite_buttons { + text-align:center; + width:100%; +} + +.alert_lite_buttons input { + width:20%; + margin:10px; +} + +.alert_lite_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background: #FFF url('alert/progress.gif') no-repeat center center +} + +table.alert_lite_header { + border:1px solid #F00; + background:#FFF +} + diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/alphacube.css b/plugins/redmine_code_review/assets/stylesheets/window_js/alphacube.css new file mode 100644 index 000000000..7d2790e75 --- /dev/null +++ b/plugins/redmine_code_review/assets/stylesheets/window_js/alphacube.css @@ -0,0 +1,150 @@ +.overlay_alphacube { + background-color: #85BBEF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.alphacube_nw { + background: transparent url(alphacube/left-top.gif) no-repeat 0 0; + width:10px; + height:25px; +} + +.alphacube_n { + background: transparent url(alphacube/top-middle.gif) repeat-x 0 0; + height:25px; +} + +.alphacube_ne { + background: transparent url(alphacube/right-top.gif) no-repeat 0 0; + width:10px; + height:25px; +} + +.alphacube_w { + background: transparent url(alphacube/frame-left.gif) repeat-y top left; + width:7px; +} + +.alphacube_e { + background: transparent url(alphacube/frame-right.gif) repeat-y top right; + width:7px; +} + +.alphacube_sw { + background: transparent url(alphacube/bottom-left-c.gif) no-repeat 0 0; + width:7px; + height:7px; +} + +.alphacube_s { + background: transparent url(alphacube/bottom-middle.gif) repeat-x 0 0; + height:7px; +} + +.alphacube_se, .alphacube_sizer { + background: transparent url(alphacube/bottom-right-c.gif) no-repeat 0 0; + width:7px; + height:7px; +} + +.alphacube_sizer { + cursor:se-resize; +} + +.alphacube_close { + width: 23px; + height: 23px; + background: transparent url(alphacube/button-close-focus.gif) no-repeat 0 0; + position:absolute; + top:0px; + right:11px; + cursor:pointer; + z-index:1000; +} + +.alphacube_minimize { + width: 23px; + height: 23px; + background: transparent url(alphacube/button-min-focus.gif) no-repeat 0 0; + position:absolute; + top:0px; + right:55px; + cursor:pointer; + z-index:1000; +} + +.alphacube_maximize { + width: 23px; + height: 23px; + background: transparent url(alphacube/button-max-focus.gif) no-repeat 0 0; + position:absolute; + top:0px; + right:33px; + cursor:pointer; + z-index:1000; +} + +.alphacube_title { + float:left; + height:14px; + font-size:14px; + text-align:center; + margin-top:2px; + width:100%; + color:#123456; +} + +.alphacube_content { + overflow:auto; + color: #000; + font-family: Tahoma, Arial, sans-serif; + font: 12px arial; + background:#FDFDFD; +} + +/* For alert/confirm dialog */ +.alphacube_window { + border:1px solid #F00; + background: #FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.alphacube_message { + font: 12px arial; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.alphacube_buttons { + text-align:center; + width:100%; +} + +.alphacube_buttons input { + width:20%; + margin:10px; +} + +.alphacube_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background: #FFF url('alert/progress.gif') no-repeat center center +} + +.alphacube_wired_frame { + background: #FFF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + + diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/alphacube/bottom-left-c.gif b/plugins/redmine_code_review/assets/stylesheets/window_js/alphacube/bottom-left-c.gif new file mode 100644 index 0000000000000000000000000000000000000000..531acdc513d068f75e8a1ccf78d2103b0a167cf1 GIT binary patch literal 60 zcmZ?wbhEHbWM^P!_{hkxbLY N>ke>9-mJx74FEO$5qkgt literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/alphacube/bottom-middle.gif b/plugins/redmine_code_review/assets/stylesheets/window_js/alphacube/bottom-middle.gif new file mode 100644 index 0000000000000000000000000000000000000000..d4ce3be02ce72c51d28af307b19cea24abdf4b52 GIT binary patch literal 50 zcmZ?wbhEHbWMp7x_{hkxbLYEH<;s<-KydBKtvfev-@SSF z?%n(M?>~6(;Much@87@w@ZrO+U%&qR`SbVh-~a#rpE+{|?6V<2DE?$&WMFV-Q2Zz4 zT$GwvlA5C6RH;yupOjh@;?JN1@&PEO7})UJ_O4~$y~}`uSy%ex zNdeA%F3y~Sr%tMIFe=O3yd}!Bk4N;@EoDYVb-Cxy#f8qf2usMzeUMjwqNSp$x>C&b z&+orKR)tI`p13H%k@t^L!-)g_%?F$GP8`f|+{nr;tmHH!qcJeqwab8oWyQxuOHNMK z@V_R|ncQ}IxzYeRXwHf_d?88c_joHc9K?Af#D%$YNH?%a9v=FOi! zf5CzU3l}b2ym;}FB}h$T;XU?2Cdlrb!o;!c`+_`fXE?l^H@#3XRmo8tveC5iOt3Yt=%C&3Pu3x`? zget0>gk(g)x{fSGQ&iK6&Q*lGfkp+ zc>{Eo>#!89UbDK8RZo9Y5HGW*lJZWr;U)R&Hq|i2M%vsl+evp ztfR4~fRVY)QZnH{hhQ@M9yueUa~BMjFLv)&$h&c%(V1h9l4a1dhQdek2by#;KD@Yi zm|dvCyN-cTNTp-KeCH-1#h@iC1eM*F9a!DO;yG!#*A$(|LrbzItNCrR>pa9dPh2Z> zRfJ?UYxhl^jLkU@4{h_7tZ>cP*TSjnc4mfQ%BM-1!N+=L8aG^A(zx91>@3q9fz64R tm-Ws*o_Eiq&DpYnp<;${_Pv~$eb3J?aPF4#-L>WA0000nIXp%^K}JnbSy@?GUt(ljU}SZpP!d%| ztE;Q5tgNlAt*)-FudlDMv9YzawYa#rxw*N#yu7`=y}rJ_!NI}8!otPH#m2_Q%gf8m z%*@Ts&Cbrw(9zG-)zjA3)z;S5*VotD+}PXQ+27ya;Nall;o;}!=kM?D@bK{c{r&&{ z|IEzHA^8LW002J#A^s9Wa%Ew3Wn>^ic_4CcVr6nvPXH_c0000N02crN2H!x0EkrCD zk476ph-@O2iJEgtR32iRtai)Y$_fV;CW9H5&*(I)Kv+@U@VGqA8W1> z_us#N|Ns9#bLI>K7%2W^VPs(7WzYffKxQzoL~QWn%$hqb)9v6r->;4LR&=TbFI#=H z@4a~b=b5*X1vuX8@vOa@;1I#d+2ZsvLPNr9|B}R4oC0$%H@hpC%J6ZVXW({IVPJH+ XHYb3A#jhaxp z_us#N|Ns9#bLI>K7%2W^VPs(7WzYffKxQzogbH}v%u1c%JKH#SE_;Kb*)+9=S*x$D z((XB>D$C>~aHV;|{T9dk=b8dd_LCPT$Y}9;FL}w(%U8y5q)|#VLx@9ni@^mAp#(ie UhJYQHy&JtYT6D8Fa4=W{05-QwkpKVy literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/alphacube/top-middle.gif b/plugins/redmine_code_review/assets/stylesheets/window_js/alphacube/top-middle.gif new file mode 100644 index 0000000000000000000000000000000000000000..9cab17d53de3e1df534c9d2e93b8c7eee08b8dee GIT binary patch literal 97 zcmZ?wbhEHbWMq(J_{_twbLY-4U%q_(`t{qlZ{NRv|MBC;&!0bk{rdI$_wPS{{`~#> y_us#N|Ns9#bLI>K7%2W^VPs(7WzYffKxQzo@Cj`2)aFi_kaWhebCZrBgEastW-&eh literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/behavior.htc b/plugins/redmine_code_review/assets/stylesheets/window_js/behavior.htc new file mode 100644 index 000000000..437c5ec92 --- /dev/null +++ b/plugins/redmine_code_review/assets/stylesheets/window_js/behavior.htc @@ -0,0 +1,51 @@ + + + + \ No newline at end of file diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/darkX.css b/plugins/redmine_code_review/assets/stylesheets/window_js/darkX.css new file mode 100644 index 000000000..2f83cfd46 --- /dev/null +++ b/plugins/redmine_code_review/assets/stylesheets/window_js/darkX.css @@ -0,0 +1,121 @@ +.overlay_darkX { + background-color: #85BBEF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.darkX_nw { + background: transparent url(darkX/titlebar-left-focused.png) no-repeat 0 0; + width:6px; + height:21px; +} +.darkX_n { + background: transparent url(darkX/titlebar-mid-focused.png) repeat-x 0 0; + height:21px; +} +.darkX_ne { + background: transparent url(darkX/titlebar-right-focused.png) no-repeat 0 0; + width:6px; + height:21px; +} +.darkX_w { + background: transparent url(darkX/frame-left-focused.png) repeat-y top left; + width:3px; +} + +.darkX_e { + background: transparent url(darkX/frame-right-focused.png) repeat-y top right; + width:3px; +} + +.darkX_sw { + background: transparent url(darkX/frame-bottom-left-focused.png) no-repeat 0 0; + width:5px; + height:3px; +} +.darkX_s { + background: transparent url(darkX/frame-bottom-mid-focused.png) repeat-x 0 0; + height:3px; +} +.darkX_se, .darkX_sizer { + background: transparent url(darkX/frame-bottom-right-focused.png) no-repeat 0 0; + width:5px; + height:3px; +} + +.darkX_sizer { + cursor:se-resize; +} + +.darkX_close { + width: 21px; + height: 21px; + background: transparent url(darkX/button-close-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:5px; + cursor:pointer; + z-index:1000; +} + +.darkX_minimize { + width: 21px; + height: 21px; + background: transparent url(darkX/button-minimize-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:26px; + cursor:pointer; + z-index:1000; +} + +.darkX_maximize { + width: 21px; + height: 21px; + background: transparent url(darkX/button-maximize-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:47px; + cursor:pointer; + z-index:1000; +} + + +.darkX_title { + float:left; + height:14px; + font-size:12px; + text-align:center; + margin-top:2px; + width:100%; + color:#FFF; +} + +.darkX_content { + overflow:auto; + color: #E6DF2A; + font-family: Tahoma, Arial, sans-serif; + font-size: 14px; + background:#5E5148; +} + + +/* FOR IE */ +* html .darkX_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-minimize-focused.png", sizingMethod="crop"); +} + +* html .darkX_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-maximize-focused.png", sizingMethod="scale"); +} + +* html .darkX_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-close-focused.png", sizingMethod="crop"); +} diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/darkX/button-close-focused.png b/plugins/redmine_code_review/assets/stylesheets/window_js/darkX/button-close-focused.png new file mode 100644 index 0000000000000000000000000000000000000000..da5a8ac4390548726bd9770a0d165c4d85a5bcae GIT binary patch literal 904 zcmV;319$w1P)s=!O6Q02*{f zSad^gZEa<4bO1wgWnpw>WFSI$AaZYFWpY$c(XH(k0008-NklYox^N-5@K13kxNzxKx>36j9}6Gg3lyam zTl=snZ8eWcGMO|px!09~+V}uh;@MvAk8{uW-2?pB-xm4Vp)AX~@B0>j6d@!DfD0j3 z0L(GQ<~+}@>5gs+t1ePOY|-Us{@6SX`WFwOThg=lS1r zN@-eGlndLl*;B_3AL-e>b6AQSI)o5dEtc@)`3rC2?w$F`nVD;Lqj44Afu(hjdMu!v z9!Pea8%=hk`YE9!nSLZB3WIZ~j)U^+*Ai=b(Yo(-tu?)6A9%+(Z>|R=06>BMY{WR1 zOPV7V5w!l{0}3-UFck$(K99$@CQzE4LzFSHfy%n=IJK3!^Hcz(wwZ1OvAUVOwXeA* zZ8ZXzt~4$g6JQ7m zj$OT-Fti{Frr9cmzG=o<960U=2UX(ez% zKmde78nmbZ;(2Jaib!ffwT{>Z6j#yKX>4%7)e_NqAf$k4D&8-z0)(J{vjr=iLX&gM ze=LA$A;?+)VRKV$<6yS&&GP&J9U7cQC_LGKB`jR zwXjAcA?x}xV`$rayXOl47|7+GFBA$l^VM=@Z+w%Xb(%;IZG#+CAOjdS3@pE!2Cci8 zw5y-|h%vq;mz%Ct$5<-y6mo8<*!t8NHv`#1lJ7gjvOlB3oMaoXI`K$um4rT@)oWFQ+ ziV(toyHFlId>DRu|6azKp6Z2Li+HYUEAgbGSbg&&hYrt~i3!F)Bq*&YJ}6Xt5c=K+L6JiL zfWCLJt)HLl(p-?!P&*w{;7BdA9 z+Lm3f*Xy&jTJ478INt+!{=vQ&~uM%!Y`@8nfMHM#9 zeZn=CfSxj7=mwIhD3Ylt45I^vo`%Mf2t7&YRDV2R4%h$Dm%p6_08ETb{;YESo92qV z>ew6!rXv&2Vr<|5M)wUN6YE4Gnu6;D@YiBiQqFxhJ~%P^#^L|s>XlO6pZ=U??T_{j zX0>8IPdXAQ00isS7OIVBVP$U3YBxHja%}kWrx!kZNCB227G<&fDsy)0CcgTjX0aI$FMX{?a2t2!E@;FN8q3d@pk6{!haj!FRAnZ6Hzu0V-k`c$#w|WVz>r$?g&jmWz4dkpPni|Gf^zgS++GHB}vfj zZfUj48hwBPR^g4J7%Jf-Sq=ZoVnoqo1fKDBgGsZ3?aJK)-qQ7=Vl#8%V&p4;AN z6nmZUdQ-+Lz~FB{JJhwzL225xpIY>@lP4cA#4%-!WN)1TApd&k>IskBZ;IVZxoXgD zKe@fz|F#X?TcH3{5WerG?wctNR5SdJ;hI1w8bT-_K*|J?2s@I@Ovc)kb?u?*F2!Y7 zJrX_Ps1vi}YSFI_xO{noW-9_!K`07H2}op=Fg~I)DeX$cMQrcM*H;xj!pBtQk-2qXdFZ(Ky~4X^G#X!d}UAH-w9$OJBRQ_5pDsI8v$>W$jPx2 zM69;bTPrlf{-Ob8=GUux{N1L|wr{ohu? z^{r0flVSGJk6wQD^_#cdC@CfHzH@G|cjJfoY$5f6>BI|$6+2R*4F>wK7w8wdH+WC6 zjxWFV#+xg5dQf=#+*`+6H-9Y0(Rx}aifWjC Ric0_h002ovPDHLkV1iE-g~R{= literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/darkX/frame-bottom-left-focused.png b/plugins/redmine_code_review/assets/stylesheets/window_js/darkX/frame-bottom-left-focused.png new file mode 100644 index 0000000000000000000000000000000000000000..7d89f7b0ae9b9ef4f6cfdb436d8e1937f762ba73 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1n!3HFw&5r&6Qfx`y?k)`fL2$v|<&%LToCO|{ z#S9E`2SJ$eaArs_P>{XE)7O>#3cCoiig3Kaw*;V&w5N+>NX4z>DHA9DJm0_;F+)O9 g(tss0BEo=$G4KRqE-y>!0-!PmPgg&ebxsLQ08}z0&j0`b literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/darkX/frame-bottom-mid-focused.png b/plugins/redmine_code_review/assets/stylesheets/window_js/darkX/frame-bottom-mid-focused.png new file mode 100644 index 0000000000000000000000000000000000000000..e50eacccc7ba5b0ac9f72554365831aa5ca291f6 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1n!3HFw&5r&6Qfx`y?k)`fL2$v|<&%LToCO|{ z#S9E`2SJ$eaArs_P>{XE)7O>#3cCois>;7zopr0A~axAOHXW literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/darkX/frame-bottom-right-focused.png b/plugins/redmine_code_review/assets/stylesheets/window_js/darkX/frame-bottom-right-focused.png new file mode 100644 index 0000000000000000000000000000000000000000..8915659116ed3a348f8b720f728eed00e8137848 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1n!3HFw&5r&6Qfx`y?k)`fL2$v|<&%LToCO|{ z#S9E`2SJ$eaArs_P>{XE)7O>#3cCoiipule;C!Hvw5N+>NX4z>DHA9DJm0_;F+)O9 g(tss0BEo=$G4KRqE-y>!0-!PmPgg&ebxsLQ0BQ{-F#rGn literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/darkX/frame-left-focused.png b/plugins/redmine_code_review/assets/stylesheets/window_js/darkX/frame-left-focused.png new file mode 100644 index 0000000000000000000000000000000000000000..ff9f336f25e5e56a238d768ec0f0bdb2030df21c GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y_!3HE73d0rwDYhhUcNd2LAh=-f^2tCE&H|6f zVg?4egCNX!I5Q*|D9B#o>FdgVgFdgVgx`7I;J! zGcfRXFfa(rVbqtIHV-JsUgGKN%6^4|QJjM@o8fvGP{`5K#WAGf*4EQI1rIoII0qWb zoV~0Pz-Cd9;8+$yY2r6mNR>%>8)7R*DBcf<(xw2iO{6DJt3l<=87{VFR*XD XC3W`SuJ4sV!x%hW{an^LB{Ts5f@wIO literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/darkX/titlebar-mid-focused.png b/plugins/redmine_code_review/assets/stylesheets/window_js/darkX/titlebar-mid-focused.png new file mode 100644 index 0000000000000000000000000000000000000000..f7be50b145588db0ae12fc893c06d307fb8a855c GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{P!2~2Z41|M$6kC$Fy9>jA5L~c#`DCC7XMsm# zF#`j)FbFd;%$g$s6l5>)^mS#w!oeucrh7bknl(_!#?!?yq~ccUv7NjJ95`4UBIYq= z%+{K2WWmno*C*3sa_R1--3pwOX3Tsa7P@Rz#kt1a|7RY&D=4_3`s5k$vX!EFVdQ&MBb@04~8ar2qf` literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/darkX/titlebar-right-focused.png b/plugins/redmine_code_review/assets/stylesheets/window_js/darkX/titlebar-right-focused.png new file mode 100644 index 0000000000000000000000000000000000000000..ae23785d4b7c75eebe47a50ef28a2a4530eec954 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol^!2~2x`7I;J! zGcfRXFfa(rVbqtIHV-JsUgGKN%6^4|QJj;pNcx#LP{`5K#WAGf*4EQI1rIoII0qWb zoV~0Pz-Cd9;8+$yY2r6mNR>%>8)7R*DBcf<(xw2iO{6DJt3l<=87{VFR*XD XC3W`SuJ4sV!x%hW{an^LB{Ts5el|Ff literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/debug.css b/plugins/redmine_code_review/assets/stylesheets/window_js/debug.css new file mode 100644 index 000000000..69e3b7fc2 --- /dev/null +++ b/plugins/redmine_code_review/assets/stylesheets/window_js/debug.css @@ -0,0 +1,25 @@ +div.inspector div.inspectable { + padding: 0.25em 0 0.25em 1em; + background-color: Gray; + color: white; + border: outset 2px white; + cursor: pointer; +} + +div.inspector div.child { + margin: 0 0 0 1em; +} + +#debug_window_content { /* DIV container for debug sizing*/ + width:250px; + height:100px; + background-color:#000; +} + +#debug { /* DIV container for debug contents*/ + padding:3px; + color:#0f0; + font-family:monaco, Tahoma, Verdana, Arial, Helvetica, sans-serif; + font-size:10px; +} + diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/default.css b/plugins/redmine_code_review/assets/stylesheets/window_js/default.css new file mode 100644 index 000000000..6ab13789d --- /dev/null +++ b/plugins/redmine_code_review/assets/stylesheets/window_js/default.css @@ -0,0 +1,155 @@ +.overlay_dialog { + background-color: #666666; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.overlay___invisible__ { + background-color: #666666; + filter:alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; +} + +.dialog_nw { + width: 9px; + height: 23px; + background: transparent url(default/top_left.gif) no-repeat 0 0; +} + +.dialog_n { + background: transparent url(default/top_mid.gif) repeat-x 0 0; + height: 23px; +} + +.dialog_ne { + width: 9px; + height: 23px; + background: transparent url(default/top_right.gif) no-repeat 0 0; +} + +.dialog_e { + width: 2px; + background: transparent url(default/center_right.gif) repeat-y 0 0; +} + +.dialog_w { + width: 2px; + background: transparent url(default/center_left.gif) repeat-y 0 0; +} + +.dialog_sw { + width: 9px; + height: 19px; + background: transparent url(default/bottom_left.gif) no-repeat 0 0; +} + +.dialog_s { + background: transparent url(default/bottom_mid.gif) repeat-x 0 0; + height: 19px; +} + +.dialog_se { + width: 9px; + height: 19px; + background: transparent url(default/bottom_right.gif) no-repeat 0 0; +} + +.dialog_sizer { + width: 9px; + height: 19px; + background: transparent url(default/sizer.gif) no-repeat 0 0; + cursor:se-resize; +} + +.dialog_close { + width: 14px; + height: 14px; + background: transparent url(default/close.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:8px; + cursor:pointer; + z-index:2000; +} + +.dialog_minimize { + width: 14px; + height: 15px; + background: transparent url(default/minimize.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:28px; + cursor:pointer; + z-index:2000; +} + +.dialog_maximize { + width: 14px; + height: 15px; + background: transparent url(default/maximize.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:49px; + cursor:pointer; + z-index:2000; +} + +.dialog_title { + float:left; + height:14px; + font-family: Tahoma, Arial, sans-serif; + font-size:12px; + text-align:center; + width:100%; + color:#000; +} + +.dialog_content { + overflow:auto; + color: #DDD; + font-family: Tahoma, Arial, sans-serif; + font-size: 10px; + background-color:#123; +} + +.top_draggable, .bottom_draggable { + cursor:move; +} + +.status_bar { + font-size:12px; +} +.status_bar input{ + font-size:12px; +} + +.wired_frame { + display: block; + position: absolute; + border: 1px #000 dashed; +} + +/* DO NOT CHANGE THESE VALUES*/ +.dialog { + display: block; + position: absolute; +} + +.dialog table.table_window { + border-collapse: collapse; + border-spacing: 0; + width: 100%; + margin: 0px; + padding:0px; +} + +.dialog table.table_window td , .dialog table.table_window th { + padding: 0; +} + +.dialog .title_window { + -moz-user-select:none; +} + diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/default/bottom_left.gif b/plugins/redmine_code_review/assets/stylesheets/window_js/default/bottom_left.gif new file mode 100644 index 0000000000000000000000000000000000000000..4c73d3563531b3470951a5d45e5302f79cc4af45 GIT binary patch literal 187 zcmZ?wbhEHb+5T6ZLO)PDJdxdYGEK6DE?$&WMB|v&;jWH*~!3av7o5u$qELiRb0+5T6ZLO)PDJdxdYGEK6DE?$&WMB|v&;jWH*~!3a@j$U}kq<|rY}gk!$<;@Kv0dSSf-b|l8`_MAYAvLAjwrA&SOWmY CGeFh= literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/default/bottom_right_resize.gif b/plugins/redmine_code_review/assets/stylesheets/window_js/default/bottom_right_resize.gif new file mode 100644 index 0000000000000000000000000000000000000000..649b0d870dd137007a578158ae2e1f3a2e23d14f GIT binary patch literal 201 zcmZ?wbhEHb+5T6ZLO)PDJdxdYGEK6DE?$&WMB|v&;jWH*~!4__CT?3kq?oo$ZWsnY${?AqJ8BOhsT^{P3#XQgqAY0HAol;iyzBi QU_4Z3A;oh&TM`D~Ih?HfznTSD9HYH?>@1 zVzJOzt6WVfQQmT)iN!o)qaIz`H5L|gjO|uhm`^p*t<%!0*3zrgGH%zmnq;b;tEAVg zX*JhayI9R`sfGPgOS|b7dWBlvYh1(D281l~37+pAxhgPnWl+dG-;A|M;miE;7iJ_a z2`^rh-FLWk>i)j??f!L#ikh~T&pj|DcCk~;e5cq2E@hh%)?S$xyU;P9%_?D*Tg!%m znfp3do}QIF*F9;Dd)6Yq^m)Eb>vMXxRP=1FoVLGt#=+LCg}%9q1B+LL&)nBmu*!Gh zzVfAKdJjEbU%b}8XpLX>rii*NF%4VeT6QM&?8#kmZo;Y)(|257VjZcv=KPe1LhH18 zw~C&4mjJb*D4D!)nZ@m1i`u;2l`*`kWc^Xb@V;K+ZVKbW4Cep!693y2|Cb9sD_4Bo zy8`uQ|cya`k&q^A3rf_@^ zbXPdaYmn7osCY&K+i{$8;V}Z1tWlEXXnGMB}m3g3=M&Tq++qGBt8C z`M&wl^rUU7X3z_nSt6YexCC8FVlG}<(x>Fs$f2sVg2`c`R>&NQtSu+}F%c~esUz(Db8ROmg#A)rzc}Bzifg476xkoo8TAd literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/default/close.gif b/plugins/redmine_code_review/assets/stylesheets/window_js/default/close.gif new file mode 100644 index 0000000000000000000000000000000000000000..31ef5a3948ae1217506138bb95833431bd2147dd GIT binary patch literal 1012 zcmZ?wbhEHb<%u<72G ztx*CZkpd!<)pWc?#NCC(N>#N=)wFzMI=yea6?-t+%hQr?+>qrEY_tTfLuKcSPW+j{0wF7ysP4>d}%}Kew%! z?`*Ns!*+#-?P@=#)qc*a6C!@io&0OwlwS*{|5`Hh*NXXPyPAKkUifw8g8TEQ*9dVm zO9^zy2=%K<&(>F+rKdXEP<@$&{xVDbYr&qELcPz0dOymDeVQ46yD;N^dH(v8*!IwX z_cJDZm_4~CDXu*}dTK}el#cd1PNq^G)-nOEdLix(X_0nmktR9u!etge7rID(dVOpr4bI&mRzp+N1Q zKQDzBO;B!A{*rQmAxU7NgS5dDLB*95+gVuIG!!;C9Bg3XurdfTS=c116?JXJMW>@( ztX!RXE*p%Wdrj4eSQRso*@20jgYQL&;Nxa?e);5WR|-EYXk@TRIm7buBJ+uvN(oE` z77w0sOj5LO;rQvO(kZCN_G6Fd=O&kKNt37v1&znf$~jj&+RzyI*o{xxaLSaO%^sK9 v^>gRE2so&8bh2uqodL@g7q%{0?E(W!#g2ssoP!t5&|q{urPRjA$Y2csV9Xzf literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/default/inspect.gif b/plugins/redmine_code_review/assets/stylesheets/window_js/default/inspect.gif new file mode 100644 index 0000000000000000000000000000000000000000..ebeeb02f692029521bdd12892d1db67ac1bb1a13 GIT binary patch literal 556 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 UCOm@_XaE2J07*qoM6N<$fsr>%I9Q a-{aMs>C2oAJgk}KI7yWJytGz{!5RRI95na< literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/default/sizer.gif b/plugins/redmine_code_review/assets/stylesheets/window_js/default/sizer.gif new file mode 100644 index 0000000000000000000000000000000000000000..649b0d870dd137007a578158ae2e1f3a2e23d14f GIT binary patch literal 201 zcmZ?wbhEHb+5T6ZLO)PDJdxdYGEK6DE?$&WMB|v&;jWH*~!4__CT?3kq?oo$ZWsnY${?AqJ8BOhsT^{P3#XQgqAY0HAol;iyzBi QU_4Z3A;ohgHzI^%O#f#_9pFex{ z?8%cSj~_pN^ytyUhYue-cyRyz{d@QB-MxGF&Ye5AZ{NOo^XB#I*RNf>cJ=DjD_5>u zzI^%O#f#_9pFel*+?g|HPMeQ*DM~@ypeE7hD1G{(c-oAbN=FOYeuV24r&6<@f zS1w<^eCg7qix)5M>FN3Z|33riK=CIFBLjmTgAPb5$WIJx%?{H8EME4w9qv4#Y^l&P zO+b}FfG1{hz!5JEnV3c1-zNlUsL8i5CYqJ&vAXQET{K0!;*ZAR2!nt1%Dl}je7ws1 zon4*E0)72`%0iQ;OfD6fF;hfEbnd*ls$z>4FH)0`5MQ}UU25&RwHnf!HgD3D*}g+o YMoVt*zP;KChYlao(LH|RxFdr#03rXY^8f$< literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/default/top_mid.gif b/plugins/redmine_code_review/assets/stylesheets/window_js/default/top_mid.gif new file mode 100644 index 0000000000000000000000000000000000000000..6124e78bd3b4a051ed3e38ffbf3bb21bcb25a89f GIT binary patch literal 149 zcmZ?wbhEHbWMmL$IKsg2^XJd^@87?8@#5LDXHT9ydHneCqeqV(Ja};b{{6dm@7}(B z`{vD?*RNl{cJ12b%a<=+ymwEoH}*tz<~ojJw5;b|7XAp6o0ZXGBAiT=zvs# d>||gSdceYRC_$*TP@!{^LGNdWi7u@S)&S){L>2%5 literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/default/top_right.gif b/plugins/redmine_code_review/assets/stylesheets/window_js/default/top_right.gif new file mode 100644 index 0000000000000000000000000000000000000000..fbc94bf2b945280883bf2720b4b2140d3c7e0941 GIT binary patch literal 357 zcmZ?wbhEHb({Sey?XWX<;xc@UOa#P z{MoZ-Po6w^{P^*sM~@ypeE8tOgZuaI-@AA3?%lh0?%cV3`}WP7H?Lp6e(l<|t5>gH zxpL+5<;xc@UOa#P{JC@I&YU@O`t<2jr%oL`di3z&!v_u=*u8uA_U+p@Z{ECq{rWX) z)~sB)a{2P*OP4NPym)a>PtX7V{~1UGia%Kx85r~#bU^w*eqvy2au7P{Tq)VhdE|+) zmK0}m!vdvU5`t|^Axc_$Vq7_l##OcZJDr(Q?6ig0dfFYAH)}6xi#wl@;lbC)$KRwP z(B9FmBG}X0qar+U(nJ-}Y15~vh|QieTUC6)!Ubv)OP5JXs!Ok4vsy!D!^RDovRh^4 awrR=l-m_a<@xZ|YI(kQs9o2PYum%7Hf2-*L literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/iefix/blank.gif b/plugins/redmine_code_review/assets/stylesheets/window_js/iefix/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..75b945d2553848b8b6f41fe5e24599c0687b8472 GIT binary patch literal 49 zcmZ?wbhEHbWMp7unE0RJ|Ns9C3=9Vj8~~DvKUo+V7?>DzfNY>Fh|Ltj$Y2csQN9XW literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/iefix/iepngfix.css b/plugins/redmine_code_review/assets/stylesheets/window_js/iefix/iepngfix.css new file mode 100644 index 000000000..257a1b1e3 --- /dev/null +++ b/plugins/redmine_code_review/assets/stylesheets/window_js/iefix/iepngfix.css @@ -0,0 +1,3 @@ +/* PNG fix for all themes that uses PNG images on IE */ +td, div { behavior: url(../themes/iefix/iepngfix.htc) } + diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/iefix/iepngfix.htc b/plugins/redmine_code_review/assets/stylesheets/window_js/iefix/iepngfix.htc new file mode 100644 index 000000000..a6c683b9f --- /dev/null +++ b/plugins/redmine_code_review/assets/stylesheets/window_js/iefix/iepngfix.htc @@ -0,0 +1,54 @@ + + + + + \ No newline at end of file diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting.css b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting.css new file mode 100644 index 000000000..95ec287a9 --- /dev/null +++ b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting.css @@ -0,0 +1,960 @@ +.overlay___invisible__ { + background-color: #666; + filter:alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; +} + +.top_draggable, .bottom_draggable { + cursor:move; +} + +.status_bar { + font-size:12px; +} +.status_bar input{ + font-size:12px; +} + +.wired_frame { + display:block; + position:absolute; + border:1px #000 dashed; +} + + + +.overlay_bluelighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.bluelighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.bluelighting_nw { + background:transparent url(lighting/top-left-blue.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.bluelighting_n { + background:transparent url(lighting/top-middle-blue.png) repeat-x 0 0; + height:28px; +} + +.bluelighting_ne { + background:transparent url(lighting/top-right-blue.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.bluelighting_w { + background:transparent url(lighting/left-blue.png) repeat-y top left; + width:9px; +} + +.bluelighting_e { + background:transparent url(lighting/right-blue.png) repeat-y top right; + width:15px; +} + +.bluelighting_sw { + background:transparent url(lighting/bottom-left-blue.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.bluelighting_s { + background:transparent url(lighting/bottom-middle-blue.png) repeat-x 0 0; + height:15px; +} + +.bluelighting_se, .bluelighting_sizer { + background:transparent url(lighting/bottom-right-blue.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.bluelighting_sizer { + cursor:se-resize; +} + +.bluelighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#17385B; +} + +.bluelighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#BFDBFF; +} + +/* For alert/confirm dialog */ +.bluelighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.bluelighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.bluelighting_buttons { + text-align:center; + width:100%; +} + +.bluelighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.bluelighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .bluelighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_se, * html .bluelighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_content { + background:#B8D7FF; +} + + + +.overlay_greylighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greylighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greylighting_nw { + background:transparent url(lighting/top-left-grey.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.greylighting_n { + background:transparent url(lighting/top-middle-grey.png) repeat-x 0 0; + height:28px; +} + +.greylighting_ne { + background:transparent url(lighting/top-right-grey.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.greylighting_w { + background:transparent url(lighting/left-grey.png) repeat-y top left; + width:9px; +} + +.greylighting_e { + background:transparent url(lighting/right-grey.png) repeat-y top right; + width:15px; +} + +.greylighting_sw { + background:transparent url(lighting/bottom-left-grey.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.greylighting_s { + background:transparent url(lighting/bottom-middle-grey.png) repeat-x 0 0; + height:15px; +} + +.greylighting_se, .greylighting_sizer { + background:transparent url(lighting/bottom-right-grey.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.greylighting_sizer { + cursor:se-resize; +} + +.greylighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.greylighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.greylighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.greylighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#525252; +} + +.greylighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#CDCDCD; +} + +/* For alert/confirm dialog */ +.greylighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.greylighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.greylighting_buttons { + text-align:center; + width:100%; +} + +.greylighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.greylighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .greylighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-grey.png", sizingMethod="crop"); +} + +* html .greylighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-grey.png", sizingMethod="scale"); +} + +* html .greylighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-grey.png", sizingMethod="crop"); +} + +* html .greylighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-grey.png", sizingMethod="scale"); +} + +* html .greylighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-grey.png", sizingMethod="scale"); +} + +* html .greylighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-grey.png", sizingMethod="crop"); +} + +* html .greylighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-grey.png", sizingMethod="scale"); +} + +* html greylighting_se, * html .greylighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-grey.png", sizingMethod="crop"); +} + +* html .greylighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-grey.png", sizingMethod="crop"); +} + +* html .greylighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-grey.png", sizingMethod="crop"); +} + +* html .greylighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-grey.png", sizingMethod="crop"); +} + +* html .greylighting_content { + background:#C7C7C7; +} + + + +.overlay_greenlighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greenlighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greenlighting_nw { + background:transparent url(lighting/top-left-green.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.greenlighting_n { + background:transparent url(lighting/top-middle-green.png) repeat-x 0 0; + height:28px; +} + +.greenlighting_ne { + background:transparent url(lighting/top-right-green.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.greenlighting_w { + background:transparent url(lighting/left-green.png) repeat-y top left; + width:9px; +} + +.greenlighting_e { + background:transparent url(lighting/right-green.png) repeat-y top right; + width:15px; +} + +.greenlighting_sw { + background:transparent url(lighting/bottom-left-green.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.greenlighting_s { + background:transparent url(lighting/bottom-middle-green.png) repeat-x 0 0; + height:15px; +} + +.greenlighting_se, .greenlighting_sizer { + background:transparent url(lighting/bottom-right-green.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.greenlighting_sizer { + cursor:se-resize; +} + +.greenlighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#2A6002; +} + +.greenlighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#ACFCAF; +} + +/* For alert/confirm dialog */ +.greenlighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.greenlighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.greenlighting_buttons { + text-align:center; + width:100%; +} + +.greenlighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.greenlighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .greenlighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-green.png", sizingMethod="crop"); +} + +* html .greenlighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-green.png", sizingMethod="scale"); +} + +* html .greenlighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-green.png", sizingMethod="crop"); +} + +* html .greenlighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-green.png", sizingMethod="scale"); +} + +* html .greenlighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-green.png", sizingMethod="scale"); +} + +* html .greenlighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-green.png", sizingMethod="crop"); +} + +* html .greenlighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-green.png", sizingMethod="scale"); +} + +* html greenlighting_se, * html .greenlighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-green.png", sizingMethod="crop"); +} + +* html .greenlighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-green.png", sizingMethod="crop"); +} + +* html .greenlighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-green.png", sizingMethod="crop"); +} + +* html .greenlighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-green.png", sizingMethod="crop"); +} + +* html .greenlighting_content { + background:#A4FCA7; +} + + + +.overlay_darkbluelighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.darkbluelighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.darkbluelighting_nw { + background:transparent url(lighting/top-left-darkblue.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.darkbluelighting_n { + background:transparent url(lighting/top-middle-darkblue.png) repeat-x 0 0; + height:28px; +} + +.darkbluelighting_ne { + background:transparent url(lighting/top-right-darkblue.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.darkbluelighting_w { + background:transparent url(lighting/left-darkblue.png) repeat-y top left; + width:9px; +} + +.darkbluelighting_e { + background:transparent url(lighting/right-darkblue.png) repeat-y top right; + width:15px; +} + +.darkbluelighting_sw { + background:transparent url(lighting/bottom-left-darkblue.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.darkbluelighting_s { + background:transparent url(lighting/bottom-middle-darkblue.png) repeat-x 0 0; + height:15px; +} + +.darkbluelighting_se, .darkbluelighting_sizer { + background:transparent url(lighting/bottom-right-darkblue.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.darkbluelighting_sizer { + cursor:se-resize; +} + +.darkbluelighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#E4EFFD; +} + +.darkbluelighting_content { + overflow:auto; + color:#FFF; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#0413C0; +} + +/* For alert/confirm dialog */ +.darkbluelighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.darkbluelighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.darkbluelighting_buttons { + text-align:center; + width:100%; +} + +.darkbluelighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.darkbluelighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .darkbluelighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-darkblue.png", sizingMethod="scale"); +} + +* html darkbluelighting_se, * html .darkbluelighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_content { + background:#020EBA; +} + diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/background_buttons.gif b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/background_buttons.gif new file mode 100644 index 0000000000000000000000000000000000000000..2fa58b29f8a9e2b522b96140fea543f0daf283ed GIT binary patch literal 70 zcmZ?wbhEHbWMU9xSj52a^5x4P-@pI=|Np~>58vOvXMh34pDZjQ4F4H)Kms7O49wgb ROm}PyPC2Yzs>R4)4FJn97gYcN literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-left-blue.png b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-left-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..4592c19be174d1e759ab4438f25959d365cfe59e GIT binary patch literal 335 zcmV-V0kHmwP)UxLm4V^OlP3)3(%*3^ z`YZbVieqZa8iwc3pEHls)v3&=e{{1d9^1rW0XP0TNu$T0EeZ-_}OP&a|NAg{fK`50s(D7t`{ zpJ~O)mH(ku!c2P!#1Db^E)d@V;@gb>|NjRY84(^1idklmbwCV?bbcu2h6g5^iJyS@ h6%aoG;`;yr1^}LmRGd$i!^r>u002ovPDHLkV1l(RhNS=i literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-left-darkblue.png b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-left-darkblue.png new file mode 100644 index 0000000000000000000000000000000000000000..ce238f125861ada064ea9e1309321b468dbab1eb GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!3HGFPCVrWQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%J@9mK45_%4#KX`1I58n%f<6<*tw z&LeMElQ82_k*xE@c!htgN8)v-#2@#M{yCwsx0m;*i(5j%CWg#_hAzg9N&?!<%w<`N z)@v}!%gZyHo0~Ip->~K3v2XmLEU=#;scb>#&(G$6=bt$6Ln=pz`-<=W#vj}Q``dm> zyf~HZ{2NUxL^*_VYr%xGd-&x^Q z^jG}DBgfpSD;ZwCe92(*))GU}Um*SkvQ6&m!}#3E3mG^$IZ;ex*3s5xgeqnMVpg6X zACFJnd(qoiUX(%UmjZ+Oe^mxXV2Fbhumdq4DCB`y9*7lQ3dl|T`I`}J5)0H#zk&D* z5Wj}`80f}qs3v}<6)RW%hq~)05Pt;Xmq7dwi0=aN9U#8V`2YWZu#pkr;UKe_p;m(; toga$1;em-};wK<}1;kH)_&z{@0RSPNP1&$|ZrT6<002ovPDHLkV1mG{keUDh literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-left-grey.png b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-left-grey.png new file mode 100644 index 0000000000000000000000000000000000000000..2ace75e1b7863ffc85b4c9b6376f4fe4919c13ae GIT binary patch literal 346 zcmV-g0j2(lP)`6pHRCwBS zkUuf^d%#?%@I4vfvt?hdaOlWWm%=Xx)54x! s5IotD=xLc)3v>L2=xBL`xIX~~0C|~JfAgjo4gdfE07*qoM6N<$f-IMgN&o-= literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-middle-blue.png b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-middle-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..439bcaa1d1c62d04e3775b90bee5553ca185ef73 GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrK!3HE%<(K{hQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%>3O<1hE&{2x>f)Cf4v%;fD815JIok_cMcq>pRgQu&X%Q~loCIIrD BGD83W literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-middle-darkblue.png b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-middle-darkblue.png new file mode 100644 index 0000000000000000000000000000000000000000..3fae972a1b2b2074a65263ec6635395fa23f0e34 GIT binary patch literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrK!3HE%<(K{hQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%>3F(0hE&{2N)ojEF~5_MqeF4o zwtEQ)6U@*3JD;-fPnDR*8?%lbEK2VfSR@#P`?z@aE!ckysE@(Z)z4*}Q$iB}GSn}q literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-middle-green.png b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-middle-green.png new file mode 100644 index 0000000000000000000000000000000000000000..89a732f665e23ea6b885d4c10180faaea8464001 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrK!3HE%<(K{hQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%>3X_2hE&{2iu;{@xL%D-L7^$3 z;_Iuc_0N>^C8TDoy_&MbA!)ng5mkXgc7+2BD{u0&x~EjC0yQ#ty85}Sb4q9e0Bi~` A*Z=?k literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-middle-grey.png b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-middle-grey.png new file mode 100644 index 0000000000000000000000000000000000000000..52bfee0de5159d611a497c2d3e668f4e23e9f060 GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrK!3HE%<(K{hQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%>3O<1hE&{2vZ?;|re2LrL7^$( z&!3;4>)F)Rm;d+q|NsAdR-xUzN_veQ)(nhn3^yzJ?Jgu``6 BF>C+; literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-right-blue.png b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-right-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..dffb75f08484bd13fd9ef9e85c1ce8c32e03d76c GIT binary patch literal 397 zcmV;80doF{P)vLR<_CwlOUXGJmdA0EI6C@f{{&G+utrh*h467>yt{(VEdU zg4jf9#-@=dXXDZcV!!)_M>9T+AoiI{{k7pLP#She#4rUg5q}}P{T(c{shEdK?X2>`}PfMB6n$a|Z z*u-hZqLDaf8IcAa5EQ=)ff_yn@h2eu3NnCk=FFK`6Uo=FUl~4q`ou7Q^J|dC zWk8{4KztvF??UNUEN!zc;Z7t#KLVW!vhg(#KL+9_K>Pygf}bovQ|I8&`VZ>Ak5COy zpay^p`U1qiSwLwNhvvUf%^*L%gc|S~W-CaZ1)9il+58I{I3J<-3rypRl`H?_v-uy? mc8~$zp_+cfG=dZW1Q-ApUb$f6)8A770000EFke+E3@;O)x{1#;00B7a2~-1D0mw?#D2s42DfH>8bR!L*WWR)vw|b$FA)C&VJ2cUe!cgVA$RIZ2JsJ% zCIOZI0ODUDLs$rD1jTRCv{ z13(6S0pi~*pfrj@^IxcDkRM+{4R{T+6&zsDM2^emU(mq$2*qDu8dt1b`5&Ln|Dd*m k4EPS!^c$uTqyQkm09skYIbiOfZvX%Q07*qoM6N<$f?~UylmGw# literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-right-grey.png b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/bottom-right-grey.png new file mode 100644 index 0000000000000000000000000000000000000000..caa27fe13f97b693409964e9c58fd2df407d4a4e GIT binary patch literal 424 zcmV;Z0ayNsP)mX{mtEpyd}*r%98~pn;YmHIEd8=n|@foO0oG5F2@swc-*>BfPtw z8Qa1riekY4!!SUFJZD)3VHkqrIN-W2y~TL_f~XEuAc^vv=lM!(ng;gbAP?lIf*gY& zScxQZm#j#7t94y(B2suG>zA_Cf7>QE>8M&&?kXRK;r`5ev7VP@36^D1=?yUx%spZh zMeDq(?XK$}j$@kp0n0CliA2mjm#V5ZqHWvY`#uq$kZ?j!|7Q{~#&KL|W_@ve-$UEB zkR%DcJ>%6o;uTTz_tW$|4;p z^hYO;b*vF{Hs;W|@mE@>;`O_1Hq+F=4G~S++RD4E*35EDxcDx(RX*;CCmBrk6&MLT`Sk`26=*EsG3`{%>pBf@M;&)$?1Nw-;)78&qol`;+ E093VkE&u=k literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-close-green.png b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-close-green.png new file mode 100644 index 0000000000000000000000000000000000000000..63f755b6c781d4716cc4b041dcb87e05b7434bb4 GIT binary patch literal 305 zcmV-10nYx3P)a>00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy!%0LzRCwBA z{Qv(y0}SLHTKt~@$ORFvr)^~g3NeGQaH{)Pn3}haL0Od#ES4|n&xo!Lt7Z_G^kO4iB2NNS zBM7iC-~gO#j0}VT6E?xw?>7C%$H%F8@yG4|Iha`)K-h=DoB_rLiR0D0>f^5e?7-Lo zVVA!~43a|Pj362&29n1bV9(#ZM3De#gt2kS0R$KT|71|--UUjh00000NkvXXu0mjf D&cl4# literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-close-grey.png b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-close-grey.png new file mode 100644 index 0000000000000000000000000000000000000000..0c5375f4276b1a66f82e6c3da0114dfa1fb7b796 GIT binary patch literal 320 zcmV-G0l)ra>00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy(n&-?RCwBq zk39;5KoEsz@}o9E&tT&L>}&*2A%b`DEH+wdWoILn9>B&sSfrlh4Xj8sArBUI-@I@4 zEsF>l6-A*3c*8K<-`guz6h%+?%uM4rK1`nXFjSVM8q2caGRB3z?<<(+Iq$Ov7^ur#xDW7F-^hJ*2Xw_f3oSALgiUHBAX&U(p?z&Da%Ob2e zj>)!dZ2|x1pZmVw4q+IQ>$<$It4!0hWs)S}1B{TViOK*?2($eop6BW8CBOi;YhYpd SS{i!*0000}1{rUgjp4lwG_$yyn z=d>JAH;LJ;jO-Ue1d|mw9L$mrdzaPx@%QLqogbY2ZqKj&cOfYUoHhj)X0kPAl-r3! zPkZ<0i+oGxr5;`u>rVpd#%9qLH)d@3HB-=XUj3h6?N=*zm@u}1{rUgjp4rSG`EvLg zA<4QsJqBjn%zO*9j-Pel*zjO-iCIE|%d_`;4}6eco>sE_UL8wd&zq1rvpNg4;?k3g zwRRPEelq5{@k$`m*ev=+gv5qlGX*W@)&D*C&L(CSBNGpUzzq4ncMP9`+|1zV>gTe~ HDWM4fh%`(F literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-maximize-green.png b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-maximize-green.png new file mode 100644 index 0000000000000000000000000000000000000000..d4c1e578742f7a7e77aaf5edec85c0b96ad89f69 GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf!3HGX_LqeNDVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5XN<3X0Ln>}1{rUgjo|&iS=O@;4 z>#VlRDK@gG-8^b^=!OoDMMIaAJhS3~CV!*O<1+3!yITogQu&X%Q~loCIA6-OWptg literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-maximize-grey.png b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-maximize-grey.png new file mode 100644 index 0000000000000000000000000000000000000000..35da0e0fceb7a74585108aaddf11131f6cf36e38 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf!3HGX_LqeNDVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5Xay(reLn>}fnQ)MoL6L*y?veJT z0e$|bH_BK&IoaASp2YJ0+tH*0kqcHmU1GVMt#-|>X$~$Sd8=+dmSDbTyt(bLoalkq z;;-a3{&U>gs`-tx^x-ml_g8!Ct#8zc1ZVRemymOHxl;6V-p`C5f(Z}1{rUgjo_S|O;gali zGppJccM=0m-qf5{~urb7o3&J@#zWqXzb9y$e>!H5FwLwOao{FgQu&X J%Q~loCIAA`Hb?*f literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-minimize-darkblue.png b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-minimize-darkblue.png new file mode 100644 index 0000000000000000000000000000000000000000..e3d865464b4564f41319067a832af5d17a85eb6c GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf!3HGX_LqeNDVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5X>^xl@Ln>}1{rUgjo_S|OXCsq= zi|J;C;^xl@Ln>}1{rUgjo_S|OXCsq= zi|J;C;!k|KY7$kG-y}(H%nA#9tb8)f?a7L&uRl#4XCJL_1q!N(GO$Q6++z_;?rh(6 Q2xt<6r>mdKI;Vst09lha$^ZZW literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-minimize-grey.png b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/button-minimize-grey.png new file mode 100644 index 0000000000000000000000000000000000000000..310bcbbbcae2e2d1634cd8287f2b3873b6c19a2b GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf!3HGX_LqeNDVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5XygXeTLn>}1{rUgjo_S|OXCsq= zi|J;CVkv3q|H<4AZfr}=oXh?4_8X2#d+?qp6L|38LBf$$ eGeZ~z5*S|jN;R}jI6M_-Dubu1pUXO@geCwRWj*o$ literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/left-blue.png b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/left-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..30275bbb9484283b51218a3ffe7d4a93a8863b44 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRT!3HFG4z<(*DVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5XlssJ=Ln>}1@$hp$PE1IcP;qEc o@$V0lq}rOxB_%H~Iy5jcEX!bh($ literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/left-darkblue.png b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/left-darkblue.png new file mode 100644 index 0000000000000000000000000000000000000000..36c10e0d74d36c2604052b1591aa91edb5afdb99 GIT binary patch literal 143 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRT!3HFG4z<(*DVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5X6g^!WLn>}1@$hp$PE1IcU{M(U nrL1xzsBW5cG4g-dnhgomggtuk@6*G9c`njxgN@xNAwZbRG literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/left-green.png b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/left-green.png new file mode 100644 index 0000000000000000000000000000000000000000..c8aee739f03c7ef8788f288a91dbe6220d518589 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRT!3HFG4z<(*DVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5XlssJ=Ln>}1@$hp$PE1IcP;o@J ozWVu*sJ6Q?za=g(Iy5jcEHGt@GXLw54^++I>FVdQ&MBb@03`e>OaK4? literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/left-grey.png b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/left-grey.png new file mode 100644 index 0000000000000000000000000000000000000000..acc2af03a40651da9500b3a5611c2f51328772cd GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRT!3HFG4z<(*DVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5XlssJ=Ln>}1m6Vh`NlZwXkdTtH oXK(s>xwg;G&l@jbZeU<$n7WQFV^Y7X4p23Nr>mdKI;Vst09b!3R{#J2 literal 0 HcmV?d00001 diff --git a/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/pngbehavior.htc b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/pngbehavior.htc new file mode 100644 index 000000000..36ea182e7 --- /dev/null +++ b/plugins/redmine_code_review/assets/stylesheets/window_js/lighting/pngbehavior.htc @@ -0,0 +1,67 @@ + + + + + \ No newline at end of file diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css new file mode 100644 index 000000000..2f83cfd46 --- /dev/null +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css @@ -0,0 +1,121 @@ +.overlay_darkX { + background-color: #85BBEF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.darkX_nw { + background: transparent url(darkX/titlebar-left-focused.png) no-repeat 0 0; + width:6px; + height:21px; +} +.darkX_n { + background: transparent url(darkX/titlebar-mid-focused.png) repeat-x 0 0; + height:21px; +} +.darkX_ne { + background: transparent url(darkX/titlebar-right-focused.png) no-repeat 0 0; + width:6px; + height:21px; +} +.darkX_w { + background: transparent url(darkX/frame-left-focused.png) repeat-y top left; + width:3px; +} + +.darkX_e { + background: transparent url(darkX/frame-right-focused.png) repeat-y top right; + width:3px; +} + +.darkX_sw { + background: transparent url(darkX/frame-bottom-left-focused.png) no-repeat 0 0; + width:5px; + height:3px; +} +.darkX_s { + background: transparent url(darkX/frame-bottom-mid-focused.png) repeat-x 0 0; + height:3px; +} +.darkX_se, .darkX_sizer { + background: transparent url(darkX/frame-bottom-right-focused.png) no-repeat 0 0; + width:5px; + height:3px; +} + +.darkX_sizer { + cursor:se-resize; +} + +.darkX_close { + width: 21px; + height: 21px; + background: transparent url(darkX/button-close-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:5px; + cursor:pointer; + z-index:1000; +} + +.darkX_minimize { + width: 21px; + height: 21px; + background: transparent url(darkX/button-minimize-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:26px; + cursor:pointer; + z-index:1000; +} + +.darkX_maximize { + width: 21px; + height: 21px; + background: transparent url(darkX/button-maximize-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:47px; + cursor:pointer; + z-index:1000; +} + + +.darkX_title { + float:left; + height:14px; + font-size:12px; + text-align:center; + margin-top:2px; + width:100%; + color:#FFF; +} + +.darkX_content { + overflow:auto; + color: #E6DF2A; + font-family: Tahoma, Arial, sans-serif; + font-size: 14px; + background:#5E5148; +} + + +/* FOR IE */ +* html .darkX_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-minimize-focused.png", sizingMethod="crop"); +} + +* html .darkX_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-maximize-focused.png", sizingMethod="scale"); +} + +* html .darkX_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-close-focused.png", sizingMethod="crop"); +} diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/button-close-focused.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/button-close-focused.png new file mode 100644 index 0000000000000000000000000000000000000000..da5a8ac4390548726bd9770a0d165c4d85a5bcae GIT binary patch literal 904 zcmV;319$w1P)s=!O6Q02*{f zSad^gZEa<4bO1wgWnpw>WFSI$AaZYFWpY$c(XH(k0008-NklYox^N-5@K13kxNzxKx>36j9}6Gg3lyam zTl=snZ8eWcGMO|px!09~+V}uh;@MvAk8{uW-2?pB-xm4Vp)AX~@B0>j6d@!DfD0j3 z0L(GQ<~+}@>5gs+t1ePOY|-Us{@6SX`WFwOThg=lS1r zN@-eGlndLl*;B_3AL-e>b6AQSI)o5dEtc@)`3rC2?w$F`nVD;Lqj44Afu(hjdMu!v z9!Pea8%=hk`YE9!nSLZB3WIZ~j)U^+*Ai=b(Yo(-tu?)6A9%+(Z>|R=06>BMY{WR1 zOPV7V5w!l{0}3-UFck$(K99$@CQzE4LzFSHfy%n=IJK3!^Hcz(wwZ1OvAUVOwXeA* zZ8ZXzt~4$g6JQ7m zj$OT-Fti{Frr9cmzG=o<960U=2UX(ez% zKmde78nmbZ;(2Jaib!ffwT{>Z6j#yKX>4%7)e_NqAf$k4D&8-z0)(J{vjr=iLX&gM ze=LA$A;?+)VRKV$<6yS&&GP&J9U7cQC_LGKB`jR zwXjAcA?x}xV`$rayXOl47|7+GFBA$l^VM=@Z+w%Xb(%;IZG#+CAOjdS3@pE!2Cci8 zw5y-|h%vq;mz%Ct$5<-y6mo8<*!t8NHv`#1lJ7gjvOlB3oMaoXI`K$um4rT@)oWFQ+ ziV(toyHFlId>DRu|6azKp6Z2Li+HYUEAgbGSbg&&hYrt~i3!F)Bq*&YJ}6Xt5c=K+L6JiL zfWCLJt)HLl(p-?!P&*w{;7BdA9 z+Lm3f*Xy&jTJ478INt+!{=vQ&~uM%!Y`@8nfMHM#9 zeZn=CfSxj7=mwIhD3Ylt45I^vo`%Mf2t7&YRDV2R4%h$Dm%p6_08ETb{;YESo92qV z>ew6!rXv&2Vr<|5M)wUN6YE4Gnu6;D@YiBiQqFxhJ~%P^#^L|s>XlO6pZ=U??T_{j zX0>8IPdXAQ00isS7OIVBVP$U3YBxHja%}kWrx!kZNCB227G<&fDsy)0CcgTjX0aI$FMX{?a2t2!E@;FN8q3d@pk6{!haj!FRAnZ6Hzu0V-k`c$#w|WVz>r$?g&jmWz4dkpPni|Gf^zgS++GHB}vfj zZfUj48hwBPR^g4J7%Jf-Sq=ZoVnoqo1fKDBgGsZ3?aJK)-qQ7=Vl#8%V&p4;AN z6nmZUdQ-+Lz~FB{JJhwzL225xpIY>@lP4cA#4%-!WN)1TApd&k>IskBZ;IVZxoXgD zKe@fz|F#X?TcH3{5WerG?wctNR5SdJ;hI1w8bT-_K*|J?2s@I@Ovc)kb?u?*F2!Y7 zJrX_Ps1vi}YSFI_xO{noW-9_!K`07H2}op=Fg~I)DeX$cMQrcM*H;xj!pBtQk-2qXdFZ(Ky~4X^G#X!d}UAH-w9$OJBRQ_5pDsI8v$>W$jPx2 zM69;bTPrlf{-Ob8=GUux{N1L|wr{ohu? z^{r0flVSGJk6wQD^_#cdC@CfHzH@G|cjJfoY$5f6>BI|$6+2R*4F>wK7w8wdH+WC6 zjxWFV#+xg5dQf=#+*`+6H-9Y0(Rx}aifWjC Ric0_h002ovPDHLkV1iE-g~R{= literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/frame-bottom-left-focused.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/frame-bottom-left-focused.png new file mode 100644 index 0000000000000000000000000000000000000000..7d89f7b0ae9b9ef4f6cfdb436d8e1937f762ba73 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1n!3HFw&5r&6Qfx`y?k)`fL2$v|<&%LToCO|{ z#S9E`2SJ$eaArs_P>{XE)7O>#3cCoiig3Kaw*;V&w5N+>NX4z>DHA9DJm0_;F+)O9 g(tss0BEo=$G4KRqE-y>!0-!PmPgg&ebxsLQ08}z0&j0`b literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/frame-bottom-mid-focused.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/frame-bottom-mid-focused.png new file mode 100644 index 0000000000000000000000000000000000000000..e50eacccc7ba5b0ac9f72554365831aa5ca291f6 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1n!3HFw&5r&6Qfx`y?k)`fL2$v|<&%LToCO|{ z#S9E`2SJ$eaArs_P>{XE)7O>#3cCois>;7zopr0A~axAOHXW literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/frame-bottom-right-focused.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/frame-bottom-right-focused.png new file mode 100644 index 0000000000000000000000000000000000000000..8915659116ed3a348f8b720f728eed00e8137848 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1n!3HFw&5r&6Qfx`y?k)`fL2$v|<&%LToCO|{ z#S9E`2SJ$eaArs_P>{XE)7O>#3cCoiipule;C!Hvw5N+>NX4z>DHA9DJm0_;F+)O9 g(tss0BEo=$G4KRqE-y>!0-!PmPgg&ebxsLQ0BQ{-F#rGn literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/frame-left-focused.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/frame-left-focused.png new file mode 100644 index 0000000000000000000000000000000000000000..ff9f336f25e5e56a238d768ec0f0bdb2030df21c GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y_!3HE73d0rwDYhhUcNd2LAh=-f^2tCE&H|6f zVg?4egCNX!I5Q*|D9B#o>FdgVgFdgVgx`7I;J! zGcfRXFfa(rVbqtIHV-JsUgGKN%6^4|QJjM@o8fvGP{`5K#WAGf*4EQI1rIoII0qWb zoV~0Pz-Cd9;8+$yY2r6mNR>%>8)7R*DBcf<(xw2iO{6DJt3l<=87{VFR*XD XC3W`SuJ4sV!x%hW{an^LB{Ts5f@wIO literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/titlebar-mid-focused.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/titlebar-mid-focused.png new file mode 100644 index 0000000000000000000000000000000000000000..f7be50b145588db0ae12fc893c06d307fb8a855c GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{P!2~2Z41|M$6kC$Fy9>jA5L~c#`DCC7XMsm# zF#`j)FbFd;%$g$s6l5>)^mS#w!oeucrh7bknl(_!#?!?yq~ccUv7NjJ95`4UBIYq= z%+{K2WWmno*C*3sa_R1--3pwOX3Tsa7P@Rz#kt1a|7RY&D=4_3`s5k$vX!EFVdQ&MBb@04~8ar2qf` literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/titlebar-right-focused.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX/titlebar-right-focused.png new file mode 100644 index 0000000000000000000000000000000000000000..ae23785d4b7c75eebe47a50ef28a2a4530eec954 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol^!2~2x`7I;J! zGcfRXFfa(rVbqtIHV-JsUgGKN%6^4|QJj;pNcx#LP{`5K#WAGf*4EQI1rIoII0qWb zoV~0Pz-Cd9;8+$yY2r6mNR>%>8)7R*DBcf<(xw2iO{6DJt3l<=87{VFR*XD XC3W`SuJ4sV!x%hW{an^LB{Ts5el|Ff literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css new file mode 100644 index 000000000..69e3b7fc2 --- /dev/null +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css @@ -0,0 +1,25 @@ +div.inspector div.inspectable { + padding: 0.25em 0 0.25em 1em; + background-color: Gray; + color: white; + border: outset 2px white; + cursor: pointer; +} + +div.inspector div.child { + margin: 0 0 0 1em; +} + +#debug_window_content { /* DIV container for debug sizing*/ + width:250px; + height:100px; + background-color:#000; +} + +#debug { /* DIV container for debug contents*/ + padding:3px; + color:#0f0; + font-family:monaco, Tahoma, Verdana, Arial, Helvetica, sans-serif; + font-size:10px; +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css new file mode 100644 index 000000000..6ab13789d --- /dev/null +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css @@ -0,0 +1,155 @@ +.overlay_dialog { + background-color: #666666; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.overlay___invisible__ { + background-color: #666666; + filter:alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; +} + +.dialog_nw { + width: 9px; + height: 23px; + background: transparent url(default/top_left.gif) no-repeat 0 0; +} + +.dialog_n { + background: transparent url(default/top_mid.gif) repeat-x 0 0; + height: 23px; +} + +.dialog_ne { + width: 9px; + height: 23px; + background: transparent url(default/top_right.gif) no-repeat 0 0; +} + +.dialog_e { + width: 2px; + background: transparent url(default/center_right.gif) repeat-y 0 0; +} + +.dialog_w { + width: 2px; + background: transparent url(default/center_left.gif) repeat-y 0 0; +} + +.dialog_sw { + width: 9px; + height: 19px; + background: transparent url(default/bottom_left.gif) no-repeat 0 0; +} + +.dialog_s { + background: transparent url(default/bottom_mid.gif) repeat-x 0 0; + height: 19px; +} + +.dialog_se { + width: 9px; + height: 19px; + background: transparent url(default/bottom_right.gif) no-repeat 0 0; +} + +.dialog_sizer { + width: 9px; + height: 19px; + background: transparent url(default/sizer.gif) no-repeat 0 0; + cursor:se-resize; +} + +.dialog_close { + width: 14px; + height: 14px; + background: transparent url(default/close.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:8px; + cursor:pointer; + z-index:2000; +} + +.dialog_minimize { + width: 14px; + height: 15px; + background: transparent url(default/minimize.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:28px; + cursor:pointer; + z-index:2000; +} + +.dialog_maximize { + width: 14px; + height: 15px; + background: transparent url(default/maximize.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:49px; + cursor:pointer; + z-index:2000; +} + +.dialog_title { + float:left; + height:14px; + font-family: Tahoma, Arial, sans-serif; + font-size:12px; + text-align:center; + width:100%; + color:#000; +} + +.dialog_content { + overflow:auto; + color: #DDD; + font-family: Tahoma, Arial, sans-serif; + font-size: 10px; + background-color:#123; +} + +.top_draggable, .bottom_draggable { + cursor:move; +} + +.status_bar { + font-size:12px; +} +.status_bar input{ + font-size:12px; +} + +.wired_frame { + display: block; + position: absolute; + border: 1px #000 dashed; +} + +/* DO NOT CHANGE THESE VALUES*/ +.dialog { + display: block; + position: absolute; +} + +.dialog table.table_window { + border-collapse: collapse; + border-spacing: 0; + width: 100%; + margin: 0px; + padding:0px; +} + +.dialog table.table_window td , .dialog table.table_window th { + padding: 0; +} + +.dialog .title_window { + -moz-user-select:none; +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/default/bottom_left.gif b/public/plugin_assets/redmine_code_review/stylesheets/window_js/default/bottom_left.gif new file mode 100644 index 0000000000000000000000000000000000000000..4c73d3563531b3470951a5d45e5302f79cc4af45 GIT binary patch literal 187 zcmZ?wbhEHb+5T6ZLO)PDJdxdYGEK6DE?$&WMB|v&;jWH*~!3av7o5u$qELiRb0+5T6ZLO)PDJdxdYGEK6DE?$&WMB|v&;jWH*~!3a@j$U}kq<|rY}gk!$<;@Kv0dSSf-b|l8`_MAYAvLAjwrA&SOWmY CGeFh= literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/default/bottom_right_resize.gif b/public/plugin_assets/redmine_code_review/stylesheets/window_js/default/bottom_right_resize.gif new file mode 100644 index 0000000000000000000000000000000000000000..649b0d870dd137007a578158ae2e1f3a2e23d14f GIT binary patch literal 201 zcmZ?wbhEHb+5T6ZLO)PDJdxdYGEK6DE?$&WMB|v&;jWH*~!4__CT?3kq?oo$ZWsnY${?AqJ8BOhsT^{P3#XQgqAY0HAol;iyzBi QU_4Z3A;oh&TM`D~Ih?HfznTSD9HYH?>@1 zVzJOzt6WVfQQmT)iN!o)qaIz`H5L|gjO|uhm`^p*t<%!0*3zrgGH%zmnq;b;tEAVg zX*JhayI9R`sfGPgOS|b7dWBlvYh1(D281l~37+pAxhgPnWl+dG-;A|M;miE;7iJ_a z2`^rh-FLWk>i)j??f!L#ikh~T&pj|DcCk~;e5cq2E@hh%)?S$xyU;P9%_?D*Tg!%m znfp3do}QIF*F9;Dd)6Yq^m)Eb>vMXxRP=1FoVLGt#=+LCg}%9q1B+LL&)nBmu*!Gh zzVfAKdJjEbU%b}8XpLX>rii*NF%4VeT6QM&?8#kmZo;Y)(|257VjZcv=KPe1LhH18 zw~C&4mjJb*D4D!)nZ@m1i`u;2l`*`kWc^Xb@V;K+ZVKbW4Cep!693y2|Cb9sD_4Bo zy8`uQ|cya`k&q^A3rf_@^ zbXPdaYmn7osCY&K+i{$8;V}Z1tWlEXXnGMB}m3g3=M&Tq++qGBt8C z`M&wl^rUU7X3z_nSt6YexCC8FVlG}<(x>Fs$f2sVg2`c`R>&NQtSu+}F%c~esUz(Db8ROmg#A)rzc}Bzifg476xkoo8TAd literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/default/close.gif b/public/plugin_assets/redmine_code_review/stylesheets/window_js/default/close.gif new file mode 100644 index 0000000000000000000000000000000000000000..31ef5a3948ae1217506138bb95833431bd2147dd GIT binary patch literal 1012 zcmZ?wbhEHb<%u<72G ztx*CZkpd!<)pWc?#NCC(N>#N=)wFzMI=yea6?-t+%hQr?+>qrEY_tTfLuKcSPW+j{0wF7ysP4>d}%}Kew%! z?`*Ns!*+#-?P@=#)qc*a6C!@io&0OwlwS*{|5`Hh*NXXPyPAKkUifw8g8TEQ*9dVm zO9^zy2=%K<&(>F+rKdXEP<@$&{xVDbYr&qELcPz0dOymDeVQ46yD;N^dH(v8*!IwX z_cJDZm_4~CDXu*}dTK}el#cd1PNq^G)-nOEdLix(X_0nmktR9u!etge7rID(dVOpr4bI&mRzp+N1Q zKQDzBO;B!A{*rQmAxU7NgS5dDLB*95+gVuIG!!;C9Bg3XurdfTS=c116?JXJMW>@( ztX!RXE*p%Wdrj4eSQRso*@20jgYQL&;Nxa?e);5WR|-EYXk@TRIm7buBJ+uvN(oE` z77w0sOj5LO;rQvO(kZCN_G6Fd=O&kKNt37v1&znf$~jj&+RzyI*o{xxaLSaO%^sK9 v^>gRE2so&8bh2uqodL@g7q%{0?E(W!#g2ssoP!t5&|q{urPRjA$Y2csV9Xzf literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/default/inspect.gif b/public/plugin_assets/redmine_code_review/stylesheets/window_js/default/inspect.gif new file mode 100644 index 0000000000000000000000000000000000000000..ebeeb02f692029521bdd12892d1db67ac1bb1a13 GIT binary patch literal 556 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 UCOm@_XaE2J07*qoM6N<$fsr>%I9Q a-{aMs>C2oAJgk}KI7yWJytGz{!5RRI95na< literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/default/sizer.gif b/public/plugin_assets/redmine_code_review/stylesheets/window_js/default/sizer.gif new file mode 100644 index 0000000000000000000000000000000000000000..649b0d870dd137007a578158ae2e1f3a2e23d14f GIT binary patch literal 201 zcmZ?wbhEHb+5T6ZLO)PDJdxdYGEK6DE?$&WMB|v&;jWH*~!4__CT?3kq?oo$ZWsnY${?AqJ8BOhsT^{P3#XQgqAY0HAol;iyzBi QU_4Z3A;ohgHzI^%O#f#_9pFex{ z?8%cSj~_pN^ytyUhYue-cyRyz{d@QB-MxGF&Ye5AZ{NOo^XB#I*RNf>cJ=DjD_5>u zzI^%O#f#_9pFel*+?g|HPMeQ*DM~@ypeE7hD1G{(c-oAbN=FOYeuV24r&6<@f zS1w<^eCg7qix)5M>FN3Z|33riK=CIFBLjmTgAPb5$WIJx%?{H8EME4w9qv4#Y^l&P zO+b}FfG1{hz!5JEnV3c1-zNlUsL8i5CYqJ&vAXQET{K0!;*ZAR2!nt1%Dl}je7ws1 zon4*E0)72`%0iQ;OfD6fF;hfEbnd*ls$z>4FH)0`5MQ}UU25&RwHnf!HgD3D*}g+o YMoVt*zP;KChYlao(LH|RxFdr#03rXY^8f$< literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/default/top_mid.gif b/public/plugin_assets/redmine_code_review/stylesheets/window_js/default/top_mid.gif new file mode 100644 index 0000000000000000000000000000000000000000..6124e78bd3b4a051ed3e38ffbf3bb21bcb25a89f GIT binary patch literal 149 zcmZ?wbhEHbWMmL$IKsg2^XJd^@87?8@#5LDXHT9ydHneCqeqV(Ja};b{{6dm@7}(B z`{vD?*RNl{cJ12b%a<=+ymwEoH}*tz<~ojJw5;b|7XAp6o0ZXGBAiT=zvs# d>||gSdceYRC_$*TP@!{^LGNdWi7u@S)&S){L>2%5 literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/default/top_right.gif b/public/plugin_assets/redmine_code_review/stylesheets/window_js/default/top_right.gif new file mode 100644 index 0000000000000000000000000000000000000000..fbc94bf2b945280883bf2720b4b2140d3c7e0941 GIT binary patch literal 357 zcmZ?wbhEHb({Sey?XWX<;xc@UOa#P z{MoZ-Po6w^{P^*sM~@ypeE8tOgZuaI-@AA3?%lh0?%cV3`}WP7H?Lp6e(l<|t5>gH zxpL+5<;xc@UOa#P{JC@I&YU@O`t<2jr%oL`di3z&!v_u=*u8uA_U+p@Z{ECq{rWX) z)~sB)a{2P*OP4NPym)a>PtX7V{~1UGia%Kx85r~#bU^w*eqvy2au7P{Tq)VhdE|+) zmK0}m!vdvU5`t|^Axc_$Vq7_l##OcZJDr(Q?6ig0dfFYAH)}6xi#wl@;lbC)$KRwP z(B9FmBG}X0qar+U(nJ-}Y15~vh|QieTUC6)!Ubv)OP5JXs!Ok4vsy!D!^RDovRh^4 awrR=l-m_a<@xZ|YI(kQs9o2PYum%7Hf2-*L literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/blank.gif b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..75b945d2553848b8b6f41fe5e24599c0687b8472 GIT binary patch literal 49 zcmZ?wbhEHbWMp7unE0RJ|Ns9C3=9Vj8~~DvKUo+V7?>DzfNY>Fh|Ltj$Y2csQN9XW literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css new file mode 100644 index 000000000..257a1b1e3 --- /dev/null +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css @@ -0,0 +1,3 @@ +/* PNG fix for all themes that uses PNG images on IE */ +td, div { behavior: url(../themes/iefix/iepngfix.htc) } + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc new file mode 100644 index 000000000..a6c683b9f --- /dev/null +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc @@ -0,0 +1,54 @@ + + + + + \ No newline at end of file diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css new file mode 100644 index 000000000..95ec287a9 --- /dev/null +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css @@ -0,0 +1,960 @@ +.overlay___invisible__ { + background-color: #666; + filter:alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; +} + +.top_draggable, .bottom_draggable { + cursor:move; +} + +.status_bar { + font-size:12px; +} +.status_bar input{ + font-size:12px; +} + +.wired_frame { + display:block; + position:absolute; + border:1px #000 dashed; +} + + + +.overlay_bluelighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.bluelighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.bluelighting_nw { + background:transparent url(lighting/top-left-blue.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.bluelighting_n { + background:transparent url(lighting/top-middle-blue.png) repeat-x 0 0; + height:28px; +} + +.bluelighting_ne { + background:transparent url(lighting/top-right-blue.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.bluelighting_w { + background:transparent url(lighting/left-blue.png) repeat-y top left; + width:9px; +} + +.bluelighting_e { + background:transparent url(lighting/right-blue.png) repeat-y top right; + width:15px; +} + +.bluelighting_sw { + background:transparent url(lighting/bottom-left-blue.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.bluelighting_s { + background:transparent url(lighting/bottom-middle-blue.png) repeat-x 0 0; + height:15px; +} + +.bluelighting_se, .bluelighting_sizer { + background:transparent url(lighting/bottom-right-blue.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.bluelighting_sizer { + cursor:se-resize; +} + +.bluelighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#17385B; +} + +.bluelighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#BFDBFF; +} + +/* For alert/confirm dialog */ +.bluelighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.bluelighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.bluelighting_buttons { + text-align:center; + width:100%; +} + +.bluelighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.bluelighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .bluelighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_se, * html .bluelighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_content { + background:#B8D7FF; +} + + + +.overlay_greylighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greylighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greylighting_nw { + background:transparent url(lighting/top-left-grey.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.greylighting_n { + background:transparent url(lighting/top-middle-grey.png) repeat-x 0 0; + height:28px; +} + +.greylighting_ne { + background:transparent url(lighting/top-right-grey.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.greylighting_w { + background:transparent url(lighting/left-grey.png) repeat-y top left; + width:9px; +} + +.greylighting_e { + background:transparent url(lighting/right-grey.png) repeat-y top right; + width:15px; +} + +.greylighting_sw { + background:transparent url(lighting/bottom-left-grey.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.greylighting_s { + background:transparent url(lighting/bottom-middle-grey.png) repeat-x 0 0; + height:15px; +} + +.greylighting_se, .greylighting_sizer { + background:transparent url(lighting/bottom-right-grey.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.greylighting_sizer { + cursor:se-resize; +} + +.greylighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.greylighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.greylighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.greylighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#525252; +} + +.greylighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#CDCDCD; +} + +/* For alert/confirm dialog */ +.greylighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.greylighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.greylighting_buttons { + text-align:center; + width:100%; +} + +.greylighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.greylighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .greylighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-grey.png", sizingMethod="crop"); +} + +* html .greylighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-grey.png", sizingMethod="scale"); +} + +* html .greylighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-grey.png", sizingMethod="crop"); +} + +* html .greylighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-grey.png", sizingMethod="scale"); +} + +* html .greylighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-grey.png", sizingMethod="scale"); +} + +* html .greylighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-grey.png", sizingMethod="crop"); +} + +* html .greylighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-grey.png", sizingMethod="scale"); +} + +* html greylighting_se, * html .greylighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-grey.png", sizingMethod="crop"); +} + +* html .greylighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-grey.png", sizingMethod="crop"); +} + +* html .greylighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-grey.png", sizingMethod="crop"); +} + +* html .greylighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-grey.png", sizingMethod="crop"); +} + +* html .greylighting_content { + background:#C7C7C7; +} + + + +.overlay_greenlighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greenlighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greenlighting_nw { + background:transparent url(lighting/top-left-green.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.greenlighting_n { + background:transparent url(lighting/top-middle-green.png) repeat-x 0 0; + height:28px; +} + +.greenlighting_ne { + background:transparent url(lighting/top-right-green.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.greenlighting_w { + background:transparent url(lighting/left-green.png) repeat-y top left; + width:9px; +} + +.greenlighting_e { + background:transparent url(lighting/right-green.png) repeat-y top right; + width:15px; +} + +.greenlighting_sw { + background:transparent url(lighting/bottom-left-green.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.greenlighting_s { + background:transparent url(lighting/bottom-middle-green.png) repeat-x 0 0; + height:15px; +} + +.greenlighting_se, .greenlighting_sizer { + background:transparent url(lighting/bottom-right-green.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.greenlighting_sizer { + cursor:se-resize; +} + +.greenlighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#2A6002; +} + +.greenlighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#ACFCAF; +} + +/* For alert/confirm dialog */ +.greenlighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.greenlighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.greenlighting_buttons { + text-align:center; + width:100%; +} + +.greenlighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.greenlighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .greenlighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-green.png", sizingMethod="crop"); +} + +* html .greenlighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-green.png", sizingMethod="scale"); +} + +* html .greenlighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-green.png", sizingMethod="crop"); +} + +* html .greenlighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-green.png", sizingMethod="scale"); +} + +* html .greenlighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-green.png", sizingMethod="scale"); +} + +* html .greenlighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-green.png", sizingMethod="crop"); +} + +* html .greenlighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-green.png", sizingMethod="scale"); +} + +* html greenlighting_se, * html .greenlighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-green.png", sizingMethod="crop"); +} + +* html .greenlighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-green.png", sizingMethod="crop"); +} + +* html .greenlighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-green.png", sizingMethod="crop"); +} + +* html .greenlighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-green.png", sizingMethod="crop"); +} + +* html .greenlighting_content { + background:#A4FCA7; +} + + + +.overlay_darkbluelighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.darkbluelighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.darkbluelighting_nw { + background:transparent url(lighting/top-left-darkblue.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.darkbluelighting_n { + background:transparent url(lighting/top-middle-darkblue.png) repeat-x 0 0; + height:28px; +} + +.darkbluelighting_ne { + background:transparent url(lighting/top-right-darkblue.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.darkbluelighting_w { + background:transparent url(lighting/left-darkblue.png) repeat-y top left; + width:9px; +} + +.darkbluelighting_e { + background:transparent url(lighting/right-darkblue.png) repeat-y top right; + width:15px; +} + +.darkbluelighting_sw { + background:transparent url(lighting/bottom-left-darkblue.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.darkbluelighting_s { + background:transparent url(lighting/bottom-middle-darkblue.png) repeat-x 0 0; + height:15px; +} + +.darkbluelighting_se, .darkbluelighting_sizer { + background:transparent url(lighting/bottom-right-darkblue.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.darkbluelighting_sizer { + cursor:se-resize; +} + +.darkbluelighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#E4EFFD; +} + +.darkbluelighting_content { + overflow:auto; + color:#FFF; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#0413C0; +} + +/* For alert/confirm dialog */ +.darkbluelighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.darkbluelighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.darkbluelighting_buttons { + text-align:center; + width:100%; +} + +.darkbluelighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.darkbluelighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .darkbluelighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-darkblue.png", sizingMethod="scale"); +} + +* html darkbluelighting_se, * html .darkbluelighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_content { + background:#020EBA; +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/background_buttons.gif b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/background_buttons.gif new file mode 100644 index 0000000000000000000000000000000000000000..2fa58b29f8a9e2b522b96140fea543f0daf283ed GIT binary patch literal 70 zcmZ?wbhEHbWMU9xSj52a^5x4P-@pI=|Np~>58vOvXMh34pDZjQ4F4H)Kms7O49wgb ROm}PyPC2Yzs>R4)4FJn97gYcN literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-left-blue.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-left-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..4592c19be174d1e759ab4438f25959d365cfe59e GIT binary patch literal 335 zcmV-V0kHmwP)UxLm4V^OlP3)3(%*3^ z`YZbVieqZa8iwc3pEHls)v3&=e{{1d9^1rW0XP0TNu$T0EeZ-_}OP&a|NAg{fK`50s(D7t`{ zpJ~O)mH(ku!c2P!#1Db^E)d@V;@gb>|NjRY84(^1idklmbwCV?bbcu2h6g5^iJyS@ h6%aoG;`;yr1^}LmRGd$i!^r>u002ovPDHLkV1l(RhNS=i literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-left-darkblue.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-left-darkblue.png new file mode 100644 index 0000000000000000000000000000000000000000..ce238f125861ada064ea9e1309321b468dbab1eb GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!3HGFPCVrWQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%J@9mK45_%4#KX`1I58n%f<6<*tw z&LeMElQ82_k*xE@c!htgN8)v-#2@#M{yCwsx0m;*i(5j%CWg#_hAzg9N&?!<%w<`N z)@v}!%gZyHo0~Ip->~K3v2XmLEU=#;scb>#&(G$6=bt$6Ln=pz`-<=W#vj}Q``dm> zyf~HZ{2NUxL^*_VYr%xGd-&x^Q z^jG}DBgfpSD;ZwCe92(*))GU}Um*SkvQ6&m!}#3E3mG^$IZ;ex*3s5xgeqnMVpg6X zACFJnd(qoiUX(%UmjZ+Oe^mxXV2Fbhumdq4DCB`y9*7lQ3dl|T`I`}J5)0H#zk&D* z5Wj}`80f}qs3v}<6)RW%hq~)05Pt;Xmq7dwi0=aN9U#8V`2YWZu#pkr;UKe_p;m(; toga$1;em-};wK<}1;kH)_&z{@0RSPNP1&$|ZrT6<002ovPDHLkV1mG{keUDh literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-left-grey.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-left-grey.png new file mode 100644 index 0000000000000000000000000000000000000000..2ace75e1b7863ffc85b4c9b6376f4fe4919c13ae GIT binary patch literal 346 zcmV-g0j2(lP)`6pHRCwBS zkUuf^d%#?%@I4vfvt?hdaOlWWm%=Xx)54x! s5IotD=xLc)3v>L2=xBL`xIX~~0C|~JfAgjo4gdfE07*qoM6N<$f-IMgN&o-= literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-middle-blue.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-middle-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..439bcaa1d1c62d04e3775b90bee5553ca185ef73 GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrK!3HE%<(K{hQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%>3O<1hE&{2x>f)Cf4v%;fD815JIok_cMcq>pRgQu&X%Q~loCIIrD BGD83W literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-middle-darkblue.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-middle-darkblue.png new file mode 100644 index 0000000000000000000000000000000000000000..3fae972a1b2b2074a65263ec6635395fa23f0e34 GIT binary patch literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrK!3HE%<(K{hQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%>3F(0hE&{2N)ojEF~5_MqeF4o zwtEQ)6U@*3JD;-fPnDR*8?%lbEK2VfSR@#P`?z@aE!ckysE@(Z)z4*}Q$iB}GSn}q literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-middle-green.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-middle-green.png new file mode 100644 index 0000000000000000000000000000000000000000..89a732f665e23ea6b885d4c10180faaea8464001 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrK!3HE%<(K{hQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%>3X_2hE&{2iu;{@xL%D-L7^$3 z;_Iuc_0N>^C8TDoy_&MbA!)ng5mkXgc7+2BD{u0&x~EjC0yQ#ty85}Sb4q9e0Bi~` A*Z=?k literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-middle-grey.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-middle-grey.png new file mode 100644 index 0000000000000000000000000000000000000000..52bfee0de5159d611a497c2d3e668f4e23e9f060 GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrK!3HE%<(K{hQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%>3O<1hE&{2vZ?;|re2LrL7^$( z&!3;4>)F)Rm;d+q|NsAdR-xUzN_veQ)(nhn3^yzJ?Jgu``6 BF>C+; literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-right-blue.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-right-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..dffb75f08484bd13fd9ef9e85c1ce8c32e03d76c GIT binary patch literal 397 zcmV;80doF{P)vLR<_CwlOUXGJmdA0EI6C@f{{&G+utrh*h467>yt{(VEdU zg4jf9#-@=dXXDZcV!!)_M>9T+AoiI{{k7pLP#She#4rUg5q}}P{T(c{shEdK?X2>`}PfMB6n$a|Z z*u-hZqLDaf8IcAa5EQ=)ff_yn@h2eu3NnCk=FFK`6Uo=FUl~4q`ou7Q^J|dC zWk8{4KztvF??UNUEN!zc;Z7t#KLVW!vhg(#KL+9_K>Pygf}bovQ|I8&`VZ>Ak5COy zpay^p`U1qiSwLwNhvvUf%^*L%gc|S~W-CaZ1)9il+58I{I3J<-3rypRl`H?_v-uy? mc8~$zp_+cfG=dZW1Q-ApUb$f6)8A770000EFke+E3@;O)x{1#;00B7a2~-1D0mw?#D2s42DfH>8bR!L*WWR)vw|b$FA)C&VJ2cUe!cgVA$RIZ2JsJ% zCIOZI0ODUDLs$rD1jTRCv{ z13(6S0pi~*pfrj@^IxcDkRM+{4R{T+6&zsDM2^emU(mq$2*qDu8dt1b`5&Ln|Dd*m k4EPS!^c$uTqyQkm09skYIbiOfZvX%Q07*qoM6N<$f?~UylmGw# literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-right-grey.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/bottom-right-grey.png new file mode 100644 index 0000000000000000000000000000000000000000..caa27fe13f97b693409964e9c58fd2df407d4a4e GIT binary patch literal 424 zcmV;Z0ayNsP)mX{mtEpyd}*r%98~pn;YmHIEd8=n|@foO0oG5F2@swc-*>BfPtw z8Qa1riekY4!!SUFJZD)3VHkqrIN-W2y~TL_f~XEuAc^vv=lM!(ng;gbAP?lIf*gY& zScxQZm#j#7t94y(B2suG>zA_Cf7>QE>8M&&?kXRK;r`5ev7VP@36^D1=?yUx%spZh zMeDq(?XK$}j$@kp0n0CliA2mjm#V5ZqHWvY`#uq$kZ?j!|7Q{~#&KL|W_@ve-$UEB zkR%DcJ>%6o;uTTz_tW$|4;p z^hYO;b*vF{Hs;W|@mE@>;`O_1Hq+F=4G~S++RD4E*35EDxcDx(RX*;CCmBrk6&MLT`Sk`26=*EsG3`{%>pBf@M;&)$?1Nw-;)78&qol`;+ E093VkE&u=k literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-close-green.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-close-green.png new file mode 100644 index 0000000000000000000000000000000000000000..63f755b6c781d4716cc4b041dcb87e05b7434bb4 GIT binary patch literal 305 zcmV-10nYx3P)a>00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy!%0LzRCwBA z{Qv(y0}SLHTKt~@$ORFvr)^~g3NeGQaH{)Pn3}haL0Od#ES4|n&xo!Lt7Z_G^kO4iB2NNS zBM7iC-~gO#j0}VT6E?xw?>7C%$H%F8@yG4|Iha`)K-h=DoB_rLiR0D0>f^5e?7-Lo zVVA!~43a|Pj362&29n1bV9(#ZM3De#gt2kS0R$KT|71|--UUjh00000NkvXXu0mjf D&cl4# literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-close-grey.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-close-grey.png new file mode 100644 index 0000000000000000000000000000000000000000..0c5375f4276b1a66f82e6c3da0114dfa1fb7b796 GIT binary patch literal 320 zcmV-G0l)ra>00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy(n&-?RCwBq zk39;5KoEsz@}o9E&tT&L>}&*2A%b`DEH+wdWoILn9>B&sSfrlh4Xj8sArBUI-@I@4 zEsF>l6-A*3c*8K<-`guz6h%+?%uM4rK1`nXFjSVM8q2caGRB3z?<<(+Iq$Ov7^ur#xDW7F-^hJ*2Xw_f3oSALgiUHBAX&U(p?z&Da%Ob2e zj>)!dZ2|x1pZmVw4q+IQ>$<$It4!0hWs)S}1B{TViOK*?2($eop6BW8CBOi;YhYpd SS{i!*0000}1{rUgjp4lwG_$yyn z=d>JAH;LJ;jO-Ue1d|mw9L$mrdzaPx@%QLqogbY2ZqKj&cOfYUoHhj)X0kPAl-r3! zPkZ<0i+oGxr5;`u>rVpd#%9qLH)d@3HB-=XUj3h6?N=*zm@u}1{rUgjp4rSG`EvLg zA<4QsJqBjn%zO*9j-Pel*zjO-iCIE|%d_`;4}6eco>sE_UL8wd&zq1rvpNg4;?k3g zwRRPEelq5{@k$`m*ev=+gv5qlGX*W@)&D*C&L(CSBNGpUzzq4ncMP9`+|1zV>gTe~ HDWM4fh%`(F literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-maximize-green.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-maximize-green.png new file mode 100644 index 0000000000000000000000000000000000000000..d4c1e578742f7a7e77aaf5edec85c0b96ad89f69 GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf!3HGX_LqeNDVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5XN<3X0Ln>}1{rUgjo|&iS=O@;4 z>#VlRDK@gG-8^b^=!OoDMMIaAJhS3~CV!*O<1+3!yITogQu&X%Q~loCIA6-OWptg literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-maximize-grey.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-maximize-grey.png new file mode 100644 index 0000000000000000000000000000000000000000..35da0e0fceb7a74585108aaddf11131f6cf36e38 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf!3HGX_LqeNDVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5Xay(reLn>}fnQ)MoL6L*y?veJT z0e$|bH_BK&IoaASp2YJ0+tH*0kqcHmU1GVMt#-|>X$~$Sd8=+dmSDbTyt(bLoalkq z;;-a3{&U>gs`-tx^x-ml_g8!Ct#8zc1ZVRemymOHxl;6V-p`C5f(Z}1{rUgjo_S|O;gali zGppJccM=0m-qf5{~urb7o3&J@#zWqXzb9y$e>!H5FwLwOao{FgQu&X J%Q~loCIAA`Hb?*f literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-minimize-darkblue.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-minimize-darkblue.png new file mode 100644 index 0000000000000000000000000000000000000000..e3d865464b4564f41319067a832af5d17a85eb6c GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf!3HGX_LqeNDVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5X>^xl@Ln>}1{rUgjo_S|OXCsq= zi|J;C;^xl@Ln>}1{rUgjo_S|OXCsq= zi|J;C;!k|KY7$kG-y}(H%nA#9tb8)f?a7L&uRl#4XCJL_1q!N(GO$Q6++z_;?rh(6 Q2xt<6r>mdKI;Vst09lha$^ZZW literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-minimize-grey.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/button-minimize-grey.png new file mode 100644 index 0000000000000000000000000000000000000000..310bcbbbcae2e2d1634cd8287f2b3873b6c19a2b GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf!3HGX_LqeNDVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5XygXeTLn>}1{rUgjo_S|OXCsq= zi|J;CVkv3q|H<4AZfr}=oXh?4_8X2#d+?qp6L|38LBf$$ eGeZ~z5*S|jN;R}jI6M_-Dubu1pUXO@geCwRWj*o$ literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/left-blue.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/left-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..30275bbb9484283b51218a3ffe7d4a93a8863b44 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRT!3HFG4z<(*DVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5XlssJ=Ln>}1@$hp$PE1IcP;qEc o@$V0lq}rOxB_%H~Iy5jcEX!bh($ literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/left-darkblue.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/left-darkblue.png new file mode 100644 index 0000000000000000000000000000000000000000..36c10e0d74d36c2604052b1591aa91edb5afdb99 GIT binary patch literal 143 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRT!3HFG4z<(*DVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5X6g^!WLn>}1@$hp$PE1IcU{M(U nrL1xzsBW5cG4g-dnhgomggtuk@6*G9c`njxgN@xNAwZbRG literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/left-green.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/left-green.png new file mode 100644 index 0000000000000000000000000000000000000000..c8aee739f03c7ef8788f288a91dbe6220d518589 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRT!3HFG4z<(*DVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5XlssJ=Ln>}1@$hp$PE1IcP;o@J ozWVu*sJ6Q?za=g(Iy5jcEHGt@GXLw54^++I>FVdQ&MBb@03`e>OaK4? literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/left-grey.png b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/left-grey.png new file mode 100644 index 0000000000000000000000000000000000000000..acc2af03a40651da9500b3a5611c2f51328772cd GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRT!3HFG4z<(*DVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5XlssJ=Ln>}1m6Vh`NlZwXkdTtH oXK(s>xwg;G&l@jbZeU<$n7WQFV^Y7X4p23Nr>mdKI;Vst09b!3R{#J2 literal 0 HcmV?d00001 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc new file mode 100644 index 000000000..36ea182e7 --- /dev/null +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc @@ -0,0 +1,67 @@ + + + +